Content-Type: multipart/related; start=; boundary=----------oekbGifD3oOrVm0Lrt9aet Content-Location: http://forum.technicaldiving.ie/index.php?topic=3042.0 Subject: =?utf-8?Q?Yesterday=20news:=20Agnes=20Milowka?= MIME-Version: 1.0 ------------oekbGifD3oOrVm0Lrt9aet Content-Disposition: inline; filename=index.htm Content-Type: text/html; charset=UTF-8; name=index.htm Content-ID: Content-Location: http://forum.technicaldiving.ie/index.php?topic=3042.0 Content-Transfer-Encoding: Quoted-Printable = Yesterday news: Agnes Milowka

3D"TechnicalDiving.ie"=

3D"*"
Technical Diving in Ireland
Welcome, Guest. Please login = or register.
Did you miss your activation email?
Login with username, password and session lengt= h
 



3D"" Author Topic: Yesterday news: Agnes Milowka  (Read 991 times)

3D"Offline" arturconrad=

  • Full Member
  • 3D"*"3D"*"3D"*=
  • 3D""
  • Posts: 326
    • 3D"HELL
3D""
Yesterday news: Agnes Milowka=
« on: February = 28, 2011, 10:26:23 AM »
http://www.theage.com.au/nat= ional/grim-task-to-retrieve-lost-diver-agnes-20110228-1baxc.html

Agnes was a high profile cave diver, very respected in the commu= nity. RIP.
3D"" Logged
With everythi= ng that has happened to you, you can either feel sorry for yourself or t= reat what has happened as a gift. Everything is either an opportunity to= grow or an obstacle to keep you from growing. You get to choose.
<= br />http://hellandhighwater.eu

3D"Offline" Stephen Mc= Mullan

  • Hero Member
  • 3D"*"3D"*"3D"*=3D"*"3D"*"
  • 3D""
  • Posts: 1184
    • 3D"DUSAC"
3D""
Re: Yesterday news: Agnes Mil= owka
« Reply #1 on: F= ebruary 28, 2011, 11:24:50 AM »
Thats very sad news Artur.= I seen her at Eurotek '10. RIP
3D"" Logged

3D"Offline" Scu= badec / Dec Hanniffy

  • Full Member
  • 3D"*"3D"*"3D"*=
  • 3D""
  • Posts: 351
3D""
Re: Yesterday news: Agnes Mil= owka
« Reply #2 on: F= ebruary 28, 2011, 11:30:23 AM »
Very sad news, So young to= o!
RIP
3D"" Logged
Safe Diving,<= br />
Dec

3D"Offline" jamesk

  • Full Member
  • 3D"*"3D"*"3D"*=
  • 3D""
  • Posts: 210
3D""
Re: Yesterday news: Agnes Mil= owka
« Reply #3 on: F= ebruary 28, 2011, 01:20:55 PM »
RIP
3D"" Logged

3D"Offline" jonnyb

  • Full Member
  • 3D"*"3D"*"3D"*=
  • 3D""
  • Posts: 157
3D""
Re: Yesterday news: Agnes Mil= owka
« Reply #4 on: F= ebruary 28, 2011, 04:27:10 PM »
  Sad news alright...= And I had just watch Sanctum this W/E who would thought this was happen= ing right now. You cave  divers very brave/stupid....

&n= bsp;        R.I.P.
3D"" Logged
Patience is a= virtue, only appreciated by time waster's...

3D"Offline" Graham Cowley=

  • Sr. Member
  • 3D"*"3D"*"3D"*=3D"*"
  • 3D""
  • Posts: 740
  • Scuba_G
3D""
Re: Yesterday news: Agnes Mil= owka
« Reply #5 on: F= ebruary 28, 2011, 04:55:58 PM »
Agnes M= ilowka an introduction


Seen this link, very sad to see such a young diver= pass.
3D"" Logged
Cheers,
= Graham

gcowley@gmail.com
ph:0868333250

"Don't = take life too seriously. You'll never get out of it alive!"

3D"Offline" eoin

  • Jr. Member
  • 3D"*"3D"*"
  • Posts: 61
3D""
Re: Yesterday news: Agnes Mil= owka
« Reply #6 on: F= ebruary 28, 2011, 09:43:01 PM »
Really sad to hear....RIP<= /div>
3D"" Logged

3D"Offline" Peter McCaml= ey

  • Full Member
  • 3D"*"3D"*"3D"*=
  • 3D""
  • Posts: 203
    • 3D"www.de=
3D""
Re: Yesterday news: Agnes Mil= owka
« Reply #7 on: F= ebruary 28, 2011, 11:12:05 PM »
Diving brings us all so mu= ch excitment and purpose and then when you hear of the likes of this....= .so much sorrow.
My prayers are with the family.
3D"" Logged
Live each day= as if its your last. One day it will be!

3D"Offline" oakridge4

  • Newbie
  • 3D"*"
  • 3D""
  • Posts: 25
  • Good Viz is hard to beat
3D""
Re: Yesterday news: Agnes Mil= owka
« Reply #8 on: M= arch 01, 2011, 08:40:46 PM »
Sad news Cave diving is a = sport that is very unforgiving. safe diving to you all
3D"" Logged

3D"Offline" BOB1577

  • Full Member
  • 3D"*"3D"*"3D"*=
  • 3D""
  • Posts: 227
3D""
Re: Yesterday news: Agnes Mil= owka
« Reply #9 on: A= pril 19, 2011, 04:25:41 PM »
very sad i heard it a whil= e ago. i met her in florida a real cave diver and pushed lots leads. Wit= h her small size she put the big headed cave divers to shame when she we= nt itnto places they never could. Mad me laugh when i met her. thought u= s irish were supposed be leprechauns.

RIP for irish BOB
=
3D"" Logged

=
 

3D""
  • SMF 2.0 | SMF © 2011, Simple Machines
    SMFAds for= Free Fo= rums
    Menu Buttons by 2by2ho= st.com web hosting company
  • = XHTML
  • RSS
  • WAP2
  • =
------------oekbGifD3oOrVm0Lrt9aet Content-Disposition: inline Content-Type: image/png Content-Location: http://forum.technicaldiving.ie/Themes/default/images/theme/backdrop.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAAA0AAAHdCAIAAABJwGSwAAAABGdBTUEAAK/INwWK 6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAEESURBVHja 7JvLEYQwDENtDT1tLTRC/dtCDoHY8suZmSBbkj8M+bufWDiKtbP7uSsyK7/fMo5M OeA4x4PI4vn14GlxvVWPM/Fry3vVzlvAe/wAncOXt/xFk/BW54vL3IMum/LP5N5L 6OiTezWMp6petxTEBf9z0eU5HPLg8xoM/Bm8TfDKpc5Y1Gl4T3/Voa7u1hv864nj XB8mF9+16Cen6den/gr/Q78Deb/b/+SBY5iO6BPh/cS5kb0K/ZrXHsTGn+nDjOce 8obe2JfQd86dk9mXePNF6IM6yLyALtEl9e3NOBf3F/QGXvrJvvM58yU6mqc3m/8M i88z0/yF76vf5O0vwAAR+weYomhJwgAAAABJRU5ErkJggg== ------------oekbGifD3oOrVm0Lrt9aet Content-Disposition: inline Content-Type: image/png Content-Location: http://forum.technicaldiving.ie/Themes/default/images/theme/submit_bg.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAAfQAAAEGCAMAAACkUpeqAAAAGXRFWHRTb2Z0d2Fy ZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAlQTFRF////3O7/zef/9waF8wAAAXRJ REFUeNrs0TERAAAIBCC1f2gHzxQPFagi0JBGunSkIx3pSEc60pGOdKQjHelIRzrS kY506UhHOtKRjnSkIx3pSEc60pGOdKQjHenSkY50pCMd6UhHOtKRjnSkIx3pSEc6 0qUjHelIRzrSkY50pCMd6UhHOtKRjnSkS0c60pGOdKQjHelIRzrSkY50pCMd6UhH unSkIx3pSEc60pGOdKQjHelIRzrSkY506UhHOtKRjnSkIx3pSEc60pGOdKQjnU8H AAAAAAAAAAAI0aSRLh3pSEc60pGOdKQjHelIRzrSkY50pCNdOtKRjnSkIx3pSEc6 0pGOdKQjHelIR7p0pCMd6UhHOtKRjnSkIx3pSEc60pGOdOlIRzrSkY50pCMd6UhH OtKRjnSkIx3p0pGOdKQjHelIRzrSkY50pCMd6UhHOtKRLh3pSEc60pGOdKQjHelI RzrSkY50pCNdOtKRjnSkIx3pSEc60pGOdKQjHelI56wAAwD0AsOw9AHz0QAAAABJ RU5ErkJggg== ------------oekbGifD3oOrVm0Lrt9aet Content-Disposition: inline Content-Type: image/png Content-Location: http://forum.technicaldiving.ie/Themes/default/images/theme/main_block.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAACPwAAANgCAMAAACF+hS1AAACQFBMVEX///+nuc3j 6e/w9Pfn6u/19fX9/f7+/v/9/v7Z3uTh6fP8/f7Q3OrK2OjW4O3Y4u54ip7f5Ot7 jqKitMh1h5vz9vnm7PTk6vDJ1ufO2+rQ2ub4+vzt8fa9x9HJ1+fa3+bd4+nU2eDV 2uHX3OPT2N/g5uzh5+3S197i6O7R1t3Czt7o7fLJ1OPM2en7/P3U3+zT3uzO2OX2 +Pr+//+Ro7eAkqaZq79+kKSClKifscWGmKyImq6KnLCMnrKdr8OXqb2Vp7ubrcGg ssaPobWTpbmElqp2iJyktsrK1N6muMyxu8VzhZne5O3M1uTT3OjN2unE0N/G0eDU 3Oi4uLjM1uDa5O/ExMTk6/PI0ty2v8nFz9nG0Nrc4ee6w83W2+LCytSzvMbV3unY 4Org5u7+/v7a4uvU3ujR3evq7/Pa4Ou4wcu3wMrAydO0vcfDzde7xM7c4uvc4+vi 5+7j6O/s7/TO2unv8vby9PfX3+n8/P3H0+HS3uvm6/LX3+rx9Pfj6O7k6e/d5vDU 1NTs7Ozg4OHb29vU3OY3WXbx8fGTnqrS2+b6+vrDz97s7vHZ4OjJz9bh5enf5u3D 0N5MaYHf5e3o6/DR2ePR2+fOz8/k6u/09PTU3uq+xs+lt8vw9Pbx9ffW2uHV3ej9 /f/z9fdxg5Shp6ypu85/jpvL1d/X19fT1tj9/v+uv9GvwNLm6/Cdqbfz8/Tm6u/0 9PXGzdS/y9nl5ufAwcHFzNPi6O3/7e3/8/P/////6ur//Pz/+Pj/6+ur7PWpAAAA AXRSTlMAQObYZgAAQ9pJREFUeF7s3dltBEEIQEHyz4ije1OzZ+UkPFR9EMOTQCL6 61bOawEAZNbpRzzj5LwdAECdv/i5n3k/AIA83/ip2QIAUD/Rd5YAAMiOztkCAODG nTUAADJq9gAAiJw9AADiM3sAAMT8JwAA4gcAwNoLAMDBMwBA1OwBABB31gAAyE3v LQAA7qLHpgAA2dFdswIAQJ6O3lM/AID26ehfJ+ftAADqdHf0162c1wIAyKzTjx92 4JgAAAAAYZD9U5tiH6wDAAAAAAAAAAAAAAAAAAAAAACcvTumlRiIwTDo4lE4FJFS ONw2KLYMgsAwuSft6UisZxh83S+5cC055t+2AADmyFrW+Dm3Xz4AAPP8jZ/Ps38t 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 +pokSVKmAR7G7OeVZjYqqgAAAABJRU5ErkJggg== ------------oekbGifD3oOrVm0Lrt9aet Content-Disposition: inline Content-Type: image/png Content-Location: http://forum.technicaldiving.ie/Themes/default/images/theme/menu_gfx.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAAqoAAAGuCAMAAABvItTTAAAAA3NCSVQICAjb4U/g AAABIFBMVEX///////78///+/v79/f37/P77+/v6+vr6+/32+v35+vz5+fn1+fz0 +Pvz9/ry9vn09PTx9Pnw8/jv8vfu8fbt8PXv7+/r8Pbq7/Xu7u7t7e3p7vTn7PLq 6urm6/Hp6enl6vDo6Oj/5sTk6e//5cHj6O7i5+3h5uzk5OTg5evc5ezc5eri4uLd 4/Hb3+vc3+Tb3+jZ3+vY3OLb29vW2+HZ2dn+zonR0dHNzc3Gxsb+tlG+vr68vLy6 urqxusb9sEK3t7f9rz+xsbH9oR+rq6v9oBz9nBP9mxCkpKT9lweioqL9lgSgoKCe np6MmaqDkKOBj6KFhYV/f39rfJJqepB0dHRkdYxic4tsbGxcboZabIVoaGhhYWFf X19dXV3///9qWxLPAAAAYHRSTlP///////////////////////////////////// //////////////////////////////////////////////////////////////// /////////////////////////wBzbeRDAAAACXBIWXMAAAsSAAALEgHS3X78AAAA GHRFWHRTb2Z0d2FyZQBBZG9iZSBGaXJld29ya3NPsx9OAAAGAElEQVR4nO3dyXJV VQCG0R1sULHBDsUexL6JxoiKRVARRASCBgMqkvd/C5OglDQJZ5TDV7XWeA/+wVd3 cveuMzY2jp04/Qs8wE6fOLaxMTaOz70D7u/4xjj289wjYIKj4/u5J8AUp8bZuSfA FGfH3AtgGqkSIVUipEqEVImQKhFSJUKqREiVCP9W0fCTOwA0nHKzioaj7quScHxj bL0CODP3DtjNmZuvACBBqkRIlQipEiFVIqRKhFSJkCoRUiVCqkRIlYjNVJcvrf0J D7C1S8tbqa7MvQPub2VjLP8x9wiYYGlcnnsCTLE61ueeAFOsj7kXwDRSJUKqREiV CKkSIVUipEqEVImQKhH+raLhqjsANKy6WUXDkvuqJKzcfAVwZe4dsJsrN18BQIJU iZAqEVIlQqpESJUIqRIhVSKkSoRUiZAqEWOMA4dePwIPskMHNkMdB+eeAfd3cPM3 de4NMMX+8crcE2CKw+PNuSfAJGPuATCNVImQKhFSJUKqREiVCKkSIVUipEqEVIlw B4CGw25W0bDffVUSDg6vAAjYfgUw94sZmEaqREiVCKkSIVUipEqEVImQKhFSJUKq REiViDHG8qW1ub/2BrtZu7S8dVvFN1YJWBm+XE3D0rg89wSYYnWszz0Bplgfcy+A aaRKhFSJkCoRUiVCqkRIlQipEiFVIvxbRcNVdwBoWHWzioYl91VJWBnbrwCuzL0D dnNl+xXA3C9mYBqpEiFVIqRKhFSJkCoRUiVCqkRIlQipEiFVIqRKhFSJkCoRUiVC qkRIlQipEiFVIqRKhFSJuEeq758///HeD4H/3LvAu1P9+u+TJ69/sweD4J52KPCu VL/766uFhS+v/bAno+AuOxV4Z6o//n5kYXFx4fBv5/ZoGNxmxwLvSPXcrwc3z22e fPTixT0bB7fsXODtqV648Oj2uc2TC99e38OBsG2XAseN/zu58O+5rZNfXLsBe2uX Ase+2y3esg9msGOBYxESxmeQMD6FhPEJJIzPIWF8CAnjI0gYH0CCVIkY70HCeBcS pErEeAcSxtuQIFUixluQMN6ABKkSMV6DhPEqJIyXIUGqRIyXIGG8CAlSJWK8AAnj eUiQKhHjOUgYz0KCVIkYz0CCVIkYT0PCeAoSxpOQIFUixuOQIFUixhOQIFUipEqE VImQKhHjMUiQKhFSJUKqREiVCKkSMR6BBKkSIVUipEqEVIkYD0OCVImQKhFSJUKq RIyHIEGqREiVCKkSIVUipErEWIAEqRIhVSKkSoRUiZAqEVIlQqpESJUIqRIhVSKk SoRUiZAqEVIlQqpESJUIqRIhVSKkSoRUiZAqEVIlQqpESJUIqRIhVSKkSoRUiZAq EVIlQqpESJUIqRIhVSKkSoRUiZAqEVIlQqpESJUIqRIhVSKkSoRUiZAqEVIlQqpE SJUIqRIhVSKkSoRUiZAqEVIlQqpESJUIqRIhVSKkSoRUiZAqEVIlQqpESJUIqRIh VSKkSoRUiZAqEVIlQqpESJUIqRIhVSKkSoRUiZAqEVIlQqpESJUIqRIhVSKkSoRU iZAqEVIlQqpESJUIqRIhVSKkSoRUiZAqEVIlQqpESJUIqRIhVSKkSoRUiZAqEVIl QqpESJUIqRIhVSKkSoRUiZAqEVIlQqpESJUIqRIhVSKkSoRUiZAqEVIlQqpESJUI qRIhVSKkSoRUiZAqEVIlQqpESJUIqRIhVSKkSoRUiZAqEVIlQqpESJUIqRIhVSKk SoRUiZAqEVIlQqpESJUIqRIhVSKkSoRUiZAqEVIlQqpESJUIqRIhVSKkSoRUiZAq EVIlQqpESJUIqRIhVSKkSoRUiZAqEVIlQqpESJUIqRIhVSKkSoRUiZAqEVIlQqpE SJUIqRIhVSKkSoRUiZAqEVIlQqpESJUIqRIhVSKkSoRUiZAqEVIlQqpESJUIqRIh VSKkSoRUiZAqEVIlQqpESJUIqRIhVSKkSoRUiZAqEVIlQqpESJUIqRIhVSKkSoRU iZAqEVIlQqpESJUIqRIhVSKkSoRUiZAqEVIlQqpESJUIqRLxD41ljmYmbEszAAAA AElFTkSuQmCC ------------oekbGifD3oOrVm0Lrt9aet Content-Disposition: inline Content-Type: image/png Content-Location: http://forum.technicaldiving.ie/Themes/default/images/theme/frame_repeat.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAACPwAAAAIAQMAAABdpeFuAAAABlBMVEW3t7f///+A VB43AAAAJklEQVR4Xu3QAREAAAQEMM1V/SY0EMBtEVY9B/I1SJAgQYIECSILoBfy gZu3rSIAAAAASUVORK5CYII= ------------oekbGifD3oOrVm0Lrt9aet Content-Disposition: inline; filename=index.css Content-Type: text/css; charset=UTF-8; name=index.css Content-Location: http://forum.technicaldiving.ie/Themes/default/css/index.css?fin20 Content-Transfer-Encoding: 8bit /* Styles for the general looks for the Curve theme. ------------------------------------------------------- */ /* Normal, standard links. */ a:link, a:visited { color: #346; text-decoration: none; } a:hover { text-decoration: underline; cursor: pointer; } /* Links that open in a new window. */ a.new_win:link, a.new_win:visited { color: #346; text-decoration: none; } a.new_win:hover { text-decoration: underline; } /* Tables should show empty cells. */ table { empty-cells: show; } /* Set a fontsize that will look the same in all browsers. */ body { background: #E9EEF2 url(../images/theme/backdrop.png) repeat-x; font: 78%/130% "Verdana", "Arial", "Helvetica", sans-serif; margin: 0 auto; padding: 15px 0; } /* Help popups require a different styling of the body element. */ body#help_popup { padding: 1em; } /* use dark grey for the text, leaving #000 for headers etc */ body, td, th, tr { color: #444; } /* This division wraps the entire forum when a forum width is set. */ div#wrapper { margin: 0 auto; min-width: 764px; max-width: 2300px; } /* lets give all forms zero padding/margins */ form { padding: 0; margin: 0; } /* We can style the different types of input buttons to be uniform throughout different browsers and their color themes. .button_submit - covers input[type=submit], input[type=button], button[type=submit] and button[type=button] in all browsers .button_reset - covers input[type=reset] and button[type=reset] throughout all browsers .input_check - covers input[type=checkbox] throughout all browsers .input_radio - covers input[type=radio] throughout all browsers .input_text - covers input[type=text] throughout all browsers .input_file - covers input[type=file] throughout all browsers */ input, button, select, textarea { font: 95%/115% verdana, Helvetica, sans-serif; color: #000; background: #fff; border: 1px solid #7f9db9; padding: 2px; } /* Select elements look horrible with the extra padding, so leave them unpadded. */ select { padding: 0; } /* Add some padding to the options instead. */ select option { padding: 1px; } /* The font size of textareas should be just a little bit larger. */ textarea { font: 100%/130% verdana, Helvetica, sans-serif; } /* Buttons should be styled a bit differently, in order to make them look more button'ish. */ .button_submit, .button_reset { background: #cde7ff url(../images/theme/submit_bg.png) no-repeat; border: 1px solid #aaa; cursor: pointer; font-weight: normal; } input:hover, textarea:hover, button:hover, select:hover { border: 1px solid #454545; } .button_submit:hover, .button_reset:hover { border: 1px solid #aaa; background: url(../images/theme/submit_bg.png) no-repeat 0 -140px #cde7ff; } input:focus, textarea:focus, button:focus, select:focus { border: 1px solid #454545; } /* All input elements that are checkboxes or radio buttons shouldn't have a border around them. */ input.input_check, input.input_radio { border: none; background: none; } h3.catbg input.input_check { margin: 9px 7px 0 7px; } /* Give disabled text input elements a different background color. */ input[disabled].input_text { background-color: #eee; } /* Standard horizontal rule.. ([hr], etc.) */ hr, .hrcolor { height: 1px; border: 0; color: #ccc; background-color: #ccc; } /* By default set the color on these tags as #000. */ h1, h2, h3, h4, h5, h6 { color: #000; font-size: 1em; margin: 0; padding: 0; } /* Fieldsets are used to group elements. */ fieldset { border: 1px solid #c4c4c4; padding: 1em; margin: 0 0 0.5em 0; } fieldset legend { font-weight: bold; color: #444; } /* No image should have a border when linked. */ a img { border: 0; } /* Define strong as bold, and em as italics */ strong { font-weight: bold; } em { font-style: italic; } /* Alternative for u tag */ .underline { text-decoration: underline; } /* Common classes to easy styling. ------------------------------------------------------- */ .floatright { float: right; } .floatleft { float: left; } .flow_auto { overflow: auto; } .flow_hidden { overflow: hidden; } .flow_hidden .windowbg, .flow_hidden .windowbg2 { margin-top: 2px; } .clear { clear: both; } .clear_left { clear: left; } .clear_right { clear: right; } /* Default font sizes: small (8pt), normal (10pt), and large (14pt). */ .smalltext, tr.smalltext th { font-size: 0.85em; font-family: verdana, sans-serif; } .middletext { font-size: 0.9em; line-height: 1em; font-family: verdana, sans-serif; } .normaltext { font-size: 1em; line-height: 1.2em; } .largetext { font-size: 1.4em; } .centertext { margin: 0 auto; text-align: center; } .righttext { margin-left: auto; margin-right: 0; text-align: right; } .lefttext { margin-left: 0; margin-right: auto; text-align: left; } .double_height { line-height: 2em; } /* some common padding styles */ .padding { padding: 0.7em; } .main_section, .lower_padding { padding-bottom: 0.5em; } /* a quick reset list class. */ ul.reset, ul.reset li { padding: 0; margin: 0; list-style: none; } /* Some BBC related styles. ------------------------------------------------------- */ /* A quote, perhaps from another post. */ blockquote.bbc_standard_quote, blockquote.bbc_alternate_quote { font-size: x-small; color: #000; line-height: 1.4em; background: url(../images/theme/quote.png) 0.1em 0.1em no-repeat; border-top: 2px solid #99A; border-bottom: 2px solid #99A; padding: 1.1em 1.4em; margin: 0.1em 0 0.3em 0; overflow: auto; } /* Alterate blockquote stylings */ blockquote.bbc_standard_quote { background-color: #d7daec; } blockquote.bbc_alternate_quote { background-color: #e7eafc; } /* A code block - maybe PHP ;). */ code.bbc_code { display: block; font-family: "dejavu sans mono", "monaco", "lucida console", "courier new", monospace; font-size: x-small; background: #eef; border-top: 2px solid #999; border-bottom: 2px solid #999; line-height: 1.5em; padding: 3px 1em; overflow: auto; white-space: nowrap; /* Show a scrollbar after about 24 lines. */ max-height: 24em; } /* The "Quote:" and "Code:" header parts... */ .codeheader, .quoteheader { color: #666; font-size: x-small; font-weight: bold; padding: 0 0.3em; } /* For links to change the code stuff... */ .codeoperation { font-weight: normal; } /* Styling for BBC tags */ .bbc_link:link, .bbc_link:visited { border-bottom: 1px solid #A8B6CF; } .bbc_link:hover { text-decoration: none; border-bottom: 1px solid #346; } .bbc_size { line-height: 1.4em; } .bbc_color a { color: inherit; } .bbc_img { border: 0; } .bbc_table { font: inherit; color: inherit; } .bbc_table td { font: inherit; color: inherit; vertical-align: top; } .bbc_u { text-decoration: underline; } .bbc_list { text-align: left; } .bbc_tt { font-family: "dejavu sans mono", "monaco", "lucida console", "courier new", monospace; } /* Generally, those [?] icons. This makes your cursor a help icon. */ .help { cursor: help; } /* /me uses this a lot. (emote, try typing /me in a post.) */ .meaction { color: red; } /* Highlighted text - such as search results. */ .highlight { font-weight: bold; color: #ff7200 !important; font-size: 1.1em; } /* A more discreet highlight color, for selected membergroups etc. */ .highlight2 { background-color: #D1E1EF; color: #000 !important; } /* Generic, mostly color-related, classes. ------------------------------------------------------- */ .titlebg, .titlebg2, tr.titlebg th, tr.titlebg td, tr.titlebg2 td { color: #222; font-family: arial, helvetica, sans-serif; font-size: 1.1em; font-weight: bold; background: #e3e9ef url(../images/theme/main_block.png) no-repeat -10px -380px; } .catbg, .catbg2, tr.catbg td, tr.catbg2 td, tr.catbg th, tr.catbg2 th { color: #fff; font-family: arial, helvetica, sans-serif; font-size: 1.1em; font-weight: bold; background: #a7b9cd url(../images/theme/main_block.png) no-repeat -10px -280px; } /* adjust the table versions of headers */ tr.titlebg th, tr.titlebg2 th, td.titlebg, td.titlebg2, tr.catbg th, tr.catbg2 th, td.catbg, td.catbg2 { padding: 0 6px; } tr.titlebg th a:link, tr.titlebg th a:visited, tr.titlebg2 td a:link, tr.titlebg2 td a:visited { color: #222; } tr.catbg th a:link, tr.catbg th a:visited, tr.catbg2 td a:link, tr.catbg2 td a:visited { color: #fff; } .catbg select { height: 1.5em; font-size: 0.85em; } /* Alternating backgrounds for posts, and several other sections of the forum. */ .windowbg, #preview_body { color: #000; background-color: #e7eaef; } .windowbg2 { color: #000; background-color: #f0f4f7; } .windowbg3 { color: #000; background-color: #cacdd3; } /* the page navigation area */ .pagesection { font-size: 0.9em; padding: 0.2em; overflow: hidden; margin-bottom: 1px; } div.pagesection div.floatright input { margin-top: 3px; } .pagelinks { padding: 0.6em 0 0.4em 0; } /* Colors for background of posts requiring approval */ .approvebg { color: #000; background-color: #ffeaea; } .approvebg2 { color: #000; background-color: #fff2f2; } /* Color for background of *topics* requiring approval */ .approvetbg { color: #000; background-color: #e4a17c; } .approvetbg2 { color: #000; background-color: #f3bd9f; } /* Sticky topics get a different background */ .stickybg { background: #e8d8cf; } .stickybg2 { background: #f2e3d9; } /* Locked posts get a different shade, too! */ .lockedbg { background: #d4dce2; font-style: italic; } .lockedbg2 { background: #d8e1e7; font-style: italic; } /* Posts and personal messages displayed throughout the forum. */ .post, .personalmessage { overflow: auto; line-height: 1.4em; padding: 0.1em 0; } /* All the signatures used in the forum. If your forum users use Mozilla, Opera, or Safari, you might add max-height here ;). */ .signature, .attachments { width: 98%; overflow: auto; clear: right; padding: 1em 0 3px 0; border-top: 1px solid #aaa; line-height: 1.4em; font-size: 0.85em; } .custom_fields_above_signature { width: 98%; clear: right; padding: 1em 0 3px 0; border-top: 1px solid #aaa; line-height: 1.4em; font-size: 0.85em; } /* Sometimes there will be an error when you post */ .error { color: red; } /* Messages that somehow need to attract the attention. */ .alert { color: red; } /* Calendar colors for birthdays, events and holidays */ .birthday { color: #920ac4; } .event { color: #078907; } .holiday { color: #000080; } /* Colors for warnings */ .warn_mute { color: red; } .warn_moderate { color: #ffa500; } .warn_watch, .success { color: green; } a.moderation_link, a.moderation_link:visited { color: red; font-weight: bold; } .openid_login { background: white url(../images/openid.gif) no-repeat; padding-left: 18px; } /* a descriptive style */ .description, .description_board, .plainbox { padding: 0.5em 1em; font-size: 0.9em; line-height: 1.4em; border: 1px solid #bbb; background: #f5f5f0; margin: 0.2em 1px 1em 1px; } .description_board { margin: 1em 1px 0 1px; } /* an informative style */ .information { padding: 0.5em 1em; font-size: 0.9em; line-height: 1.3em; border: 1px solid #bbb; background: #f0f6f0; margin: 0.2em 1px 1em 1px; } .information p { padding: 1em; margin: 0; } p.para2 { padding: 1em 0 3.5em 0; margin: 0; } /* AJAX notification bar ------------------------------------------------------- */ #ajax_in_progress { background: url(../images/theme/loadingbar.png) repeat-x; color: #f96f00; text-align: center; font-size: 16pt; padding: 8px; width: 100%; height: 66px; line-height: 25px; position: fixed; top: 0; left: 0; } #ajax_in_progress a { color: orange; text-decoration: underline; font-size: smaller; float: right; margin-right: 20px; } /* Lists with settings use these a lot. ------------------------------------------------------- */ dl.settings { clear: right; overflow: auto; margin: 0 0 10px 0; padding: 0; } dl.settings dt { width: 40%; float: left; margin: 0 0 10px 0; padding: 0; clear: both; } dl.settings dt.settings_title { width: 100%; float: none; margin: 0 0 10px 0; padding: 5px 0 0 0; font-weight: bold; clear: both; } dl.settings dt.windowbg { width: 98%; float: left; margin: 0 0 3px 0; padding: 0 0 5px 0; clear: both; } dl.settings dd { width: 56%; float: right; overflow: auto; margin: 0 0 3px 0; padding: 0; } dl.settings img { margin: 0 10px 0 0; } /* help icons */ dl.settings dt a img { position: relative; top: 2px; } /* Styles for rounded headers. ------------------------------------------------------- */ h3.catbg, h3.catbg2, h3.titlebg, h4.titlebg, h4.catbg { overflow: hidden; height: 31px; line-height: 31px; font-size: 1.2em; font-weight: bold; } h3.catbg a:link, h3.catbg a:visited, h4.catbg a:link, h4.catbg a:visited, h3.catbg, .table_list tbody.header td, .table_list tbody.header td a { color: #fff; } h3.catbg2 a, h3.catbg2 { color: #feb; } h3.catbg a:hover, h4.catbg a:hover, .table_list tbody.header td a:hover { color: #fd9; text-decoration: none; } h3.catbg2 a:hover { color: #fff; text-decoration: none; } h3.titlebg a, h3.titlebg, h4.titlebg, h4.titlebg a { color: #222; } h3.titlebg a:hover, h4.titlebg a:hover { color: #53616f; text-decoration: none; } h3.catbg img.icon, h4.titlebg img.icon { vertical-align: middle; margin: -2px 5px 0 0; } h4.catbg a.toggle img { vertical-align: middle; margin: -2px 5px 0 5px; } h4.catbg, h4.catbg2 , h3.catbg , h3.catbg2 , .table_list tbody.header td.catbg { background: url(../images/theme/main_block.png) no-repeat 100% -160px; padding-right: 9px; } h4.titlebg, h3.titlebg { background: url(../images/theme/main_block.png) no-repeat 100% -200px; padding-right: 9px; } h4.titlebg img.icon { float: left; margin: 5px 8px 0 0; } div.cat_bar { background: #99abbf url(../images/theme/main_block.png) no-repeat 0 -160px; padding-left: 9px; height: 31px; overflow: hidden; margin-bottom: 1px; } div.title_bar { background: #e3e9ef url(../images/theme/main_block.png) no-repeat 0 -200px; padding-left: 9px; height: 31px; overflow: hidden; margin-bottom: 1px; } /* rounded bars needs a different background here */ div.roundframe div.cat_bar { background: #99abbf url(../images/theme/main_block.png) no-repeat 0 -240px; margin-bottom: 0; } div.roundframe div.cat_bar h3.catbg { background: url(../images/theme/main_block.png) no-repeat 100% -240px; } div.title_barIC { background: #dadfe6 url(../images/theme/main_block.png) no-repeat 0 -120px; padding-left: 9px; height: 31px; overflow: hidden; margin-bottom: 1px; } div.title_barIC h4.titlebg { background: url(../images/theme/main_block.png) no-repeat 100% -120px; } #upshrinkHeaderIC p.pminfo { margin: 0; padding: 0.5em; } img#upshrink_ic, img#newsupshrink { float: right; margin: 10px 5px 0 0; } table.table_list a.unreadlink, table.table_list a.collapse { float: right; } table.table_list a.collapse { margin: 10px 5px 0 1em; height: 31px; line-height: 31px; } /* The half-round header bars for some tables. */ .table_grid tr.catbg, .table_grid tr.titlebg { font-size: 0.95em; border-bottom: 1px solid #fff; } .table_grid tr.catbg th, .table_grid tr.titlebg th { height: 28px; line-height: 28px; } tr.catbg th.first_th { background: #a7b9cd url(../images/theme/main_block.png) no-repeat 0 -280px; } tr.catbg th.last_th { background: #a7b9cd url(../images/theme/main_block.png) no-repeat 100% -280px; } tr.titlebg th.first_th { background: #e3e9ef url(../images/theme/main_block.png) no-repeat 0 -380px; } tr.titlebg th.last_th { background: #e3e9ef url(../images/theme/main_block.png) no-repeat 100% -380px; } .table_grid th.last_th input { margin: 0 2px; } .table_grid th.lefttext { padding: 0 0.7em; } /* a general table class */ table.table_grid { border-collapse: collapse; margin-top: 0.1em; } table.table_grid td { padding: 3px; border-bottom: 1px solid #fff; border-right: 1px solid #fff; } /* GenericList */ .additional_row { padding: 0.5em 0 0.5em 0; } table.table_grid thead tr.catbg th { white-space: nowrap; } /* table_grid styles for Profile > Show Permissions. */ #permissions table.table_grid td { padding: 0.4em 0.8em; cursor: default; } /* Common styles used to add corners to divisions. ------------------------------------------------------- */ .windowbg span.topslice { display: block; padding-left: 20px; background: url(../images/theme/main_block.png) 0 -30px no-repeat; } .windowbg span.topslice span { display: block; background: url(../images/theme/main_block.png) 100% -30px no-repeat; height: 11px; } .windowbg span.botslice { display: block; padding-left: 20px; background: url(../images/theme/main_block.png) 0 -40px no-repeat; font-size: 5px; line-height: 5px; margin-bottom: 0.2em; } .windowbg span.botslice span { display: block; background: url(../images/theme/main_block.png) 100% -40px no-repeat; height: 11px; } .windowbg2 span.topslice { display: block; padding-left: 20px; background: url(../images/theme/main_block.png) 0 -60px no-repeat; } .windowbg2 span.topslice span { display: block; background: url(../images/theme/main_block.png) 100% -60px no-repeat; height: 11px; } .windowbg2 span.botslice { display: block; padding-left: 20px; background: url(../images/theme/main_block.png) 0 -71px no-repeat; font-size: 5px; line-height: 5px; margin-bottom: 0.2em; } .windowbg2 span.botslice span { display: block; background: url(../images/theme/main_block.png) 100% -71px no-repeat; height: 11px; } .approvebg span.topslice { display: block; padding-left: 20px; background: url(../images/theme/main_block.png) 0 0 no-repeat; } .approvebg span.topslice span { display: block; background: url(../images/theme/main_block.png) 100% 0 no-repeat; height: 11px; } .approvebg span.botslice { display: block; padding-left: 20px; background: url(../images/theme/main_block.png) 0 -11px no-repeat; margin-bottom: 0.2em; } .approvebg span.botslice span { display: block; background: url(../images/theme/main_block.png) 100% -11px no-repeat; height: 11px; } .postbg { border-left: 1px solid #7f7f7f; border-right: 1px solid #7f7f7f; } /* Used for sections that need somewhat larger corners. ----------------------------------------------------------- */ .roundframe { padding: 0 10px; background: #f5f5f5; border-left: 1px solid #c5c5c5; border-right: 1px solid #c5c5c5; } .roundframe dl, .roundframe dt, .roundframe p { margin: 0; } .roundframe p { padding: 0.5em; } span.upperframe { padding: 0; display: block; background: url(../images/theme/main_block.png) 0 -90px no-repeat; padding-left: 20px; } span.upperframe span { padding: 0; height: 12px; display: block; background: url(../images/theme/main_block.png) 100% -90px no-repeat; } span.lowerframe { padding: 0; display: block; background: url(../images/theme/main_block.png) 0 -102px no-repeat; padding-left: 20px; } span.lowerframe span { padding: 0; height: 12px; display: block; background: url(../images/theme/main_block.png) 100% -102px no-repeat; } /* The main content area. ------------------------------------------------------- */ .content { padding: 0.5em 1.2em; margin: 0; border: none; } .content p { margin: 0 0 0.5em 0; } /* Styles used by the auto suggest control. ------------------------------------------------------- */ .auto_suggest_div { border: 1px solid #000; position: absolute; visibility: hidden; } .auto_suggest_item { background-color: #ddd; } .auto_suggest_item_hover { background-color: #888; cursor: pointer; color: #eee; } /* Styles for the standard dropdown menus. ------------------------------------------------------- */ #main_menu { padding: 0 0.5em; float: left; margin: 0; width: 98%; } .dropmenu, .dropmenu ul { list-style: none; line-height: 1em; padding: 0; margin: 0; } .dropmenu { padding: 0 0.5em; } .dropmenu a { display: block; color: #000; text-decoration: none; } .dropmenu a span { display: block; padding: 0 0 0 5px; font-size: 0.9em; } /* the background's first level only */ .dropmenu li a.firstlevel { margin-right: 8px; } .dropmenu li a.firstlevel span.firstlevel { display: block; position: relative; left: -5px; padding-left: 5px; height: 22px; line-height: 19px; white-space: pre; } .dropmenu li { float: left; padding: 0; margin: 0; position: relative; } .dropmenu li ul { z-index: 90; display: none; position: absolute; width: 19.2em; font-weight: normal; border-bottom: 1px solid #999; background: url(../images/theme/menu_gfx.png) 0 -130px no-repeat; padding: 7px 0 0 0; } .dropmenu li li { width: 19em; margin: 0; border-left: 1px solid #999; border-right: 1px solid #999; } .dropmenu li li a span { display: block; padding: 8px; } .dropmenu li ul ul { margin: -1.8em 0 0 13em; } /* the active button */ .dropmenu li a.active { background: url(../images/theme/menu_gfx.png) no-repeat 100% 0; color: #fff; font-weight: bold; } .dropmenu li a.active span.firstlevel { background: url(../images/theme/menu_gfx.png) no-repeat 0 0; } /* the hover effects */ .dropmenu li a.firstlevel:hover, .dropmenu li:hover a.firstlevel { background: url(../images/theme/menu_gfx.png) no-repeat 100% -30px; color: #fff; cursor: pointer; text-decoration: none; } .dropmenu li a.firstlevel:hover span.firstlevel, .dropmenu li:hover a.firstlevel span.firstlevel { background: url(../images/theme/menu_gfx.png) no-repeat 0 -30px; } /* the hover effects on level2 and 3 */ .dropmenu li li a:hover, .dropmenu li li:hover>a { background: #d4dbe4; color: #000; text-decoration: none; } .dropmenu li:hover ul ul, .dropmenu li:hover ul ul ul { top: -999em; } .dropmenu li li:hover ul { top: auto; } .dropmenu li:hover ul { display: block; } .dropmenu li li.additional_items { background-color: #fff; } /* The dropdown menu toggle image */ #menu_toggle { float: right; margin-right: 10px; padding-top: 3px; } #menu_toggle span { position: relative; right: 5000px; } /* Styles for the standard button lists. ------------------------------------------------------- */ .buttonlist ul { z-index: 100; padding: 5px; margin: 0 0.2em 5px 0; } .buttonlist ul li { margin: 0; padding: 0; list-style: none; float: left; } .buttonlist ul li a { display: block; font-size: 0.8em; color: #000; background: #e8e8e8 url(../images/theme/menu_gfx.png) no-repeat 0 -60px; padding: 0 0 0 8px; margin-left: 12px; text-transform: uppercase; cursor: pointer; } .buttonlist ul li a:hover { background: url(../images/theme/menu_gfx.png) no-repeat 0 0; color: #fff; text-decoration: none; } .buttonlist ul li a span { background: url(../images/theme/menu_gfx.png) no-repeat 100% -60px; display: block; height: 19px; line-height: 19px; padding: 0 8px 0 0; } .buttonlist ul li a:hover span { background: #fff url(../images/theme/menu_gfx.png) no-repeat 100% 0; } /* the active one */ .buttonlist ul li a.active { background: #5a6c85 url(../images/theme/menu_gfx.png) no-repeat 0 -90px; color: #fff; font-weight: bold; } .buttonlist ul li a.active span { background: url(../images/theme/menu_gfx.png) no-repeat 100% -90px; } .buttonlist ul li a.active { font-weight: bold; } .buttonlist ul li a.active:hover { color: #ddf; } .align_top ul li a, .align_bottom ul li a { margin: 0 12px 0 0; } /* the navigation list */ ul#navigation { margin: 0; font-size: 0.9em; padding: 1em 0.4em; } ul#navigation li { float: none; font-size: 0.95em; display: inline; } #adm_submenus { padding-left: 2em; overflow: hidden; } /* Styles for the general looks for the Curve theme. ------------------------------------------------------- */ /* the framing graphics */ #header { background: url(../images/theme/main_block.png) #fefefe no-repeat 0 -480px; padding-left: 20px; } #header div.frame { background: url(../images/theme/main_block.png) no-repeat 100% -480px; display: block; padding: 5px 20px 1em 0; } /* the content section */ #content_section { background: #FFFFFF url(../images/theme/frame_repeat.png) repeat-y top left; padding-left: 20px; } #content_section div.frame { background: url(../images/theme/frame_repeat.png) repeat-y top right; display: block; padding: 0 20px 0 0; } #main_content_section { width: 100%; min-height: 200px; } /* the main title, always stay at 45 pixels in height! */ h1.forumtitle { line-height: 45px; font-size: 1.8em; font-family: Geneva, verdana, sans-serif; margin: 0; padding: 0; float: left; } /* float these items to the right */ #siteslogan, img#smflogo { margin: 0; padding: 0; float: right; line-height: 3em; } h3, h4 { padding-bottom: 3px; } /* the upshrink image needs some tweaking */ img#upshrink { float: right; margin: 1em; } /* ..so does the SMF logo */ img#smflogo { margin-left: 1em; } /* the upper_section, float the two each way */ #upper_section { padding: 5px; margin-bottom: 1.5em; } #upper_section ul li.greeting { font-size: 1.3em; font-weight: bold; line-height: 1.5em; } #upper_section div.news { width: 50%; float: right; text-align: right; } #guest_form { overflow: hidden; } #guest_form .info { padding: 4px 0 ; line-height: 1.3em; } div#upper_section div.user { width: 50%; float: left; overflow: auto; } div#upper_section div.user p { float: left; margin: 0 1em 1em 0; padding: 0; } div#upper_section div.user ul { margin: 0; padding-left: 10px; } div#upper_section div.user ul li { margin-bottom: 2px; } div#upper_section div.news p { display: inline; } div#upper_section div.news form { padding-bottom: 10px; } /* clearing the floats */ #top_section { min-height: 65px; overflow: hidden; margin-bottom: 3px; } #upper_section { overflow: hidden; } /* The navigation list (i.e. linktree) */ .navigate_section { padding: 0.5em; margin: 0 0 0 0; } .navigate_section ul { display: block; margin: 0; font-size: 0.9em; padding: 1em 0 0.5em 0; border-top: 1px solid #ccc; overflow: hidden; list-style: none; clear: both; width: 100%; } .navigate_section ul li { float: left; padding: 0 0.5em 0 0; font-size: 0.95em; } .navigate_section ul li a { white-space: pre; } /* The footer wih copyright links etc. */ #footer_section { text-align: center; background: url(../images/theme/main_block.png) no-repeat 0 -820px; padding-left: 20px; } #footer_section span.smalltext { font-size: 100%; } #footer_section div.frame { background: url(../images/theme/main_block.png) no-repeat 100% -820px; display: block; padding: 60px 0 0 0; } #footer_section ul li, #footer_section p { font-size: 0.8em; } #footer_section ul li { display: inline; padding-right: 5px; } #footer_section ul li.copyright { display: block; } select.qaction, input.qaction { font-size: 0.85em; padding: 0; } #mlist table tbody td.windowbg2 { text-align: center; } /* Styles for a typical table. ------------------------------------------------------- */ table.table_list { width: 100%; } table.table_list p { padding: 0; margin: 0; } table.table_list td, table.table_list th { padding: 5px; } table.table_list tbody.header td { padding: 0; } table.table_list tbody.content td.stats { font-size: 90%; width: 15%; text-align: center; } table.table_list tbody.content td.lastpost { line-height: 1.3em; font-size: 85%; width: 24%; } table.table_list tbody.content td.icon { text-align: center; width: 6%; } /* Styles for the board index. ------------------------------------------------- */ /* the board title! */ .table_list tbody.content td.info a.subject { font-weight: bold; font-size: 110%; color: #d97b33; } .table_list tbody.content td.children { color: #555; font-size: 85%; } p.moderators { font-size: 0.8em; font-family: verdana, sans-serif; } /* hide the table header/footer parts - but its here for those needing to style it */ #boardindex_table .table_list thead, #boardindex_table .table_list tfoot { display: none; } /* the posting icons */ #posting_icons { padding: 0 1em 0.5em 1em; margin: 0 0 1em 0; line-height: 1em; } #posting_icons ul { font-size: 0.8em; } #posting_icons img { vertical-align: middle; margin: 0 0 0 4ex; } #postbuttons_upper ul li a span { line-height: 19px; padding: 0 0 0 6px; } .nextlinks { text-align: right; margin-top: -1px; } .nextlinks_bottom { clear: right; text-align: right; } .mark_read { padding: 0 0.5em; } /* the newsfader */ #newsfader { margin: 0 2px; } #smfFadeScroller { text-align: center; padding: 0 2em; overflow: auto; margin: 1em 0; color: #575757; /* shouldn't be shorthand style due to a JS bug in IE! */ } /* Styles for the info center on the board index. ---------------------------------------------------- */ #upshrinkHeaderIC { margin-top: 4px; } dl#ic_recentposts { margin: 0 0 0.5em 0; padding: 0.5em; line-height: 1.3em; } dl#ic_recentposts dt { float: left; } dl#ic_recentposts dd { text-align: right; } #upshrinkHeaderIC p { margin: 0 0 0.5em 0; padding: 0.5em; } #upshrinkHeaderIC p.last { margin: 0; padding: 0.5em; border-top: 2px dotted #bbb; } #upshrinkHeaderIC p.inline { border: none; margin: 0; padding: 0.2em 0.5em 0.2em 0.5em; } #upshrinkHeaderIC p.stats { font-size: 1.1em; padding-top: 8px; } form#ic_login { padding: 0.5em; height: 2em; } form#ic_login ul li { margin: 0; padding: 0; float: left; width: 20%; text-align: center; } form#ic_login ul li label { display: block; } /* the small stats */ #index_common_stats { display: block; margin: 0 0 0.5em 0; text-align: right; font-size: 0.9em; position: relative; top: -20px; line-height: 1px; } img.new_posts { padding: 0 0.1em; } /* Styles for the message (topic) index. ---------------------------------------------------- */ div.table_frame .table_list { border-collapse: collapse; margin: 2px 0; } .table_frame .table_list td.icon, .table_frame .table_list td.info, .table_frame .table_list td.stats { border-right: 2px solid white; } #messageindex { clear: both; } /* the page navigation area */ .childboards { margin-bottom: 0.2em; } #childboards h3 { padding-bottom: 0; } #childboards .table_list thead { display: none; } #childboards .table_list { margin-bottom: 1em; } .lastpost img { float: right; padding: 4px; } /* Styles for the display template (topic view). ---------------------------------------------------- */ #postbuttons div.buttons { padding: 0.5em; width: 40%; float: right; } #postbuttons div.middletext { width: 60%; } #postbuttons span { display: block; text-align: right; } #postbuttons span.lower { clear: right; } #postbuttons .buttonlist { float: right; } #postbuttons #pagelinks { padding-top: 1em; } #moderationbuttons { overflow: hidden; } /* Events */ .linked_events { padding: 1em 0; } .edit_event { margin: 0 1em; vertical-align: middle; } /* Poll question */ #poll { overflow: hidden; } #poll .content { padding: 0 1em; } h4#pollquestion { padding: 0 0 0.5em 2em; } /* Poll vote options */ #poll_options ul.options { border-top: 1px solid #9999aa; padding: 1em 2.5em 0 2em; margin: 0 0 1em 0; } #poll_options div.submitbutton { border-bottom: 1px solid #9999aa; clear: both; padding: 0 0 1em 2em; margin: 0 0 1em 0; } /* Poll results */ #poll_options dl.options { border: solid #9999aa; border-width: 1px 0; padding: 1em 2.5em 1em 2em; margin: 0 1em 1em 0; line-height: 1.1em !important; } #poll_options dl.options dt { padding: 0.3em 0; width: 30%; float: left; margin: 0; clear: left; } #poll_options dl.options .voted { font-weight: bold; } #poll_options dl.options dd { margin: 0 0 0 2em; padding: 0.1em 0 0 0; width: 60%; max-width: 450px; float: left; } #poll_options dl.options .percentage { display: block; float: right; padding: 0.2em 0 0.3em 0; } /* Poll notices */ #poll_options p { margin: 0 1.5em 0.2em 1.5em; padding: 0 0.5em 0.5em 0.5em; } div#pollmoderation { margin: 0; padding: 0; overflow: auto; } /* onto the posts */ #forumposts { clear: both; } #forumposts .cat_bar { margin: 0 0 2px 0; } /* author and topic information */ #forumposts h3 span#author { margin: 0 7.7em 0 0; } #forumposts h3 img { float: left; margin: 4px 0.5em 0 0; } #forumposts h3.catbg { margin-bottom: 3px; } p#whoisviewing { margin: 0; padding: 0.5em; } /* poster and postarea + moderation area underneath */ .post_wrapper { float:left; width:100%; } .poster { float: left; width: 15em; } .postarea, .moderatorbar { margin: 0 0 0 16em; } .postarea div.flow_hidden { width: 100%; } .moderatorbar { clear: right; } /* poster details and list of items */ .poster h4, .poster ul { padding: 0; margin: 0 1em 0 1.5em; } .poster h4 { margin: 0.2em 0 0.4em 1.1em; font-size: 120%; } .poster h4, .poster h4 a { color: #c06002; } .poster ul ul { margin: 0.3em 1em 0 0; padding: 0; } .poster ul ul li { display: inline; } .poster li.stars, .poster li.avatar, .poster li.blurb, li.postcount, li.im_icons ul { margin-top: 0.5em; } .poster li.avatar { overflow: hidden; } .poster li.warning { line-height: 1.2em; padding-top: 1em; } .poster li.warning a img { vertical-align: bottom; padding: 0 0.2em; } .messageicon { float: left; margin: 0 0.5em 0 0; } .messageicon img { padding: 6px 3px; } .keyinfo { float: left; width: 50%; } .modifybutton { clear: right; float: right; margin: 6px 20px 10px 0; text-align: right; font: bold 0.85em arial, sans-serif; color: #334466; } /* The quick buttons */ div.quickbuttons_wrap { padding: 0.2em 0; width: 100%; float: left; } ul.quickbuttons { margin: 0.9em 11px 0 0; clear: right; float: right; text-align: right; font: bold 0.85em arial, sans-serif; } ul.quickbuttons li { float: left; display: inline; margin: 0 0 0 11px; } ul.quickbuttons li a { padding: 0 0 0 20px; display: block; height: 20px; line-height: 18px; float: left; } ul.quickbuttons a:hover { color: #a70; } ul.quickbuttons li.quote_button { background: url(../images/theme/quickbuttons.png) no-repeat 0 0; } ul.quickbuttons li.remove_button { background: url(../images/theme/quickbuttons.png) no-repeat 0 -30px; } ul.quickbuttons li.modify_button { background: url(../images/theme/quickbuttons.png) no-repeat 0 -60px; } ul.quickbuttons li.approve_button { background: url(../images/theme/quickbuttons.png) no-repeat 0 -90px; } ul.quickbuttons li.restore_button { background: url(../images/theme/quickbuttons.png) no-repeat 0 -120px; } ul.quickbuttons li.split_button { background: url(../images/theme/quickbuttons.png) no-repeat 0 -150px; } ul.quickbuttons li.reply_button { background: url(../images/theme/quickbuttons.png) no-repeat 0 -180px; } ul.quickbuttons li.reply_all_button { background: url(../images/theme/quickbuttons.png) no-repeat 0 -180px; } ul.quickbuttons li.notify_button { background: url(../images/theme/quickbuttons.png) no-repeat 0 -210px; } ul.quickbuttons li.inline_mod_check { margin: 0 0 0 5px; } .post { margin-top: 0.5em; clear: right; } .inner { padding: 1em 1em 2px 0; margin: 0 1em 0 0; border-top: 1px solid #99a; } img.smiley { vertical-align: bottom; } #forumposts .modified { float: left; } #forumposts .reportlinks { margin-right: 1.5em; text-align: right; clear: right; } #forumposts .signature, .post .signature { margin: 1em 0 0 0; } #forumposts span.botslice { clear: both; } .attachments hr { clear: both; margin: 1em 0 1em 0; } .attachments { padding: 1em 0 2em 0; } .attachments div { padding: 0 0.5em; } /* Styles for the quick reply area. ---------------------------------------------------- */ #quickreplybox { padding-bottom: 1px; } #quickReplyOptions .roundframe { padding: 0 10%; } #quickReplyOptions form textarea { height: 100px; width: 635px; max-width: 100%; min-width: 100%; margin: 0.25em 0 1em 0; } /* The jump to box */ #display_jump_to { clear: both; padding: 5px; margin-top: 6px; text-align: right; } /* Separator of posts. More useful in the print stylesheet. */ #forumposts .post_separator { display: none; } /* Styles for edit post section ---------------------------------------------------- */ form#postmodify .roundframe { padding: 0 12%; } #post_header, .postbox { padding: 0.5em; overflow: hidden; } #post_header dt, .postbox dt { float: left; padding: 0; width: 15%; margin: .5em 0 0 0; font-weight: bold; } #post_header dd, .postbox dd { float: left; padding: 0; width: 83%; margin: .3em 0; } #post_header img { vertical-align: middle; } ul.post_options { margin: 0 0 0 1em; padding: 0; list-style: none; overflow: hidden; } ul.post_options li { margin: 0.2em 0; width: 49%; float: left; } #postAdditionalOptionsHeader { margin-top: 1em; } #postMoreOptions { border-bottom: 1px solid #cacdd3; padding: 0.5em; } #postAttachment, #postAttachment2 { overflow: hidden; margin: .5em 0; padding: 0; border-bottom: 1px solid #cacdd3; padding: 0.5em; } #postAttachment dd, #postAttachment2 dd { margin: .3em 0 .3em 1em; } #postAttachment dt, #postAttachment2 dt { font-weight: bold; } #postAttachment3 { margin-left: 1em; } #post_confirm_strip, #shortcuts { padding: 1em 0 0 0; } .post_verification { margin-top: .5em; } .post_verification #verification_control { margin: .3em 0 .3em 1em; } /* The BBC buttons */ #bbcBox_message { margin: 0.75em 0.5em; } #bbcBox_message div { margin: 0.2em 0; vertical-align: top; } #bbcBox_message div img { margin: 0 1px 0 0; vertical-align: top; } #bbcBox_message select { margin: 0 2px; } /* The smiley strip */ #smileyBox_message { margin: 0.5em; } /* Styles for edit event section ---------------------------------------------------- */ #post_event .roundframe { padding: 0 12%; } #post_event fieldset { padding: 0.5em; clear: both; } #post_event #event_main input { margin: 0 0 1em 0; float: left; } #post_event #event_main div.smalltext { width: 33em; float: right; } #post_event div.event_options { float: right; } #post_event ul.event_main, ul.event_options { padding: 0; overflow: hidden; } #post_event ul.event_main li { list-style-type: none; margin: 0.2em 0; width: 49%; float: left; } #post_event ul.event_options { margin: 0; padding: 0 0 .7em .7em; } #post_event ul.event_options li { list-style-type: none; margin: 0; float: left; } #post_event #event_main select, #post_event ul.event_options li select, #post_event ul.event_options li .input_check { margin: 0 1em 0 0; } /* Styles for edit poll section. ---------------------------------------------------- */ #edit_poll { overflow: hidden; } #edit_poll fieldset { padding: 0.5em; clear: both; overflow: hidden; } #edit_poll fieldset input { margin-left: 8.1em; } #edit_poll ul.poll_main li { padding-left: 1em; } #edit_poll ul.poll_main input { margin-left: 1em; } #edit_poll ul.poll_main, dl.poll_options { overflow: hidden; padding: 0 0 .7em .7em; list-style: none; } #edit_poll ul.poll_main li { margin: 0.2em 0; } #edit_poll dl.poll_options dt { width: 33%; padding: 0 0 0 1em; } #edit_poll dl.poll_options dd { width: 65%; } #edit_poll dl.poll_options dd input { margin-left: 0; } /* Styles for the recent messages section. ---------------------------------------------------- */ #readbuttons_top .pagelinks, #readbuttons .pagelinks { padding-bottom: 1em; width: 60%; } #readbuttons .pagelinks { padding-top: 1em; } #recent { clear: both; } /* Styles for the move topic section. ---------------------------------------------------- */ #move_topic dl { margin-bottom: 0; } #move_topic dl.settings dt { width: 40%; } #move_topic dl.settings dd { width: 59%; } .move_topic { width: 710px; margin: auto; text-align: left; } div.move_topic fieldset { padding: 0.5em; } /* Styles for the send topic section. ---------------------------------------------------- */ fieldset.send_topic { border: none; padding: 0.5em; } dl.send_topic { margin-bottom: 0; } dl.send_mail dt { width: 35%; } dl.send_mail dd { width: 64%; } /* Styles for the report topic section. ---------------------------------------------------- */ #report_topic dl { margin-bottom: 0; } #report_topic dl.settings dt { width: 20%; } #report_topic dl.settings dd { width: 79%; } /* Styles for the split topic section. ---------------------------------------------------- */ div#selected, div#not_selected { width: 49%; } ul.split_messages li.windowbg, ul.split_messages li.windowbg2 { margin: 1px; } ul.split_messages li a.split_icon { padding: 0 0.5em; } ul.split_messages div.post { padding: 1em 0 0 0; border-top: 1px solid #fff; } /* Styles for the merge topic section. ---------------------------------------------------- */ ul.merge_topics li { list-style-type: none; } dl.merge_topic dt { width: 25%; } dl.merge_topic dd { width: 74%; } fieldset.merge_options { clear: both; } .custom_subject { margin: 0.5em 0; } /* Styles for the login areas. ------------------------------------------------------- */ .login { width: 540px; margin: 0 auto; } .login dl { overflow: auto; clear: right; } .login dt, .login dd { margin: 0 0 0.4em 0; width: 44%; padding: 0.1em; } .login dt { float: left; clear: both; text-align: right; font-weight: bold; } .login dd { width: 54%; float: right; text-align: left; } .login p { text-align: center; } /* Styles for the registration section. ------------------------------------------------------- */ .register_error { border: 1px dashed red; padding: 5px; margin: 0 1ex 1ex 1ex; } .register_error span { text-decoration: underline; } /* Additional profile fields */ dl.register_form { margin: 0; clear: right; } dl.register_form dt { font-weight: normal; float: left; clear: both; width: 50%; margin: 0.5em 0 0 0; } dl.register_form dt strong { font-weight: bold; } dl.register_form dt span { display: block; } dl.register_form dd { float: left; width: 49%; margin: 0.5em 0 0 0; } #confirm_buttons { text-align: center; padding: 1em 0; } .coppa_contact { padding: 4px; width: 32ex; background-color: #fff; color: #000; margin-left: 5ex; border: 1px solid #000; } .valid_input { background-color: #f5fff0; } .invalid_input { background-color: #fff0f0; } /* Styles for maintenance mode. ------------------------------------------------------- */ #maintenance_mode { width: 75%; min-width: 520px; text-align: left; } #maintenance_mode img.floatleft { margin-right: 1em; } /* common for all admin sections */ h3.titlebg img { vertical-align: middle; margin-right: 0.5em; margin-top: -1px; } tr.titlebg td { padding-left: 0.7em; } #admin_menu { min-height: 2em; padding-left: 0; } #admin_content { clear: left; padding-top: 0.5em; } /* Custom profile fields like to play with us some times. */ #admin_content .custom_field { margin-bottom: 15px; } #admin_login .centertext { padding: 1em; } #admin_login .centertext .error { padding: 0 0 1em 0; } /* Styles for sidebar menus. ------------------------------------------------------- */ .left_admmenu, .left_admmenu ul, .left_admmenu li { padding: 0; margin: 0; list-style: none; } #left_admsection { width: 160px; float: left; padding-right: 10px; } .adm_section h4.titlebg { font-size: 95%; margin-bottom: 5px; } #main_container { position: relative; } .left_admmenu li { padding: 0 0 0 0.5em; } .left_admmenu { margin-bottom: 0.5em; } #main_admsection { position: relative; left: 0; right: 0; overflow: hidden; } tr.windowbg td, tr.windowbg2 td, tr.approvebg td, tr.highlight2 td { padding: 0.3em 0.7em; } #credits p { padding: 0; font-style: italic; margin: 0; } /* Styles for generic tables. ------------------------------------------------------- */ .topic_table table { width: 100%; } .topic_table .icon1, .topic_table .icon2, .topic_table .stats { text-align: center; } #topic_icons { margin: 1em 0 0 0; } #topic_icons .description { margin: 0; } .topic_table table thead { border-bottom: 1px solid #fff; } /* the subject column */ .topic_table td { font-size: 1em; } .topic_table td.subject p, .topic_table td.stats { font-size: 0.85em; padding: 0; margin: 0; } .topic_table td.lastpost { font-size: 0.85em; line-height: 1.3em; padding: 4px; } .topic_table td.stickybg2 { background-image: url(../images/icons/quick_sticky.gif); background-repeat: no-repeat; background-position: 98% 4px; } .topic_table td.lockedbg2 { background-image: url(../images/icons/quick_lock.gif); background-repeat: no-repeat; background-position: 98% 4px; } .topic_table td.locked_sticky2 { background-image: url(../images/icons/quick_sticky_lock.gif); background-repeat: no-repeat; background-position: 98% 4px; } .topic_table td.lastpost { background-image: none; } /* Styles for (fatal) errors. ------------------------------------------------- */ #fatal_error { width: 80%; margin: auto; } .errorbox { padding: 1em; border: 1px solid #cc3344; color: #000; background-color: #ffe4e9; margin-bottom: 1em; } .errorbox h3 { padding: 0; margin: 0; font-size: 1.1em; text-decoration: underline; } .errorbox p { margin: 1em 0 0 0; } .errorbox p.alert { padding: 0; margin: 0; float: left; width: 1em; font-size: 1.5em; } /* Styles for the profile section. ------------------------------------------------- */ dl { overflow: auto; margin: 0; padding: 0; } /* The basic user info on the left */ #basicinfo { width: 20%; float: left; } #basicinfo .windowbg .content { padding-left: 20px; } #detailedinfo { width: 79.5%; float: right; } #basicinfo h4 { font-size: 135%; font-weight: 100; line-height: 105%; white-space: pre-wrap; overflow: hidden; } #basicinfo h4 span.position { font-size: 80%; font-weight: 100; display: block; } #basicinfo img.avatar { display: block; margin: 10px 0 0 0; } #basicinfo ul { list-style-type: none; margin: 10px 0 0 0; } #basicinfo ul li { display: block; float: left; margin-right: 5px; height: 20px; } #basicinfo span#userstatus { display: block; clear: both; } #basicinfo span#userstatus img { vertical-align: middle; } #detailedinfo div.content dl, #tracking div.content dl { clear: right; overflow: auto; margin: 0 0 18px 0; padding: 0 0 15px 0; border-bottom: 1px #ccc solid; } #detailedinfo div.content dt, #tracking div.content dt { width: 35%; float: left; margin: 0 0 3px 0; padding: 0; font-weight: bold; clear: both; } #detailedinfo div.content dd, #tracking div.content dd { width: 65%; float: left; margin: 0 0 3px 0; padding: 0; } #detailedinfo div.content dl.noborder { border-bottom: 0; } #detailedinfo div.content dt.clear { width: 100%; } .signature, .custom_fields_above_signature { border-top: 1px #ccc solid; } .signature h5 { font-size: 0.85em; margin-bottom: 10px; } #personal_picture { display: block; margin-bottom: 0.3em; } #avatar_server_stored div { float: left; } #avatar_upload { overflow: auto; } #main_admsection #basicinfo, #main_admsection #detailedinfo { width: 100%; } #main_admsection #basicinfo h4 { float: left; width: 35%; } #main_admsection #basicinfo img.avatar { float: right; vertical-align: top; } #main_admsection #basicinfo ul { clear: left; } #main_admsection #basicinfo span#userstatus { clear: left; } #main_admsection #basicinfo p#infolinks { display: none; clear: both; } #main_admsection #basicinfo .botslice { clear: both; } /* Simple feedback messages */ div#profile_error, div#profile_success { margin: 0 0 1em 0; padding: 1em 2em; border: 1px solid; } div#profile_error { border-color: red; color: red; background: #fee; } div#profile_error span { text-decoration: underline; } div#profile_success { border-color: green; color: green; background: #efe; } /* Profile statistics */ #generalstats div.content dt { width: 50%; float: left; margin: 0 0 3px 0; padding: 0; font-weight: bold; clear: both; } #generalstats div.content dd { width: 50%; float: left; margin: 0 0 3px 0; padding: 0; } /* Activity by time */ #activitytime { margin: 6px 0; } .activity_stats { margin: 0; padding: 0; list-style: none; } .activity_stats li { margin: 0; padding: 0; width: 4.16%; float: left; } .activity_stats li span { display: block; border: solid #000; border-width: 1px 1px 0 0; text-align: center; } .activity_stats li.last span { border-right: none; } .activity_stats li div.bar { margin: 0 auto; width: 15px; } .activity_stats li div.bar div { background: #6294CE; } .activity_stats li div.bar span { position: absolute; top: -1000em; left: -1000em; } /* Most popular boards by posts and activity */ #popularposts { width: 49.5%; float: left; } #popularactivity { width: 49.5%; float: right; } #popularposts div.content dt, #popularactivity div.content dt { width: 65%; float: left; margin: 0 0 3px 0; padding: 0; font-weight: bold; clear: both; } #popularposts div.content dd, #popularactivity div.content dd { width: 35%; float: left; margin: 0 0 3px 0; padding: 0; } .profile_pie { background-image: url(../images/stats_pie.png); float: left; height: 20px; width: 20px; margin: 0 1em 0 0; padding: 0; text-indent: -1000em; } /* View posts */ .topic .time { float: right; } .counter { margin: 0 0 0 0; padding: 0.2em 0.5em 0.1em 0.2em; font-size: 2.2em; font-weight: bold; color: #3f3f3f; float: left; } .list_posts { border-top: 2px solid #b3b3bf; padding-top: 12px; margin-top: 6px; overflow: auto; } .core_posts { margin-bottom: 3px; } .topic h4 { margin: 3px 0; } .topic .post { margin: 0 1em; min-height: 80px; height: auto !important; height: 80px; } .topic .mod_icons { text-align: right; margin-right: 1em; } #tracking div.content dl { border-bottom: 0; margin: 0; padding: 0; } #creator dl { margin: 0; } #creator dt { width: 40%; float: left; clear: both; margin: 0 0 10px 0; } #creator dd { float: right; width: 55%; margin: 0 0 10px 2px; overflow: auto; } .ignoreboards { margin: 0 2%; padding: 0; width: 45%; } .ignoreboards a { font-weight: bold; border-bottom: 1px solid #c4c4c4; padding: 0.1em 0; } .ignoreboards a:hover { text-decoration: none; border-bottom: 1px solid #334466; } .ignoreboards ul { margin: 0; padding: 0; } .ignoreboards li { list-style: none; float: left; clear: both; } .ignoreboards li.category { margin: 0.7em 0 0 0; width: 100%; } .ignoreboards li ul { margin: 0.2em 0 0 0; } .ignoreboards li.category ul li.board { width: 93%; } #theme_settings { overflow: auto; margin: 0; padding: 0; } #theme_settings li { list-style: none; margin: 10px 0; padding: 0; } /* Paid Subscriptions */ #paid_subscription { width: 100%; } #paid_subscription dl.settings { margin-bottom: 0; } #paid_subscription dl.settings dd, #paid_subscription dl.settings dt { margin-bottom: 4px; } /* Pick theme */ #pick_theme { width: 100%; float: left; } /*Issue a warning*/ #warn_body{ width: 80%; font-size: 0.9em; } /* Styles for the statistics center. ------------------------------------------------- */ #statistics { padding: 0.5em 0; } #statistics div.title_bar { margin: 4px 0 -2px 0; } #statistics h3.catbg { text-align: center; } #statistics div.content { min-height: 210px; } #statistics div.top_row { min-height: 150px; } #stats_left, #top_posters, #top_topics_replies, #top_topics_starter { float: left; width: 49.5%; } #stats_right, #top_boards, #top_topics_views, #most_online { float: right; width: 49.5%; } dl.stats { clear: both; overflow: hidden; margin: 0; padding: 0; } dl.stats dt { width: 49%; float: left; margin: 0 0 4px 0; line-height: 16px; padding: 0; clear: both; font-size: 1em; } dl.stats dd { text-align: right; width: 50%; font-size: 1em; float: right; margin: 0 0 4px 0; line-height: 16px; padding: 0; } .statsbar div.bar { float: left; background: url(../images/bar_stats.png) no-repeat; display: block; margin: 0 4px; height: 16px; } .statsbar div.bar div { position: relative; right: -4px; padding: 0 4px 0 0; background: url(../images/bar_stats.png) no-repeat 100%; height: 16px; } tr.windowbg2 th.stats_month { width: 25%; padding: 0 2em; text-align: left; } tr.windowbg2 td.stats_day { padding: 0 3.5em; text-align: left; } /* Styles for the personal messages section. ------------------------------------------------- */ #personal_messages h3 span#author, #personal_messages h3 span#topic_title { float: left; } #personal_messages h3 span#author { margin: 0 0 0 0.5em; } #personal_messages h3 span#topic_title { margin: 0 0 0 9em; } #personal_messages div.labels { padding: 0 1em 0 0; } #personal_messages .capacity_bar { background: #f0f4f7; display: block; margin: 0.5em 0 0 1em; height: 1em; border: 1px solid #adadad; width: 10em; } #personal_messages .capacity_bar span { border-right: 1px solid #adadad; display: block; height: 1em; } #personal_messages .capacity_bar span.empty { background: #a6d69d; } #personal_messages .capacity_bar span.filled { background: #eea800; } #personal_messages .capacity_bar span.full { background: #f10909; } #personal_messages .reportlinks { padding: 0.5em 1.3em; } #searchLabelsExpand li { padding: 0.3em 0.5em; } #manrules div.righttext { padding: 0.3em 0.1em; } dl.addrules dt.floatleft { width: 15em; color: #333; padding: 0 1.25em 0.5em 1.25em; } #addrule fieldset { clear: both; } /* Styles for the calendar section. ------------------------------------------------- */ .calendar_table { margin-bottom: 0.7em; } /* Used to indicate the current day in the grid. */ .calendar_today { background-color: #fff; } #month_grid { width: 200px; text-align: center; float: left; } #month_grid div.cat_bar { height: 25px; } #month_grid h3.catbg { height: 25px; line-height: 27px; } #month_grid table { width: 200px; } #main_grid table { width: 100%; padding-bottom: 4px; } #main_grid table h3.catbg { text-align: center; height: 29px; border-top: 2px solid #fff; border-bottom: none; } #main_grid table.weeklist td.windowbg { text-align: center; height: 49px; width: 25px; font-size: large; padding: 0 7px; border-bottom: 2px solid #fff; } #main_grid table.weeklist td.weekdays { height: 49px; width: 100%; padding: 4px; text-align: left; vertical-align: middle; border-bottom: 2px solid #fff; } #main_grid h3.weekly { text-align: center; padding-left: 0; font-size: large; height: 29px; } #main_grid h3 span.floatleft, #main_grid h3 span.floatright { display: block; font-weight: bold; } #main_grid table th.days { width: 14%; padding: 4px 0; } #main_grid table.weeklist h4.titlebg { margin: 0 0 0 0; height: 23px; line-height: 27px; } #main_grid table td.weeks { vertical-align: middle; text-align: center; font-weight: bold; font-size: large; } #main_grid table td.days { vertical-align: top; text-align: center; } a.modify_event { color: red; } span.hidelink { font-style: italic; } #calendar_navigation { text-align: center; } /* Styles for the memberlist section. ------------------------------------------------- */ #mlist_search { margin: auto; width: 500px; } /* Styles for the basic search section. ------------------------------------------------- */ #searchform, #simple_search p { padding: 0.5em; margin: 0; } #simple_search, #simple_search p, #advanced_search { text-align: center !important; margin: 0; } #search_error { font-style: italic; padding: 0.3em 1em; } #search_term_input { font-size: 115%; margin: 0 0 1em; } /* Styles for the advanced search section. ------------------------------------------------- */ #searchform fieldset { text-align: left; padding: 0; border: none; } #advanced_search dl#search_options { margin: 0 auto; width: 600px; padding-top: 1em; overflow: hidden; } #advanced_search dt { clear: both; float: left; padding: 0.2em; text-align: right; width: 20%; } #advanced_search dd { width: 75%; float: left; padding: 0.2em; margin: 0 0 0 0.5em; text-align: left; } #searchform p.clear { clear: both; } /* Styles for the search results page. ------------------------------------------------- */ .topic_table td blockquote, .topic_table td .quoteheader { margin: 0.5em; } .search_results_posts { overflow: hidden; } .search_results_posts .buttons { padding: 5px 1em 0 0; } /* Styles for the help section. ------------------------------------------------- */ #help_container { margin: 4px 0 0 0; padding: 0 0 8px 0; } #helpmain { padding: 0 1em; } #helpmain p { margin: 0 0 1.5em 0; line-height: 1.5em; } #helpmain ul { line-height: 1.5em; } /* Styles for print media. ------------------------------------------------------- */ @media print { #headerarea { display: none; } .tborder { border: none; } } ------------oekbGifD3oOrVm0Lrt9aet Content-Disposition: inline; filename=script.js Content-Type: application/javascript; charset=UTF-8; name=script.js Content-Location: http://forum.technicaldiving.ie/Themes/default/scripts/script.js?fin20 Content-Transfer-Encoding: Base64 dmFyIHNtZl9mb3JtU3VibWl0dGVkID0gZmFsc2U7CnZhciBsYXN0S2VlcEFsaXZl Q2hlY2sgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTsKdmFyIHNtZl9lZGl0b3JBcnJh eSA9IG5ldyBBcnJheSgpOwoKLy8gU29tZSB2ZXJ5IGJhc2ljIGJyb3dzZXIgZGV0 ZWN0aW9uIC0gZnJvbSBNb3ppbGxhJ3Mgc25pZmZlciBwYWdlLgp2YXIgdWEgPSBu YXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCk7Cgp2YXIgaXNfb3BlcmEg PSB1YS5pbmRleE9mKCdvcGVyYScpICE9IC0xOwp2YXIgaXNfb3BlcmE1ID0gdWEu aW5kZXhPZignb3BlcmEvNScpICE9IC0xIHx8IHVhLmluZGV4T2YoJ29wZXJhIDUn KSAhPSAtMTsKdmFyIGlzX29wZXJhNiA9IHVhLmluZGV4T2YoJ29wZXJhLzYnKSAh PSAtMSB8fCB1YS5pbmRleE9mKCdvcGVyYSA2JykgIT0gLTE7CnZhciBpc19vcGVy YTcgPSB1YS5pbmRleE9mKCdvcGVyYS83JykgIT0gLTEgfHwgdWEuaW5kZXhPZign b3BlcmEgNycpICE9IC0xOwp2YXIgaXNfb3BlcmE4ID0gdWEuaW5kZXhPZignb3Bl cmEvOCcpICE9IC0xIHx8IHVhLmluZGV4T2YoJ29wZXJhIDgnKSAhPSAtMTsKdmFy IGlzX29wZXJhOSA9IHVhLmluZGV4T2YoJ29wZXJhLzknKSAhPSAtMSB8fCB1YS5p bmRleE9mKCdvcGVyYSA5JykgIT0gLTE7CnZhciBpc19vcGVyYTk1ID0gdWEuaW5k ZXhPZignb3BlcmEvOS41JykgIT0gLTEgfHwgdWEuaW5kZXhPZignb3BlcmEgOS41 JykgIT0gLTE7CnZhciBpc19vcGVyYTk2ID0gdWEuaW5kZXhPZignb3BlcmEvOS42 JykgIT0gLTEgfHwgdWEuaW5kZXhPZignb3BlcmEgOS42JykgIT0gLTE7CnZhciBp c19vcGVyYTEwID0gKHVhLmluZGV4T2YoJ29wZXJhLzkuOCcpICE9IC0xIHx8IHVh LmluZGV4T2YoJ29wZXJhIDkuOCcpICE9IC0xIHx8IHVhLmluZGV4T2YoJ29wZXJh LzEwLicpICE9IC0xIHx8IHVhLmluZGV4T2YoJ29wZXJhIDEwLicpICE9IC0xKSB8 fCB1YS5pbmRleE9mKCd2ZXJzaW9uLzEwLicpICE9IC0xOwp2YXIgaXNfb3BlcmE5 NXVwID0gaXNfb3BlcmE5NSB8fCBpc19vcGVyYTk2IHx8IGlzX29wZXJhMTA7Cgp2 YXIgaXNfZmYgPSAodWEuaW5kZXhPZignZmlyZWZveCcpICE9IC0xIHx8IHVhLmlu ZGV4T2YoJ2ljZXdlYXNlbCcpICE9IC0xIHx8IHVhLmluZGV4T2YoJ2ljZWNhdCcp ICE9IC0xIHx8IHVhLmluZGV4T2YoJ3NoaXJldG9rbycpICE9IC0xIHx8IHVhLmlu ZGV4T2YoJ21pbmVmaWVsZCcpICE9IC0xKSAmJiAhaXNfb3BlcmE7CnZhciBpc19n ZWNrbyA9IHVhLmluZGV4T2YoJ2dlY2tvJykgIT0gLTEgJiYgIWlzX29wZXJhOwoK dmFyIGlzX2Nocm9tZSA9IHVhLmluZGV4T2YoJ2Nocm9tZScpICE9IC0xOwp2YXIg aXNfc2FmYXJpID0gdWEuaW5kZXhPZignYXBwbGV3ZWJraXQnKSAhPSAtMSAmJiAh aXNfY2hyb21lOwp2YXIgaXNfd2Via2l0ID0gdWEuaW5kZXhPZignYXBwbGV3ZWJr aXQnKSAhPSAtMTsKCnZhciBpc19pZSA9IHVhLmluZGV4T2YoJ21zaWUnKSAhPSAt MSAmJiAhaXNfb3BlcmE7CnZhciBpc19pZTQgPSBpc19pZSAmJiB1YS5pbmRleE9m KCdtc2llIDQnKSAhPSAtMTsKdmFyIGlzX2llNSA9IGlzX2llICYmIHVhLmluZGV4 T2YoJ21zaWUgNScpICE9IC0xOwp2YXIgaXNfaWU1MCA9IGlzX2llICYmIHVhLmlu ZGV4T2YoJ21zaWUgNS4wJykgIT0gLTE7CnZhciBpc19pZTU1ID0gaXNfaWUgJiYg dWEuaW5kZXhPZignbXNpZSA1LjUnKSAhPSAtMTsKdmFyIGlzX2llNXVwID0gaXNf aWUgJiYgIWlzX2llNDsKdmFyIGlzX2llNiA9IGlzX2llICYmIHVhLmluZGV4T2Yo J21zaWUgNicpICE9IC0xOwp2YXIgaXNfaWU2dXAgPSBpc19pZTV1cCAmJiAhaXNf aWU1NSAmJiAhaXNfaWU1Owp2YXIgaXNfaWU2ZG93biA9IGlzX2llNiB8fCBpc19p ZTUgfHwgaXNfaWU0Owp2YXIgaXNfaWU3ID0gaXNfaWUgJiYgdWEuaW5kZXhPZign bXNpZSA3JykgIT0gLTE7CnZhciBpc19pZTd1cCA9IGlzX2llNnVwICYmICFpc19p ZTY7CnZhciBpc19pZTdkb3duID0gaXNfaWU3IHx8IGlzX2llNiB8fCBpc19pZTUg fHwgaXNfaWU0OwoKdmFyIGlzX2llOCA9IGlzX2llICYmIHVhLmluZGV4T2YoJ21z aWUgOCcpICE9IC0xOwp2YXIgaXNfaWU4dXAgPSBpc19pZTggJiYgIWlzX2llN2Rv d247Cgp2YXIgaXNfaXBob25lID0gdWEuaW5kZXhPZignaXBob25lJykgIT0gLTEg fHwgdWEuaW5kZXhPZignaXBvZCcpICE9IC0xOwp2YXIgaXNfYW5kcm9pZCA9IHVh LmluZGV4T2YoJ2FuZHJvaWQnKSAhPSAtMTsKCnZhciBhamF4X2luZGljYXRvcl9l bGUgPSBudWxsOwoKLy8gRGVmaW5lIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkIGZv ciBJbnRlcm5ldCBFeHBsb3JlciA0LgppZiAoISgnZ2V0RWxlbWVudEJ5SWQnIGlu IGRvY3VtZW50KSAmJiAnYWxsJyBpbiBkb2N1bWVudCkKCWRvY3VtZW50LmdldEVs ZW1lbnRCeUlkID0gZnVuY3Rpb24gKHNJZCkgewoJCXJldHVybiBkb2N1bWVudC5h bGxbc0lkXTsKCX0KCi8vIERlZmluZSBYTUxIdHRwUmVxdWVzdCBmb3IgSUUgNSBh bmQgYWJvdmUuIChkb24ndCBib3RoZXIgZm9yIElFIDQgOi8uLi4uIHdvcmtzIGlu IE9wZXJhIDcuNiBhbmQgU2FmYXJpIDEuMiEpCmVsc2UgaWYgKCEoJ1hNTEh0dHBS ZXF1ZXN0JyBpbiB3aW5kb3cpICYmICdBY3RpdmVYT2JqZWN0JyBpbiB3aW5kb3cp Cgl3aW5kb3cuWE1MSHR0cFJlcXVlc3QgPSBmdW5jdGlvbiAoKSB7CgkJcmV0dXJu IG5ldyBBY3RpdmVYT2JqZWN0KGlzX2llNSA/ICdNaWNyb3NvZnQuWE1MSFRUUCcg OiAnTVNYTUwyLlhNTEhUVFAnKTsKCX07CgovLyBFbnN1cmUgdGhlIGdldEVsZW1l bnRzQnlUYWdOYW1lIGV4aXN0cy4KaWYgKCEnZ2V0RWxlbWVudHNCeVRhZ05hbWUn IGluIGRvY3VtZW50ICYmICdhbGwnIGluIGRvY3VtZW50KQoJZG9jdW1lbnQuZ2V0 RWxlbWVudHNCeVRhZ05hbWUgPSBmdW5jdGlvbiAoc05hbWUpIHsKCQlyZXR1cm4g ZG9jdW1lbnQuYWxsLnRhZ3Nbc05hbWVdOwoJfQoKLy8gU29tZSBvbGRlciB2ZXJz aW9ucyBvZiBNb3ppbGxhIGRvbid0IGhhdmUgdGhpcywgZm9yIHNvbWUgcmVhc29u LgppZiAoISgnZm9ybXMnIGluIGRvY3VtZW50KSkKCWRvY3VtZW50LmZvcm1zID0g ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2Zvcm0nKTsKCi8vIExvYWQg YW4gWE1MIGRvY3VtZW50IHVzaW5nIFhNTEh0dHBSZXF1ZXN0LgpmdW5jdGlvbiBn ZXRYTUxEb2N1bWVudChzVXJsLCBmdW5jQ2FsbGJhY2spCnsKCWlmICghd2luZG93 LlhNTEh0dHBSZXF1ZXN0KQoJCXJldHVybiBudWxsOwoKCXZhciBvTXlEb2MgPSBu ZXcgWE1MSHR0cFJlcXVlc3QoKTsKCXZhciBiQXN5bmMgPSB0eXBlb2YoZnVuY0Nh bGxiYWNrKSAhPSAndW5kZWZpbmVkJzsKCXZhciBvQ2FsbGVyID0gdGhpczsKCWlm IChiQXN5bmMpCgl7CgkJb015RG9jLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0 aW9uICgpIHsKCQkJaWYgKG9NeURvYy5yZWFkeVN0YXRlICE9IDQpCgkJCQlyZXR1 cm47CgoJCQlpZiAob015RG9jLnJlc3BvbnNlWE1MICE9IG51bGwgJiYgb015RG9j LnN0YXR1cyA9PSAyMDApCgkJCXsKCQkJCWlmIChmdW5jQ2FsbGJhY2suY2FsbCkK CQkJCXsKCQkJCQlmdW5jQ2FsbGJhY2suY2FsbChvQ2FsbGVyLCBvTXlEb2MucmVz cG9uc2VYTUwpOwoJCQkJfQoJCQkJLy8gQSBwcmltaXRpdmUgc3Vic3RpdHV0ZSBm b3IgdGhlIGNhbGwgbWV0aG9kIHRvIHN1cHBvcnQgSUUgNS4wLgoJCQkJZWxzZQoJ CQkJewoJCQkJCW9DYWxsZXIudG1wTWV0aG9kID0gZnVuY0NhbGxiYWNrOwoJCQkJ CW9DYWxsZXIudG1wTWV0aG9kKG9NeURvYy5yZXNwb25zZVhNTCk7CgkJCQkJZGVs ZXRlIG9DYWxsZXIudG1wTWV0aG9kOwoJCQkJfQoJCQl9CgkJfTsKCX0KCW9NeURv Yy5vcGVuKCdHRVQnLCBzVXJsLCBiQXN5bmMpOwoJb015RG9jLnNlbmQobnVsbCk7 CgoJcmV0dXJuIG9NeURvYzsKfQoKLy8gU2VuZCBhIHBvc3QgZm9ybSB0byB0aGUg c2VydmVyIHVzaW5nIFhNTEh0dHBSZXF1ZXN0LgpmdW5jdGlvbiBzZW5kWE1MRG9j dW1lbnQoc1VybCwgc0NvbnRlbnQsIGZ1bmNDYWxsYmFjaykKewoJaWYgKCF3aW5k b3cuWE1MSHR0cFJlcXVlc3QpCgkJcmV0dXJuIGZhbHNlOwoKCXZhciBvU2VuZERv YyA9IG5ldyB3aW5kb3cuWE1MSHR0cFJlcXVlc3QoKTsKCXZhciBvQ2FsbGVyID0g dGhpczsKCWlmICh0eXBlb2YoZnVuY0NhbGxiYWNrKSAhPSAndW5kZWZpbmVkJykK CXsKCQlvU2VuZERvYy5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbiAoKSB7 CgkJCWlmIChvU2VuZERvYy5yZWFkeVN0YXRlICE9IDQpCgkJCQlyZXR1cm47CgoJ CQlpZiAob1NlbmREb2MucmVzcG9uc2VYTUwgIT0gbnVsbCAmJiBvU2VuZERvYy5z dGF0dXMgPT0gMjAwKQoJCQkJZnVuY0NhbGxiYWNrLmNhbGwob0NhbGxlciwgb1Nl bmREb2MucmVzcG9uc2VYTUwpOwoJCQllbHNlCgkJCQlmdW5jQ2FsbGJhY2suY2Fs bChvQ2FsbGVyLCBmYWxzZSk7CgkJfTsKCX0KCW9TZW5kRG9jLm9wZW4oJ1BPU1Qn LCBzVXJsLCB0cnVlKTsKCWlmICgnc2V0UmVxdWVzdEhlYWRlcicgaW4gb1NlbmRE b2MpCgkJb1NlbmREb2Muc2V0UmVxdWVzdEhlYWRlcignQ29udGVudC1UeXBlJywg J2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCcpOwoJb1NlbmREb2Mu c2VuZChzQ29udGVudCk7CgoJcmV0dXJuIHRydWU7Cn0KCi8vIEEgcHJvcGVydHkg d2UnbGwgYmUgbmVlZGluZyBmb3IgcGhwX3RvOGJpdC4KU3RyaW5nLnByb3RvdHlw ZS5vQ2hhcnNldENvbnZlcnNpb24gPSB7Cglmcm9tOiAnJywKCXRvOiAnJwp9OwoK Ly8gQ29udmVydCBhIHN0cmluZyB0byBhbiA4IGJpdCByZXByZXNlbnRhdGlvbiAo bGlrZSBpbiBQSFApLgpTdHJpbmcucHJvdG90eXBlLnBocF90bzhiaXQgPSBmdW5j dGlvbiAoKQp7CglpZiAoc21mX2NoYXJzZXQgPT0gJ1VURi04JykKCXsKCQl2YXIg biwgc1JldHVybiA9ICcnOwoKCQlmb3IgKHZhciBpID0gMCwgaVRleHRMZW4gPSB0 aGlzLmxlbmd0aDsgaSA8IGlUZXh0TGVuOyBpKyspCgkJewoJCQluID0gdGhpcy5j aGFyQ29kZUF0KGkpOwoJCQlpZiAobiA8IDEyOCkKCQkJCXNSZXR1cm4gKz0gU3Ry aW5nLmZyb21DaGFyQ29kZShuKQoJCQllbHNlIGlmIChuIDwgMjA0OCkKCQkJCXNS ZXR1cm4gKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgxOTIgfCBuID4+IDYpICsgU3Ry aW5nLmZyb21DaGFyQ29kZSgxMjggfCBuICYgNjMpOwoJCQllbHNlIGlmIChuIDwg NjU1MzYpCgkJCQlzUmV0dXJuICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoMjI0IHwg biA+PiAxMikgKyBTdHJpbmcuZnJvbUNoYXJDb2RlKDEyOCB8IG4gPj4gNiAmIDYz KSArIFN0cmluZy5mcm9tQ2hhckNvZGUoMTI4IHwgbiAmIDYzKTsKCQkJZWxzZQoJ CQkJc1JldHVybiArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKDI0MCB8IG4gPj4gMTgp ICsgU3RyaW5nLmZyb21DaGFyQ29kZSgxMjggfCBuID4+IDEyICYgNjMpICsgU3Ry aW5nLmZyb21DaGFyQ29kZSgxMjggfCBuID4+IDYgJiA2MykgKyBTdHJpbmcuZnJv bUNoYXJDb2RlKDEyOCB8IG4gJiA2Myk7CgkJfQoKCQlyZXR1cm4gc1JldHVybjsK CX0KCgllbHNlIGlmICh0aGlzLm9DaGFyc2V0Q29udmVyc2lvbi5mcm9tLmxlbmd0 aCA9PSAwKQoJewoJCXN3aXRjaCAoc21mX2NoYXJzZXQpCgkJewoJCQljYXNlICdJ U08tODg1OS0xJzoKCQkJCXRoaXMub0NoYXJzZXRDb252ZXJzaW9uID0gewoJCQkJ CWZyb206ICdceGEwLVx4ZmYnLAoJCQkJCXRvOiAnXHhhMC1ceGZmJwoJCQkJfTsK CQkJYnJlYWs7CgoJCQljYXNlICdJU08tODg1OS0yJzoKCQkJCXRoaXMub0NoYXJz ZXRDb252ZXJzaW9uID0gewoJCQkJCWZyb206ICdceGEwXHUwMTA0XHUwMmQ4XHUw MTQxXHhhNFx1MDEzZFx1MDE1YVx4YTdceGE4XHUwMTYwXHUwMTVlXHUwMTY0XHUw MTc5XHhhZFx1MDE3ZFx1MDE3Ylx4YjBcdTAxMDVcdTAyZGJcdTAxNDJceGI0XHUw MTNlXHUwMTViXHUwMmM3XHhiOFx1MDE2MVx1MDE1Zlx1MDE2NVx1MDE3YVx1MDJk ZFx1MDE3ZVx1MDE3Y1x1MDE1NFx4YzFceGMyXHUwMTAyXHhjNFx1MDEzOVx1MDEw Nlx4YzdcdTAxMGNceGM5XHUwMTE4XHhjYlx1MDExYVx4Y2RceGNlXHUwMTBlXHUw MTEwXHUwMTQzXHUwMTQ3XHhkM1x4ZDRcdTAxNTBceGQ2XHhkN1x1MDE1OFx1MDE2 ZVx4ZGFcdTAxNzBceGRjXHhkZFx1MDE2Mlx4ZGZcdTAxNTVceGUxXHhlMlx1MDEw M1x4ZTRcdTAxM2FcdTAxMDdceGU3XHUwMTBkXHhlOVx1MDExOVx4ZWJcdTAxMWJc eGVkXHhlZVx1MDEwZlx1MDExMVx1MDE0NFx1MDE0OFx4ZjNceGY0XHUwMTUxXHhm Nlx4ZjdcdTAxNTlcdTAxNmZceGZhXHUwMTcxXHhmY1x4ZmRcdTAxNjNcdTAyZDkn LAoJCQkJCXRvOiAnXHhhMC1ceGZmJwoJCQkJfTsKCQkJYnJlYWs7CgoJCQljYXNl ICdJU08tODg1OS01JzoKCQkJCXRoaXMub0NoYXJzZXRDb252ZXJzaW9uID0gewoJ CQkJCWZyb206ICdceGEwXHUwNDAxLVx1MDQwY1x4YWRcdTA0MGUtXHUwNDRmXHUy MTE2XHUwNDUxLVx1MDQ1Y1x4YTdcdTA0NWVcdTA0NWYnLAoJCQkJCXRvOiAnXHhh MC1ceGZmJwoJCQkJfTsKCQkJYnJlYWs7CgoJCQljYXNlICdJU08tODg1OS05JzoK CQkJCXRoaXMub0NoYXJzZXRDb252ZXJzaW9uID0gewoJCQkJCWZyb206ICdceGEw LVx4Y2ZcdTAxMWVceGQxLVx4ZGNcdTAxMzBcdTAxNWVceGRmLVx4ZWZcdTAxMWZc eGYxLVx4ZmNcdTAxMzFcdTAxNWZceGZmJywKCQkJCQl0bzogJ1x4YTAtXHhmZicK CQkJCX07CgkJCWJyZWFrOwoKCQkJY2FzZSAnSVNPLTg4NTktMTUnOgoJCQkJdGhp cy5vQ2hhcnNldENvbnZlcnNpb24gPSB7CgkJCQkJZnJvbTogJ1x4YTAtXHhhM1x1 MjBhY1x4YTVcdTAxNjBceGE3XHUwMTYxXHhhOS1ceGIzXHUwMTdkXHhiNS1ceGI3 XHUwMTdlXHhiOS1ceGJiXHUwMTUyXHUwMTUzXHUwMTc4XHhiZi1ceGZmJywKCQkJ CQl0bzogJ1x4YTAtXHhmZicKCQkJCX07CgkJCWJyZWFrOwoKCQkJY2FzZSAndGlz LTYyMCc6CgkJCQl0aGlzLm9DaGFyc2V0Q29udmVyc2lvbiA9IHsKCQkJCQlmcm9t OiAnXHUyMGFjXHUyMDI2XHUyMDE4XHUyMDE5XHUyMDFjXHUyMDFkXHUyMDIyXHUy MDEzXHUyMDE0XHhhMFx1MGUwMS1cdTBlM2FcdTBlM2YtXHUwZTViJywKCQkJCQl0 bzogJ1x4ODBceDg1XHg5MS1ceDk3XHhhMC1ceGRhXHhkZi1ceGZiJwoJCQkJfTsK CQkJYnJlYWs7CgoJCQljYXNlICd3aW5kb3dzLTEyNTEnOgoJCQkJdGhpcy5vQ2hh cnNldENvbnZlcnNpb24gPSB7CgkJCQkJZnJvbTogJ1x1MDQwMlx1MDQwM1x1MjAx YVx1MDQ1M1x1MjAxZVx1MjAyNlx1MjAyMFx1MjAyMVx1MjBhY1x1MjAzMFx1MDQw OVx1MjAzOVx1MDQwYVx1MDQwY1x1MDQwYlx1MDQwZlx1MDQ1Mlx1MjAxOFx1MjAx OVx1MjAxY1x1MjAxZFx1MjAyMlx1MjAxM1x1MjAxNFx1MjEyMlx1MDQ1OVx1MjAz YVx1MDQ1YVx1MDQ1Y1x1MDQ1Ylx1MDQ1Zlx4YTBcdTA0MGVcdTA0NWVcdTA0MDhc eGE0XHUwNDkwXHhhNlx4YTdcdTA0MDFceGE5XHUwNDA0XHhhYi1ceGFlXHUwNDA3 XHhiMFx4YjFcdTA0MDZcdTA0NTZcdTA0OTFceGI1LVx4YjdcdTA0NTFcdTIxMTZc dTA0NTRceGJiXHUwNDU4XHUwNDA1XHUwNDU1XHUwNDU3XHUwNDEwLVx1MDQ0Zics CgkJCQkJdG86ICdceDgwLVx4OTdceDk5LVx4ZmYnCgkJCQl9OwoJCQlicmVhazsK CgkJCWNhc2UgJ3dpbmRvd3MtMTI1Myc6CgkJCQl0aGlzLm9DaGFyc2V0Q29udmVy c2lvbiA9IHsKCQkJCQlmcm9tOiAnXHUyMGFjXHUyMDFhXHUwMTkyXHUyMDFlXHUy MDI2XHUyMDIwXHUyMDIxXHUyMDMwXHUyMDM5XHUyMDE4XHUyMDE5XHUyMDFjXHUy MDFkXHUyMDIyXHUyMDEzXHUyMDE0XHUyMTIyXHUyMDNhXHhhMFx1MDM4NVx1MDM4 Nlx4YTMtXHhhOVx4YWItXHhhZVx1MjAxNVx4YjAtXHhiM1x1MDM4NFx4YjUtXHhi N1x1MDM4OC1cdTAzOGFceGJiXHUwMzhjXHhiZFx1MDM4ZS1cdTAzYTFcdTAzYTMt XHUwM2NlJywKCQkJCQl0bzogJ1x4ODBceDgyLVx4ODdceDg5XHg4Ylx4OTEtXHg5 N1x4OTlceDliXHhhMC1ceGE5XHhhYi1ceGQxXHhkMy1ceGZlJwoJCQkJfTsKCQkJ YnJlYWs7CgoJCQljYXNlICd3aW5kb3dzLTEyNTUnOgoJCQkJdGhpcy5vQ2hhcnNl dENvbnZlcnNpb24gPSB7CgkJCQkJZnJvbTogJ1x1MjBhY1x1MjAxYVx1MDE5Mlx1 MjAxZVx1MjAyNlx1MjAyMFx1MjAyMVx1MDJjNlx1MjAzMFx1MjAzOVx1MjAxOFx1 MjAxOVx1MjAxY1x1MjAxZFx1MjAyMlx1MjAxM1x1MjAxNFx1MDJkY1x1MjEyMlx1 MjAzYVx4YTAtXHhhM1x1MjBhYVx4YTUtXHhhOVx4ZDdceGFiLVx4YjlceGY3XHhi Yi1ceGJmXHUwNWIwLVx1MDViOVx1MDViYi1cdTA1YzNcdTA1ZjAtXHUwNWY0XHUw NWQwLVx1MDVlYVx1MjAwZVx1MjAwZicsCgkJCQkJdG86ICdceDgwXHg4Mi1ceDg5 XHg4Ylx4OTEtXHg5OVx4OWJceGEwLVx4YzlceGNiLVx4ZDhceGUwLVx4ZmFceGZk XHhmZScKCQkJCX07CgkJCWJyZWFrOwoKCQkJY2FzZSAnd2luZG93cy0xMjU2JzoK CQkJCXRoaXMub0NoYXJzZXRDb252ZXJzaW9uID0gewoJCQkJCWZyb206ICdcdTIw YWNcdTA2N2VcdTIwMWFcdTAxOTJcdTIwMWVcdTIwMjZcdTIwMjBcdTIwMjFcdTAy YzZcdTIwMzBcdTA2NzlcdTIwMzlcdTAxNTJcdTA2ODZcdTA2OThcdTA2ODhcdTA2 YWZcdTIwMThcdTIwMTlcdTIwMWNcdTIwMWRcdTIwMjJcdTIwMTNcdTIwMTRcdTA2 YTlcdTIxMjJcdTA2OTFcdTIwM2FcdTAxNTNcdTIwMGNcdTIwMGRcdTA2YmFceGEw XHUwNjBjXHhhMi1ceGE5XHUwNmJlXHhhYi1ceGI5XHUwNjFiXHhiYi1ceGJlXHUw NjFmXHUwNmMxXHUwNjIxLVx1MDYzNlx4ZDdcdTA2MzctXHUwNjNhXHUwNjQwLVx1 MDY0M1x4ZTBcdTA2NDRceGUyXHUwNjQ1LVx1MDY0OFx4ZTctXHhlYlx1MDY0OVx1 MDY0YVx4ZWVceGVmXHUwNjRiLVx1MDY0ZVx4ZjRcdTA2NGZcdTA2NTBceGY3XHUw NjUxXHhmOVx1MDY1Mlx4ZmJceGZjXHUyMDBlXHUyMDBmXHUwNmQyJywKCQkJCQl0 bzogJ1x4ODAtXHhmZicKCQkJCX07CgkJCWJyZWFrOwoKCQkJZGVmYXVsdDoKCQkJ CXRoaXMub0NoYXJzZXRDb252ZXJzaW9uID0gewoJCQkJCWZyb206ICcnLAoJCQkJ CXRvOiAnJwoJCQkJfTsKCQkJYnJlYWs7CgkJfQoJCXZhciBmdW5jRXhwYW5kU3Ry aW5nID0gZnVuY3Rpb24gKHNTZWFyY2gpIHsKCQkJdmFyIHNJbnNlcnQgPSAnJzsK CQkJZm9yICh2YXIgaSA9IHNTZWFyY2guY2hhckNvZGVBdCgwKSwgbiA9IHNTZWFy Y2guY2hhckNvZGVBdCgyKTsgaSA8PSBuOyBpKyspCgkJCQlzSW5zZXJ0ICs9IFN0 cmluZy5mcm9tQ2hhckNvZGUoaSk7CgkJCXJldHVybiBzSW5zZXJ0OwoJCX07CgkJ dGhpcy5vQ2hhcnNldENvbnZlcnNpb24uZnJvbSA9IHRoaXMub0NoYXJzZXRDb252 ZXJzaW9uLmZyb20ucmVwbGFjZSgvLlwtLi9nLCBmdW5jRXhwYW5kU3RyaW5nKTsK CQl0aGlzLm9DaGFyc2V0Q29udmVyc2lvbi50byA9IHRoaXMub0NoYXJzZXRDb252 ZXJzaW9uLnRvLnJlcGxhY2UoLy5cLS4vZywgZnVuY0V4cGFuZFN0cmluZyk7Cgl9 CgoJdmFyIHNSZXR1cm4gPSAnJywgaU9mZnNldEZyb20gPSAwOwoJZm9yICh2YXIg aSA9IDAsIG4gPSB0aGlzLmxlbmd0aDsgaSA8IG47IGkrKykKCXsKCQlpT2Zmc2V0 RnJvbSA9IHRoaXMub0NoYXJzZXRDb252ZXJzaW9uLmZyb20uaW5kZXhPZih0aGlz LmNoYXJBdChpKSk7CgkJc1JldHVybiArPSBpT2Zmc2V0RnJvbSA+IC0xID8gdGhp cy5vQ2hhcnNldENvbnZlcnNpb24udG8uY2hhckF0KGlPZmZzZXRGcm9tKSA6ICh0 aGlzLmNoYXJDb2RlQXQoaSkgPiAxMjcgPyAnJiMnICsgdGhpcy5jaGFyQ29kZUF0 KGkpICsgJzsnIDogdGhpcy5jaGFyQXQoaSkpOwoJfQoKCXJldHVybiBzUmV0dXJu Cn0KCi8vIENoYXJhY3Rlci1sZXZlbCByZXBsYWNlbWVudCBmdW5jdGlvbi4KU3Ry aW5nLnByb3RvdHlwZS5waHBfc3RydHIgPSBmdW5jdGlvbiAoc0Zyb20sIHNUbykK ewoJcmV0dXJuIHRoaXMucmVwbGFjZShuZXcgUmVnRXhwKCdbJyArIHNGcm9tICsg J10nLCAnZycpLCBmdW5jdGlvbiAoc01hdGNoKSB7CgkJcmV0dXJuIHNUby5jaGFy QXQoc0Zyb20uaW5kZXhPZihzTWF0Y2gpKTsKCX0pOwp9CgovLyBTaW11bGF0ZSBQ SFAncyBzdHJ0b2xvd2VyIChpbiBTT01FIGNhc2VzIFBIUCB1c2VzIElTTy04ODU5 LTEgY2FzZSBmb2xkaW5nKS4KU3RyaW5nLnByb3RvdHlwZS5waHBfc3RydG9sb3dl ciA9IGZ1bmN0aW9uICgpCnsKCXJldHVybiB0eXBlb2Yoc21mX2lzb19jYXNlX2Zv bGRpbmcpID09ICdib29sZWFuJyAmJiBzbWZfaXNvX2Nhc2VfZm9sZGluZyA9PSB0 cnVlID8gdGhpcy5waHBfc3RydHIoCgkJJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZX WFlaXHg4YVx4OGNceDhlXHg5Zlx4YzBceGMxXHhjMlx4YzNceGM0XHhjNVx4YzZc eGM3XHhjOFx4YzlceGNhXHhjYlx4Y2NceGNkXHhjZVx4Y2ZceGQwXHhkMVx4ZDJc eGQzXHhkNFx4ZDVceGQ2XHhkN1x4ZDhceGQ5XHhkYVx4ZGJceGRjXHhkZFx4ZGUn LAoJCSdhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5elx4OWFceDljXHg5ZVx4ZmZc eGUwXHhlMVx4ZTJceGUzXHhlNFx4ZTVceGU2XHhlN1x4ZThceGU5XHhlYVx4ZWJc eGVjXHhlZFx4ZWVceGVmXHhmMFx4ZjFceGYyXHhmM1x4ZjRceGY1XHhmNlx4Zjdc eGY4XHhmOVx4ZmFceGZiXHhmY1x4ZmRceGZlJwoJKSA6IHRoaXMucGhwX3N0cnRy KCdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWicsICdhYmNkZWZnaGlqa2xtbm9w cXJzdHV2d3h5eicpOwp9CgpTdHJpbmcucHJvdG90eXBlLnBocF91cmxlbmNvZGUg PSBmdW5jdGlvbigpCnsKCXJldHVybiBlc2NhcGUodGhpcykucmVwbGFjZSgvXCsv ZywgJyUyYicpLnJlcGxhY2UoJyonLCAnJTJhJykucmVwbGFjZSgnLycsICclMmYn KS5yZXBsYWNlKCdAJywgJyU0MCcpOwp9CgpTdHJpbmcucHJvdG90eXBlLnBocF9o dG1sc3BlY2lhbGNoYXJzID0gZnVuY3Rpb24oKQp7CglyZXR1cm4gdGhpcy5yZXBs YWNlKC8mL2csICcmYW1wOycpLnJlcGxhY2UoLzwvZywgJyZsdDsnKS5yZXBsYWNl KC8+L2csICcmZ3Q7JykucmVwbGFjZSgvIi9nLCAnJnF1b3Q7Jyk7Cn0KClN0cmlu Zy5wcm90b3R5cGUucGhwX3VuaHRtbHNwZWNpYWxjaGFycyA9IGZ1bmN0aW9uKCkK ewoJcmV0dXJuIHRoaXMucmVwbGFjZSgvJnF1b3Q7L2csICciJykucmVwbGFjZSgv Jmd0Oy9nLCAnPicpLnJlcGxhY2UoLyZsdDsvZywgJzwnKS5yZXBsYWNlKC8mYW1w Oy9nLCAnJicpOwp9CgpTdHJpbmcucHJvdG90eXBlLnBocF9hZGRzbGFzaGVzID0g ZnVuY3Rpb24oKQp7CglyZXR1cm4gdGhpcy5yZXBsYWNlKC9cXC9nLCAnXFxcXCcp LnJlcGxhY2UoLycvZywgJ1xcXCcnKTsKfQoKU3RyaW5nLnByb3RvdHlwZS5fcmVw bGFjZUVudGl0aWVzID0gZnVuY3Rpb24oc0lucHV0LCBzRHVtbXksIHNOdW0pCnsK CXJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKHBhcnNlSW50KHNOdW0pKTsKfQoK U3RyaW5nLnByb3RvdHlwZS5yZW1vdmVFbnRpdGllcyA9IGZ1bmN0aW9uKCkKewoJ cmV0dXJuIHRoaXMucmVwbGFjZSgvJihhbXA7KT8jKFxkKyk7L2csIHRoaXMuX3Jl cGxhY2VFbnRpdGllcyk7Cn0KClN0cmluZy5wcm90b3R5cGUuZWFzeVJlcGxhY2Ug PSBmdW5jdGlvbiAob1JlcGxhY2VtZW50cykKewoJdmFyIHNSZXN1bHQgPSB0aGlz OwoJZm9yICh2YXIgc1NlYXJjaCBpbiBvUmVwbGFjZW1lbnRzKQoJCXNSZXN1bHQg PSBzUmVzdWx0LnJlcGxhY2UobmV3IFJlZ0V4cCgnJScgKyBzU2VhcmNoICsgJyUn LCAnZycpLCBvUmVwbGFjZW1lbnRzW3NTZWFyY2hdKTsKCglyZXR1cm4gc1Jlc3Vs dDsKfQoKCi8vIE9wZW4gYSBuZXcgd2luZG93LgpmdW5jdGlvbiByZXFXaW4oZGVz a3RvcFVSTCwgYWx0ZXJuYXRlV2lkdGgsIGFsdGVybmF0ZUhlaWdodCwgbm9TY3Jv bGxiYXJzKQp7CglpZiAoKGFsdGVybmF0ZVdpZHRoICYmIHNlbGYuc2NyZWVuLmF2 YWlsV2lkdGggKiAwLjggPCBhbHRlcm5hdGVXaWR0aCkgfHwgKGFsdGVybmF0ZUhl aWdodCAmJiBzZWxmLnNjcmVlbi5hdmFpbEhlaWdodCAqIDAuOCA8IGFsdGVybmF0 ZUhlaWdodCkpCgl7CgkJbm9TY3JvbGxiYXJzID0gZmFsc2U7CgkJYWx0ZXJuYXRl V2lkdGggPSBNYXRoLm1pbihhbHRlcm5hdGVXaWR0aCwgc2VsZi5zY3JlZW4uYXZh aWxXaWR0aCAqIDAuOCk7CgkJYWx0ZXJuYXRlSGVpZ2h0ID0gTWF0aC5taW4oYWx0 ZXJuYXRlSGVpZ2h0LCBzZWxmLnNjcmVlbi5hdmFpbEhlaWdodCAqIDAuOCk7Cgl9 CgllbHNlCgkJbm9TY3JvbGxiYXJzID0gdHlwZW9mKG5vU2Nyb2xsYmFycykgPT0g J2Jvb2xlYW4nICYmIG5vU2Nyb2xsYmFycyA9PSB0cnVlOwoKCXdpbmRvdy5vcGVu KGRlc2t0b3BVUkwsICdyZXF1ZXN0ZWRfcG9wdXAnLCAndG9vbGJhcj1ubyxsb2Nh dGlvbj1ubyxzdGF0dXM9bm8sbWVudWJhcj1ubyxzY3JvbGxiYXJzPScgKyAobm9T Y3JvbGxiYXJzID8gJ25vJyA6ICd5ZXMnKSArICcsd2lkdGg9JyArIChhbHRlcm5h dGVXaWR0aCA/IGFsdGVybmF0ZVdpZHRoIDogNDgwKSArICcsaGVpZ2h0PScgKyAo YWx0ZXJuYXRlSGVpZ2h0ID8gYWx0ZXJuYXRlSGVpZ2h0IDogMjIwKSArICcscmVz aXphYmxlPW5vJyk7CgoJLy8gUmV0dXJuIGZhbHNlIHNvIHRoZSBjbGljayB3b24n dCBmb2xsb3cgdGhlIGxpbmsgOykuCglyZXR1cm4gZmFsc2U7Cn0KCi8vIFJlbWVt YmVyIHRoZSBjdXJyZW50IHBvc2l0aW9uLgpmdW5jdGlvbiBzdG9yZUNhcmV0KG9U ZXh0SGFuZGxlKQp7CgkvLyBPbmx5IGJvdGhlciBpZiBpdCB3aWxsIGJlIHVzZWZ1 bC4KCWlmICgnY3JlYXRlVGV4dFJhbmdlJyBpbiBvVGV4dEhhbmRsZSkKCQlvVGV4 dEhhbmRsZS5jYXJldFBvcyA9IGRvY3VtZW50LnNlbGVjdGlvbi5jcmVhdGVSYW5n ZSgpLmR1cGxpY2F0ZSgpOwp9CgovLyBSZXBsYWNlcyB0aGUgY3VycmVudGx5IHNl bGVjdGVkIHRleHQgd2l0aCB0aGUgcGFzc2VkIHRleHQuCmZ1bmN0aW9uIHJlcGxh Y2VUZXh0KHRleHQsIG9UZXh0SGFuZGxlKQp7CgkvLyBBdHRlbXB0IHRvIGNyZWF0 ZSBhIHRleHQgcmFuZ2UgKElFKS4KCWlmICgnY2FyZXRQb3MnIGluIG9UZXh0SGFu ZGxlICYmICdjcmVhdGVUZXh0UmFuZ2UnIGluIG9UZXh0SGFuZGxlKQoJewoJCXZh ciBjYXJldFBvcyA9IG9UZXh0SGFuZGxlLmNhcmV0UG9zOwoKCQljYXJldFBvcy50 ZXh0ID0gY2FyZXRQb3MudGV4dC5jaGFyQXQoY2FyZXRQb3MudGV4dC5sZW5ndGgg LSAxKSA9PSAnICcgPyB0ZXh0ICsgJyAnIDogdGV4dDsKCQljYXJldFBvcy5zZWxl Y3QoKTsKCX0KCS8vIE1vemlsbGEgdGV4dCByYW5nZSByZXBsYWNlLgoJZWxzZSBp ZiAoJ3NlbGVjdGlvblN0YXJ0JyBpbiBvVGV4dEhhbmRsZSkKCXsKCQl2YXIgYmVn aW4gPSBvVGV4dEhhbmRsZS52YWx1ZS5zdWJzdHIoMCwgb1RleHRIYW5kbGUuc2Vs ZWN0aW9uU3RhcnQpOwoJCXZhciBlbmQgPSBvVGV4dEhhbmRsZS52YWx1ZS5zdWJz dHIob1RleHRIYW5kbGUuc2VsZWN0aW9uRW5kKTsKCQl2YXIgc2Nyb2xsUG9zID0g b1RleHRIYW5kbGUuc2Nyb2xsVG9wOwoKCQlvVGV4dEhhbmRsZS52YWx1ZSA9IGJl Z2luICsgdGV4dCArIGVuZDsKCgkJaWYgKG9UZXh0SGFuZGxlLnNldFNlbGVjdGlv blJhbmdlKQoJCXsKCQkJb1RleHRIYW5kbGUuZm9jdXMoKTsKCQkJdmFyIGdvRm9y d2FyZCA9IGlzX29wZXJhID8gdGV4dC5tYXRjaCgvXG4vZykubGVuZ3RoIDogMDsK CQkJb1RleHRIYW5kbGUuc2V0U2VsZWN0aW9uUmFuZ2UoYmVnaW4ubGVuZ3RoICsg dGV4dC5sZW5ndGggKyBnb0ZvcndhcmQsIGJlZ2luLmxlbmd0aCArIHRleHQubGVu Z3RoICsgZ29Gb3J3YXJkKTsKCQl9CgkJb1RleHRIYW5kbGUuc2Nyb2xsVG9wID0g c2Nyb2xsUG9zOwoJfQoJLy8gSnVzdCBwdXQgaXQgb24gdGhlIGVuZC4KCWVsc2UK CXsKCQlvVGV4dEhhbmRsZS52YWx1ZSArPSB0ZXh0OwoJCW9UZXh0SGFuZGxlLmZv Y3VzKG9UZXh0SGFuZGxlLnZhbHVlLmxlbmd0aCAtIDEpOwoJfQp9CgovLyBTdXJy b3VuZHMgdGhlIHNlbGVjdGVkIHRleHQgd2l0aCB0ZXh0MSBhbmQgdGV4dDIuCmZ1 bmN0aW9uIHN1cnJvdW5kVGV4dCh0ZXh0MSwgdGV4dDIsIG9UZXh0SGFuZGxlKQp7 CgkvLyBDYW4gYSB0ZXh0IHJhbmdlIGJlIGNyZWF0ZWQ/CglpZiAoJ2NhcmV0UG9z JyBpbiBvVGV4dEhhbmRsZSAmJiAnY3JlYXRlVGV4dFJhbmdlJyBpbiBvVGV4dEhh bmRsZSkKCXsKCQl2YXIgY2FyZXRQb3MgPSBvVGV4dEhhbmRsZS5jYXJldFBvcywg dGVtcF9sZW5ndGggPSBjYXJldFBvcy50ZXh0Lmxlbmd0aDsKCgkJY2FyZXRQb3Mu dGV4dCA9IGNhcmV0UG9zLnRleHQuY2hhckF0KGNhcmV0UG9zLnRleHQubGVuZ3Ro IC0gMSkgPT0gJyAnID8gdGV4dDEgKyBjYXJldFBvcy50ZXh0ICsgdGV4dDIgKyAn ICcgOiB0ZXh0MSArIGNhcmV0UG9zLnRleHQgKyB0ZXh0MjsKCgkJaWYgKHRlbXBf bGVuZ3RoID09IDApCgkJewoJCQljYXJldFBvcy5tb3ZlU3RhcnQoJ2NoYXJhY3Rl cicsIC10ZXh0Mi5sZW5ndGgpOwoJCQljYXJldFBvcy5tb3ZlRW5kKCdjaGFyYWN0 ZXInLCAtdGV4dDIubGVuZ3RoKTsKCQkJY2FyZXRQb3Muc2VsZWN0KCk7CgkJfQoJ CWVsc2UKCQkJb1RleHRIYW5kbGUuZm9jdXMoY2FyZXRQb3MpOwoJfQoJLy8gTW96 aWxsYSB0ZXh0IHJhbmdlIHdyYXAuCgllbHNlIGlmICgnc2VsZWN0aW9uU3RhcnQn IGluIG9UZXh0SGFuZGxlKQoJewoJCXZhciBiZWdpbiA9IG9UZXh0SGFuZGxlLnZh bHVlLnN1YnN0cigwLCBvVGV4dEhhbmRsZS5zZWxlY3Rpb25TdGFydCk7CgkJdmFy IHNlbGVjdGlvbiA9IG9UZXh0SGFuZGxlLnZhbHVlLnN1YnN0cihvVGV4dEhhbmRs ZS5zZWxlY3Rpb25TdGFydCwgb1RleHRIYW5kbGUuc2VsZWN0aW9uRW5kIC0gb1Rl eHRIYW5kbGUuc2VsZWN0aW9uU3RhcnQpOwoJCXZhciBlbmQgPSBvVGV4dEhhbmRs ZS52YWx1ZS5zdWJzdHIob1RleHRIYW5kbGUuc2VsZWN0aW9uRW5kKTsKCQl2YXIg bmV3Q3Vyc29yUG9zID0gb1RleHRIYW5kbGUuc2VsZWN0aW9uU3RhcnQ7CgkJdmFy IHNjcm9sbFBvcyA9IG9UZXh0SGFuZGxlLnNjcm9sbFRvcDsKCgkJb1RleHRIYW5k bGUudmFsdWUgPSBiZWdpbiArIHRleHQxICsgc2VsZWN0aW9uICsgdGV4dDIgKyBl bmQ7CgoJCWlmIChvVGV4dEhhbmRsZS5zZXRTZWxlY3Rpb25SYW5nZSkKCQl7CgkJ CXZhciBnb0ZvcndhcmQgPSBpc19vcGVyYSA/IHRleHQxLm1hdGNoKC9cbi9nKS5s ZW5ndGggOiAwLCBnb0ZvcndhcmRBbGwgPSBpc19vcGVyYSA/ICh0ZXh0MSArIHRl eHQyKS5tYXRjaCgvXG4vZykubGVuZ3RoIDogMDsKCQkJaWYgKHNlbGVjdGlvbi5s ZW5ndGggPT0gMCkKCQkJCW9UZXh0SGFuZGxlLnNldFNlbGVjdGlvblJhbmdlKG5l d0N1cnNvclBvcyArIHRleHQxLmxlbmd0aCArIGdvRm9yd2FyZCwgbmV3Q3Vyc29y UG9zICsgdGV4dDEubGVuZ3RoICsgZ29Gb3J3YXJkKTsKCQkJZWxzZQoJCQkJb1Rl eHRIYW5kbGUuc2V0U2VsZWN0aW9uUmFuZ2UobmV3Q3Vyc29yUG9zLCBuZXdDdXJz b3JQb3MgKyB0ZXh0MS5sZW5ndGggKyBzZWxlY3Rpb24ubGVuZ3RoICsgdGV4dDIu bGVuZ3RoICsgZ29Gb3J3YXJkQWxsKTsKCQkJb1RleHRIYW5kbGUuZm9jdXMoKTsK CQl9CgkJb1RleHRIYW5kbGUuc2Nyb2xsVG9wID0gc2Nyb2xsUG9zOwoJfQoJLy8g SnVzdCBwdXQgdGhlbSBvbiB0aGUgZW5kLCB0aGVuLgoJZWxzZQoJewoJCW9UZXh0 SGFuZGxlLnZhbHVlICs9IHRleHQxICsgdGV4dDI7CgkJb1RleHRIYW5kbGUuZm9j dXMob1RleHRIYW5kbGUudmFsdWUubGVuZ3RoIC0gMSk7Cgl9Cn0KCi8vIENoZWNr cyBpZiB0aGUgcGFzc2VkIGlucHV0J3MgdmFsdWUgaXMgbm90aGluZy4KZnVuY3Rp b24gaXNFbXB0eVRleHQodGhlRmllbGQpCnsKCS8vIENvcHkgdGhlIHZhbHVlIHNv IGNoYW5nZXMgY2FuIGJlIG1hZGUuLgoJdmFyIHRoZVZhbHVlID0gdGhlRmllbGQu dmFsdWU7CgoJLy8gU3RyaXAgd2hpdGVzcGFjZSBvZmYgdGhlIGxlZnQgc2lkZS4K CXdoaWxlICh0aGVWYWx1ZS5sZW5ndGggPiAwICYmICh0aGVWYWx1ZS5jaGFyQXQo MCkgPT0gJyAnIHx8IHRoZVZhbHVlLmNoYXJBdCgwKSA9PSAnXHQnKSkKCQl0aGVW YWx1ZSA9IHRoZVZhbHVlLnN1YnN0cmluZygxLCB0aGVWYWx1ZS5sZW5ndGgpOwoJ Ly8gU3RyaXAgd2hpdGVzcGFjZSBvZmYgdGhlIHJpZ2h0IHNpZGUuCgl3aGlsZSAo dGhlVmFsdWUubGVuZ3RoID4gMCAmJiAodGhlVmFsdWUuY2hhckF0KHRoZVZhbHVl Lmxlbmd0aCAtIDEpID09ICcgJyB8fCB0aGVWYWx1ZS5jaGFyQXQodGhlVmFsdWUu bGVuZ3RoIC0gMSkgPT0gJ1x0JykpCgkJdGhlVmFsdWUgPSB0aGVWYWx1ZS5zdWJz dHJpbmcoMCwgdGhlVmFsdWUubGVuZ3RoIC0gMSk7CgoJaWYgKHRoZVZhbHVlID09 ICcnKQoJCXJldHVybiB0cnVlOwoJZWxzZQoJCXJldHVybiBmYWxzZTsKfQoKLy8g T25seSBhbGxvdyBmb3JtIHN1Ym1pc3Npb24gT05DRS4KZnVuY3Rpb24gc3VibWl0 b25jZSh0aGVmb3JtKQp7CglzbWZfZm9ybVN1Ym1pdHRlZCA9IHRydWU7CgoJLy8g SWYgdGhlcmUgYXJlIGFueSBlZGl0b3JzIHdhcm4gdGhlbSBzdWJtaXQgaXMgY29t aW5nIQoJZm9yICh2YXIgaSA9IDA7IGkgPCBzbWZfZWRpdG9yQXJyYXkubGVuZ3Ro OyBpKyspCgkJc21mX2VkaXRvckFycmF5W2ldLmRvU3VibWl0KCk7Cn0KZnVuY3Rp b24gc3VibWl0VGhpc09uY2Uob0NvbnRyb2wpCnsKCS8vIEhhdGVmdWwsIGhhdGVm dWwgZml4IGZvciBTYWZhcmkgMS4zIGJldGEuCglpZiAoaXNfc2FmYXJpKQoJCXJl dHVybiAhc21mX2Zvcm1TdWJtaXR0ZWQ7CgoJLy8gb0NvbnRyb2wgbWlnaHQgYWxz byBiZSBhIGZvcm0uCgl2YXIgb0Zvcm0gPSAnZm9ybScgaW4gb0NvbnRyb2wgPyBv Q29udHJvbC5mb3JtIDogb0NvbnRyb2w7CgoJdmFyIGFUZXh0YXJlYXMgPSBvRm9y bS5nZXRFbGVtZW50c0J5VGFnTmFtZSgndGV4dGFyZWEnKTsKCWZvciAodmFyIGkg PSAwLCBuID0gYVRleHRhcmVhcy5sZW5ndGg7IGkgPCBuOyBpKyspCgkJYVRleHRh cmVhc1tpXS5yZWFkT25seSA9IHRydWU7CgoJcmV0dXJuICFzbWZfZm9ybVN1Ym1p dHRlZDsKfQoKLy8gRGVwcmVjYXRlZCwgYXMgaW5uZXJIVE1MIGlzIHN1cHBvcnRl ZCBldmVyeXdoZXJlLgpmdW5jdGlvbiBzZXRJbm5lckhUTUwob0VsZW1lbnQsIHNU b1ZhbHVlKQp7CglvRWxlbWVudC5pbm5lckhUTUwgPSBzVG9WYWx1ZTsKfQoKZnVu Y3Rpb24gZ2V0SW5uZXJIVE1MKG9FbGVtZW50KQp7CglyZXR1cm4gb0VsZW1lbnQu aW5uZXJIVE1MOwp9CgovLyBTZXQgdGhlICJvdXRlciIgSFRNTCBvZiBhbiBlbGVt ZW50LgpmdW5jdGlvbiBzZXRPdXRlckhUTUwob0VsZW1lbnQsIHNUb1ZhbHVlKQp7 CglpZiAoJ291dGVySFRNTCcgaW4gb0VsZW1lbnQpCgkJb0VsZW1lbnQub3V0ZXJI VE1MID0gc1RvVmFsdWU7CgllbHNlCgl7CgkJdmFyIHJhbmdlID0gZG9jdW1lbnQu Y3JlYXRlUmFuZ2UoKTsKCQlyYW5nZS5zZXRTdGFydEJlZm9yZShvRWxlbWVudCk7 CgkJb0VsZW1lbnQucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQocmFuZ2UuY3JlYXRl Q29udGV4dHVhbEZyYWdtZW50KHNUb1ZhbHVlKSwgb0VsZW1lbnQpOwoJfQp9Cgov LyBDaGVja3MgZm9yIHZhcmlhYmxlIGluIHRoZUFycmF5LgpmdW5jdGlvbiBpbl9h cnJheSh2YXJpYWJsZSwgdGhlQXJyYXkpCnsKCWZvciAodmFyIGkgaW4gdGhlQXJy YXkpCgkJaWYgKHRoZUFycmF5W2ldID09IHZhcmlhYmxlKQoJCQlyZXR1cm4gdHJ1 ZTsKCglyZXR1cm4gZmFsc2U7Cn0KCi8vIENoZWNrcyBmb3IgdmFyaWFibGUgaW4g dGhlQXJyYXkuCmZ1bmN0aW9uIGFycmF5X3NlYXJjaCh2YXJpYWJsZSwgdGhlQXJy YXkpCnsKCWZvciAodmFyIGkgaW4gdGhlQXJyYXkpCgkJaWYgKHRoZUFycmF5W2ld ID09IHZhcmlhYmxlKQoJCQlyZXR1cm4gaTsKCglyZXR1cm4gbnVsbDsKfQoKLy8g RmluZCBhIHNwZWNpZmljIHJhZGlvIGJ1dHRvbiBpbiBpdHMgZ3JvdXAgYW5kIHNl bGVjdCBpdC4KZnVuY3Rpb24gc2VsZWN0UmFkaW9CeU5hbWUob1JhZGlvR3JvdXAs IHNOYW1lKQp7CglpZiAoISgnbGVuZ3RoJyBpbiBvUmFkaW9Hcm91cCkpCgkJcmV0 dXJuIG9SYWRpb0dyb3VwLmNoZWNrZWQgPSB0cnVlOwoKCWZvciAodmFyIGkgPSAw LCBuID0gb1JhZGlvR3JvdXAubGVuZ3RoOyBpIDwgbjsgaSsrKQoJCWlmIChvUmFk aW9Hcm91cFtpXS52YWx1ZSA9PSBzTmFtZSkKCQkJcmV0dXJuIG9SYWRpb0dyb3Vw W2ldLmNoZWNrZWQgPSB0cnVlOwoKCXJldHVybiBmYWxzZTsKfQoKLy8gSW52ZXJ0 IGFsbCBjaGVja2JveGVzIGF0IG9uY2UgYnkgY2xpY2tpbmcgYSBzaW5nbGUgY2hl Y2tib3guCmZ1bmN0aW9uIGludmVydEFsbChvSW52ZXJ0Q2hlY2tib3gsIG9Gb3Jt LCBzTWFzaywgYklnbm9yZURpc2FibGVkKQp7Cglmb3IgKHZhciBpID0gMDsgaSA8 IG9Gb3JtLmxlbmd0aDsgaSsrKQoJewoJCWlmICghKCduYW1lJyBpbiBvRm9ybVtp XSkgfHwgKHR5cGVvZihzTWFzaykgPT0gJ3N0cmluZycgJiYgb0Zvcm1baV0ubmFt ZS5zdWJzdHIoMCwgc01hc2subGVuZ3RoKSAhPSBzTWFzayAmJiBvRm9ybVtpXS5p ZC5zdWJzdHIoMCwgc01hc2subGVuZ3RoKSAhPSBzTWFzaykpCgkJCWNvbnRpbnVl OwoKCQlpZiAoIW9Gb3JtW2ldLmRpc2FibGVkIHx8ICh0eXBlb2YoYklnbm9yZURp c2FibGVkKSA9PSAnYm9vbGVhbicgJiYgYklnbm9yZURpc2FibGVkKSkKCQkJb0Zv cm1baV0uY2hlY2tlZCA9IG9JbnZlcnRDaGVja2JveC5jaGVja2VkOwoJfQp9Cgov LyBLZWVwIHRoZSBzZXNzaW9uIGFsaXZlIC0gYWx3YXlzIQp2YXIgbGFzdEtlZXBB bGl2ZUNoZWNrID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7CmZ1bmN0aW9uIHNtZl9z ZXNzaW9uS2VlcEFsaXZlKCkKewoJdmFyIGN1clRpbWUgPSBuZXcgRGF0ZSgpLmdl dFRpbWUoKTsKCgkvLyBQcmV2ZW50IGEgRmlyZWZveCBidWcgZnJvbSBoYW1tZXJp bmcgdGhlIHNlcnZlci4KCWlmIChzbWZfc2NyaXB0dXJsICYmIGN1clRpbWUgLSBs YXN0S2VlcEFsaXZlQ2hlY2sgPiA5MDAwMDApCgl7CgkJdmFyIHRlbXBJbWFnZSA9 IG5ldyBJbWFnZSgpOwoJCXRlbXBJbWFnZS5zcmMgPSBzbWZfcHJlcGFyZVNjcmlw dFVybChzbWZfc2NyaXB0dXJsKSArICdhY3Rpb249a2VlcGFsaXZlO3RpbWU9JyAr IGN1clRpbWU7CgkJbGFzdEtlZXBBbGl2ZUNoZWNrID0gY3VyVGltZTsKCX0KCgl3 aW5kb3cuc2V0VGltZW91dCgnc21mX3Nlc3Npb25LZWVwQWxpdmUoKTsnLCAxMjAw MDAwKTsKfQp3aW5kb3cuc2V0VGltZW91dCgnc21mX3Nlc3Npb25LZWVwQWxpdmUo KTsnLCAxMjAwMDAwKTsKCi8vIFNldCBhIHRoZW1lIG9wdGlvbiB0aHJvdWdoIGph dmFzY3JpcHQuCmZ1bmN0aW9uIHNtZl9zZXRUaGVtZU9wdGlvbihvcHRpb24sIHZh bHVlLCB0aGVtZSwgY3VyX3Nlc3Npb25faWQsIGN1cl9zZXNzaW9uX3ZhciwgYWRk aXRpb25hbF92YXJzKQp7CgkvLyBDb21wYXRpYmlsaXR5LgoJaWYgKGN1cl9zZXNz aW9uX2lkID09IG51bGwpCgkJY3VyX3Nlc3Npb25faWQgPSBzbWZfc2Vzc2lvbl9p ZDsKCWlmICh0eXBlb2YoY3VyX3Nlc3Npb25fdmFyKSA9PSAndW5kZWZpbmVkJykK CQljdXJfc2Vzc2lvbl92YXIgPSAnc2VzYyc7CgoJaWYgKGFkZGl0aW9uYWxfdmFy cyA9PSBudWxsKQoJCWFkZGl0aW9uYWxfdmFycyA9ICcnOwoKCXZhciB0ZW1wSW1h Z2UgPSBuZXcgSW1hZ2UoKTsKCXRlbXBJbWFnZS5zcmMgPSBzbWZfcHJlcGFyZVNj cmlwdFVybChzbWZfc2NyaXB0dXJsKSArICdhY3Rpb249anNvcHRpb247dmFyPScg KyBvcHRpb24gKyAnO3ZhbD0nICsgdmFsdWUgKyAnOycgKyBjdXJfc2Vzc2lvbl92 YXIgKyAnPScgKyBjdXJfc2Vzc2lvbl9pZCArIGFkZGl0aW9uYWxfdmFycyArICh0 aGVtZSA9PSBudWxsID8gJycgOiAnJnRoPScgKyB0aGVtZSkgKyAnO3RpbWU9JyAr IChuZXcgRGF0ZSgpLmdldFRpbWUoKSk7Cn0KCmZ1bmN0aW9uIHNtZl9hdmF0YXJS ZXNpemUoKQp7Cgl2YXIgcG9zc2libGVBdmF0YXJzID0gZG9jdW1lbnQuZ2V0RWxl bWVudHNCeVRhZ05hbWUoJ2ltZycpOwoKCWZvciAodmFyIGkgPSAwOyBpIDwgcG9z c2libGVBdmF0YXJzLmxlbmd0aDsgaSsrKQoJewoJCXZhciB0ZW1wQXZhdGFycyA9 IFtdOyBqID0gMDsKCQlpZiAocG9zc2libGVBdmF0YXJzW2ldLmNsYXNzTmFtZSAh PSAnYXZhdGFyJykKCQkJY29udGludWU7CgoJCS8vIEltYWdlLnByb3RvdHlwZS5h dmF0YXIgPSBwb3NzaWJsZUF2YXRhcnNbaV07CgkJdGVtcEF2YXRhcnNbal0gPSBu ZXcgSW1hZ2UoKTsKCQl0ZW1wQXZhdGFyc1tqXS5hdmF0YXIgPSBwb3NzaWJsZUF2 YXRhcnNbaV07CgkJCgkJdGVtcEF2YXRhcnNbal0ub25sb2FkID0gZnVuY3Rpb24o KQoJCXsKCQkJdGhpcy5hdmF0YXIud2lkdGggPSB0aGlzLndpZHRoOwoJCQl0aGlz LmF2YXRhci5oZWlnaHQgPSB0aGlzLmhlaWdodDsKCQkJaWYgKHNtZl9hdmF0YXJN YXhXaWR0aCAhPSAwICYmIHRoaXMud2lkdGggPiBzbWZfYXZhdGFyTWF4V2lkdGgp CgkJCXsKCQkJCXRoaXMuYXZhdGFyLmhlaWdodCA9IChzbWZfYXZhdGFyTWF4V2lk dGggKiB0aGlzLmhlaWdodCkgLyB0aGlzLndpZHRoOwoJCQkJdGhpcy5hdmF0YXIu d2lkdGggPSBzbWZfYXZhdGFyTWF4V2lkdGg7CgkJCX0KCQkJaWYgKHNtZl9hdmF0 YXJNYXhIZWlnaHQgIT0gMCAmJiB0aGlzLmF2YXRhci5oZWlnaHQgPiBzbWZfYXZh dGFyTWF4SGVpZ2h0KQoJCQl7CgkJCQl0aGlzLmF2YXRhci53aWR0aCA9IChzbWZf YXZhdGFyTWF4SGVpZ2h0ICogdGhpcy5hdmF0YXIud2lkdGgpIC8gdGhpcy5hdmF0 YXIuaGVpZ2h0OwoJCQkJdGhpcy5hdmF0YXIuaGVpZ2h0ID0gc21mX2F2YXRhck1h eEhlaWdodDsKCQkJfQoJCX0KCQl0ZW1wQXZhdGFyc1tqXS5zcmMgPSBwb3NzaWJs ZUF2YXRhcnNbaV0uc3JjOwoJCWorKzsKCX0KCglpZiAodHlwZW9mKHdpbmRvd19v bGRBdmF0YXJPbmxvYWQpICE9ICd1bmRlZmluZWQnICYmIHdpbmRvd19vbGRBdmF0 YXJPbmxvYWQpCgl7CgkJd2luZG93X29sZEF2YXRhck9ubG9hZCgpOwoJCXdpbmRv d19vbGRBdmF0YXJPbmxvYWQgPSBudWxsOwoJfQp9CgoKZnVuY3Rpb24gaGFzaExv Z2luUGFzc3dvcmQoZG9Gb3JtLCBjdXJfc2Vzc2lvbl9pZCkKewoJLy8gQ29tcGF0 aWJpbGl0eS4KCWlmIChjdXJfc2Vzc2lvbl9pZCA9PSBudWxsKQoJCWN1cl9zZXNz aW9uX2lkID0gc21mX3Nlc3Npb25faWQ7CgoJaWYgKHR5cGVvZihoZXhfc2hhMSkg PT0gJ3VuZGVmaW5lZCcpCgkJcmV0dXJuOwoJLy8gQXJlIHRoZXkgdXNpbmcgYW4g ZW1haWwgYWRkcmVzcz8KCWlmIChkb0Zvcm0udXNlci52YWx1ZS5pbmRleE9mKCdA JykgIT0gLTEpCgkJcmV0dXJuOwoKCS8vIFVubGVzcyB0aGUgYnJvd3NlciBpcyBP cGVyYSwgdGhlIHBhc3N3b3JkIHdpbGwgbm90IHNhdmUgcHJvcGVybHkuCglpZiAo ISgnb3BlcmEnIGluIHdpbmRvdykpCgkJZG9Gb3JtLnBhc3N3cmQuYXV0b2NvbXBs ZXRlID0gJ29mZic7CgoJZG9Gb3JtLmhhc2hfcGFzc3dyZC52YWx1ZSA9IGhleF9z aGExKGhleF9zaGExKGRvRm9ybS51c2VyLnZhbHVlLnBocF90bzhiaXQoKS5waHBf c3RydG9sb3dlcigpICsgZG9Gb3JtLnBhc3N3cmQudmFsdWUucGhwX3RvOGJpdCgp KSArIGN1cl9zZXNzaW9uX2lkKTsKCgkvLyBJdCBsb29rcyBuaWNlciB0byBmaWxs IGl0IHdpdGggYXN0ZXJpc2tzLCBidXQgRmlyZWZveCB3aWxsIHRyeSB0byBzYXZl IHRoYXQuCglpZiAoaXNfZmYgIT0gLTEpCgkJZG9Gb3JtLnBhc3N3cmQudmFsdWUg PSAnJzsKCWVsc2UKCQlkb0Zvcm0ucGFzc3dyZC52YWx1ZSA9IGRvRm9ybS5wYXNz d3JkLnZhbHVlLnJlcGxhY2UoLy4vZywgJyonKTsKfQoKZnVuY3Rpb24gaGFzaEFk bWluUGFzc3dvcmQoZG9Gb3JtLCB1c2VybmFtZSwgY3VyX3Nlc3Npb25faWQpCnsK CS8vIENvbXBhdGliaWxpdHkuCglpZiAoY3VyX3Nlc3Npb25faWQgPT0gbnVsbCkK CQljdXJfc2Vzc2lvbl9pZCA9IHNtZl9zZXNzaW9uX2lkOwoKCWlmICh0eXBlb2Yo aGV4X3NoYTEpID09ICd1bmRlZmluZWQnKQoJCXJldHVybjsKCglkb0Zvcm0uYWRt aW5faGFzaF9wYXNzLnZhbHVlID0gaGV4X3NoYTEoaGV4X3NoYTEodXNlcm5hbWUu cGhwX3RvOGJpdCgpLnBocF9zdHJ0b2xvd2VyKCkgKyBkb0Zvcm0uYWRtaW5fcGFz cy52YWx1ZS5waHBfdG84Yml0KCkpICsgY3VyX3Nlc3Npb25faWQpOwoJZG9Gb3Jt LmFkbWluX3Bhc3MudmFsdWUgPSBkb0Zvcm0uYWRtaW5fcGFzcy52YWx1ZS5yZXBs YWNlKC8uL2csICcqJyk7Cn0KCi8vIFNob3dzIHRoZSBwYWdlIG51bWJlcnMgYnkg Y2xpY2tpbmcgdGhlIGRvdHMgKGluIGNvbXBhY3QgdmlldykuCmZ1bmN0aW9uIGV4 cGFuZFBhZ2VzKHNwYW5Ob2RlLCBiYXNlVVJMLCBmaXJzdFBhZ2UsIGxhc3RQYWdl LCBwZXJQYWdlKQp7Cgl2YXIgcmVwbGFjZW1lbnQgPSAnJywgaSwgb2xkTGFzdFBh Z2UgPSAwOwoJdmFyIHBlclBhZ2VMaW1pdCA9IDUwOwoKCS8vIFRoZSBkb3RzIHdl cmUgYm9sZCwgdGhlIHBhZ2UgbnVtYmVycyBhcmUgbm90IChpbiBtb3N0IGNhc2Vz KS4KCXNwYW5Ob2RlLnN0eWxlLmZvbnRXZWlnaHQgPSAnbm9ybWFsJzsKCXNwYW5O b2RlLm9uY2xpY2sgPSAnJzsKCgkvLyBQcmV2ZW50IHRvbyBtYW55IHBhZ2VzIHRv IGJlIGxvYWRlZCBhdCBvbmNlLgoJaWYgKChsYXN0UGFnZSAtIGZpcnN0UGFnZSkg LyBwZXJQYWdlID4gcGVyUGFnZUxpbWl0KQoJewoJCW9sZExhc3RQYWdlID0gbGFz dFBhZ2U7CgkJbGFzdFBhZ2UgPSBmaXJzdFBhZ2UgKyBwZXJQYWdlTGltaXQgKiBw ZXJQYWdlOwoJfQoKCS8vIENhbGN1bGF0ZSB0aGUgbmV3IHBhZ2VzLgoJZm9yIChp ID0gZmlyc3RQYWdlOyBpIDwgbGFzdFBhZ2U7IGkgKz0gcGVyUGFnZSkKCQlyZXBs YWNlbWVudCArPSAnPGEgY2xhc3M9Im5hdlBhZ2VzIiBocmVmPSInICsgYmFzZVVS TC5yZXBsYWNlKC8lMVwkZC8sIGkpLnJlcGxhY2UoLyUlL2csICclJykgKyAnIj4n ICsgKDEgKyBpIC8gcGVyUGFnZSkgKyAnPC9hPiAnOwoKCWlmIChvbGRMYXN0UGFn ZSA+IDApCgkJcmVwbGFjZW1lbnQgKz0gJzxzcGFuIHN0eWxlPSJmb250LXdlaWdo dDogYm9sZDsgY3Vyc29yOiAnICsgKGlzX2llICYmICFpc19pZTZ1cCA/ICdoYW5k JyA6ICdwb2ludGVyJykgKyAnOyIgb25jbGljaz0iZXhwYW5kUGFnZXModGhpcywg XCcnICsgYmFzZVVSTCArICdcJywgJyArIGxhc3RQYWdlICsgJywgJyArIG9sZExh c3RQYWdlICsgJywgJyArIHBlclBhZ2UgKyAnKTsiPiAuLi4gPC9zcGFuPiAnOwoK CS8vIFJlcGxhY2UgdGhlIGRvdHMgYnkgdGhlIG5ldyBwYWdlIGxpbmtzLgoJc2V0 SW5uZXJIVE1MKHNwYW5Ob2RlLCByZXBsYWNlbWVudCk7Cn0KCmZ1bmN0aW9uIHNt Y19wcmVDYWNoZUltYWdlKHNTcmMpCnsKCWlmICghKCdzbWNfYUNhY2hlZEltYWdl cycgaW4gd2luZG93KSkKCQl3aW5kb3cuc21jX2FDYWNoZWRJbWFnZXMgPSBbXTsK CglpZiAoIWluX2FycmF5KHNTcmMsIHdpbmRvdy5zbWNfYUNhY2hlZEltYWdlcykp Cgl7CgkJdmFyIG9JbWFnZSA9IG5ldyBJbWFnZSgpOwoJCW9JbWFnZS5zcmMgPSBz U3JjOwoJfQp9CgoKLy8gKioqIHNtY19Db29raWUgY2xhc3MuCmZ1bmN0aW9uIHNt Y19Db29raWUob09wdGlvbnMpCnsKCXRoaXMub3B0ID0gb09wdGlvbnM7Cgl0aGlz Lm9Db29raWVzID0ge307Cgl0aGlzLmluaXQoKTsKfQoKc21jX0Nvb2tpZS5wcm90 b3R5cGUuaW5pdCA9IGZ1bmN0aW9uKCkKewoJaWYgKCdjb29raWUnIGluIGRvY3Vt ZW50ICYmIGRvY3VtZW50LmNvb2tpZSAhPSAnJykKCXsKCQl2YXIgYUNvb2tpZUxp c3QgPSBkb2N1bWVudC5jb29raWUuc3BsaXQoJzsnKTsKCQlmb3IgKHZhciBpID0g MCwgbiA9IGFDb29raWVMaXN0Lmxlbmd0aDsgaSA8IG47IGkrKykKCQl7CgkJCXZh ciBhTmFtZVZhbHVlUGFpciA9IGFDb29raWVMaXN0W2ldLnNwbGl0KCc9Jyk7CgkJ CXRoaXMub0Nvb2tpZXNbYU5hbWVWYWx1ZVBhaXJbMF0ucmVwbGFjZSgvXlxzK3xc cyskL2csICcnKV0gPSBkZWNvZGVVUklDb21wb25lbnQoYU5hbWVWYWx1ZVBhaXJb MV0pOwoJCX0KCX0KfQoKc21jX0Nvb2tpZS5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rp b24oc0tleSkKewoJcmV0dXJuIHNLZXkgaW4gdGhpcy5vQ29va2llcyA/IHRoaXMu b0Nvb2tpZXNbc0tleV0gOiBudWxsOwp9CgpzbWNfQ29va2llLnByb3RvdHlwZS5z ZXQgPSBmdW5jdGlvbihzS2V5LCBzVmFsdWUpCnsKCWRvY3VtZW50LmNvb2tpZSA9 IHNLZXkgKyAnPScgKyBlbmNvZGVVUklDb21wb25lbnQoc1ZhbHVlKTsKfQoKCi8v ICoqKiBzbWNfVG9nZ2xlIGNsYXNzLgpmdW5jdGlvbiBzbWNfVG9nZ2xlKG9PcHRp b25zKQp7Cgl0aGlzLm9wdCA9IG9PcHRpb25zOwoJdGhpcy5iQ29sbGFwc2VkID0g ZmFsc2U7Cgl0aGlzLm9Db29raWUgPSBudWxsOwoJdGhpcy5pbml0KCk7Cn0KCnNt Y19Ub2dnbGUucHJvdG90eXBlLmluaXQgPSBmdW5jdGlvbiAoKQp7CgkvLyBUaGUg bWFzdGVyIHN3aXRjaCBjYW4gZGlzYWJsZSB0aGlzIHRvZ2dsZSBmdWxseS4KCWlm ICgnYlRvZ2dsZUVuYWJsZWQnIGluIHRoaXMub3B0ICYmICF0aGlzLm9wdC5iVG9n Z2xlRW5hYmxlZCkKCQlyZXR1cm47CgoJLy8gSWYgY29va2llcyBhcmUgZW5hYmxl ZCBhbmQgdGhleSB3ZXJlIHNldCwgb3ZlcnJpZGUgdGhlIGluaXRpYWwgc3RhdGUu CglpZiAoJ29Db29raWVPcHRpb25zJyBpbiB0aGlzLm9wdCAmJiB0aGlzLm9wdC5v Q29va2llT3B0aW9ucy5iVXNlQ29va2llKQoJewoJCS8vIEluaXRpYWxpemUgdGhl IGNvb2tpZSBoYW5kbGVyLgoJCXRoaXMub0Nvb2tpZSA9IG5ldyBzbWNfQ29va2ll KHt9KTsKCgkJLy8gQ2hlY2sgaWYgdGhlIGNvb2tpZSBpcyBzZXQuCgkJdmFyIGNv b2tpZVZhbHVlID0gdGhpcy5vQ29va2llLmdldCh0aGlzLm9wdC5vQ29va2llT3B0 aW9ucy5zQ29va2llTmFtZSkKCQlpZiAoY29va2llVmFsdWUgIT0gbnVsbCkKCQkJ dGhpcy5vcHQuYkN1cnJlbnRseUNvbGxhcHNlZCA9IGNvb2tpZVZhbHVlID09ICcx JzsKCX0KCgkvLyBJZiB0aGUgaW5pdCBzdGF0ZSBpcyBzZXQgdG8gYmUgY29sbGFw c2VkLCBjb2xsYXBzZSBpdC4KCWlmICh0aGlzLm9wdC5iQ3VycmVudGx5Q29sbGFw c2VkKQoJCXRoaXMuY2hhbmdlU3RhdGUodHJ1ZSwgdHJ1ZSk7CgoJLy8gSW5pdGlh bGl6ZSB0aGUgaW1hZ2VzIHRvIGJlIGNsaWNrYWJsZS4KCWlmICgnYVN3YXBJbWFn ZXMnIGluIHRoaXMub3B0KQoJewoJCWZvciAodmFyIGkgPSAwLCBuID0gdGhpcy5v cHQuYVN3YXBJbWFnZXMubGVuZ3RoOyBpIDwgbjsgaSsrKQoJCXsKCQkJdmFyIG9J bWFnZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRoaXMub3B0LmFTd2FwSW1h Z2VzW2ldLnNJZCk7CgkJCWlmICh0eXBlb2Yob0ltYWdlKSA9PSAnb2JqZWN0JyAm JiBvSW1hZ2UgIT0gbnVsbCkKCQkJewoJCQkJLy8gRGlzcGxheSB0aGUgaW1hZ2Ug aW4gY2FzZSBpdCB3YXMgaGlkZGVuLgoJCQkJaWYgKG9JbWFnZS5zdHlsZS5kaXNw bGF5ID09ICdub25lJykKCQkJCQlvSW1hZ2Uuc3R5bGUuZGlzcGxheSA9ICcnOwoK CQkJCW9JbWFnZS5pbnN0YW5jZVJlZiA9IHRoaXM7CgkJCQlvSW1hZ2Uub25jbGlj ayA9IGZ1bmN0aW9uICgpIHsKCQkJCQl0aGlzLmluc3RhbmNlUmVmLnRvZ2dsZSgp OwoJCQkJCXRoaXMuYmx1cigpOwoJCQkJfQoJCQkJb0ltYWdlLnN0eWxlLmN1cnNv ciA9ICdwb2ludGVyJzsKCgkJCQkvLyBQcmVsb2FkIHRoZSBjb2xsYXBzZWQgaW1h Z2UuCgkJCQlzbWNfcHJlQ2FjaGVJbWFnZSh0aGlzLm9wdC5hU3dhcEltYWdlc1tp XS5zcmNDb2xsYXBzZWQpOwoJCQl9CgkJfQoJfQoKCS8vIEluaXRpYWxpemUgbGlu a3MuCglpZiAoJ2FTd2FwTGlua3MnIGluIHRoaXMub3B0KQoJewoJCWZvciAodmFy IGkgPSAwLCBuID0gdGhpcy5vcHQuYVN3YXBMaW5rcy5sZW5ndGg7IGkgPCBuOyBp KyspCgkJewoJCQl2YXIgb0xpbmsgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0 aGlzLm9wdC5hU3dhcExpbmtzW2ldLnNJZCk7CgkJCWlmICh0eXBlb2Yob0xpbmsp ID09ICdvYmplY3QnICYmIG9MaW5rICE9IG51bGwpCgkJCXsKCQkJCS8vIERpc3Bs YXkgdGhlIGxpbmsgaW4gY2FzZSBpdCB3YXMgaGlkZGVuLgoJCQkJaWYgKG9MaW5r LnN0eWxlLmRpc3BsYXkgPT0gJ25vbmUnKQoJCQkJCW9MaW5rLnN0eWxlLmRpc3Bs YXkgPSAnJzsKCgkJCQlvTGluay5pbnN0YW5jZVJlZiA9IHRoaXM7CgkJCQlvTGlu ay5vbmNsaWNrID0gZnVuY3Rpb24gKCkgewoJCQkJCXRoaXMuaW5zdGFuY2VSZWYu dG9nZ2xlKCk7CgkJCQkJdGhpcy5ibHVyKCk7CgkJCQkJcmV0dXJuIGZhbHNlOwoJ CQkJfQoJCQl9CgkJfQoJfQp9CgovLyBDb2xsYXBzZSBvciBleHBhbmQgdGhlIHNl Y3Rpb24uCnNtY19Ub2dnbGUucHJvdG90eXBlLmNoYW5nZVN0YXRlID0gZnVuY3Rp b24oYkNvbGxhcHNlLCBiSW5pdCkKewoJLy8gRGVmYXVsdCBiSW5pdCB0byBmYWxz ZS4KCWJJbml0ID0gdHlwZW9mKGJJbml0KSA9PSAndW5kZWZpbmVkJyA/IGZhbHNl IDogdHJ1ZTsKCgkvLyBIYW5kbGUgY3VzdG9tIGZ1bmN0aW9uIGhvb2sgYmVmb3Jl IGNvbGxhcHNlLgoJaWYgKCFiSW5pdCAmJiBiQ29sbGFwc2UgJiYgJ2Z1bmNPbkJl Zm9yZUNvbGxhcHNlJyBpbiB0aGlzLm9wdCkKCXsKCQl0aGlzLnRtcE1ldGhvZCA9 IHRoaXMub3B0LmZ1bmNPbkJlZm9yZUNvbGxhcHNlOwoJCXRoaXMudG1wTWV0aG9k KCk7CgkJZGVsZXRlIHRoaXMudG1wTWV0aG9kOwoJfQoKCS8vIEhhbmRsZSBjdXN0 b20gZnVuY3Rpb24gaG9vayBiZWZvcmUgZXhwYW5kLgoJZWxzZSBpZiAoIWJJbml0 ICYmICFiQ29sbGFwc2UgJiYgJ2Z1bmNPbkJlZm9yZUV4cGFuZCcgaW4gdGhpcy5v cHQpCgl7CgkJdGhpcy50bXBNZXRob2QgPSB0aGlzLm9wdC5mdW5jT25CZWZvcmVF eHBhbmQ7CgkJdGhpcy50bXBNZXRob2QoKTsKCQlkZWxldGUgdGhpcy50bXBNZXRo b2Q7Cgl9CgoJLy8gTG9vcCB0aHJvdWdoIGFsbCB0aGUgaW1hZ2VzIHRoYXQgbmVl ZCB0byBiZSB0b2dnbGVkLgoJaWYgKCdhU3dhcEltYWdlcycgaW4gdGhpcy5vcHQp Cgl7CgkJZm9yICh2YXIgaSA9IDAsIG4gPSB0aGlzLm9wdC5hU3dhcEltYWdlcy5s ZW5ndGg7IGkgPCBuOyBpKyspCgkJewoJCQl2YXIgb0ltYWdlID0gZG9jdW1lbnQu Z2V0RWxlbWVudEJ5SWQodGhpcy5vcHQuYVN3YXBJbWFnZXNbaV0uc0lkKTsKCQkJ aWYgKHR5cGVvZihvSW1hZ2UpID09ICdvYmplY3QnICYmIG9JbWFnZSAhPSBudWxs KQoJCQl7CgkJCQkvLyBPbmx5IChyZSlsb2FkIHRoZSBpbWFnZSBpZiBpdCdzIGNo YW5nZWQuCgkJCQl2YXIgc1RhcmdldFNvdXJjZSA9IGJDb2xsYXBzZSA/IHRoaXMu b3B0LmFTd2FwSW1hZ2VzW2ldLnNyY0NvbGxhcHNlZCA6IHRoaXMub3B0LmFTd2Fw SW1hZ2VzW2ldLnNyY0V4cGFuZGVkOwoJCQkJaWYgKG9JbWFnZS5zcmMgIT0gc1Rh cmdldFNvdXJjZSkKCQkJCQlvSW1hZ2Uuc3JjID0gc1RhcmdldFNvdXJjZTsKCgkJ CQlvSW1hZ2UuYWx0ID0gb0ltYWdlLnRpdGxlID0gYkNvbGxhcHNlID8gdGhpcy5v cHQuYVN3YXBJbWFnZXNbaV0uYWx0Q29sbGFwc2VkIDogdGhpcy5vcHQuYVN3YXBJ bWFnZXNbaV0uYWx0RXhwYW5kZWQ7CgkJCX0KCQl9Cgl9CgoJLy8gTG9vcCB0aHJv dWdoIGFsbCB0aGUgbGlua3MgdGhhdCBuZWVkIHRvIGJlIHRvZ2dsZWQuCglpZiAo J2FTd2FwTGlua3MnIGluIHRoaXMub3B0KQoJewoJCWZvciAodmFyIGkgPSAwLCBu ID0gdGhpcy5vcHQuYVN3YXBMaW5rcy5sZW5ndGg7IGkgPCBuOyBpKyspCgkJewoJ CQl2YXIgb0xpbmsgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0aGlzLm9wdC5h U3dhcExpbmtzW2ldLnNJZCk7CgkJCWlmICh0eXBlb2Yob0xpbmspID09ICdvYmpl Y3QnICYmIG9MaW5rICE9IG51bGwpCgkJCQlzZXRJbm5lckhUTUwob0xpbmssIGJD b2xsYXBzZSA/IHRoaXMub3B0LmFTd2FwTGlua3NbaV0ubXNnQ29sbGFwc2VkIDog dGhpcy5vcHQuYVN3YXBMaW5rc1tpXS5tc2dFeHBhbmRlZCk7CgkJfQoJfQoKCS8v IE5vdyBnbyB0aHJvdWdoIGFsbCB0aGUgc2VjdGlvbnMgdG8gYmUgY29sbGFwc2Vk LgoJZm9yICh2YXIgaSA9IDAsIG4gPSB0aGlzLm9wdC5hU3dhcHBhYmxlQ29udGFp bmVycy5sZW5ndGg7IGkgPCBuOyBpKyspCgl7CgkJaWYgKHRoaXMub3B0LmFTd2Fw cGFibGVDb250YWluZXJzW2ldID09IG51bGwpCgkJCWNvbnRpbnVlOwoKCQl2YXIg b0NvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRoaXMub3B0LmFT d2FwcGFibGVDb250YWluZXJzW2ldKTsKCQlpZiAodHlwZW9mKG9Db250YWluZXIp ID09ICdvYmplY3QnICYmIG9Db250YWluZXIgIT0gbnVsbCkKCQkJb0NvbnRhaW5l ci5zdHlsZS5kaXNwbGF5ID0gYkNvbGxhcHNlID8gJ25vbmUnIDogJyc7Cgl9CgoJ Ly8gVXBkYXRlIHRoZSBuZXcgc3RhdGUuCgl0aGlzLmJDb2xsYXBzZWQgPSBiQ29s bGFwc2U7CgoJLy8gVXBkYXRlIHRoZSBjb29raWUsIGlmIGRlc2lyZWQuCglpZiAo J29Db29raWVPcHRpb25zJyBpbiB0aGlzLm9wdCAmJiB0aGlzLm9wdC5vQ29va2ll T3B0aW9ucy5iVXNlQ29va2llKQoJCXRoaXMub0Nvb2tpZS5zZXQodGhpcy5vcHQu b0Nvb2tpZU9wdGlvbnMuc0Nvb2tpZU5hbWUsIHRoaXMuYkNvbGxhcHNlZCA/ICcx JyA6ICcwJyk7CgoJaWYgKCdvVGhlbWVPcHRpb25zJyBpbiB0aGlzLm9wdCAmJiB0 aGlzLm9wdC5vVGhlbWVPcHRpb25zLmJVc2VUaGVtZVNldHRpbmdzKQoJCXNtZl9z ZXRUaGVtZU9wdGlvbih0aGlzLm9wdC5vVGhlbWVPcHRpb25zLnNPcHRpb25OYW1l LCB0aGlzLmJDb2xsYXBzZWQgPyAnMScgOiAnMCcsICdzVGhlbWVJZCcgaW4gdGhp cy5vcHQub1RoZW1lT3B0aW9ucyA/IHRoaXMub3B0Lm9UaGVtZU9wdGlvbnMuc1Ro ZW1lSWQgOiBudWxsLCB0aGlzLm9wdC5vVGhlbWVPcHRpb25zLnNTZXNzaW9uSWQs IHRoaXMub3B0Lm9UaGVtZU9wdGlvbnMuc1Nlc3Npb25WYXIsICdzQWRkaXRpb25h bFZhcnMnIGluIHRoaXMub3B0Lm9UaGVtZU9wdGlvbnMgPyB0aGlzLm9wdC5vVGhl bWVPcHRpb25zLnNBZGRpdGlvbmFsVmFycyA6IG51bGwpOwp9CgpzbWNfVG9nZ2xl LnByb3RvdHlwZS50b2dnbGUgPSBmdW5jdGlvbigpCnsKCS8vIENoYW5nZSB0aGUg c3RhdGUgYnkgcmV2ZXJzaW5nIHRoZSBjdXJyZW50IHN0YXRlLgoJdGhpcy5jaGFu Z2VTdGF0ZSghdGhpcy5iQ29sbGFwc2VkKTsKfQoKCmZ1bmN0aW9uIGFqYXhfaW5k aWNhdG9yKHR1cm5fb24pCnsKCWlmIChhamF4X2luZGljYXRvcl9lbGUgPT0gbnVs bCkKCXsKCQlhamF4X2luZGljYXRvcl9lbGUgPSBkb2N1bWVudC5nZXRFbGVtZW50 QnlJZCgnYWpheF9pbl9wcm9ncmVzcycpOwoKCQlpZiAoYWpheF9pbmRpY2F0b3Jf ZWxlID09IG51bGwgJiYgdHlwZW9mKGFqYXhfbm90aWZpY2F0aW9uX3RleHQpICE9 IG51bGwpCgkJewoJCQljcmVhdGVfYWpheF9pbmRpY2F0b3JfZWxlKCk7CgkJfQoJ fQoKCWlmIChhamF4X2luZGljYXRvcl9lbGUgIT0gbnVsbCkKCXsKCQlpZiAobmF2 aWdhdG9yLmFwcE5hbWUgPT0gJ01pY3Jvc29mdCBJbnRlcm5ldCBFeHBsb3Jlcicg JiYgIWlzX2llN3VwKQoJCXsKCQkJYWpheF9pbmRpY2F0b3JfZWxlLnN0eWxlLnBv c2l0aW9uID0gJ2Fic29sdXRlJzsKCQkJYWpheF9pbmRpY2F0b3JfZWxlLnN0eWxl LnRvcCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3A7CgkJfQoK CQlhamF4X2luZGljYXRvcl9lbGUuc3R5bGUuZGlzcGxheSA9IHR1cm5fb24gPyAn YmxvY2snIDogJ25vbmUnOwoJfQp9CgpmdW5jdGlvbiBjcmVhdGVfYWpheF9pbmRp Y2F0b3JfZWxlKCkKewoJLy8gQ3JlYXRlIHRoZSBkaXYgZm9yIHRoZSBpbmRpY2F0 b3IuCglhamF4X2luZGljYXRvcl9lbGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50 KCdkaXYnKTsKCgkvLyBTZXQgdGhlIGlkIHNvIGl0J2xsIGxvYWQgdGhlIHN0eWxl IHByb3Blcmx5LgoJYWpheF9pbmRpY2F0b3JfZWxlLmlkID0gJ2FqYXhfaW5fcHJv Z3Jlc3MnOwoKCS8vIEFkZCB0aGUgaW1hZ2UgaW4gYW5kIGxpbmsgdG8gdHVybiBp dCBvZmYuCgl2YXIgY2FuY2VsX2xpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50 KCdhJyk7CgljYW5jZWxfbGluay5ocmVmID0gJ2phdmFzY3JpcHQ6YWpheF9pbmRp Y2F0b3IoZmFsc2UpJzsKCXZhciBjYW5jZWxfaW1nID0gZG9jdW1lbnQuY3JlYXRl RWxlbWVudCgnaW1nJyk7CgljYW5jZWxfaW1nLnNyYyA9IHNtZl9pbWFnZXNfdXJs ICsgJy9pY29ucy9xdWlja19yZW1vdmUuZ2lmJzsKCglpZiAodHlwZW9mKGFqYXhf bm90aWZpY2F0aW9uX2NhbmNlbF90ZXh0KSAhPSAndW5kZWZpbmVkJykKCXsKCQlj YW5jZWxfaW1nLmFsdCA9IGFqYXhfbm90aWZpY2F0aW9uX2NhbmNlbF90ZXh0OwoJ CWNhbmNlbF9pbWcudGl0bGUgPSBhamF4X25vdGlmaWNhdGlvbl9jYW5jZWxfdGV4 dDsKCX0KCgkvLyBBZGQgdGhlIGNhbmNlbCBsaW5rIGFuZCBpbWFnZSB0byB0aGUg aW5kaWNhdG9yLgoJY2FuY2VsX2xpbmsuYXBwZW5kQ2hpbGQoY2FuY2VsX2ltZyk7 CglhamF4X2luZGljYXRvcl9lbGUuYXBwZW5kQ2hpbGQoY2FuY2VsX2xpbmspOwoK CS8vIFNldCB0aGUgdGV4dC4gIChOb3RlOiAgWW91IE1VU1QgYXBwZW5kIGhlcmUg YW5kIG5vdCBvdmVyd3JpdGUuKQoJYWpheF9pbmRpY2F0b3JfZWxlLmlubmVySFRN TCArPSBhamF4X25vdGlmaWNhdGlvbl90ZXh0OwoKCS8vIEZpbmFsbHkgYXR0YWNo IHRoZSBlbGVtZW50IHRvIHRoZSBib2R5LgoJZG9jdW1lbnQuYm9keS5hcHBlbmRD aGlsZChhamF4X2luZGljYXRvcl9lbGUpOwp9CgpmdW5jdGlvbiBjcmVhdGVFdmVu dExpc3RlbmVyKG9UYXJnZXQpCnsKCWlmICghKCdhZGRFdmVudExpc3RlbmVyJyBp biBvVGFyZ2V0KSkKCXsKCQlpZiAob1RhcmdldC5hdHRhY2hFdmVudCkKCQl7CgkJ CW9UYXJnZXQuYWRkRXZlbnRMaXN0ZW5lciA9IGZ1bmN0aW9uIChzRXZlbnQsIGZ1 bmNIYW5kbGVyLCBiQ2FwdHVyZSkgewoJCQkJb1RhcmdldC5hdHRhY2hFdmVudCgn b24nICsgc0V2ZW50LCBmdW5jSGFuZGxlcik7CgkJCX0KCQkJb1RhcmdldC5yZW1v dmVFdmVudExpc3RlbmVyID0gZnVuY3Rpb24gKHNFdmVudCwgZnVuY0hhbmRsZXIs IGJDYXB0dXJlKSB7CgkJCQlvVGFyZ2V0LmRldGFjaEV2ZW50KCdvbicgKyBzRXZl bnQsIGZ1bmNIYW5kbGVyKTsKCQkJfQoJCX0KCQllbHNlCgkJewoJCQlvVGFyZ2V0 LmFkZEV2ZW50TGlzdGVuZXIgPSBmdW5jdGlvbiAoc0V2ZW50LCBmdW5jSGFuZGxl ciwgYkNhcHR1cmUpIHsKCQkJCW9UYXJnZXRbJ29uJyArIHNFdmVudF0gPSBmdW5j SGFuZGxlcjsKCQkJfQoJCQlvVGFyZ2V0LnJlbW92ZUV2ZW50TGlzdGVuZXIgPSBm dW5jdGlvbiAoc0V2ZW50LCBmdW5jSGFuZGxlciwgYkNhcHR1cmUpIHsKCQkJCW9U YXJnZXRbJ29uJyArIHNFdmVudF0gPSBudWxsOwoJCQl9CgkJfQoJfQp9CgovLyBU aGlzIGZ1bmN0aW9uIHdpbGwgcmV0cmlldmUgdGhlIGNvbnRlbnRzIG5lZWRlZCBm b3IgdGhlIGp1bXAgdG8gYm94ZXMuCmZ1bmN0aW9uIGdyYWJKdW1wVG9Db250ZW50 KCkKewoJdmFyIG9YTUxEb2MgPSBnZXRYTUxEb2N1bWVudChzbWZfcHJlcGFyZVNj cmlwdFVybChzbWZfc2NyaXB0dXJsKSArICdhY3Rpb249eG1saHR0cDtzYT1qdW1w dG87eG1sJyk7Cgl2YXIgYUJvYXJkc0FuZENhdGVnb3JpZXMgPSBuZXcgQXJyYXko KTsKCglhamF4X2luZGljYXRvcih0cnVlKTsKCglpZiAob1hNTERvYy5yZXNwb25z ZVhNTCkKCXsKCQl2YXIgaXRlbXMgPSBvWE1MRG9jLnJlc3BvbnNlWE1MLmdldEVs ZW1lbnRzQnlUYWdOYW1lKCdzbWYnKVswXS5nZXRFbGVtZW50c0J5VGFnTmFtZSgn aXRlbScpOwoJCWZvciAodmFyIGkgPSAwLCBuID0gaXRlbXMubGVuZ3RoOyBpIDwg bjsgaSsrKQoJCXsKCQkJYUJvYXJkc0FuZENhdGVnb3JpZXNbYUJvYXJkc0FuZENh dGVnb3JpZXMubGVuZ3RoXSA9IHsKCQkJCWlkOiBwYXJzZUludChpdGVtc1tpXS5n ZXRBdHRyaWJ1dGUoJ2lkJykpLAoJCQkJaXNDYXRlZ29yeTogaXRlbXNbaV0uZ2V0 QXR0cmlidXRlKCd0eXBlJykgPT0gJ2NhdGVnb3J5JywKCQkJCW5hbWU6IGl0ZW1z W2ldLmZpcnN0Q2hpbGQubm9kZVZhbHVlLnJlbW92ZUVudGl0aWVzKCksCgkJCQlp c19jdXJyZW50OiBmYWxzZSwKCQkJCWNoaWxkTGV2ZWw6IHBhcnNlSW50KGl0ZW1z W2ldLmdldEF0dHJpYnV0ZSgnY2hpbGRsZXZlbCcpKQoJCQl9CgkJfQoJfQoKCWFq YXhfaW5kaWNhdG9yKGZhbHNlKTsKCglmb3IgKHZhciBpID0gMCwgbiA9IGFKdW1w VG8ubGVuZ3RoOyBpIDwgbjsgaSsrKQoJCWFKdW1wVG9baV0uZmlsbFNlbGVjdChh Qm9hcmRzQW5kQ2F0ZWdvcmllcyk7Cn0KCi8vIFRoaXMnbGwgY29udGFpbiBhbGwg SnVtcFRvIG9iamVjdHMgb24gdGhlIHBhZ2UuCnZhciBhSnVtcFRvID0gbmV3IEFy cmF5KCk7CgovLyAqKiogSnVtcFRvIGNsYXNzLgpmdW5jdGlvbiBKdW1wVG8ob0p1 bXBUb09wdGlvbnMpCnsKCXRoaXMub3B0ID0gb0p1bXBUb09wdGlvbnM7Cgl0aGlz LmRyb3Bkb3duTGlzdCA9IG51bGw7Cgl0aGlzLnNob3dTZWxlY3QoKTsKfQoKLy8g U2hvdyB0aGUgaW5pdGlhbCBzZWxlY3QgYm94IChvbmxvYWQpLiBNZXRob2Qgb2Yg dGhlIEp1bXBUbyBjbGFzcy4KSnVtcFRvLnByb3RvdHlwZS5zaG93U2VsZWN0ID0g ZnVuY3Rpb24gKCkKewoJdmFyIHNDaGlsZExldmVsUHJlZml4ID0gJyc7Cglmb3Ig KHZhciBpID0gdGhpcy5vcHQuaUN1ckJvYXJkQ2hpbGRMZXZlbDsgaSA+IDA7IGkt LSkKCQlzQ2hpbGRMZXZlbFByZWZpeCArPSB0aGlzLm9wdC5zQm9hcmRDaGlsZExl dmVsSW5kaWNhdG9yOwoJc2V0SW5uZXJIVE1MKGRvY3VtZW50LmdldEVsZW1lbnRC eUlkKHRoaXMub3B0LnNDb250YWluZXJJZCksIHRoaXMub3B0LnNKdW1wVG9UZW1w bGF0ZS5yZXBsYWNlKC8lc2VsZWN0X2lkJS8sIHRoaXMub3B0LnNDb250YWluZXJJ ZCArICdfc2VsZWN0JykucmVwbGFjZSgvJWRyb3Bkb3duX2xpc3QlLywgJzxzZWxl Y3QgbmFtZT0iJyArIHRoaXMub3B0LnNDb250YWluZXJJZCArICdfc2VsZWN0IiBp ZD0iJyArIHRoaXMub3B0LnNDb250YWluZXJJZCArICdfc2VsZWN0IiAnICsgKCdp bXBsZW1lbnRhdGlvbicgaW4gZG9jdW1lbnQgPyAnJyA6ICdvbm1vdXNlb3Zlcj0i Z3JhYkp1bXBUb0NvbnRlbnQoKTsiICcpICsgKCdvbmJlZm9yZWFjdGl2YXRlJyBp biBkb2N1bWVudCA/ICdvbmJlZm9yZWFjdGl2YXRlJyA6ICdvbmZvY3VzJykgKyAn PSJncmFiSnVtcFRvQ29udGVudCgpOyI+PG9wdGlvbiB2YWx1ZT0iP2JvYXJkPScg KyB0aGlzLm9wdC5pQ3VyQm9hcmRJZCArICcuMCI+JyArIHNDaGlsZExldmVsUHJl Zml4ICsgdGhpcy5vcHQuc0JvYXJkUHJlZml4ICsgdGhpcy5vcHQuc0N1ckJvYXJk TmFtZS5yZW1vdmVFbnRpdGllcygpICsgJzwvb3B0aW9uPjwvc2VsZWN0PiZuYnNw OzxpbnB1dCB0eXBlPSJidXR0b24iIHZhbHVlPSInICsgdGhpcy5vcHQuc0dvQnV0 dG9uTGFiZWwgKyAnIiBvbmNsaWNrPSJ3aW5kb3cubG9jYXRpb24uaHJlZiA9IFwn JyArIHNtZl9wcmVwYXJlU2NyaXB0VXJsKHNtZl9zY3JpcHR1cmwpICsgJ2JvYXJk PScgKyB0aGlzLm9wdC5pQ3VyQm9hcmRJZCArICcuMFwnOyIgLz4nKSk7Cgl0aGlz LmRyb3Bkb3duTGlzdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRoaXMub3B0 LnNDb250YWluZXJJZCArICdfc2VsZWN0Jyk7Cn0KCi8vIEZpbGwgdGhlIGp1bXAg dG8gYm94IHdpdGggZW50cmllcy4gTWV0aG9kIG9mIHRoZSBKdW1wVG8gY2xhc3Mu Ckp1bXBUby5wcm90b3R5cGUuZmlsbFNlbGVjdCA9IGZ1bmN0aW9uIChhQm9hcmRz QW5kQ2F0ZWdvcmllcykKewoJdmFyIGJJRTV4ID0gISgnaW1wbGVtZW50YXRpb24n IGluIGRvY3VtZW50KTsKCXZhciBpSW5kZXhQb2ludGVyID0gMDsKCgkvLyBDcmVh dGUgYW4gb3B0aW9uIHRoYXQnbGwgYmUgYWJvdmUgYW5kIGJlbG93IHRoZSBjYXRl Z29yeS4KCXZhciBvRGFzaE9wdGlvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo J29wdGlvbicpOwoJb0Rhc2hPcHRpb24uYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3Jl YXRlVGV4dE5vZGUodGhpcy5vcHQuc0NhdFNlcGFyYXRvcikpOwoJb0Rhc2hPcHRp b24uZGlzYWJsZWQgPSAnZGlzYWJsZWQnOwoJb0Rhc2hPcHRpb24udmFsdWUgPSAn JzsKCgkvLyBSZXNldCB0aGUgZXZlbnRzIGFuZCBjbGVhciB0aGUgbGlzdCAoSUU1 Lnggb25seSkuCglpZiAoYklFNXgpCgl7CgkJdGhpcy5kcm9wZG93bkxpc3Qub25t b3VzZW92ZXIgPSBudWxsOwoJCXRoaXMuZHJvcGRvd25MaXN0LnJlbW92ZSgwKTsK CX0KCWlmICgnb25iZWZvcmVhY3RpdmF0ZScgaW4gZG9jdW1lbnQpCgkJdGhpcy5k cm9wZG93bkxpc3Qub25iZWZvcmVhY3RpdmF0ZSA9IG51bGw7CgllbHNlCgkJdGhp cy5kcm9wZG93bkxpc3Qub25mb2N1cyA9IG51bGw7CgoJLy8gQ3JlYXRlIGEgZG9j dW1lbnQgZnJhZ21lbnQgdGhhdCdsbCBhbGxvd2luZyBpbnNlcnRpbmcgYmlnIHBh cnRzIGF0IG9uY2UuCgl2YXIgb0xpc3RGcmFnbWVudCA9IGJJRTV4ID8gdGhpcy5k cm9wZG93bkxpc3QgOiBkb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7 CgoJLy8gTG9vcCB0aHJvdWdoIGFsbCBpdGVtcyB0byBiZSBhZGRlZC4KCWZvciAo dmFyIGkgPSAwLCBuID0gYUJvYXJkc0FuZENhdGVnb3JpZXMubGVuZ3RoOyBpIDwg bjsgaSsrKQoJewoJCXZhciBqLCBzQ2hpbGRMZXZlbFByZWZpeCwgb09wdGlvbjsK CgkJLy8gSWYgd2UndmUgcmVhY2hlZCB0aGUgY3VycmVudGx5IHNlbGVjdGVkIGJv YXJkIGFkZCBhbGwgaXRlbXMgc28gZmFyLgoJCWlmICghYUJvYXJkc0FuZENhdGVn b3JpZXNbaV0uaXNDYXRlZ29yeSAmJiBhQm9hcmRzQW5kQ2F0ZWdvcmllc1tpXS5p ZCA9PSB0aGlzLm9wdC5pQ3VyQm9hcmRJZCkKCQl7CgkJCWlmIChiSUU1eCkKCQkJ CWlJbmRleFBvaW50ZXIgPSB0aGlzLmRyb3Bkb3duTGlzdC5vcHRpb25zLmxlbmd0 aDsKCQkJZWxzZQoJCQl7CgkJCQl0aGlzLmRyb3Bkb3duTGlzdC5pbnNlcnRCZWZv cmUob0xpc3RGcmFnbWVudCwgdGhpcy5kcm9wZG93bkxpc3Qub3B0aW9uc1swXSk7 CgkJCQlvTGlzdEZyYWdtZW50ID0gZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFn bWVudCgpOwoJCQkJY29udGludWU7CgkJCX0KCQl9CgoJCWlmIChhQm9hcmRzQW5k Q2F0ZWdvcmllc1tpXS5pc0NhdGVnb3J5KQoJCQlvTGlzdEZyYWdtZW50LmFwcGVu ZENoaWxkKG9EYXNoT3B0aW9uLmNsb25lTm9kZSh0cnVlKSk7CgkJZWxzZQoJCQlm b3IgKGogPSBhQm9hcmRzQW5kQ2F0ZWdvcmllc1tpXS5jaGlsZExldmVsLCBzQ2hp bGRMZXZlbFByZWZpeCA9ICcnOyBqID4gMDsgai0tKQoJCQkJc0NoaWxkTGV2ZWxQ cmVmaXggKz0gdGhpcy5vcHQuc0JvYXJkQ2hpbGRMZXZlbEluZGljYXRvcjsKCgkJ b09wdGlvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ29wdGlvbicpOwoJCW9P cHRpb24uYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoKGFCb2Fy ZHNBbmRDYXRlZ29yaWVzW2ldLmlzQ2F0ZWdvcnkgPyB0aGlzLm9wdC5zQ2F0UHJl Zml4IDogc0NoaWxkTGV2ZWxQcmVmaXggKyB0aGlzLm9wdC5zQm9hcmRQcmVmaXgp ICsgYUJvYXJkc0FuZENhdGVnb3JpZXNbaV0ubmFtZSkpOwoJCW9PcHRpb24udmFs dWUgPSBhQm9hcmRzQW5kQ2F0ZWdvcmllc1tpXS5pc0NhdGVnb3J5ID8gJyNjJyAr IGFCb2FyZHNBbmRDYXRlZ29yaWVzW2ldLmlkIDogJz9ib2FyZD0nICsgYUJvYXJk c0FuZENhdGVnb3JpZXNbaV0uaWQgKyAnLjAnOwoJCW9MaXN0RnJhZ21lbnQuYXBw ZW5kQ2hpbGQob09wdGlvbik7CgoJCWlmIChhQm9hcmRzQW5kQ2F0ZWdvcmllc1tp XS5pc0NhdGVnb3J5KQoJCQlvTGlzdEZyYWdtZW50LmFwcGVuZENoaWxkKG9EYXNo T3B0aW9uLmNsb25lTm9kZSh0cnVlKSk7Cgl9CgoJLy8gQWRkIHRoZSByZW1haW5p bmcgaXRlbXMgYWZ0ZXIgdGhlIGN1cnJlbnRseSBzZWxlY3RlZCBpdGVtLgoJdGhp cy5kcm9wZG93bkxpc3QuYXBwZW5kQ2hpbGQob0xpc3RGcmFnbWVudCk7CgoJaWYg KGJJRTV4KQoJCXRoaXMuZHJvcGRvd25MaXN0Lm9wdGlvbnNbaUluZGV4UG9pbnRl cl0uc2VsZWN0ZWQgPSB0cnVlOwoKCS8vIEludGVybmV0IEV4cGxvcmVyIG5lZWRz IHRoaXMgdG8ga2VlcCB0aGUgYm94IGRyb3BwZWQgZG93bi4KCXRoaXMuZHJvcGRv d25MaXN0LnN0eWxlLndpZHRoID0gJ2F1dG8nOwoJdGhpcy5kcm9wZG93bkxpc3Qu Zm9jdXMoKTsKCgkvLyBBZGQgYW4gb25jaGFuZ2UgYWN0aW9uCgl0aGlzLmRyb3Bk b3duTGlzdC5vbmNoYW5nZSA9IGZ1bmN0aW9uKCkgewoJCWlmICh0aGlzLnNlbGVj dGVkSW5kZXggPiAwICYmIHRoaXMub3B0aW9uc1t0aGlzLnNlbGVjdGVkSW5kZXhd LnZhbHVlKQoJCQl3aW5kb3cubG9jYXRpb24uaHJlZiA9IHNtZl9zY3JpcHR1cmwg KyB0aGlzLm9wdGlvbnNbdGhpcy5zZWxlY3RlZEluZGV4XS52YWx1ZS5zdWJzdHIo c21mX3NjcmlwdHVybC5pbmRleE9mKCc/JykgPT0gLTEgfHwgdGhpcy5vcHRpb25z W3RoaXMuc2VsZWN0ZWRJbmRleF0udmFsdWUuc3Vic3RyKDAsIDEpICE9ICc/JyA/ IDAgOiAxKTsKCX0KfQoKLy8gQSBnbG9iYWwgYXJyYXkgY29udGFpbmluZyBhbGwg SWNvbkxpc3Qgb2JqZWN0cy4KdmFyIGFJY29uTGlzdHMgPSBuZXcgQXJyYXkoKTsK Ci8vICoqKiBJY29uTGlzdCBvYmplY3QuCmZ1bmN0aW9uIEljb25MaXN0KG9PcHRp b25zKQp7CglpZiAoIXdpbmRvdy5YTUxIdHRwUmVxdWVzdCkKCQlyZXR1cm47CgoJ dGhpcy5vcHQgPSBvT3B0aW9uczsKCXRoaXMuYkxpc3RMb2FkZWQgPSBmYWxzZTsK CXRoaXMub0NvbnRhaW5lckRpdiA9IG51bGw7Cgl0aGlzLmZ1bmNNb3VzZWRvd25I YW5kbGVyID0gbnVsbDsKCXRoaXMuZnVuY1BhcmVudCA9IHRoaXM7Cgl0aGlzLmlD dXJNZXNzYWdlSWQgPSAwOwoJdGhpcy5pQ3VyVGltZW91dCA9IDA7CgoJLy8gQWRk IGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IHdpdGggb2xkIHRoZW1lcy4KCWlmICgh KCdzU2Vzc2lvblZhcicgaW4gdGhpcy5vcHQpKQoJCXRoaXMub3B0LnNTZXNzaW9u VmFyID0gJ3Nlc2MnOwoKCXRoaXMuaW5pdEljb25zKCk7Cn0KCi8vIFJlcGxhY2Ug YWxsIG1lc3NhZ2UgaWNvbnMgYnkgaWNvbnMgd2l0aCBob3ZlcmFibGUgYW5kIGNs aWNrYWJsZSBkaXYncy4KSWNvbkxpc3QucHJvdG90eXBlLmluaXRJY29ucyA9IGZ1 bmN0aW9uICgpCnsKCWZvciAodmFyIGkgPSBkb2N1bWVudC5pbWFnZXMubGVuZ3Ro IC0gMSwgaVByZWZpeExlbmd0aCA9IHRoaXMub3B0LnNJY29uSWRQcmVmaXgubGVu Z3RoOyBpID49IDA7IGktLSkKCQlpZiAoZG9jdW1lbnQuaW1hZ2VzW2ldLmlkLnN1 YnN0cigwLCBpUHJlZml4TGVuZ3RoKSA9PSB0aGlzLm9wdC5zSWNvbklkUHJlZml4 KQoJCQlzZXRPdXRlckhUTUwoZG9jdW1lbnQuaW1hZ2VzW2ldLCAnPGRpdiB0aXRs ZT0iJyArIHRoaXMub3B0LnNMYWJlbEljb25MaXN0ICsgJyIgb25jbGljaz0iJyAr IHRoaXMub3B0LnNCYWNrUmVmZXJlbmNlICsgJy5vcGVuUG9wdXAodGhpcywgJyAr IGRvY3VtZW50LmltYWdlc1tpXS5pZC5zdWJzdHIoaVByZWZpeExlbmd0aCkgKyAn KSIgb25tb3VzZW92ZXI9IicgKyB0aGlzLm9wdC5zQmFja1JlZmVyZW5jZSArICcu b25Cb3hIb3Zlcih0aGlzLCB0cnVlKSIgb25tb3VzZW91dD0iJyArIHRoaXMub3B0 LnNCYWNrUmVmZXJlbmNlICsgJy5vbkJveEhvdmVyKHRoaXMsIGZhbHNlKSIgc3R5 bGU9ImJhY2tncm91bmQ6ICcgKyB0aGlzLm9wdC5zQm94QmFja2dyb3VuZCArICc7 IGN1cnNvcjogJyArIChpc19pZSAmJiAhaXNfaWU2dXAgPyAnaGFuZCcgOiAncG9p bnRlcicpICsgJzsgcGFkZGluZzogM3B4OyB0ZXh0LWFsaWduOiBjZW50ZXI7Ij48 aW1nIHNyYz0iJyArIGRvY3VtZW50LmltYWdlc1tpXS5zcmMgKyAnIiBhbHQ9Iicg KyBkb2N1bWVudC5pbWFnZXNbaV0uYWx0ICsgJyIgaWQ9IicgKyBkb2N1bWVudC5p bWFnZXNbaV0uaWQgKyAnIiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6ICcg KyAoaXNfaWUgPyAnM3B4JyA6ICczcHggMHB4IDNweCAwcHgnKSArICc7IiAvPjwv ZGl2PicpOwp9CgovLyBFdmVudCBmb3IgdGhlIG1vdXNlIGhvdmVyaW5nIG92ZXIg dGhlIG9yaWdpbmFsIGljb24uCkljb25MaXN0LnByb3RvdHlwZS5vbkJveEhvdmVy ID0gZnVuY3Rpb24gKG9EaXYsIGJNb3VzZU92ZXIpCnsKCW9EaXYuc3R5bGUuYm9y ZGVyID0gYk1vdXNlT3ZlciA/IHRoaXMub3B0LmlCb3hCb3JkZXJXaWR0aEhvdmVy ICsgJ3B4IHNvbGlkICcgKyB0aGlzLm9wdC5zQm94Qm9yZGVyQ29sb3JIb3ZlciA6 ICcnOwoJb0Rpdi5zdHlsZS5iYWNrZ3JvdW5kID0gYk1vdXNlT3ZlciA/IHRoaXMu b3B0LnNCb3hCYWNrZ3JvdW5kSG92ZXIgOiB0aGlzLm9wdC5zQm94QmFja2dyb3Vu ZDsKCW9EaXYuc3R5bGUucGFkZGluZyA9IGJNb3VzZU92ZXIgPyAoMyAtIHRoaXMu b3B0LmlCb3hCb3JkZXJXaWR0aEhvdmVyKSArICdweCcgOiAnM3B4Jwp9CgovLyBT aG93IHRoZSBsaXN0IG9mIGljb25zIGFmdGVyIHRoZSB1c2VyIGNsaWNrZWQgdGhl IG9yaWdpbmFsIGljb24uCkljb25MaXN0LnByb3RvdHlwZS5vcGVuUG9wdXAgPSBm dW5jdGlvbiAob0RpdiwgaU1lc3NhZ2VJZCkKewoJdGhpcy5pQ3VyTWVzc2FnZUlk ID0gaU1lc3NhZ2VJZDsKCglpZiAoIXRoaXMuYkxpc3RMb2FkZWQgJiYgdGhpcy5v Q29udGFpbmVyRGl2ID09IG51bGwpCgl7CgkJLy8gQ3JlYXRlIGEgY29udGFpbmVy IGRpdi4KCQl0aGlzLm9Db250YWluZXJEaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVt ZW50KCdkaXYnKTsKCQl0aGlzLm9Db250YWluZXJEaXYuaWQgPSAnaWNvbkxpc3Qn OwoJCXRoaXMub0NvbnRhaW5lckRpdi5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwoJ CXRoaXMub0NvbnRhaW5lckRpdi5zdHlsZS5jdXJzb3IgPSBpc19pZSAmJiAhaXNf aWU2dXAgPyAnaGFuZCcgOiAncG9pbnRlcic7CgkJdGhpcy5vQ29udGFpbmVyRGl2 LnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJzsKCQl0aGlzLm9Db250YWluZXJE aXYuc3R5bGUud2lkdGggPSBvRGl2Lm9mZnNldFdpZHRoICsgJ3B4JzsKCQl0aGlz Lm9Db250YWluZXJEaXYuc3R5bGUuYmFja2dyb3VuZCA9IHRoaXMub3B0LnNDb250 YWluZXJCYWNrZ3JvdW5kOwoJCXRoaXMub0NvbnRhaW5lckRpdi5zdHlsZS5ib3Jk ZXIgPSB0aGlzLm9wdC5zQ29udGFpbmVyQm9yZGVyOwoJCXRoaXMub0NvbnRhaW5l ckRpdi5zdHlsZS5wYWRkaW5nID0gJzFweCc7CgkJdGhpcy5vQ29udGFpbmVyRGl2 LnN0eWxlLnRleHRBbGlnbiA9ICdjZW50ZXInOwoJCWRvY3VtZW50LmJvZHkuYXBw ZW5kQ2hpbGQodGhpcy5vQ29udGFpbmVyRGl2KTsKCgkJLy8gU3RhcnQgdG8gZmV0 Y2ggaXRzIGNvbnRlbnRzLgoJCWFqYXhfaW5kaWNhdG9yKHRydWUpOwoJCXRoaXMu dG1wTWV0aG9kID0gZ2V0WE1MRG9jdW1lbnQ7CgkJdGhpcy50bXBNZXRob2Qoc21m X3ByZXBhcmVTY3JpcHRVcmwodGhpcy5vcHQuc1NjcmlwdFVybCkgKyAnYWN0aW9u PXhtbGh0dHA7c2E9bWVzc2FnZWljb25zO2JvYXJkPScgKyB0aGlzLm9wdC5pQm9h cmRJZCArICc7eG1sJywgdGhpcy5vbkljb25zUmVjZWl2ZWQpOwoJCWRlbGV0ZSB0 aGlzLnRtcE1ldGhvZDsKCgkJY3JlYXRlRXZlbnRMaXN0ZW5lcihkb2N1bWVudC5i b2R5KTsKCX0KCgkvLyBTZXQgdGhlIHBvc2l0aW9uIG9mIHRoZSBjb250YWluZXIu Cgl2YXIgYVBvcyA9IHNtZl9pdGVtUG9zKG9EaXYpOwoJaWYgKGlzX2llNTApCgkJ YVBvc1sxXSArPSA0OwoKCXRoaXMub0NvbnRhaW5lckRpdi5zdHlsZS50b3AgPSAo YVBvc1sxXSArIG9EaXYub2Zmc2V0SGVpZ2h0KSArICdweCc7Cgl0aGlzLm9Db250 YWluZXJEaXYuc3R5bGUubGVmdCA9IChhUG9zWzBdIC0gMSkgKyAncHgnOwoJdGhp cy5vQ2xpY2tlZEljb24gPSBvRGl2OwoKCWlmICh0aGlzLmJMaXN0TG9hZGVkKQoJ CXRoaXMub0NvbnRhaW5lckRpdi5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJzsKCglk b2N1bWVudC5ib2R5LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIHRoaXMu b25XaW5kb3dNb3VzZURvd24sIGZhbHNlKTsKfQoKLy8gU2V0dXAgdGhlIGxpc3Qg b2YgaWNvbnMgb25jZSBpdCBpcyByZWNlaXZlZCB0aHJvdWdoIHhtbEhUVFAuCklj b25MaXN0LnByb3RvdHlwZS5vbkljb25zUmVjZWl2ZWQgPSBmdW5jdGlvbiAob1hN TERvYykKewoJdmFyIGljb25zID0gb1hNTERvYy5nZXRFbGVtZW50c0J5VGFnTmFt ZSgnc21mJylbMF0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2ljb24nKTsKCXZhciBz SXRlbXMgPSAnJzsKCglmb3IgKHZhciBpID0gMCwgbiA9IGljb25zLmxlbmd0aDsg aSA8IG47IGkrKykKCQlzSXRlbXMgKz0gJzxkaXYgb25tb3VzZW92ZXI9IicgKyB0 aGlzLm9wdC5zQmFja1JlZmVyZW5jZSArICcub25JdGVtSG92ZXIodGhpcywgdHJ1 ZSkiIG9ubW91c2VvdXQ9IicgKyB0aGlzLm9wdC5zQmFja1JlZmVyZW5jZSArICcu b25JdGVtSG92ZXIodGhpcywgZmFsc2UpOyIgb25tb3VzZWRvd249IicgKyB0aGlz Lm9wdC5zQmFja1JlZmVyZW5jZSArICcub25JdGVtTW91c2VEb3duKHRoaXMsIFwn JyArIGljb25zW2ldLmdldEF0dHJpYnV0ZSgndmFsdWUnKSArICdcJyk7IiBzdHls ZT0icGFkZGluZzogM3B4IDBweCAzcHggMHB4OyBtYXJnaW4tbGVmdDogYXV0bzsg bWFyZ2luLXJpZ2h0OiBhdXRvOyBib3JkZXI6ICcgKyB0aGlzLm9wdC5zSXRlbUJv cmRlciArICc7IGJhY2tncm91bmQ6ICcgKyB0aGlzLm9wdC5zSXRlbUJhY2tncm91 bmQgKyAnIj48aW1nIHNyYz0iJyArIGljb25zW2ldLmdldEF0dHJpYnV0ZSgndXJs JykgKyAnIiBhbHQ9IicgKyBpY29uc1tpXS5nZXRBdHRyaWJ1dGUoJ25hbWUnKSAr ICciIHRpdGxlPSInICsgaWNvbnNbaV0uZmlyc3RDaGlsZC5ub2RlVmFsdWUgKyAn IiAvPjwvZGl2Pic7CgoJc2V0SW5uZXJIVE1MKHRoaXMub0NvbnRhaW5lckRpdiwg c0l0ZW1zKTsKCXRoaXMub0NvbnRhaW5lckRpdi5zdHlsZS5kaXNwbGF5ID0gJ2Js b2NrJzsKCXRoaXMuYkxpc3RMb2FkZWQgPSB0cnVlOwoKCWlmIChpc19pZSkKCQl0 aGlzLm9Db250YWluZXJEaXYuc3R5bGUud2lkdGggPSB0aGlzLm9Db250YWluZXJE aXYuY2xpZW50V2lkdGggKyAncHgnOwoKCWFqYXhfaW5kaWNhdG9yKGZhbHNlKTsK fQoKLy8gRXZlbnQgaGFuZGxlciBmb3IgaG92ZXJpbmcgb3ZlciB0aGUgaWNvbnMu Ckljb25MaXN0LnByb3RvdHlwZS5vbkl0ZW1Ib3ZlciA9IGZ1bmN0aW9uIChvRGl2 LCBiTW91c2VPdmVyKQp7CglvRGl2LnN0eWxlLmJhY2tncm91bmQgPSBiTW91c2VP dmVyID8gdGhpcy5vcHQuc0l0ZW1CYWNrZ3JvdW5kSG92ZXIgOiB0aGlzLm9wdC5z SXRlbUJhY2tncm91bmQ7CglvRGl2LnN0eWxlLmJvcmRlciA9IGJNb3VzZU92ZXIg PyB0aGlzLm9wdC5zSXRlbUJvcmRlckhvdmVyIDogdGhpcy5vcHQuc0l0ZW1Cb3Jk ZXI7CglpZiAodGhpcy5pQ3VyVGltZW91dCAhPSAwKQoJCXdpbmRvdy5jbGVhclRp bWVvdXQodGhpcy5pQ3VyVGltZW91dCk7CglpZiAoYk1vdXNlT3ZlcikKCQl0aGlz Lm9uQm94SG92ZXIodGhpcy5vQ2xpY2tlZEljb24sIHRydWUpOwoJZWxzZQoJCXRo aXMuaUN1clRpbWVvdXQgPSB3aW5kb3cuc2V0VGltZW91dCh0aGlzLm9wdC5zQmFj a1JlZmVyZW5jZSArICcuY29sbGFwc2VMaXN0KCk7JywgNTAwKTsKfQoKLy8gRXZl bnQgaGFuZGxlciBmb3IgY2xpY2tpbmcgb24gb25lIG9mIHRoZSBpY29ucy4KSWNv bkxpc3QucHJvdG90eXBlLm9uSXRlbU1vdXNlRG93biA9IGZ1bmN0aW9uIChvRGl2 LCBzTmV3SWNvbikKewoJaWYgKHRoaXMuaUN1ck1lc3NhZ2VJZCAhPSAwKQoJewoJ CWFqYXhfaW5kaWNhdG9yKHRydWUpOwoJCXRoaXMudG1wTWV0aG9kID0gZ2V0WE1M RG9jdW1lbnQ7CgkJdmFyIG9YTUxEb2MgPSB0aGlzLnRtcE1ldGhvZChzbWZfcHJl cGFyZVNjcmlwdFVybCh0aGlzLm9wdC5zU2NyaXB0VXJsKSArICdhY3Rpb249anNt b2RpZnk7dG9waWM9JyArIHRoaXMub3B0LmlUb3BpY0lkICsgJzttc2c9JyArIHRo aXMuaUN1ck1lc3NhZ2VJZCArICc7JyArIHRoaXMub3B0LnNTZXNzaW9uVmFyICsg Jz0nICsgdGhpcy5vcHQuc1Nlc3Npb25JZCArICc7aWNvbj0nICsgc05ld0ljb24g KyAnO3htbCcpOwoJCWRlbGV0ZSB0aGlzLnRtcE1ldGhvZDsKCQlhamF4X2luZGlj YXRvcihmYWxzZSk7CgoJCXZhciBvTWVzc2FnZSA9IG9YTUxEb2MucmVzcG9uc2VY TUwuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3NtZicpWzBdLmdldEVsZW1lbnRzQnlU YWdOYW1lKCdtZXNzYWdlJylbMF07CgkJaWYgKG9NZXNzYWdlLmdldEVsZW1lbnRz QnlUYWdOYW1lKCdlcnJvcicpLmxlbmd0aCA9PSAwKQoJCXsKCQkJaWYgKHRoaXMu b3B0LmJTaG93TW9kaWZ5ICYmIG9NZXNzYWdlLmdldEVsZW1lbnRzQnlUYWdOYW1l KCdtb2RpZmllZCcpLmxlbmd0aCAhPSAwKQoJCQkJc2V0SW5uZXJIVE1MKGRvY3Vt ZW50LmdldEVsZW1lbnRCeUlkKCdtb2RpZmllZF8nICsgdGhpcy5pQ3VyTWVzc2Fn ZUlkKSwgb01lc3NhZ2UuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ21vZGlmaWVkJylb MF0uY2hpbGROb2Rlc1swXS5ub2RlVmFsdWUpOwoJCQl0aGlzLm9DbGlja2VkSWNv bi5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaW1nJylbMF0uc3JjID0gb0Rpdi5nZXRF bGVtZW50c0J5VGFnTmFtZSgnaW1nJylbMF0uc3JjOwoJCX0KCX0KfQoKLy8gRXZl bnQgaGFuZGxlciBmb3IgY2xpY2tpbmcgb3V0c2lkZSB0aGUgbGlzdCAod2lsbCBt YWtlIHRoZSBsaXN0IGRpc2FwcGVhcikuCkljb25MaXN0LnByb3RvdHlwZS5vbldp bmRvd01vdXNlRG93biA9IGZ1bmN0aW9uICgpCnsKCWZvciAodmFyIGkgPSBhSWNv bkxpc3RzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKQoJewoJCWFJY29uTGlzdHNb aV0uZnVuY1BhcmVudC50bXBNZXRob2QgPSBhSWNvbkxpc3RzW2ldLmNvbGxhcHNl TGlzdDsKCQlhSWNvbkxpc3RzW2ldLmZ1bmNQYXJlbnQudG1wTWV0aG9kKCk7CgkJ ZGVsZXRlIGFJY29uTGlzdHNbaV0uZnVuY1BhcmVudC50bXBNZXRob2Q7Cgl9Cn0K Ci8vIENvbGxhcHNlIHRoZSBsaXN0IG9mIGljb25zLgpJY29uTGlzdC5wcm90b3R5 cGUuY29sbGFwc2VMaXN0ID0gZnVuY3Rpb24oKQp7Cgl0aGlzLm9uQm94SG92ZXIo dGhpcy5vQ2xpY2tlZEljb24sIGZhbHNlKTsKCXRoaXMub0NvbnRhaW5lckRpdi5z dHlsZS5kaXNwbGF5ID0gJ25vbmUnOwoJdGhpcy5pQ3VyTWVzc2FnZUlkID0gMDsK CWRvY3VtZW50LmJvZHkucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywg dGhpcy5vbldpbmRvd01vdXNlRG93biwgZmFsc2UpOwp9CgovLyBIYW5keSBzaG9y dGN1dHMgZm9yIGdldHRpbmcgdGhlIG1vdXNlIHBvc2l0aW9uIG9uIHRoZSBzY3Jl ZW4gLSBvbmx5IHVzZWQgZm9yIElFIGF0IHRoZSBtb21lbnQuCmZ1bmN0aW9uIHNt Zl9tb3VzZVBvc2Uob0V2ZW50KQp7Cgl2YXIgeCA9IDA7Cgl2YXIgeSA9IDA7CgoJ aWYgKG9FdmVudC5wYWdlWCkKCXsKCQl5ID0gb0V2ZW50LnBhZ2VZOwoJCXggPSBv RXZlbnQucGFnZVg7Cgl9CgllbHNlIGlmIChvRXZlbnQuY2xpZW50WCkKCXsKCQl4 ID0gb0V2ZW50LmNsaWVudFggKyAoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNj cm9sbExlZnQgPyBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsTGVmdCA6 IGRvY3VtZW50LmJvZHkuc2Nyb2xsTGVmdCk7CgkJeSA9IG9FdmVudC5jbGllbnRZ ICsgKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3AgPyBkb2N1bWVu dC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsVG9wIDogZG9jdW1lbnQuYm9keS5zY3Jv bGxUb3ApOwoJfQoKCXJldHVybiBbeCwgeV07Cn0KCi8vIFNob3J0IGZ1bmN0aW9u IGZvciBmaW5kaW5nIHRoZSBhY3R1YWwgcG9zaXRpb24gb2YgYW4gaXRlbS4KZnVu Y3Rpb24gc21mX2l0ZW1Qb3MoaXRlbUhhbmRsZSkKewoJdmFyIGl0ZW1YID0gMDsK CXZhciBpdGVtWSA9IDA7CgoJaWYgKCdvZmZzZXRQYXJlbnQnIGluIGl0ZW1IYW5k bGUpCgl7CgkJaXRlbVggPSBpdGVtSGFuZGxlLm9mZnNldExlZnQ7CgkJaXRlbVkg PSBpdGVtSGFuZGxlLm9mZnNldFRvcDsKCQl3aGlsZSAoaXRlbUhhbmRsZS5vZmZz ZXRQYXJlbnQgJiYgdHlwZW9mKGl0ZW1IYW5kbGUub2Zmc2V0UGFyZW50KSA9PSAn b2JqZWN0JykKCQl7CgkJCWl0ZW1IYW5kbGUgPSBpdGVtSGFuZGxlLm9mZnNldFBh cmVudDsKCQkJaXRlbVggKz0gaXRlbUhhbmRsZS5vZmZzZXRMZWZ0OwoJCQlpdGVt WSArPSBpdGVtSGFuZGxlLm9mZnNldFRvcDsKCQl9Cgl9CgllbHNlIGlmICgneCcg aW4gaXRlbUhhbmRsZSkKCXsKCQlpdGVtWCA9IGl0ZW1IYW5kbGUueDsKCQlpdGVt WSA9IGl0ZW1IYW5kbGUueTsKCX0KCglyZXR1cm4gW2l0ZW1YLCBpdGVtWV07Cn0K Ci8vIFRoaXMgZnVuY3Rpb24gdGFrZXMgdGhlIHNjcmlwdCBVUkwgYW5kIHByZXBh cmVzIGl0IHRvIGFsbG93IHRoZSBxdWVyeSBzdHJpbmcgdG8gYmUgYXBwZW5kZWQg dG8gaXQuCmZ1bmN0aW9uIHNtZl9wcmVwYXJlU2NyaXB0VXJsKHNVcmwpCnsKCXJl dHVybiBzVXJsLmluZGV4T2YoJz8nKSA9PSAtMSA/IHNVcmwgKyAnPycgOiBzVXJs ICsgKHNVcmwuY2hhckF0KHNVcmwubGVuZ3RoIC0gMSkgPT0gJz8nIHx8IHNVcmwu Y2hhckF0KHNVcmwubGVuZ3RoIC0gMSkgPT0gJyYnIHx8IHNVcmwuY2hhckF0KHNV cmwubGVuZ3RoIC0gMSkgPT0gJzsnID8gJycgOiAnOycpOwp9Cgp2YXIgYU9ubG9h ZEV2ZW50cyA9IG5ldyBBcnJheSgpOwpmdW5jdGlvbiBhZGRMb2FkRXZlbnQoZk5l d09ubG9hZCkKewoJLy8gSWYgdGhlcmUncyBubyBldmVudCBzZXQsIGp1c3Qgc2V0 IHRoaXMgb25lCglpZiAodHlwZW9mKGZOZXdPbmxvYWQpID09ICdmdW5jdGlvbicg JiYgKCEoJ29ubG9hZCcgaW4gd2luZG93KSB8fCB0eXBlb2Yod2luZG93Lm9ubG9h ZCkgIT0gJ2Z1bmN0aW9uJykpCgkJd2luZG93Lm9ubG9hZCA9IGZOZXdPbmxvYWQ7 CgoJLy8gSWYgdGhlcmUncyBqdXN0IG9uZSBldmVudCwgc2V0dXAgdGhlIGFycmF5 LgoJZWxzZSBpZiAoYU9ubG9hZEV2ZW50cy5sZW5ndGggPT0gMCkKCXsKCQlhT25s b2FkRXZlbnRzWzBdID0gd2luZG93Lm9ubG9hZDsKCQlhT25sb2FkRXZlbnRzWzFd ID0gZk5ld09ubG9hZDsKCQl3aW5kb3cub25sb2FkID0gZnVuY3Rpb24oKSB7CgkJ CWZvciAodmFyIGkgPSAwLCBuID0gYU9ubG9hZEV2ZW50cy5sZW5ndGg7IGkgPCBu OyBpKyspCgkJCXsKCQkJCWlmICh0eXBlb2YoYU9ubG9hZEV2ZW50c1tpXSkgPT0g J2Z1bmN0aW9uJykKCQkJCQlhT25sb2FkRXZlbnRzW2ldKCk7CgkJCQllbHNlIGlm ICh0eXBlb2YoYU9ubG9hZEV2ZW50c1tpXSkgPT0gJ3N0cmluZycpCgkJCQkJZXZh bChhT25sb2FkRXZlbnRzW2ldKTsKCQkJfQoJCX0KCX0KCgkvLyBUaGlzIGlzbid0 IHRoZSBmaXJzdCBldmVudCBmdW5jdGlvbiwgYWRkIGl0IHRvIHRoZSBsaXN0LgoJ ZWxzZQoJCWFPbmxvYWRFdmVudHNbYU9ubG9hZEV2ZW50cy5sZW5ndGhdID0gZk5l d09ubG9hZDsKfQoKZnVuY3Rpb24gc21mRm9vdGVySGlnaGxpZ2h0KGVsZW1lbnQs IHZhbHVlKQp7CgllbGVtZW50LnNyYyA9IHNtZl9pbWFnZXNfdXJsICsgJy8nICsg KHZhbHVlID8gJ2hfJyA6ICcnKSArIGVsZW1lbnQuaWQgKyAnLmdpZic7Cn0KCi8v IEdldCB0aGUgdGV4dCBpbiBhIGNvZGUgdGFnLgpmdW5jdGlvbiBzbWZTZWxlY3RU ZXh0KG9DdXJFbGVtZW50LCBiQWN0T25FbGVtZW50KQp7CgkvLyBUaGUgcGxhY2Ug d2UncmUgbG9va2luZyBmb3IgaXMgb25lIGRpdiB1cCwgYW5kIG5leHQgZG9vciAt IGlmIGl0J3MgYXV0byBkZXRlY3QuCglpZiAodHlwZW9mKGJBY3RPbkVsZW1lbnQp ID09ICdib29sZWFuJyAmJiBiQWN0T25FbGVtZW50KQoJCXZhciBvQ29kZUFyZWEg PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChvQ3VyRWxlbWVudCk7CgllbHNlCgkJ dmFyIG9Db2RlQXJlYSA9IG9DdXJFbGVtZW50LnBhcmVudE5vZGUubmV4dFNpYmxp bmc7CgoJaWYgKHR5cGVvZihvQ29kZUFyZWEpICE9ICdvYmplY3QnIHx8IG9Db2Rl QXJlYSA9PSBudWxsKQoJCXJldHVybiBmYWxzZTsKCgkvLyBTdGFydCBvZmYgd2l0 aCBteSBmYXZvdXJpdGUsIGludGVybmV0IGV4cGxvcmVyLgoJaWYgKCdjcmVhdGVU ZXh0UmFuZ2UnIGluIGRvY3VtZW50LmJvZHkpCgl7CgkJdmFyIG9DdXJSYW5nZSA9 IGRvY3VtZW50LmJvZHkuY3JlYXRlVGV4dFJhbmdlKCk7CgkJb0N1clJhbmdlLm1v dmVUb0VsZW1lbnRUZXh0KG9Db2RlQXJlYSk7CgkJb0N1clJhbmdlLnNlbGVjdCgp OwoJfQoJLy8gRmlyZWZveCBhdCBlbC4KCWVsc2UgaWYgKHdpbmRvdy5nZXRTZWxl Y3Rpb24pCgl7CgkJdmFyIG9DdXJTZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0 aW9uKCk7CgkJLy8gU2FmYXJpIGlzIHNwZWNpYWwhCgkJaWYgKG9DdXJTZWxlY3Rp b24uc2V0QmFzZUFuZEV4dGVudCkKCQl7CgkJCXZhciBvTGFzdENoaWxkID0gb0Nv ZGVBcmVhLmxhc3RDaGlsZDsKCQkJb0N1clNlbGVjdGlvbi5zZXRCYXNlQW5kRXh0 ZW50KG9Db2RlQXJlYSwgMCwgb0xhc3RDaGlsZCwgJ2lubmVyVGV4dCcgaW4gb0xh c3RDaGlsZCA/IG9MYXN0Q2hpbGQuaW5uZXJUZXh0Lmxlbmd0aCA6IG9MYXN0Q2hp bGQudGV4dENvbnRlbnQubGVuZ3RoKTsKCQl9CgkJZWxzZQoJCXsKCQkJdmFyIGN1 clJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKCQkJY3VyUmFuZ2Uuc2Vs ZWN0Tm9kZUNvbnRlbnRzKG9Db2RlQXJlYSk7CgoJCQlvQ3VyU2VsZWN0aW9uLnJl bW92ZUFsbFJhbmdlcygpOwoJCQlvQ3VyU2VsZWN0aW9uLmFkZFJhbmdlKGN1clJh bmdlKTsKCQl9Cgl9CgoJcmV0dXJuIGZhbHNlOwp9CgovLyBBIGZ1bmN0aW9uIG5l ZWRlZCB0byBkaXNjZXJuIEhUTUwgZW50aXRpZXMgZnJvbSBub24td2VzdGVybiBj aGFyYWN0ZXJzLgpmdW5jdGlvbiBzbWNfc2F2ZUVudGl0aWVzKHNGb3JtTmFtZSwg YUVsZW1lbnROYW1lcywgc01hc2spCnsKCWlmICh0eXBlb2Yoc01hc2spID09ICdz dHJpbmcnKQoJewoJCWZvciAodmFyIGkgPSAwLCBuID0gZG9jdW1lbnQuZm9ybXNb c0Zvcm1OYW1lXS5lbGVtZW50cy5sZW5ndGg7IGkgPCBuOyBpKyspCgkJCWlmIChk b2N1bWVudC5mb3Jtc1tzRm9ybU5hbWVdLmVsZW1lbnRzW2ldLmlkLnN1YnN0cigw LCBzTWFzay5sZW5ndGgpID09IHNNYXNrKQoJCQkJYUVsZW1lbnROYW1lc1thRWxl bWVudE5hbWVzLmxlbmd0aF0gPSBkb2N1bWVudC5mb3Jtc1tzRm9ybU5hbWVdLmVs ZW1lbnRzW2ldLm5hbWU7Cgl9CgoJZm9yICh2YXIgaSA9IDAsIG4gPSBhRWxlbWVu dE5hbWVzLmxlbmd0aDsgaSA8IG47IGkrKykKCXsKCQlpZiAoYUVsZW1lbnROYW1l c1tpXSBpbiBkb2N1bWVudC5mb3Jtc1tzRm9ybU5hbWVdKQoJCQlkb2N1bWVudC5m b3Jtc1tzRm9ybU5hbWVdW2FFbGVtZW50TmFtZXNbaV1dLnZhbHVlID0gZG9jdW1l bnQuZm9ybXNbc0Zvcm1OYW1lXVthRWxlbWVudE5hbWVzW2ldXS52YWx1ZS5yZXBs YWNlKC8mIy9nLCAnJiMzODsjJyk7Cgl9Cn0KCi8vIEEgZnVuY3Rpb24gdXNlZCB0 byBjbGVhbiB0aGUgYXR0YWNobWVudHMgb24gcG9zdCBwYWdlCmZ1bmN0aW9uIGNs ZWFuRmlsZUlucHV0KGlkRWxlbWVudCkKewoJLy8gU2ltcGxlciBzb2x1dGlvbnMg d29yayBpbiBPcGVyYSwgSUUsIFNhZmFyaSBhbmQgQ2hyb21lLgoJaWYgKGlzX29w ZXJhIHx8IGlzX2llIHx8IGlzX3NhZmFyaSB8fCBpc19jaHJvbWUpCgl7CgkJZG9j dW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWRFbGVtZW50KS5vdXRlckhUTUwgPSBkb2N1 bWVudC5nZXRFbGVtZW50QnlJZChpZEVsZW1lbnQpLm91dGVySFRNTDsKCX0KCS8v IFdoYXQgZWxzZSBjYW4gd2UgZG8/IEJ5IHRoZSB3YXksIHRoaXMgZG9lc24ndCB3 b3JrIGluIENocm9tZSBhbmQgTWFjJ3MgU2FmYXJpLgoJZWxzZQoJewoJCWRvY3Vt ZW50LmdldEVsZW1lbnRCeUlkKGlkRWxlbWVudCkudHlwZSA9ICdpbnB1dCc7CgkJ ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWRFbGVtZW50KS50eXBlID0gJ2ZpbGUn OwoJfQp9Cg== ------------oekbGifD3oOrVm0Lrt9aet Content-Disposition: inline; filename=theme.js Content-Type: application/javascript; charset=UTF-8; name=theme.js Content-Location: http://forum.technicaldiving.ie/Themes/default/scripts/theme.js?fin20 Content-Transfer-Encoding: Base64 Ly8gVGhlIHB1cnBvc2Ugb2YgdGhpcyBjb2RlIGlzIHRvIGZpeCB0aGUgaGVpZ2h0 IG9mIG92ZXJmbG93OiBhdXRvIGJsb2NrcywgYmVjYXVzZSBzb21lIGJyb3dzZXJz IGNhbid0IGZpZ3VyZSBpdCBvdXQgZm9yIHRoZW1zZWx2ZXMuCmZ1bmN0aW9uIHNt Zl9jb2RlQm94Rml4KCkKewoJdmFyIGNvZGVGaXggPSBkb2N1bWVudC5nZXRFbGVt ZW50c0J5VGFnTmFtZSgnY29kZScpOwoJZm9yICh2YXIgaSA9IGNvZGVGaXgubGVu Z3RoIC0gMTsgaSA+PSAwOyBpLS0pCgl7CgkJaWYgKGlzX3dlYmtpdCAmJiBjb2Rl Rml4W2ldLm9mZnNldEhlaWdodCA8IDIwKQoJCQljb2RlRml4W2ldLnN0eWxlLmhl aWdodCA9IChjb2RlRml4W2ldLm9mZnNldEhlaWdodCArIDIwKSArICdweCc7CgoJ CWVsc2UgaWYgKGlzX2ZmICYmIChjb2RlRml4W2ldLnNjcm9sbFdpZHRoID4gY29k ZUZpeFtpXS5jbGllbnRXaWR0aCB8fCBjb2RlRml4W2ldLmNsaWVudFdpZHRoID09 IDApKQoJCQljb2RlRml4W2ldLnN0eWxlLm92ZXJmbG93ID0gJ3Njcm9sbCc7CgoJ CWVsc2UgaWYgKCdjdXJyZW50U3R5bGUnIGluIGNvZGVGaXhbaV0gJiYgY29kZUZp eFtpXS5jdXJyZW50U3R5bGUub3ZlcmZsb3cgPT0gJ2F1dG8nICYmIChjb2RlRml4 W2ldLmN1cnJlbnRTdHlsZS5oZWlnaHQgPT0gJycgfHwgY29kZUZpeFtpXS5jdXJy ZW50U3R5bGUuaGVpZ2h0ID09ICdhdXRvJykgJiYgKGNvZGVGaXhbaV0uc2Nyb2xs V2lkdGggPiBjb2RlRml4W2ldLmNsaWVudFdpZHRoIHx8IGNvZGVGaXhbaV0uY2xp ZW50V2lkdGggPT0gMCkgJiYgKGNvZGVGaXhbaV0ub2Zmc2V0SGVpZ2h0ICE9IDAp KQoJCQljb2RlRml4W2ldLnN0eWxlLmhlaWdodCA9IChjb2RlRml4W2ldLm9mZnNl dEhlaWdodCArIDI0KSArICdweCc7Cgl9Cn0KCi8vIEFkZCBhIGZpeCBmb3IgY29k ZSBzdHVmZj8KaWYgKChpc19pZSAmJiAhaXNfaWU0KSB8fCBpc193ZWJraXQgfHwg aXNfZmYpCglhZGRMb2FkRXZlbnQoc21mX2NvZGVCb3hGaXgpOwoKLy8gVG9nZ2xl cyB0aGUgZWxlbWVudCBoZWlnaHQgYW5kIHdpZHRoIHN0eWxlcyBvZiBhbiBpbWFn ZS4KZnVuY3Rpb24gc21jX3RvZ2dsZUltYWdlRGltZW5zaW9ucygpCnsKCXZhciBv SW1hZ2VzID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ0lNRycpOwoJ Zm9yIChvSW1hZ2UgaW4gb0ltYWdlcykKCXsKCQkvLyBOb3QgYSByZXNpemVkIGlt YWdlPyBTa2lwIGl0LgoJCWlmIChvSW1hZ2VzW29JbWFnZV0uY2xhc3NOYW1lID09 IHVuZGVmaW5lZCB8fCBvSW1hZ2VzW29JbWFnZV0uY2xhc3NOYW1lLmluZGV4T2Yo J2JiY19pbWcgcmVzaXplZCcpID09IC0xKQoJCQljb250aW51ZTsKCgkJb0ltYWdl c1tvSW1hZ2VdLnN0eWxlLmN1cnNvciA9ICdwb2ludGVyJzsKCQlvSW1hZ2VzW29J bWFnZV0ub25jbGljayA9IGZ1bmN0aW9uKCkgewoJCQl0aGlzLnN0eWxlLndpZHRo ID0gdGhpcy5zdHlsZS5oZWlnaHQgPSB0aGlzLnN0eWxlLndpZHRoID09ICdhdXRv JyA/IG51bGwgOiAnYXV0byc7CgkJfTsKCX0KfQoKLy8gQWRkIGEgbG9hZCBldmVu dCBmb3IgdGhlIGZ1bmN0aW9uIGFib3ZlLgphZGRMb2FkRXZlbnQoc21jX3RvZ2ds ZUltYWdlRGltZW5zaW9ucyk7CgovLyBBZGRzIGEgYnV0dG9uIHRvIGEgY2VydGFp biBidXR0b24gc3RyaXAuCmZ1bmN0aW9uIHNtZl9hZGRCdXR0b24oc0J1dHRvblN0 cmlwSWQsIGJVc2VJbWFnZSwgb09wdGlvbnMpCnsKCXZhciBvQnV0dG9uU3RyaXAg PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChzQnV0dG9uU3RyaXBJZCk7Cgl2YXIg YUl0ZW1zID0gb0J1dHRvblN0cmlwLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdzcGFu Jyk7CgoJLy8gUmVtb3ZlIHRoZSAnbGFzdCcgY2xhc3MgZnJvbSB0aGUgbGFzdCBp dGVtLgoJaWYgKGFJdGVtcy5sZW5ndGggPiAwKQoJewoJCXZhciBvTGFzdFNwYW4g PSBhSXRlbXNbYUl0ZW1zLmxlbmd0aCAtIDFdOwoJCW9MYXN0U3Bhbi5jbGFzc05h bWUgPSBvTGFzdFNwYW4uY2xhc3NOYW1lLnJlcGxhY2UoL1xzKmxhc3QvLCAncG9z aXRpb25faG9sZGVyJyk7Cgl9CgoJLy8gQWRkIHRoZSBidXR0b24uCgl2YXIgb0J1 dHRvblN0cmlwTGlzdCA9IG9CdXR0b25TdHJpcC5nZXRFbGVtZW50c0J5VGFnTmFt ZSgndWwnKVswXTsKCXZhciBvTmV3QnV0dG9uID0gZG9jdW1lbnQuY3JlYXRlRWxl bWVudCgnbGknKTsKCXNldElubmVySFRNTChvTmV3QnV0dG9uLCAnPGEgaHJlZj0i JyArIG9PcHRpb25zLnNVcmwgKyAnIiAnICsgKCdzQ3VzdG9tJyBpbiBvT3B0aW9u cyA/IG9PcHRpb25zLnNDdXN0b20gOiAnJykgKyAnPjxzcGFuIGNsYXNzPSJsYXN0 IicgKyAoJ3NJZCcgaW4gb09wdGlvbnMgPyAnIGlkPSInICsgb09wdGlvbnMuc0lk ICsgJyInOiAnJykgKyAnPicgKyBvT3B0aW9ucy5zVGV4dCArICc8L3NwYW4+PC9h PicpOwoKCW9CdXR0b25TdHJpcExpc3QuYXBwZW5kQ2hpbGQob05ld0J1dHRvbik7 Cn0KCi8vIEFkZHMgaG92ZXIgZXZlbnRzIHRvIGxpc3QgaXRlbXMuIFVzZWQgZm9y IGEgdmVyc2lvbnMgb2YgSUUgdGhhdCBkb24ndCBzdXBwb3J0IHRoaXMgYnkgZGVm YXVsdC4KdmFyIHNtZl9hZGRMaXN0SXRlbUhvdmVyRXZlbnRzID0gZnVuY3Rpb24o KQp7Cgl2YXIgY3NzUnVsZSwgbmV3U2VsZWN0b3I7CgoJLy8gQWRkIGEgcnVsZSBm b3IgdGhlIGxpc3QgaXRlbSBob3ZlciBldmVudCB0byBldmVyeSBzdHlsZXNoZWV0 LgoJZm9yICh2YXIgaVN0eWxlU2hlZXQgPSAwOyBpU3R5bGVTaGVldCA8IGRvY3Vt ZW50LnN0eWxlU2hlZXRzLmxlbmd0aDsgaVN0eWxlU2hlZXQgKyspCgkJZm9yICh2 YXIgaVJ1bGUgPSAwOyBpUnVsZSA8IGRvY3VtZW50LnN0eWxlU2hlZXRzW2lTdHls ZVNoZWV0XS5ydWxlcy5sZW5ndGg7IGlSdWxlICsrKQoJCXsKCQkJb0Nzc1J1bGUg PSBkb2N1bWVudC5zdHlsZVNoZWV0c1tpU3R5bGVTaGVldF0ucnVsZXNbaVJ1bGVd OwoJCQlpZiAob0Nzc1J1bGUuc2VsZWN0b3JUZXh0LmluZGV4T2YoJ0xJOmhvdmVy JykgIT0gLTEpCgkJCXsKCQkJCXNOZXdTZWxlY3RvciA9IG9Dc3NSdWxlLnNlbGVj dG9yVGV4dC5yZXBsYWNlKC9MSTpob3Zlci9naSwgJ0xJLmllaG92ZXInKTsKCQkJ CWRvY3VtZW50LnN0eWxlU2hlZXRzW2lTdHlsZVNoZWV0XS5hZGRSdWxlKHNOZXdT ZWxlY3Rvciwgb0Nzc1J1bGUuc3R5bGUuY3NzVGV4dCk7CgkJCX0KCQl9CgoJLy8g Tm93IGFkZCBoYW5kbGluZyBmb3IgdGhlc2UgaG92ZXIgZXZlbnRzLgoJdmFyIG9M aXN0SXRlbXMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnTEknKTsK CWZvciAob0xpc3RJdGVtIGluIG9MaXN0SXRlbXMpCgl7CgkJb0xpc3RJdGVtc1tv TGlzdEl0ZW1dLm9ubW91c2VvdmVyID0gZnVuY3Rpb24oKSB7CgkJCXRoaXMuY2xh c3NOYW1lICs9ICcgaWVob3Zlcic7CgkJfTsKCgkJb0xpc3RJdGVtc1tvTGlzdEl0 ZW1dLm9ubW91c2VvdXQgPSBmdW5jdGlvbigpIHsKCQkJdGhpcy5jbGFzc05hbWUg PSB0aGlzLmNsYXNzTmFtZS5yZXBsYWNlKG5ldyBSZWdFeHAoJyBpZWhvdmVyXFxi JyksICcnKTsKCQl9OwoJfQp9CgovLyBBZGQgaG92ZXIgZXZlbnRzIHRvIGxpc3Qg aXRlbXMgaWYgdGhlIGJyb3dzZXIgcmVxdWlyZXMgaXQuCmlmIChpc19pZTdkb3du ICYmICdhdHRhY2hFdmVudCcgaW4gd2luZG93KQoJd2luZG93LmF0dGFjaEV2ZW50 KCdvbmxvYWQnLCBzbWZfYWRkTGlzdEl0ZW1Ib3ZlckV2ZW50cyk7Cg== ------------oekbGifD3oOrVm0Lrt9aet Content-Disposition: inline; filename=tapatalkdetect.js Content-Type: application/javascript; charset=UTF-8; name=tapatalkdetect.js Content-Location: http://forum.technicaldiving.ie/mobiquo/tapatalkdetect.js Content-Transfer-Encoding: Base64 ZnVuY3Rpb24gZGV0ZWN0VGFwYXRhbGsoKSB7DQoJaWYgKGRvY3VtZW50LmNvb2tp ZS5pbmRleE9mKCJ0YXBhdGFsa19yZWRpcmVjdD1mYWxzZSIpIDwgMCkgew0KCQlp ZiAoIW5hdmlnYXRvci51c2VyQWdlbnQubWF0Y2goL09wZXJhL2kpKSB7DQoJCQlp ZiAoKG5hdmlnYXRvci51c2VyQWdlbnQubWF0Y2goL2lQaG9uZS9pKSkgfHwgKG5h dmlnYXRvci51c2VyQWdlbnQubWF0Y2goL2lQb2QvaSkpKSB7DQoJCQkJc2V0VGFw YXRhbGtDb29raWVzKCk7DQoJCQkJaWYgKGNvbmZpcm0oIlRoaXMgZm9ydW0gaGFz IGFuIGFwcCBmb3IgaVBob25lIGFuZCBpUG9kIFRvdWNoISBDbGljayBPSyB0byBs ZWFybiBtb3JlIGFib3V0IFRhcGF0YWxrLiIpKQ0KCQkJCQl3aW5kb3cubG9jYXRp b24gPSAiaHR0cDovL2l0dW5lcy5hcHBsZS5jb20vV2ViT2JqZWN0cy9NWlN0b3Jl LndvYS93YS92aWV3U29mdHdhcmU/aWQ9MzA3ODgwNzMyJm10PTgiOw0KCQkJfSBl bHNlIGlmKG5hdmlnYXRvci51c2VyQWdlbnQubWF0Y2goL2lQYWQvaSkpIHsNCgkJ CQlzZXRUYXBhdGFsa0Nvb2tpZXMoKTsNCgkJCQlpZiAoY29uZmlybSgiVGhpcyBm b3J1bSBoYXMgYW4gYXBwIGZvciBpUGFkISBDbGljayBPSyB0byBsZWFybiBtb3Jl IGFib3V0IFRhcGF0YWxrLiIpKQ0KCQkJCQl3aW5kb3cubG9jYXRpb24gPSAiaHR0 cDovL2l0dW5lcy5hcHBsZS5jb20vV2ViT2JqZWN0cy9NWlN0b3JlLndvYS93YS92 aWV3U29mdHdhcmU/aWQ9MzA3ODgwNzMyJm10PTgiOw0KCQkJfSBlbHNlIGlmKG5h dmlnYXRvci51c2VyQWdlbnQubWF0Y2goL2FuZHJvaWQvaSkpIHsNCgkJCQlzZXRU YXBhdGFsa0Nvb2tpZXMoKTsNCgkJCQlpZiAoY29uZmlybSgiVGhpcyBmb3J1bSBo YXMgYW4gYXBwIGZvciBBbmRyb2lkIFBob25lISBDbGljayBPSyB0byBsZWFybiBt b3JlIGFib3V0IFRhcGF0YWxrLiIpKQ0KCQkJCQl3aW5kb3cubG9jYXRpb24gPSAi bWFya2V0Oi8vZGV0YWlscz9pZD1jb20ucXVvb3JkLnRhcGF0YWxrcHJvLmFjdGl2 aXR5IjsNCgkJCX0gZWxzZSBpZigobmF2aWdhdG9yLnVzZXJBZ2VudC5tYXRjaCgv V2luZG93cyBQaG9uZS9pKSkgfHwgKG5hdmlnYXRvci51c2VyQWdlbnQubWF0Y2go L1p1bmVXUDcvaSkpKSB7DQoJCQkJc2V0VGFwYXRhbGtDb29raWVzKCk7DQoJCQkJ aWYgKGNvbmZpcm0oIlRoaXMgZm9ydW0gaXMgaGFzIGFuIGFwcCBmb3IgV2luZG93 cyBQaG9uZSEgQ2xpY2sgT0sgdG8gbGVhcm4gbW9yZSBhYm91dCBCb2FyZEV4cHJl c3MuIikpICAgICAgDQoJCQkJCXdpbmRvdy5sb2NhdGlvbiA9ICJ6dW5lOi8vbmF2 aWdhdGUvP3Bob25lQXBwSUQ9YWM2ZWViNWQtZTdkYS1kZjExLWE4NDQtMDAyMzdk ZTJkYjllIjsNCgkJCX0gZWxzZSBpZihuYXZpZ2F0b3IudXNlckFnZW50Lm1hdGNo KC9TeW1iaWFuL2kpKSB7DQoJCQkJc2V0VGFwYXRhbGtDb29raWVzKCk7DQoJCQkJ aWYgKGNvbmZpcm0oIlRoaXMgZm9ydW0gaGFzIGFuIGFwcCBmb3IgU3ltYmlhbiBw aG9uZSEgQ2xpY2sgT0sgdG8gbGVhcm4gbW9yZSBhYm91dCBUYXBhdGFsay4iKSkg ICAgICANCgkJCQkJd2luZG93LmxvY2F0aW9uID0gImh0dHA6Ly9zdG9yZS5vdmku Y29tL2NvbnRlbnQvMjI2NDc/Y2xpY2tTb3VyY2U9YnJvd3NlJmNvbnRlbnRBcmVh PWFwcGxpY2F0aW9ucyI7DQoJCQl9DQoJCX0NCgl9DQp9DQoNCmZ1bmN0aW9uIHNl dFRhcGF0YWxrQ29va2llcygpIHsNCgl2YXIgZGF0ZSA9IG5ldyBEYXRlKCk7DQoJ dmFyIGRheXMgPSA5MDsNCglkYXRlLnNldFRpbWUoZGF0ZS5nZXRUaW1lKCkrKGRh eXMqMjQqNjAqNjAqMTAwMCkpOw0KCXZhciBleHBpcmVzID0gIjsgZXhwaXJlcz0i KyBkYXRlLnRvR01UU3RyaW5nKCk7DQoJZG9jdW1lbnQuY29va2llID0gInRhcGF0 YWxrX3JlZGlyZWN0PWZhbHNlIiArIGV4cGlyZXM7IA0KfQ0KDQpkZXRlY3RUYXBh dGFsaygpOw== ------------oekbGifD3oOrVm0Lrt9aet Content-Disposition: inline; filename=swfobject.js Content-Type: text/javascript; charset=UTF-8; name=swfobject.js Content-Location: http://ajax.googleapis.com/ajax/libs/swfobject/2.1/swfobject.js Content-Transfer-Encoding: 8bit /* SWFObject v2.1 Copyright (c) 2007-2008 Geoff Stearns, Michael Williams, and Bobby van der Sluis This software is released under the MIT License */ var swfobject=function(){var b="undefined",Q="object",n="Shockwave Flash",p="ShockwaveFlash.ShockwaveFlash",P="application/x-shockwave-flash",m="SWFObjectExprInst",j=window,K=document,T=navigator,o=[],N=[],i=[],d=[],J,Z=null,M=null,l=null,e=false,A=false;var h=function(){var v=typeof K.getElementById!=b&&typeof K.getElementsByTagName!=b&&typeof K.createElement!=b,AC=[0,0,0],x=null;if(typeof T.plugins!=b&&typeof T.plugins[n]==Q){x=T.plugins[n].description;if(x&&!(typeof T.mimeTypes!=b&&T.mimeTypes[P]&&!T.mimeTypes[P].enabledPlugin)){x=x.replace(/^.*\s+(\S+\s+\S+$)/,"$1");AC[0]=parseInt(x.replace(/^(.*)\..*$/,"$1"),10);AC[1]=parseInt(x.replace(/^.*\.(.*)\s.*$/,"$1"),10);AC[2]=/r/.test(x)?parseInt(x.replace(/^.*r(.*)$/,"$1"),10):0}}else{if(typeof j.ActiveXObject!=b){var y=null,AB=false;try{y=new ActiveXObject(p+".7")}catch(t){try{y=new ActiveXObject(p+".6");AC=[6,0,21];y.AllowScriptAccess="always"}catch(t){if(AC[0]==6){AB=true}}if(!AB){try{y=new ActiveXObject(p)}catch(t){}}}if(!AB&&y){try{x=y.GetVariable("$version");if(x){x=x.split(" ")[1].split(",");AC=[parseInt(x[0],10),parseInt(x[1],10),parseInt(x[2],10)]}}catch(t){}}}}var AD=T.userAgent.toLowerCase(),r=T.platform.toLowerCase(),AA=/webkit/.test(AD)?parseFloat(AD.replace(/^.*webkit\/(\d+(\.\d+)?).*$/,"$1")):false,q=false,z=r?/win/.test(r):/win/.test(AD),w=r?/mac/.test(r):/mac/.test(AD);/*@cc_on q=true;@if(@_win32)z=true;@elif(@_mac)w=true;@end@*/return{w3cdom:v,pv:AC,webkit:AA,ie:q,win:z,mac:w}}();var L=function(){if(!h.w3cdom){return }f(H);if(h.ie&&h.win){try{K.write("