Content-Type: multipart/related; start=; boundary=----------KLmYUyxWijRzsm8UGCbJ8E Content-Location: http://configure.us.dell.com/dellstore/print_summary_details_popup.aspx?~lt=print&c=us&cs=19&fb=1&l=en&model_id=xps-l702x&oc=dndocq2&s=dhs&vw=icon&leadtime=5/4/2011&showleadtime=True Subject: =?utf-8?Q?The=20Dell=20Online=20Store:=20Build=20Your=20System?= MIME-Version: 1.0 ------------KLmYUyxWijRzsm8UGCbJ8E Content-Disposition: inline; filename=print_summary_details_popup.htm Content-Type: text/html; charset=utf-8; name=print_summary_details_popup.htm Content-ID: Content-Location: http://configure.us.dell.com/dellstore/print_summary_details_popup.aspx?~lt=print&c=us&cs=19&fb=1&l=en&model_id=xps-l702x&oc=dndocq2&s=dhs&vw=icon&leadtime=5/4/2011&showleadtime=True Content-Transfer-Encoding: Quoted-Printable The Dell Online Store: Build Your System

Print Summary

3D"Print
3D""
3D""
Recalculating Price

XPS 17 3D

= Market Value*3D""<= /td>$2,337.97
Total Savings3D""$360.00
3D""
Dell Pr= ice3D""$1,977.97
3D""
<= /td>
Discount Deta= ils
Preliminary Ship&= nbsp;Date5/4/201= 1
  • XPS 17 3D

  • = <= tr>
    = = <= tr bgcolor=3D"#ffffff" > <= /tr>[320-1981]  = <= td>MCPT30D<= td>25<= /tr><= /tr>1<= /tr><= td>DSO2G<= /tr>
    <= td width=3D"47%" >4/8/2011 7:51:10 AM Central = Standard Time
    <= span class=3D"title_emph">Date 
    Catalog Number 29 Retail 19
    Cata= log Number / Description Product Code=  Qty SKU Id
    <= img style=3D"border-width:0px;height:5px;width:100%;" src=3D"http://i.de= ll.com/images/global/brand/title/shad.gif">
    XPS = 17:
    XPS 17
    &= nbsp;SMX17HN 1 [225-0587]&= nbsp;1
    Colo= r:
    Elemental Silver Aluminum
     ALUM3D <= /span>1 [318-0432] 10
    Processor:
    2nd generation Intel=C2=AE Core=E2=84=A2 i= 7-2820QM processor 2.30 GHz with Turbo Boost 2.0 up to 3.40 GHz
     I72820Q 1 <= /span>[317-6211] 2
    <= span class=3D"olt_table_content_cfg">Operating System:
    Genuine= Windows=C2=AE Home Premium, 64-Bit, English
     W7HP6E=  1 [318-0392][330-6222][331-1416][420-6436][= 420-6576][420-9691][420-9876][421-0092][421-0757][421-1737][421-2086][42= 1-4118][421-4289]&= nbsp;11
    LCD<= /b>:
    17.3" FHD (1080p) 3D Display with 2.0MP HD Webcam
    10803D 1 <= /td>[320-1986][421-3642][421-3= 874] <= /td>5
    3D Glasses:
    NVIDIA 3D Vision glasses (1 pair)
     331-1417=  1 [331-1417] 6259
    Memory:
    6GB Shared Dual Channel DDR3 Memo= ry
     6G2D133 1 [317-620= 3] 3
    Video Card:NVIDIA=C2=AE GeForce=C2=AE GT 555M 3GB graphics 555M3DU 1  6
    <= /td>
    Battery:
    92 WHr 9-cell Lithium Ion Pri= mary Battery
     = 9BAT1 [= 312-1182] 27
    Hard Drive<= /b>:
    640GB 7200 RPM SATA Hard Drive
     640GB72&nb= sp;1[342-2249] 8
    Hardware Support Services:
    1 Year Basic Service P= lan
     T1O 1 [420-8878][= 933-0410][939-4150][939-4160][950-3337][950-9797] 29
    Office Productivity Software (Pre-Installed)<= /b>:
    Microsoft=C2=AE Office Starter: reduced-functionality Word & Exc= el w/ ads. No PowerPoint or Outlook
     ISTART <= /span>1 [410-0487] 22
    Anti-Virus/Security Suite (Pre-installed):
    McAfee = Security Center with VirusScan, Firewall, Spyware Removal, 30-Day Trial<= /span>
      1 [410-9452]<= /span> 
    Integrated Network Adapt= er:
    Integrated 10/100/1000 Network Card
     INTNIC 1=  [430-4038] 13
    Adobe Reader:
    Adobe® Acrobat® R= eader 9
     ADOBER<= span class=3D"olt_table_content_cfg"> 1 [410-= 1883] = 15
    CD ROM/DVD ROM= :
    Tray Load Blu-ray=C2=AE Triple Writer (reads and writes CDs, DVDs, = BDs)
     <= /td>BDRE 1 [318-0434= ][318-1064][421-4550] 16=
    Wireless Plus Bluetooth:
    Intel=C2=A9 Centrino=C2=A9 Advanced-N 6= 230 and Bluetooth 3.0
     IN6230  [317-6214] 19<= /td>
    Keyboard:
    Backlit Keyboard - English
     BCKLITE 1 [331-1414] 4
    = Mobile Broadband:
    No Mobile Broad Band Se= lected
     NOMBB 1 [430-3= 893] <= /td>114
    Sound:
    JBL= 2.1 Speakers with Waves Maxx Audio 3
     JBLSND = ;1=  [318-0138] 17
    Data Safe:
    DataSafe 2.0 Online Backup 2GB for 1 year<= /span>
      1&= nbsp;[421-4356][92= 7-2357][988-0099]&= nbsp;34
    Data & Storage Solutions:
    500GB USB 3.0 eGo BlackBelt Portable H= ard Drive - Black
    &= nbsp;A4225595 <= span class=3D"olt_table_content_cfg">1 [A4225595]=  5585<= /td>
    Cable:
    mini Display Port to VGA Adaptor
     MDPCBL 1 [331-0413] 20
    =
    3D""Print

    How to Contact Dell

    =
    Phone<= /td>Fax
    800-915-3355800-317-3355
    Address
    Del= l Inc.
    One Dell Way
    Ro= und Rock, Texas 78682
    <= /table>
    3D""

    La= ptops | Desktops = | Business Laptops= | Business Desktops<= /a> | Workstation= s | Servers | = Storage | Services | Monitors | Printers | LCD= TVs | Electronics<= /a>
    =C2=A9 201= 1 Dell | About Dell | Regulatory Compliance | Terms of Sale | Unresolved Issues | Privacy | Abo= ut Our Ads and Emails | Dell Recycling | Contact | Site Map | Visit ID | Feedback | Screen Share

    Offers = subject to change, not combinable with all other offers. Taxes, shipping= , handling and other fees apply. U.S. Dell Home and Home Office new purc= hases only. Dell reserves the right to cancel orders arising from prici= ng or other errors.

    snFG05<= script language=3D"JavaScript"> sReady();
    ------------KLmYUyxWijRzsm8UGCbJ8E Content-Disposition: inline Content-Type: image/gif Content-Location: http://i.dell.com/images/global/brand/ui/modal/wait.gif Content-Transfer-Encoding: Base64 R0lGODlhKwALAPEAADc8QP///5ianP///yH/C05FVFNDQVBFMi4wAwEAAAAh/h1C dWlsdCB3aXRoIEdJRiBNb3ZpZSBHZWFyIDQuMAAh/hVNYWRlIGJ5IEFqYXhMb2Fk LmluZm8AIfkECQoAAAAsAAAAACsACwAAAjKEjgjLltnYg/PFChveVvPLheA2hlhZ oWYnfd6avqcMZy1J14fKLvrEs/k+uKAgMkwVAAAh+QQJCgAAACwAAAAAKwALAAAC PcSOCMsgD2FjsZqEx6x885hh3veMZJiYn8qhSkNKcCy4B2vNsa3pJA6yAWUUGm9Y 8n2Oyk7T4posYlLHrwAAIfkECQoAAAAsAAAAACsACwAAAj2EjgjLMA9hY6maalvc b+IPChO3eeF5jKTUoKi6DqYLwutMYzaJ58nO6flSmpisNcwwjEfK6fKZLGJSqK4A ACH5BAkKAAAALAAAAAArAAsAAAJAhI4Iy5bZ2JiUugcbfrH6uWVMqDSfRx5RKnQn xa6p+w6xNpu1nY/9suORZENd7eYrSnbIRRMQvGAizhAV+gIUAAA7AAAAAAAAAAAA ------------KLmYUyxWijRzsm8UGCbJ8E Content-Disposition: inline Content-Type: image/gif Content-Location: http://i.dell.com/images/global/brand/ui/tabs/tab-left-current.gif Content-Transfer-Encoding: Base64 R0lGODlhCgAlAPcAAP///5mZmf7+/rOzs/n5+cPDw8/Pz9/f36+vr6Wlpenp6fPz 8/39/fj4+Ofn5wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAAAKACUAAAheAAEAIGAAQYCDBwEoGHBg gcCHBAYweEixgAOKFBM0wPgwgACOAj2CBCASZEmOJzGmpLiy40eTL1HGVDmTZU2X I1uGvLkzJ0+SP3UC9UnU5EiSRwMkXZqTqdGmUEEGBAA7 ------------KLmYUyxWijRzsm8UGCbJ8E Content-Disposition: inline Content-Type: image/gif Content-Location: http://i.dell.com/images/global/brand/ui/tabs/tab-right-current.gif Content-Transfer-Encoding: Base64 R0lGODlh9AElAPcAAP///5mZmf7+/rOzs/n5+cPDw6+vr9/f38/Pz+fn5/39/fPz 86Wlpfj4+Onp6QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAAD0ASUAAAj/AAMIHEiwoMGDCBMqXMiw ocOHECNKnEixosWLGDNq3Mixo8eOBhAQAECypMmTKFOqXMmypcuXMGPKnEmzps2b OHPq3Mmzp8+fQIMCWHBggAOhSJMqXcq0qdOnUKNKnWpSwYCRVLNq3cq1q9evYMOS TFBArNmzaNOqXcsWaAMGbePKnUu3rt2lAgLc3cu3r9+/bfMCHky4sOHDPQUjXsy4 sePBih9Lnky5stfIljNr3sx5J+bOoEOLFv15tOnTqBeXTs26teu5q1/Lnk2ba+za uHPrFnp7t+/fwGP2Dk68OPHhxpMrp418ufPnpptDn07dsvTq2LMjvq69u3e+3L+L PB/PNjz58+i/mk/Pvn3U9e7jy+ctcL79+/jz69/Pv7///wAGKOCABBZo4IEIJqjg ggw26OCDEEYooVIBAQA7 ------------KLmYUyxWijRzsm8UGCbJ8E Content-Disposition: inline Content-Type: image/gif Content-Location: http://i.dell.com/images/global/brand/ui/tabs/tab-left.gif Content-Transfer-Encoding: Base64 R0lGODlhCgAlALMIAKqqqurq6q+vr7Ozs9fX16urq76+vsTExP///wAAAAAAAAAA AAAAAAAAAAAAAAAAACH5BAEAAAgALAAAAAAKACUAAAQgEKFwBrgXEcxBKB1mhJhA nmiqrmzrvnAsz3Rt37hrnhEAOw== ------------KLmYUyxWijRzsm8UGCbJ8E Content-Disposition: inline Content-Type: image/gif Content-Location: http://i.dell.com/images/global/brand/ui/tabs/tab-right.gif Content-Transfer-Encoding: Base64 R0lGODlh9AElALMAAKqqqv///6+vr6urq+vr67+/v+rq6sTExNfX17Ozs66urgAA AAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAAD0ASUAAATwEMhJq7046827/2AojmRp nmiqrmzrtslhBPRr33iu73zv/8AgCFETGo/IpHLJbDo3A0LgSa1ar9islleYbr/g sHhMBgq85bR6zW6T0e64fE6vv+D2vH7Pr+P7gIGCg09/hIeIiYoshouOj5CREo2S lZaXdpSYm5ydYJqeoaKjSKCkp6ipLqaqra6vHayws7SvsrW4uaG3ur2+kby/wsOD wcTHyH7Jy8yBxs3Q0VrP0tXWTNTX2ts/2dzf4Hfh4+RB3uXo6Rzn6u3uk+/x8iDs 8/bc9ff61fn7/sz9/gkkFnCgwV4FDyqklXChQ1UKAkQAADs= ------------KLmYUyxWijRzsm8UGCbJ8E Content-Disposition: inline Content-Type: image/gif Content-Location: http://i.dell.com/images/global/brand/ui/secondary.gif Content-Transfer-Encoding: Base64 R0lGODlhBAARAIABAABmzP///yH5BAEAAAEALAAAAAAEABEAAAINjI+ZcMDhWJzw PYVzAQA7 ------------KLmYUyxWijRzsm8UGCbJ8E Content-Disposition: inline Content-Type: image/gif Content-Location: http://i.dell.com/images/global/brand/ui/storm80/secondarynavbgfirst.gif Content-Transfer-Encoding: Base64 R0lGODlhAgAeAMQAAOfn5+Xl5enp6ejo6Obm5uvr6+zs7OTk5N/f3+Hh4djY2Orq 6tvb29ra2uPj4/X19d3d3e/v7/39/dnZ2eDg4Nzc3NfX1/Dw8N7e3uLi4vz8/AAA AAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAAACAB4AAAUtoGQ8QjQYAFoA67oQrxDI wjE4QzYkAAUgPwCGACFUAoxAIzA5KA6WgOLC0CRCADs= ------------KLmYUyxWijRzsm8UGCbJ8E Content-Disposition: inline Content-Type: image/gif Content-Location: http://i.dell.com/images/global/brand/ui/storm80/secondarynavbglast.gif Content-Transfer-Encoding: Base64 R0lGODlhAgAeAMQAAOfn5+Pj4+Xl5ebm5urq6unp6eTk5Ojo6OLi4tfX19vb2+vr 6+Hh4d/f393d3d7e3uDg4PX19dbW1uzs7Pv7++/v79zc3NnZ2djY2O7u7v39/QAA AAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAAACAB4AAAUt4KQVEZABCwoQ6zoUr3DI xhEACMAA0ND4gofAYbAYFIFLABNIICSIREBRYVBCADs= ------------KLmYUyxWijRzsm8UGCbJ8E Content-Disposition: inline Content-Type: image/gif Content-Location: http://i.dell.com/images/global/brand/ui/storm80/secondarynavbgdivider.gif Content-Transfer-Encoding: Base64 R0lGODlhAgAeAMQAAOrq6uzs7MbFxe3t7cbGxsPDw+vr68XExMTDw8XFxcTExMPC wsLCwsbExcbFxsXDw+jo6Onp6QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAAACAB4AAAUmYEAMgkgGwuCcZWOWhJEm wWEkhv0AB6D4AEQQUAAsjEQipBBhhAAAOw== ------------KLmYUyxWijRzsm8UGCbJ8E Content-Disposition: inline Content-Type: image/gif Content-Location: http://i.dell.com/images/global/brand/ui/storm80/secondarynavbg.gif Content-Transfer-Encoding: Base64 R0lGODlhAQAeAMQAAOfn59/f3+bm5tbW1uXl5d3d3eHh4dnZ2eLi4tTU1OTk5NfX 19vb29zc3ODg4NXV1d7e3tjY2OPj4wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAAABAB4AAAUVICCOoiAQhCIhhhMEUNEw R7QMw5OEADs= ------------KLmYUyxWijRzsm8UGCbJ8E Content-Disposition: inline Content-Type: image/gif Content-Location: http://i.dell.com/images/global/brand/ui/primary.gif Content-Transfer-Encoding: Base64 R0lGODlhFQARAMQfAJa74dXm9iiF4nOu6j+Q45rB6QFkyObx+/v8/miXxVSW2bvZ 9sfd8w9apLLK4fT5/SF1yhl94jt2sABOmw913Bh84QBRoRZ74BR53xJ43gBXsABf vwBbtwBUqP///////yH5BAEAAB8ALAAAAAAVABEAAAWr4CeOB7MEyKiuH1IQVSQL w8GqB1ztfCUst89BcCkWB8ZLBMhSYJ7QwwCKETxWgYx2mzkgBlzAakChCAhowsGD UJQphBWhPPDY757HvHwdQQwGCnh3CASABgEqfwYQBY4FAXYKh4gqChuYmRsAHgOa BikjBRykpRwAAKYcCisPEBqwsQqxsQwsDh25uru5CUEADRbCw8MJoTcBEhPLzA0O QSoIDgkSEgkANkEhADs= ------------KLmYUyxWijRzsm8UGCbJ8E Content-Disposition: inline Content-Type: image/gif Content-Location: http://i.dell.com/images/global/brand/ui/storm80/oo_666.gif Content-Transfer-Encoding: Base64 R0lGODlhCQAJAIABAGZmZv///yH/C05FVFNDQVBFMi4wAwEAAAAh+QQJyAABACwA AAAACQAJAAACEQSCaJdp7liQb1UaoZJttQkUACH5BAkAAAEALAAAAAAJAAkAAAIR DBB5mo3GoHz0WBrxjE49gxQAIfkECQAAAQAsAAAAAAkACQAAAhJMAJd2vJYia9Ih NOWjzXmrGAUAIfkECQAAAQAsAAAAAAkACQAAAhGMgaYBvJceamtGNR+72MlbAAAh +QQJAAABACwAAAAACQAJAAACDowDp7iXzRaYsz0LIz4FACH5BAkAAAEALAAAAAAJ AAkAAAIRjIGmAbznXmsLWRlrVvOxZBQAIfkECQAAAQAsAAAAAAkACQAAAhFMAJd2 vPZeg0whGWt23CVkFAAh+QQJAAABACwAAAAACQAJAAACEQwQeZqN1hiM79g1ndRZ YoMUACH5BAnIAAEALAAAAAAJAAkAAAIRBIJol2ntGHyLyvZgyJMrUAAAIfkECQAA AQAsAAAAAAkACQAAAhEMEHmajdYYjO/YNZ3UWWKDFAAh+QQJAAABACwAAAAACQAJ AAACEUwAl3a89l6DTCEZa3bcJWQUACH5BAkAAAEALAAAAAAJAAkAAAIRjIGmAbzn XmsLWRlrVvOxZBQAIfkECQAAAQAsAAAAAAkACQAAAg6MA6e4l80WmLM9CyM+BQAh +QQJAAABACwAAAAACQAJAAACEYyBpgG8lx5qa0Y1H7vYyVsAACH5BAkAAAEALAAA AAAJAAkAAAISTACXdryWImvSITTlo815qxgFACH5BAkAAAEALAAAAAAJAAkAAAIR BIJol2nuWJBvVRqhkm21CRQAOw== ------------KLmYUyxWijRzsm8UGCbJ8E Content-Disposition: inline Content-Type: image/jpeg Content-Location: http://i.dell.com/images/global/brand/ui/storm80/viewlarger.jpg Content-Transfer-Encoding: Base64 /9j/4AAQSkZJRgABAgAAZABkAAD/7AARRHVja3kAAQAEAAAARgAA/+4ADkFkb2Jl AGTAAAAAAf/bAIQABAMDAwMDBAMDBAYEAwQGBwUEBAUHCAYGBwYGCAoICQkJCQgK CgwMDAwMCgwMDQ0MDBERERERFBQUFBQUFBQUFAEEBQUIBwgPCgoPFA4ODhQUFBQU FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU/8AA EQgACwALAwERAAIRAQMRAf/EAGIAAAMBAAAAAAAAAAAAAAAAAAACBAgBAQAAAAAA AAAAAAAAAAAAAAAQAAAEBAUCBwAAAAAAAAAAABIDExQBEQIEACFCBRUiJDGRYoIj M2QRAQAAAAAAAAAAAAAAAAAAAAD/2gAMAwEAAhEDEQA/ANeVm0mUbFdXWxGbvc7u Ypc3JkLUyMFbU89Ahc6iouJUaKdNMJUxzjXHMLAmOmHdJvuPcuKhNWz5Gakhj+BT xDrFgAt0OLB4k7uV+ObNhDNmi961Jfaj0iHLPAJ2HHawrftSA/8AN/P3qenAf//Z ------------KLmYUyxWijRzsm8UGCbJ8E Content-Disposition: inline Content-Type: image/gif Content-Location: http://i.dell.com/images/global/brand/ui/storm80/bg_img_line.gif Content-Transfer-Encoding: Base64 R0lGODlhAQAZAJEAAP////b29u7u7gAAACH5BAAAAAAALAAAAAABABkAAAIFhI+p FlIAOw== ------------KLmYUyxWijRzsm8UGCbJ8E Content-Disposition: inline Content-Type: image/gif Content-Location: http://i.dell.com/images/global/general/bullet.gif Content-Transfer-Encoding: Base64 R0lGODlhCAAHAID/AMDAwAAAACH5BAEAAAAALAAAAAAIAAcAQAIIhI+pG7HPHCgA Ow== ------------KLmYUyxWijRzsm8UGCbJ8E Content-Disposition: inline Content-Type: image/png Content-Location: http://i.dell.com/images/global/brand/ui/storm80/logo80.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAAD0AAAA9CAYAAAAeYmHpAAAAGXRFWHRTb2Z0d2Fy ZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAEeBpVFh0WE1MOmNvbS5hZG9iZS54bXAA AAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5U Y3prYzlkIj8+Cjx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6 eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDQuMi4yLWMwNjMgNTMuMzUyNjI0LCAyMDA4 LzA3LzMwLTE4OjEyOjE4ICAgICAgICAiPgogPHJkZjpSREYgeG1sbnM6cmRmPSJo dHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICA8 cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgeG1sbnM6eG1wPSJodHRw Oi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIgogICAgeG1sbnM6ZGM9Imh0dHA6Ly9w dXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICAgeG1sbnM6cGhvdG9zaG9wPSJo dHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIgogICAgeG1sbnM6eG1w TU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iCiAgICB4bWxuczpz dEV2dD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNl RXZlbnQjIgogICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZm LzEuMC8iCiAgICB4bWxuczpleGlmPSJodHRwOi8vbnMuYWRvYmUuY29tL2V4aWYv MS4wLyIKICAgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M0IFdp bmRvd3MiCiAgIHhtcDpDcmVhdGVEYXRlPSIyMDEwLTAxLTIyVDE1OjU0OjAxLTA2 OjAwIgogICB4bXA6TW9kaWZ5RGF0ZT0iMjAxMC0wMS0yOFQxNzo1ODoyMC0wNjow MCIKICAgeG1wOk1ldGFkYXRhRGF0ZT0iMjAxMC0wMS0yOFQxNzo1ODoyMC0wNjow MCIKICAgZGM6Zm9ybWF0PSJhcHBsaWNhdGlvbi92bmQuYWRvYmUucGhvdG9zaG9w IgogICBwaG90b3Nob3A6Q29sb3JNb2RlPSIzIgogICBwaG90b3Nob3A6SUNDUHJv ZmlsZT0ic1JHQiBJRUM2MTk2Ni0yLjEiCiAgIHhtcE1NOkluc3RhbmNlSUQ9Inht cC5paWQ6RUM1MjI2MDM2OTBDREYxMTk4MDlBRThBMTIxMEE3ODQiCiAgIHhtcE1N OkRvY3VtZW50SUQ9InhtcC5kaWQ6RTRBRTg1NDU5RTA3REYxMUE2QzJBOUYxNTlD QTBFQ0MiCiAgIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDpFNEFF ODU0NTlFMDdERjExQTZDMkE5RjE1OUNBMEVDQyIKICAgdGlmZjpPcmllbnRhdGlv bj0iMSIKICAgdGlmZjpYUmVzb2x1dGlvbj0iNzIwMDAwLzEwMDAwIgogICB0aWZm OllSZXNvbHV0aW9uPSI3MjAwMDAvMTAwMDAiCiAgIHRpZmY6UmVzb2x1dGlvblVu aXQ9IjIiCiAgIHRpZmY6TmF0aXZlRGlnZXN0PSIyNTYsMjU3LDI1OCwyNTksMjYy LDI3NCwyNzcsMjg0LDUzMCw1MzEsMjgyLDI4MywyOTYsMzAxLDMxOCwzMTksNTI5 LDUzMiwzMDYsMjcwLDI3MSwyNzIsMzA1LDMxNSwzMzQzMjswMjBGRkMzQzIyOUU5 NzkzMTE3OTE5QTc1RDc5MDU5MiIKICAgZXhpZjpQaXhlbFhEaW1lbnNpb249Ijkz IgogICBleGlmOlBpeGVsWURpbWVuc2lvbj0iOTQiCiAgIGV4aWY6Q29sb3JTcGFj ZT0iMSIKICAgZXhpZjpOYXRpdmVEaWdlc3Q9IjM2ODY0LDQwOTYwLDQwOTYxLDM3 MTIxLDM3MTIyLDQwOTYyLDQwOTYzLDM3NTEwLDQwOTY0LDM2ODY3LDM2ODY4LDMz NDM0LDMzNDM3LDM0ODUwLDM0ODUyLDM0ODU1LDM0ODU2LDM3Mzc3LDM3Mzc4LDM3 Mzc5LDM3MzgwLDM3MzgxLDM3MzgyLDM3MzgzLDM3Mzg0LDM3Mzg1LDM3Mzg2LDM3 Mzk2LDQxNDgzLDQxNDg0LDQxNDg2LDQxNDg3LDQxNDg4LDQxNDkyLDQxNDkzLDQx NDk1LDQxNzI4LDQxNzI5LDQxNzMwLDQxOTg1LDQxOTg2LDQxOTg3LDQxOTg4LDQx OTg5LDQxOTkwLDQxOTkxLDQxOTkyLDQxOTkzLDQxOTk0LDQxOTk1LDQxOTk2LDQy MDE2LDAsMiw0LDUsNiw3LDgsOSwxMCwxMSwxMiwxMywxNCwxNSwxNiwxNywxOCwy MCwyMiwyMywyNCwyNSwyNiwyNywyOCwzMDsyQjMwNUY3MDM4QjM4NTk4RDY5QjEz OTI5MDhEMDYxNiI+CiAgIDx4bXBNTTpIaXN0b3J5PgogICAgPHJkZjpTZXE+CiAg ICAgPHJkZjpsaQogICAgICBzdEV2dDphY3Rpb249ImNyZWF0ZWQiCiAgICAgIHN0 RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6RTRBRTg1NDU5RTA3REYxMUE2QzJBOUYx NTlDQTBFQ0MiCiAgICAgIHN0RXZ0OndoZW49IjIwMTAtMDEtMjJUMTU6NTk6MTUt MDY6MDAiCiAgICAgIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hv cCBDUzQgV2luZG93cyIvPgogICAgIDxyZGY6bGkKICAgICAgc3RFdnQ6YWN0aW9u PSJzYXZlZCIKICAgICAgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDpFQzUyMjYw MzY5MENERjExOTgwOUFFOEExMjEwQTc4NCIKICAgICAgc3RFdnQ6d2hlbj0iMjAx MC0wMS0yOFQxNzo1ODoyMC0wNjowMCIKICAgICAgc3RFdnQ6c29mdHdhcmVBZ2Vu dD0iQWRvYmUgUGhvdG9zaG9wIENTNCBXaW5kb3dzIgogICAgICBzdEV2dDpjaGFu Z2VkPSIvIi8+CiAgICA8L3JkZjpTZXE+CiAgIDwveG1wTU06SGlzdG9yeT4KICA8 L3JkZjpEZXNjcmlwdGlvbj4KIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+CiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAog ICAgICAgICAgICAgICAgICAgICAgICAgICAKPD94cGFja2V0IGVuZD0idyI/Pv2m nccAAAVOSURBVHja3FtdcpswEFYYv5ecIPQExe+dCTlB3RMYn6Dxa1+CH9rXJCcw OUHICUKmfQ85QegJyg1aqbM06/VKSBgIZGc0nthE0rf/uxJH4tsP0SOFMAI5TtF3 Pnkuh89Cjif4LGwW+PP1o/OmZj0AXcjxSY4IwNpQRD4VVXJkctzBZ2fUFWgluXM5 lg5AbeaMYSgGpHJcy1G+Nuga7BdGZSmVaPxC358Ao3xQfdM65wB+cwj4Q0CrDVwY wBagmjmyWVtVj8BEOCbEYEJK6kmbjR+1cGRKKltif9gOO1NDWCs2mI1i7Eo6s8Jl Us9xEwroIwO4ApV7L8e6I8C1SSQw74qZV2nC/dH3n3FfoNXE94w6X8GmEgDfFykN mgNzqb1vJfCka9AJqDSVwhlItk+wVKMSAE9V+kIC33YFunZYNJmYOzqoLqkAhqdU G22AexYqfcmo2dmA0jVJfaUBnrQFHTIqncJCoyHpuVfgV6iqL1xB++C0Rg0YAV8z ElfOLXABvSVeuhgrYCLxjHp1W9ALGNh2zsQ0iMbySEr73Ab0JTNRNQXEUtoVo5HK vn0T6Jike1nXZd0AwHPi2OpiRQuaxuO1mCZtiHZ+wdL2DFJOO8yhX0PNr5nafA/0 kuHWlOmKSpuCDkjllE1VykTa2B8FUsVDDJpmLzfibdA1+XuJQZ+SH7v22HWGdz6w tAsat3Hn5DfKwBTgz6SsNCX9TaagVOoWOclME/tjpjuSaIog+lwqAbJ7gKoLNxmO Z2K/D/3UEMa4ZCbV1NUxkwpGsGbOqF5kAZp7Ljcw/oGADj2Ga21qZK6rsmUAFyil fWZ8SV+1t6Cgw4aHbKkuRRUTHwl3cR2+AAYFoPaXA9j1jn+ZaezURDmozAkDbAGq 5zOZXQpMWTDq7vcs7RJp9KmS9AfyYxM9gK2tiMPDnppWaDlId8EkEHPwG1HPoP/T jGzSNSHJCBe5xUKxfyhQgfQzYEYkBqRZz/OHjM8okYY8D6Da1p0TW4qE24FdBuoc gbMbHHAt6b2MpYFOxMtZU6xxhH5DXI81ESNsiNO6cLqUSQjeeym9dmoC/atFTI4N nn0NXjrUtKIEE8rWEL6EY2KE90T3kWqEWXpMiAoPSAI+owTEJn9f9d2Ooq0iJWSP SUaCFnNnYvcAoAIGbAw5+1zst237cqY7jnTGgD4lUsoNG3+CZ3VZXAL/f4vsPAeG VC0yQeV/3jmmntRPFTNYHMda+tCh7d8cpHqLbJ6jVv04i4s2uGyuVFrqMdIMRXf3 RrCE5mLgRiPYc0S1tgZ9Z+Flp0gUxx0GnQlNE23itOQ6Qp6mRRQYYvEkCJIVrNoZ NAt3QNPwMnVp08Tmmsu9S8ahxW9Eyjkc97AFx4bJk/0J4t6acHkNOavfdzunBykn JOTuSFlXWtKuZjwVNQe1vmDy+8Z6umKSiMsDCpGhAIdMpbbh+uG6JkLKqPn9WIFD 5kWvjCi1Tlw7J2uSuI8SOACm+yoF37RsBF2J/ftiYwOu9vFI9vOvrK0TEVfQJuCP I3Bu+NBgZ79Nt4JtGoOF4G8IbkmdPBTVYZSubQXYFnQN/D1T6CtuqzbuUEewsWa9 whawC2is6qmG88+wKb9HsFtm/swF8D/n1/IVpYVmAzVz1EZuxGG3hEMoDWPDOioO X7lO3PaEIwNAF4yq0bds1HNPiAG5BmDd5fggmg/1UnHAPfOjDl5GCwD8EN48FeRN nTYvo3kdbKSE/PZYdPv+Bp6/fj9kJUbwXha1sSsYodh9zcjVuSkTeBDm9vIoQNMQ UoiXO5oBGRzD6ptAZd828leAAQAoiqV5kYg0KwAAAABJRU5ErkJggg== ------------KLmYUyxWijRzsm8UGCbJ8E Content-Disposition: inline Content-Type: image/gif Content-Location: http://i.dell.com/images/global/brand/ui/storm80/nav_right_grey.gif Content-Transfer-Encoding: Base64 R0lGODlhBAAHAIABAGZmZv///yH5BAEAAAEALAAAAAAEAAcAAAIJRA6GGtnm2gkF ADs= ------------KLmYUyxWijRzsm8UGCbJ8E Content-Disposition: inline Content-Type: image/gif Content-Location: http://i.dell.com/images/global/brand/ui/secondary_lnav.gif Content-Transfer-Encoding: Base64 R0lGODlhBAALAIABAABmzP///yH5BAEAAAEALAAAAAAEAAsAAAIMjI8ZcMDroJvQ vFAAADs= ------------KLmYUyxWijRzsm8UGCbJ8E Content-Disposition: inline Content-Type: image/gif Content-Location: http://i.dell.com/images/global/pricing/pricing_divide.gif Content-Transfer-Encoding: Base64 R0lGODlhAQAPAIABAGaZM////yH5BAEAAAEALAAAAAABAA8AAAIEjB+AVwA7 ------------KLmYUyxWijRzsm8UGCbJ8E Content-Disposition: inline Content-Type: image/gif Content-Location: http://i.dell.com/images/global/pricing/pricing_dot.gif Content-Transfer-Encoding: Base64 R0lGODlhAwAFAIABAKqqqv///yH5BAEAAAEALAAAAAADAAUAAAIEjAOnVwA7 ------------KLmYUyxWijRzsm8UGCbJ8E Content-Disposition: inline Content-Type: image/gif Content-Location: http://i.dell.com/images/global/config/strip.gif Content-Transfer-Encoding: Base64 R0lGODlhBAAFAJEAANTZ3I+Pj62xtMHFyCH5BAAAAAAALAAAAAAEAAUAAAIHjAaG mtdYAAA7 ------------KLmYUyxWijRzsm8UGCbJ8E Content-Disposition: inline Content-Type: image/gif Content-Location: http://i.dell.com/images/global/configurator/general/control_printer.gif Content-Transfer-Encoding: Base64 R0lGODlhEAAOAPcAAAAAAIAAAACAAICAAAAAgIAAgACAgMDAwMDcwKbK8AAhhABK jAgxWhBajCGt/0qc/1qt3nO9/3u954ytxpze/7X31tbv/+fv9+f33v///wAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/78KCgpICAgP8AAAD/AP// AAAA//8A/wD//////yH5BAAAAAAALAAAAAAQAA4AhwAAAIAAAACAAICAAAAAgIAA gACAgMDAwMDcwKbK8AAhhABKjAgxWhBajCGt/0qc/1qt3nO9/3u954ytxpze/7X3 1tbv/+fv9+f33v///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AP/78KCgpICAgP8AAAD/AP//AAAA//8A/wD//////whsADMIzNBgwYKCBxcMXKhw 4cCGDB0+lKhQAQMFFhVkgDhR4kaKGTJm/OiQY0SGDTxuTEkwIcKXLg1iuFDBAoWb EXI+2OmgQYMLFywIvUlBZ4QMDgwe9OnTINOCPgUugCCBqoSrVCeYhOrU5cCAADs= ------------KLmYUyxWijRzsm8UGCbJ8E Content-Disposition: inline Content-Type: image/gif Content-Location: http://i.dell.com/images/global/config/tab-left.gif Content-Transfer-Encoding: Base64 R0lGODlhCgAbAMQAANPb39bd4au6wbXBycvV2p2tuN3i5rzHzqKzvK+9xcjS18HL 0ujs7trg5Nzh5dvh5dXc4I+Pj9jf4tnf49fe4tje497j5rC+xaCwutfe4f///9jf 46O0vcfR1tzi5d/k6CH5BAAAAAAALAAAAAAKABsAAAV5oKYxAWSe2pdRQesyWebO UzXP20bt/C79wOBkSCw2jsjk43FkNphLh3Q6NVivWItW6+FaqB5HWIpcQpeVTWXN XgPegFMJAq/DCfi8vtNR9PsKgQuDhIUHh4iJA4uMjRePkAmSCQKVlpcImRybmZkY BZ8YoaARpaanIQA7 ------------KLmYUyxWijRzsm8UGCbJ8E Content-Disposition: inline Content-Type: image/gif Content-Location: http://i.dell.com/images/global/config/tab-right.gif Content-Transfer-Encoding: Base64 R0lGODlh9AEbAMQAANbd4aO0vZ2tuKu6wbTByf///8vV2tPb393i5sHL0q68xLvH zsjS173Iz9rg5Nzh5dXc4Nvh5Y+Pj9fe4tjf4tnf49je49HZ3t7j5tzi5cfR1tjf 46+9xdfe4eXp7Nrf4yH5BAAAAAAALAAAAAD0ARsAAAX/IACNZGmeaKqubOu+cCzP dG3feK7vfO//PoCnQJwAjsikcslsOp/QqHRKrVqv2Kx2y+16v+CweCyedDBEsnrN brvf8Lh8Tq9TO52hfc/v+/+AgYKDURYfBROJiouMjY6PkJGSk5SVlpeYmZqbnJ2e n6ChoqOkpaYTGxsFFKytrq+wsbKztLW2t7i5uru8vb6/wMHCw8TFxsfIya0FFc3O z9DR0tPU1dbX2Nna29zd3t/g4eLj5OXm5+jp6s4FDu7v8PHy8/T19vf4+fr7/P3+ /wADChxIsKDBgwgTKlz4rl0Edw8fOpAIMYLFiRDfWaQIL+JGjRM/XsyI0SO+jyQ9 /0YMeXEkxpIhT7qUqJLjSpP3UL6s2VEez4wbce4syZGeTposibakiFRovaNAdb6s yDTqTZFVYbp8OtOqzZ5BQYbtqrXoPKhKlQptGjMn2Z8ph4Ys8KCu3bt48+rdy7ev 37+AAwseTLiw4cOIEytezLix48eQI0uuG6EAgsuYM2vezLmz58+gQ4seTbq06dOo U6tezbq169ewY8ueTRtzAQwYMuDWjTu3b9+8f+/uPTyDbuPGiec+Pny5c+S9kwcP 3rw68+fNpR9Pvvu68OrCr3uH3j28curTf49/Tj66+PLap68njj66+vfsl8s3T79/ 8f/KfZceb9Jlt51+7vFn3/+CwAHIHncJEgjfdvul559196k3IYLwMQjegA5qSBxd GTxQYl4n2pWiiSui6KJxeK2YInJ9tRijjHW1iGOOMPJl41095hijij+qWOOORg45 ZJBCJslikU3uxeSJOgJJJJQmHmnllj7uWKWTNPqopZNRZrnkl1GGKeWYTaJp5pM1 svlmmUauWABWQeFUU55sTdVWTHmW1dZSLaXEp0gVsVSoSSMRutJOhxYK6FKJjmVo pJAmhZRGTO0paKM8bRqppI7eNGmliEKKKU0qqXpopoFeNWiol77KalJ+zuSprKAq Kteoj5b66a2WusonrMfqVIAFzDbb7AbMQmuBtM9OS63/s9Wmgu2221KrrbTXcuvs t9iGy6230IIr7rnplhvtu+ROu2637Y77rrz2ajtvt8/Wa+668Va7L7r4/ituwPeq yy6+As9LsML7RluvwBCnazDA/RYcccbhXtxwvB6XO3HC9x5sQQEHkCACCge0DAEA KZ/QcswlHLAyyyOIEPPOEKQc88o610zCzCwH3XPORyftc9JAJz0CzUTLrLPLJvyM NM1OR1311FhvrYLVPB+99MtXC/001V6HbTTPYzeNNdRo18x1ClrLrXTZd7eN99ND xz303FJ/jTfbTO+dtd9Prz0433qT/XbfXSfeM+JIn91yARdkrvnmnHfu+eeghy76 /+ikl2766ainrvrqrLfu+uuwxy777LTXbrvmBRig++689+7778AHL/zwxBdv/PHI J6/88sw37/zz0Ecv/fTUV2/99bsXoAED2zPg/fffdx8+9+SDb/7522vQvfjqj79+ +uzDfz746ZdPf/jsl99++97vL/789fuf/fonPwJyT4DmC2AC5wfAA/YPf+4zIP8c OMEG1m+BBnzg+xwoQQTe74LjY+AHB/jADJJvgxP0nwhPSEIPLpB/8YsgBWNYQfSx EIMcvKEKO7hCBd5PhAHUQAESQMQiGvGISEyiEpfIxCY68YlQjKIUp0jFKlrxiljM oha3yMUuevGLYAxjEQuwgP8ymvGMDTBjGs9YxgaskY1vRCMb50jHOtoxjmrEox33 yEc10tGNf/RjH+U4R0AWUpB6XEAiB8lIRf5xkY1sZCINCUdEPjKSmKxkIScpyENm MpKThOQn9xjKQLZxkAUggCpXycpWuvKVsIylLGdJy1ra8pa4zKUud8nLXvryl8AM pjCHScxiGvOYqywAB5bJzGY685nQjKY0p8lMBUDTmtRsJjaXuc1scvOa3qymNp3Z zWeWk5rdLOc5w4lOcLIznez8pjnjCc9xtlOc9HRnOOuJz3jek5z57Oc+9elNfspz ns4swAAWytCGOvShEI2oRCdK0Ypa9KIYzahGN8rRjnqa9KMgDalIR0rSkpr0pChl aAECwNKWuvSlMI2pTGdK05ra9KY4zalOd8rTnvr0p0ANqlCHStSiGvWoSE1qSwsg gKY69alQjapUp0rVqlr1qljNqla3ytWuevWrYA2rWMdK1rKa9axoTatanVoACbj1 rXCNq1znSte62vWueM2rXvfK17769a+ADaxgB0vYwhr2sIhNrGIXC9cQAAA7 ------------KLmYUyxWijRzsm8UGCbJ8E Content-Disposition: inline Content-Type: image/gif Content-Location: http://i.dell.com/images/global/config/tab-left-current.gif Content-Transfer-Encoding: Base64 R0lGODlhCgAbALMAAP///5mZmf7+/rOzs/n5+cPDw8/Pz9/f36+vr6Wlpenp6fPz 8/39/fj4+Ofn5wAAACH5BAAAAAAALAAAAAAKABsAAAQ3EABiULgXqHGW/MTAfGTh kGTSoF8gsJILAzJcszeak3v72j9cUDfkFX2zXuy4TDJpTyXUSYVFAAA7 ------------KLmYUyxWijRzsm8UGCbJ8E Content-Disposition: inline Content-Type: image/gif Content-Location: http://i.dell.com/images/global/config/tab-right-current.gif Content-Transfer-Encoding: Base64 R0lGODlh9AEbALMAAP///5mZmf7+/rOzs/n5+cPDw6+vr9/f38/Pz+fn5/39/fPz 86Wlpfj4+Onp6QAAACH5BAAAAAAALAAAAAD0ARsAAAThMMhJq7046827/2AojmRp nmiqrmzrtgZCAHRt33iu73zv/8CgcEgsGo/IpHLJbDqf0ChgcRg4pNisdsvter/g sHhsUwxm5LR6zW673/A4LVGQ2+/4vH7PhzYYfYGCg4SFhlsCAYeLjI2Oj32JkJOU lZaXTZKYm5ydnpOan6KjpKVuoaapqqusS6itsLGysq+ztre4m7W5vL2+g7u/wsPE bMHFyMnKUsfLzs/QQc3R1NXU09bZ2sTY297ftt3g4+Sm4uXo6Zjn6u3ujOzv8vN8 8fT3+G/2+fz9Yfv+AgpkJiECADs= ------------KLmYUyxWijRzsm8UGCbJ8E Content-Disposition: inline Content-Type: image/gif Content-Location: http://i.dell.com/images/global/config/carrot.gif Content-Transfer-Encoding: Base64 R0lGODlhBAAHAIABABdd/////yH5BAEAAAEALAAAAAAEAAcAAAIIRA4WaeyrVCgA Ow== ------------KLmYUyxWijRzsm8UGCbJ8E Content-Disposition: inline; filename=css.css Content-Type: text/css; charset=utf-8; name=css.css Content-Location: http://configure-cdn.us.dell.com/Dellstore/public/css.aspx?c=us&l=en&~set=%5Cconfig%5Cconfig80 Content-Transfer-Encoding: Quoted-Printable #asprodcount {display:none}#cluetip-close img {border: 0;}#cluetip-extra= {display: none;}#cluetip-title #cluetip-close {float: right;position: r= elative;}#cluetip-waitimage {width: 43px;height: 11px;position: absolute= ;background-image: url(http://i.dell.com/images/global/brand/ui/modal/wa= it.gif);}#cntTabs {position:relative;top:1px;left:0px;height:27px;margin= :0px;padding:0px;z-index:1;overflow:hidden}#cntTabs .current a {backgrou= nd-color:#ffffff; background:url(http://i.dell.com/images/global/brand/u= i/tabs/tab-left-current.gif) no-repeat right top;background-position:0px= 0px;}#cntTabs .current a span {font-weight:bold;height:16px;background:= url(http://i.dell.com/images/global/brand/ui/tabs/tab-right-current.gif)= no-repeat right top;background-position:100% 0px;}#cntTabs .current fon= t {color:#333333}#cntTabs a {background-color:#aaaaaa; float:left;backgr= ound:url(http://i.dell.com/images/global/brand/ui/tabs/tab-left.gif) no-= repeat left top;margin:0px;padding:0px 0px 0px 9px;text-decoration:none;= background-position:0px 0px;cursor:pointer;}#cntTabs a span {font-weight= :bold;float:left;display:block;background:url(http://i.dell.com/images/g= lobal/brand/ui/tabs/tab-right.gif) no-repeat right top;background-positi= on:100% 0px;padding:5px 13px 6px 0px;cursor:pointer;}#cntTabs font {text= -align:center;font-family:Arial;font-size:12px;border:none;position:rela= tive;display:inline;color:#ffffff;}#cntTabs img {border:none;position:re= lative;top:0px;display:inline;}#cntTabs table {border-collapse:collapse;= }#cntTabs td {border:none;padding:0px;}#cntTabsCnt {border:solid 1px #99= 9999;margin-right:0px;padding:5px 0px 0px 5px; overflow:visible;}#commun= ity a {color:#0066CC;}#community a.link {font-size:11px;padding-top:1px;= padding-left:11px;background:url( http://i.dell.com/images/global/brand/= ui/secondary.gif ) no-repeat 2px 0px;}#community a.lnk {font-size:11px;}= #community div.author {font-size:11px;color:#AAAAAA;}#community div.comm= unity_div {background-color:#FFFFFF;font-size:11px;overflow:hidden;heigh= t:0px;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=3D100) prog= id:DXImageTransform.Microsoft.Fade(duration=3D0.5)}#community div.commun= ity_flyout {z-index:5;display:none;border:1px solid #CCCCCC;background-c= olor:#ddf0fe;position:absolute;filter:progid:DXImageTransform.Microsoft.= Alpha(opacity=3D100) progid:DXImageTransform.Microsoft.Fade(duration=3D0= .15)}#community div.community_flyout_body {padding:5px 10px 5px 10px;fon= t-size:11px;overflow-y:auto;overflow-x:hidden;background-color:#ddf0fe;c= olor:#333333;}#community div.community_flyout_footer {font-size:11px;pad= ding:1px 10px 1px 10px;background-color:#FFFFFF;}#community div.communit= y_flyout_pagecount {font-size:11px;color:#333333;}#community div.communi= ty_flyout_title {padding:5px 10px 5px 10px;font-weight:bold;background-c= olor:#AAAAAA;text-align:left;font-size:11px;color:#FFFFFF;}#community di= v.community_frag {float:left;}#community div.community_frag_body {color:= #333333;padding:10px 10px 3px 10px;}#community div.community_frag_conten= t {float:left;padding:0px 10px 5px 10px;}#community div.date {font-size:= 11px;color:#AAAAAA;}#community div.description {font-size:11px;overflow:= hidden;color:#333333;}#community div.hdivider {background:url( http://i.= dell.com/images/global/brand/ui/hsep.gif ) repeat-x;}#community div.lnk_= next {font-size:11px;padding-top:1px;padding-right:12px;background:url( = http://i.dell.com/images/global/brand/ui/nextarrow.gif ) no-repeat cente= r right;}#community div.lnk_next_disabled {font-size:11px;color:#999999;= padding-top:1px;padding-right:12px;background:url( http://i.dell.com/ima= ges/global/brand/ui/nextarrowgray.gif ) no-repeat center right;}#communi= ty div.lnk_previous {font-size:11px;padding-top:1px;padding-left:12px;ba= ckground:url( http://i.dell.com/images/global/brand/ui/prevarrow.gif ) n= o-repeat center left;}#community div.lnk_previous_disabled {font-size:11= px;color:#999999;padding-top:1px;padding-left:12px;background:url( http:= //i.dell.com/images/global/brand/ui/prevarrowgray.gif ) no-repeat center= left;}#community div.postcaption {font-size:11px;}#community div.rsscap= tion {font-size:11px;}#community div.title {font-size:11px;overflow:hidd= en;font-weight:bold;color:#333333;}#community div.vdivider {background:u= rl( http://i.dell.com/images/global/brand/ui/vsep.gif ) repeat-y;}#commu= nity img.community_flyout_close {padding-right:3px;}#footerlinkstable {p= adding-left:15px;margin-top:0;padding-bottom:25px;}#footerlinkstable td = {width:197px;}#goSeek_lnk {display:none}#lease_paymentamount {color:#669= 933;font-size:9pt;font-weight:bold}#leasing_mol img {margin-right:5px;}#= mainlstcontainer {padding-top:30px}#navblock {float:left;width:555px;bor= der-right:#999999 solid 1px;}#navblockpopup {float:left;width:555px;}#no= padding {padding-top:0px}#noscript .activetab {z-index:2;height:25px;cur= sor:pointer;}#noscript .activetabcontent {font-weight:normal;font-size:1= 5px;white-space:nowrap;padding-left:0px;padding-right:39px;font-family:a= rial;color:#333;text-align:center;padding-top:5px;}#noscript .activetabc= ontent a, #noscript .activetabcontent a:hover, #noscript .activetabconte= nt a:visited, #noscript .activetabcontent a:active {color:#333;font-weig= ht:normal;}#noscript .crumbsel43selected {color:#333;font-family:arial,h= elvetica; font-size:11px;}#noscript .lnk_crumb43selected, #noscript .lnk= _crumb43selected:hover, #noscript .lnk_crumb43selected:visited, #noscrip= t .lnk_crumb43selected:active {color:#333;font-family:arial,helvetica; f= ont-size:11px;}#noscript a, #noscript a:hover, #noscript a:visited, #nos= cript a:active {color:#666;font-weight:normal;}#noscript div.logocontain= ernoscript {width:80px;}#noscript div.subnavlinkcontainerfirstnomenu {po= sition:static;padding-right:5px;padding-left:7px;background:url(http://i= .dell.com/images/global/brand/ui/storm80/secondarynavbgfirst.gif) no-rep= eat left top;}#noscript div.subnavlinkcontainerlastnomenu {position:stat= ic;padding-right:7px;padding-left:5px;background:url(http://i.dell.com/i= mages/global/brand/ui/storm80/secondarynavbglast.gif) no-repeat right to= p;}#noscript div.subnavlinkcontainernomenu {position:static;padding-righ= t:5px;padding-left:5px;}#noscript div.subnavlinkdivide {background:url(h= ttp://i.dell.com/images/global/brand/ui/storm80/secondarynavbgdivider.gi= f) repeat-x left bottom;width:2px;height:30px;}#noscript span.locale_sel= ector {color:#666;float:left;margin-left:10px;}#noscript span.message_bu= yonline {color:#666;float:left;}#noscript td.subnavlinkcell {background:= url(http://i.dell.com/images/global/brand/ui/storm80/secondarynavbg.gif)= repeat-x left bottom;height:30px;}#noscript td.subnavlinkcell a, #noscr= ipt td.subnavlinkcell a:hover, #noscript td.subnavlinkcell a:visited, #n= oscript td.subnavlinkcell a:active {color:#666;font-weight:bold;font-siz= e:11px;}#pbarcontainer #stormPbar .pbarlink {color:#0066cc;font-weight:b= old;}#pbarcontainer #stormPbar div.focartlinkmax {font-family:arial;font= -size:8pt;z-index:101;padding:1px 10px 0px 7px;border-right:1px #CCCCCC = solid;border-left:1px #CCCCCC solid;border-top:1px #CCCCCC solid;backgro= und-color:#bcbcbc;}#pbarcontainer #stormPbar div.focartlinkmin {font-fam= ily:arial;font-size:8pt;z-index:2;padding:1px 10px 0px 7px;border-right:= 1px #FFFFFF solid;border-left:1px #FFFFFF solid;border-top:1px #FFFFFF s= olid;background-color:#FFFFFF;}#pbarcontainer #stormPbar div.focartoffse= tmax {position:relative;background-color:#bcbcbc;border-left:1px solid #= CCCCCC;border-right:1px solid #CCCCCC;z-index:104;}#pbarcontainer #storm= Pbar div.focartoffsetmin {position:relative;background-color:#FFFFFF;z-i= ndex:1;}#pbarcontainer #stormPbar div.fomyaccountlinkmax {font-family:ar= ial;font-size:8pt;z-index:4;padding:1px 7px 0px 7px;border-right:1px #00= 0000 solid;border-left:1px #000000 solid;border-top:1px #000000 solid;ba= ckground-color:#EEEEEE;}#pbarcontainer #stormPbar div.fomyaccountlinkmin= {font-family:arial;font-size:8pt;z-index:2;padding:1px 7px 0px 7px;bord= er-right:1px #FFFFFF solid;border-left:1px #FFFFFF solid;border-top:1px = #FFFFFF solid;background-color:#FFFFFF;}#pbarcontainer #stormPbar div.fo= myaccountoffsetmax {position:relative;background-color:#EEEEEE;border-le= ft:1px solid #000000;border-right:1px solid #000000;z-index:4;}#pbarcont= ainer #stormPbar div.fomyaccountoffsetmin {position:relative;background-= color:#FFFFFF;z-index:1;}#pbarcontainer #stormPbar img.pbaricon {width:1= 7px; height:17px; padding-left:3px; padding-right:3px; float:left}#pbarc= ontainer div.flyoutcartbodymax {z-index:3;position:absolute;display:inli= ne;background-color:#FFFFFF;border:1px #000000 solid;}#pbarcontainer div= .flyoutcartbodymin {z-index:3;position:absolute;display:none;background-= color:#FFFFFF;border:1px #000000 solid;}#pbarcontainer div.flyoutcartlin= kmax {font-family:arial;font-size:8pt;z-index:4;position:relative;paddin= g-left:7px;padding-right:10px;float:left;padding-top:1px;padding-bottom:= 0px;border-right:1px #000000 solid;border-left:1px #000000 solid;border-= top:1px #000000 solid;background-color:#FFFFFF;}#pbarcontainer div.flyou= tcartlinkmin {font-family:arial;font-size:8pt;z-index:2;position:relativ= e;padding-left:7px;padding-right:10px;float:left;padding-top:1px;padding= -bottom:0px;border-right:1px #FFFFFF solid;border-left:1px #FFFFFF solid= ;border-top:1px #FFFFFF solid;background-color:#FFFFFF;}#pbarcontainer d= iv.flyoutdivide {width:1px;float:left;padding:0px;margin:0px;}#pbarconta= iner div.flyoutmyaccountbodymax {z-index:3;position:absolute;display:inl= ine;background-color:#EEEEEE;border:1px #000000 solid;}#pbarcontainer di= v.flyoutmyaccountbodymin {z-index:3;position:absolute;display:none;backg= round-color:#FFFFFF;border:1px #000000 solid;}#pbarcontainer div.flyoutm= yaccountlinkmax {font-family:arial;font-size:8pt;z-index:4;position:rela= tive;padding-left:7px;padding-right:7px;float:left;padding-top:1px;paddi= ng-bottom:0px;border-right:1px #000000 solid;border-left:1px #000000 sol= id;border-top:1px #000000 solid;background-color:#EEEEEE;}#pbarcontainer= div.flyoutmyaccountlinkmin {font-family:arial;font-size:8pt;z-index:2;p= osition:relative;padding-left:7px;padding-right:7px;float:left;padding-t= op:1px;padding-bottom:0px;border-right:1px #FFFFFF solid;border-left:1px= #FFFFFF solid;border-top:1px #FFFFFF solid;background-color:#FFFFFF;}#p= barcontainer div.focartbodymax {z-index:100;position:absolute;display:in= line;background-color:#FFFFFF;border:1px #CCCCCC solid;}#pbarcontainer d= iv.focartbodymin {z-index:3;position:absolute;display:none;background-co= lor:#FFFFFF;border:1px #CCCCCC solid;}#pbarcontainer div.fodivide {width= :1px;float:left;padding:0px;margin:0px;}#pbarcontainer div.fomyaccountbo= dymax {z-index:3;position:absolute;display:inline;background-color:#EEEE= EE;border:1px #000000 solid;}#pbarcontainer div.fomyaccountbodymin {z-in= dex:3;position:absolute;display:none;background-color:#FFFFFF;border:1px= #000000 solid;}#pbarcontainer div.fotoolboxbodymax {z-index:100;positio= n:absolute;display:inline;background-color:#FFFFFF;border:1px #CCCCCC so= lid;}#pbarcontainer div.fotoolboxbodymin {z-index:3;position:absolute;di= splay:none;background-color:#FFFFFF;border:1px #CCCCCC solid;}#pbarconta= iner div.fotoolboxlinkmax {font-family:arial;font-size:8pt;z-index:101;p= adding:1px 10px 0px 7px;border-right:1px #CCCCCC solid;border-left:1px #= CCCCCC solid;border-top:1px #CCCCCC solid;background-color:#FFFFFF;}#pba= rcontainer div.fotoolboxlinkmin {font-family:arial;font-size:8pt;z-index= :2;padding:1px 10px 0px 7px;border-right:1px #FFFFFF solid;border-left:1= px #FFFFFF solid;border-top:1px #FFFFFF solid;background-color:#FFFFFF;}= #pbarcontainer div.fotoolboxoffsetmax {position:relative;background-colo= r:#FFFFFF;border-left:1px solid #CCCCCC;border-right:1px solid #CCCCCC;z= -index:104;}#pbarcontainer div.fotoolboxoffsetmin {position:relative;bac= kground-color:#FFFFFF;z-index:1;}#pbarcontent a.cartLinkPrevNext {paddin= g:0px;margin:0px;color:#0066CC;font-family:arial;font-size:11px;}#pbarco= ntent div.acctContent {padding:10px;}#pbarcontent div.actionlink {paddin= g-top:1px;padding-left:19px;height:18px;background:url( http://i.dell.co= m/images/global/brand/ui/primary.gif ) no-repeat top left;}#pbarcontent = div.actionlink a.link {font-family:arial;font-size:8pt;}#pbarcontent div= .cartButton {float:right;padding-right:10px;}#pbarcontent div.cartButton= MODIFIED {float:left;padding-right:10px;}#pbarcontent div.cartContent {p= adding:10px;}#pbarcontent div.cartItem {padding:10px;}#pbarcontent div.c= artItems {float:left;font-family:arial;font-size:11px;color:#333333;}#pb= arcontent div.cartItems_bold {float:left;font-family:arial;font-weight:b= old;font-size:11px;color:#333333;}#pbarcontent div.cartItems_error {floa= t:left;font-family:arial;font-size:11px;color:red;}#pbarcontent div.cart= PrevNext {color:#0066CC;float:right;font-family:arial;font-size:11px;}#p= barcontent div.cartRow {}#pbarcontent div.cartspacer {float:left;}#pbarc= ontent div.cartSubTotal {float:right;text-align:right;font-weight:bold;f= ont-family:arial;font-size:9pt;color:#669933;}#pbarcontent div.cartSubTo= talCaption {float:left;text-align:right;font-weight:bold;font-family:ari= al;font-size:11px;color:#333333;}#pbarcontent div.cartSubTotalRow {float= :left;padding-left:10px;padding-right:10px;padding-top:5px;padding-botto= m:5px;height:15px;background-color:#ddf0fe;}#pbarcontent div.cartTopInfo= {padding-left:10px;padding-right:10px;padding-top:5px;padding-bottom:5p= x;background-color:#ddf0fe;height:15px;}#pbarcontent div.empty_cart_intr= o {font-family:arial;font-size:8pt;align:center;color:#333333;padding:10= px;}#pbarcontent div.greenBtn {float:right;white-space:nowrap; backgroun= d-repeat:no-repeat;cursor:pointer;}#pbarcontent div.greenBtnLeft {backgr= ound-image:url(http://i.dell.com/images/global/brand/cart/left_GreenButt= on.png); float:left; height:17px; width:9px;background-repeat:no-repeat;= cursor:pointer;}#pbarcontent div.greenBtnMid {background-image:url(http:= //i.dell.com/images/global/brand/cart/middle_GreenButton.png); float:lef= t; height:17px; padding-top:1px; padding-left:5px;padding-right:5px; bac= kground-repeat:repeat-x; font-family:arial,helvetica; font-size:11px;col= or:#FFFFFF; cursor:pointer;text-decoration:none;}#pbarcontent div.greenB= tnRight {background-image:url(http://i.dell.com/images/global/brand/cart= /right_GreenButton.png); float:left; height:17px; width:9px; background-= repeat:no-repeat;cursor:pointer;}#pbarcontent div.intro {font-family:ari= al;font-size:8pt;align:center;color:#333333;}#pbarcontent div.lnk_next {= float:left;font-size:11px;padding-top:1px;padding-right:12px;background:= url( http://i.dell.com/images/global/brand/ui/nextarrow.gif ) no-repeat = center right;}#pbarcontent div.lnk_next_disabled {float:left;font-size:1= 1px;color:#999999;padding-top:1px;padding-right:12px;background:url( htt= p://i.dell.com/images/global/brand/ui/nextarrowgray.gif ) no-repeat cent= er right;}#pbarcontent div.lnk_previous {font-size:11px;float:left;paddi= ng-top:1px;padding-left:12px;background:url( http://i.dell.com/images/gl= obal/brand/ui/prevarrow.gif ) no-repeat center left;}#pbarcontent div.ln= k_previous_disabled {font-size:11px;float:left;color:#999999;padding-top= :1px;padding-left:12px;background:url( http://i.dell.com/images/global/b= rand/ui/prevarrowgray.gif ) no-repeat center left;}#pbarcontent div.logi= nerror {color:red;font-family:arial;font-size:8pt;}#pbarcontent div.pbar= content {z-index:4;width:228px;padding:10px;}#pbarcontent div.pbarconten= tcart {position:absolute;z-index:102;width:248px;}#pbarcontent div.pbars= pacer {float:left;height:5px;}#pbarcontent div.productDesc {width:100px;= overflow:hidden;float:left;padding-left:3px;}#pbarcontent div.productDiv= ide {height:11px;background:url( http://i.dell.com/images/global/brand/u= i/hsep.gif );}#pbarcontent div.productImage {width:60px;float:left;paddi= ng-left:3px;}#pbarcontent div.productPrice {font-family:arial;font-size:= 11px;color:#669933;text-align:right;width:60px;float:right;font-weight:b= old;}#pbarcontent div.silverBtn {float:left;white-space:nowrap; backgrou= nd-repeat:no-repeat; cursor:pointer;}#pbarcontent div.silverBtnLeft {bac= kground-image:url(http://i.dell.com/images/global/brand/cart/left_silver= Button.png); float:left; height:17px; width:8px;background-repeat:no-rep= eat;cursor:pointer;}#pbarcontent div.silverBtnMid {background-image:url(= http://i.dell.com/images/global/brand/cart/middle_silverButton.png); flo= at:left; height:17px; padding-top:1px; background-repeat:repeat-x; font-= family:arial,helvetica; font-size:11px; color:#333333;cursor:pointer;tex= t-decoration:none;}#pbarcontent div.silverBtnRight {background-image:url= (http://i.dell.com/images/global/brand/cart/right_silverButton.png); flo= at:left; height:17px; width:8px; background-repeat:no-repeat;cursor:poin= ter;}#pbarcontent div.simpleButton {padding-left:5px;padding-right:5px;}= #pbarcontent div.simpleButtonMODIFIED {}#pbarcontent div.simpledesc {fon= t-family:arial;font-size:8pt;}#pbarcontent div.simplelink {padding-left:= 7px;background:url( http://i.dell.com/images/global/brand/ui/secondary.g= if ) no-repeat top left;color:#0066CC;}#pbarcontent div.simplelink a.lin= k {font-family:arial;font-size:8pt;color:#0066CC;}#pbarcontent div.simpl= etext {font-family:arial;font-size:8pt;}#pbarcontent span.cartItemsBold = {font-weight:bold;font-family:arial;font-size:11px;color:#333333;}#pbarc= ontent span.productBasePrice {font-family:arial;font-size:9pt;}#pbarcont= ent span.productDiscount {font-family:arial;font-size:8pt;color:red;}#pb= arcontent span.productQuantity {font-family:arial;font-size:11px;color:#= 333333;}#pbarcontent span.productQuantityValue {font-family:arial;font-w= eight:bold;font-size:8pt;color:#0066CC}#pbarcontent span.productTitle {o= verflow:hidden;font-weight:bold;font-family:arial;font-size:9pt;color:#3= 33333;}#reviseprompt {padding-left:8px}#selecttext {width:180px;overflow= :hidden;display:none}#standardModel {overflow:visible;position:absolute;= }* html .pmMenu {filter:progid:DXImageTransform.Microsoft.Shadow(streng= th=3D3,color=3D#999999,direction=3D135) alpha(opacity=3D93);opacity: .93= ; }* html .pmSubTitle {background-image:none; filter:progid:DXImageTran= sform.Microsoft.AlphaImageLoader(src=3D'http://i.dell.com/images/global/= buttons/homepage/menumask_96x28.png',sizingMethod=3D'scale') progid:DXI= mageTransform.Microsoft.Alpha(opacity=3D93);}* html .jqmWindow {positio= n: absolute;}* html body.masked select {visibility:hidden;}* html div.dr= ag select {visibility:hidden;}* html div.hide-select select {visibility:= hidden;}* html div.yui-panel-container select {visibility:inherit;}* ifr= ame.jqm {position:absolute;top:0;left:0;z-index:-1;}A {color:#0066CC; t= ext-decoration:none; font-family:arial,helvetica;}a.closeglossaryitem {f= ont-size:8pt; vertical-align: middle; cursor:pointer; color:#ffffff; flo= at: right; margin-right: 10px; z-index:100;}a.closeglossaryitem:visited = {font-size:8pt; vertical-align: middle; cursor:pointer; color:#ffffff; f= loat: right; margin-right: 10px; z-index:100;}a.detailsdesc,a.detailsdes= c:active,a.detailsdesc:hover,a.detailsdesc:visited {color:#F7ED09;font-f= amily:arial;font-size:11px;}A.fnavnor:visited {color:#3333FF;}A.fnavsel:= visited {font-weight:bold; color:#666666;}A.learnmore {background-image:= url(http://i.dell.com/images/global/brand/ui/learnmore_lt42.gif); backgr= ound-repeat:no-repeat; padding:0px 6px 0px 18px; font-weight:normal; fon= t-size:8pt; font-family:arial,helvetica; vertical-align:top;}A.leasing_p= romo {font-family:arial,helvetica;font-size:8pt;color:#cc6600;}A.leasing= _promo:visited {font-family:arial,helvetica;font-size:8pt;color:#cc6600;= }A.lnk_secondarystorelink {font-family:arial,helvetica; font-size:8pt; c= olor:#669933;}A.lnk_secondarystorelink:active {text-decoration:none; fon= t-family:arial,helvetica; font-size:8pt; color:#669933;}A.lnk_secondarys= torelink:hover {text-decoration:underline; font-family:arial,helvetica; = font-size:8pt; color:#669933;}A.lnk_secondarystorelink:visited {font-fam= ily:arial,helvetica; font-size:8pt; color:#669933;}A.logolink:active {TE= XT-DECORATION: none}A.logolink:hover {TEXT-DECORATION: none}A.logolink:v= isited {TEXT-DECORATION: none}A.popuplinks {font-family:arial; font-size= :8pt; color:#ffffff;text-decoration:underline}a.snvlrg_hp {font-size:9pt= ; padding-left:18px; background:url(http://i.dell.com/images/global/bran= d/icons/viewlarger.gif) no-repeat center left; line-height:20px}a.snvreg= _hp {font-size:9pt; padding-left:18px; background:url(http://i.dell.com/= images/global/brand/icons/viewsmaller.gif) no-repeat center left; line-h= eight:20px}a.titledisplay, a.titledisplay:active,a.titledisplay:hover,a.= titledisplay:visited {font-family:Univers LT Std 67 condensed;font-weigh= t:bold;font-size:14px;color:white}a.unvisited {color:blue;margin:0px;pad= ding:0px;text-decoration:none;}a.unvisited:hover {color:blue;margin:0px;= padding:0px;text-decoration:underline;}a.unvisited:visited {color:blue;m= argin:0px;padding:0px;text-decoration:none;}a.viewallrefclass, a.viewall= refclass:active,a.viewallrefclass:hover,a.viewallrefclass:visited {color= :white;font-size:13px;font-family:Univers LT Std 67 condensed;font-weigh= t:bold}A:active {color:#0066CC; text-decoration:underline}A:hover {color= :#0066CC;text-decoration:underline}A:visited {color:#245493;}A:visited.r= gSpecialBulletedList {color:#CC6600;}blockquote.sc_bq {margin:0px 0px 2p= x 0px;}BODY {font-family:arial,helvetica; margin-left:0px; margin-top:0p= x; margin-right:0px; margin-bottom:0px;}body.bodyNextGen {}body.bodyStor= m {background-color:#FFF;}div.addToCart {margin-left:10px}div.bodycontai= ner {background-color:#FFF;padding-bottom:10px;}div.bodycontainer .cente= rtable {background-color:#FFF;}div.breadcrumbcontainer {clear:left;paddi= ng-left: 15px; vertical-align: middle}div.breadcrumbcontainerfooter {hei= ght:22px; clear:left;padding-top:4px; padding-left: 15px; vertical-align= : middle;border-bottom: 1px inset #999999;border-top: 1px outset #999999= ;}div.breadcrumbcontainerhp {clear:left;text-align:left;}div.cgimpactl {= background:url(http://i.dell.com/images/global/brand/ui/impactl_new.gif)= no-repeat top left; width:6px; height:6px; float:left}div.cgimpactr {ba= ckground:url(http://i.dell.com/images/global/brand/ui/impactr_new.gif) n= o-repeat top left; width:6px; height:6px; float:right}div.clearFloat {cl= ear:both}div.evalNoSpacing {margin:0px; padding:0px;}div.evalRight {back= ground:url(http://i.dell.com/images/global/general/icons/content_evalue.= gif) no-repeat 0px 2px; padding-left:26px; margin-left:5px}div.fheader {= float:left;padding-bottom:8px}div.fheader h1 {z-index:-1;position:absolu= te;font-size:6pt;left:-1500px}div.flashseocontent {z-index:-1;position:a= bsolute;left:-1500px;font-size:6pt;font-size:10pt;overflow:hidden;}div.f= lashseocontentdev {font-size:6pt;font-size:10pt;overflow:hidden;}div.foo= tercontainer {color:#666;background-color:#FFF;border-top:2px solid #E2E= 2E2;}div.footercontainer .crumbsel43 {color:#666;font-family:arial,helve= tica; font-size:11px;}div.footercontainer .crumbsel43selected {color:#33= 3;font-family:arial,helvetica; font-size:11px;}div.footercontainer .lnk_= crumb43 {color:#666;font-family:arial,helvetica; font-size:11px;}div.foo= tercontainer .lnk_crumb43selected, div.footercontainer .lnk_crumb43selec= ted:hover, div.footercontainer .lnk_crumb43selected:visited, div.footerc= ontainer .lnk_crumb43selected:active {color:#333;font-family:arial,helve= tica; font-size:11px;}div.footercontainer .para_crumb_43 {position:relav= ite;float:left;color:#666;font-family:arial,helvetica; font-size:11px;}d= iv.footercontainer a, div.footercontainer a:visited, div.footercontainer= a:active {color:#666;text-decoration:none;}div.footercontainer a:hover = {color:#666;text-decoration:underline;}div.footerlogo, div.footerlogoIE6= {float:left;width:65px;height:20px;background:url(http://i.dell.com/ima= ges/global/brand/ui/nxgen/dell_65x20.png ) no-repeat left center;}div.fr= agvall {background-color:#e4e4e4; padding:3px 10px 0px 10px; white-space= :nowrap; font-size:8pt; font-family:arial,helvetica; vertical-align:top;= float:right; height:25px}div.greenBtn {float:right;white-space:nowrap; = background-repeat:no-repeat;cursor:pointer;}div.greenBtnLeft {background= -image:url(http://i.dell.com/images/global/brand/cart/left_GreenButton.p= ng); float:left; height:17px; width:9px;background-repeat:no-repeat;curs= or:pointer;}div.greenBtnMid {background-image:url(http://i.dell.com/imag= es/global/brand/cart/middle_GreenButton.png); float:left; height:17px; p= adding-top:1px; background-repeat:repeat-x; font-family:arial,helvetica= ; font-size:11px;color:#FFFFFF; cursor:pointer;text-decoration:none;}div= .greenBtnRight {background-image:url(http://i.dell.com/images/global/bra= nd/cart/right_GreenButton.png); float:left; height:17px; width:9px; back= ground-repeat:no-repeat;cursor:pointer;}div.hsep {clear:both; padding-to= p:6px; padding-bottom:6px; background:url(http://i.dell.com/images/globa= l/brand/ui/hsep.gif) repeat-x; background-position: center; line-height:= 20px}div.icon {float:left}div.iconH {float:left;}div.icons {clear:both;m= argin-top:5px;}div.iconsH {margin-left:25px; clear:both}div.image_overla= y {position:absolute;margin:0px;padding:0px;border-width:0px;}div.lang_s= elector {font-family:arial; font-size:8pt;height:20px;white-space:nowrap= ;padding-right:5px;}div.legalcontainer {color:#666;padding-left:8px;padd= ing-right:8px;background-color:#FFF;}div.legalcontainer .para_small {col= or:#666;}div.legalcontainer .para_small a {color:#666;padding-left:8px;p= adding-right:8px;font-size:11px;}div.legalcontainer .para_small a.oplabs= {margin-left:8px;padding-left:12px;background-image:url(http://i.dell.c= om/images/global/brand/ui/storm80/oo_666.gif); background-repeat:no-repe= at;background-position: center left;}div.legalcontainer a, div.legalcont= ainer a:visited, div.legalcontainer a:active {color:#666;text-decoration= :none;}div.legalcontainer a:hover {color:#666;text-decoration:underline;= }div.legalcontainer div.snvlrg {padding-left:16px;float:right;font-size:= 11px; background:url(http://i.dell.com/images/global/brand/ui/storm80/vi= ewlarger.jpg) no-repeat center left; line-height:11px}div.legalcontainer= div.snvreg {padding-left:16px;float:right;font-size:11px; background:ur= l(http://i.dell.com/images/global/brand/ui/storm80/viewsmaller.jpg) no-r= epeat center left; line-height:16px}div.locale_selector {width:720px;pos= ition:relative;text-align:center;padding:0px;}div.locale_selectorhp {wid= th:720px;position:relative;padding:0px;text-align:center;}div.logocontai= ner {position:relative;z-index:2;width:70px; float:left}div.logocontaine= rhp {height:24px;position:relative;z-index:2;width:86px; float:left;padd= ing-top:10px;}div.manuallinks {clear:both;float:left;}div.mastheadcontai= ner {padding-left:8px;padding-right:8px;background:url(http://i.dell.com= /images/global/brand/ui/storm80/bg_img_line.gif) repeat-x top left;backg= round-color:#FFFFFF;border-bottom:2px solid #E2E2E2;}div.mdabarcontainer= popup {padding:10px 0 0 0;height:27px; background:url( http://i.dell.com= /images/global/masthead/mdabarbg.jpg ) repeat-x bottom; clear:both}div.m= essage_buyonline {font-family:arial; font-size:8pt;}div.message_buyonlin= e_hp {font-family:arial; font-size:8pt;vertical-align:middle;}div.modalF= ooter {valign:bottom;}div.navigation {position:absolute;margin:0px;paddi= ng:0px;font-family:arial,verdana,helvetica,sans-serif;font-size:14px;}di= v.pbarcontainer {z-index:7;position:relative;font-family:arial; font-siz= e:8pt;}div.pbarlinks {padding-top:2px;white-space:nowrap;position:relati= ve;font-family:arial; font-size:9pt;}div.point {background:url(http://i.= dell.com/images/global/general/bullet.gif) no-repeat 0px 3px; padding-le= ft:10px; font-size:9pt; overflow:visible}div.point_small {background:url= (http://i.dell.com/images/global/general/bullet.gif) no-repeat 0px 3px; = padding-left:10px; font-size:8pt; overflow:visible}div.popup_content {po= sition:absolute;margin:0px;background-color:white;background-repeat:repe= at-y;font-family:arial,verdana,helvetica,sans-serif;font-size:12px;paddi= ng:4px;color:black;border:1px solid black;}div.precontentContainer {padd= ing-left:8px;padding-right:8px;background-color:#FFF;}div.prmblt {paddin= g:0px 0px 13px 11px; font-size:9pt;}div.prmbltNP {padding:0px 0px 0px 11= px; font-size:9pt;}div.prmr0 {background-color:#f5f5f5; padding:8px}div.= prmr1 {background-color:white; padding:8px}div.psCaption {font-family:ar= ial,helvetica; font-weight:normal; font-size:11px;}div.psConfigLink {lin= e-height: 20px;}div.psContainer {margin: 5px 5px 5px 5px}div.psImage {he= ight:70px;}div.psImageContainer {float:right;width:70px;margin: 5px 0px = 0px 0px;padding-top:5px;}div.psItem {border-top: 1px #CCCCCC solid; marg= in: 5px 0px 5px 0px;}div.psItemDescription {margin: 5px 0px 0px 0px;}div= .psPrice {padding-top:5px;}div.psRatingImage { width:70px;}div.psTeaser = {font-family:arial,helvetica; color : #0066CC;font-weight:normal; font-s= ize:11px;}div.psTitle {font-family:arial,helvetica; font-weight:bold; fo= nt-size:11px;}div.rgBody {margin-top:10px;padding-right:5px; margin-left= :5px}div.rgBodyNoTopV {margin-left:10px; margin-right:10px; margin-botto= m:1px;}div.rgBodyV {margin-left:10px; margin-right:10px; margin-bottom:1= px; border-top: 1px solid #eeeeee}div.rgDescription {font-size:11px; col= or:#666666;font-family:arial,helvetica; font-weight:bold; margin-left:10= px}div.rgDescriptionV {margin-left:0px; margin-right:0px; margin-bottom:= 0px; margin-top:0px; margin-bottom:2px; font-size:11px; color:#666666;fo= nt-family:arial,helvetica; font-weight:bold; border-top:0px}div.rgDetail= s {}div.rgDocImg {height:100px; padding-top:10px}div.rgDocImgV {height:1= 00px; width:100px; }div.rgDocRating {padding-top:10px; padding-bottom:10= px}div.rgDocRatingV {}div.rgFooter {border-top:1px solid #EEEEEE; height= :40px; clear:both}div.rgFooterV {height:40px; clear:both}div.rgLink {flo= at:left; padding-right:10px; padding-top:4px}div.rgLinkCenter {top:25%;}= div.rgLinkCenterV {}div.rgLinks {float:right;}div.rgLinksV {border-botto= m:0px;padding-top:2px}div.rgLinkV {}div.rgPrice {width:150px; text-align= :left; padding-bottom:10px}div.rgPriceV {padding-top:10px;padding-bottom= :10px}div.rgTitle {font-size:12px; color:#333333; font-family:arial,helv= etica; font-weight:bold; margin-left:10px}div.rgTitleV {margin-left:0px;= margin-right:0px; margin-bottom:0px; margin-top:5px; font-size:12px; co= lor:#333333; font-family:arial,helvetica; font-weight:bold; border-top:0= px}div.rowsolid h2.titlestylesolid {padding:3px 0px 0px 10px}div.sc_reta= il {text-decoration:line-through;font-size:9pt;margin:2px 0px 0px 0px;}d= iv.sc_sale {border:inset 1px #E7ECF0;padding:0px;background-color:#fffff= f;margin:0px 0px 6px 0px;height:30px;}div.sc_salecontainer {filter: alph= a(opacity=3D100);background-color:#ffffff;padding:0px;margin:1px;color:#= 990000;height:30px;}div.sc_salecontainer table {border-collapse:collapse= ;}div.sc_saletext {font-size:8pt;color:#990000;}div.searchcontainerhp {f= ont-family:arial; font-size:9pt;width:100%;height:22px;vertical-align:mi= ddle;text-align:right;}div.secAlgnLeft {float:left}div.secCell {float:le= ft; padding:5px}div.secLinkhardTitleSep {background:url(http://i.dell.c= om/images/global/brand/title/hardsep.gif) repeat-x 0px 10px; height:24px= }div.secLinkhSep { clear:both; background:url(http://i.dell.com/images/g= lobal/brand/ui/hsep.gif) repeat-x 0px 0px; height:17px}div.secondarynavc= ontainerhp {width:100%;height:22px;clear:right; float:right;border:none= ;}div.silverBtn {float:right;white-space:nowrap; background-repeat:no-re= peat; cursor:pointer;}div.silverBtnLeft {background-image:url(http://i.d= ell.com/images/global/brand/cart/left_silverButton.png); float:left; hei= ght:17px; width:8px;background-repeat:no-repeat;cursor:pointer;}div.silv= erBtnMid {background-image:url(http://i.dell.com/images/global/brand/car= t/middle_silverButton.png); float:left; height:17px; padding-top:1px; ba= ckground-repeat:repeat-x; font-family:arial,helvetica; font-size:11px; c= olor:#333333;cursor:pointer;text-decoration:none;}div.silverBtnRight {ba= ckground-image:url(http://i.dell.com/images/global/brand/cart/right_silv= erButton.png); float:left; height:17px; width:8px; background-repeat:no-= repeat;cursor:pointer;}div.simpleButton {padding-left:10px;padding-right= :10px;float:right;}div.simplelink {padding-left:7px;background:url( http= ://i.dell.com/images/global/brand/ui/secondary.gif ) no-repeat top left;= color:#0066CC;}div.simplelink a.link {font-family:arial;font-size:8pt;co= lor:#0066CC;}div.simplemastheadcontainer {padding-left:8px;padding-right= :8px;background-color:#FFFFFF;height:81px;border-bottom:2px solid #E2E2E= 2;}div.simplemastheadcontainer div.footerlogo {float:left;width:61px;hei= ght:81px;background:url(http://i.dell.com/images/global/brand/ui/storm80= /logo80.png) no-repeat left center;}div.simplemastheadcontainer div.foot= erlogoIE6 {float:left;width:61px;height:81px;background:url(http://i.del= l.com/images/global/brand/ui/storm80/logo80.gif) no-repeat left center;}= div.snsec {padding:0px 0px 3px 3px; font-size:9pt; background:url(http:/= /i.dell.com/images/global/brand/ui/secondary.gif) no-repeat 0px 2px; lin= e-height:20px}div.snsec div.sn {padding-left:10px}div.snsec div.snlk a {= padding-left:10px;white-space:nowrap}div.snvlrg {padding-left:20px;font-= size:11px;background:url(http://i.dell.com/images/global/brand/icons/vie= wlarger.gif) no-repeat top left; line-height:20px}div.snvlrg_hp {font-si= ze:9pt; line-height:20px}div.snvreg {padding-left:20px;font-size:11px;ba= ckground:url(http://i.dell.com/images/global/brand/icons/viewsmaller.gif= ) no-repeat top left; line-height:20px}div.snvreg_hp {font-size:9pt; lin= e-height:20px}div.srchrd {font-family:arial,helvetica;font-size:9pt;}div= .srchRdHr {}div.srchrdpryicon {width:24px;height:24px;cursor:pointer;flo= at:left; background:url(http://i.dell.com/images/global/brand/ui/primary= .gif) no-repeat 3px 3px}div.staticbetacontainer {display:none;}div.subna= vcontainerhidden {display:none;z-index:1;position:relative; height:21px;= background:url(http://i.dell.com/images/global/masthead/secondarybg.jpg= ) repeat-x; padding-left:7px; clear:left}div.subtitle_overlay {position:= absolute;margin:0px;padding:0px;font-family:arial,verdana,helvetica,sans= -serif;font-size:14px;font-weight:bold;}div.technotescontainer {color:#6= 66;padding-right:8px;padding-left:8px;background-color:#FFF;}div.technot= escontainer #disclaimers div {color:#666;padding-top:10px;font-size:9px;= }div.technotescontainer #footer div {color:#666;font-size:9px;}div.techn= otescontainer a, div.technotescontainer a:visited, div.technotescontaine= r a:active {color:#CCC;text-decoration:none;}div.technotescontainer a:ho= ver {color:#CCC;text-decoration:underline;}div.tertiarynavcontainer {pad= ding-left:8px;padding-right:8px;background-color:#FFF;}div.tertiarynavco= ntainer .centertable {background-color:#FFF;height:20px;}div.tertiarynav= container a.lnk_crumb {color:#39C;font-size:12px;}div.tertiarynavcontain= er td.lnk_crumb {color:#39C;font-size:12px;cursor:pointer;}div.text_over= lay {position:absolute;margin:0px;padding:0px;font-family:arial,verdana,= helvetica,sans-serif;font-size:14px;}div.title_overlay {position:absolut= e;margin:0px;padding:0px;font-family:arial,verdana,helvetica,sans-serif;= font-size:24px;}div.verSpacing { padding-top:2px; padding-bottom:2px}FOR= M {padding:0;margin:0;}h1.ofheader {font-weight:normal; font-family:aria= l,helvetica; font-size:16pt;}h2.h2para_intropara {margin-top:0px; margin= -bottom:0px}h2.titlestylesolid {font-family:arial,helvetica; font-size:9= pt; color:white; font-weight:bold; margin-top:0; margin-bottom:0}h3.h3pa= ra_intropara {margin-top:0px; margin-bottom:0px}h3.titlestylesolid {font= -family:arial,helvetica; font-size:9pt; color:white; font-weight:bold; m= argin-top:0; margin-bottom:0}img.busyicon {opacity: 1.0}img.logo {WIDTH:= 60px; HEIGHT: 60px}img.logohp {WIDTH: 86px; HEIGHT: 24px}img.pointer {p= adding-left:5px;}li.lnav {font-size:10px;font-family:arial,helvetica;ver= tical-align:middle;padding:0px;margin:0px;}span.glossaryitem {cursor:poi= nter; text-decoration: none; border-bottom: dotted 1px blue}span.glossar= yitem#active {text-decoration: none; cursor:pointer; border-bottom: dott= ed 1px blue}span.glossaryitem#hover {text-decoration: none; cursor:point= er; border-bottom: dotted 1px blue}span.glossaryitem_nodecoration {curso= r:pointer; text-decoration: none;}span.glossaryitem_nodecoration#active = {text-decoration: none; cursor:pointer;}span.glossaryitem_nodecoration#h= over {text-decoration: none; cursor:pointer;}span.mdainfo {float:left;wi= dth:99%;padding:2px 0px 10px 15px; font-weight: bold; font-size:9pt; fon= t-family: arial,helvetica}span.sc_saleprice {color:#669933;font-weight:b= old;font-size:24px;padding:0px;margin:-2px 0px 0px 0px;}TD {font-family:= arial,helvetica; font-size:9pt;}TD.comparelet_tbl {vertical-align:top;pa= dding-left:15px;padding-right:10px;padding-top:5px;padding-bottom:5px;}t= d.result_borders {border-top:1px solid #cccccc;}td.result_rightborder {b= order-right: 1px solid #cccccc;}ul.linkgroup {position:absolute;padding:= 0px;margin:0px;list-style-position:inside;font-family:arial,verdana,helv= etica,sans-serif;color:blue;font-size:12px;list-style-type:disc;}ul.lnav= {margin:0px;padding:0px;list-style:none;padding-left:1em;text-indent:-1= em;}.ac_loading {background: white right center no-repeat;}.ac_over {bac= kground-color: #eeeeee;}.ac_results {padding: 0px; border: 1px solid bla= ck; background-color: white; overflow: hidden; z-index: 99999;}.ac_resul= ts li {margin: 0px; padding: 2px 5px; cursor: default; display: block; f= ont: menu; font-size:12px; line-height: 16px; overflow: hidden;}.ac_resu= lts ul {width: 100%; list-style-position: outside; list-style: none; pad= ding: 0; margin: 0;}.accessGroupLabel {font-size:11px; font-family:arial= ,helvetica;}.accessgrpcls {width:380px}.adhoccontainerclass2 {background= -color:#E4E4E4;}.adhoccontainerclass3 {background-image:url(http://i.del= l.com/images/global/builder/tabs/bu_tab_background_1px.png);}.alienwareP= dDescription {font-size:12px;color:#FFFFFF}.alienwarePdDescriptionTitle = {font-size:17px;font-weight:bold;color:#FFFFFF}.asqstyle {font-weight:bo= ld;font-size:14px;display:block;font-family:Arial;padding-top:30px;clear= :both;}.asst_seeker_number {font-family:arial;font-size:14px;font-weight= :bold;color:#669933;}.asstpricenumberselector {color:#669933;font-size:3= 0px;font-weight:bold;font-family:Arial}.asstpriceselector {position:abso= lute;font-size:14px;font-color:#666666;font-family:Arial;font-weight:bol= d;padding-left:15px;float:left}.bcbg {background-color:#CCCCCC;}.bluebac= kground {background-color:#DDF0FE;}.bluefragtitle {padding:4px 0px 0px 1= 0px;background-color:#666666; vertical-align:top;font-family:arial,helve= tica;font-size:11px;color:white;font-weight:bold;height:21px}.breadcrumb= _completed {font-family:arial,helvetica,sans-serif;font-size:8pt;color:B= lue;}.breadcrumb_major {font-family:arial,helvetica,sans-serif;font-size= :8pt;font-weight:bold;color:Black;}.breadcrumb_minor {font-family:arial,= helvetica,sans-serif;font-size:8pt;color:#cccccc;}.breadcrumb_not_comple= ted {font-family:arial,helvetica,sans-serif;font-size:8pt;color:#999999;= }.breadcrumb_start {font-family:arial,helvetica,sans-serif;font-size:8pt= ;color:Black;}.breadcrumb_visited {font-family:arial,helvetica,sans-seri= f;font-size:8pt;color:Blue;}.btn_compare {font-family:arial,helvetica; f= ont-size:8pt;line-height:1.4em; border-top: solid 2px #ECECEC; border-ri= ght: solid 2px #000000;border-left: solid 2px #ECECEC; border-bottom: so= lid 2px #666666; cursor:pointer; cursor:pointer;padding:2px 5px 2px; tex= t-decoration:none; white-space:nowrap; height:18px; background-color: #C= 0C0C0;}.btn_compare_new {white-space:nowrap; background-repeat:no-repeat= ; cursor:pointer;}.btn_compare_newDisabled {white-space:nowrap; backgrou= nd-repeat:no-repeat;}.button-group button {font:100 76% verdana;text-dec= oration:none;background-color: #E4E4E4;color: #333;cursor: hand;vertical= -align: middle;border: 2px solid #797979;border-top-color:#FFF;border-le= ft-color:#FFF;margin:2px;padding:2px;}.button-group button.default {font= -weight:bold;}.button-group button:active {border:2px solid #E4E4E4;back= ground-color:#BBB;border-top-color:#333;border-left-color:#333;}.button-= group button:hover, .button-group button.hover {border:2px solid #90A029= ;background-color:#EBF09E;border-top-color:#FFF;border-left-color:#FFF;}= .ccd_active {padding:2px;color:#FF6600;font-family:arial,helvetica;font-= size:9pt}.ccd_none {color:#666666;font-weight:bold;font-family:arial,hel= vetica;font-size:9pt}.ccd_num {font-size:12pt;font-weight:bold}.centered= Image {text-align:center; margin-top:0px; margin-bottom:0px;padding:0px;= }.centertable {margin-top:0;margin-left:auto;margin-right:auto;}.cg_0 {b= order-right: 1px solid #cccccc;border-top:1px solid #cccccc}.cg_1 {borde= r-left:1px solid #cccccc;}.cg_1_a {border-left:1px solid #cccccc; border= -top:1px solid #cccccc}.cg_1_b {border-left:1px solid #cccccc; border-to= p:0}.cg_1_bnb {border-left:1px solid #cccccc;}.cg_10 {border-left:1px so= lid #cccccc;border-right:1px solid #cccccc;border-top:1px solid #cccccc;= }.cg_10nl {border-right:1px solid #cccccc;border-top:1px solid #cccccc;}= .cg_2 {border-left:1px solid #cccccc;}.cg_3 {border-left:1px solid #cccc= cc;}.cg_4 {border-left:1px solid #cccccc;background-color:#ffffff;}.cg_5= {border-left:1px solid #cccccc;background-color:#eeeeee;}.cg_5_a {borde= r-left:1px solid #cccccc;}.cg_5_b {border-left:1px solid #cccccc;}.cg_6 = {border-left:1px solid #cccccc;background-color:#eeeeee;border-right:1px= solid #cccccc;}.cg_6_a {border-left:1px solid #cccccc;border-right:1px = solid #cccccc;border-top:0;}.cg_6_anb {border-left:1px solid #cccccc;bor= der-right:1px solid #cccccc;border-top:0;}.cg_6_anl {border-right:1px so= lid #cccccc;border-top:0; border-right:1px solid #cccccc}.cg_6_anlnb {bo= rder-right:1px solid #cccccc;border-top:0;}.cg_6_b {border-left:1px soli= d #cccccc;border-right:1px solid #cccccc;border-top:0;}.cg_6_bnb {border= -left:1px solid #cccccc;border-right:1px solid #cccccc;border-top:0;}.cg= _6_bnl {border-right:1px solid #cccccc;border-top:0;}.cg_6_bnlnb {border= -right:1px solid #cccccc;border-top:0;}.cg_6nl {background-color:#eeeeee= ;border-right:1px solid #cccccc;}.cg_7 {border-left:1px solid #cccccc;bo= rder-right:1px solid #cccccc;}.cg_7nl {border-right:1px solid #cccccc;}.= cg_8 {border-left:1px solid #cccccc;background-color:#ffffff;border-righ= t:1px solid #cccccc;}.cg_8nl {background-color:#ffffff;border-right:1px = solid #cccccc;}.cg_9 {border-left:1px solid #cccccc;border-right:1px sol= id #cccccc;}.cg_9nl {border-right:1px solid #cccccc;}.cg_align {padding-= top:10px; padding-bottom:5px; margin-left:10px; margin-right:10px; borde= r-top:1px solid #cccccc}.cg_alignNs {padding-top:10px; padding-bottom:5p= x; margin-left:0px; margin-right:0px;}.cg_compare {background-color:#eee= eee}.cg_divide {border-top:1px solid #cccccc;margin-left:10px; margin-ri= ght:10px;}.cg_dynamicImg {margin-top:5px}.cg_ib {border-bottom:1px solid= #cccccc;}.cg_marcomname {font-family:Arial;font-size:13px;font-weight:b= old;}.cg_marcomname_suffix {font-family:Arial;font-size:13px;font-weight= :bold;color:#AAAAAA;}.cg_name {font-family:Arial;font-size:18px;font-wei= ght:bold;}.cg_name_suffix {font-family:Arial;font-size:18px;font-weight:= bold;color:#AAAAAA;}.cg_salign {padding-top:5px; border-bottom:1px solid= #cccccc}.cg_spec {margin-left:5px; margin-top:5px; margin-bottom:5px}.c= lue-bottom-default .cluetip-arrows {background-image: url(http://i.dell.= com/images/global/brand/ui/modal/arrowup.gif); top: -11px;left: 50%; mar= gin-left: -11px; height: 11px; width: 22px;}.clue-bottom-jtip .cluetip-a= rrows {background-image: url(http://i.dell.com/images/global/brand/ui/mo= dal/arrowup.gif);top: -5px;left: 50%;margin-left: -11px;height: 11px;wid= th: 22px;}.clue-left-default .cluetip-arrows {background-image: url(http= ://i.dell.com/images/global/brand/ui/modal/arrowright.gif);left: 100%; m= argin-right: -11px;}.clue-left-jtip .cluetip-arrows {background-image: u= rl(http://i.dell.com/images/global/brand/ui/modal/arrowright.gif);left: = 100%;padding-right: 19px;}.clue-lg-bottom-jtip .cluetip-arrows {backgrou= nd-image: url(http://i.dell.com/images/global/brand/ui/modal/arrow_lg_up= .gif);top:-18px;left:50%;margin-left:-19px;height:19px;width:37px;}.clue= -lg-left-jtip .cluetip-arrows {background-image: url(http://i.dell.com/i= mages/global/brand/ui/modal/arrow_lg_right.gif);left:99.5%;}.clue-lg-rig= ht-jtip .cluetip-arrows {background-image: url(http://i.dell.com/images/= global/brand/ui/modal/arrow_lg_left.gif);right:99.5%;}.clue-lg-top-jtip = .cluetip-arrows {background-image: url(http://i.dell.com/images/global/b= rand/ui/modal/arrow_lg_down.gif);top:99.5%;left:50%;margin-left:-19px;he= ight:19px;width:37px;}.clue-right-default .cluetip-arrows {background-im= age: url(http://i.dell.com/images/global/brand/ui/modal/arrowleft.gif);}= .clue-right-jtip .cluetip-arrows {background-image: url(http://i.dell.co= m/images/global/brand/ui/modal/arrowleft.gif);right:100%;padding-left: 1= 9px;}.clue-sm-bottom-jtip .cluetip-arrows {background-image: url(http://= i.dell.com/images/global/brand/ui/modal/arrow_sm_up.gif);top: -5px;left:= 50%;margin-left: -11px;height: 11px;width: 22px;}.clue-sm-left-jtip .cl= uetip-arrows {background-image: url(http://i.dell.com/images/global/bran= d/ui/modal/arrow_sm_right.gif);left:100%;background-position:left;}.clue= -sm-right-jtip .cluetip-arrows {background-image: url(http://i.dell.com/= images/global/brand/ui/modal/arrow_sm_left.gif);right:100%;background-po= sition:right;}.clue-sm-top-jtip .cluetip-arrows {background-image: url(h= ttp://i.dell.com/images/global/brand/ui/modal/arrow_sm_down.gif);top: 10= 0%;left: 50%;margin-left: -11px;height: 11px;width: 22px;}.cluetip-arrow= s {display: none; position: absolute; top: 0; height:37px; width: 19= px; background-repeat: no-repeat; background-position: 0 0;}.cluetip-d= efault { }.cluetip-default #cluetip-inner {padding: 10px;}.cluetip-defa= ult #cluetip-outer {position: relative; margin: 0;}.cluetip-default #cl= uetip-title {margin: 0 0 0px;padding: 0px 0px 0px; font-size:1.1em; font= -weight: normal; background-color: #87876a; color: #fff;}.cluetip-defaul= t #cluetip-title a { font-size:0.95em;}.cluetip-default div#cluetip-clos= e {text-align: right;margin: 0 5px 5px;color: #900;}.cluetip-jtip {backg= round-color: transparent;}.cluetip-jtip #cluetip-inner {padding: 0 0px 0= px;display: inline-block;}.cluetip-jtip #cluetip-outer {border: 0px soli= d #ccc; position: relative; background-color: transparent; height:0px;= }.cluetip-jtip div#cluetip-close {text-align: right;margin: 0 5px 5px;co= lor: #900;}.cluetip-title-b {font-size:1px;display:block; overflow:hidde= n;}.cluetip-title-b1 {background:#eeeeee;border-color: #AAAAAA; color: i= nherit; display:block; overflow:hidden;border-style: solid; border-width= : 0 1px;height:2px; margin:0 1px;}.cluetip-title-b1a {background:#eeeeee= ; border-color: #AAAAAA; color: inherit; display:block; border-style: so= lid ; border-width: 0 1px;}.cluetip-title-b1b {font-size:1px;display:blo= ck; overflow:hidden;height:1px;}.cluetip-title-b1c {font-size:1px;displa= y:block; overflow:hidden;}.cluetip-title-b2 {background:#eeeeee;border-c= olor: #AAAAAA; color: inherit; display:block; overflow:hidden;height:1px= ;border-style: solid; border-width: 0 1px;margin:0 2px;}.cluetip-title-b= 3 {background:#eeeeee; border-color: #AAAAAA; color: inherit; display:bl= ock; overflow:hidden;height:1px;border-style: solid; border-width: 0 1px= ;margin:0 3px; border-width:0 2px;}.cluetip-title-b5 {background:#AAAAAA= ; color: inherit; display:block; overflow:hidden;height:1px;margin:0 5px= ;}.cluetip-title-custom {width: 160px;}.cluetip-title-txt {font-size:10p= x;font-weight:bold;text-align:center;color:#000000;}.clue-top-default .c= luetip-arrows {background-image: url(http://i.dell.com/images/global/bra= nd/ui/modal/arrowdown.gif);top: 100%; left: 50%; margin-left: -11px; he= ight: 11px; width: 22px; }.clue-top-jtip .cluetip-arrows {background-i= mage: url(http://i.dell.com/images/global/brand/ui/modal/arrowdown.gif);= top: 100%;left: 50%;margin-left: -11px;height: 11px;width: 22px;}.collap= seCompare {background-image:url(http://i.dell.com/images/global/brand/ui= /collapse_grey.gif); background-repeat:no-repeat;background-repeat:no-re= peat; background-position:center right;height:19px}.comparegridtitlealig= nwb {border-top:1px solid #cccccc;border-right:1px solid #cccccc; border= -left:1px solid #cccccc}.comparelet_image {padding:15px;margin:auto; tex= t-align:center; white-space:nowrap}.comparelet_para_desc {font-family:ar= ial,helvetica;font-size:9pt;}.comparelet_para_title {font-family:arial,h= elvetica;font-size:13pt;font-weight:bold;}.comparelet_price_desc {font-f= amily:arial,helvetica;font-size:8pt;color:#666666;}.comparelet_price_leg= al {font-family:arial,helvetica;font-size:8pt;color:#666666;}.comparelet= _price_text {font-family:arial,helvetica;font-size:18px;font-weight:bold= ;color:#669933;}.comparelet_tbl {border:0px solid #cccccc;}.compareprodc= b {}.CompBtnLeftPart { background-image:url(http://i.dell.com/images/glo= bal/brand/pagination/CompBtn_leftarrow.png); float:left; height:20px; wi= dth:20px;}.CompBtnMidPart { background-image:url(http://i.dell.com/image= s/global/brand/pagination/CompBtn_mid.png); float:left; height:20px; pad= ding-left:2px; padding-top:2px; padding-right:2px; background-repeat:rep= eat-x; font-size:11px; color:#666666;}.CompBtnRightPart {background-imag= e:url(http://i.dell.com/images/global/brand/pagination/CompBtn_right.png= ); float:left; height:20px; width:20px; background-repeat:no-repeat;}.co= untryselector {background-color:#ffffff;border:none;text-align:center;al= ign:center;height:70px;}.crumbsel {font-family:arial,helvetica; font-siz= e:8pt; color:#666666;}.crumbsel43 {font-family:arial,helvetica; font-siz= e:8pt; color:#333333;}.cursorCompare {cursor:hand;padding-top:0px;paddin= g-bottom:0px;padding-left:0px;padding-right:0px;}.desctxt {display:inlin= e-block;overflow:hidden;white-space:nowrap}.disclaimer {font-family:aria= l,helvetica;font-size:8pt;color:#666666;}.divider {color:#aaaaaa;}.divid= er_title {font-family:arial,helvetica;font-size:8pt;color:#000000;}.drop= downsmall {font-family:arial,helvetica;font-size:8pt;}.emailLabel {font-= size:11px; font-family:arial,helvetica;}.emphasizedtitle {font-family:Ar= ial;font-size:18px;font-weight:bold;}.emphasizedtitle_suffix {font-famil= y:Arial;font-size:18px;font-weight:bold;color:#AAAAAA;}.enhancedpromo_ca= lltoaction {font-family:arial,helvetica;font-size:8pt;color:#cc6600;}.en= hancedpromo_invcalltoaction {font-family:arial,helvetica;font-size:x-lar= ge;font-weight:bold;color:#cc6600;}.enhancedpromo_largecalltoaction {fon= t-family:arial,helvetica;font-size:9pt;font-weight:bold;color:#cc6600;}.= evalue {padding-left:20px; padding-right:20px; padding-top:1px; backgrou= nd-color:#FFFFFF}.expandalldiv {position:absolute;width: 100%; visibilit= y: hidden;}.expandcoldiv {width:57px;font-family:Univers LT Std 67 conde= nsed;font-weight:bold;font-size:13px;color:white;}.expandCompare {backgr= ound-image:url(http://i.dell.com/images/global/brand/ui/expand_grey.gif)= ; background-repeat:no-repeat;background-repeat:no-repeat; background-po= sition:center right;height:19px}.expandtable {height:40px; width:88px; b= ackground-color:#353839; background-image:url( http://i.dell.com/images/= global/promos/ticker/gradient_gray_40px.GIF);background-repeat:repeat-x;= cursor: pointer}.extend_spec_body {}.extend_spec_body div {color:#333333= ;margin:5px 0px 5px 0px}.extend_spec_header {width:180px;}.extend_spec_h= eader div {font-weight:bold;color:#555555;text-align :right;margin:5px 1= 5px 5px 0px}.extend_spec_sep {border-bottom :dotted 1px #cccccc}.extende= d_spec_group_header {color:#333333;font-weight:bold;font-size:9pt;font-f= amily:arial,helvetica;background-color:#F0EEEE;padding:4px 0px 4px 10px}= .f {font-size:11px; color:#666666;font-family:arial,helvetica; padding-t= op:10px}.faq_table {border-width:0px;}.faq_title {font-family:Times New = Roman, Times;font-size:13pt;font-weight:bold;font-style:italic;color:Blu= e;}.filters {padding:0px 0px 0px 0px; font-size:8pt; font-family:arial,h= elvetica; font-weight:normal; color:#0033ff; background:url(http://i.del= l.com/images/global/brand/icons/close7x7.gif) no-repeat; line-height:15p= x; background-position: top left; padding-top:2px}.FirstPageImg {float:l= eft; margin-right:2px; background-image:url(http://i.dell.com/images/glo= bal/brand/pagination/pagination_first.png); height:18px; width:30px; bac= kground-repeat:no-repeat;}.fix_btn {padding-left:10px;position:relative;= top:10px}.flashContentDiv {z-index:1;display:none;}.fnavnor {color:#333= 3FF;}.fnavrow {background-image:url(http://i.dell.com/images/global/bran= d/ui/secondinline.gif); background-repeat:no-repeat; background-position= :top left; padding-left:12px; font-size:9pt;}.fnavsel {font-weight:bold;= color:#666666;}.fnavttl {font-weight:bold; padding-top:6px; padding-bot= tom:3px; border-top:1px solid #cccccc;}.focus {background-color: #ffffE0= ; color: #000000;}.footercrumbcell {padding-top:15px;padding-bottom:10px= ;}.footerlink {padding-left:10px;margin-bottom:7px;background:url( http:= //i.dell.com/images/global/brand/ui/storm80/nav_right_grey.gif ) no-repe= at left center;}.footerlink a,.footerlink a:visited,.footerlink a:active= {font-size:12px;color:#666;}.footerlink a:hover {color:#666;text-decora= tion:underline;}.footerlinkscontainer {padding-top:10px;padding-bottom:5= px;margin-bottom:10px;border-bottom:1px solid #EEE;}.footerlinkstitle {f= ont-weight:normal;font-family:arial;color:#333;font-size:15px;padding-bo= ttom:15px;}.formBlock {background-color:#FFFFFF;}.formBlockAlt {backgrou= nd-color:#F5F5F5;}.forminputcaption {font-family:arial,helvetica;font-si= ze:9pt;}.forminputfooter {font-family:arial,helvetica;font-size:8pt;}.fo= rmoptionfooter {font-family:arial,helvetica;font-size:8pt;}.fragCntBrd {= border-style:solid;border-color:#cccccc;border-width : 0px 1px 1px 1px}.= fragCntBrdFull {border-style:solid;border-color:#cccccc;border-width : 1= px 1px 1px 1px}.fraglight {padding:2px 0px 2px 10px; white-space:nowrap;= font-weight:bold; font-size:9pt; color:white; font-family:arial,helveti= ca;vertical-align:middle; overflow:hidden}.fragsolid {padding:2px 0px 2p= x 10px; vertical-align:middle;}.fragvall {background-color:#e4e4e4; padd= ing:2px 6px 2px 6px; white-space:nowrap; font-size:11px; font-family:ari= al,helvetica; vertical-align:middle;text-align:center}.gbb_pat {font-fam= ily:arial,helvetica;font-size:9pt;color:#0066cc}.gbb_symbols {font-famil= y:arial;font-size:9pt;font-weight:bold;color:#0066cc}.glheader {padding-= left:10px;width:100%}.globalPromoRevid {border: 1px solid #cccccc; backg= round-color:#ddf0fe}.glossarycontainer {position:absolute; display: none= ;z-index:10}.glossarycontent {position:relative; clear:both; background-= color: #ffffff; border-left: 1px solid #898989; border-bottom: 1px solid= #898989;border-right: 1px solid #898989; padding: 4px; font-size:0.7em;= }.greybackground {background-color:#EFEFEF}.gridCell {font-family:arial,= helvetica; font-size:9pt; background-color:#FFFFFF; padding: 5px;}.gridC= ellAlt {font-family:arial,helvetica; font-size:9pt; background-color:#F5= F5F5; padding: 5px;}.gridCellAltCombo {font-family:arial,helvetica; font= -size:9pt; background-color:#F5F5F5; padding: 5px;vertical-align :middle= }.gridCellCombo {font-family:arial,helvetica; font-size:9pt; background= -color:#FFFFFF; padding: 5px;vertical-align :middle}.gridCellRecomended = {font-family:arial,helvetica; font-size:9pt; background-color:#ECFFDA; p= adding: 5px;}.gridCellRecomendedAlt {font-family:arial,helvetica; font-s= ize:9pt; background-color:#D6F4C0; padding: 5px;}.gridTitle {font-family= :arial,helvetica; font-size:9pt; background-color:#E1E1E1; font-weight:b= old;padding: 5px;vertical-align :top}.gridTitleRecomended {font-family:a= rial,helvetica; font-size:9pt; background-color:#D6F4C0; padding: 5px;ve= rtical-align :top; font-weight:bold }.hicondiv {border:1px solid #999999= ;width:176px;height:64px;}.hicondiv2 {width:176px;height:64px;}.hicondiv= lrg {border:1px solid #999999;width:176px;height:78px;}.hicondivlrg2 {wi= dth:176px;height:72px;}.hiddenticker {position: absolute; width: 100%;}.= hide-scrollbars * {overflow:hidden;}.hide-scrollbars textarea, .hide-scr= ollbars select {overflow:hidden;display:none;}.hiernavsel {font-family:a= rial,helvetica;font-size:9pt;font-weight:bold;color:#666666;}.highlightR= ow {font-family:arial,helvetica; font-size:9pt; background-color:#CCCCCC= ; padding: 5px;vertical-align :top }.hiimpact_desc {font-family:arial,he= lvetica;font-size:9pt}.hiimpact_img {text-align:center;background-color:= #efefef; border:0px; padding:10px}.hiimpact_tbl {border:0px}.hiimpact_td= {vertical-align:top; background-color:#efefef; border:0px; padding-left= :5px;padding-right:5px;}.hiimpact_title {font-family:arial,helvetica;fon= t-weight:bold;font-size:9pt}.hpborderbottom { clear:both; background:url= (http://i.dell.com/images/global/brand/ui/hsep.gif) repeat-x 0px 0px; wi= dth:100%;text-align:center;}.hpborderTop {background:url( http://i.dell.= com/images/global/brand/ui/borderhp.jpg ) repeat-x top; clear:both;width= :100%;text-align:center;}.HSegIcon {height:76px;float:left;margin-left:0= px;margin-bottom:10px;margin-right:0px;border:1px solid white;border-lef= t:0px;border-right:0px;cursor:pointer;}.HSegIconImageDiv {border:1px sol= id #999999;width:176px;height:64px;margin-bottom:10px;}.HSegIconImageTex= tDiv {font-size:12px; color:#0066CC;float:left;valign:bottom;padding-top= :30px;padding-left:70px;}.HSegIconlrg {height:90px;float:left;margin-lef= t:0px;margin-bottom:10px;margin-right:0px;border:1px solid white;border-= left:0px;border-right:0px;cursor:pointer;}.HSegIconWithMargin {border:1p= x solid #999999;width:176px;height:64px;margin-top:10px;position:relativ= e;float:left;overflow:hidden;}.infosummary {background-color:#99CCFF;col= or:#000000;font-weight:bold;font-size:9pt;}.intrologin {font-size:11px; = font-family:arial,helvetica;}.isbg {background-color:#AD6700; background= -image:url(http://i.dell.com/images/global/brand/ui/oj_fade12px_bt_vert.= gif); background-repeat:repeat-x; height:12px}.itemCloseContainer {heigh= t:23px;width:28px;float:right;background-image:url(http://i.dell.com/ima= ges/global/brand/ui/closecluetip.gif);background-repeat:no-repeat;}.item= Container {border: 1px solid #AAAAAA; font-size:14px; background-color: = #EEEEEE}.itemContainerTitle {background-color: #AAAAAA; color:#FFFFFF;fo= nt-family:arial; font-weight:bold; padding-left:10px;padding-top:4px;pad= ding-bottom:4px;vertical-align:center;}.itemInnerContainer { border: 1px= solid #AAAAAA; margin:10px;}.itemInnerInnerContainer {overflow:hidden;p= adding:10px; background-color: #FFFFFF}.itemSeperator {border-top:1px so= lid #EEEEEE;}.itemTitle {color:#666666; font-size:11px; font-weight:bold= ; font-family:arial,helvetica;padding-top:3px}.itemValue {color:#000000;= font-size:11px; font-family:arial,helvetica;padding-bottom:3px;}.jqmClo= se {cursor: pointer;float:right;padding-right :10px;}.jqmContent {margin= :10px;border:solid 1px #aaaaaa;background-color:White ;padding :10px;hei= ght:70%;}.jqmFooter {overflow:visible; margin:5px 10px 5px 10px}.jqmFoo= terButtons {float:right}.jqmOverlay { background-color: #000; }.jqmWind= ow {display: none;position: fixed;top: 17%;left: 50%;margin-left: -300px= ;width: 600px;background-color: #EEE;color: #333;border: 1px solid #3333= 33;padding: 0px;}.jqmWinHeader {padding:0px;}.jqmWinTitle {font-weight:b= old;font-size:18px;padding:10px 10px 0px 10px;}.LastPageImg {float:left;= margin-left:2px;background-image:url(http://i.dell.com/images/global/br= and/pagination/pagination_last.png); height:18px; width:30px; background= -repeat:no-repeat;}.link_text {font-size:8pt;color:#095289;}.LMSubTitle = {position:relative;font-family:arial,helvetica;font-size:11px;color:#666= 666;padding-left:15px;}.lnk {font-family:arial,helvetica;font-size:9pt;}= .lnk_compare {font-family:arial,helvetica;font-size:8pt;color:#666666;}.= lnk_compare:active {font-family:arial,helvetica;font-size:8pt;color:#666= 666;}.lnk_compare:visited {font-family:arial,helvetica;font-size:8pt;col= or:#666666;}.lnk_crumb {font-family:arial,helvetica; font-size:8pt;}.lnk= _crumb43 {font-family:arial,helvetica; font-size:8pt; color:#0066CC;}.ln= k_desclink {font-family:arial,helvetica;font-size:9pt;}.lnk_desclink_cta= {font-family:arial,helvetica;font-size:9pt;font-weight:bold;}.lnk_expnd= _close {font-family:arial,helvetica;font-size:7pt;color:#ffffff;}.lnk_ex= pnd_close:visited {font-family:arial,helvetica;font-size:7pt;color:#ffff= ff;}.lnk_iconic {font-family:arial,helvetica;font-size:9pt;}.lnk_imglink= {font-family:arial,helvetica;font-size:9pt;}.lnk_promo {font-family:ari= al,helvetica;font-size:11px;font-weight:bold;color:#cc6600;}.lnk_promo:a= ctive {font-family:arial,helvetica;font-size:11px;font-weight:bold;color= :#cc6600;}.lnk_promo:hover {font-family:arial,helvetica;font-size:11px;f= ont-weight:bold;color:#cc6600;}.lnk_promo:visited {font-family:arial,hel= vetica;font-size:11px;font-weight:bold;color:#cc6600;}.lnk_promo_white {= font-family:arial,helvetica;font-size:9pt;font-weight:bold;color:#FFFFFF= ;}.lnk_promodetails {font-family:arial,helvetica;font-size:11px;font-wei= ght:bold;}.lnk_promodetails:active {font-family:arial,helvetica;font-siz= e:11px;font-weight:bold;}.lnk_promodetails:hover {font-family:arial,helv= etica;font-size:11px;font-weight:bold;}.lnk_promodetails:visited {font-f= amily:arial,helvetica;font-size:11px;font-weight:bold;}.lnk_secondary {f= ont-family:arial,helvetica;font-size:8pt;}.lnk_small {font-family:arial,= helvetica;font-size:8pt;}.lnkheader {line-height:15px; font-family:arial= ,helvetica; font-weight:bold; font-size:8pt; color:#666666}.lnkHeaderAse= ek {line-height:17px; font-family:arial,helvetica; font-weight:bold; fon= t-size:11px; color:#000000}.lnkheaderlnk {line-height:15px; font-family:= arial,helvetica; font-weight:bold; font-size:8pt;}.lnkImage {float:left;= padding-left:15px; padding-top:10px; padding-bottom: 10px}.lnks {paddin= g:0px 0px 0px 0px; font-size:8pt; font-family:arial,helvetica; font-weig= ht:normal; color:#0033ff; background:url(http://i.dell.com/images/global= /brand/ui/secondary_lnav.gif) no-repeat; line-height:15px; background-po= sition: top left}.lnks1 {padding:0px 0px 0px 8px; font-size:8pt; font-fa= mily:arial,helvetica; font-weight:normal; color:#0033ff; background:url(= http://i.dell.com/images/global/brand/ui/tnav_primary.gif) no-repeat; li= ne-height:15px; background-position: top left; display: block;}.lnks2 {v= ertical-align: middle; padding:0px 0px 0px 12px; font-size:8pt; font-fam= ily:arial,helvetica; font-weight:normal; color:#0033ff; background:url(h= ttp://i.dell.com/images/global/brand/ui/tnav_secondary.gif) no-repeat; l= ine-height:15px; background-position: top left; display: block;}.lnks3 {= padding:0px 0px 0px 16px; font-size:8pt; font-family:arial,helvetica; fo= nt-weight:normal; color:#0033ff; background:url(http://i.dell.com/images= /global/brand/ui/tnav_tertiary.gif) no-repeat; line-height:15px; backgro= und-position: top left; display: block;}.lnksRemoveFilter {padding: 0px = 0px 3px 0px; font-size:8pt; font-family:arial,helvetica; font-weight:nor= mal; color:#0066cc; background:url(http://i.dell.com/images/global/brand= /icons/close.gif) no-repeat; line-height:15px; background-position: 0px = 3px;}.lnksRemoveFilterBW {padding: 0px 0px 3px 0px; font-size:8pt; font-= family:arial,helvetica; font-weight:normal; color:#0066cc; background:ur= l(http://i.dell.com/images/global/brand/icons/close_white.gif) no-repeat= ; line-height:15px; background-position: 0px 3px;}.lnksRoot {font-size:1= 0pt; background:url(http://i.dell.com/images/global/brand/ui/tnav_upnav.= gif) no-repeat; background-position: top left; display: block;}.lnksRoot= Selected {font-size:10pt; color: #0066cc; padding-left: 18px; display: b= lock; padding-top: 4px; font-weight: bold;}.LogoTDWidth {width:5px}.main= lst {list-style-type:none;list-style-position:outside;list-style-image:n= one;margin:0px;padding:0px;display:block;}.mask {z-index:0; display:n= one; position:absolute; top:0; left:0; -moz-opacity: 0.5; = opacity:.50; filter: alpha(opacity=3D50); background-color:#CCC;}= .mastheadcontainernoscript {color:#666;background-color:#FFFFFF;}.mh_sea= rch_large_SE {font-size:9pt;font-weight:bold;color:#0033ff;}.mh_search_S= E {font-size:8pt;}.mh_search_sep_SE {font-size:8pt;color:#666666;}.mh_to= plink {font-family:arial,helvetica;font-size:9pt;}.mhbg {background-colo= r:#E9E9E9; background-image:url(http://i.dell.com/images/global/brand/ui= /mhbg.gif); background-repeat:repeat-x; height:44px}.mhLegal {font-famil= y:Arial; font-size:8pt; font-weight:normal}.mhLine {background-color:#99= 9999;}.mhlink {padding:0px 7px; white-space:nowrap; vertical-align:middl= e}.mhSpace {padding-right:4px;padding-left:4px}.mhTextNewMda {font-famil= y:arial,helvetica; font-size:10pt; color:black;font-weight:bold;}.mhText= NewMda:active {font-family:arial,helvetica; font-size:10pt; color:black;= font-weight:bold;}.mhTextNewMda:visited {font-family:arial,helvetica; fo= nt-size:10pt; color:black;font-weight:bold;}.mhTextNewTrf {font-family:a= rial,helvetica; font-size:8pt; color:#666;}.mhTitle {font-family:arial,h= elvetica; font-size:9pt; color:#99CCFF; font-weight:bold; white-space:no= wrap}.minicat_mod_title_cell {font-family:Arial,Helvetica,Verdana;font-s= ize:10pt;color:#336699;background-color:#d7e8fa;border-width:0px;}.minty= background {background-color:#ECFFDA}.modalerror {font-size:11px; font-f= amily:arial,helvetica;color:red;}.modalPremierWelcomeCaption {font-style= :12px; font-family:arial,helvetica; color: #AAAAAA; font-weight: bold;}.= myaccountbody {background-color:#EEEEEE;padding:0px;margin:0px;}.myaccou= ntpage {margin-left:auto;margin-right:auto}.nav_error {border-style:soli= d;border-color:#cccccc;border-width : 1px 1px 1px 1px; padding-bottom:15= px;padding-left:12px;}.navval {float:left;width:180px;display:block;font= -size:11px;font-family:Arial;}.navval2 {float:left;width:270px;display:b= lock;font-size:11px;font-family:Arial;}.navval4 {float:left;width:135px;= display:block;font-size:11px;font-family:Arial;}.navvalblock {clear:none= ;font-size:11px;margin-left:12px;display:inline;float:left}.need_it_soon= er_link {font-family:arial,helvetica,sans-serif;font-size:8pt;}.NextImg = {float:left; margin-left:8px; background-image:url(http://i.dell.com/ima= ges/global/brand/pagination/pagination_next.png); height:18px; width:18p= x; background-repeat:no-repeat;}.normal {background-color: #ffffff; colo= r: #000000;}.nowrap {white-space:nowrap}.olt_content_cell {background-co= lor:#cccccc;}.olt_content_first_cell {width:15%;background-color:#cccccc= ;}.olt_content_nonselected_first_cell {width:15%;background-color:#e6e6e= 6;}.olt_content_nonselected_second_cell {width:60%;background-color:#e6e= 6e6;}.olt_content_nonselected_third_cell {width:25%;background-color:#e6= e6e6;}.olt_content_second_cell {width:60%;background-color:#cccccc;}.olt= _content_third_cell {width:25%;background-color:#cccccc;}.olt_link {font= -family:arial,helvetica,sans-serif;font-size:10pt;}.olt_option_combo_fir= st_cell {width:80%;background-color:#cccccc;}.olt_option_combo_second_ce= ll {width:20%;background-color:#cccccc;}.olt_option_content_first_cell {= width:80%;background-color:#e6e6e6;}.olt_option_content_second_cell {wid= th:20%;background-color:#e6e6e6;}.olt_option_title_first_cell {width:80%= ;background-color:#808080;}.olt_option_title_second_cell {width:20%;back= ground-color:#808080;}.olt_table_content {font-family:arial,helvetica,sa= ns-serif;font-size:8pt;color:Black;}.olt_table_title {font-family:arial,= helvetica,sans-serif;font-size:10pt;font-weight:bold;color:#000000;}.olt= _table_title_sub {font-family:arial,helvetica,sans-serif;font-size:8pt;f= ont-weight:bold;color:#ffffff;}.olt_text {font-family:arial,helvetica,sa= ns-serif;font-size:10pt;color:Black;}.olt_text_emphasis {font-family:ari= al,helvetica,sans-serif;font-size:10pt;font-weight:bold;color:Black;}.ol= t_title_first_cell {width:15%;background-color:#808080;}.olt_title_secon= d_cell {width:60%;background-color:#808080;}.olt_title_third_cell {width= :25%;background-color:#808080;}.online_acc_9pt_bold {font-size:9pt;font-= weight:bold;}.online_acc_big_black {font-size:20px;color:#030303;}.onlin= e_acc_big_blue {font-size:20px;color:#095289;}.online_acc_big_grey {font= -size:20px;color:#161616;}.online_acc_small_blue {font-size:13px;color:#= 095289;font-weight:bold;}.online_acc_smaller_blue {font-size:11px;color:= #095289;}.oplabs {background-image:url(http://i.dell.com/images/global/g= eneral/oo.gif); background-repeat:no-repeat;background-position: center = left;padding:0px 0px 0px 12px}.orangelnkheader {line-height:15px; font-f= amily:arial,helvetica; font-weight:bold; font-size:8pt; color:#CC6600;}.= outercolumn1div {width:100%;display:table-cell;}.outertable {background-= color:#BA6D1D;height:100%}.padding {padding-top:10px;}.paddingOff {paddi= ng-top:0px;padding-bottom:0px;padding-left:0px;padding-right:0px;}.Pagin= ationCtrlEmtyRow {padding-top:10px;}.PaginationCtrlMainDiv {float:right;= padding-left:20px}.PaginationCtrlpageNumber {vertical-align:middle; fon= t-size:11px; color:#0066CC;}.PaginationCtrlpageNumber:visited {vertical-= align:middle; font-size:11px; color:#0066CC;}.PaginationCtrlPageNumSetti= ng {padding-top:5px; padding-bottom:10px;}.PaginationCtrlPageView {font-= size:11px; color:#AAAAAA; font-weight:bold;}.PaginationCtrlResltTxt { fl= oat:left; vertical-align:middle; padding-left:10px; padding-top:4px; pad= ding-right:10px; font-size:11px; color:#FFFFFF;font-weight:bold;}.Pagina= tionCtrlselectedPage {vertical-align:middle; font-size:11px; color:#3333= 33; font-weight:bold;}.PaginationCtrlSeletedView {font-size:11px; color:= #333333; font-weight:bold;}.PaginationCtrlSortBy {float:right; vertical-= align:middle; font-size:11px; color:#FFFFFF;}.PaginationCtrlSortByTxt {f= loat:left; padding-top:3px;}.PaginationCtrlSortComb {float:left;}.Pagina= tionCtrlTitleBarColor {Background-Color:#AAAAAA; height:25px;}.Paginatio= nCtrlVertclLine {font-size:11px; color:#333333;}.PaginationCtrlViews {fo= nt-size:11px; color:#0066CC;}.PaginationCtrlViews:visited {font-size:11p= x; color:#0066CC;}.PaginationCtrlViewSetting {font-size:11px; color:#006= 6CC; align:right;padding-top:5px; padding-bottom:5px;}.para {font-family= :arial,helvetica;font-size:9pt;}.para_crumb_43 {font-family:arial,helvet= ica; font-size:8pt;}.para_desclink {font-family:arial,helvetica;font-siz= e:9pt;}.para_desclinksmall {font-family:arial,helvetica;font-size:8pt;}.= para_imglink {font-family:arial,helvetica;font-size:8pt;}.para_intro_sm = {font-family:arial,helvetica;font-size:9pt;font-weight:bold;color:#66666= 6;}.para_intropara {font-family:arial,helvetica;font-size:12pt;font-weig= ht:bold;color:#666666;}.para_large {font-family:arial,helvetica;font-siz= e:12pt;}.para_marketingprice {font-family:arial,helvetica;font-size:10pt= ;}.para_marketingprice_builder {font-size:18px;font-weight:bold;color:#3= 88d27;}.para_marketingprice_config_option_from {font-family:arial,helvet= ica;font-size:8pt;font-weight:bold;text-decoration: line-through;}.para_= marketingprice_mini {font-size:10pt;}.para_marketingprice_saleprice {fon= t-family:arial,helvetica;font-size:8pt;}.para_marketingprice_saleprice_l= ink {font-family:arial,helvetica;font-size:8pt;color:#0066cc;}.para_mark= etingprice_simple {font-family:arial,helvetica;font-size:18px;font-weigh= t:bold;color:#669933;}.para_marketingprice_simple_mini {font-size:11px;f= ont-weight:bold;color:#669933;}.para_marketingprice_strikethrough {font-= family:arial,helvetica;font-size:14px;font-weight:bold;text-decoration: = line-through;}.para_plcc_freq {font-family:arial,helvetica;font-size:10p= t;font-weight:bold;color:Blue;}.para_plcc_payment {font-family:arial,hel= vetica;font-size:11pt;font-weight:bold;color:#666666;}.para_plcc_payment= _unbold {font-size:11px;color:#666666;}.para_plcc_prefix {font-family:ar= ial,helvetica;font-size:8pt;color:#666666;}.para_small {font-family:aria= l,helvetica;font-size:8pt;}.para_small_blue {font-family:arial,helvetica= ;font-size:9pt;color:Blue;}.para_small_builder_sign {font-family:arial,h= elvetica;font-size:8pt;color:Green;}.para_small_builder_value {font-fami= ly:arial,helvetica;font-size:13px;color:Green;}.para_small_grey {font-fa= mily:arial,helvetica;font-size:8pt;color:#aaaaaa;}.passwordLabel {font-s= ize:11px; font-family:arial,helvetica;}.pbpara {font-family:arial,helvet= ica;font-size:8pt;}.pdDescription {font-size:11px; color:#666666;font-fa= mily:arial,helvetica; font-weight:bold; margin-left:0px}.pg_layoutOption= {text-align:right}.PGIconCaption {font-size:12px;color:#0066CC;align:ce= nter;text-align:center;}.PGIconsSection {position:relative;width:550px;a= lign:center;}.PGSubTitle {position:relative;font-family:arial,helvetica;= font-size:11px;color:#666666;padding-left:15px;padding-top:1px;}.pmConta= iner {padding:0px 1px 0px 1px;position:relative ; float:left ; border : = 1px solid #FFFFFF; text-align : center;margin : 0px; background-color: #= ffffff;}.pmList {padding-bottom:10px;float:right ; width:125px; vertical= -align:middle;top:10px; position:relative ;}.pmList a {font-size:8pt}.pm= Menu {position:absolute ; border :solid 1px #666666; background-color :#= bbbbbb ; width :160px; left:-30px; margin:0px; top:0px; display:none; f= ilter: alpha(opacity=3D96);opacity: .96 }.pmMenuItem {width:148px;border= -bottom:solid 1px #aaaaaa;background-color: #dddddd; padding:2px 6px 2px= 6px;margin : 0px; cursor : pointer; background-position: top left; back= ground-repeat: repeat-x; background-image: url('http://i.dell.com/images= /global/buttons/homepage/menumask_96x28.png'); text-align:left ;}.pmMenu= Item a {font-family: arial, helvetica, sans-serif; color : #0033ff; font= -size :11px;}.pmMenuItem a:visited {color : #0033ff;}.pmShadow {display:= none ;height:3px;background-repeat:repeat-x; position:absolute ; top:10p= x; background-image: url('http://i.dell.com/images/global/buttons/homepa= ge/shadow_96x3.png'); left:1px;}.pmSubTitle {background-color: #0066dd;f= ont-family: arial, helvetica, sans-serif; color: #ffffff; width:14= 8px; text-align : left; font-size :12px; font-weight:bold; = padding : 4px; padding-left : 6px; padding-right : 6px;backgro= und-position: top left; background-repeat: repeat-x; background-im= age: url('http://i.dell.com/images/global/buttons/homepage/menumask_96x2= 8.png');}.pmTitle {padding:0px 0px 0px 0px;left:0px;color:#000000; te= xt-decoration:none; top:90px; font-weight:bolder; font-family: ari= al, helvetica, sans-serif; font-size:11px; line-height: 11px; position:= absolute; text-align:center ; width :98%; }.pnlLink {font-family:verdana= ,arial,helvetica;font-size:8pt;}.point_normal {font-family:arial,helveti= ca;font-size:9pt;}.point_small {font-family:arial,helvetica;font-size:8p= t;}.popupbar {background-color:#666666;height:24px}.popuplinks {font-fam= ily:arial; font-size:8pt; color:#ffffff; }.popuplinks:visited {font-fami= ly:arial; font-size:8pt; color:#ffffff;text-decoration:underline}.presto= _grey {color:#666666}.presto_main {font-size:14px;}.presto_text_center {= text-align:center;}.presto_title {font-weight:bold;font-size:20px;}.Prev= Img { float:left; margin-right:8px; background-image:url(http://i.dell.c= om/images/global/brand/pagination/pagination_previous.png); height:18px;= width:18px; background-repeat:no-repeat;}.pricing_builderblack #lease_p= aymentamount {color:#388d27;font-size:13px;font-weight:bold}.pricing_bui= lderblack #leasing_mol a {color:#3399cc;font-size:13px;font-weight:norma= l}.pricing_builderblack #leasing_mol, .pricing_builderblack .para_plcc_p= refix, .pricing_builderblack .para_plcc_payment {font-weight:normal;whit= e-space:nowrap;padding-bottom:5px;text-align:right;font-size:13px;color:= #CCC}.pricing_builderblack .pricing_description_builder {font-weight:nor= mal;padding-bottom:5px;font-size:13px;text-align:right;color:#CCC;}.pric= ing_builderblack .pricing_discount_desc_builder {white-space:nowrap;padd= ing-bottom:5px;font-size:13px;text-align:right;color:#ff9900;}.pricing_b= uilderblack .pricing_discount_desc_builder a {color:#ff9900;cursor:point= er;}.pricing_builderblack .pricing_discount_price_builder {font-weight:b= old;}.pricing_builderblack .pricing_maptext_builder {padding-bottom:5px;= font-size:13px;text-align:right;color:#ff9900;}.pricing_builderblack .pr= icing_retail_desc_builder {white-space:nowrap;text-align:right;color:#CC= C;font-weight:bold;font-size:13px;}.pricing_builderblack .pricing_retail= _price_builder {text-decoration:line-through;font-size:15px;font-weight:= bold;text-align:right;}.pricing_builderblack .pricing_sale_price_builder= {font-size:40px;font-weight:bold;text-align:right;color:#FFF;white-spac= e:nowrap}.pricing_builderblack .pricing_technote_desc_builder a, .pricin= g_builderblack .pricing_technote_desc_builder a:hover {vertical-align:to= p;font-size:24px;color:#66ccff;text-decoration:none;}.pricing_builderbla= ck td {text-align:right;}.pricing_builderwhite #lease_paymentamount {col= or:#388d27;font-size:13px;font-weight:bold}.pricing_builderwhite #leasin= g_mol a {color:#3399cc;font-size:13px;font-weight:normal}.pricing_builde= rwhite #leasing_mol, .pricing_builderwhite .para_plcc_prefix, .pricing_b= uilderwhite .para_plcc_payment {font-weight:normal;white-space:nowrap;pa= dding-bottom:5px;text-align:right;font-size:13px;color:#666}.pricing_bui= lderwhite .pricing_description_builder {font-weight:normal;padding-botto= m:5px;font-size:13px;text-align:right;color:#666;}.pricing_builderwhite = .pricing_discount_desc_builder {white-space:nowrap;padding-bottom:5px;fo= nt-size:13px;text-align:right;color:#ff9900;}.pricing_builderwhite .pric= ing_discount_desc_builder a {color:#ff9900;cursor:pointer;}.pricing_buil= derwhite .pricing_discount_price_builder {font-weight:bold;}.pricing_bui= lderwhite .pricing_maptext_builder {padding-bottom:5px;font-size:13px;te= xt-align:right;color:#ff9900;}.pricing_builderwhite .pricing_retail_desc= _builder {white-space:nowrap;text-align:right;color:#666;font-weight:bol= d;font-size:13px;}.pricing_builderwhite .pricing_retail_price_builder {t= ext-decoration:line-through;font-size:15px;font-weight:bold;text-align:r= ight;}.pricing_builderwhite .pricing_sale_price_builder {font-size:40px;= font-weight:bold;text-align:right;color:#669933;white-space:nowrap}.pric= ing_builderwhite .pricing_technote_desc_builder a, .pricing_builderwhite= .pricing_technote_desc_builder a:hover {vertical-align:top;font-size:24= px;color:#3399cc;text-decoration:none;}.pricing_builderwhite td {text-al= ign:right;}.pricing_countdown_text {font-family:arial,helvetica;font-siz= e:11px;color:#000000;padding:2px 1px 2px 1px;}.pricing_description {font= -family:arial,helvetica;font-size:11px;padding:2px 1px 2px 1px;}.pricing= _discount_desc {color:#cc6600;background-color:White;padding-left:1px;pa= dding-right:1px;font-family:arial,helvetica;font-size:11px;}.pricing_dis= count_price {color:#cc6600;background-color:White;padding-left:1px;paddi= ng-right:1px;font-family:arial,helvetica;font-size:11px;}.pricing_divide= {background-image:url(http://i.dell.com/images/global/pricing/pricing_d= ivide.gif);background-repeat:repeat-x;background-position:center;}.prici= ng_dotdotdot {background-image:url(http://i.dell.com/images/global/prici= ng/pricing_dot.gif);background-repeat:repeat-x;background-position:botto= m;}.pricing_eco_desc {color:#000000;background-color:White;padding-left:= 1px;padding-right:1px;font-family:arial,helvetica;font-size:11px;}.prici= ng_eco_price {color:#000000;background-color:White;padding-left:1px;padd= ing-right:1px;font-family:arial,helvetica;font-size:11px;}.pricing_mapte= xt {padding:2px 1px 2px 1px;font-family:arial,helvetica;font-weight:bold= ;font-size:11px;color:#cc6600;padding:2px 1px 2px 1px;}.pricing_marketin= g_text {font-family:arial,helvetica;font-size:11px;color:#cc6600;padding= :2px 1px 2px 1px;}.pricing_member_desc {color:#cc6600;background-color:W= hite;padding-left:1px;padding-right:1px;font-family:arial,helvetica;font= -size:11px;}.pricing_member_price {color:#cc6600;background-color:White;= padding-left:1px;padding-right:1px;font-family:arial,helvetica;font-size= :11px;}.pricing_priceerror {font-family:arial,helvetica;font-size:12px;p= adding:2px 1px 2px 1px;color:#FF0000;}.pricing_pricetext {font-family:ar= ial,helvetica;font-size:12px;padding:2px 1px 2px 1px;color:#FF0000;}.pri= cing_rebate_desc {color:#cc6600;background-color:White;padding-left:1px;= padding-right:1px;font-family:arial,helvetica;font-size:11px;}.pricing_r= ebate_price {color:#cc6600;background-color:White;padding-left:1px;paddi= ng-right:1px;font-family:arial,helvetica;font-size:11px;}.pricing_restri= ction {font-family:arial,helvetica;font-size:11px;color:#FF0000;padding:= 2px 1px 2px 1px;}.pricing_retail_desc {background-color:White;padding-le= ft:1px;padding-right:1px;font-family:arial,helvetica;font-size:11px;}.pr= icing_retail_desc_strikethrough {text-decoration:line-through;background= -color:White;padding-left:1px;padding-right:1px;font-family:arial,helvet= ica;font-size:11px;}.pricing_retail_nodiscount_desc {background-color:Wh= ite;padding-left:1px;padding-right:1px;font-family:arial,helvetica;font-= size:11px;color:#669933;font-weight:bold;}.pricing_retail_nodiscount_des= c_small {background-color:White;font-family:arial,helvetica;font-size:11= px;color:#669933;font-weight:bold;padding-left:1px;padding-right:1px;}.p= ricing_retail_nodiscount_price {font-family:arial,helvetica;background-c= olor:White;font-size:16px;font-weight:bold;padding-left:1px;padding-righ= t:1px;color:#669933;}.pricing_retail_nodiscount_price_small {font-family= :arial,helvetica;background-color:White;font-size:11px;font-weight:bold;= color:#669933;padding-left:1px;padding-right:1px;}.pricing_retail_price = {background-color:White;padding-left:1px;padding-right:1px;font-family:a= rial,helvetica;font-size:11px;}.pricing_retail_price_strikethrough {text= -decoration:line-through;background-color:White;padding-left:1px;padding= -right:1px;font-family:arial,helvetica;font-size:11px;}.pricing_sale_des= c {background-color:White;padding-left:1px;padding-right:1px;font-family= :arial,helvetica;font-size:11px;color:#669933;font-weight:bold;}.pricing= _sale_desc_small {background-color:White;font-family:arial,helvetica;fon= t-size:11px;color:#669933;font-weight:bold;padding-left:1px;padding-righ= t:1px;}.pricing_sale_price {font-family:arial,helvetica;background-color= :White;font-size:16px;font-weight:bold;padding-left:1px;padding-right:1p= x;color:#669933;}.pricing_sale_price_small {font-family:arial,helvetica;= background-color:White;font-size:11px;font-weight:bold;color:#669933;pad= ding-left:1px;padding-right:1px;}.pricing_shipping_desc {color:#cc6600;b= ackground-color:White;padding-left:1px;padding-right:1px;font-family:ari= al,helvetica;font-size:11px;}.pricing_shipping_price {color:#cc6600;back= ground-color:White;padding-left:1px;padding-right:1px;font-family:arial,= helvetica;font-size:11px;}.pricing_superconfig {border:inset 1px #E7ECF0= ;padding:3px;background-color:#ffffff;margin:0px 0px 0px 3px;width:215px= ;}.pricing_superconfig_row {background-color: #E7ECF0;border-right: soli= d 1px #999999;vertical-align: top;position: relative;padding-top: 0px;ma= rgin-top: 0px;clear: both;}.pricing_technote_desc {font-family:arial,hel= vetica;font-size:11px;}.product_background_color {background-color:#FFEC= CE;}.product_border_gray {border-Top : #CCCCCC 1px solid;border-bottom:#= CCCCCC 1px solid;border-left: #CCCCCC 1px solid;border-right: #CCCCCC 1p= x solid;}.product_border_white {border-Top : #FFFFFF 1px solid;border-bo= ttom:#FFFFFF 1px solid;border-left: #FFFFFF 1px solid;border-right: #FFF= FFF 1px solid;}.product_bucket_caption {font-family:arial,helvetica; fon= t-size:8pt;color:#0033FF;}.product_bucket_caption_opera {font-family:ari= al,helvetica; font-size:8pt;color:#0033FF;position:relative;bottom:-18px= }.product_bucket_cell {text-align:center;border:solid 1px #CCCCCC;vertic= al-align:bottom;cursor:pointer;cursor:pointer;}.product_div {width:170px= ;text-align:center;padding-top:5px;margin-right:2px;}.product_embedded_d= iv {position:relative;text-align:left; padding-left:5px;padding-right:5p= x}.product_highlight_background_image {background-image: url('http://i.d= ell.com/images/global/promos/compare/gradient_ffecce.jpg'); background-r= epeat: no-repeat;background-position: bottom; }.productdetails_left {wid= th:65%;background-color:#8e8e8e;padding:5px 15px 5px 5px; border-left:1p= x solid #aaaaaa; border-bottom:1px solid #aaaaaa;}.productdetails_right = {width:35%;vertical-align:bottom;text-align:right;background-color:#e9e9= e9;padding:0px 5px 0px 10px; border-right:1px solid #aaaaaa; border-bott= om:1px solid #aaaaaa;}.productdetailstext {color:white;vertical-align:mi= ddle;line-height:1.3em}.producttabExtension {background-color:#AF6800}.p= roducttabGradient {background-color:#FF6600;}.producttabText {font-famil= y:arial;font-size:11px;font-weight:bold;color:white;text-align:center; p= adding-top:5px; padding-bottom:5px}.promo {width:170px;height:100px;PADD= ING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; PADDING-TOP: = 10px;}.promo_background_color {background-color:#FFECCE;}.promo_border {= border-right: #D9731B 1px solid;BORDER-BOTTOM: #D9731B 1px solid;}.prom= o_border_left {border-left: #D9731B 1px solid;}.promo_border_top {borde= r-top: #D9731B 1px solid;}.promo_compare_intro {font-family:arial;font-= weight:bold;font-size:12px;}.promo_compare_product {font-family:'Univers= LT Std 5710condensed';font-weight:bold;font-size:12px;}.promo_compare_p= roduct_desc {font-family:arial;font-size:11px;}.promo_compare_promo_link= {font-family:Arial;font-size:11px;color:#0027c2;}.promo_compare_promo_r= estriction {font-family:Arial;font-size:11px;color:#000000;}.promo_compa= re_promo_title {font-family:'Univers LT Std 67 condensed';font-weight:bo= ld;font-size:12px;color:#cc6600;}.promo_compare_subnav_link {font-family= :arial;font-weight:bolder;font-size:12px;color:#0033FF;}.promo_content_p= adding {padding:1px 1px 1px 1px;border:1px solid #000000;}.promo_highlig= ht_background_color {background-color:#D9731B;}.promocomparelink {color:= #000000;text-decoration:none;}.promocomparelink:active {color:#000000;te= xt-decoration:none;}.promocomparelink:hover {color:#000000;text-decorati= on:none;}.promocomparelink:visited {color:#000000;text-decoration:none;}= .promodesc {color:#FFFFFF; font-family:arial;font-size:11px;}.promoHeade= rDesc {border: 1px solid #cccccc; padding-left:20px; padding-right:20px;= padding-top:15px; padding-bottom:20px; background-color:#f2f6ff}.promoH= eaderDescRevid {border: 1px solid #cccccc; padding-left:20px; padding-ri= ght:20px; padding-top:15px; padding-bottom:20px; background-color:#ddf0f= e}.promoHeaderImage {border: 1px solid #cccccc; padding:15px; background= -color:#f2f6ff}.promoHeaderImageRevid {border: 1px solid #cccccc; paddin= g:15px; background-color:#ddf0fe}.promoHeaderLogo {padding-left:15px; pa= dding-right:15px; padding-top:10px; padding-bottom:10px; background-col= or:#FFFFFF}.promolink {color:#cc6600;text-decoration:none;}.promolink:ac= tive {color:#cc6600;text-decoration:none;}.promolink:hover {color:#cc660= 0;text-decoration:none;}.promolink:visited {color:#cc6600;text-decoratio= n:none;}.promoRevid {background-color:white; border-top:0px; border-left= :1px solid #CCCCCC; border-right:1px solid #CCCCCC;border-bottom:1px sol= id #CCCCCC}.promosolid {padding:4px 0px 0px 10px; line-height:14px; whit= e-space:nowrap;vertical-align:middle;}.promotitle {color:#CC6600;font-we= ight:bold;}.promovall {background-color:#f6e3d1; padding:6px 10px 0px 10= px; line-height:9px; white-space:nowrap; font-size:11px; font-family:ari= al,helvetica; vertical-align:middle;}.pscroller4 {position: relative; wi= dth: 100%;height:40px;}.psinfo {float:left;font-size:8pt;color:#0066CC;m= argin-top:10px;}.ratingDisplay {padding: 2px; line-height:20px; height:2= 0px}.ratingImage0_0-5_0 {background-image:url(http://i.dell.com/images/g= lobal/brand/icons/0_0-5_0-rating.gif); background-repeat:no-repeat; back= ground-position: center center;}.ratingImage0_5-5_0 {background-image:ur= l(http://i.dell.com/images/global/brand/icons/0_5-5_0-rating.gif); backg= round-repeat:no-repeat; background-position: center center;}.ratingImage= 1_0-5_0 {background-image:url(http://i.dell.com/images/global/brand/icon= s/1_0-5_0-rating.gif); background-repeat:no-repeat; background-position:= center center;}.ratingImage1_5-5_0 {background-image:url(http://i.dell.= com/images/global/brand/icons/1_5-5_0-rating.gif); background-repeat:no-= repeat; background-position: center center;}.ratingImage2_0-5_0 {backgro= und-image:url(http://i.dell.com/images/global/brand/icons/2_0-5_0-rating= .gif); background-repeat:no-repeat; background-position: center center;}= .ratingImage2_5-5_0 {background-image:url(http://i.dell.com/images/globa= l/brand/icons/2_5-5_0-rating.gif); background-repeat:no-repeat; backgrou= nd-position: center center;}.ratingImage3_0-5_0 {background-image:url(ht= tp://i.dell.com/images/global/brand/icons/3_0-5_0-rating.gif); backgroun= d-repeat:no-repeat; background-position: center center;}.ratingImage3_5-= 5_0 {background-image:url(http://i.dell.com/images/global/brand/icons/3_= 5-5_0-rating.gif); background-repeat:no-repeat; background-position: cen= ter center;}.ratingImage4_0-5_0 {background-image:url(http://i.dell.com/= images/global/brand/icons/4_0-5_0-rating.gif); background-repeat:no-repe= at; background-position: center center;}.ratingImage4_5-5_0 {background-= image:url(http://i.dell.com/images/global/brand/icons/4_5-5_0-rating.gif= ); background-repeat:no-repeat; background-position: center center;}.rat= ingImage5_0-5_0 {background-image:url(http://i.dell.com/images/global/br= and/icons/5_0-5_0-rating.gif); background-repeat:no-repeat; background-p= osition: center center;}.ratingScore {padding-top:2px;text-align:center;= color:#AAAAAA;font-size:7pt; font-family:arial,helvetica}.ratingSummaryB= old {font-weight: bold;}.ratingSummaryHeader {text-align:center; font-we= ight: bold; color:#AAAAAA; font-size:7pt; font-family:arial,helvetica;}.= result_name {font-size:9pt; font-family:arial,helvetica;}.result_summary= {font-size:8pt; font-family:arial,helvetica;}.result_summary_desc {font= -size:8pt; font-family:arial,helvetica;font-weight:bold;}.rg_lnk_desclin= k {font-size:8pt;white-space:nowrap}.rgBodyContainer {}.rgBodyTable {pad= ding-top:2px}.rgBullet {background-image: url(http://i.dell.com/images/g= lobal/general/bullet.gif);background-repeat: no-repeat;padding-left:10px= }.rgBulletedList {font-size:11px; color:#000000;font-family:arial,helvet= ica; line-height:15px; margin-left:5px;}.rgBulletedListV {font-size:11px= ; color:#000000;font-family:arial,helvetica; line-height:15px; padding-t= op:10px;padding-bottom:5px;}.rgBullets {list-style-type: none;margin: 0;= }.rgBulletsV {list-style-type: none;margin:0;}.rgc_new {font-family:aria= l,helvetica;font-size:9pt;font-weight:bold;color:#cc6600;}.rgChildH {bor= der:1px solid #dfdfdf;background-color:#f4f4f4; height:100%;color:#66666= 6;}.rgCmp {background-color: #eeeeee; width:25px; height:100%; padding-t= op:2px}.rgCmpNoneV {border-top: 1px solid #AAAAAA;}.rgCmpV {background-c= olor: #eeeeee; height:25px; border-top: 1px solid #AAAAAA; color:#333333= ; font-family:arial,helvetica; font-size:11px;padding-left:5px;}.rgCol {= border-left: 1px solid #AAAAAA; border-right: 1px solid #AAAAAA}.rgColSp= an {border-top: 1px solid #AAAAAA;}.rgContainer {border-right: 1px solid= #EEEEEE}.rgContainerV {}.rgcspec {display:block ;font-weight:bold;color= :#777777;margin-left:5px;padding-left:8px;background-image:url(http://i.= dell.com/images/global/general/bullet.gif);background-repeat:no-repeat;}= .rgFooterContainer {}.rgImgContainer {}.rgImgContainerV {width:100px; pa= dding-bottom:1px}.rgMiscInfo {}.rgMiscInfoList {font-size:11px; color:#6= 66666;font-family:arial,helvetica;margin-left:5px; padding-left:7px; pad= ding-top:5px}.rgMiscInfommp {font-size:11px; color:#666666;font-family:a= rial,helvetica; font-weight:bold; margin-left:5px; padding-left:7px; pad= ding-top:5px}.rgMiscInfommpdesc {font-size:11px; color:#666666;font-fami= ly:arial,helvetica;font-weight:bold;padding-top:5px}.rgOuterBodyContaine= r {}.rgParentH {border-left: 1px solid #AAAAAA; border-top: 1px solid #A= AAAAA; border-right: 1px solid #AAAAAA;}.rgParentV {border-bottom: 1px s= olid #AAAAAA}.rgridIconPrefix {font-size:11px;color:#666666;float:left;m= argin-left:0px;margin-top:10px;}.rgridIconPrefixH {font-size:11px;color:= #666666}.rgRow {border-bottom:1px solid #AAAAAA; }.rgSLink {float:left; = padding-right:5px; padding-top:3px}.rgSpecialBulletedList {color:#CC6600= ;}.rgSpecialBulletedListV {color:#CC6600;}.rgSummary {font-size:11px; co= lor:#000000;font-family:arial,helvetica; margin-left:10px}.rowCompare {b= ackground-image:url(http://i.dell.com/images/global/brand/ui/rowCompare.= JPG); background-repeat:repeat-x; border-left:1px solid #cccccc; border-= right:1px solid #cccccc; padding-top:0px; height:19px; text-align:center= ; padding-right:5px}.rowCompareText {font-family:arial,helvetica; font-s= ize:9pt; color:white; font-weight:bold; padding-right:15px; text-align:r= ight;padding-top:2px;margin-bottom:0px}.rowlight {background-color:#aaaa= aa; height:21px;}.rowpromo {background-color:#cc6600; height:21px;}.rows= olid {padding:2px 0px 2px 10px; vertical-align:top; background-color:#aa= aaaa; height:21px}.rowsolid_nopadding {padding:4px 0px 0px 10px; line-he= ight:14px; vertical-align:top; background-color:#aaaaaa}.RSegIcon {heigh= t:152px;float:left;margin-left:0px;border:1px solid white;border-left:0p= x;border-right:0px;cursor:pointer;overflow:visible;}.RSegIconImageDiv {b= order:1px solid #999999;width:176px;height:140px;}.RSegIconImageDivlrg {= border:1px solid #999999;width:176px;height:163px;overflow:visible;}.RSe= gIconImageTextDiv {padding-top:110px;valign:bottom;font-size:12px; color= :#0066CC;font-family:arial,helvetica;cursor:pointer;overflow:visible;}.R= SegIconlrg {height:175px;float:left;margin-left:0px;border:1px solid whi= te;border-left:0px;border-right:0px;cursor:pointer;overflow:visible;}.RS= egIconWithMargin {height:152px;float:left;margin-left:0px;margin-right:1= 0px;border:1px solid white;border-left:0px;border-right:0px;overflow:vis= ible;}.RSegIconWithMarginlrg {height:175px;float:left;margin-left:0px;ma= rgin-right:10px;border:1px solid white;border-left:0px;border-right:0px;= overflow:visible;}.rsltGrdRatingSetting {padding: 2px 0px 0px 0px}.rss {= background-image:url(http://i.dell.com/images/global/brand/icons/rss.gif= ); background-repeat:no-repeat;background-position: center left;padding:= 0px 0px 0px 18px}.rStrip {float:left; padding-bottom:2px;font-size:11px}= .rStripB {font-weight:bold}.rStripImage {float:left}.rStripLink {float:l= eft; padding-left:5px; border-left: 1px solid #CCCCCC;}.rStripLinkNb {pa= dding-left:5px;}.rStripNf {padding-bottom:2px; padding-top:2px;font-size= :11px}.rStripText {float:left; padding-left:5px; padding-right:5px; colo= r:#666666}.searchaction {FLOAT: left; WIDTH: 21px; HEIGHT: 17px}.searchi= nput {PADDING-LEFT: 3px; FONT-SIZE:8pt; FLOAT: left; MARGIN-LEFT: 4px; V= ERTICAL-ALIGN: middle; WIDTH: 168px; COLOR: #636365; MARGIN-RIGHT: 3px; = FONT-FAMILY: arial; }.searchtype {PADDING-LEFT: 5px; FONT-SIZE:8pt; COLO= R: #636365; FONT-FAMILY: arial; WIDTH:148px; HEIGHT: 19px}.searchtypelab= el {position:absolute;left:-999px;}.secondinline {background-image:url(h= ttp://i.dell.com/images/global/brand/ui/secondinline.gif); background-re= peat:no-repeat; padding:0px 0px 0px 10px;}.secretText {color:#ffffff;}.s= ecretTextNextGen {color:#FFF}.SegIconSpacerDiv {border:none;height:10px;= width:176px;overflow:hidden;}.segmenter_right {border-right: #666666 1px= solid;}.segmentertitle_other {border : #666666 1px solid;font-family:ar= ial,helvetica; font-size:5pt; padding-top:1px; padding-bottom:1px;paddin= g-left:10px;padding-right:10px;color: white;background-color: #0066cc;}.= segmentertitle_seg {border : #666666 1px solid;font-family:arial,helveti= ca; font-size:5pt; padding-top:1px; padding-bottom:1px;padding-left:10px= ;padding-right:10px;color: white;background-color: #0099ff;}.sharing {ma= rgin-right:10px;float:right;padding-left:20px;background:transparent url= (http://i.dell.com/images/global/brand/ui/share.gif) no-repeat scroll le= ft bottom;font-weight:bold;border-bottom: dotted 1px blue;cursor:pointer= ;text-transform:uppercase;color:#666666;}.show-scrollbars textarea, .sho= w-scrollbars select {overflow:visible;}.sideBarAlignLeft {margin-right:1= 0px;margin-bottom:10px;}.sideBarAlignRight {margin-left:10px;margin-bott= om:10px;}.someclass {position: relative; overflow: hidden;height: 40px;= width: 100%; padding:0px;}.staticBeta {font-family:arial; font-size:8pt;= }.tabFragmentDefault {font-family:Arial,Verdana;font-size:9pt;padding-le= ft:10px;padding-right:10px;padding-top:0px;padding-bottom:0px;background= -color:#F5F5F5}.tabFragmentDefault_blue {font-family:Arial,Verdana;font-= size:9pt;padding-left:10px;padding-right:10px;padding-top:0px;padding-bo= ttom:0px;background-color:#DDF0FE}.tabFragmentDefault_blue_43 {font-fami= ly:Arial,helvetica,sans-serif;font-size:9pt;color:#333333;font-weight:bo= ld;padding-left:10px;padding-right:10px;padding-top:0px;padding-bottom:0= px;background:url(http://i.dell.com/images/global/molecules/tab_bg_off.g= if) repeat-x;text-decoration:none;}.tabFragmentDefault_yellow {font-fami= ly:Arial,Verdana;font-size:9pt;padding-left:10px;padding-right:10px;padd= ing-top:0px;padding-bottom:0px;background-color:#FFFFCC}.tabFragmentDefa= ult_yellow_43 {font-family:Arial,Verdana;font-size:9pt;color:#333333;fon= t-weight:bold;padding-left:10px;padding-right:10px;padding-top:0px;paddi= ng-bottom:0px;background:url(http://i.dell.com/images/global/molecules/t= ab_bg_off.gif) repeat-x;text-decoration:none;}.tabFragmentSelected {font= -family:Arial,Verdana;font-size:9pt;padding-left:10px;padding-right:10px= ;padding-top:0px;padding-bottom:0px;background-color:#FFFFFF}.tabFragmen= tSelected_43 {font-family:Arial,helvetica,sans-serif;font-size:9pt;color= :#FFFFFF;font-weight:bold;padding-left:10px;padding-right:10px;padding-t= op:0px;padding-bottom:0px;background:url(http://i.dell.com/images/global= /molecules/tab_bg_on.gif) repeat-x; text-decoration:none;}.tbl {border-w= idth:0px;}.tbl_bodytab {width:491px;border-width:0px;}.tbl_desclink {bor= der-width:0px;}.tbl_objgroup {width:100%;border-width:0px;}.technote {fo= nt-family:arial,helvetica;font-size:8pt;}.technote_link {color:#0066CC;c= ursor:pointer;}.technotecontainer {text-align:left;font-size:9px;padding= -top:15px;}.technotecontainer sup {color:#999;}.testone#modal_container = {PADDING-RIGHT: 30px; PADDING-LEFT: 30px; PADDING-BOTTOM: 30px; COLOR: #= fff; PADDING-TOP: 30px; BACKGROUND-COLOR: #900; TEXT-ALIGN: center; bord= er-top:10px solid #EEEEEE}.tickertable { height: 40px;width:100%;}.ticke= rtext {padding-left:10px}.tierTd {font-size:8pt;vertical-align:bottom;te= xt-align:left;}.title_emph {font-family:arial,helvetica;font-size:9pt;fo= nt-weight:bold;}.title_emphlight {font-family:arial,helvetica;font-size:= 9pt;font-weight:bold;color:#666666;}.title_level0 {font-family:arial,hel= vetica;font-size:12pt;font-weight:bold;color:Black;}.title_level1 {font-= family:arial,helvetica;font-size:9pt;font-weight:bold;color:#003399;}.ti= tle_level2 {font-family:arial,helvetica;font-size:9pt;font-weight:bold;c= olor:#003399;}.titlestylelight {font-family:arial,helvetica; font-size:9= pt; color:#666666; font-weight:bold;}.titlestylelightbgcolor {background= -color:#E2E2E2;}.titlestylelightfadecolor1 {background-color:#999999;}.t= itlestylelightfadecolor2 {background-color:#CFCFCF;}.titlestylelightfade= color3 {background-color:#E9E9E9;}.titlestylesolid {font-family:arial,he= lvetica; font-size:9pt; color:white; font-weight:bold;}.titlestylesolidb= gcolorblue1 {background-color:#99CCFF;}.titlestylesolidbgcolorblue2 {bac= kground-color:#009FEA;}.titlestylesolidbgcolorblue3 {background-color:#0= 24E97;}.titlestylesolidbgcolorgray1 {background-color:#E3E3E3;}.titlesty= lesolidbgcolorgray2 {background-color:#9C9C9C;}.titlestylesolidbgcolorgr= ay3 {background-color:#4A4A4A;}.titlestylesolidbgcolorviewall {backgroun= d-color:#C8C8C8;}.titletxt {cursor:pointer;display:inline-block;overflow= :hidden;width:300px;white-space:nowrap}.tn {font-size:8pt}.toggleLinks {= }.toolbox_caption {color:#666666;font-family:arial;font-weight:bold;font= -size:9pt;padding-bottom:5px;}.toolbox_divide {background-image:url(http= ://i.dell.com/images/global/brand/ui/hsep.gif);background-repeat:repeat-= x;background-position:center;height:10px;}.toolbox_link {padding:0px 3px= 0px 0px; font-size:8pt; font-family:arial,helvetica; font-weight:normal= ; color:#0033ff; background:url(http://i.dell.com/images/global/brand/ui= /secondary_lnav.gif) no-repeat; line-height:15px; background-position: t= op left;padding-left:7px;}.toolbox_link_collapse {cursor:hand;font-weigh= t:bold;padding:0px 0px 0px 0px; font-size:8pt; font-family:arial,helveti= ca; font-weight:normal; color:#0033ff; background:url(http://i.dell.com/= images/global/brand/icons/collapse7x7.gif) no-repeat; line-height:15px; = background-position: center left;padding-left:10px;}.toolbox_link_collap= se:hover {cursor:hand;text-decoration:underline;font-weight:bold;padding= :0px 0px 0px 0px; font-size:8pt; font-family:arial,helvetica; font-weigh= t:normal; color:#0033ff; background:url(http://i.dell.com/images/global/= brand/icons/collapse7x7.gif) no-repeat; line-height:15px; background-pos= ition: center left;padding-left:10px;}.toolbox_link_expand {cursor:hand;= font-weight:bold;padding:0px 0px 0px 0px; font-size:8pt; font-family:ari= al,helvetica; font-weight:normal; color:#0033ff; background:url(http://i= .dell.com/images/global/brand/icons/expand7x7.gif) no-repeat; line-heigh= t:15px; background-position: center left;padding-left:10px;}.toolbox_lin= k_expand:hover {cursor:hand;text-decoration:underline;font-weight:bold;p= adding:0px 0px 0px 0px; font-size:8pt; font-family:arial,helvetica; font= -weight:normal; color:#0033ff; background:url(http://i.dell.com/images/g= lobal/brand/icons/expand7x7.gif) no-repeat; line-height:15px; background= -position: center left;padding-left:10px;}.toolbox_link_sub {padding:0px= 3px 0px 0px; font-size:8pt; font-family:arial,helvetica; font-weight:no= rmal; color:#0033ff; background:url(http://i.dell.com/images/global/bran= d/ui/secondary_lnav.gif) no-repeat; line-height:15px; background-positio= n: top left;margin-left:7px; padding-left:7px;}.usage_text {font-family:= arial;font-size:9pt;color:#0066cc}.usage_title {font-family:arial;font-s= ize:9pt;font-weight:bold;color:#000000}.validation_required {color:#b900= 06}.validationsummary {background-color:#b90006;color:#ffffff;font-size:= 9pt;}.validationsummary_error {color:#b90006;font-weight:bold;font-size:= 9pt;}.validationsummary_error_footer {color:#b90006;font-size:9pt;}.vali= dationsummary_error_summary {padding-left:15px;color:#b90006;font-size:9= pt;}.validationsummarylink:active {font-size:9pt;color:#0033CC;white-spa= ce:nowrap}.validationsummarylink:hover {font-size:9pt;color:#0033CC;whit= e-space:nowrap}.validationsummarylink:visited {font-size:9pt;color:#0033= CC;white-space:nowrap}.viewallpromo {font-family:Univers LT Std 67 conde= nsed;font-weight:bold;font-size:13px;width: 100%;height:35px;color:#FFFF= FF;vertical-align:top;background-color:#974D1B;cursor: pointer}.viewAllS= ep {background-image:url(http://i.dell.com/images/global/brand/ui/hsep.g= if); background-repeat:repeat-x;padding:0px 0px 10px 10px}.viewLess {fon= t-size:8pt;font-family:arial,helvetica; font-weight:normal; color:#0066c= c;background:url(http://i.dell.com/images/global/brand/icons/collapse7x7= .gif) no-repeat; padding:0px 0px 0px 8px; line-height:15px; background-p= osition: center left}.viewMore {font-size:8pt;font-family:arial,helvetic= a; font-weight:normal; color:#0066cc;background:url(http://i.dell.com/im= ages/global/brand/icons/expand7x7.gif) no-repeat; padding:0px 0px 0px 8p= x; line-height:15px; background-position: center left}.visibleticker {po= sition: absolute; width: 100%;}.vSep {}.vSepV {border-left:1px solid #EE= EEEE;padding-left:5px}.waitcls {position:absolute;font-size:11px;font-we= ight:bold;text-align:center;color:#000000;}.yui-dialog .ft, .yui-simple-= dialog .ft {padding-bottom:5px;padding-right:5px;text-align:right;}.yui-= dialog form, .yui-simple-dialog form {margin:0;}.yui-overlay {position:a= bsolute;display:block;}.yui-panel {visibility:hidden;border-collapse:sep= arate;position:relative;left:0px;top:0px;font:1em Arial;background-color= :#FFF;border:1px solid #000;z-index:1;overflow:hidden;}.yui-panel .bd {p= adding:0px;}.yui-panel .bd p {overflow:hidden;margin:0 0 1em;}.yui-panel= .container-close {position:absolute;top:5px;right:4px;z-index:6;height:= 12px;width:12px;margin:0px;padding:0px;background:url(http://i.dell.com/= images/global/js/yui/close12_1.gif) no-repeat;cursor:pointer;visibility:= inherit;}.yui-panel .ft {padding:4px;overflow:hidden;}.yui-panel .hd {ba= ckground-color:#AAAAAA;color:#FFF;font-size:13px;line-height:15px;border= -bottom:1px solid #000;font-weight:bold;overflow:hidden;padding:4px;}.yu= i-panel-container {position:absolute;background-color:transparent;z-inde= x:6;visibility:hidden;overflow:visible;width:auto;}.yui-panel-container.= focused {}.yui-panel-container.matte {padding:3px;background-color:#FFF;= }.yui-panel-container.matte .underlay {display:none;}.yui-panel-containe= r.shadow {padding:0px;background-color:transparent;}.yui-panel-container= .shadow .underlay {visibility:inherit;position:absolute;background-color= :#000;top:3px;left:3px;z-index:0;width:100%;height:100%; -moz-opacity= : 0.12; opacity:.12; filter:alpha(opacity=3D12);zoom:1;}.yui-simpl= e-dialog .bd .yui-icon {background-repeat:no-repeat;width:16px;height:16= px;margin-right:10px;float:left;}.yui-simple-dialog .bd span.alrticon {b= ackground: url(http://i.dell.com/images/global/js/yui/alrt16_1.gif) no-r= epeat;}.yui-simple-dialog .bd span.blckicon {background: url(http://i.de= ll.com/images/global/js/yui/blck16_1.gif) no-repeat;}.yui-simple-dialog = .bd span.hlpicon {background: url(http://i.dell.com/images/global/js/yui= /hlp16_1.gif) no-repeat;}.yui-simple-dialog .bd span.infoicon {backgroun= d: url(http://i.dell.com/images/global/js/yui/info16_1.gif) no-repeat;}.= yui-simple-dialog .bd span.tipicon {background: url(http://i.dell.com/im= ages/global/js/yui/tip16_1.gif) no-repeat;}.yui-simple-dialog .bd span.w= arnicon {background: url(http://i.dell.com/images/global/js/yui/warn16_1= .gif) no-repeat;}.yui-tt {visibility:hidden;position:absolute;color:#333= ;background-color:#FDFFB4;font-family:arial,helvetica,verdana,sans-serif= ;padding:2px;border:1px solid #FCC90D;font:100% sans-serif;width:auto;}#= scHistoryFrame { position: absolute; top: 0px; left: 0px; z-index: 0; width: 0px; height: 0px; } #buHistoryFrame { position: absolute; top: 0px; left: 0px; z-index: 0; width: 0px; height: 0px; } .sc_dp_processing { display: none; position: absolute; text-align: center; vertical-align: middle; color: red; background-color: Gainsboro; opacity: 0; filter: alpha(opacity=3D0); z-index: 100; /* MozOpacity:70; z-index:100;*/ } .Mod_Selector_table_notselected { border: 1px solid #b2b2b2; height: 20px; width: 100%; margin-bottom: 0px; cursor: hand; } .Mod_Selector_cell_middle_notselected { background-image: url(http://i.dell.com/images/global/configurator/gene= ral/bg_notselected.gif); height: 20px; width: 100%; margin-bottom: 0px; cursor: hand; } .Mod_Selector_cell_middle_selected { background-image: url(http://i.dell.com/images/global/configurator/gene= ral/bg_selected.gif); height: 20px; width: 100%; margin-bottom: 0px; cursor: hand; } .Mod_Selection { font-family: Arial; font-size: 11px; margin-top: 0px; margin-bottom: 0px; margin-left: 5px; } .viewMore { font-family: Arial; font-size: 11px; color: blue; text-decoration: none; } .optionDiv { background-image: url( 'none' ); border: 1px solid Gray; padding: 5px; } .option_display_none { display: none; padding: 5px; } .option_display_visible { display: table; border: 1px solid #b2b2b2; padding: 5px; } .controlLink { font-family: Arial; font-size: 10px; text-decoration: none; } .review_page_mod { font-family: Arial; font-size: 12px; font-weight: bold; } .review_page_opt { font-family: Arial; font-size: 12px; font-weight: normal; } .review_page_edit { font-family: Arial; font-size: 10px; font-weight: normal; } .review_page_row_odd { background-color: whitesmoke; } .review_page_row_even { background-color: white; } .review_page_row_subbill { background-color: #FFFF66; } .review_page_upsell_header { font-family: Arial; font-size: 12px; font-weight: bold; } .review_page_upsell_blurb { font-family: Arial; font-size: 10px; font-weight: normal; } .review_page_upsell_price { font-family: Arial; font-size: 10px; font-weight: normal; } .review_page_header_details { font-family: Arial; font-size: 10px; font-weight: normal; } .product_data_header_align { vertical-align: top; top: 0px; } #maincontentcnt { top: 0px; } #sc_main_overlay_div { position: absolute; display: none; z-index: 500; width: 970px; cursor: wait; background-color: White; opacity: 0; filter: alpha(opacity=3D0); } #sc_main_div { position: relative; top: 25px; left: 0px; height: 481px; width: 970px; padding: 0px 0px 0px 0px; } #sc_tabs_div { position: absolute; height: 30px; width: 735px; top: 0px; z-index: 1; padding: 0px 0px 0px 0px; border: 0px; } #sc_content_div { position: absolute; height: 60px; width: 235px; left: 736px; top: -23px; z-index: 1; padding: 0px 0px 0px 0px; border: 0px; overflow: hidden; } #seg_content { } #sc_app_div { position: absolute; height: 450px; width: 735px; left: 0px; top: 31px; border-top: solid 1px #999999; border-left: solid 1px #999999; border-bottom: solid 1px #999999; padding: 0px 0px 0px 0px; } #sc_pcc_div { border: solid 1px red; position: absolute; height: 452px; width: 231px; top: 31px; left: 736px; padding-left: 4px; background: url(http://i.dell.com/images/global/config/strip.gif) repea= t-y; border: 0px; } #sc_app_hidden_div { display: none; } #bu_header_fast_track_shipping img { width: 30px; height: 30px; } .sc_content_contents { position: relative; z-index: 3; font-family: Arial; font-size: 14px; height: 50px; padding: 0px 0px 0px 0px; z-index: 2; left: 0px; } .sc1_chat_image { border: 0px; padding: 0px 0px 0px 0px; margin: 0px 0px 0px 0px; } .sc_content_text { position: absolute; left: 60px; width: 180px; height: 30px; overflow: visible; top: 5px; } .sc_content_text_chat_bold { color: Black; font-family: Arial; font-size: 12px; font-weight: bold; } .sc_content_text_chat_normal { color: Black; font-family: Arial; font-size: 12px; } .sc_content_text_chat_normal:visited, .sc_content_text_chat_bold:visited= { color: Black; } #scpcc_top_border { vertical-align: top; height: 7px; font-size: 1px; position: relative; padding-bottom: 0px; } #scpcc_top_border_left { position: relative; background-color: #E7ECF0; border-top: solid 1px #999999; vertical-align: top; height: 7px; font-size: 1px; width: 228px; padding-bottom: 0px; } #scpcc_top_border_right { position: absolute; top: 0px; left: 224px; background-color: #E7ECF0; vertical-align: top; height: 7px; width: 7px; padding-bottom: 0px; border-bottom: solid 1px #E7ECF0; } #scpcc_top_border_right_image { border: 0px; padding-bottom: 0px; margin-bottom: 0px; } #scpcc_title { /*border-left:solid 1px #999999;*/ border-right: solid 1px #999999; border-top: 0px; margin-top: 0px; background-color: #E7ECF0; font-weight: bold; font-size: 12pt; font-family: Arial; color: #414141; padding-left: 5px; padding-bottom: 5px; } #scpcc_title_small { border-right: solid 1px #999999; border-bottom: 0px; background-color: #E7ECF0; font-weight: bold; font-size: 12pt; font-family: Arial; color: #414141; z-index: -1; } .scpcc_title_image_small { } #scpcc_price { position: relative; /*border-left:solid 1px #999999;*/ border-right: solid 1px #999999; border-bottom: solid 1px #999999; background-color: #E7ECF0; margin: 0px 0px -2px 0px; padding: 0px 0px 0px 5px; top: -2px; } #scpcc_price_blurb { font-size: 12px; color: Red; border-right: solid 1px #999999; border-bottom: solid 1px #999999; background-color: #E7ECF0; padding-left: 5px; padding-bottom: 2px; } .scpcc_selection_list_selections, .scpcc_selection_list_summary { background-color: #E7ECF0; overflow: auto; padding-left: 5px; /* border-left:solid 1px #999999;*/ border-right: solid 1px #999999; border-bottom: solid 1px #999999; height: 228px; position: relative; } .scpcc_selection_list_selections_alien, .scpcc_selection_list_summary_al= ien { background-color: #171717; overflow: auto; padding-left: 5px; /* border-left:solid 1px #999999;*/ border-right: solid 1px #999999; border-bottom: solid 1px #999999; height: 228px; position: relative; color: #ffffff; } .scpcc_selection_list_summary { background-color: #ffffff; } #scpcc_compatibility_block { background-image: url(http://i.dell.com/images/global/config/alert_sign= .gif); background-repeat: no-repeat; background-position: 5px; height: 18px; background-color: #e07922; margin-top: 0px; margin-left: -3px; border-top: solid 1px #999999; border-right: solid 1px #999999; border-bottom: solid 1px #999999; font-size: 12px; font-weight: bold; padding-left: 35px; vertical-align: middle; padding-top: 2px; cursor: pointer; cursor: hand; color: White; } #scpcc_compatibility_block #compat-open-img { position: absolute; left: 218px; margin-top: 1px; } .gridTitleDelayTime { width: 100%; font-weight: bold; } #ship_date { font-family: Arial; font-size: 10px; text-decoration: none; text-align: left; font-weight: bold; } .scpcc_jump_row { height: 20px; background-color: #E7ECF0; border-bottom: solid 1px #999999; border-right: solid 1px #999999; vertical-align: top; position: relative; padding-top: 0px; margin-top: 0px; clear: both; } .scpcc_update_price { display: none; } .scpcc_discount_details_hidden { display: none; } .scpcc_jump_image { position: relative; top: 4px; padding-left: 5px; padding-right: 5px; float: left; } .scpcc_controlLink { font-family: Arial; font-size: 10px; text-decoration: none; color: Red; } .scpcc_discount_text, .scpcc_update_price_text, .scpcc_print_summary_tex= t { position: relative; top: 2px; } /*hack to get positioning to work right in non-IE browsers*/ .scpcc_jump_row > .scpcc_discount_text, .scpcc_jump_row > .scpcc_update_= price_text, .scpcc_jump_row > .scpcc_print_summary_text { top: 4px; } .scpcc_jump_row > .scpcc_ship_text /*hack to get positioning to work rig= ht in non-IE browsers*/ { top: 2px; } .scpcc_ship_text { color: Red; font: 12px; position: relative; top: 2px; margin-top: 0px; } .scpcc_ship_date { vertical-align: -1px; } a.ship_text_link { color: red; font-size: 10px; } a.ship_text_link_for_premier { color: Black; font-size: 10px; } #ship_date_for_premier { font-family: Arial; font-size: 10px; text-decoration: none; text-align: left; font-weight: bold; color: Black; } .scpcc_component_block_page_title { padding-top: 5px; font-size: 12px; font-weight: bold; position: relative; } .scpcc_component_block_page_title_alien { padding-top: 5px; font-size: 12px; font-weight: bold; position: relative; color: #08E7E9; } div.scpcc_component_list_page_visible { visibility: visible; display: block; margin-top: 5px; position: relative; } div.scpcc_component_list_page_hidden { visibility: hidden; display: none; position: relative; } div.scpcc_component_list_module_visible { visibility: visible; display: block; position: relative; } div.scpcc_component_list_module_hidden { visibility: hidden; display: none; position: relative; } .scpcc_component_list_item, .scpcc_component_list_item_changed, .scpcc_c= omponent_list_item_changed_current, .scpcc_component_list_item_changed_d= efault { background: transparent url(http://i.dell.com/images/global/general/bul= let.gif) no-repeat 0px 1px; padding-left: 10px; font-size: 10px; overflow: visible; font-family: Arial; font-weight: normal; vertical-align: top; line-height: 14px; margin-right: 1px; margin-bottom: 2px; height: auto; } .scpcc_component_list_item_alien, .scpcc_component_list_item_changed_cur= rent_alien, .scpcc_component_list_item_changed_alien, .scpcc_component_l= ist_item_changed_default_alien { background: transparent url(http://i.dell.com/images/global/general/whi= tebullet.gif) no-repeat 0px 1px; padding-left: 10px; font-size: 10px; overflow: visible; font-family: Arial; font-weight: normal; vertical-align: top; line-height: 14px; margin-right: 1px; margin-bottom: 2px; height: auto; } /*hack to get IE to work right. top border on comp config selections in= pcc don't show unless height is specified. but, in IE, the height can't be auto, or it won't work. in ff, setting= height to 14px doesn't allow div to grow automatically and text overwri= tes the next div , so must be set to auto.*/ * html body .scpcc_component_list_item_changed_current { height: 14px; } .scpcc_component_list_item_changed { background-color: #ffffc9; } .scpcc_component_list_item_changed_alien { background-color: #808080; } .scpcc_component_list_item_changed_current { background-color: #ffffc9; border: solid 1px gray; } .scpcc_component_list_item_changed_current_alien { background-color: #808080; border: solid 1px #ffffff; } .scpcc_component_list_item_changed_default { border: solid 1px gray; } a.scpcc_component_href { font-family: Arial; font-size: 10px; color: black; } a.scpcc_component_href_alien { font-family: Arial; font-size: 10px; color: #ffffff; } a.scpcc_component_href:visited { text-decoration: none; font-family: Arial; font-size: 10px; color: black; } a.scpcc_component_href_alien:visited { text-decoration: none; font-family: Arial; font-size: 10px; color: #cccccc; } a.scpcc_component_href:hover { text-decoration: underline; font-family: arial,helvetica; font-size: 10px; color: blue; } a.scpcc_component_href_alien:hover { text-decoration: underline; font-family: arial,helvetica; font-size: 10px; color: #08E7E9; } .scpcc_summary_page_essential_addons { padding-top: 15px; font-size: 11pt; font-weight: bold; } .scpcc_summary_page_essential_addons_alien { padding-top: 15px; font-size: 11pt; font-weight: bold; color: #08E7E9; } .scpcc_upsell { position: relative; } .scpcc_selections_table { } .scpcc_selections_row_1 { } .scpcc_selections_row_1 .r1c1 { width: 60px; } .scpcc_selections_row_1 .r1c2 { } .scpcc_selections_row_2 { } .scpcc_selections_row_2 .r2c1 { } .scpcc_selections_row_3 .r3c1 { } .scpcc_upsell_left_outer { padding-top: 20px; position: relative; float: left; } .scpcc_upsell_right_outer { padding-top: 20px; width: 170px; position: relative; } .scpcc_upsell_image_anchor { width: 50px; height: 50px; vertical-align: top; } .scpcc_upsell_image { border-left: solid 1px gray; border-top: solid 1px gray; border-right: solid 1px silver; border-bottom: solid 1px silver; width: 50px; height: 50px; } .scpcc_upsell_description { font-size: 10px; /*position:relative;*/ } .scpcc_upsell_description_alien { font-size: 10px; /*position:relative;*/ color: #ffffff; } .scpcc_upsell_price { padding-top: 10px; /*position:relative;*/ } .scpcc_upsell_selector { font-size: 10px; position: relative; width: 200px; } .scpcc_upsell_sale_price_SlashThrough { color: #990000; font-family: arial; font-size: 13px; font-weight: bold; } .para_marketingprice_SlashThrough /*Newly added*/ { color: #990000; font-family: arial; font-size: 13px; font-weight: bold; text-decoration: line-through; } .scpcc_upsell_sale_price { color: #000000; font-family: arial; font-size: 13px; font-weight: bold; z-index: -1; } #sc_review_progress { width: 522px; height: 50px; position: absolute; top: 115px; left: 100px; opacity: 10; filter: alpha(opacity=3D100); mozopacity: 10; } #sc_review_progress_text { width: 522px; font-size: 14px; font-weight: bold; text-align: center; } #sc_review_progress_image_container { border: inset 2px #E7ECF0; position: relative; /*border:solid 1px #E7ECF0;*/ width: 522px; height: 32px; text-align: left; } #sc_review_progress_image_back, #sc_review_progress_image_front { position: absolute; top: 0px; left: 0px; width: 522px; height: 28px; text-align: center; vertical-align: middle; font-family: Arial; font-size: 13pt; font-weight: bold; padding-top: 7px; } #sc_review_progress_image_front { height: 25px; } #sc_review_progress_image_back { background-color: #E7ECF0; color: Black; } .sc_review_progress_image_front { background-color: #0682E4; color: White; overflow: hidden; clip: rect(0px 0px 0px 0px); } .sc_review_progress_image_front_alien { background-color: #171717; color: White; overflow: hidden; clip: rect(0px 0px 0px 0px); } #sc_review_content_container { width: 720px; height: 430px; position: absolute; top: 0px; left: 0px; padding-right: 10px; clip: rect(auto auto 0px auto); background-color: White; overflow: hidden; /* opacity:0; filter: alpha(opacity=3D0); MozOpaci= ty:0; */ } .sc_review_action_table { position: relative; width: 695px; } .sc_review_action_row { width: 695px; } .sc_review_action_empty_cell { width: 50%; } .sc_review_print_summary_cell { background-repeat: no-repeat; background-position: 5px; padding-left: 27px; padding-right: 30px; height: 20px; vertical-align: middle; background-image: url(http://i.dell.com/images/global/configurator/gene= ral/control_printer.gif); width: 100px; } .banner_image { height: 300px; width: 300px; position: relative; top: 210px; left: 220px; } .sc_review_action_wishlist { text-align: right; padding-right: 30px; } .sc_review_action_cartadd { text-align: right; width: 100px; padding-right: 30px; } #sc_review_content_outer_div { padding-left: 20px; overflow: auto; width: 705px; height: 100%; position: relative; } .sc_review_content_image { width: 150px; text-align: left; position: relative; } .sc_review_content_summary_outer { position: absolute; left: 200px; top: 10px; width: 500px; } .sc_review_content_summary_desc_outer { position: relative; width: 500px; } .sc_review_content_summary_image_div { position: relative; } .sc_review_content_review_recommendations_image { float: left; border: 0px; margin: 0px; padding: 0px; } .sc_review_content_summary_desc { position: absolute; left: 50px; margin-top: 7px; font-size: 18pt; font-weight: bold; font-family: Arial; color: #414141; width: 450px; } .sc_review_content_compat_issues_container { position: absolute; top: 40px; width: 500px; } .sc_review_content_review_rec_outer { position: relative; width: 500px; height: 50px; } .sc_review_content_compat_issues { font-family: Arial; font-size: 12px; font-weight: bold; color: #e07922; } .sc_review_content_compat_issues_text { font-family: Arial; font-size: 12px; font-weight: bold; color: blue; text-decoration: underline; } .sc_review_content_compat_issues_text:hover { font-family: Arial; font-size: 12px; font-weight: bold; color: blue; text-decoration: none; } .sc_review_content_compat_issues_text:visited { font-family: Arial; font-size: 12px; font-weight: bold; color: blue; } /* .sc_review_content_compat_issues_none_outer { height:50px; width:35px; } = */ .sc_review_content_compat_issues_none { font-weight: bold; font-size: 14px; height: 20px; width: 475px; } .sc_review_content_review_recommendations { font-size: 12px; background-color: #D6F4C0; height: 20px; width: 475px; } #sc_review_selections_table { position: relative; border-collapse: collapse; height: 100px; width: 655px; } #sc_review_selections_table tr { font-family: Arial; } #sc_review_selections_table .odd { font-family: Arial; background-color: whitesmoke; } #sc_review_selections_table .subbill { font-family: Arial; background-color: #FFFF66; } #sc_review_selections_table tr .scrtd1, #sc_review_selections_table tr .= scrtdcc1 { width: 150px; font-size: 12px; font-weight: bold; vertical-align: top; } #sc_review_selections_table tr .scrtdcc1 { padding-left: 15px; } #sc_review_selections_table tr .scrtd2, #sc_review_selections_table tr .= scrtdcc2 { padding-left: 20px; font-size: 12px; vertical-align: top; } #sc_review_selections_table tr .scrtdcc2 { padding-left: 35px; } #sc_review_selections_table tr .scrtd3 { padding-left: 20px; font-size: 12px; vertical-align: top; } .sc_review_selections_page_title_cell { vertical-align: middle; height: 40px; padding-top: 15px; } .sc_review_selections_page_title_image { vertical-align: middle; height: 35px; width: 50px; padding-bottom: 7px; padding-right: 10px; } .sc_review_selections_page_title { font-family: Arial; font-weight: bold; font-size: 14px; vertical-align: middle; height: 40px; } .sc_review_upsell_image { margin-left: 50px; display: none; } /* tabs start */ #configTabs { position: absolute; top: 5px; left: 0px; width: 970px; height: 27px; margin: 0px; padding: 0px; z-index: 1; overflow: hidden; } #configTabs table { border-collapse: collapse; } #configTabs td { border: none; padding: 0px; } #configTabs a { float: left; background: url(http://i.dell.com/images/global/config/tab-left.gif) no= -repeat left top; margin: 0px; padding: 0px 0px 0px 9px; text-decoration: none; background-position: 0px 0px; cursor: pointer; } #configTabs a span { float: left; display: block; background: url(http://i.dell.com/images/global/config/tab-right.gif) n= o-repeat right top; background-position: 100% 0px; padding: 5px 13px 6px 0px; cursor: pointer; } #configTabs img { border: none; position: relative; top: 0px; display: inline; } #configTabs font { border: none; position: relative; top: -3px; left: 5px; display: inline; color: #175dff; font-weight: bold; font-family: Arial; font-size: 8pt; } #configTabs .current a { background: url(http://i.dell.com/images/global/config/tab-left-current= .gif) no-repeat right top; background-position: 0px 0px; } #configTabs .current a span { background: url(http://i.dell.com/images/global/config/tab-right-curren= t.gif) no-repeat right top; background-position: 100% 0px; } #configTabs #current font { color: #6f6f6f; } #icon-price-div { top: 0px; left: 0px; width: 231px; height: 100%; } /* divs contained in main-div */ #sc_app_div #module-title-div { position: absolute; width: 405px; height: 35px; left: 325px; top: 0px; text-align: left; padding-top: 34px; padding-left: 0px; font-family: Arial; font-size: 18pt; font-weight: normal; color: #414141; } #sc_app_div #module-title-div table { position: absolute; top: 40px; left: 3px; font-size: 8pt; } #sc_app_div #module-title-div table td { font-size: 8pt; } #sc_app_div #module-title-div .mod-title-img { position: absolute; left: -7px; top: 22px; } #sc_app_div #module-title-div img { border: none; } #sc_app_div #module-title-div tr { height: 34px; } #sc_app_div #module-title-div .td-btn-text { padding-right: 8px; padding-left: 1px; } #sc_app_div #module-title-div .td-btn-text a { color: #0033FF; } #sc_app_div #next-btn-div { position: absolute; width: 375px; height: 70px; top: 304px; left: 325px; vertical-align: top; padding-top: 0px; } #sc_app_div #buy-btn-div { position: absolute; top: 28px; width: 385px; height: 35px; left: 0px; } #sc_app_div #buy-btn-div #wish-list-div { position: absolute; color: Green; } #next-btn-div #prev-bundle-btn-div { position: absolute; left: 34px; top: 5px; padding-top: 0px; } #prev-bundle-btn-div #bundle-express-btn-div { top: 0px; } #prev-bundle-btn-div #bundle-configure-btn-div { top: 0px; float: right; } #prev-bundle-btn-div { background-repeat: no-repeat; background-position: center; } #sc_app_div #buy-btn-div-bundle { position: absolute; width: 375px; height: 35px; top: 5px; left: 0px; } #next-btn-div #top-btn-div-bundle { position: absolute; left: 5px; top: 5px; width: 275px; padding-top: 0px; } #sc_app_div #module-message-div { position: absolute; width: 400px; height: 10px; top: 290px; left: 325px; vertical-align: top; padding-top: 0px; font-family: Arial; font-size: 8pt; color: Gray; } #sc_goicon_div { margin-left: 10px; margin-top: 5px; margin-bottom: 5px; } #sc_goicon_div span { margin-left: 3px; font-family: Arial; font-size: 8pt; color: blue; font-weight: bold; } #sc_app_div #icon-alloptions-div { cursor: hand; position: absolute; width: 400px; height: 15px; left: 10px; top: 5px; overflow: hidden; } #sc_app_div #icon-alloptions-div span { padding-left: 3px; font-family: Arial; font-size: 8pt; color: blue; font-weight: bold; } #sc_app_div #icon-flash-div { position: absolute; top: 22px; width: 314px; height: 314px; left: 0px; overflow: hidden; opacity: 1; filter: alpha(opacity=3D100); visibility: visible; } #sc_app_div #icon-image-div { position: absolute; width: 315px; height: 315px; left: 4px; top: 23px; overflow: hidden; } #sc_app_div #icon-image-div #icon-image-disclaimer { padding-left: 4px; position: absolute; width: 312px; height: 12; left: 0px; top: 290px; font-family: Arial; font-size: 8pt; color: Gray; } #sc_app_div .icon_image_optimg_div { position: absolute; width: 314px; height: 314px; left: 0px; top: 0px; overflow: hidden; } #sc_app_div #icon-image-div .icon_large_mod_img { position: absolute; border-style: none; visibility: visible; } #sc_app_div #icon-image-div #icon_large_mod_img2 { visibility: visible; opacity: 0; filter: alpha(opacity=3D0); height: 314px; z-index: 100; } #sc_app_div #icon-options-div { position: absolute; overflow: auto; width: 402px; height: 205px; left: 325px; top: 80px; } #sc_test_cc { position: absolute; width: 30px; height: 100px; left: 20px; top: 425px; } #sc_app_div #icon-modules-div { position: absolute; width: 100%; height: 100px; left: 0px; top: 340px; } #icon-options-table { position: absolute; left: 0px; top: 0px; border-spacing: 0px; border-collapse: separate; font-family: Arial; font-size: 8pt; } #icon-options-table TD { border-spacing: 0px; vertical-align: top; padding-top: 5px; padding: 0px 0px 0px 0px; font-size: 8pt; } #icon-options-table .opt_category_expand_collapse { padding-top: 5px; } #icon-options-table .delta_price { font-size: 8pt; font-weight: bold; } #icon-options-table .pos_stmt { font-size: 9pt; font-weight: bold; color: Green; } /* make the first row have 0 padding */ #icon-options-table .opt_radio_cell_first { /* top right bottom left */ border-width: 1px 0px 1px 1px; border-style: solid; border-color: White; padding-top: 0px; width: 20px; } #icon-options-table .opt_radio_cell { border-width: 1px 0px 1px 1px; border-style: solid; border-color: White; padding-top: 3px; width: 20px; } .sc_option_image_info { margin-top: 8px; } /* make the first row have 0 padding */ #icon-options-table .opt_desc_cell_first { border-width: 1px 1px 1px 1px; border-style: solid; border-color: White; padding-top: 0px; padding-left: 2px; padding-right: 0px; width: 332px; cursor: default; } #icon-options-table .opt_desc_cell { border-width: 1px 1px 1px 1px; border-style: solid; border-color: White; padding-top: 2px; padding-left: 2px; padding-right: 0px; width: 332px; cursor: default; } #icon-options-table .opt_modblurb_cell { padding-top: 0px; font-size: 7pt; padding-left: 6px; width: 375px; } #icon-options-table .mod_upsell_cell { padding-left: 6px; font-size: 12px; } /* icon bar stuff */ #icon-modules-div div#clipLayer { position: relative; left: 0px; top: 0px; height: 95px; overflow: hidden; z-index: 1; } #icon-modules-div .contentLayer { position: relative; z-index: 1; left: 0px; top: 0px; height: 100%; width: 100%; cursor: pointer; } #icon-modules-div div#left { position: relative; visibility: visible; left: 0; top: 0; z-index: 3; } #icon-modules-div div#right { position: relative; visibility: hidden; left: 0; top: 0; z-index: 3; } #icon-modules-div .wrapperElement { height: 100%; position: absolute; display: block; border: none; text-align: center; } #icon-modules-div .imageElement { position: absolute; left: 15px; border: none; width: 50px; height: 35px; } #icon-modules-div .scrollIconText { position: absolute; border: none; top: 58px; left: 0px; width: 100%; font-size: 7pt; color: gray; font-weight: normal; font-family: Arial; text-align: center; overflow: hidden; } #icon-modules-div .scrollIconTextCurrent { background-color: #0066CC; color: white; } #icon-modules-div .scrollIconTextPrevious { color: #0033FF; } #icon-modules-div .scrollIconTextHover { color: #0033FF; text-decoration: underline; } #icon-modules-div .triangle { visibility: hidden; display: block; z-index: -1; position: absolute; top: 52px; left: 34px; width: 12px; height: 6px; } /* end icon bar stuff */ .sc_review_upsells_bottom_div { position: relative; float: left; height: 225px; width: 200px; margin-top: 10px; margin-left: 5px; margin-right: 5px; padding: 3px 5px 3px 5px; font-family: Arial; font-size: 10px; border-right: solid 1px black; border-left: solid 1px silver; border-bottom: solid 1px black; border-top: solid 1px silver; } .sc_review_upsell_bottom_image { text-align: center; border-top: solid 1px silver; border-left: solid 1px silver; border-right: solid 1px silver; border-bottom: solid 1px silver; margin: 2px 0px 12px 50px; padding: 0px 0px 0px 0px; width: 100px; height: 100px; } .sc_review_upsell_bottom_add { position: absolute; top: 205px; left: 10px; width: 100%; } #sc_list_div { position: relative; overflow: auto; width: 725px; height: 452px; padding: 0px 0px 0px 0px; margin: 0px 0px 0px 0px; border: 0px; } .sc_list_table { width: 675px; border-collapse: collapse; padding: 0px 0px 0px 0px; margin: 20px 0px 0px 0px; border: 0px; } .sc_list_table td { padding: 0px 0px 0px 0px; margin: 0px 0px 0px 0px; } .sc_list_continue { float: right; padding-right: 20px; } .sc_list_express_configure_btn { float: right; padding-right: 20px; width: 235px; } #sc_cc_div { position: relative; left: 5px; top: 5px; margin-right: 10px; padding-right: 10px; width: 705px; height: 400px; border-top: solid 2px silver; border-left: solid 2px silver; border-right: solid 3px gray; border-bottom: solid 3px gray; } #sc_cc_inner_div { position: relative; left: 5px; top: 5px; margin-right: 0px; width: 700px; height: 375px; overflow: auto; } #sc_cc_navigation_links { position: relative; width: 680px; margin-top: 3px; } #sc_cc_return_div { position: relative; top: -10px; } #sc_cc_next_div { } #sc_app_inner_div { position: relative; top: 0px; left: 0px; width: 100%; height: 100%; margin: 0px 0px 0px 0px; padding: 0px 0px 0px 0px; border: 0px; } .sc_cc_selected_span_visible { margin-top: 5px; margin-bottom: 5px; margin-left: 10px; width: 50px; overflow: visible; } .sc_cc_selected_span_hidden { display: none; } /* shared between classic and super */ .option_discount_text { font-family: Arial; font-size: 8pt; color: #FF6600; } /* end shared */ #compositeConfigWarning { position: absolute; display: none; width: 270px; height: auto; overflow: visible; filter: alpha(opacity=3D0); mozopacity: 0; opacity: 0; z-index: 99; } #compositeConfigWarning .compositeConfigWarningMessage { margin-top: 25px; color: black; font-weight: bold; font-family: Arial; font-size: 10pt; vertical-align: top; display: inherit; } #compositeConfigWarning .compositeConfigWarningCallout { position: relative; top: -1px; left: 10px; background: url(http://i.dell.com/images/global/config/callout.gif) no-= repeat; height: 20px; } #compositeConfigWarning IMG { position: absolute; border: none; top: 4px; left: 225px; cursor: pointer; cursor: hand; } #compositeConfigWarning .t { background: url(http://i.dell.com/images/global/config/gray-pixel.gif) = 0 0 repeat-x; width: 245px; z-index: 200; background-color: #e7ecf0; } #compositeConfigWarning .b { background: url(http://i.dell.com/images/global/config/gray-pixel.gif) = 0 100% repeat-x; } #compositeConfigWarning .l { background: url(http://i.dell.com/images/global/config/gray-pixel.gif) = 0 0 repeat-y; } #compositeConfigWarning .r { background: url(http://i.dell.com/images/global/config/gray-pixel.gif) = 100% 0 repeat-y; } #compositeConfigWarning .bl { background: url(http://i.dell.com/images/global/config/bottom-left.gif)= 0 100% no-repeat; } #compositeConfigWarning .br { background: url(http://i.dell.com/images/global/config/bottom-right.gif= ) 100% 100% no-repeat; } #compositeConfigWarning .tl { background: url(http://i.dell.com/images/global/config/top-left.gif) 0 = 0 no-repeat; } #compositeConfigWarning .tr { background: url(http://i.dell.com/images/global/config/top-right.gif) 1= 00% 0 no-repeat; padding: 10px; } /* classic compatability */ #val-error-window { position: absolute; z-index: 200; background-image: url(http://i.dell.com/images/global/configurator/gene= ral/background.gif); background-repeat: repeat-x; background-color: whitesmoke; border-left: solid 1px black; border-top: solid 1px black; border-right: outset 2px black; border-bottom: outset 2px black; padding-right: 1px; padding-bottom: 5px; text-indent: 5px; color: White; font-size: 10pt; font-family: Arial,Helvetica; font-weight: bold; } #val-error-title { position: absolute; top: 2px; } #val-closebox { position: absolute; z-index: 210; top: 1px; width: 22px; height: 32px; text-align: center; text-indent: 0px; padding-left: 4px; padding-top: 2px; cursor: hand; } #val-text { position: absolute; z-index: 220; left: 2px; top: 25px; color: Black; padding-right: 5px; padding-left: 5px; overflow-y: auto; background-color: whitesmoke; font-size: 12px; font-weight: normal; text-indent: 0px; text-align: left; } #val-text .val_bullet_cl { vertical-align: top; padding-top: 4px; } /* each cl module in*/ #val-text .val_cl_hdr_cl { font-size: 10pt; font-weight: bold; } /* each cl msg under the module*/ #val-text .val_cl_msg_cl { font-size: 8pt; color: #E17924; font-weight: bold; } /* the list msg for cl groups*/ #val-text .val_cl_grp_cl { font-size: 8pt; color: black; font-weight: normal; } #val-text .val_errors_header { font-size: 12px; color: Gray; font-weight: bold; font-style: italic; padding-bottom: 0px; padding-top: 0px; } #val-text .val_warnings_header { font-size: 12px; color: Gray; font-weight: bold; font-style: italic; padding-bottom: 0px; padding-top: 0px; } /* these are the ones after a list of errors need some padding*/ #val-text .val_warnings_header2 { padding-top: 3px; } #val-text .val_sys_name { text-indent: 0px; font-weight: bold; text-align: left; padding-top: 0px; padding-bottom: 0px; } /*this is only applied to the ones not listed first*/ #val-text .val_sys_name2 { padding-top: 10px; } #val-text .val_msg { color: Black; font-size: 12px; } /* icon compatibility message center */ #icon-val-main-div { position: absolute; left: 9px; top: 25px; width: 318px; height: 318px; z-index: 500; } #icon-val-main-div #icon-val-cont-div { color: #E17924; position: absolute; border: solid 1px gray; left: 0px; top: 0px; width: 315px; height: 315px; z-index: 500; background-color: #F4F4F4; } #icon-val-main-div #icon-val-shadow-div { position: absolute; left: 5px; top: 5px; width: 315px; height: 315px; background: gray; z-index: 499; filter: alpha(opacity=3D40); opacity: .5; } #icon-val-main-div #icon-val-alert-img { position: absolute; left: 10px; top: 10px; } #icon-val-main-div #icon-val-close-img { position: absolute; left: 298px; top: 4px; cursor: pointer; } #icon-val-main-div #icon-val-alert-title { width: 225px; height: 30px; font-family: Arial; font-weight: bold; font-size: 12pt; position: absolute; left: 70px; top: 25px; } #icon-val-main-div #icon-val-textc-div { overflow-y: auto; position: absolute; left: 10px; top: 65px; width: 290px; height: 220px; } #icon-val-main-div .later_image { position: absolute; left: 8px; top: 290px; cursor: pointer; } #icon-val-main-div .later_text { font-size: 10pt; font-weight: bold; position: absolute; left: 30px; top: 290px; } #icon-val-textc-div .val_bullet_cl { vertical-align: top; padding-top: 4px; } /* each cl module in*/ #icon-val-textc-div .val_cl_hdr_cl { font-size: 10pt; font-weight: bold; } /* each cl msg under the module*/ #icon-val-textc-div .val_cl_msg_cl { font-size: 8pt; color: #E17924; font-weight: bold; } /* the list msg for cl groups*/ #icon-val-textc-div .val_cl_grp_cl { font-size: 8pt; color: black; font-weight: normal; } #icon-val-textc-div .val_errors_header { font-size: 12px; color: #E17924; font-weight: bold; font-style: italic; padding-bottom: 0px; padding-top: 0px; } #icon-val-textc-div .val_warnings_header { font-size: 12px; color: #E17924; font-weight: bold; font-style: italic; padding-bottom: 0px; padding-top: 0px; } /* these are the ones after a list of errors need some padding*/ #icon-val-textc-div .val_warnings_header2 { padding-top: 3px; } #icon-val-textc-div .val_sys_name { text-indent: 0px; font-weight: bold; text-align: left; padding-top: 0px; padding-bottom: 0px; } /*this is only applied to the ones not listed first*/ #icon-val-textc-div .val_sys_name2 { padding-top: 10px; } #icon-val-textc-div .val_msg { color: Black; font-size: 10pt; } /* begin icon compatibility message center for list mode */ #list-val-main-div { position: relative; width: 730px; height: 138px; left: 5px; z-index: 500; padding-bottom: 5px; } #list-val-main-div #list-val-cont-div { color: #E17924; position: absolute; border: solid 1px gray; left: 0px; top: 2px; width: 720px; height: 135px; background-color: #F4F4F4; } #list-val-main-div #list-val-shadow-div { position: absolute; left: 5px; top: 7px; width: 720px; height: 135px; background: gray; filter: alpha(opacity=3D60); opacity: .5; } #list-val-main-div #list-val-alert-img { position: absolute; left: 5px; top: 5px; } #list-val-main-div #list-val-close-img { position: absolute; left: 705px; top: 4px; cursor: pointer; } #list-val-main-div #list-val-alert-title { vertical-align: bottom; width: 600px; font-family: Arial; font-weight: bold; font-size: 8pt; position: absolute; left: 32px; top: 10px; } #list-val-main-div #list-val-textc-div { overflow-y: auto; position: absolute; left: 10px; top: 25px; width: 708px; height: 100px; } #list-val-textc-div .val_bullet_cl { vertical-align: top; padding-top: 4px; } /* each cl module in*/ #list-val-textc-div .val_cl_hdr_cl { font-size: 10pt; font-weight: bold; } /* each cl msg under the module*/ #list-val-textc-div .val_cl_msg_cl { font-size: 8pt; color: #E17924; font-weight: bold; } /* the list msg for cl groups*/ #list-val-textc-div .val_cl_grp_cl { font-size: 8pt; color: black; font-weight: normal; } #list-val-textc-div .val_errors_header { font-size: 12px; color: #E17924; font-weight: bold; font-style: italic; padding-bottom: 0px; padding-top: 0px; } #list-val-textc-div .val_warnings_header { font-size: 12px; color: #E17924; font-weight: bold; font-style: italic; padding-bottom: 0px; padding-top: 0px; } /* these are the ones after a list of errors need some padding*/ #list-val-textc-div .val_warnings_header2 { padding-top: 3px; } #list-val-textc-div .val_sys_name { text-indent: 0px; font-weight: bold; text-align: left; padding-top: 0px; padding-bottom: 0px; } /*this is only applied to the ones not listed first*/ #list-val-textc-div .val_sys_name2 { padding-top: 10px; } #list-val-textc-div .val_msg { color: Black; font-size: 10pt; } /* fix storm masthead to always be on top*/ #masthead div.activetableft { z-index: 1000; } #masthead div.activetabhoverleft { z-index: 1000; } #sc_debug_div { position: absolute; border: solid 1px red; left: 0px; top: 0px; width: 250px; height: 200px; overflow-y: auto; z-index: 1000; background-color: White; visibility: visible; font-size: 10px; } .sc_next_mod_btn { float: right; left: 217px; width: 45%; position: absolute; top: 0px; right: 20px; } *html .sc_next_mod_btn { left: 211px; } .sc_icon_prrp_div { width: 200px; } .sc_back_text, .sc_back_text:visited { position: relative; font-family: Arial; font-size: 12px; color: Blue; width: 100px; margin-right: 20px; top: 4px; } .sc_back_text_span { position: relative; top: -4px; margin-left: 4px; width: 200px; cursor: pointer; cursor: hand; } .prev_deb_table { font-size: 8pt; width: 100%; } .mid_col { text-align: center; font-size: 8pt; border-top: 1px solid black; border-bottom: 1px solid black; width: 8%; font-size: 7pt; } .lft_col { padding-left: 2; text-align: left; font-size: 8pt; border-top: 1px solid black; border-bottom: 1px solid black; border-left: 1px solid black; width: 26%; font-size: 7pt; } .rgt_col { text-align: right; font-size: 8pt; border: 1px solid black; font: bold; background: #DDDDDD; width: 6%; font-size: 7pt; } .gen_row { text-align: center; font-size: 8pt; width: 8%; font-size: 7pt; } .desc_row { padding-right: 5pt; font-size: 8pt; text-align: left; width: 26%; font-size: 7pt; } .flavored_option_display_hide { display: none; } .flavored_option_display_disabled { color: #999999; } .flavored_option_display_enabled { color: #000000; } .scpcc_component_list_pfyd_item_details { padding-left: 10px; font-size: 10px; overflow: visible; font-family: Arial; font-weight: normal; vertical-align: top; line-height: 14px; margin-right: 1px; margin-bottom: 2px; height: auto; } .scpcc_component_list_pfyd_item { background: url('http://i.dell.com/images/global/general/bullet.gif') n= o-repeat 0px 1px; padding-left: 10px; font-size: 11px; font-weight: bold; overflow: visible; font-family: Arial; vertical-align: top; line-height: 14px; margin-right: 1px; margin-bottom: 2px; height: auto; } .scpcc_component_list_pfyd_link { padding-left: 0px; font-size: 11px; font-weight: bold; overflow: visible; font-family: Arial; vertical-align: top; line-height: 14px; margin-right: 1px; margin-bottom: 2px; height: auto; } .olt_table_content_cfg { color: Black; font-family: arial,helvetica,sans-serif; font-size: 8pt; } .qty_text_box_edit { font-family: Arial; font-size: 8pt; } .qty_text_box_set { border: 1px solid #000000; font-family: Arial; font-size: 8pt; background-color: #F0F0F0; } #picta_div { display: none; position: absolute; /*top:35px; left:150px; */ z-index: 3; background-color: #ffffff; /*filter:alpha(opacity=3D100); -moz-opacit= y:1.00; opacity:1.00; */ /*border:0px solid white; */ /*margin:auto; *= / color: white; padding: 0px; } .content_faded { filter: alpha(opacity=3D50); -moz-opacity: .50; opacity: .30; background-color: #000; z-index: 100; position: absolute; /*left:0px; top:0px; width: 100%; height:100= %;*/ } #est_ship_date { color: Red; } .debugId { font-size: 9px; color: gray; } /* Bundles icon view */ .bundleGroupTbl { /*position:absolute;left:0px;top:0px;*/ border-spacing: 0px; border-collapse: collapse; font-family: Arial; font-size: 8pt; } .bundleGroupTbl td { border-spacing: 0px; vertical-align: top; padding-top: 5px; padding: 0px 0px 0px 0px; font-size: 8pt; } tr.bundleHdrRow { } table.bundleGroupTbl td.bundleInputCell { vertical-align: middle; padding-right: 10px; border-width: 1px 0px 1px 1px; border-style: solid; border-color: White; padding-top: 3px; width: 20px; } table.bundleGroupTbl td.bundleInputCellFirst { /* make the first row have 0 padding */ /* top right bottom left */ padding-top: 0px; } td.bundleHdrCell { padding: 0px; } td.bundleHdrCellNotSel { background-color: #dd7702; } td.bundleHdrCellSel { background-color: #cc6602; } table.bundleHdrTable { width: 100%; margin: 0px; border-collapse: collapse; } table.bundleHdrTable td { vertical-align: middle; height: 28px; } table.bundleHdrTable td.bundleIconCell { /*width:32px;*/ } table.bundleHdrTable td.bundleNameCell { padding-left: 5px; color: white; font-size: 14px; font-weight: bold; } table.bundleHdrTable td.bundleNameCell .wordBundle { color: black; } table.bundleHdrTable td.bundleShowHideCell { width: 28px; height: 25px; } /*table.bundleHdrTable td.bundleHdrLeft { width:9px;background: transpar= ent url(http://i.dell.com/images/global/configurator/general/bundleLeft.= png) no-repeat top left; }*/ table.bundleHdrTable td.bundleHdrLeft { width: 9px; } table.bundleHdrTable td.bundleHdrRight { width: 9px; } td.bundleHdrCellSel td.bundleHdrLeft { width: 9px; } td.bundleHdrCellSel td.bundleHdrRight { width: 9px; } table.bundleHdrTable td.bundleShowHideCellCollapsed { background: transparent url(http://i.dell.com/images/global/configurato= r/general/bundleColl.png) no-repeat center right; } table.bundleHdrTable td.bundleShowHideCellExpanded { background: transparent url(http://i.dell.com/images/global/configurato= r/general/bundleExp.png) no-repeat center right; } td.bundleHdrCellSel td.bundleShowHideCellCollapsed { background: transparent url(http://i.dell.com/images/global/configurato= r/general/bundleCollHvr.png) no-repeat center right; } td.bundleHdrCellSel td.bundleShowHideCellExpanded { background: transparent url(http://i.dell.com/images/global/configurato= r/general/bundleExpHvr.png) no-repeat center right; } tr.bundleNoneRow { } tr.bundleNoneRow td.bundleInputCell { vertical-align: middle; } tr.bundleNoneRow td.bundleNoneCell { vertical-align: middle; padding-left: 10px; padding-top: 8px; padding-bottom: 8px; } tr.bundleDetailsRow { } td.bundleDetailsCell { } td.bundleCellIcon { width: 332px; cursor: default; } td.bundleCellList { width: 550px; cursor: default; } table.bundleOptionsTable { } table.bundleOptionsTable td { vertical-align: middle; padding: 0px 3px 0px 12px; background: transparent url(http://i.dell.com/images/global/config/carr= ot.gif) no-repeat left center; } div.bundleDetailsPrice { font-weight: bold; margin-top: 0.25em; margin-bottom: 1em; float: right; font-size: 16px; } span.bundleRetailPrice { color: black; text-decoration: line-through; margin-left: 0.25em; margin-right: 0.25em; } span.bundleDiscountPrice { color: #669933; } div.bundleDetailsDesc { font-weight: bold; margin-top: 5px; margin-bottom: 5px; } div.bundleDisplayNone { display: none; padding: 0px; } div.bundleDisplayVisible { display: block; padding: 5px; } /* Bundles list view */ table.listBundleGroupTbl { width: 100%; } .listBundleGroupHdr { vertical-align: top; white-space: nowrap; } td.bundleGroupIcon { vertical-align: top; width: 75px; } .bundleGroupIconImg { border-style: none; } .bundleGroupBundles { vertical-align: top; } div.bundleGroupDisplayNone { display: none; padding: 0px; } div.bundleGroupDisplayVisible { display: block; padding: 5px; } td.Mod_Selector_cell_middle_notselected p, td.Mod_Selector_cell_middle_s= elected p { font-family: Arial; font-size: 13px; font-weight: bold; margin-top: 0px; margin-bottom: 0px; margin-left: 5px; cursor: default; } .bundleGroupSpacer { height: 25px; } .listBundleGroupDtlRow .icon_image_div { position: relative; width: 315px; height: 315px; left: 0px; top: 0px; overflow: hidden; } .listBundleGroupDtlRow .icon_image_div .icon_image_optimg_div { position: relative; width: 314px; height: 314px; left: 0px; top: 0px; overflow: hidden; } .listBundleGroupDtlRow .icon_image_div .icon_large_mod_img { position: relative; border-style: none; visibility: visible; } .bundledOption { color: #999999 !important; } .bundledModuleDescIcon, .bundledModuleDescList { font-size: 13px !important; font-weight: bold; padding-right: 20px; } div.bundledModuleDescIcon { padding-left: 18px; margin-top: 10px; } td.bundleGroupBlurbCell { padding-top: 3px; font-size: 9px !important; } td.bundleGroupBlurbCellPad { padding-bottom: 9px; } td.bundleGroupBlurbCell p { margin-top: 5px; margin-bottom: 5px; } /* BUILDER SECTION */ .bu_validation_a { color: #3399CC !important; font-family: arial,helvetica; font-size: 11px; font-weight: bold !important; text-decoration: underline; } .bu_validation_a:hover { color: #3399CC !important; font-family: arial,helvetica; font-size: 11px; font-weight: bold; } .bu_header_container { width: 965px; /*margin: 0 auto 10 auto;*/ position: relative; /* border: 1px solid blue; */ /*CR#67989/68868 AND = TD#68809*/ /*height: 248px;*/ color: #fff !important; background-color: #E4E4E4; } .bu_header_container_table { /*width: 401px;*/ /*CR#67989/68868 AND TD#68809*/ width: 965px; } #bu_page_container { width: 965px; margin: 0 auto 0 auto; position: relative; text-align: left; border: 0px solid green; color: #000; height: auto; overflow: visible; top: 0px; } .bu_header_container_review { width: 965px; margin: 0 auto 10 auto; position: relative; /* border: 1px solid blue; */ /*CR#67989/68868 AND = TD#68809*/ /*height: 308px;*/ color: #fff !important; /*background-image: url(http://i.dell.com/image= s/global/builder/bu_cp_black_gradient_glow.png); background-image: ur= l(http://i.dell.com/images/global/builder/bu_cp_black_gradient_glow.jpg)= ; */ /*background-image:url(http://i.dell.com/images/global/builder/hero= /studio-14z-blkwlan.png); background-repeat:no-repeat;*/ background-color: #ffffff; top: 0px; } .bu_page_container_view_by { position: absolute; right: 0px; width: 250px !important; margin-top: -27px; padding: 10px 0 10px 0; height: 25px; top: 35px !important; left: 700px !important; } .bu_page_container_view_by_compact { position: absolute; width: 100px; background-color: #9E9E9E; color: #ffffff; height: 21px; text-align: center; font-weight: bold; left: 170px !important; top: 5px !important; padding-top: 5px; } .view_by_txt { padding: 0px !important; } .view_by_expanded { padding: 0 0 0 10 px; padding-left: 10px; } a.view_by_expanded { text-decoration: none; } a.view_by_expanded hover { text-decoration: none; } .bu_header_container_hero_review { background-image: url(http://i.dell.com/images/global/builder/hero/stud= io-14z-blkwlan.png); background-repeat: no-repeat; width: 456px; height: 200px; margin-top: 80px; position: absolute; } #bu_header_dell_logo { /*filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src=3D'http= ://i.dell.com/images/global/builder/bu_cp_dell_badge.png',sizingMethod=3D= 'scale');*/ left: 0px; top: 0px; width: 64px; height: 64px; cursor: pointer; border-width: 0px; } #bu_header_print_dell_logo { /* position : absolute; */ background-image: url(http://i.dell.com/images/global/builder/bu_cp_del= l_badge.png); background-repeat: no-repeat; height: 64px; width: 64px; } *html #bu_header_print_dell_logo { background: none; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=3Dtr= ue, sizingMethod=3Dcrop, src=3D'http://i.dell.com/images/global/builder/= bu_cp_dell_badge.png'); } #bu_header_toolbar { /*CR#67989/68868 AND TD#68809*/ /*position: absolute;*/ right: 0px; /*top: 5px;*/ height: 35px; width: 480px; text-align: right; /* border : 1px solid red; */ } #bu_header_title { top: 5px; left: 75px; width: 415px; color: #333333; font-size: 22px; font-weight: bold; text-align: left; /* border : 1px solid green; */ } #bu_print_title { color: black; font-size: 24px; font-weight: bold; text-align: left; vertical-align: middle; padding: 10px 0px 20px 0px; } #bu_main_price_div_review { width: 200px; height: 200px; left: 750px; border: 1px solid green; position: absolute; top: 35px; display: none; } #bu_header_product_details { top: 45px; width: 150px; text-align: left; /* border : 1px solid white; */ } #bu_header_product_details_link { color: #3399CC; text-decoration: none; } #bu_header_product_details_link:hover { color: #3399CC; text-decoration: underline; cursor: hand; } #bu_header_hero { /*CR#67989/68868 AND TD#68809*/ /*top: 65px; left: 0px; width: 300px;= height: 165px;*/ } #bu_header_center_info_container { /*CR#67989/68868 AND TD#68809*/ /*position: absolute;*/ top: 72px; left: 400px; /*width: 196px;*/ width: 150px; /* height: 226px; border : 1px solid white; */ } #bu_header_estimated_ship_date { position: relative; /*CR#67989/68868 AND TD#68809*/ /*width: 194px;*/ width: 250px; padding-bottom: 10px; font-weight: bold; /* border : 1px solid green; */ /*display: none;*/ } .bu_header_estimated_ship_date_review { position: absolute; /*CR#67989/68868 AND TD#68809*/ /*width: 194px;*/ width: 150px; padding-bottom: 10px; left: 562px; color: #000000; font-size: 12px; line-height: 12px; font-weight: bold; text-align: center; margin-top: 70px; top: 15px; } #bu_header_fast_track { position: relative; width: 194px; padding-bottom: 10px; font-weight: bold; /* border : 1px solid green; */ } #bu_header_promo { position: relative; /*CR#67989/68868 AND TD#68809*/ /*width: 194px;*/ width: 150px; padding-bottom: 10px; font-weight: bold; /* border : 1px solid green; */ } #bu_header_hero_price { position: absolute; top: 45px; left: 670px; width: 295px; height: 125px; text-align: right; font-size: 48pt; font-weight: bold; /* border : 1px solid orange; */ } #bu_header_additional_text { /*position : absolute; top : 190px; left : 765px; margin: 10px 0px = 0px 0px; width : 200px; height : 75px;*/ text-align: right; /*color : #FA9700;*/ font-weight: bold; /* border : 1px solid yellow; */ } .bu_header_add_to_cart_review { width: 295px; top: 400px; left: 820px; margin: 0 auto 10 auto; position: absolute; text-align: right; height: 40px; } #bu_header_down_add_to_cart_review { position: relative; text-align: right; height: 50px; width: 100%; display: none; right: -10px; } /*#bu_header_estimated_ship_date_link_review { color : #373737; font-weight: bold; }*/ #bu_header_estimated_ship_date_link_review a { color: #373737; font-weight: bold; } .bu_review_page_missed_step { width: 300px; /*background: #DEF2FF; */ background: #FFFFFF; border: 0px; left: 0px !important; margin: 0px; padding: 0px; } .bu_review_page_missed_step_outer { padding-left: 8px; padding-bottom: 8px; padding-right: 8px; padding-top: 8px; /*background : #308FCA;*/ background: #FFFFFF; left: 15px !important; width: 300px !important; } .missed_step_txt { color: #000000; background: #FFFFFF; font-weight: bold; border-bottom: 0 none !important; } .bu_page_selections_container { border-bottom: 0px none !important; } .bu_delay_alert { width: 21px; background: #FFFFFF; } *html .bu_delay_alert { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=3Dtr= ue, sizingMethod=3Dcrop, src=3D'http://i.dell.com/images/global/builder/= bu_missed_step_alert.png'); } html > body .bu_delay_alert { background: transparent url(http://i.dell.com/images/global/builder/bu_= missed_step_alert.png) no-repeat 0px 1px; } .bu_review_page_missed_step_black { font-weight: normal; } /*#bu_header_estimated_ship_date_link { color : #FFFFFF; cursor : pointer; }*/ /*#bu_header_estimated_ship_date_link:hover { color : #FFFFFF; text-decoration : underline; cursor : pointer; }*/ #bu_header_fast_track_link { color: #3399CC; font-weight: bold; } #bu_header_fast_track_link:hover { color: #3399CC; text-decoration: underline; font-size: 12px; cursor: hand; } /*#bu_print_summary_link { color : #7F7F7F; }*/ #bu_print_summary_link:hover { text-decoration: underline; cursor: hand; } #bu_header_chat_link { color: #7F7F7F; } #bu_chat_link:hover { text-decoration: underline; cursor: hand; } #bu_save_link:hover { text-decoration: underline; cursor: hand; } #bu_val-text-spc .bu_val_sys_name { text-indent: 0px; /*font-weight: bold;*/ color: #3399cc !important; padding-top: 0px; padding-bottom: 2px; padding-left: 20px; font-size: 11px; font-weight: normal; } #bu_val-text .bu_val_sys_name { text-indent: 0px; /*font-weight: bold;*/ text-align: left; color: #3399cc !important; padding-top: 0px; padding-bottom: 2px; padding-left: 20px; font-size: 11px; font-weight: normal; } #bu_val-text .bu_val_sys_name a { color: #3399cc !important; } #bu_header_price_print_summary { width: 295px; height: 125px; text-align: right; font-size: 48pt; font-weight: bold; } #bu_val-text .bu_val_bullet_cl { vertical-align: top; padding-top: 4px; text-align: right; } #bu_val_msg .bu_val_msg { color: #3399cc; font-size: 12px; } #bu_val_window_standpage { background-repeat: repeat-x; padding-right: 1px; padding-bottom: 5px; color: White; font-size: 10pt; font-family: Arial,Helvetica; font-weight: bold; width: 454px; background-color: #333333; } #bu_val_window_standpage_review { background-repeat: repeat-x; padding-right: 1px; padding-bottom: 5px; color: White; font-size: 10pt; font-family: Arial,Helvetica; font-weight: bold; width: 454px; background-color: #333333; margin-left: 3px !important; } #bu_header_fast_track_shipping { font-family: Arial; font-size: 13px; } .bu_header_black_text { color: #000000; font-weight: bold; } .bu_header_blue_text { /*color : #65D2FD;*/ color: #66CCFF; font-weight: bold; } a.bu_header_blue_text { /*color : #65D2FD;*/ color: #66CCFF; font-weight: bold; text-decoration: none; } a.bu_header_blue_text hover { /*color : #65D2FD;*/ color: #66CCFF; text-decoration: underline; font-weight: bold; } .bu_header_review_blue_text { color: #3399CC; font-weight: bold; } a.bu_header_review_blue_text { color: #3399CC; font-weight: bold; text-decoration: none; } a.bu_header_review_blue_text hover { color: #3399CC; text-decoration: underline; font-weight: bold; } .nodate { width: 30px; } .bu_header_blue_text_bold { /*color : #65D2FD;*/ color: #66CCFF; font-weight: bold; } .bu_header_orange_text { color: #FA9700; } .bu_header_orange_text_bold { color: #FA9700; font-weight: bold; } .bu_header_grey_text { color: #7F7F7F; font-weight: bold; } a.bu_header_grey_text { color: #7F7F7F; text-decoration: none; font-weight: bold; } a.bu_header_grey_text hover { text-decoration: none; font-weight: bold; } .bu_header_white_text { color: #FFFFFF; } a.bu_header_white_text { color: #FFFFFF; text-decoration: none; } a.bu_header_white_text hover { color: #FFFFFF; text-decoration: none; } .bu_header_white_price_text { color: #FFFFFF; font-size: 48pt; font-weight: bold; /*CR#67989/68868 AND TD#68809*/ width: 330px; } .bu_header_green_price_text { color: #429E31; font-size: 48pt; font-weight: bold; } .bu_text_align_top { vertical-align: text-top; } /* Horizontal centering of image: set left & right margins to 'auto' */ img.bu_HCenter { display: block; margin-left: auto; margin-right: auto; } #bu_page_description { position: relative; top: 0px; left: 0px; border: 0px solid brown; font-size: 20px; font-weight: bold; color: #000000; padding: 10px 0 10px 0; width: 600px; } #bu_style_container { position: relative; left: 0px; /*border : 1px solid pink; */ } #bu_style_module_header { position: absolute; top: 0px; width: 400px; /*border : 1px solid orange;*/ height: 500px; } #bu_style_module_image { position: relative; left: 0px; } #bu_style_module_blurb { position: relative; top: -106px; left: 106px; width: 300px; padding: 10px 10px 10px 10px; } #bu_style_module_selected_option_image { position: relative; padding: 10px 10px 10px 10px; top: 0px; /*border : 1px solid #ff0000;*/ } #bu_style_module_options_container { position: relative; left: 406px; top: 0px; border: px solid blue; height: 500px; width: 500px; } #bu_style_learn_more_blurb { font-size: 20px; font-weight: bold; color: #333333; padding: 10px 10px 10px 10px; width: 300px; } .bu_config_blocker_show { top: 0px; left: 0px; width: 965px; height: 880px; display: block; filter: alpha(opacity=3D50); -moz-opacity: .50; opacity: .30; background-color: #fff; z-index: 10px; } .bu_Price { font-family: Arial; font-size: 50px; } .module_title { font-size: 20px; font-weight: bold; color: #000000; padding: 10px 0px 20px 0px; } .option_display_show { border-bottom: 1px solid #EFEFEF; padding: 5px 0px 5px 0px; color: #333333; } .option_display_hide { display: none; } .option_display_disabled { color: #999999; } .option_hr { background-color: #EFEFEF; color: #EFEFEF; height: 1px; border: 0 none; } .shipping_delay_text { color: #000000; font-weight: bold; } .option_description { width: 220px; word-wrap: break-word; } .option_qty { width: 44px; } .bu_option_price_cell { color: #289F29; width: 77px; } .bu_option_selected_price_text { color: #000000; font-weight: bold; } .legend_category { color: #000000; font-weight: bold; background-color: #F0F0F0; height: 30px; text-align: left; border-top: 1px solid #EFEFEF; border-bottom: 1px solid #EFEFEF; } .bu_opt_selected { width: 27px !important; height: 20px; text-align: center; } *html .bu_opt_selected { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=3Dtr= ue, sizingMethod=3Dcrop, src=3D'http://i.dell.com/images/global/builder/= tick.png'); } html > body .bu_opt_selected { background: url('http://i.dell.com/images/global/builder/tick.png') no-= repeat center center; } html > body .bu_opt .bu_opt_selected { width: 100%; } .bu_opt { text-align: center; width: 124px; padding-left: 5px; color: #0066FF; /*position:relative;*/ } .bundle_button .bu_selected_button { color: #0066FF; } /* TABS */ #bu_tab_container { width: 965px; margin: 0 auto 0 auto; position: relative; text-align: center; border: 0px solid yellow; height: 70px; color: #fff; } *html #bu_tab_container { height: 70px; } .bu_individual_tab_hover { width: 193px; position: relative; text-align: center; float: left; height: 70px; background-image: url(http://i.dell.com/images/global/builder/tabs/bu_t= ab_1_hover_default.png); cursor: hand; } *html .bu_individual_tab_hover { height: 70px; background: none; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=3Dtr= ue, sizingMethod=3Dcrop, src=3D'http://i.dell.com/images/global/builder/= tabs/bu_tab_1_hover_default.png'); } .bu_individual_tab_unhover { width: 193px; position: relative; text-align: center; float: left; height: 70px; background-image: url(http://i.dell.com/images/global/builder/tabs/bu_t= ab_1_background_default.png); cursor: default; } *html .bu_individual_tab_unhover { height: 70px; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=3Dtr= ue, sizingMethod=3Dcrop, src=3D'http://i.dell.com/images/global/builder/= tabs/bu_tab_1_background_default.png'); } .bu_individual_tab_click { width: 193px; position: relative; text-align: center; float: left; height: 70px; background-image: url(http://i.dell.com/images/global/builder/tabs/bu_t= ab_1_selected_default.png); cursor: default; } *html .bu_individual_tab_click { height: 70px; background: none; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=3Dtr= ue, sizingMethod=3Dcrop, src=3D'http://i.dell.com/images/global/builder/= tabs/bu_tab_1_selected_default.png'); } .tab_number_table { width: 30px; padding: 0 0 0 0; } .tab_seperator { position: relative; text-align: center; float: left; height: 70px; width: 2px; } *html .tab_seperator { height: 134px; } #bu_tab_system_inactive_image { background-image: url(http://i.dell.com/images/global/builder/tabs/bu_t= ab_1_background_default.png); } #bu_tab_system_image { background-image: url(http://i.dell.com/images/global/builder/tabs/bu_t= ab_1_image.png); /*background-position:center; background-repeat:no-rep= eat;*/ } #bu_tab_style_inactive_image { background-image: url(http://i.dell.com/images/global/builder/tabs/bu_t= ab_1_background_default.png); } #bu_tab_style_image { background-image: url(http://i.dell.com/images/global/builder/tabs/bu_t= ab_2_image.png); background-position: center; background-repeat: no-repeat; } #bu_tab_service_inactive_image { background-image: url(http://i.dell.com/images/global/builder/tabs/bu_t= ab_1_background_default.png); } #bu_tab_service_image { background-image: url(http://i.dell.com/images/global/builder/tabs/bu_t= ab_3_image.png); background-position: center; background-repeat: no-repeat; } #bu_tab_entertainment_inactive_image { background-image: url(http://i.dell.com/images/global/builder/tabs/bu_t= ab_1_background_default.png); } #bu_tab_entertainment_image { background-image: url(http://i.dell.com/images/global/builder/tabs/bu_t= ab_4_image.png); background-position: center; background-repeat: no-repeat; } .bu_tab { width: 193px; position: relative; text-align: center; float: left; height: 70px; background-image: url(http://i.dell.com/images/global/builder/tabs/bu_t= ab_1_background_default.png); display: none; } *html .bu_tab { height: 70px; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=3Dtr= ue, sizingMethod=3Dcrop, src=3D'http://i.dell.com/images/global/builder/= tabs/bu_tab_1_background_default.png'); } .bu_tab_line { width: 1px; height: 60px; left: 0px; top: 6px; position: absolute; background-color: #EFEFEF; } *html .bu_tab_line { height: 60px; } .bu_tab_line_last { width: 1px; height: 60px; left: 193px; top: 6px; position: absolute; background-color: #EFEFEF; } *html .bu_tab_line_last { height: 60px; } .bu_tab_spacer { height: 10px; } *html .bu_tab_spacer { height: 10px; } #bu_tab_accessories_inactive_image { background-image: url(http://i.dell.com/images/global/builder/tabs/bu_t= ab_1_background_default.png); } #bu_tab_accessories_image { background-image: url(http://i.dell.com/images/global/builder/tabs/bu_t= ab_5_image.png); background-position: center; background-repeat: no-repeat; } .tab_content_table { border: none 0px; border-collapse: collapse; } .tab_description { color: #3399CC; font-weight: bold; font-family: Arial; font-size: 15px; text-align: left; height: 30px; vertical-align: top; padding-left: 5px; } .bu_tab_details { height: 60px; cursor: pointer; } *html .bu_tab_details { height: 60px; } /* TABS */ .module_list { width: 456px; background-color: #EAEAEA; padding: 0 0 0 0 px; border: 0px; position: relative; } .tbl_space { width: 8px; } .tbl_module_main_control { width: 456px; border: 0px; } .tbl_module_each_control { width: 432px; border-bottom: thick solid #dadada; border-bottom-width: 1px; padding: 0 0 0 0 px; margin: 0px; } .list tr { cursor: pointer; height: 50px; padding: 0 20px; position: relative; } ul.list table { position: relative; z-index: 10; } .tbl_module_description { height: 50px; vertical-align: middle; width: 87px; font-size: 12px; font-weight: bold; font-family: inherit; /*padding-left:8px;*/ color: #000000; white-space: pre-wrap; /* css-3 */ white-space: -moz-pre-wrap; /* Mozilla, since 1999 */ white-space: -pre-wrap; /* Opera 4-6 */ white-space: -o-pre-wrap; /* Opera 7 */ word-wrap: break-word; /* Internet Explorer 5.5+ */ max-width: 87px; overflow: hidden; } .tbl_edit { height: 50px; vertical-align: middle; width: 103px; text-align: left; left: 0px; } .tbl_tick { width: 25px; height: 50px; } .tbl_spacer { width: 8px; height: auto; } .tbl_tick_mark_div { height: 32px; padding: 0 0 0 0 px; margin: 0 6 0 -5 px; vertical-align: top; width: 25px; float: left; text-align: center; display: none; } *html .tbl_tick_mark_div { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=3Dtr= ue, sizingMethod=3Dcrop, src=3D'http://i.dell.com/images/global/builder/= bu_checkmark_button_default.png'); } html > body .tbl_tick_mark_div { background: url('http://i.dell.com/images/global/builder/bu_checkmark_b= utton_default.png'); } .tbl_option_description { height: 50px; width: 207px; padding: 0px; color: #3399cc; word-wrap: break-word; } .tbl_option_description_black { height: 50px; width: 207px; padding: 0px; color: #000000; word-wrap: break-word; } .option_description_div { width: 202px; padding: 0px; color: #3399cc; word-wrap: break-word; z-index: 101; } .border_div { border-bottom: thick solid #dadada; border-bottom-width: 1px; } .round { padding: 0 0 0 0 px; border: 0px; width: 434px; position: relative; } .module_cursor { cursor: pointer; } .round_white { padding: 0 0 0 0 px; border: 0px; width: 448px; position: relative; } .fly_out_option { position: absolute; left: 456px; width: 502px; display: none; padding: 0 0 0 0 px; padding-left: 7px; border-top: solid 1px #999999; border-left: solid 1px #999999; border-bottom: solid 1px #999999; border-right: solid 1px #999999; display: none; } .fly_out_wider { position: absolute; left: 433px; width: 24px; height: 49px; background-color: #FFFFFF; display: none; border-top: solid 1px #dadada; border-bottom: solid 1px #dadada; border-left: none; border-right: none; /*cursor: pointer;*/ /*TD#65927*/ cursor: default; z-index: 100; display: none; } #floating_price_div_container { top: 0px; left: 0px; height: 35px; width: 100%; position: fixed; display: none; z-index: 100; overflow: visible; } * html #floating_price_div_container { top: expression(0+((e=3Ddocument.documentElement.scrollTop)?e:document.= body.scrollTop)+'px'); left: expression(0+((e=3Ddocument.documentElement.scrollLeft)?e:documen= t.body.scrollLeft)+'px'); position: absolute; } body > div#floating_price_div_container { position: fixed; } #floating_price_div { background: url(http://i.dell.com/images/global/builder/floating_top_gr= ey.png); background-position: top; background-repeat: repeat-x; top: 0px; left: 0px; height: 35px; width: 100%; } * html #floating_price_div { background: none; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=3Dtr= ue, sizingMethod=3Dscale, src=3D'http://i.dell.com/images/global/builder= /floating_top_grey.png'); } #summary_sub_total_shading { position: absolute; color: #fff; font-size: 32px; text-align: left; height: 60px; top: 20px; background-color: #e7e7e7; } #summary_sub_total { font-family: Arial; font-weight: bold; } .bu_price_text { font-size: 12px; font-family: Arial, helvetica; color: #3D9A2D; padding: 0px; font-weight: 300; } .bu_price_value { font-size: 22px; font-family: Arial; background-color: #333333; color: #3D9A2D; padding: 0px; font-weight: bold; text-align: right; } .bu_floting_Text_table { cellpadding: 0; cellspacing: 0; padding: 0; background-color: #E7E7E7; } .bu_EST_text1 { font-size: 12px; font-family: Arial, helvetica; color: #000000; padding-top: 0px; padding-bottom: 0px; padding-left: 3px; text-align: left; float:left; left:32px; } .bu_EST_Value { font-size: 12px; font-family: Arial, helvetica; font-style:normal; font-weight:normal; color: #3399CC; padding-top: 0px; padding-bottom: 0px; padding-left: 3px; text-align: left; float:left; left:32px; } .bu_EST_text { font-size: 12px; font-family: Arial; color: #333333; padding: 0px; text-align: left; float:left; } .left_corner_summary { background: url(http://i.dell.com/images/global/builder/left_grey.png);= background-repeat: no-repeat; width: 22px; left: -22px; position: absolute; top: 48px; height: 24px; } *html .left_corner_summary { font-size: 7px; background: none; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=3Dtr= ue, sizingMethod=3Dcrop, src=3D'http://i.dell.com/images/global/builder/= left_grey.png'); } .right_corner_summary { background: url(http://i.dell.com/images/global/builder/right_grey.png)= ; background-repeat: no-repeat; width: 16px; right: -16px; position: absolute; top: 48px; height: 24px; } *html .right_corner_summary { font-size: 7px; background: none; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=3Dtr= ue, sizingMethod=3Dcrop, src=3D'http://i.dell.com/images/global/builder/= right_grey.png'); right: -16px; width: 21px; } .left_border_summary { background: url(http://i.dell.com/images/global/builder/left_border_sum= mary_grey.png); background-repeat: repeat-y; width: 22px; left: -22px; position: absolute; top: 0px; height: 80%; } *html .left_border_summary { left: -21px; font-size: 7px; background: none; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=3Dtr= ue, sizingMethod=3Dscale, src=3D'http://i.dell.com/images/global/builder= /left_border_summary_grey.png'); } .right_border_summary { background: url(http://i.dell.com/images/global/builder/right_border_su= mmary_grey.png); background-repeat: repeat-y; width: 16px; right: -16px; position: absolute; top: 0px; height: 80%; } *html .right_border_summary { font-size: 7px; background: none; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=3Dtr= ue, sizingMethod=3Dscale, src=3D'http://i.dell.com/images/global/builder= /right_border_summary_grey.png'); right: -16px; } .bottom_summary { background: url(http://i.dell.com/images/global/builder/line_grey.png);= background-repeat: repeat-x; left: 0px; width: 100%; position: absolute; top: 48px; height: 24px; } *html .bottom_summary { font-size: 7px; background: none; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=3Dtr= ue, sizingMethod=3Dscale, src=3D'http://i.dell.com/images/global/builder= /line_grey.png'); } #bu_error_message { position: absolute; width: 456px; height: 80px; overflow: auto; color: White; font-size: 15px; line-height: 15px; font-weight: bold; text-align: center; overflow-x: hidden; left: 11.7%; top: 20%; display: none; background-color: #333333; } *html #bu_error_message { position: absolute; left: 11.6%; } /*#left_corner_summary_error { background: url(http://localhost/hadellstore/secure/builder/images/l= eft.gif); background-repeat: no-repeat; = left:0px; bottom:0px; width: 11px; position: absolute; top:74px; } #right_corner_summary_error { background: url(http://localhost/hadellstore/secure/builder/images/r= ight.gif) ; background-repeat: no-repeat; right:0px; width:11px; position:absolute; top:74px; } */ .bu_floating_price_text { color: #FFFFFF; font-size: 20pt; font-weight: bold; } .bu_current_total_text { color: Gray; font-size: 12px; line-height: 12px; font-weight: bold; text-align: center; width: 135px; height: 25px; position: absolute; top: 5px; } #bu_back_full_summary { position: absolute; left: 155px; top: 5px; } *html *#bu_back_full_summary { width: 456px; /* margin-left:150px; margin-top:-13px;*/ } .bu_back_full_summary_text { color: #3399CC; font-size: 12px; line-height: 12px; font-weight: bold; text-align: left; } #bu_error_message_bluetext { width: 456px; color: Teal; font-size: 15px; line-height: 15px; font-weight: bold; text-align: left; } .bu_collaborative { margin: 0px; padding: 0px; /*top : 350px; position : relative; */ } /*.bu_collaborative ul { margin: 0px; padding: 1px; list-style-type: none; text-align: left; height: 115px; color : #65D2FD; font-weight : bold; = }*/ /*.bu_collaborative ul li = { float: left; = margin: 0px; padding: 1px 1px 1px 1px; width: 106px; display: block; = border : 2px solid black; = }*/ .bu_bundle { padding: 1px 1px 1px 1px; /*background-color : #cccccc;*/ } .bu_bundle { background-color: #ffffff; width: 106px; } .bundle_row { /*height : 60px;*/ } .bu_bundle_price_cell { color: #289F29; vertical-align: middle; } /*.bundle_button { height : 35px; }*/ .bu_selected_button { cursor: pointer; } .bu_collab_title { /*color : #cccccc;*/ font-weight: bold; } .bu_module_header_details { width: 500px; /*border : 1px solid red;*/ padding: 0px 0px 10px 0px; } .bu_Learn_More_Video td { /*padding : 12px 0px 20px 3px; */ border: 0px; height: 20px; } .bu_Learn_More_Video img { border: 0px; } .bu_module_header_image_td { /*width : 106px; */ } .bu_module_header { width: 500px; padding: 10px 0px 0px 0px; } #review_page_left { position: relative; left: -9px; width: 595px; top: 0px; } #review_page_right { position: absolute; left: 610px; width: 360px; top: 10px; margin-left: -4px !important; } .review_page_title { font-size: 20px; font-weight: bold; padding: 10px 10px 10px 5px; } #bu_review_main_div { top: 0px; } .bu_review_performance { background-color: #e4e4e4; /*padding : 10px 10px 10px 10px; width : 5= 70px; */ } .bu_review_performance table { align: center; } /*.bu_review_performance table tr td { padding : 10px 5px 10px 5px; }*/ .bu_performance_row { padding: 10px 5px 10px 5px; } .bu_performance_row_bold { font-weight: bold; vertical-align: top; } #bu_review_page_selections { position: relative; top: 0px; padding: 10px 0px 10px 10px; } #bu_review_also_included { position: relative; width: 965px; border: 0px; background: #e4e4e4; margin: 0px; } .bu_page_div_space { line-height: 7px; /*position: relative;*/ } #bu_review_also_included_outer { position: relative; width: 965px; padding: 0px; background: #dadada; float: left; margin-left: 0px; } .bu_review_individual_page_selections_div { border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px; margin: 0px; background: #ffffff; padding: 0px; } .bu_review_individual_page_selections_div_outer { padding-left: 8px; padding-bottom: 8px; padding-right: 8px; padding-top: 8px; background: #dadada; float: left; width: 100%; } .bu_page_selections_table tr td { /*border-bottom:thick solid #dadada ; border-bottom-width: 1px ;*/= } .bu_page_selections_table { width: 100%; } .bu_pop { background-color: #fff; z-index: 203; position: absolute; left: 100px; top: 100px; width: 800px; height: 600px; padding: 10px 10px 10px 10px; overflow: scroll; } .bu_cc_header_title { font-size: 20px; font-weight: bold; color: #000000; padding-top: 10px; padding-bottom: 10px; padding-left: 0px; vertical-align: top; } #bu_fast_track_blurb { color: #FFFFFF; } .bu_composite_module_title { font-weight: bold; padding: 20px 0px 10px 0px; width: 300px; } #bu_cc_header table td { vertical-align: top; } .bu_cc_selected_span_visible { margin-top: 5px; margin-bottom: 5px; margin-left: 5px; width: 200px; overflow: visible; } .bu_cc_selected_span_hidden { display: none; } .bu_option_display_hidden { display: none; /*padding: 5px;*/ } .bu_option_display_visible { display: block; /*border: 1px solid #b2b2b2; padding: 5px;*/ } .bu_opt_image { width: 40px; height: 40px; } .bu_image_modal_window { background-color: #fff; z-index: 303; position: absolute; left: 400px; top: 400px; width: 500px; height: 500px; border: 1px solid gray; } #bu_bottom_navigation { padding: 20px 0px 20px 0px; width: 965px; } #bu_bottom_right_navigation { float: right; width: 235px; } #bu_bottom_left_navigation { float: left; width: 170px; } .bu_bottom_right_navigation_position_div { right: -10px; position: absolute; } #bu_opt_image { position: relative; width: 45px; height: 46px; border: 0px solid red; } #opt_image_zoom { position: absolute; /*top : 68px; left : 68px! important;*/ top: 26px; left: 26px; } #bu_val-error-window { overflow-y: scroll !important; height: 74px; z-index: 200; padding-right: 1px; padding-bottom: 5px; text-indent: 5px; color: White; font-size: 10pt; font-family: Arial,Helvetica; font-weight: bold; width: 440px !important; } #bu_val-error-window_noScroll { height: 74px; z-index: 200; padding-right: 1px; padding-bottom: 5px; text-indent: 5px; color: White; font-size: 10pt; font-family: Arial,Helvetica; font-weight: bold; width: 440px !important; } .bu_option_upsell { color: #FF9933; font-weight: bold; } #bu_print_page_container { position: absolute; width: 780px; height: 600px; /*border : 1px solid red;*/ font-size: 10px; } .bu_print_individual_page_selections_main_div { border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px; margin: 0px; background: #ffffff; padding: 0px; } .bu_print_individual_page_selections_main_div_outer { padding-left: 8px; padding-bottom: 8px; padding-right: 8px; padding-top: 8px; background: #dadada; } .bu_print_individual_page_selections_div { padding: 5px; } .bu_print_individual_page_selections_div table tr td { } .bu_prnt_mod_desc { width: 150px; vertical-align: top; color: #808080; font-size: 11px; padding: 5px 0px 5px 0px; word-wrap: break-word; } .bu_prnt_opt_desc { width: 250px; vertical-align: top; color: #808080; font-size: 11px; padding: 5px 0px 5px 0px; word-wrap: break-word; } .bu_prnt_opt_desc_all { color: #808080; font-size: 11px; } .bu_prnt_opt_id { width: 75px; vertical-align: top; color: #808080; font-size: 11px; padding: 5px 0px 5px 0px; } .bu_prnt_sku_details { width: 75px; vertical-align: top; font-size: 11px; padding: 5px 0px 5px 0px; } .bu_print_sku_table { padding: 0px; border-spacing: 0px; color: #808080; font-size: 11px; } .bu_prnt_mod_id { width: 50px; vertical-align: top; color: #808080; font-size: 11px; padding: 5px 0px 5px 0px; } .bu_prnt_opt_qty { vertical-align: top; color: #808080; font-size: 11px; padding: 5px 0px 5px 0px; width: 25px; } .bu_print_row_separator { background-color: #808080; height: 1px; padding: 0px; } .bu_print_page_title { font-weight: bold; background-color: #eeeeee; padding: 7px 3px 7px 15px; font-size: 11px; } #print_popup_link { width: 100%; } .bu_print_date { font-size: 10px; color: #808080; } #bu_print_catalog { padding: 40px 0px 40px 0px; } #print_menu { float: right; } #print_datetime { float: left; } #bu_print_header { width: 100%; } .bu_print_family_name { padding: 10px 10px 10px 10px; background-color: #cccccc; } .bu_title { font-size: 20px; font-weight: bold; color: #000000; padding: 10px 0 10px 0; } .bu_ship_subtitle { background-color: #E1E1E1; padding: 5px 0px 5px 0px; font-weight: bold; } a.bu_ship_text_link { color: red; } a.bu_ship_text_link_for_premier { color: Black; } #bu_style_collab_filter { position: relative; left: 0px; } #collaborativelist { /*width : 400px;*/ } .bu_collab_bundle_image { height: 106px; } .bu_collab_bundle_desc { height: 50px; vertical-align: top; } .bu_collab_bundle_price { height: 25px; } .bu_collab_bundle_btn { height: 25px; } .debug_mode { color: #996633; } .bu_blue_font { color: #3399cc; } .bu_qty_text_box_set { border: 1px solid #000000; background-color: #F0F0F0; width: 35px; } .bu_para_marketingprice_config_option_from { text-decoration: line-through; color: #000000; } .bu_review_upsell { background-color: #E4E4E4; border-bottom: 0px none !important; padding: 0px !important; } .bu_review_upsell_right_side_review { background-color: #ffffff !important; } .bu_review_upsell_border { border: solid 1px #dadada; } .bu_review_upsell_border tr td { border-bottom: 0px !important; } .bu_review_upsell_border_round_div { background: #ffffff; border: 0px; left: 0px !important; margin: 0px; padding: 0px; } .bu_review_upsell_border_round_div_outer { padding-left: 8px; padding-bottom: 8px; padding-right: 8px; padding-top: 8px; background: #dadada; } .sale_price_from { color: #000000; } .bu_para_marketingprice_saleprice { color: #289F29; } .review_page_service_blurb { font-size: 8pt; color: #000000; } .bu_review_row_separator { background-color: #dadada; height: 1px; padding: 0px; } /* ////////////////////////////////////////////////// */ /* MODAL WINDOW STYLES ////////////////////////////// */ /* ////////////////////////////////////////////////// */ /* TOC 1. General 2. Type : Share Modal Window 3. Type : Page/Box Modal Window 4. Inner Modal Styles */ /* 1. General ----------------------------------------------------- */ html, body { margin: 0; padding: 0; } .modalWindow * { margin: 0; padding: 0; border: 0; vertical-align: baseline; background: transparent; font-family: Arial, Helvetica, sans-serif; } .modalOverlay { position: fixed; top: 0; left: 0; height: 100%; width: 100%; margin: 0; padding: 0; z-index: 9991; opacity: 0.5; } * html .modalOverlay { position: absolute; } .modalLoad { position: absolute; top: 40%; left: 48%; z-index: 99999; visibility: hidden; background: url('http://i.dell.com/images/global/builder/ajax-loader[1]= .gif') no-repeat; width: 32px; height: 32px; } .modalLoadSmall { position: absolute; top: 40%; left: 48%; z-index: 99999; visibility: hidden; background: url('http://i.dell.com/images/global/builder/ajax-loader[1]= .gif') no-repeat; width: 17px; height: 17px; } .modalFrame { background-color: white; border: 0; overflow: scroll !important; } .modalTopArrow { background: url('http://i.dell.com/images/global/builder/modal_top_arro= w.gif') no-repeat; z-index: 99994; position: absolute; width: 14px; height: 8px; visibility: hidden; } .modalBottomArrow { background: url('http://i.dell.com/images/global/builder/modal_bot_arro= w.gif') no-repeat; z-index: 99994; position: absolute; width: 14px; height: 8px; visibility: hidden; } a.modalCarouselLeftArrow { position: absolute; top: 45%; left: 0px; width: 33px; height: 34px; background: url('http://i.dell.com/images/global/builder/carousel_arrow= _left.png') no-repeat; display: block; visibility: hidden; } a.modalCarouselRightArrow { position: absolute; top: 45%; right: 0px; width: 33px; height: 34px; background: url('http://i.dell.com/images/global/builder/carousel_arrow= _right.png') no-repeat; display: block; visibility: hidden; } .modalTL { height: 0px; display: none; } .modalTC { height: 0px; display: none; } .modalTR { height: 0px; display: none; } .modalBody { overflow: visible; clear: both; } .modalContentContainer { float: left; background-color: White; position: relative; } .modalContent { visibility: hidden; overflow: hidden; } .modalBodyL { position: absolute; left: 0; width: 0px; overflow: hidden; } .modalBodyR { position: absolute; right: 0; width: 0px; overflow: hidden; } .modalBL { height: 0px; display: none; } .modalBC { height: 0px; display: none; } .modalBR { height: 0px; display: none; } /* 2. Type : Share Modal Window ----------------------------------------------------- */ .modalWindow { position: absolute; border: 0; margin: 0; padding: 0; padding-left: 10px; padding-right: 10px; padding-bottom: 10px; text-align: left; z-index: 9992; background-color: #292929; border: 1px black solid; visibility: hidden; overflow: visible; } * html .modalWindow { position: absolute; } .modalWindow .modalContent { border: 1px #cccccc solid; background-color: #ffffff; } .modalWindow .modalTitle { font-size: 14px; padding-top: .3em; color: white; font-weight: bold; height: 25px; line-height: 1.25em; text-align: left; vertical-align: middle; display: block; } .modalWindow .modalTop { color: white; height: 25px; text-align: left; vertical-align: middle; } .modalWindow .modalTopR { margin-top: 1px; margin-bottom: 3px; float: right; width: 20px; height: 21px; text-align: right; background: url('http://i.dell.com/images/global/builder/modal_div_2x1.= gif') repeat-y; display: inline; } .modalWindow .closeWindow { float: right; background-image: url('http://i.dell.com/images/global/builder/x_close.= gif'); background-repeat: no-repeat; background-position: right; width: 8px; height: 25px; cursor: pointer; z-index: 9993; display: inline; } /* 3. Type : Page/Box Modal Window ----------------------------------------------------- */ .modalWindowView { /*width:830px;*/ overflow: visible; position: absolute; z-index: 9992; visibility: hidden; } .modalWindowView .modalCeil { width: 380px; height: 48px; position: relative; } .modalWindowView .modalCeil .modalTL { float: left; width: 40px; height: 48px; display: block; background: url('http://i.dell.com/images/global/builder/modal_containe= r_topL.gif') no-repeat !important; background: url('http://i.dell.com/images/global/builder/modal_containe= r_topL.gif') top left no-repeat; } .modalWindowView .modalCeil .modalTC { float: left; width: 300px; height: 48px; display: block; background: url('http://i.dell.com/images/global/builder/modal_containe= r_top.png') repeat-x !important; background: url('http://i.dell.com/images/global/builder/modal_containe= r_top.gif') top repeat-x; } .modalWindowView .modalCeil .modalTR { float: right; width: 40px; height: 48px; display: block; background: url('http://i.dell.com/images/global/builder/modal_containe= r_topR.png') no-repeat !important; background: url('http://i.dell.com/images/global/builder/modal_containe= r_topR.gif') top right no-repeat; } .modalWindowView .closeWindow { position: absolute; z-index: 9993; top: 12px; right: 12px; display: block; cursor: pointer; width: 36px; height: 35px; background: url('http://i.dell.com/images/global/builder/close_modal_fu= ll.png') no-repeat 0 0 !important; background: none; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=3Dtr= ue, sizingMethod=3Dcrop, src=3D'http://i.dell.com/images/global/builder/= close_modal_full.png'); } .modalWindowView .closeWindow:hover { background: url('http://i.dell.com/images/global/builder/close_modal_fu= ll.png') no-repeat 0 -36px !important; background: none; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=3Dtr= ue, sizingMethod=3Dcrop, src=3D'http://i.dell.com/images/global/builder/= close_modal_full.png'); } .modalWindowView .modalTitle { display: none; } .modalWindowView .modalTopArrow { display: none; } .modalWindowView .modalBody { float: left; min-height: 100px; width: 380px; overflow: visible; position: relative; background: url('http://i.dell.com/images/global/builder/modal_containe= r_bodyL.png') top left repeat-y !important; background: url('http://i.dell.com/images/global/builder/modal_containe= r_bodyL.gif') top left repeat-y; } .modalWindowView .modalBodyInner { float: left; height: 100%; width: 100%; min-height: 100px; overflow: visible; background: url('http://i.dell.com/images/global/builder/modal_containe= r_bodyR.png') top right repeat-y !important; background: url('http://i.dell.com/images/global/builder/modal_containe= r_bodyR.gif') top right repeat-y; } .modalWindowView .modalBody .modalBodyL { width: 40px; min-height: 100px; overflow: visible; } .modalWindowView .modalBody .modalBodyR { width: 40px; min-height: 100px; overflow: visible; } .modalWindowView .modalContentContainer { margin: 0 0 0 40px; *-margin:00020px; } .modalWindowView .modalContent { background-color: #fff; border: none; min-height: 100px; } .modalWindowView .modalFloor { clear: both; width: 380px; height: 48px; } .modalWindowView .modalFloor .modalBL { float: left; width: 40px; height: 48px; display: block; background: url('http://i.dell.com/images/global/builder/modal_containe= r_bottomL.png') no-repeat !important; background: url('http://i.dell.com/images/global/builder/modal_containe= r_bottomL.gif') top left no-repeat; } .modalWindowView .modalFloor .modalBC { float: left; width: 300px; height: 48px; display: block; background: url('http://i.dell.com/images/global/builder/modal_containe= r_bottom.png') repeat-x !important; background: url('http://i.dell.com/images/global/builder/modal_containe= r_bottom.gif') top repeat-x; } .modalWindowView .modalFloor .modalBR { float: right; width: 40px; height: 48px; display: block; background: url('http://i.dell.com/images/global/builder/modal_containe= r_bottomR.png') no-repeat !important; background: url('http://i.dell.com/images/global/builder/modal_containe= r_bottomR.gif') top right no-repeat; } /*=3D=3D Container Fix for loaded content =3D=3D*/ .modalWindowView #primaryContent.modalPage, #primaryContent.modalPage { background: #FFFFFF none repeat scroll 0 0; width: 100%; padding: 0; } /*=3D=3D Container Fix for loaded content =3D=3D*/ .modalWindowView #primaryContent.modalPage .container { margin: 0; } /*=3D=3D Container Fix for loaded content =3D=3D*/ .modalWindowView #primaryContent.modalPage .container .i { padding: 0; } /*=3D=3D Container Fix for loaded content =3D=3D*/ .modalWindowView #primaryContent.modalPage .container .t { height: 0px; display: none; } /* 4. Inner Modal Styles ----------------------------------------------------- */ #bookmarksShort ul, #bookmarksFull ul { width: 32%; float: left; margin-top: 5px; padding: 0; } #bookmarksShort li, #bookmarksFull li { margin: 5px; padding: 0px; list-style: none; list-style-position: outside; } #bookmarksShort a, #bookmarksFull a { font-size: 1.2em; } #modalError { font-size: 1.2em; font-weight: bold; margin: 0 auto; padding: 2em; text-align: center; } .modalDivPopupHide { display: none; } .modalDivPopup { height: 800px; overflow: scroll; } .bu_modalpop { position: absolute; background-color: #fff; width: 800px; height: 600px; overflow: scroll; } .bu_error-shading { top: 68px !important; } .bu_error-border-shading { height: 85%; } #bu_val-error-shading { position: absolute; width: 424px; height: 80px; left: 17%; top: 20px; display: none; background-color: #333333; z-index: 200; } #bu_val-error-window { overflow-y: scroll !important; height: 74px; position: absolute; color: White; font-size: 15px; line-height: 15px; font-weight: bold; text-align: center; overflow-x: hidden; display: none; width: 440px !important; } *html #bu_error_message { position: absolute; left: 11.6%; } .bu_val-error-title { width: 456px; color: White; font-size: 15px; line-height: 15px; /*font-weight:bold; */ text-align: left; } .bu_val_error_title { width: 456px; color: White; font-size: 12px; line-height: 15px; font-weight: bold; text-align: left; text-align: left; } .bu_val-text { width: 456px; color: Teal; font-size: 15px; line-height: 15px; font-weight: bold; text-align: left; } .bublePopup { position: absolute; /*left:400px !important;*/ /*right:0px;*/ /*margin-= top: -35px; */ z-index: 9999; overflow: hidden; width: 50%; } .bublePopup table { border-collapse: collapse; padding: 0px 0px 0px 0px; margin: 0px 0px 0px 0px; } .leftbublePopup { background-image: url(http://i.dell.com/images/global/builder/left_bg_p= rice_follow.png); background-repeat: no-repeat; width: 6px; height: 57px; } .middlebublePopup { background-image: url(http://i.dell.com/images/global/builder/bg_price_= follow.png); background-repeat: repeat-x; font-weight: bold; } .rightbublePopup { background-image: url(http://i.dell.com/images/global/builder/right_bg_= price_follow.png); background-repeat: no-repeat; width: 8px; height: 57px; } .bu_opt_center_aligned { width: auto; text-align: center; margin: 0px auto; } .option_description_modal { width: 220px; } .option_description_modal_upsell { background-color: #FFEDD9; padding: 7px 0 7px 0 !important; } .bu_opt_center_aligned_tr { margin: 0px auto; } .flyout_continue_edit { height: 20px; float: right; padding-bottom: 20px; padding-top: 20px; } .moduleItemBorders { border-top: 1px solid #808080; border-bottom: 1px solid #808080; } .bu_header_light_black_text { color: #333333; font-weight: bold; } .bu_light_black_text { color: #333333; } #bu_header_estimated_ship_date_link { font-size: 12px; } .bu_header_royal_blue_text { color: #3399CC; font-size: 12px; font-weight: bold; } a.bu_header_royal_blue_text { text-decoration: none; } a.bu_header_royal_blue_text hover { text-decoration: underline; } .bu_header_dark_grey_text { color: #666666; font-size: 12px; font-weight: bold; } a.bu_header_dark_grey_text { color: #666666; text-decoration: none; font-weight: bold; } a.bu_header_dark_grey_text hover { text-decoration: none; font-weight: bold; } #pricing_control_center div { color: #333333 !important; } #bu_header_MDA_TagLine { color: #000000; /*CR#67989/68868 AND TD#68809*/ /*width: 445px; bottom= : 0px; left: 525px; margin: 15px 0 5px 0; position: absolute;*/ text-align: right; font-weight: bold; font-size: 10pt; padding-top: 14px; padding-bottom: 14px; } .mod_curved_top { display: none; position: absolute; top: 0px; margin-left: 1px; z-index: 0; } .mod_curved_middle { display: none; border-left: 1px solid #808080; position: absolute; height: 70%; top: 12px; margin-left: 1px; } .mod_curved_bottom { display: none; position: absolute; bottom: 0.05em; margin-left: 1px; } .cirrus_opt_prefix { padding-left: 30px !important; } .cirrus_image { } .cirrus_text { padding-left: 5px; } .cirrus_learn_more { padding-left: 5px; } .bu_cirrus_span { color: #ff9933; margin-top: 5px; margin-bottom: 5px; margin-left: -2px; width: 200px; overflow: visible; } .bu_cirrus_upsell { background-color: #E4E4E4; border-bottom: 0px none !important; padding: 0px !important; } .sc_cirrus_selected_span { font-weight: bold; margin-top: 5px; margin-bottom: 5px; width: 100%; overflow: visible; } .cirrus_icon_vw_image { } .cirrus_icon_vw_text { padding-left: 5px; } .tbl_module_description tbl_border { font-weight: bold; } .equote_option_changed_to { background-color: #ffffc9; border: solid 1px gray; overflow: visible; vertical-align: top; line-height: 14px; margin-right: 1px; margin-bottom: 2px; height: auto; } /*TD#68809*/ .bu_ft_light_black_text { color: #333333; /*overflow-Y: auto;*/ word-wrap: break-word; padding: 0px; width: 250px !important; } .bu_promo_header_royal_blue_text { color: #3399CC; font-size: 12px; font-weight: bold; /*overflow-Y: auto;*/ word-wrap: break-word; width: 250px !important; } /*CR#67989/68868 */ #bu_header_Pricing { position: relative; right: 0px; text-align: right; width: 330px; vertical-align: top; } .bu_ft_top { vertical-align: top; } .bu_header_image_column { vertical-align: top; width: 300px; } .bu_header_center_column { vertical-align: top; width: 300px; } .bu_image_table { /*table-layout :fixed;*/ } /*TD#70180*/ .mod_upsell_Link_cur { cursor: pointer; } /*TD#70314*/ .show_link { visibility: visible; display: block; } .hide_link { visibility: hidden; display: none; } .show_Tiedlink { visibility: visible; display: block; } .pricing_retail_desc_premier { font-size: 11px; font-family: Arial; padding-left: 10px; padding-right: 10px; } /*TD 71808 */ .cirrus_review_page_border { /*border: 2px solid #A9A9A9; */ } .cirrus_review_page_header { font-family: Arial; font-size: 12px; font-weight: bold; } .gmap_review_page_header { font-family: Arial; font-size: 12px; font-weight: bold; } .gmap_review_page_blurb { font-family: Arial; font-size: 10px; font-weight: normal; } .bu_cirrus_outer { margin-left: -2px; } .bu_option_upsell_cirrus { color: #FF9933; } /*classic view for cirrus - Review page*/ .cirrus_text_round_div_review { color: #ff9933; background: #ffffff; border: 0px; left: 0px !important; margin: 0px; padding: 0px; width: 400px; } .bu_review_cirrus_round_div_outer { padding-left: 6px; padding-bottom: 6px; padding-right: 6px; padding-top: 6px; background: #dadada; width: 400px; } /*icon and list view for cirrus - Review page*/ .cirrus_text_round_div_review_icon { color: #ff9933; background: #ffffff; border: 0px; left: 0px !important; margin: 0px; padding: 0px; width: 400px; } .bu_review_cirrus_round_div_outer_icon { padding-left: 6px; padding-bottom: 6px; padding-right: 6px; padding-top: 6px; background: #dadada; width: 400px; } .cirrus_inner { padding: 3px; } /*icon view for cirrus to show in the option page*/ .cirrus_text_round_div_review_iconOption { color: #ff9933; background: #ffffff; border: 0px; left: 0px !important; margin: 0px; padding: 0px; width: 300px; overflow: hidden; } .bu_review_cirrus_round_div_outer_iconOption { padding-left: 6px; padding-bottom: 6px; padding-right: 6px; padding-top: 6px; background: #dadada; width: 300px; overflow: hidden; } .bu_option_border_round_div { background: #ffffff; border: 0px; left: 0px !important; margin: 0px; padding-left: 4px; padding-bottom: 0px; padding-right: 0px; padding-top: 0px; } .bu_option_border_round_div_outer { padding-left: 8px; padding-bottom: 8px; padding-right: 8px; padding-top: 8px; background: #dadada; } .bu_spacer_fly { background-color: #9e9e9e; width: 2px; height: 42px; } /* --- Start AWR ------*/ #awr_header_dell_logo { /*filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src=3D'http= ://i.dell.com/images/global/builder/bu_cp_dell_badge.png',sizingMethod=3D= 'scale');*/ left: 0px; top: 0px; width: 64px; height: 64px; cursor: pointer; border-width: 0px; } .awr_header_container { width: 965px; /*margin: 0 auto 10 auto;*/ position: relative; /* border: 1px solid blue; */ color: #fff !important; background-color: #E4E4E4; } .awr_header_container_table { width: 965px; } #awr_header_title { top: 5px; left: 75px; width: 421px; color: #333333; font-size: 22px; font-weight: bold; text-align: left; /* border : 1px solid green; */ } #awr_header_toolbar { right: 0px; height: 35px; width: 480px; text-align: right; } /*#bawr_page_container { width: 965px; margin: 0 auto 0 auto; position: relative; text-align: left; border: 0px solid green; color: #eaeaea; background-color : #eaeaea; height: auto; overflow: visible; top: 0px; }*/ #awr_page_container { position: relative; text-align: left; width: 965px; } .awr_border_div { border-bottom: thick solid #dadada; /*border-bottom-width: 1px;*/ } #awr_page_description { position: relative; top: 0px; left: 0px; border: 0px solid brown; font-size: 20px; font-weight: bold; color: #000000; padding: 10px 0 10px 0; /*width: 600px;*/ } .awr_module_list { width: 334px; background-color: #EAEAEA; padding: 0 0 0 0 px; border: 0px; position: relative; } .awr_tbl_module_main_control { width: 334px; border: 0px; } .awr_tbl_module_each_control { width: 310px; border-bottom: thick solid #dadada; = border-bottom-width: 1px; padding: 0 0 0 0 px; margin: 0px; } .awr_mod_curved_frame { position: absolute; top: -1px; margin-left: -1px; } .awr_mod_curved_top { position: absolute; top: 0px; margin-left: 1px; } .awr_mod_curved_middle { border-left: 1px solid #f5f5f5; position: absolute; top: 12px; margin-left: 1px; /*display: block; height: 31px;*/ } .awr_mod_curved_bottom { position: absolute; bottom: 0.05em; margin-left: 1px; } .awr_category { top: 0px; padding: 0 0px 0 0px; border: 0px; width: 315px; position: relative; cursor: default; } .awr_tbl_category_description { height: 50px; vertical-align: middle; text-align: center; /* width: 125px;*/ width : 300px; max-width: 300px; font-size: 22px; font-weight: bold; font-family: inherit; /*padding-left:8px;*/ color: #000000; white-space: pre-wrap; /* css-3 */ white-space: -moz-pre-wrap; /* Mozilla, since 1999 */ white-space: -pre-wrap; /* Opera 4-6 */ white-space: -o-pre-wrap; /* Opera 7 */ word-wrap: break-word; /* Internet Explorer 5.5+ */ /*max-width: 125px;= */ overflow: hidden; = border-bottom: thick solid #dadada; border-bottom-width: 1px; } .awr_tbl_category_description tbl_border { font-weight: bold; } .awr_tbl_likesystem_description { height: 50px; vertical-align: middle; width: 100px; font-size: 12px; font-weight: bold; font-family: inherit; /*padding-left:8px;*/ color: #000000; white-space: pre-wrap; /* css-3 */ white-space: -moz-pre-wrap; /* Mozilla, since 1999 */ white-space: -pre-wrap; /* Opera 4-6 */ white-space: -o-pre-wrap; /* Opera 7 */ word-wrap: break-word; /* Internet Explorer 5.5+ */ max-width: 100px; overflow: hidden; } .awr_tbl_likesystem_description tbl_border { font-weight: bold; } .awr_tbl_module_description { height: 50px; vertical-align: middle; width: 95px; /*font-size: 12px; font-weight: bold; font-family: inher= it; /*padding-left:8px;*/ /*color: #000000;*/ white-space: pre-wrap; /* css-3 */ white-space: -moz-pre-wrap; /* Mozilla, since 1999 */ white-space: -pre-wrap; /* Opera 4-6 */ white-space: -o-pre-wrap; /* Opera 7 */ word-wrap: break-word; /* Internet Explorer 5.5+ */ max-width: 95px; overflow: hidden; } .awr_tbl_module_description tbl_border { /*font-weight: bold;*/ } .awrmoduleItemBorders { border-top: 0px solid #808080; border-bottom: 0px solid #808080; } .awr_group_description_div { padding: 0px; color: #3399cc; word-wrap: break-word; font-weight: normal; } .awr_tbl_spacer { width: 8px; height: auto; } .awr_tbl_tick { width: 25px; height: 50px; } .awr_tbl_tick_mark_div { height: 32px; padding: 0 0 0 0 px; margin: 0 6 0 -5 px; vertical-align: top; width: 25px; float: left; text-align: center; display: none; } .awr_tbl_edit { height: 50px; vertical-align: middle; width: 75px; text-align: left; left: 0px; } .awr_tbl_option_description { height: 50px; width: 207px; padding: 0px; color: #3399cc; word-wrap: break-word; } .awr_tbl_image { left: 0px; top: 0px; width: 0px; } .awr_round_white { top: 0px; padding: 0 0px 0 0px; border: 0px; width: 315px; position: relative; cursor: pointer; } .awr_round_white_inactive { top: 0px; padding: 0 0px 0 0px; border: 0px; width: 315px; position: relative; cursor: default; } .awr_round_white_cart { top: 0px; padding: 0 0px 0 0px; border: 0px; width: 315px; position: relative; cursor : default; } .awr_round { top: 0px; padding: 0 0px 0 0px px; border: 0px; width: 315px; position: relative; cursor: pointer; background-color: #eaeaea; } .awr_hide_roundcorner { position: absolute; background-color: #eaeaea; display: none; cursor: default; left: 308px !important; width: 20px !important; height: 50px; z-index: 1; } .awr_hide_roundcorner_edited { position: absolute; /*background-color: #f9f9f9;*/ background-color: #ffffff; cursor: default; display: block; cursor: default; left: 308px !important; width: 30px !important; border-top: solid 1px #808080; border-bottom: solid 1px #808080; height: 50px; z-index: 5; } .awr_selected_round { cursor: default; background-color: #f8f8f8; padding: 0 0px 0 0 px; border: 0px; width: 310px; } .awr_tbl_space { width: 8px; } .awr_body { width: 600px; } /* commented on 9March2011 without border .awr_frame_with_position { = position: relative; visibility: visible; left: -2px !important; width: 690px; position: relative; top: 0px !important; border-top: solid 1px #999999; border-left: solid 1px #999999; border-bottom: solid 1px #999999; border-right: solid 1px #999999; z-index: 0; background: #f8f8f8;*/ /*display : block ; }*/ .awr_frame_with_position { = position: relative; visibility: visible; left: -2px !important; width: 690px; position: relative; top: 0px !important; border-top: solid 0px #999999; border-left: solid 0px #999999; border-bottom: solid 0px #999999; border-right: solid 0px #999999; z-index: 0; background: #f8f8f8; /*display : block ;*/ } .awr_fly_out_position { position: absolute; background-color: #f8f8f8; display: none; border-top: 1px solid #808080; border-bottom: 1px solid #808080; border-left: none; border-right: none; cursor: default; = width: 29px !important; left: 320px; z-index: 2; } /*AWR Right hand side CSS*/ #apos_list_div { position: relative; overflow: auto; padding: 0px 0px 0px 0px; margin: 0px 0px 0px 0px; border: 0px; } .apos_list_table { border-collapse: collapse; padding: 0px 0px 0px 0px; margin: 10px 0px 0px 0px; border: 0px; width: 680px; } .apos_Main_Title { valign: top; line-break: strict; word-break: keep-all; } .awr_fly_out_wider_column { background-color: #dadada; border-top: solid 1px #808080; border-bottom: solid 1px #808080; width: 150px; } .awr_pagelevel_addtocart { text-align: right; } .awr_product_title { font-size: 20px; font-weight: bold; color: #000000; padding: 5px 0px 0px 10px; vertical-align: top; } .awr_header { border: 1px solid #E7E7E7; width: 450px; margin-left: 110px; } .awr_para_intropara { margin-left: 50px; font-weight: bold; } .awr_para_intropara_pricing { color: #666666; font-weight: bold; } .awr_service_tags { font-family: Arial; font-size: 8pt !important; color: #666666; overflow: auto; height: 100px; } .awr_service_tag_title { font-family: Arial; font-size: 8pt !important; color: #666666; } #awr_pricing_control_center { color: #333333 !important; margin-left: 0px !important; vertical-align: top; padding: 0px; } .awr_print_summary_link { margin-left: 0px !important; } .each_like_system { margin-left: 0px; } .awr_controlLink { font-family: Arial; font-size: 10px; text-decoration: none; } .awr_Price { /*border-top : solid 1px #808080; border-right : solid 1px #808080;= border-left : solid 1px #808080;*/ padding: 3px; border: solid 1px #808080; background-color: #ffffff; } .awr_Print { border-bottom: solid 1px #808080; border-right: solid 1px #808080; border-left: solid 1px #808080; background-color: #f5f5f5; } .awr_tbl_tick_mark_div_show { height: 32px; padding: 0 0 0 0 px; margin: 0 6 0 -5 px; vertical-align: top; width: 25px; float: left; text-align: center; display: block; background: url('http://i.dell.com/images/global/builder/bu_checkmark_b= utton_default.png'); } *html .awr_tbl_tick_mark_div_show { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=3Dtr= ue, sizingMethod=3Dcrop, src=3D'http://i.dell.com/images/global/builder/= bu_checkmark_button_default.png'); } html > body .awr_tbl_tick_mark_div_show { background: url('http://i.dell.com/images/global/builder/bu_checkmark_b= utton_default.png'); } html .awr_fly_out_wider { height: 48px !important; } *html > .awr_fly_out_wider { height: 48px !important; } .awr_fly_out_wider { position: absolute; background-color: #f9f9f9; display: block; border-top: 1px solid #f9f9f9; border-bottom: 1px solid #f9f9f9; border-left: none; border-right: none; cursor: default; left: 312px !important; width: 33px !important; /*height: 50px !important;*/ z-index: 1000; } .awr_sc_review_action_cartadd { } .grey_hr { height: 0px; border: 1px solid Gray; background-color: Gray; } .black_hr { height: 0px; border: 1px solid black; background-color: black; } .awr_blow_top { position: absolute; left: 332px; top: 57px; width: 12px; } .awr_blow_bottom { position: absolute; left: 332px; top: 115px; } .awr_top_addtocart { width: 690px; } .awr_bottom_addtocart { } .awr_cart_confirm { display: none; /*visibility :hidden; */ } .awr_option_display_visible { display: table; border: 1px solid #b2b2b2; padding: 5px; background: #ffffff; } .awr_option_display_none { display: none; padding: 5px; } /* storm Modal popup AWR for POS*/ .awr_pos_autorenewal_confirm_title { font-weight: bold; font-size: 19px; } /* storm Modal popup AWR for POS*/ .awr_pos_autorenewal_confirm_Title { font-weight: bold; font-size: 19px; } .awr_pos_autorenewal_confirm_body { font-size: 12px; } .awr_addtocart_confirm_title { font-weight: bold; font-size: 19px; } .awr_addtocart_confirm_body { font-size: 12px; } .awr_tbl_module_category_control { width: 100%; } #awrm_div { display: none; } .awrclose_button { width:35px; height:35px; position: relative; = cursor :pointer; cursor :hand; background: url('http://i.dell.com/images/global/builder/close_modal_f= ull.png') no-repeat 0 0 !important; } .editmodalDivPopup { height: 125px; = } .awr_edit_confirm { display: none; /*visibility :hidden; */ } .awr_edit_modal_title { font-weight: bold; font-size: 19px; } .awr_edit_modal_body { font-size: 12px; } ------------KLmYUyxWijRzsm8UGCbJ8E Content-Disposition: inline Content-Type: image/gif Content-Location: http://i.dell.com/images/global/brand/ui/storm80/nav_up.gif Content-Transfer-Encoding: Base64 R0lGODlhBwAEAIABADOZzP///yH5BAEAAAEALAAAAAAHAAQAAAIIjGEJq8h8QAEA Ow== ------------KLmYUyxWijRzsm8UGCbJ8E Content-Disposition: inline Content-Type: image/gif Content-Location: http://i.dell.com/images/global/brand/ui/storm80/nav_down.gif Content-Transfer-Encoding: Base64 R0lGODlhBwAEAIABAGZmZv///yH5BAEAAAEALAAAAAAHAAQAAAIIBIIWqtm4YAEA Ow== ------------KLmYUyxWijRzsm8UGCbJ8E Content-Disposition: inline Content-Type: image/gif Content-Location: http://i.dell.com/images/global/brand/ui/storm80/search_field_bl.gif Content-Transfer-Encoding: Base64 R0lGODlhkAFkALMAAP///+bm5unp6efn5/T09Pf39/j4+P7+/vX19ejo6AAAAAAA AAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAACQAWQAAAT/UIBJq7046827/2AojmRp nmiqrqwptXAsz3Rt33huv3rv/8CgcEjc8IrIpHLJbOqOzqh0Sq0modasdsvterDe sHhMLoLL6LR6fTqz3/A42y2v2+9VOn7P7wP1foGCgyuAhIeIiRqGio2Og4yPkpN1 kZSXmGWWmZydWZueoaJLoKOmpz+lqKusM6qtsLFtsrS1NK+2uboUuLu+tL2/wqzB w8ajxcfKnMnLzpPNz9KK0dPWkNfZq9Xa3Xbc3uFv4OLlaOTm6WHo6u1a7O7xU/Dy 9Uz09vlm+vxx+P0AnwQcqImgwXUHE275p7DhLIcQnTCMSPFLxYv7MGr8s7Fjj4ke wzWCDHlxJEmKJk9CTKmyIcuWCV/CNChz5sCaNgHizMlvJ898Pn/WCyo0HtGi7Y4i Tad0abmmTsNBjdptKtVsVq9ay6pVGteuzr6CVSZ2rLGyZoWhTetrLVtdbt/aiisX WF2bdO/CyquXWN+WfP+eCiwYWWGShA97SqyYWeOOjB9fiiwZWmWMlC87yqyZWmeU nyMOCA1xAALSDQsEIHAAdUIDCQLInk27tu3buHPr3s27t+/fwIMLH068uPHjyJMr Xz48AgA7 ------------KLmYUyxWijRzsm8UGCbJ8E Content-Disposition: inline Content-Type: image/gif Content-Location: http://i.dell.com/images/global/brand/ui/storm80/search_field_br.gif Content-Transfer-Encoding: Base64 R0lGODlhCgBkAKIAAP///+bm5v7+/v39/fr6+ujo6PPz8wAAACH5BAAAAAAALAAA AAAKAGQAAANtCLob/O41OSmIFEsN7fUcE1YZaFqjkn7oWbbwK28uHdtzd+u5WPO4 IHDo2xV7JOFRmSQ2l07VD0p9WqXGKwuJ5W6ZXfA3Oq6Gyav09DpICdxwy1sep8zt dcldn3+0LQYFEgMGAQQBiIkBBQQACQA7 ------------KLmYUyxWijRzsm8UGCbJ8E Content-Disposition: inline Content-Type: image/gif Content-Location: http://i.dell.com/images/global/brand/ui/storm80/search_field_tl.gif Content-Transfer-Encoding: Base64 R0lGODlhkAEKAMQAAP///7u7u+np6f39/ff39/b29ujo6N/f39PT08XFxfDw8Nra 2uTk5ODg4MvLy/r6+vz8/P7+/gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAACQAQoAAAV9IEAgSWCeaKqubOu+cCzP dG3feK7vfO//toJjoRgAjsikcslsOp/QqHRKrVqvWAh2y+16v+Dw98CIiM/otHrN brvf8Diz8ZDb7/i8fs/vQw1+gYKDhIWGeAKHiouMjY6GiY+Sk5SVllaRl5qbnJ2E mZ6hoqOkYaClqKmqqyEAOw== ------------KLmYUyxWijRzsm8UGCbJ8E Content-Disposition: inline Content-Type: image/gif Content-Location: http://i.dell.com/images/global/brand/ui/storm80/search_field_tr.gif Content-Transfer-Encoding: Base64 R0lGODlhCgAKALMAAP///+bm5ru7u/7+/v39/ePj49jY2Pv7+/r6+s3Nze7u7vb2 9tfX1/z8/MXFxeLi4iH5BAAAAAAALAAAAAAKAAoAAAQeUMjpzAE4N8USyiBRFCC4 PGVGBCk2sO3bAnIMp28EADs= ------------KLmYUyxWijRzsm8UGCbJ8E Content-Disposition: inline Content-Type: image/gif Content-Location: http://i.dell.com/images/global/brand/ui/storm80/secondarynavdropdownbg.gif Content-Transfer-Encoding: Base64 R0lGODlhAQDECcQAAO7u7v7+/u/v7/Dw8P39/fHx8fz8/Pv7+/r6+vLy8vPz8/// //f39/X19fT09Pn5+fj4+Pb29gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAAABAMQJAAWl4CKOZGkGaKqubLsScCzP NG3ceK7v+OH/wKDwgCgaj8gk4sFsOp9PiHRKrVYZ2Kx2u414v+AwuEEum89nh3rN brcV8Lh8Tlck7vi8fp8o+P+AgYJ/A4WGh4iJiQKMjY6PkJGPAJSVlpeYmZqbnJ2e n6ChoqOkpaanqKmqq6ytrq+wsbKztLW2t7i5uru8vb6/wMHCw8TFxsfIycrLzM3O z9DR0qohADs= ------------KLmYUyxWijRzsm8UGCbJ8E Content-Disposition: inline Content-Type: image/gif Content-Location: http://i.dell.com/images/global/brand/ui/nxgen/menucornerbb_1x2.gif Content-Transfer-Encoding: Base64 R0lGODlhAQACAIAAAO7u7szMzCH5BAAAAAAALAAAAAABAAIAAAICRAoAOw== ------------KLmYUyxWijRzsm8UGCbJ8E Content-Disposition: inline Content-Type: image/gif Content-Location: http://i.dell.com/images/global/brand/ui/storm80/secondarynavbgselected.gif Content-Transfer-Encoding: Base64 R0lGODlhAQAeAMQAAP7+/u/v7/j4+P39/fPz8/Ly8vr6+vv7+/X19fDw8PHx8czM zP////T09Pb29vn5+ff39/z8/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAAABAB4AAAUX4BKMSaIUBUE0COJAgvAY xnFEwwDsTAgAOw== ------------KLmYUyxWijRzsm8UGCbJ8E Content-Disposition: inline; filename=css.css Content-Type: text/css; charset=utf-8; name=css.css Content-Location: http://configure-cdn.us.dell.com/Dellstore/public/css.aspx?c=us&l=en&~set=storm81MH Content-Transfer-Encoding: Quoted-Printable #nextgen {}#nextgen #localeselectordiv {background-color:#FFF;height:196= px;width:194px;border-left:1px solid #CCC;border-right:1px solid #CCC;bo= rder-bottom:1px solid #CCC;overflow:hidden;overflow-x:hidden;overflow-y:= hidden;}#nextgen #localeselectordiv select {height:202px;width:200px;mar= gin:-3px;position:relative;font-size:11px;padding:0;}#nextgen #localesel= ectordivhidden {display:none;}#nextgen #pbarcontainer #stormPbar .pbarli= nk {color:#666;font-weight:normal;}#nextgen #pbarcontainer #stormPbar .p= barlink:hover {text-decoration:underline}#nextgen #pbarcontainer #stormP= bar div.focartlinkmax {font-family:arial;z-index:101;padding:1px 10px 0p= x 7px;border-right:1px #CCCCCC solid;border-left:1px #CCCCCC solid;borde= r-top:1px #CCCCCC solid;background-color:#FFF;}#nextgen #pbarcontainer #= stormPbar div.focartlinkmax #totalcartitems {font-weight:bold;}#nextgen = #pbarcontainer #stormPbar div.focartlinkmax td {font-size:11px;color:#39= C}#nextgen #pbarcontainer #stormPbar div.focartlinkmin {cursor:pointer;f= ont-family:arial;z-index:2;padding:1px 10px 0px 7px;border-right:1px #FF= FFFF solid;border-left:1px #FFFFFF solid;border-top:1px #FFFFFF solid;ba= ckground-color:#FFFFFF;}#nextgen #pbarcontainer #stormPbar div.focartlin= kmin #totalcartitems {font-weight:bold;}#nextgen #pbarcontainer #stormPb= ar div.focartlinkmin td {font-size:11px;color:#666;}#nextgen #pbarcontai= ner #stormPbar div.focartoffsetmax {position:relative;background-color:#= FFF;border-left:1px solid #CCCCCC;border-right:1px solid #CCCCCC;z-index= :104;}#nextgen #pbarcontainer #stormPbar div.focartoffsetmin {position:r= elative;background-color:#FFF;z-index:1;}#nextgen #pbarcontainer #stormP= bar div.fomyaccountlinkmin {color:#666;cursor:pointer;font-family:arial;= font-size:11px;z-index:2;padding:1px 7px 0px 7px;border-right:1px #FFFFF= F solid;border-left:1px #FFFFFF solid;border-top:1px #FFFFFF solid;backg= round-color:#FFFFFF;}#nextgen #pbarcontainer #stormPbar div.fomyaccountl= inkmin .clearuser {color:#666;font-size:11px;}#nextgen #pbarcontainer #s= tormPbar div.fomyaccountlinkmin .hellouser {font-weight:bold;color:#333;= font-size:11px;}#nextgen #pbarcontainer #stormPbar div.fomyaccountlinkmi= n a {color:#666;}#nextgen #pbarcontainer #stormPbar div.fomyaccountlinkm= in a:hover {color:#666;text-decoration:hover;}#nextgen #pbarcontainer #s= tormPbar div.fomyaccountoffsetmin {position:relative;background-color:#f= ff;z-index:1;}#nextgen #pbarcontainer div.fotoolboxbodymax {z-index:10;p= osition:absolute;display:inline;background-color:#FFFFFF;border:1px #CCC= CCC solid;}#nextgen #pbarcontainer div.fotoolboxbodymin {z-index:3;posit= ion:absolute;display:none;background-color:#FFFFFF;border:1px #CCCCCC so= lid;}#nextgen #pbarcontainer div.fotoolboxlinkmax {color:#000;font-famil= y:arial;font-size:11px;z-index:10;padding:1px 10px 0px 7px;border-right:= 1px #CCCCCCC solid;border-left:1px #CCCCCC solid;border-top:1px #CCCCCC = solid;background-color:#FFFFFF;}#nextgen #pbarcontainer div.fotoolboxlin= kmax .toolboxcaption {font-size:11px;cursor:pointer;color:#666;padding-r= ight:12px;margin:2px;background:url(http://i.dell.com/images/global/bran= d/ui/storm80/nav_up.gif) no-repeat right center;}#nextgen #pbarcontainer= div.fotoolboxlinkmin {color:#666;font-family:arial;font-size:11px;z-ind= ex:2;padding:1px 10px 0px 7px;border-right:1px #FFFFFF solid;border-left= :1px #FFFFFF solid;border-top:1px #FFFFFF solid;background-color:#FFFFFF= ;}#nextgen #pbarcontainer div.fotoolboxlinkmin .toolboxcaption {font-siz= e:11px;cursor:pointer;color:#666;padding-right:12px;margin:2px;backgroun= d:url(http://i.dell.com/images/global/brand/ui/storm80/nav_down.gif) no-= repeat right center;}#nextgen #pbarcontainer div.fotoolboxoffsetmax {pos= ition:relative;background-color:#FFFFFF;border-left:1px solid #CCCCCC;bo= rder-right:1px solid #CCCCCC;z-index:11;}#nextgen #pbarcontainer div.fot= oolboxoffsetmin {position:relative;background-color:#FFFFFF;z-index:1;}#= nextgen .activetab {z-index:2;height:25px;cursor:pointer;}#nextgen .acti= vetabcontent {font-weight:normal;font-size:15px;white-space:nowrap;paddi= ng-left:0px;padding-right:39px;font-family:arial;color:#333;text-align:c= enter;padding-top:5px;}#nextgen .activetabhover {z-index:2;padding-botto= m:1px;height:25px; cursor:pointer;}#nextgen .activetabhovercontent {font= -weight:normal;white-space:nowrap;padding-left:0px;padding-right:39px;fo= nt-family:arial; font-weight:bold; font-size:9pt; color:#666666; text-al= ign:center; padding-top:5px;}#nextgen .country_selector {padding-right:1= 0px;}#nextgen .crumbsel43 {color:#666;font-family:arial,helvetica; font-= size:11px;}#nextgen .crumbsel43selected {color:#333;font-family:arial,he= lvetica; font-size:11px;}#nextgen .inactivetab {height:25px;cursor:point= er;}#nextgen .inactivetabcontent {font-weight:normal;font-size:15px;whit= e-space:nowrap;padding-left:0px;padding-right:39px;font-family:arial;col= or:#999; text-align:center; padding-top:5px; height:19px; float:none;}#n= extgen .lnk_crumb43 {color:#666;font-family:arial,helvetica; font-size:1= 1px;}#nextgen .lnk_crumb43selected, #nextgen .lnk_crumb43selected:hover,= #nextgen .lnk_crumb43selected:visited, #nextgen .lnk_crumb43selected:ac= tive {color:#333;font-family:arial,helvetica; font-size:11px;}#nextgen .= mhpersonalizationcell .segmenttitle {color:#333;font-size:11px;font-weig= ht:bold;padding-right:10px;padding-left:10px;padding-bottom:2px;}#nextge= n .mhpersonalizationcell span.pbarlink {}#nextgen .mhpersonalizationcell= span.pbarlink a {color:#666;font-size:11px;}#nextgen .mhpersonalization= cell span.pbarlink:hover {text-decoration:underline;}#nextgen .para_crum= b_43 {height:auto;padding-bottom:12px;padding-top:15px;color:#666;font-f= amily:arial,helvetica;font-size:11px;}#nextgen .searchaction {FLOAT:left= ; WIDTH:16px;HEIGHT:14px}#nextgen .searchinput {font-family:arial;color:= #666;width:170px;float:left;padding:0px;font-size:11px;border:none;borde= r-color:#333;border-style:none;outline:none;}#nextgen .tabcontent {font-= family:arial; font-weight:bold; font-size:9pt; color:#333; text-align:ce= nter; width:100%; padding-top:5px; float:left}#nextgen .tabspacer {float= :left;width:100%;height:25px;}#nextgen a.langoption,a.langoption:active,= a.langoption:hover,a.langoption:visited {color:#666;font-size:11px;}#nex= tgen a.primarylink,a.primarylink:active,a.primarylink:hover,a.primarylin= k:visited {white-space:nowrap;color:white;text-decoration:none;font-fami= ly:arial; font-weight:bold; font-size:9pt;}#nextgen a.subnavlink,a.subna= vlink:active,a.subnavlink:visited {font-weight:bold;vertical-align:top;w= hite-space:nowrap;font-family:arial;font-size:11px;color:#666;text-decor= ation:none;line-height:13px}#nextgen a.subnavlinknomenu,a.subnavlinknome= nu:active,a.subnavlinknomenu:visited {font-weight:bold;vertical-align:to= p;white-space:nowrap;font-family:arial;font-size:11px;color:#666;text-de= coration:none;line-height:13px}#nextgen a.subnavlinknomenuselected {font= -weight:bold;cursor:pointer;vertical-align:top;white-space:nowrap;font-f= amily:arial; font-size:11px; color:#39C; text-decoration:none;line-heigh= t:13px}#nextgen a.subnavlinkselected {font-weight:bold;cursor:pointer;ve= rtical-align:top;white-space:nowrap;font-family:arial; font-size:11px; c= olor:#39C; text-decoration:none;line-height:13px}#nextgen div.floatingme= nu {z-index:5;position:absolute;margin-top:3px;display:none}#nextgen div= .inactivetabcontent:hover {color:#333;}#nextgen div.localediv {padding-l= eft:2px;padding-right:2px;cursor:pointer;}#nextgen div.localediv a {font= -size:11px;color:#666;cursor:pointer;}#nextgen div.localediv a:hover {fo= nt-size:11px;color:#000;cursor:pointer;}#nextgen div.localediv:hover {pa= dding-left:2px;padding-right:2px;background-color:#CCC;cursor:pointer;}#= nextgen div.localeselector {display:inline;z-index:100;position:absolute= ;font-size:11px;}#nextgen div.localeselectorhidden {display:none;}#nextg= en div.localeselectorlink {color:#666;white-space:nowrap;font-size:11px;= cursor:pointer;padding-right:12px;margin:4px;background:url(http://i.del= l.com/images/global/brand/ui/storm80/nav_down.gif) no-repeat right cente= r;}#nextgen div.localeselectorlink:hover {color:#666;white-space:nowrap;= font-size:11px;text-decoration:underline;}#nextgen div.localeselectorlin= kdiv {color:#666;background-color:transparent;border-left:1px solid #FFF= ;border-right:1px solid #FFF;border-top:#FFF;}#nextgen div.localeselecto= rlinkdivselected {color:#000;background-color:#FFF;border-left:1px solid= #CCC;border-right:1px solid #CCC;border-top:#CCC;}#nextgen div.localese= lectorlinkselected {color:#000;white-space:nowrap;font-size:11px;cursor:= pointer;padding-right:12px;margin:4px;background:url(http://i.dell.com/i= mages/global/brand/ui/storm80/nav_up.gif) no-repeat right center;}#nextg= en div.localeselectorlinkselected:hover {color:#000;white-space:nowrap;f= ont-size:11px;text-decoration:underline;}#nextgen div.localeselectortext= {white-space:nowrap;font-size:11px;color:#666;margin:4px;}#nextgen div.= mdabarcontainer {white-space:nowrap;font-weight:bold;padding-bottom:12px= ;padding-top:15px;font-size:12px;color:#333;font-family:arial,helvetica;= }#nextgen div.mdabarcontainermini {white-space:nowrap;font-weight:bold;p= adding-bottom:8px;padding-top:8px;font-size:12px;color:#333;font-family:= arial,helvetica;}#nextgen div.searchbox_bottomleft {background: url(http= ://i.dell.com/images/global/brand/ui/storm80/search_field_bl.gif) no-rep= eat left bottom;margin-right: 4px;padding: 1px 0 1px 2px;vertical-align:= middle;}#nextgen div.searchbox_bottomright {margin-right: -4px;backgroun= d: url(http://i.dell.com/images/global/brand/ui/storm80/search_field_br.= gif) no-repeat right bottom;}#nextgen div.searchbox_topleft {padding-top= :2px;background:url(http://i.dell.com/images/global/brand/ui/storm80/sea= rch_field_tl.gif) no-repeat left top;margin-right: 4px;}#nextgen div.sea= rchbox_topright {float:right;background:url(http://i.dell.com/images/glo= bal/brand/ui/storm80/search_field_tr.gif) no-repeat right top;width: 200= px;}#nextgen div.searchcontainer {text-align:right;}#nextgen div.searchc= ontainer a {color:#666;}#nextgen div.searchcontainer LABEL {display:none= ;}#nextgen div.searchcontainer SELECT {display:none;}#nextgen div.subnav= container {z-index:4;position:relative;}#nextgen div.subnavcontainernome= nu {z-index:0;position:relative; height:8px; background-color:#FFF; clea= r:both}#nextgen div.subnavlinkcontainer {position:static;padding:0 12px;= }#nextgen div.subnavlinkcontainerfirst {position:static;padding:0 12px;b= ackground:url(http://i.dell.com/images/global/brand/ui/storm80/secondary= navbgfirst.gif) no-repeat left top;}#nextgen div.subnavlinkcontainerfirs= tnomenu {position:static;padding:0 12px;background:url(http://i.dell.com= /images/global/brand/ui/storm80/secondarynavbgfirst.gif) no-repeat left = top;}#nextgen div.subnavlinkcontainerfirstnomenuselected {position:relat= ive;padding:0 12px;background:url(http://i.dell.com/images/global/brand/= ui/storm80/secnavbgfirstnomenuselected.gif) no-repeat left top;}#nextgen= div.subnavlinkcontainerfirstselected {position:relative;padding:0 12px;= background:url(http://i.dell.com/images/global/brand/ui/storm80/secondar= ynavbgfirstselected.gif) no-repeat left top;}#nextgen div.subnavlinkcont= ainerlast {position:static;padding:0 12px;background:url(http://i.dell.c= om/images/global/brand/ui/storm80/secondarynavbglast.gif) no-repeat righ= t top;}#nextgen div.subnavlinkcontainerlastnomenu {position:static;paddi= ng:0 12px;background:url(http://i.dell.com/images/global/brand/ui/storm8= 0/secondarynavbglast.gif) no-repeat right top;}#nextgen div.subnavlinkco= ntainerlastnomenuselected {position:relative;padding:0 12px;background:u= rl(http://i.dell.com/images/global/brand/ui/storm80/secnavbglastnomenuse= lected.gif) no-repeat right top;}#nextgen div.subnavlinkcontainerlastsel= ected {position:relative;padding:0 12px;background:url(http://i.dell.com= /images/global/brand/ui/storm80/secondarynavbglastselected.gif) no-repea= t right top;}#nextgen div.subnavlinkcontainernomenu {position:static;pad= ding:0 12px;}#nextgen div.subnavlinkcontainernomenuselected {position:re= lative;padding:0 12px;}#nextgen div.subnavlinkcontainerselected {positio= n:relative;padding:0 12px;}#nextgen div.subnavlinkdivide {background:url= (http://i.dell.com/images/global/brand/ui/storm80/secondarynavbgdivider.= gif) repeat-x left bottom;width:2px;height:30px;}#nextgen img.logo {WIDT= H: 61px; HEIGHT: 61px}#nextgen span.mdainfo {white-space:nowrap;font-wei= ght:normal;height:15px;}#nextgen span.message_buyonline {color:#333;font= -family:arial; font-size:11px;}#nextgen span.message_buyonline a {color:= #666;}#nextgen table.mh_columnlist {padding:0px;margin:0px;}#nextgen tab= le.mh_columnlist a.menulink {font-family:arial;font-size:11px;color:#39C= ;text-decoration:none;}#nextgen table.mh_columnlist a.menulink:hover {te= xt-decoration:underline;}#nextgen table.mh_columnlist a.mhproductlink {c= olor:#999;font-size:11px;text-decoration:none;}#nextgen table.mh_columnl= ist a.mhproductlink:hover {text-decoration:underline;}#nextgen table.mh_= columnlist div.mhproductdiv {padding-right:20px;padding-top:2px;padding-= bottom:2px;}#nextgen table.mh_columnlist div.sep {border-top:1px solid #= CCCCCC;padding-top:3px;}#nextgen table.mh_columnlist td.menutitle {color= :#999;font-weight:bold;font-size:11px;padding-top:3px;padding-bottom:3px= ;width:100%;}#nextgen table.mh_columnlist td.sep {padding-top:3px;paddin= g-bottom:3px;width:100%;}#nextgen table.mh_columnlist td.sephover {paddi= ng-top:3px;padding-bottom:3px;margin:0px; width:100%;}#nextgen table.mh_= columnlist td.sub {padding-top:7px;padding-bottom:3px;margin:0px; width:= 100%;}#nextgen table.mh_columnlist td.subhover {padding-top:7px;padding-= bottom:3px;margin:0px; width:100%;}#nextgen table.mh_columnlist td.subna= vcolumn {padding-top:8px;padding-bottom:10px;padding-left:20px;backgroun= d:#EEE url(http://i.dell.com/images/global/brand/ui/storm80/secondarynav= dropdownbg.gif) repeat-x left top;}#nextgen table.mh_columnlist td.subna= vmenuborder {background-color:#CCC;}#nextgen table.mh_columnlist td.subn= avmenuborderbottom {background:url(http://i.dell.com/images/global/brand= /ui/nxgen/menucornerbb_1x2.gif) repeat-x left top;}#nextgen table.mh_lin= kcolumn {width:200px;text-align:left;border-style:none;padding:0px;margi= n:0px;}#nextgen table.mh_linklist {padding:0px;margin:0px;}#nextgen tabl= e.mh_linklist a.menulink {font-family:arial;font-size:11px;color:#39C;te= xt-decoration:none;}#nextgen table.mh_linklist a.menulink:hover {text-de= coration:underline;}#nextgen table.mh_linklist a.mhproductlink {color:#9= 99;font-size:11px;text-decoration:none;}#nextgen table.mh_linklist a.mhp= roductlink:hover {text-decoration:underline;}#nextgen table.mh_linklist = div.mhproductlinks {color:#999;font-size:11px;padding-left:9px;}#nextgen= table.mh_linklist div.sep {border-top:1px solid #CCCCCC;padding-top:10p= x;margin-top:5px;}#nextgen table.mh_linklist td.menutitle {color:#999;fo= nt-weight:bold;font-size:11px;padding-top:3px;padding-bottom:3px;width:1= 00%;}#nextgen table.mh_linklist td.sep {padding-top:3px;padding-bottom:3= px;width:100%;}#nextgen table.mh_linklist td.sephover {padding-top:3px;p= adding-bottom:3px;margin:0px; width:100%;}#nextgen table.mh_linklist td.= sub {padding-top:7px;padding-bottom:3px;margin:0px; width:100%;}#nextgen= table.mh_linklist td.subhover {padding-top:7px;padding-bottom:3px;margi= n:0px; width:100%;}#nextgen table.mh_linklist td.subnavcolumn {padding-t= op:3px;padding-bottom:5px;padding-left:10px;padding-right:10px;backgroun= d:#EEE url(http://i.dell.com/images/global/brand/ui/storm80/secondarynav= dropdownbg.gif) repeat-x left top;}#nextgen table.mh_linklist td.subnavm= enuborder {background-color:#CCC;}#nextgen table.mh_linklist td.subnavme= nuborderbottom {background:url(http://i.dell.com/images/global/brand/ui/= nxgen/menucornerbb_1x2.gif) repeat-x left top;}#nextgen table.mh_viewall= column {width:158px;text-align:left;border-style:none;padding:0px;margin= :0px;}#nextgen td.langselected {color:#FFF;font-size:11px;}#nextgen td.l= angsep {color:#666;font-size:11px;}#nextgen td.mhcrumbcell {height:40px}= #nextgen td.mhlogocell {height:65px;width:61px;padding-top:4px;}#nextgen= td.mhpersonalizationcell {height:25px;}#nextgen td.mhprimarynavcell {wi= dth:700px;height:35px;}#nextgen td.mhprimarynavcell table {margin-left:1= 7px;}#nextgen td.mhsearchcell {height:40px;white-space:nowrap;}#nextgen = td.mhsecondarynavcell {height:30px;background-color:#FFF;width:100%;}#ne= xtgen td.subnavlinkcell {background:url(http://i.dell.com/images/global/= brand/ui/storm80/secondarynavbg.gif) repeat-x left bottom;height:30px;}#= nextgen td.subnavlinkcellnomenuselected {background:url(http://i.dell.co= m/images/global/brand/ui/storm80/secondarynavbgnomenuselected.gif) repea= t-x left top;height:30px;}#nextgen td.subnavlinkcellselected {background= :url(http://i.dell.com/images/global/brand/ui/storm80/secondarynavbgsele= cted.gif) repeat-x left top;height:30px;}#scHistoryFrame { position: absolute; top: 0px; left: 0px; z-index: 0; width: 0px; height: 0px; } #buHistoryFrame { position: absolute; top: 0px; left: 0px; z-index: 0; width: 0px; height: 0px; } .sc_dp_processing { display: none; position: absolute; text-align: center; vertical-align: middle; color: red; background-color: Gainsboro; opacity: 0; filter: alpha(opacity=3D0); z-index: 100; /* MozOpacity:70; z-index:100;*/ } .Mod_Selector_table_notselected { border: 1px solid #b2b2b2; height: 20px; width: 100%; margin-bottom: 0px; cursor: hand; } .Mod_Selector_cell_middle_notselected { background-image: url(http://i.dell.com/images/global/configurator/gene= ral/bg_notselected.gif); height: 20px; width: 100%; margin-bottom: 0px; cursor: hand; } .Mod_Selector_cell_middle_selected { background-image: url(http://i.dell.com/images/global/configurator/gene= ral/bg_selected.gif); height: 20px; width: 100%; margin-bottom: 0px; cursor: hand; } .Mod_Selection { font-family: Arial; font-size: 11px; margin-top: 0px; margin-bottom: 0px; margin-left: 5px; } .viewMore { font-family: Arial; font-size: 11px; color: blue; text-decoration: none; } .optionDiv { background-image: url( 'none' ); border: 1px solid Gray; padding: 5px; } .option_display_none { display: none; padding: 5px; } .option_display_visible { display: table; border: 1px solid #b2b2b2; padding: 5px; } .controlLink { font-family: Arial; font-size: 10px; text-decoration: none; } .review_page_mod { font-family: Arial; font-size: 12px; font-weight: bold; } .review_page_opt { font-family: Arial; font-size: 12px; font-weight: normal; } .review_page_edit { font-family: Arial; font-size: 10px; font-weight: normal; } .review_page_row_odd { background-color: whitesmoke; } .review_page_row_even { background-color: white; } .review_page_row_subbill { background-color: #FFFF66; } .review_page_upsell_header { font-family: Arial; font-size: 12px; font-weight: bold; } .review_page_upsell_blurb { font-family: Arial; font-size: 10px; font-weight: normal; } .review_page_upsell_price { font-family: Arial; font-size: 10px; font-weight: normal; } .review_page_header_details { font-family: Arial; font-size: 10px; font-weight: normal; } .product_data_header_align { vertical-align: top; top: 0px; } #maincontentcnt { top: 0px; } #sc_main_overlay_div { position: absolute; display: none; z-index: 500; width: 970px; cursor: wait; background-color: White; opacity: 0; filter: alpha(opacity=3D0); } #sc_main_div { position: relative; top: 25px; left: 0px; height: 481px; width: 970px; padding: 0px 0px 0px 0px; } #sc_tabs_div { position: absolute; height: 30px; width: 735px; top: 0px; z-index: 1; padding: 0px 0px 0px 0px; border: 0px; } #sc_content_div { position: absolute; height: 60px; width: 235px; left: 736px; top: -23px; z-index: 1; padding: 0px 0px 0px 0px; border: 0px; overflow: hidden; } #seg_content { } #sc_app_div { position: absolute; height: 450px; width: 735px; left: 0px; top: 31px; border-top: solid 1px #999999; border-left: solid 1px #999999; border-bottom: solid 1px #999999; padding: 0px 0px 0px 0px; } #sc_pcc_div { border: solid 1px red; position: absolute; height: 452px; width: 231px; top: 31px; left: 736px; padding-left: 4px; background: url(http://i.dell.com/images/global/config/strip.gif) repea= t-y; border: 0px; } #sc_app_hidden_div { display: none; } #bu_header_fast_track_shipping img { width: 30px; height: 30px; } .sc_content_contents { position: relative; z-index: 3; font-family: Arial; font-size: 14px; height: 50px; padding: 0px 0px 0px 0px; z-index: 2; left: 0px; } .sc1_chat_image { border: 0px; padding: 0px 0px 0px 0px; margin: 0px 0px 0px 0px; } .sc_content_text { position: absolute; left: 60px; width: 180px; height: 30px; overflow: visible; top: 5px; } .sc_content_text_chat_bold { color: Black; font-family: Arial; font-size: 12px; font-weight: bold; } .sc_content_text_chat_normal { color: Black; font-family: Arial; font-size: 12px; } .sc_content_text_chat_normal:visited, .sc_content_text_chat_bold:visited= { color: Black; } #scpcc_top_border { vertical-align: top; height: 7px; font-size: 1px; position: relative; padding-bottom: 0px; } #scpcc_top_border_left { position: relative; background-color: #E7ECF0; border-top: solid 1px #999999; vertical-align: top; height: 7px; font-size: 1px; width: 228px; padding-bottom: 0px; } #scpcc_top_border_right { position: absolute; top: 0px; left: 224px; background-color: #E7ECF0; vertical-align: top; height: 7px; width: 7px; padding-bottom: 0px; border-bottom: solid 1px #E7ECF0; } #scpcc_top_border_right_image { border: 0px; padding-bottom: 0px; margin-bottom: 0px; } #scpcc_title { /*border-left:solid 1px #999999;*/ border-right: solid 1px #999999; border-top: 0px; margin-top: 0px; background-color: #E7ECF0; font-weight: bold; font-size: 12pt; font-family: Arial; color: #414141; padding-left: 5px; padding-bottom: 5px; } #scpcc_title_small { border-right: solid 1px #999999; border-bottom: 0px; background-color: #E7ECF0; font-weight: bold; font-size: 12pt; font-family: Arial; color: #414141; z-index: -1; } .scpcc_title_image_small { } #scpcc_price { position: relative; /*border-left:solid 1px #999999;*/ border-right: solid 1px #999999; border-bottom: solid 1px #999999; background-color: #E7ECF0; margin: 0px 0px -2px 0px; padding: 0px 0px 0px 5px; top: -2px; } #scpcc_price_blurb { font-size: 12px; color: Red; border-right: solid 1px #999999; border-bottom: solid 1px #999999; background-color: #E7ECF0; padding-left: 5px; padding-bottom: 2px; } .scpcc_selection_list_selections, .scpcc_selection_list_summary { background-color: #E7ECF0; overflow: auto; padding-left: 5px; /* border-left:solid 1px #999999;*/ border-right: solid 1px #999999; border-bottom: solid 1px #999999; height: 228px; position: relative; } .scpcc_selection_list_selections_alien, .scpcc_selection_list_summary_al= ien { background-color: #171717; overflow: auto; padding-left: 5px; /* border-left:solid 1px #999999;*/ border-right: solid 1px #999999; border-bottom: solid 1px #999999; height: 228px; position: relative; color: #ffffff; } .scpcc_selection_list_summary { background-color: #ffffff; } #scpcc_compatibility_block { background-image: url(http://i.dell.com/images/global/config/alert_sign= .gif); background-repeat: no-repeat; background-position: 5px; height: 18px; background-color: #e07922; margin-top: 0px; margin-left: -3px; border-top: solid 1px #999999; border-right: solid 1px #999999; border-bottom: solid 1px #999999; font-size: 12px; font-weight: bold; padding-left: 35px; vertical-align: middle; padding-top: 2px; cursor: pointer; cursor: hand; color: White; } #scpcc_compatibility_block #compat-open-img { position: absolute; left: 218px; margin-top: 1px; } .gridTitleDelayTime { width: 100%; font-weight: bold; } #ship_date { font-family: Arial; font-size: 10px; text-decoration: none; text-align: left; font-weight: bold; } .scpcc_jump_row { height: 20px; background-color: #E7ECF0; border-bottom: solid 1px #999999; border-right: solid 1px #999999; vertical-align: top; position: relative; padding-top: 0px; margin-top: 0px; clear: both; } .scpcc_update_price { display: none; } .scpcc_discount_details_hidden { display: none; } .scpcc_jump_image { position: relative; top: 4px; padding-left: 5px; padding-right: 5px; float: left; } .scpcc_controlLink { font-family: Arial; font-size: 10px; text-decoration: none; color: Red; } .scpcc_discount_text, .scpcc_update_price_text, .scpcc_print_summary_tex= t { position: relative; top: 2px; } /*hack to get positioning to work right in non-IE browsers*/ .scpcc_jump_row > .scpcc_discount_text, .scpcc_jump_row > .scpcc_update_= price_text, .scpcc_jump_row > .scpcc_print_summary_text { top: 4px; } .scpcc_jump_row > .scpcc_ship_text /*hack to get positioning to work rig= ht in non-IE browsers*/ { top: 2px; } .scpcc_ship_text { color: Red; font: 12px; position: relative; top: 2px; margin-top: 0px; } .scpcc_ship_date { vertical-align: -1px; } a.ship_text_link { color: red; font-size: 10px; } a.ship_text_link_for_premier { color: Black; font-size: 10px; } #ship_date_for_premier { font-family: Arial; font-size: 10px; text-decoration: none; text-align: left; font-weight: bold; color: Black; } .scpcc_component_block_page_title { padding-top: 5px; font-size: 12px; font-weight: bold; position: relative; } .scpcc_component_block_page_title_alien { padding-top: 5px; font-size: 12px; font-weight: bold; position: relative; color: #08E7E9; } div.scpcc_component_list_page_visible { visibility: visible; display: block; margin-top: 5px; position: relative; } div.scpcc_component_list_page_hidden { visibility: hidden; display: none; position: relative; } div.scpcc_component_list_module_visible { visibility: visible; display: block; position: relative; } div.scpcc_component_list_module_hidden { visibility: hidden; display: none; position: relative; } .scpcc_component_list_item, .scpcc_component_list_item_changed, .scpcc_c= omponent_list_item_changed_current, .scpcc_component_list_item_changed_d= efault { background: transparent url(http://i.dell.com/images/global/general/bul= let.gif) no-repeat 0px 1px; padding-left: 10px; font-size: 10px; overflow: visible; font-family: Arial; font-weight: normal; vertical-align: top; line-height: 14px; margin-right: 1px; margin-bottom: 2px; height: auto; } .scpcc_component_list_item_alien, .scpcc_component_list_item_changed_cur= rent_alien, .scpcc_component_list_item_changed_alien, .scpcc_component_l= ist_item_changed_default_alien { background: transparent url(http://i.dell.com/images/global/general/whi= tebullet.gif) no-repeat 0px 1px; padding-left: 10px; font-size: 10px; overflow: visible; font-family: Arial; font-weight: normal; vertical-align: top; line-height: 14px; margin-right: 1px; margin-bottom: 2px; height: auto; } /*hack to get IE to work right. top border on comp config selections in= pcc don't show unless height is specified. but, in IE, the height can't be auto, or it won't work. in ff, setting= height to 14px doesn't allow div to grow automatically and text overwri= tes the next div , so must be set to auto.*/ * html body .scpcc_component_list_item_changed_current { height: 14px; } .scpcc_component_list_item_changed { background-color: #ffffc9; } .scpcc_component_list_item_changed_alien { background-color: #808080; } .scpcc_component_list_item_changed_current { background-color: #ffffc9; border: solid 1px gray; } .scpcc_component_list_item_changed_current_alien { background-color: #808080; border: solid 1px #ffffff; } .scpcc_component_list_item_changed_default { border: solid 1px gray; } a.scpcc_component_href { font-family: Arial; font-size: 10px; color: black; } a.scpcc_component_href_alien { font-family: Arial; font-size: 10px; color: #ffffff; } a.scpcc_component_href:visited { text-decoration: none; font-family: Arial; font-size: 10px; color: black; } a.scpcc_component_href_alien:visited { text-decoration: none; font-family: Arial; font-size: 10px; color: #cccccc; } a.scpcc_component_href:hover { text-decoration: underline; font-family: arial,helvetica; font-size: 10px; color: blue; } a.scpcc_component_href_alien:hover { text-decoration: underline; font-family: arial,helvetica; font-size: 10px; color: #08E7E9; } .scpcc_summary_page_essential_addons { padding-top: 15px; font-size: 11pt; font-weight: bold; } .scpcc_summary_page_essential_addons_alien { padding-top: 15px; font-size: 11pt; font-weight: bold; color: #08E7E9; } .scpcc_upsell { position: relative; } .scpcc_selections_table { } .scpcc_selections_row_1 { } .scpcc_selections_row_1 .r1c1 { width: 60px; } .scpcc_selections_row_1 .r1c2 { } .scpcc_selections_row_2 { } .scpcc_selections_row_2 .r2c1 { } .scpcc_selections_row_3 .r3c1 { } .scpcc_upsell_left_outer { padding-top: 20px; position: relative; float: left; } .scpcc_upsell_right_outer { padding-top: 20px; width: 170px; position: relative; } .scpcc_upsell_image_anchor { width: 50px; height: 50px; vertical-align: top; } .scpcc_upsell_image { border-left: solid 1px gray; border-top: solid 1px gray; border-right: solid 1px silver; border-bottom: solid 1px silver; width: 50px; height: 50px; } .scpcc_upsell_description { font-size: 10px; /*position:relative;*/ } .scpcc_upsell_description_alien { font-size: 10px; /*position:relative;*/ color: #ffffff; } .scpcc_upsell_price { padding-top: 10px; /*position:relative;*/ } .scpcc_upsell_selector { font-size: 10px; position: relative; width: 200px; } .scpcc_upsell_sale_price_SlashThrough { color: #990000; font-family: arial; font-size: 13px; font-weight: bold; } .para_marketingprice_SlashThrough /*Newly added*/ { color: #990000; font-family: arial; font-size: 13px; font-weight: bold; text-decoration: line-through; } .scpcc_upsell_sale_price { color: #000000; font-family: arial; font-size: 13px; font-weight: bold; z-index: -1; } #sc_review_progress { width: 522px; height: 50px; position: absolute; top: 115px; left: 100px; opacity: 10; filter: alpha(opacity=3D100); mozopacity: 10; } #sc_review_progress_text { width: 522px; font-size: 14px; font-weight: bold; text-align: center; } #sc_review_progress_image_container { border: inset 2px #E7ECF0; position: relative; /*border:solid 1px #E7ECF0;*/ width: 522px; height: 32px; text-align: left; } #sc_review_progress_image_back, #sc_review_progress_image_front { position: absolute; top: 0px; left: 0px; width: 522px; height: 28px; text-align: center; vertical-align: middle; font-family: Arial; font-size: 13pt; font-weight: bold; padding-top: 7px; } #sc_review_progress_image_front { height: 25px; } #sc_review_progress_image_back { background-color: #E7ECF0; color: Black; } .sc_review_progress_image_front { background-color: #0682E4; color: White; overflow: hidden; clip: rect(0px 0px 0px 0px); } .sc_review_progress_image_front_alien { background-color: #171717; color: White; overflow: hidden; clip: rect(0px 0px 0px 0px); } #sc_review_content_container { width: 720px; height: 430px; position: absolute; top: 0px; left: 0px; padding-right: 10px; clip: rect(auto auto 0px auto); background-color: White; overflow: hidden; /* opacity:0; filter: alpha(opacity=3D0); MozOpaci= ty:0; */ } .sc_review_action_table { position: relative; width: 695px; } .sc_review_action_row { width: 695px; } .sc_review_action_empty_cell { width: 50%; } .sc_review_print_summary_cell { background-repeat: no-repeat; background-position: 5px; padding-left: 27px; padding-right: 30px; height: 20px; vertical-align: middle; background-image: url(http://i.dell.com/images/global/configurator/gene= ral/control_printer.gif); width: 100px; } .banner_image { height: 300px; width: 300px; position: relative; top: 210px; left: 220px; } .sc_review_action_wishlist { text-align: right; padding-right: 30px; } .sc_review_action_cartadd { text-align: right; width: 100px; padding-right: 30px; } #sc_review_content_outer_div { padding-left: 20px; overflow: auto; width: 705px; height: 100%; position: relative; } .sc_review_content_image { width: 150px; text-align: left; position: relative; } .sc_review_content_summary_outer { position: absolute; left: 200px; top: 10px; width: 500px; } .sc_review_content_summary_desc_outer { position: relative; width: 500px; } .sc_review_content_summary_image_div { position: relative; } .sc_review_content_review_recommendations_image { float: left; border: 0px; margin: 0px; padding: 0px; } .sc_review_content_summary_desc { position: absolute; left: 50px; margin-top: 7px; font-size: 18pt; font-weight: bold; font-family: Arial; color: #414141; width: 450px; } .sc_review_content_compat_issues_container { position: absolute; top: 40px; width: 500px; } .sc_review_content_review_rec_outer { position: relative; width: 500px; height: 50px; } .sc_review_content_compat_issues { font-family: Arial; font-size: 12px; font-weight: bold; color: #e07922; } .sc_review_content_compat_issues_text { font-family: Arial; font-size: 12px; font-weight: bold; color: blue; text-decoration: underline; } .sc_review_content_compat_issues_text:hover { font-family: Arial; font-size: 12px; font-weight: bold; color: blue; text-decoration: none; } .sc_review_content_compat_issues_text:visited { font-family: Arial; font-size: 12px; font-weight: bold; color: blue; } /* .sc_review_content_compat_issues_none_outer { height:50px; width:35px; } = */ .sc_review_content_compat_issues_none { font-weight: bold; font-size: 14px; height: 20px; width: 475px; } .sc_review_content_review_recommendations { font-size: 12px; background-color: #D6F4C0; height: 20px; width: 475px; } #sc_review_selections_table { position: relative; border-collapse: collapse; height: 100px; width: 655px; } #sc_review_selections_table tr { font-family: Arial; } #sc_review_selections_table .odd { font-family: Arial; background-color: whitesmoke; } #sc_review_selections_table .subbill { font-family: Arial; background-color: #FFFF66; } #sc_review_selections_table tr .scrtd1, #sc_review_selections_table tr .= scrtdcc1 { width: 150px; font-size: 12px; font-weight: bold; vertical-align: top; } #sc_review_selections_table tr .scrtdcc1 { padding-left: 15px; } #sc_review_selections_table tr .scrtd2, #sc_review_selections_table tr .= scrtdcc2 { padding-left: 20px; font-size: 12px; vertical-align: top; } #sc_review_selections_table tr .scrtdcc2 { padding-left: 35px; } #sc_review_selections_table tr .scrtd3 { padding-left: 20px; font-size: 12px; vertical-align: top; } .sc_review_selections_page_title_cell { vertical-align: middle; height: 40px; padding-top: 15px; } .sc_review_selections_page_title_image { vertical-align: middle; height: 35px; width: 50px; padding-bottom: 7px; padding-right: 10px; } .sc_review_selections_page_title { font-family: Arial; font-weight: bold; font-size: 14px; vertical-align: middle; height: 40px; } .sc_review_upsell_image { margin-left: 50px; display: none; } /* tabs start */ #configTabs { position: absolute; top: 5px; left: 0px; width: 970px; height: 27px; margin: 0px; padding: 0px; z-index: 1; overflow: hidden; } #configTabs table { border-collapse: collapse; } #configTabs td { border: none; padding: 0px; } #configTabs a { float: left; background: url(http://i.dell.com/images/global/config/tab-left.gif) no= -repeat left top; margin: 0px; padding: 0px 0px 0px 9px; text-decoration: none; background-position: 0px 0px; cursor: pointer; } #configTabs a span { float: left; display: block; background: url(http://i.dell.com/images/global/config/tab-right.gif) n= o-repeat right top; background-position: 100% 0px; padding: 5px 13px 6px 0px; cursor: pointer; } #configTabs img { border: none; position: relative; top: 0px; display: inline; } #configTabs font { border: none; position: relative; top: -3px; left: 5px; display: inline; color: #175dff; font-weight: bold; font-family: Arial; font-size: 8pt; } #configTabs .current a { background: url(http://i.dell.com/images/global/config/tab-left-current= .gif) no-repeat right top; background-position: 0px 0px; } #configTabs .current a span { background: url(http://i.dell.com/images/global/config/tab-right-curren= t.gif) no-repeat right top; background-position: 100% 0px; } #configTabs #current font { color: #6f6f6f; } #icon-price-div { top: 0px; left: 0px; width: 231px; height: 100%; } /* divs contained in main-div */ #sc_app_div #module-title-div { position: absolute; width: 405px; height: 35px; left: 325px; top: 0px; text-align: left; padding-top: 34px; padding-left: 0px; font-family: Arial; font-size: 18pt; font-weight: normal; color: #414141; } #sc_app_div #module-title-div table { position: absolute; top: 40px; left: 3px; font-size: 8pt; } #sc_app_div #module-title-div table td { font-size: 8pt; } #sc_app_div #module-title-div .mod-title-img { position: absolute; left: -7px; top: 22px; } #sc_app_div #module-title-div img { border: none; } #sc_app_div #module-title-div tr { height: 34px; } #sc_app_div #module-title-div .td-btn-text { padding-right: 8px; padding-left: 1px; } #sc_app_div #module-title-div .td-btn-text a { color: #0033FF; } #sc_app_div #next-btn-div { position: absolute; width: 375px; height: 70px; top: 304px; left: 325px; vertical-align: top; padding-top: 0px; } #sc_app_div #buy-btn-div { position: absolute; top: 28px; width: 385px; height: 35px; left: 0px; } #sc_app_div #buy-btn-div #wish-list-div { position: absolute; color: Green; } #next-btn-div #prev-bundle-btn-div { position: absolute; left: 34px; top: 5px; padding-top: 0px; } #prev-bundle-btn-div #bundle-express-btn-div { top: 0px; } #prev-bundle-btn-div #bundle-configure-btn-div { top: 0px; float: right; } #prev-bundle-btn-div { background-repeat: no-repeat; background-position: center; } #sc_app_div #buy-btn-div-bundle { position: absolute; width: 375px; height: 35px; top: 5px; left: 0px; } #next-btn-div #top-btn-div-bundle { position: absolute; left: 5px; top: 5px; width: 275px; padding-top: 0px; } #sc_app_div #module-message-div { position: absolute; width: 400px; height: 10px; top: 290px; left: 325px; vertical-align: top; padding-top: 0px; font-family: Arial; font-size: 8pt; color: Gray; } #sc_goicon_div { margin-left: 10px; margin-top: 5px; margin-bottom: 5px; } #sc_goicon_div span { margin-left: 3px; font-family: Arial; font-size: 8pt; color: blue; font-weight: bold; } #sc_app_div #icon-alloptions-div { cursor: hand; position: absolute; width: 400px; height: 15px; left: 10px; top: 5px; overflow: hidden; } #sc_app_div #icon-alloptions-div span { padding-left: 3px; font-family: Arial; font-size: 8pt; color: blue; font-weight: bold; } #sc_app_div #icon-flash-div { position: absolute; top: 22px; width: 314px; height: 314px; left: 0px; overflow: hidden; opacity: 1; filter: alpha(opacity=3D100); visibility: visible; } #sc_app_div #icon-image-div { position: absolute; width: 315px; height: 315px; left: 4px; top: 23px; overflow: hidden; } #sc_app_div #icon-image-div #icon-image-disclaimer { padding-left: 4px; position: absolute; width: 312px; height: 12; left: 0px; top: 290px; font-family: Arial; font-size: 8pt; color: Gray; } #sc_app_div .icon_image_optimg_div { position: absolute; width: 314px; height: 314px; left: 0px; top: 0px; overflow: hidden; } #sc_app_div #icon-image-div .icon_large_mod_img { position: absolute; border-style: none; visibility: visible; } #sc_app_div #icon-image-div #icon_large_mod_img2 { visibility: visible; opacity: 0; filter: alpha(opacity=3D0); height: 314px; z-index: 100; } #sc_app_div #icon-options-div { position: absolute; overflow: auto; width: 402px; height: 205px; left: 325px; top: 80px; } #sc_test_cc { position: absolute; width: 30px; height: 100px; left: 20px; top: 425px; } #sc_app_div #icon-modules-div { position: absolute; width: 100%; height: 100px; left: 0px; top: 340px; } #icon-options-table { position: absolute; left: 0px; top: 0px; border-spacing: 0px; border-collapse: separate; font-family: Arial; font-size: 8pt; } #icon-options-table TD { border-spacing: 0px; vertical-align: top; padding-top: 5px; padding: 0px 0px 0px 0px; font-size: 8pt; } #icon-options-table .opt_category_expand_collapse { padding-top: 5px; } #icon-options-table .delta_price { font-size: 8pt; font-weight: bold; } #icon-options-table .pos_stmt { font-size: 9pt; font-weight: bold; color: Green; } /* make the first row have 0 padding */ #icon-options-table .opt_radio_cell_first { /* top right bottom left */ border-width: 1px 0px 1px 1px; border-style: solid; border-color: White; padding-top: 0px; width: 20px; } #icon-options-table .opt_radio_cell { border-width: 1px 0px 1px 1px; border-style: solid; border-color: White; padding-top: 3px; width: 20px; } .sc_option_image_info { margin-top: 8px; } /* make the first row have 0 padding */ #icon-options-table .opt_desc_cell_first { border-width: 1px 1px 1px 1px; border-style: solid; border-color: White; padding-top: 0px; padding-left: 2px; padding-right: 0px; width: 332px; cursor: default; } #icon-options-table .opt_desc_cell { border-width: 1px 1px 1px 1px; border-style: solid; border-color: White; padding-top: 2px; padding-left: 2px; padding-right: 0px; width: 332px; cursor: default; } #icon-options-table .opt_modblurb_cell { padding-top: 0px; font-size: 7pt; padding-left: 6px; width: 375px; } #icon-options-table .mod_upsell_cell { padding-left: 6px; font-size: 12px; } /* icon bar stuff */ #icon-modules-div div#clipLayer { position: relative; left: 0px; top: 0px; height: 95px; overflow: hidden; z-index: 1; } #icon-modules-div .contentLayer { position: relative; z-index: 1; left: 0px; top: 0px; height: 100%; width: 100%; cursor: pointer; } #icon-modules-div div#left { position: relative; visibility: visible; left: 0; top: 0; z-index: 3; } #icon-modules-div div#right { position: relative; visibility: hidden; left: 0; top: 0; z-index: 3; } #icon-modules-div .wrapperElement { height: 100%; position: absolute; display: block; border: none; text-align: center; } #icon-modules-div .imageElement { position: absolute; left: 15px; border: none; width: 50px; height: 35px; } #icon-modules-div .scrollIconText { position: absolute; border: none; top: 58px; left: 0px; width: 100%; font-size: 7pt; color: gray; font-weight: normal; font-family: Arial; text-align: center; overflow: hidden; } #icon-modules-div .scrollIconTextCurrent { background-color: #0066CC; color: white; } #icon-modules-div .scrollIconTextPrevious { color: #0033FF; } #icon-modules-div .scrollIconTextHover { color: #0033FF; text-decoration: underline; } #icon-modules-div .triangle { visibility: hidden; display: block; z-index: -1; position: absolute; top: 52px; left: 34px; width: 12px; height: 6px; } /* end icon bar stuff */ .sc_review_upsells_bottom_div { position: relative; float: left; height: 225px; width: 200px; margin-top: 10px; margin-left: 5px; margin-right: 5px; padding: 3px 5px 3px 5px; font-family: Arial; font-size: 10px; border-right: solid 1px black; border-left: solid 1px silver; border-bottom: solid 1px black; border-top: solid 1px silver; } .sc_review_upsell_bottom_image { text-align: center; border-top: solid 1px silver; border-left: solid 1px silver; border-right: solid 1px silver; border-bottom: solid 1px silver; margin: 2px 0px 12px 50px; padding: 0px 0px 0px 0px; width: 100px; height: 100px; } .sc_review_upsell_bottom_add { position: absolute; top: 205px; left: 10px; width: 100%; } #sc_list_div { position: relative; overflow: auto; width: 725px; height: 452px; padding: 0px 0px 0px 0px; margin: 0px 0px 0px 0px; border: 0px; } .sc_list_table { width: 675px; border-collapse: collapse; padding: 0px 0px 0px 0px; margin: 20px 0px 0px 0px; border: 0px; } .sc_list_table td { padding: 0px 0px 0px 0px; margin: 0px 0px 0px 0px; } .sc_list_continue { float: right; padding-right: 20px; } .sc_list_express_configure_btn { float: right; padding-right: 20px; width: 235px; } #sc_cc_div { position: relative; left: 5px; top: 5px; margin-right: 10px; padding-right: 10px; width: 705px; height: 400px; border-top: solid 2px silver; border-left: solid 2px silver; border-right: solid 3px gray; border-bottom: solid 3px gray; } #sc_cc_inner_div { position: relative; left: 5px; top: 5px; margin-right: 0px; width: 700px; height: 375px; overflow: auto; } #sc_cc_navigation_links { position: relative; width: 680px; margin-top: 3px; } #sc_cc_return_div { position: relative; top: -10px; } #sc_cc_next_div { } #sc_app_inner_div { position: relative; top: 0px; left: 0px; width: 100%; height: 100%; margin: 0px 0px 0px 0px; padding: 0px 0px 0px 0px; border: 0px; } .sc_cc_selected_span_visible { margin-top: 5px; margin-bottom: 5px; margin-left: 10px; width: 50px; overflow: visible; } .sc_cc_selected_span_hidden { display: none; } /* shared between classic and super */ .option_discount_text { font-family: Arial; font-size: 8pt; color: #FF6600; } /* end shared */ #compositeConfigWarning { position: absolute; display: none; width: 270px; height: auto; overflow: visible; filter: alpha(opacity=3D0); mozopacity: 0; opacity: 0; z-index: 99; } #compositeConfigWarning .compositeConfigWarningMessage { margin-top: 25px; color: black; font-weight: bold; font-family: Arial; font-size: 10pt; vertical-align: top; display: inherit; } #compositeConfigWarning .compositeConfigWarningCallout { position: relative; top: -1px; left: 10px; background: url(http://i.dell.com/images/global/config/callout.gif) no-= repeat; height: 20px; } #compositeConfigWarning IMG { position: absolute; border: none; top: 4px; left: 225px; cursor: pointer; cursor: hand; } #compositeConfigWarning .t { background: url(http://i.dell.com/images/global/config/gray-pixel.gif) = 0 0 repeat-x; width: 245px; z-index: 200; background-color: #e7ecf0; } #compositeConfigWarning .b { background: url(http://i.dell.com/images/global/config/gray-pixel.gif) = 0 100% repeat-x; } #compositeConfigWarning .l { background: url(http://i.dell.com/images/global/config/gray-pixel.gif) = 0 0 repeat-y; } #compositeConfigWarning .r { background: url(http://i.dell.com/images/global/config/gray-pixel.gif) = 100% 0 repeat-y; } #compositeConfigWarning .bl { background: url(http://i.dell.com/images/global/config/bottom-left.gif)= 0 100% no-repeat; } #compositeConfigWarning .br { background: url(http://i.dell.com/images/global/config/bottom-right.gif= ) 100% 100% no-repeat; } #compositeConfigWarning .tl { background: url(http://i.dell.com/images/global/config/top-left.gif) 0 = 0 no-repeat; } #compositeConfigWarning .tr { background: url(http://i.dell.com/images/global/config/top-right.gif) 1= 00% 0 no-repeat; padding: 10px; } /* classic compatability */ #val-error-window { position: absolute; z-index: 200; background-image: url(http://i.dell.com/images/global/configurator/gene= ral/background.gif); background-repeat: repeat-x; background-color: whitesmoke; border-left: solid 1px black; border-top: solid 1px black; border-right: outset 2px black; border-bottom: outset 2px black; padding-right: 1px; padding-bottom: 5px; text-indent: 5px; color: White; font-size: 10pt; font-family: Arial,Helvetica; font-weight: bold; } #val-error-title { position: absolute; top: 2px; } #val-closebox { position: absolute; z-index: 210; top: 1px; width: 22px; height: 32px; text-align: center; text-indent: 0px; padding-left: 4px; padding-top: 2px; cursor: hand; } #val-text { position: absolute; z-index: 220; left: 2px; top: 25px; color: Black; padding-right: 5px; padding-left: 5px; overflow-y: auto; background-color: whitesmoke; font-size: 12px; font-weight: normal; text-indent: 0px; text-align: left; } #val-text .val_bullet_cl { vertical-align: top; padding-top: 4px; } /* each cl module in*/ #val-text .val_cl_hdr_cl { font-size: 10pt; font-weight: bold; } /* each cl msg under the module*/ #val-text .val_cl_msg_cl { font-size: 8pt; color: #E17924; font-weight: bold; } /* the list msg for cl groups*/ #val-text .val_cl_grp_cl { font-size: 8pt; color: black; font-weight: normal; } #val-text .val_errors_header { font-size: 12px; color: Gray; font-weight: bold; font-style: italic; padding-bottom: 0px; padding-top: 0px; } #val-text .val_warnings_header { font-size: 12px; color: Gray; font-weight: bold; font-style: italic; padding-bottom: 0px; padding-top: 0px; } /* these are the ones after a list of errors need some padding*/ #val-text .val_warnings_header2 { padding-top: 3px; } #val-text .val_sys_name { text-indent: 0px; font-weight: bold; text-align: left; padding-top: 0px; padding-bottom: 0px; } /*this is only applied to the ones not listed first*/ #val-text .val_sys_name2 { padding-top: 10px; } #val-text .val_msg { color: Black; font-size: 12px; } /* icon compatibility message center */ #icon-val-main-div { position: absolute; left: 9px; top: 25px; width: 318px; height: 318px; z-index: 500; } #icon-val-main-div #icon-val-cont-div { color: #E17924; position: absolute; border: solid 1px gray; left: 0px; top: 0px; width: 315px; height: 315px; z-index: 500; background-color: #F4F4F4; } #icon-val-main-div #icon-val-shadow-div { position: absolute; left: 5px; top: 5px; width: 315px; height: 315px; background: gray; z-index: 499; filter: alpha(opacity=3D40); opacity: .5; } #icon-val-main-div #icon-val-alert-img { position: absolute; left: 10px; top: 10px; } #icon-val-main-div #icon-val-close-img { position: absolute; left: 298px; top: 4px; cursor: pointer; } #icon-val-main-div #icon-val-alert-title { width: 225px; height: 30px; font-family: Arial; font-weight: bold; font-size: 12pt; position: absolute; left: 70px; top: 25px; } #icon-val-main-div #icon-val-textc-div { overflow-y: auto; position: absolute; left: 10px; top: 65px; width: 290px; height: 220px; } #icon-val-main-div .later_image { position: absolute; left: 8px; top: 290px; cursor: pointer; } #icon-val-main-div .later_text { font-size: 10pt; font-weight: bold; position: absolute; left: 30px; top: 290px; } #icon-val-textc-div .val_bullet_cl { vertical-align: top; padding-top: 4px; } /* each cl module in*/ #icon-val-textc-div .val_cl_hdr_cl { font-size: 10pt; font-weight: bold; } /* each cl msg under the module*/ #icon-val-textc-div .val_cl_msg_cl { font-size: 8pt; color: #E17924; font-weight: bold; } /* the list msg for cl groups*/ #icon-val-textc-div .val_cl_grp_cl { font-size: 8pt; color: black; font-weight: normal; } #icon-val-textc-div .val_errors_header { font-size: 12px; color: #E17924; font-weight: bold; font-style: italic; padding-bottom: 0px; padding-top: 0px; } #icon-val-textc-div .val_warnings_header { font-size: 12px; color: #E17924; font-weight: bold; font-style: italic; padding-bottom: 0px; padding-top: 0px; } /* these are the ones after a list of errors need some padding*/ #icon-val-textc-div .val_warnings_header2 { padding-top: 3px; } #icon-val-textc-div .val_sys_name { text-indent: 0px; font-weight: bold; text-align: left; padding-top: 0px; padding-bottom: 0px; } /*this is only applied to the ones not listed first*/ #icon-val-textc-div .val_sys_name2 { padding-top: 10px; } #icon-val-textc-div .val_msg { color: Black; font-size: 10pt; } /* begin icon compatibility message center for list mode */ #list-val-main-div { position: relative; width: 730px; height: 138px; left: 5px; z-index: 500; padding-bottom: 5px; } #list-val-main-div #list-val-cont-div { color: #E17924; position: absolute; border: solid 1px gray; left: 0px; top: 2px; width: 720px; height: 135px; background-color: #F4F4F4; } #list-val-main-div #list-val-shadow-div { position: absolute; left: 5px; top: 7px; width: 720px; height: 135px; background: gray; filter: alpha(opacity=3D60); opacity: .5; } #list-val-main-div #list-val-alert-img { position: absolute; left: 5px; top: 5px; } #list-val-main-div #list-val-close-img { position: absolute; left: 705px; top: 4px; cursor: pointer; } #list-val-main-div #list-val-alert-title { vertical-align: bottom; width: 600px; font-family: Arial; font-weight: bold; font-size: 8pt; position: absolute; left: 32px; top: 10px; } #list-val-main-div #list-val-textc-div { overflow-y: auto; position: absolute; left: 10px; top: 25px; width: 708px; height: 100px; } #list-val-textc-div .val_bullet_cl { vertical-align: top; padding-top: 4px; } /* each cl module in*/ #list-val-textc-div .val_cl_hdr_cl { font-size: 10pt; font-weight: bold; } /* each cl msg under the module*/ #list-val-textc-div .val_cl_msg_cl { font-size: 8pt; color: #E17924; font-weight: bold; } /* the list msg for cl groups*/ #list-val-textc-div .val_cl_grp_cl { font-size: 8pt; color: black; font-weight: normal; } #list-val-textc-div .val_errors_header { font-size: 12px; color: #E17924; font-weight: bold; font-style: italic; padding-bottom: 0px; padding-top: 0px; } #list-val-textc-div .val_warnings_header { font-size: 12px; color: #E17924; font-weight: bold; font-style: italic; padding-bottom: 0px; padding-top: 0px; } /* these are the ones after a list of errors need some padding*/ #list-val-textc-div .val_warnings_header2 { padding-top: 3px; } #list-val-textc-div .val_sys_name { text-indent: 0px; font-weight: bold; text-align: left; padding-top: 0px; padding-bottom: 0px; } /*this is only applied to the ones not listed first*/ #list-val-textc-div .val_sys_name2 { padding-top: 10px; } #list-val-textc-div .val_msg { color: Black; font-size: 10pt; } /* fix storm masthead to always be on top*/ #masthead div.activetableft { z-index: 1000; } #masthead div.activetabhoverleft { z-index: 1000; } #sc_debug_div { position: absolute; border: solid 1px red; left: 0px; top: 0px; width: 250px; height: 200px; overflow-y: auto; z-index: 1000; background-color: White; visibility: visible; font-size: 10px; } .sc_next_mod_btn { float: right; left: 217px; width: 45%; position: absolute; top: 0px; right: 20px; } *html .sc_next_mod_btn { left: 211px; } .sc_icon_prrp_div { width: 200px; } .sc_back_text, .sc_back_text:visited { position: relative; font-family: Arial; font-size: 12px; color: Blue; width: 100px; margin-right: 20px; top: 4px; } .sc_back_text_span { position: relative; top: -4px; margin-left: 4px; width: 200px; cursor: pointer; cursor: hand; } .prev_deb_table { font-size: 8pt; width: 100%; } .mid_col { text-align: center; font-size: 8pt; border-top: 1px solid black; border-bottom: 1px solid black; width: 8%; font-size: 7pt; } .lft_col { padding-left: 2; text-align: left; font-size: 8pt; border-top: 1px solid black; border-bottom: 1px solid black; border-left: 1px solid black; width: 26%; font-size: 7pt; } .rgt_col { text-align: right; font-size: 8pt; border: 1px solid black; font: bold; background: #DDDDDD; width: 6%; font-size: 7pt; } .gen_row { text-align: center; font-size: 8pt; width: 8%; font-size: 7pt; } .desc_row { padding-right: 5pt; font-size: 8pt; text-align: left; width: 26%; font-size: 7pt; } .flavored_option_display_hide { display: none; } .flavored_option_display_disabled { color: #999999; } .flavored_option_display_enabled { color: #000000; } .scpcc_component_list_pfyd_item_details { padding-left: 10px; font-size: 10px; overflow: visible; font-family: Arial; font-weight: normal; vertical-align: top; line-height: 14px; margin-right: 1px; margin-bottom: 2px; height: auto; } .scpcc_component_list_pfyd_item { background: url('http://i.dell.com/images/global/general/bullet.gif') n= o-repeat 0px 1px; padding-left: 10px; font-size: 11px; font-weight: bold; overflow: visible; font-family: Arial; vertical-align: top; line-height: 14px; margin-right: 1px; margin-bottom: 2px; height: auto; } .scpcc_component_list_pfyd_link { padding-left: 0px; font-size: 11px; font-weight: bold; overflow: visible; font-family: Arial; vertical-align: top; line-height: 14px; margin-right: 1px; margin-bottom: 2px; height: auto; } .olt_table_content_cfg { color: Black; font-family: arial,helvetica,sans-serif; font-size: 8pt; } .qty_text_box_edit { font-family: Arial; font-size: 8pt; } .qty_text_box_set { border: 1px solid #000000; font-family: Arial; font-size: 8pt; background-color: #F0F0F0; } #picta_div { display: none; position: absolute; /*top:35px; left:150px; */ z-index: 3; background-color: #ffffff; /*filter:alpha(opacity=3D100); -moz-opacit= y:1.00; opacity:1.00; */ /*border:0px solid white; */ /*margin:auto; *= / color: white; padding: 0px; } .content_faded { filter: alpha(opacity=3D50); -moz-opacity: .50; opacity: .30; background-color: #000; z-index: 100; position: absolute; /*left:0px; top:0px; width: 100%; height:100= %;*/ } #est_ship_date { color: Red; } .debugId { font-size: 9px; color: gray; } /* Bundles icon view */ .bundleGroupTbl { /*position:absolute;left:0px;top:0px;*/ border-spacing: 0px; border-collapse: collapse; font-family: Arial; font-size: 8pt; } .bundleGroupTbl td { border-spacing: 0px; vertical-align: top; padding-top: 5px; padding: 0px 0px 0px 0px; font-size: 8pt; } tr.bundleHdrRow { } table.bundleGroupTbl td.bundleInputCell { vertical-align: middle; padding-right: 10px; border-width: 1px 0px 1px 1px; border-style: solid; border-color: White; padding-top: 3px; width: 20px; } table.bundleGroupTbl td.bundleInputCellFirst { /* make the first row have 0 padding */ /* top right bottom left */ padding-top: 0px; } td.bundleHdrCell { padding: 0px; } td.bundleHdrCellNotSel { background-color: #dd7702; } td.bundleHdrCellSel { background-color: #cc6602; } table.bundleHdrTable { width: 100%; margin: 0px; border-collapse: collapse; } table.bundleHdrTable td { vertical-align: middle; height: 28px; } table.bundleHdrTable td.bundleIconCell { /*width:32px;*/ } table.bundleHdrTable td.bundleNameCell { padding-left: 5px; color: white; font-size: 14px; font-weight: bold; } table.bundleHdrTable td.bundleNameCell .wordBundle { color: black; } table.bundleHdrTable td.bundleShowHideCell { width: 28px; height: 25px; } /*table.bundleHdrTable td.bundleHdrLeft { width:9px;background: transpar= ent url(http://i.dell.com/images/global/configurator/general/bundleLeft.= png) no-repeat top left; }*/ table.bundleHdrTable td.bundleHdrLeft { width: 9px; } table.bundleHdrTable td.bundleHdrRight { width: 9px; } td.bundleHdrCellSel td.bundleHdrLeft { width: 9px; } td.bundleHdrCellSel td.bundleHdrRight { width: 9px; } table.bundleHdrTable td.bundleShowHideCellCollapsed { background: transparent url(http://i.dell.com/images/global/configurato= r/general/bundleColl.png) no-repeat center right; } table.bundleHdrTable td.bundleShowHideCellExpanded { background: transparent url(http://i.dell.com/images/global/configurato= r/general/bundleExp.png) no-repeat center right; } td.bundleHdrCellSel td.bundleShowHideCellCollapsed { background: transparent url(http://i.dell.com/images/global/configurato= r/general/bundleCollHvr.png) no-repeat center right; } td.bundleHdrCellSel td.bundleShowHideCellExpanded { background: transparent url(http://i.dell.com/images/global/configurato= r/general/bundleExpHvr.png) no-repeat center right; } tr.bundleNoneRow { } tr.bundleNoneRow td.bundleInputCell { vertical-align: middle; } tr.bundleNoneRow td.bundleNoneCell { vertical-align: middle; padding-left: 10px; padding-top: 8px; padding-bottom: 8px; } tr.bundleDetailsRow { } td.bundleDetailsCell { } td.bundleCellIcon { width: 332px; cursor: default; } td.bundleCellList { width: 550px; cursor: default; } table.bundleOptionsTable { } table.bundleOptionsTable td { vertical-align: middle; padding: 0px 3px 0px 12px; background: transparent url(http://i.dell.com/images/global/config/carr= ot.gif) no-repeat left center; } div.bundleDetailsPrice { font-weight: bold; margin-top: 0.25em; margin-bottom: 1em; float: right; font-size: 16px; } span.bundleRetailPrice { color: black; text-decoration: line-through; margin-left: 0.25em; margin-right: 0.25em; } span.bundleDiscountPrice { color: #669933; } div.bundleDetailsDesc { font-weight: bold; margin-top: 5px; margin-bottom: 5px; } div.bundleDisplayNone { display: none; padding: 0px; } div.bundleDisplayVisible { display: block; padding: 5px; } /* Bundles list view */ table.listBundleGroupTbl { width: 100%; } .listBundleGroupHdr { vertical-align: top; white-space: nowrap; } td.bundleGroupIcon { vertical-align: top; width: 75px; } .bundleGroupIconImg { border-style: none; } .bundleGroupBundles { vertical-align: top; } div.bundleGroupDisplayNone { display: none; padding: 0px; } div.bundleGroupDisplayVisible { display: block; padding: 5px; } td.Mod_Selector_cell_middle_notselected p, td.Mod_Selector_cell_middle_s= elected p { font-family: Arial; font-size: 13px; font-weight: bold; margin-top: 0px; margin-bottom: 0px; margin-left: 5px; cursor: default; } .bundleGroupSpacer { height: 25px; } .listBundleGroupDtlRow .icon_image_div { position: relative; width: 315px; height: 315px; left: 0px; top: 0px; overflow: hidden; } .listBundleGroupDtlRow .icon_image_div .icon_image_optimg_div { position: relative; width: 314px; height: 314px; left: 0px; top: 0px; overflow: hidden; } .listBundleGroupDtlRow .icon_image_div .icon_large_mod_img { position: relative; border-style: none; visibility: visible; } .bundledOption { color: #999999 !important; } .bundledModuleDescIcon, .bundledModuleDescList { font-size: 13px !important; font-weight: bold; padding-right: 20px; } div.bundledModuleDescIcon { padding-left: 18px; margin-top: 10px; } td.bundleGroupBlurbCell { padding-top: 3px; font-size: 9px !important; } td.bundleGroupBlurbCellPad { padding-bottom: 9px; } td.bundleGroupBlurbCell p { margin-top: 5px; margin-bottom: 5px; } /* BUILDER SECTION */ .bu_validation_a { color: #3399CC !important; font-family: arial,helvetica; font-size: 11px; font-weight: bold !important; text-decoration: underline; } .bu_validation_a:hover { color: #3399CC !important; font-family: arial,helvetica; font-size: 11px; font-weight: bold; } .bu_header_container { width: 965px; /*margin: 0 auto 10 auto;*/ position: relative; /* border: 1px solid blue; */ /*CR#67989/68868 AND = TD#68809*/ /*height: 248px;*/ color: #fff !important; background-color: #E4E4E4; } .bu_header_container_table { /*width: 401px;*/ /*CR#67989/68868 AND TD#68809*/ width: 965px; } #bu_page_container { width: 965px; margin: 0 auto 0 auto; position: relative; text-align: left; border: 0px solid green; color: #000; height: auto; overflow: visible; top: 0px; } .bu_header_container_review { width: 965px; margin: 0 auto 10 auto; position: relative; /* border: 1px solid blue; */ /*CR#67989/68868 AND = TD#68809*/ /*height: 308px;*/ color: #fff !important; /*background-image: url(http://i.dell.com/image= s/global/builder/bu_cp_black_gradient_glow.png); background-image: ur= l(http://i.dell.com/images/global/builder/bu_cp_black_gradient_glow.jpg)= ; */ /*background-image:url(http://i.dell.com/images/global/builder/hero= /studio-14z-blkwlan.png); background-repeat:no-repeat;*/ background-color: #ffffff; top: 0px; } .bu_page_container_view_by { position: absolute; right: 0px; width: 250px !important; margin-top: -27px; padding: 10px 0 10px 0; height: 25px; top: 35px !important; left: 700px !important; } .bu_page_container_view_by_compact { position: absolute; width: 100px; background-color: #9E9E9E; color: #ffffff; height: 21px; text-align: center; font-weight: bold; left: 170px !important; top: 5px !important; padding-top: 5px; } .view_by_txt { padding: 0px !important; } .view_by_expanded { padding: 0 0 0 10 px; padding-left: 10px; } a.view_by_expanded { text-decoration: none; } a.view_by_expanded hover { text-decoration: none; } .bu_header_container_hero_review { background-image: url(http://i.dell.com/images/global/builder/hero/stud= io-14z-blkwlan.png); background-repeat: no-repeat; width: 456px; height: 200px; margin-top: 80px; position: absolute; } #bu_header_dell_logo { /*filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src=3D'http= ://i.dell.com/images/global/builder/bu_cp_dell_badge.png',sizingMethod=3D= 'scale');*/ left: 0px; top: 0px; width: 64px; height: 64px; cursor: pointer; border-width: 0px; } #bu_header_print_dell_logo { /* position : absolute; */ background-image: url(http://i.dell.com/images/global/builder/bu_cp_del= l_badge.png); background-repeat: no-repeat; height: 64px; width: 64px; } *html #bu_header_print_dell_logo { background: none; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=3Dtr= ue, sizingMethod=3Dcrop, src=3D'http://i.dell.com/images/global/builder/= bu_cp_dell_badge.png'); } #bu_header_toolbar { /*CR#67989/68868 AND TD#68809*/ /*position: absolute;*/ right: 0px; /*top: 5px;*/ height: 35px; width: 480px; text-align: right; /* border : 1px solid red; */ } #bu_header_title { top: 5px; left: 75px; width: 415px; color: #333333; font-size: 22px; font-weight: bold; text-align: left; /* border : 1px solid green; */ } #bu_print_title { color: black; font-size: 24px; font-weight: bold; text-align: left; vertical-align: middle; padding: 10px 0px 20px 0px; } #bu_main_price_div_review { width: 200px; height: 200px; left: 750px; border: 1px solid green; position: absolute; top: 35px; display: none; } #bu_header_product_details { top: 45px; width: 150px; text-align: left; /* border : 1px solid white; */ } #bu_header_product_details_link { color: #3399CC; text-decoration: none; } #bu_header_product_details_link:hover { color: #3399CC; text-decoration: underline; cursor: hand; } #bu_header_hero { /*CR#67989/68868 AND TD#68809*/ /*top: 65px; left: 0px; width: 300px;= height: 165px;*/ } #bu_header_center_info_container { /*CR#67989/68868 AND TD#68809*/ /*position: absolute;*/ top: 72px; left: 400px; /*width: 196px;*/ width: 150px; /* height: 226px; border : 1px solid white; */ } #bu_header_estimated_ship_date { position: relative; /*CR#67989/68868 AND TD#68809*/ /*width: 194px;*/ width: 250px; padding-bottom: 10px; font-weight: bold; /* border : 1px solid green; */ /*display: none;*/ } .bu_header_estimated_ship_date_review { position: absolute; /*CR#67989/68868 AND TD#68809*/ /*width: 194px;*/ width: 150px; padding-bottom: 10px; left: 562px; color: #000000; font-size: 12px; line-height: 12px; font-weight: bold; text-align: center; margin-top: 70px; top: 15px; } #bu_header_fast_track { position: relative; width: 194px; padding-bottom: 10px; font-weight: bold; /* border : 1px solid green; */ } #bu_header_promo { position: relative; /*CR#67989/68868 AND TD#68809*/ /*width: 194px;*/ width: 150px; padding-bottom: 10px; font-weight: bold; /* border : 1px solid green; */ } #bu_header_hero_price { position: absolute; top: 45px; left: 670px; width: 295px; height: 125px; text-align: right; font-size: 48pt; font-weight: bold; /* border : 1px solid orange; */ } #bu_header_additional_text { /*position : absolute; top : 190px; left : 765px; margin: 10px 0px = 0px 0px; width : 200px; height : 75px;*/ text-align: right; /*color : #FA9700;*/ font-weight: bold; /* border : 1px solid yellow; */ } .bu_header_add_to_cart_review { width: 295px; top: 400px; left: 820px; margin: 0 auto 10 auto; position: absolute; text-align: right; height: 40px; } #bu_header_down_add_to_cart_review { position: relative; text-align: right; height: 50px; width: 100%; display: none; right: -10px; } /*#bu_header_estimated_ship_date_link_review { color : #373737; font-weight: bold; }*/ #bu_header_estimated_ship_date_link_review a { color: #373737; font-weight: bold; } .bu_review_page_missed_step { width: 300px; /*background: #DEF2FF; */ background: #FFFFFF; border: 0px; left: 0px !important; margin: 0px; padding: 0px; } .bu_review_page_missed_step_outer { padding-left: 8px; padding-bottom: 8px; padding-right: 8px; padding-top: 8px; /*background : #308FCA;*/ background: #FFFFFF; left: 15px !important; width: 300px !important; } .missed_step_txt { color: #000000; background: #FFFFFF; font-weight: bold; border-bottom: 0 none !important; } .bu_page_selections_container { border-bottom: 0px none !important; } .bu_delay_alert { width: 21px; background: #FFFFFF; } *html .bu_delay_alert { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=3Dtr= ue, sizingMethod=3Dcrop, src=3D'http://i.dell.com/images/global/builder/= bu_missed_step_alert.png'); } html > body .bu_delay_alert { background: transparent url(http://i.dell.com/images/global/builder/bu_= missed_step_alert.png) no-repeat 0px 1px; } .bu_review_page_missed_step_black { font-weight: normal; } /*#bu_header_estimated_ship_date_link { color : #FFFFFF; cursor : pointer; }*/ /*#bu_header_estimated_ship_date_link:hover { color : #FFFFFF; text-decoration : underline; cursor : pointer; }*/ #bu_header_fast_track_link { color: #3399CC; font-weight: bold; } #bu_header_fast_track_link:hover { color: #3399CC; text-decoration: underline; font-size: 12px; cursor: hand; } /*#bu_print_summary_link { color : #7F7F7F; }*/ #bu_print_summary_link:hover { text-decoration: underline; cursor: hand; } #bu_header_chat_link { color: #7F7F7F; } #bu_chat_link:hover { text-decoration: underline; cursor: hand; } #bu_save_link:hover { text-decoration: underline; cursor: hand; } #bu_val-text-spc .bu_val_sys_name { text-indent: 0px; /*font-weight: bold;*/ color: #3399cc !important; padding-top: 0px; padding-bottom: 2px; padding-left: 20px; font-size: 11px; font-weight: normal; } #bu_val-text .bu_val_sys_name { text-indent: 0px; /*font-weight: bold;*/ text-align: left; color: #3399cc !important; padding-top: 0px; padding-bottom: 2px; padding-left: 20px; font-size: 11px; font-weight: normal; } #bu_val-text .bu_val_sys_name a { color: #3399cc !important; } #bu_header_price_print_summary { width: 295px; height: 125px; text-align: right; font-size: 48pt; font-weight: bold; } #bu_val-text .bu_val_bullet_cl { vertical-align: top; padding-top: 4px; text-align: right; } #bu_val_msg .bu_val_msg { color: #3399cc; font-size: 12px; } #bu_val_window_standpage { background-repeat: repeat-x; padding-right: 1px; padding-bottom: 5px; color: White; font-size: 10pt; font-family: Arial,Helvetica; font-weight: bold; width: 454px; background-color: #333333; } #bu_val_window_standpage_review { background-repeat: repeat-x; padding-right: 1px; padding-bottom: 5px; color: White; font-size: 10pt; font-family: Arial,Helvetica; font-weight: bold; width: 454px; background-color: #333333; margin-left: 3px !important; } #bu_header_fast_track_shipping { font-family: Arial; font-size: 13px; } .bu_header_black_text { color: #000000; font-weight: bold; } .bu_header_blue_text { /*color : #65D2FD;*/ color: #66CCFF; font-weight: bold; } a.bu_header_blue_text { /*color : #65D2FD;*/ color: #66CCFF; font-weight: bold; text-decoration: none; } a.bu_header_blue_text hover { /*color : #65D2FD;*/ color: #66CCFF; text-decoration: underline; font-weight: bold; } .bu_header_review_blue_text { color: #3399CC; font-weight: bold; } a.bu_header_review_blue_text { color: #3399CC; font-weight: bold; text-decoration: none; } a.bu_header_review_blue_text hover { color: #3399CC; text-decoration: underline; font-weight: bold; } .nodate { width: 30px; } .bu_header_blue_text_bold { /*color : #65D2FD;*/ color: #66CCFF; font-weight: bold; } .bu_header_orange_text { color: #FA9700; } .bu_header_orange_text_bold { color: #FA9700; font-weight: bold; } .bu_header_grey_text { color: #7F7F7F; font-weight: bold; } a.bu_header_grey_text { color: #7F7F7F; text-decoration: none; font-weight: bold; } a.bu_header_grey_text hover { text-decoration: none; font-weight: bold; } .bu_header_white_text { color: #FFFFFF; } a.bu_header_white_text { color: #FFFFFF; text-decoration: none; } a.bu_header_white_text hover { color: #FFFFFF; text-decoration: none; } .bu_header_white_price_text { color: #FFFFFF; font-size: 48pt; font-weight: bold; /*CR#67989/68868 AND TD#68809*/ width: 330px; } .bu_header_green_price_text { color: #429E31; font-size: 48pt; font-weight: bold; } .bu_text_align_top { vertical-align: text-top; } /* Horizontal centering of image: set left & right margins to 'auto' */ img.bu_HCenter { display: block; margin-left: auto; margin-right: auto; } #bu_page_description { position: relative; top: 0px; left: 0px; border: 0px solid brown; font-size: 20px; font-weight: bold; color: #000000; padding: 10px 0 10px 0; width: 600px; } #bu_style_container { position: relative; left: 0px; /*border : 1px solid pink; */ } #bu_style_module_header { position: absolute; top: 0px; width: 400px; /*border : 1px solid orange;*/ height: 500px; } #bu_style_module_image { position: relative; left: 0px; } #bu_style_module_blurb { position: relative; top: -106px; left: 106px; width: 300px; padding: 10px 10px 10px 10px; } #bu_style_module_selected_option_image { position: relative; padding: 10px 10px 10px 10px; top: 0px; /*border : 1px solid #ff0000;*/ } #bu_style_module_options_container { position: relative; left: 406px; top: 0px; border: px solid blue; height: 500px; width: 500px; } #bu_style_learn_more_blurb { font-size: 20px; font-weight: bold; color: #333333; padding: 10px 10px 10px 10px; width: 300px; } .bu_config_blocker_show { top: 0px; left: 0px; width: 965px; height: 880px; display: block; filter: alpha(opacity=3D50); -moz-opacity: .50; opacity: .30; background-color: #fff; z-index: 10px; } .bu_Price { font-family: Arial; font-size: 50px; } .module_title { font-size: 20px; font-weight: bold; color: #000000; padding: 10px 0px 20px 0px; } .option_display_show { border-bottom: 1px solid #EFEFEF; padding: 5px 0px 5px 0px; color: #333333; } .option_display_hide { display: none; } .option_display_disabled { color: #999999; } .option_hr { background-color: #EFEFEF; color: #EFEFEF; height: 1px; border: 0 none; } .shipping_delay_text { color: #000000; font-weight: bold; } .option_description { width: 220px; word-wrap: break-word; } .option_qty { width: 44px; } .bu_option_price_cell { color: #289F29; width: 77px; } .bu_option_selected_price_text { color: #000000; font-weight: bold; } .legend_category { color: #000000; font-weight: bold; background-color: #F0F0F0; height: 30px; text-align: left; border-top: 1px solid #EFEFEF; border-bottom: 1px solid #EFEFEF; } .bu_opt_selected { width: 27px !important; height: 20px; text-align: center; } *html .bu_opt_selected { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=3Dtr= ue, sizingMethod=3Dcrop, src=3D'http://i.dell.com/images/global/builder/= tick.png'); } html > body .bu_opt_selected { background: url('http://i.dell.com/images/global/builder/tick.png') no-= repeat center center; } html > body .bu_opt .bu_opt_selected { width: 100%; } .bu_opt { text-align: center; width: 124px; padding-left: 5px; color: #0066FF; /*position:relative;*/ } .bundle_button .bu_selected_button { color: #0066FF; } /* TABS */ #bu_tab_container { width: 965px; margin: 0 auto 0 auto; position: relative; text-align: center; border: 0px solid yellow; height: 70px; color: #fff; } *html #bu_tab_container { height: 70px; } .bu_individual_tab_hover { width: 193px; position: relative; text-align: center; float: left; height: 70px; background-image: url(http://i.dell.com/images/global/builder/tabs/bu_t= ab_1_hover_default.png); cursor: hand; } *html .bu_individual_tab_hover { height: 70px; background: none; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=3Dtr= ue, sizingMethod=3Dcrop, src=3D'http://i.dell.com/images/global/builder/= tabs/bu_tab_1_hover_default.png'); } .bu_individual_tab_unhover { width: 193px; position: relative; text-align: center; float: left; height: 70px; background-image: url(http://i.dell.com/images/global/builder/tabs/bu_t= ab_1_background_default.png); cursor: default; } *html .bu_individual_tab_unhover { height: 70px; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=3Dtr= ue, sizingMethod=3Dcrop, src=3D'http://i.dell.com/images/global/builder/= tabs/bu_tab_1_background_default.png'); } .bu_individual_tab_click { width: 193px; position: relative; text-align: center; float: left; height: 70px; background-image: url(http://i.dell.com/images/global/builder/tabs/bu_t= ab_1_selected_default.png); cursor: default; } *html .bu_individual_tab_click { height: 70px; background: none; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=3Dtr= ue, sizingMethod=3Dcrop, src=3D'http://i.dell.com/images/global/builder/= tabs/bu_tab_1_selected_default.png'); } .tab_number_table { width: 30px; padding: 0 0 0 0; } .tab_seperator { position: relative; text-align: center; float: left; height: 70px; width: 2px; } *html .tab_seperator { height: 134px; } #bu_tab_system_inactive_image { background-image: url(http://i.dell.com/images/global/builder/tabs/bu_t= ab_1_background_default.png); } #bu_tab_system_image { background-image: url(http://i.dell.com/images/global/builder/tabs/bu_t= ab_1_image.png); /*background-position:center; background-repeat:no-rep= eat;*/ } #bu_tab_style_inactive_image { background-image: url(http://i.dell.com/images/global/builder/tabs/bu_t= ab_1_background_default.png); } #bu_tab_style_image { background-image: url(http://i.dell.com/images/global/builder/tabs/bu_t= ab_2_image.png); background-position: center; background-repeat: no-repeat; } #bu_tab_service_inactive_image { background-image: url(http://i.dell.com/images/global/builder/tabs/bu_t= ab_1_background_default.png); } #bu_tab_service_image { background-image: url(http://i.dell.com/images/global/builder/tabs/bu_t= ab_3_image.png); background-position: center; background-repeat: no-repeat; } #bu_tab_entertainment_inactive_image { background-image: url(http://i.dell.com/images/global/builder/tabs/bu_t= ab_1_background_default.png); } #bu_tab_entertainment_image { background-image: url(http://i.dell.com/images/global/builder/tabs/bu_t= ab_4_image.png); background-position: center; background-repeat: no-repeat; } .bu_tab { width: 193px; position: relative; text-align: center; float: left; height: 70px; background-image: url(http://i.dell.com/images/global/builder/tabs/bu_t= ab_1_background_default.png); display: none; } *html .bu_tab { height: 70px; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=3Dtr= ue, sizingMethod=3Dcrop, src=3D'http://i.dell.com/images/global/builder/= tabs/bu_tab_1_background_default.png'); } .bu_tab_line { width: 1px; height: 60px; left: 0px; top: 6px; position: absolute; background-color: #EFEFEF; } *html .bu_tab_line { height: 60px; } .bu_tab_line_last { width: 1px; height: 60px; left: 193px; top: 6px; position: absolute; background-color: #EFEFEF; } *html .bu_tab_line_last { height: 60px; } .bu_tab_spacer { height: 10px; } *html .bu_tab_spacer { height: 10px; } #bu_tab_accessories_inactive_image { background-image: url(http://i.dell.com/images/global/builder/tabs/bu_t= ab_1_background_default.png); } #bu_tab_accessories_image { background-image: url(http://i.dell.com/images/global/builder/tabs/bu_t= ab_5_image.png); background-position: center; background-repeat: no-repeat; } .tab_content_table { border: none 0px; border-collapse: collapse; } .tab_description { color: #3399CC; font-weight: bold; font-family: Arial; font-size: 15px; text-align: left; height: 30px; vertical-align: top; padding-left: 5px; } .bu_tab_details { height: 60px; cursor: pointer; } *html .bu_tab_details { height: 60px; } /* TABS */ .module_list { width: 456px; background-color: #EAEAEA; padding: 0 0 0 0 px; border: 0px; position: relative; } .tbl_space { width: 8px; } .tbl_module_main_control { width: 456px; border: 0px; } .tbl_module_each_control { width: 432px; border-bottom: thick solid #dadada; border-bottom-width: 1px; padding: 0 0 0 0 px; margin: 0px; } .list tr { cursor: pointer; height: 50px; padding: 0 20px; position: relative; } ul.list table { position: relative; z-index: 10; } .tbl_module_description { height: 50px; vertical-align: middle; width: 87px; font-size: 12px; font-weight: bold; font-family: inherit; /*padding-left:8px;*/ color: #000000; white-space: pre-wrap; /* css-3 */ white-space: -moz-pre-wrap; /* Mozilla, since 1999 */ white-space: -pre-wrap; /* Opera 4-6 */ white-space: -o-pre-wrap; /* Opera 7 */ word-wrap: break-word; /* Internet Explorer 5.5+ */ max-width: 87px; overflow: hidden; } .tbl_edit { height: 50px; vertical-align: middle; width: 103px; text-align: left; left: 0px; } .tbl_tick { width: 25px; height: 50px; } .tbl_spacer { width: 8px; height: auto; } .tbl_tick_mark_div { height: 32px; padding: 0 0 0 0 px; margin: 0 6 0 -5 px; vertical-align: top; width: 25px; float: left; text-align: center; display: none; } *html .tbl_tick_mark_div { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=3Dtr= ue, sizingMethod=3Dcrop, src=3D'http://i.dell.com/images/global/builder/= bu_checkmark_button_default.png'); } html > body .tbl_tick_mark_div { background: url('http://i.dell.com/images/global/builder/bu_checkmark_b= utton_default.png'); } .tbl_option_description { height: 50px; width: 207px; padding: 0px; color: #3399cc; word-wrap: break-word; } .tbl_option_description_black { height: 50px; width: 207px; padding: 0px; color: #000000; word-wrap: break-word; } .option_description_div { width: 202px; padding: 0px; color: #3399cc; word-wrap: break-word; z-index: 101; } .border_div { border-bottom: thick solid #dadada; border-bottom-width: 1px; } .round { padding: 0 0 0 0 px; border: 0px; width: 434px; position: relative; } .module_cursor { cursor: pointer; } .round_white { padding: 0 0 0 0 px; border: 0px; width: 448px; position: relative; } .fly_out_option { position: absolute; left: 456px; width: 502px; display: none; padding: 0 0 0 0 px; padding-left: 7px; border-top: solid 1px #999999; border-left: solid 1px #999999; border-bottom: solid 1px #999999; border-right: solid 1px #999999; display: none; } .fly_out_wider { position: absolute; left: 433px; width: 24px; height: 49px; background-color: #FFFFFF; display: none; border-top: solid 1px #dadada; border-bottom: solid 1px #dadada; border-left: none; border-right: none; /*cursor: pointer;*/ /*TD#65927*/ cursor: default; z-index: 100; display: none; } #floating_price_div_container { top: 0px; left: 0px; height: 35px; width: 100%; position: fixed; display: none; z-index: 100; overflow: visible; } * html #floating_price_div_container { top: expression(0+((e=3Ddocument.documentElement.scrollTop)?e:document.= body.scrollTop)+'px'); left: expression(0+((e=3Ddocument.documentElement.scrollLeft)?e:documen= t.body.scrollLeft)+'px'); position: absolute; } body > div#floating_price_div_container { position: fixed; } #floating_price_div { background: url(http://i.dell.com/images/global/builder/floating_top_gr= ey.png); background-position: top; background-repeat: repeat-x; top: 0px; left: 0px; height: 35px; width: 100%; } * html #floating_price_div { background: none; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=3Dtr= ue, sizingMethod=3Dscale, src=3D'http://i.dell.com/images/global/builder= /floating_top_grey.png'); } #summary_sub_total_shading { position: absolute; color: #fff; font-size: 32px; text-align: left; height: 60px; top: 20px; background-color: #e7e7e7; } #summary_sub_total { font-family: Arial; font-weight: bold; } .bu_price_text { font-size: 12px; font-family: Arial, helvetica; color: #3D9A2D; padding: 0px; font-weight: 300; } .bu_price_value { font-size: 22px; font-family: Arial; background-color: #333333; color: #3D9A2D; padding: 0px; font-weight: bold; text-align: right; } .bu_floting_Text_table { cellpadding: 0; cellspacing: 0; padding: 0; background-color: #E7E7E7; } .bu_EST_text1 { font-size: 12px; font-family: Arial, helvetica; color: #000000; padding-top: 0px; padding-bottom: 0px; padding-left: 3px; text-align: left; float:left; left:32px; } .bu_EST_Value { font-size: 12px; font-family: Arial, helvetica; font-style:normal; font-weight:normal; color: #3399CC; padding-top: 0px; padding-bottom: 0px; padding-left: 3px; text-align: left; float:left; left:32px; } .bu_EST_text { font-size: 12px; font-family: Arial; color: #333333; padding: 0px; text-align: left; float:left; } .left_corner_summary { background: url(http://i.dell.com/images/global/builder/left_grey.png);= background-repeat: no-repeat; width: 22px; left: -22px; position: absolute; top: 48px; height: 24px; } *html .left_corner_summary { font-size: 7px; background: none; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=3Dtr= ue, sizingMethod=3Dcrop, src=3D'http://i.dell.com/images/global/builder/= left_grey.png'); } .right_corner_summary { background: url(http://i.dell.com/images/global/builder/right_grey.png)= ; background-repeat: no-repeat; width: 16px; right: -16px; position: absolute; top: 48px; height: 24px; } *html .right_corner_summary { font-size: 7px; background: none; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=3Dtr= ue, sizingMethod=3Dcrop, src=3D'http://i.dell.com/images/global/builder/= right_grey.png'); right: -16px; width: 21px; } .left_border_summary { background: url(http://i.dell.com/images/global/builder/left_border_sum= mary_grey.png); background-repeat: repeat-y; width: 22px; left: -22px; position: absolute; top: 0px; height: 80%; } *html .left_border_summary { left: -21px; font-size: 7px; background: none; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=3Dtr= ue, sizingMethod=3Dscale, src=3D'http://i.dell.com/images/global/builder= /left_border_summary_grey.png'); } .right_border_summary { background: url(http://i.dell.com/images/global/builder/right_border_su= mmary_grey.png); background-repeat: repeat-y; width: 16px; right: -16px; position: absolute; top: 0px; height: 80%; } *html .right_border_summary { font-size: 7px; background: none; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=3Dtr= ue, sizingMethod=3Dscale, src=3D'http://i.dell.com/images/global/builder= /right_border_summary_grey.png'); right: -16px; } .bottom_summary { background: url(http://i.dell.com/images/global/builder/line_grey.png);= background-repeat: repeat-x; left: 0px; width: 100%; position: absolute; top: 48px; height: 24px; } *html .bottom_summary { font-size: 7px; background: none; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=3Dtr= ue, sizingMethod=3Dscale, src=3D'http://i.dell.com/images/global/builder= /line_grey.png'); } #bu_error_message { position: absolute; width: 456px; height: 80px; overflow: auto; color: White; font-size: 15px; line-height: 15px; font-weight: bold; text-align: center; overflow-x: hidden; left: 11.7%; top: 20%; display: none; background-color: #333333; } *html #bu_error_message { position: absolute; left: 11.6%; } /*#left_corner_summary_error { background: url(http://localhost/hadellstore/secure/builder/images/l= eft.gif); background-repeat: no-repeat; = left:0px; bottom:0px; width: 11px; position: absolute; top:74px; } #right_corner_summary_error { background: url(http://localhost/hadellstore/secure/builder/images/r= ight.gif) ; background-repeat: no-repeat; right:0px; width:11px; position:absolute; top:74px; } */ .bu_floating_price_text { color: #FFFFFF; font-size: 20pt; font-weight: bold; } .bu_current_total_text { color: Gray; font-size: 12px; line-height: 12px; font-weight: bold; text-align: center; width: 135px; height: 25px; position: absolute; top: 5px; } #bu_back_full_summary { position: absolute; left: 155px; top: 5px; } *html *#bu_back_full_summary { width: 456px; /* margin-left:150px; margin-top:-13px;*/ } .bu_back_full_summary_text { color: #3399CC; font-size: 12px; line-height: 12px; font-weight: bold; text-align: left; } #bu_error_message_bluetext { width: 456px; color: Teal; font-size: 15px; line-height: 15px; font-weight: bold; text-align: left; } .bu_collaborative { margin: 0px; padding: 0px; /*top : 350px; position : relative; */ } /*.bu_collaborative ul { margin: 0px; padding: 1px; list-style-type: none; text-align: left; height: 115px; color : #65D2FD; font-weight : bold; = }*/ /*.bu_collaborative ul li = { float: left; = margin: 0px; padding: 1px 1px 1px 1px; width: 106px; display: block; = border : 2px solid black; = }*/ .bu_bundle { padding: 1px 1px 1px 1px; /*background-color : #cccccc;*/ } .bu_bundle { background-color: #ffffff; width: 106px; } .bundle_row { /*height : 60px;*/ } .bu_bundle_price_cell { color: #289F29; vertical-align: middle; } /*.bundle_button { height : 35px; }*/ .bu_selected_button { cursor: pointer; } .bu_collab_title { /*color : #cccccc;*/ font-weight: bold; } .bu_module_header_details { width: 500px; /*border : 1px solid red;*/ padding: 0px 0px 10px 0px; } .bu_Learn_More_Video td { /*padding : 12px 0px 20px 3px; */ border: 0px; height: 20px; } .bu_Learn_More_Video img { border: 0px; } .bu_module_header_image_td { /*width : 106px; */ } .bu_module_header { width: 500px; padding: 10px 0px 0px 0px; } #review_page_left { position: relative; left: -9px; width: 595px; top: 0px; } #review_page_right { position: absolute; left: 610px; width: 360px; top: 10px; margin-left: -4px !important; } .review_page_title { font-size: 20px; font-weight: bold; padding: 10px 10px 10px 5px; } #bu_review_main_div { top: 0px; } .bu_review_performance { background-color: #e4e4e4; /*padding : 10px 10px 10px 10px; width : 5= 70px; */ } .bu_review_performance table { align: center; } /*.bu_review_performance table tr td { padding : 10px 5px 10px 5px; }*/ .bu_performance_row { padding: 10px 5px 10px 5px; } .bu_performance_row_bold { font-weight: bold; vertical-align: top; } #bu_review_page_selections { position: relative; top: 0px; padding: 10px 0px 10px 10px; } #bu_review_also_included { position: relative; width: 965px; border: 0px; background: #e4e4e4; margin: 0px; } .bu_page_div_space { line-height: 7px; /*position: relative;*/ } #bu_review_also_included_outer { position: relative; width: 965px; padding: 0px; background: #dadada; float: left; margin-left: 0px; } .bu_review_individual_page_selections_div { border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px; margin: 0px; background: #ffffff; padding: 0px; } .bu_review_individual_page_selections_div_outer { padding-left: 8px; padding-bottom: 8px; padding-right: 8px; padding-top: 8px; background: #dadada; float: left; width: 100%; } .bu_page_selections_table tr td { /*border-bottom:thick solid #dadada ; border-bottom-width: 1px ;*/= } .bu_page_selections_table { width: 100%; } .bu_pop { background-color: #fff; z-index: 203; position: absolute; left: 100px; top: 100px; width: 800px; height: 600px; padding: 10px 10px 10px 10px; overflow: scroll; } .bu_cc_header_title { font-size: 20px; font-weight: bold; color: #000000; padding-top: 10px; padding-bottom: 10px; padding-left: 0px; vertical-align: top; } #bu_fast_track_blurb { color: #FFFFFF; } .bu_composite_module_title { font-weight: bold; padding: 20px 0px 10px 0px; width: 300px; } #bu_cc_header table td { vertical-align: top; } .bu_cc_selected_span_visible { margin-top: 5px; margin-bottom: 5px; margin-left: 5px; width: 200px; overflow: visible; } .bu_cc_selected_span_hidden { display: none; } .bu_option_display_hidden { display: none; /*padding: 5px;*/ } .bu_option_display_visible { display: block; /*border: 1px solid #b2b2b2; padding: 5px;*/ } .bu_opt_image { width: 40px; height: 40px; } .bu_image_modal_window { background-color: #fff; z-index: 303; position: absolute; left: 400px; top: 400px; width: 500px; height: 500px; border: 1px solid gray; } #bu_bottom_navigation { padding: 20px 0px 20px 0px; width: 965px; } #bu_bottom_right_navigation { float: right; width: 235px; } #bu_bottom_left_navigation { float: left; width: 170px; } .bu_bottom_right_navigation_position_div { right: -10px; position: absolute; } #bu_opt_image { position: relative; width: 45px; height: 46px; border: 0px solid red; } #opt_image_zoom { position: absolute; /*top : 68px; left : 68px! important;*/ top: 26px; left: 26px; } #bu_val-error-window { overflow-y: scroll !important; height: 74px; z-index: 200; padding-right: 1px; padding-bottom: 5px; text-indent: 5px; color: White; font-size: 10pt; font-family: Arial,Helvetica; font-weight: bold; width: 440px !important; } #bu_val-error-window_noScroll { height: 74px; z-index: 200; padding-right: 1px; padding-bottom: 5px; text-indent: 5px; color: White; font-size: 10pt; font-family: Arial,Helvetica; font-weight: bold; width: 440px !important; } .bu_option_upsell { color: #FF9933; font-weight: bold; } #bu_print_page_container { position: absolute; width: 780px; height: 600px; /*border : 1px solid red;*/ font-size: 10px; } .bu_print_individual_page_selections_main_div { border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px; margin: 0px; background: #ffffff; padding: 0px; } .bu_print_individual_page_selections_main_div_outer { padding-left: 8px; padding-bottom: 8px; padding-right: 8px; padding-top: 8px; background: #dadada; } .bu_print_individual_page_selections_div { padding: 5px; } .bu_print_individual_page_selections_div table tr td { } .bu_prnt_mod_desc { width: 150px; vertical-align: top; color: #808080; font-size: 11px; padding: 5px 0px 5px 0px; word-wrap: break-word; } .bu_prnt_opt_desc { width: 250px; vertical-align: top; color: #808080; font-size: 11px; padding: 5px 0px 5px 0px; word-wrap: break-word; } .bu_prnt_opt_desc_all { color: #808080; font-size: 11px; } .bu_prnt_opt_id { width: 75px; vertical-align: top; color: #808080; font-size: 11px; padding: 5px 0px 5px 0px; } .bu_prnt_sku_details { width: 75px; vertical-align: top; font-size: 11px; padding: 5px 0px 5px 0px; } .bu_print_sku_table { padding: 0px; border-spacing: 0px; color: #808080; font-size: 11px; } .bu_prnt_mod_id { width: 50px; vertical-align: top; color: #808080; font-size: 11px; padding: 5px 0px 5px 0px; } .bu_prnt_opt_qty { vertical-align: top; color: #808080; font-size: 11px; padding: 5px 0px 5px 0px; width: 25px; } .bu_print_row_separator { background-color: #808080; height: 1px; padding: 0px; } .bu_print_page_title { font-weight: bold; background-color: #eeeeee; padding: 7px 3px 7px 15px; font-size: 11px; } #print_popup_link { width: 100%; } .bu_print_date { font-size: 10px; color: #808080; } #bu_print_catalog { padding: 40px 0px 40px 0px; } #print_menu { float: right; } #print_datetime { float: left; } #bu_print_header { width: 100%; } .bu_print_family_name { padding: 10px 10px 10px 10px; background-color: #cccccc; } .bu_title { font-size: 20px; font-weight: bold; color: #000000; padding: 10px 0 10px 0; } .bu_ship_subtitle { background-color: #E1E1E1; padding: 5px 0px 5px 0px; font-weight: bold; } a.bu_ship_text_link { color: red; } a.bu_ship_text_link_for_premier { color: Black; } #bu_style_collab_filter { position: relative; left: 0px; } #collaborativelist { /*width : 400px;*/ } .bu_collab_bundle_image { height: 106px; } .bu_collab_bundle_desc { height: 50px; vertical-align: top; } .bu_collab_bundle_price { height: 25px; } .bu_collab_bundle_btn { height: 25px; } .debug_mode { color: #996633; } .bu_blue_font { color: #3399cc; } .bu_qty_text_box_set { border: 1px solid #000000; background-color: #F0F0F0; width: 35px; } .bu_para_marketingprice_config_option_from { text-decoration: line-through; color: #000000; } .bu_review_upsell { background-color: #E4E4E4; border-bottom: 0px none !important; padding: 0px !important; } .bu_review_upsell_right_side_review { background-color: #ffffff !important; } .bu_review_upsell_border { border: solid 1px #dadada; } .bu_review_upsell_border tr td { border-bottom: 0px !important; } .bu_review_upsell_border_round_div { background: #ffffff; border: 0px; left: 0px !important; margin: 0px; padding: 0px; } .bu_review_upsell_border_round_div_outer { padding-left: 8px; padding-bottom: 8px; padding-right: 8px; padding-top: 8px; background: #dadada; } .sale_price_from { color: #000000; } .bu_para_marketingprice_saleprice { color: #289F29; } .review_page_service_blurb { font-size: 8pt; color: #000000; } .bu_review_row_separator { background-color: #dadada; height: 1px; padding: 0px; } /* ////////////////////////////////////////////////// */ /* MODAL WINDOW STYLES ////////////////////////////// */ /* ////////////////////////////////////////////////// */ /* TOC 1. General 2. Type : Share Modal Window 3. Type : Page/Box Modal Window 4. Inner Modal Styles */ /* 1. General ----------------------------------------------------- */ html, body { margin: 0; padding: 0; } .modalWindow * { margin: 0; padding: 0; border: 0; vertical-align: baseline; background: transparent; font-family: Arial, Helvetica, sans-serif; } .modalOverlay { position: fixed; top: 0; left: 0; height: 100%; width: 100%; margin: 0; padding: 0; z-index: 9991; opacity: 0.5; } * html .modalOverlay { position: absolute; } .modalLoad { position: absolute; top: 40%; left: 48%; z-index: 99999; visibility: hidden; background: url('http://i.dell.com/images/global/builder/ajax-loader[1]= .gif') no-repeat; width: 32px; height: 32px; } .modalLoadSmall { position: absolute; top: 40%; left: 48%; z-index: 99999; visibility: hidden; background: url('http://i.dell.com/images/global/builder/ajax-loader[1]= .gif') no-repeat; width: 17px; height: 17px; } .modalFrame { background-color: white; border: 0; overflow: scroll !important; } .modalTopArrow { background: url('http://i.dell.com/images/global/builder/modal_top_arro= w.gif') no-repeat; z-index: 99994; position: absolute; width: 14px; height: 8px; visibility: hidden; } .modalBottomArrow { background: url('http://i.dell.com/images/global/builder/modal_bot_arro= w.gif') no-repeat; z-index: 99994; position: absolute; width: 14px; height: 8px; visibility: hidden; } a.modalCarouselLeftArrow { position: absolute; top: 45%; left: 0px; width: 33px; height: 34px; background: url('http://i.dell.com/images/global/builder/carousel_arrow= _left.png') no-repeat; display: block; visibility: hidden; } a.modalCarouselRightArrow { position: absolute; top: 45%; right: 0px; width: 33px; height: 34px; background: url('http://i.dell.com/images/global/builder/carousel_arrow= _right.png') no-repeat; display: block; visibility: hidden; } .modalTL { height: 0px; display: none; } .modalTC { height: 0px; display: none; } .modalTR { height: 0px; display: none; } .modalBody { overflow: visible; clear: both; } .modalContentContainer { float: left; background-color: White; position: relative; } .modalContent { visibility: hidden; overflow: hidden; } .modalBodyL { position: absolute; left: 0; width: 0px; overflow: hidden; } .modalBodyR { position: absolute; right: 0; width: 0px; overflow: hidden; } .modalBL { height: 0px; display: none; } .modalBC { height: 0px; display: none; } .modalBR { height: 0px; display: none; } /* 2. Type : Share Modal Window ----------------------------------------------------- */ .modalWindow { position: absolute; border: 0; margin: 0; padding: 0; padding-left: 10px; padding-right: 10px; padding-bottom: 10px; text-align: left; z-index: 9992; background-color: #292929; border: 1px black solid; visibility: hidden; overflow: visible; } * html .modalWindow { position: absolute; } .modalWindow .modalContent { border: 1px #cccccc solid; background-color: #ffffff; } .modalWindow .modalTitle { font-size: 14px; padding-top: .3em; color: white; font-weight: bold; height: 25px; line-height: 1.25em; text-align: left; vertical-align: middle; display: block; } .modalWindow .modalTop { color: white; height: 25px; text-align: left; vertical-align: middle; } .modalWindow .modalTopR { margin-top: 1px; margin-bottom: 3px; float: right; width: 20px; height: 21px; text-align: right; background: url('http://i.dell.com/images/global/builder/modal_div_2x1.= gif') repeat-y; display: inline; } .modalWindow .closeWindow { float: right; background-image: url('http://i.dell.com/images/global/builder/x_close.= gif'); background-repeat: no-repeat; background-position: right; width: 8px; height: 25px; cursor: pointer; z-index: 9993; display: inline; } /* 3. Type : Page/Box Modal Window ----------------------------------------------------- */ .modalWindowView { /*width:830px;*/ overflow: visible; position: absolute; z-index: 9992; visibility: hidden; } .modalWindowView .modalCeil { width: 380px; height: 48px; position: relative; } .modalWindowView .modalCeil .modalTL { float: left; width: 40px; height: 48px; display: block; background: url('http://i.dell.com/images/global/builder/modal_containe= r_topL.gif') no-repeat !important; background: url('http://i.dell.com/images/global/builder/modal_containe= r_topL.gif') top left no-repeat; } .modalWindowView .modalCeil .modalTC { float: left; width: 300px; height: 48px; display: block; background: url('http://i.dell.com/images/global/builder/modal_containe= r_top.png') repeat-x !important; background: url('http://i.dell.com/images/global/builder/modal_containe= r_top.gif') top repeat-x; } .modalWindowView .modalCeil .modalTR { float: right; width: 40px; height: 48px; display: block; background: url('http://i.dell.com/images/global/builder/modal_containe= r_topR.png') no-repeat !important; background: url('http://i.dell.com/images/global/builder/modal_containe= r_topR.gif') top right no-repeat; } .modalWindowView .closeWindow { position: absolute; z-index: 9993; top: 12px; right: 12px; display: block; cursor: pointer; width: 36px; height: 35px; background: url('http://i.dell.com/images/global/builder/close_modal_fu= ll.png') no-repeat 0 0 !important; background: none; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=3Dtr= ue, sizingMethod=3Dcrop, src=3D'http://i.dell.com/images/global/builder/= close_modal_full.png'); } .modalWindowView .closeWindow:hover { background: url('http://i.dell.com/images/global/builder/close_modal_fu= ll.png') no-repeat 0 -36px !important; background: none; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=3Dtr= ue, sizingMethod=3Dcrop, src=3D'http://i.dell.com/images/global/builder/= close_modal_full.png'); } .modalWindowView .modalTitle { display: none; } .modalWindowView .modalTopArrow { display: none; } .modalWindowView .modalBody { float: left; min-height: 100px; width: 380px; overflow: visible; position: relative; background: url('http://i.dell.com/images/global/builder/modal_containe= r_bodyL.png') top left repeat-y !important; background: url('http://i.dell.com/images/global/builder/modal_containe= r_bodyL.gif') top left repeat-y; } .modalWindowView .modalBodyInner { float: left; height: 100%; width: 100%; min-height: 100px; overflow: visible; background: url('http://i.dell.com/images/global/builder/modal_containe= r_bodyR.png') top right repeat-y !important; background: url('http://i.dell.com/images/global/builder/modal_containe= r_bodyR.gif') top right repeat-y; } .modalWindowView .modalBody .modalBodyL { width: 40px; min-height: 100px; overflow: visible; } .modalWindowView .modalBody .modalBodyR { width: 40px; min-height: 100px; overflow: visible; } .modalWindowView .modalContentContainer { margin: 0 0 0 40px; *-margin:00020px; } .modalWindowView .modalContent { background-color: #fff; border: none; min-height: 100px; } .modalWindowView .modalFloor { clear: both; width: 380px; height: 48px; } .modalWindowView .modalFloor .modalBL { float: left; width: 40px; height: 48px; display: block; background: url('http://i.dell.com/images/global/builder/modal_containe= r_bottomL.png') no-repeat !important; background: url('http://i.dell.com/images/global/builder/modal_containe= r_bottomL.gif') top left no-repeat; } .modalWindowView .modalFloor .modalBC { float: left; width: 300px; height: 48px; display: block; background: url('http://i.dell.com/images/global/builder/modal_containe= r_bottom.png') repeat-x !important; background: url('http://i.dell.com/images/global/builder/modal_containe= r_bottom.gif') top repeat-x; } .modalWindowView .modalFloor .modalBR { float: right; width: 40px; height: 48px; display: block; background: url('http://i.dell.com/images/global/builder/modal_containe= r_bottomR.png') no-repeat !important; background: url('http://i.dell.com/images/global/builder/modal_containe= r_bottomR.gif') top right no-repeat; } /*=3D=3D Container Fix for loaded content =3D=3D*/ .modalWindowView #primaryContent.modalPage, #primaryContent.modalPage { background: #FFFFFF none repeat scroll 0 0; width: 100%; padding: 0; } /*=3D=3D Container Fix for loaded content =3D=3D*/ .modalWindowView #primaryContent.modalPage .container { margin: 0; } /*=3D=3D Container Fix for loaded content =3D=3D*/ .modalWindowView #primaryContent.modalPage .container .i { padding: 0; } /*=3D=3D Container Fix for loaded content =3D=3D*/ .modalWindowView #primaryContent.modalPage .container .t { height: 0px; display: none; } /* 4. Inner Modal Styles ----------------------------------------------------- */ #bookmarksShort ul, #bookmarksFull ul { width: 32%; float: left; margin-top: 5px; padding: 0; } #bookmarksShort li, #bookmarksFull li { margin: 5px; padding: 0px; list-style: none; list-style-position: outside; } #bookmarksShort a, #bookmarksFull a { font-size: 1.2em; } #modalError { font-size: 1.2em; font-weight: bold; margin: 0 auto; padding: 2em; text-align: center; } .modalDivPopupHide { display: none; } .modalDivPopup { height: 800px; overflow: scroll; } .bu_modalpop { position: absolute; background-color: #fff; width: 800px; height: 600px; overflow: scroll; } .bu_error-shading { top: 68px !important; } .bu_error-border-shading { height: 85%; } #bu_val-error-shading { position: absolute; width: 424px; height: 80px; left: 17%; top: 20px; display: none; background-color: #333333; z-index: 200; } #bu_val-error-window { overflow-y: scroll !important; height: 74px; position: absolute; color: White; font-size: 15px; line-height: 15px; font-weight: bold; text-align: center; overflow-x: hidden; display: none; width: 440px !important; } *html #bu_error_message { position: absolute; left: 11.6%; } .bu_val-error-title { width: 456px; color: White; font-size: 15px; line-height: 15px; /*font-weight:bold; */ text-align: left; } .bu_val_error_title { width: 456px; color: White; font-size: 12px; line-height: 15px; font-weight: bold; text-align: left; text-align: left; } .bu_val-text { width: 456px; color: Teal; font-size: 15px; line-height: 15px; font-weight: bold; text-align: left; } .bublePopup { position: absolute; /*left:400px !important;*/ /*right:0px;*/ /*margin-= top: -35px; */ z-index: 9999; overflow: hidden; width: 50%; } .bublePopup table { border-collapse: collapse; padding: 0px 0px 0px 0px; margin: 0px 0px 0px 0px; } .leftbublePopup { background-image: url(http://i.dell.com/images/global/builder/left_bg_p= rice_follow.png); background-repeat: no-repeat; width: 6px; height: 57px; } .middlebublePopup { background-image: url(http://i.dell.com/images/global/builder/bg_price_= follow.png); background-repeat: repeat-x; font-weight: bold; } .rightbublePopup { background-image: url(http://i.dell.com/images/global/builder/right_bg_= price_follow.png); background-repeat: no-repeat; width: 8px; height: 57px; } .bu_opt_center_aligned { width: auto; text-align: center; margin: 0px auto; } .option_description_modal { width: 220px; } .option_description_modal_upsell { background-color: #FFEDD9; padding: 7px 0 7px 0 !important; } .bu_opt_center_aligned_tr { margin: 0px auto; } .flyout_continue_edit { height: 20px; float: right; padding-bottom: 20px; padding-top: 20px; } .moduleItemBorders { border-top: 1px solid #808080; border-bottom: 1px solid #808080; } .bu_header_light_black_text { color: #333333; font-weight: bold; } .bu_light_black_text { color: #333333; } #bu_header_estimated_ship_date_link { font-size: 12px; } .bu_header_royal_blue_text { color: #3399CC; font-size: 12px; font-weight: bold; } a.bu_header_royal_blue_text { text-decoration: none; } a.bu_header_royal_blue_text hover { text-decoration: underline; } .bu_header_dark_grey_text { color: #666666; font-size: 12px; font-weight: bold; } a.bu_header_dark_grey_text { color: #666666; text-decoration: none; font-weight: bold; } a.bu_header_dark_grey_text hover { text-decoration: none; font-weight: bold; } #pricing_control_center div { color: #333333 !important; } #bu_header_MDA_TagLine { color: #000000; /*CR#67989/68868 AND TD#68809*/ /*width: 445px; bottom= : 0px; left: 525px; margin: 15px 0 5px 0; position: absolute;*/ text-align: right; font-weight: bold; font-size: 10pt; padding-top: 14px; padding-bottom: 14px; } .mod_curved_top { display: none; position: absolute; top: 0px; margin-left: 1px; z-index: 0; } .mod_curved_middle { display: none; border-left: 1px solid #808080; position: absolute; height: 70%; top: 12px; margin-left: 1px; } .mod_curved_bottom { display: none; position: absolute; bottom: 0.05em; margin-left: 1px; } .cirrus_opt_prefix { padding-left: 30px !important; } .cirrus_image { } .cirrus_text { padding-left: 5px; } .cirrus_learn_more { padding-left: 5px; } .bu_cirrus_span { color: #ff9933; margin-top: 5px; margin-bottom: 5px; margin-left: -2px; width: 200px; overflow: visible; } .bu_cirrus_upsell { background-color: #E4E4E4; border-bottom: 0px none !important; padding: 0px !important; } .sc_cirrus_selected_span { font-weight: bold; margin-top: 5px; margin-bottom: 5px; width: 100%; overflow: visible; } .cirrus_icon_vw_image { } .cirrus_icon_vw_text { padding-left: 5px; } .tbl_module_description tbl_border { font-weight: bold; } .equote_option_changed_to { background-color: #ffffc9; border: solid 1px gray; overflow: visible; vertical-align: top; line-height: 14px; margin-right: 1px; margin-bottom: 2px; height: auto; } /*TD#68809*/ .bu_ft_light_black_text { color: #333333; /*overflow-Y: auto;*/ word-wrap: break-word; padding: 0px; width: 250px !important; } .bu_promo_header_royal_blue_text { color: #3399CC; font-size: 12px; font-weight: bold; /*overflow-Y: auto;*/ word-wrap: break-word; width: 250px !important; } /*CR#67989/68868 */ #bu_header_Pricing { position: relative; right: 0px; text-align: right; width: 330px; vertical-align: top; } .bu_ft_top { vertical-align: top; } .bu_header_image_column { vertical-align: top; width: 300px; } .bu_header_center_column { vertical-align: top; width: 300px; } .bu_image_table { /*table-layout :fixed;*/ } /*TD#70180*/ .mod_upsell_Link_cur { cursor: pointer; } /*TD#70314*/ .show_link { visibility: visible; display: block; } .hide_link { visibility: hidden; display: none; } .show_Tiedlink { visibility: visible; display: block; } .pricing_retail_desc_premier { font-size: 11px; font-family: Arial; padding-left: 10px; padding-right: 10px; } /*TD 71808 */ .cirrus_review_page_border { /*border: 2px solid #A9A9A9; */ } .cirrus_review_page_header { font-family: Arial; font-size: 12px; font-weight: bold; } .gmap_review_page_header { font-family: Arial; font-size: 12px; font-weight: bold; } .gmap_review_page_blurb { font-family: Arial; font-size: 10px; font-weight: normal; } .bu_cirrus_outer { margin-left: -2px; } .bu_option_upsell_cirrus { color: #FF9933; } /*classic view for cirrus - Review page*/ .cirrus_text_round_div_review { color: #ff9933; background: #ffffff; border: 0px; left: 0px !important; margin: 0px; padding: 0px; width: 400px; } .bu_review_cirrus_round_div_outer { padding-left: 6px; padding-bottom: 6px; padding-right: 6px; padding-top: 6px; background: #dadada; width: 400px; } /*icon and list view for cirrus - Review page*/ .cirrus_text_round_div_review_icon { color: #ff9933; background: #ffffff; border: 0px; left: 0px !important; margin: 0px; padding: 0px; width: 400px; } .bu_review_cirrus_round_div_outer_icon { padding-left: 6px; padding-bottom: 6px; padding-right: 6px; padding-top: 6px; background: #dadada; width: 400px; } .cirrus_inner { padding: 3px; } /*icon view for cirrus to show in the option page*/ .cirrus_text_round_div_review_iconOption { color: #ff9933; background: #ffffff; border: 0px; left: 0px !important; margin: 0px; padding: 0px; width: 300px; overflow: hidden; } .bu_review_cirrus_round_div_outer_iconOption { padding-left: 6px; padding-bottom: 6px; padding-right: 6px; padding-top: 6px; background: #dadada; width: 300px; overflow: hidden; } .bu_option_border_round_div { background: #ffffff; border: 0px; left: 0px !important; margin: 0px; padding-left: 4px; padding-bottom: 0px; padding-right: 0px; padding-top: 0px; } .bu_option_border_round_div_outer { padding-left: 8px; padding-bottom: 8px; padding-right: 8px; padding-top: 8px; background: #dadada; } .bu_spacer_fly { background-color: #9e9e9e; width: 2px; height: 42px; } /* --- Start AWR ------*/ #awr_header_dell_logo { /*filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src=3D'http= ://i.dell.com/images/global/builder/bu_cp_dell_badge.png',sizingMethod=3D= 'scale');*/ left: 0px; top: 0px; width: 64px; height: 64px; cursor: pointer; border-width: 0px; } .awr_header_container { width: 965px; /*margin: 0 auto 10 auto;*/ position: relative; /* border: 1px solid blue; */ color: #fff !important; background-color: #E4E4E4; } .awr_header_container_table { width: 965px; } #awr_header_title { top: 5px; left: 75px; width: 421px; color: #333333; font-size: 22px; font-weight: bold; text-align: left; /* border : 1px solid green; */ } #awr_header_toolbar { right: 0px; height: 35px; width: 480px; text-align: right; } /*#bawr_page_container { width: 965px; margin: 0 auto 0 auto; position: relative; text-align: left; border: 0px solid green; color: #eaeaea; background-color : #eaeaea; height: auto; overflow: visible; top: 0px; }*/ #awr_page_container { position: relative; text-align: left; width: 965px; } .awr_border_div { border-bottom: thick solid #dadada; /*border-bottom-width: 1px;*/ } #awr_page_description { position: relative; top: 0px; left: 0px; border: 0px solid brown; font-size: 20px; font-weight: bold; color: #000000; padding: 10px 0 10px 0; /*width: 600px;*/ } .awr_module_list { width: 334px; background-color: #EAEAEA; padding: 0 0 0 0 px; border: 0px; position: relative; } .awr_tbl_module_main_control { width: 334px; border: 0px; } .awr_tbl_module_each_control { width: 310px; border-bottom: thick solid #dadada; = border-bottom-width: 1px; padding: 0 0 0 0 px; margin: 0px; } .awr_mod_curved_frame { position: absolute; top: -1px; margin-left: -1px; } .awr_mod_curved_top { position: absolute; top: 0px; margin-left: 1px; } .awr_mod_curved_middle { border-left: 1px solid #f5f5f5; position: absolute; top: 12px; margin-left: 1px; /*display: block; height: 31px;*/ } .awr_mod_curved_bottom { position: absolute; bottom: 0.05em; margin-left: 1px; } .awr_category { top: 0px; padding: 0 0px 0 0px; border: 0px; width: 315px; position: relative; cursor: default; } .awr_tbl_category_description { height: 50px; vertical-align: middle; text-align: center; /* width: 125px;*/ width : 300px; max-width: 300px; font-size: 22px; font-weight: bold; font-family: inherit; /*padding-left:8px;*/ color: #000000; white-space: pre-wrap; /* css-3 */ white-space: -moz-pre-wrap; /* Mozilla, since 1999 */ white-space: -pre-wrap; /* Opera 4-6 */ white-space: -o-pre-wrap; /* Opera 7 */ word-wrap: break-word; /* Internet Explorer 5.5+ */ /*max-width: 125px;= */ overflow: hidden; = border-bottom: thick solid #dadada; border-bottom-width: 1px; } .awr_tbl_category_description tbl_border { font-weight: bold; } .awr_tbl_likesystem_description { height: 50px; vertical-align: middle; width: 100px; font-size: 12px; font-weight: bold; font-family: inherit; /*padding-left:8px;*/ color: #000000; white-space: pre-wrap; /* css-3 */ white-space: -moz-pre-wrap; /* Mozilla, since 1999 */ white-space: -pre-wrap; /* Opera 4-6 */ white-space: -o-pre-wrap; /* Opera 7 */ word-wrap: break-word; /* Internet Explorer 5.5+ */ max-width: 100px; overflow: hidden; } .awr_tbl_likesystem_description tbl_border { font-weight: bold; } .awr_tbl_module_description { height: 50px; vertical-align: middle; width: 95px; /*font-size: 12px; font-weight: bold; font-family: inher= it; /*padding-left:8px;*/ /*color: #000000;*/ white-space: pre-wrap; /* css-3 */ white-space: -moz-pre-wrap; /* Mozilla, since 1999 */ white-space: -pre-wrap; /* Opera 4-6 */ white-space: -o-pre-wrap; /* Opera 7 */ word-wrap: break-word; /* Internet Explorer 5.5+ */ max-width: 95px; overflow: hidden; } .awr_tbl_module_description tbl_border { /*font-weight: bold;*/ } .awrmoduleItemBorders { border-top: 0px solid #808080; border-bottom: 0px solid #808080; } .awr_group_description_div { padding: 0px; color: #3399cc; word-wrap: break-word; font-weight: normal; } .awr_tbl_spacer { width: 8px; height: auto; } .awr_tbl_tick { width: 25px; height: 50px; } .awr_tbl_tick_mark_div { height: 32px; padding: 0 0 0 0 px; margin: 0 6 0 -5 px; vertical-align: top; width: 25px; float: left; text-align: center; display: none; } .awr_tbl_edit { height: 50px; vertical-align: middle; width: 75px; text-align: left; left: 0px; } .awr_tbl_option_description { height: 50px; width: 207px; padding: 0px; color: #3399cc; word-wrap: break-word; } .awr_tbl_image { left: 0px; top: 0px; width: 0px; } .awr_round_white { top: 0px; padding: 0 0px 0 0px; border: 0px; width: 315px; position: relative; cursor: pointer; } .awr_round_white_inactive { top: 0px; padding: 0 0px 0 0px; border: 0px; width: 315px; position: relative; cursor: default; } .awr_round_white_cart { top: 0px; padding: 0 0px 0 0px; border: 0px; width: 315px; position: relative; cursor : default; } .awr_round { top: 0px; padding: 0 0px 0 0px px; border: 0px; width: 315px; position: relative; cursor: pointer; background-color: #eaeaea; } .awr_hide_roundcorner { position: absolute; background-color: #eaeaea; display: none; cursor: default; left: 308px !important; width: 20px !important; height: 50px; z-index: 1; } .awr_hide_roundcorner_edited { position: absolute; /*background-color: #f9f9f9;*/ background-color: #ffffff; cursor: default; display: block; cursor: default; left: 308px !important; width: 30px !important; border-top: solid 1px #808080; border-bottom: solid 1px #808080; height: 50px; z-index: 5; } .awr_selected_round { cursor: default; background-color: #f8f8f8; padding: 0 0px 0 0 px; border: 0px; width: 310px; } .awr_tbl_space { width: 8px; } .awr_body { width: 600px; } /* commented on 9March2011 without border .awr_frame_with_position { = position: relative; visibility: visible; left: -2px !important; width: 690px; position: relative; top: 0px !important; border-top: solid 1px #999999; border-left: solid 1px #999999; border-bottom: solid 1px #999999; border-right: solid 1px #999999; z-index: 0; background: #f8f8f8;*/ /*display : block ; }*/ .awr_frame_with_position { = position: relative; visibility: visible; left: -2px !important; width: 690px; position: relative; top: 0px !important; border-top: solid 0px #999999; border-left: solid 0px #999999; border-bottom: solid 0px #999999; border-right: solid 0px #999999; z-index: 0; background: #f8f8f8; /*display : block ;*/ } .awr_fly_out_position { position: absolute; background-color: #f8f8f8; display: none; border-top: 1px solid #808080; border-bottom: 1px solid #808080; border-left: none; border-right: none; cursor: default; = width: 29px !important; left: 320px; z-index: 2; } /*AWR Right hand side CSS*/ #apos_list_div { position: relative; overflow: auto; padding: 0px 0px 0px 0px; margin: 0px 0px 0px 0px; border: 0px; } .apos_list_table { border-collapse: collapse; padding: 0px 0px 0px 0px; margin: 10px 0px 0px 0px; border: 0px; width: 680px; } .apos_Main_Title { valign: top; line-break: strict; word-break: keep-all; } .awr_fly_out_wider_column { background-color: #dadada; border-top: solid 1px #808080; border-bottom: solid 1px #808080; width: 150px; } .awr_pagelevel_addtocart { text-align: right; } .awr_product_title { font-size: 20px; font-weight: bold; color: #000000; padding: 5px 0px 0px 10px; vertical-align: top; } .awr_header { border: 1px solid #E7E7E7; width: 450px; margin-left: 110px; } .awr_para_intropara { margin-left: 50px; font-weight: bold; } .awr_para_intropara_pricing { color: #666666; font-weight: bold; } .awr_service_tags { font-family: Arial; font-size: 8pt !important; color: #666666; overflow: auto; height: 100px; } .awr_service_tag_title { font-family: Arial; font-size: 8pt !important; color: #666666; } #awr_pricing_control_center { color: #333333 !important; margin-left: 0px !important; vertical-align: top; padding: 0px; } .awr_print_summary_link { margin-left: 0px !important; } .each_like_system { margin-left: 0px; } .awr_controlLink { font-family: Arial; font-size: 10px; text-decoration: none; } .awr_Price { /*border-top : solid 1px #808080; border-right : solid 1px #808080;= border-left : solid 1px #808080;*/ padding: 3px; border: solid 1px #808080; background-color: #ffffff; } .awr_Print { border-bottom: solid 1px #808080; border-right: solid 1px #808080; border-left: solid 1px #808080; background-color: #f5f5f5; } .awr_tbl_tick_mark_div_show { height: 32px; padding: 0 0 0 0 px; margin: 0 6 0 -5 px; vertical-align: top; width: 25px; float: left; text-align: center; display: block; background: url('http://i.dell.com/images/global/builder/bu_checkmark_b= utton_default.png'); } *html .awr_tbl_tick_mark_div_show { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=3Dtr= ue, sizingMethod=3Dcrop, src=3D'http://i.dell.com/images/global/builder/= bu_checkmark_button_default.png'); } html > body .awr_tbl_tick_mark_div_show { background: url('http://i.dell.com/images/global/builder/bu_checkmark_b= utton_default.png'); } html .awr_fly_out_wider { height: 48px !important; } *html > .awr_fly_out_wider { height: 48px !important; } .awr_fly_out_wider { position: absolute; background-color: #f9f9f9; display: block; border-top: 1px solid #f9f9f9; border-bottom: 1px solid #f9f9f9; border-left: none; border-right: none; cursor: default; left: 312px !important; width: 33px !important; /*height: 50px !important;*/ z-index: 1000; } .awr_sc_review_action_cartadd { } .grey_hr { height: 0px; border: 1px solid Gray; background-color: Gray; } .black_hr { height: 0px; border: 1px solid black; background-color: black; } .awr_blow_top { position: absolute; left: 332px; top: 57px; width: 12px; } .awr_blow_bottom { position: absolute; left: 332px; top: 115px; } .awr_top_addtocart { width: 690px; } .awr_bottom_addtocart { } .awr_cart_confirm { display: none; /*visibility :hidden; */ } .awr_option_display_visible { display: table; border: 1px solid #b2b2b2; padding: 5px; background: #ffffff; } .awr_option_display_none { display: none; padding: 5px; } /* storm Modal popup AWR for POS*/ .awr_pos_autorenewal_confirm_title { font-weight: bold; font-size: 19px; } /* storm Modal popup AWR for POS*/ .awr_pos_autorenewal_confirm_Title { font-weight: bold; font-size: 19px; } .awr_pos_autorenewal_confirm_body { font-size: 12px; } .awr_addtocart_confirm_title { font-weight: bold; font-size: 19px; } .awr_addtocart_confirm_body { font-size: 12px; } .awr_tbl_module_category_control { width: 100%; } #awrm_div { display: none; } .awrclose_button { width:35px; height:35px; position: relative; = cursor :pointer; cursor :hand; background: url('http://i.dell.com/images/global/builder/close_modal_f= ull.png') no-repeat 0 0 !important; } .editmodalDivPopup { height: 125px; = } .awr_edit_confirm { display: none; /*visibility :hidden; */ } .awr_edit_modal_title { font-weight: bold; font-size: 19px; } .awr_edit_modal_body { font-size: 12px; } ------------KLmYUyxWijRzsm8UGCbJ8E Content-Disposition: inline; filename=jquery-1.2.2e.js Content-Type: application/x-javascript; charset=utf-8; name=jquery-1.2.2e.js Content-Location: http://i.dell.com/images/global/js/lib/jquery-1.2.2e.js Content-Transfer-Encoding: Base64 DQovKg0KICogalF1ZXJ5IDEuMi4yIC0gTmV3IFdhdmUgSmF2YXNjcmlwdA0KICoN CiAqIENvcHlyaWdodCAoYykgMjAwNyBKb2huIFJlc2lnIChqcXVlcnkuY29tKQ0K ICogRHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIChNSVQtTElDRU5TRS50eHQp DQogKiBhbmQgR1BMIChHUEwtTElDRU5TRS50eHQpIGxpY2Vuc2VzLg0KICoNCiAq ICREYXRlOiAyMDA4LTAxLTE0IDE3OjU2OjA3IC0wNTAwIChNb24sIDE0IEphbiAy MDA4KSAkDQogKiAkUmV2OiA0NDU0ICQNCiAqLw0KDQooZnVuY3Rpb24oKXtpZih3 aW5kb3cualF1ZXJ5KXZhciBfalF1ZXJ5PXdpbmRvdy5qUXVlcnk7dmFyIGpRdWVy eT13aW5kb3cualF1ZXJ5PWZ1bmN0aW9uKHNlbGVjdG9yLGNvbnRleHQpe3JldHVy biBuZXcgalF1ZXJ5LnByb3RvdHlwZS5pbml0KHNlbGVjdG9yLGNvbnRleHQpfTtp Zih3aW5kb3cuJCl2YXIgXyQ9d2luZG93LiQ7d2luZG93LiQ9alF1ZXJ5O3ZhciBx dWlja0V4cHI9L15bXjxdKig8KC58XHMpKz4pW14+XSokfF4jKFx3KykkLzt2YXIg aXNTaW1wbGU9L14uW146I1xbXC5dKiQvO2pRdWVyeS5mbj1qUXVlcnkucHJvdG90 eXBlPXtpbml0OmZ1bmN0aW9uKHNlbGVjdG9yLGNvbnRleHQpe3NlbGVjdG9yPXNl bGVjdG9yfHxkb2N1bWVudDtpZihzZWxlY3Rvci5ub2RlVHlwZSl7dGhpc1swXT1z ZWxlY3Rvcjt0aGlzLmxlbmd0aD0xO3JldHVybiB0aGlzfWVsc2UgaWYodHlwZW9m IHNlbGVjdG9yPT0ic3RyaW5nIil7dmFyIG1hdGNoPXF1aWNrRXhwci5leGVjKHNl bGVjdG9yKTtpZihtYXRjaCYmKG1hdGNoWzFdfHwhY29udGV4dCkpe2lmKG1hdGNo WzFdKXNlbGVjdG9yPWpRdWVyeS5jbGVhbihbbWF0Y2hbMV1dLGNvbnRleHQpO2Vs c2V7dmFyIGVsZW09ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQobWF0Y2hbM10pO2lm KGVsZW0paWYoZWxlbS5pZCE9bWF0Y2hbM10pcmV0dXJuIGpRdWVyeSgpLmZpbmQo c2VsZWN0b3IpO2Vsc2V7dGhpc1swXT1lbGVtO3RoaXMubGVuZ3RoPTE7cmV0dXJu IHRoaXN9ZWxzZSBzZWxlY3Rvcj1bXX19ZWxzZSByZXR1cm4gbmV3IGpRdWVyeShj b250ZXh0KS5maW5kKHNlbGVjdG9yKX1lbHNlIGlmKGpRdWVyeS5pc0Z1bmN0aW9u KHNlbGVjdG9yKSlyZXR1cm4gbmV3IGpRdWVyeShkb2N1bWVudClbalF1ZXJ5LmZu LnJlYWR5PyJyZWFkeSI6ImxvYWQiXShzZWxlY3Rvcik7cmV0dXJuIHRoaXMuc2V0 QXJyYXkoc2VsZWN0b3IuY29uc3RydWN0b3I9PUFycmF5JiZzZWxlY3Rvcnx8KHNl bGVjdG9yLmpxdWVyeXx8c2VsZWN0b3IubGVuZ3RoJiZzZWxlY3RvciE9d2luZG93 JiYhc2VsZWN0b3Iubm9kZVR5cGUmJnNlbGVjdG9yWzBdIT11bmRlZmluZWQmJnNl bGVjdG9yWzBdLm5vZGVUeXBlKSYmalF1ZXJ5Lm1ha2VBcnJheShzZWxlY3Rvcil8 fFtzZWxlY3Rvcl0pfSxqcXVlcnk6IjEuMi4yIixzaXplOmZ1bmN0aW9uKCl7cmV0 dXJuIHRoaXMubGVuZ3RofSxsZW5ndGg6MCxnZXQ6ZnVuY3Rpb24obnVtKXtyZXR1 cm4gbnVtPT11bmRlZmluZWQ/alF1ZXJ5Lm1ha2VBcnJheSh0aGlzKTp0aGlzW251 bV19LHB1c2hTdGFjazpmdW5jdGlvbihlbGVtcyl7dmFyIHJldD1qUXVlcnkoZWxl bXMpO3JldC5wcmV2T2JqZWN0PXRoaXM7cmV0dXJuIHJldH0sc2V0QXJyYXk6ZnVu Y3Rpb24oZWxlbXMpe3RoaXMubGVuZ3RoPTA7QXJyYXkucHJvdG90eXBlLnB1c2gu YXBwbHkodGhpcyxlbGVtcyk7cmV0dXJuIHRoaXN9LGVhY2g6ZnVuY3Rpb24oY2Fs bGJhY2ssYXJncyl7cmV0dXJuIGpRdWVyeS5lYWNoKHRoaXMsY2FsbGJhY2ssYXJn cyl9LGluZGV4OmZ1bmN0aW9uKGVsZW0pe3ZhciByZXQ9LTE7dGhpcy5lYWNoKGZ1 bmN0aW9uKGkpe2lmKHRoaXM9PWVsZW0pcmV0PWl9KTtyZXR1cm4gcmV0fSxhdHRy OmZ1bmN0aW9uKG5hbWUsdmFsdWUsdHlwZSl7dmFyIG9wdGlvbnM9bmFtZTtpZihu YW1lLmNvbnN0cnVjdG9yPT1TdHJpbmcpaWYodmFsdWU9PXVuZGVmaW5lZClyZXR1 cm4gdGhpcy5sZW5ndGgmJmpRdWVyeVt0eXBlfHwiYXR0ciJdKHRoaXNbMF0sbmFt ZSl8fHVuZGVmaW5lZDtlbHNle29wdGlvbnM9e307b3B0aW9uc1tuYW1lXT12YWx1 ZX1yZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGkpe2ZvcihuYW1lIGluIG9wdGlv bnMpalF1ZXJ5LmF0dHIodHlwZT90aGlzLnN0eWxlOnRoaXMsbmFtZSxqUXVlcnku cHJvcCh0aGlzLG9wdGlvbnNbbmFtZV0sdHlwZSxpLG5hbWUpKX0pfSxjc3M6ZnVu Y3Rpb24oa2V5LHZhbHVlKXtpZigoa2V5PT0nd2lkdGgnfHxrZXk9PSdoZWlnaHQn KSYmcGFyc2VGbG9hdCh2YWx1ZSk8MCl2YWx1ZT11bmRlZmluZWQ7cmV0dXJuIHRo aXMuYXR0cihrZXksdmFsdWUsImN1ckNTUyIpfSx0ZXh0OmZ1bmN0aW9uKHRleHQp e2lmKHR5cGVvZiB0ZXh0IT0ib2JqZWN0IiYmdGV4dCE9bnVsbClyZXR1cm4gdGhp cy5lbXB0eSgpLmFwcGVuZCgodGhpc1swXSYmdGhpc1swXS5vd25lckRvY3VtZW50 fHxkb2N1bWVudCkuY3JlYXRlVGV4dE5vZGUodGV4dCkpO3ZhciByZXQ9IiI7alF1 ZXJ5LmVhY2godGV4dHx8dGhpcyxmdW5jdGlvbigpe2pRdWVyeS5lYWNoKHRoaXMu Y2hpbGROb2RlcyxmdW5jdGlvbigpe2lmKHRoaXMubm9kZVR5cGUhPTgpcmV0Kz10 aGlzLm5vZGVUeXBlIT0xP3RoaXMubm9kZVZhbHVlOmpRdWVyeS5mbi50ZXh0KFt0 aGlzXSl9KX0pO3JldHVybiByZXR9LHdyYXBBbGw6ZnVuY3Rpb24oaHRtbCl7aWYo dGhpc1swXSlqUXVlcnkoaHRtbCx0aGlzWzBdLm93bmVyRG9jdW1lbnQpLmNsb25l KCkuaW5zZXJ0QmVmb3JlKHRoaXNbMF0pLm1hcChmdW5jdGlvbigpe3ZhciBlbGVt PXRoaXM7d2hpbGUoZWxlbS5maXJzdENoaWxkKWVsZW09ZWxlbS5maXJzdENoaWxk O3JldHVybiBlbGVtfSkuYXBwZW5kKHRoaXMpO3JldHVybiB0aGlzfSx3cmFwSW5u ZXI6ZnVuY3Rpb24oaHRtbCl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2pR dWVyeSh0aGlzKS5jb250ZW50cygpLndyYXBBbGwoaHRtbCl9KX0sd3JhcDpmdW5j dGlvbihodG1sKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7alF1ZXJ5KHRo aXMpLndyYXBBbGwoaHRtbCl9KX0sYXBwZW5kOmZ1bmN0aW9uKCl7cmV0dXJuIHRo aXMuZG9tTWFuaXAoYXJndW1lbnRzLHRydWUsZmFsc2UsZnVuY3Rpb24oZWxlbSl7 aWYodGhpcy5ub2RlVHlwZT09MSl0aGlzLmFwcGVuZENoaWxkKGVsZW0pfSl9LHBy ZXBlbmQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kb21NYW5pcChhcmd1bWVudHMs dHJ1ZSx0cnVlLGZ1bmN0aW9uKGVsZW0pe2lmKHRoaXMubm9kZVR5cGU9PTEpdGhp cy5pbnNlcnRCZWZvcmUoZWxlbSx0aGlzLmZpcnN0Q2hpbGQpfSl9LGJlZm9yZTpm dW5jdGlvbigpe3JldHVybiB0aGlzLmRvbU1hbmlwKGFyZ3VtZW50cyxmYWxzZSxm YWxzZSxmdW5jdGlvbihlbGVtKXt0aGlzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3Jl KGVsZW0sdGhpcyl9KX0sYWZ0ZXI6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kb21N YW5pcChhcmd1bWVudHMsZmFsc2UsdHJ1ZSxmdW5jdGlvbihlbGVtKXt0aGlzLnBh cmVudE5vZGUuaW5zZXJ0QmVmb3JlKGVsZW0sdGhpcy5uZXh0U2libGluZyl9KX0s ZW5kOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHJldk9iamVjdHx8alF1ZXJ5KFtd KX0sZmluZDpmdW5jdGlvbihzZWxlY3Rvcil7dmFyIGVsZW1zPWpRdWVyeS5tYXAo dGhpcyxmdW5jdGlvbihlbGVtKXtyZXR1cm4galF1ZXJ5LmZpbmQoc2VsZWN0b3Is ZWxlbSl9KTtyZXR1cm4gdGhpcy5wdXNoU3RhY2soL1teKz5dIFteKz5dLy50ZXN0 KHNlbGVjdG9yKXx8c2VsZWN0b3IuaW5kZXhPZigiLi4iKT4tMT9qUXVlcnkudW5p cXVlKGVsZW1zKTplbGVtcyl9LGNsb25lOmZ1bmN0aW9uKGV2ZW50cyl7dmFyIHJl dD10aGlzLm1hcChmdW5jdGlvbigpe2lmKGpRdWVyeS5icm93c2VyLm1zaWUmJiFq UXVlcnkuaXNYTUxEb2ModGhpcykpe3ZhciBjbG9uZT10aGlzLmNsb25lTm9kZSh0 cnVlKSxjb250YWluZXI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksY29u dGFpbmVyMj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtjb250YWluZXIu YXBwZW5kQ2hpbGQoY2xvbmUpO2NvbnRhaW5lcjIuaW5uZXJIVE1MPWNvbnRhaW5l ci5pbm5lckhUTUw7cmV0dXJuIGNvbnRhaW5lcjIuZmlyc3RDaGlsZH1lbHNlIHJl dHVybiB0aGlzLmNsb25lTm9kZSh0cnVlKX0pO3ZhciBjbG9uZT1yZXQuZmluZCgi KiIpLmFuZFNlbGYoKS5lYWNoKGZ1bmN0aW9uKCl7aWYodGhpc1tleHBhbmRvXSE9 dW5kZWZpbmVkKXRoaXNbZXhwYW5kb109bnVsbH0pO2lmKGV2ZW50cz09PXRydWUp dGhpcy5maW5kKCIqIikuYW5kU2VsZigpLmVhY2goZnVuY3Rpb24oaSl7aWYodGhp cy5ub2RlVHlwZT09MylyZXR1cm47dmFyIGV2ZW50cz1qUXVlcnkuZGF0YSh0aGlz LCJldmVudHMiKTtmb3IodmFyIHR5cGUgaW4gZXZlbnRzKWZvcih2YXIgaGFuZGxl ciBpbiBldmVudHNbdHlwZV0palF1ZXJ5LmV2ZW50LmFkZChjbG9uZVtpXSx0eXBl LGV2ZW50c1t0eXBlXVtoYW5kbGVyXSxldmVudHNbdHlwZV1baGFuZGxlcl0uZGF0 YSl9KTtyZXR1cm4gcmV0fSxmaWx0ZXI6ZnVuY3Rpb24oc2VsZWN0b3Ipe3JldHVy biB0aGlzLnB1c2hTdGFjayhqUXVlcnkuaXNGdW5jdGlvbihzZWxlY3RvcikmJmpR dWVyeS5ncmVwKHRoaXMsZnVuY3Rpb24oZWxlbSxpKXtyZXR1cm4gc2VsZWN0b3Iu Y2FsbChlbGVtLGkpfSl8fGpRdWVyeS5tdWx0aUZpbHRlcihzZWxlY3Rvcix0aGlz KSl9LG5vdDpmdW5jdGlvbihzZWxlY3Rvcil7aWYoc2VsZWN0b3IuY29uc3RydWN0 b3I9PVN0cmluZylpZihpc1NpbXBsZS50ZXN0KHNlbGVjdG9yKSlyZXR1cm4gdGhp cy5wdXNoU3RhY2soalF1ZXJ5Lm11bHRpRmlsdGVyKHNlbGVjdG9yLHRoaXMsdHJ1 ZSkpO2Vsc2Ugc2VsZWN0b3I9alF1ZXJ5Lm11bHRpRmlsdGVyKHNlbGVjdG9yLHRo aXMpO3ZhciBpc0FycmF5TGlrZT1zZWxlY3Rvci5sZW5ndGgmJnNlbGVjdG9yW3Nl bGVjdG9yLmxlbmd0aC0xXSE9PXVuZGVmaW5lZCYmIXNlbGVjdG9yLm5vZGVUeXBl O3JldHVybiB0aGlzLmZpbHRlcihmdW5jdGlvbigpe3JldHVybiBpc0FycmF5TGlr ZT9qUXVlcnkuaW5BcnJheSh0aGlzLHNlbGVjdG9yKTwwOnRoaXMhPXNlbGVjdG9y fSl9LGFkZDpmdW5jdGlvbihzZWxlY3Rvcil7cmV0dXJuIXNlbGVjdG9yP3RoaXM6 dGhpcy5wdXNoU3RhY2soalF1ZXJ5Lm1lcmdlKHRoaXMuZ2V0KCksc2VsZWN0b3Iu Y29uc3RydWN0b3I9PVN0cmluZz9qUXVlcnkoc2VsZWN0b3IpLmdldCgpOnNlbGVj dG9yLmxlbmd0aCE9dW5kZWZpbmVkJiYoIXNlbGVjdG9yLm5vZGVOYW1lfHxqUXVl cnkubm9kZU5hbWUoc2VsZWN0b3IsImZvcm0iKSk/c2VsZWN0b3I6W3NlbGVjdG9y XSkpfSxpczpmdW5jdGlvbihzZWxlY3Rvcil7cmV0dXJuIHNlbGVjdG9yP2pRdWVy eS5tdWx0aUZpbHRlcihzZWxlY3Rvcix0aGlzKS5sZW5ndGg+MDpmYWxzZX0saGFz Q2xhc3M6ZnVuY3Rpb24oc2VsZWN0b3Ipe3JldHVybiB0aGlzLmlzKCIuIitzZWxl Y3Rvcil9LHZhbDpmdW5jdGlvbih2YWx1ZSl7aWYodmFsdWU9PXVuZGVmaW5lZCl7 aWYodGhpcy5sZW5ndGgpe3ZhciBlbGVtPXRoaXNbMF07aWYoalF1ZXJ5Lm5vZGVO YW1lKGVsZW0sInNlbGVjdCIpKXt2YXIgaW5kZXg9ZWxlbS5zZWxlY3RlZEluZGV4 LHZhbHVlcz1bXSxvcHRpb25zPWVsZW0ub3B0aW9ucyxvbmU9ZWxlbS50eXBlPT0i c2VsZWN0LW9uZSI7aWYoaW5kZXg8MClyZXR1cm4gbnVsbDtmb3IodmFyIGk9b25l P2luZGV4OjAsbWF4PW9uZT9pbmRleCsxOm9wdGlvbnMubGVuZ3RoO2k8bWF4O2kr Kyl7dmFyIG9wdGlvbj1vcHRpb25zW2ldO2lmKG9wdGlvbi5zZWxlY3RlZCl7dmFs dWU9alF1ZXJ5LmJyb3dzZXIubXNpZSYmIW9wdGlvbi5hdHRyaWJ1dGVzLnZhbHVl LnNwZWNpZmllZD9vcHRpb24udGV4dDpvcHRpb24udmFsdWU7aWYob25lKXJldHVy biB2YWx1ZTt2YWx1ZXMucHVzaCh2YWx1ZSl9fXJldHVybiB2YWx1ZXN9ZWxzZSBy ZXR1cm4odGhpc1swXS52YWx1ZXx8IiIpLnJlcGxhY2UoL1xyL2csIiIpfXJldHVy biB1bmRlZmluZWR9cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2lmKHRoaXMu bm9kZVR5cGUhPTEpcmV0dXJuO2lmKHZhbHVlLmNvbnN0cnVjdG9yPT1BcnJheSYm L3JhZGlvfGNoZWNrYm94Ly50ZXN0KHRoaXMudHlwZSkpdGhpcy5jaGVja2VkPShq UXVlcnkuaW5BcnJheSh0aGlzLnZhbHVlLHZhbHVlKT49MHx8alF1ZXJ5LmluQXJy YXkodGhpcy5uYW1lLHZhbHVlKT49MCk7ZWxzZSBpZihqUXVlcnkubm9kZU5hbWUo dGhpcywic2VsZWN0Iikpe3ZhciB2YWx1ZXM9dmFsdWUuY29uc3RydWN0b3I9PUFy cmF5P3ZhbHVlOlt2YWx1ZV07alF1ZXJ5KCJvcHRpb24iLHRoaXMpLmVhY2goZnVu Y3Rpb24oKXt0aGlzLnNlbGVjdGVkPShqUXVlcnkuaW5BcnJheSh0aGlzLnZhbHVl LHZhbHVlcyk+PTB8fGpRdWVyeS5pbkFycmF5KHRoaXMudGV4dCx2YWx1ZXMpPj0w KX0pO2lmKCF2YWx1ZXMubGVuZ3RoKXRoaXMuc2VsZWN0ZWRJbmRleD0tMX1lbHNl IHRoaXMudmFsdWU9dmFsdWV9KX0saHRtbDpmdW5jdGlvbih2YWx1ZSl7cmV0dXJu IHZhbHVlPT11bmRlZmluZWQ/KHRoaXMubGVuZ3RoP3RoaXNbMF0uaW5uZXJIVE1M Om51bGwpOnRoaXMuZW1wdHkoKS5hcHBlbmQodmFsdWUpfSxyZXBsYWNlV2l0aDpm dW5jdGlvbih2YWx1ZSl7cmV0dXJuIHRoaXMuYWZ0ZXIodmFsdWUpLnJlbW92ZSgp fSxlcTpmdW5jdGlvbihpKXtyZXR1cm4gdGhpcy5zbGljZShpLGkrMSl9LHNsaWNl OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHVzaFN0YWNrKEFycmF5LnByb3RvdHlw ZS5zbGljZS5hcHBseSh0aGlzLGFyZ3VtZW50cykpfSxtYXA6ZnVuY3Rpb24oY2Fs bGJhY2spe3JldHVybiB0aGlzLnB1c2hTdGFjayhqUXVlcnkubWFwKHRoaXMsZnVu Y3Rpb24oZWxlbSxpKXtyZXR1cm4gY2FsbGJhY2suY2FsbChlbGVtLGksZWxlbSl9 KSl9LGFuZFNlbGY6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hZGQodGhpcy5wcmV2 T2JqZWN0KX0sZG9tTWFuaXA6ZnVuY3Rpb24oYXJncyx0YWJsZSxyZXZlcnNlLGNh bGxiYWNrKXt2YXIgY2xvbmU9dGhpcy5sZW5ndGg+MSxlbGVtcztyZXR1cm4gdGhp cy5lYWNoKGZ1bmN0aW9uKCl7aWYoIWVsZW1zKXtlbGVtcz1qUXVlcnkuY2xlYW4o YXJncyx0aGlzLm93bmVyRG9jdW1lbnQpO2lmKHJldmVyc2UpZWxlbXMucmV2ZXJz ZSgpfXZhciBvYmo9dGhpcztpZih0YWJsZSYmalF1ZXJ5Lm5vZGVOYW1lKHRoaXMs InRhYmxlIikmJmpRdWVyeS5ub2RlTmFtZShlbGVtc1swXSwidHIiKSlvYmo9dGhp cy5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGJvZHkiKVswXXx8dGhpcy5hcHBlbmRD aGlsZCh0aGlzLm93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGJvZHkiKSk7 dmFyIHNjcmlwdHM9alF1ZXJ5KFtdKTtqUXVlcnkuZWFjaChlbGVtcyxmdW5jdGlv bigpe3ZhciBlbGVtPWNsb25lP2pRdWVyeSh0aGlzKS5jbG9uZSh0cnVlKVswXTp0 aGlzO2lmKGpRdWVyeS5ub2RlTmFtZShlbGVtLCJzY3JpcHQiKSl7c2NyaXB0cz1z Y3JpcHRzLmFkZChlbGVtKX1lbHNle2lmKGVsZW0ubm9kZVR5cGU9PTEpc2NyaXB0 cz1zY3JpcHRzLmFkZChqUXVlcnkoInNjcmlwdCIsZWxlbSkucmVtb3ZlKCkpO2Nh bGxiYWNrLmNhbGwob2JqLGVsZW0pfX0pO3NjcmlwdHMuZWFjaChldmFsU2NyaXB0 KX0pfX07alF1ZXJ5LnByb3RvdHlwZS5pbml0LnByb3RvdHlwZT1qUXVlcnkucHJv dG90eXBlO2Z1bmN0aW9uIGV2YWxTY3JpcHQoaSxlbGVtKXtpZihlbGVtLnNyYylq UXVlcnkuYWpheCh7dXJsOmVsZW0uc3JjLGFzeW5jOmZhbHNlLGRhdGFUeXBlOiJz Y3JpcHQifSk7ZWxzZSBqUXVlcnkuZ2xvYmFsRXZhbChlbGVtLnRleHR8fGVsZW0u dGV4dENvbnRlbnR8fGVsZW0uaW5uZXJIVE1MfHwiIik7aWYoZWxlbS5wYXJlbnRO b2RlKWVsZW0ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChlbGVtKX1qUXVlcnkuZXh0 ZW5kPWpRdWVyeS5mbi5leHRlbmQ9ZnVuY3Rpb24oKXt2YXIgdGFyZ2V0PWFyZ3Vt ZW50c1swXXx8e30saT0xLGxlbmd0aD1hcmd1bWVudHMubGVuZ3RoLGRlZXA9ZmFs c2Usb3B0aW9ucztpZih0YXJnZXQuY29uc3RydWN0b3I9PUJvb2xlYW4pe2RlZXA9 dGFyZ2V0O3RhcmdldD1hcmd1bWVudHNbMV18fHt9O2k9Mn1pZih0eXBlb2YgdGFy Z2V0IT0ib2JqZWN0IiYmdHlwZW9mIHRhcmdldCE9ImZ1bmN0aW9uIil0YXJnZXQ9 e307aWYobGVuZ3RoPT0xKXt0YXJnZXQ9dGhpcztpPTB9Zm9yKDtpPGxlbmd0aDtp KyspaWYoKG9wdGlvbnM9YXJndW1lbnRzW2ldKSE9bnVsbClmb3IodmFyIG5hbWUg aW4gb3B0aW9ucyl7aWYodGFyZ2V0PT09b3B0aW9uc1tuYW1lXSljb250aW51ZTtp ZihkZWVwJiZvcHRpb25zW25hbWVdJiZ0eXBlb2Ygb3B0aW9uc1tuYW1lXT09Im9i amVjdCImJnRhcmdldFtuYW1lXSYmIW9wdGlvbnNbbmFtZV0ubm9kZVR5cGUpdGFy Z2V0W25hbWVdPWpRdWVyeS5leHRlbmQodGFyZ2V0W25hbWVdLG9wdGlvbnNbbmFt ZV0pO2Vsc2UgaWYob3B0aW9uc1tuYW1lXSE9dW5kZWZpbmVkKXRhcmdldFtuYW1l XT1vcHRpb25zW25hbWVdfXJldHVybiB0YXJnZXR9O3ZhciBleHBhbmRvPSJqUXVl cnkiKyhuZXcgRGF0ZSgpKS5nZXRUaW1lKCksdXVpZD0wLHdpbmRvd0RhdGE9e307 dmFyIGV4Y2x1ZGU9L3otP2luZGV4fGZvbnQtP3dlaWdodHxvcGFjaXR5fHpvb218 bGluZS0/aGVpZ2h0L2k7alF1ZXJ5LmV4dGVuZCh7bm9Db25mbGljdDpmdW5jdGlv bihkZWVwKXt3aW5kb3cuJD1fJDtpZihkZWVwKXdpbmRvdy5qUXVlcnk9X2pRdWVy eTtyZXR1cm4galF1ZXJ5fSxpc0Z1bmN0aW9uOmZ1bmN0aW9uKGZuKXtyZXR1cm4h IWZuJiZ0eXBlb2YgZm4hPSJzdHJpbmciJiYhZm4ubm9kZU5hbWUmJmZuLmNvbnN0 cnVjdG9yIT1BcnJheSYmL2Z1bmN0aW9uL2kudGVzdChmbisiIil9LGlzWE1MRG9j OmZ1bmN0aW9uKGVsZW0pe3JldHVybiBlbGVtLmRvY3VtZW50RWxlbWVudCYmIWVs ZW0uYm9keXx8ZWxlbS50YWdOYW1lJiZlbGVtLm93bmVyRG9jdW1lbnQmJiFlbGVt Lm93bmVyRG9jdW1lbnQuYm9keX0sZ2xvYmFsRXZhbDpmdW5jdGlvbihkYXRhKXtk YXRhPWpRdWVyeS50cmltKGRhdGEpO2lmKGRhdGEpe3ZhciBoZWFkPWRvY3VtZW50 LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJoZWFkIilbMF18fGRvY3VtZW50LmRvY3Vt ZW50RWxlbWVudCxzY3JpcHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0 Iik7c2NyaXB0LnR5cGU9InRleHQvamF2YXNjcmlwdCI7aWYoalF1ZXJ5LmJyb3dz ZXIubXNpZSlzY3JpcHQudGV4dD1kYXRhO2Vsc2Ugc2NyaXB0LmFwcGVuZENoaWxk KGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGRhdGEpKTtoZWFkLmFwcGVuZENoaWxk KHNjcmlwdCk7aGVhZC5yZW1vdmVDaGlsZChzY3JpcHQpfX0sbm9kZU5hbWU6ZnVu Y3Rpb24oZWxlbSxuYW1lKXtyZXR1cm4gZWxlbS5ub2RlTmFtZSYmZWxlbS5ub2Rl TmFtZS50b1VwcGVyQ2FzZSgpPT1uYW1lLnRvVXBwZXJDYXNlKCl9LGNhY2hlOnt9 LGRhdGE6ZnVuY3Rpb24oZWxlbSxuYW1lLGRhdGEpe2VsZW09ZWxlbT09d2luZG93 P3dpbmRvd0RhdGE6ZWxlbTt2YXIgaWQ9ZWxlbVtleHBhbmRvXTtpZighaWQpaWQ9 ZWxlbVtleHBhbmRvXT0rK3V1aWQ7aWYobmFtZSYmIWpRdWVyeS5jYWNoZVtpZF0p alF1ZXJ5LmNhY2hlW2lkXT17fTtpZihkYXRhIT11bmRlZmluZWQpalF1ZXJ5LmNh Y2hlW2lkXVtuYW1lXT1kYXRhO3JldHVybiBuYW1lP2pRdWVyeS5jYWNoZVtpZF1b bmFtZV06aWR9LHJlbW92ZURhdGE6ZnVuY3Rpb24oZWxlbSxuYW1lKXtlbGVtPWVs ZW09PXdpbmRvdz93aW5kb3dEYXRhOmVsZW07dmFyIGlkPWVsZW1bZXhwYW5kb107 aWYobmFtZSl7aWYoalF1ZXJ5LmNhY2hlW2lkXSl7ZGVsZXRlIGpRdWVyeS5jYWNo ZVtpZF1bbmFtZV07bmFtZT0iIjtmb3IobmFtZSBpbiBqUXVlcnkuY2FjaGVbaWRd KWJyZWFrO2lmKCFuYW1lKWpRdWVyeS5yZW1vdmVEYXRhKGVsZW0pfX1lbHNle3Ry eXtkZWxldGUgZWxlbVtleHBhbmRvXX1jYXRjaChlKXtpZihlbGVtLnJlbW92ZUF0 dHJpYnV0ZSllbGVtLnJlbW92ZUF0dHJpYnV0ZShleHBhbmRvKX1kZWxldGUgalF1 ZXJ5LmNhY2hlW2lkXX19LGVhY2g6ZnVuY3Rpb24ob2JqZWN0LGNhbGxiYWNrLGFy Z3Mpe2lmKGFyZ3Mpe2lmKG9iamVjdC5sZW5ndGg9PXVuZGVmaW5lZCl7Zm9yKHZh ciBuYW1lIGluIG9iamVjdClpZihjYWxsYmFjay5hcHBseShvYmplY3RbbmFtZV0s YXJncyk9PT1mYWxzZSlicmVha31lbHNlIGZvcih2YXIgaT0wLGxlbmd0aD1vYmpl Y3QubGVuZ3RoO2k8bGVuZ3RoO2krKylpZihjYWxsYmFjay5hcHBseShvYmplY3Rb aV0sYXJncyk9PT1mYWxzZSlicmVha31lbHNle2lmKG9iamVjdC5sZW5ndGg9PXVu ZGVmaW5lZCl7Zm9yKHZhciBuYW1lIGluIG9iamVjdClpZihjYWxsYmFjay5jYWxs KG9iamVjdFtuYW1lXSxuYW1lLG9iamVjdFtuYW1lXSk9PT1mYWxzZSlicmVha31l bHNlIGZvcih2YXIgaT0wLGxlbmd0aD1vYmplY3QubGVuZ3RoLHZhbHVlPW9iamVj dFswXTtpPGxlbmd0aCYmY2FsbGJhY2suY2FsbCh2YWx1ZSxpLHZhbHVlKSE9PWZh bHNlO3ZhbHVlPW9iamVjdFsrK2ldKXt9fXJldHVybiBvYmplY3R9LHByb3A6ZnVu Y3Rpb24oZWxlbSx2YWx1ZSx0eXBlLGksbmFtZSl7aWYoalF1ZXJ5LmlzRnVuY3Rp b24odmFsdWUpKXZhbHVlPXZhbHVlLmNhbGwoZWxlbSxpKTtyZXR1cm4gdmFsdWUm JnZhbHVlLmNvbnN0cnVjdG9yPT1OdW1iZXImJnR5cGU9PSJjdXJDU1MiJiYhZXhj bHVkZS50ZXN0KG5hbWUpP3ZhbHVlKyJweCI6dmFsdWV9LGNsYXNzTmFtZTp7YWRk OmZ1bmN0aW9uKGVsZW0sY2xhc3NOYW1lcyl7alF1ZXJ5LmVhY2goKGNsYXNzTmFt ZXN8fCIiKS5zcGxpdCgvXHMrLyksZnVuY3Rpb24oaSxjbGFzc05hbWUpe2lmKGVs ZW0ubm9kZVR5cGU9PTEmJiFqUXVlcnkuY2xhc3NOYW1lLmhhcyhlbGVtLmNsYXNz TmFtZSxjbGFzc05hbWUpKWVsZW0uY2xhc3NOYW1lKz0oZWxlbS5jbGFzc05hbWU/ IiAiOiIiKStjbGFzc05hbWV9KX0scmVtb3ZlOmZ1bmN0aW9uKGVsZW0sY2xhc3NO YW1lcyl7aWYoZWxlbS5ub2RlVHlwZT09MSllbGVtLmNsYXNzTmFtZT1jbGFzc05h bWVzIT11bmRlZmluZWQ/alF1ZXJ5LmdyZXAoZWxlbS5jbGFzc05hbWUuc3BsaXQo L1xzKy8pLGZ1bmN0aW9uKGNsYXNzTmFtZSl7cmV0dXJuIWpRdWVyeS5jbGFzc05h bWUuaGFzKGNsYXNzTmFtZXMsY2xhc3NOYW1lKX0pLmpvaW4oIiAiKToiIn0saGFz OmZ1bmN0aW9uKGVsZW0sY2xhc3NOYW1lKXtyZXR1cm4galF1ZXJ5LmluQXJyYXko Y2xhc3NOYW1lLChlbGVtLmNsYXNzTmFtZXx8ZWxlbSkudG9TdHJpbmcoKS5zcGxp dCgvXHMrLykpPi0xfX0sc3dhcDpmdW5jdGlvbihlbGVtLG9wdGlvbnMsY2FsbGJh Y2spe3ZhciBvbGQ9e307Zm9yKHZhciBuYW1lIGluIG9wdGlvbnMpe29sZFtuYW1l XT1lbGVtLnN0eWxlW25hbWVdO2VsZW0uc3R5bGVbbmFtZV09b3B0aW9uc1tuYW1l XX1jYWxsYmFjay5jYWxsKGVsZW0pO2Zvcih2YXIgbmFtZSBpbiBvcHRpb25zKWVs ZW0uc3R5bGVbbmFtZV09b2xkW25hbWVdfSxjc3M6ZnVuY3Rpb24oZWxlbSxuYW1l LGZvcmNlKXtpZihuYW1lPT0id2lkdGgifHxuYW1lPT0iaGVpZ2h0Iil7dmFyIHZh bCxwcm9wcz17cG9zaXRpb246ImFic29sdXRlIix2aXNpYmlsaXR5OiJoaWRkZW4i LGRpc3BsYXk6ImJsb2NrIn0sd2hpY2g9bmFtZT09IndpZHRoIj9bIkxlZnQiLCJS aWdodCJdOlsiVG9wIiwiQm90dG9tIl07ZnVuY3Rpb24gZ2V0V0goKXt2YWw9bmFt ZT09IndpZHRoIj9lbGVtLm9mZnNldFdpZHRoOmVsZW0ub2Zmc2V0SGVpZ2h0O3Zh ciBwYWRkaW5nPTAsYm9yZGVyPTA7alF1ZXJ5LmVhY2god2hpY2gsZnVuY3Rpb24o KXtwYWRkaW5nKz1wYXJzZUZsb2F0KGpRdWVyeS5jdXJDU1MoZWxlbSwicGFkZGlu ZyIrdGhpcyx0cnVlKSl8fDA7Ym9yZGVyKz1wYXJzZUZsb2F0KGpRdWVyeS5jdXJD U1MoZWxlbSwiYm9yZGVyIit0aGlzKyJXaWR0aCIsdHJ1ZSkpfHwwfSk7dmFsLT1N YXRoLnJvdW5kKHBhZGRpbmcrYm9yZGVyKX1pZihqUXVlcnkoZWxlbSkuaXMoIjp2 aXNpYmxlIikpZ2V0V0goKTtlbHNlIGpRdWVyeS5zd2FwKGVsZW0scHJvcHMsZ2V0 V0gpO3JldHVybiBNYXRoLm1heCgwLHZhbCl9cmV0dXJuIGpRdWVyeS5jdXJDU1Mo ZWxlbSxuYW1lLGZvcmNlKX0sY3VyQ1NTOmZ1bmN0aW9uKGVsZW0sbmFtZSxmb3Jj ZSl7dmFyIHJldDtmdW5jdGlvbiBjb2xvcihlbGVtKXtpZighalF1ZXJ5LmJyb3dz ZXIuc2FmYXJpKXJldHVybiBmYWxzZTt2YXIgcmV0PWRvY3VtZW50LmRlZmF1bHRW aWV3LmdldENvbXB1dGVkU3R5bGUoZWxlbSxudWxsKTtyZXR1cm4hcmV0fHxyZXQu Z2V0UHJvcGVydHlWYWx1ZSgiY29sb3IiKT09IiJ9aWYobmFtZT09Im9wYWNpdHki JiZqUXVlcnkuYnJvd3Nlci5tc2llKXtyZXQ9alF1ZXJ5LmF0dHIoZWxlbS5zdHls ZSwib3BhY2l0eSIpO3JldHVybiByZXQ9PSIiPyIxIjpyZXR9aWYoalF1ZXJ5LmJy b3dzZXIub3BlcmEmJm5hbWU9PSJkaXNwbGF5Iil7dmFyIHNhdmU9ZWxlbS5zdHls ZS5kaXNwbGF5O2VsZW0uc3R5bGUuZGlzcGxheT0iYmxvY2siO2VsZW0uc3R5bGUu ZGlzcGxheT1zYXZlfWlmKG5hbWUubWF0Y2goL2Zsb2F0L2kpKW5hbWU9c3R5bGVG bG9hdDtpZighZm9yY2UmJmVsZW0uc3R5bGUmJmVsZW0uc3R5bGVbbmFtZV0pcmV0 PWVsZW0uc3R5bGVbbmFtZV07ZWxzZSBpZihkb2N1bWVudC5kZWZhdWx0VmlldyYm ZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZSl7aWYobmFtZS5t YXRjaCgvZmxvYXQvaSkpbmFtZT0iZmxvYXQiO25hbWU9bmFtZS5yZXBsYWNlKC8o W0EtWl0pL2csIi0kMSIpLnRvTG93ZXJDYXNlKCk7dmFyIGdldENvbXB1dGVkU3R5 bGU9ZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShlbGVtLG51 bGwpO2lmKGdldENvbXB1dGVkU3R5bGUmJiFjb2xvcihlbGVtKSlyZXQ9Z2V0Q29t cHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKG5hbWUpO2Vsc2V7dmFyIHN3YXA9 W10sc3RhY2s9W107Zm9yKHZhciBhPWVsZW07YSYmY29sb3IoYSk7YT1hLnBhcmVu dE5vZGUpc3RhY2sudW5zaGlmdChhKTtmb3IodmFyIGk9MDtpPHN0YWNrLmxlbmd0 aDtpKyspaWYoY29sb3Ioc3RhY2tbaV0pKXtzd2FwW2ldPXN0YWNrW2ldLnN0eWxl LmRpc3BsYXk7c3RhY2tbaV0uc3R5bGUuZGlzcGxheT0iYmxvY2sifXJldD1uYW1l PT0iZGlzcGxheSImJnN3YXBbc3RhY2subGVuZ3RoLTFdIT1udWxsPyJub25lIjoo Z2V0Q29tcHV0ZWRTdHlsZSYmZ2V0Q29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZh bHVlKG5hbWUpKXx8IiI7Zm9yKHZhciBpPTA7aTxzd2FwLmxlbmd0aDtpKyspaWYo c3dhcFtpXSE9bnVsbClzdGFja1tpXS5zdHlsZS5kaXNwbGF5PXN3YXBbaV19aWYo bmFtZT09Im9wYWNpdHkiJiZyZXQ9PSIiKXJldD0iMSJ9ZWxzZSBpZihlbGVtLmN1 cnJlbnRTdHlsZSl7dmFyIGNhbWVsQ2FzZT1uYW1lLnJlcGxhY2UoL1wtKFx3KS9n LGZ1bmN0aW9uKGFsbCxsZXR0ZXIpe3JldHVybiBsZXR0ZXIudG9VcHBlckNhc2Uo KX0pO3JldD1lbGVtLmN1cnJlbnRTdHlsZVtuYW1lXXx8ZWxlbS5jdXJyZW50U3R5 bGVbY2FtZWxDYXNlXTtpZighL15cZCsocHgpPyQvaS50ZXN0KHJldCkmJi9eXGQv LnRlc3QocmV0KSl7dmFyIHN0eWxlPWVsZW0uc3R5bGUubGVmdCxydW50aW1lU3R5 bGU9ZWxlbS5ydW50aW1lU3R5bGUubGVmdDtlbGVtLnJ1bnRpbWVTdHlsZS5sZWZ0 PWVsZW0uY3VycmVudFN0eWxlLmxlZnQ7ZWxlbS5zdHlsZS5sZWZ0PXJldHx8MDty ZXQ9ZWxlbS5zdHlsZS5waXhlbExlZnQrInB4IjtlbGVtLnN0eWxlLmxlZnQ9c3R5 bGU7ZWxlbS5ydW50aW1lU3R5bGUubGVmdD1ydW50aW1lU3R5bGV9fXJldHVybiBy ZXR9LGNsZWFuOmZ1bmN0aW9uKGVsZW1zLGNvbnRleHQpe3ZhciByZXQ9W107Y29u dGV4dD1jb250ZXh0fHxkb2N1bWVudDtpZih0eXBlb2YgY29udGV4dC5jcmVhdGVF bGVtZW50PT0ndW5kZWZpbmVkJyljb250ZXh0PWNvbnRleHQub3duZXJEb2N1bWVu dHx8Y29udGV4dFswXSYmY29udGV4dFswXS5vd25lckRvY3VtZW50fHxkb2N1bWVu dDtqUXVlcnkuZWFjaChlbGVtcyxmdW5jdGlvbihpLGVsZW0pe2lmKCFlbGVtKXJl dHVybjtpZihlbGVtLmNvbnN0cnVjdG9yPT1OdW1iZXIpZWxlbT1lbGVtLnRvU3Ry aW5nKCk7aWYodHlwZW9mIGVsZW09PSJzdHJpbmciKXtlbGVtPWVsZW0ucmVwbGFj ZSgvKDwoXHcrKVtePl0qPylcLz4vZyxmdW5jdGlvbihhbGwsZnJvbnQsdGFnKXty ZXR1cm4gdGFnLm1hdGNoKC9eKGFiYnJ8YnJ8Y29sfGltZ3xpbnB1dHxsaW5rfG1l dGF8cGFyYW18aHJ8YXJlYXxlbWJlZCkkL2kpP2FsbDpmcm9udCsiPjwvIit0YWcr Ij4ifSk7dmFyIHRhZ3M9alF1ZXJ5LnRyaW0oZWxlbSkudG9Mb3dlckNhc2UoKSxk aXY9Y29udGV4dC5jcmVhdGVFbGVtZW50KCJkaXYiKTt2YXIgd3JhcD0hdGFncy5p bmRleE9mKCI8b3B0IikmJlsxLCI8c2VsZWN0IG11bHRpcGxlPSdtdWx0aXBsZSc+ IiwiPC9zZWxlY3Q+Il18fCF0YWdzLmluZGV4T2YoIjxsZWciKSYmWzEsIjxmaWVs ZHNldD4iLCI8L2ZpZWxkc2V0PiJdfHx0YWdzLm1hdGNoKC9ePCh0aGVhZHx0Ym9k eXx0Zm9vdHxjb2xnfGNhcCkvKSYmWzEsIjx0YWJsZT4iLCI8L3RhYmxlPiJdfHwh dGFncy5pbmRleE9mKCI8dHIiKSYmWzIsIjx0YWJsZT48dGJvZHk+IiwiPC90Ym9k eT48L3RhYmxlPiJdfHwoIXRhZ3MuaW5kZXhPZigiPHRkIil8fCF0YWdzLmluZGV4 T2YoIjx0aCIpKSYmWzMsIjx0YWJsZT48dGJvZHk+PHRyPiIsIjwvdHI+PC90Ym9k eT48L3RhYmxlPiJdfHwhdGFncy5pbmRleE9mKCI8Y29sIikmJlsyLCI8dGFibGU+ PHRib2R5PjwvdGJvZHk+PGNvbGdyb3VwPiIsIjwvY29sZ3JvdXA+PC90YWJsZT4i XXx8alF1ZXJ5LmJyb3dzZXIubXNpZSYmWzEsImRpdjxkaXY+IiwiPC9kaXY+Il18 fFswLCIiLCIiXTtkaXYuaW5uZXJIVE1MPXdyYXBbMV0rZWxlbSt3cmFwWzJdO3do aWxlKHdyYXBbMF0tLSlkaXY9ZGl2Lmxhc3RDaGlsZDtpZihqUXVlcnkuYnJvd3Nl ci5tc2llKXt2YXIgdGJvZHk9IXRhZ3MuaW5kZXhPZigiPHRhYmxlIikmJnRhZ3Mu aW5kZXhPZigiPHRib2R5Iik8MD9kaXYuZmlyc3RDaGlsZCYmZGl2LmZpcnN0Q2hp bGQuY2hpbGROb2Rlczp3cmFwWzFdPT0iPHRhYmxlPiImJnRhZ3MuaW5kZXhPZigi PHRib2R5Iik8MD9kaXYuY2hpbGROb2RlczpbXTtmb3IodmFyIGo9dGJvZHkubGVu Z3RoLTE7aj49MDstLWopaWYoalF1ZXJ5Lm5vZGVOYW1lKHRib2R5W2pdLCJ0Ym9k eSIpJiYhdGJvZHlbal0uY2hpbGROb2Rlcy5sZW5ndGgpdGJvZHlbal0ucGFyZW50 Tm9kZS5yZW1vdmVDaGlsZCh0Ym9keVtqXSk7aWYoL15ccy8udGVzdChlbGVtKSlk aXYuaW5zZXJ0QmVmb3JlKGNvbnRleHQuY3JlYXRlVGV4dE5vZGUoZWxlbS5tYXRj aCgvXlxzKi8pWzBdKSxkaXYuZmlyc3RDaGlsZCl9ZWxlbT1qUXVlcnkubWFrZUFy cmF5KGRpdi5jaGlsZE5vZGVzKX1pZihlbGVtLmxlbmd0aD09PTAmJighalF1ZXJ5 Lm5vZGVOYW1lKGVsZW0sImZvcm0iKSYmIWpRdWVyeS5ub2RlTmFtZShlbGVtLCJz ZWxlY3QiKSkpcmV0dXJuO2lmKGVsZW1bMF09PXVuZGVmaW5lZHx8alF1ZXJ5Lm5v ZGVOYW1lKGVsZW0sImZvcm0iKXx8ZWxlbS5vcHRpb25zKXJldC5wdXNoKGVsZW0p O2Vsc2UgcmV0PWpRdWVyeS5tZXJnZShyZXQsZWxlbSl9KTtyZXR1cm4gcmV0fSxh dHRyOmZ1bmN0aW9uKGVsZW0sbmFtZSx2YWx1ZSl7aWYoIWVsZW18fGVsZW0ubm9k ZVR5cGU9PTN8fGVsZW0ubm9kZVR5cGU9PTgpcmV0dXJuIHVuZGVmaW5lZDt2YXIg Zml4PWpRdWVyeS5pc1hNTERvYyhlbGVtKT97fTpqUXVlcnkucHJvcHM7aWYobmFt ZT09InNlbGVjdGVkIiYmalF1ZXJ5LmJyb3dzZXIuc2FmYXJpKWVsZW0ucGFyZW50 Tm9kZS5zZWxlY3RlZEluZGV4O2lmKGZpeFtuYW1lXSl7aWYodmFsdWUhPXVuZGVm aW5lZCllbGVtW2ZpeFtuYW1lXV09dmFsdWU7cmV0dXJuIGVsZW1bZml4W25hbWVd XX1lbHNlIGlmKGpRdWVyeS5icm93c2VyLm1zaWUmJm5hbWU9PSJzdHlsZSIpcmV0 dXJuIGpRdWVyeS5hdHRyKGVsZW0uc3R5bGUsImNzc1RleHQiLHZhbHVlKTtlbHNl IGlmKHZhbHVlPT11bmRlZmluZWQmJmpRdWVyeS5icm93c2VyLm1zaWUmJmpRdWVy eS5ub2RlTmFtZShlbGVtLCJmb3JtIikmJihuYW1lPT0iYWN0aW9uInx8bmFtZT09 Im1ldGhvZCIpKXJldHVybiBlbGVtLmdldEF0dHJpYnV0ZU5vZGUobmFtZSkubm9k ZVZhbHVlO2Vsc2UgaWYoZWxlbS50YWdOYW1lKXtpZih2YWx1ZSE9dW5kZWZpbmVk KXtpZihuYW1lPT0idHlwZSImJmpRdWVyeS5ub2RlTmFtZShlbGVtLCJpbnB1dCIp JiZlbGVtLnBhcmVudE5vZGUpdGhyb3cidHlwZSBwcm9wZXJ0eSBjYW4ndCBiZSBj aGFuZ2VkIjtlbGVtLnNldEF0dHJpYnV0ZShuYW1lLCIiK3ZhbHVlKX1pZihqUXVl cnkuYnJvd3Nlci5tc2llJiYvaHJlZnxzcmMvLnRlc3QobmFtZSkmJiFqUXVlcnku aXNYTUxEb2MoZWxlbSkpcmV0dXJuIGVsZW0uZ2V0QXR0cmlidXRlKG5hbWUsMik7 cmV0dXJuIGVsZW0uZ2V0QXR0cmlidXRlKG5hbWUpfWVsc2V7aWYobmFtZT09Im9w YWNpdHkiJiZqUXVlcnkuYnJvd3Nlci5tc2llKXtpZih2YWx1ZSE9dW5kZWZpbmVk KXtlbGVtLnpvb209MTtlbGVtLmZpbHRlcj0oZWxlbS5maWx0ZXJ8fCIiKS5yZXBs YWNlKC9hbHBoYVwoW14pXSpcKS8sIiIpKyhwYXJzZUZsb2F0KHZhbHVlKS50b1N0 cmluZygpPT0iTmFOIj8iIjoiYWxwaGEob3BhY2l0eT0iK3ZhbHVlKjEwMCsiKSIp fXJldHVybiBlbGVtLmZpbHRlciYmZWxlbS5maWx0ZXIuaW5kZXhPZigib3BhY2l0 eT0iKT49MD8ocGFyc2VGbG9hdChlbGVtLmZpbHRlci5tYXRjaCgvb3BhY2l0eT0o W14pXSopLylbMV0pLzEwMCkudG9TdHJpbmcoKToiIn1uYW1lPW5hbWUucmVwbGFj ZSgvLShbYS16XSkvaWcsZnVuY3Rpb24oYWxsLGxldHRlcil7cmV0dXJuIGxldHRl ci50b1VwcGVyQ2FzZSgpfSk7aWYodmFsdWUhPXVuZGVmaW5lZCllbGVtW25hbWVd PXZhbHVlO3JldHVybiBlbGVtW25hbWVdfX0sdHJpbTpmdW5jdGlvbih0ZXh0KXty ZXR1cm4odGV4dHx8IiIpLnJlcGxhY2UoL15ccyt8XHMrJC9nLCIiKX0sbWFrZUFy cmF5OmZ1bmN0aW9uKGFycmF5KXt2YXIgcmV0PVtdO2lmKHR5cGVvZiBhcnJheSE9 ImFycmF5Iilmb3IodmFyIGk9MCxsZW5ndGg9YXJyYXkubGVuZ3RoO2k8bGVuZ3Ro O2krKylyZXQucHVzaChhcnJheVtpXSk7ZWxzZSByZXQ9YXJyYXkuc2xpY2UoMCk7 cmV0dXJuIHJldH0saW5BcnJheTpmdW5jdGlvbihlbGVtLGFycmF5KXtmb3IodmFy IGk9MCxsZW5ndGg9YXJyYXkubGVuZ3RoO2k8bGVuZ3RoO2krKylpZihhcnJheVtp XT09ZWxlbSlyZXR1cm4gaTtyZXR1cm4tMX0sbWVyZ2U6ZnVuY3Rpb24oZmlyc3Qs c2Vjb25kKXtpZihqUXVlcnkuYnJvd3Nlci5tc2llKXtmb3IodmFyIGk9MDtzZWNv bmRbaV07aSsrKWlmKHNlY29uZFtpXS5ub2RlVHlwZSE9OClmaXJzdC5wdXNoKHNl Y29uZFtpXSl9ZWxzZSBmb3IodmFyIGk9MDtzZWNvbmRbaV07aSsrKWZpcnN0LnB1 c2goc2Vjb25kW2ldKTtyZXR1cm4gZmlyc3R9LHVuaXF1ZTpmdW5jdGlvbihhcnJh eSl7dmFyIHJldD1bXSxkb25lPXt9O3RyeXtmb3IodmFyIGk9MCxsZW5ndGg9YXJy YXkubGVuZ3RoO2k8bGVuZ3RoO2krKyl7dmFyIGlkPWpRdWVyeS5kYXRhKGFycmF5 W2ldKTtpZighZG9uZVtpZF0pe2RvbmVbaWRdPXRydWU7cmV0LnB1c2goYXJyYXlb aV0pfX19Y2F0Y2goZSl7cmV0PWFycmF5fXJldHVybiByZXR9LGdyZXA6ZnVuY3Rp b24oZWxlbXMsY2FsbGJhY2ssaW52KXtpZih0eXBlb2YgY2FsbGJhY2s9PSJzdHJp bmciKWNhbGxiYWNrPWV2YWwoImZhbHNlfHxmdW5jdGlvbihhLGkpe3JldHVybiAi K2NhbGxiYWNrKyJ9Iik7dmFyIHJldD1bXTtmb3IodmFyIGk9MCxsZW5ndGg9ZWxl bXMubGVuZ3RoO2k8bGVuZ3RoO2krKylpZighaW52JiZjYWxsYmFjayhlbGVtc1tp XSxpKXx8aW52JiYhY2FsbGJhY2soZWxlbXNbaV0saSkpcmV0LnB1c2goZWxlbXNb aV0pO3JldHVybiByZXR9LG1hcDpmdW5jdGlvbihlbGVtcyxjYWxsYmFjayl7dmFy IHJldD1bXTtmb3IodmFyIGk9MCxsZW5ndGg9ZWxlbXMubGVuZ3RoO2k8bGVuZ3Ro O2krKyl7dmFyIHZhbHVlPWNhbGxiYWNrKGVsZW1zW2ldLGkpO2lmKHZhbHVlIT09 bnVsbCYmdmFsdWUhPXVuZGVmaW5lZCl7aWYodmFsdWUuY29uc3RydWN0b3IhPUFy cmF5KXZhbHVlPVt2YWx1ZV07cmV0PXJldC5jb25jYXQodmFsdWUpfX1yZXR1cm4g cmV0fX0pO3ZhciB1c2VyQWdlbnQ9bmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2Vy Q2FzZSgpO2pRdWVyeS5icm93c2VyPXt2ZXJzaW9uOih1c2VyQWdlbnQubWF0Y2go Ly4rKD86cnZ8aXR8cmF8aWUpW1wvOiBdKFtcZC5dKykvKXx8W10pWzFdLHNhZmFy aTovd2Via2l0Ly50ZXN0KHVzZXJBZ2VudCksb3BlcmE6L29wZXJhLy50ZXN0KHVz ZXJBZ2VudCksbXNpZTovbXNpZS8udGVzdCh1c2VyQWdlbnQpJiYhL29wZXJhLy50 ZXN0KHVzZXJBZ2VudCksbW96aWxsYTovbW96aWxsYS8udGVzdCh1c2VyQWdlbnQp JiYhLyhjb21wYXRpYmxlfHdlYmtpdCkvLnRlc3QodXNlckFnZW50KX07dmFyIHN0 eWxlRmxvYXQ9alF1ZXJ5LmJyb3dzZXIubXNpZT8ic3R5bGVGbG9hdCI6ImNzc0Zs b2F0IjtqUXVlcnkuZXh0ZW5kKHtib3hNb2RlbDohalF1ZXJ5LmJyb3dzZXIubXNp ZXx8ZG9jdW1lbnQuY29tcGF0TW9kZT09IkNTUzFDb21wYXQiLHByb3BzOnsiZm9y IjoiaHRtbEZvciIsImNsYXNzIjoiY2xhc3NOYW1lIiwiZmxvYXQiOnN0eWxlRmxv YXQsY3NzRmxvYXQ6c3R5bGVGbG9hdCxzdHlsZUZsb2F0OnN0eWxlRmxvYXQsaW5u ZXJIVE1MOiJpbm5lckhUTUwiLGNsYXNzTmFtZToiY2xhc3NOYW1lIix2YWx1ZToi dmFsdWUiLGRpc2FibGVkOiJkaXNhYmxlZCIsY2hlY2tlZDoiY2hlY2tlZCIscmVh ZG9ubHk6InJlYWRPbmx5IixzZWxlY3RlZDoic2VsZWN0ZWQiLG1heGxlbmd0aDoi bWF4TGVuZ3RoIixzZWxlY3RlZEluZGV4OiJzZWxlY3RlZEluZGV4IixkZWZhdWx0 VmFsdWU6ImRlZmF1bHRWYWx1ZSIsdGFnTmFtZToidGFnTmFtZSIsbm9kZU5hbWU6 Im5vZGVOYW1lIn19KTtqUXVlcnkuZWFjaCh7cGFyZW50OiJlbGVtLnBhcmVudE5v ZGUiLHBhcmVudHM6ImpRdWVyeS5kaXIoZWxlbSwncGFyZW50Tm9kZScpIixuZXh0 OiJqUXVlcnkubnRoKGVsZW0sMiwnbmV4dFNpYmxpbmcnKSIscHJldjoialF1ZXJ5 Lm50aChlbGVtLDIsJ3ByZXZpb3VzU2libGluZycpIixuZXh0QWxsOiJqUXVlcnku ZGlyKGVsZW0sJ25leHRTaWJsaW5nJykiLHByZXZBbGw6ImpRdWVyeS5kaXIoZWxl bSwncHJldmlvdXNTaWJsaW5nJykiLHNpYmxpbmdzOiJqUXVlcnkuc2libGluZyhl bGVtLnBhcmVudE5vZGUuZmlyc3RDaGlsZCxlbGVtKSIsY2hpbGRyZW46ImpRdWVy eS5zaWJsaW5nKGVsZW0uZmlyc3RDaGlsZCkiLGNvbnRlbnRzOiJqUXVlcnkubm9k ZU5hbWUoZWxlbSwnaWZyYW1lJyk/ZWxlbS5jb250ZW50RG9jdW1lbnR8fGVsZW0u Y29udGVudFdpbmRvdy5kb2N1bWVudDpqUXVlcnkubWFrZUFycmF5KGVsZW0uY2hp bGROb2RlcykifSxmdW5jdGlvbihuYW1lLGZuKXtmbj1ldmFsKCJmYWxzZXx8ZnVu Y3Rpb24oZWxlbSl7cmV0dXJuICIrZm4rIn0iKTtqUXVlcnkuZm5bbmFtZV09ZnVu Y3Rpb24oc2VsZWN0b3Ipe3ZhciByZXQ9alF1ZXJ5Lm1hcCh0aGlzLGZuKTtpZihz ZWxlY3RvciYmdHlwZW9mIHNlbGVjdG9yPT0ic3RyaW5nIilyZXQ9alF1ZXJ5Lm11 bHRpRmlsdGVyKHNlbGVjdG9yLHJldCk7cmV0dXJuIHRoaXMucHVzaFN0YWNrKGpR dWVyeS51bmlxdWUocmV0KSl9fSk7alF1ZXJ5LmVhY2goe2FwcGVuZFRvOiJhcHBl bmQiLHByZXBlbmRUbzoicHJlcGVuZCIsaW5zZXJ0QmVmb3JlOiJiZWZvcmUiLGlu c2VydEFmdGVyOiJhZnRlciIscmVwbGFjZUFsbDoicmVwbGFjZVdpdGgifSxmdW5j dGlvbihuYW1lLG9yaWdpbmFsKXtqUXVlcnkuZm5bbmFtZV09ZnVuY3Rpb24oKXt2 YXIgYXJncz1hcmd1bWVudHM7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2Zv cih2YXIgaT0wLGxlbmd0aD1hcmdzLmxlbmd0aDtpPGxlbmd0aDtpKyspalF1ZXJ5 KGFyZ3NbaV0pW29yaWdpbmFsXSh0aGlzKX0pfX0pO2pRdWVyeS5lYWNoKHtyZW1v dmVBdHRyOmZ1bmN0aW9uKG5hbWUpe2pRdWVyeS5hdHRyKHRoaXMsbmFtZSwiIik7 aWYodGhpcy5ub2RlVHlwZT09MSl0aGlzLnJlbW92ZUF0dHJpYnV0ZShuYW1lKX0s YWRkQ2xhc3M6ZnVuY3Rpb24oY2xhc3NOYW1lcyl7alF1ZXJ5LmNsYXNzTmFtZS5h ZGQodGhpcyxjbGFzc05hbWVzKX0scmVtb3ZlQ2xhc3M6ZnVuY3Rpb24oY2xhc3NO YW1lcyl7alF1ZXJ5LmNsYXNzTmFtZS5yZW1vdmUodGhpcyxjbGFzc05hbWVzKX0s dG9nZ2xlQ2xhc3M6ZnVuY3Rpb24oY2xhc3NOYW1lcyl7alF1ZXJ5LmNsYXNzTmFt ZVtqUXVlcnkuY2xhc3NOYW1lLmhhcyh0aGlzLGNsYXNzTmFtZXMpPyJyZW1vdmUi OiJhZGQiXSh0aGlzLGNsYXNzTmFtZXMpfSxyZW1vdmU6ZnVuY3Rpb24oc2VsZWN0 b3Ipe2lmKCFzZWxlY3Rvcnx8alF1ZXJ5LmZpbHRlcihzZWxlY3RvcixbdGhpc10p LnIubGVuZ3RoKXtqUXVlcnkoIioiLHRoaXMpLmFkZCh0aGlzKS5lYWNoKGZ1bmN0 aW9uKCl7alF1ZXJ5LmV2ZW50LnJlbW92ZSh0aGlzKTtqUXVlcnkucmVtb3ZlRGF0 YSh0aGlzKX0pO2lmKHRoaXMucGFyZW50Tm9kZSl0aGlzLnBhcmVudE5vZGUucmVt b3ZlQ2hpbGQodGhpcyl9fSxlbXB0eTpmdW5jdGlvbigpe2pRdWVyeSgiPioiLHRo aXMpLnJlbW92ZSgpO3doaWxlKHRoaXMuZmlyc3RDaGlsZCl0aGlzLnJlbW92ZUNo aWxkKHRoaXMuZmlyc3RDaGlsZCl9fSxmdW5jdGlvbihuYW1lLGZuKXtqUXVlcnku Zm5bbmFtZV09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lYWNoKGZuLGFyZ3VtZW50 cyl9fSk7alF1ZXJ5LmVhY2goWyJIZWlnaHQiLCJXaWR0aCJdLGZ1bmN0aW9uKGks bmFtZSl7dmFyIHR5cGU9bmFtZS50b0xvd2VyQ2FzZSgpO2pRdWVyeS5mblt0eXBl XT1mdW5jdGlvbihzaXplKXtyZXR1cm4gdGhpc1swXT09d2luZG93P2pRdWVyeS5i cm93c2VyLm9wZXJhJiZkb2N1bWVudC5ib2R5WyJjbGllbnQiK25hbWVdfHxqUXVl cnkuYnJvd3Nlci5zYWZhcmkmJndpbmRvd1siaW5uZXIiK25hbWVdfHxkb2N1bWVu dC5jb21wYXRNb2RlPT0iQ1NTMUNvbXBhdCImJmRvY3VtZW50LmRvY3VtZW50RWxl bWVudFsiY2xpZW50IituYW1lXXx8ZG9jdW1lbnQuYm9keVsiY2xpZW50IituYW1l XTp0aGlzWzBdPT1kb2N1bWVudD9NYXRoLm1heChNYXRoLm1heChkb2N1bWVudC5i b2R5WyJzY3JvbGwiK25hbWVdLGRvY3VtZW50LmRvY3VtZW50RWxlbWVudFsic2Ny b2xsIituYW1lXSksTWF0aC5tYXgoZG9jdW1lbnQuYm9keVsib2Zmc2V0IituYW1l XSxkb2N1bWVudC5kb2N1bWVudEVsZW1lbnRbIm9mZnNldCIrbmFtZV0pKTpzaXpl PT11bmRlZmluZWQ/KHRoaXMubGVuZ3RoP2pRdWVyeS5jc3ModGhpc1swXSx0eXBl KTpudWxsKTp0aGlzLmNzcyh0eXBlLHNpemUuY29uc3RydWN0b3I9PVN0cmluZz9z aXplOnNpemUrInB4Iil9fSk7dmFyIGNoYXJzPWpRdWVyeS5icm93c2VyLnNhZmFy aSYmcGFyc2VJbnQoalF1ZXJ5LmJyb3dzZXIudmVyc2lvbik8NDE3PyIoPzpbXFx3 Kl8tXXxcXFxcLikiOiIoPzpbXFx3XHUwMTI4LVx1RkZGRipfLV18XFxcXC4pIixx dWlja0NoaWxkPW5ldyBSZWdFeHAoIl4+XFxzKigiK2NoYXJzKyIrKSIpLHF1aWNr SUQ9bmV3IFJlZ0V4cCgiXigiK2NoYXJzKyIrKSgjKSgiK2NoYXJzKyIrKSIpLHF1 aWNrQ2xhc3M9bmV3IFJlZ0V4cCgiXihbIy5dPykoIitjaGFycysiKikiKTtqUXVl cnkuZXh0ZW5kKHtleHByOnsiIjoibVsyXT09JyonfHxqUXVlcnkubm9kZU5hbWUo YSxtWzJdKSIsIiMiOiJhLmdldEF0dHJpYnV0ZSgnaWQnKT09bVsyXSIsIjoiOnts dDoiaTxtWzNdLTAiLGd0OiJpPm1bM10tMCIsbnRoOiJtWzNdLTA9PWkiLGVxOiJt WzNdLTA9PWkiLGZpcnN0OiJpPT0wIixsYXN0OiJpPT1yLmxlbmd0aC0xIixldmVu OiJpJTI9PTAiLG9kZDoiaSUyIiwiZmlyc3QtY2hpbGQiOiJhLnBhcmVudE5vZGUu Z2V0RWxlbWVudHNCeVRhZ05hbWUoJyonKVswXT09YSIsImxhc3QtY2hpbGQiOiJq UXVlcnkubnRoKGEucGFyZW50Tm9kZS5sYXN0Q2hpbGQsMSwncHJldmlvdXNTaWJs aW5nJyk9PWEiLCJvbmx5LWNoaWxkIjoiIWpRdWVyeS5udGgoYS5wYXJlbnROb2Rl Lmxhc3RDaGlsZCwyLCdwcmV2aW91c1NpYmxpbmcnKSIscGFyZW50OiJhLmZpcnN0 Q2hpbGQiLGVtcHR5OiIhYS5maXJzdENoaWxkIixjb250YWluczoiKGEudGV4dENv bnRlbnR8fGEuaW5uZXJUZXh0fHxqUXVlcnkoYSkudGV4dCgpfHwnJykuaW5kZXhP ZihtWzNdKT49MCIsdmlzaWJsZTonImhpZGRlbiIhPWEudHlwZSYmalF1ZXJ5LmNz cyhhLCJkaXNwbGF5IikhPSJub25lIiYmalF1ZXJ5LmNzcyhhLCJ2aXNpYmlsaXR5 IikhPSJoaWRkZW4iJyxoaWRkZW46JyJoaWRkZW4iPT1hLnR5cGV8fGpRdWVyeS5j c3MoYSwiZGlzcGxheSIpPT0ibm9uZSJ8fGpRdWVyeS5jc3MoYSwidmlzaWJpbGl0 eSIpPT0iaGlkZGVuIicsZW5hYmxlZDoiIWEuZGlzYWJsZWQiLGRpc2FibGVkOiJh LmRpc2FibGVkIixjaGVja2VkOiJhLmNoZWNrZWQiLHNlbGVjdGVkOiJhLnNlbGVj dGVkfHxqUXVlcnkuYXR0cihhLCdzZWxlY3RlZCcpIix0ZXh0OiIndGV4dCc9PWEu dHlwZSIscmFkaW86IidyYWRpbyc9PWEudHlwZSIsY2hlY2tib3g6IidjaGVja2Jv eCc9PWEudHlwZSIsZmlsZToiJ2ZpbGUnPT1hLnR5cGUiLHBhc3N3b3JkOiIncGFz c3dvcmQnPT1hLnR5cGUiLHN1Ym1pdDoiJ3N1Ym1pdCc9PWEudHlwZSIsaW1hZ2U6 IidpbWFnZSc9PWEudHlwZSIscmVzZXQ6IidyZXNldCc9PWEudHlwZSIsYnV0dG9u OiciYnV0dG9uIj09YS50eXBlfHxqUXVlcnkubm9kZU5hbWUoYSwiYnV0dG9uIikn LGlucHV0OiIvaW5wdXR8c2VsZWN0fHRleHRhcmVhfGJ1dHRvbi9pLnRlc3QoYS5u b2RlTmFtZSkiLGhhczoialF1ZXJ5LmZpbmQobVszXSxhKS5sZW5ndGgiLGhlYWRl cjoiL2hcXGQvaS50ZXN0KGEubm9kZU5hbWUpIixhbmltYXRlZDoialF1ZXJ5Lmdy ZXAoalF1ZXJ5LnRpbWVycyxmdW5jdGlvbihmbil7cmV0dXJuIGE9PWZuLmVsZW07 fSkubGVuZ3RoIn19LHBhcnNlOlsvXihcWykgKkA/KFtcdy1dKykgKihbISokXn49 XSopICooJz8iPykoLio/KVw0ICpcXS8sL14oOikoW1x3LV0rKVwoIj8nPyguKj8o XCguKj9cKSk/W14oXSo/KSI/Jz9cKS8sbmV3IFJlZ0V4cCgiXihbOi4jXSopKCIr Y2hhcnMrIispIildLG11bHRpRmlsdGVyOmZ1bmN0aW9uKGV4cHIsZWxlbXMsbm90 KXt2YXIgb2xkLGN1cj1bXTt3aGlsZShleHByJiZleHByIT1vbGQpe29sZD1leHBy O3ZhciBmPWpRdWVyeS5maWx0ZXIoZXhwcixlbGVtcyxub3QpO2V4cHI9Zi50LnJl cGxhY2UoL15ccyosXHMqLywiIik7Y3VyPW5vdD9lbGVtcz1mLnI6alF1ZXJ5Lm1l cmdlKGN1cixmLnIpfXJldHVybiBjdXJ9LGZpbmQ6ZnVuY3Rpb24odCxjb250ZXh0 KXtpZih0eXBlb2YgdCE9InN0cmluZyIpcmV0dXJuW3RdO2lmKGNvbnRleHQmJmNv bnRleHQubm9kZVR5cGUhPTEmJmNvbnRleHQubm9kZVR5cGUhPTkpcmV0dXJuW107 Y29udGV4dD1jb250ZXh0fHxkb2N1bWVudDt2YXIgcmV0PVtjb250ZXh0XSxkb25l PVtdLGxhc3Qsbm9kZU5hbWU7d2hpbGUodCYmbGFzdCE9dCl7dmFyIHI9W107bGFz dD10O3Q9alF1ZXJ5LnRyaW0odCk7dmFyIGZvdW5kVG9rZW49ZmFsc2U7dmFyIHJl PXF1aWNrQ2hpbGQ7dmFyIG09cmUuZXhlYyh0KTtpZihtKXtub2RlTmFtZT1tWzFd LnRvVXBwZXJDYXNlKCk7Zm9yKHZhciBpPTA7cmV0W2ldO2krKylmb3IodmFyIGM9 cmV0W2ldLmZpcnN0Q2hpbGQ7YztjPWMubmV4dFNpYmxpbmcpaWYoYy5ub2RlVHlw ZT09MSYmKG5vZGVOYW1lPT0iKiJ8fGMubm9kZU5hbWUudG9VcHBlckNhc2UoKT09 bm9kZU5hbWUpKXIucHVzaChjKTtyZXQ9cjt0PXQucmVwbGFjZShyZSwiIik7aWYo dC5pbmRleE9mKCIgIik9PTApY29udGludWU7Zm91bmRUb2tlbj10cnVlfWVsc2V7 cmU9L14oWz4rfl0pXHMqKFx3KikvaTtpZigobT1yZS5leGVjKHQpKSE9bnVsbCl7 cj1bXTt2YXIgbWVyZ2U9e307bm9kZU5hbWU9bVsyXS50b1VwcGVyQ2FzZSgpO209 bVsxXTtmb3IodmFyIGo9MCxybD1yZXQubGVuZ3RoO2o8cmw7aisrKXt2YXIgbj1t PT0ifiJ8fG09PSIrIj9yZXRbal0ubmV4dFNpYmxpbmc6cmV0W2pdLmZpcnN0Q2hp bGQ7Zm9yKDtuO249bi5uZXh0U2libGluZylpZihuLm5vZGVUeXBlPT0xKXt2YXIg aWQ9alF1ZXJ5LmRhdGEobik7aWYobT09In4iJiZtZXJnZVtpZF0pYnJlYWs7aWYo IW5vZGVOYW1lfHxuLm5vZGVOYW1lLnRvVXBwZXJDYXNlKCk9PW5vZGVOYW1lKXtp ZihtPT0ifiIpbWVyZ2VbaWRdPXRydWU7ci5wdXNoKG4pfWlmKG09PSIrIilicmVh a319cmV0PXI7dD1qUXVlcnkudHJpbSh0LnJlcGxhY2UocmUsIiIpKTtmb3VuZFRv a2VuPXRydWV9fWlmKHQmJiFmb3VuZFRva2VuKXtpZighdC5pbmRleE9mKCIsIikp e2lmKGNvbnRleHQ9PXJldFswXSlyZXQuc2hpZnQoKTtkb25lPWpRdWVyeS5tZXJn ZShkb25lLHJldCk7cj1yZXQ9W2NvbnRleHRdO3Q9IiAiK3Quc3Vic3RyKDEsdC5s ZW5ndGgpfWVsc2V7dmFyIHJlMj1xdWlja0lEO3ZhciBtPXJlMi5leGVjKHQpO2lm KG0pe209WzAsbVsyXSxtWzNdLG1bMV1dfWVsc2V7cmUyPXF1aWNrQ2xhc3M7bT1y ZTIuZXhlYyh0KX1tWzJdPW1bMl0ucmVwbGFjZSgvXFwvZywiIik7dmFyIGVsZW09 cmV0W3JldC5sZW5ndGgtMV07aWYobVsxXT09IiMiJiZlbGVtJiZlbGVtLmdldEVs ZW1lbnRCeUlkJiYhalF1ZXJ5LmlzWE1MRG9jKGVsZW0pKXt2YXIgb2lkPWVsZW0u Z2V0RWxlbWVudEJ5SWQobVsyXSk7aWYoKGpRdWVyeS5icm93c2VyLm1zaWV8fGpR dWVyeS5icm93c2VyLm9wZXJhKSYmb2lkJiZ0eXBlb2Ygb2lkLmlkPT0ic3RyaW5n IiYmb2lkLmlkIT1tWzJdKW9pZD1qUXVlcnkoJ1tAaWQ9IicrbVsyXSsnIl0nLGVs ZW0pWzBdO3JldD1yPW9pZCYmKCFtWzNdfHxqUXVlcnkubm9kZU5hbWUob2lkLG1b M10pKT9bb2lkXTpbXX1lbHNle2Zvcih2YXIgaT0wO3JldFtpXTtpKyspe3ZhciB0 YWc9bVsxXT09IiMiJiZtWzNdP21bM106bVsxXSE9IiJ8fG1bMF09PSIiPyIqIjpt WzJdO2lmKHRhZz09IioiJiZyZXRbaV0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09 Im9iamVjdCIpdGFnPSJwYXJhbSI7cj1qUXVlcnkubWVyZ2UocixyZXRbaV0uZ2V0 RWxlbWVudHNCeVRhZ05hbWUodGFnKSl9aWYobVsxXT09Ii4iKXI9alF1ZXJ5LmNs YXNzRmlsdGVyKHIsbVsyXSk7aWYobVsxXT09IiMiKXt2YXIgdG1wPVtdO2Zvcih2 YXIgaT0wO3JbaV07aSsrKWlmKHJbaV0uZ2V0QXR0cmlidXRlKCJpZCIpPT1tWzJd KXt0bXA9W3JbaV1dO2JyZWFrfXI9dG1wfXJldD1yfXQ9dC5yZXBsYWNlKHJlMiwi Iil9fWlmKHQpe3ZhciB2YWw9alF1ZXJ5LmZpbHRlcih0LHIpO3JldD1yPXZhbC5y O3Q9alF1ZXJ5LnRyaW0odmFsLnQpfX1pZih0KXJldD1bXTtpZihyZXQmJmNvbnRl eHQ9PXJldFswXSlyZXQuc2hpZnQoKTtkb25lPWpRdWVyeS5tZXJnZShkb25lLHJl dCk7cmV0dXJuIGRvbmV9LGNsYXNzRmlsdGVyOmZ1bmN0aW9uKHIsbSxub3Qpe209 IiAiK20rIiAiO3ZhciB0bXA9W107Zm9yKHZhciBpPTA7cltpXTtpKyspe3ZhciBw YXNzPSgiICIrcltpXS5jbGFzc05hbWUrIiAiKS5pbmRleE9mKG0pPj0wO2lmKCFu b3QmJnBhc3N8fG5vdCYmIXBhc3MpdG1wLnB1c2gocltpXSl9cmV0dXJuIHRtcH0s ZmlsdGVyOmZ1bmN0aW9uKHQscixub3Qpe3ZhciBsYXN0O3doaWxlKHQmJnQhPWxh c3Qpe2xhc3Q9dDt2YXIgcD1qUXVlcnkucGFyc2UsbTtmb3IodmFyIGk9MDtwW2ld O2krKyl7bT1wW2ldLmV4ZWModCk7aWYobSl7dD10LnN1YnN0cmluZyhtWzBdLmxl bmd0aCk7bVsyXT1tWzJdLnJlcGxhY2UoL1xcL2csIiIpO2JyZWFrfX1pZighbSli cmVhaztpZihtWzFdPT0iOiImJm1bMl09PSJub3QiKXI9aXNTaW1wbGUudGVzdCht WzNdKT9qUXVlcnkuZmlsdGVyKG1bM10scix0cnVlKS5yOmpRdWVyeShyKS5ub3Qo bVszXSk7ZWxzZSBpZihtWzFdPT0iLiIpcj1qUXVlcnkuY2xhc3NGaWx0ZXIocixt WzJdLG5vdCk7ZWxzZSBpZihtWzFdPT0iWyIpe3ZhciB0bXA9W10sdHlwZT1tWzNd O2Zvcih2YXIgaT0wLHJsPXIubGVuZ3RoO2k8cmw7aSsrKXt2YXIgYT1yW2ldLHo9 YVtqUXVlcnkucHJvcHNbbVsyXV18fG1bMl1dO2lmKHo9PW51bGx8fC9ocmVmfHNy Y3xzZWxlY3RlZC8udGVzdChtWzJdKSl6PWpRdWVyeS5hdHRyKGEsbVsyXSl8fCcn O2lmKCh0eXBlPT0iIiYmISF6fHx0eXBlPT0iPSImJno9PW1bNV18fHR5cGU9PSIh PSImJnohPW1bNV18fHR5cGU9PSJePSImJnomJiF6LmluZGV4T2YobVs1XSl8fHR5 cGU9PSIkPSImJnouc3Vic3RyKHoubGVuZ3RoLW1bNV0ubGVuZ3RoKT09bVs1XXx8 KHR5cGU9PSIqPSJ8fHR5cGU9PSJ+PSIpJiZ6LmluZGV4T2YobVs1XSk+PTApXm5v dCl0bXAucHVzaChhKX1yPXRtcH1lbHNlIGlmKG1bMV09PSI6IiYmbVsyXT09Im50 aC1jaGlsZCIpe3ZhciBtZXJnZT17fSx0bXA9W10sdGVzdD0vKC0/KShcZCopbigo PzpcK3wtKT9cZCopLy5leGVjKG1bM109PSJldmVuIiYmIjJuInx8bVszXT09Im9k ZCImJiIybisxInx8IS9cRC8udGVzdChtWzNdKSYmIjBuKyIrbVszXXx8bVszXSks Zmlyc3Q9KHRlc3RbMV0rKHRlc3RbMl18fDEpKS0wLGxhc3Q9dGVzdFszXS0wO2Zv cih2YXIgaT0wLHJsPXIubGVuZ3RoO2k8cmw7aSsrKXt2YXIgbm9kZT1yW2ldLHBh cmVudE5vZGU9bm9kZS5wYXJlbnROb2RlLGlkPWpRdWVyeS5kYXRhKHBhcmVudE5v ZGUpO2lmKCFtZXJnZVtpZF0pe3ZhciBjPTE7Zm9yKHZhciBuPXBhcmVudE5vZGUu Zmlyc3RDaGlsZDtuO249bi5uZXh0U2libGluZylpZihuLm5vZGVUeXBlPT0xKW4u bm9kZUluZGV4PWMrKzttZXJnZVtpZF09dHJ1ZX12YXIgYWRkPWZhbHNlO2lmKGZp cnN0PT0wKXtpZihub2RlLm5vZGVJbmRleD09bGFzdClhZGQ9dHJ1ZX1lbHNlIGlm KChub2RlLm5vZGVJbmRleC1sYXN0KSVmaXJzdD09MCYmKG5vZGUubm9kZUluZGV4 LWxhc3QpL2ZpcnN0Pj0wKWFkZD10cnVlO2lmKGFkZF5ub3QpdG1wLnB1c2gobm9k ZSl9cj10bXB9ZWxzZXt2YXIgZj1qUXVlcnkuZXhwclttWzFdXTtpZih0eXBlb2Yg ZiE9InN0cmluZyIpZj1qUXVlcnkuZXhwclttWzFdXVttWzJdXTtmPWV2YWwoImZh bHNlfHxmdW5jdGlvbihhLGkpe3JldHVybiAiK2YrIn0iKTtyPWpRdWVyeS5ncmVw KHIsZixub3QpfX1yZXR1cm57cjpyLHQ6dH19LGRpcjpmdW5jdGlvbihlbGVtLGRp cil7dmFyIG1hdGNoZWQ9W107dmFyIGN1cj1lbGVtW2Rpcl07d2hpbGUoY3VyJiZj dXIhPWRvY3VtZW50KXtpZihjdXIubm9kZVR5cGU9PTEpbWF0Y2hlZC5wdXNoKGN1 cik7Y3VyPWN1cltkaXJdfXJldHVybiBtYXRjaGVkfSxudGg6ZnVuY3Rpb24oY3Vy LHJlc3VsdCxkaXIsZWxlbSl7cmVzdWx0PXJlc3VsdHx8MTt2YXIgbnVtPTA7Zm9y KDtjdXI7Y3VyPWN1cltkaXJdKWlmKGN1ci5ub2RlVHlwZT09MSYmKytudW09PXJl c3VsdClicmVhaztyZXR1cm4gY3VyfSxzaWJsaW5nOmZ1bmN0aW9uKG4sZWxlbSl7 dmFyIHI9W107Zm9yKDtuO249bi5uZXh0U2libGluZyl7aWYobi5ub2RlVHlwZT09 MSYmKCFlbGVtfHxuIT1lbGVtKSlyLnB1c2gobil9cmV0dXJuIHJ9fSk7alF1ZXJ5 LmV2ZW50PXthZGQ6ZnVuY3Rpb24oZWxlbSx0eXBlcyxoYW5kbGVyLGRhdGEpe2lm KGVsZW0ubm9kZVR5cGU9PTN8fGVsZW0ubm9kZVR5cGU9PTgpcmV0dXJuO2lmKGpR dWVyeS5icm93c2VyLm1zaWUmJmVsZW0uc2V0SW50ZXJ2YWwhPXVuZGVmaW5lZCll bGVtPXdpbmRvdztpZighaGFuZGxlci5ndWlkKWhhbmRsZXIuZ3VpZD10aGlzLmd1 aWQrKztpZihkYXRhIT11bmRlZmluZWQpe3ZhciBmbj1oYW5kbGVyO2hhbmRsZXI9 ZnVuY3Rpb24oKXtyZXR1cm4gZm4uYXBwbHkodGhpcyxhcmd1bWVudHMpfTtoYW5k bGVyLmRhdGE9ZGF0YTtoYW5kbGVyLmd1aWQ9Zm4uZ3VpZH12YXIgZXZlbnRzPWpR dWVyeS5kYXRhKGVsZW0sImV2ZW50cyIpfHxqUXVlcnkuZGF0YShlbGVtLCJldmVu dHMiLHt9KSxoYW5kbGU9alF1ZXJ5LmRhdGEoZWxlbSwiaGFuZGxlIil8fGpRdWVy eS5kYXRhKGVsZW0sImhhbmRsZSIsZnVuY3Rpb24oKXt2YXIgdmFsO2lmKHR5cGVv ZiBqUXVlcnk9PSJ1bmRlZmluZWQifHxqUXVlcnkuZXZlbnQudHJpZ2dlcmVkKXJl dHVybiB2YWw7dmFsPWpRdWVyeS5ldmVudC5oYW5kbGUuYXBwbHkoYXJndW1lbnRz LmNhbGxlZS5lbGVtLGFyZ3VtZW50cyk7cmV0dXJuIHZhbH0pO2hhbmRsZS5lbGVt PWVsZW07alF1ZXJ5LmVhY2godHlwZXMuc3BsaXQoL1xzKy8pLGZ1bmN0aW9uKGlu ZGV4LHR5cGUpe3ZhciBwYXJ0cz10eXBlLnNwbGl0KCIuIik7dHlwZT1wYXJ0c1sw XTtoYW5kbGVyLnR5cGU9cGFydHNbMV07dmFyIGhhbmRsZXJzPWV2ZW50c1t0eXBl XTtpZighaGFuZGxlcnMpe2hhbmRsZXJzPWV2ZW50c1t0eXBlXT17fTtpZighalF1 ZXJ5LmV2ZW50LnNwZWNpYWxbdHlwZV18fGpRdWVyeS5ldmVudC5zcGVjaWFsW3R5 cGVdLnNldHVwLmNhbGwoZWxlbSk9PT1mYWxzZSl7aWYoZWxlbS5hZGRFdmVudExp c3RlbmVyKWVsZW0uYWRkRXZlbnRMaXN0ZW5lcih0eXBlLGhhbmRsZSxmYWxzZSk7 ZWxzZSBpZihlbGVtLmF0dGFjaEV2ZW50KWVsZW0uYXR0YWNoRXZlbnQoIm9uIit0 eXBlLGhhbmRsZSl9fWhhbmRsZXJzW2hhbmRsZXIuZ3VpZF09aGFuZGxlcjtqUXVl cnkuZXZlbnQuZ2xvYmFsW3R5cGVdPXRydWV9KTtlbGVtPW51bGx9LGd1aWQ6MSxn bG9iYWw6e30scmVtb3ZlOmZ1bmN0aW9uKGVsZW0sdHlwZXMsaGFuZGxlcil7aWYo ZWxlbS5ub2RlVHlwZT09M3x8ZWxlbS5ub2RlVHlwZT09OClyZXR1cm47dmFyIGV2 ZW50cz1qUXVlcnkuZGF0YShlbGVtLCJldmVudHMiKSxyZXQsaW5kZXg7aWYoZXZl bnRzKXtpZih0eXBlcz09dW5kZWZpbmVkKWZvcih2YXIgdHlwZSBpbiBldmVudHMp dGhpcy5yZW1vdmUoZWxlbSx0eXBlKTtlbHNle2lmKHR5cGVzLnR5cGUpe2hhbmRs ZXI9dHlwZXMuaGFuZGxlcjt0eXBlcz10eXBlcy50eXBlfWpRdWVyeS5lYWNoKHR5 cGVzLnNwbGl0KC9ccysvKSxmdW5jdGlvbihpbmRleCx0eXBlKXt2YXIgcGFydHM9 dHlwZS5zcGxpdCgiLiIpO3R5cGU9cGFydHNbMF07aWYoZXZlbnRzW3R5cGVdKXtp ZihoYW5kbGVyKWRlbGV0ZSBldmVudHNbdHlwZV1baGFuZGxlci5ndWlkXTtlbHNl IGZvcihoYW5kbGVyIGluIGV2ZW50c1t0eXBlXSlpZighcGFydHNbMV18fGV2ZW50 c1t0eXBlXVtoYW5kbGVyXS50eXBlPT1wYXJ0c1sxXSlkZWxldGUgZXZlbnRzW3R5 cGVdW2hhbmRsZXJdO2ZvcihyZXQgaW4gZXZlbnRzW3R5cGVdKWJyZWFrO2lmKCFy ZXQpe2lmKCFqUXVlcnkuZXZlbnQuc3BlY2lhbFt0eXBlXXx8alF1ZXJ5LmV2ZW50 LnNwZWNpYWxbdHlwZV0udGVhcmRvd24uY2FsbChlbGVtKT09PWZhbHNlKXtpZihl bGVtLnJlbW92ZUV2ZW50TGlzdGVuZXIpZWxlbS5yZW1vdmVFdmVudExpc3RlbmVy KHR5cGUsalF1ZXJ5LmRhdGEoZWxlbSwiaGFuZGxlIiksZmFsc2UpO2Vsc2UgaWYo ZWxlbS5kZXRhY2hFdmVudCllbGVtLmRldGFjaEV2ZW50KCJvbiIrdHlwZSxqUXVl cnkuZGF0YShlbGVtLCJoYW5kbGUiKSl9cmV0PW51bGw7ZGVsZXRlIGV2ZW50c1t0 eXBlXX19fSl9Zm9yKHJldCBpbiBldmVudHMpYnJlYWs7aWYoIXJldCl7dmFyIGhh bmRsZT1qUXVlcnkuZGF0YShlbGVtLCJoYW5kbGUiKTtpZihoYW5kbGUpaGFuZGxl LmVsZW09bnVsbDtqUXVlcnkucmVtb3ZlRGF0YShlbGVtLCJldmVudHMiKTtqUXVl cnkucmVtb3ZlRGF0YShlbGVtLCJoYW5kbGUiKX19fSx0cmlnZ2VyOmZ1bmN0aW9u KHR5cGUsZGF0YSxlbGVtLGRvbmF0aXZlLGV4dHJhKXtkYXRhPWpRdWVyeS5tYWtl QXJyYXkoZGF0YXx8W10pO2lmKCFlbGVtKXtpZih0aGlzLmdsb2JhbFt0eXBlXSlq UXVlcnkoIioiKS5hZGQoW3dpbmRvdyxkb2N1bWVudF0pLnRyaWdnZXIodHlwZSxk YXRhKX1lbHNle2lmKGVsZW0ubm9kZVR5cGU9PTN8fGVsZW0ubm9kZVR5cGU9PTgp cmV0dXJuIHVuZGVmaW5lZDt2YXIgdmFsLHJldCxmbj1qUXVlcnkuaXNGdW5jdGlv bihlbGVtW3R5cGVdfHxudWxsKSxldmVudD0hZGF0YVswXXx8IWRhdGFbMF0ucHJl dmVudERlZmF1bHQ7aWYoZXZlbnQpZGF0YS51bnNoaWZ0KHRoaXMuZml4KHt0eXBl OnR5cGUsdGFyZ2V0OmVsZW19KSk7ZGF0YVswXS50eXBlPXR5cGU7aWYoalF1ZXJ5 LmlzRnVuY3Rpb24oalF1ZXJ5LmRhdGEoZWxlbSwiaGFuZGxlIikpKXZhbD1qUXVl cnkuZGF0YShlbGVtLCJoYW5kbGUiKS5hcHBseShlbGVtLGRhdGEpO2lmKCFmbiYm ZWxlbVsib24iK3R5cGVdJiZlbGVtWyJvbiIrdHlwZV0uYXBwbHkoZWxlbSxkYXRh KT09PWZhbHNlKXZhbD1mYWxzZTtpZihldmVudClkYXRhLnNoaWZ0KCk7aWYoZXh0 cmEmJmpRdWVyeS5pc0Z1bmN0aW9uKGV4dHJhKSl7cmV0PWV4dHJhLmFwcGx5KGVs ZW0sdmFsPT1udWxsP2RhdGE6ZGF0YS5jb25jYXQodmFsKSk7aWYocmV0IT09dW5k ZWZpbmVkKXZhbD1yZXR9aWYoZm4mJmRvbmF0aXZlIT09ZmFsc2UmJnZhbCE9PWZh bHNlJiYhKGpRdWVyeS5ub2RlTmFtZShlbGVtLCdhJykmJnR5cGU9PSJjbGljayIp KXt0aGlzLnRyaWdnZXJlZD10cnVlO3RyeXtlbGVtW3R5cGVdKCl9Y2F0Y2goZSl7 fX10aGlzLnRyaWdnZXJlZD1mYWxzZX1yZXR1cm4gdmFsfSxoYW5kbGU6ZnVuY3Rp b24oZXZlbnQpe3ZhciB2YWw7ZXZlbnQ9alF1ZXJ5LmV2ZW50LmZpeChldmVudHx8 d2luZG93LmV2ZW50fHx7fSk7dmFyIHBhcnRzPWV2ZW50LnR5cGUuc3BsaXQoIi4i KTtldmVudC50eXBlPXBhcnRzWzBdO3ZhciBoYW5kbGVycz1qUXVlcnkuZGF0YSh0 aGlzLCJldmVudHMiKSYmalF1ZXJ5LmRhdGEodGhpcywiZXZlbnRzIilbZXZlbnQu dHlwZV0sYXJncz1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMs MSk7YXJncy51bnNoaWZ0KGV2ZW50KTtmb3IodmFyIGogaW4gaGFuZGxlcnMpe3Zh ciBoYW5kbGVyPWhhbmRsZXJzW2pdO2FyZ3NbMF0uaGFuZGxlcj1oYW5kbGVyO2Fy Z3NbMF0uZGF0YT1oYW5kbGVyLmRhdGE7aWYoIXBhcnRzWzFdfHxoYW5kbGVyLnR5 cGU9PXBhcnRzWzFdKXt2YXIgcmV0PWhhbmRsZXIuYXBwbHkodGhpcyxhcmdzKTtp Zih2YWwhPT1mYWxzZSl2YWw9cmV0O2lmKHJldD09PWZhbHNlKXtldmVudC5wcmV2 ZW50RGVmYXVsdCgpO2V2ZW50LnN0b3BQcm9wYWdhdGlvbigpfX19aWYoalF1ZXJ5 LmJyb3dzZXIubXNpZSlldmVudC50YXJnZXQ9ZXZlbnQucHJldmVudERlZmF1bHQ9 ZXZlbnQuc3RvcFByb3BhZ2F0aW9uPWV2ZW50LmhhbmRsZXI9ZXZlbnQuZGF0YT1u dWxsO3JldHVybiB2YWx9LGZpeDpmdW5jdGlvbihldmVudCl7dmFyIG9yaWdpbmFs RXZlbnQ9ZXZlbnQ7ZXZlbnQ9alF1ZXJ5LmV4dGVuZCh7fSxvcmlnaW5hbEV2ZW50 KTtldmVudC5wcmV2ZW50RGVmYXVsdD1mdW5jdGlvbigpe2lmKG9yaWdpbmFsRXZl bnQucHJldmVudERlZmF1bHQpb3JpZ2luYWxFdmVudC5wcmV2ZW50RGVmYXVsdCgp O29yaWdpbmFsRXZlbnQucmV0dXJuVmFsdWU9ZmFsc2V9O2V2ZW50LnN0b3BQcm9w YWdhdGlvbj1mdW5jdGlvbigpe2lmKG9yaWdpbmFsRXZlbnQuc3RvcFByb3BhZ2F0 aW9uKW9yaWdpbmFsRXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7b3JpZ2luYWxFdmVu dC5jYW5jZWxCdWJibGU9dHJ1ZX07aWYoIWV2ZW50LnRhcmdldClldmVudC50YXJn ZXQ9ZXZlbnQuc3JjRWxlbWVudHx8ZG9jdW1lbnQ7aWYoZXZlbnQudGFyZ2V0Lm5v ZGVUeXBlPT0zKWV2ZW50LnRhcmdldD1vcmlnaW5hbEV2ZW50LnRhcmdldC5wYXJl bnROb2RlO2lmKCFldmVudC5yZWxhdGVkVGFyZ2V0JiZldmVudC5mcm9tRWxlbWVu dClldmVudC5yZWxhdGVkVGFyZ2V0PWV2ZW50LmZyb21FbGVtZW50PT1ldmVudC50 YXJnZXQ/ZXZlbnQudG9FbGVtZW50OmV2ZW50LmZyb21FbGVtZW50O2lmKGV2ZW50 LnBhZ2VYPT1udWxsJiZldmVudC5jbGllbnRYIT1udWxsKXt2YXIgZG9jPWRvY3Vt ZW50LmRvY3VtZW50RWxlbWVudCxib2R5PWRvY3VtZW50LmJvZHk7ZXZlbnQucGFn ZVg9ZXZlbnQuY2xpZW50WCsoZG9jJiZkb2Muc2Nyb2xsTGVmdHx8Ym9keSYmYm9k eS5zY3JvbGxMZWZ0fHwwKS0oZG9jLmNsaWVudExlZnR8fDApO2V2ZW50LnBhZ2VZ PWV2ZW50LmNsaWVudFkrKGRvYyYmZG9jLnNjcm9sbFRvcHx8Ym9keSYmYm9keS5z Y3JvbGxUb3B8fDApLShkb2MuY2xpZW50VG9wfHwwKX1pZighZXZlbnQud2hpY2gm JigoZXZlbnQuY2hhckNvZGV8fGV2ZW50LmNoYXJDb2RlPT09MCk/ZXZlbnQuY2hh ckNvZGU6ZXZlbnQua2V5Q29kZSkpZXZlbnQud2hpY2g9ZXZlbnQuY2hhckNvZGV8 fGV2ZW50LmtleUNvZGU7aWYoIWV2ZW50Lm1ldGFLZXkmJmV2ZW50LmN0cmxLZXkp ZXZlbnQubWV0YUtleT1ldmVudC5jdHJsS2V5O2lmKCFldmVudC53aGljaCYmZXZl bnQuYnV0dG9uKWV2ZW50LndoaWNoPShldmVudC5idXR0b24mMT8xOihldmVudC5i dXR0b24mMj8zOihldmVudC5idXR0b24mND8yOjApKSk7cmV0dXJuIGV2ZW50fSxz cGVjaWFsOntyZWFkeTp7c2V0dXA6ZnVuY3Rpb24oKXtiaW5kUmVhZHkoKTtyZXR1 cm59LHRlYXJkb3duOmZ1bmN0aW9uKCl7cmV0dXJufX0sbW91c2VlbnRlcjp7c2V0 dXA6ZnVuY3Rpb24oKXtpZihqUXVlcnkuYnJvd3Nlci5tc2llKXJldHVybiBmYWxz ZTtqUXVlcnkodGhpcykuYmluZCgibW91c2VvdmVyIixqUXVlcnkuZXZlbnQuc3Bl Y2lhbC5tb3VzZWVudGVyLmhhbmRsZXIpO3JldHVybiB0cnVlfSx0ZWFyZG93bjpm dW5jdGlvbigpe2lmKGpRdWVyeS5icm93c2VyLm1zaWUpcmV0dXJuIGZhbHNlO2pR dWVyeSh0aGlzKS51bmJpbmQoIm1vdXNlb3ZlciIsalF1ZXJ5LmV2ZW50LnNwZWNp YWwubW91c2VlbnRlci5oYW5kbGVyKTtyZXR1cm4gdHJ1ZX0saGFuZGxlcjpmdW5j dGlvbihldmVudCl7aWYod2l0aGluRWxlbWVudChldmVudCx0aGlzKSlyZXR1cm4g dHJ1ZTthcmd1bWVudHNbMF0udHlwZT0ibW91c2VlbnRlciI7cmV0dXJuIGpRdWVy eS5ldmVudC5oYW5kbGUuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0sbW91c2VsZWF2 ZTp7c2V0dXA6ZnVuY3Rpb24oKXtpZihqUXVlcnkuYnJvd3Nlci5tc2llKXJldHVy biBmYWxzZTtqUXVlcnkodGhpcykuYmluZCgibW91c2VvdXQiLGpRdWVyeS5ldmVu dC5zcGVjaWFsLm1vdXNlbGVhdmUuaGFuZGxlcik7cmV0dXJuIHRydWV9LHRlYXJk b3duOmZ1bmN0aW9uKCl7aWYoalF1ZXJ5LmJyb3dzZXIubXNpZSlyZXR1cm4gZmFs c2U7alF1ZXJ5KHRoaXMpLnVuYmluZCgibW91c2VvdXQiLGpRdWVyeS5ldmVudC5z cGVjaWFsLm1vdXNlbGVhdmUuaGFuZGxlcik7cmV0dXJuIHRydWV9LGhhbmRsZXI6 ZnVuY3Rpb24oZXZlbnQpe2lmKHdpdGhpbkVsZW1lbnQoZXZlbnQsdGhpcykpcmV0 dXJuIHRydWU7YXJndW1lbnRzWzBdLnR5cGU9Im1vdXNlbGVhdmUiO3JldHVybiBq UXVlcnkuZXZlbnQuaGFuZGxlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19fX07alF1 ZXJ5LmZuLmV4dGVuZCh7YmluZDpmdW5jdGlvbih0eXBlLGRhdGEsZm4pe3JldHVy biB0eXBlPT0idW5sb2FkIj90aGlzLm9uZSh0eXBlLGRhdGEsZm4pOnRoaXMuZWFj aChmdW5jdGlvbigpe2pRdWVyeS5ldmVudC5hZGQodGhpcyx0eXBlLGZufHxkYXRh LGZuJiZkYXRhKX0pfSxvbmU6ZnVuY3Rpb24odHlwZSxkYXRhLGZuKXtyZXR1cm4g dGhpcy5lYWNoKGZ1bmN0aW9uKCl7alF1ZXJ5LmV2ZW50LmFkZCh0aGlzLHR5cGUs ZnVuY3Rpb24oZXZlbnQpe2pRdWVyeSh0aGlzKS51bmJpbmQoZXZlbnQpO3JldHVy bihmbnx8ZGF0YSkuYXBwbHkodGhpcyxhcmd1bWVudHMpfSxmbiYmZGF0YSl9KX0s dW5iaW5kOmZ1bmN0aW9uKHR5cGUsZm4pe3JldHVybiB0aGlzLmVhY2goZnVuY3Rp b24oKXtqUXVlcnkuZXZlbnQucmVtb3ZlKHRoaXMsdHlwZSxmbil9KX0sdHJpZ2dl cjpmdW5jdGlvbih0eXBlLGRhdGEsZm4pe3JldHVybiB0aGlzLmVhY2goZnVuY3Rp b24oKXtqUXVlcnkuZXZlbnQudHJpZ2dlcih0eXBlLGRhdGEsdGhpcyx0cnVlLGZu KX0pfSx0cmlnZ2VySGFuZGxlcjpmdW5jdGlvbih0eXBlLGRhdGEsZm4pe2lmKHRo aXNbMF0pcmV0dXJuIGpRdWVyeS5ldmVudC50cmlnZ2VyKHR5cGUsZGF0YSx0aGlz WzBdLGZhbHNlLGZuKTtyZXR1cm4gdW5kZWZpbmVkfSx0b2dnbGU6ZnVuY3Rpb24o KXt2YXIgYXJncz1hcmd1bWVudHM7cmV0dXJuIHRoaXMuY2xpY2soZnVuY3Rpb24o ZXZlbnQpe3RoaXMubGFzdFRvZ2dsZT0wPT10aGlzLmxhc3RUb2dnbGU/MTowO2V2 ZW50LnByZXZlbnREZWZhdWx0KCk7cmV0dXJuIGFyZ3NbdGhpcy5sYXN0VG9nZ2xl XS5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fGZhbHNlfSl9LGhvdmVyOmZ1bmN0aW9u KGZuT3Zlcixmbk91dCl7cmV0dXJuIHRoaXMuYmluZCgnbW91c2VlbnRlcicsZm5P dmVyKS5iaW5kKCdtb3VzZWxlYXZlJyxmbk91dCl9LHJlYWR5OmZ1bmN0aW9uKGZu KXtiaW5kUmVhZHkoKTtpZihqUXVlcnkuaXNSZWFkeSlmbi5jYWxsKGRvY3VtZW50 LGpRdWVyeSk7ZWxzZSBqUXVlcnkucmVhZHlMaXN0LnB1c2goZnVuY3Rpb24oKXty ZXR1cm4gZm4uY2FsbCh0aGlzLGpRdWVyeSl9KTtyZXR1cm4gdGhpc319KTtqUXVl cnkuZXh0ZW5kKHtpc1JlYWR5OmZhbHNlLHJlYWR5TGlzdDpbXSxyZWFkeTpmdW5j dGlvbigpe2lmKCFqUXVlcnkuaXNSZWFkeSl7alF1ZXJ5LmlzUmVhZHk9dHJ1ZTtp ZihqUXVlcnkucmVhZHlMaXN0KXtqUXVlcnkuZWFjaChqUXVlcnkucmVhZHlMaXN0 LGZ1bmN0aW9uKCl7dGhpcy5hcHBseShkb2N1bWVudCl9KTtqUXVlcnkucmVhZHlM aXN0PW51bGx9alF1ZXJ5KGRvY3VtZW50KS50cmlnZ2VySGFuZGxlcigicmVhZHki KX19fSk7dmFyIHJlYWR5Qm91bmQ9ZmFsc2U7ZnVuY3Rpb24gYmluZFJlYWR5KCl7 aWYocmVhZHlCb3VuZClyZXR1cm47cmVhZHlCb3VuZD10cnVlO2lmKGRvY3VtZW50 LmFkZEV2ZW50TGlzdGVuZXImJiFqUXVlcnkuYnJvd3Nlci5vcGVyYSlkb2N1bWVu dC5hZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIixqUXVlcnkucmVh ZHksZmFsc2UpO2lmKGpRdWVyeS5icm93c2VyLm1zaWUmJndpbmRvdz09dG9wKShm dW5jdGlvbigpe2lmKGpRdWVyeS5pc1JlYWR5KXJldHVybjt0cnl7ZG9jdW1lbnQu ZG9jdW1lbnRFbGVtZW50LmRvU2Nyb2xsKCJsZWZ0Iil9Y2F0Y2goZXJyb3Ipe3Nl dFRpbWVvdXQoYXJndW1lbnRzLmNhbGxlZSwwKTtyZXR1cm59alF1ZXJ5LnJlYWR5 KCl9KSgpO2lmKGpRdWVyeS5icm93c2VyLm9wZXJhKWRvY3VtZW50LmFkZEV2ZW50 TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLGZ1bmN0aW9uKCl7aWYoalF1ZXJ5 LmlzUmVhZHkpcmV0dXJuO2Zvcih2YXIgaT0wO2k8ZG9jdW1lbnQuc3R5bGVTaGVl dHMubGVuZ3RoO2krKylpZihkb2N1bWVudC5zdHlsZVNoZWV0c1tpXS5kaXNhYmxl ZCl7c2V0VGltZW91dChhcmd1bWVudHMuY2FsbGVlLDApO3JldHVybn1qUXVlcnku cmVhZHkoKX0sZmFsc2UpO2lmKGpRdWVyeS5icm93c2VyLnNhZmFyaSl7dmFyIG51 bVN0eWxlczsoZnVuY3Rpb24oKXtpZihqUXVlcnkuaXNSZWFkeSlyZXR1cm47aWYo ZG9jdW1lbnQucmVhZHlTdGF0ZSE9ImxvYWRlZCImJmRvY3VtZW50LnJlYWR5U3Rh dGUhPSJjb21wbGV0ZSIpe3NldFRpbWVvdXQoYXJndW1lbnRzLmNhbGxlZSwwKTty ZXR1cm59aWYobnVtU3R5bGVzPT09dW5kZWZpbmVkKW51bVN0eWxlcz1qUXVlcnko InN0eWxlLCBsaW5rW3JlbD1zdHlsZXNoZWV0XSIpLmxlbmd0aDtpZihkb2N1bWVu dC5zdHlsZVNoZWV0cy5sZW5ndGghPW51bVN0eWxlcyl7c2V0VGltZW91dChhcmd1 bWVudHMuY2FsbGVlLDApO3JldHVybn1qUXVlcnkucmVhZHkoKX0pKCl9alF1ZXJ5 LmV2ZW50LmFkZCh3aW5kb3csImxvYWQiLGpRdWVyeS5yZWFkeSl9alF1ZXJ5LmVh Y2goKCJibHVyLGZvY3VzLGxvYWQscmVzaXplLHNjcm9sbCx1bmxvYWQsY2xpY2ss ZGJsY2xpY2ssIisibW91c2Vkb3duLG1vdXNldXAsbW91c2Vtb3ZlLG1vdXNlb3Zl cixtb3VzZW91dCxjaGFuZ2Usc2VsZWN0LCIrInN1Ym1pdCxrZXlkb3duLGtleXBy ZXNzLGtleXVwLGVycm9yIikuc3BsaXQoIiwiKSxmdW5jdGlvbihpLG5hbWUpe2pR dWVyeS5mbltuYW1lXT1mdW5jdGlvbihmbil7cmV0dXJuIGZuP3RoaXMuYmluZChu YW1lLGZuKTp0aGlzLnRyaWdnZXIobmFtZSl9fSk7dmFyIHdpdGhpbkVsZW1lbnQ9 ZnVuY3Rpb24oZXZlbnQsZWxlbSl7dmFyIHBhcmVudD1ldmVudC5yZWxhdGVkVGFy Z2V0O3doaWxlKHBhcmVudCYmcGFyZW50IT1lbGVtKXRyeXtwYXJlbnQ9cGFyZW50 LnBhcmVudE5vZGV9Y2F0Y2goZXJyb3Ipe3BhcmVudD1lbGVtfXJldHVybiBwYXJl bnQ9PWVsZW19O2pRdWVyeSh3aW5kb3cpLmJpbmQoInVubG9hZCIsZnVuY3Rpb24o KXtqUXVlcnkoIioiKS5hZGQoZG9jdW1lbnQpLnVuYmluZCgpfSk7alF1ZXJ5LmZu LmV4dGVuZCh7bG9hZDpmdW5jdGlvbih1cmwscGFyYW1zLGNhbGxiYWNrKXtpZihq UXVlcnkuaXNGdW5jdGlvbih1cmwpKXJldHVybiB0aGlzLmJpbmQoImxvYWQiLHVy bCk7dmFyIG9mZj11cmwuaW5kZXhPZigiICIpO2lmKG9mZj49MCl7dmFyIHNlbGVj dG9yPXVybC5zbGljZShvZmYsdXJsLmxlbmd0aCk7dXJsPXVybC5zbGljZSgwLG9m Zil9Y2FsbGJhY2s9Y2FsbGJhY2t8fGZ1bmN0aW9uKCl7fTt2YXIgdHlwZT0iR0VU IjtpZihwYXJhbXMpaWYoalF1ZXJ5LmlzRnVuY3Rpb24ocGFyYW1zKSl7Y2FsbGJh Y2s9cGFyYW1zO3BhcmFtcz1udWxsfWVsc2V7cGFyYW1zPWpRdWVyeS5wYXJhbShw YXJhbXMpO3R5cGU9IlBPU1QifXZhciBzZWxmPXRoaXM7alF1ZXJ5LmFqYXgoe3Vy bDp1cmwsdHlwZTp0eXBlLGRhdGFUeXBlOiJodG1sIixkYXRhOnBhcmFtcyxjb21w bGV0ZTpmdW5jdGlvbihyZXMsc3RhdHVzKXtpZihzdGF0dXM9PSJzdWNjZXNzInx8 c3RhdHVzPT0ibm90bW9kaWZpZWQiKXNlbGYuaHRtbChzZWxlY3Rvcj9qUXVlcnko IjxkaXYvPiIpLmFwcGVuZChyZXMucmVzcG9uc2VUZXh0LnJlcGxhY2UoLzxzY3Jp cHQoLnxccykqP1wvc2NyaXB0Pi9nLCIiKSkuZmluZChzZWxlY3Rvcik6cmVzLnJl c3BvbnNlVGV4dCk7c2VsZi5lYWNoKGNhbGxiYWNrLFtyZXMucmVzcG9uc2VUZXh0 LHN0YXR1cyxyZXNdKX19KTtyZXR1cm4gdGhpc30sc2VyaWFsaXplOmZ1bmN0aW9u KCl7cmV0dXJuIGpRdWVyeS5wYXJhbSh0aGlzLnNlcmlhbGl6ZUFycmF5KCkpfSxz ZXJpYWxpemVBcnJheTpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1hcChmdW5jdGlv bigpe3JldHVybiBqUXVlcnkubm9kZU5hbWUodGhpcywiZm9ybSIpP2pRdWVyeS5t YWtlQXJyYXkodGhpcy5lbGVtZW50cyk6dGhpc30pLmZpbHRlcihmdW5jdGlvbigp e3JldHVybiB0aGlzLm5hbWUmJiF0aGlzLmRpc2FibGVkJiYodGhpcy5jaGVja2Vk fHwvc2VsZWN0fHRleHRhcmVhL2kudGVzdCh0aGlzLm5vZGVOYW1lKXx8L3RleHR8 aGlkZGVufHBhc3N3b3JkL2kudGVzdCh0aGlzLnR5cGUpKX0pLm1hcChmdW5jdGlv bihpLGVsZW0pe3ZhciB2YWw9alF1ZXJ5KHRoaXMpLnZhbCgpO3JldHVybiB2YWw9 PW51bGw/bnVsbDp2YWwuY29uc3RydWN0b3I9PUFycmF5P2pRdWVyeS5tYXAodmFs LGZ1bmN0aW9uKHZhbCxpKXtyZXR1cm57bmFtZTplbGVtLm5hbWUsdmFsdWU6dmFs fX0pOntuYW1lOmVsZW0ubmFtZSx2YWx1ZTp2YWx9fSkuZ2V0KCl9fSk7alF1ZXJ5 LmVhY2goImFqYXhTdGFydCxhamF4U3RvcCxhamF4Q29tcGxldGUsYWpheEVycm9y LGFqYXhTdWNjZXNzLGFqYXhTZW5kIi5zcGxpdCgiLCIpLGZ1bmN0aW9uKGksbyl7 alF1ZXJ5LmZuW29dPWZ1bmN0aW9uKGYpe3JldHVybiB0aGlzLmJpbmQobyxmKX19 KTt2YXIganNjPShuZXcgRGF0ZSkuZ2V0VGltZSgpO2pRdWVyeS5leHRlbmQoe2dl dDpmdW5jdGlvbih1cmwsZGF0YSxjYWxsYmFjayx0eXBlKXtpZihqUXVlcnkuaXNG dW5jdGlvbihkYXRhKSl7Y2FsbGJhY2s9ZGF0YTtkYXRhPW51bGx9cmV0dXJuIGpR dWVyeS5hamF4KHt0eXBlOiJHRVQiLHVybDp1cmwsZGF0YTpkYXRhLHN1Y2Nlc3M6 Y2FsbGJhY2ssZGF0YVR5cGU6dHlwZX0pfSxnZXRTY3JpcHQ6ZnVuY3Rpb24odXJs LGNhbGxiYWNrKXtyZXR1cm4galF1ZXJ5LmdldCh1cmwsbnVsbCxjYWxsYmFjaywi c2NyaXB0Iil9LGdldEpTT046ZnVuY3Rpb24odXJsLGRhdGEsY2FsbGJhY2spe3Jl dHVybiBqUXVlcnkuZ2V0KHVybCxkYXRhLGNhbGxiYWNrLCJqc29uIil9LHBvc3Q6 ZnVuY3Rpb24odXJsLGRhdGEsY2FsbGJhY2ssdHlwZSl7aWYoalF1ZXJ5LmlzRnVu Y3Rpb24oZGF0YSkpe2NhbGxiYWNrPWRhdGE7ZGF0YT17fX1yZXR1cm4galF1ZXJ5 LmFqYXgoe3R5cGU6IlBPU1QiLHVybDp1cmwsZGF0YTpkYXRhLHN1Y2Nlc3M6Y2Fs bGJhY2ssZGF0YVR5cGU6dHlwZX0pfSxhamF4U2V0dXA6ZnVuY3Rpb24oc2V0dGlu Z3Mpe2pRdWVyeS5leHRlbmQoalF1ZXJ5LmFqYXhTZXR0aW5ncyxzZXR0aW5ncyl9 LGFqYXhTZXR0aW5nczp7Z2xvYmFsOnRydWUsdHlwZToiR0VUIix0aW1lb3V0OjAs Y29udGVudFR5cGU6ImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIs cHJvY2Vzc0RhdGE6dHJ1ZSxhc3luYzp0cnVlLGRhdGE6bnVsbCx1c2VybmFtZTpu dWxsLHBhc3N3b3JkOm51bGwsYWNjZXB0czp7eG1sOiJhcHBsaWNhdGlvbi94bWws IHRleHQveG1sIixodG1sOiJ0ZXh0L2h0bWwiLHNjcmlwdDoidGV4dC9qYXZhc2Ny aXB0LCBhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Iixqc29uOiJhcHBsaWNhdGlvbi9q c29uLCB0ZXh0L2phdmFzY3JpcHQiLHRleHQ6InRleHQvcGxhaW4iLF9kZWZhdWx0 OiIqLyoifX0sbGFzdE1vZGlmaWVkOnt9LGFqYXg6ZnVuY3Rpb24ocyl7dmFyIGpz b25wLGpzcmU9Lz1cPygmfCQpL2csc3RhdHVzLGRhdGE7cz1qUXVlcnkuZXh0ZW5k KHRydWUscyxqUXVlcnkuZXh0ZW5kKHRydWUse30salF1ZXJ5LmFqYXhTZXR0aW5n cyxzKSk7aWYocy5kYXRhJiZzLnByb2Nlc3NEYXRhJiZ0eXBlb2Ygcy5kYXRhIT0i c3RyaW5nIilzLmRhdGE9alF1ZXJ5LnBhcmFtKHMuZGF0YSk7aWYocy5kYXRhVHlw ZT09Impzb25wIil7aWYocy50eXBlLnRvTG93ZXJDYXNlKCk9PSJnZXQiKXtpZigh cy51cmwubWF0Y2goanNyZSkpcy51cmwrPShzLnVybC5tYXRjaCgvXD8vKT8iJiI6 Ij8iKSsocy5qc29ucHx8ImNhbGxiYWNrIikrIj0/In1lbHNlIGlmKCFzLmRhdGF8 fCFzLmRhdGEubWF0Y2goanNyZSkpcy5kYXRhPShzLmRhdGE/cy5kYXRhKyImIjoi IikrKHMuanNvbnB8fCJjYWxsYmFjayIpKyI9PyI7cy5kYXRhVHlwZT0ianNvbiJ9 aWYocy5kYXRhVHlwZT09Impzb24iJiYocy5kYXRhJiZzLmRhdGEubWF0Y2goanNy ZSl8fHMudXJsLm1hdGNoKGpzcmUpKSl7anNvbnA9Impzb25wIitqc2MrKztpZihz LmRhdGEpcy5kYXRhPShzLmRhdGErIiIpLnJlcGxhY2UoanNyZSwiPSIranNvbnAr IiQxIik7cy51cmw9cy51cmwucmVwbGFjZShqc3JlLCI9Iitqc29ucCsiJDEiKTtz LmRhdGFUeXBlPSJzY3JpcHQiO3dpbmRvd1tqc29ucF09ZnVuY3Rpb24odG1wKXtk YXRhPXRtcDtzdWNjZXNzKCk7Y29tcGxldGUoKTt3aW5kb3dbanNvbnBdPXVuZGVm aW5lZDt0cnl7ZGVsZXRlIHdpbmRvd1tqc29ucF19Y2F0Y2goZSl7fWlmKGhlYWQp aGVhZC5yZW1vdmVDaGlsZChzY3JpcHQpfX1pZihzLmRhdGFUeXBlPT0ic2NyaXB0 IiYmcy5jYWNoZT09bnVsbClzLmNhY2hlPWZhbHNlO2lmKHMuY2FjaGU9PT1mYWxz ZSYmcy50eXBlLnRvTG93ZXJDYXNlKCk9PSJnZXQiKXt2YXIgdHM9KG5ldyBEYXRl KCkpLmdldFRpbWUoKTt2YXIgcmV0PXMudXJsLnJlcGxhY2UoLyhcP3wmKV89Lio/ KCZ8JCkvLCIkMV89Iit0cysiJDIiKTtzLnVybD1yZXQrKChyZXQ9PXMudXJsKT8o cy51cmwubWF0Y2goL1w/Lyk/IiYiOiI/IikrIl89Iit0czoiIil9aWYocy5kYXRh JiZzLnR5cGUudG9Mb3dlckNhc2UoKT09ImdldCIpe3MudXJsKz0ocy51cmwubWF0 Y2goL1w/Lyk/IiYiOiI/Iikrcy5kYXRhO3MuZGF0YT1udWxsfWlmKHMuZ2xvYmFs JiYhalF1ZXJ5LmFjdGl2ZSsrKWpRdWVyeS5ldmVudC50cmlnZ2VyKCJhamF4U3Rh cnQiKTtpZigoIXMudXJsLmluZGV4T2YoImh0dHAiKXx8IXMudXJsLmluZGV4T2Yo Ii8vIikpJiYocy5kYXRhVHlwZT09InNjcmlwdCJ8fHMuZGF0YVR5cGU9PSJqc29u IikmJnMudHlwZS50b0xvd2VyQ2FzZSgpPT0iZ2V0Iil7dmFyIGhlYWQ9ZG9jdW1l bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImhlYWQiKVswXTt2YXIgc2NyaXB0PWRv Y3VtZW50LmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpO3NjcmlwdC5zcmM9cy51cmw7 aWYocy5zY3JpcHRDaGFyc2V0KXNjcmlwdC5jaGFyc2V0PXMuc2NyaXB0Q2hhcnNl dDtpZighanNvbnApe3ZhciBkb25lPWZhbHNlO3NjcmlwdC5vbmxvYWQ9c2NyaXB0 Lm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5jdGlvbigpe2lmKCFkb25lJiYoIXRoaXMu cmVhZHlTdGF0ZXx8dGhpcy5yZWFkeVN0YXRlPT0ibG9hZGVkInx8dGhpcy5yZWFk eVN0YXRlPT0iY29tcGxldGUiKSl7ZG9uZT10cnVlO3N1Y2Nlc3MoKTtjb21wbGV0 ZSgpO2hlYWQucmVtb3ZlQ2hpbGQoc2NyaXB0KX19fWhlYWQuYXBwZW5kQ2hpbGQo c2NyaXB0KTtyZXR1cm4gdW5kZWZpbmVkfXZhciByZXF1ZXN0RG9uZT1mYWxzZTt2 YXIgeG1sPXdpbmRvdy5BY3RpdmVYT2JqZWN0P25ldyBBY3RpdmVYT2JqZWN0KCJN aWNyb3NvZnQuWE1MSFRUUCIpOm5ldyBYTUxIdHRwUmVxdWVzdCgpO3htbC5vcGVu KHMudHlwZSxzLnVybCxzLmFzeW5jLHMudXNlcm5hbWUscy5wYXNzd29yZCk7dHJ5 e2lmKHMuZGF0YSl4bWwuc2V0UmVxdWVzdEhlYWRlcigiQ29udGVudC1UeXBlIixz LmNvbnRlbnRUeXBlKTtpZihzLmlmTW9kaWZpZWQpeG1sLnNldFJlcXVlc3RIZWFk ZXIoIklmLU1vZGlmaWVkLVNpbmNlIixqUXVlcnkubGFzdE1vZGlmaWVkW3MudXJs XXx8IlRodSwgMDEgSmFuIDE5NzAgMDA6MDA6MDAgR01UIik7eG1sLnNldFJlcXVl c3RIZWFkZXIoIlgtUmVxdWVzdGVkLVdpdGgiLCJYTUxIdHRwUmVxdWVzdCIpO3ht bC5zZXRSZXF1ZXN0SGVhZGVyKCJBY2NlcHQiLHMuZGF0YVR5cGUmJnMuYWNjZXB0 c1tzLmRhdGFUeXBlXT9zLmFjY2VwdHNbcy5kYXRhVHlwZV0rIiwgKi8qIjpzLmFj Y2VwdHMuX2RlZmF1bHQpfWNhdGNoKGUpe31pZihzLmJlZm9yZVNlbmQpcy5iZWZv cmVTZW5kKHhtbCk7aWYocy5nbG9iYWwpalF1ZXJ5LmV2ZW50LnRyaWdnZXIoImFq YXhTZW5kIixbeG1sLHNdKTt2YXIgb25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9u KGlzVGltZW91dCl7aWYoIXJlcXVlc3REb25lJiZ4bWwmJih4bWwucmVhZHlTdGF0 ZT09NHx8aXNUaW1lb3V0PT0idGltZW91dCIpKXtyZXF1ZXN0RG9uZT10cnVlO2lm KGl2YWwpe2NsZWFySW50ZXJ2YWwoaXZhbCk7aXZhbD1udWxsfXN0YXR1cz1pc1Rp bWVvdXQ9PSJ0aW1lb3V0IiYmInRpbWVvdXQifHwhalF1ZXJ5Lmh0dHBTdWNjZXNz KHhtbCkmJiJlcnJvciJ8fHMuaWZNb2RpZmllZCYmalF1ZXJ5Lmh0dHBOb3RNb2Rp ZmllZCh4bWwscy51cmwpJiYibm90bW9kaWZpZWQifHwic3VjY2VzcyI7aWYoc3Rh dHVzPT0ic3VjY2VzcyIpe3RyeXtkYXRhPWpRdWVyeS5odHRwRGF0YSh4bWwscy5k YXRhVHlwZSl9Y2F0Y2goZSl7c3RhdHVzPSJwYXJzZXJlcnJvciJ9fWlmKHN0YXR1 cz09InN1Y2Nlc3MiKXt2YXIgbW9kUmVzO3RyeXttb2RSZXM9eG1sLmdldFJlc3Bv bnNlSGVhZGVyKCJMYXN0LU1vZGlmaWVkIil9Y2F0Y2goZSl7fWlmKHMuaWZNb2Rp ZmllZCYmbW9kUmVzKWpRdWVyeS5sYXN0TW9kaWZpZWRbcy51cmxdPW1vZFJlcztp ZighanNvbnApc3VjY2VzcygpfWVsc2UgalF1ZXJ5LmhhbmRsZUVycm9yKHMseG1s LHN0YXR1cyk7Y29tcGxldGUoKTtpZihzLmFzeW5jKXhtbD1udWxsfX07aWYocy5h c3luYyl7dmFyIGl2YWw9c2V0SW50ZXJ2YWwob25yZWFkeXN0YXRlY2hhbmdlLDEz KTtpZihzLnRpbWVvdXQ+MClzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7aWYoeG1sKXt4 bWwuYWJvcnQoKTtpZighcmVxdWVzdERvbmUpb25yZWFkeXN0YXRlY2hhbmdlKCJ0 aW1lb3V0Iil9fSxzLnRpbWVvdXQpfXRyeXt4bWwuc2VuZChzLmRhdGEpfWNhdGNo KGUpe2pRdWVyeS5oYW5kbGVFcnJvcihzLHhtbCxudWxsLGUpfWlmKCFzLmFzeW5j KW9ucmVhZHlzdGF0ZWNoYW5nZSgpO2Z1bmN0aW9uIHN1Y2Nlc3MoKXtpZihzLnN1 Y2Nlc3Mpcy5zdWNjZXNzKGRhdGEsc3RhdHVzKTtpZihzLmdsb2JhbClqUXVlcnku ZXZlbnQudHJpZ2dlcigiYWpheFN1Y2Nlc3MiLFt4bWwsc10pfWZ1bmN0aW9uIGNv bXBsZXRlKCl7aWYocy5jb21wbGV0ZSlzLmNvbXBsZXRlKHhtbCxzdGF0dXMpO2lm KHMuZ2xvYmFsKWpRdWVyeS5ldmVudC50cmlnZ2VyKCJhamF4Q29tcGxldGUiLFt4 bWwsc10pO2lmKHMuZ2xvYmFsJiYhLS1qUXVlcnkuYWN0aXZlKWpRdWVyeS5ldmVu dC50cmlnZ2VyKCJhamF4U3RvcCIpfXJldHVybiB4bWx9LGhhbmRsZUVycm9yOmZ1 bmN0aW9uKHMseG1sLHN0YXR1cyxlKXtpZihzLmVycm9yKXMuZXJyb3IoeG1sLHN0 YXR1cyxlKTtpZihzLmdsb2JhbClqUXVlcnkuZXZlbnQudHJpZ2dlcigiYWpheEVy cm9yIixbeG1sLHMsZV0pfSxhY3RpdmU6MCxodHRwU3VjY2VzczpmdW5jdGlvbihy KXt0cnl7cmV0dXJuIXIuc3RhdHVzJiZsb2NhdGlvbi5wcm90b2NvbD09ImZpbGU6 Inx8KHIuc3RhdHVzPj0yMDAmJnIuc3RhdHVzPDMwMCl8fHIuc3RhdHVzPT0zMDR8 fHIuc3RhdHVzPT0xMjIzfHxqUXVlcnkuYnJvd3Nlci5zYWZhcmkmJnIuc3RhdHVz PT11bmRlZmluZWR9Y2F0Y2goZSl7fXJldHVybiBmYWxzZX0saHR0cE5vdE1vZGlm aWVkOmZ1bmN0aW9uKHhtbCx1cmwpe3RyeXt2YXIgeG1sUmVzPXhtbC5nZXRSZXNw b25zZUhlYWRlcigiTGFzdC1Nb2RpZmllZCIpO3JldHVybiB4bWwuc3RhdHVzPT0z MDR8fHhtbFJlcz09alF1ZXJ5Lmxhc3RNb2RpZmllZFt1cmxdfHxqUXVlcnkuYnJv d3Nlci5zYWZhcmkmJnhtbC5zdGF0dXM9PXVuZGVmaW5lZH1jYXRjaChlKXt9cmV0 dXJuIGZhbHNlfSxodHRwRGF0YTpmdW5jdGlvbihyLHR5cGUpe3ZhciBjdD1yLmdl dFJlc3BvbnNlSGVhZGVyKCJjb250ZW50LXR5cGUiKTt2YXIgeG1sPXR5cGU9PSJ4 bWwifHwhdHlwZSYmY3QmJmN0LmluZGV4T2YoInhtbCIpPj0wO3ZhciBkYXRhPXht bD9yLnJlc3BvbnNlWE1MOnIucmVzcG9uc2VUZXh0O2lmKHhtbCYmZGF0YS5kb2N1 bWVudEVsZW1lbnQudGFnTmFtZT09InBhcnNlcmVycm9yIil0aHJvdyJwYXJzZXJl cnJvciI7aWYodHlwZT09InNjcmlwdCIpalF1ZXJ5Lmdsb2JhbEV2YWwoZGF0YSk7 aWYodHlwZT09Impzb24iKWRhdGE9ZXZhbCgiKCIrZGF0YSsiKSIpO3JldHVybiBk YXRhfSxwYXJhbTpmdW5jdGlvbihhKXt2YXIgcz1bXTtpZihhLmNvbnN0cnVjdG9y PT1BcnJheXx8YS5qcXVlcnkpalF1ZXJ5LmVhY2goYSxmdW5jdGlvbigpe3MucHVz aChlbmNvZGVVUklDb21wb25lbnQodGhpcy5uYW1lKSsiPSIrZW5jb2RlVVJJQ29t cG9uZW50KHRoaXMudmFsdWUpKX0pO2Vsc2UgZm9yKHZhciBqIGluIGEpaWYoYVtq XSYmYVtqXS5jb25zdHJ1Y3Rvcj09QXJyYXkpalF1ZXJ5LmVhY2goYVtqXSxmdW5j dGlvbigpe3MucHVzaChlbmNvZGVVUklDb21wb25lbnQoaikrIj0iK2VuY29kZVVS SUNvbXBvbmVudCh0aGlzKSl9KTtlbHNlIHMucHVzaChlbmNvZGVVUklDb21wb25l bnQoaikrIj0iK2VuY29kZVVSSUNvbXBvbmVudChhW2pdKSk7cmV0dXJuIHMuam9p bigiJiIpLnJlcGxhY2UoLyUyMC9nLCIrIil9fSk7alF1ZXJ5LmZuLmV4dGVuZCh7 c2hvdzpmdW5jdGlvbihzcGVlZCxjYWxsYmFjayl7cmV0dXJuIHNwZWVkP3RoaXMu YW5pbWF0ZSh7aGVpZ2h0OiJzaG93Iix3aWR0aDoic2hvdyIsb3BhY2l0eToic2hv dyJ9LHNwZWVkLGNhbGxiYWNrKTp0aGlzLmZpbHRlcigiOmhpZGRlbiIpLmVhY2go ZnVuY3Rpb24oKXt0aGlzLnN0eWxlLmRpc3BsYXk9dGhpcy5vbGRibG9ja3x8IiI7 aWYoalF1ZXJ5LmNzcyh0aGlzLCJkaXNwbGF5Iik9PSJub25lIil7dmFyIGVsZW09 alF1ZXJ5KCI8Iit0aGlzLnRhZ05hbWUrIiAvPiIpLmFwcGVuZFRvKCJib2R5Iik7 dGhpcy5zdHlsZS5kaXNwbGF5PWVsZW0uY3NzKCJkaXNwbGF5Iik7aWYodGhpcy5z dHlsZS5kaXNwbGF5PT0ibm9uZSIpdGhpcy5zdHlsZS5kaXNwbGF5PSJibG9jayI7 ZWxlbS5yZW1vdmUoKX19KS5lbmQoKX0saGlkZTpmdW5jdGlvbihzcGVlZCxjYWxs YmFjayl7cmV0dXJuIHNwZWVkP3RoaXMuYW5pbWF0ZSh7aGVpZ2h0OiJoaWRlIix3 aWR0aDoiaGlkZSIsb3BhY2l0eToiaGlkZSJ9LHNwZWVkLGNhbGxiYWNrKTp0aGlz LmZpbHRlcigiOnZpc2libGUiKS5lYWNoKGZ1bmN0aW9uKCl7dGhpcy5vbGRibG9j az10aGlzLm9sZGJsb2NrfHxqUXVlcnkuY3NzKHRoaXMsImRpc3BsYXkiKTt0aGlz LnN0eWxlLmRpc3BsYXk9Im5vbmUifSkuZW5kKCl9LF90b2dnbGU6alF1ZXJ5LmZu LnRvZ2dsZSx0b2dnbGU6ZnVuY3Rpb24oZm4sZm4yKXtyZXR1cm4galF1ZXJ5Lmlz RnVuY3Rpb24oZm4pJiZqUXVlcnkuaXNGdW5jdGlvbihmbjIpP3RoaXMuX3RvZ2ds ZShmbixmbjIpOmZuP3RoaXMuYW5pbWF0ZSh7aGVpZ2h0OiJ0b2dnbGUiLHdpZHRo OiJ0b2dnbGUiLG9wYWNpdHk6InRvZ2dsZSJ9LGZuLGZuMik6dGhpcy5lYWNoKGZ1 bmN0aW9uKCl7alF1ZXJ5KHRoaXMpW2pRdWVyeSh0aGlzKS5pcygiOmhpZGRlbiIp PyJzaG93IjoiaGlkZSJdKCl9KX0sc2xpZGVEb3duOmZ1bmN0aW9uKHNwZWVkLGNh bGxiYWNrKXtyZXR1cm4gdGhpcy5hbmltYXRlKHtoZWlnaHQ6InNob3cifSxzcGVl ZCxjYWxsYmFjayl9LHNsaWRlVXA6ZnVuY3Rpb24oc3BlZWQsY2FsbGJhY2spe3Jl dHVybiB0aGlzLmFuaW1hdGUoe2hlaWdodDoiaGlkZSJ9LHNwZWVkLGNhbGxiYWNr KX0sc2xpZGVUb2dnbGU6ZnVuY3Rpb24oc3BlZWQsY2FsbGJhY2spe3JldHVybiB0 aGlzLmFuaW1hdGUoe2hlaWdodDoidG9nZ2xlIn0sc3BlZWQsY2FsbGJhY2spfSxm YWRlSW46ZnVuY3Rpb24oc3BlZWQsY2FsbGJhY2spe3JldHVybiB0aGlzLmFuaW1h dGUoe29wYWNpdHk6InNob3cifSxzcGVlZCxjYWxsYmFjayl9LGZhZGVPdXQ6ZnVu Y3Rpb24oc3BlZWQsY2FsbGJhY2spe3JldHVybiB0aGlzLmFuaW1hdGUoe29wYWNp dHk6ImhpZGUifSxzcGVlZCxjYWxsYmFjayl9LGZhZGVUbzpmdW5jdGlvbihzcGVl ZCx0byxjYWxsYmFjayl7cmV0dXJuIHRoaXMuYW5pbWF0ZSh7b3BhY2l0eTp0b30s c3BlZWQsY2FsbGJhY2spfSxhbmltYXRlOmZ1bmN0aW9uKHByb3Asc3BlZWQsZWFz aW5nLGNhbGxiYWNrKXt2YXIgb3B0YWxsPWpRdWVyeS5zcGVlZChzcGVlZCxlYXNp bmcsY2FsbGJhY2spO3JldHVybiB0aGlzW29wdGFsbC5xdWV1ZT09PWZhbHNlPyJl YWNoIjoicXVldWUiXShmdW5jdGlvbigpe2lmKHRoaXMubm9kZVR5cGUhPTEpcmV0 dXJuIGZhbHNlO3ZhciBvcHQ9alF1ZXJ5LmV4dGVuZCh7fSxvcHRhbGwpO3ZhciBo aWRkZW49alF1ZXJ5KHRoaXMpLmlzKCI6aGlkZGVuIiksc2VsZj10aGlzO2Zvcih2 YXIgcCBpbiBwcm9wKXtpZihwcm9wW3BdPT0iaGlkZSImJmhpZGRlbnx8cHJvcFtw XT09InNob3ciJiYhaGlkZGVuKXJldHVybiBqUXVlcnkuaXNGdW5jdGlvbihvcHQu Y29tcGxldGUpJiZvcHQuY29tcGxldGUuYXBwbHkodGhpcyk7aWYocD09ImhlaWdo dCJ8fHA9PSJ3aWR0aCIpe29wdC5kaXNwbGF5PWpRdWVyeS5jc3ModGhpcywiZGlz cGxheSIpO29wdC5vdmVyZmxvdz10aGlzLnN0eWxlLm92ZXJmbG93fX1pZihvcHQu b3ZlcmZsb3chPW51bGwpdGhpcy5zdHlsZS5vdmVyZmxvdz0iaGlkZGVuIjtvcHQu Y3VyQW5pbT1qUXVlcnkuZXh0ZW5kKHt9LHByb3ApO2pRdWVyeS5lYWNoKHByb3As ZnVuY3Rpb24obmFtZSx2YWwpe3ZhciBlPW5ldyBqUXVlcnkuZngoc2VsZixvcHQs bmFtZSk7aWYoL3RvZ2dsZXxzaG93fGhpZGUvLnRlc3QodmFsKSllW3ZhbD09InRv Z2dsZSI/aGlkZGVuPyJzaG93IjoiaGlkZSI6dmFsXShwcm9wKTtlbHNle3ZhciBw YXJ0cz12YWwudG9TdHJpbmcoKS5tYXRjaCgvXihbKy1dPSk/KFtcZCstLl0rKSgu KikkLyksc3RhcnQ9ZS5jdXIodHJ1ZSl8fDA7aWYocGFydHMpe3ZhciBlbmQ9cGFy c2VGbG9hdChwYXJ0c1syXSksdW5pdD1wYXJ0c1szXXx8InB4IjtpZih1bml0IT0i cHgiKXtzZWxmLnN0eWxlW25hbWVdPShlbmR8fDEpK3VuaXQ7c3RhcnQ9KChlbmR8 fDEpL2UuY3VyKHRydWUpKSpzdGFydDtzZWxmLnN0eWxlW25hbWVdPXN0YXJ0K3Vu aXR9aWYocGFydHNbMV0pZW5kPSgocGFydHNbMV09PSItPSI/LTE6MSkqZW5kKStz dGFydDtlLmN1c3RvbShzdGFydCxlbmQsdW5pdCl9ZWxzZSBlLmN1c3RvbShzdGFy dCx2YWwsIiIpfX0pO3JldHVybiB0cnVlfSl9LHF1ZXVlOmZ1bmN0aW9uKHR5cGUs Zm4pe2lmKGpRdWVyeS5pc0Z1bmN0aW9uKHR5cGUpfHwodHlwZSYmdHlwZS5jb25z dHJ1Y3Rvcj09QXJyYXkpKXtmbj10eXBlO3R5cGU9ImZ4In1pZighdHlwZXx8KHR5 cGVvZiB0eXBlPT0ic3RyaW5nIiYmIWZuKSlyZXR1cm4gcXVldWUodGhpc1swXSx0 eXBlKTtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7aWYoZm4uY29uc3RydWN0 b3I9PUFycmF5KXF1ZXVlKHRoaXMsdHlwZSxmbik7ZWxzZXtxdWV1ZSh0aGlzLHR5 cGUpLnB1c2goZm4pO2lmKHF1ZXVlKHRoaXMsdHlwZSkubGVuZ3RoPT0xKWZuLmFw cGx5KHRoaXMpfX0pfSxzdG9wOmZ1bmN0aW9uKGNsZWFyUXVldWUsZ290b0VuZCl7 dmFyIHRpbWVycz1qUXVlcnkudGltZXJzO2lmKGNsZWFyUXVldWUpdGhpcy5xdWV1 ZShbXSk7dGhpcy5lYWNoKGZ1bmN0aW9uKCl7Zm9yKHZhciBpPXRpbWVycy5sZW5n dGgtMTtpPj0wO2ktLSlpZih0aW1lcnNbaV0uZWxlbT09dGhpcyl7aWYoZ290b0Vu ZCl0aW1lcnNbaV0odHJ1ZSk7dGltZXJzLnNwbGljZShpLDEpfX0pO2lmKCFnb3Rv RW5kKXRoaXMuZGVxdWV1ZSgpO3JldHVybiB0aGlzfX0pO3ZhciBxdWV1ZT1mdW5j dGlvbihlbGVtLHR5cGUsYXJyYXkpe2lmKCFlbGVtKXJldHVybiB1bmRlZmluZWQ7 dHlwZT10eXBlfHwiZngiO3ZhciBxPWpRdWVyeS5kYXRhKGVsZW0sdHlwZSsicXVl dWUiKTtpZighcXx8YXJyYXkpcT1qUXVlcnkuZGF0YShlbGVtLHR5cGUrInF1ZXVl IixhcnJheT9qUXVlcnkubWFrZUFycmF5KGFycmF5KTpbXSk7cmV0dXJuIHF9O2pR dWVyeS5mbi5kZXF1ZXVlPWZ1bmN0aW9uKHR5cGUpe3R5cGU9dHlwZXx8ImZ4Ijty ZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIHE9cXVldWUodGhpcyx0eXBl KTtxLnNoaWZ0KCk7aWYocS5sZW5ndGgpcVswXS5hcHBseSh0aGlzKX0pfTtqUXVl cnkuZXh0ZW5kKHtzcGVlZDpmdW5jdGlvbihzcGVlZCxlYXNpbmcsZm4pe3ZhciBv cHQ9c3BlZWQmJnNwZWVkLmNvbnN0cnVjdG9yPT1PYmplY3Q/c3BlZWQ6e2NvbXBs ZXRlOmZufHwhZm4mJmVhc2luZ3x8alF1ZXJ5LmlzRnVuY3Rpb24oc3BlZWQpJiZz cGVlZCxkdXJhdGlvbjpzcGVlZCxlYXNpbmc6Zm4mJmVhc2luZ3x8ZWFzaW5nJiZl YXNpbmcuY29uc3RydWN0b3IhPUZ1bmN0aW9uJiZlYXNpbmd9O29wdC5kdXJhdGlv bj0ob3B0LmR1cmF0aW9uJiZvcHQuZHVyYXRpb24uY29uc3RydWN0b3I9PU51bWJl cj9vcHQuZHVyYXRpb246e3Nsb3c6NjAwLGZhc3Q6MjAwfVtvcHQuZHVyYXRpb25d KXx8NDAwO29wdC5vbGQ9b3B0LmNvbXBsZXRlO29wdC5jb21wbGV0ZT1mdW5jdGlv bigpe2lmKG9wdC5xdWV1ZSE9PWZhbHNlKWpRdWVyeSh0aGlzKS5kZXF1ZXVlKCk7 aWYoalF1ZXJ5LmlzRnVuY3Rpb24ob3B0Lm9sZCkpb3B0Lm9sZC5hcHBseSh0aGlz KX07cmV0dXJuIG9wdH0sZWFzaW5nOntsaW5lYXI6ZnVuY3Rpb24ocCxuLGZpcnN0 TnVtLGRpZmYpe3JldHVybiBmaXJzdE51bStkaWZmKnB9LHN3aW5nOmZ1bmN0aW9u KHAsbixmaXJzdE51bSxkaWZmKXtyZXR1cm4oKC1NYXRoLmNvcyhwKk1hdGguUEkp LzIpKzAuNSkqZGlmZitmaXJzdE51bX19LHRpbWVyczpbXSx0aW1lcklkOm51bGws Zng6ZnVuY3Rpb24oZWxlbSxvcHRpb25zLHByb3Ape3RoaXMub3B0aW9ucz1vcHRp b25zO3RoaXMuZWxlbT1lbGVtO3RoaXMucHJvcD1wcm9wO2lmKCFvcHRpb25zLm9y aWcpb3B0aW9ucy5vcmlnPXt9fX0pO2pRdWVyeS5meC5wcm90b3R5cGU9e3VwZGF0 ZTpmdW5jdGlvbigpe2lmKHRoaXMub3B0aW9ucy5zdGVwKXRoaXMub3B0aW9ucy5z dGVwLmFwcGx5KHRoaXMuZWxlbSxbdGhpcy5ub3csdGhpc10pOyhqUXVlcnkuZngu c3RlcFt0aGlzLnByb3BdfHxqUXVlcnkuZnguc3RlcC5fZGVmYXVsdCkodGhpcyk7 aWYodGhpcy5wcm9wPT0iaGVpZ2h0Inx8dGhpcy5wcm9wPT0id2lkdGgiKXRoaXMu ZWxlbS5zdHlsZS5kaXNwbGF5PSJibG9jayJ9LGN1cjpmdW5jdGlvbihmb3JjZSl7 aWYodGhpcy5lbGVtW3RoaXMucHJvcF0hPW51bGwmJnRoaXMuZWxlbS5zdHlsZVt0 aGlzLnByb3BdPT1udWxsKXJldHVybiB0aGlzLmVsZW1bdGhpcy5wcm9wXTt2YXIg cj1wYXJzZUZsb2F0KGpRdWVyeS5jc3ModGhpcy5lbGVtLHRoaXMucHJvcCxmb3Jj ZSkpO3JldHVybiByJiZyPi0xMDAwMD9yOnBhcnNlRmxvYXQoalF1ZXJ5LmN1ckNT Uyh0aGlzLmVsZW0sdGhpcy5wcm9wKSl8fDB9LGN1c3RvbTpmdW5jdGlvbihmcm9t LHRvLHVuaXQpe3RoaXMuc3RhcnRUaW1lPShuZXcgRGF0ZSgpKS5nZXRUaW1lKCk7 dGhpcy5zdGFydD1mcm9tO3RoaXMuZW5kPXRvO3RoaXMudW5pdD11bml0fHx0aGlz LnVuaXR8fCJweCI7dGhpcy5ub3c9dGhpcy5zdGFydDt0aGlzLnBvcz10aGlzLnN0 YXRlPTA7dGhpcy51cGRhdGUoKTt2YXIgc2VsZj10aGlzO2Z1bmN0aW9uIHQoZ290 b0VuZCl7cmV0dXJuIHNlbGYuc3RlcChnb3RvRW5kKX10LmVsZW09dGhpcy5lbGVt O2pRdWVyeS50aW1lcnMucHVzaCh0KTtpZihqUXVlcnkudGltZXJJZD09bnVsbCl7 alF1ZXJ5LnRpbWVySWQ9c2V0SW50ZXJ2YWwoZnVuY3Rpb24oKXt2YXIgdGltZXJz PWpRdWVyeS50aW1lcnM7Zm9yKHZhciBpPTA7aTx0aW1lcnMubGVuZ3RoO2krKylp ZighdGltZXJzW2ldKCkpdGltZXJzLnNwbGljZShpLS0sMSk7aWYoIXRpbWVycy5s ZW5ndGgpe2NsZWFySW50ZXJ2YWwoalF1ZXJ5LnRpbWVySWQpO2pRdWVyeS50aW1l cklkPW51bGx9fSwxMyl9fSxzaG93OmZ1bmN0aW9uKCl7dGhpcy5vcHRpb25zLm9y aWdbdGhpcy5wcm9wXT1qUXVlcnkuYXR0cih0aGlzLmVsZW0uc3R5bGUsdGhpcy5w cm9wKTt0aGlzLm9wdGlvbnMuc2hvdz10cnVlO3RoaXMuY3VzdG9tKDAsdGhpcy5j dXIoKSk7aWYodGhpcy5wcm9wPT0id2lkdGgifHx0aGlzLnByb3A9PSJoZWlnaHQi KXRoaXMuZWxlbS5zdHlsZVt0aGlzLnByb3BdPSIxcHgiO2pRdWVyeSh0aGlzLmVs ZW0pLnNob3coKX0saGlkZTpmdW5jdGlvbigpe3RoaXMub3B0aW9ucy5vcmlnW3Ro aXMucHJvcF09alF1ZXJ5LmF0dHIodGhpcy5lbGVtLnN0eWxlLHRoaXMucHJvcCk7 dGhpcy5vcHRpb25zLmhpZGU9dHJ1ZTt0aGlzLmN1c3RvbSh0aGlzLmN1cigpLDAp fSxzdGVwOmZ1bmN0aW9uKGdvdG9FbmQpe3ZhciB0PShuZXcgRGF0ZSgpKS5nZXRU aW1lKCk7aWYoZ290b0VuZHx8dD50aGlzLm9wdGlvbnMuZHVyYXRpb24rdGhpcy5z dGFydFRpbWUpe3RoaXMubm93PXRoaXMuZW5kO3RoaXMucG9zPXRoaXMuc3RhdGU9 MTt0aGlzLnVwZGF0ZSgpO3RoaXMub3B0aW9ucy5jdXJBbmltW3RoaXMucHJvcF09 dHJ1ZTt2YXIgZG9uZT10cnVlO2Zvcih2YXIgaSBpbiB0aGlzLm9wdGlvbnMuY3Vy QW5pbSlpZih0aGlzLm9wdGlvbnMuY3VyQW5pbVtpXSE9PXRydWUpZG9uZT1mYWxz ZTtpZihkb25lKXtpZih0aGlzLm9wdGlvbnMuZGlzcGxheSE9bnVsbCl7dGhpcy5l bGVtLnN0eWxlLm92ZXJmbG93PXRoaXMub3B0aW9ucy5vdmVyZmxvdzt0aGlzLmVs ZW0uc3R5bGUuZGlzcGxheT10aGlzLm9wdGlvbnMuZGlzcGxheTtpZihqUXVlcnku Y3NzKHRoaXMuZWxlbSwiZGlzcGxheSIpPT0ibm9uZSIpdGhpcy5lbGVtLnN0eWxl LmRpc3BsYXk9ImJsb2NrIn1pZih0aGlzLm9wdGlvbnMuaGlkZSl0aGlzLmVsZW0u c3R5bGUuZGlzcGxheT0ibm9uZSI7aWYodGhpcy5vcHRpb25zLmhpZGV8fHRoaXMu b3B0aW9ucy5zaG93KWZvcih2YXIgcCBpbiB0aGlzLm9wdGlvbnMuY3VyQW5pbSlq UXVlcnkuYXR0cih0aGlzLmVsZW0uc3R5bGUscCx0aGlzLm9wdGlvbnMub3JpZ1tw XSl9aWYoZG9uZSYmalF1ZXJ5LmlzRnVuY3Rpb24odGhpcy5vcHRpb25zLmNvbXBs ZXRlKSl0aGlzLm9wdGlvbnMuY29tcGxldGUuYXBwbHkodGhpcy5lbGVtKTtyZXR1 cm4gZmFsc2V9ZWxzZXt2YXIgbj10LXRoaXMuc3RhcnRUaW1lO3RoaXMuc3RhdGU9 bi90aGlzLm9wdGlvbnMuZHVyYXRpb247dGhpcy5wb3M9alF1ZXJ5LmVhc2luZ1t0 aGlzLm9wdGlvbnMuZWFzaW5nfHwoalF1ZXJ5LmVhc2luZy5zd2luZz8ic3dpbmci OiJsaW5lYXIiKV0odGhpcy5zdGF0ZSxuLDAsMSx0aGlzLm9wdGlvbnMuZHVyYXRp b24pO3RoaXMubm93PXRoaXMuc3RhcnQrKCh0aGlzLmVuZC10aGlzLnN0YXJ0KSp0 aGlzLnBvcyk7dGhpcy51cGRhdGUoKX1yZXR1cm4gdHJ1ZX19O2pRdWVyeS5meC5z dGVwPXtzY3JvbGxMZWZ0OmZ1bmN0aW9uKGZ4KXtmeC5lbGVtLnNjcm9sbExlZnQ9 Zngubm93fSxzY3JvbGxUb3A6ZnVuY3Rpb24oZngpe2Z4LmVsZW0uc2Nyb2xsVG9w PWZ4Lm5vd30sb3BhY2l0eTpmdW5jdGlvbihmeCl7alF1ZXJ5LmF0dHIoZnguZWxl bS5zdHlsZSwib3BhY2l0eSIsZngubm93KX0sX2RlZmF1bHQ6ZnVuY3Rpb24oZngp e2Z4LmVsZW0uc3R5bGVbZngucHJvcF09Zngubm93K2Z4LnVuaXR9fTtqUXVlcnku Zm4ub2Zmc2V0PWZ1bmN0aW9uKCl7dmFyIGxlZnQ9MCx0b3A9MCxlbGVtPXRoaXNb MF0scmVzdWx0cztpZihlbGVtKXdpdGgoalF1ZXJ5LmJyb3dzZXIpe3ZhciBwYXJl bnQ9ZWxlbS5wYXJlbnROb2RlLG9mZnNldENoaWxkPWVsZW0sb2Zmc2V0UGFyZW50 PWVsZW0ub2Zmc2V0UGFyZW50LGRvYz1lbGVtLm93bmVyRG9jdW1lbnQsc2FmYXJp Mj1zYWZhcmkmJnBhcnNlSW50KHZlcnNpb24pPDUyMixmaXhlZD1qUXVlcnkuY3Nz KGVsZW0sInBvc2l0aW9uIik9PSJmaXhlZCI7aWYoZWxlbS5nZXRCb3VuZGluZ0Ns aWVudFJlY3Qpe3ZhciBib3g9ZWxlbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTth ZGQoYm94LmxlZnQrTWF0aC5tYXgoZG9jLmRvY3VtZW50RWxlbWVudC5zY3JvbGxM ZWZ0LGRvYy5ib2R5LnNjcm9sbExlZnQpLGJveC50b3ArTWF0aC5tYXgoZG9jLmRv Y3VtZW50RWxlbWVudC5zY3JvbGxUb3AsZG9jLmJvZHkuc2Nyb2xsVG9wKSk7YWRk KC1kb2MuZG9jdW1lbnRFbGVtZW50LmNsaWVudExlZnQsLWRvYy5kb2N1bWVudEVs ZW1lbnQuY2xpZW50VG9wKX1lbHNle2FkZChlbGVtLm9mZnNldExlZnQsZWxlbS5v ZmZzZXRUb3ApO3doaWxlKG9mZnNldFBhcmVudCl7YWRkKG9mZnNldFBhcmVudC5v ZmZzZXRMZWZ0LG9mZnNldFBhcmVudC5vZmZzZXRUb3ApO2lmKG1vemlsbGEmJiEv XnQoYWJsZXxkfGgpJC9pLnRlc3Qob2Zmc2V0UGFyZW50LnRhZ05hbWUpfHxzYWZh cmkmJiFzYWZhcmkyKWJvcmRlcihvZmZzZXRQYXJlbnQpO2lmKCFmaXhlZCYmalF1 ZXJ5LmNzcyhvZmZzZXRQYXJlbnQsInBvc2l0aW9uIik9PSJmaXhlZCIpZml4ZWQ9 dHJ1ZTtvZmZzZXRDaGlsZD0vXmJvZHkkL2kudGVzdChvZmZzZXRQYXJlbnQudGFn TmFtZSk/b2Zmc2V0Q2hpbGQ6b2Zmc2V0UGFyZW50O29mZnNldFBhcmVudD1vZmZz ZXRQYXJlbnQub2Zmc2V0UGFyZW50fXdoaWxlKHBhcmVudCYmcGFyZW50LnRhZ05h bWUmJiEvXmJvZHl8aHRtbCQvaS50ZXN0KHBhcmVudC50YWdOYW1lKSl7aWYoIS9e aW5saW5lfHRhYmxlLiokL2kudGVzdChqUXVlcnkuY3NzKHBhcmVudCwiZGlzcGxh eSIpKSlhZGQoLXBhcmVudC5zY3JvbGxMZWZ0LC1wYXJlbnQuc2Nyb2xsVG9wKTtp Zihtb3ppbGxhJiZqUXVlcnkuY3NzKHBhcmVudCwib3ZlcmZsb3ciKSE9InZpc2li bGUiKWJvcmRlcihwYXJlbnQpO3BhcmVudD1wYXJlbnQucGFyZW50Tm9kZX1pZigo c2FmYXJpMiYmKGZpeGVkfHxqUXVlcnkuY3NzKG9mZnNldENoaWxkLCJwb3NpdGlv biIpPT0iYWJzb2x1dGUiKSl8fChtb3ppbGxhJiZqUXVlcnkuY3NzKG9mZnNldENo aWxkLCJwb3NpdGlvbiIpIT0iYWJzb2x1dGUiKSlhZGQoLWRvYy5ib2R5Lm9mZnNl dExlZnQsLWRvYy5ib2R5Lm9mZnNldFRvcCk7aWYoZml4ZWQpYWRkKE1hdGgubWF4 KGRvYy5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsTGVmdCxkb2MuYm9keS5zY3JvbGxM ZWZ0KSxNYXRoLm1heChkb2MuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRvcCxkb2Mu Ym9keS5zY3JvbGxUb3ApKX1yZXN1bHRzPXt0b3A6dG9wLGxlZnQ6bGVmdH19ZnVu Y3Rpb24gYm9yZGVyKGVsZW0pe2FkZChqUXVlcnkuY3VyQ1NTKGVsZW0sImJvcmRl ckxlZnRXaWR0aCIsdHJ1ZSksalF1ZXJ5LmN1ckNTUyhlbGVtLCJib3JkZXJUb3BX aWR0aCIsdHJ1ZSkpfWZ1bmN0aW9uIGFkZChsLHQpe2xlZnQrPXBhcnNlSW50KGwp fHwwO3RvcCs9cGFyc2VJbnQodCl8fDB9cmV0dXJuIHJlc3VsdHN9fSkoKTsNCg0K LyoNCiAqIGpxTW9kYWwgLSBNaW5pbWFsaXN0IE1vZGFsaW5nIHdpdGggalF1ZXJ5 DQogKg0KICogQ29weXJpZ2h0IChjKSAyMDA3IEJyaWNlIEJ1cmdlc3MgPGJoYkBp Y2VidXJnLm5ldD4sIGh0dHA6Ly93d3cuaWNlYnVyZy5uZXQNCiAqIExpY2Vuc2Vk IHVuZGVyIHRoZSBNSVQgTGljZW5zZToNCiAqIGh0dHA6Ly93d3cub3BlbnNvdXJj ZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwDQogKiANCiAqICRWZXJzaW9u OiAyMDA3LjA4LjE3ICtyMTENCiAqIA0KICovDQooZnVuY3Rpb24oJCl7JC5mbi5q cW09ZnVuY3Rpb24obyl7dmFyIF9vPXt6SW5kZXg6MzAwMCxvdmVybGF5OjUwLG92 ZXJsYXlDbGFzczonanFtT3ZlcmxheScsY2xvc2VDbGFzczonanFtQ2xvc2UnLHRy aWdnZXI6Jy5qcU1vZGFsJyxhamF4OmZhbHNlLHRhcmdldDpmYWxzZSxtb2RhbDpm YWxzZSx0b1RvcDpmYWxzZSxvblNob3c6ZmFsc2Usb25IaWRlOmZhbHNlLG9uTG9h ZDpmYWxzZX07cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2lmKHRoaXMuX2px bSlyZXR1cm47cysrO3RoaXMuX2pxbT1zO0hbc109e2M6JC5leHRlbmQoX28sbyks YTpmYWxzZSx3OiQodGhpcykuYWRkQ2xhc3MoJ2pxbUlEJytzKSxzOnN9O2lmKF9v LnRyaWdnZXIpJCh0aGlzKS5qcW1BZGRUcmlnZ2VyKF9vLnRyaWdnZXIpfSl9OyQu Zm4uanFtQWRkQ2xvc2U9ZnVuY3Rpb24oZSl7aHModGhpcyxlLCdqcW1IaWRlJyk7 cmV0dXJuIHRoaXN9OyQuZm4uanFtQWRkVHJpZ2dlcj1mdW5jdGlvbihlKXtocyh0 aGlzLGUsJ2pxbVNob3cnKTtyZXR1cm4gdGhpc307JC5mbi5qcW1TaG93PWZ1bmN0 aW9uKHQpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtpZighSFt0aGlzLl9q cW1dLmEpJC5qcW0ub3Blbih0aGlzLl9qcW0sdCl9KX07JC5mbi5qcW1IaWRlPWZ1 bmN0aW9uKHQpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtpZihIW3RoaXMu X2pxbV0uYSkkLmpxbS5jbG9zZSh0aGlzLl9qcW0sdCl9KX07JC5qcW09e2hhc2g6 e30sb3BlbjpmdW5jdGlvbihzLHQpe3ZhciBoPUhbc10sYz1oLmMsY2M9Jy4nK2Mu Y2xvc2VDbGFzcyx6PSgvXlxkKyQvLnRlc3QoaC53LmNzcygnei1pbmRleCcpKSk/ aC53LmNzcygnei1pbmRleCcpOmMuekluZGV4LG89JCgnPGRpdj48L2Rpdj4nKS5j c3Moe2hlaWdodDonMTAwJScsd2lkdGg6JzEwMCUnLHBvc2l0aW9uOidmaXhlZCcs bGVmdDowLHRvcDowLCd6LWluZGV4Jzp6LTEsb3BhY2l0eTpjLm92ZXJsYXkvMTAw fSk7aC50PXQ7aC5hPXRydWU7aC53LmNzcygnei1pbmRleCcseik7aWYoYy5tb2Rh bCl7aWYoIUFbMF0pRignYmluZCcpO0EucHVzaChzKTtvLmNzcygnY3Vyc29yJywn d2FpdCcpfWVsc2UgaWYoYy5vdmVybGF5PjApaC53LmpxbUFkZENsb3NlKG8pO2Vs c2Ugbz1mYWxzZTtoLm89KG8pP28uYWRkQ2xhc3MoYy5vdmVybGF5Q2xhc3MpLnBy ZXBlbmRUbygnYm9keScpOmZhbHNlO2lmKGllNil7JCgnaHRtbCxib2R5JykuY3Nz KHtoZWlnaHQ6JzEwMCUnLHdpZHRoOicxMDAlJ30pO2lmKG8pe289by5jc3Moe3Bv c2l0aW9uOidhYnNvbHV0ZSd9KVswXTtmb3IodmFyIHkgaW57VG9wOjEsTGVmdDox fSlvLnN0eWxlLnNldEV4cHJlc3Npb24oeS50b0xvd2VyQ2FzZSgpLCIoXz0oZG9j dW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbCIreSsiIHx8IGRvY3VtZW50LmJv ZHkuc2Nyb2xsIit5KyIpKSsncHgnIil9fWlmKGMuYWpheCl7dmFyIHI9Yy50YXJn ZXR8fGgudyx1PWMuYWpheCxyPSh0eXBlb2Ygcj09J3N0cmluZycpPyQocixoLncp OiQociksdT0odS5zdWJzdHIoMCwxKT09J0AnKT8kKHQpLmF0dHIodS5zdWJzdHJp bmcoMSkpOnU7ci5sb2FkKHUsZnVuY3Rpb24oKXtpZihjLm9uTG9hZCljLm9uTG9h ZC5jYWxsKHRoaXMsaCk7aWYoY2MpaC53LmpxbUFkZENsb3NlKCQoY2MsaC53KSk7 ZShoKX0pfWVsc2UgaWYoY2MpaC53LmpxbUFkZENsb3NlKCQoY2MsaC53KSk7aWYo Yy50b1RvcCYmaC5vKWgudy5iZWZvcmUoJzxzcGFuIGlkPSJqcW1QJytoLndbMF0u X2pxbSsnIj48L3NwYW4+JykuaW5zZXJ0QWZ0ZXIoaC5vKTsoYy5vblNob3cpP2Mu b25TaG93KGgpOmgudy5zaG93KCk7ZShoKTtyZXR1cm4gZmFsc2V9LGNsb3NlOmZ1 bmN0aW9uKHMpe3ZhciBoPUhbc107aC5hPWZhbHNlO2lmKEFbMF0pe0EucG9wKCk7 aWYoIUFbMF0pRigndW5iaW5kJyl9aWYoaC5jLnRvVG9wJiZoLm8pJCgnI2pxbVAn K2gud1swXS5fanFtKS5hZnRlcihoLncpLnJlbW92ZSgpO2lmKGguYy5vbkhpZGUp aC5jLm9uSGlkZShoKTtlbHNle2gudy5oaWRlKCk7aWYoaC5vKWguby5yZW1vdmUo KX1yZXR1cm4gZmFsc2V9fTt2YXIgcz0wLEg9JC5qcW0uaGFzaCxBPVtdLGllNj0k LmJyb3dzZXIubXNpZSYmKCQuYnJvd3Nlci52ZXJzaW9uPT0iNi4wIiksaT0kKCc8 aWZyYW1lIHNyYz0iamF2YXNjcmlwdDpmYWxzZTtkb2N1bWVudC53cml0ZShcJ1wn KTsiIGNsYXNzPSJqcW0iPjwvaWZyYW1lPicpLmNzcyh7b3BhY2l0eTowfSksZT1m dW5jdGlvbihoKXtpZihpZTYpaWYoaC5vKWguby5odG1sKCc8cCBzdHlsZT0id2lk dGg6MTAwJTtoZWlnaHQ6MTAwJSIvPicpLnByZXBlbmQoaSk7ZWxzZSBpZighJCgn aWZyYW1lLmpxbScsaC53KVswXSloLncucHJlcGVuZChpKTtmKGgpfSxmPWZ1bmN0 aW9uKGgpe3RyeXskKCc6aW5wdXQ6dmlzaWJsZScsaC53KVswXS5mb2N1cygpfWNh dGNoKGUpe319LEY9ZnVuY3Rpb24odCl7JCgpW3RdKCJrZXlwcmVzcyIsbSlbdF0o ImtleWRvd24iLG0pW3RdKCJtb3VzZWRvd24iLG0pfSxtPWZ1bmN0aW9uKGUpe3Zh ciBoPUhbQVtBLmxlbmd0aC0xXV0scj0oISQoZS50YXJnZXQpLnBhcmVudHMoJy5q cW1JRCcraC5zKVswXSk7aWYocilmKGgpO3JldHVybiFyfSxocz1mdW5jdGlvbih3 LGUseSl7dmFyIHM9W107dy5lYWNoKGZ1bmN0aW9uKCl7cy5wdXNoKHRoaXMuX2px bSl9KTskKGUpLmVhY2goZnVuY3Rpb24oKXtpZih0aGlzW3ldKSQuZXh0ZW5kKHRo aXNbeV0scyk7ZWxzZXt0aGlzW3ldPXM7JCh0aGlzKS5jbGljayhmdW5jdGlvbigp e2Zvcih2YXIgaSBpbntqcW1TaG93OjEsanFtSGlkZToxfSlmb3IodmFyIHMgaW4g dGhpc1tpXSlpZihIW3RoaXNbaV1bc11dKUhbdGhpc1tpXVtzXV0ud1tpXSh0aGlz KTtyZXR1cm4gZmFsc2V9KX19KX19KShqUXVlcnkpOw0KDQoNCi8qDQogKiBqUXVl cnkgYmxvY2tVSSBwbHVnaW4NCiAqIFZlcnNpb24gMS4zMyAgKDA5LzE0LzIwMDcp DQogKiBAcmVxdWlyZXMgalF1ZXJ5IHYxLjEuMQ0KICoNCiAqICRJZCQNCiAqDQog KiBFeGFtcGxlcyBhdDogaHR0cDovL21hbHN1cC5jb20vanF1ZXJ5L2Jsb2NrLw0K ICogQ29weXJpZ2h0IChjKSAyMDA3IE0uIEFsc3VwDQogKiBEdWFsIGxpY2Vuc2Vk IHVuZGVyIHRoZSBNSVQgYW5kIEdQTCBsaWNlbnNlczoNCiAqIGh0dHA6Ly93d3cu b3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwDQogKiBodHRw Oi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLmh0bWwNCiAqLw0KIA0KIChmdW5j dGlvbigkKXskLmJsb2NrVUk9ZnVuY3Rpb24obXNnLGNzcyxvcHRzKXskLmJsb2Nr VUkuaW1wbC5pbnN0YWxsKHdpbmRvdyxtc2csY3NzLG9wdHMpfTskLmJsb2NrVUku dmVyc2lvbj0xLjMzOyQudW5ibG9ja1VJPWZ1bmN0aW9uKG9wdHMpeyQuYmxvY2tV SS5pbXBsLnJlbW92ZSh3aW5kb3csb3B0cyl9OyQuZm4uYmxvY2s9ZnVuY3Rpb24o bXNnLGNzcyxvcHRzKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7aWYoIXRo aXMuJHBvc19jaGVja2VkKXtpZigkLmNzcyh0aGlzLCJwb3NpdGlvbiIpPT0nc3Rh dGljJyl0aGlzLnN0eWxlLnBvc2l0aW9uPSdyZWxhdGl2ZSc7aWYoJC5icm93c2Vy Lm1zaWUpdGhpcy5zdHlsZS56b29tPTE7dGhpcy4kcG9zX2NoZWNrZWQ9MX0kLmJs b2NrVUkuaW1wbC5pbnN0YWxsKHRoaXMsbXNnLGNzcyxvcHRzKX0pfTskLmZuLnVu YmxvY2s9ZnVuY3Rpb24ob3B0cyl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigp eyQuYmxvY2tVSS5pbXBsLnJlbW92ZSh0aGlzLG9wdHMpfSl9OyQuZm4uZGlzcGxh eUJveD1mdW5jdGlvbihjc3MsZm4saXNGbGFzaCl7dmFyIG1zZz10aGlzWzBdO2lm KCFtc2cpcmV0dXJuO3ZhciAkbXNnPSQobXNnKTtjc3M9Y3NzfHx7fTt2YXIgdz0k bXNnLndpZHRoKCl8fCRtc2cuYXR0cignd2lkdGgnKXx8Y3NzLndpZHRofHwkLmJs b2NrVUkuZGVmYXVsdHMuZGlzcGxheUJveENTUy53aWR0aDt2YXIgaD0kbXNnLmhl aWdodCgpfHwkbXNnLmF0dHIoJ2hlaWdodCcpfHxjc3MuaGVpZ2h0fHwkLmJsb2Nr VUkuZGVmYXVsdHMuZGlzcGxheUJveENTUy5oZWlnaHQ7aWYod1t3Lmxlbmd0aC0x XT09JyUnKXt2YXIgd3c9ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdp ZHRofHxkb2N1bWVudC5ib2R5LmNsaWVudFdpZHRoO3c9cGFyc2VJbnQodyl8fDEw MDt3PSh3Knd3KS8xMDB9aWYoaFtoLmxlbmd0aC0xXT09JyUnKXt2YXIgaGg9ZG9j dW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodHx8ZG9jdW1lbnQuYm9k eS5jbGllbnRIZWlnaHQ7aD1wYXJzZUludChoKXx8MTAwO2g9KGgqaGgpLzEwMH12 YXIgbWw9Jy0nK3BhcnNlSW50KHcpLzIrJ3B4Jzt2YXIgbXQ9Jy0nK3BhcnNlSW50 KGgpLzIrJ3B4Jzt2YXIgdWE9bmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2Fz ZSgpO3ZhciBvcHRzPXtkaXNwbGF5TW9kZTpmbnx8MSxub2FscGhhOmlzRmxhc2gm Ji9tYWMvLnRlc3QodWEpJiYvZmlyZWZveC8udGVzdCh1YSl9OyQuYmxvY2tVSS5p bXBsLmluc3RhbGwod2luZG93LG1zZyx7d2lkdGg6dyxoZWlnaHQ6aCxtYXJnaW5U b3A6bXQsbWFyZ2luTGVmdDptbH0sb3B0cyl9OyQuYmxvY2tVSS5kZWZhdWx0cz17 cGFnZU1lc3NhZ2U6JzxoMT5QbGVhc2Ugd2FpdC4uLjwvaDE+JyxlbGVtZW50TWVz c2FnZTonJyxvdmVybGF5Q1NTOntiYWNrZ3JvdW5kQ29sb3I6JyNmZmYnLG9wYWNp dHk6JzAuNSd9LHBhZ2VNZXNzYWdlQ1NTOnt3aWR0aDonMjUwcHgnLG1hcmdpbjon LTUwcHggMCAwIC0xMjVweCcsdG9wOic1MCUnLGxlZnQ6JzUwJScsdGV4dEFsaWdu OidjZW50ZXInLGNvbG9yOicjMDAwJyxiYWNrZ3JvdW5kQ29sb3I6JyNmZmYnLGJv cmRlcjonM3B4IHNvbGlkICNhYWEnfSxlbGVtZW50TWVzc2FnZUNTUzp7d2lkdGg6 JzI1MHB4JyxwYWRkaW5nOicxMHB4Jyx0ZXh0QWxpZ246J2NlbnRlcicsYmFja2dy b3VuZENvbG9yOicjZmZmJ30sZGlzcGxheUJveENTUzp7d2lkdGg6JzQwMHB4Jyxo ZWlnaHQ6JzQwMHB4Jyx0b3A6JzUwJScsbGVmdDonNTAlJ30saWU2U3RyZXRjaDox LGFsbG93VGFiVG9MZWF2ZTowLGNsb3NlTWVzc2FnZTonQ2xpY2sgdG8gY2xvc2Un LGZhZGVPdXQ6MSxmYWRlVGltZTo0MDB9OyQuYmxvY2tVSS5pbXBsPXtib3g6bnVs bCxib3hDYWxsYmFjazpudWxsLHBhZ2VCbG9jazpudWxsLHBhZ2VCbG9ja0Vsczpb XSxvcDg6d2luZG93Lm9wZXJhJiZ3aW5kb3cub3BlcmEudmVyc2lvbigpPDksaWU2 OiQuYnJvd3Nlci5tc2llJiYvTVNJRSA2LjAvLnRlc3QobmF2aWdhdG9yLnVzZXJB Z2VudCksaW5zdGFsbDpmdW5jdGlvbihlbCxtc2csY3NzLG9wdHMpe29wdHM9b3B0 c3x8e307dGhpcy5ib3hDYWxsYmFjaz10eXBlb2Ygb3B0cy5kaXNwbGF5TW9kZT09 J2Z1bmN0aW9uJz9vcHRzLmRpc3BsYXlNb2RlOm51bGw7dGhpcy5ib3g9b3B0cy5k aXNwbGF5TW9kZT9tc2c6bnVsbDt2YXIgZnVsbD0oZWw9PXdpbmRvdyk7dmFyIG5v YWxwaGE9dGhpcy5vcDh8fCQuYnJvd3Nlci5tb3ppbGxhJiYvTGludXgvLnRlc3Qo bmF2aWdhdG9yLnBsYXRmb3JtKTtpZih0eXBlb2Ygb3B0cy5hbHBoYU92ZXJyaWRl IT0ndW5kZWZpbmVkJylub2FscGhhPW9wdHMuYWxwaGFPdmVycmlkZT09MD8xOjA7 aWYoZnVsbCYmdGhpcy5wYWdlQmxvY2spdGhpcy5yZW1vdmUod2luZG93LHtmYWRl T3V0OjB9KTtpZihtc2cmJnR5cGVvZiBtc2c9PSdvYmplY3QnJiYhbXNnLmpxdWVy eSYmIW1zZy5ub2RlVHlwZSl7Y3NzPW1zZzttc2c9bnVsbH1tc2c9bXNnPyhtc2cu bm9kZVR5cGU/JChtc2cpOm1zZyk6ZnVsbD8kLmJsb2NrVUkuZGVmYXVsdHMucGFn ZU1lc3NhZ2U6JC5ibG9ja1VJLmRlZmF1bHRzLmVsZW1lbnRNZXNzYWdlO2lmKG9w dHMuZGlzcGxheU1vZGUpdmFyIGJhc2Vjc3M9alF1ZXJ5LmV4dGVuZCh7fSwkLmJs b2NrVUkuZGVmYXVsdHMuZGlzcGxheUJveENTUyk7ZWxzZSB2YXIgYmFzZWNzcz1q UXVlcnkuZXh0ZW5kKHt9LGZ1bGw/JC5ibG9ja1VJLmRlZmF1bHRzLnBhZ2VNZXNz YWdlQ1NTOiQuYmxvY2tVSS5kZWZhdWx0cy5lbGVtZW50TWVzc2FnZUNTUyk7Y3Nz PWpRdWVyeS5leHRlbmQoYmFzZWNzcyxjc3N8fHt9KTt2YXIgZj0oJC5icm93c2Vy Lm1zaWUpPyQoJzxpZnJhbWUgY2xhc3M9ImJsb2NrVUkiIHN0eWxlPSJ6LWluZGV4 OjEwMDA7Ym9yZGVyOm5vbmU7bWFyZ2luOjA7cGFkZGluZzowO3Bvc2l0aW9uOmFi c29sdXRlO3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7dG9wOjA7bGVmdDowIiBzcmM9 ImphdmFzY3JpcHQ6ZmFsc2U7Ij48L2lmcmFtZT4nKTokKCc8ZGl2IGNsYXNzPSJi bG9ja1VJIiBzdHlsZT0iZGlzcGxheTpub25lIj48L2Rpdj4nKTt2YXIgdz0kKCc8 ZGl2IGNsYXNzPSJibG9ja1VJIiBzdHlsZT0iei1pbmRleDoxMDAxO2N1cnNvcjp3 YWl0O2JvcmRlcjpub25lO21hcmdpbjowO3BhZGRpbmc6MDt3aWR0aDoxMDAlO2hl aWdodDoxMDAlO3RvcDowO2xlZnQ6MCI+PC9kaXY+Jyk7dmFyIG09ZnVsbD8kKCc8 ZGl2IGNsYXNzPSJibG9ja1VJIGJsb2NrTXNnIiBzdHlsZT0iei1pbmRleDoxMDAy O2N1cnNvcjp3YWl0O3BhZGRpbmc6MDtwb3NpdGlvbjpmaXhlZCI+PC9kaXY+Jyk6 JCgnPGRpdiBjbGFzcz0iYmxvY2tVSSIgc3R5bGU9ImRpc3BsYXk6bm9uZTt6LWlu ZGV4OjEwMDI7Y3Vyc29yOndhaXQ7cG9zaXRpb246YWJzb2x1dGUiPjwvZGl2Picp O3cuY3NzKCdwb3NpdGlvbicsZnVsbD8nZml4ZWQnOidhYnNvbHV0ZScpO2lmKG1z ZyltLmNzcyhjc3MpO2lmKCFub2FscGhhKXcuY3NzKCQuYmxvY2tVSS5kZWZhdWx0 cy5vdmVybGF5Q1NTKTtpZih0aGlzLm9wOCl3LmNzcyh7d2lkdGg6JycrZWwuY2xp ZW50V2lkdGgsaGVpZ2h0OicnK2VsLmNsaWVudEhlaWdodH0pO2lmKCQuYnJvd3Nl ci5tc2llKWYuY3NzKCdvcGFjaXR5JywnMC4wJyk7JChbZlswXSx3WzBdLG1bMF1d KS5hcHBlbmRUbyhmdWxsPydib2R5JzplbCk7dmFyIGV4cHI9JC5icm93c2VyLm1z aWUmJighJC5ib3hNb2RlbHx8JCgnb2JqZWN0LGVtYmVkJyxmdWxsP251bGw6ZWwp Lmxlbmd0aD4wKTtpZih0aGlzLmllNnx8ZXhwcil7aWYoZnVsbCYmJC5ibG9ja1VJ LmRlZmF1bHRzLmllNlN0cmV0Y2gmJiQuYm94TW9kZWwpJCgnaHRtbCxib2R5Jyku Y3NzKCdoZWlnaHQnLCcxMDAlJyk7aWYoKHRoaXMuaWU2fHwhJC5ib3hNb2RlbCkm JiFmdWxsKXt2YXIgdD10aGlzLnN6KGVsLCdib3JkZXJUb3BXaWR0aCcpLGw9dGhp cy5zeihlbCwnYm9yZGVyTGVmdFdpZHRoJyk7dmFyIGZpeFQ9dD8nKDAgLSAnK3Qr JyknOjA7dmFyIGZpeEw9bD8nKDAgLSAnK2wrJyknOjB9JC5lYWNoKFtmLHcsbV0s ZnVuY3Rpb24oaSxvKXt2YXIgcz1vWzBdLnN0eWxlO3MucG9zaXRpb249J2Fic29s dXRlJztpZihpPDIpe2Z1bGw/cy5zZXRFeHByZXNzaW9uKCdoZWlnaHQnLCdkb2N1 bWVudC5ib2R5LnNjcm9sbEhlaWdodCA+IGRvY3VtZW50LmJvZHkub2Zmc2V0SGVp Z2h0ID8gZG9jdW1lbnQuYm9keS5zY3JvbGxIZWlnaHQgOiBkb2N1bWVudC5ib2R5 Lm9mZnNldEhlaWdodCArICJweCInKTpzLnNldEV4cHJlc3Npb24oJ2hlaWdodCcs J3RoaXMucGFyZW50Tm9kZS5vZmZzZXRIZWlnaHQgKyAicHgiJyk7ZnVsbD9zLnNl dEV4cHJlc3Npb24oJ3dpZHRoJywnalF1ZXJ5LmJveE1vZGVsICYmIGRvY3VtZW50 LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aCB8fCBkb2N1bWVudC5ib2R5LmNs aWVudFdpZHRoICsgInB4IicpOnMuc2V0RXhwcmVzc2lvbignd2lkdGgnLCd0aGlz LnBhcmVudE5vZGUub2Zmc2V0V2lkdGggKyAicHgiJyk7aWYoZml4TClzLnNldEV4 cHJlc3Npb24oJ2xlZnQnLGZpeEwpO2lmKGZpeFQpcy5zZXRFeHByZXNzaW9uKCd0 b3AnLGZpeFQpfWVsc2V7aWYoZnVsbClzLnNldEV4cHJlc3Npb24oJ3RvcCcsJyhk b2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0IHx8IGRvY3VtZW50 LmJvZHkuY2xpZW50SGVpZ2h0KSAvIDIgLSAodGhpcy5vZmZzZXRIZWlnaHQgLyAy KSArIChibGFoID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRvcCA/ IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3AgOiBkb2N1bWVudC5i b2R5LnNjcm9sbFRvcCkgKyAicHgiJyk7cy5tYXJnaW5Ub3A9MH19KX1pZihvcHRz LmRpc3BsYXlNb2RlKXt3LmNzcygnY3Vyc29yJywnZGVmYXVsdCcpLmF0dHIoJ3Rp dGxlJywkLmJsb2NrVUkuZGVmYXVsdHMuY2xvc2VNZXNzYWdlKTttLmNzcygnY3Vy c29yJywnZGVmYXVsdCcpOyQoW2ZbMF0sd1swXSxtWzBdXSkucmVtb3ZlQ2xhc3Mo J2Jsb2NrVUknKS5hZGRDbGFzcygnZGlzcGxheUJveCcpOyQoKS5jbGljaygkLmJs b2NrVUkuaW1wbC5ib3hIYW5kbGVyKS5iaW5kKCdrZXlwcmVzcycsJC5ibG9ja1VJ LmltcGwuYm94SGFuZGxlcil9ZWxzZSB0aGlzLmJpbmQoMSxlbCk7bS5hcHBlbmQo bXNnKS5zaG93KCk7aWYobXNnLmpxdWVyeSltc2cuc2hvdygpO2lmKG9wdHMuZGlz cGxheU1vZGUpcmV0dXJuO2lmKGZ1bGwpe3RoaXMucGFnZUJsb2NrPW1bMF07dGhp cy5wYWdlQmxvY2tFbHM9JCgnOmlucHV0OmVuYWJsZWQ6dmlzaWJsZScsdGhpcy5w YWdlQmxvY2spO3NldFRpbWVvdXQodGhpcy5mb2N1cywyMCl9ZWxzZSB0aGlzLmNl bnRlcihtWzBdKX0scmVtb3ZlOmZ1bmN0aW9uKGVsLG9wdHMpe3ZhciBvPSQuZXh0 ZW5kKHt9LCQuYmxvY2tVSS5kZWZhdWx0cyxvcHRzKTt0aGlzLmJpbmQoMCxlbCk7 dmFyIGZ1bGw9ZWw9PXdpbmRvdzt2YXIgZWxzPWZ1bGw/JCgnYm9keScpLmNoaWxk cmVuKCkuZmlsdGVyKCcuYmxvY2tVSScpOiQoJy5ibG9ja1VJJyxlbCk7aWYoZnVs bCl0aGlzLnBhZ2VCbG9jaz10aGlzLnBhZ2VCbG9ja0Vscz1udWxsO2lmKG8uZmFk ZU91dCl7ZWxzLmZhZGVPdXQoby5mYWRlVGltZSxmdW5jdGlvbigpe2lmKHRoaXMu cGFyZW50Tm9kZSl0aGlzLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcyl9KX1l bHNlIGVscy5yZW1vdmUoKX0sYm94UmVtb3ZlOmZ1bmN0aW9uKGVsKXskKCkudW5i aW5kKCdjbGljaycsJC5ibG9ja1VJLmltcGwuYm94SGFuZGxlcikudW5iaW5kKCdr ZXlwcmVzcycsJC5ibG9ja1VJLmltcGwuYm94SGFuZGxlcik7aWYodGhpcy5ib3hD YWxsYmFjayl0aGlzLmJveENhbGxiYWNrKHRoaXMuYm94KTskKCdib2R5IC5kaXNw bGF5Qm94JykuaGlkZSgpLnJlbW92ZSgpfSxoYW5kbGVyOmZ1bmN0aW9uKGUpe2lm KGUua2V5Q29kZSYmZS5rZXlDb2RlPT05KXtpZigkLmJsb2NrVUkuaW1wbC5wYWdl QmxvY2smJiEkLmJsb2NrVUkuZGVmYXVsdHMuYWxsb3dUYWJUb0xlYXZlKXt2YXIg ZWxzPSQuYmxvY2tVSS5pbXBsLnBhZ2VCbG9ja0Vsczt2YXIgZndkPSFlLnNoaWZ0 S2V5JiZlLnRhcmdldD09ZWxzW2Vscy5sZW5ndGgtMV07dmFyIGJhY2s9ZS5zaGlm dEtleSYmZS50YXJnZXQ9PWVsc1swXTtpZihmd2R8fGJhY2spe3NldFRpbWVvdXQo ZnVuY3Rpb24oKXskLmJsb2NrVUkuaW1wbC5mb2N1cyhiYWNrKX0sMTApO3JldHVy biBmYWxzZX19fWlmKCQoZS50YXJnZXQpLnBhcmVudHMoJ2Rpdi5ibG9ja01zZycp Lmxlbmd0aD4wKXJldHVybiB0cnVlO3JldHVybiAkKGUudGFyZ2V0KS5wYXJlbnRz KCkuY2hpbGRyZW4oKS5maWx0ZXIoJ2Rpdi5ibG9ja1VJJykubGVuZ3RoPT0wfSxi b3hIYW5kbGVyOmZ1bmN0aW9uKGUpe2lmKChlLmtleUNvZGUmJmUua2V5Q29kZT09 MjcpfHwoZS50eXBlPT0nY2xpY2snJiYkKGUudGFyZ2V0KS5wYXJlbnRzKCdkaXYu YmxvY2tNc2cnKS5sZW5ndGg9PTApKSQuYmxvY2tVSS5pbXBsLmJveFJlbW92ZSgp O3JldHVybiB0cnVlfSxiaW5kOmZ1bmN0aW9uKGIsZWwpe3ZhciBmdWxsPWVsPT13 aW5kb3c7aWYoIWImJihmdWxsJiYhdGhpcy5wYWdlQmxvY2t8fCFmdWxsJiYhZWwu JGJsb2NrZWQpKXJldHVybjtpZighZnVsbCllbC4kYmxvY2tlZD1iO3ZhciAkZT0k KGVsKS5maW5kKCdhLDppbnB1dCcpOyQuZWFjaChbJ21vdXNlZG93bicsJ21vdXNl dXAnLCdrZXlkb3duJywna2V5cHJlc3MnLCdjbGljayddLGZ1bmN0aW9uKGksbyl7 JGVbYj8nYmluZCc6J3VuYmluZCddKG8sJC5ibG9ja1VJLmltcGwuaGFuZGxlcil9 KX0sZm9jdXM6ZnVuY3Rpb24oYmFjayl7aWYoISQuYmxvY2tVSS5pbXBsLnBhZ2VC bG9ja0VscylyZXR1cm47dmFyIGU9JC5ibG9ja1VJLmltcGwucGFnZUJsb2NrRWxz W2JhY2s9PT10cnVlPyQuYmxvY2tVSS5pbXBsLnBhZ2VCbG9ja0Vscy5sZW5ndGgt MTowXTtpZihlKWUuZm9jdXMoKX0sY2VudGVyOmZ1bmN0aW9uKGVsKXt2YXIgcD1l bC5wYXJlbnROb2RlLHM9ZWwuc3R5bGU7dmFyIGw9KChwLm9mZnNldFdpZHRoLWVs Lm9mZnNldFdpZHRoKS8yKS10aGlzLnN6KHAsJ2JvcmRlckxlZnRXaWR0aCcpO3Zh ciB0PSgocC5vZmZzZXRIZWlnaHQtZWwub2Zmc2V0SGVpZ2h0KS8yKS10aGlzLnN6 KHAsJ2JvcmRlclRvcFdpZHRoJyk7cy5sZWZ0PWw+MD8obCsncHgnKTonMCc7cy50 b3A9dD4wPyh0KydweCcpOicwJ30sc3o6ZnVuY3Rpb24oZWwscCl7cmV0dXJuIHBh cnNlSW50KCQuY3NzKGVsLHApKXx8MH19fSkoalF1ZXJ5KTsNCg0KDQoNCg0KLyog Q29weXJpZ2h0IChjKSAyMDA3IEJyYW5kb24gQWFyb24gKGJyYW5kb24uYWFyb25A Z21haWwuY29tIHx8IGh0dHA6Ly9icmFuZG9uYWFyb24ubmV0KQ0KICogRHVhbCBs aWNlbnNlZCB1bmRlciB0aGUgTUlUIChodHRwOi8vd3d3Lm9wZW5zb3VyY2Uub3Jn L2xpY2Vuc2VzL21pdC1saWNlbnNlLnBocCkgDQogKiBhbmQgR1BMIChodHRwOi8v d3d3Lm9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2dwbC1saWNlbnNlLnBocCkgbGlj ZW5zZXMuDQogKg0KICogVmVyc2lvbjogMS4wLjINCiAqIFJlcXVpcmVzIGpRdWVy eSAxLjEuMysNCiAqIERvY3M6IGh0dHA6Ly9kb2NzLmpxdWVyeS5jb20vUGx1Z2lu cy9saXZlcXVlcnkNCiAqLw0KZXZhbChmdW5jdGlvbihwLGEsYyxrLGUscil7ZT1m dW5jdGlvbihjKXtyZXR1cm4oYzxhPycnOmUocGFyc2VJbnQoYy9hKSkpKygoYz1j JWEpPjM1P1N0cmluZy5mcm9tQ2hhckNvZGUoYysyOSk6Yy50b1N0cmluZygzNikp fTtpZighJycucmVwbGFjZSgvXi8sU3RyaW5nKSl7d2hpbGUoYy0tKXJbZShjKV09 a1tjXXx8ZShjKTtrPVtmdW5jdGlvbihlKXtyZXR1cm4gcltlXX1dO2U9ZnVuY3Rp b24oKXtyZXR1cm4nXFx3Kyd9O2M9MX07d2hpbGUoYy0tKWlmKGtbY10pcD1wLnJl cGxhY2UobmV3IFJlZ0V4cCgnXFxiJytlKGMpKydcXGInLCdnJyksa1tjXSk7cmV0 dXJuIHB9KCcoNCgkKXskLlIoJC43LHszOjQoYyxiLGQpezkgZT0yLHE7NSgkLk8o YykpZD1iLGI9YyxjPXo7JC5oKCQuMy5qLDQoaSxhKXs1KGUuOD09YS44JiZlLmc9 PWEuZyYmYz09YS5tJiYoIWJ8fGIuJDY9PWEuNy4kNikmJighZHx8ZC4kNj09YS5v LiQ2KSlsKHE9YSkmJnZ9KTtxPXF8fFkgJC4zKDIuOCwyLmcsYyxiLGQpO3EudT12 OyQuMy5zKHEuRik7bCAyfSxUOjQoYyxiLGQpezkgZT0yOzUoJC5PKGMpKWQ9Yixi PWMsYz16OyQuaCgkLjMuaiw0KGksYSl7NShlLjg9PWEuOCYmZS5nPT1hLmcmJigh Y3x8Yz09YS5tKSYmKCFifHxiLiQ2PT1hLjcuJDYpJiYoIWR8fGQuJDY9PWEuby4k NikmJiEyLnUpJC4zLnkoYS5GKX0pO2wgMn19KTskLjM9NChlLGMsYSxiLGQpezIu OD1lOzIuZz1jfHxTOzIubT1hOzIuNz1iOzIubz1kOzIudD1bXTsyLnU9djsyLkY9 JC4zLmouSygyKS0xO2IuJDY9Yi4kNnx8JC4zLkkrKzs1KGQpZC4kNj1kLiQ2fHwk LjMuSSsrO2wgMn07JC4zLnA9e3k6NCgpezkgYj0yOzUoMi5tKTIudC4xNigyLm0s Mi43KTtFIDUoMi5vKTIudC5oKDQoaSxhKXtiLm8ueChhKX0pOzIudD1bXTsyLnU9 UX0sczo0KCl7NSgyLnUpbDs5IGI9Mjs5IGM9Mi50LHc9JCgyLjgsMi5nKSxIPXcu MTEoYyk7Mi50PXc7NSgyLm0pe0guMTAoMi5tLDIuNyk7NShjLkM+MCkkLmgoYyw0 KGksYSl7NSgkLkIoYSx3KTwwKSQuWi5QKGEsYi5tLGIuNyl9KX1Fe0guaCg0KCl7 Yi43LngoMil9KTs1KDIubyYmYy5DPjApJC5oKGMsNChpLGEpezUoJC5CKGEsdyk8 MCliLm8ueChhKX0pfX19OyQuUigkLjMse0k6MCxqOltdLGs6W10sQTp2LEQ6WCxO OjQoKXs1KCQuMy5BJiYkLjMuay5DKXs5IGE9JC4zLmsuQztXKGEtLSkkLjMualsk LjMuay5WKCldLnMoKX19LFU6NCgpeyQuMy5BPXZ9LE06NCgpeyQuMy5BPVE7JC4z LnMoKX0sTDo0KCl7JC5oKEcsNChpLG4pezUoISQuN1tuXSlsOzkgYT0kLjdbbl07 JC43W25dPTQoKXs5IHI9YS54KDIsRyk7JC4zLnMoKTtsIHJ9fSl9LHM6NChiKXs1 KGIhPXopezUoJC5CKGIsJC4zLmspPDApJC4zLmsuSyhiKX1FICQuaCgkLjMuaiw0 KGEpezUoJC5CKGEsJC4zLmspPDApJC4zLmsuSyhhKX0pOzUoJC4zLkQpMWooJC4z LkQpOyQuMy5EPTFpKCQuMy5OLDFoKX0seTo0KGIpezUoYiE9eikkLjMualtiXS55 KCk7RSAkLmgoJC4zLmosNChhKXskLjMualthXS55KCl9KX19KTskLjMuTChcJzFn XCcsXCcxZlwnLFwnMWVcJyxcJzFiXCcsXCcxYVwnLFwnMTlcJyxcJzE4XCcsXCcx N1wnLFwnMWNcJyxcJzE1XCcsXCcxZFwnLFwnUFwnKTskKDQoKXskLjMuTSgpfSk7 OSBmPSQucC5KOyQucC5KPTQoYSxjKXs5IHI9Zi54KDIsRyk7NShhJiZhLjgpci5n PWEuZyxyLjg9YS44OzUoMTQgYT09XCcxM1wnKXIuZz1jfHxTLHIuOD1hO2wgcn07 JC5wLkoucD0kLnB9KSgxMik7Jyw2Miw4MiwnfHx0aGlzfGxpdmVxdWVyeXxmdW5j dGlvbnxpZnxscWd1aWR8Zm58c2VsZWN0b3J8dmFyfHx8fHx8fGNvbnRleHR8ZWFj aHx8cXVlcmllc3xxdWV1ZXxyZXR1cm58dHlwZXx8Zm4yfHByb3RvdHlwZXx8fHJ1 bnxlbGVtZW50c3xzdG9wcGVkfGZhbHNlfGVsc3xhcHBseXxzdG9wfHVuZGVmaW5l ZHxydW5uaW5nfGluQXJyYXl8bGVuZ3RofHRpbWVvdXR8ZWxzZXxpZHxhcmd1bWVu dHN8bkVsc3xndWlkfGluaXR8cHVzaHxyZWdpc3RlclBsdWdpbnxwbGF5fGNoZWNr UXVldWV8aXNGdW5jdGlvbnxyZW1vdmV8dHJ1ZXxleHRlbmR8ZG9jdW1lbnR8ZXhw aXJlfHBhdXNlfHNoaWZ0fHdoaWxlfG51bGx8bmV3fGV2ZW50fGJpbmR8bm90fGpR dWVyeXxzdHJpbmd8dHlwZW9mfHRvZ2dsZUNsYXNzfHVuYmluZHxhZGRDbGFzc3xy ZW1vdmVBdHRyfGF0dHJ8d3JhcHxiZWZvcmV8cmVtb3ZlQ2xhc3N8ZW1wdHl8YWZ0 ZXJ8cHJlcGVuZHxhcHBlbmR8MjB8c2V0VGltZW91dHxjbGVhclRpbWVvdXQnLnNw bGl0KCd8JyksMCx7fSkpDQoNCg0KDQoNCg0KDQoNCg0KdmFyICRqPSBqUXVlcnku bm9Db25mbGljdCgpOw0KDQoNCg0KLyoNCiAqIGpRdWVyeSBjbHVlVGlwIHBsdWdp bg0KICogVmVyc2lvbiAwLjkuNSAgKDAxLzI0LzIwMDgpDQogKiBAcmVxdWlyZXMg alF1ZXJ5IHYxLjEuMSsNCiAqIEByZXF1aXJlcyBEaW1lbnNpb25zIHBsdWdpbiAN CiAqDQogKiBEdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgYW5kIEdQTCBsaWNl bnNlczoNCiAqIGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0 LWxpY2Vuc2UucGhwDQogKiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3Bs Lmh0bWwNCiAqDQogKi8NCg0KICAgIA0KKGZ1bmN0aW9uKCQpIHsgDQovKg0KICog QG5hbWUgY2x1ZVRpcA0KICogQHR5cGUgalF1ZXJ5DQogKiBAY2F0IFBsdWdpbnMv dG9vbHRpcA0KICogQHJldHVybiBqUXVlcnkNCiAqIEBhdXRob3IgS2FybCBTd2Vk YmVyZw0KICoNCiAqIEBjcmVkaXQgSW5zcGlyZWQgYnkgQ29keSBMaW5kbGV5J3Mg alRpcCAoaHR0cDovL3d3dy5jb2R5bGluZGxleS5jb20pDQogKiBAY3JlZGl0IFRo YW5rcyB0byB0aGUgZm9sbG93aW5nIHBlb3BsZSBmb3IgdGhlaXIgbWFueSBhbmQg dmFyaWVkIGNvbnRyaWJ1dGlvbnM6DQogICAgICBTaGVsYW5lIEVub3MsIEdsZW4g TGlwa2EsIEhlY3RvciBTYW50b3MsIFRvcmJlbiBTY2hyZWl0ZXIsIERhbiBHLiBT d2l0emVyLCBK9nJuIFphZWZmZXJlciANCiAqIEBjcmVkaXQgVGhhbmtzIHRvIEpv bmF0aGFuIENoYWZmZXIsIGFzIGFsd2F5cywgZm9yIGhlbHAgd2l0aCB0aGUgaGFy ZCBwYXJ0cy4gOi0pDQogKi8NCg0KIC8qKg0KICogDQogKiBEaXNwbGF5cyBhIGhp Z2hseSBjdXN0b21pemFibGUgdG9vbHRpcCB3aGVuIHRoZSB1c2VyIGhvdmVycyAo ZGVmYXVsdCkgb3IgY2xpY2tzIChvcHRpb25hbCkgdGhlIG1hdGNoZWQgZWxlbWVu dC4gDQogKiBCeSBkZWZhdWx0LCB0aGUgY2x1ZVRpcCBwbHVnaW4gbG9hZHMgYSBw YWdlIGluZGljYXRlZCBieSB0aGUgInJlbCIgYXR0cmlidXRlIHZpYSBhamF4IGFu ZCBkaXNwbGF5cyBpdHMgY29udGVudHMuDQogKiBJZiBhICJ0aXRsZSIgYXR0cmli dXRlIGlzIHNwZWNpZmllZCwgaXRzIHZhbHVlIGlzIHVzZWQgYXMgdGhlIGNsdWVU aXAncyBoZWFkaW5nLg0KICogVGhlIGF0dHJpYnV0ZSB0byBiZSB1c2VkIGZvciBi b3RoIHRoZSBib2R5IGFuZCB0aGUgaGVhZGluZyBvZiB0aGUgY2x1ZVRpcCBpcyB1 c2VyLWNvbmZpZ3VyYWJsZS4gDQogKiBPcHRpb25hbGx5LCB0aGUgY2x1ZVRpcCdz IGJvZHkgY2FuIGRpc3BsYXkgY29udGVudCBmcm9tIGFuIGVsZW1lbnQgb24gdGhl IHNhbWUgcGFnZS4NCiAqICogSnVzdCBpbmRpY2F0ZSB0aGUgZWxlbWVudCdzIGlk IChlLmcuICIjc29tZS1pZCIpIGluIHRoZSByZWwgYXR0cmlidXRlLg0KICogT3B0 aW9uYWxseSwgdGhlIGNsdWVUaXAncyBib2R5IGNhbiBkaXNwbGF5IGNvbnRlbnQg ZnJvbSB0aGUgdGl0bGUgYXR0cmlidXRlLCB3aGVuIGEgZGVsaW1pdGVyIGlzIGlu ZGljYXRlZC4gDQogKiAqIFRoZSBzdHJpbmcgYmVmb3JlIHRoZSBmaXJzdCBpbnN0 YW5jZSBvZiB0aGUgZGVsaW1pdGVyIGlzIHNldCBhcyB0aGUgY2x1ZVRpcCdzIGhl YWRpbmcuDQogKiAqIEFsbCBzdWJzZXF1ZW50IHN0cmluZ3MgYXJlIHdyYXBwZWQg aW4gc2VwYXJhdGUgRElWcyBhbmQgcGxhY2VkIGluIHRoZSBjbHVlVGlwJ3MgYm9k eS4NCiAqIFRoZSBjbHVlVGlwIHBsdWdpbiBhbGxvd3MgZm9yIG1hbnksIG1hbnkg bW9yZSBvcHRpb25zLiBQbGVhc2VlIHNlZSB0aGUgZXhhbXBsZXMgYW5kIHRoZSBv cHRpb24gZGVzY3JpcHRpb25zIGJlbG93Li4uDQogKiANCiAqIA0KICogQGV4YW1w bGUgJCgnI3RpcCkuY2x1ZXRpcCgpOw0KICogQGRlc2MgVGhpcyBpcyB0aGUgbW9z dCBiYXNpYyBjbHVlVGlwLiBJdCBkaXNwbGF5cyBhIDI3NXB4LXdpZGUgY2x1ZVRp cCBvbiBtb3VzZW92ZXIgb2YgdGhlIGVsZW1lbnQgd2l0aCBhbiBJRCBvZiAidGlw LiIgT24gbW91c2VvdXQgb2YgdGhlIGVsZW1lbnQsIHRoZSBjbHVlVGlwIGlzIGhp ZGRlbi4NCiAqDQogKg0KICogQGV4YW1wbGUgJCgnYS5jbHVlJykuY2x1ZXRpcCh7 DQogKiAgaG92ZXJDbGFzczogJ2hpZ2hsaWdodCcsDQogKiAgc3RpY2t5OiB0cnVl LA0KICogIGNsb3NlUG9zaXRpb246ICdib3R0b20nLA0KICogIGNsb3NlVGV4dDog JzxpbWcgc3JjPSJjcm9zcy5wbmciIGFsdD0iY2xvc2UiIC8+JywNCiAqICB0cnVu Y2F0ZTogNjAsDQogKiAgYWpheFNldHRpbmdzOiB7DQogKiAgICB0eXBlOiAnUE9T VCcNCiAqICB9DQogKiB9KTsNCiAqIEBkZXNjIERpc3BsYXlzIGEgY2x1ZVRpcCBv biBtb3VzZW92ZXIgb2YgYWxsIDxhPiBlbGVtZW50cyB3aXRoIGNsYXNzPSJjbHVl Ii4gVGhlIGhvdmVyZWQgZWxlbWVudCBnZXRzIGEgY2xhc3Mgb2YgImhpZ2hsaWdo dCIgYWRkZWQgdG8gaXQgKHNvIHRoYXQgaXQgY2FuIGJlIHN0eWxlZCBhcHByb3By aWF0ZWx5LiBUaGlzIGlzIGVzcC4gdXNlZnVsIGZvciBub24tYW5jaG9yIGVsZW1l bnRzLikuIFRoZSBjbHVlVGlwIGlzICJzdGlja3ksIiB3aGljaCBtZWFucyB0aGF0 IGl0IHdpbGwgbm90IGJlIGhpZGRlbiB1bnRpbCB0aGUgdXNlciBlaXRoZXIgY2xp Y2tzIG9uIGl0cyAiY2xvc2UiIHRleHQvZ3JhcGhpYyBvciBkaXNwbGF5cyBhbm90 aGVyIGNsdWVUaXAuIFRoZSAiY2xvc2UiIHRleHQvZ3JhcGhpYyBpcyBzZXQgdG8g ZGlwbGF5IGF0IHRoZSBib3R0b20gb2YgdGhlIGNsdWVUaXAgKGRlZmF1bHQgaXMg dG9wKSBhbmQgZGlzcGxheSBhbiBpbWFnZSByYXRoZXIgdGhhbiB0aGUgZGVmYXVs dCAiQ2xvc2UiIHRleHQuIE1vcmVvdmVyLCB0aGUgYm9keSBvZiB0aGUgY2x1ZVRp cCBpcyB0cnVuY2F0ZWQgdG8gdGhlIGZpcnN0IDYwIGNoYXJhY3RlcnMsIHdoaWNo IGFyZSBmb2xsb3dlZCBieSBhbiBlbGxpcHNpcyAoLi4uKS4gRmluYWxseSwgdGhl IGNsdWVUaXAgcmV0cmlldmVzIHRoZSBjb250ZW50IHVzaW5nIFBPU1QgcmF0aGVy IHRoYW4gdGhlICQuYWpheCBtZXRob2QncyBkZWZhdWx0ICJHRVQuIg0KICogDQog KiBNb3JlIGV4YW1wbGVzIGNhbiBiZSBmb3VuZCBhdCBodHRwOi8vcGx1Z2lucy5s ZWFybmluZ2pxdWVyeS5jb20vY2x1ZXRpcC9kZW1vLw0KICogDQogKiBGdWxsIGxp c3Qgb2Ygb3B0aW9ucy9zZXR0aW5ncyBjYW4gYmUgZm91bmQgYXQgdGhlIGJvdHRv bSBvZiB0aGlzIGZpbGUgYW5kIGF0IGh0dHA6Ly9wbHVnaW5zLmxlYXJuaW5nanF1 ZXJ5LmNvbS9jbHVldGlwLw0KICovDQogIHZhciAkY2x1ZXRpcCwgJGNsdWV0aXBJ bm5lciwgJGNsdWV0aXBPdXRlciwgJGNsdWV0aXBUaXRsZSwgJGNsdWV0aXBBcnJv d3MsICRkcm9wU2hhZG93LCBpbWdDb3VudCwgb3Blbk9uRGVsYXk9bnVsbCwgY2xv c2VPbkRlbGF5PW51bGw7DQogICQuZm4uY2x1ZXRpcCA9IGZ1bmN0aW9uKG9wdGlv bnMpIHsNCg0KICAgIHZhciBvcHRzID0gJC5leHRlbmQoe30sJC5mbi5jbHVldGlw LmRlZmF1bHRzLCBvcHRpb25zKTsNCg0KICAgIGlmIChvcHRpb25zICYmIG9wdGlv bnMuYWpheFNldHRpbmdzKSB7DQogICAgICAkLmV4dGVuZChvcHRzLmFqYXhTZXR0 aW5ncywgb3B0aW9ucy5hamF4U2V0dGluZ3MpOw0KICAgICAgZGVsZXRlIG9wdGlv bnMuYWpheFNldHRpbmdzOw0KICAgIH0NCiAgICANCiAgICBpZiAob3B0aW9ucyAm JiBvcHRpb25zLmhvdmVySW50ZW50KSB7DQogICAgICAkLmV4dGVuZChvcHRzLmhv dmVySW50ZW50LCBvcHRpb25zLmhvdmVySW50ZW50KTsNCiAgICAgIGRlbGV0ZSBv cHRpb25zLmhvdmVySW50ZW50Ow0KICAgIH0gICAgDQoNCiAgICBpZiAob3B0aW9u cyAmJiBvcHRpb25zLmZ4KSB7DQogICAgICAkLmV4dGVuZChvcHRzLmZ4LCBvcHRp b25zLmZ4KTsNCiAgICAgIGRlbGV0ZSBvcHRpb25zLmZ4Ow0KICAgIH0NCiAgICAN CiAgICByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGluZGV4KSB7DQogICAgICAv LyBzdGFydCBvdXQgd2l0aCBubyBjb250ZW50cyAoZm9yIGFqYXggYWN0aXZhdGlv bikNCiAgICAgIHZhciBjbHVldGlwQ29udGVudHMgPSBmYWxzZTsNCiAgICAgIHZh ciBjbHVlekluZGV4ID0gcGFyc2VJbnQob3B0cy5jbHVlekluZGV4LCAxMCktMTsN CiAgICAgIHZhciBpc0FjdGl2ZSA9IGZhbHNlDQoNCiAgICAgIC8vIGNyZWF0ZSB0 aGUgY2x1ZXRpcCBkaXZzDQogICAgICBpZiAoISRjbHVldGlwKSB7DQogICAgICAg ICRjbHVldGlwSW5uZXIgPSAkKCc8ZGl2IGlkPSJjbHVldGlwLWlubmVyIj48L2Rp dj4nKTsNCiAgICAgICAgJGNsdWV0aXBUaXRsZSA9ICQoJzxkaXYgaWQ9ImNsdWV0 aXAtdGl0bGUiPjwvZGl2PicpOyAgIC8vIGN1c3RvbWl6ZSA6Y2hhbmdlIGZyb20g aDMgdG8gZGl2ICAgICANCiAgICAgICAgJGNsdWV0aXBPdXRlciA9ICQoJzxkaXYg aWQ9ImNsdWV0aXAtb3V0ZXIiPjwvZGl2PicpLmFwcGVuZCgkY2x1ZXRpcElubmVy KS5wcmVwZW5kKCRjbHVldGlwVGl0bGUpOw0KICAgICAgICAkY2x1ZXRpcCA9ICQo JzxkaXYgaWQ9ImNsdWV0aXAiPjwvZGl2PicpLmNzcyh7ekluZGV4OiBvcHRzLmNs dWV6SW5kZXh9KQ0KICAgICAgICAuYXBwZW5kKCRjbHVldGlwT3V0ZXIpLmFwcGVu ZCgnPGRpdiBpZD0iY2x1ZXRpcC1leHRyYSI+PC9kaXY+JylbaW5zZXJ0aW9uVHlw ZV0oaW5zZXJ0aW9uRWxlbWVudCkuaGlkZSgpOw0KICAgICAgICAkKCc8ZGl2IGlk PSJjbHVldGlwLXdhaXRpbWFnZSI+PC9kaXY+JykuY3NzKHtwb3NpdGlvbjogJ2Fi c29sdXRlJywgekluZGV4OiBjbHVlekluZGV4LTF9KQ0KICAgICAgICAuaW5zZXJ0 QmVmb3JlKCcjY2x1ZXRpcCcpLmhpZGUoKTsNCiAgICAgICAgJGNsdWV0aXAuY3Nz KHtwb3NpdGlvbjogJ2Fic29sdXRlJywgekluZGV4OiBjbHVlekluZGV4fSk7DQog ICAgICAgICRjbHVldGlwT3V0ZXIuY3NzKHtwb3NpdGlvbjogJ3JlbGF0aXZlJywg ekluZGV4OiBjbHVlekluZGV4KzF9KTsNCiAgICAgICAgJGNsdWV0aXBBcnJvd3Mg PSAkKCc8ZGl2IGlkPSJjbHVldGlwLWFycm93cyIgY2xhc3M9ImNsdWV0aXAtYXJy b3dzIj48L2Rpdj4nKS5jc3Moe3pJbmRleDogY2x1ZXpJbmRleCsxfSkuYXBwZW5k VG8oJyNjbHVldGlwJyk7DQogICAgICB9DQogICAgICB2YXIgZHJvcFNoYWRvd1N0 ZXBzID0gKG9wdHMuZHJvcFNoYWRvdykgPyArb3B0cy5kcm9wU2hhZG93U3RlcHMg OiAwOw0KICAgICAgaWYgKCEkZHJvcFNoYWRvdykgew0KICAgICAgICAkZHJvcFNo YWRvdyA9ICQoW10pOw0KICAgICAgICBmb3IgKHZhciBpPTA7IGkgPCBkcm9wU2hh ZG93U3RlcHM7IGkrKykgew0KICAgICAgICAgICRkcm9wU2hhZG93ID0gJGRyb3BT aGFkb3cuYWRkKCQoJzxkaXY+PC9kaXY+JykuY3NzKHt6SW5kZXg6IGNsdWV6SW5k ZXgtaS0xLCBvcGFjaXR5Oi4xLCB0b3A6IDEraSwgbGVmdDogMStpfSkpOw0KICAg ICAgICB9Ow0KICAgICAgICAkZHJvcFNoYWRvdy5jc3Moe3Bvc2l0aW9uOiAnYWJz b2x1dGUnLCBiYWNrZ3JvdW5kQ29sb3I6ICcjYWFhYWFhJ30pIC8vIGN1c3RvbWl6 ZSA6Y2hhbmdlIGJnY29sb3IgICAgIA0KICAgICAgICAucHJlcGVuZFRvKCRjbHVl dGlwKTsNCiAgICAgIH0NCiAgICAgIHZhciAkdGhpcyA9ICQodGhpcyk7DQogICAg ICB2YXIgdGlwQXR0cmlidXRlID0gJHRoaXMuYXR0cihvcHRzLmF0dHJpYnV0ZSks IGN0Q2xhc3MgPSBvcHRzLmNsdWV0aXBDbGFzczsNCiAgICAgIGlmICghdGlwQXR0 cmlidXRlICYmICFvcHRzLnNwbGl0VGl0bGUpIHJldHVybiB0cnVlOw0KICAgICAg Ly8gaWYgaGlkZUxvY2FsIGlzIHNldCB0byB0cnVlLCBvbiBET00gcmVhZHkgaGlk ZSB0aGUgbG9jYWwgY29udGVudCB0aGF0IHdpbGwgYmUgZGlzcGxheWVkIGluIHRo ZSBjbHVlVGlwDQogICAgICBpZiAob3B0cy5sb2NhbCAmJiBvcHRzLmhpZGVMb2Nh bCkgeyAkKHRpcEF0dHJpYnV0ZSArICc6Zmlyc3QnKS5oaWRlKCk7IH0NCiAgICAg IHZhciB0T2Zmc2V0ID0gcGFyc2VJbnQob3B0cy50b3BPZmZzZXQsIDEwKSwgbE9m ZnNldCA9IHBhcnNlSW50KG9wdHMubGVmdE9mZnNldCwgMTApOw0KICAgICAgLy8g dmVydGljYWwgbWVhc3VyZW1lbnQgdmFyaWFibGVzDQogICAgICB2YXIgdGlwSGVp Z2h0LCB3SGVpZ2h0Ow0KICAgICAgdmFyIGRlZkhlaWdodCA9IGlzTmFOKHBhcnNl SW50KG9wdHMuaGVpZ2h0LCAxMCkpID8gJ2F1dG8nIDogKC9cRC9nKS50ZXN0KG9w dHMuaGVpZ2h0KSA/IG9wdHMuaGVpZ2h0IDogb3B0cy5oZWlnaHQgKyAncHgnOw0K ICAgICANCiAgICAgIHZhciBzVG9wLCBsaW5rVG9wLCBwb3NZLCB0aXBZLCBtb3Vz ZVksIGJhc2VsaW5lOw0KICAgICAgLy8gaG9yaXpvbnRhbCBtZWFzdXJlbWVudCB2 YXJpYWJsZXMNCiAgICAgIHZhciB0aXBJbm5lcldpZHRoID0gaXNOYU4ocGFyc2VJ bnQob3B0cy53aWR0aCwgMTApKSA/IDI3NSA6IHBhcnNlSW50KG9wdHMud2lkdGgs IDEwKTsNCiAgICAgIHZhciB0aXBXaWR0aCA9IHRpcElubmVyV2lkdGggKyBwYXJz ZUludCgkY2x1ZXRpcC5jc3MoJ3BhZGRpbmdMZWZ0JykpICsgcGFyc2VJbnQoJGNs dWV0aXAuY3NzKCdwYWRkaW5nUmlnaHQnKSkgKyBkcm9wU2hhZG93U3RlcHM7DQog ICAgICB2YXIgbGlua1dpZHRoID0gdGhpcy5vZmZzZXRXaWR0aDsNCiAgICAgIHZh ciBsaW5rTGVmdCwgcG9zWCwgdGlwWCwgbW91c2VYLCB3aW5XaWR0aDsNCiAgICAg ICAgICAgIA0KICAgICAgLy8gcGFyc2UgdGhlIHRpdGxlDQogICAgICB2YXIgdGlw UGFydHM7DQogICAgICB2YXIgdGlwVGl0bGUgPSAob3B0cy5hdHRyaWJ1dGUgIT0g J3RpdGxlJykgPyAkdGhpcy5hdHRyKG9wdHMudGl0bGVBdHRyaWJ1dGUpIDogJyc7 DQogICAgICBpZiAob3B0cy5zcGxpdFRpdGxlKSB7DQogICAgICAgIGlmKHRpcFRp dGxlID09IHVuZGVmaW5lZCkge3RpcFRpdGxlID0gJyc7fQ0KICAgICAgICB0aXBQ YXJ0cyA9IHRpcFRpdGxlLnNwbGl0KG9wdHMuc3BsaXRUaXRsZSk7DQogICAgICAg IHRpcFRpdGxlID0gdGlwUGFydHMuc2hpZnQoKTsNCiAgICAgDQogICAgICAgIHRp cFRpdGxlID0gJzxkaXYgY2xhc3M9ImNsdWV0aXAtdGl0bGUtY3VzdG9tIj48YiBj bGFzcz0iY2x1ZXRpcC10aXRsZS1iIj48YiBjbGFzcz0iY2x1ZXRpcC10aXRsZS1i NSI+PC9iPjxiIGNsYXNzPSJjbHVldGlwLXRpdGxlLWIzIj48L2I+PGIgY2xhc3M9 ImNsdWV0aXAtdGl0bGUtYjIiPjwvYj48YiBjbGFzcz0iY2x1ZXRpcC10aXRsZS1i MSI+PC9iPjwvYj48ZGl2IGNsYXNzPSJjbHVldGlwLXRpdGxlLWIxYSI+PGIgY2xh c3M9ImNsdWV0aXAtdGl0bGUtYjFiIj48L2I+PGRpdiBjbGFzcz0iY2x1ZXRpcC10 aXRsZS10eHQiPicgKyB0aXBUaXRsZSArICc8L2Rpdj4gPGIgY2xhc3M9ImNsdWV0 aXAtdGl0bGUtYjFiIj48L2I+PC9kaXY+PGIgY2xhc3M9ImNsdWV0aXAtdGl0bGUt YjFjIj48YiBjbGFzcz0iY2x1ZXRpcC10aXRsZS1iMSI+PC9iPiA8YiBjbGFzcz0i Y2x1ZXRpcC10aXRsZS1iMiI+PC9iPiA8YiBjbGFzcz0iY2x1ZXRpcC10aXRsZS1i MyI+PC9iPiA8YiBjbGFzcz0iY2x1ZXRpcC10aXRsZS1iNSI+PC9iPjwvYj48L2Rp dj4nOw0KICAgICAgfQ0KICAgICAgdmFyIGxvY2FsQ29udGVudDsNCiAgICAgIA0K DQovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICAgICAg DQoqIEFDVElWQVRJT04NCioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKiovDQogICAgDQovL2FjdGl2YXRlIGNsdWVUaXANCiAgICB2YXIgYWN0 aXZhdGUgPSBmdW5jdGlvbiggZXZlbnQgKQ0KICAgIHsNCiAgICAgICAgaWYoIGNs b3NlT25EZWxheSAhPSBudWxsICkNCiAgICAgICAgew0KICAgICAgICAgIGNsZWFy VGltZW91dCggY2xvc2VPbkRlbGF5ICk7DQogICAgICAgICAgY2xvc2VPbkRlbGF5 ID0gbnVsbDsNCiAgICAgICAgfQ0KICAgICAgICBpZiggb3B0cy5kZWxheWVkT3Bl biA+IDAgKQ0KICAgICAgICB7DQogICAgICAgICAgICBvcGVuT25EZWxheSA9IHNl dFRpbWVvdXQoIGZ1bmN0aW9uKCl7YWN0aXZhdGVJdCggZXZlbnQgKTt9LCBvcHRz LmRlbGF5ZWRPcGVuICk7DQogICAgICAgIH0NCiAgICAgICAgZWxzZQ0KICAgICAg ICB7DQogICAgICAgICAgICBhY3RpdmF0ZUl0KCBldmVudCApOw0KICAgICAgICB9 DQogICAgfQ0KICAgIHZhciBhY3RpdmF0ZUl0ID0gZnVuY3Rpb24oZXZlbnQpIHsN CiAgICAgICRjbHVldGlwT3V0ZXIucGFyZW50KCkuaGlkZSgpLnJlbW92ZUNsYXNz KCkuZW5kKCkuY2hpbGRyZW4oKS5lbXB0eSgpOyAvLyBjbGVhciBvdXQgY29udGFp bmVyIGNvbnRlbnRzDQogICAgICBvcGVuT25EZWxheSA9IG51bGw7DQogICAgICBp ZiAoIW9wdHMub25BY3RpdmF0ZSgkdGhpcykpIHsNCiAgICAgICAgcmV0dXJuIGZh bHNlOw0KICAgICAgfQ0KICAgICAgaXNBY3RpdmUgPSB0cnVlOw0KICAgICAgJGNs dWV0aXAucmVtb3ZlQ2xhc3MoKS5jc3Moe3dpZHRoOiB0aXBJbm5lcldpZHRofSk7 DQogICAgICBpZiAodGlwQXR0cmlidXRlID09ICR0aGlzLmF0dHIoJ2hyZWYnKSkg ew0KICAgICAgICAkdGhpcy5jc3MoJ2N1cnNvcicsIG9wdHMuY3Vyc29yKTsNCiAg ICAgIH0NCiAgICAgICR0aGlzLmF0dHIoJ3RpdGxlJywnJyk7DQogICAgICBpZiAo b3B0cy5ob3ZlckNsYXNzKSB7DQogICAgICAgICR0aGlzLmFkZENsYXNzKG9wdHMu aG92ZXJDbGFzcyk7DQogICAgICB9DQogICAgICBsaW5rVG9wID0gcG9zWSA9ICR0 aGlzLm9mZnNldCgpLnRvcDsNCiAgICAgIGxpbmtMZWZ0ID0gJHRoaXMub2Zmc2V0 KCkubGVmdDsNCiAgICAgIG1vdXNlWCA9IGV2ZW50LnBhZ2VYOw0KICAgICAgbW91 c2VZID0gZXZlbnQucGFnZVk7DQogICAgICBpZiAoJHRoaXNbMF0udGFnTmFtZS50 b0xvd2VyQ2FzZSgpICE9ICdhcmVhJykgew0KICAgICAgICBzVG9wID0gJChkb2N1 bWVudCkuc2Nyb2xsVG9wKCk7DQogICAgICAgIHdpbldpZHRoID0gJCh3aW5kb3cp LndpZHRoKCk7DQogICAgICB9DQovLyBwb3NpdGlvbiBjbHVlVGlwIGhvcml6b250 YWxseQ0KICAgICAgaWYgKG9wdHMucG9zaXRpb25CeSA9PSAnZml4ZWQnKSB7DQog ICAgICAgIHBvc1ggPSBsaW5rV2lkdGggKyBsaW5rTGVmdCArIGxPZmZzZXQ7DQog ICAgICAgICRjbHVldGlwLmNzcyh7bGVmdDogcG9zWH0pOw0KICAgICAgfSBlbHNl IHsNCg0KICAgICAgICBwb3NYID0gKGxpbmtXaWR0aCA+IGxpbmtMZWZ0ICYmIGxp bmtMZWZ0ID4gdGlwV2lkdGgpDQogICAgICAgICAgfHwgbGlua0xlZnQgKyBsaW5r V2lkdGggKyB0aXBXaWR0aCArIGxPZmZzZXQgPiB3aW5XaWR0aCANCiAgICAgICAg ICA/IGxpbmtMZWZ0IC0gdGlwV2lkdGggLSBsT2Zmc2V0IA0KICAgICAgICAgIDog bGlua1dpZHRoICsgbGlua0xlZnQgKyBsT2Zmc2V0Ow0KICAgICAgICBpZiAoJHRo aXNbMF0udGFnTmFtZS50b0xvd2VyQ2FzZSgpID09ICdhcmVhJyB8fCBvcHRzLnBv c2l0aW9uQnkgPT0gJ21vdXNlJyB8fCBsaW5rV2lkdGggKyB0aXBXaWR0aCA+IHdp bldpZHRoKSB7IC8vIHBvc2l0aW9uIGJ5IG1vdXNlDQogICAgICAgICAgaWYgKG1v dXNlWCArIDIwICsgdGlwV2lkdGggPiB3aW5XaWR0aCkgeyAgDQogICAgICAgICAg ICAkY2x1ZXRpcC5hZGRDbGFzcygnIGNsdWV0aXAtJyArIGN0Q2xhc3MpOw0KICAg ICAgICAgICAgcG9zWCA9IChtb3VzZVggLSB0aXBXaWR0aCAtIGxPZmZzZXQpID49 IDAgPyBtb3VzZVggLSB0aXBXaWR0aCAtIGxPZmZzZXQgLSBwYXJzZUludCgkY2x1 ZXRpcC5jc3MoJ21hcmdpbkxlZnQnKSwxMCkgKyBwYXJzZUludCgkY2x1ZXRpcElu bmVyLmNzcygnbWFyZ2luUmlnaHQnKSwxMCkgOiAgbW91c2VYIC0gKHRpcFdpZHRo LzIpOw0KICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICBwb3NYID0gbW91 c2VYICsgbE9mZnNldDsNCiAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgICAg dmFyIHBZID0gcG9zWCA8IDAgPyBldmVudC5wYWdlWSArIHRPZmZzZXQgOiBldmVu dC5wYWdlWTsNCiAgICAgICAgaWYoIG9wdHMuYXJyb3dIUG9zaXRpb24gPT0gJ29m ZnNldCcgKQ0KICAgICAgICB7IA0KICAgICAgICAgICAgJGNsdWV0aXAuY3NzKHts ZWZ0OiAocG9zWCA+IDAgJiYgKG9wdHMucG9zaXRpb25CeSAhPSAnYm90dG9tVG9w JyYmb3B0cy5wb3NpdGlvbkJ5ICE9ICd0b3BCb3R0b20nKSkgPyBwb3NYIDogKCgg bW91c2VYIDwgd2luV2lkdGgvMiApPyBNYXRoLm1heChtb3VzZVggLSAodGlwV2lk dGgvNSksMCkgOiBNYXRoLm1heChtb3VzZVggLSAodGlwV2lkdGgvMS4yNSksMCkg KSB9KTsNCiAgICAgICAgfQ0KICAgICAgICBlbHNlDQogICAgICAgIHsNCiAgICAg ICAgICAgICRjbHVldGlwLmNzcyh7bGVmdDogKHBvc1ggPiAwICYmIChvcHRzLnBv c2l0aW9uQnkgIT0gJ2JvdHRvbVRvcCcmJm9wdHMucG9zaXRpb25CeSAhPSAndG9w Qm90dG9tJykpID8gcG9zWCA6IChtb3VzZVggKyAodGlwV2lkdGgvMikgPiB3aW5X aWR0aCkgPyB3aW5XaWR0aC8yIC0gdGlwV2lkdGgvMiA6IE1hdGgubWF4KG1vdXNl WCAtICh0aXBXaWR0aC8yKSwwKX0pOw0KICAgICAgICB9DQogICAgICB9DQogICAg ICAgIHdIZWlnaHQgPSAkKHdpbmRvdykuaGVpZ2h0KCk7DQoNCi8qKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiogbG9hZCB0aGUgdGl0bGUg YXR0cmlidXRlIG9ubHkgKG9yIHVzZXItc2VsZWN0ZWQgYXR0cmlidXRlKS4gDQoq IGNsdWVUaXAgdGl0bGUgaXMgdGhlIHN0cmluZyBiZWZvcmUgdGhlIGZpcnN0IGRl bGltaXRlcg0KKiBzdWJzZXF1ZW50IGRlbGltaXRlcnMgcGxhY2UgY2x1ZVRpcCBi b2R5IHRleHQgb24gc2VwYXJhdGUgbGluZXMNCioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKi8NCiAgICAgIGlmICh0aXBQYXJ0cykgew0KICAg ICAgICB2YXIgdHBsID0gdGlwUGFydHMubGVuZ3RoOw0KICAgICAgICBmb3IgKHZh ciBpPTA7IGkgPCB0cGw7IGkrKyl7DQogICAgICAgICAgaWYgKGkgPT0gMCkgew0K ICAgICAgICAgICAgJGNsdWV0aXBJbm5lci5odG1sKHRpcFBhcnRzW2ldKTsNCiAg ICAgICAgICAgDQogICAgICAgICAgfSBlbHNlIHsgDQogICAgICAgICAgICAkY2x1 ZXRpcElubmVyLmFwcGVuZCgnPGRpdiBjbGFzcz0ic3BsaXQtYm9keSI+JyArIHRp cFBhcnRzW2ldICsgJzwvZGl2PicpOw0KICAgICAgICAgIH0gICAgICAgICAgICAN CiAgICAgICAgfTsNCiAgICAgICAgY2x1ZXRpcFNob3cocFkpOw0KICAgICAgfQ0K LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKiBsb2Fk IGV4dGVybmFsIGZpbGUgdmlhIGFqYXggICAgICAgICAgDQoqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKiovDQogICAgICBlbHNlIGlmICghb3B0 cy5sb2NhbCAmJiB0aXBBdHRyaWJ1dGUuaW5kZXhPZignIycpICE9IDApIHsNCiAg ICAgICAgaWYgKGNsdWV0aXBDb250ZW50cyAmJiBvcHRzLmFqYXhDYWNoZSkgew0K ICAgICAgICAgICRjbHVldGlwSW5uZXIuaHRtbChjbHVldGlwQ29udGVudHMpOw0K ICAgICAgICAgIGNsdWV0aXBTaG93KHBZKTsNCiAgICAgICAgfQ0KICAgICAgICBl bHNlIHsNCiAgICAgICAgICB2YXIgYWpheFNldHRpbmdzID0gb3B0cy5hamF4U2V0 dGluZ3M7DQogICAgICAgICAgYWpheFNldHRpbmdzLnVybCA9IHRpcEF0dHJpYnV0 ZTsNCiAgICAgICAgICBhamF4U2V0dGluZ3MuYmVmb3JlU2VuZCA9IGZ1bmN0aW9u KCkgew0KICAgICAgICAgICAgJGNsdWV0aXBPdXRlci5jaGlsZHJlbigpLmVtcHR5 KCk7DQogICAgICAgICAgICBpZiAob3B0cy53YWl0SW1hZ2UpIHsNCiAgICAgICAg ICAgICAgJCgnI2NsdWV0aXAtd2FpdGltYWdlJykNCiAgICAgICAgICAgICAgLmNz cyh7dG9wOiBtb3VzZVkrMjAsIGxlZnQ6IG1vdXNlWCsyMH0pDQogICAgICAgICAg ICAgIC5zaG93KCk7DQogICAgICAgICAgICB9DQogICAgICAgICAgfTsNCiAgICAg ICAgIGFqYXhTZXR0aW5ncy5lcnJvciA9IGZ1bmN0aW9uKCkgew0KICAgICAgICAg ICAgaWYgKGlzQWN0aXZlKSB7DQogICAgICAgICAgICAgICRjbHVldGlwSW5uZXIu aHRtbCgnPGk+c29ycnksIHRoZSBjb250ZW50cyBjb3VsZCBub3QgYmUgbG9hZGVk PC9pPicpOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgIH07DQogICAgICAgICAg YWpheFNldHRpbmdzLnN1Y2Nlc3MgPSBmdW5jdGlvbihkYXRhKSB7DQogICAgICAg ICAgICBjbHVldGlwQ29udGVudHMgPSBvcHRzLmFqYXhQcm9jZXNzKGRhdGEpOw0K ICAgICAgICAgICAgaWYgKGlzQWN0aXZlKSB7DQogICAgICAgICAgICAgICRjbHVl dGlwSW5uZXIuaHRtbChjbHVldGlwQ29udGVudHMpOw0KICAgICAgICAgICAgfQ0K ICAgICAgICAgIH07DQogICAgICAgICAgYWpheFNldHRpbmdzLmNvbXBsZXRlID0g ZnVuY3Rpb24oKSB7DQogICAgICAgICAgCWltZ0NvdW50ID0gJCgnI2NsdWV0aXAt aW5uZXIgaW1nJykubGVuZ3RoOw0KICAgICAgICAJCWlmIChpbWdDb3VudCkgew0K ICAgICAgICAJCSAgJCgnI2NsdWV0aXAtaW5uZXIgaW1nJykubG9hZCggZnVuY3Rp b24oKXsNCiAgICAgICAgICAJCQlpbWdDb3VudC0tOw0KICAgICAgICAgIAkJCWlm IChpbWdDb3VudDwxKSB7DQogICAgICAgICAgCQkJCSQoJyNjbHVldGlwLXdhaXRp bWFnZScpLmhpZGUoKTsNCiAgICAgICAgICAJCQkgIGlmIChpc0FjdGl2ZSkgY2x1 ZXRpcFNob3cocFkpOw0KICAgICAgICAgIAkJCX0NCiAgICAgICAgCQkgIH0pOyAN CiAgICAgICAgCQl9IGVsc2Ugew0KICAgICAgCQkJCSQoJyNjbHVldGlwLXdhaXRp bWFnZScpLmhpZGUoKTsNCiAgICAgICAgCQkgIGlmIChpc0FjdGl2ZSkgY2x1ZXRp cFNob3cocFkpOyAgICANCiAgICAgICAgCQl9IA0KICAgICAgICAgIH07DQogICAg ICAgICAgJC5hamF4KGFqYXhTZXR0aW5ncyk7DQogICAgICAgIH0NCg0KLyoqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKiBsb2FkIGFuIGVs ZW1lbnQgZnJvbSB0aGUgc2FtZSBwYWdlDQoqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKiovDQogICAgICB9IGVsc2UgaWYgKG9wdHMubG9jYWwp ew0KICAgICAgICB2YXIgJGxvY2FsQ29udGVudCA9ICQodGlwQXR0cmlidXRlICsg JzpmaXJzdCcpOw0KICAgICAgICB2YXIgbG9jYWxDbHVldGlwID0gJC5mbi53cmFw SW5uZXIgPyAkbG9jYWxDb250ZW50LndyYXBJbm5lcignPGRpdj48L2Rpdj4nKS5j aGlsZHJlbigpLmNsb25lKHRydWUpIDogJGxvY2FsQ29udGVudC5odG1sKCk7DQog ICAgICAgICQuZm4ud3JhcElubmVyID8gJGNsdWV0aXBJbm5lci5lbXB0eSgpLmFw cGVuZChsb2NhbENsdWV0aXApIDogJGNsdWV0aXBJbm5lci5odG1sKGxvY2FsQ2x1 ZXRpcCk7DQogICAgICAgIGNsdWV0aXBTaG93KHBZKTsNCiAgICAgIH0NCiAgICB9 Ow0KICAgIA0KICAgIHZhciBjbGVhckNsb3NlID0gZnVuY3Rpb24oKSB7IC8vIGN1 c3RvbQ0KICAgICAgICBpZiggY2xvc2VPbkRlbGF5ICE9IG51bGwgKQ0KICAgICAg ICB7DQogICAgICAgICAgY2xlYXJUaW1lb3V0KCBjbG9zZU9uRGVsYXkgKTsNCiAg ICAgICAgICBjbG9zZU9uRGVsYXkgPSBudWxsOw0KICAgICAgICB9DQogICAgICB9 DQogICAgdmFyIGdvQ2xvc2UgPSBmdW5jdGlvbigpIHsgY2x1ZXRpcENsb3NlKCk7 IH0gLy8gY3VzdG9tDQogICAgDQovLyBnZXQgZGltZW5zaW9ucyBhbmQgb3B0aW9u cyBmb3IgY2x1ZXRpcCBhbmQgcHJlcGFyZSBpdCB0byBiZSBzaG93bg0KICAgIHZh ciBjbHVldGlwU2hvdyA9IGZ1bmN0aW9uKGJwWSkgew0KICAgICBpZiAoIW9wdHMu c3BsaXRUaXRsZSkgew0KICAgICAgICBpZigkY2x1ZXRpcElubmVyLmh0bWwoKT09 Jyd8fCRjbHVldGlwSW5uZXIuaHRtbCgpPT0nPERJVj48L0RJVj4nfHwkY2x1ZXRp cElubmVyLmh0bWwoKT09JzxkaXY+PC9kaXY+Jyl7cmV0dXJuIGZhbHNlfQ0KICAg IH0NCiAgICAgICRjbHVldGlwLmFkZENsYXNzKCdjbHVldGlwLScgKyBjdENsYXNz KTsNCiAgICAgIA0KICAgICAgaWYgKG9wdHMudHJ1bmNhdGUpIHsgDQogICAgICAg IHZhciAkdHJ1bmNsb2FkZWQgPSAkY2x1ZXRpcElubmVyLnRleHQoKS5zbGljZSgw LG9wdHMudHJ1bmNhdGUpICsgJy4uLic7DQogICAgICAgICRjbHVldGlwSW5uZXIu aHRtbCgkdHJ1bmNsb2FkZWQpOw0KICAgICAgfQ0KICAgICAgZnVuY3Rpb24gZG9O b3RoaW5nKCkge307IC8vZW1wdHkgZnVuY3Rpb24NCiAgICANCiAgICAgIHRpcFRp dGxlID8gJGNsdWV0aXBUaXRsZS5zaG93KCkuaHRtbCh0aXBUaXRsZSkgOiAob3B0 cy5zaG93VGl0bGUpID8gJGNsdWV0aXBUaXRsZS5zaG93KCkuaHRtbCgnJm5ic3A7 JykgOiAkY2x1ZXRpcFRpdGxlLmhpZGUoKTsNCiAgICAgIGlmIChvcHRzLnN0aWNr eSkNCiAgICAgIHsNCiAgICAgICAgICAgIHZhciAkY2xvc2VMaW5rID0gJCgnPGRp diBpZD0iY2x1ZXRpcC1jbG9zZSI+PGEgaHJlZj0iIyI+JyArIG9wdHMuY2xvc2VU ZXh0ICsgJzwvYT48L2Rpdj4nKTsNCiAgICAgICAgICAgIGlmKG9wdHMuY2xvc2VU ZXh0Lmxlbmd0aCA+IDAgKSB7DQogICAgICAgICAgICAob3B0cy5jbG9zZVBvc2l0 aW9uID09ICdib3R0b20nKSA/ICRjbG9zZUxpbmsuYXBwZW5kVG8oJGNsdWV0aXBJ bm5lcikgOiAob3B0cy5jbG9zZVBvc2l0aW9uID09ICd0aXRsZScpID8gJGNsb3Nl TGluay5wcmVwZW5kVG8oJGNsdWV0aXBUaXRsZSkgOiAkY2xvc2VMaW5rLnByZXBl bmRUbygkY2x1ZXRpcElubmVyKTsgfQ0KICAgICAgICAgICAgJGNsb3NlTGluay5j bGljayhmdW5jdGlvbigpIHsNCiAgICAgICAgICAgICAgICBjbHVldGlwQ2xvc2Uo KTsNCiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICAg ICAgfSk7DQogICAgICAgICAgICBpZiAob3B0cy5tb3VzZU91dENsb3NlKSB7DQog ICAgICAgICAgICAgICAgaWYgKCQuZm4uaG92ZXJJbnRlbnQgJiYgb3B0cy5ob3Zl ckludGVudCkgeyANCiAgICAgICAgICAgICAgICAkY2x1ZXRpcC5ob3ZlckludGVu dCh7DQogICAgICAgICAgICAgICAgb3ZlcjogZG9Ob3RoaW5nLCANCiAgICAgICAg ICAgICAgICB0aW1lb3V0OiBvcHRzLmhvdmVySW50ZW50LnRpbWVvdXQsICANCiAg ICAgICAgICAgICAgICBvdXQ6IGZ1bmN0aW9uKCkgeyAkY2xvc2VMaW5rLnRyaWdn ZXIoJ2NsaWNrJyk7IH0NCiAgICAgICAgICAgICAgICAgICAgfSk7DQogICAgICAg ICAgICAgICAgfSANCiAgICAgICAgICAgICAgICBlbHNlIHsNCiAgICAgICAgICAg ICAgICAkY2x1ZXRpcC5ob3ZlcihjbGVhckNsb3NlLCBnb0Nsb3NlICk7IC8vIGN1 c3RvbQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAg ICAgIGVsc2Ugew0KICAgICAgICAgICAgICAgICRjbHVldGlwLnVuYmluZCgnbW91 c2VvdXQnKTsNCiAgICAgICAgICAgICB9DQogICAgICB9DQovLyBub3cgdGhhdCBj b250ZW50IGlzIGxvYWRlZCwgZmluaXNoIHRoZSBwb3NpdGlvbmluZyANCiAgICAg IHZhciBkaXJlY3Rpb24gPSAnJzsNCiAgICAgICRjbHVldGlwT3V0ZXIuY3NzKHtv dmVyZmxvdzogZGVmSGVpZ2h0ID09ICdhdXRvJyA/ICd2aXNpYmxlJyA6ICdhdXRv JywgaGVpZ2h0OiBkZWZIZWlnaHR9KTsNCiAgICAgIHRpcEhlaWdodCA9IGRlZkhl aWdodCA9PSAnYXV0bycgPyAkY2x1ZXRpcC5vdXRlckhlaWdodCgpIDogcGFyc2VJ bnQoZGVmSGVpZ2h0LDEwKTsgICANCiAgICAgIHRpcEhlaWdodCA9ICRjbHVldGlw LmhlaWdodCgpOy8vIGN1c3RvbWl6ZSA6c2luY2Ugb3V0ZXJIZWlnaHQoKSBkb2Vz IG5vdCB3b3JrDQogICAgICANCiAgICAgIHRpcFkgPSBwb3NZOw0KICAgICAgYmFz ZWxpbmUgPSBzVG9wICsgd0hlaWdodDsNCiAgICAgDQogICAgICBpZiAob3B0cy5w b3NpdGlvbkJ5ID09ICdmaXhlZCcpIHsNCg0KICAgICAgICB0aXBZID0gcG9zWSAt IG9wdHMuZHJvcFNoYWRvd1N0ZXBzICsgdE9mZnNldDsNCiAgICAgIH0gZWxzZSBp ZiAoIChwb3NYIDwgbW91c2VYICYmIE1hdGgubWF4KHBvc1gsIDApICsgdGlwV2lk dGggPiBtb3VzZVgpIHx8IG9wdHMucG9zaXRpb25CeSA9PSAndG9wQm90dG9tJykg ew0KICAgICAgICBpZiAocG9zWSArIHRpcEhlaWdodCArIHRPZmZzZXQgPCBiYXNl bGluZSAmJiBtb3VzZVkgLSBzVG9wIDwgdGlwSGVpZ2h0ICsgdE9mZnNldCkgeyAN CiAgICAgICAgICAgICAgdGlwWSA9IG1vdXNlWSArIHRPZmZzZXQ7DQogICAgICAg ICAgICAgIGRpcmVjdGlvbiA9ICdib3R0b20nOw0KICAgICAgICAgIH0gZWxzZSB7 IA0KICAgICAgICAgICAgICB0aXBZID0gbW91c2VZIC0gdGlwSGVpZ2h0IC0gdE9m ZnNldDsNCiAgICAgICAgICAgICAgZGlyZWN0aW9uID0gJ3RvcCc7DQogICAgICAg ICAgfQ0KICAgICAgfWVsc2UgaWYgKCAocG9zWCA8IG1vdXNlWCAmJiBNYXRoLm1h eChwb3NYLCAwKSArIHRpcFdpZHRoID4gbW91c2VYKSB8fCBvcHRzLnBvc2l0aW9u QnkgPT0gJ2JvdHRvbVRvcCcpIHsgIA0KICAgICAgICBpZiAocG9zWSArIHRpcEhl aWdodCArIHRPZmZzZXQgPiBiYXNlbGluZSAmJiBtb3VzZVkgLSBzVG9wID4gdGlw SGVpZ2h0ICsgdE9mZnNldCkgeyANCiAgICAgICAgICB0aXBZID0gbW91c2VZIC0g dGlwSGVpZ2h0IC0gdE9mZnNldDsNCiAgICAgICAgICBkaXJlY3Rpb24gPSAndG9w JzsNCiAgICAgICAgfSBlbHNlIHsgDQogICAgICAgICAgdGlwWSA9IG1vdXNlWSAr IHRPZmZzZXQ7DQogICAgICAgICAgZGlyZWN0aW9uID0gJ2JvdHRvbSc7DQogICAg ICAgIH0NCiAgICAgIH0gZWxzZSBpZiAoIHBvc1kgKyB0aXBIZWlnaHQgKyB0T2Zm c2V0ID4gYmFzZWxpbmUgKSB7DQogICAgICAgIHRpcFkgPSAodGlwSGVpZ2h0ID49 IHdIZWlnaHQpID8gc1RvcCA6IGJhc2VsaW5lIC0gdGlwSGVpZ2h0IC0gdE9mZnNl dDsNCiAgICAgIH0gZWxzZSBpZiAoJHRoaXMuY3NzKCdkaXNwbGF5JykgPT0gJ2Js b2NrJyB8fCAkdGhpc1swXS50YWdOYW1lLnRvTG93ZXJDYXNlKCkgPT0gJ2FyZWEn IHx8IG9wdHMucG9zaXRpb25CeSA9PSAibW91c2UiKSB7DQogICAgICAgIHRpcFkg PSBicFkgLSB0T2Zmc2V0Ow0KICAgICAgfSBlbHNlIHsNCiAgICAgICAgdGlwWSA9 IHBvc1kgLSBvcHRzLmRyb3BTaGFkb3dTdGVwczsNCiAgICAgIH0NCiAgICAgIGlm IChkaXJlY3Rpb24gPT0gJycpIHsNCiAgICAgICAgcG9zWCA8IGxpbmtMZWZ0ID8g ZGlyZWN0aW9uID0gJ2xlZnQnIDogZGlyZWN0aW9uID0gJ3JpZ2h0JzsNCiAgICAg IH0NCiAgICAgICRjbHVldGlwLmNzcyh7dG9wOiB0aXBZICsgJ3B4J30pLnJlbW92 ZUNsYXNzKCkuYWRkQ2xhc3MoJ2NsdWUtJyArIG9wdHMuYXJyb3dTaXplICsgJy0n ICsgZGlyZWN0aW9uICsgJy0nICsgY3RDbGFzcykuYWRkQ2xhc3MoJyBjbHVldGlw LScgKyBjdENsYXNzKTsNCiAgICANCiAgICAgIC8vIGN1dG9taXplIHRvIHNldCB0 aGUgbGVmdCAmIHRvcCBmb3IgaWNvbiBob3ZlciBvdmVyDQogICAgIGlmIChvcHRz LnNwbGl0VGl0bGUpIHsNCiAgICAgICAgdmFyIG9mc3QgPSAkdGhpcy5wYXJlbnQo KS5vZmZzZXQoKTsNCiAgICAgICAgdmFyIHRlc3R4ID0gb2ZzdC5sZWZ0IC0gNTU7 DQogICAgICAgICRjbHVldGlwLmNzcygibGVmdCIsdGVzdHggKyJweCIpOw0KICAg ICAgICB2YXIgdGVzdHkgPSBwb3NZIC0gb3B0cy5kcm9wU2hhZG93U3RlcHMgKyB0 T2Zmc2V0ICsgJHRoaXMuaGVpZ2h0KCk7DQogICAgICAgICRjbHVldGlwLmNzcygi dG9wIix0ZXN0eSArInB4Iik7DQogICAgIH0NCi8vICAgICBpZihkaXJlY3Rpb249 PSdyaWdodCcpeyRkcm9wU2hhZG93LmNzcyh7bGVmdDonNHB4J30pfWVsc2V7JGRy b3BTaGFkb3cuY3NzKHtsZWZ0OictMnB4J30pfQ0KICAgICAkZHJvcFNoYWRvdy5j c3Moe2xlZnQ6JzNweCd9KQ0KICAgICAkZHJvcFNoYWRvdy5jc3Moe3RvcDonM3B4 J30pDQogICAgIC8vIGVuZCBjdXRvbWl6ZQ0KICAgDQogICAgIC8vIC0tLS0tDQog ICAgICBpZiAob3B0cy5hcnJvd3MpIHsgLy8gc2V0IHVwIGFycm93IHBvc2l0aW9u aW5nIHRvIGFsaWduIHdpdGggZWxlbWVudA0KICAgICAgICB2YXIgYmdZID0gKHBv c1kgLSB0aXBZIC0gb3B0cy5kcm9wU2hhZG93U3RlcHMpOw0KICAgICAgICBpZigg aXNJRTYgKQ0KICAgICAgICB7DQogICAgICAgICAgICBiZ1kgPSBiZ1kgKyA0MDsN CiAgICAgICAgfSANCiAgICAgICAgZWxzZQ0KICAgICAgICB7DQogICAgICAgICAg ICBiZ1kgPSBiZ1kgLSA1MDsNCiAgICAgICAgfS8vIGN1c3RvbWl6ZSB0byBoaW5n ZSBvbiB0aGUgY2VudGVyIG9mIHRoZSBpY29uDQogICAgICAgICRjbHVldGlwQXJy b3dzLmNzcyh7DQogICAgICAgICAgICB0b3A6IC8odG9wKS8udGVzdChkaXJlY3Rp b24pID8gdGlwSGVpZ2h0LTEgOiAvKGJvdHRvbSkvLnRlc3QoZGlyZWN0aW9uKSA/ ICgvKHNtKS8udGVzdChvcHRzLmFycm93U2l6ZSkgPyAtNSA6IC0xOCkgOiAoLyhs ZWZ0fHJpZ2h0KS8udGVzdChkaXJlY3Rpb24pICYmIHBvc1ggPj0wICYmIGJnWSA+ IDApID8gYmdZICsgJ3B4JyA6IC8obGVmdHxyaWdodCkvLnRlc3QoZGlyZWN0aW9u KSA/IDAgOiAnJywNCiAgICAgICAgICAgIGxlZnQ6IC8obGVmdCkvLnRlc3QoZGly ZWN0aW9uKSA/IHRpcFdpZHRoLWRyb3BTaGFkb3dTdGVwcy0xIDogLyhyaWdodCkv LnRlc3QoZGlyZWN0aW9uKSA/ICgvKHNtKS8udGVzdChvcHRzLmFycm93U2l6ZSkg PyAtNSA6IC0xOCkgOiAoKC8odG9wfGJvdHRvbSkvLnRlc3QoZGlyZWN0aW9uKSAm JiBvcHRzLmFycm93SFBvc2l0aW9uID09ICdvZmZzZXQnKSA/ICgoIG1vdXNlWCA8 IHdpbldpZHRoLzIgKT8gTWF0aC5tYXgoKHRpcFdpZHRoLzUpLDApIDogTWF0aC5t YXgoKHRpcFdpZHRoLzEuMjUpLDApICkgOiAnNTAlJyApDQogICAgICAgIH0pLnNo b3coKTsgICAgICAgICANCiAgICAgIH0NCiAgICAgIGVsc2UNCiAgICAgIHsNCiAg ICAgICAgJGNsdWV0aXBBcnJvd3MuaGlkZSgpOw0KICAgICAgfQ0KDQovLyAoZmly c3QgaGlkZSwgdGhlbikgKioqU0hPVyBUSEUgQ0xVRVRJUCoqKg0KICAgICAgJGRy b3BTaGFkb3cuaGlkZSgpOw0KICAgICAgJGNsdWV0aXAuaGlkZSgpW29wdHMuZngu b3Blbl0ob3B0cy5meC5vcGVuICE9ICdzaG93JyAmJiBvcHRzLmZ4Lm9wZW5TcGVl ZCk7DQogICAgICBpZiAob3B0cy5kcm9wU2hhZG93KSAkZHJvcFNoYWRvdy5jc3Mo e2hlaWdodDogdGlwSGVpZ2h0LCB3aWR0aDogb3B0cy53aWR0aH0pLnNob3coKTsN CiAgICAgIGlmICgkLmZuLmJnaWZyYW1lKSB7ICRjbHVldGlwLmJnaWZyYW1lKCk7 IH0NCiAgICAgIC8vIHRyaWdnZXIgdGhlIG9wdGlvbmFsIG9uU2hvdyBmdW5jdGlv bg0KICAgICAgb3B0cy5vblNob3coJGNsdWV0aXAsICRjbHVldGlwSW5uZXIpOw0K ICAgICAgLy8kY2x1ZXRpcFRpdGxlLmNvcm5lcigiOHB4Iik7DQogICAgICAgLy8g JGNsdWV0aXAuY3NzKCJkaXNwbGF5IiwgImlubGluZSIpOw0KICAgIH07DQoNCi8q KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgID1JTkFD VElWQVRJT04NCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t ICovDQoNCiAgICANCiAgICB2YXIgaW5hY3RpdmF0ZSA9IGZ1bmN0aW9uKCkgew0K ICAgICAgY2xlYXJUaW1lb3V0KCBvcGVuT25EZWxheSApOw0KICAgICAgb3Blbk9u RGVsYXkgPSBudWxsOw0KICAgICAgaXNBY3RpdmUgPSBmYWxzZTsNCiAgICAgICQo JyNjbHVldGlwLXdhaXRpbWFnZScpLmhpZGUoKTsNCiAgICAgIGlmICghb3B0cy5z dGlja3kgfHwgKC9jbGlja3x0b2dnbGUvKS50ZXN0KG9wdHMuYWN0aXZhdGlvbikg KSB7DQogICAgICAgIGNsdWV0aXBDbG9zZSgpOw0KICAgICAgfTsNCiAgICAgIGlm IChvcHRzLmhvdmVyQ2xhc3MpIHsNCiAgICAgICAgJHRoaXMucmVtb3ZlQ2xhc3Mo b3B0cy5ob3ZlckNsYXNzKTsNCiAgICAgIH0NCiAgICAgICQoJy5jbHVldGlwLWNs aWNrZWQnKS5yZW1vdmVDbGFzcygnY2x1ZXRpcC1jbGlja2VkJyk7DQogICAgfTsN CiAgICANCiAgICAvLyBjbG9zZSBjbHVldGlwIGFuZCByZXNldCBzb21lIHRoaW5n cw0KICAgIHZhciBjbHVldGlwQ2xvc2UgPSBmdW5jdGlvbigpDQogICAgeyANCiAg ICAgICAgaWYoIG9wdHMuZGVsYXllZENsb3NlID4gMCApDQogICAgICAgIHsNCiAg ICAgICAgICAgIGNsb3NlT25EZWxheSA9IHNldFRpbWVvdXQoIGNsdWV0aXBDbG9z ZUl0LCBvcHRzLmRlbGF5ZWRDbG9zZSApOw0KICAgICAgICB9DQogICAgICAgIGVs c2UNCiAgICAgICAgew0KICAgICAgICAgICAgY2x1ZXRpcENsb3NlSXQoKTsNCiAg ICAgICAgfQ0KICAgIH0NCiAgICB2YXIgY2x1ZXRpcENsb3NlSXQgPSBmdW5jdGlv bigpIHsNCiAgICAgIGNsb3NlT25EZWxheSA9IG51bGw7DQogICAgICAkY2x1ZXRp cE91dGVyIA0KICAgICAgLnBhcmVudCgpLmhpZGUoKS5yZW1vdmVDbGFzcygpLmVu ZCgpDQogICAgICAuY2hpbGRyZW4oKS5lbXB0eSgpOw0KICAgICAgaWYgKHRpcFRp dGxlKSB7DQogICAgICAgICR0aGlzLmF0dHIoJ3RpdGxlJywgdGlwVGl0bGUpOw0K ICAgICAgfQ0KICAgICAgJHRoaXMuY3NzKCdjdXJzb3InLCcnKTsNCiAgICAgIGlm IChvcHRzLmFycm93cykgJGNsdWV0aXBBcnJvd3MuY3NzKHt0b3A6ICcnfSk7DQog ICAgfTsNCg0KLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq Kg0KICAgPUJJTkQgRVZFTlRTDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSAqLw0KICAvLyBhY3RpdmF0ZSBieSBjbGljaw0KICAgICAgaWYg KCAoL2NsaWNrfHRvZ2dsZS8pLnRlc3Qob3B0cy5hY3RpdmF0aW9uKSApIHsNCiAg ICAgICAgJHRoaXMuY2xpY2soZnVuY3Rpb24oZXZlbnQpIHsNCiAgICAgICAgICBp ZiAoJGNsdWV0aXAuaXMoJzpoaWRkZW4nKSB8fCAhJHRoaXMuaXMoJy5jbHVldGlw LWNsaWNrZWQnKSkgew0KICAgICAgICAgICAgYWN0aXZhdGUoZXZlbnQpOw0KICAg ICAgICAgICAgJCgnLmNsdWV0aXAtY2xpY2tlZCcpLnJlbW92ZUNsYXNzKCdjbHVl dGlwLWNsaWNrZWQnKTsNCiAgICAgICAgICAgICR0aGlzLmFkZENsYXNzKCdjbHVl dGlwLWNsaWNrZWQnKTsNCiAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAg aW5hY3RpdmF0ZShldmVudCk7DQogICAgICAgICAgfQ0KICAgICAgICAgIHRoaXMu Ymx1cigpOw0KICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgfSk7DQog IC8vIGFjdGl2YXRlIGJ5IGZvY3VzOyBpbmFjdGl2YXRlIGJ5IGJsdXIgICAgDQog ICAgICB9IGVsc2UgaWYgKG9wdHMuYWN0aXZhdGlvbiA9PSAnZm9jdXMnKSB7DQog ICAgICAgICR0aGlzLmZvY3VzKGZ1bmN0aW9uKGV2ZW50KSB7DQogICAgICAgICAg YWN0aXZhdGUoZXZlbnQpOw0KICAgICAgICB9KTsNCiAgICAgICAgJHRoaXMuYmx1 cihmdW5jdGlvbihldmVudCkgew0KICAgICAgICAgIGluYWN0aXZhdGUoZXZlbnQp Ow0KICAgICAgICB9KTsNCiAgLy8gYWN0aXZhdGUgYnkgaG92ZXINCiAgICAvLyBj bGlja2luZyBpcyByZXR1cm5lZCBmYWxzZSBpZiBjbHVldGlwIHVybCBpcyBzYW1l IGFzIGhyZWYgdXJsDQogICAgICB9IGVsc2Ugew0KICAgICAgICAkdGhpcy5jbGlj ayhmdW5jdGlvbigpIHsNCiAgICAgICAgICBpZiAoJHRoaXMuYXR0cignaHJlZicp ICYmICR0aGlzLmF0dHIoJ2hyZWYnKSA9PSB0aXBBdHRyaWJ1dGUgJiYgIW9wdHMu Y2xpY2tUaHJvdWdoKSB7DQogICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAg ICAgICAgfQ0KICAgICAgICB9KTsNCiAgICAgICAgLy9zZXQgdXAgbW91c2UgdHJh Y2tpbmcNCiAgICAgICAgdmFyIG1vdXNlVHJhY2tzID0gZnVuY3Rpb24oZXZ0KSB7 DQogICAgICAgICAgaWYgKG9wdHMudHJhY2tpbmcgPT0gdHJ1ZSkgew0KICAgICAg ICAgICAgdmFyIHRyYWNrWCA9IHBvc1ggLSBldnQucGFnZVg7DQogICAgICAgICAg ICB2YXIgdHJhY2tZID0gdGlwWSA/IHRpcFkgLSBldnQucGFnZVkgOiBwb3NZIC0g ZXZ0LnBhZ2VZOw0KICAgICAgICAgICAgJHRoaXMubW91c2Vtb3ZlKGZ1bmN0aW9u KGV2dCkgew0KICAgICAgICAgICAgICAkY2x1ZXRpcC5jc3Moe2xlZnQ6IGV2dC5w YWdlWCArIHRyYWNrWCwgdG9wOiBldnQucGFnZVkgKyB0cmFja1kgfSk7DQogICAg ICAgICAgICB9KTsNCiAgICAgICAgICB9DQogICAgICAgIH07DQogICAgICAgIGlm ICgkLmZuLmhvdmVySW50ZW50ICYmIG9wdHMuaG92ZXJJbnRlbnQpIHsNCiAgICAg ICAgICAkdGhpcy5tb3VzZW92ZXIoZnVuY3Rpb24oKSB7JHRoaXMuYXR0cigndGl0 bGUnLCcnKTsgfSkNCiAgICAgICAgICAuaG92ZXJJbnRlbnQoew0KICAgICAgICAg ICAgc2Vuc2l0aXZpdHk6IG9wdHMuaG92ZXJJbnRlbnQuc2Vuc2l0aXZpdHksDQog ICAgICAgICAgICBpbnRlcnZhbDogb3B0cy5ob3ZlckludGVudC5pbnRlcnZhbCwg IA0KICAgICAgICAgICAgb3ZlcjogZnVuY3Rpb24oZXZlbnQpIHsNCiAgICAgICAg ICAgICAgYWN0aXZhdGUoZXZlbnQpOw0KICAgICAgICAgICAgICBtb3VzZVRyYWNr cyhldmVudCk7DQogICAgICAgICAgICB9LCANCiAgICAgICAgICAgIHRpbWVvdXQ6 IG9wdHMuaG92ZXJJbnRlbnQudGltZW91dCwgIA0KICAgICAgICAgICAgb3V0OiBm dW5jdGlvbihldmVudCkge2luYWN0aXZhdGUoZXZlbnQpOyAkdGhpcy51bmJpbmQo J21vdXNlbW92ZScpO30NCiAgICAgICAgICB9KTsgICAgICAgICAgIA0KICAgICAg ICB9IGVsc2Ugew0KICAgICAgICAgICR0aGlzLmhvdmVyKGZ1bmN0aW9uKGV2ZW50 KSB7IA0KICAgICAgICAgICAgYWN0aXZhdGUoZXZlbnQpOw0KICAgICAgICAgICAg bW91c2VUcmFja3MoZXZlbnQpOw0KICAgICAgICAgIH0sIGZ1bmN0aW9uKGV2ZW50 KSB7IA0KICAgICAgICAgICAgY2x1ZXRpcENsb3NlKCk7DQogICAgICAgICAgICBp bmFjdGl2YXRlKGV2ZW50KTsNCiAgICAgICAgICAgICR0aGlzLnVuYmluZCgnbW91 c2Vtb3ZlJyk7DQogICAgICAgICAgfSk7DQogICAgICAgIH0NCiAgICAgIH0NCiAg ICB9KTsNCiAgfTsNCiAgDQovKg0KICogb3B0aW9ucyBmb3IgY2x1ZVRpcA0KICoN CiAqIGVhY2ggb25lIGNhbiBiZSBleHBsaWNpdGx5IG92ZXJyaWRkZW4gYnkgY2hh bmdpbmcgaXRzIHZhbHVlLiANCiAqIGZvciBleGFtcGxlOiAkLmZuLmNsdWV0aXAu ZGVmYXVsdHMud2lkdGggPSAyMDA7IA0KICogd291bGQgY2hhbmdlIHRoZSBkZWZh dWx0IHdpZHRoIGZvciBhbGwgY2x1ZVRpcHMgdG8gMjAwLiANCiAqDQogKiBlYWNo IG9uZSBjYW4gYWxzbyBiZSBvdmVycmlkZGVuIGJ5IHBhc3NpbmcgYW4gb3B0aW9u cyBtYXAgdG8gdGhlIGNsdWV0aXAgbWV0aG9kLg0KICogZm9yIGV4YW1wbGU6ICQo J2EuZXhhbXBsZScpLmNsdWV0aXAoe3dpZHRoOiAyMDB9KTsgDQogKiB3b3VsZCBj aGFuZ2UgdGhlIGRlZmF1bHQgd2lkdGggdG8gMjAwIGZvciBjbHVlVGlwcyBpbnZv a2VkIGJ5IGEgbGluayB3aXRoIGNsYXNzIG9mICJleGFtcGxlIg0KICoNCiAqLw0K ICANCiAgJC5mbi5jbHVldGlwLmRlZmF1bHRzID0geyAgLy8gc2V0IHVwIGRlZmF1 bHQgb3B0aW9ucw0KICAgIHdpZHRoOiAgICAgICAgICAgIDI3NSwgICAgICAvLyBU aGUgd2lkdGggb2YgdGhlIGNsdWVUaXANCiAgICBoZWlnaHQ6ICAgICAgICAgICAn YXV0bycsICAgLy8gVGhlIGhlaWdodCBvZiB0aGUgY2x1ZVRpcA0KICAgIGNsdWV6 SW5kZXg6ICAgICAgIDk3LCAgICAgICAvLyBTZXRzIHRoZSB6LWluZGV4IHN0eWxl IHByb3BlcnR5IG9mIHRoZSBjbHVlVGlwDQogICAgcG9zaXRpb25CeTogICAgICAg J2F1dG8nLCAgIC8vIFNldHMgdGhlIHR5cGUgb2YgcG9zaXRpb25pbmc6ICdhdXRv JywgJ21vdXNlJywnYm90dG9tVG9wJywndG9wQm90dG9tJywgJ2ZpeGVkJw0KICAg IHRvcE9mZnNldDogICAgICAgIDE1LCAgICAgICAvLyBOdW1iZXIgb2YgcHggdG8g b2Zmc2V0IGNsdWVUaXAgZnJvbSB0b3Agb2YgaW52b2tpbmcgZWxlbWVudA0KICAg IGxlZnRPZmZzZXQ6ICAgICAgIDE1LCAgICAgICAvLyBOdW1iZXIgb2YgcHggdG8g b2Zmc2V0IGNsdWVUaXAgZnJvbSBsZWZ0IG9mIGludm9raW5nIGVsZW1lbnQNCiAg ICBsb2NhbDogICAgICAgICAgICBmYWxzZSwgICAgLy8gV2hldGhlciB0byB1c2Ug Y29udGVudCBmcm9tIHRoZSBzYW1lIHBhZ2UgZm9yIHRoZSBjbHVlVGlwJ3MgYm9k eQ0KICAgIGhpZGVMb2NhbDogICAgICAgIHRydWUsICAgICAvLyBJZiBsb2NhbCBv cHRpb24gaXMgc2V0IHRvIHRydWUsIHRoaXMgZGV0ZXJtaW5lcyB3aGV0aGVyIGxv Y2FsIGNvbnRlbnQNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g dG8gYmUgc2hvd24gaW4gY2x1ZVRpcCBzaG91bGQgYmUgaGlkZGVuIGF0IGl0cyBv cmlnaW5hbCBsb2NhdGlvbg0KICAgIGF0dHJpYnV0ZTogICAgICAgICdyZWwnLCAg ICAvLyB0aGUgYXR0cmlidXRlIHRvIGJlIHVzZWQgZm9yIGZldGNoaW5nIHRoZSBj bHVlVGlwJ3MgYm9keSBjb250ZW50DQogICAgdGl0bGVBdHRyaWJ1dGU6ICAgJ3Rp dGxlJywgIC8vIHRoZSBhdHRyaWJ1dGUgdG8gYmUgdXNlZCBmb3IgZmV0Y2hpbmcg dGhlIGNsdWVUaXAncyB0aXRsZQ0KICAgIHNwbGl0VGl0bGU6ICAgICAgICcnLCAg ICAgICAvLyBBIGNoYXJhY3RlciB1c2VkIHRvIHNwbGl0IHRoZSB0aXRsZSBhdHRy aWJ1dGUgaW50byB0aGUgY2x1ZVRpcCB0aXRsZSBhbmQgZGl2cw0KICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAvLyB3aXRoaW4gdGhlIGNsdWVUaXAgYm9k eS4gbW9yZSBpbmZvIGJlbG93IFs2XQ0KICAgIHNob3dUaXRsZTogICAgICAgIHRy dWUsICAgICAvLyBzaG93IHRpdGxlIGJhciBvZiB0aGUgY2x1ZVRpcCwgZXZlbiBp ZiB0aXRsZSBhdHRyaWJ1dGUgbm90IHNldA0KICAgIGNsdWV0aXBDbGFzczogICAg ICdkZWZhdWx0JywvLyBjbGFzcyBhZGRlZCB0byBvdXRlcm1vc3QgY2x1ZVRpcCBk aXYgaW4gdGhlIGZvcm0gb2YgJ2NsdWV0aXAtJyArIGNsdWVUaXBDbGFzcy4NCiAg ICBob3ZlckNsYXNzOiAgICAgICAnJywgICAgICAgLy8gY2xhc3MgYXBwbGllZCB0 byB0aGUgaW52b2tpbmcgZWxlbWVudCBvbm1vdXNlb3ZlciBhbmQgcmVtb3ZlZCBv bm1vdXNlb3V0DQogICAgd2FpdEltYWdlOiAgICAgICAgdHJ1ZSwgICAgIC8vIHdo ZXRoZXIgdG8gc2hvdyBhICJsb2FkaW5nIiBpbWcsIHdoaWNoIGlzIHNldCBpbiBq cXVlcnkuY2x1ZXRpcC5jc3MNCiAgICBjdXJzb3I6ICAgICAgICAgICAnaGVscCcs DQogICAgYXJyb3dzOiAgICAgICAgICAgZmFsc2UsICAgIC8vIGlmIHRydWUsIGRp c3BsYXlzIGFycm93IG9uIGFwcHJvcHJpYXRlIHNpZGUgb2YgY2x1ZVRpcA0KICAg IGFycm93U2l6ZTogICAgICAgICdsZycsICAgICAvLyBzaXplIG9mIGFycm93cyB0 byB1c2UgbGFyZ2Ugb3Igc21hbGwgKGxnIG9yIHNtKQ0KICAgIGFycm93SFBvc2l0 aW9uOiAgICdjZW50ZXInLCAvLyBob3Jpem9udGFsIHBvc2l0aW9uaW5nIG9mIHRo ZSBhcnJvdyAoY2VudGVyIG9yIG9mZnNldCkNCiAgICBkcm9wU2hhZG93OiAgICAg ICB0cnVlLCAgICAgLy8gc2V0IHRvIGZhbHNlIGlmIHlvdSBkb24ndCB3YW50IHRo ZSBkcm9wLXNoYWRvdyBlZmZlY3Qgb24gdGhlIGNsdWVUaXANCiAgICBkcm9wU2hh ZG93U3RlcHM6ICA2LCAgICAgICAgLy8gYWRqdXN0cyB0aGUgc2l6ZSBvZiB0aGUg ZHJvcCBzaGFkb3cNCiAgICBzdGlja3k6ICAgICAgICAgICBmYWxzZSwgICAgLy8g a2VlcCB2aXNpYmxlIHVudGlsIG1hbnVhbGx5IGNsb3NlZA0KICAgIG1vdXNlT3V0 Q2xvc2U6ICAgIGZhbHNlLCAgICAvLyBjbG9zZSB3aGVuIGNsdWVUaXAgaXMgbW91 c2VkIG91dA0KICAgIGFjdGl2YXRpb246ICAgICAgICdob3ZlcicsICAvLyBzZXQg dG8gJ2NsaWNrJyB0byBmb3JjZSB1c2VyIHRvIGNsaWNrIHRvIHNob3cgY2x1ZVRp cA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzZXQgdG8gJ2Zv Y3VzJyB0byBzaG93IG9uIGZvY3VzIG9mIGEgZm9ybSBlbGVtZW50IGFuZCBoaWRl IG9uIGJsdXINCiAgICBjbGlja1Rocm91Z2g6ICAgICBmYWxzZSwgICAgLy8gaWYg dHJ1ZSwgYW5kIGFjdGl2YXRpb24gaXMgbm90ICdjbGljaycsIHRoZW4gY2xpY2tp bmcgb24gbGluayB3aWxsIHRha2UgdXNlciB0byB0aGUgbGluaydzIGhyZWYsDQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGV2ZW4gaWYgaHJlZiBh bmQgdGlwQXR0cmlidXRlIGFyZSBlcXVhbA0KICAgIHRyYWNraW5nOiAgICAgICAg IGZhbHNlLCAgICAvLyBpZiB0cnVlLCBjbHVlVGlwIHdpbGwgdHJhY2sgbW91c2Ug bW92ZW1lbnQgKGV4cGVyaW1lbnRhbCkNCiAgICBkZWxheWVkQ2xvc2U6ICAgICAw LCAgICAgICAgLy8gY2xvc2UgY2x1ZVRpcCBvbiBhIHRpbWVkIGRlbGF5IChleHBl cmltZW50YWwpDQogICAgZGVsYXllZE9wZW46ICAgICAgMCwgICAgICAgIC8vIG9w ZW4gY2x1ZVRpcCBvbiBhIHRpbWVkIGRlbGF5IChleHBlcmltZW50YWwpKGN1c3Rv bSkNCiAgICBjbG9zZVBvc2l0aW9uOiAgICAndG9wJywgICAgLy8gbG9jYXRpb24g b2YgY2xvc2UgdGV4dCBmb3Igc3RpY2t5IGNsdWV0aXBzOyBjYW4gYmUgJ3RvcCcg b3IgJ2JvdHRvbScgb3IgJ3RpdGxlJw0KICAgIGNsb3NlVGV4dDogICAgICAgICdD bG9zZScsICAvLyB0ZXh0IChvciBIVE1MKSB0byB0byBiZSBjbGlja2VkIHRvIGNs b3NlIHN0aWNreSBjbHVlVGlwcw0KICAgIHRydW5jYXRlOiAgICAgICAgIDAsICAg ICAgICAvLyBudW1iZXIgb2YgY2hhcmFjdGVycyB0byB0cnVuY2F0ZSBjbHVlVGlw J3MgY29udGVudHMuIGlmIDAsIG5vIHRydW5jYXRpb24gb2NjdXJzDQoNCiAgICAv LyBlZmZlY3QgYW5kIHNwZWVkIGZvciBvcGVuaW5nIGNsdWVUaXBzDQogICAgZng6 IHsgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgb3BlbjogICAg ICAgJ3Nob3cnLCAvLyBjYW4gYmUgJ3Nob3cnIG9yICdzbGlkZURvd24nIG9yICdm YWRlSW4nDQogICAgICAgICAgICAgICAgICAgICAgb3BlblNwZWVkOiAgJycNCiAg ICB9LCAgICAgDQoNCiAgICAvLyBzZXR0aW5ncyBmb3Igd2hlbiBob3ZlckludGVu dCBwbHVnaW4gaXMgdXNlZCAgICAgICAgICAgICANCiAgICBob3ZlckludGVudDog eyAgICANCiAgICAgICAgICAgICAgICAgICAgICBzZW5zaXRpdml0eTogIDMsDQog ICAgICAgICAgICAgIAkJCSAgaW50ZXJ2YWw6ICAgICA1MCwNCiAgICAgICAgICAg ICAgCQkJICB0aW1lb3V0OiAgICAgIDANCiAgICB9LA0KDQogICAgLy8gZnVuY3Rp b24gdG8gcnVuIGp1c3QgYmVmb3JlIGNsdWVUaXAgaXMgc2hvd24uICAgICAgICAg ICANCiAgICBvbkFjdGl2YXRlOiAgICAgICBmdW5jdGlvbihlKSB7cmV0dXJuIHRy dWU7fSwNCg0KICAgIC8vIGZ1bmN0aW9uIHRvIHJ1biBqdXN0IGFmdGVyIGNsdWVU aXAgaXMgc2hvd24uDQogICAgb25TaG93OiAgICAgICAgICAgZnVuY3Rpb24oY3Qs IGMpe30sDQogICAgDQogICAgLy8gd2hldGhlciB0byBjYWNoZSByZXN1bHRzIG9m IGFqYXggcmVxdWVzdCB0byBhdm9pZCB1bm5lY2Vzc2FyeSBoaXRzIHRvIHNlcnZl ciAgICANCiAgICBhamF4Q2FjaGU6ICAgICAgICB0cnVlLCAgDQoNCiAgICAvLyBw cm9jZXNzIGRhdGEgcmV0cmlldmVkIHZpYSB4aHIgYmVmb3JlIGl0J3MgZGlzcGxh eWVkDQogICAgYWpheFByb2Nlc3M6ICAgICAgZnVuY3Rpb24oZGF0YSkgew0KICAg ICAgICAgICAgICAgICAgICAgICAgZGF0YSA9IGRhdGEucmVwbGFjZSgvPHMoY3Jp cHR8dHlsZSkoLnxccykqP1wvcyhjcmlwdHx0eWxlKT4vZywgJycpLnJlcGxhY2Uo LzwobGlua3x0aXRsZSkoLnxccykqP1wvKGxpbmt8dGl0bGUpPi9nLCcnKTsNCiAg ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBkYXRhOw0KICAgIH0sICAgICAg ICAgICAgICAgIA0KDQogICAgLy8gY2FuIHBhc3MgaW4gc3RhbmRhcmQgJC5hamF4 KCkgcGFyYW1ldGVycywgbm90IGluY2x1ZGluZyBlcnJvciwgY29tcGxldGUsIHN1 Y2Nlc3MsIGFuZCB1cmwNCiAgICBhamF4U2V0dGluZ3M6IHsgICANCiAgICAgICAg ICAgICAgICAgICAgICBkYXRhVHlwZTogJ2h0bWwnDQogICAgfQ0KICB9Ow0KDQoN Ci8qDQogKiBHbG9iYWwgZGVmYXVsdHMgZm9yIGNsdWVUaXBzLiBBcHBseSB0byBh bGwgY2FsbHMgdG8gdGhlIGNsdWVUaXAgcGx1Z2luLg0KICoNCiAqIEBleGFtcGxl ICQuY2x1ZXRpcC5zZXR1cCh7DQogKiAgIGluc2VydGlvblR5cGU6ICdwcmVwZW5k VG8nLA0KICogICBpbnNlcnRpb25FbGVtZW50OiAnI2NvbnRhaW5lcicNCiAqIH0p Ow0KICogDQogKiBAcHJvcGVydHkNCiAqIEBuYW1lICQuY2x1ZXRpcC5zZXR1cA0K ICogQHR5cGUgTWFwDQogKiBAY2F0IFBsdWdpbnMvdG9vbHRpcA0KICogQG9wdGlv biBTdHJpbmcgaW5zZXJ0aW9uVHlwZTogRGVmYXVsdCBpcyAnYXBwZW5kVG8nLiBE ZXRlcm1pbmVzIHRoZSBtZXRob2QgdG8gYmUgdXNlZCBmb3IgaW5zZXJ0aW5nIHRo ZSBjbHVlVGlwIGludG8gdGhlIERPTS4gUGVybWl0dGVkIHZhbHVlcyBhcmUgJ2Fw cGVuZFRvJywgJ3ByZXBlbmRUbycsICdpbnNlcnRCZWZvcmUnLCBhbmQgJ2luc2Vy dEFmdGVyJw0KICogQG9wdGlvbiBTdHJpbmcgaW5zZXJ0aW9uRWxlbWVudDogRGVm YXVsdCBpcyAnYm9keScuIERldGVybWluZXMgd2hpY2ggZWxlbWVudCBpbiB0aGUg RE9NIHRoZSBwbHVnaW4gd2lsbCByZWZlcmVuY2Ugd2hlbiBpbnNlcnRpbmcgdGhl IGNsdWVUaXAuDQogKg0KICovDQogICANCiAgdmFyIGluc2VydGlvblR5cGUgPSAn YXBwZW5kVG8nLCBpbnNlcnRpb25FbGVtZW50ID0gJ2JvZHknOw0KICAkLmNsdWV0 aXAgPSB7fTsNCiAgJC5jbHVldGlwLnNldHVwID0gZnVuY3Rpb24ob3B0aW9ucykg ew0KICAgIGlmIChvcHRpb25zICYmIG9wdGlvbnMuaW5zZXJ0aW9uVHlwZSAmJiAo b3B0aW9ucy5pbnNlcnRpb25UeXBlKS5tYXRjaCgvYXBwZW5kVG98cHJlcGVuZFRv fGluc2VydEJlZm9yZXxpbnNlcnRBZnRlci8pKSB7DQogICAgICBpbnNlcnRpb25U eXBlID0gb3B0aW9ucy5pbnNlcnRpb25UeXBlOw0KICAgIH0NCiAgICBpZiAob3B0 aW9ucyAmJiBvcHRpb25zLmluc2VydGlvbkVsZW1lbnQpIHsNCiAgICAgIGluc2Vy dGlvbkVsZW1lbnQgPSBvcHRpb25zLmluc2VydGlvbkVsZW1lbnQ7DQogICAgfQ0K ICB9Ow0KICANCn0pKGpRdWVyeSk7DQoNCi8qDQogKiBqUXVlcnkgY29ybmVyIHBs dWdpbg0KICoNCiAqIHZlcnNpb24gMS43ICgxLzI2LzIwMDcpDQogKg0KICogRHVh bCBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGFuZCBHUEwgbGljZW5zZXM6DQogKiAg IGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2Uu cGhwDQogKiAgIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwuaHRtbA0K ICovDQpqUXVlcnkuZm4uY29ybmVyPWZ1bmN0aW9uKG8pe2Z1bmN0aW9uIGhleDIo cyl7dmFyIHM9cGFyc2VJbnQocykudG9TdHJpbmcoMTYpO3JldHVybihzLmxlbmd0 aDwyKT8nMCcrczpzfTtmdW5jdGlvbiBncGMobm9kZSl7Zm9yKDtub2RlJiZub2Rl Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkhPSdodG1sJztub2RlPW5vZGUucGFyZW50 Tm9kZSl7dmFyIHY9alF1ZXJ5LmNzcyhub2RlLCdiYWNrZ3JvdW5kQ29sb3InKTtp Zih2LmluZGV4T2YoJ3JnYicpPj0wKXtyZ2I9di5tYXRjaCgvXGQrL2cpO3JldHVy bicjJytoZXgyKHJnYlswXSkraGV4MihyZ2JbMV0pK2hleDIocmdiWzJdKX1pZih2 JiZ2IT0ndHJhbnNwYXJlbnQnKXJldHVybiB2fXJldHVybicjZmZmZmZmJ307ZnVu Y3Rpb24gZ2V0VyhpKXtzd2l0Y2goZngpe2Nhc2Uncm91bmQnOnJldHVybiBNYXRo LnJvdW5kKHdpZHRoKigxLU1hdGguY29zKE1hdGguYXNpbihpL3dpZHRoKSkpKTtj YXNlJ2Nvb2wnOnJldHVybiBNYXRoLnJvdW5kKHdpZHRoKigxK01hdGguY29zKE1h dGguYXNpbihpL3dpZHRoKSkpKTtjYXNlJ3NoYXJwJzpyZXR1cm4gTWF0aC5yb3Vu ZCh3aWR0aCooMS1NYXRoLmNvcyhNYXRoLmFjb3MoaS93aWR0aCkpKSk7Y2FzZSdi aXRlJzpyZXR1cm4gTWF0aC5yb3VuZCh3aWR0aCooTWF0aC5jb3MoTWF0aC5hc2lu KCh3aWR0aC1pLTEpL3dpZHRoKSkpKTtjYXNlJ3NsaWRlJzpyZXR1cm4gTWF0aC5y b3VuZCh3aWR0aCooTWF0aC5hdGFuMihpLHdpZHRoL2kpKSk7Y2FzZSdqdXQnOnJl dHVybiBNYXRoLnJvdW5kKHdpZHRoKihNYXRoLmF0YW4yKHdpZHRoLCh3aWR0aC1p LTEpKSkpO2Nhc2UnY3VybCc6cmV0dXJuIE1hdGgucm91bmQod2lkdGgqKE1hdGgu YXRhbihpKSkpO2Nhc2UndGVhcic6cmV0dXJuIE1hdGgucm91bmQod2lkdGgqKE1h dGguY29zKGkpKSk7Y2FzZSd3aWNrZWQnOnJldHVybiBNYXRoLnJvdW5kKHdpZHRo KihNYXRoLnRhbihpKSkpO2Nhc2UnbG9uZyc6cmV0dXJuIE1hdGgucm91bmQod2lk dGgqKE1hdGguc3FydChpKSkpO2Nhc2Unc2N1bHB0JzpyZXR1cm4gTWF0aC5yb3Vu ZCh3aWR0aCooTWF0aC5sb2coKHdpZHRoLWktMSksd2lkdGgpKSk7Y2FzZSdkb2cn OnJldHVybihpJjEpPyhpKzEpOndpZHRoO2Nhc2UnZG9nMic6cmV0dXJuKGkmMik/ KGkrMSk6d2lkdGg7Y2FzZSdkb2czJzpyZXR1cm4oaSYzKT8oaSsxKTp3aWR0aDtj YXNlJ2ZyYXknOnJldHVybihpJTIpKndpZHRoO2Nhc2Unbm90Y2gnOnJldHVybiB3 aWR0aDtjYXNlJ2JldmVsJzpyZXR1cm4gaSsxfX07bz0ob3x8IiIpLnRvTG93ZXJD YXNlKCk7dmFyIGtlZXA9L2tlZXAvLnRlc3Qobyk7dmFyIGNjPSgoby5tYXRjaCgv Y2M6KCNbMC05YS1mXSspLyl8fFtdKVsxXSk7dmFyIHNjPSgoby5tYXRjaCgvc2M6 KCNbMC05YS1mXSspLyl8fFtdKVsxXSk7dmFyIHdpZHRoPXBhcnNlSW50KChvLm1h dGNoKC8oXGQrKXB4Lyl8fFtdKVsxXSl8fDEwO3ZhciByZT0vcm91bmR8YmV2ZWx8 bm90Y2h8Yml0ZXxjb29sfHNoYXJwfHNsaWRlfGp1dHxjdXJsfHRlYXJ8ZnJheXx3 aWNrZWR8c2N1bHB0fGxvbmd8ZG9nM3xkb2cyfGRvZy87dmFyIGZ4PSgoby5tYXRj aChyZSl8fFsncm91bmQnXSlbMF0pO3ZhciBlZGdlcz17VDowLEI6MX07dmFyIG9w dHM9e1RMOi90b3B8dGwvLnRlc3QobyksVFI6L3RvcHx0ci8udGVzdChvKSxCTDov Ym90dG9tfGJsLy50ZXN0KG8pLEJSOi9ib3R0b218YnIvLnRlc3Qobyl9O2lmKCFv cHRzLlRMJiYhb3B0cy5UUiYmIW9wdHMuQkwmJiFvcHRzLkJSKW9wdHM9e1RMOjEs VFI6MSxCTDoxLEJSOjF9O3ZhciBzdHJpcD1kb2N1bWVudC5jcmVhdGVFbGVtZW50 KCdkaXYnKTtzdHJpcC5zdHlsZS5vdmVyZmxvdz0naGlkZGVuJztzdHJpcC5zdHls ZS5oZWlnaHQ9JzFweCc7c3RyaXAuc3R5bGUuYmFja2dyb3VuZENvbG9yPXNjfHwn dHJhbnNwYXJlbnQnO3N0cmlwLnN0eWxlLmJvcmRlclN0eWxlPSdzb2xpZCc7cmV0 dXJuIHRoaXMuZWFjaChmdW5jdGlvbihpbmRleCl7dmFyIHBhZD17VDpwYXJzZUlu dChqUXVlcnkuY3NzKHRoaXMsJ3BhZGRpbmdUb3AnKSl8fDAsUjpwYXJzZUludChq UXVlcnkuY3NzKHRoaXMsJ3BhZGRpbmdSaWdodCcpKXx8MCxCOnBhcnNlSW50KGpR dWVyeS5jc3ModGhpcywncGFkZGluZ0JvdHRvbScpKXx8MCxMOnBhcnNlSW50KGpR dWVyeS5jc3ModGhpcywncGFkZGluZ0xlZnQnKSl8fDB9O2lmKGpRdWVyeS5icm93 c2VyLm1zaWUpdGhpcy5zdHlsZS56b29tPTE7aWYoIWtlZXApdGhpcy5zdHlsZS5i b3JkZXI9J25vbmUnO3N0cmlwLnN0eWxlLmJvcmRlckNvbG9yPWNjfHxncGModGhp cy5wYXJlbnROb2RlKTt2YXIgY3NzSGVpZ2h0PWpRdWVyeS5jdXJDU1ModGhpcywn aGVpZ2h0Jyk7Zm9yKHZhciBqIGluIGVkZ2VzKXt2YXIgYm90PWVkZ2VzW2pdO3N0 cmlwLnN0eWxlLmJvcmRlclN0eWxlPSdub25lICcrKG9wdHNbaisnUiddPydzb2xp ZCc6J25vbmUnKSsnIG5vbmUgJysob3B0c1tqKydMJ10/J3NvbGlkJzonbm9uZScp O3ZhciBkPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO3ZhciBkcz1kLnN0 eWxlO2JvdD90aGlzLmFwcGVuZENoaWxkKGQpOnRoaXMuaW5zZXJ0QmVmb3JlKGQs dGhpcy5maXJzdENoaWxkKTtpZihib3QmJmNzc0hlaWdodCE9J2F1dG8nKXtpZihq UXVlcnkuY3NzKHRoaXMsJ3Bvc2l0aW9uJyk9PSdzdGF0aWMnKXRoaXMuc3R5bGUu cG9zaXRpb249J3JlbGF0aXZlJztkcy5wb3NpdGlvbj0nYWJzb2x1dGUnO2RzLmJv dHRvbT1kcy5sZWZ0PWRzLnBhZGRpbmc9ZHMubWFyZ2luPScwJztpZihqUXVlcnku YnJvd3Nlci5tc2llKWRzLnNldEV4cHJlc3Npb24oJ3dpZHRoJywndGhpcy5wYXJl bnROb2RlLm9mZnNldFdpZHRoJyk7ZWxzZSBkcy53aWR0aD0nMTAwJSd9ZWxzZXtk cy5tYXJnaW49IWJvdD8nLScrcGFkLlQrJ3B4IC0nK3BhZC5SKydweCAnKyhwYWQu VC13aWR0aCkrJ3B4IC0nK3BhZC5MKydweCc6KHBhZC5CLXdpZHRoKSsncHggLScr cGFkLlIrJ3B4IC0nK3BhZC5CKydweCAtJytwYWQuTCsncHgnfWZvcih2YXIgaT0w O2k8d2lkdGg7aSsrKXt2YXIgdz1NYXRoLm1heCgwLGdldFcoaSkpO3ZhciBlPXN0 cmlwLmNsb25lTm9kZShmYWxzZSk7ZS5zdHlsZS5ib3JkZXJXaWR0aD0nMCAnKyhv cHRzW2orJ1InXT93OjApKydweCAwICcrKG9wdHNbaisnTCddP3c6MCkrJ3B4Jzti b3Q/ZC5hcHBlbmRDaGlsZChlKTpkLmluc2VydEJlZm9yZShlLGQuZmlyc3RDaGls ZCl9fX0pfTsNCg0KDQoNCg0KDQovKiBDb3B5cmlnaHQgKGMpIDIwMDcgUGF1bCBC YWthdXMgKHBhdWwuYmFrYXVzQGdvb2dsZW1haWwuY29tKSBhbmQgQnJhbmRvbiBB YXJvbiAoYnJhbmRvbi5hYXJvbkBnbWFpbC5jb20gfHwgaHR0cDovL2JyYW5kb25h YXJvbi5uZXQpDQogKiBEdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgKGh0dHA6 Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwKQ0K ICogYW5kIEdQTCAoaHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9n cGwtbGljZW5zZS5waHApIGxpY2Vuc2VzLg0KICoNCiAqICRMYXN0Q2hhbmdlZERh dGU6IDIwMDctMTItMjAgMDg6NDM6NDggLTA2MDAgKFRodSwgMjAgRGVjIDIwMDcp ICQNCiAqICRSZXY6IDQyNTcgJA0KICoNCiAqIFZlcnNpb246IDEuMg0KICoNCiAq IFJlcXVpcmVzOiBqUXVlcnkgMS4yKw0KICovDQpldmFsKGZ1bmN0aW9uKHAsYSxj LGssZSxyKXtlPWZ1bmN0aW9uKGMpe3JldHVybihjPGE/Jyc6ZShwYXJzZUludChj L2EpKSkrKChjPWMlYSk+MzU/U3RyaW5nLmZyb21DaGFyQ29kZShjKzI5KTpjLnRv U3RyaW5nKDM2KSl9O2lmKCEnJy5yZXBsYWNlKC9eLyxTdHJpbmcpKXt3aGlsZShj LS0pcltlKGMpXT1rW2NdfHxlKGMpO2s9W2Z1bmN0aW9uKGUpe3JldHVybiByW2Vd fV07ZT1mdW5jdGlvbigpe3JldHVybidcXHcrJ307Yz0xfTt3aGlsZShjLS0paWYo a1tjXSlwPXAucmVwbGFjZShuZXcgUmVnRXhwKCdcXGInK2UoYykrJ1xcYicsJ2cn KSxrW2NdKTtyZXR1cm4gcH0oJyg1KCQpeyQuMTk9e1A6XCcxLjJcJ307JC51KFtc J2pcJyxcJ3dcJ10sNShpLGQpeyQucVtcJ09cJytkXT01KCl7cCghM1swXSk2O2cg YT1kPT1cJ2pcJz9cJ3NcJzpcJ21cJyxlPWQ9PVwnalwnP1wnRFwnOlwnQ1wnOzYg My5CKFwnOnlcJyk/M1swXVtcJ0xcJytkXTo0KDMsZC54KCkpKzQoMyxcJ25cJyth KSs0KDMsXCduXCcrZSl9OyQucVtcJ0lcJytkXT01KGIpe3AoITNbMF0pNjtnIGM9 ZD09XCdqXCc/XCdzXCc6XCdtXCcsZT1kPT1cJ2pcJz9cJ0RcJzpcJ0NcJztiPSQu Rih7dDpafSxifHx7fSk7ZyBhPTMuQihcJzp5XCcpPzNbMF1bXCc4XCcrZF06NCgz LGQueCgpKSs0KDMsXCdFXCcrYytcJ3dcJykrNCgzLFwnRVwnK2UrXCd3XCcpKzQo MyxcJ25cJytjKSs0KDMsXCduXCcrZSk7NiBhKyhiLnQ/KDQoMyxcJ3RcJytjKSs0 KDMsXCd0XCcrZSkpOjApfX0pOyQudShbXCdtXCcsXCdzXCddLDUoaSxiKXskLnFb XCdsXCcrYl09NShhKXtwKCEzWzBdKTY7NiBhIT1XPzMudSg1KCl7Mz09aHx8Mz09 cj9oLlYoYj09XCdtXCc/YTokKGgpW1wnVVwnXSgpLGI9PVwnc1wnP2E6JChoKVtc J1RcJ10oKSk6M1tcJ2xcJytiXT1hfSk6M1swXT09aHx8M1swXT09cj9TWyhiPT1c J21cJz9cJ1JcJzpcJ1FcJyldfHwkLk4mJnIuTVtcJ2xcJytiXXx8ci5BW1wnbFwn K2JdOjNbMF1bXCdsXCcrYl19fSk7JC5xLkYoe3o6NSgpe2cgYT0wLGY9MCxvPTNb MF0sOCw5LDcsdjtwKG8pezc9My43KCk7OD0zLjgoKTs5PTcuOCgpOzguZi09NChv LFwnS1wnKTs4LmstPTQobyxcJ0pcJyk7OS5mKz00KDcsXCdIXCcpOzkuays9NCg3 LFwnWVwnKTt2PXtmOjguZi05LmYsazo4LmstOS5rfX02IHZ9LDc6NSgpe2cgYT0z WzBdLjc7RyhhJiYoIS9eQXwxMCQvaS4xNihhLjE1KSYmJC4xNChhLFwnelwnKT09 XCcxM1wnKSlhPWEuNzs2ICQoYSl9fSk7NSA0KGEsYil7NiAxMigkLjExKGEuMTc/ YVswXTphLGIsMTgpKXx8MH19KShYKTsnLDYyLDcyLCd8fHx0aGlzfG51bXxmdW5j dGlvbnxyZXR1cm58b2Zmc2V0UGFyZW50fG9mZnNldHxwYXJlbnRPZmZzZXR8fHx8 fGJvcnJ8dG9wfHZhcnx3aW5kb3d8fEhlaWdodHxsZWZ0fHNjcm9sbHxMZWZ0fHBh ZGRpbmd8ZWxlbXxpZnxmbnxkb2N1bWVudHxUb3B8bWFyZ2lufGVhY2h8cmVzdWx0 c3xXaWR0aHx0b0xvd2VyQ2FzZXx2aXNpYmxlfHBvc2l0aW9ufGJvZHl8aXN8Umln aHR8Qm90dG9tfGJvcmRlcnxleHRlbmR8d2hpbGV8Ym9yZGVyVG9wV2lkdGh8b3V0 ZXJ8bWFyZ2luTGVmdHxtYXJnaW5Ub3B8Y2xpZW50fGRvY3VtZW50RWxlbWVudHxi b3hNb2RlbHxpbm5lcnx2ZXJzaW9ufHBhZ2VZT2Zmc2V0fHBhZ2VYT2Zmc2V0fHNl bGZ8c2Nyb2xsVG9wfHNjcm9sbExlZnR8c2Nyb2xsVG98dW5kZWZpbmVkfGpRdWVy eXxib3JkZXJMZWZ0V2lkdGh8ZmFsc2V8aHRtbHxjdXJDU1N8cGFyc2VJbnR8c3Rh dGljfGNzc3x0YWdOYW1lfHRlc3R8anF1ZXJ5fHRydWV8ZGltZW5zaW9ucycuc3Bs aXQoJ3wnKSwwLHt9KSkNCg0KDQoNCi8qDQpqcVVSTA0KYnkgSm9zaCBOYXRoYW5z b24NCiovDQpqUXVlcnkuanFVUkwgPSB7IHVybDogZnVuY3Rpb24oYXJncykgeyBh cmdzID0galF1ZXJ5LmV4dGVuZCh7IHdpbjogd2luZG93IH0sIGFyZ3MpOyByZXR1 cm4gYXJncy53aW4ubV9hY3R1YWxfdXJsID8gYXJncy53aW4ubV9hY3R1YWxfdXJs IDogYXJncy53aW4ubG9jYXRpb24uaHJlZiB9LCBsb2M6IGZ1bmN0aW9uKHVybHN0 ciwgYXJncykgeyBhcmdzID0galF1ZXJ5LmV4dGVuZCh7IHdpbjogd2luZG93LCB3 OiA1MDAsIGg6IDUwMCwgd2ludHlwZTogJ190b3AnIH0sIGFyZ3MpOyBpZiAoIWFy Z3MudCkgeyBhcmdzLnQgPSBzY3JlZW4uaGVpZ2h0IC8gMiAtIGFyZ3MuaCAvIDIg fSBpZiAoIWFyZ3MubCkgeyBhcmdzLmwgPSBzY3JlZW4ud2lkdGggLyAyIC0gYXJn cy53IC8gMiB9IGlmIChhcmdzWyd3aW50eXBlJ10gPT0gJ190b3AnKSB7IGFyZ3Mu d2luLmxvY2F0aW9uLmhyZWYgPSB1cmxzdHIgfSBlbHNlIHsgb3Blbih1cmxzdHIs IGFyZ3NbJ3dpbnR5cGUnXSwgJ3dpZHRoPScgKyBhcmdzLncgKyAnLGhlaWdodD0n ICsgYXJncy5oICsgJyx0b3A9JyArIGFyZ3MudCArICcsbGVmdD0nICsgYXJncy5s ICsgJyxzY3JvbGxiYXJzLHJlc2l6YWJsZScpIH0gcmV0dXJuIH0sIHFzOiBmdW5j dGlvbihhcmdzKSB7IGFyZ3MgPSBqUXVlcnkuZXh0ZW5kKHsgcmV0OiAnc3RyaW5n Jywgd2luOiB3aW5kb3cgfSwgYXJncyk7IGlmIChhcmdzWydyZXQnXSA9PSAnc3Ry aW5nJykgeyByZXR1cm4galF1ZXJ5LmpxVVJMLnVybCh7IHdpbjogYXJncy53aW4g fSkuc3BsaXQoJz8nKVsxXSB9IGVsc2UgaWYgKGFyZ3NbJ3JldCddID09ICdvYmpl Y3QnKSB7IHZhciBxc29iaiA9IHt9OyB2YXIgdGhpc3FzID0galF1ZXJ5LmpxVVJM LnVybCh7IHdpbjogYXJncy53aW4gfSkuc3BsaXQoJz8nKVsxXTsgaWYgKHRoaXNx cykgeyB2YXIgcGFpcnMgPSB0aGlzcXMuc3BsaXQoJyYnKTsgZm9yIChpID0gMDsg aSA8IHBhaXJzLmxlbmd0aDsgaSsrKSB7IHZhciBwYWlyID0gcGFpcnNbaV0uc3Bs aXQoJz0nKTsgcXNvYmpbcGFpclswXV0gPSBwYWlyWzFdIH0gfSByZXR1cm4gcXNv YmogfSB9LCBzdHJpcDogZnVuY3Rpb24oYXJncykgeyBhcmdzID0galF1ZXJ5LmV4 dGVuZCh7IGtleXM6ICcnLCB3aW46IHdpbmRvdyB9LCBhcmdzKTsgaWYgKGpRdWVy eS5qcVVSTC51cmwoKS5pbmRleE9mKCc/JykgPT0gLTEpIHsgcmV0dXJuIGpRdWVy eS5qcVVSTC51cmwoeyB3aW46IGFyZ3Mud2luIH0pIH0gZWxzZSBpZiAoIWFyZ3Mu a2V5cykgeyByZXR1cm4galF1ZXJ5LmpxVVJMLnVybCh7IHdpbjogYXJncy53aW4g fSkuc3BsaXQoJz8nKVswXSB9IGVsc2UgeyB2YXIgcXNvYmogPSBqUXVlcnkuanFV UkwucXMoeyByZXQ6ICdvYmplY3QnLCB3aW46IGFyZ3Mud2luIH0pOyB2YXIgY291 bnRlciA9IDA7IHZhciB1cmwgPSBqUXVlcnkuanFVUkwudXJsKHsgd2luOiBhcmdz LndpbiB9KS5zcGxpdCgnPycpWzBdICsgJz8nOyB2YXIgYW1wID0gJyc7IGZvciAo dmFyIGtleSBpbiBxc29iaikgeyBpZiAoYXJncy5rZXlzLmluZGV4T2Yoa2V5KSA9 PSAtMSkgeyBhbXAgPSAoY291bnRlcikgPyAnJicgOiAnJzsgdXJsID0gdXJsICsg YW1wICsga2V5ICsgJz0nICsgcXNvYmpba2V5XTsgY291bnRlcisrIH0gfSByZXR1 cm4gdXJsIH0gfSwgZ2V0OiBmdW5jdGlvbihrZXksIGFyZ3MpIHsgYXJncyA9IGpR dWVyeS5leHRlbmQoeyB3aW46IHdpbmRvdyB9LCBhcmdzKTsgcXNvYmogPSBqUXVl cnkuanFVUkwucXMoeyByZXQ6ICdvYmplY3QnLCB3aW46IGFyZ3Mud2luIH0pOyBy ZXR1cm4gcXNvYmpba2V5XSB9LCBzZXQ6IGZ1bmN0aW9uKGhhc2gsIGFyZ3MpIHsg YXJncyA9IGpRdWVyeS5leHRlbmQoeyB3aW46IHdpbmRvdyB9LCBhcmdzKTsgdmFy IHFzb2JqID0galF1ZXJ5LmpxVVJMLnFzKHsgcmV0OiAnb2JqZWN0Jywgd2luOiBh cmdzLndpbiB9KTsgZm9yICh2YXIgaSBpbiBoYXNoKSB7IHFzb2JqW2ldID0gaGFz aFtpXSB9IHZhciBxc3RyaW5nID0gJyc7IHZhciBjb3VudGVyID0gMDsgdmFyIGFt cCA9ICcnOyBmb3IgKHZhciBrIGluIHFzb2JqKSB7IGFtcCA9IChjb3VudGVyKSA/ ICcmJyA6ICcnOyBxc3RyaW5nID0gcXN0cmluZyArIGFtcCArIGsgKyAnPScgKyBx c29ialtrXTsgY291bnRlcisrIH0gcmV0dXJuIGpRdWVyeS5qcVVSTC5zdHJpcCh7 IHdpbjogYXJncy53aW4gfSkgKyAnPycgKyBxc3RyaW5nIH0gfTsNCg0KDQovKiBD b3B5cmlnaHQgKGMpIDIwMDYgQnJhbmRvbiBBYXJvbiAoaHR0cDovL2JyYW5kb25h YXJvbi5uZXQpDQogKiBEdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgKGh0dHA6 Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwKSAN CiAqIGFuZCBHUEwgKGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMv Z3BsLWxpY2Vuc2UucGhwKSBsaWNlbnNlcy4NCiAqDQogKiAkTGFzdENoYW5nZWRE YXRlOiAyMDA3LTA3LTIxIDE4OjQ0OjU5IC0wNTAwIChTYXQsIDIxIEp1bCAyMDA3 KSAkDQogKiAkUmV2OiAyNDQ2ICQNCiAqDQogKiBWZXJzaW9uIDIuMS4xDQogKi8N Cg0KKGZ1bmN0aW9uKCQpeyQuZm4uYmdJZnJhbWU9JC5mbi5iZ2lmcmFtZT1mdW5j dGlvbihzKXtpZigkLmJyb3dzZXIubXNpZSYmLzYuMC8udGVzdChuYXZpZ2F0b3Iu dXNlckFnZW50KSl7cz0kLmV4dGVuZCh7dG9wOidhdXRvJyxsZWZ0OidhdXRvJyx3 aWR0aDonYXV0bycsaGVpZ2h0OidhdXRvJyxvcGFjaXR5OnRydWUsc3JjOidqYXZh c2NyaXB0OmZhbHNlOyd9LHN8fHt9KTt2YXIgcHJvcD1mdW5jdGlvbihuKXtyZXR1 cm4gbiYmbi5jb25zdHJ1Y3Rvcj09TnVtYmVyP24rJ3B4JzpufSxodG1sPSc8aWZy YW1lIGNsYXNzPSJiZ2lmcmFtZSJmcmFtZWJvcmRlcj0iMCJ0YWJpbmRleD0iLTEi c3JjPSInK3Muc3JjKyciJysnc3R5bGU9ImRpc3BsYXk6YmxvY2s7cG9zaXRpb246 YWJzb2x1dGU7ei1pbmRleDotMTsnKyhzLm9wYWNpdHkhPT1mYWxzZT8nZmlsdGVy OkFscGhhKE9wYWNpdHk9XCcwXCcpOyc6JycpKyd0b3A6Jysocy50b3A9PSdhdXRv Jz8nZXhwcmVzc2lvbigoKHBhcnNlSW50KHRoaXMucGFyZW50Tm9kZS5jdXJyZW50 U3R5bGUuYm9yZGVyVG9wV2lkdGgpfHwwKSotMSkrXCdweFwnKSc6cHJvcChzLnRv cCkpKyc7JysnbGVmdDonKyhzLmxlZnQ9PSdhdXRvJz8nZXhwcmVzc2lvbigoKHBh cnNlSW50KHRoaXMucGFyZW50Tm9kZS5jdXJyZW50U3R5bGUuYm9yZGVyTGVmdFdp ZHRoKXx8MCkqLTEpK1wncHhcJyknOnByb3Aocy5sZWZ0KSkrJzsnKyd3aWR0aDon KyhzLndpZHRoPT0nYXV0byc/J2V4cHJlc3Npb24odGhpcy5wYXJlbnROb2RlLm9m ZnNldFdpZHRoK1wncHhcJyknOnByb3Aocy53aWR0aCkpKyc7JysnaGVpZ2h0Oicr KHMuaGVpZ2h0PT0nYXV0byc/J2V4cHJlc3Npb24odGhpcy5wYXJlbnROb2RlLm9m ZnNldEhlaWdodCtcJ3B4XCcpJzpwcm9wKHMuaGVpZ2h0KSkrJzsnKyciLz4nO3Jl dHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtpZigkKCc+IGlmcmFtZS5iZ2lmcmFt ZScsdGhpcykubGVuZ3RoPT0wKXRoaXMuaW5zZXJ0QmVmb3JlKGRvY3VtZW50LmNy ZWF0ZUVsZW1lbnQoaHRtbCksdGhpcy5maXJzdENoaWxkKX0pfXJldHVybiB0aGlz fX0pKGpRdWVyeSk7DQoNCi8qDQogKiBBdXRvY29tcGxldGUgLSBqUXVlcnkgcGx1 Z2luIDEuMC4xcHJlDQogKg0KICogQ29weXJpZ2h0IChjKSAyMDA3IER5bGFuIFZl cmhldWwsIERhbiBHLiBTd2l0emVyLCBBbmplc2ggVHVsYWRoYXIsIEr2cm4gWmFl ZmZlcmVyDQogKg0KICogRHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGFuZCBH UEwgbGljZW5zZXM6DQogKiAgIGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGlj ZW5zZXMvbWl0LWxpY2Vuc2UucGhwDQogKiAgIGh0dHA6Ly93d3cuZ251Lm9yZy9s aWNlbnNlcy9ncGwuaHRtbA0KICoNCiAqIFJldmlzaW9uOiAkSWQ6IGpxdWVyeS5h dXRvY29tcGxldGUuanMgNTMzNCAyMDA4LTA0LTI3IDE1OjMyOjQ0WiBqb2Vybi56 YWVmZmVyZXIgJA0KICoNCiAqLw0KIDsoZnVuY3Rpb24oJCl7JC5mbi5leHRlbmQo e2F1dG9jb21wbGV0ZTpmdW5jdGlvbih1cmxPckRhdGEsb3B0aW9ucyl7dmFyIGlz VXJsPXR5cGVvZiB1cmxPckRhdGE9PSJzdHJpbmciO29wdGlvbnM9JC5leHRlbmQo e30sJC5BdXRvY29tcGxldGVyLmRlZmF1bHRzLHt1cmw6aXNVcmw/dXJsT3JEYXRh Om51bGwsZGF0YTppc1VybD9udWxsOnVybE9yRGF0YSxkZWxheTppc1VybD8kLkF1 dG9jb21wbGV0ZXIuZGVmYXVsdHMuZGVsYXk6MTAsbWF4Om9wdGlvbnMmJiFvcHRp b25zLnNjcm9sbD8xMDoxNTB9LG9wdGlvbnMpO29wdGlvbnMuaGlnaGxpZ2h0PW9w dGlvbnMuaGlnaGxpZ2h0fHxmdW5jdGlvbih2YWx1ZSl7cmV0dXJuIHZhbHVlfTtv cHRpb25zLmZvcm1hdE1hdGNoPW9wdGlvbnMuZm9ybWF0TWF0Y2h8fG9wdGlvbnMu Zm9ybWF0SXRlbTtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7bmV3ICQuQXV0 b2NvbXBsZXRlcih0aGlzLG9wdGlvbnMpfSl9LHJlc3VsdDpmdW5jdGlvbihoYW5k bGVyKXtyZXR1cm4gdGhpcy5iaW5kKCJyZXN1bHQiLGhhbmRsZXIpfSxzZWFyY2g6 ZnVuY3Rpb24oaGFuZGxlcil7cmV0dXJuIHRoaXMudHJpZ2dlcigic2VhcmNoIixb aGFuZGxlcl0pfSxmbHVzaENhY2hlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJp Z2dlcigiZmx1c2hDYWNoZSIpfSxzZXRPcHRpb25zOmZ1bmN0aW9uKG9wdGlvbnMp e3JldHVybiB0aGlzLnRyaWdnZXIoInNldE9wdGlvbnMiLFtvcHRpb25zXSl9LHVu YXV0b2NvbXBsZXRlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJpZ2dlcigidW5h dXRvY29tcGxldGUiKX19KTskLkF1dG9jb21wbGV0ZXI9ZnVuY3Rpb24oaW5wdXQs b3B0aW9ucyl7dmFyIEtFWT17VVA6MzgsRE9XTjo0MCxERUw6NDYsVEFCOjksUkVU VVJOOjEzLEVTQzoyNyxDT01NQToxODgsUEFHRVVQOjMzLFBBR0VET1dOOjM0LEJB Q0tTUEFDRTo4fTt2YXIgJGlucHV0PSQoaW5wdXQpLmF0dHIoImF1dG9jb21wbGV0 ZSIsIm9mZiIpLmFkZENsYXNzKG9wdGlvbnMuaW5wdXRDbGFzcyk7dmFyIHRpbWVv dXQ7dmFyIHByZXZpb3VzVmFsdWU9IiI7dmFyIGNhY2hlPSQuQXV0b2NvbXBsZXRl ci5DYWNoZShvcHRpb25zKTt2YXIgaGFzRm9jdXM9MDt2YXIgbGFzdEtleVByZXNz Q29kZTt2YXIgY29uZmlnPXttb3VzZURvd25PblNlbGVjdDpmYWxzZX07dmFyIHNl bGVjdD0kLkF1dG9jb21wbGV0ZXIuU2VsZWN0KG9wdGlvbnMsaW5wdXQsc2VsZWN0 Q3VycmVudCxjb25maWcpOyRpbnB1dC5rZXlkb3duKGZ1bmN0aW9uKGV2ZW50KXts YXN0S2V5UHJlc3NDb2RlPWV2ZW50LmtleUNvZGU7c3dpdGNoKGV2ZW50LmtleUNv ZGUpe2Nhc2UgS0VZLlVQOmV2ZW50LnByZXZlbnREZWZhdWx0KCk7aWYoc2VsZWN0 LnZpc2libGUoKSl7c2VsZWN0LnByZXYoKX1lbHNle29uQ2hhbmdlKDAsdHJ1ZSl9 YnJlYWs7Y2FzZSBLRVkuRE9XTjpldmVudC5wcmV2ZW50RGVmYXVsdCgpO2lmKHNl bGVjdC52aXNpYmxlKCkpe3NlbGVjdC5uZXh0KCl9ZWxzZXtvbkNoYW5nZSgwLHRy dWUpfWJyZWFrO2Nhc2UgS0VZLlBBR0VVUDpldmVudC5wcmV2ZW50RGVmYXVsdCgp O2lmKHNlbGVjdC52aXNpYmxlKCkpe3NlbGVjdC5wYWdlVXAoKX1lbHNle29uQ2hh bmdlKDAsdHJ1ZSl9YnJlYWs7Y2FzZSBLRVkuUEFHRURPV046ZXZlbnQucHJldmVu dERlZmF1bHQoKTtpZihzZWxlY3QudmlzaWJsZSgpKXtzZWxlY3QucGFnZURvd24o KX1lbHNle29uQ2hhbmdlKDAsdHJ1ZSl9YnJlYWs7Y2FzZSBvcHRpb25zLm11bHRp cGxlJiYkLnRyaW0ob3B0aW9ucy5tdWx0aXBsZVNlcGFyYXRvcik9PSIsIiYmS0VZ LkNPTU1BOmNhc2UgS0VZLlRBQjpjYXNlIEtFWS5SRVRVUk46aWYoc2VsZWN0Q3Vy cmVudCgpKXtpZighb3B0aW9ucy5tdWx0aXBsZSkkaW5wdXQuYmx1cigpO2V2ZW50 LnByZXZlbnREZWZhdWx0KCl9YnJlYWs7Y2FzZSBLRVkuRVNDOnNlbGVjdC5oaWRl KCk7YnJlYWs7ZGVmYXVsdDpjbGVhclRpbWVvdXQodGltZW91dCk7dGltZW91dD1z ZXRUaW1lb3V0KG9uQ2hhbmdlLG9wdGlvbnMuZGVsYXkpO2JyZWFrfX0pLmtleXBy ZXNzKGZ1bmN0aW9uKCl7fSkuZm9jdXMoZnVuY3Rpb24oKXtoYXNGb2N1cysrfSku Ymx1cihmdW5jdGlvbigpe2hhc0ZvY3VzPTA7aWYoIWNvbmZpZy5tb3VzZURvd25P blNlbGVjdCl7aGlkZVJlc3VsdHMoKX19KS5jbGljayhmdW5jdGlvbigpe2lmKGhh c0ZvY3VzKys+MSYmIXNlbGVjdC52aXNpYmxlKCkpe29uQ2hhbmdlKDAsdHJ1ZSl9 fSkuYmluZCgic2VhcmNoIixmdW5jdGlvbigpe3ZhciBmbj0oYXJndW1lbnRzLmxl bmd0aD4xKT9hcmd1bWVudHNbMV06bnVsbDtmdW5jdGlvbiBmaW5kVmFsdWVDYWxs YmFjayhxLGRhdGEpe3ZhciByZXN1bHQ7aWYoZGF0YSYmZGF0YS5sZW5ndGgpe2Zv cih2YXIgaT0wO2k8ZGF0YS5sZW5ndGg7aSsrKXtpZihkYXRhW2ldLnJlc3VsdC50 b0xvd2VyQ2FzZSgpPT1xLnRvTG93ZXJDYXNlKCkpe3Jlc3VsdD1kYXRhW2ldO2Jy ZWFrfX19aWYodHlwZW9mIGZuPT0iZnVuY3Rpb24iKWZuKHJlc3VsdCk7ZWxzZSAk aW5wdXQudHJpZ2dlcigicmVzdWx0IixyZXN1bHQmJltyZXN1bHQuZGF0YSxyZXN1 bHQudmFsdWVdKX0kLmVhY2godHJpbVdvcmRzKCRpbnB1dC52YWwoKSksZnVuY3Rp b24oaSx2YWx1ZSl7cmVxdWVzdCh2YWx1ZSxmaW5kVmFsdWVDYWxsYmFjayxmaW5k VmFsdWVDYWxsYmFjayl9KX0pLmJpbmQoImZsdXNoQ2FjaGUiLGZ1bmN0aW9uKCl7 Y2FjaGUuZmx1c2goKX0pLmJpbmQoInNldE9wdGlvbnMiLGZ1bmN0aW9uKCl7JC5l eHRlbmQob3B0aW9ucyxhcmd1bWVudHNbMV0pO2lmKCJkYXRhImluIGFyZ3VtZW50 c1sxXSljYWNoZS5wb3B1bGF0ZSgpfSkuYmluZCgidW5hdXRvY29tcGxldGUiLGZ1 bmN0aW9uKCl7c2VsZWN0LnVuYmluZCgpOyRpbnB1dC51bmJpbmQoKX0pO2Z1bmN0 aW9uIHNlbGVjdEN1cnJlbnQoKXt2YXIgc2VsZWN0ZWQ9c2VsZWN0LnNlbGVjdGVk KCk7aWYoIXNlbGVjdGVkKXJldHVybiBmYWxzZTt2YXIgdj1zZWxlY3RlZC5yZXN1 bHQ7cHJldmlvdXNWYWx1ZT12O2lmKG9wdGlvbnMubXVsdGlwbGUpe3ZhciB3b3Jk cz10cmltV29yZHMoJGlucHV0LnZhbCgpKTtpZih3b3Jkcy5sZW5ndGg+MSl7dj13 b3Jkcy5zbGljZSgwLHdvcmRzLmxlbmd0aC0xKS5qb2luKG9wdGlvbnMubXVsdGlw bGVTZXBhcmF0b3IpK29wdGlvbnMubXVsdGlwbGVTZXBhcmF0b3Irdn12Kz1vcHRp b25zLm11bHRpcGxlU2VwYXJhdG9yfSRpbnB1dC52YWwodik7aGlkZVJlc3VsdHNO b3coKTskaW5wdXQudHJpZ2dlcigicmVzdWx0Iixbc2VsZWN0ZWQuZGF0YSxzZWxl Y3RlZC52YWx1ZV0pO3JldHVybiB0cnVlfWZ1bmN0aW9uIG9uQ2hhbmdlKGNyYXAs c2tpcFByZXZDaGVjayl7aWYobGFzdEtleVByZXNzQ29kZT09S0VZLkRFTCl7c2Vs ZWN0LmhpZGUoKTtyZXR1cm59dmFyIGN1cnJlbnRWYWx1ZT0kaW5wdXQudmFsKCk7 aWYoIXNraXBQcmV2Q2hlY2smJmN1cnJlbnRWYWx1ZT09cHJldmlvdXNWYWx1ZSly ZXR1cm47cHJldmlvdXNWYWx1ZT1jdXJyZW50VmFsdWU7Y3VycmVudFZhbHVlPWxh c3RXb3JkKGN1cnJlbnRWYWx1ZSk7aWYoY3VycmVudFZhbHVlLmxlbmd0aD49b3B0 aW9ucy5taW5DaGFycyl7JGlucHV0LmFkZENsYXNzKG9wdGlvbnMubG9hZGluZ0Ns YXNzKTtpZighb3B0aW9ucy5tYXRjaENhc2UpY3VycmVudFZhbHVlPWN1cnJlbnRW YWx1ZS50b0xvd2VyQ2FzZSgpO3JlcXVlc3QoY3VycmVudFZhbHVlLHJlY2VpdmVE YXRhLGhpZGVSZXN1bHRzTm93KX1lbHNle3N0b3BMb2FkaW5nKCk7c2VsZWN0Lmhp ZGUoKX19O2Z1bmN0aW9uIHRyaW1Xb3Jkcyh2YWx1ZSl7aWYoIXZhbHVlKXtyZXR1 cm5bIiJdfXZhciB3b3Jkcz12YWx1ZS5zcGxpdChvcHRpb25zLm11bHRpcGxlU2Vw YXJhdG9yKTt2YXIgcmVzdWx0PVtdOyQuZWFjaCh3b3JkcyxmdW5jdGlvbihpLHZh bHVlKXtpZigkLnRyaW0odmFsdWUpKXJlc3VsdFtpXT0kLnRyaW0odmFsdWUpfSk7 cmV0dXJuIHJlc3VsdH1mdW5jdGlvbiBsYXN0V29yZCh2YWx1ZSl7aWYoIW9wdGlv bnMubXVsdGlwbGUpcmV0dXJuIHZhbHVlO3ZhciB3b3Jkcz10cmltV29yZHModmFs dWUpO3JldHVybiB3b3Jkc1t3b3Jkcy5sZW5ndGgtMV19ZnVuY3Rpb24gYXV0b0Zp bGwocSxzVmFsdWUpe2lmKG9wdGlvbnMuYXV0b0ZpbGwmJihsYXN0V29yZCgkaW5w dXQudmFsKCkpLnRvTG93ZXJDYXNlKCk9PXEudG9Mb3dlckNhc2UoKSkmJmxhc3RL ZXlQcmVzc0NvZGUhPUtFWS5CQUNLU1BBQ0UpeyRpbnB1dC52YWwoJGlucHV0LnZh bCgpK3NWYWx1ZS5zdWJzdHJpbmcobGFzdFdvcmQocHJldmlvdXNWYWx1ZSkubGVu Z3RoKSk7JC5BdXRvY29tcGxldGVyLlNlbGVjdGlvbihpbnB1dCxwcmV2aW91c1Zh bHVlLmxlbmd0aCxwcmV2aW91c1ZhbHVlLmxlbmd0aCtzVmFsdWUubGVuZ3RoKX19 O2Z1bmN0aW9uIGhpZGVSZXN1bHRzKCl7Y2xlYXJUaW1lb3V0KHRpbWVvdXQpO3Rp bWVvdXQ9c2V0VGltZW91dChoaWRlUmVzdWx0c05vdywyMDApfTtmdW5jdGlvbiBo aWRlUmVzdWx0c05vdygpe3NlbGVjdC5oaWRlKCk7Y2xlYXJUaW1lb3V0KHRpbWVv dXQpO3N0b3BMb2FkaW5nKCk7aWYob3B0aW9ucy5tdXN0TWF0Y2gpeyRpbnB1dC5z ZWFyY2goZnVuY3Rpb24ocmVzdWx0KXtpZighcmVzdWx0KSRpbnB1dC52YWwoIiIp fSl9fTtmdW5jdGlvbiByZWNlaXZlRGF0YShxLGRhdGEpe2lmKGRhdGEmJmRhdGEu bGVuZ3RoJiZoYXNGb2N1cyl7c3RvcExvYWRpbmcoKTtzZWxlY3QuZGlzcGxheShk YXRhLHEpO2F1dG9GaWxsKHEsZGF0YVswXS52YWx1ZSk7c2VsZWN0LnNob3coKX1l bHNle2hpZGVSZXN1bHRzTm93KCl9fTtmdW5jdGlvbiByZXF1ZXN0KHRlcm0sc3Vj Y2VzcyxmYWlsdXJlKXtpZighb3B0aW9ucy5tYXRjaENhc2UpdGVybT10ZXJtLnRv TG93ZXJDYXNlKCk7dmFyIGRhdGE9Y2FjaGUubG9hZCh0ZXJtKTtpZihkYXRhJiZk YXRhLmxlbmd0aCl7c3VjY2Vzcyh0ZXJtLGRhdGEpfWVsc2UgaWYoKHR5cGVvZiBv cHRpb25zLnVybD09InN0cmluZyIpJiYob3B0aW9ucy51cmwubGVuZ3RoPjApKXt2 YXIgZXh0cmFQYXJhbXM9e3RpbWVzdGFtcDorbmV3IERhdGUoKX07JC5lYWNoKG9w dGlvbnMuZXh0cmFQYXJhbXMsZnVuY3Rpb24oa2V5LHBhcmFtKXtleHRyYVBhcmFt c1trZXldPXR5cGVvZiBwYXJhbT09ImZ1bmN0aW9uIj9wYXJhbSgpOnBhcmFtfSk7 JC5hamF4KHttb2RlOiJhYm9ydCIscG9ydDoiYXV0b2NvbXBsZXRlIitpbnB1dC5u YW1lLGRhdGFUeXBlOm9wdGlvbnMuZGF0YVR5cGUsdXJsOm9wdGlvbnMudXJsLGRh dGE6JC5leHRlbmQoe3E6bGFzdFdvcmQodGVybSksbGltaXQ6b3B0aW9ucy5tYXh9 LGV4dHJhUGFyYW1zKSxzdWNjZXNzOmZ1bmN0aW9uKGRhdGEpe3ZhciBwYXJzZWQ9 b3B0aW9ucy5wYXJzZSYmb3B0aW9ucy5wYXJzZShkYXRhKXx8cGFyc2UoZGF0YSk7 Y2FjaGUuYWRkKHRlcm0scGFyc2VkKTtzdWNjZXNzKHRlcm0scGFyc2VkKX19KX1l bHNle3NlbGVjdC5lbXB0eUxpc3QoKTtmYWlsdXJlKHRlcm0pfX07ZnVuY3Rpb24g cGFyc2UoZGF0YSl7dmFyIHBhcnNlZD1bXTt2YXIgcm93cz1kYXRhLnNwbGl0KCJc biIpO2Zvcih2YXIgaT0wO2k8cm93cy5sZW5ndGg7aSsrKXt2YXIgcm93PSQudHJp bShyb3dzW2ldKTtpZihyb3cpe3Jvdz1yb3cuc3BsaXQoInwiKTtwYXJzZWRbcGFy c2VkLmxlbmd0aF09e2RhdGE6cm93LHZhbHVlOnJvd1swXSxyZXN1bHQ6b3B0aW9u cy5mb3JtYXRSZXN1bHQmJm9wdGlvbnMuZm9ybWF0UmVzdWx0KHJvdyxyb3dbMF0p fHxyb3dbMF19fX1yZXR1cm4gcGFyc2VkfTtmdW5jdGlvbiBzdG9wTG9hZGluZygp eyRpbnB1dC5yZW1vdmVDbGFzcyhvcHRpb25zLmxvYWRpbmdDbGFzcyl9fTskLkF1 dG9jb21wbGV0ZXIuZGVmYXVsdHM9e2lucHV0Q2xhc3M6ImFjX2lucHV0IixyZXN1 bHRzQ2xhc3M6ImFjX3Jlc3VsdHMiLGxvYWRpbmdDbGFzczoiYWNfbG9hZGluZyIs bWluQ2hhcnM6MSxkZWxheTo0MDAsbWF0Y2hDYXNlOmZhbHNlLG1hdGNoU3Vic2V0 OnRydWUsbWF0Y2hDb250YWluczpmYWxzZSxjYWNoZUxlbmd0aDoxMCxtYXg6MTAw LG11c3RNYXRjaDpmYWxzZSxleHRyYVBhcmFtczp7fSxzZWxlY3RGaXJzdDp0cnVl LGZvcm1hdEl0ZW06ZnVuY3Rpb24ocm93KXtyZXR1cm4gcm93WzBdfSxmb3JtYXRN YXRjaDpudWxsLGF1dG9GaWxsOmZhbHNlLHdpZHRoOjAsbXVsdGlwbGU6ZmFsc2Us bXVsdGlwbGVTZXBhcmF0b3I6IiwgIixoaWdobGlnaHQ6ZnVuY3Rpb24odmFsdWUs dGVybSl7cmV0dXJuIHZhbHVlLnJlcGxhY2UobmV3IFJlZ0V4cCgiKD8hW14mO10r OykoPyE8W148Pl0qKSgiK3Rlcm0ucmVwbGFjZSgvKFtcXlwkXChcKVxbXF1ce1x9 XCpcLlwrXD9cfFxcXSkvZ2ksIlxcJDEiKSsiKSg/IVtePD5dKj4pKD8hW14mO10r OykiLCJnaSIpLCI8c3Ryb25nPiQxPC9zdHJvbmc+Iil9LHNjcm9sbDp0cnVlLHNj cm9sbEhlaWdodDoxODB9OyQuQXV0b2NvbXBsZXRlci5DYWNoZT1mdW5jdGlvbihv cHRpb25zKXt2YXIgZGF0YT17fTt2YXIgbGVuZ3RoPTA7ZnVuY3Rpb24gbWF0Y2hT dWJzZXQocyxzdWIpe2lmKCFvcHRpb25zLm1hdGNoQ2FzZSlzPXMudG9Mb3dlckNh c2UoKTt2YXIgaT1zLmluZGV4T2Yoc3ViKTtpZihpPT0tMSlyZXR1cm4gZmFsc2U7 cmV0dXJuIGk9PTB8fG9wdGlvbnMubWF0Y2hDb250YWluc307ZnVuY3Rpb24gYWRk KHEsdmFsdWUpe2lmKGxlbmd0aD5vcHRpb25zLmNhY2hlTGVuZ3RoKXtmbHVzaCgp fWlmKCFkYXRhW3FdKXtsZW5ndGgrK31kYXRhW3FdPXZhbHVlfWZ1bmN0aW9uIHBv cHVsYXRlKCl7aWYoIW9wdGlvbnMuZGF0YSlyZXR1cm4gZmFsc2U7dmFyIHN0TWF0 Y2hTZXRzPXt9LG51bGxEYXRhPTA7aWYoIW9wdGlvbnMudXJsKW9wdGlvbnMuY2Fj aGVMZW5ndGg9MTtzdE1hdGNoU2V0c1siIl09W107Zm9yKHZhciBpPTAsb2w9b3B0 aW9ucy5kYXRhLmxlbmd0aDtpPG9sO2krKyl7dmFyIHJhd1ZhbHVlPW9wdGlvbnMu ZGF0YVtpXTtyYXdWYWx1ZT0odHlwZW9mIHJhd1ZhbHVlPT0ic3RyaW5nIik/W3Jh d1ZhbHVlXTpyYXdWYWx1ZTt2YXIgdmFsdWU9b3B0aW9ucy5mb3JtYXRNYXRjaChy YXdWYWx1ZSxpKzEsb3B0aW9ucy5kYXRhLmxlbmd0aCk7aWYodmFsdWU9PT1mYWxz ZSljb250aW51ZTt2YXIgZmlyc3RDaGFyPXZhbHVlLmNoYXJBdCgwKS50b0xvd2Vy Q2FzZSgpO2lmKCFzdE1hdGNoU2V0c1tmaXJzdENoYXJdKXN0TWF0Y2hTZXRzW2Zp cnN0Q2hhcl09W107dmFyIHJvdz17dmFsdWU6dmFsdWUsZGF0YTpyYXdWYWx1ZSxy ZXN1bHQ6b3B0aW9ucy5mb3JtYXRSZXN1bHQmJm9wdGlvbnMuZm9ybWF0UmVzdWx0 KHJhd1ZhbHVlKXx8dmFsdWV9O3N0TWF0Y2hTZXRzW2ZpcnN0Q2hhcl0ucHVzaChy b3cpO2lmKG51bGxEYXRhKys8b3B0aW9ucy5tYXgpe3N0TWF0Y2hTZXRzWyIiXS5w dXNoKHJvdyl9fTskLmVhY2goc3RNYXRjaFNldHMsZnVuY3Rpb24oaSx2YWx1ZSl7 b3B0aW9ucy5jYWNoZUxlbmd0aCsrO2FkZChpLHZhbHVlKX0pfXNldFRpbWVvdXQo cG9wdWxhdGUsMjUpO2Z1bmN0aW9uIGZsdXNoKCl7ZGF0YT17fTtsZW5ndGg9MH1y ZXR1cm57Zmx1c2g6Zmx1c2gsYWRkOmFkZCxwb3B1bGF0ZTpwb3B1bGF0ZSxsb2Fk OmZ1bmN0aW9uKHEpe2lmKCFvcHRpb25zLmNhY2hlTGVuZ3RofHwhbGVuZ3RoKXJl dHVybiBudWxsO2lmKCFvcHRpb25zLnVybCYmb3B0aW9ucy5tYXRjaENvbnRhaW5z KXt2YXIgY3N1Yj1bXTtmb3IodmFyIGsgaW4gZGF0YSl7aWYoay5sZW5ndGg+MCl7 dmFyIGM9ZGF0YVtrXTskLmVhY2goYyxmdW5jdGlvbihpLHgpe2lmKG1hdGNoU3Vi c2V0KHgudmFsdWUscSkpe2NzdWIucHVzaCh4KX19KX19cmV0dXJuIGNzdWJ9ZWxz ZSBpZihkYXRhW3FdKXtyZXR1cm4gZGF0YVtxXX1lbHNlIGlmKG9wdGlvbnMubWF0 Y2hTdWJzZXQpe2Zvcih2YXIgaT1xLmxlbmd0aC0xO2k+PW9wdGlvbnMubWluQ2hh cnM7aS0tKXt2YXIgYz1kYXRhW3Euc3Vic3RyKDAsaSldO2lmKGMpe3ZhciBjc3Vi PVtdOyQuZWFjaChjLGZ1bmN0aW9uKGkseCl7aWYobWF0Y2hTdWJzZXQoeC52YWx1 ZSxxKSl7Y3N1Yltjc3ViLmxlbmd0aF09eH19KTtyZXR1cm4gY3N1Yn19fXJldHVy biBudWxsfX19OyQuQXV0b2NvbXBsZXRlci5TZWxlY3Q9ZnVuY3Rpb24ob3B0aW9u cyxpbnB1dCxzZWxlY3QsY29uZmlnKXt2YXIgQ0xBU1NFUz17QUNUSVZFOiJhY19v dmVyIn07dmFyIGxpc3RJdGVtcyxhY3RpdmU9LTEsZGF0YSx0ZXJtPSIiLG5lZWRz SW5pdD10cnVlLGVsZW1lbnQsbGlzdDtmdW5jdGlvbiBpbml0KCl7aWYoIW5lZWRz SW5pdClyZXR1cm47ZWxlbWVudD0kKCI8ZGl2Lz4iKS5oaWRlKCkuYWRkQ2xhc3Mo b3B0aW9ucy5yZXN1bHRzQ2xhc3MpLmNzcygicG9zaXRpb24iLCJhYnNvbHV0ZSIp LmFwcGVuZFRvKGRvY3VtZW50LmJvZHkpO2xpc3Q9JCgiPHVsLz4iKS5hcHBlbmRU byhlbGVtZW50KS5tb3VzZW92ZXIoZnVuY3Rpb24oZXZlbnQpe2lmKHRhcmdldChl dmVudCkubm9kZU5hbWUmJnRhcmdldChldmVudCkubm9kZU5hbWUudG9VcHBlckNh c2UoKT09J0xJJyl7YWN0aXZlPSQoImxpIixsaXN0KS5yZW1vdmVDbGFzcyhDTEFT U0VTLkFDVElWRSkuaW5kZXgodGFyZ2V0KGV2ZW50KSk7JCh0YXJnZXQoZXZlbnQp KS5hZGRDbGFzcyhDTEFTU0VTLkFDVElWRSl9fSkuY2xpY2soZnVuY3Rpb24oZXZl bnQpeyQodGFyZ2V0KGV2ZW50KSkuYWRkQ2xhc3MoQ0xBU1NFUy5BQ1RJVkUpO3Nl bGVjdCgpO2lucHV0LmZvY3VzKCk7cmV0dXJuIGZhbHNlfSkubW91c2Vkb3duKGZ1 bmN0aW9uKCl7Y29uZmlnLm1vdXNlRG93bk9uU2VsZWN0PXRydWV9KS5tb3VzZXVw KGZ1bmN0aW9uKCl7Y29uZmlnLm1vdXNlRG93bk9uU2VsZWN0PWZhbHNlfSk7aWYo b3B0aW9ucy53aWR0aD4wKWVsZW1lbnQuY3NzKCJ3aWR0aCIsb3B0aW9ucy53aWR0 aCk7bmVlZHNJbml0PWZhbHNlfWZ1bmN0aW9uIHRhcmdldChldmVudCl7dmFyIGVs ZW1lbnQ9ZXZlbnQudGFyZ2V0O3doaWxlKGVsZW1lbnQmJmVsZW1lbnQudGFnTmFt ZSE9IkxJIillbGVtZW50PWVsZW1lbnQucGFyZW50Tm9kZTtpZighZWxlbWVudCly ZXR1cm5bXTtyZXR1cm4gZWxlbWVudH1mdW5jdGlvbiBtb3ZlU2VsZWN0KHN0ZXAp e2xpc3RJdGVtcy5zbGljZShhY3RpdmUsYWN0aXZlKzEpLnJlbW92ZUNsYXNzKENM QVNTRVMuQUNUSVZFKTttb3ZlUG9zaXRpb24oc3RlcCk7dmFyIGFjdGl2ZUl0ZW09 bGlzdEl0ZW1zLnNsaWNlKGFjdGl2ZSxhY3RpdmUrMSkuYWRkQ2xhc3MoQ0xBU1NF Uy5BQ1RJVkUpO2lmKG9wdGlvbnMuc2Nyb2xsKXt2YXIgb2Zmc2V0PTA7bGlzdEl0 ZW1zLnNsaWNlKDAsYWN0aXZlKS5lYWNoKGZ1bmN0aW9uKCl7b2Zmc2V0Kz10aGlz Lm9mZnNldEhlaWdodH0pO2lmKChvZmZzZXQrYWN0aXZlSXRlbVswXS5vZmZzZXRI ZWlnaHQtbGlzdC5zY3JvbGxUb3AoKSk+bGlzdFswXS5jbGllbnRIZWlnaHQpe2xp c3Quc2Nyb2xsVG9wKG9mZnNldCthY3RpdmVJdGVtWzBdLm9mZnNldEhlaWdodC1s aXN0LmlubmVySGVpZ2h0KCkpfWVsc2UgaWYob2Zmc2V0PGxpc3Quc2Nyb2xsVG9w KCkpe2xpc3Quc2Nyb2xsVG9wKG9mZnNldCl9fX07ZnVuY3Rpb24gbW92ZVBvc2l0 aW9uKHN0ZXApe2FjdGl2ZSs9c3RlcDtpZihhY3RpdmU8MCl7YWN0aXZlPWxpc3RJ dGVtcy5zaXplKCktMX1lbHNlIGlmKGFjdGl2ZT49bGlzdEl0ZW1zLnNpemUoKSl7 YWN0aXZlPTB9fWZ1bmN0aW9uIGxpbWl0TnVtYmVyT2ZJdGVtcyhhdmFpbGFibGUp e3JldHVybiBvcHRpb25zLm1heCYmb3B0aW9ucy5tYXg8YXZhaWxhYmxlP29wdGlv bnMubWF4OmF2YWlsYWJsZX1mdW5jdGlvbiBmaWxsTGlzdCgpe2xpc3QuZW1wdHko KTt2YXIgbWF4PWxpbWl0TnVtYmVyT2ZJdGVtcyhkYXRhLmxlbmd0aCk7Zm9yKHZh ciBpPTA7aTxtYXg7aSsrKXtpZighZGF0YVtpXSljb250aW51ZTt2YXIgZm9ybWF0 dGVkPW9wdGlvbnMuZm9ybWF0SXRlbShkYXRhW2ldLmRhdGEsaSsxLG1heCxkYXRh W2ldLnZhbHVlLHRlcm0pO2lmKGZvcm1hdHRlZD09PWZhbHNlKWNvbnRpbnVlO3Zh ciBsaT0kKCI8bGkvPiIpLmh0bWwob3B0aW9ucy5oaWdobGlnaHQoZm9ybWF0dGVk LHRlcm0pKS5hZGRDbGFzcyhpJTI9PTA/ImFjX2V2ZW4iOiJhY19vZGQiKS5hcHBl bmRUbyhsaXN0KVswXTskLmRhdGEobGksImFjX2RhdGEiLGRhdGFbaV0pfWxpc3RJ dGVtcz1saXN0LmZpbmQoImxpIik7aWYob3B0aW9ucy5zZWxlY3RGaXJzdCl7bGlz dEl0ZW1zLnNsaWNlKDAsMSkuYWRkQ2xhc3MoQ0xBU1NFUy5BQ1RJVkUpO2FjdGl2 ZT0wfWxpc3QuYmdpZnJhbWUoKX1yZXR1cm57ZGlzcGxheTpmdW5jdGlvbihkLHEp e2luaXQoKTtkYXRhPWQ7dGVybT1xO2ZpbGxMaXN0KCl9LG5leHQ6ZnVuY3Rpb24o KXttb3ZlU2VsZWN0KDEpfSxwcmV2OmZ1bmN0aW9uKCl7bW92ZVNlbGVjdCgtMSl9 LHBhZ2VVcDpmdW5jdGlvbigpe2lmKGFjdGl2ZSE9MCYmYWN0aXZlLTg8MCl7bW92 ZVNlbGVjdCgtYWN0aXZlKX1lbHNle21vdmVTZWxlY3QoLTgpfX0scGFnZURvd246 ZnVuY3Rpb24oKXtpZihhY3RpdmUhPWxpc3RJdGVtcy5zaXplKCktMSYmYWN0aXZl Kzg+bGlzdEl0ZW1zLnNpemUoKSl7bW92ZVNlbGVjdChsaXN0SXRlbXMuc2l6ZSgp LTEtYWN0aXZlKX1lbHNle21vdmVTZWxlY3QoOCl9fSxoaWRlOmZ1bmN0aW9uKCl7 ZWxlbWVudCYmZWxlbWVudC5oaWRlKCk7YWN0aXZlPS0xfSx2aXNpYmxlOmZ1bmN0 aW9uKCl7cmV0dXJuIGVsZW1lbnQmJmVsZW1lbnQuaXMoIjp2aXNpYmxlIil9LGN1 cnJlbnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy52aXNpYmxlKCkmJihsaXN0SXRl bXMuZmlsdGVyKCIuIitDTEFTU0VTLkFDVElWRSlbMF18fG9wdGlvbnMuc2VsZWN0 Rmlyc3QmJmxpc3RJdGVtc1swXSl9LHNob3c6ZnVuY3Rpb24oKXt2YXIgb2Zmc2V0 PSQoaW5wdXQpLm9mZnNldCgpO2VsZW1lbnQuY3NzKHt3aWR0aDp0eXBlb2Ygb3B0 aW9ucy53aWR0aD09InN0cmluZyJ8fG9wdGlvbnMud2lkdGg+MD9vcHRpb25zLndp ZHRoOiQoaW5wdXQpLndpZHRoKCksdG9wOm9mZnNldC50b3AraW5wdXQub2Zmc2V0 SGVpZ2h0LGxlZnQ6b2Zmc2V0LmxlZnR9KS5zaG93KCk7aWYob3B0aW9ucy5zY3Jv bGwpe2xpc3Quc2Nyb2xsVG9wKDApO2xpc3QuY3NzKHttYXhIZWlnaHQ6b3B0aW9u cy5zY3JvbGxIZWlnaHQsb3ZlcmZsb3c6J2F1dG8nfSk7aWYoJC5icm93c2VyLm1z aWUmJnR5cGVvZiBkb2N1bWVudC5ib2R5LnN0eWxlLm1heEhlaWdodD09PSJ1bmRl ZmluZWQiKXt2YXIgbGlzdEhlaWdodD0wO2xpc3RJdGVtcy5lYWNoKGZ1bmN0aW9u KCl7bGlzdEhlaWdodCs9dGhpcy5vZmZzZXRIZWlnaHR9KTt2YXIgc2Nyb2xsYmFy c1Zpc2libGU9bGlzdEhlaWdodD5vcHRpb25zLnNjcm9sbEhlaWdodDtsaXN0LmNz cygnaGVpZ2h0JyxzY3JvbGxiYXJzVmlzaWJsZT9vcHRpb25zLnNjcm9sbEhlaWdo dDpsaXN0SGVpZ2h0KTtpZighc2Nyb2xsYmFyc1Zpc2libGUpe2xpc3RJdGVtcy53 aWR0aChsaXN0LndpZHRoKCktcGFyc2VJbnQobGlzdEl0ZW1zLmNzcygicGFkZGlu Zy1sZWZ0IikpLXBhcnNlSW50KGxpc3RJdGVtcy5jc3MoInBhZGRpbmctcmlnaHQi KSkpfX19fSxzZWxlY3RlZDpmdW5jdGlvbigpe3ZhciBzZWxlY3RlZD1saXN0SXRl bXMmJmxpc3RJdGVtcy5maWx0ZXIoIi4iK0NMQVNTRVMuQUNUSVZFKS5yZW1vdmVD bGFzcyhDTEFTU0VTLkFDVElWRSk7cmV0dXJuIHNlbGVjdGVkJiZzZWxlY3RlZC5s ZW5ndGgmJiQuZGF0YShzZWxlY3RlZFswXSwiYWNfZGF0YSIpfSxlbXB0eUxpc3Q6 ZnVuY3Rpb24oKXtsaXN0JiZsaXN0LmVtcHR5KCl9LHVuYmluZDpmdW5jdGlvbigp e2VsZW1lbnQmJmVsZW1lbnQucmVtb3ZlKCl9fX07JC5BdXRvY29tcGxldGVyLlNl bGVjdGlvbj1mdW5jdGlvbihmaWVsZCxzdGFydCxlbmQpe2lmKGZpZWxkLmNyZWF0 ZVRleHRSYW5nZSl7dmFyIHNlbFJhbmdlPWZpZWxkLmNyZWF0ZVRleHRSYW5nZSgp O3NlbFJhbmdlLmNvbGxhcHNlKHRydWUpO3NlbFJhbmdlLm1vdmVTdGFydCgiY2hh cmFjdGVyIixzdGFydCk7c2VsUmFuZ2UubW92ZUVuZCgiY2hhcmFjdGVyIixlbmQp O3NlbFJhbmdlLnNlbGVjdCgpfWVsc2UgaWYoZmllbGQuc2V0U2VsZWN0aW9uUmFu Z2Upe2ZpZWxkLnNldFNlbGVjdGlvblJhbmdlKHN0YXJ0LGVuZCl9ZWxzZXtpZihm aWVsZC5zZWxlY3Rpb25TdGFydCl7ZmllbGQuc2VsZWN0aW9uU3RhcnQ9c3RhcnQ7 ZmllbGQuc2VsZWN0aW9uRW5kPWVuZH19ZmllbGQuZm9jdXMoKX19KShqUXVlcnkp Ow0K ------------KLmYUyxWijRzsm8UGCbJ8E Content-Disposition: inline; filename=common81.js Content-Type: application/x-javascript; charset=utf-8; name=common81.js Content-Location: http://i.dell.com/images/global/js/common81.js Content-Transfer-Encoding: Base64 dHJ5IHsNCiAgICBpZiAoZG9jdW1lbnQuZG9tYWluLmluZGV4T2YoImRlbGwuY29t LiIpID09IC0xICYmIGRvY3VtZW50LmRvbWFpbi5pbmRleE9mKCJkZWxsLmNvbSIp ICE9IC0xKSB7IGRvY3VtZW50LmRvbWFpbiA9ICJkZWxsLmNvbSI7IH0gZWxzZSB7 IHRyeSB7IHdpbmRvdy5sb2NhdGlvbi5ocmVmOyB9IGNhdGNoIChlKSB7IGRvY3Vt ZW50LmRvbWFpbiA9IGRvY3VtZW50LmRvbWFpbjsgfSB9DQp9IGNhdGNoIChlKSB7 DQp9DQp2YXIgbV9wcm9jZXNzaW5nY2FwdGlvbiA9ICdQcm9jZXNzaW5nJzsNCnZh ciBtX3BiYXJDYXJ0ID0gbnVsbDsNCnZhciBtX3BiYXJNQSA9IG51bGw7DQp2YXIg bV9wbmxpbmtzOw0KdmFyIG1fY3J1bWJzOw0KdmFyIG1fbWhGaXhlZCA9IGZhbHNl Ow0KdmFyIG1faXNIb21lID0gZmFsc2U7DQp2YXIgbV9pc1NlZ0hvbWUgPSBmYWxz ZTsNCnZhciBtX3NraXBNZW51RGVmID0gZmFsc2U7DQp2YXIgbV9tZGEgPSBudWxs Ow0KdmFyIG1fcHJpbnRMaW5rID0gbnVsbDsNCnZhciBtX2VtYWlsTGluayA9IGZh bHNlOw0KdmFyIG1faGVscExpbmsgPSBudWxsOw0KdmFyIG1fcHJvZHVjdGlvbiA9 IHRydWU7DQp2YXIgbV9tZW51ZGVmID0gIi9jb250ZW50L3B1YmxpYy9tZW51LmFz cHgiOw0KdmFyIG1fYXZnQ2hXID0gNjsNCnZhciBtX2NydW1iUmVnRXgxID0gLzwu Kj4vZzsNCnZhciBtX2NydW1iUmVnRXgyID0gLyZuYnNwOy9nOw0KdmFyIG1fY3J1 bWJSZWdFeDMgPSAvJn5jaz1idC9nOw0KdmFyIG1fc3ViTmF2TGlua3NEaXNwbGF5 ID0gZmFsc2U7DQp2YXIgbV9zdWJOYXZJY29uc0Rpc3BsYXkgPSBmYWxzZTsNCnZh ciBtX2xhcmdlRm9udCA9IGZhbHNlOw0KdmFyIG1fc3VwcmVzc1N1Yk5hdiA9IGZh bHNlOw0KdmFyIG1fc3RkRW1wdHkgPSAiIjsNCnZhciBtX3N0ZE9mZkltZzsNCnZh ciBtX2FjdGl2ZVRhYiA9IG51bGw7DQp2YXIgbV9wYmFyU3RyaXBBamF4ID0gbnVs bDsNCnZhciBtX3BiYXJOYXZBamF4ID0gbnVsbDsNCnZhciBtX3BiYXJDb250ZW50 QWpheCA9IG51bGw7DQp2YXIgbV9kZWZhdWx0VGFicyA9IGZhbHNlOw0KdmFyIG1f cGJhclBmeCA9ICIiOw0KdmFyIG1fcGhvbmVUaXRsZSA9IG51bGw7DQp2YXIgbV9w aG9uZU1zZyA9IG51bGw7DQp2YXIgbV9waG9uZVRhcmlmZiA9IG51bGw7DQp2YXIg bV9wYmFyQ29udGVudERpdiA9IG51bGw7DQp2YXIgbV9wYWdlVGFiID0gbnVsbDsN CnZhciBtX21hc3RoZWFkV2lkdGggPSA5Mjg7DQp2YXIgbV9tYXN0aGVhZFdpZHRo TmV4dEdlbiA9IDk2NTsNCnZhciBtX3BiYXJUYWJFbmFibGVkID0gZmFsc2U7DQp2 YXIgbV9wYmFyVGFiVGl0bGUgPSAiTXkgQWNjb3VudCI7DQp2YXIgbV90YWJOYXYg PSBmYWxzZTsNCnZhciBtX3BiYXJDYXJ0RW5hYmxlZCA9IGZhbHNlOw0KdmFyIG1f cGJhck1BRW5hYmxlZCA9IGZhbHNlOw0KdmFyIG1fdG9vbEJveExpbmtzID0gbnVs bDsNCnZhciBtX3BiYXJMaW5rcyA9IG51bGw7DQp2YXIgbV9wYmFyU3RyaXBDb250 ZW50ID0gbnVsbDsNCnZhciBtX2J1eW9ubGluZU1lc3NhZ2UgPSBudWxsOw0KdmFy IG1fc3ViTmF2TGlua1dpZHRoID0gbnVsbDsNCnZhciBtX3NlYXJjaFR5cGVzID0g bnVsbDsNCnZhciBtX3NlYXJjaFRlbXAgPSBudWxsOw0KdmFyIG1fc2VhcmNoT3Zl cmZsb3dNc2cgPSAiLi4uIjsNCnZhciBtX215QWNjb3VudExpbmsgPSBudWxsOw0K dmFyIG1fdGltZW91dE9wZW5EZWxheSA9IG51bGw7DQp2YXIgbV90aW1lb3V0Q2xv c2VEZWxheSA9IG51bGw7DQp2YXIgbV90aW1lb3V0VGVyT3BlbkRlbGF5ID0gbnVs bDsNCnZhciBtX3RpbWVvdXRUZXJDbG9zZURlbGF5ID0gbnVsbDsNCnZhciBtX3Rh YkNvbnRlbnREaXYgPSBudWxsOw0KdmFyIG1fdGFiVGVyQ29udGVudERpdiA9IG51 bGw7DQp2YXIgbV9tYUlmcmFtZSA9IGZhbHNlOw0KdmFyIFNjcmVlbiA9IG5ldyBH ZXRTY3JlZW4oKTsNCnZhciBtX2NhcnRQYWdlcyA9IG5ldyBBcnJheSgpOw0KdmFy IGxvYWRlZCA9IG5ldyBBcnJheSgpOw0KdmFyIG9ubG9hZEZpcmVkID0gZmFsc2U7 DQp2YXIgbV9pc1J0bCA9IGZhbHNlOw0KdmFyIG1fY2xpZW50VmFycyA9IG51bGw7 DQp2YXIgbV9pc0NlbnRlciA9IHRydWU7DQp2YXIgbV9pc1BvcHVwSW50ZW50aW9u ID0gZmFsc2U7DQp2YXIgbV9ydW5TYWZlTG9hZCA9IGZhbHNlOw0KdmFyIHNlZ21l bnRUaXRsZSA9IG51bGw7DQoNCnZhciBzaHJpbmsgPSAwOw0KdmFyIGlzYmxvYXRl ZCA9IGZhbHNlOw0KdmFyIGlzYmxvYXRpbmcgPSBmYWxzZTsNCnZhciBtX2Zyb21B ZGRUb0NhcnQgPSBmYWxzZTsNCnZhciBDb250YWluZXJIZWlnaHQgPSAwOw0KdmFy IGluY3JlbWVudCA9IDA7DQp2YXIgaW50U2hvdzsNCnZhciBtX2lkOw0KdmFyIGJs b2NrY29sbGFwc2UgPSBmYWxzZTsNCnZhciBtX21lbnVsb2FkID0gbmV3IEFycmF5 KCk7DQp2YXIgbV9tZW51bG9hZGVkID0gZmFsc2U7DQp2YXIgbV9wb3BDbG9zZSA9 ICJDbG9zZSI7DQp2YXIgbV9pc0FsaWVud2FyZUxheW91dCA9IGZhbHNlOw0KdmFy IG1faXNBbGllbndhcmVUaGVtZSA9IGZhbHNlOw0KdmFyIG1fc3Rvcm1Db29raWUg PSBudWxsOw0KdmFyIG1fbmF2UGFnZSA9IG51bGw7DQp2YXIgbV9pc1Jjb21tID0g ZmFsc2U7DQp2YXIgbV9jdXJVcmwgPSAiIjsNCg0KdmFyIG9mZmVycyA9IG5ldyBB cnJheSgpOw0KZnVuY3Rpb24gQWRkVG9PZmZlcnMobmFtZSwgaHRtbCkgew0KICAg IG9mZmVyc1tuYW1lXSA9IGh0bWw7DQp9DQoNCmZ1bmN0aW9uIGJldGFTaG93KHZh cmlhbnRPZmZlcklkLCBtYm94SWQpIHsNCiAgICB2YXIgZGl2Q250ID0gZG9jdW1l bnQuZ2V0RWxlbWVudEJ5SWQobWJveElkICsgIl9waCIpOw0KICAgIGlmIChkaXZD bnQgPT0gbnVsbCkgew0KICAgICAgICB0cnkgew0KICAgICAgICAgICAgbWJveEZh Y3RvcnlEZWZhdWx0LmdldChtYm94SWQsIDApLnNldE9mZmVyKG5ldyBtYm94T2Zm ZXJEZWZhdWx0KCkpLmFjdGl2YXRlKCk7DQogICAgICAgIH0NCiAgICAgICAgY2F0 Y2ggKGUpIHsNCiAgICAgICAgfQ0KICAgIH0NCiAgICBlbHNlIHsNCiAgICAgICAg dmFyIGNvbnRlbnQgPSBvZmZlcnNbdmFyaWFudE9mZmVySWRdOw0KICAgICAgICBp ZiAoY29udGVudCA9PSBudWxsIHx8IGNvbnRlbnQgPT0gdW5kZWZpbmVkKSB7DQog ICAgICAgICAgICByZXR1cm47DQogICAgICAgIH0NCiAgICAgICAgY29udGVudCA9 IGNvbnRlbnQucmVwbGFjZSgnPC8iKyJzY3JpcHQ+JywgJzwvc2NyaXB0PicpOw0K ICAgICAgICBkaXZDbnQuaW5uZXJIVE1MID0gY29udGVudDsNCg0KICAgICAgICB0 cnkgew0KICAgICAgICAgICAgdmFyIHN0YXJ0VmFyID0gIkphdmFTY3JpcHQ+IjsN CiAgICAgICAgICAgIHZhciBzdGFydCA9IGNvbnRlbnQuaW5kZXhPZigiSmF2YVNj cmlwdFwiPiIpOw0KICAgICAgICAgICAgc3RhcnQgPSBzdGFydCArIHN0YXJ0VmFy Lmxlbmd0aCArIDE7DQogICAgICAgICAgICB2YXIgZW5kVmFyID0gIjwvc2NyaXB0 PiI7DQogICAgICAgICAgICB2YXIgZW5kID0gY29udGVudC5pbmRleE9mKGVuZFZh cik7DQogICAgICAgICAgICB2YXIgb2JqID0gY29udGVudC5zdWJzdHJpbmcoc3Rh cnQsIGVuZCk7DQogICAgICAgICAgICBldmFsKG9iaik7DQogICAgICAgIH0NCiAg ICAgICAgY2F0Y2ggKGUpIHsNCiAgICAgICAgfQ0KICAgIH0NCn0NCg0KZnVuY3Rp b24gd3JpdGVNSFNpbXBsZShoYXNDbG9zZSwgcHJpbnRDYXB0aW9uLCBwcmludExp bmspIHsNCiAgICBkb2N1bWVudC53cml0ZSgiPGRpdiBjbGFzcz1cInNpbXBsZW1h c3RoZWFkY29udGFpbmVyXCI+PHRhYmxlIGlkPVwibmV4dGdlblwiIGNsYXNzPVwi Y2VudGVydGFibGVcIiBjZWxscGFkZGluZz1cIjBcIiBjZWxsc3BhY2luZz1cIjBc IiBib3JkZXI9XCIwXCIgaGVpZ2h0PVwiMzVcIiB3aWR0aD1cIjEwMCVcIj48dHI+ Iik7DQoJdmFyIElFdmVyID0gcmVhZElFVmVyKCk7DQoJdmFyIGlzSUU2b3JsZXNz ID0gKElFdmVyID49IDEuMCkgJiYgKElFdmVyIDwgNy4wKTsNCiAgICBkb2N1bWVu dC53cml0ZSgiPHRkPjxkaXYgY2xhc3M9XCJmb290ZXJsb2dvIisoaXNJRTZvcmxl c3M/IklFNiI6IiIpKyJcIj48L2Rpdj48L3RkPiIpOw0KICAgIGlmIChtX21kYSkg ew0KICAgICAgICBkb2N1bWVudC53cml0ZSgiPHRkIGFsaWduPVwicmlnaHRcIj48 ZGl2IGNsYXNzPVwibWRhYmFyY29udGFpbmVyXCIgaWQ9XCJtZGFiYXJcIj4iKTsN CiAgICAgICAgZG9jdW1lbnQud3JpdGUobV9tZGEpOw0KICAgICAgICBkb2N1bWVu dC53cml0ZSgiPC9kaXY+PC90ZD4iKTsNCiAgICB9DQogICAgZG9jdW1lbnQud3Jp dGUoIjwvdHI+PC90YWJsZT48L2Rpdj4iKTsNCiAgICBpZiAobV9wbmxpbmtzICYm IG1fc3ViTmF2TGlua3NEaXNwbGF5ICYmICghbV9zdXByZXNzU3ViTmF2KSAmJiAh bV9pc1Jjb21tKSB7DQogICAgICAgIGRvY3VtZW50LndyaXRlKCI8ZGl2IGNsYXNz PVwidGVydGlhcnluYXZjb250YWluZXJcIj48dGFibGUgY2xhc3M9XCJjZW50ZXJ0 YWJsZVwiIGNlbGxwYWRkaW5nPVwiMFwiIGNlbGxzcGFjaW5nPVwiMFwiIHdpZHRo PVwiMTAwJVwiPjx0cj48dGQgdmFsaWduPVwiYm90dG9tXCI+Iik7DQogICAgICAg IHJlbmRlclN1Yk5hdkxpbmtzKCk7DQogICAgICAgIGRvY3VtZW50LndyaXRlKCI8 L3RkPjwvdHI+PC90YWJsZT48L2Rpdj4iKTsNCiAgICB9DQogICAgdmFyIG1fbmV4 dEdlbkJHQ29sb3IgPSAobV9pc0FsaWVud2FyZVRoZW1lPyIjMEEwQTBBIjoiI0ZG RkZGRiIpOw0KICAgICRqKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpIHsgc2V0 TmV4dEdlbkJHQ29sb3IobV9uZXh0R2VuQkdDb2xvcik7IH0pOw0KfQ0KDQpmdW5j dGlvbiB3cml0ZU1pbmlNSChwaG9uZVRpdGxlLCBwaG9uZU1zZywgcGhvbmVUYXJp ZmYsIHNlZ21lbnRUaXRsZSwgaGFzTG9jYWxlLCBsb2dvTGluaywgcG5tc2cpIHsN CiAgICB3cml0ZU1IKHBob25lVGl0bGUsIHBob25lTXNnLCBwaG9uZVRhcmlmZiwg c2VnbWVudFRpdGxlLCBoYXNMb2NhbGUsIGxvZ29MaW5rLCBwbm1zZywgdHJ1ZSk7 DQp9DQoNCmZ1bmN0aW9uIHdyaXRlTUgocGhvbmVUaXRsZSwgcGhvbmVNc2csIHBo b25lVGFyaWZmLCBzZWdtZW50VGl0bGUsIGhhc0xvY2FsZSwgbG9nb0xpbmssIHBu bXNnLCBpc01pbmkpIHsNCiAgICBkb2N1bWVudC53cml0ZSgiPGRpdiBpZD1cInRy YWlsaW1hZ2VpZFwiIHN0eWxlPVwiei1pbmRleDoyMDtwb3NpdGlvbjphYnNvbHV0 ZTt2aXNpYmlsaXR5OmhpZGRlbjtsZWZ0OjBweDt0b3A6MHB4O3dpZHRoOjFweDto ZWlnaHQ6MXB4O2ZvbnQtZmFtaWx5OmFyaWFsLGhlbHZldGljYTtmb250LXNpemU6 OC41cHRcIj48c3BhbiBpZD1cInByb2Nlc3NpbmdDYXB0aW9uSURcIj5Qcm9jZXNz aW5nLi4uLjwvc3Bhbj48aW1nIHNyYz1cIiIgKyBtX2ltZ1BmeCArICIvaW1hZ2Vz L2dsb2JhbC9icmFuZC9pY29ucy9hamF4LWxvYWRlclsxXS5naWZcIiBib3JkZXI9 XCIwXCI+PC9kaXY+Iik7DQogICAgZG9jdW1lbnQud3JpdGUoIjxkaXYgaWQ9XCJp ZnJhbWVDb250YWluZXJcIiBzdHlsZT1cInBvc2l0aW9uOmFic29sdXRlO1wiPjwv ZGl2PiIpOw0KICAgIG1fcGhvbmVUaXRsZSA9IHBob25lVGl0bGU7DQogICAgbV9w aG9uZU1zZyA9IHBob25lTXNnOw0KICAgIG1fcGhvbmVUYXJpZmYgPSBwaG9uZVRh cmlmZjsNCiAgICBtX2N1clVybCA9IChtX2N1clVybCAhPSBudWxsICYmIG1fY3Vy VXJsLmxlbmd0aCA+IDApID8gbV9jdXJVcmwgOiB3aW5kb3cubG9jYXRpb24uaHJl ZjsNCiAgICBkb2N1bWVudC53cml0ZWxuKCI8IS0tIGJlZ2luIG1hc3RoZWFkIC0t PiIpOw0KICAgIG1fc3RkT2ZmSW1nID0gIjxpbWcgc3JjPVwiIiArIG1faW1nUGZ4 ICsgIi9pbWFnZXMvZ2xvYmFsL2JyYW5kL2ljb25zL3NtZXh0bGluay5naWZcIiwg d2lkdGg9XCIxNlwiIGhlaWdodD1cIjlcIiBib3JkZXI9XCIwXCIvPiI7DQogICAg YXV0b2NvbmZpZygpOw0KICAgIGlmICh0eXBlb2YgKG1fc3VwcHJlc3NQcmludExp bmspICE9ICJ1bmRlZmluZWQiKSB7DQogICAgICAgIG1fcHJpbnRMaW5rID0gbnVs bDsNCiAgICB9DQogICAgaWYgKHR5cGVvZiAobV9tZW51QmFyKSA9PSAidW5kZWZp bmVkIikgew0KICAgICAgICBpZiAoIW1fcHJvZHVjdGlvbikgew0KICAgICAgICAg ICAgZG9jdW1lbnQud3JpdGUoIjxkaXYgY2xhc3M9XCJwYXJhXCIgc3R5bGU9XCJj b2xvcjpyZWQ7IGZvbnQtd2VpZ2h0OmJvbGRcIj5UaGVyZSBpcyBhIHByb2JsZW0g d2l0aCB0aGUgbWVudSBkZWZpbml0aW9uLiAiKTsNCiAgICAgICAgICAgIGRvY3Vt ZW50LndyaXRlKCI8YSBocmVmPVwiIiArIG1fbWVudWRlZiArICJcIj5DbGljayBo ZXJlIHRvIHZpZXc8L2E+PC9kaXY+Iik7DQogICAgICAgICAgICByZXR1cm47DQog ICAgICAgIH0NCiAgICAgICAgcmV0dXJuOw0KICAgIH0NCiAgICBpZiAobV9sYXJn ZUZvbnQpIHsNCiAgICAgICAgbV9hdmdDaFcgPSBtX2F2Z0NoVyArIDI7DQogICAg fQ0KICAgIG1fbWhGaXhlZCA9IHRydWU7DQogICAgaWYgKHR5cGVvZiAobV9wcmlu dGFibGVUZXh0KSA9PSAidW5kZWZpbmVkIikgew0KICAgICAgICBtX3ByaW50YWJs ZVRleHQgPSBtX3ByaW50VGV4dDsNCiAgICB9DQogICAgaWYgKHR5cGVvZiAobV9o ZWxwVGV4dCkgPT0gInVuZGVmaW5lZCIpIHsNCiAgICAgICAgbV9oZWxwVGV4dCA9 ICJoZWxwIjsNCiAgICB9DQogICAgZG9jdW1lbnQud3JpdGVsbigiPGEgbmFtZT1c Im1hc3RoZWFkdG9wXCI+PC9hPiIpOw0KICAgIGRvY3VtZW50LndyaXRlKCI8ZGl2 IGNsYXNzPVwibWFzdGhlYWRjb250YWluZXJcIj48dGFibGUgaWQ9XCJuZXh0Z2Vu XCIgY2xhc3M9XCJjZW50ZXJ0YWJsZVwiIGNlbGxwYWRkaW5nPVwiMFwiIGNlbGxz cGFjaW5nPVwiMFwiIGJvcmRlcj1cIjBcIiB3aWR0aD1cIiIgKyBtX21hc3RoZWFk V2lkdGhOZXh0R2VuICsgIlwiPjx0cj4iKTsNCiAgICBkb2N1bWVudC53cml0ZSgi PHRkIGNsYXNzPVwibWhwZXJzb25hbGl6YXRpb25jZWxsXCIgdmFsaWduPVwibWlk ZGxlXCIgIiArICgodHlwZW9mIChtX21lbnVCYXIpICE9ICJ1bmRlZmluZWQiICYm IG1fbWVudUJhciAmJiBtX21lbnVCYXIubGVuZ3RoID4gMCAmJiAhbV9za2lwTWVu dURlZikgPyAiY29sc3Bhbj1cIjNcIiIgOiAiY29sc3Bhbj1cIjJcIiIpICsgIj48 dGFibGUgaWQ9XCJwYmFyc3RyaXB0YWJsZVwiIHdpZHRoPVwiMTAwJVwiIGNlbGxw YWRkaW5nPVwiMFwiIGNlbGxzcGFjaW5nPVwiMFwiIGJvcmRlcj1cIjBcIj48dHI+ PHRkIG5vd3JhcD1cIm5vd3JhcFwiPiIpOw0KICAgIHJlbmRlckNvdW50cnlTZWxl Y3RvcigpOw0KICAgIGRvY3VtZW50LndyaXRlKCI8L3RkPiIpOw0KICAgIHZhciB0 aWNrcyA9IG5ldyBEYXRlKCk7DQogICAgZG9jdW1lbnQud3JpdGUoIjx0ZD48aW1n IHNyYz1cIiIgKyBtX2ltZ1BmeCArICIvaW1hZ2VzL2dsb2JhbC9nZW5lcmFsL3Nw YWNlci5naWZcIiBhbHQ9XCJcIiBib3JkZXI9XCIwXCIgd2lkdGg9XCIxNVwiIGhl aWdodD1cIjFcIiAvPjwvdGQ+PHRkIHdpZHRoPVwiMTAwJVwiPiIpOw0KICAgIHJl bmRlckJ1eU9ubGluZSgpOw0KICAgIGRvY3VtZW50LndyaXRlKCI8L3RkPiIpOw0K ICAgIGRvY3VtZW50LndyaXRlKCI8dGQgdmFsaWduPVwibWlkZGxlXCIgbm93cmFw PVwibm93cmFwXCI+Iik7DQogICAgaWYgKHNlZ21lbnRUaXRsZSkgew0KICAgICAg ICBkb2N1bWVudC53cml0ZSgiPGRpdiBjbGFzcz1cInNlZ21lbnR0aXRsZVwiPiIp Ow0KICAgICAgICBkb2N1bWVudC53cml0ZShzZWdtZW50VGl0bGUpOw0KICAgICAg ICBkb2N1bWVudC53cml0ZSgiPC9kaXY+Iik7DQogICAgfQ0KICAgIGRvY3VtZW50 LndyaXRlKCI8L3RkPjx0ZCB2YWxpZ249XCJtaWRkbGVcIiBub3dyYXA9XCJub3dy YXBcIj4iKTsNCiAgICBpZiAobV9wYmFyTGlua3MgIT0gbnVsbCAmJiBtX3BiYXJM aW5rcy5sZW5ndGggPiAwKSB7DQogICAgICAgIHJlbmRlclBiYXJMaW5rcygpOw0K ICAgIH0NCiAgICBkb2N1bWVudC53cml0ZSgiPC90ZD48dGQgdmFsaWduPVwidG9w XCI+Iik7DQogICAgZG9jdW1lbnQud3JpdGUoIjxkaXYgY2xhc3M9XCJwYmFyY29u dGFpbmVyXCIgaWQ9XCJwYmFyY29udGFpbmVyXCI+PGRpdiBpZD1cInBiYXJjb250 ZW50XCIgbmFtZT1cInBiYXJcIiBjbGFzcz1cInBiYXJjb250ZW50XCI+PHRhYmxl IHdpZHRoPVwiMTAwJVwiIGNlbGxwYWRkaW5nPVwiMFwiIGNlbGxzcGFjaW5nPVwi MFwiIGJvcmRlcj1cIjBcIj48dHI+Iik7DQogICAgcmVuZGVyVG9vbEJveCgpOw0K ICAgIGRvY3VtZW50LndyaXRlKCI8dGQ+PGRpdiBpZD1cInBiYXJzdHJpcGNvbnRh aW5lclwiPjwvZGl2PjwvdGQ+Iik7DQogICAgcmVuZGVyUGJhclN0cmlwKCk7DQog ICAgZG9jdW1lbnQud3JpdGUoIjwvdHI+PC90YWJsZT48L2Rpdj48L2Rpdj48L3Rk PjwvdHI+PC90YWJsZT48L3RkPjwvdHI+Iik7DQoNCiAgICBpZiAoaXNNaW5pKSB7 DQogICAgICAgIGRvY3VtZW50LndyaXRlKCI8L3RhYmxlPjwvZGl2PiIpOw0KICAg ICAgICBkb2N1bWVudC53cml0ZSgiPGEgbmFtZT1cInNraXBNSFwiPjwvYT4iKTsN CiAgICAgICAgZG9jdW1lbnQud3JpdGVsbigiPCEtLSBlbmQgbWFzdGhlYWQgLS0+ Iik7DQogICAgICAgIHZhciBtX25leHRHZW5CR0NvbG9yID0gKG1faXNBbGllbndh cmVUaGVtZT8iIzBBMEEwQSI6IiNGRkZGRkYiKTsNCiAgICAgICAgJGooZG9jdW1l bnQpLnJlYWR5KGZ1bmN0aW9uKCkgeyBzZXROZXh0R2VuQkdDb2xvcihtX25leHRH ZW5CR0NvbG9yKTsgfSk7DQogICAgICAgIHJldHVybjsNCiAgICB9DQoNCiAgICBk b2N1bWVudC53cml0ZSgiPHRyPjx0ZCBjbGFzcz1cIm1obG9nb2NlbGxcIiB2YWxp Z249XCIiICsgKCh0eXBlb2YgKG1fbWVudUJhcikgIT0gInVuZGVmaW5lZCIgJiYg bV9tZW51QmFyICYmIG1fbWVudUJhci5sZW5ndGggPiAwICYmICFtX3NraXBNZW51 RGVmKSA/ICJib3R0b20iIDogInRvcCIpICsgIlwiIHJvd3NwYW49XCIyXCI+Iik7 DQogICAgZG9jdW1lbnQud3JpdGUoIjxkaXYgaWQ9XCJsb2dvY29udGFpbmVyXCI+ Iik7DQogICAgZG9jdW1lbnQud3JpdGUoIjxhIGhyZWY9XCIjc2tpcE1IXCI+PGlt ZyBzcmM9XCIiICsgbV9pbWdQZnggKyAiL2ltYWdlcy9nbG9iYWwvZ2VuZXJhbC9z cGFjZXIuZ2lmXCIgYWx0PVwiU2tpcCB0byBtYWluIGNvbnRlbnRcIiBib3JkZXI9 XCIwXCIgd2lkdGg9XCIxXCIgaGVpZ2h0PVwiMVwiIC8+PC9hPiIpOw0KICAgIGlm ICh0eXBlb2YgKG1fbm90aG9tZWxvZ28pICE9ICJ1bmRlZmluZWQiKSB7DQoJCXZh ciBJRXZlciA9IHJlYWRJRVZlcigpOw0KCQl2YXIgaXNJRTZvcmxlc3MgPSAoSUV2 ZXIgPj0gMS4wKSAmJiAoSUV2ZXIgPCA3LjApOw0KICAgICAgICBtX25vdGhvbWVs b2dvID0gbV9ub3Rob21lbG9nby5yZXBsYWNlKCIvaW1hZ2VzL2dsb2JhbC9icmFu ZC91aS9sb2dvLmdpZiIsIChtX2lzQWxpZW53YXJlVGhlbWUgPyAiL2ltYWdlcy9n bG9iYWwvYnJhbmQvdWkvbnhnZW4vbG9nbzczLnBuZyIgOiAiL2ltYWdlcy9nbG9i YWwvYnJhbmQvdWkvc3Rvcm04MC9sb2dvODAuIiArIChpc0lFNm9ybGVzcz8iZ2lm IjoicG5nIikpKTsNCiAgICAgICAgaWYgKGxvZ29MaW5rKSB7DQogICAgICAgICAg ICBkb2N1bWVudC53cml0ZSgiPGEgY2xhc3M9XCJsb2dvbGlua1wiIGhyZWY9XCIi ICsgbV9ob21lbGluayArICJcIj4iKTsNCiAgICAgICAgfQ0KICAgICAgICBkb2N1 bWVudC53cml0ZSgiPGltZyBjbGFzcz1cImxvZ29cIiBzcmM9XCIiICsgbV9ub3Ro b21lbG9nbyArICJcIiBib3JkZXI9XCIwXCIgd2lkdGg9XCI2MVwiIGhlaWdodD1c IjYxXCIgYWx0PVwiRGVsbFwiIC8+Iik7DQogICAgICAgIGlmIChsb2dvTGluaykg ew0KICAgICAgICAgICAgZG9jdW1lbnQud3JpdGUoIjwvYT4iKTsNCiAgICAgICAg fQ0KICAgIH0NCiAgICBkb2N1bWVudC53cml0ZSgiPC9kaXY+PC90ZD4iKTsNCiAg ICBpZiAodHlwZW9mIChtX21lbnVCYXIpICE9ICJ1bmRlZmluZWQiICYmIG1fbWVu dUJhciAmJiBtX21lbnVCYXIubGVuZ3RoID4gMCAmJiAhbV9za2lwTWVudURlZikg ew0KICAgICAgICBkb2N1bWVudC53cml0ZSgiPHRkIGNsYXNzPVwibWhwcmltYXJ5 bmF2Y2VsbFwiIHZhbGlnbj1cIm1pZGRsZVwiPiIpOw0KICAgICAgICB2YXIgcGFn ZVRhYiA9IG51bGw7DQogICAgICAgIHZhciBtYXhUYWIgPSAobV9wYmFyVGFiRW5h YmxlZCAmJiAhbV90YWJOYXYpID8gbV9tZW51QmFyLmxlbmd0aCA6IChtX21lbnVC YXIubGVuZ3RoIC0gMSk7DQogICAgICAgIHZhciBjdXJVcmwgPSBoYXNoVGFiVXJs KHdpbmRvdy5sb2NhdGlvbi5ocmVmKTsNCiAgICAgICAgdmFyIHVybE92ZXJSaWRl ID0gZmFsc2U7DQogICAgICAgIHZhciBjb29raWVUYWIgPSBtX3N0b3JtQ29va2ll LnNlc3Npb24uZ2V0Q29va2llKCJ+dGlkIiArIHBhZ2VDbnR5ICsgcGFnZUxhbmcg KyBwYWdlU2VnICsgcGFnZUNTKTsNCiAgICAgICAgaWYgKGNvb2tpZVRhYiA9PSAi bXlhY2NvdW50TWVudSIpIHsNCiAgICAgICAgICAgIHBhZ2VUYWIgPSBtX21lbnVC YXIubGVuZ3RoOw0KICAgICAgICB9DQogICAgICAgIGlmIChwYWdlVGFiID09IG51 bGwpIHsNCiAgICAgICAgICAgIC8vIEN1cnJlbnQgVXJsIG1hdGNoZXMgVGFiIFVy bA0KICAgICAgICAgICAgZm9yIChuID0gMDsgbiA8IG1fbWVudUJhci5sZW5ndGg7 IG4rKykgew0KICAgICAgICAgICAgICAgIGlmIChjdXJVcmwgPT0gaGFzaFRhYlVy bChtX21lbnVCYXJbbl0uSHJlZikpIHsNCiAgICAgICAgICAgICAgICAgICAgcGFn ZVRhYiA9IG47DQogICAgICAgICAgICAgICAgICAgIGlmIChjb29raWVUYWIgIT0g bV9tZW51QmFyW25dLklkKSB7DQogICAgICAgICAgICAgICAgICAgICAgICBtX3N0 b3JtQ29va2llLnNlc3Npb24uc2V0Q29va2llKCJ+dGlkIiArIHBhZ2VDbnR5ICsg cGFnZUxhbmcgKyBwYWdlU2VnICsgcGFnZUNTLCBtX21lbnVCYXJbbl0uSWQpOw0K ICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIGJyZWFr Ow0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0K ICAgICAgICBpZiAocGFnZVRhYiA9PSBudWxsKSB7DQogICAgICAgICAgICAvLyBD b29raWUgSUQgbWF0Y2hlcyBNZW51IElEICAgICAgICANCiAgICAgICAgICAgIGlm IChjb29raWVUYWIgIT0gbnVsbCAmJiBjb29raWVUYWIubGVuZ3RoID4gMCkgew0K ICAgICAgICAgICAgICAgIGZvciAobiA9IDA7IG4gPCBtX21lbnVCYXIubGVuZ3Ro OyBuKyspIHsNCiAgICAgICAgICAgICAgICAgICAgaWYgKChjb29raWVUYWIgPT0g bV9tZW51QmFyW25dLklkKSB8fCAoY29va2llVGFiID09IG4pKS8vIHN0cmluZyBv ciBpbnQNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAg ICAgICAgcGFnZVRhYiA9IG47DQogICAgICAgICAgICAgICAgICAgICAgICBicmVh azsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAg ICAgICAgICAgIH0NCiAgICAgICAgICAgIGVsc2Ugew0KICAgICAgICAgICAgICAg IC8vIE1lbnUgYXR0cmlidXRlIElzU2VsZWN0ZWRUYWIgaXMgdHJ1ZQ0KICAgICAg ICAgICAgICAgIGZvciAobiA9IDA7IG4gPCBtX21lbnVCYXIubGVuZ3RoOyBuKysp IHsNCiAgICAgICAgICAgICAgICAgICAgaWYgKG1fbWVudUJhcltuXS5Jc1NlbGVj dGVkVGFiKSB7DQogICAgICAgICAgICAgICAgICAgICAgICBtX3BhZ2VUYWIgPSBu Ow0KICAgICAgICAgICAgICAgICAgICAgICAgbV9zdG9ybUNvb2tpZS5zZXNzaW9u LnNldENvb2tpZSgifnRpZCIgKyBwYWdlQ250eSArIHBhZ2VMYW5nICsgcGFnZVNl ZyArIHBhZ2VDUywgbV9tZW51QmFyW25dLklkKTsNCiAgICAgICAgICAgICAgICAg ICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAg ICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICAgIC8vIFRh YiBzZXQgaW4gUXVlcnlzdHJpbmcNCiAgICAgICAgdmFyIHFUYWIgPSBnZXRRdWVy eVZhcmlhYmxlKCJ+dGlkIik7DQogICAgICAgIGlmIChxVGFiKSB7DQogICAgICAg ICAgICBpZiAodHlwZW9mIChxVGFiKSAhPSAidW5kZWZpbmVkIiAmJiAhaXNOYU4o cGFyc2VJbnQocVRhYikpICYmIHFUYWIgPD0gbWF4VGFiKSB7DQogICAgICAgICAg ICAgICAgcGFnZVRhYiA9IHFUYWI7DQogICAgICAgICAgICAgICAgbV9zdG9ybUNv b2tpZS5zZXNzaW9uLnNldENvb2tpZSgifnRpZCIgKyBwYWdlQ250eSArIHBhZ2VM YW5nICsgcGFnZVNlZyArIHBhZ2VDUywgcVRhYik7IC8vIHF1ZXJ5c3RyaW5nIGlu dA0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZm9yIChuID0gMDsgbiA8IG1f bWVudUJhci5sZW5ndGg7IG4rKykgew0KICAgICAgICAgICAgICAgIGlmIChtX21l bnVCYXJbbl0uSWQuaW5kZXhPZihxVGFiKSAhPSAtMSkgew0KICAgICAgICAgICAg ICAgICAgICBwYWdlVGFiID0gbjsNCiAgICAgICAgICAgICAgICAgICAgbV9zdG9y bUNvb2tpZS5zZXNzaW9uLnNldENvb2tpZSgifnRpZCIgKyBwYWdlQ250eSArIHBh Z2VMYW5nICsgcGFnZVNlZyArIHBhZ2VDUywgbV9tZW51QmFyW25dLklkKTsgLy8g cXVlcnlzdHJpbmcgc3RyaW5nDQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAg ICAgfQ0KICAgICAgICB9DQogICAgICAgIGVsc2Ugew0KICAgICAgICAgICAgLy8g VGFiIHNldCBieSBJbmRleCBpbiBDb2RlDQogICAgICAgICAgICBpZiAoIWlzTmFO KHBhcnNlSW50KG1fcGFnZVRhYikpKSB7DQogICAgICAgICAgICAgICAgaWYgKG1f cGFnZVRhYiA8PSBtYXhUYWIpIHsNCiAgICAgICAgICAgICAgICAgICAgcGFnZVRh YiA9IHBhcnNlSW50KG1fcGFnZVRhYik7DQogICAgICAgICAgICAgICAgfQ0KICAg ICAgICAgICAgfQ0KICAgICAgICAgICAgLy8gVGFiIHNldCBieSBTdHJpbmcgaW4g Q29kZQ0KICAgICAgICAgICAgZm9yIChuID0gMDsgbiA8IG1fbWVudUJhci5sZW5n dGg7IG4rKykgew0KICAgICAgICAgICAgICAgIGlmIChtX3BhZ2VUYWIgPT0gbV9t ZW51QmFyW25dLlRleHQgfHwgKChtX3BhZ2VUYWIgKyAiTWVudSIpID09IG1fbWVu dUJhcltuXS5JZCkpIHsNCiAgICAgICAgICAgICAgICAgICAgcGFnZVRhYiA9IG47 DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQog ICAgICAgIGlmIChwYWdlVGFiID09IG51bGwpIHsNCiAgICAgICAgICAgIG1fcGFn ZVRhYiA9IDA7DQogICAgICAgIH0NCiAgICAgICAgZWxzZSB7DQogICAgICAgICAg ICBtX3BhZ2VUYWIgPSBwYWdlVGFiOw0KICAgICAgICB9DQogICAgICAgIGRvY3Vt ZW50LndyaXRlKCI8dGFibGUgY2VsbHNwYWNpbmc9XCIwXCIgY2VsbHBhZGRpbmc9 XCIwXCIgYm9yZGVyPVwiMFwiIHdpZHRoPVwiMTAwJVwiPjx0cj4iKTsNCiAgICAg ICAgcmVuZGVyUHJpbWFyeVRhYlN0cmlwKCk7DQogICAgICAgIGRvY3VtZW50Lndy aXRlKCI8dGQgd2lkdGg9XCIxMDAlXCIgdmFsaWduPVwiYm90dG9tXCI+PGRpdiBj bGFzcz1cInRhYnNwYWNlclwiIC8+PC90ZD4iKTsNCiAgICAgICAgZG9jdW1lbnQu d3JpdGUoIjwvdHI+PC90YWJsZT48L3RkPiIpOw0KICAgIH0NCiAgICANCgkNCgkJ ZG9jdW1lbnQud3JpdGUoIjx0ZCBjbGFzcz1cIm1oc2VhcmNoY2VsbFwiIHZhbGln bj1cIm1pZGRsZVwiPiIpOw0KCQlpZiAodHlwZW9mIChtX3N1cHJlc3NTZWFyY2gp ID09ICJ1bmRlZmluZWQiIHx8IG1fc3VwcmVzc1NlYXJjaCA9PSBmYWxzZSkgew0K CQkJZG9jdW1lbnQud3JpdGUoIjxkaXYgY2xhc3M9XCJzZWFyY2hjb250YWluZXJc IiBpZD1cInNlYXJjaGNvbnRhaW5lclwiPiIpOw0KCQkJaWYgKG1fc2VhcmNoKSB7 DQoJCQkJaWYgKHdpbmRvdy5sb2NhdGlvbi5wcm90b2NvbCA9PSAiaHR0cHM6Iikg ew0KCQkJCQltX3NlYXJjaCA9IG1fc2VhcmNoLnJlcGxhY2UoL2h0dHA6XC9cL2ku ZGVsbC5jb20vZywgbV9pbWdQZngpOw0KCQkJCX0NCgkJCQlkb2N1bWVudC53cml0 ZSgiPGRpdiBjbGFzcz1cInNlYXJjaGJveF90b3ByaWdodFwiPjxkaXYgY2xhc3M9 XCJzZWFyY2hib3hfdG9wbGVmdFwiPjxkaXYgY2xhc3M9XCJzZWFyY2hib3hfYm90 dG9tcmlnaHRcIj48ZGl2IGNsYXNzPVwic2VhcmNoYm94X2JvdHRvbWxlZnRcIj4i KTsJCQkJDQoJCQkJZG9jdW1lbnQud3JpdGUobV9zZWFyY2gpOwkJCQkNCgkJCQlk b2N1bWVudC53cml0ZSgiPC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+Iik7DQoJCQkJ dmFyIGNhdCA9IGdldFF1ZXJ5VmFyaWFibGUoImNhdCIpOw0KCQkJCXZhciBrd29y ZCA9IGdldFF1ZXJ5VmFyaWFibGUoImsiKTsNCgkJCQlpZiAoY2F0ICE9IG51bGwp IHsNCgkJCQkJdmFyIGlucHV0ID0gZ2V0UmF3T2JqZWN0KCJjYXQiKTsNCgkJCQkJ aWYgKGlucHV0KSB7DQoJCQkJCQlpbnB1dC52YWx1ZSA9IGNhdDsNCgkJCQkJfQ0K CQkJCX0NCgkJCQlpZiAoa3dvcmQgIT0gbnVsbCkgew0KCQkJCQl2YXIga2lucHV0 ID0gZ2V0UmF3T2JqZWN0KCJzZWFyY2hpbnB1dCIpOw0KCQkJCQlpZiAoa2lucHV0 KSB7DQoJCQkJCQl2YXIga3cgPSBEZWNvZGVTZWFyY2goa3dvcmQpOw0KCQkJCQkJ aWYgKGt3ICE9IHVuZGVmaW5lZCAmJiBrdy5sZW5ndGggPiAwKSB7DQoJCQkJCQkJ a2lucHV0LnZhbHVlID0ga3c7DQoJCQkJCQl9DQoJCQkJCX0NCgkJCQl9DQoJCQl9 DQoJCQllbHNlIHsNCgkJCQlyZW5kZXJTZWFyY2hMaW5rcygpOw0KCQkJfQ0KCQkJ dmFyIHNlYXJjaENvbWJvID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhdCIp Ow0KCQkJU2V0U2VhY2hDb21ib1RpdGxlKHNlYXJjaENvbWJvKTsNCgkJCWRvY3Vt ZW50LndyaXRlKCI8L2Rpdj4iKTsNCgkJfQ0KCQlkb2N1bWVudC53cml0ZSgiPC90 ZD48L3RyPiIpOw0KICAgIA0KICAgIGlmICh0eXBlb2YgKG1fbWVudUJhcikgIT0g InVuZGVmaW5lZCIgJiYgbV9tZW51QmFyICYmIG1fbWVudUJhci5sZW5ndGggPiAw ICYmICFtX3NraXBNZW51RGVmICYmIHR5cGVvZiAobV9tZW51QmFyW21fcGFnZVRh Yl0pICE9ICJ1bmRlZmluZWQiICYmIG1fbWVudUJhclttX3BhZ2VUYWJdLk1lbnVJ dGVtcy5sZW5ndGggPiAwKSB7DQogICAgICAgIGRvY3VtZW50LndyaXRlKCI8dHI+ PHRkIGNsYXNzPVwibWhzZWNvbmRhcnluYXZjZWxsXCIgYWxpZ249XCJsZWZ0XCIg dmFsaWduPVwibWlkZGxlXCIgY29sc3Bhbj1cIjJcIj4iKTsNCiAgICAgICAgZG9j dW1lbnQud3JpdGUoIjxkaXYgY2xhc3M9XCJzdWJuYXZjb250YWluZXJcIiBpZD1c InN1Ym5hdlwiPiIpOw0KICAgICAgICBpbmRleCA9IG1fcGFnZVRhYjsNCiAgICAg ICAgZG9jdW1lbnQud3JpdGUocmVuZGVyU2Vjb25kYXJ5VGFiU3RyaXAobV9tZW51 QmFyW2luZGV4XSkpOw0KICAgICAgICBkb2N1bWVudC53cml0ZSgiPC9kaXY+PC90 ZD48L3RyPiIpOw0KICAgIH0NCiAgICBlbHNlIHsNCiAgICAgICAgaWYgKHR5cGVv ZiAobV9tZW51QmFyKSA9PSAidW5kZWZpbmVkIiB8fCAhbV9tZW51QmFyIHx8IG1f bWVudUJhci5sZW5ndGggPiAwICYmICFtX3NraXBNZW51RGVmKSB7DQogICAgICAg ICAgICBkb2N1bWVudC53cml0ZSgiPHRyPjx0ZCBjb2xzcGFuPVwiM1wiPjwvdGQ+ PC90cj4iKTsNCiAgICAgICAgfQ0KICAgIH0NCg0KICAgIGlmIChtX2NydW1icyAh PSBudWxsIHx8IG1fbWRhICE9IG51bGwgfHwgbV9tZW51QmFyICE9IG51bGwpIHsN CiAgICAgICAgZG9jdW1lbnQud3JpdGUoIjx0cj48dGQgY2xhc3M9XCJtaGNydW1i Y2VsbFwiIHZhbGlnbj1cIm1pZGRsZVwiICIpOw0KICAgICAgICBpZiAodHlwZW9m IChtX21lbnVCYXIpICE9ICJ1bmRlZmluZWQiICYmIG1fbWVudUJhciAmJiBtX21l bnVCYXIubGVuZ3RoID4gMCAmJiAhbV9za2lwTWVudURlZikgew0KICAgICAgICAg ICAgZG9jdW1lbnQud3JpdGUoIiBjb2xzcGFuPVwiM1wiIik7DQogICAgICAgIH0N CiAgICAgICAgZWxzZSB7DQogICAgICAgICAgICBkb2N1bWVudC53cml0ZSgiIGNv bHNwYW49XCIxXCIgd2lkdGg9XCIiICsgKG1fbWFzdGhlYWRXaWR0aE5leHRHZW4g LSA2MSkgKyAiXCIiKTsNCiAgICAgICAgfQ0KICAgICAgICBkb2N1bWVudC53cml0 ZSgiPjx0YWJsZSBjZWxscGFkZGluZz1cIjBcIiBjZWxsc3BhY2luZz1cIjBcIiB3 aWR0aD1cIjEwMCVcIj48dHI+PHRkPiIpOw0KICAgICAgICBpZiAobV9jcnVtYnMp IHsNCiAgICAgICAgICAgIGlmIChtX2lzUnRsKSB7DQogICAgICAgICAgICAgICAg cmVuZGVyTWFzdGhlYWRDcnVtYnNSdGwoKTsNCiAgICAgICAgICAgIH0NCiAgICAg ICAgICAgIGVsc2Ugew0KICAgICAgICAgICAgICAgIHJlbmRlck1hc3RoZWFkQ3J1 bWJzKCk7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgICAgZG9jdW1l bnQud3JpdGUoIjwvdGQ+PHRkPjxpbWcgc3JjPVwiIiArIG1faW1nUGZ4ICsgIi9p bWFnZXMvZ2xvYmFsL2dlbmVyYWwvc3BhY2VyLmdpZlwiIGFsdD1cIlwiIGJvcmRl cj1cIjBcIiB3aWR0aD1cIjVcIiBoZWlnaHQ9XCIxXCIgLz48L3RkPjx0ZCBhbGln bj1cInJpZ2h0XCI+Iik7DQogICAgICAgIGlmIChtX21kYSAmJiAhKG1faXNSdGwp KSB7DQogICAgICAgICAgICBkb2N1bWVudC53cml0ZSgiPGRpdiBjbGFzcz1cIm1k YWJhcmNvbnRhaW5lclwiIGlkPVwibWRhYmFyXCI+Iik7DQogICAgICAgICAgICBk b2N1bWVudC53cml0ZShtX21kYSk7DQogICAgICAgICAgICBkb2N1bWVudC53cml0 ZSgiPC9kaXY+Iik7DQogICAgICAgIH0NCiAgICAgICAgaWYgKG1fbWRhICYmIG1f aXNSdGwpIHsNCiAgICAgICAgICAgIGRvY3VtZW50LndyaXRlKCI8ZGl2IGNsYXNz PVwibWRhYmFyY29udGFpbmVyXCIgaWQ9XCJtZGFiYXJcIj4iKTsNCiAgICAgICAg ICAgIGRvY3VtZW50LndyaXRlKG1fbWRhKTsNCiAgICAgICAgICAgIGRvY3VtZW50 LndyaXRlKCI8L2Rpdj4iKTsNCiAgICAgICAgfQ0KICAgICAgICBkb2N1bWVudC53 cml0ZSgiPC90ZD48L3RyPiIpOw0KICAgIH0NCiAgICBlbHNlIHsNCiAgICAgICAg ZG9jdW1lbnQud3JpdGUoIjx0cj48dGQ+PGltZyBzcmM9XCIiICsgbV9pbWdQZngg KyAiL2ltYWdlcy9nbG9iYWwvZ2VuZXJhbC9zcGFjZXIuZ2lmXCIgYWx0PVwiXCIg Ym9yZGVyPVwiMFwiIHdpZHRoPVwiMVwiIGhlaWdodD1cIjEwXCIgLz48L3RkPjwv dHI+Iik7DQogICAgfQ0KICAgIGRvY3VtZW50LndyaXRlKCI8L3RhYmxlPjwvdGQ+ PC90cj48L3RhYmxlPjwvZGl2PiIpOw0KICAgIGlmIChtX3BubGlua3MgJiYgbV9z dWJOYXZMaW5rc0Rpc3BsYXkgJiYgKCFtX3N1cHJlc3NTdWJOYXYpKSB7DQogICAg ICAgIGRvY3VtZW50LndyaXRlKCI8ZGl2IGNsYXNzPVwidGVydGlhcnluYXZjb250 YWluZXJcIj48dGFibGUgY2xhc3M9XCJjZW50ZXJ0YWJsZVwiIGNlbGxwYWRkaW5n PVwiMFwiIGNlbGxzcGFjaW5nPVwiMFwiIHdpZHRoPVwiIiArIG1fbWFzdGhlYWRX aWR0aE5leHRHZW4gKyAiXCI+PHRyPjx0ZCB2YWxpZ249XCJtaWRkbGVcIj4iKTsN CiAgICAgICAgZG9jdW1lbnQud3JpdGUoIjxzcGFuIGlkPVwicHNpbmZvXCIgY2xh c3M9XCJwc2luZm9cIj48L3NwYW4+Iik7DQogICAgICAgIGRvY3VtZW50LndyaXRl KCI8L3RkPjx0ZCB2YWxpZ249XCJib3R0b21cIj4iKTsNCiAgICAgICAgcmVuZGVy U3ViTmF2TGlua3MoKTsNCiAgICAgICAgZG9jdW1lbnQud3JpdGUoIjwvdGQ+PC90 cj48L3RhYmxlPjwvZGl2PiIpOw0KICAgIH0NCiAgICBkb2N1bWVudC53cml0ZSgi PGEgbmFtZT1cInNraXBNSFwiPjwvYT4iKTsNCiAgICBkb2N1bWVudC53cml0ZWxu KCI8IS0tIGVuZCBtYXN0aGVhZCAtLT4iKTsNCiAgICB2YXIgbV9uZXh0R2VuQkdD b2xvciA9IChtX2lzQWxpZW53YXJlVGhlbWU/IiMwQTBBMEEiOiIjRkZGRkZGIik7 DQogICAgJGooZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCkgeyBzZXROZXh0R2Vu QkdDb2xvcihtX25leHRHZW5CR0NvbG9yKTsgfSk7DQogICAgYmluZE1hc3RIZWFk Rmx5b3V0cygpOw0KICAgICRqKGRvY3VtZW50KS5yZWFkeShhbGlnbk1hc3RoZWFk KTsNCn0NCg0KZnVuY3Rpb24gc2V0TmV4dEdlbkJHQ29sb3IoY29sb3IpIHsNCiAg ICAkaigiYm9keS5ib2R5TmV4dEdlbiIpLmNzcygiYmFja2dyb3VuZC1jb2xvciIs IGNvbG9yKTsNCn0NCg0KZnVuY3Rpb24gYWxpZ25NYXN0aGVhZCgpIHsNCiAgICBp ZiAoJGooIiNtYWluY29udGVudGNudCIpLndpZHRoKCkgPiBTY3JlZW4uV2lkdGgp IHsNCiAgICAgICAgaWYgKFNjcmVlbi5XaWR0aCA+IG1fbWFzdGhlYWRXaWR0aE5l eHRHZW4pIHsNCiAgICAgICAgICAgIHZhciBtZ24gPSAoU2NyZWVuLldpZHRoIC0g bV9tYXN0aGVhZFdpZHRoTmV4dEdlbikgLyAyOw0KICAgICAgICAgICAgJGooIi5j ZW50ZXJ0YWJsZSIpLmNzcygibWFyZ2luLWxlZnQiLCBtZ24pOw0KICAgICAgICAg ICAgJGooIi5jZW50ZXJ0YWJsZSIpLmNzcygibWFyZ2luLXJpZ2h0IiwgbWduKTsN CiAgICAgICAgfQ0KICAgICAgICBlbHNlIHsNCiAgICAgICAgICAgICRqKCIuY2Vu dGVydGFibGUiKS5jc3MoIm1hcmdpbi1sZWZ0IiwgIjEwcHgiKTsNCiAgICAgICAg ICAgICRqKCIuY2VudGVydGFibGUiKS5jc3MoIm1hcmdpbi1yaWdodCIsICIxMHB4 Iik7DQogICAgICAgIH0NCiAgICB9DQp9DQoNCmZ1bmN0aW9uIHdyaXRlQWxpZW53 YXJlTUgocGhvbmVUaXRsZSwgcGhvbmVNc2csIHBob25lVGFyaWZmLCBzZWdtZW50 VGl0bGUsIGhhc0xvY2FsZSwgbG9nb0xpbmssIHBubXNnKSB7DQogICAgd3JpdGVN SChwaG9uZVRpdGxlLCBwaG9uZU1zZywgcGhvbmVUYXJpZmYsIHNlZ21lbnRUaXRs ZSwgaGFzTG9jYWxlLCBsb2dvTGluaywgcG5tc2csIGZhbHNlKTsNCn0NCg0KLy8g c2V0IHRoZSB0aXRsZSBvZiB0aGUgc2VhcmNoIGNvbWJvDQpmdW5jdGlvbiBTZXRT ZWFjaENvbWJvVGl0bGUoU2VsZWN0T2JqKSB7DQogICAgaWYgKFNlbGVjdE9iaikg ew0KICAgICAgICBpZiAoU2VsZWN0T2JqLnNlbGVjdGVkSW5kZXggPiAtMSkgew0K ICAgICAgICAgICAgaWYgKFNlbGVjdE9iai5vcHRpb25zW1NlbGVjdE9iai5zZWxl Y3RlZEluZGV4XS52YWx1ZSAhPSAiIikgew0KICAgICAgICAgICAgICAgIHZhciBz ZWFyY2hDb21ibyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYXQiKTsNCiAg ICAgICAgICAgICAgICBpZiAoc2VhcmNoQ29tYm8pIHsNCiAgICAgICAgICAgICAg ICAgICAgc2VhcmNoQ29tYm8udGl0bGUgPSBTZWxlY3RPYmoub3B0aW9uc1tTZWxl Y3RPYmouc2VsZWN0ZWRJbmRleF0udGV4dDsNCiAgICAgICAgICAgICAgICB9DQog ICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICB9DQp9DQpmdW5jdGlvbiByZW5k ZXJCdXlPbmxpbmUoKSB7DQogICAgaWYgKG1fcGhvbmVUaXRsZSB8fCBtX3Bob25l TXNnKSB7DQogICAgICAgIGlmIChtX2lzUnRsKSB7DQogICAgICAgICAgICBidXlP bmxpbmVBbGlnbiA9ICJsZWZ0IjsNCiAgICAgICAgfQ0KICAgICAgICBlbHNlIHsN CiAgICAgICAgICAgIGJ1eU9ubGluZUFsaWduID0gInJpZ2h0IjsNCiAgICAgICAg fQ0KICAgICAgICBkb2N1bWVudC53cml0ZSgiPHNwYW4gY2xhc3M9XCJtZXNzYWdl X2J1eW9ubGluZVwiPiIpOw0KICAgICAgICBpZiAobV9waG9uZVRpdGxlKSB7DQog ICAgICAgICAgICBkb2N1bWVudC53cml0ZSgiPHNwYW4gc3R5bGU9XCJwYWRkaW5n LSIgKyBidXlPbmxpbmVBbGlnbiArICI6M3B4XCI+Iik7DQogICAgICAgICAgICBk b2N1bWVudC53cml0ZShtX3Bob25lVGl0bGUpOw0KICAgICAgICAgICAgZG9jdW1l bnQud3JpdGUoIjwvc3Bhbj4iKTsNCiAgICAgICAgfQ0KICAgICAgICBpZiAobV9w aG9uZU1zZykgew0KICAgICAgICAgICAgZG9jdW1lbnQud3JpdGUoIjxzcGFuIHN0 eWxlPVwicGFkZGluZy0iICsgYnV5T25saW5lQWxpZ24gKyAiOjNweFwiPiIpOw0K ICAgICAgICAgICAgZG9jdW1lbnQud3JpdGUobV9waG9uZU1zZyk7DQogICAgICAg ICAgICBkb2N1bWVudC53cml0ZSgiPC9zcGFuPiIpOw0KICAgICAgICB9DQogICAg ICAgIGlmIChtX3Bob25lVGFyaWZmKSB7DQogICAgICAgICAgICBkb2N1bWVudC53 cml0ZSgiPHNwYW4+Iik7DQogICAgICAgICAgICBkb2N1bWVudC53cml0ZSgiPHNw YW4gY2xhc3M9XCJtaFRleHROZXdUcmZcIj4iICsgbV9waG9uZVRhcmlmZiArICI8 L3NwYW4+Iik7DQogICAgICAgICAgICBkb2N1bWVudC53cml0ZSgiPC9zcGFuPiIp Ow0KICAgICAgICB9DQogICAgICAgIGRvY3VtZW50LndyaXRlKCI8L3NwYW4+Iik7 DQogICAgfQ0KfQ0KdmFyIGlzQ1NTID0gZmFsc2U7DQp2YXIgaXNXM0MgPSBmYWxz ZTsNCnZhciBpc0lFNCA9IGZhbHNlOw0KdmFyIGlzTk40ID0gZmFsc2U7DQp2YXIg aXNJRTYgPSBmYWxzZTsNCnZhciBpc0dlY2tvID0gZmFsc2U7DQp2YXIgaXNPcGVy YSA9IGZhbHNlOw0KdmFyIGlzREhUTUwgPSBmYWxzZTsNCnZhciBpc1NhZmFyaSA9 IGZhbHNlOw0KdmFyIHN1cHByZXNzTWVudXMgPSBmYWxzZTsNCnZhciBtX2FuY2hv ckNsaWNrZWQgPSBmYWxzZTsNCnZhciBwYWdlU2VnID0gZ2V0Q29va2llS2V5VmFs dWUoIiBsd3AiLCAicyIpOw0KdmFyIHBhZ2VMYW5nID0gZ2V0Q29va2llS2V5VmFs dWUoIiBsd3AiLCAibCIpOw0KdmFyIHBhZ2VDbnR5ID0gZ2V0Q29va2llS2V5VmFs dWUoIiBsd3AiLCAiYyIpOw0KdmFyIHBhZ2VDUyA9IGdldENvb2tpZUtleVZhbHVl KCIgbHdwIiwgImNzIik7DQppZiAocGFnZUNTICE9IG51bGwgJiYgcGFnZUNTLmxl bmd0aCA+IDApIHsNCiAgICBwYWdlQ1MgPSBwYWdlQ1MudG9Mb3dlckNhc2UoKTsN Cn0NCmZ1bmN0aW9uIGhhc2hUYWJVcmwodXJsKSB7DQogICAgaWYgKHVybCA9PSBu dWxsKSB7DQogICAgICAgIHJldHVybiAiIjsNCiAgICB9DQogICAgdXJsID0gdXJs LnRvTG93ZXJDYXNlKCk7DQogICAgdmFyIHVybFBhcnRzID0gdXJsLnNwbGl0KCI/ Iik7DQogICAgaWYgKHVybFBhcnRzLmxlbmd0aCA9PSAwKSB7DQogICAgICAgIHJl dHVybiAiIjsNCiAgICB9DQogICAgdmFyIGhhc2ggPSB1cmxQYXJ0c1swXTsNCiAg ICBpZiAodXJsUGFydHMubGVuZ3RoID09IDEpIHsNCiAgICAgICAgcmV0dXJuIGhh c2g7DQogICAgfQ0KICAgIHZhciBxUGFydHMgPSB1cmxQYXJ0c1sxXS5zcGxpdCgi JiIpOw0KICAgIHZhciBpZ25vcmUgPSBuZXcgQXJyYXkoImMiLCAibCIsICJzIiwg ImNzIik7DQogICAgZm9yIChpID0gMDsgaSA8IHFQYXJ0cy5sZW5ndGg7IGkrKykg ew0KICAgICAgICB2YXIgcVBhaXIgPSBxUGFydHNbaV0uc3BsaXQoIj0iKTsNCiAg ICAgICAgaWYgKHFQYWlyLmxlbmd0aCA+IDEpIHsNCiAgICAgICAgICAgIHZhciBz a2lwID0gZmFsc2U7DQogICAgICAgICAgICBpZiAocVBhaXJbMF0ubGVuZ3RoID4g MSAmJiBxUGFpclswXS5zdWJzdHJpbmcoMCwgMSkgPT0gIn4iKSB7DQogICAgICAg ICAgICAgICAgc2tpcCA9IHRydWU7DQogICAgICAgICAgICB9DQogICAgICAgICAg ICBlbHNlIHsNCiAgICAgICAgICAgICAgICBmb3IgKGogPSAwOyBqIDwgaWdub3Jl Lmxlbmd0aDsgaisrKSB7DQogICAgICAgICAgICAgICAgICAgIGlmIChxUGFpclsw XSA9PSBpZ25vcmVbal0pIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHNraXAg PSB0cnVlOw0KICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAg ICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9 DQogICAgICAgICAgICBpZiAoIXNraXApIHsNCiAgICAgICAgICAgICAgICBoYXNo ICs9IHFQYXJ0c1tpXTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgIH0N CiAgICByZXR1cm4gaGFzaDsNCn0NCg0KZnVuY3Rpb24gYXV0b2NvbmZpZygpIHsN CiAgICBpZiAoZG9jdW1lbnQgJiYgZG9jdW1lbnQuaW1hZ2VzKSB7DQogICAgICAg IGlzQ1NTID0gKGRvY3VtZW50LmJvZHkgJiYgZG9jdW1lbnQuYm9keS5zdHlsZSkg PyB0cnVlIDogZmFsc2U7DQogICAgICAgIGlzVzNDID0gKGlzQ1NTICYmIGRvY3Vt ZW50LmdldEVsZW1lbnRCeUlkKSA/IHRydWUgOiBmYWxzZTsNCiAgICAgICAgaXNJ RTQgPSAoaXNDU1MgJiYgZG9jdW1lbnQuYWxsICYmIHJlYWRJRVZlcigpID49IDQu MCkgPyB0cnVlIDogZmFsc2U7DQogICAgICAgIGlzTk40ID0gKGRvY3VtZW50Lmxh eWVycykgPyB0cnVlIDogZmFsc2U7DQogICAgICAgIGlzR2Vja28gPSAoaXNDU1Mg JiYgbmF2aWdhdG9yICYmIG5hdmlnYXRvci5wcm9kdWN0ICYmIG5hdmlnYXRvci5w cm9kdWN0ID09ICJHZWNrbyIpOw0KICAgICAgICBpc09wZXJhID0gKGlzQ1NTICYm IG5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZigiT3BlcmEiKSAhPSAtMSk7DQog ICAgICAgIGlzU2FmYXJpID0gKGlzQ1NTICYmIG5hdmlnYXRvci51c2VyQWdlbnQu aW5kZXhPZigiU2FmYXJpIikgIT0gLTEpOw0KICAgICAgICBpc0lFNkNTUyA9IChk b2N1bWVudC5jb21wYXRNb2RlICYmIGRvY3VtZW50LmNvbXBhdE1vZGUuaW5kZXhP ZigiQ1NTMSIpID49IDApID8gdHJ1ZSA6IGZhbHNlOw0KICAgICAgICBpc0lFNiA9 IChpc0lFNkNTUyAmJiByZWFkSUVWZXIoKSA+PSA2LjApOw0KICAgICAgICBpc0RI VE1MID0gaXNDU1MgJiYgKGlzSUU0IHx8IGlzR2Vja28gfHwgaXNPcGVyYSk7DQog ICAgICAgIGlmIChzdXBwcmVzc01lbnVzKSB7DQogICAgICAgICAgICBpc0RIVE1M ID0gZmFsc2U7DQogICAgICAgIH0NCiAgICAgICAgZWxzZSBpZiAoaXNPcGVyYSAm JiByZWFkT3BlcmFWZXIoKSA8IDcpIHsNCiAgICAgICAgICAgIGlzREhUTUwgPSBm YWxzZTsNCiAgICAgICAgfQ0KICAgICAgICBlbHNlIGlmIChpc0dlY2tvICYmIG5h dmlnYXRvci5wcm9kdWN0U3ViIDw9IDIwMDExMDIyKSB7DQogICAgICAgICAgICBp c0RIVE1MID0gZmFsc2U7DQogICAgICAgIH0NCiAgICAgICAgZWxzZSBpZiAoaXNH ZWNrbyAmJiBuYXZpZ2F0b3IucHJvZHVjdFN1YiA9PSAyMDAzMDEwNykgew0KICAg ICAgICAgICAgdmFyIHggPSBuYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoIkFw cGxlV2ViS2l0Iik7DQogICAgICAgICAgICBpZiAoeCA+IC0xKSB7DQogICAgICAg ICAgICAgICAgaXNESFRNTCA9IChuYXZpZ2F0b3IudXNlckFnZW50LnN1YnN0cmlu Zyh4ICsgMTIsIHggKyAxNSkpID4gMzAwOw0KICAgICAgICAgICAgfQ0KICAgICAg ICAgICAgZWxzZSB7DQogICAgICAgICAgICAgICAgaXNESFRNTCA9IGZhbHNlOw0K ICAgICAgICAgICAgfQ0KDQogICAgICAgIH0NCiAgICAgICAgbV9zdG9ybUNvb2tp ZSA9IG5ldyBTdG9ybUNvb2tpZSgpOw0KICAgICAgICBtX2NsaWVudFZhcnMgPSBu ZXcgQ2xpZW50VmFycygpOw0KICAgIH0NCn0NCg0KZnVuY3Rpb24gcmVhZElFVmVy KCkgew0KICAgIHZhciBhZ2VudCA9IG5hdmlnYXRvci51c2VyQWdlbnQ7DQogICAg dmFyIG9mZnNldCA9IGFnZW50LmluZGV4T2YoIk1TSUUiKTsNCiAgICBpZiAob2Zm c2V0IDwgMCkgew0KICAgICAgICByZXR1cm4gMDsNCiAgICB9DQogICAgcmV0dXJu IHBhcnNlRmxvYXQoYWdlbnQuc3Vic3RyaW5nKG9mZnNldCArIDUsIGFnZW50Lmlu ZGV4T2YoIjsiLCBvZmZzZXQpKSk7DQp9DQpmdW5jdGlvbiBCYW5kV2lkdGhSZWRp cih1cmwpIHsNCiAgICB2YXIgYldpZHRoID0gQmFuZHdpZHRoKCk7DQogICAgaWYg KGJXaWR0aCA9PSAiTW9kZW0iKSB7DQogICAgICAgIGRvY3VtZW50LmxvY2F0aW9u LmhyZWYgPSB1cmw7DQogICAgfQ0KfQ0KZnVuY3Rpb24gcmVhZE9wZXJhVmVyKCkg ew0KICAgIHZhciBhZ2VudCA9IG5hdmlnYXRvci51c2VyQWdlbnQ7DQogICAgdmFy IG9mZnNldCA9IGFnZW50LmluZGV4T2YoIk9wZXJhIik7DQogICAgaWYgKG9mZnNl dCA8IDApIHsNCiAgICAgICAgcmV0dXJuIDA7DQogICAgfQ0KICAgIHJldHVybiBw YXJzZUZsb2F0KGFnZW50LnN1YnN0cmluZyhvZmZzZXQgKyA2KSk7DQp9DQpmdW5j dGlvbiByZW5kZXJQcmltYXJ5VGFiU3RyaXAoKSB7DQogICAgdmFyIG1lbnVIZWFk ZXJJRDsNCiAgICBpZiAoaXNJRTYpIHsNCiAgICAgICAgYm9keVRhZy5zdHlsZS5i ZWhhdmlvciA9ICJ1cmwoI2RlZmF1bHQjY2xpZW50Q2FwcykiOw0KICAgICAgICBt X2NvbG9yRGVwdGggPSBib2R5VGFnLmNvbG9yRGVwdGg7DQogICAgfQ0KICAgIHZh ciBjc3NQcmVmaXggPSAiaW5hY3RpdmV0YWIiOw0KICAgIGZvciAobiA9IDA7IG4g PCBtX21lbnVCYXIubGVuZ3RoOyBuKyspIHsNCiAgICAgICAgaWYgKG4gPT0gbV9w YWdlVGFiKSB7DQogICAgICAgICAgICBjc3NQcmVmaXggPSAiYWN0aXZldGFiIjsN CiAgICAgICAgfQ0KICAgICAgICB2YXIgaW5kZXggPSBuOw0KICAgICAgICBpZiAo KG1fbWVudUJhcltuXS5IcmVmICE9IG51bGwgJiYgbV9tZW51QmFyW25dLkhyZWYu bGVuZ3RoID4gMCkpIHsNCiAgICAgICAgICAgIHZhciBpdGVtID0gbV9tZW51QmFy W25dOw0KICAgICAgICAgICAgZG9jdW1lbnQud3JpdGUoIjx0ZD48ZGl2IGlkPVwi IiArIG1fbWVudUJhcltuXS5JZCArICJcIiBjbGFzcz1cIiIgKyBjc3NQcmVmaXgg KyAiXCIgaWQ9XCIiICsgbV9tZW51QmFyW25dLklkICsgIlwiIG5hbWU9XCJtaF90 YWJzZWxlY3RvclwiPiIpOw0KICAgICAgICAgICAgZG9jdW1lbnQud3JpdGUoIjxk aXYgb25jbGljaz1cIlN3YXBUYWIoICciICsgbV9tZW51QmFyW2luZGV4XS5JZCAr ICInLCAnIiArIGNyZWF0ZU5hdkxpbmsobV9tZW51QmFyW2luZGV4XS5IcmVmLCBu KSArICInLCAiICsgaW5kZXggKyAiIClcIiBjbGFzcz1cIiIgKyBjc3NQcmVmaXgg KyAiY29udGVudFwiIGlkPVwiIiArIG1fbWVudUJhcltuXS5JZCArICJjb250ZW50 XCIgYWxpZ249XCJjZW50ZXJcIiBub3dyYXA9XCIxXCI+Iik7DQogICAgICAgICAg ICBkb2N1bWVudC53cml0ZShtX21lbnVCYXJbbl0uVGV4dCk7DQogICAgICAgICAg ICBkb2N1bWVudC53cml0ZSgiPC9kaXY+PC9kaXY+PC90ZD4iKTsNCiAgICAgICAg fQ0KICAgICAgICBlbHNlIHsNCiAgICAgICAgICAgIGRvY3VtZW50LndyaXRlKCI8 dGQ+PGRpdiBvbmNsaWNrPVwic3dhcFNlY29uZGFyeVRhYlN0cmlwKCciICsgbV9t ZW51QmFyW25dLklkICsgIicsJyIgKyBpbmRleCArICInKVwiIGNsYXNzPVwiIiAr IGNzc1ByZWZpeCArICJcIiBpZD1cIiIgKyBtX21lbnVCYXJbbl0uSWQgKyAiXCIg bmFtZT1cIm1oX3RhYnNlbGVjdG9yMlwiPiIpOw0KICAgICAgICAgICAgZG9jdW1l bnQud3JpdGUoIjxkaXYgY2xhc3M9XCIiICsgY3NzUHJlZml4ICsgImNvbnRlbnRc IiBpZD1cIiIgKyBtX21lbnVCYXJbbl0uSWQgKyAiY29udGVudFwiIGFsaWduPVwi Y2VudGVyXCIgc3R5bGU9XCJjdXJzb3I6cG9pbnRlclwiIG5vd3JhcD1cIjFcIj4i KTsNCiAgICAgICAgICAgIGRvY3VtZW50LndyaXRlKG1fbWVudUJhcltuXS5UZXh0 KTsNCiAgICAgICAgICAgIGRvY3VtZW50LndyaXRlKCI8L2Rpdj48L2Rpdj48L3Rk PiIpOw0KICAgICAgICB9DQogICAgICAgIGlmIChuID09IG1fcGFnZVRhYikgew0K ICAgICAgICAgICAgbV9hY3RpdmVUYWIgPSBnZXRSYXdPYmplY3QobV9tZW51QmFy W21fcGFnZVRhYl0uSWQpOw0KICAgICAgICB9DQogICAgICAgIGNzc1ByZWZpeCA9 ICJpbmFjdGl2ZXRhYiI7DQogICAgfQ0KICAgIGlmIChtX3BiYXJUYWJFbmFibGVk ICYmICFtX3RhYk5hdikgew0KICAgICAgICBpZiAoaXNTYWZhcmkgJiYgbV9teUFj Y291bnRMaW5rKSB7DQogICAgICAgICAgICBkb2N1bWVudC53cml0ZSgiPHRkIHdp ZHRoPVwiNHB4XCIgdkFsaWduPVwidG9wXCIgPiIpOw0KICAgICAgICAgICAgZG9j dW1lbnQud3JpdGUoIjxkaXYgaWQ9XCJwYmFyVGFibGVmdFwiIGNsYXNzPVwiIiAr IGNzc1ByZWZpeCArICJsZWZ0XCI+PC9kaXY+Iik7DQogICAgICAgICAgICBkb2N1 bWVudC53cml0ZSgiPC90ZD4iKTsNCiAgICAgICAgICAgIGRvY3VtZW50LndyaXRl KCI8dGQ+PGRpdiBvbmNsaWNrPVwid2luZG93LmxvY2F0aW9uPSciICsgbV9teUFj Y291bnRMaW5rICsgIic7XCIgY2xhc3M9XCIiICsgY3NzUHJlZml4ICsgIlwiIGlk PVwicGJhclRhYlwiIG5hbWU9XCJtaF90YWJzZWxlY3RvcjJcIj4iKTsNCiAgICAg ICAgICAgIGRvY3VtZW50LndyaXRlKCI8ZGl2IGNsYXNzPVwiIiArIGNzc1ByZWZp eCArICJjb250ZW50XCIgaWQ9XCJwYmFyVGFiY29udGVudFwiIGFsaWduPVwiY2Vu dGVyXCIgc3R5bGU9XCJjdXJzb3I6cG9pbnRlclwiIG5vd3JhcD1cIjFcIj4iKTsN CiAgICAgICAgICAgIGRvY3VtZW50LndyaXRlKG1fcGJhclRhYlRpdGxlKTsNCiAg ICAgICAgICAgIGRvY3VtZW50LndyaXRlKCI8L2Rpdj48L2Rpdj48L3RkPiIpOw0K ICAgICAgICB9DQogICAgICAgIGlmICghaXNTYWZhcmkpIHsNCiAgICAgICAgICAg IHZhciBsaW5rID0gKHdpbmRvdy5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIn50aWQi KSA9PSAtMSkgPyAod2luZG93LmxvY2F0aW9uLmhyZWYgKyAiJn50aWQ9IiArIG1f bWVudUJhci5sZW5ndGgpIDogd2luZG93LmxvY2F0aW9uLmhyZWYucmVwbGFjZSgi fnRpZD0iICsgZ2V0UXVlcnlWYXJpYWJsZSgifnRpZCIpLCAifnRpZD0iICsgKG1f bWVudUJhci5sZW5ndGgpKTsNCiAgICAgICAgICAgIGRvY3VtZW50LndyaXRlKCI8 dGQgd2lkdGg9XCI0cHhcIiB2QWxpZ249XCJ0b3BcIiA+Iik7DQogICAgICAgICAg ICBkb2N1bWVudC53cml0ZSgiPGRpdiBpZD1cInBiYXJUYWJsZWZ0XCIgY2xhc3M9 XCIiICsgY3NzUHJlZml4ICsgImxlZnRcIj48L2Rpdj4iKTsNCiAgICAgICAgICAg IGRvY3VtZW50LndyaXRlKCI8L3RkPiIpOw0KICAgICAgICAgICAgZG9jdW1lbnQu d3JpdGUoIjx0ZD48ZGl2IG9uY2xpY2s9XCJyZW5kZXJQYmFyVGFiTmF2KCdwYmFy VGFiJylcIiBjbGFzcz1cIiIgKyBjc3NQcmVmaXggKyAiXCIgaWQ9XCJwYmFyVGFi XCIgbmFtZT1cIm1oX3RhYnNlbGVjdG9yMlwiPiIpOw0KICAgICAgICAgICAgZG9j dW1lbnQud3JpdGUoIjxkaXYgY2xhc3M9XCIiICsgY3NzUHJlZml4ICsgImNvbnRl bnRcIiBpZD1cInBiYXJUYWJjb250ZW50XCIgYWxpZ249XCJjZW50ZXJcIiBzdHls ZT1cImN1cnNvcjpwb2ludGVyXCIgbm93cmFwPVwiMVwiPiIpOw0KICAgICAgICAg ICAgZG9jdW1lbnQud3JpdGUobV9wYmFyVGFiVGl0bGUpOw0KICAgICAgICAgICAg ZG9jdW1lbnQud3JpdGUoIjwvZGl2PjwvZGl2PjwvdGQ+Iik7DQogICAgICAgIH0N CiAgICB9DQp9DQoNCmZ1bmN0aW9uIGNyZWF0ZU5hdkxpbmsodXJsLCB0YWIpIHsN CiAgICB2YXIgbGluayA9IG51bGw7DQogICAgaWYgKHVybCAhPSBudWxsKSB7DQog ICAgICAgIGxpbmsgPSB1cmw7DQogICAgfQ0KICAgIHJldHVybiBsaW5rOw0KfQ0K ZnVuY3Rpb24gcmVuZGVyU2VhcmNoTGlua3MoKSB7DQogICAgaWYgKG1fc2VhcmNo TGlua3MpIHsNCiAgICAgICAgZm9yICh2YXIgbiA9IDA7IG4gPCBtX3NlYXJjaExp bmtzLmxlbmd0aDsgbisrKSB7DQogICAgICAgICAgICBpZiAobiA+IDApIHsNCiAg ICAgICAgICAgICAgICBkb2N1bWVudC53cml0ZSgiPHNwYW4gY2xhc3M9XCJtaFNw YWNlXCI+fDwvc3Bhbj4iKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHZh ciBocmVmID0gbV9zZWFyY2hMaW5rc1tuXS5IcmVmOw0KICAgICAgICAgICAgdmFy IHRleHQgPSBtX3NlYXJjaExpbmtzW25dLlRleHQ7DQogICAgICAgICAgICBkb2N1 bWVudC53cml0ZSgiPHNwYW4gY2xhc3M9XCJtaF9zZWFyY2hfc2VwX1NFXCIgc3R5 bGU9XCJ3aGl0ZS1zcGFjZTpub3dyYXBcIj48YSBocmVmPVwiIiArIGhyZWYgKyAi XCIgY2xhc3M9XCJwYXJhX3NtYWxsXCI+IiArIHRleHQgKyAiPC9hPjwvc3Bhbj4i KTsNCiAgICAgICAgfQ0KICAgIH0NCn0NCg0KZnVuY3Rpb24gcmVuZGVyUGJhckxp bmtzKCkgew0KICAgIGlmIChtX3BiYXJMaW5rcykgew0KICAgICAgICBkb2N1bWVu dC53cml0ZSgiPHRhYmxlIGNlbGxwYWRkaW5nPVwiMFwiIGNlbGxzcGFjaW5nPVwi MFwiIGJvcmRlcj1cIjBcIj48dHI+Iik7DQogICAgICAgIGZvciAodmFyIG4gPSAw OyBuIDwgbV9wYmFyTGlua3MubGVuZ3RoOyBuKyspIHsNCiAgICAgICAgICAgIHZh ciBocmVmID0gbV9wYmFyTGlua3Nbbl0uSHJlZjsNCiAgICAgICAgICAgIHZhciB0 ZXh0ID0gbV9wYmFyTGlua3Nbbl0uVGV4dDsNCiAgICAgICAgICAgIHZhciBpY29u ID0gbV9wYmFyTGlua3Nbbl0uSWNvblVybDsNCiAgICAgICAgICAgIGlmIChpY29u ICE9IHVuZGVmaW5lZCAmJiBpY29uICE9IG51bGwgJiYgaWNvbi5sZW5ndGggPiAw ICYmIGljb24uaW5kZXhPZigiLmNvbS8iKSAhPSAtMSkgew0KICAgICAgICAgICAg ICAgIGljb24gPSBtX2ltZ1BmeCArIGljb24uc3Vic3RyaW5nKGljb24uaW5kZXhP ZigiLmNvbS8iKSArIDQpOw0KICAgICAgICAgICAgICAgIGRvY3VtZW50LndyaXRl KCI8dGQgdmFsaWduPVwibWlkZGxlXCI+PGltZyBzcmM9XCIiICsgaWNvbiArICJc IiBoZWlnaHQ9XCIxN3B4XCIgYm9yZGVyPVwiMFwiIGFsdD1cIiIgKyB0ZXh0ICsg IlwiIC8+PC90ZD4iKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGRvY3Vt ZW50LndyaXRlKCI8dGQgdmFsaWduPVwibWlkZGxlXCIgbm93cmFwPVwidHJ1ZVwi PjxzcGFuIGNsYXNzPVwicGJhcmxpbmtcIiBub3dyYXA9XCIxXCI+PGEgaHJlZj1c IiIgKyBocmVmICsgIlwiPiIgKyB0ZXh0ICsgIjwvYT48L3NwYW4+PC90ZD4iKTsN CiAgICAgICAgICAgIGRvY3VtZW50LndyaXRlKCI8dGQgdmFsaWduPVwibWlkZGxl XCI+PGltZyBzcmM9XCIiICsgbV9pbWdQZnggKyAiL2ltYWdlcy9nbG9iYWwvZ2Vu ZXJhbC9zcGFjZXIuZ2lmXCIgYm9yZGVyPVwiMFwiIGhlaWdodD1cIjFcIiB3aWR0 aD1cIjEwXCIgYWx0PVwiXCIgLz48L3RkPiIpOw0KICAgICAgICB9DQogICAgICAg IGRvY3VtZW50LndyaXRlKCI8L3RyPjwvdGFibGU+Iik7DQogICAgfQ0KfQ0KDQpm dW5jdGlvbiBzd2FwU2Vjb25kYXJ5VGFiU3RyaXAoc3JjLCBpZCkgew0KDQogICAg c3ViTmF2Q29udGVudCA9IGdldFJhd09iamVjdCgic3VibmF2Iik7DQogICAgbWVu dSA9IG1fbWVudUJhcltpZF07DQogICAgU3dhcFRhYihnZXRSYXdPYmplY3Qoc3Jj KSwgbnVsbCwgaWQpOw0KICAgIHN1Yk5hdkNvbnRlbnQuaW5uZXJIVE1MID0gcmVu ZGVyU2Vjb25kYXJ5VGFiU3RyaXAobWVudSk7DQogICAgYmluZE1hc3RIZWFkRmx5 b3V0cygpOw0KfQ0KDQpmdW5jdGlvbiByZW5kZXJQYmFyVGFiTmF2KHNyYykgew0K ICAgIG1fcGFnZVRhYiA9IG1fbWVudUJhci5sZW5ndGg7DQogICAgU3dhcFRhYihn ZXRSYXdPYmplY3Qoc3JjKSwgbnVsbCwgbV9wYWdlVGFiKTsNCiAgICB0cnkgew0K ICAgICAgICBuYXYgPSBnZXRSYXdPYmplY3QoInN1Ym5hdiIpOw0KICAgICAgICBp ZiAobmF2LmlubmVySFRNTC5pbmRleE9mKCJuYW1lPVwidGFibmF2XCIiKSA9PSAt MSkgew0KICAgICAgICAgICAgQXN5bmNYRG9tYWluSWZyYW1lQ2FsbChtX3BiYXJQ ZnggKyAiL3BiYXIvYWpheC5hc3B4P35wc2M9dGFibmF2Jm1lbnVzPWNhcnQiLCBw YmFybmF2YWpheCk7DQogICAgICAgIH0NCiAgICB9DQogICAgY2F0Y2ggKGUpDQp7 IH0NCn0NCg0KZnVuY3Rpb24gcmVuZGVyU2Vjb25kYXJ5VGFiU3RyaXAobWVudSkg ew0KICAgIHZhciBzZXAgPSAic3ViIjsNCiAgICB2YXIgaXNUaXRsZSA9IGZhbHNl Ow0KICAgIHZhciBtX25leHRHZW5CR0NvbG9yID0gKG1faXNBbGllbndhcmVUaGVt ZT8iIzBBMEEwQSI6IiNGRkZGRkYiKTsNCiAgICB2YXIgc3ViTmF2SFRNTCA9ICI8 dGFibGUgY2VsbHBhZGRpbmc9XCIwXCIgY2VsbHNwYWNpbmc9XCIwXCIgYm9yZGVy PVwiMFwiIHdpZHRoPVwiMTAwJVwiPjx0cj48dGQgc3R5bGU9XCJiYWNrZ3JvdW5k LWNvbG9yOiIrbV9uZXh0R2VuQkdDb2xvcisiO1wiIHdpZHRoPVwiMTBcIj48aW1n IHNyYz1cIiIgKyBtX2ltZ1BmeCArICIvaW1hZ2VzL2dsb2JhbC9nZW5lcmFsL3Nw YWNlci5naWZcIiBib3JkZXI9XCIwXCIgaGVpZ2h0PVwiMVwiIHdpZHRoPVwiMTBc IiBhbHQ9XCJcIiAvPjwvdGQ+IjsNCiAgICB2YXIgY29sdW1uQ2xhc3MgPSAiIjsN CiAgICB2YXIgY29sdW1uVmlldyA9IGZhbHNlOw0KICAgIGZvciAodmFyIG4gPSAw OyBuIDwgbWVudS5NZW51SXRlbXMubGVuZ3RoOyBuKyspIHsNCiAgICAgICAgdmFy IGl0ZW0gPSBtZW51Lk1lbnVJdGVtc1tuXTsNCiAgICAgICAgaWYgKGl0ZW0uVGV4 dCAhPSBudWxsKSB7DQogICAgICAgICAgICBpZiAobiA9PSAwKSB7DQogICAgICAg ICAgICAgICAgaWYgKG1faXNSdGwpIHsgY29udGFpbmVyQ2xhc3MgPSAic3VibmF2 bGlua2NvbnRhaW5lcmxhc3QiOyB9DQogICAgICAgICAgICAgICAgZWxzZSB7IGNv bnRhaW5lckNsYXNzID0gInN1Ym5hdmxpbmtjb250YWluZXJmaXJzdCI7IH0NCiAg ICAgICAgICAgIH0NCiAgICAgICAgICAgIGVsc2UgaWYgKChuICsgMSkgPT0gbWVu dS5NZW51SXRlbXMubGVuZ3RoKSB7DQogICAgICAgICAgICAgICAgaWYgKG1faXNS dGwpIHsgY29udGFpbmVyQ2xhc3MgPSAic3VibmF2bGlua2NvbnRhaW5lcmZpcnN0 IjsgfQ0KICAgICAgICAgICAgICAgIGVsc2UgeyBjb250YWluZXJDbGFzcyA9ICJz dWJuYXZsaW5rY29udGFpbmVybGFzdCI7IH0NCiAgICAgICAgICAgIH0NCiAgICAg ICAgICAgIGVsc2Ugew0KICAgICAgICAgICAgICAgIGNvbnRhaW5lckNsYXNzID0g InN1Ym5hdmxpbmtjb250YWluZXIiOw0KICAgICAgICAgICAgfQ0KICAgICAgICAg ICAgaWYgKGl0ZW0uTWVudUl0ZW1zID09IG51bGwpIHsgY29udGFpbmVyQ2xhc3Mg Kz0gIm5vbWVudSI7IH0NCiAgICAgICAgICAgIGlmIChpc0RIVE1MKSB7DQogICAg ICAgICAgICAgICAgaWYgKG4gPiAwKSB7DQogICAgICAgICAgICAgICAgICAgIHN1 Yk5hdkhUTUwgKz0gIjx0ZCB3aWR0aD1cIjJcIj48ZGl2IGNsYXNzPVwic3VibmF2 bGlua2RpdmlkZVwiPjwvZGl2PjwvdGQ+IjsNCiAgICAgICAgICAgICAgICB9DQog ICAgICAgICAgICAgICAgaWYgKGl0ZW0uTWVudUl0ZW1zKSB7DQogICAgICAgICAg ICAgICAgICAgIGlmICgobiArIDEpID09IG1lbnUuTWVudUl0ZW1zLmxlbmd0aCkg ew0KICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uQ2xhc3MgPSAiY29sdW1u bGlzdCI7DQogICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5WaWV3ID0gdHJ1 ZTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICBl bHNlIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbkNsYXNzID0gImxp bmtsaXN0IjsNCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtblZpZXcgPSBm YWxzZTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAg ICBzdWJOYXZIVE1MICs9ICI8dGQgY2xhc3M9XCJzdWJuYXZsaW5rY2VsbFwiIGlk PVwibWhfIiArIG4gKyAiY2VsbFwiIHZhbGlnbj1cIm1pZGRsZVwiIGFsaWduPVwi Y2VudGVyXCI+PGRpdiBpZD1cIm1oXyIgKyBuICsgIlwiIG5hbWU9XCJtaF9zdWJu YXZsaW5rXCIgY2xhc3M9XCIiICsgY29udGFpbmVyQ2xhc3MgKyAiXCI+IjsNCiAg ICAgICAgICAgICAgICAgICAgc3ViTmF2SFRNTCArPSAiPHRhYmxlIGNlbGxwYWRk aW5nPVwiMFwiIGNlbGxzcGFjaW5nPVwiMFwiIGhlaWdodD1cIjMwXCI+PHRyPjx0 ZD4iOw0KICAgICAgICAgICAgICAgICAgICBpZiAoaXRlbS5IcmVmICE9IG51bGwg JiYgaXRlbS5IcmVmLmxlbmd0aCA+IDApIHsNCiAgICAgICAgICAgICAgICAgICAg ICAgIHN1Yk5hdkhUTUwgKz0gIjxhIGhyZWY9XCIiICsgY3JlYXRlTmF2TGluayhp dGVtLkhyZWYsIG4pICsgIlwiICIgKyBpdGVtLlRhcmdldEhUTUwgKyAiIGlkPVwi bWhfIiArIG4gKyAibGlua1wiIGNsYXNzPVwic3VibmF2bGlua1wiPiIgKyBpdGVt LlRleHQucmVwbGFjZSgiXG4iLCAiPGJyLz4iKSArICI8L2E+IjsNCiAgICAgICAg ICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsNCiAgICAg ICAgICAgICAgICAgICAgICAgIHN1Yk5hdkhUTUwgKz0gIjxhIGhyZWY9XCIjXCIg IiArIGl0ZW0uVGFyZ2V0SFRNTCArICIgaWQ9XCJtaF8iICsgbiArICJsaW5rXCIg b25jbGljaz1cInJldHVybiBmYWxzZVwiIGNsYXNzPVwic3VibmF2bGlua1wiPiIg KyBpdGVtLlRleHQucmVwbGFjZSgiXG4iLCAiPGJyLz4iKSArICI8L2E+IjsNCiAg ICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICBzdWJOYXZI VE1MICs9ICI8L3RkPjx0ZD48aW1nIHNyYz1cIiIgKyBtX2ltZ1BmeCArICIvaW1h Z2VzL2dsb2JhbC9nZW5lcmFsL3NwYWNlci5naWZcIiBib3JkZXI9XCIwXCIgaGVp Z2h0PVwiMVwiIHdpZHRoPVwiNFwiIGFsdD1cIlwiIC8+PC90ZD48dGQgdmFsaWdu PVwibWlkZGxlXCIgc3R5bGU9XCJwYWRkaW5nLXRvcDoycHg7XCI+PGltZyBpZD1c Im1oXyIgKyBuICsgImNhcnJvdFwiIHNyYz1cIiIgKyBtX2ltZ1BmeCArICIvaW1h Z2VzL2dsb2JhbC9icmFuZC91aS8iICsgKG1faXNBbGllbndhcmVUaGVtZSA/ICJu eGdlbiIgOiAic3Rvcm04MCIpICsgIi9uYXZfZG93bi5naWZcIiBib3JkZXI9XCIw XCIgaGVpZ2h0PVwiNFwiIHdpZHRoPVwiN1wiIGFsdD1cIlwiIC8+PC90ZD48L3Ry PjwvdGFibGU+PC9kaXY+IjsNCiAgICAgICAgICAgICAgICAgICAgc3ViTmF2SFRN TCArPSAiPGRpdiBpZD1cIm1oXyIgKyBuICsgImNvbnRlbnRcIiBjbGFzcz1cImZs b2F0aW5nbWVudVwiIG9ubW91c2VvdXQ9XCJTdWJOYXZFdmVudEluQWN0aXZlKClc IiBvbm1vdXNlb3Zlcj1cIkNsZWFyU3ViTmF2VGltZU91dChmYWxzZSk7XCI+IiAr DQoJCQkJCSI8dGFibGUgaWQ9XCJ1bmlxdWVwbGFjZWhvbGRlcklEc2VjXCIgY2xh c3M9XCJtaF8iICsgKGNvbHVtblZpZXcgPyAiY29sdW1ubGlzdCIgOiAibGlua2xp c3QiKSArICJcIiBjZWxsc3BhY2luZz1cIjBcIiBjZWxscGFkZGluZz1cIjBcIiBi b3JkZXI9XCIwXCI+PHRyPjx0ZCB3aWR0aD1cIjFcIiBjbGFzcz1cInN1Ym5hdm1l bnVib3JkZXJcIj48aW1nIHNyYz1cIiIgKyBtX2ltZ1BmeCArICIvaW1hZ2VzL2ds b2JhbC9nZW5lcmFsL3NwYWNlci5naWZcIiB3aWR0aD1cIjFcIiBoZWlnaHQ9XCIx XCIgYWx0PVwiXCI+PC90ZD48dGQgdmFsaWduPVwidG9wXCIgY2xhc3M9XCJzdWJu YXZjb2x1bW5cIj4iOw0KICAgICAgICAgICAgICAgICAgICB2YXIgY29sdW1uID0g MTsNCiAgICAgICAgICAgICAgICAgICAgdmFyIGNvbHVtbnMgPSBuZXcgQXJyYXko KTsNCiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbm4gPSAwOyBubiA8IGl0 ZW0uTWVudUl0ZW1zLmxlbmd0aDsgbm4rKykgew0KICAgICAgICAgICAgICAgICAg ICAgICAgdmFyIGRyb3AgPSBpdGVtLk1lbnVJdGVtc1tubl07DQogICAgICAgICAg ICAgICAgICAgICAgICBpZiAoY29sdW1uVmlldykgew0KICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGNvbHVtbiA9IGRyb3AuQ29sdW1uID8gZHJvcC5Db2x1bW4g OiAxOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAg ICAgICAgICAgaWYgKGNvbHVtbnNbY29sdW1uXSA9PSB1bmRlZmluZWQpIHsNCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5zW2NvbHVtbl0gPSAiIjsN CiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAg ICAgIGlmIChkcm9wLlRleHQgIT0gbnVsbCkgew0KICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGlmIChkcm9wLkhyZWYgIT0gbnVsbCAmJiBkcm9wLkhyZWYubGVu Z3RoID09IDApIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29s dW1uc1tjb2x1bW5dICs9ICI8dHI+PHRkIGNsYXNzPVwibWVudXRpdGxlXCI+IiAr IGRyb3AuVGV4dCArICI8L3RkPjwvdHI+IjsNCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7DQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbnNbY29sdW1uXSAr PSAiPHRyPjx0ZCBjbGFzcz1cIiIgKyBzZXAgKyAiXCIgb25Nb3VzZU92ZXI9XCJ0 aGlzLmNsYXNzTmFtZT0nIiArIHNlcCArICJob3Zlcic7XCIgb25Nb3VzZU91dD1c InRoaXMuY2xhc3NOYW1lPSciICsgc2VwICsgIic7XCI+PGRpdiBjbGFzcz1cIiIg KyBzZXAgKyAiXCI+IjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg aWYgKCFjb2x1bW5WaWV3KSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjb2x1bW5zW2NvbHVtbl0gKz0gIjx0YWJsZSBjZWxscGFkZGluZz1c IjBcIiBjZWxsc3BhY2luZz1cIjBcIj48dHI+PHRkIHZhbGlnbj1cInRvcFwiIHN0 eWxlPVwicGFkZGluZy10b3A6M3B4O1wiPjxpbWcgc3JjPVwiIiArIG1faW1nUGZ4 ICsgIi9pbWFnZXMvZ2xvYmFsL2JyYW5kL3VpLyIgKyAobV9pc0FsaWVud2FyZVRo ZW1lID8gIm54Z2VuLyIgOiAic3Rvcm04MC8iKSArIChtX2lzUnRsID8gIm5hdl9s ZWZ0X2JsdWUiIDogIm5hdl9yaWdodF9ibHVlIikgKyAiLmdpZlwiIGFsdD1cIlwi IC8+PC90ZD48dGQ+PGltZyBzcmM9XCIiICsgbV9pbWdQZnggKyAiL2ltYWdlcy9n bG9iYWwvZ2VuZXJhbC9zcGFjZXIuZ2lmXCIgd2lkdGg9XCI0XCIgaGVpZ2h0PVwi MVwiIGFsdD1cIlwiPjwvdGQ+PHRkPjxhIGNsYXNzPVwibWVudWxpbmtcIiBocmVm PVwiIiArIGNyZWF0ZU5hdkxpbmsoZHJvcC5IcmVmLCBuKSArICJcIiAiICsgZHJv cC5UYXJnZXRIdG1sICsgIj4gIiArIGRyb3AuVGV4dCArIChkcm9wLk9mZkRlbGwg PyBtX3N0ZE9mZkltZyA6ICIiKSArICI8L2E+PC90ZD48L3RyPjwvdGFibGU+IjsN CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNvbHVtbnNbY29sdW1uXSArPSAiPHRhYmxlIGNlbGxw YWRkaW5nPVwiMFwiIGNlbGxzcGFjaW5nPVwiMFwiPjx0cj48dGQ+PGEgY2xhc3M9 XCJtZW51bGlua1wiIGhyZWY9XCIiICsgY3JlYXRlTmF2TGluayhkcm9wLkhyZWYs IG4pICsgIlwiICIgKyBkcm9wLlRhcmdldEh0bWwgKyAiPiIgKyBkcm9wLlRleHQg KyAoZHJvcC5PZmZEZWxsID8gbV9zdGRPZmZJbWcgOiAiIikgKyAiPC9hPjwvdGQ+ PC90cj48L3RhYmxlPiI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uc1tjb2x1 bW5dICs9ICI8L2Rpdj4iOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBpZiAoZHJvcC5NZW51SXRlbXMgIT0gbnVsbCkgew0KICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgY29sdW1uc1tjb2x1bW5dICs9ICI8ZGl2IGNs YXNzPVwibWhwcm9kdWN0bGlua3NcIj4iOw0KICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZm9yICh2YXIgbm5uID0gMDsgbm5uIDwgZHJvcC5NZW51 SXRlbXMubGVuZ3RoOyBubm4rKykgew0KICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHZhciBwcm9kID0gZHJvcC5NZW51SXRlbXNbbm5uXTsN CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocHJv ZC5UZXh0ICE9IG51bGwgJiYgcHJvZC5UZXh0Lmxlbmd0aCA+IDApIHsNCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5ubiAh PSAwICYmICFjb2x1bW5WaWV3KSB7DQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5zW2NvbHVtbl0gKz0gIiwmbmJz cDsgIjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBpZiAoY29sdW1uVmlldykgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgY29sdW1uc1tjb2x1bW5dICs9ICI8ZGl2IGNs YXNzPVwibWhwcm9kdWN0ZGl2XCI+PHRhYmxlIGNlbGxwYWRkaW5nPVwiMFwiIGNl bGxzcGFjaW5nPVwiMFwiPjx0cj48dGQgdmFsaWduPVwidG9wXCIgc3R5bGU9XCJw YWRkaW5nLXRvcDozcHg7d2lkdGg6N3B4O1wiPjxpbWcgc3JjPVwiIiArIG1faW1n UGZ4ICsgIi9pbWFnZXMvZ2xvYmFsL2JyYW5kL3VpL254Z2VuLyIgKyAobV9pc1J0 bCA/ICJuYXZfbGVmdF9ncmV5IiA6ICJuYXZfcmlnaHRfZ3JleSIpICsgIi5naWZc IiBhbHQ9XCJcIiAvPjwvdGQ+PHRkPjxhIGNsYXNzPVwibWhwcm9kdWN0bGlua1wi IGhyZWY9XCIiICsgY3JlYXRlTmF2TGluayhwcm9kLkhyZWYsIG4pICsgIlwiICIg KyBwcm9kLlRhcmdldEh0bWwgKyAiPiAiICsgcHJvZC5UZXh0ICsgIjwvYT48L3Rk PjwvdHI+PC90YWJsZT48L2Rpdj4iOw0KICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uc1tjb2x1bW5dICs9ICI8 YSBjbGFzcz1cIm1ocHJvZHVjdGxpbmtcIiBocmVmPVwiIiArIGNyZWF0ZU5hdkxp bmsocHJvZC5IcmVmLCBuKSArICJcIiAiICsgcHJvZC5UYXJnZXRIdG1sICsgIj4i ICsgcHJvZC5UZXh0ICsgIjwvYT4iOw0KICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29s dW1uc1tjb2x1bW5dICs9ICI8L2Rpdj4iOw0KICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv bHVtbnNbY29sdW1uXSArPSAiPC90ZD48L3RyPiI7DQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAg ICAgICAgICAgICAgICAgICAgc2VwID0gZHJvcC5Jc1NlcGFyYXRvciA/ICJzZXAi IDogInN1YiI7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAg ICAgICAgdmFyIGNvbHVtbkNsYXNzID0gIm1oX2xpbmtjb2x1bW4iOw0KICAgICAg ICAgICAgICAgICAgICBpZiAoY29sdW1ucy5sZW5ndGggPiAyKSB7DQogICAgICAg ICAgICAgICAgICAgICAgICBjb2x1bW5DbGFzcyA9ICJtaF92aWV3YWxsY29sdW1u IjsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICBz dWJOYXZIVE1MICs9ICI8dGFibGUgY2xhc3M9XCIiICsgY29sdW1uQ2xhc3MgKyAi XCIgY2VsbHBhZGRpbmc9XCIwXCIgY2VsbHNwYWNpbmc9XCIwXCIgYm9yZGVyPVwi MFwiPiI7DQogICAgICAgICAgICAgICAgICAgIHZhciBjb2wgPSAwOw0KICAgICAg ICAgICAgICAgICAgICBmb3IgKHZhciBjYyA9IDE7IGNjIDwgNjsgY2MrKykgew0K ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbHVtbnNbY2NdICE9IG51bGwp IHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29sID4gMCkgew0K ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJOYXZIVE1MICs9ICI8 L3RhYmxlPjwvdGQ+PHRkIHZhbGlnbj1cInRvcFwiIGNsYXNzPVwic3VibmF2Y29s dW1uXCI+PHRhYmxlIGNsYXNzPVwiIiArIGNvbHVtbkNsYXNzICsgIlwiIGNlbGxw YWRkaW5nPVwiMFwiIGNlbGxzcGFjaW5nPVwiMFwiIGJvcmRlcj1cIjBcIj4iOw0K ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzdWJOYXZIVE1MICs9IGNvbHVtbnNbY2NdOw0KICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGNvbCsrOw0KICAgICAgICAgICAgICAgICAgICAg ICAgfQ0KICAgICAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAg ICAgc3ViTmF2SFRNTCArPSAiPC90YWJsZT48L3RkPjx0ZCB3aWR0aD1cIjFcIiBj bGFzcz1cInN1Ym5hdm1lbnVib3JkZXJcIj48aW1nIHNyYz1cIiIgKyBtX2ltZ1Bm eCArICIvaW1hZ2VzL2dsb2JhbC9nZW5lcmFsL3NwYWNlci5naWZcIiB3aWR0aD1c IjFcIiBoZWlnaHQ9XCIxXCIgYWx0PVwiXCI+PC90ZD48L3RyPjx0cj48dGQgY29s c3Bhbj1cIiIgKyAoY29sICsgMikgKyAiXCI+PHRhYmxlIGNlbGxwYWRkaW5nPVwi MFwiIGNlbGxzcGFjaW5nPVwiMFwiIHdpZHRoPVwiMTAwJVwiPjx0cj48dGQgd2lk dGg9XCIyXCI+PGltZyBzcmM9XCIiICsgbV9pbWdQZnggKyAiL2ltYWdlcy9nbG9i YWwvYnJhbmQvdWkvbnhnZW4vbWVudWNvcm5lciIrKG1faXNSdGw/ImJyIjoiYmwi KSsiXzJ4Mi5naWZcIiBhbHQ9XCJcIiAvPjwvdGQ+PHRkIGNsYXNzPVwic3VibmF2 bWVudWJvcmRlcmJvdHRvbVwiPjxpbWcgc3JjPVwiIiArIG1faW1nUGZ4ICsgIi9p bWFnZXMvZ2xvYmFsL2dlbmVyYWwvc3BhY2VyLmdpZlwiIHdpZHRoPVwiMVwiIGhl aWdodD1cIjFcIiBhbHQ9XCJcIj48L3RkPjx0ZCB3aWR0aD1cIjJcIj48aW1nIHNy Yz1cIiIgKyBtX2ltZ1BmeCArICIvaW1hZ2VzL2dsb2JhbC9icmFuZC91aS9ueGdl bi9tZW51Y29ybmVyIisobV9pc1J0bD8iYmwiOiJiciIpKyJfMngyLmdpZlwiIGFs dD1cIlwiIC8+PC90ZD48L3RyPjwvdGFibGU+PC9kaXY+PC90ZD48L3RyPjwvdGFi bGU+PC90ZD4iOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBl bHNlIHsNCiAgICAgICAgICAgICAgICAgICAgc3ViTmF2SFRNTCArPSAiPHRkIGNs YXNzPVwic3VibmF2bGlua2NlbGxcIiBpZD1cIm1oXyIgKyBuICsgImNlbGxcIiB2 YWxpZ249XCJtaWRkbGVcIiBhbGlnbj1cImNlbnRlclwiPjxkaXYgaWQ9XCJtaF8i ICsgbiArICJcIiBuYW1lPVwibWhfc3VibmF2bGlua1wiIGNsYXNzPVwiIiArIGNv bnRhaW5lckNsYXNzICsgIlwiPiIgKw0KCQkJCQkiPHRhYmxlIGNlbGxwYWRkaW5n PVwiMFwiIGNlbGxzcGFjaW5nPVwiMFwiIGhlaWdodD1cIjMwXCI+PHRyPjx0ZD48 YSBocmVmPVwiIiArIGNyZWF0ZU5hdkxpbmsoaXRlbS5IcmVmLCBuKSArICJcIiAi ICsgaXRlbS5UYXJnZXRIVE1MICsgIiBpZD1cIm1oXyIgKyBuICsgImxpbmtcIiBj bGFzcz1cInN1Ym5hdmxpbmtub21lbnVcIj4iICsgaXRlbS5UZXh0LnJlcGxhY2Uo IlxuIiwgIjxici8+IikgKyAiPC9hPjwvdGQ+PC90cj48L3RhYmxlPiIgKw0KCQkJ CQkiPC9kaXY+PC90ZD4iOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAg IH0NCiAgICAgICAgICAgIGVsc2Ugew0KICAgICAgICAgICAgICAgIHN1Yk5hdkhU TUwgKz0gIjx0ZCBjbGFzcz1cInN1Ym5hdmxpbmtjZWxsXCIgaWQ9XCJtaF8iICsg biArICJjZWxsXCIgdmFsaWduPVwibWlkZGxlXCIgYWxpZ249XCJjZW50ZXJcIj48 ZGl2IGNsYXNzPVwiIiArIGNvbnRhaW5lckNsYXNzICsgIlwiPiIgKw0KCQkJCSI8 dGFibGUgY2VsbHBhZGRpbmc9XCIwXCIgY2VsbHNwYWNpbmc9XCIwXCIgaGVpZ2h0 PVwiMzBcIj48dHI+PHRkPjxhIGhyZWY9XCIiICsgY3JlYXRlTmF2TGluayhpdGVt LkhyZWYsIG4pICsgIlwiICIgKyBpdGVtLlRhcmdldEhUTUwgKyAiIGNsYXNzPVwi c3VibmF2bGlua25vbWVudVwiPiIgKyBpdGVtLlRleHQucmVwbGFjZSgiXG4iLCAi PGJyLz4iKSArICI8L2E+PC90ZD48L3RyPjwvdGFibGU+IiArDQoJCQkJIjwvZGl2 PjwvdGQ+IjsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgIH0NCiAgICBz dWJOYXZIVE1MICs9ICI8L3RyPjwvdGFibGU+IjsNCiAgICByZXR1cm4gc3ViTmF2 SFRNTDsNCn0NCg0KZnVuY3Rpb24gYmluZE1hc3RIZWFkRmx5b3V0cygpIHsNCiAg ICBpZiAoIW1fdGFiTmF2KSB7DQogICAgICAgICRqKCJkaXZbQG5hbWU9J21oX3N1 Ym5hdmxpbmsnXSIpLmhvdmVyKA0KICAgICAgICAgIGZ1bmN0aW9uKCkgew0KICAg ICAgICAgICAgICBTdWJOYXZFdmVudEFjdGl2ZSgkaih0aGlzKSk7DQogICAgICAg ICAgfSwNCiAgICAgICAgICBmdW5jdGlvbigpIHsNCiAgICAgICAgICAgICAgU3Vi TmF2RXZlbnRJbkFjdGl2ZSgkaih0aGlzKSk7DQogICAgICAgICAgfQ0KICAgICAg ICApOw0KICAgICAgICAkaigidGRbQG5hbWU9J21oX3N1Ym5hdmxpbmsnXSIpLmhv dmVyKA0KICAgICAgICAgIGZ1bmN0aW9uKCkgew0KICAgICAgICAgICAgICBUZXJO YXZFdmVudEFjdGl2ZSgkaih0aGlzKSk7DQogICAgICAgICAgfSwNCiAgICAgICAg ICBmdW5jdGlvbigpIHsNCiAgICAgICAgICAgICAgVGVyTmF2RXZlbnRJbkFjdGl2 ZSgkaih0aGlzKSk7DQogICAgICAgICAgfQ0KICAgICAgICApOw0KICAgIH0NCn0N CmZ1bmN0aW9uIFBhcnNlRGl2T2JqZWN0cyh0YXJnZXROYW1lKSB7DQoNCiAgICB2 YXIgb2JqcyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlOYW1lKHRhcmdldE5hbWUp Ow0KICAgIGlmIChvYmpzLmxlbmd0aCA9PSAwKSB7DQogICAgICAgIHZhciB0YXJn ZXRzID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIkRJViIpOw0KICAg ICAgICB2YXIgdG1wT2JqOw0KICAgICAgICBvYmpzID0gbmV3IEFycmF5KCk7DQog ICAgICAgIGZvciAodmFyIHRhcmdldGlkeCA9IDA7IHRhcmdldGlkeCA8IHRhcmdl dHMubGVuZ3RoOyB0YXJnZXRpZHgrKykgew0KICAgICAgICAgICAgdG1wT2JqID0g dGFyZ2V0c1t0YXJnZXRpZHhdOw0KICAgICAgICAgICAgaWYgKHRtcE9iai5uYW1l ID09IHRhcmdldE5hbWUpIHsNCiAgICAgICAgICAgICAgICBvYmpzLnB1c2godG1w T2JqKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgIH0NCiAgICByZXR1 cm4gb2JqczsNCn0NCmZ1bmN0aW9uIFBhcnNlSUZyYW1lT2JqZWN0cyh0YXJnZXRO YW1lKSB7DQogICAgdmFyIG9ianMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5TmFt ZSh0YXJnZXROYW1lKTsNCiAgICBpZiAob2Jqcy5sZW5ndGggPT0gMCkgew0KICAg ICAgICB2YXIgdGFyZ2V0cyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l KCJJRlJBTUUiKTsNCiAgICAgICAgdmFyIHRtcE9iajsNCiAgICAgICAgb2JqcyA9 IG5ldyBBcnJheSgpOw0KICAgICAgICBmb3IgKHZhciB0YXJnZXRpZHggPSAwOyB0 YXJnZXRpZHggPCB0YXJnZXRzLmxlbmd0aDsgdGFyZ2V0aWR4KyspIHsNCiAgICAg ICAgICAgIHRtcE9iaiA9IHRhcmdldHNbdGFyZ2V0aWR4XTsNCiAgICAgICAgICAg IGlmICh0bXBPYmoubmFtZSA9PSB0YXJnZXROYW1lKSB7DQogICAgICAgICAgICAg ICAgb2Jqcy5wdXNoKHRtcE9iaik7DQogICAgICAgICAgICB9DQogICAgICAgIH0N CiAgICB9DQogICAgcmV0dXJuIG9ianM7DQp9DQpmdW5jdGlvbiBTd2FwVGFiKHNy YywgdXJsLCB0YWIpIHsNCiAgICB2YXIgdGFibGluayA9IGdldFJhd09iamVjdChz cmMpOw0KICAgIGlmIChtX2FjdGl2ZVRhYiAhPSBudWxsKSB7DQogICAgICAgIG1f YWN0aXZlVGFiLmNsYXNzTmFtZSA9ICJpbmFjdGl2ZXRhYiI7DQogICAgICAgIGdl dFJhd09iamVjdChtX2FjdGl2ZVRhYi5pZCArICJjb250ZW50IikuY2xhc3NOYW1l ID0gImluYWN0aXZldGFiY29udGVudCI7DQogICAgfQ0KICAgIHRhYmxpbmsuY2xh c3NOYW1lID0gImFjdGl2ZXRhYiI7DQogICAgZ2V0UmF3T2JqZWN0KHRhYmxpbmsu aWQgKyAiY29udGVudCIpLmNsYXNzTmFtZSA9ICJhY3RpdmV0YWJjb250ZW50IjsN CiAgICBpZiAobV9tZW51QmFyLmxlbmd0aCA9PSB0YWIpIHsNCiAgICAgICAgbV9z dG9ybUNvb2tpZS5zZXNzaW9uLnNldENvb2tpZSgifnRpZCIgKyBwYWdlQ250eSAr IHBhZ2VMYW5nICsgcGFnZVNlZyArIHBhZ2VDUywgIm15YWNjb3VudE1lbnUiKTsN CiAgICB9DQogICAgZWxzZSB7DQogICAgICAgIG1fc3Rvcm1Db29raWUuc2Vzc2lv bi5zZXRDb29raWUoIn50aWQiICsgcGFnZUNudHkgKyBwYWdlTGFuZyArIHBhZ2VT ZWcgKyBwYWdlQ1MsIG1fbWVudUJhclt0YWJdLklkKTsNCiAgICB9DQogICAgbV9h Y3RpdmVUYWIgPSB0YWJsaW5rOw0KICAgIGlmICh1cmwgIT0gbnVsbCkgew0KICAg ICAgICBkb2N1bWVudC5sb2NhdGlvbiA9IHVybDsNCiAgICB9DQp9DQpmdW5jdGlv biBUYWJOYXZBY3RpdmVFdmVudChzcmMpIHsNCiAgICBpZiAobV90aW1lb3V0Q2xv c2VEZWxheSkgew0KICAgICAgICBDbGVhclN1Yk5hdlRpbWVPdXQoZmFsc2UpOw0K ICAgIH0NCiAgICBpZiAobV90YWJDb250ZW50RGl2ICE9IHNyYy5pZCkgew0KICAg ICAgICB2YXIgY29udGVudCA9IGdldFJhd09iamVjdChzcmMuaWQgKyAiVGFiTmF2 Iik7DQogICAgICAgIGlmIChjb250ZW50ICE9IG51bGwpIHsNCiAgICAgICAgICAg IGlmIChtX3RhYkNvbnRlbnREaXYgIT0gbnVsbCkgew0KICAgICAgICAgICAgICAg IFRhYk5hdkluQWN0aXZlQ2xvc2UoKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAg ICAgIG1fdGFiQ29udGVudERpdiA9IHNyYy5pZDsNCiAgICAgICAgICAgIGlmICht X2FjdGl2ZVRhYi5pZCAhPSBzcmMuaWQpIHsNCiAgICAgICAgICAgICAgICBzcmMu Y2xhc3NOYW1lID0gImFjdGl2ZXRhYmhvdmVyIjsNCiAgICAgICAgICAgICAgICBn ZXRSYXdPYmplY3Qoc3JjLmlkICsgImNvbnRlbnQiKS5jbGFzc05hbWUgPSAiYWN0 aXZldGFiaG92ZXJjb250ZW50IjsNCiAgICAgICAgICAgICAgICBpZiAobV9hY3Rp dmVUYWIgIT0gbnVsbCkgew0KICAgICAgICAgICAgICAgICAgICBtX2FjdGl2ZVRh Yi5zdHlsZS56SW5kZXggPSAxOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAg ICAgIH0NCiAgICAgICAgICAgIGNvbnRlbnQuc3R5bGUuZGlzcGxheSA9ICJibG9j ayI7DQogICAgICAgIH0NCiAgICB9DQp9DQpmdW5jdGlvbiBUYWJOYXZJbkFjdGl2 ZUV2ZW50KHNyYykgew0KICAgIGlmICghbV90aW1lb3V0Q2xvc2VEZWxheSkgew0K ICAgICAgICBtX3RpbWVvdXRDbG9zZURlbGF5ID0gc2V0VGltZW91dCgiVGFiTmF2 SW5BY3RpdmVDbG9zZSgpIiwgNTAwKTsNCiAgICB9DQp9DQpmdW5jdGlvbiBUYWJO YXZJbkFjdGl2ZUNsb3NlKCkgew0KICAgIHZhciBzcmMgPSBnZXRSYXdPYmplY3Qo bV90YWJDb250ZW50RGl2KTsNCiAgICB2YXIgY29udGVudCA9IGdldFJhd09iamVj dChtX3RhYkNvbnRlbnREaXYgKyAiVGFiTmF2Iik7DQogICAgaWYgKGNvbnRlbnQg IT0gbnVsbCAmJiBtX3RhYkNvbnRlbnREaXYpIHsNCiAgICAgICAgaWYgKG1fYWN0 aXZlVGFiLmlkICE9IG1fdGFiQ29udGVudERpdikgew0KICAgICAgICAgICAgc3Jj LmNsYXNzTmFtZSA9ICJpbmFjdGl2ZXRhYiI7DQogICAgICAgICAgICBnZXRSYXdP YmplY3Qoc3JjLmlkICsgImNvbnRlbnQiKS5jbGFzc05hbWUgPSAiaW5hY3RpdmV0 YWJjb250ZW50IjsNCiAgICAgICAgICAgIGlmIChtX2FjdGl2ZVRhYiAhPSBudWxs KSB7DQogICAgICAgICAgICAgICAgbV9hY3RpdmVUYWIuc3R5bGUuekluZGV4ID0g MjsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgICBjb250ZW50LnN0 eWxlLmRpc3BsYXkgPSAibm9uZSI7DQogICAgICAgIG1fdGFiQ29udGVudERpdiA9 IG51bGw7DQogICAgfQ0KfQ0KZnVuY3Rpb24gU3ViTmF2RXZlbnRBY3RpdmVTdHJp bmcoc3RyKSB7DQogICAgU3ViTmF2RXZlbnRBY3RpdmVPcGVuKGdldFJhd09iamVj dChzdHIpKTsNCn0NCg0KZnVuY3Rpb24gU3ViTmF2RXZlbnRBY3RpdmUoc3JjKSB7 DQogICAgdmFyIGlkID0gc3JjLmF0dHIoImlkIik7DQogICAgbV90aW1lb3V0T3Bl bkRlbGF5ID0gc2V0VGltZW91dCgiU3ViTmF2RXZlbnRBY3RpdmVPcGVuKCciICsg aWQgKyAiJykiLCAxNTApOw0KfQ0KZnVuY3Rpb24gU3ViTmF2RXZlbnRBY3RpdmVP cGVuKHNyYykgew0KICAgIHZhciBvYmogPSBnZXRSYXdPYmplY3Qoc3JjKTsNCiAg ICBzcmMgPSAkaignIycgKyBzcmMpOw0KICAgIGlmIChzcmMgPT0gdW5kZWZpbmVk KSB7DQogICAgICAgIHJldHVybjsNCiAgICB9DQogICAgdmFyIGlkID0gc3JjLmF0 dHIoImlkIik7DQogICAgdmFyIGxpbmsgPSAkaignIycgKyBpZCArICdsaW5rJyk7 DQogICAgdmFyIGNvbnRlbnQgPSAkaignIycgKyBpZCArICdjb250ZW50Jyk7DQog ICAgdmFyIGNhcnJvdCA9ICRqKCcjJyArIGlkICsgJ2NhcnJvdCcpOw0KICAgIHZh ciBjZWxsID0gJGooJyMnICsgaWQgKyAnY2VsbCcpOw0KICAgIHZhciBpc0ZpcnN0 ID0gZmFsc2U7DQogICAgdmFyIGlzTGFzdCA9IGZhbHNlOw0KICAgIHZhciBub01l bnUgPSBmYWxzZTsNCiAgICBpZiAobV90aW1lb3V0Q2xvc2VEZWxheSkgew0KICAg ICAgICBDbGVhclN1Yk5hdlRpbWVPdXQoZmFsc2UpOw0KICAgIH0NCiAgICBpZiAo bV90YWJDb250ZW50RGl2ICE9IGlkKSB7DQogICAgICAgIGlmIChtX3RhYkNvbnRl bnREaXYgIT0gbnVsbCkgew0KICAgICAgICAgICAgU3ViTmF2RXZlbnRJbkFjdGl2 ZUNsb3NlKCk7DQogICAgICAgIH0NCiAgICAgICAgbV90YWJDb250ZW50RGl2ID0g aWQ7DQogICAgICAgIGlmIChzcmMgIT0gbnVsbCkgew0KICAgICAgICAgICAgaWYg KHNyYy5hdHRyKCJjbGFzcyIpID09ICJzdWJuYXZsaW5rY29udGFpbmVyZmlyc3Qi KSB7DQogICAgICAgICAgICAgICAgaXNGaXJzdCA9IHRydWU7DQogICAgICAgICAg ICAgICAgc3JjLmF0dHIoImNsYXNzIiwgInN1Ym5hdmxpbmtjb250YWluZXJmaXJz dHNlbGVjdGVkIik7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBpZiAoc3Jj LmF0dHIoImNsYXNzIikgPT0gInN1Ym5hdmxpbmtjb250YWluZXJsYXN0Iikgew0K ICAgICAgICAgICAgICAgIGlzTGFzdCA9IHRydWU7DQogICAgICAgICAgICAgICAg c3JjLmF0dHIoImNsYXNzIiwgInN1Ym5hdmxpbmtjb250YWluZXJsYXN0c2VsZWN0 ZWQiKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGlmIChzcmMuYXR0cigi Y2xhc3MiKSA9PSAic3VibmF2bGlua2NvbnRhaW5lcmZpcnN0bm9tZW51Iikgew0K ICAgICAgICAgICAgICAgIGlzRmlyc3QgPSB0cnVlOw0KCQkJCW5vTWVudSA9IHRy dWU7DQogICAgICAgICAgICAgICAgc3JjLmF0dHIoImNsYXNzIiwgInN1Ym5hdmxp bmtjb250YWluZXJmaXJzdG5vbWVudXNlbGVjdGVkIik7DQogICAgICAgICAgICB9 DQogICAgICAgICAgICBpZiAoc3JjLmF0dHIoImNsYXNzIikgPT0gInN1Ym5hdmxp bmtjb250YWluZXJsYXN0bm9tZW51Iikgew0KICAgICAgICAgICAgICAgIGlzTGFz dCA9IHRydWU7DQoJCQkJbm9NZW51ID0gdHJ1ZTsNCiAgICAgICAgICAgICAgICBz cmMuYXR0cigiY2xhc3MiLCAic3VibmF2bGlua2NvbnRhaW5lcmxhc3Rub21lbnVz ZWxlY3RlZCIpOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgaWYgKHNyYy5h dHRyKCJjbGFzcyIpID09ICJzdWJuYXZsaW5rY29udGFpbmVyIikgew0KICAgICAg ICAgICAgICAgIHNyYy5hdHRyKCJjbGFzcyIsICJzdWJuYXZsaW5rY29udGFpbmVy c2VsZWN0ZWQiKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGlmIChzcmMu YXR0cigiY2xhc3MiKSA9PSAic3VibmF2bGlua2NvbnRhaW5lcm5vbWVudSIpIHsN CgkJCQlub01lbnUgPSB0cnVlOw0KICAgICAgICAgICAgICAgIHNyYy5hdHRyKCJj bGFzcyIsICJzdWJuYXZsaW5rY29udGFpbmVybm9tZW51c2VsZWN0ZWQiKTsNCiAg ICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgICBpZiAoY2VsbCAhPSBudWxs KSB7DQogICAgICAgICAgICBpZiAoY2VsbC5hdHRyKCJjbGFzcyIpID09ICJzdWJu YXZsaW5rY2VsbCIpIHsNCgkJCQlpZiAobm9NZW51KSB7DQoJICAgICAgICAgICAg ICAgIGNlbGwuYXR0cigiY2xhc3MiLCAic3VibmF2bGlua2NlbGxub21lbnVzZWxl Y3RlZCIpOw0KCQkJCX0NCgkJCQllbHNlIHsNCgkgICAgICAgICAgICAgICAgY2Vs bC5hdHRyKCJjbGFzcyIsICJzdWJuYXZsaW5rY2VsbHNlbGVjdGVkIik7DQoJICAg ICAgICAgICAgfQ0KCQkJfQ0KICAgICAgICB9DQogICAgICAgIGlmIChsaW5rICE9 IG51bGwpIHsNCiAgICAgICAgICAgIGlmIChpZC5pbmRleE9mKCJ1bmRlZmluZWQi KSA+IC0xKSB7DQogICAgICAgICAgICAgICAgbGluay5hdHRyKCJjbGFzcyIsICJz dWJuYXZsaW5rbm9tZW51c2VsZWN0ZWQiKTsNCiAgICAgICAgICAgIH0NCiAgICAg ICAgICAgIGVsc2Ugew0KICAgICAgICAgICAgICAgIGxpbmsuYXR0cigiY2xhc3Mi LCAic3VibmF2bGlua3NlbGVjdGVkIik7DQogICAgICAgICAgICB9DQogICAgICAg ICAgICBpZiAoY2Fycm90ICE9IG51bGwpIHsNCiAgICAgICAgICAgICAgICBjYXJy b3QuYXR0cigic3JjIiwgbV9pbWdQZnggKyAiL2ltYWdlcy9nbG9iYWwvYnJhbmQv dWkvIiArIChtX2lzQWxpZW53YXJlVGhlbWUgPyAibnhnZW4iIDogInN0b3JtODAi KSArICIvbmF2X3VwLmdpZiIpOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQog ICAgICAgIGlmIChjb250ZW50ICE9IG51bGwpIHsNCiAgICAgICAgICAgIHRyeSB7 DQogICAgICAgICAgICAgICAgaWYgKFNjcmVlbi5BdmFpbGFibGVXaWR0aCA8IChv Ymoub2Zmc2V0TGVmdCArICRqKCIjbG9nb2NvbnRhaW5lciIpLndpZHRoKCkgKyAo Y29udGVudC53aWR0aCgpIC0gMSkgKyAxKSB8fCBtX21hc3RoZWFkV2lkdGhOZXh0 R2VuIDwgKG9iai5vZmZzZXRMZWZ0ICsgJGooIiNsb2dvY29udGFpbmVyIikud2lk dGgoKSArIChjb250ZW50LndpZHRoKCkgLSAxKSArIDEpIHx8IGlzTGFzdCkgew0K ICAgICAgICAgICAgICAgICAgICBjb250ZW50LmNzcygnbGVmdCcsIG9iai5vZmZz ZXRMZWZ0IC0gY29udGVudC53aWR0aCgpICsgb2JqLm9mZnNldFdpZHRoICsgKGlz TGFzdD8wOjEpKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAg ZWxzZSB7DQogICAgICAgICAgICAgICAgICAgIGlmIChtX2lzUnRsICYmICFpc0Zp cnN0KSB7DQogICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50LmNzcygnbGVm dCcsIG9iai5vZmZzZXRMZWZ0IC0gY29udGVudC53aWR0aCgpICsgb2JqLm9mZnNl dFdpZHRoICsgKGlzTGFzdD8wOjIpKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0K ICAgICAgICAgICAgICAgICAgICBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAg ICAgIGNvbnRlbnQuY3NzKCdsZWZ0JywgKG9iai5vZmZzZXRMZWZ0IC0gKGlzRmly c3Q/MDoxKSkgKyAicHgiKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAg ICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBpZiAoY2VsbCAhPSBudWxsICYm IGNlbGwuaGVpZ2h0KCkgIT0gbnVsbCkgew0KICAgICAgICAgICAgICAgICAgICBj b250ZW50LmNzcygidG9wIiwgY2VsbC5oZWlnaHQoKSAtIDMgKyAicHgiKTsNCiAg ICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgZWxzZSB7DQogICAgICAg ICAgICAgICAgICAgIGNvbnRlbnQuY3NzKCJ0b3AiLCBvYmoub2Zmc2V0VG9wICsg b2JqLm9mZnNldEhlaWdodCAtIDMgKyAicHgiKTsNCiAgICAgICAgICAgICAgICB9 DQogICAgICAgICAgICAgICAgY29udGVudC5jc3MoImRpc3BsYXkiLCAiYmxvY2si KTsNCiAgICAgICAgICAgICAgICBjb250ZW50LmJnaWZyYW1lKCk7DQogICAgICAg ICAgICAgICAgdmFyIGZseW91dGRhdGEgPSBjb250ZW50Lmh0bWwoKTsNCiAgICAg ICAgICAgICAgICBpZiAoZmx5b3V0ZGF0YSAhPSBudWxsIHx8IGZseW91dGRhdGEg IT0gdW5kZWZpbmVkKSB7DQogICAgICAgICAgICAgICAgICAgIGlmIChmbHlvdXRk YXRhLmluZGV4T2YoInVuaXF1ZXBsYWNlaG9sZGVySUQiKSA9PSAtMSkgew0KICAg ICAgICAgICAgICAgICAgICAgICAgdHJ5IHsNCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICB2YXIgY29udGVudGlkID0gY29udGVudC5hdHRyKCJpZCIpOw0KICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjb250ZW50RGl2ID0gJGooJyMn ICsgY29udGVudGlkKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAo Y29udGVudERpdi5odG1sKCkuaW5kZXhPZigibmFtZT1cIiIgKyBpZC5zdWJzdHJp bmcoMywgaWQubGVuZ3RoKSArICJcIiIpID09IC0xKSB7DQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGlmIChjb250ZW50aWQgPT0gIm1oX215YWNjb3Vu dGNvbnRlbnQiKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBjb250ZW50RGl2Lmh0bWwoIjxkaXYgaWQ9XCJwYmFyY29udGVudFwiIG5hbWU9 XCIiICsgaWQuc3Vic3RyaW5nKDMsIGlkLmxlbmd0aCkgKyAiXCIgY2xhc3M9XCJw YmFyY29udGVudFwiPjxpZnJhbWUgb25tb3VzZW92ZXI9XCJDbGVhclN1Yk5hdlRp bWVPdXQodHJ1ZSk7XCIgb25tb3VzZW91dD1cIkNsZWFySXNJZnJhbWUoKVwiIHdp ZHRoPVwiMjI4XCIgaWQ9XCJteWZyYW1lXCIgc2Nyb2xsaW5nPVwiYXV0b1wiIGZy YW1lYm9yZGVyPVwiMFwiIG5hbWU9XCJteWZyYW1lXCIgc3JjPVwiIiArIG1fcGJh clBmeCArICIvcGJhci9hamF4LmFzcHg/fnBzYz1teWFjY291bnRcIj48L2lmcmFt ZT48L2Rpdj4iKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0K ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsNCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFzeW5jWERvbWFpbklmcmFtZUNh bGwobV9wYmFyUGZ4ICsgIi9wYmFyL2FqYXguYXNweD9+cHNjPSIgKyBpZC5zdWJz dHJpbmcoMywgaWQubGVuZ3RoKSwgdGFiY29udGVudGFqYXgpOw0KICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAg ICAgICAgICAgICAgY2F0Y2ggKGUpDQoJCQkgICAgICAgICAgICB7IH0NCiAgICAg ICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAg IH0NCiAgICAgICAgICAgIGNhdGNoIChlKQ0KCQkJICAgICAgICAgICAgeyB9DQog ICAgICAgIH0NCiAgICB9DQp9DQoNCmZ1bmN0aW9uIFRlck5hdkV2ZW50QWN0aXZl KHNyYykgew0KICAgIHZhciBpZCA9IHNyYy5hdHRyKCJpZCIpOw0KICAgIG1fdGlt ZW91dFRlck9wZW5EZWxheSA9IHNldFRpbWVvdXQoIlRlck5hdkV2ZW50QWN0aXZl T3BlbignIiArIGlkICsgIicpIiwgMTUwKTsNCn0NCmZ1bmN0aW9uIFRlck5hdkV2 ZW50QWN0aXZlT3BlbihzcmMpIHsNCiAgICB2YXIgb2JqID0gZ2V0UmF3T2JqZWN0 KHNyYyk7DQogICAgc3JjID0gJGooJyMnICsgc3JjKTsNCiAgICBpZiAoc3JjID09 IHVuZGVmaW5lZCkgew0KICAgICAgICByZXR1cm47DQogICAgfQ0KICAgIHZhciBp ZCA9IHNyYy5hdHRyKCJpZCIpOw0KICAgIHZhciBjb250ZW50ID0gJGooJyMnICsg aWQgKyAnc3ViY29udGVudCcpOw0KICAgIGlmIChtX3RpbWVvdXRUZXJDbG9zZURl bGF5KSB7DQogICAgICAgIENsZWFyVGVyTmF2VGltZU91dChmYWxzZSk7DQogICAg fQ0KICAgIGlmIChtX3RhYlRlckNvbnRlbnREaXYgIT0gaWQpIHsNCiAgICAgICAg aWYgKG1fdGFiVGVyQ29udGVudERpdiAhPSBudWxsKSB7DQogICAgICAgICAgICBU ZXJOYXZFdmVudEluQWN0aXZlQ2xvc2UoKTsNCiAgICAgICAgfQ0KICAgICAgICBt X3RhYlRlckNvbnRlbnREaXYgPSBpZDsNCiAgICAgICAgaWYgKGNvbnRlbnQgIT0g bnVsbCkgew0KICAgICAgICAgICAgdHJ5IHsNCiAgICAgICAgICAgICAgICBjb250 ZW50LmNzcygnbGVmdCcsIG9iai5vZmZzZXRXaWR0aCArICJweCIpOw0KICAgICAg ICAgICAgICAgIGNvbnRlbnQuY3NzKCJ0b3AiLCBvYmoub2Zmc2V0VG9wIC0gMyAr ICJweCIpOw0KICAgICAgICAgICAgICAgIGNvbnRlbnQuY3NzKCJkaXNwbGF5Iiwg ImJsb2NrIik7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBjYXRjaCAoZSkN CgkJCXsgfQ0KICAgICAgICB9DQogICAgfQ0KfQ0KDQpmdW5jdGlvbiBDbGVhcklz SWZyYW1lKCkgew0KICAgIG1fbWFJZnJhbWUgPSBmYWxzZTsNCn0NCmZ1bmN0aW9u IENsZWFyU3ViTmF2VGltZU91dChpc0lmcmFtZSkgew0KICAgIGNsZWFyVGltZW91 dChtX3RpbWVvdXRDbG9zZURlbGF5KTsNCiAgICBtX3RpbWVvdXRDbG9zZURlbGF5 ID0gbnVsbDsNCiAgICBtX21hSWZyYW1lID0gaXNJZnJhbWU7DQp9DQpmdW5jdGlv biBDbGVhclN1Yk5hdk9wZW5UaW1lT3V0KCkgew0KICAgIGNsZWFyVGltZW91dCht X3RpbWVvdXRPcGVuRGVsYXkpOw0KICAgIG1fdGltZW91dE9wZW5EZWxheSA9IG51 bGw7DQp9DQpmdW5jdGlvbiBDbGVhclRlck5hdlRpbWVPdXQoaXNJZnJhbWUpIHsN CiAgICBjbGVhclRpbWVvdXQobV90aW1lb3V0VGVyQ2xvc2VEZWxheSk7DQogICAg bV90aW1lb3V0VGVyQ2xvc2VEZWxheSA9IG51bGw7DQp9DQpmdW5jdGlvbiBDbGVh clRlck5hdk9wZW5UaW1lT3V0KCkgew0KICAgIGNsZWFyVGltZW91dChtX3RpbWVv dXRUZXJPcGVuRGVsYXkpOw0KICAgIG1fdGltZW91dFRlck9wZW5EZWxheSA9IG51 bGw7DQp9DQpmdW5jdGlvbiBTdWJOYXZFdmVudEluQWN0aXZlKHNyYykgew0KICAg IENsZWFyU3ViTmF2T3BlblRpbWVPdXQoKTsNCiAgICBpZiAoIW1fdGltZW91dENs b3NlRGVsYXkpIHsNCiAgICAgICAgbV90aW1lb3V0Q2xvc2VEZWxheSA9IHNldFRp bWVvdXQoIlN1Yk5hdkV2ZW50SW5BY3RpdmVDbG9zZSgpIiwgNTAwKTsNCiAgICB9 DQp9DQpmdW5jdGlvbiBTdWJOYXZFdmVudEluQWN0aXZlQ2xvc2UoKSB7DQogICAg aWYgKG1fdGFiQ29udGVudERpdiAmJiAhbV9tYUlmcmFtZSkgew0KICAgICAgICB2 YXIgc3JjID0gZ2V0UmF3T2JqZWN0KG1fdGFiQ29udGVudERpdik7DQogICAgICAg IGlmIChzcmMpIHsNCiAgICAgICAgICAgIHZhciBsaW5rID0gZ2V0UmF3T2JqZWN0 KG1fdGFiQ29udGVudERpdiArICJsaW5rIik7DQogICAgICAgICAgICB2YXIgY29u dGVudCA9IGdldFJhd09iamVjdChtX3RhYkNvbnRlbnREaXYgKyAiY29udGVudCIp Ow0KICAgICAgICAgICAgdmFyIGNhcnJvdCA9IGdldFJhd09iamVjdChtX3RhYkNv bnRlbnREaXYgKyAiY2Fycm90Iik7DQogICAgICAgICAgICB2YXIgY2VsbCA9IGdl dFJhd09iamVjdChtX3RhYkNvbnRlbnREaXYgKyAiY2VsbCIpOw0KICAgICAgICAg ICAgaWYgKHNyYyAhPSBudWxsKSB7DQogICAgICAgICAgICAgICAgaWYgKHNyYy5j bGFzc05hbWUgPT0gInN1Ym5hdmxpbmtjb250YWluZXJmaXJzdHNlbGVjdGVkIikg ew0KICAgICAgICAgICAgICAgICAgICBzcmMuY2xhc3NOYW1lID0gInN1Ym5hdmxp bmtjb250YWluZXJmaXJzdCI7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAg ICAgICAgIGlmIChzcmMuY2xhc3NOYW1lID09ICJzdWJuYXZsaW5rY29udGFpbmVy bGFzdHNlbGVjdGVkIikgew0KICAgICAgICAgICAgICAgICAgICBzcmMuY2xhc3NO YW1lID0gInN1Ym5hdmxpbmtjb250YWluZXJsYXN0IjsNCiAgICAgICAgICAgICAg ICB9DQogICAgICAgICAgICAgICAgaWYgKHNyYy5jbGFzc05hbWUgPT0gInN1Ym5h dmxpbmtjb250YWluZXJmaXJzdG5vbWVudXNlbGVjdGVkIikgew0KICAgICAgICAg ICAgICAgICAgICBzcmMuY2xhc3NOYW1lID0gInN1Ym5hdmxpbmtjb250YWluZXJm aXJzdG5vbWVudSI7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAg IGlmIChzcmMuY2xhc3NOYW1lID09ICJzdWJuYXZsaW5rY29udGFpbmVybGFzdG5v bWVudXNlbGVjdGVkIikgew0KICAgICAgICAgICAgICAgICAgICBzcmMuY2xhc3NO YW1lID0gInN1Ym5hdmxpbmtjb250YWluZXJsYXN0bm9tZW51IjsNCiAgICAgICAg ICAgICAgICB9DQogICAgICAgICAgICAgICAgaWYgKHNyYy5jbGFzc05hbWUgPT0g InN1Ym5hdmxpbmtjb250YWluZXJzZWxlY3RlZCIpIHsNCiAgICAgICAgICAgICAg ICAgICAgc3JjLmNsYXNzTmFtZSA9ICJzdWJuYXZsaW5rY29udGFpbmVyIjsNCiAg ICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgaWYgKHNyYy5jbGFzc05h bWUgPT0gInN1Ym5hdmxpbmtjb250YWluZXJub21lbnVzZWxlY3RlZCIpIHsNCiAg ICAgICAgICAgICAgICAgICAgc3JjLmNsYXNzTmFtZSA9ICJzdWJuYXZsaW5rY29u dGFpbmVybm9tZW51IjsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9 DQogICAgICAgICAgICBpZiAoY2VsbCAhPSBudWxsKSB7DQoNCiAgICAgICAgICAg ICAgICBpZiAoKGNlbGwuY2xhc3NOYW1lID09ICJzdWJuYXZsaW5rY2VsbHNlbGVj dGVkIikgfHwgKGNlbGwuY2xhc3NOYW1lID09ICJzdWJuYXZsaW5rY2VsbG5vbWVu dXNlbGVjdGVkIikpIHsNCiAgICAgICAgICAgICAgICAgICAgY2VsbC5jbGFzc05h bWUgPSAic3VibmF2bGlua2NlbGwiOw0KICAgICAgICAgICAgICAgIH0NCiAgICAg ICAgICAgIH0NCiAgICAgICAgICAgIGlmIChsaW5rICE9IG51bGwpIHsNCiAgICAg ICAgICAgICAgICBpZiAobGluay5jbGFzc05hbWUgPT0gInN1Ym5hdmxpbmtzZWxl Y3RlZCIpIHsNCiAgICAgICAgICAgICAgICAgICAgbGluay5jbGFzc05hbWUgPSAi c3VibmF2bGluayI7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAg IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICBsaW5rLmNsYXNzTmFtZSA9ICJz dWJuYXZsaW5rbm9tZW51IjsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAg ICAgICAgaWYgKGNhcnJvdCAhPSBudWxsKSB7DQogICAgICAgICAgICAgICAgICAg IGNhcnJvdC5zcmMgPSBtX2ltZ1BmeCArICIvaW1hZ2VzL2dsb2JhbC9icmFuZC91 aS8iICsgKG1faXNBbGllbndhcmVUaGVtZSA/ICJueGdlbiIgOiAic3Rvcm04MCIp ICsgIi9uYXZfZG93bi5naWYiOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAg ICAgIH0NCiAgICAgICAgICAgIGlmIChjb250ZW50ICE9IG51bGwpIHsNCiAgICAg ICAgICAgICAgICBjb250ZW50LnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7DQogICAg ICAgICAgICB9DQogICAgICAgICAgICBtX3RhYkNvbnRlbnREaXYgPSBudWxsOw0K ICAgICAgICB9DQogICAgfQ0KfQ0KDQpmdW5jdGlvbiBUZXJOYXZFdmVudEluQWN0 aXZlKHNyYykgew0KICAgIENsZWFyVGVyTmF2T3BlblRpbWVPdXQoKTsNCiAgICBp ZiAoIW1fdGltZW91dFRlckNsb3NlRGVsYXkpIHsNCiAgICAgICAgbV90aW1lb3V0 VGVyQ2xvc2VEZWxheSA9IHNldFRpbWVvdXQoIlRlck5hdkV2ZW50SW5BY3RpdmVD bG9zZSgpIiwgNTAwKTsNCiAgICB9DQp9DQoNCmZ1bmN0aW9uIFRlck5hdkV2ZW50 SW5BY3RpdmVDbG9zZSgpIHsNCiAgICBpZiAobV90YWJUZXJDb250ZW50RGl2ICYm ICFtX21hSWZyYW1lKSB7DQogICAgICAgIHZhciBzcmMgPSBnZXRSYXdPYmplY3Qo bV90YWJUZXJDb250ZW50RGl2KTsNCiAgICAgICAgaWYgKHNyYykgew0KICAgICAg ICAgICAgdmFyIGNvbnRlbnQgPSBnZXRSYXdPYmplY3QobV90YWJUZXJDb250ZW50 RGl2ICsgInN1YmNvbnRlbnQiKTsNCiAgICAgICAgICAgIGlmIChjb250ZW50ICE9 IG51bGwpIHsNCiAgICAgICAgICAgICAgICBjb250ZW50LnN0eWxlLmRpc3BsYXkg PSAibm9uZSI7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBtX3RhYlRlckNv bnRlbnREaXYgPSBudWxsOw0KICAgICAgICB9DQogICAgfQ0KfQ0KDQpmdW5jdGlv biByZW5kZXJTdWJOYXZMaW5rcygpIHsNCiAgICBpZiAobV9pc1J0bCkgew0KICAg ICAgICBzdWJOYXZMaW5rc0FsaWduID0gImxlZnQiOw0KICAgIH0NCiAgICBlbHNl IHsNCiAgICAgICAgc3ViTmF2TGlua3NBbGlnbiA9ICJyaWdodCI7DQogICAgfQ0K ICAgIGRvY3VtZW50LndyaXRlKCI8ZGl2IHN0eWxlPVwid2lkdGg6MTAwJVwiPjx0 YWJsZSBjZWxscGFkZGluZz1cIjBcIiBjZWxsc3BhY2luZz1cIjBcIiBib3JkZXI9 XCIwXCIgaGVpZ2h0PVwiMjJcIiBhbGlnbj1cIiIgKyBzdWJOYXZMaW5rc0FsaWdu ICsgIlwiPjx0cj4iKTsNCiAgICBmb3IgKHZhciBuID0gMDsgbiA8IG1fcG5saW5r cy5sZW5ndGg7IG4rKykgew0KICAgICAgICBpZiAobiA+IDApIHsNCiAgICAgICAg ICAgIGRvY3VtZW50LndyaXRlKCI8dGQgPjxpbWcgc3JjPVwiIiArIG1faW1nUGZ4 ICsgIi9pbWFnZXMvZ2xvYmFsL2dlbmVyYWwvc3BhY2VyLmdpZlwiIHdpZHRoPVwi MjBcIiBoZWlnaHQ9XCIxXCIgYWx0PVwiXCI+PC90ZD4iKTsNCiAgICAgICAgfQ0K ICAgICAgICB2YXIgaHJlZiA9IG1fcG5saW5rc1tuXS5IcmVmOw0KICAgICAgICB2 YXIgaWNvbiA9IG1fcG5saW5rc1tuXS5JY29uOw0KICAgICAgICB2YXIgdGFyZ2V0 ID0gbV9wbmxpbmtzW25dLlRhcmdldDsNCiAgICAgICAgaWYgKGljb24gJiYgbV9z dWJOYXZJY29uc0Rpc3BsYXkpIHsNCiAgICAgICAgICAgIGlmIChocmVmICE9IG51 bGwgJiYgaHJlZi5sZW5ndGggPiAwKSB7DQogICAgICAgICAgICAgICAgaWYgKHRh cmdldCAhPSBudWxsICYmIHRhcmdldC5sZW5ndGggPiAwICYmIG1fcG5saW5rc1tu XS5PZmZEZWxsKSB7DQogICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LndyaXRl KCI8dGQgdmFsaWduPVwibWlkZGxlXCI+PGEgdGFyZ2V0ID1cIiIgKyB0YXJnZXQg KyAiXCJocmVmPVwiIiArIGhyZWYgKyAiXCI+PGltZyBzcmM9XCIiICsgbV9pbWdQ ZnggKyAiL2ltYWdlcy9nbG9iYWwvYnJhbmQvaWNvbnMvIiArIGljb24gKyAiLmdp ZlwiIGJvcmRlcj1cIjBcIiBhbHQ9XCJcIj48L2E+PC90ZD4iKTsNCiAgICAgICAg ICAgICAgICB9DQogICAgICAgICAgICAgICAgZWxzZSB7DQogICAgICAgICAgICAg ICAgICAgIGRvY3VtZW50LndyaXRlKCI8dGQgdmFsaWduPVwibWlkZGxlXCI+PGEg aHJlZj1cIiIgKyBocmVmICsgIlwiPjxpbWcgc3JjPVwiIiArIG1faW1nUGZ4ICsg Ii9pbWFnZXMvZ2xvYmFsL2JyYW5kL2ljb25zLyIgKyBpY29uICsgIi5naWZcIiBi b3JkZXI9XCIwXCIgYWx0PVwiXCI+PC9hPjwvdGQ+Iik7DQogICAgICAgICAgICAg ICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZWxzZSB7DQogICAgICAg ICAgICAgICAgZG9jdW1lbnQud3JpdGUoIjx0ZCB2YWxpZ249XCJtaWRkbGVcIj48 aW1nIHNyYz1cIiIgKyBtX2ltZ1BmeCArICIvaW1hZ2VzL2dsb2JhbC9icmFuZC9p Y29ucy8iICsgaWNvbiArICIuZ2lmXCIgYm9yZGVyPVwiMFwiIGFsdD1cIlwiPjwv dGQ+Iik7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgICAgaWYgKGhy ZWYgIT0gbnVsbCAmJiBocmVmLmxlbmd0aCA+IDApIHsNCiAgICAgICAgICAgIGlm ICh0YXJnZXQgIT0gbnVsbCAmJiB0YXJnZXQubGVuZ3RoID4gMCAmJiBtX3BubGlu a3Nbbl0uT2ZmRGVsbCkgew0KICAgICAgICAgICAgICAgIGRvY3VtZW50LndyaXRl KCI8dGQgYWxpZ249XCIiICsgc3ViTmF2TGlua3NBbGlnbiArICJcIiB2YWxpZ249 XCJtaWRkbGVcIiBub3dyYXA9XCJ0cnVlXCI+PGEgdGFyZ2V0ID1cIiIgKyB0YXJn ZXQgKyAiXCJjbGFzcz1cImxua19jcnVtYlwiIGhyZWY9XCIiICsgaHJlZiArICJc Ij4iICsgbV9wbmxpbmtzW25dLlRleHQgKyAiPC9hPjwvdGQ+Iik7DQogICAgICAg ICAgICB9DQogICAgICAgICAgICBlbHNlIHsNCiAgICAgICAgICAgICAgICBkb2N1 bWVudC53cml0ZSgiPHRkIGFsaWduPVwiIiArIHN1Yk5hdkxpbmtzQWxpZ24gKyAi XCIgdmFsaWduPVwibWlkZGxlXCIgbm93cmFwPVwidHJ1ZVwiPjxhIGNsYXNzPVwi bG5rX2NydW1iXCIgaHJlZj1cIiIgKyBocmVmICsgIlwiPiIgKyBtX3BubGlua3Nb bl0uVGV4dCArICI8L2E+PC90ZD4iKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAg fQ0KICAgICAgICBlbHNlIHsNCiAgICAgICAgICAgIGRvY3VtZW50LndyaXRlKCI8 dGQgYWxpZ249XCIiICsgc3ViTmF2TGlua3NBbGlnbiArICJcIiB2YWxpZ249XCJt aWRkbGVcIiBub3dyYXA9XCJ0cnVlXCIgY2xhc3M9XCJsbmtfY3J1bWJcIj4iICsg bV9wbmxpbmtzW25dLlRleHQgKyAiPC90ZD4iKTsNCiAgICAgICAgfQ0KICAgIH0N CiAgICBkb2N1bWVudC53cml0ZSgiPC90cj48L3RhYmxlPjwvZGl2PiIpOw0KfQ0K ZnVuY3Rpb24gcmVuZGVyTGFuZ3VhZ2VUb2dnbGUoKSB7DQogICAgZG9jdW1lbnQu d3JpdGUoIjx0YWJsZSBjZWxscGFkZGluZz1cIjBcIiBjZWxsc3BhY2luZz1cIjBc IiBib3JkZXI9XCIwXCIgaGVpZ2h0PVwiMTBcIiBhbGlnbj1cInJpZ2h0XCI+PHRy PiIpOw0KICAgIGRvY3VtZW50LndyaXRlKCI8dGQgYWxpZ249XCJsZWZ0XCIgdmFs aWduPVwibWlkZGxlXCI+PGEgaHJlZj1cIiIgKyBtX2xhbmdTZWxlY3RvclVybCAr ICJcIj48aW1nIHNyYz1cIiIgKyBtX2ltZ1BmeCArICIvaW1hZ2VzL2dsb2JhbC9i cmFuZC9pY29ucy8iICsgbV9sYW5nU2VsZWN0b3JJY29uICsgIi5naWZcIiBib3Jk ZXI9XCIwXCIgYWx0PVwiXCI+PC9hPjwvdGQ+Iik7DQogICAgZG9jdW1lbnQud3Jp dGUoIjx0ZCBhbGlnbj1cImxlZnRcIiB2YWxpZ249XCJtaWRkbGVcIiBub3dyYXA9 XCJ0cnVlXCI+PGEgY2xhc3M9XCJsbmtfY3J1bWJcIiBocmVmPVwiIiArIG1fbGFu Z1NlbGVjdG9yVXJsICsgIlwiPiIgKyBtX2xhbmdTZWxlY3RvckNhcHRpb24gKyAi PC9hPjwvdGQ+Iik7DQogICAgZG9jdW1lbnQud3JpdGUoIjwvdHI+PC90YWJsZT4i KTsNCn0NCg0KDQpmdW5jdGlvbiBpc0dsb2JhbFBvcnRhbCgpDQp7DQoJdHJ5DQoJ ew0KCXZhciBnbG9iYWxQb3J0YWxDb29raWUgPSBnZXRDb29raWUoInBydDpQcm9m Iik7DQoNCgkJaWYgKGdsb2JhbFBvcnRhbENvb2tpZSAhPSAidW5kZWZpbmVkIikN CgkJew0KCQkJdmFyIGdsb2JhbFBvcnRhbENvb2tpZUVsZW1lbnRzID0gZ2xvYmFs UG9ydGFsQ29va2llLnNwbGl0KCImIik7DQoNCgkJCWlmIChnbG9iYWxQb3J0YWxD b29raWVFbGVtZW50cyAhPSAidW5kZWZpbmVkIikNCgkJCXsNCg0KCQkJCWZvciAo aT0wOyBpPGdsb2JhbFBvcnRhbENvb2tpZUVsZW1lbnRzLmxlbmd0aDsgaSsrKQ0K CQkJCXsNCgkJCQkJdmFyIGNvb2tpZUVsZW1lbnRzID0gZ2xvYmFsUG9ydGFsQ29v a2llRWxlbWVudHNbaV0uc3BsaXQoIj0iKTsNCgkJCQkJaWYgKGNvb2tpZUVsZW1l bnRzICE9ICJ1bmRlZmluZWQiICYmIGNvb2tpZUVsZW1lbnRzWzBdID09ICJzbmFt ZSIgJiYgY29va2llRWxlbWVudHNbMV0gPT0gIkdsb2JhbCBQb3J0YWwiKQ0KCQkJ CQl7DQoJCQkJCQlyZXR1cm4gdHJ1ZTsNCgkJCQkJfQ0KCQkJCX0NCgkJCX0NCgkJ fQ0KCX0NCgljYXRjaChlKXt9DQoJDQoJcmV0dXJuIGZhbHNlOw0KDQp9DQoNCmZ1 bmN0aW9uIHJlbmRlckNvdW50cnlTZWxlY3RvcigpIHsNCiAgICBkb2N1bWVudC53 cml0ZSgiPHRhYmxlIGNlbGxwYWRkaW5nPVwiMFwiIGNlbGxzcGFjaW5nPVwiMFwi IGJvcmRlcj1cIjBcIj48dHI+Iik7DQoNCnZhciBwZ3R5cGUgPSBpc0dsb2JhbFBv cnRhbCgpOw0KIA0KCWlmIChwZ3R5cGUpDQoJew0KCQlmbGFnID0gImdsb2JlIjsN Cgl9DQoNCiAgICBpZiAodHlwZW9mIChmbGFnKSAhPSAidW5kZWZpbmVkIiAmJiBm bGFnICE9IG51bGwgJiYgZmxhZy5sZW5ndGggPiAwKSB7DQogICAgICAgIGRvY3Vt ZW50LndyaXRlKCI8dGQ+PGltZyBzcmM9XCIiICsgbV9pbWdQZnggKyAiL2ltYWdl cy9nbG9iYWwvbWFzdGhlYWQvc21sZmxhZ3MvIiArIGZsYWcgKyAiLmdpZlwiIGFs dD1cIlwiIGJvcmRlcj1cIjBcIiAvPjx0ZD48dGQ+PGltZyBzcmM9XCIiICsgbV9p bWdQZnggKyAiL2ltYWdlcy9nbG9iYWwvZ2VuZXJhbC9zcGFjZXIuZ2lmXCIgaGVp Z2h0PVwiMVwiIHdpZHRoPVwiM1wiIGFsdD1cIlwiIC8+PC90ZD4iKTsNCiAgICB9 DQogICAgZG9jdW1lbnQud3JpdGUoIjx0ZCBub3dyYXA9XCJ0cnVlXCI+PGRpdiBp ZD1cImxvY2FsZXNlbGVjdG9ybGlua2RpdlwiIGNsYXNzPVwibG9jYWxlc2VsZWN0 b3JsaW5rZGl2XCIiKTsNCiAgICBpZiAoIW1faXNSY29tbSkgew0KICAgICAgICBk b2N1bWVudC53cml0ZSgib25jbGljaz1cImphdmFzY3JpcHQ6bG9jYWxlTWVudVRv Z2dsZSgpO1wiICBvbm1vdXNlb3V0PVwiamF2YXNjcmlwdDpkZWxheUxvY2FsZU1l bnVUb2dnbGUoKTtcIiBvbm1vdXNlb3Zlcj1cImphdmFzY3JpcHQ6bG9jYWxlTWVu dVRvZ2dsZURlbGF5Q2xlYXIoKTtcIiIpOw0KICAgIH0NCiAgICBkb2N1bWVudC53 cml0ZSgiPjx0YWJsZSBjZWxscGFkZGluZz1cIjBcIiBjZWxsc3BhY2luZz1cIjBc Ij48dHI+PHRkPjxkaXYgaWQ9XCJsb2NhbGVzZWxlY3RvcmxpbmtcIiAgY2xhc3M9 XCIiKTsNCiAgICBpZiAoIW1faXNSY29tbSkgew0KICAgICAgICBkb2N1bWVudC53 cml0ZSgibG9jYWxlc2VsZWN0b3JsaW5rIik7DQogICAgfQ0KICAgIGVsc2Ugew0K ICAgICAgICBkb2N1bWVudC53cml0ZSgibG9jYWxlc2VsZWN0b3J0ZXh0Iik7DQog ICAgfQ0KICAgIGRvY3VtZW50LndyaXRlKCJcIiA+PC9kaXY+PC90ZD48L3RyPjwv dGFibGU+PC9kaXY+Iik7DQogICAgaWYgKG1fbG9jYWxlU2VsZWN0b3IgIT0gInVu ZGVmaW5lZCIpIHsNCiAgICAgICAgZG9jdW1lbnQud3JpdGUoIjxkaXYgaWQ9XCJs b2NhbGVzZWxlY3RvcmRpdmhpZGRlblwiPiIpOw0KICAgICAgICBkb2N1bWVudC53 cml0ZShtX2xvY2FsZVNlbGVjdG9yKTsNCiAgICAgICAgZG9jdW1lbnQud3JpdGUo IjwvZGl2PjxkaXYgaWQ9XCJsb2NhbGVzZWxlY3RvcmRpdlwiIGNsYXNzPVwibG9j YWxlc2VsZWN0b3JoaWRkZW5cIiBvbm1vdXNlb3V0PVwiamF2YXNjcmlwdDpkZWxh eUxvY2FsZU1lbnVUb2dnbGUoKTtcIiBvbm1vdXNlb3Zlcj1cImphdmFzY3JpcHQ6 bG9jYWxlTWVudVRvZ2dsZURlbGF5Q2xlYXIoKTtcIj48L2Rpdj4iKTsNCiAgICAg ICAgdmFyIHNlbGxvY2FsZSA9ICRqKCIjbG9jYWxlc2VsZWN0b3JkaXZoaWRkZW4g c2VsZWN0IG9wdGlvbltAc2VsZWN0ZWRdIikudGV4dCgpOw0KICAgICAgICB2YXIg bG9jdGV4dCA9ICRqKCIjbG9jYWxlc2VsZWN0b3JsaW5rIik7DQogICAgICAgIGlm IChzZWxsb2NhbGUgIT0gbnVsbCAmJiBzZWxsb2NhbGUubGVuZ3RoID4gMCAmJiBt X2xvY2FsZVNlbGVjdG9yLmluZGV4T2YoInNlbGVjdGVkPVwic2VsZWN0ZWRcIiIp ICE9IC0xKSB7DQogICAgICAgICAgICBsb2N0ZXh0Lmh0bWwoc2VsbG9jYWxlKTsN CiAgICAgICAgfQ0KICAgICAgICBlbHNlIHsNCiAgICAgICAgICAgIGlmIChtX2Ny dW1icyAmJiBtX2NydW1ic1swXSkgew0KICAgICAgICAgICAgICAgIGlmIChtX2Ny dW1ic1swXS5UZXh0ICE9IG51bGwgJiYgbV9jcnVtYnNbMF0uVGV4dC5sZW5ndGgg PiAwKSB7DQogICAgICAgICAgICAgICAgICAgIGxvY3RleHQuaHRtbChtX2NydW1i c1swXS5UZXh0KTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQog ICAgICAgIH0NCg0KCWlmIChwZ3R5cGUpDQoJew0KCQlsb2N0ZXh0Lmh0bWwoIkds b2JhbCBQb3J0YWwiKTsNCgl9DQoNCiAgICAgICAgJGooZG9jdW1lbnQpLnJlYWR5 KGZ1bmN0aW9uKCkgew0KICAgICAgICAgICAgdmFyIGxvY2RpdiA9ICRqKCIjbG9j YWxlc2VsZWN0b3JkaXYiKTsNCiAgICAgICAgICAgIHZhciBsb2NvcHMgPSAkaigi I2xvY2FsZXNlbGVjdG9yZGl2aGlkZGVuIHNlbGVjdCBvcHRpb24iKTsNCiAgICAg ICAgICAgIHZhciBsb2NzZWwgPSAkaigiPHNlbGVjdCBzaXplPVwiNVwiIG9ua2V5 cHJlc3M9XCJpZihldmVudCAmJiBldmVudC53aGljaCA9PSAxMyB8fCBldmVudC5r ZXlDb2RlID09IDEzKXtkb2N1bWVudC5sb2NhdGlvbiA9IHRoaXMub3B0aW9uc1t0 aGlzLnNlbGVjdGVkSW5kZXhdLnZhbHVlOyBsb2NhbGVNZW51VG9nZ2xlKCB0cnVl ICk7fVwiIG9uQ2xpY2s9XCJpZiggdGhpcy5vcHRpb25zW3RoaXMuc2VsZWN0ZWRJ bmRleF0udmFsdWUgIT0gJycgKSBkb2N1bWVudC5sb2NhdGlvbiA9IHRoaXMub3B0 aW9uc1t0aGlzLnNlbGVjdGVkSW5kZXhdLnZhbHVlO2xvY2FsZU1lbnVUb2dnbGUo IHRydWUgKVwiPjwvc2VsZWN0PiIpOw0KICAgICAgICAgICAgbG9jZGl2LmFwcGVu ZChsb2NzZWwpOw0KICAgICAgICAgICAgbG9jb3BzLmVhY2goZnVuY3Rpb24oKSB7 DQogICAgICAgICAgICAgICAgdmFyIG9wID0gIjxvcHRpb24gdmFsdWU9XCIiICsg JGoodGhpcykuYXR0cigidmFsdWUiKSArICJcIiI7DQogICAgICAgICAgICAgICAg aWYgKCRqKHRoaXMpLmF0dHIoInNlbGVjdGVkIikgIT0gdW5kZWZpbmVkKSB7DQog ICAgICAgICAgICAgICAgICAgIG9wICs9ICIgc2VsZWN0ZWQ9XCJzZWxlY3RlZFwi ICI7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIG9wICs9ICI+ IiArICRqKHRoaXMpLnRleHQoKSArICI8L29wdGlvbj4iOw0KICAgICAgICAgICAg ICAgIGxvY3NlbC5hcHBlbmQob3ApOw0KICAgICAgICAgICAgfSk7DQogICAgICAg IH0pOw0KICAgIH0NCiAgICBkb2N1bWVudC53cml0ZSgiPC90cj48L3RhYmxlPiIp Ow0KfQ0KDQp2YXIgX2xvY2FsZU1lbnVUb2dnbGVEZWxheSA9IG51bGw7DQpmdW5j dGlvbiBkZWxheUxvY2FsZU1lbnVUb2dnbGUoKSB7DQogICAgbG9jYWxlTWVudVRv Z2dsZURlbGF5Q2xlYXIoKTsNCiAgICBfbG9jYWxlTWVudVRvZ2dsZURlbGF5ID0g c2V0VGltZW91dCgibG9jYWxlTWVudVRvZ2dsZSh0cnVlKSIsIDUwMCk7DQp9DQoN CmZ1bmN0aW9uIGxvY2FsZU1lbnVUb2dnbGVEZWxheUNsZWFyKCkgew0KICAgIGlm IChfbG9jYWxlTWVudVRvZ2dsZURlbGF5KSB7DQogICAgICAgIGNsZWFyVGltZW91 dChfbG9jYWxlTWVudVRvZ2dsZURlbGF5KTsNCiAgICAgICAgX2xvY2FsZU1lbnVU b2dnbGVEZWxheSA9IG51bGw7DQogICAgfQ0KfQ0KDQpmdW5jdGlvbiBsb2NhbGVN ZW51VG9nZ2xlKGZvcmNlQ2xvc2UpIHsNCiAgICB2YXIgbG9jc2VsID0gJGooIiNs b2NhbGVzZWxlY3RvcmRpdiIpOw0KICAgIHZhciBsb2NsaW5rID0gJGooIiNsb2Nh bGVzZWxlY3RvcmxpbmsiKTsNCiAgICB2YXIgbG9jZGl2ID0gJGooIiNsb2NhbGVz ZWxlY3RvcmxpbmtkaXYiKTsNCiAgICBpZiAobG9jc2VsLmF0dHIoImNsYXNzIikg PT0gImxvY2FsZXNlbGVjdG9yIiB8fCBmb3JjZUNsb3NlKSB7DQogICAgICAgIGxv Y3NlbC5hdHRyKCJjbGFzcyIsICJsb2NhbGVzZWxlY3RvcmhpZGRlbiIpOw0KICAg ICAgICBsb2NkaXYuYXR0cigiY2xhc3MiLCAibG9jYWxlc2VsZWN0b3JsaW5rZGl2 Iik7DQogICAgICAgIGxvY2xpbmsuYXR0cigiY2xhc3MiLCAibG9jYWxlc2VsZWN0 b3JsaW5rIik7DQogICAgfQ0KICAgIGVsc2Ugew0KICAgICAgICBsb2NzZWwuYXR0 cigiY2xhc3MiLCAibG9jYWxlc2VsZWN0b3IiKTsNCiAgICAgICAgbG9jZGl2LmF0 dHIoImNsYXNzIiwgImxvY2FsZXNlbGVjdG9ybGlua2RpdnNlbGVjdGVkIik7DQog ICAgICAgIGxvY2xpbmsuYXR0cigiY2xhc3MiLCAibG9jYWxlc2VsZWN0b3JsaW5r c2VsZWN0ZWQiKTsNCg0KICAgICAgICB2YXIgb2JqID0gZ2V0UmF3T2JqZWN0KCJs b2NhbGVzZWxlY3RvcmxpbmtkaXYiKTsNCiAgICAgICAgbG9jc2VsLmNzcygidG9w Iiwgb2JqLm9mZnNldFRvcCArIG9iai5vZmZzZXRIZWlnaHQgKyAicHgiKTsNCg0K ICAgICAgICAkaigiI2xvY2FsZXNlbGVjdG9yZGl2IHNlbGVjdCIpLmZvY3VzKCk7 DQogICAgfQ0KfQ0KDQpmdW5jdGlvbiByZW5kZXJNYXN0aGVhZENydW1icygpIHsg ICANCiAgICBkb2N1bWVudC53cml0ZSgiPGRpdiBjbGFzcz1cInBhcmFfY3J1bWJf NDNcIj4iKTsNCiAgICBmb3IgKHZhciBuID0gMTsgbiA8IG1fY3J1bWJzLmxlbmd0 aDsgbisrKSB7DQogICAgICAgIGlmIChuID4gMSkgew0KICAgICAgICAgICAgZG9j dW1lbnQud3JpdGUoIiZuYnNwOyYjODI1MDsmbmJzcDsiKTsNCiAgICAgICAgfQ0K ICAgICAgICBocmVmID0gbV9jcnVtYnNbbl0uSHJlZjsNCiAgICAgICAgdmFyIGNs b3NlR2lmID0gIiI7DQogICAgICAgIGlmIChtX2NydW1ic1tuXS5Jc0ZpbHRlcikg ew0KICAgICAgICAgICAgY2xvc2VHaWYgPSAiPGltZyBzdHlsZT1cInBhZGRpbmct bGVmdDozcHhcIiBzcmM9XCIiICsgbV9pbWdQZnggKyAiL2ltYWdlcy9nbG9iYWwv YnJhbmQvaWNvbnMvY2xvc2UucG5nXCIgYWx0PVwicmVtb3ZlZmlsdGVyXCIgYm9y ZGVyPVwiMFwiLz4mbmJzcDsiOw0KICAgICAgICB9DQogICAgICAgIGlmIChocmVm KSB7DQogICAgICAgICAgICBkb2N1bWVudC53cml0ZSgiPGEgY2xhc3M9XCIiICsg KCgobiArIDEpID09IG1fY3J1bWJzLmxlbmd0aCkgPyAibG5rX2NydW1iNDNzZWxl Y3RlZCIgOiAibG5rX2NydW1iNDMiKSArICJcIiBocmVmPVwiIiArIGhyZWYgKyAi XCI+IiArIG1fY3J1bWJzW25dLlRleHQgKyBjbG9zZUdpZiArICI8L2E+Iik7DQog ICAgICAgIH0NCiAgICAgICAgZWxzZSB7DQogICAgICAgICAgICBkb2N1bWVudC53 cml0ZSgiPHNwYW4gY2xhc3M9XCIiICsgKCgobiArIDEpID09IG1fY3J1bWJzLmxl bmd0aCkgPyAiY3J1bWJzZWw0M3NlbGVjdGVkIiA6ICJjcnVtYnNlbDQzIikgKyAi XCI+IiArIG1fY3J1bWJzW25dLlRleHQgKyAiPC9zcGFuPiIpOw0KICAgICAgICB9 DQogICAgfQ0KICAgIGRvY3VtZW50LndyaXRlKCI8L2Rpdj4iKTsNCn0NCg0KZnVu Y3Rpb24gcmVuZGVyTWFzdGhlYWRDcnVtYnNSdGwoKSB7DQogICAgZG9jdW1lbnQu d3JpdGUoIjxkaXYgY2xhc3M9XCJwYXJhX2NydW1iXzQzXCIiKTsNCiAgICBmb3Ig KHZhciBuID0gMTsgbiA8IG1fY3J1bWJzLmxlbmd0aDsgbisrKSB7DQogICAgICAg IGlmIChuID4gMSkgew0KICAgICAgICAgICAgZG9jdW1lbnQud3JpdGUoIiZuYnNw OyYjODI1MDsmbmJzcDsiKTsNCiAgICAgICAgfQ0KICAgICAgICBocmVmID0gbV9j cnVtYnNbbl0uSHJlZjsNCiAgICAgICAgdmFyIGNsb3NlR2lmID0gIiI7DQogICAg ICAgIGlmIChtX2NydW1ic1tuXS5Jc0ZpbHRlcikgew0KICAgICAgICAgICAgY2xv c2VHaWYgPSAiPGltZyBzdHlsZT1cInBhZGRpbmctbGVmdDozcHhcIiBzcmM9XCIi ICsgbV9pbWdQZnggKyAiL2ltYWdlcy9nbG9iYWwvYnJhbmQvaWNvbnMvY2xvc2Uu cG5nXCIgYWx0PVwicmVtb3ZlZmlsdGVyXCIgYm9yZGVyPVwiMFwiLz4mbmJzcDsi Ow0KICAgICAgICB9DQogICAgICAgIGlmIChocmVmKSB7DQogICAgICAgICAgICBk b2N1bWVudC53cml0ZSgiPGEgY2xhc3M9XCIiICsgKCgobiArIDEpID09IG1fY3J1 bWJzLmxlbmd0aCkgPyAibG5rX2NydW1iNDNzZWxlY3RlZCIgOiAibG5rX2NydW1i NDMiKSArICJcIiBocmVmPVwiIiArIGhyZWYgKyAiXCI+IiArIGNsb3NlR2lmICsg bV9jcnVtYnNbbl0uVGV4dCArICI8L2E+Iik7DQogICAgICAgIH0NCiAgICAgICAg ZWxzZSB7DQogICAgICAgICAgICBkb2N1bWVudC53cml0ZSgiPHNwYW4gY2xhc3M9 XCIiICsgKCgobiArIDEpID09IG1fY3J1bWJzLmxlbmd0aCkgPyAiY3J1bWJzZWw0 M3NlbGVjdGVkIiA6ICJjcnVtYnNlbDQzIikgKyAiXCI+IiArIG1fY3J1bWJzW25d LlRleHQgKyAiPC9zcGFuPiIpOw0KICAgICAgICB9DQogICAgfQ0KICAgIGRvY3Vt ZW50LndyaXRlKCI8L2Rpdj4iKTsNCn0NCmZ1bmN0aW9uIHJlbmRlckZvb3RlckNy dW1icygpIHsNCiAgICBkb2N1bWVudC53cml0ZSgiPHRhYmxlIHdpZHRoPVwiMTAw JVwiIGNlbGxzcGFjaW5nPVwiMFwiIHN0eWxlPVwidmVydGljYWwtYWxpZ246IG1p ZGRsZTtib3JkZXItYm90dG9tOiAxcHggc29saWQgI0VFRTtcIiBjZWxscGFkaW5n PVwiMFwiIGhlaWdodD1cIjI1XCIgYm9yZGVyPVwiMFwiPjx0cj48dGQgY2xhc3M9 XCJmb290ZXJjcnVtYmNlbGxcIj4iKTsNCiAgICBpZiAobV9pc1J0bCkNCiAgICAg ICAgcmVuZGVyTWFzdGhlYWRDcnVtYnNSdGwoKTsNCiAgICBlbHNlDQogICAgICAg IHJlbmRlck1hc3RoZWFkQ3J1bWJzKCk7DQogICAgZG9jdW1lbnQud3JpdGUoIjwv dGQ+PHRkIGFsaWduPVwicmlnaHRcIiBub3dyYXA9XCIxXCI+Iik7DQogICAgaWYg KG1faXNSdGwpDQogICAgICAgIHJlbmRlclByaW50RW1haWxMaW5rc1J0bCgpOw0K ICAgIGVsc2UNCiAgICAgICAgcmVuZGVyUHJpbnRFbWFpbExpbmtzKCk7DQogICAg ZG9jdW1lbnQud3JpdGUoIjwvdGQ+PC90cj48L3RhYmxlPiIpOw0KfQ0KZnVuY3Rp b24gY3J1bWJXaWR0aChjcnVtYikgew0KICAgIHZhciB0ZXh0ID0gY3J1bWIucmVw bGFjZShtX2NydW1iUmVnRXgxLCAiIik7DQogICAgdGV4dCA9IHRleHQucmVwbGFj ZShtX2NydW1iUmVnRXgyLCAiICIpOw0KICAgIHZhciBoYXNVbmljb2RlID0gZmFs c2U7DQogICAgZm9yIChuID0gMDsgbiA8IHRleHQubGVuZ3RoOyBuKyspIHsNCiAg ICAgICAgaWYgKHRleHQuY2hhckNvZGVBdChuKSA+IDB4MTAwMCkgew0KICAgICAg ICAgICAgaGFzVW5pY29kZSA9IHRydWU7DQogICAgICAgICAgICBicmVhazsNCiAg ICAgICAgfQ0KICAgIH0NCiAgICBpZiAoaGFzVW5pY29kZSkgew0KICAgICAgICBy ZXR1cm4gdGV4dC5sZW5ndGggKiBtX2F2Z0NoVzsNCiAgICB9DQogICAgZWxzZSB7 DQogICAgICAgIGlmIChtX2xhcmdlRm9udCkgew0KICAgICAgICAgICAgcmV0dXJu IHRleHQubGVuZ3RoICogODsNCiAgICAgICAgfQ0KICAgICAgICBlbHNlIHsNCiAg ICAgICAgICAgIHJldHVybiB0ZXh0Lmxlbmd0aCAqIDY7DQogICAgICAgIH0NCiAg ICB9DQp9DQpmdW5jdGlvbiByZW5kZXJQcmludEVtYWlsTGlua3MoKSB7DQogICAg aWYgKG1fcHJpbnRMaW5rIHx8IG1fZW1haWxMaW5rIHx8IG1faGVscExpbmspIHsN CiAgICAgICAgZG9jdW1lbnQud3JpdGUoIjxzcGFuIHN0eWxlPVwicGFkZGluZy1y aWdodDoxMHB4O1wiPiIpOw0KICAgICAgICBpZiAobV9lbWFpbExpbmspIHsNCiAg ICAgICAgICAgIHZhciBtX2VtYWlsc3ViamVjdCA9IGRvY3VtZW50LnRpdGxlOw0K ICAgICAgICAgICAgaWYgKHR5cGVvZiAobV9lbWFpbFN1YmplY3QpICE9ICJ1bmRl ZmluZWQiICYmIG1fZW1haWxTdWJqZWN0ICE9IG51bGwgJiYgbV9lbWFpbFN1Ympl Y3QubGVuZ3RoID4gMCkgew0KICAgICAgICAgICAgICAgIG1fZW1haWxzdWJqZWN0 ID0gbV9lbWFpbFN1YmplY3Q7DQogICAgICAgICAgICB9DQogICAgICAgICAgICB2 YXIgZW1haWxVcmwgPSAiamF2YXNjcmlwdDp2b2lkKGRvY3VtZW50LmxvY2F0aW9u LmhyZWY9IiArICInbWFpbHRvOj9zdWJqZWN0PSIgKyBtX2VtYWlsc3ViamVjdCAr ICImYm9keT0iICsgZG9jdW1lbnQubG9jYXRpb24uaHJlZi5yZXBsYWNlKC8lMjYv ZywgJyUyNTI2JykucmVwbGFjZSgvJi9nLCAnJTI1MjYnKSArICInKSI7DQogICAg ICAgICAgICBkb2N1bWVudC53cml0ZSgiPHNwYW4gc3R5bGU9XCJ2ZXJ0aWNhbC1h bGlnbjptaWRkbGU7XCI+PGEgaHJlZj1cIiIgKyBlbWFpbFVybCArICJcIj48aW1n IHNyYz1cIiIgKyBtX2ltZ1BmeCArICIvaW1hZ2VzL2dsb2JhbC9icmFuZC9pY29u cy9lbWFpbC5naWZcIiBib3JkZXI9XCIwXCIgYWx0PVwiIiArIG1fZW1haWxUZXh0 ICsgIlwiIC8+PC9hPjwvc3Bhbj4iKTsNCiAgICAgICAgICAgIGRvY3VtZW50Lndy aXRlKCI8c3BhbiBjbGFzcz1cInBhcmFfc21hbGxcIiBzdHlsZT1cInRleHQtYWxp Z246cmlnaHQ7dmVydGljYWwtYWxpZ246bWlkZGxlO3doaXRlLXNwYWNlOm5vd3Jh cDtcIj48YSBjbGFzcz1cImxua19zbWFsbFwiIGhyZWY9XCIiICsgZW1haWxVcmwg KyAiXCI+IiArIG1fZW1haWxUZXh0ICsgIjwvYT48L3NwYW4+Iik7DQogICAgICAg IH0NCiAgICAgICAgaWYgKG1fcHJpbnRMaW5rKSB7DQogICAgICAgICAgICBpZiAo bV9lbWFpbExpbmspIHsNCiAgICAgICAgICAgICAgICBkb2N1bWVudC53cml0ZSgi PHNwYW4gY2xhc3M9XCJtaFNwYWNlXCI+fDwvc3Bhbj4iKTsNCiAgICAgICAgICAg IH0NCiAgICAgICAgICAgIGRvY3VtZW50LndyaXRlKCI8c3BhbiBzdHlsZT1cInZl cnRpY2FsLWFsaWduOm1pZGRsZTtcIj48YSBocmVmPVwiIiArIG1fcHJpbnRMaW5r ICsgIlwiPjxpbWcgc3JjPVwiIiArIG1faW1nUGZ4ICsgIi9pbWFnZXMvZ2xvYmFs L2JyYW5kL2ljb25zL3ByaW50LmdpZlwiIGJvcmRlcj1cIjBcIiBhbHQ9XCIiICsg Z2V0UHJpbnRhYmxlVGV4dCgpICsgIlwiIC8+PC9hPjwvc3Bhbj4iKTsNCiAgICAg ICAgICAgIGRvY3VtZW50LndyaXRlKCI8c3BhbiBjbGFzcz1cInBhcmFfc21hbGxc IiBzdHlsZT1cInRleHQtYWxpZ246cmlnaHQ7dmVydGljYWwtYWxpZ246bWlkZGxl O3doaXRlLXNwYWNlOm5vd3JhcDtcIj48YSBjbGFzcz1cImxua19zbWFsbFwiIGhy ZWY9XCIiICsgbV9wcmludExpbmsgKyAiXCI+IiArIGdldFByaW50YWJsZVRleHQo KSArICI8L2E+PC9zcGFuPiIpOw0KICAgICAgICB9DQogICAgICAgIGlmIChtX2hl bHBMaW5rKSB7DQogICAgICAgICAgICBpZiAobV9wcmludExpbmsgfHwgbV9lbWFp bExpbmspIHsNCiAgICAgICAgICAgICAgICBkb2N1bWVudC53cml0ZSgiPHNwYW4g Y2xhc3M9XCJtaFNwYWNlXCI+fDwvc3Bhbj4iKTsNCiAgICAgICAgICAgIH0NCiAg ICAgICAgICAgIGRvY3VtZW50LndyaXRlKCI8c3Bhbj48YSBocmVmPVwiIiArIG1f aGVscExpbmsgKyAiXCI+PGltZyBzcmM9XCIiICsgbV9pbWdQZnggKyAiL2ltYWdl cy9nbG9iYWwvYnJhbmQvaWNvbnMvaGVscDIuZ2lmXCIgYm9yZGVyPVwiMFwiIGFs dD1cIiIgKyBtX2hlbHBUZXh0ICsgIlwiIC8+PC9hPjwvc3Bhbj4iKTsNCiAgICAg ICAgICAgIGRvY3VtZW50LndyaXRlKCI8c3BhbiBjbGFzcz1cInBhcmFfc21hbGxc IiBzdHlsZT1cInRleHQtYWxpZ246cmlnaHQ7dmVydGljYWwtYWxpZ246bWlkZGxl O3doaXRlLXNwYWNlOm5vd3JhcDtcIj48YSBjbGFzcz1cImxua19zbWFsbFwiIGhy ZWY9XCIiICsgbV9oZWxwTGluayArICJcIj4iICsgbV9oZWxwVGV4dCArICI8L2E+ PC9zcGFuPiIpOw0KICAgICAgICB9DQogICAgICAgIGRvY3VtZW50LndyaXRlKCI8 L3NwYW4+Iik7DQogICAgfQ0KfQ0KZnVuY3Rpb24gcmVuZGVyUHJpbnRFbWFpbExp bmtzUnRsKCkgew0KICAgIGlmIChtX3ByaW50TGluayB8fCBtX2VtYWlsTGluayB8 fCBtX2hlbHBMaW5rKSB7DQogICAgICAgIGRvY3VtZW50LndyaXRlKCI8ZGl2IHN0 eWxlPVwicGFkZGluZy1yaWdodDoxMHB4O2NsZWFyOmJvdGhcIj4iKTsNCiAgICAg ICAgaWYgKG1fZW1haWxMaW5rKSB7DQogICAgICAgICAgICB2YXIgbV9lbWFpbHN1 YmplY3QgPSBkb2N1bWVudC50aXRsZTsNCiAgICAgICAgICAgIGlmICh0eXBlb2Yg KG1fZW1haWxTdWJqZWN0KSAhPSAidW5kZWZpbmVkIiAmJiBtX2VtYWlsU3ViamVj dCAhPSBudWxsICYmIG1fZW1haWxTdWJqZWN0Lmxlbmd0aCA+IDApIHsNCiAgICAg ICAgICAgICAgICBtX2VtYWlsc3ViamVjdCA9IG1fZW1haWxTdWJqZWN0Ow0KICAg ICAgICAgICAgfQ0KICAgICAgICAgICAgdmFyIGVtYWlsVXJsID0gImphdmFzY3Jp cHQ6dm9pZChkb2N1bWVudC5sb2NhdGlvbi5ocmVmPSIgKyAiJ21haWx0bzo/c3Vi amVjdD0iICsgbV9lbWFpbHN1YmplY3QgKyAiJmJvZHk9IiArIGRvY3VtZW50Lmxv Y2F0aW9uLmhyZWYucmVwbGFjZSgvJTI2L2csICclMjUyNicpLnJlcGxhY2UoLyYv ZywgJyUyNTI2JykgKyAiJykiOw0KICAgICAgICAgICAgZG9jdW1lbnQud3JpdGUo IjxkaXYgY2xhc3M9XCJwYXJhX3NtYWxsXCIgc3R5bGU9XCJ0ZXh0LWFsaWduOnJp Z2h0O3ZlcnRpY2FsLWFsaWduOm1pZGRsZTt3aGl0ZS1zcGFjZTpub3dyYXA7Zmxv YXQ6bGVmdDtwYWRkaW5nLXRvcDo1cHhcIj48YSBjbGFzcz1cImxua19zbWFsbFwi IGhyZWY9XCIiICsgZW1haWxVcmwgKyAiXCI+IiArIG1fZW1haWxUZXh0ICsgIjwv YT48L2Rpdj4iKTsNCiAgICAgICAgICAgIGRvY3VtZW50LndyaXRlKCI8ZGl2IHN0 eWxlPVwidmVydGljYWwtYWxpZ246bWlkZGxlO2Zsb2F0OmxlZnRcIj48YSBocmVm PVwiIiArIGVtYWlsVXJsICsgIlwiPjxpbWcgc3JjPVwiIiArIG1faW1nUGZ4ICsg Ii9pbWFnZXMvZ2xvYmFsL2JyYW5kL2ljb25zL2VtYWlsLmdpZlwiIGJvcmRlcj1c IjBcIiBhbHQ9XCIiICsgbV9lbWFpbFRleHQgKyAiXCIgLz48L2E+PC9kaXY+Iik7 DQogICAgICAgIH0NCiAgICAgICAgaWYgKG1fcHJpbnRMaW5rKSB7DQogICAgICAg ICAgICBpZiAobV9lbWFpbExpbmspIHsNCiAgICAgICAgICAgICAgICBkb2N1bWVu dC53cml0ZSgiPGRpdiBjbGFzcz1cIm1oU3BhY2VcIiBzdHlsZT1cImZsb2F0Omxl ZnRcIiA+fDwvZGl2PiIpOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZG9j dW1lbnQud3JpdGUoIjxkaXYgY2xhc3M9XCJwYXJhX3NtYWxsXCIgc3R5bGU9XCJ0 ZXh0LWFsaWduOnJpZ2h0O3ZlcnRpY2FsLWFsaWduOm1pZGRsZTt3aGl0ZS1zcGFj ZTpub3dyYXA7ZmxvYXQ6bGVmdDtwYWRkaW5nLXRvcDo1cHhcIj48YSBzdHlsZT1c InZhbGlnbjpjZW50ZXJcIiBjbGFzcz1cImxua19zbWFsbFwiIGhyZWY9XCIiICsg bV9wcmludExpbmsgKyAiXCI+IiArIGdldFByaW50YWJsZVRleHQoKSArICI8L2E+ PC9kaXY+Iik7DQogICAgICAgICAgICBkb2N1bWVudC53cml0ZSgiPGRpdiBzdHls ZT1cInZlcnRpY2FsLWFsaWduOm1pZGRsZTtmbG9hdDpsZWZ0XCI+PGEgaHJlZj1c IiIgKyBtX3ByaW50TGluayArICJcIj48aW1nIHNyYz1cIiIgKyBtX2ltZ1BmeCAr ICIvaW1hZ2VzL2dsb2JhbC9icmFuZC9pY29ucy9wcmludC5naWZcIiBib3JkZXI9 XCIwXCIgYWx0PVwiIiArIGdldFByaW50YWJsZVRleHQoKSArICJcIiAvPjwvYT48 L2Rpdj4iKTsNCiAgICAgICAgfQ0KICAgICAgICBpZiAobV9oZWxwTGluaykgew0K ICAgICAgICAgICAgaWYgKG1fZW1haWxMaW5rKSB7DQogICAgICAgICAgICAgICAg ZG9jdW1lbnQud3JpdGUoIjxkaXYgY2xhc3M9XCJtaFNwYWNlXCI+fDwvZGl2PiIp Ow0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZG9jdW1lbnQud3JpdGUoIjxk aXYgY2xhc3M9XCJwYXJhX3NtYWxsXCIgc3R5bGU9XCJ0ZXh0LWFsaWduOnJpZ2h0 O3ZlcnRpY2FsLWFsaWduOm1pZGRsZTt3aGl0ZS1zcGFjZTpub3dyYXA7ZmxvYXQ6 bGVmdDtwYWRkaW5nLXRvcDo1cHhcIj48YSBjbGFzcz1cImxua19zbWFsbFwiIGhy ZWY9XCIiICsgbV9oZWxwTGluayArICJcIj4iICsgbV9oZWxwVGV4dCArICI8L2E+ PC9kaXY+Iik7DQogICAgICAgICAgICBkb2N1bWVudC53cml0ZSgiPGRpdiBzdHls ZT1cImZsb2F0OmxlZnRcIiA+PGEgaHJlZj1cIiIgKyBtX2hlbHBMaW5rICsgIlwi PjxpbWcgc3JjPVwiIiArIG1faW1nUGZ4ICsgIi9pbWFnZXMvZ2xvYmFsL2JyYW5k L2ljb25zL2hlbHAuZ2lmXCIgYm9yZGVyPVwiMFwiIGFsdD1cIiIgKyBtX2hlbHBU ZXh0ICsgIlwiIC8+PC9hPjwvZGl2PiIpOw0KICAgICAgICB9DQogICAgICAgIGRv Y3VtZW50LndyaXRlKCI8L2Rpdj4iKTsNCiAgICB9DQp9DQpmdW5jdGlvbiB3cml0 ZUZvb3RlclN0YXJ0KCkgew0KICAgIHZhciB3aWR0aCA9IChtX21oRml4ZWQgPyAo bV9tYXN0aGVhZFdpZHRoICsgInB4IikgOiAiMTAwJSIpOw0KICAgIC8vZG9jdW1l bnQud3JpdGUoICI8ZGl2IHN0eWxlPVwid2lkdGg6IiArIHdpZHRoICsgIjtwYWRk aW5nLXRvcDoxMHB4O1wiPiIpOw0KICAgIGRvY3VtZW50LndyaXRlKCI8ZGl2IHN0 eWxlPVwid2lkdGg6MTAwJTtcIj4iKTsNCiAgICBpZiAodHlwZW9mIChtX3BhZ2VU aGVtZSkgIT0gInVuZGVmaW5lZCIpIHsNCiAgICAgICAgaWYgKG1fcGFnZVRoZW1l ICE9IG51bGwgJiYgbV9wYWdlVGhlbWUubGVuZ3RoID4gMCkgew0KICAgICAgICAg ICAgZG9jdW1lbnQud3JpdGUoIjxkaXYgc3R5bGU9XCJjbGVhcjpsZWZ0O1wiPjxp bWcgc3JjPVwiIik7DQogICAgICAgICAgICBkb2N1bWVudC53cml0ZShtX3BhZ2VU aGVtZSk7DQogICAgICAgICAgICBkb2N1bWVudC53cml0ZSgiXCIgYm9yZGVyPVwi MFwiIGFsdD1cIlwiIC8+PC9kaXY+Iik7DQogICAgICAgIH0NCiAgICB9DQogICAg aWYgKG1fY3J1bWJzKSB7DQogICAgICAgIHJlbmRlckZvb3RlckNydW1icygpOw0K ICAgIH0NCiAgICBkb2N1bWVudC53cml0ZSgiPC9kaXY+Iik7DQp9DQpmdW5jdGlv biB3cml0ZUZvb3RlckJlZ2luKCkgew0KICAgIHdyaXRlRm9vdGVyU3RhcnQoKTsN Cn0NCmZ1bmN0aW9uIHdyaXRlRm9vdGVyQ2xvc2UoKSB7DQp9DQpmdW5jdGlvbiBt ZW51UmVmKGlkLCB0ZXh0LCBocmVmLCBpdGVtcywgdGFyZ2V0KSB7DQogICAgbWVu dVJlZihpZCwgdGV4dCwgaHJlZiwgaXRlbXMsIHRhcmdldCwgZmFsc2UpOw0KfQ0K ZnVuY3Rpb24gbWVudVJlZihpZCwgdGV4dCwgaHJlZiwgaXRlbXMsIHRhcmdldCwg c2VsZWN0ZWQsIGNvbHVtbikgew0KICAgIHRoaXMuSWQgPSBpZDsNCiAgICB0aGlz LlRleHQgPSB0ZXh0Ow0KICAgIHRoaXMuSHJlZiA9IG1oRml4dXBMaW5rKGhyZWYs ICImfmNrPW1uIik7DQogICAgdGhpcy5Jc1NlcGFyYXRvciA9IGZhbHNlOw0KICAg IHRoaXMuSXNDYXB0aW9uID0gZmFsc2U7DQogICAgdGhpcy5NZW51SXRlbXMgPSBp dGVtczsNCiAgICB0aGlzLklzU2VsZWN0ZWRUYWIgPSBmYWxzZTsNCiAgICB0aGlz LkNvbHVtbiA9IGNvbHVtbjsNCiAgICBpZiAoc2VsZWN0ZWQgPT0gdHJ1ZSkgew0K ICAgICAgICB0aGlzLklzU2VsZWN0ZWRUYWIgPSB0cnVlOw0KICAgIH0NCiAgICB0 aGlzLk9mZkRlbGwgPSBmYWxzZTsNCiAgICB0aGlzLlRhcmdldEh0bWwgPSBtX3N0 ZEVtcHR5Ow0KICAgIGlmICgodHlwZW9mICh0YXJnZXQpICE9ICJ1bmRlZmluZWQi KSAmJiB0YXJnZXQpIHsNCiAgICAgICAgdGhpcy5PZmZEZWxsID0gKHRhcmdldCA9 PSAib2ZmZGVsbCIpOw0KICAgICAgICB0aGlzLlRhcmdldEh0bWwgPSAiIHRhcmdl dD1cIiIgKyB0YXJnZXQgKyAiXCIiOw0KICAgIH0NCn0NCmZ1bmN0aW9uIG1lbnVJ dGVtKHRleHQsIGhyZWYsIHRhcmdldCwgaWNvbiwgY29sdW1uKSB7DQogICAgdGhp cy5UZXh0ID0gdGV4dDsNCiAgICB0aGlzLkhyZWYgPSBtaEZpeHVwTGluayhocmVm LCAiJn5jaz1tbiIpOw0KICAgIHRoaXMuSXNTZXBhcmF0b3IgPSBmYWxzZTsNCiAg ICB0aGlzLklzQ2FwdGlvbiA9IGZhbHNlOw0KICAgIHRoaXMuSWNvblVybCA9IGlj b247DQogICAgdGhpcy5NZW51SXRlbXMgPSBudWxsOw0KICAgIHRoaXMuQ29sdW1u ID0gY29sdW1uOw0KICAgIHRoaXMuT2ZmRGVsbCA9IGZhbHNlOw0KICAgIHRoaXMu VGFyZ2V0SHRtbCA9IG1fc3RkRW1wdHk7DQogICAgaWYgKCh0eXBlb2YgKHRhcmdl dCkgIT0gInVuZGVmaW5lZCIpICYmIHRhcmdldCkgew0KICAgICAgICB0aGlzLk9m ZkRlbGwgPSAodGFyZ2V0ID09ICJvZmZkZWxsIik7DQogICAgICAgIHRoaXMuVGFy Z2V0SHRtbCA9ICIgdGFyZ2V0PVwiIiArIHRhcmdldCArICJcIiI7DQogICAgfQ0K fQ0KZnVuY3Rpb24gbWVudUNhcHRpb24odGV4dCkgew0KICAgIHRoaXMuVGV4dCA9 IHRleHQ7DQogICAgdGhpcy5IcmVmID0gbnVsbDsNCiAgICB0aGlzLklzU2VwYXJh dG9yID0gZmFsc2U7DQogICAgdGhpcy5Jc0NhcHRpb24gPSB0cnVlOw0KICAgIHRo aXMuTWVudUl0ZW1zID0gbnVsbDsNCn0NCmZ1bmN0aW9uIG1lbnVTZXAoKSB7DQog ICAgdGhpcy5Jc1NlcGFyYXRvciA9IHRydWU7DQogICAgdGhpcy5Jc0NhcHRpb24g PSBmYWxzZTsNCn0NCmZ1bmN0aW9uIHNlYXJjaFR5cGUoY2FwdGlvbiwgdmFsdWUs IHNlbGVjdGVkKSB7DQogICAgdGhpcy5DYXB0aW9uID0gY2FwdGlvbjsNCiAgICB0 aGlzLlZhbHVlID0gdmFsdWU7DQogICAgdGhpcy5TZWxlY3RlZCA9IHNlbGVjdGVk Ow0KfQ0KZnVuY3Rpb24gYWRkU2VhcmNoVHlwZShjYXB0aW9uLCB2YWx1ZSwgc2Vs ZWN0ZWQpIHsNCiAgICBpZiAoIW1fc2VhcmNoVHlwZXMpIHsNCiAgICAgICAgbV9z ZWFyY2hUeXBlcyA9IG5ldyBBcnJheSgpOw0KICAgIH0NCiAgICBtX3NlYXJjaFR5 cGVzW21fc2VhcmNoVHlwZXMubGVuZ3RoXSA9IG5ldyBzZWFyY2hUeXBlKGNhcHRp b24sIHZhbHVlLCBzZWxlY3RlZCk7DQp9DQpmdW5jdGlvbiBtaExpbmsodGV4dCwg aHJlZiwgaWNvbiwgZXh0cmEsIGlzRmlsdGVyKSB7DQogICAgaHJlZiA9IG1oRml4 dXBMaW5rKGhyZWYsIGV4dHJhKTsNCiAgICB0aGlzLlRleHQgPSB0ZXh0Ow0KICAg IHRoaXMuSHJlZiA9IGhyZWY7DQogICAgdGhpcy5JY29uID0gaWNvbjsNCiAgICB0 aGlzLklzRmlsdGVyID0gaXNGaWx0ZXI7DQp9DQpmdW5jdGlvbiBtaExpbmsodGV4 dCwgaHJlZiwgaWNvbiwgZXh0cmEsIGlzRmlsdGVyLCB0YXJnZXQpIHsNCiAgICBo cmVmID0gbWhGaXh1cExpbmsoaHJlZiwgZXh0cmEpOw0KICAgIHRoaXMuVGV4dCA9 IHRleHQ7DQogICAgdGhpcy5IcmVmID0gaHJlZjsNCiAgICB0aGlzLkljb24gPSBp Y29uOw0KICAgIHRoaXMuSXNGaWx0ZXIgPSBpc0ZpbHRlcjsNCiAgICB0aGlzLlRh cmdldCA9IHRhcmdldDsNCiAgICBpZiAodGFyZ2V0ID09ICdvZmZkZWxsJykgew0K ICAgICAgICB0aGlzLk9mZkRlbGwgPSB0cnVlOw0KICAgIH0NCiAgICBlbHNlIHsN CiAgICAgICAgdGhpcy5PZmZEZWxsID0gZmFsc2U7DQogICAgfQ0KfQ0KZnVuY3Rp b24gYWRkUG5MaW5rKHRleHQsIGhyZWYsIGljb24pIHsNCiAgICBpZiAoIW1fcG5s aW5rcykgew0KICAgICAgICBtX3BubGlua3MgPSBuZXcgQXJyYXkoKTsNCiAgICB9 DQogICAgbV9wbmxpbmtzW21fcG5saW5rcy5sZW5ndGhdID0gbmV3IG1oTGluayh0 ZXh0LCBocmVmLCBpY29uLCAiJn5jaz1wbiIpOw0KfQ0KZnVuY3Rpb24gYWRkUG5M aW5rKHRleHQsIGhyZWYsIGljb24sIHRhcmdldCkgew0KICAgIGlmICghbV9wbmxp bmtzKSB7DQogICAgICAgIG1fcG5saW5rcyA9IG5ldyBBcnJheSgpOw0KICAgIH0N Cg0KICAgIG1fcG5saW5rc1ttX3BubGlua3MubGVuZ3RoXSA9IG5ldyBtaExpbmso dGV4dCwgaHJlZiwgaWNvbiwgIiZ+Y2s9cG4iLCAnJywgdGFyZ2V0KTsNCn0NCmZ1 bmN0aW9uIGFkZENydW1iKHRleHQsIGhyZWYsIGlzRmlsdGVyKSB7DQogICAgaWYg KCFtX2NydW1icykgew0KICAgICAgICBtX2NydW1icyA9IG5ldyBBcnJheSgpOw0K ICAgIH0NCiAgICBtX2NydW1ic1ttX2NydW1icy5sZW5ndGhdID0gbmV3IG1oTGlu ayh0ZXh0LCBocmVmLCBudWxsLCAiJn5jaz1idCIsIGlzRmlsdGVyKTsNCn0NCnZh ciBkZWxheU1pbiA9IG51bGw7DQp2YXIgZGVsYXlNYXggPSBudWxsOw0KdmFyIGN1 cnJlbnRJRCA9IG51bGw7DQpmdW5jdGlvbiBmbHlvdXRvcGVuKGlkLCB3aWR0aCkg ew0KICAgIHRyeSB7DQoNCiAgICAgICAgaWYgKGN1cnJlbnRJRCAhPSBpZCkgew0K ICAgICAgICAgICAgaXNibG9hdGluZyA9IHRydWU7DQogICAgICAgICAgICB2YXIg aXNmcm9tYWRkdG9jYXJ0ID0gZmFsc2U7DQogICAgICAgICAgICBtX2lkID0gaWQ7 DQogICAgICAgICAgICBpZiAoaWQgPT0gImNhcnR0ZW1wIikgew0KICAgICAgICAg ICAgICAgIGlzZnJvbWFkZHRvY2FydCA9IHRydWU7DQogICAgICAgICAgICAgICAg aWQgPSAiY2FydCI7DQoNCiAgICAgICAgICAgICAgICBpZiAodG90YWxjYXJ0cXVh bnRpdHkgPiAwKSB7DQogICAgICAgICAgICAgICAgICAgIHZhciBsaW5rID0gZG9j dW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRvdGFsY2FydGl0ZW1zIik7DQogICAgICAg ICAgICAgICAgICAgIGlmIChsaW5rICE9IG51bGwpIHsNCiAgICAgICAgICAgICAg ICAgICAgICAgIGxpbmsuaW5uZXJIVE1MID0gdG90YWxjYXJ0cXVhbnRpdHk7DQog ICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAg ICAgICB9DQogICAgICAgICAgICB2YXIgbGluayA9IGRvY3VtZW50LmdldEVsZW1l bnRCeUlkKCJmbHlvdXQiICsgaWQgKyAibGluayIpOw0KICAgICAgICAgICAgdmFy IGJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZmx5b3V0IiArIGlkICsg ImJvZHkiKTsNCiAgICAgICAgICAgIHZhciBvZmZzZXQgPSBkb2N1bWVudC5nZXRF bGVtZW50QnlJZCgiZmx5b3V0IiArIGlkICsgIm9mZnNldCIpOw0KICAgICAgICAg ICAgd2lkdGggPSBvZmZzZXQub2Zmc2V0V2lkdGggPiB3aWR0aCA/IG9mZnNldC5v ZmZzZXRXaWR0aCA6IHdpZHRoOw0KICAgICAgICAgICAgYm9keS5zdHlsZS50b3Ag PSBvZmZzZXQub2Zmc2V0VG9wICsgb2Zmc2V0Lm9mZnNldEhlaWdodCAtIDE7DQog ICAgICAgICAgICBsaW5reSA9IGdldFJhd09iamVjdCgicGJhcmNvbnRhaW5lciIp Ow0KICAgICAgICAgICAgdmFyIGZseW91dHdpZHRoOw0KICAgICAgICAgICAgaWYg KGlkID09ICJjYXJ0Iikgew0KICAgICAgICAgICAgICAgIGZseW91dHdpZHRoID0g bGlua3kub2Zmc2V0TGVmdCArIHdpZHRoICsgMjE7DQogICAgICAgICAgICB9DQog ICAgICAgICAgICBlbHNlIHsNCiAgICAgICAgICAgICAgICBmbHlvdXR3aWR0aCA9 IGxpbmt5Lm9mZnNldExlZnQgKyBsaW5reS5vZmZzZXRXaWR0aCAtIG9mZnNldC5v ZmZzZXRXaWR0aCArIHdpZHRoICsgMjE7DQogICAgICAgICAgICB9DQogICAgICAg ICAgICBpZiAoU2NyZWVuLkF2YWlsYWJsZVdpZHRoIDwgZmx5b3V0d2lkdGgpIHsN CiAgICAgICAgICAgICAgICBib2R5LnN0eWxlLndpZHRoID0gd2lkdGggLSAyOw0K ICAgICAgICAgICAgICAgIGJvZHkuc3R5bGUubGVmdCA9IG9mZnNldC5vZmZzZXRM ZWZ0IC0gd2lkdGggKyBvZmZzZXQub2Zmc2V0V2lkdGg7DQogICAgICAgICAgICB9 DQogICAgICAgICAgICBlbHNlIHsNCiAgICAgICAgICAgICAgICBib2R5LnN0eWxl LndpZHRoID0gd2lkdGggLSAyOw0KICAgICAgICAgICAgICAgIGJvZHkuc3R5bGUu bGVmdCA9IG9mZnNldC5vZmZzZXRMZWZ0Ow0KICAgICAgICAgICAgfQ0KICAgICAg ICAgICAgbGluay5jbGFzc05hbWUgPSAiZm8iICsgaWQgKyAibGlua21heCI7DQog ICAgICAgICAgICBib2R5LmNsYXNzTmFtZSA9ICJmbyIgKyBpZCArICJib2R5bWF4 IjsNCiAgICAgICAgICAgIGJvZHkuc3R5bGUub3ZlcmZsb3cgPSAidmlzaWJsZSI7 DQogICAgICAgICAgICBvZmZzZXQuY2xhc3NOYW1lID0gImZvIiArIGlkICsgIm9m ZnNldG1heCI7DQogICAgICAgICAgICBjdXJyZW50SUQgPSBpZDsNCiAgICAgICAg ICAgIHZhciB0aWNrcyA9IG5ldyBEYXRlKCk7DQogICAgICAgICAgICBpZiAobV9w YmFyQ29udGVudERpdiAhPSAoImZseW91dCIgKyBpZCArICJib2R5IikpIHsNCiAg ICAgICAgICAgICAgICB0cnkgew0KICAgICAgICAgICAgICAgICAgICBtX3BiYXJD b250ZW50RGl2ID0gImZseW91dCIgKyBpZCArICJib2R5IjsNCg0KICAgICAgICAg ICAgICAgICAgICB2YXIgZmx5b3V0RGl2ID0gZ2V0UmF3T2JqZWN0KG1fcGJhckNv bnRlbnREaXYpOw0KICAgICAgICAgICAgICAgICAgICBpZiAoaXNmcm9tYWRkdG9j YXJ0KSB7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIGZseW91dERpdi5pbm5l ckhUTUwgPSBjYXJ0Y29udGVudDsNCiAgICAgICAgICAgICAgICAgICAgICAgIG1f ZnJvbUFkZFRvQ2FydCA9IHRydWU7DQogICAgICAgICAgICAgICAgICAgIH0NCg0K ICAgICAgICAgICAgICAgICAgICBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAg ICAgIGlmIChmbHlvdXREaXYuaW5uZXJIVE1MLmluZGV4T2YoIm5hbWU9XCIiICsg aWQgKyAiXCIiKSA9PSAtMSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAg IGlmIChtX3BiYXJDb250ZW50RGl2ID09ICJmbHlvdXRteWFjY291bnRib2R5Iikg ew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbHlvdXREaXYuaW5u ZXJIVE1MID0gIjxkaXYgaWQ9XCJwYmFyY29udGVudFwiIG5hbWU9XCIiICsgaWQg KyAiXCIgY2xhc3M9XCJwYmFyY29udGVudFwiPjxpZnJhbWUgb25tb3VzZW91dD1c ImphdmFzY3JpcHQ6Zmx5b3V0bWluKCdteWFjY291bnQnKVwiIG9ubW91c2VvdmVy PVwiamF2YXNjcmlwdDpmbHlvdXRtaW5jbGVhcigpXCIgd2lkdGg9XCIyMjhcIiBp ZD1cIm15ZnJhbWVcIiBzY3JvbGxpbmc9XCJhdXRvXCIgZnJhbWVib3JkZXI9XCIw XCIgbmFtZT1cIm15ZnJhbWVcIiBzcmM9XCIiICsgbV9wYmFyUGZ4ICsgIi9wYmFy L2FqYXguYXNweD9+cHNjPW15YWNjb3VudFwiPjwvaWZyYW1lPjwvZGl2PiI7DQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGVsc2UgaWYgKG1fcGJhckNvbnRlbnREaXYgPT0gImZseW91dHRv b2xib3hib2R5Iikgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv LyBObyBhamF4IG5lZWRlZCB0b29sYm94IGxvYWRlZCBmcm9tIG1lbnVkZWYNCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgZWxzZSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGlzcGFnaW5nID0gZmFsc2U7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIEFzeW5jWERvbWFpbklmcmFtZUNhbGwobV9wYmFyUGZ4ICsgIi9wYmFyL2Fq YXguYXNweD9+cHNjPSIgKyBpZCwgcGJhcmNvbnRlbnRhamF4KTsNCg0KDQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAg ICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgbV9mcm9tQWRkVG9DYXJ0ID0g ZmFsc2U7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9 DQogICAgICAgICAgICAgICAgY2F0Y2ggKGUpIHsNCiAgICAgICAgICAgICAgICAg ICAgLy9hbGVydChlKTsNCg0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAg IH0NCg0KICAgICAgICAgICAgZ3Jvd0l0KGlkKTsNCiAgICAgICAgfQ0KDQogICAg fQ0KICAgIGNhdGNoIChlKQ0KeyB9DQp9DQoNCnZhciBkb25lR3Jvd2luZyA9IGZh bHNlOw0KdmFyIHRvb2xib3hIZWlnaHQgPSAwOw0KLy8gY2FsbGVkIHRvIGluaXRp YXRlIGdyb3dpbmcgYW4gZWxlbWVudA0KZnVuY3Rpb24gZ3Jvd0l0KGlkKSB7DQoN CiAgICB2YXIgb2Zmc2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZseW91 dCIgKyBpZCArICJvZmZzZXQiKTsNCiAgICBvZmZzZXQuY2xhc3NOYW1lID0gImZv IiArIGlkICsgIm9mZnNldG1heCI7DQoNCiAgICBpc2Jsb2F0aW5nID0gdHJ1ZTsN CiAgICBtX2lkID0gaWQ7DQoNCiAgICB2YXIgYm9keSA9IGdldFJhd09iamVjdCgi Zmx5b3V0IiArIGlkICsgImJvZHkiKTsNCiAgICBpZiAoYm9keSA9PSBudWxsKSB7 DQogICAgICAgIGlzYmxvYXRlZCA9IGZhbHNlOw0KICAgICAgICBpc2Jsb2F0aW5n ID0gZmFsc2U7DQogICAgICAgIHJldHVybjsNCiAgICB9DQogICAgYm9keS5zdHls ZS5oZWlnaHQgPSAiMXB4IjsNCiAgICBib2R5LnN0eWxlLm92ZXJmbG93ID0gImhp ZGRlbiI7DQogICAgaW5jcmVtZW50ID0gMDsNCiAgICBDb250YWluZXJIZWlnaHQg PSBib2R5LnNjcm9sbEhlaWdodDsNCiAgICB0b29sYm94SGVpZ2h0ID0gYm9keS5z Y3JvbGxIZWlnaHQ7DQogICAgZG9uZUdyb3dpbmcgPSBmYWxzZTsNCiAgICBkb0dy b3coYm9keSk7DQogICAgJGooIiNmbHlvdXQiICsgaWQgKyAiYm9keSIpLmJnaWZy YW1lKCk7DQp9DQoNCi8vIGlubmVyIGxvb3AgZm9yIGdyb3dpbmcgYW4gb2JqZWN0 DQpmdW5jdGlvbiBkb0dyb3coYm9keSkgew0KICAgIGlmIChib2R5LmlkID09ICJm bHlvdXR0b29sYm94Ym9keSIgJiYgJGouYnJvd3Nlci5tc2llICYmIHBhcnNlSW50 KCRqLmJyb3dzZXIudmVyc2lvbikgPT0gNykgew0KICAgICAgICBDb250YWluZXJI ZWlnaHQgPSB0b29sYm94SGVpZ2h0OyAvLyBJbiBJRTcgbm90IHN1cmUgd2h5IGJ1 dCBDb250YWluZXJIZWlnaHQgaXMgbm90IHJldGFpbmluZyB0aGUgc2Nyb2xsSGVp Z2h0IHNldCBpbiBncm93SXQgZm9yIHRvb2xib3ggZmx5b3V0IHNvIGFkZGVkIHRo aXMgaGFjayBmb3Igbm93DQogICAgfQ0KICAgIHRyeSB7DQogICAgICAgIGlmIChD b250YWluZXJIZWlnaHQgLSBpbmNyZW1lbnQgPj0gMTUpIHsNCiAgICAgICAgICAg IGlmIChpbmNyZW1lbnQgPCBDb250YWluZXJIZWlnaHQpIHsNCiAgICAgICAgICAg ICAgICBpbmNyZW1lbnQgPSBpbmNyZW1lbnQgKyAxNTsNCiAgICAgICAgICAgICAg ICBib2R5LnN0eWxlLmhlaWdodCA9IGluY3JlbWVudCArICJweCI7DQogICAgICAg ICAgICAgICAgaW50U2hvdyA9IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IGRvR3Jv dyhib2R5KSB9LCAwKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGVsc2Ug ew0KICAgICAgICAgICAgICAgIGRvbmVHcm93aW5nID0gdHJ1ZTsNCiAgICAgICAg ICAgIH0NCiAgICAgICAgfQ0KICAgICAgICBlbHNlIGlmIChDb250YWluZXJIZWln aHQgLSBpbmNyZW1lbnQgPiAwKSB7DQogICAgICAgICAgICB2YXIgZGlmZiA9IENv bnRhaW5lckhlaWdodCAtIGluY3JlbWVudDsNCiAgICAgICAgICAgIGluY3JlbWVu dCA9IGluY3JlbWVudCArIGRpZmY7DQogICAgICAgICAgICBib2R5LnN0eWxlLmhl aWdodCA9IGluY3JlbWVudCArICJweCI7DQogICAgICAgICAgICBpbnRTaG93ID0g c2V0VGltZW91dChmdW5jdGlvbigpIHsgZG9Hcm93KGJvZHkpIH0sIDApOw0KICAg ICAgICB9DQogICAgICAgIGVsc2Ugew0KICAgICAgICAgICAgZG9uZUdyb3dpbmcg PSB0cnVlOw0KICAgICAgICB9DQoNCiAgICAgICAgaWYgKGRvbmVHcm93aW5nID09 IHRydWUpIHsNCiAgICAgICAgICAgIGlmIChtX2Zyb21BZGRUb0NhcnQgIT0gdHJ1 ZSkgew0KICAgICAgICAgICAgICAgIGJvZHkuc3R5bGUub3ZlcmZsb3cgPSAidmlz aWJsZSI7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBpc2Jsb2F0ZWQgPSB0 cnVlOw0KICAgICAgICAgICAgaXNibG9hdGluZyA9IGZhbHNlOw0KDQogICAgICAg ICAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KGludFNob3cpOw0KICAgICAgICAgICAg ZG9uZUdyb3dpbmcgPT0gZmFsc2U7DQogICAgICAgIH0NCg0KDQogICAgfQ0KICAg IGNhdGNoIChlKSB7DQoNCiAgICB9DQoNCn0NCg0KdmFyIGRvbmVTaHJpbmtpbmcg PSBmYWxzZTsNCg0KLy8gY2FsbGVkIHRvIGluaXRpYXRlIHNocmlua2luZyBhbiBl bGVtZW50DQpmdW5jdGlvbiBzaHJpbmtJdChpZCwgY2xlYXIpIHsNCg0KDQogICAg aWYgKGlzYmxvYXRlZCkgew0KDQogICAgICAgIGlmICghaXNjbG9zaW5nKSB7DQoN CiAgICAgICAgICAgIENvbnRhaW5lckhlaWdodCA9IGluY3JlbWVudDsNCiAgICAg ICAgICAgIGlmIChpc3BhZ2luZyA9PSB0cnVlKSB7DQogICAgICAgICAgICAgICAg dmFyIGJvZHkgPSBnZXRSYXdPYmplY3QoImZseW91dCIgKyBtX2lkICsgImJvZHki KTsNCiAgICAgICAgICAgICAgICBDb250YWluZXJIZWlnaHQgPSBib2R5LnNjcm9s bEhlaWdodDsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGlmIChDb250YWlu ZXJIZWlnaHQgPiAxKSB7DQogICAgICAgICAgICAgICAgaXNjbG9zaW5nID0gdHJ1 ZTsNCiAgICAgICAgICAgICAgICBjdXJyZW50SUQgPSBudWxsOw0KICAgICAgICAg ICAgICAgIHNocmluayA9IENvbnRhaW5lckhlaWdodDsNCiAgICAgICAgICAgICAg ICB3aW5kb3cuY2xlYXJUaW1lb3V0KGludFNob3cpOw0KDQogICAgICAgICAgICAg ICAgZG9uZVNocmlua2luZyA9IGZhbHNlOw0KICAgICAgICAgICAgICAgIGludEhp ZGUgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBkb1NocmluayhpZCwgY2xlYXIp IH0sIDApOw0KDQogICAgICAgICAgICB9DQogICAgICAgICAgICBlbHNlIHsNCiAg ICAgICAgICAgICAgICBpc2Jsb2F0ZWQgPSBmYWxzZTsNCiAgICAgICAgICAgICAg ICBpc2Jsb2F0aW5nID0gZmFsc2U7DQogICAgICAgICAgICAgICAgaXNjbG9zaW5n ID0gZmFsc2U7DQogICAgICAgICAgICAgICAgd2luZG93LmNsZWFyVGltZW91dChp bnRIaWRlKTsNCiAgICAgICAgICAgICAgICBmbHlvdXRjbG9zZShpZCwgdHJ1ZSk7 DQoNCiAgICAgICAgICAgICAgICBpZiAoY2xlYXIpIHsNCiAgICAgICAgICAgICAg ICAgICAgYm9keS5pbm5lckhUTUwgPSAiPGRpdiBpZD1cImxvYWRpbmdcIiBzdHls ZT1cImZvbnQtZmFtaWx5OmFyaWFsO2ZvbnQtc2l6ZTo5cHQ7cGFkZGluZzoxMHB4 O1wiPiIgKyBtX0xvYWRpbmdDYXB0aW9uICsgIjwvZGl2PiI7DQogICAgICAgICAg ICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgfQ0KICAgIGVs c2Ugew0KICAgICAgICBpc2Jsb2F0ZWQgPSBmYWxzZTsNCiAgICAgICAgaXNibG9h dGluZyA9IGZhbHNlOw0KICAgIH0NCn0NCg0KdmFyIGlzY2xvc2luZyA9IGZhbHNl Ow0KDQovLyBpbm5lciBsb29wIGZvciBzaHJpbmtpbmcgYW4gb2JqZWN0DQpmdW5j dGlvbiBkb1NocmluayhpZCwgY2xlYXIpIHsNCiAgICB2YXIgYm9keSA9IGdldFJh d09iamVjdCgiZmx5b3V0IiArIG1faWQgKyAiYm9keSIpOw0KICAgIGJvZHkuc3R5 bGUub3ZlcmZsb3cgPSAiaGlkZGVuIjsNCiAgICBpZiAoc2hyaW5rID4gMTApIHsN Cg0KICAgICAgICBzaHJpbmsgPSBzaHJpbmsgLSAxNTsNCg0KICAgICAgICBpZiAo c2hyaW5rID4gMCkgew0KICAgICAgICAgICAgYm9keS5zdHlsZS5oZWlnaHQgPSBz aHJpbmsgKyAicHgiOw0KICAgICAgICAgICAgaW50SGlkZSA9IHNldFRpbWVvdXQo ZnVuY3Rpb24oKSB7IGRvU2hyaW5rKGlkLCBjbGVhcikgfSwgMCk7DQogICAgICAg IH0NCiAgICAgICAgZWxzZSB7DQogICAgICAgICAgICBkb25lU2hyaW5raW5nID0g dHJ1ZTsNCiAgICAgICAgfQ0KDQoNCiAgICB9DQogICAgZWxzZSB7DQogICAgICAg IGRvbmVTaHJpbmtpbmcgPSB0cnVlOw0KICAgIH0NCg0KICAgIGlmIChkb25lU2hy aW5raW5nID09IHRydWUpIHsNCg0KICAgICAgICBpc2Jsb2F0ZWQgPSBmYWxzZTsN CiAgICAgICAgaXNibG9hdGluZyA9IGZhbHNlOw0KICAgICAgICBpc2Nsb3Npbmcg PSBmYWxzZTsNCiAgICAgICAgd2luZG93LmNsZWFyVGltZW91dChpbnRIaWRlKTsN CiAgICAgICAgZmx5b3V0Y2xvc2UobV9pZCwgdHJ1ZSk7DQoNCiAgICAgICAgaWYg KGNsZWFyKSB7DQogICAgICAgICAgICBib2R5LmlubmVySFRNTCA9ICI8ZGl2IGlk PVwibG9hZGluZ1wiIHN0eWxlPVwiZm9udC1mYW1pbHk6YXJpYWw7Zm9udC1zaXpl OjlwdDtwYWRkaW5nOjEwcHg7XCI+IiArIG1fTG9hZGluZ0NhcHRpb24gKyAiPC9k aXY+IjsNCiAgICAgICAgfQ0KDQogICAgfQ0KDQp9DQoNCmZ1bmN0aW9uIGZseW91 dGNsZWFyKCkgew0KICAgIGZseW91dG1pbmNsZWFyKCk7DQp9DQpmdW5jdGlvbiBm bHlvdXRtaW5jbGVhcigpIHsNCiAgICBpZiAoZGVsYXlNaW4pIHsNCiAgICAgICAg Y2xlYXJUaW1lb3V0KGRlbGF5TWluKTsNCiAgICAgICAgZGVsYXlNaW4gPSBudWxs Ow0KICAgIH0NCn0NCmZ1bmN0aW9uIGZseW91dG1heGNsZWFyKCkgew0KICAgIGlm IChkZWxheU1heCkgew0KICAgICAgICBjbGVhclRpbWVvdXQoZGVsYXlNYXgpOw0K ICAgICAgICBkZWxheU1heCA9IG51bGw7DQogICAgfQ0KfQ0KDQp2YXIgZm9jdXNG b3VuZCA9IGZhbHNlOw0KZnVuY3Rpb24gRmlyZU9uRm9jdXMoZSkgew0KDQogICAg Zm9jdXNGb3VuZCA9IHRydWU7DQp9DQoNCmZ1bmN0aW9uIEZpcmVPbkJsdXIoZSkg ew0KICAgIGZvY3VzRm91bmQgPSBmYWxzZTsNCn0NCg0KDQpmdW5jdGlvbiBmbHlv dXRtaW4oaWQpIHsNCiAgICBpZiAoYmxvY2tjb2xsYXBzZSA9PSB0cnVlKSB7DQog ICAgICAgIHJldHVybjsNCiAgICB9DQogICAgaWYgKG1fZnJvbUFkZFRvQ2FydCA9 PSBmYWxzZSkgew0KICAgICAgICBmbHlvdXRtYXhjbGVhcigpOw0KICAgICAgICAv L2RlbGF5TWluID0gc2V0VGltZW91dCggImZseW91dGNsb3NlKCciICsgaWQgKyAi Jyx0cnVlKSIsIDUwMCApOw0KICAgICAgICBpZiAoaXNibG9hdGVkID09IHRydWUp IHsNCg0KICAgICAgICAgICAgaWYgKGlkID09ICJteWFjY291bnQiKSB7DQoNCg0K ICAgICAgICAgICAgICAgIHRyeSB7DQoNCiAgICAgICAgICAgICAgICAgICAgdmFy IG15RnJhbWUgPSB3aW5kb3cuZnJhbWVzWyJteWZyYW1lIl07DQoNCiAgICAgICAg ICAgICAgICAgICAgaWYgKG15RnJhbWUgIT0gbnVsbCkgew0KDQogICAgICAgICAg ICAgICAgICAgICAgICB2YXIgZnJhbWVEb2MgPSBteUZyYW1lLmRvY3VtZW50Ow0K DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZnJhbWVEb2MgIT0gbnVsbCkg ew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlbWFpbENvbnRyb2wg PSBmcmFtZURvYy5mb3Jtc1swXS5lbWFpbDsNCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICBpZiAoZW1haWxDb250cm9sICE9IG51bGwpIHsNCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5hZGRFdmVudExpc3RlbmVy KSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbWFpbENv bnRyb2wuYWRkRXZlbnRMaXN0ZW5lcigiZm9jdXMiLCBGaXJlT25Gb2N1cywgZmFs c2UpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1haWxD b250cm9sLmFkZEV2ZW50TGlzdGVuZXIoImJsdXIiLCBGaXJlT25CbHVyLCBmYWxz ZSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7DQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBlbWFpbENvbnRyb2wuYXR0YWNoRXZlbnQoIm9u Zm9jdXMiLCBGaXJlT25Gb2N1cyk7DQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBlbWFpbENvbnRyb2wuYXR0YWNoRXZlbnQoIm9uYmx1ciIsIEZp cmVPbkJsdXIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHZhciBwYXNzd29yZENvbnRyb2wgPSBmcmFtZURvYy5mb3Jtc1sw XS5wYXNzd29yZDsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGFz c3dvcmRDb250cm9sICE9IG51bGwpIHsNCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgaWYgKHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKSB7DQoNCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3N3b3JkQ29udHJvbC5h ZGRFdmVudExpc3RlbmVyKCJmb2N1cyIsIEZpcmVPbkZvY3VzLCBmYWxzZSk7DQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzd29yZENvbnRy b2wuYWRkRXZlbnRMaXN0ZW5lcigiYmx1ciIsIEZpcmVPbkJsdXIsIGZhbHNlKTsN CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHBhc3N3b3JkQ29udHJvbC5hdHRhY2hFdmVudCgib25m b2N1cyIsIEZpcmVPbkZvY3VzLCBmYWxzZSk7DQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBwYXNzd29yZENvbnRyb2wuYXR0YWNoRXZlbnQoIm9u Ymx1ciIsIEZpcmVPbkJsdXIsIGZhbHNlKTsNCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAg ICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgfQ0K ICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBjYXRjaCAoZSkNCiAg ICAgICAgICAgICAgICAgICAgeyB9DQoNCiAgICAgICAgICAgICAgICBpZiAoZm9j dXNGb3VuZCkgew0KICAgICAgICAgICAgICAgICAgICByZXR1cm47DQogICAgICAg ICAgICAgICAgfQ0KDQoNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGRlbGF5 TWluID0gc2V0VGltZW91dCgic2hyaW5rSXQoJyIgKyBpZCArICInLGZhbHNlKSIs IDUwMCk7DQogICAgICAgIH0NCiAgICB9DQoNCg0KfQ0KDQoNCg0KdmFyIGluZmx5 b3V0bWF4ID0gZmFsc2U7DQoNCmZ1bmN0aW9uIGZseW91dG1heChpZCwgd2lkdGgp IHsNCg0KICAgIGluZmx5b3V0bWF4ID0gdHJ1ZTsNCiAgICBpc2FkZGluZ3RvY2Fy dCA9IGZhbHNlOw0KICAgIGZseW91dG1pbmNsZWFyKCk7DQogICAgaWYgKChpc2Js b2F0ZWQgPT0gZmFsc2UpICYmIChpc2Jsb2F0aW5nID09IGZhbHNlKSkgew0KDQoN CiAgICAgICAgaWYgKGN1cnJlbnRJRCAhPSBpZCAmJiBjdXJyZW50SUQgIT0gbnVs bCkgew0KDQoNCiAgICAgICAgICAgIGZseW91dGNsb3NlKGN1cnJlbnRJRCwgZmFs c2UpOw0KICAgICAgICB9DQogICAgICAgIGN1cnJlbnRJRCA9IG51bGw7DQoNCiAg ICAgICAgZGVsYXlNYXggPSBzZXRUaW1lb3V0KCJmbHlvdXRvcGVuKCciICsgaWQg KyAiJywnIiArIHdpZHRoICsgIicpIiwgMCk7DQogICAgfQ0KICAgIGVsc2Ugew0K ICAgICAgICBpZiAobV9mcm9tQWRkVG9DYXJ0KSB7DQogICAgICAgICAgICByZXR1 cm47DQogICAgICAgIH0NCiAgICAgICAgaWYgKGlkICE9IG1faWQpIHsNCg0KDQog ICAgICAgICAgICBzaHJpbmtJdChpZCwgZmFsc2UpOw0KICAgICAgICAgICAgc2V0 VGltZW91dCgiZmx5b3V0bWF4KCciICsgaWQgKyAiJywnIiArIHdpZHRoICsgIicp IiwgMjUwKTsNCg0KICAgICAgICB9DQogICAgICAgIC8vCSAgICAgICAgZWxzZQ0K ICAgICAgICAvLwkgICAgICAgIHsNCiAgICAgICAgLy8JICAgICAgICAgICAgaXNi bG9hdGluZyA9IGZhbHNlOw0KICAgICAgICAvLwkgICAgICAgIH0NCiAgICB9DQoN Cg0KfQ0KZnVuY3Rpb24gZmx5b3V0Y2xvc2UoaWQsIGNsZWFyKSB7DQogICAgdHJ5 IHsNCg0KICAgICAgICB2YXIgbGluayA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk KCJmbHlvdXQiICsgaWQgKyAibGluayIpOw0KICAgICAgICB2YXIgYm9keSA9IGRv Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJmbHlvdXQiICsgaWQgKyAiYm9keSIpOw0K ICAgICAgICB2YXIgb2Zmc2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZs eW91dCIgKyBpZCArICJvZmZzZXQiKTsNCiAgICAgICAgbGluay5jbGFzc05hbWUg PSAiZm8iICsgaWQgKyAibGlua21pbiI7DQogICAgICAgIGJvZHkuY2xhc3NOYW1l ID0gImZvIiArIGlkICsgImJvZHltaW4iOw0KICAgICAgICBvZmZzZXQuY2xhc3NO YW1lID0gImZvIiArIGlkICsgIm9mZnNldG1pbiI7DQogICAgICAgIG1fcGJhckNv bnRlbnREaXYgPSBudWxsOw0KICAgICAgICBpZiAoY2xlYXIpIHsNCiAgICAgICAg ICAgIGN1cnJlbnRJRCA9IG51bGw7DQogICAgICAgIH0NCiAgICB9DQogICAgY2F0 Y2ggKGUpDQp7IH0NCn0NCmZ1bmN0aW9uIHBiYXJzdHJpcGFqYXgoZXZlbnQpIHsN CiAgICBpZiAoZXZlbnQuU3RhdHVzID09ICJPSyIgJiYgZXZlbnQuUmVzcG9uc2Ug IT0gImZhbHNlIiAmJiBldmVudC5SZXNwb25zZS5sZW5ndGggPiAwKSB7IC8vIE9L IHdlIGhhdmUgdGhlIGNvb2tpZSBzZXQgc28gbGV0cyBnZXQgdGhlIG5ldyB2YWx1 ZXMgZm9yIHRoZSBmaXJzdCByZW5kZXINCiAgICAgICAgbV9wYmFyTUEuSXNBdXRo ZW50aWNhdGVkID0gZ2V0Q29va2llKCJHQUF1dGgiKSA/IHRydWUgOiBmYWxzZTsN CiAgICAgICAgbV9wYmFyTUEuSXNDb29raWVkID0gZ2V0Q29va2llKCJjaG06VFAi KSA/IHRydWUgOiBmYWxzZTsNCiAgICAgICAgbV9wYmFyTUEuRmlyc3ROYW1lID0g bV9wYmFyTUEuSXNDb29raWVkID8gZ2V0Q29va2llS2V5VmFsdWUoImNobTpUUCIs ICJmbiIsIHRydWUpIDogbV9wYmFyTUEuRmlyc3ROYW1lOw0KICAgICAgICByZW5k ZXJQYmFyU3RyaXAoKTsNCiAgICB9DQp9DQpmdW5jdGlvbiBwYmFybmF2YWpheChl dmVudCkgew0KDQogICAgaWYgKGV2ZW50LlN0YXR1cyA9ICJPSyIgJiYgZXZlbnQu UmVzcG9uc2UgIT0gImZhbHNlIiAmJiBldmVudC5SZXNwb25zZS5sZW5ndGggPiAw KSB7DQogICAgICAgIGxpbmsgPSBnZXRSYXdPYmplY3QoInN1Ym5hdiIpOw0KICAg ICAgICBsaW5rLmlubmVySFRNTCA9IGV2ZW50LlJlc3BvbnNlOw0KICAgICAgICBi aW5kTWFzdEhlYWRGbHlvdXRzKCk7DQogICAgfQ0KfQ0KZnVuY3Rpb24gcGJhcmNv bnRlbnRhamF4KGV2ZW50KSB7DQogICAgaWYgKGV2ZW50LlN0YXR1cyA9ICJPSyIg JiYgbV9wYmFyQ29udGVudERpdiAmJiBldmVudC5SZXNwb25zZSAhPSAiZmFsc2Ui ICYmIGV2ZW50LlJlc3BvbnNlLmxlbmd0aCA+IDApIHsNCiAgICAgICAgaWYgKG1f aWQgPT0gImNhcnQiKSB7DQogICAgICAgICAgICBsaW5rID0gZ2V0UmF3T2JqZWN0 KG1fcGJhckNvbnRlbnREaXYpOw0KICAgICAgICAgICAgbGluay5pbm5lckhUTUwg PSBldmVudC5SZXNwb25zZTsNCg0KDQogICAgICAgICAgICB0cnkgew0KICAgICAg ICAgICAgICAgIHZhciBkaXZzID0gbGluay5nZXRFbGVtZW50c0J5VGFnTmFtZSgi ZGl2Iik7DQogICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkaXZz Lmxlbmd0aDsgaSsrKSB7DQogICAgICAgICAgICAgICAgICAgIGlmIChkaXZzW2ld LmNsYXNzTmFtZSA9PSAicHJvZHVjdEltYWdlIikgew0KICAgICAgICAgICAgICAg ICAgICAgICAgdmFyIGltZ1VybCA9IGRpdnNbaV0uZ2V0RWxlbWVudHNCeVRhZ05h bWUoImltZyIpWzBdLnNyYzsNCiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBw b3MgPSBpbWdVcmwuaW5kZXhPZigib3A9Iik7DQogICAgICAgICAgICAgICAgICAg ICAgICBpZiAocG9zID4gLTEpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICB2YXIgaW1hZ2VJRCA9IGltZ1VybC5zdWJzdHJpbmcocG9zICsgMywgaW1nVXJs Lmxlbmd0aCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGl2c1tpXS5n ZXRFbGVtZW50c0J5VGFnTmFtZSgiaW1nIilbMF0uc3JjID0gImh0dHA6Ly9hY2Nl c3Nvcmllcy51cy5kZWxsLmNvbS9zbmEvaW1hZ2VzL3Byb2R1Y3RzL3RodW1ibmFp bC8iICsgaW1hZ2VJRCArICIuanBnIjsNCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAiaHR0cDovL2FjY2Vzc29yaWVzLnVzLmRlbGwuY29tL3NuYS9pbWFnZXMy L3Jlc2l6ZS5hc3B4LyIgKyBpbWFnZUlEOw0KICAgICAgICAgICAgICAgICAgICAg ICAgfQ0KICAgICAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAg ICAgaWYgKGRpdnNbaV0uY2xhc3NOYW1lID09ICJwcm9kdWN0RGVzYyIpIHsNCg0K ICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHByb2RkaXYgPSBkaXZzW2ldOw0K DQogICAgICAgICAgICAgICAgICAgICAgICB2YXIgZHNwYW4gPSBwcm9kZGl2Lmdl dEVsZW1lbnRzQnlUYWdOYW1lKCJzcGFuIilbMV07DQoNCiAgICAgICAgICAgICAg ICAgICAgICAgIGlmIChkc3Bhbi5pbm5lckhUTUwgPT0gIjAuMDAiKSB7DQoNCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICBkc3Bhbi5zdHlsZS5kaXNwbGF5ID0g Im5vbmUiOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB6ZXJvRGlz YyA9IG5ldyBTdHJpbmcocHJvZGRpdi5pbm5lckhUTUwucmVwbGFjZSgvPEJSPi9p LCAiIikpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2RkaXYuaW5u ZXJIVE1MID0gemVyb0Rpc2M7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIH0N CiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAg ICAgICAgIH0NCiAgICAgICAgICAgIGNhdGNoIChleCkNCgkgICAgeyB9DQogICAg ICAgICAgICBtX2NhcnRQYWdlc1ttX2NhcnRQYWdlcy5sZW5ndGhdID0gbGluay5p bm5lckhUTUw7DQogICAgICAgICAgICB2YXIgY2FydEJvZHkgPSBnZXRSYXdPYmpl Y3QobV9wYmFyQ29udGVudERpdik7DQogICAgICAgICAgICBjYXJ0Qm9keS5zdHls ZS5oZWlnaHQgPSAiMXB4IjsNCiAgICAgICAgICAgIGNhcnRCb2R5LnN0eWxlLm92 ZXJmbG93ID0gImhpZGRlbiI7DQoNCiAgICAgICAgICAgIGNhcnRCb2R5LnN0eWxl LmhlaWdodCA9IGNhcnRCb2R5LnNjcm9sbEhlaWdodDsNCiAgICAgICAgICAgIENv bnRhaW5lckhlaWdodCA9IGNhcnRCb2R5LnNjcm9sbEhlaWdodDsNCg0KICAgICAg ICAgICAgaWYgKGlzcGFnaW5nID09IGZhbHNlKSB7DQogICAgICAgICAgICAgICAg Z3Jvd0l0KCJjYXJ0Iik7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAg IH0NCg0KfQ0KDQoNCg0KZnVuY3Rpb24gdGFiY29udGVudGFqYXgoZXZlbnQpIHsN CiAgICBpZiAoZXZlbnQuU3RhdHVzID0gIk9LIiAmJiBtX3RhYkNvbnRlbnREaXYg JiYgZXZlbnQuUmVzcG9uc2UgIT0gImZhbHNlIiAmJiBldmVudC5SZXNwb25zZS5s ZW5ndGggPiAwKSB7DQogICAgICAgIGxpbmsgPSBnZXRSYXdPYmplY3QobV90YWJD b250ZW50RGl2ICsgImNvbnRlbnQiKTsNCiAgICAgICAgbGluay5pbm5lckhUTUwg PSBldmVudC5SZXNwb25zZTsNCiAgICB9DQp9DQp2YXIgaXNwYWdpbmcgPSBmYWxz ZTsNCg0KZnVuY3Rpb24gY2FydFBhZ2luZyhpZHgpIHsNCiAgICB0cnkgew0KICAg ICAgICBpc3BhZ2luZyA9IHRydWU7DQogICAgICAgIGlmICh0eXBlb2YgKG1fY2Fy dFBhZ2VzW2lkeF0pICE9ICJ1bmRlZmluZWQiKSB7DQogICAgICAgICAgICBsaW5r ID0gZ2V0UmF3T2JqZWN0KG1fcGJhckNvbnRlbnREaXYpOw0KICAgICAgICAgICAg bGluay5pbm5lckhUTUwgPSBtX2NhcnRQYWdlc1tpZHhdOw0KICAgICAgICAgICAg dmFyIGNhcnRCb2R5ID0gZ2V0UmF3T2JqZWN0KG1fcGJhckNvbnRlbnREaXYpOw0K ICAgICAgICAgICAgY2FydEJvZHkuc3R5bGUuaGVpZ2h0ID0gIjFweCI7DQogICAg ICAgICAgICBjYXJ0Qm9keS5zdHlsZS5vdmVyZmxvdyA9ICJoaWRkZW4iOw0KICAg ICAgICAgICAgY2FydEJvZHkuc3R5bGUuaGVpZ2h0ID0gY2FydEJvZHkuc2Nyb2xs SGVpZ2h0Ow0KICAgICAgICAgICAgQ29udGFpbmVySGVpZ2h0ID0gY2FydEJvZHku c2Nyb2xsSGVpZ2h0Ow0KDQogICAgICAgIH0NCiAgICAgICAgZWxzZSB7DQogICAg ICAgICAgICB2YXIgY29udGVudCA9ICJjYXJ0IjsNCiAgICAgICAgICAgIGlmICht X3BiYXJDb250ZW50RGl2LmluZGV4T2YoImZseW91dCIpID49IDApIHsNCiAgICAg ICAgICAgICAgICBjb250ZW50ID0gbV9wYmFyQ29udGVudERpdi5zdWJzdHJpbmco NiwgbV9wYmFyQ29udGVudERpdi5pbmRleE9mKCJib2R5IikpOw0KICAgICAgICAg ICAgfQ0KICAgICAgICAgICAgaWYgKG1fcGJhckNvbnRlbnREaXYuaW5kZXhPZigi bWhfIikgPj0gMCkgew0KICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBtX3BiYXJD b250ZW50RGl2LnN1YnN0cmluZygzLCBtX3BiYXJDb250ZW50RGl2LmluZGV4T2Yo ImNvbnRlbnQiKSk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIEFzeW5j WERvbWFpbklmcmFtZUNhbGwobV9wYmFyUGZ4ICsgIi9wYmFyL2FqYXguYXNweD9+ cHNjPSIgKyBjb250ZW50ICsgIiZ+Y2l4PSIgKyBpZHgsIHBiYXJjb250ZW50YWph eCk7DQogICAgICAgIH0NCg0KICAgICAgICAvLwkJICAgICAgICB2YXIgY2FydEJv ZHkgPSBnZXRSYXdPYmplY3QoIG1fcGJhckNvbnRlbnREaXYgKTsNCiAgICAgICAg Ly8JCSAgICAgICAgYWxlcnQoY2FydEJvZHkuc2Nyb2xsSGVpZ2h0KTsNCg0KICAg IH0NCiAgICBjYXRjaCAoZSkNCiAgICB7IH0NCn0NCmZ1bmN0aW9uIG1hTG9nb3V0 KCkgew0KICAgIGZvciAoZm9ybUlkeCA9IDA7IGZvcm1JZHggPCBkb2N1bWVudC5m b3Jtcy5sZW5ndGg7IGZvcm1JZHgrKykgew0KICAgICAgICBpZiAoIm15YWNjb3Vu dGxvZ291dCIgPT0gZG9jdW1lbnQuZm9ybXNbZm9ybUlkeF0ubmFtZSkgew0KICAg ICAgICAgICAgdmFyIGN1clVybCA9IGRvY3VtZW50LmxvY2F0aW9uLmhyZWY7DQog ICAgICAgICAgICB2YXIgbG9nT3V0SWR4ID0gY3VyVXJsLmluZGV4T2YoIiZ+bXlh Y2NvdW50bG9naW49dHJ1ZSIpOw0KICAgICAgICAgICAgaWYgKGxvZ091dElkeCA+ IC0xKSB7DQogICAgICAgICAgICAgICAgZG9jdW1lbnQuZm9ybXNbZm9ybUlkeF0u YWN0aW9uID0gY3VyVXJsLnN1YnN0cmluZygwLCBsb2dPdXRJZHgpOw0KICAgICAg ICAgICAgfQ0KICAgICAgICAgICAgZG9jdW1lbnQuZm9ybXNbZm9ybUlkeF0uc3Vi bWl0KCk7DQogICAgICAgIH0NCiAgICB9DQp9DQoNCmZ1bmN0aW9uIG1hTGlua0xv Z291dCgpIHsNCiAgICB0cnkgew0KICAgICAgICBkb2N1bWVudC5jb29raWUgPSAi Y2htOlRQPSIgKyBlc2NhcGUoIm51bGwiKSArICI7cGF0aD0vO2V4cGlyZXM9VGh1 LCAwMS1KYW4tMTk3MCAwMDowMDowMSBHTVQ7ZG9tYWluPS5kZWxsLmNvbSI7DQog ICAgICAgIGRvY3VtZW50LmNvb2tpZSA9ICJQcm9maWxlPSIgKyBlc2NhcGUoIm51 bGwiKSArICI7cGF0aD0vO2V4cGlyZXM9VGh1LCAwMS1KYW4tMTk3MCAwMDowMDow MSBHTVQ7ZG9tYWluPS5kZWxsLmNvbSI7DQogICAgICAgIGRvY3VtZW50LmNvb2tp ZSA9ICJHQUhvdD0iICsgZXNjYXBlKCJudWxsIikgKyAiO3BhdGg9LztleHBpcmVz PVRodSwgMDEtSmFuLTE5NzAgMDA6MDA6MDEgR01UO2RvbWFpbj0uZGVsbC5jb20i Ow0KICAgICAgICB2YXIgdXJsID0gbV9wYmFyUGZ4ICsgIi9wYmFyL2xvZ2luLmFz cHg/fmxvZ291dD10cnVlIjsNCiAgICAgICAgJGouZ2V0U2NyaXB0KHVybCwgbG9n b3V0YWpheCk7DQogICAgfQ0KICAgIGNhdGNoIChlKQ0KeyB9DQp9DQoNCmZ1bmN0 aW9uIGxvZ291dGFqYXgoZXZlbnQpIHsNCiAgICB3aW5kb3cubG9jYXRpb24ucmVs b2FkKCk7DQp9DQoNCmZ1bmN0aW9uIG1hTGluayhocmVmKSB7DQogICAgd2luZG93 LnBhcmVudC5sb2NhdGlvbiA9IGhyZWY7DQp9DQpmdW5jdGlvbiBtYUVudGVyU3Vi bWl0KGV2ZW50KSB7DQogICAgaWYgKGV2ZW50ICYmIGV2ZW50LndoaWNoID09IDEz IHx8IGV2ZW50LmtleUNvZGUgPT0gMTMpDQogICAgICAgIG1hTG9naW5WYWxpZGF0 aW9uKCk7DQogICAgZWxzZQ0KICAgICAgICByZXR1cm4gdHJ1ZTsNCn0NCmZ1bmN0 aW9uIG1hTG9naW5WYWxpZGF0aW9uKCkgew0KICAgIHZhciBteUFjY250TG9naW4g PSAibXlhY2NvdW50bG9naW4iOw0KICAgIGZvciAoZm9ybUlkeCA9IDA7IGZvcm1J ZHggPCBkb2N1bWVudC5mb3Jtcy5sZW5ndGg7IGZvcm1JZHgrKykgew0KICAgICAg ICBpZiAobXlBY2NudExvZ2luID09IGRvY3VtZW50LmZvcm1zW2Zvcm1JZHhdLm5h bWUpIHsNCiAgICAgICAgICAgIG15QWNjbnRMb2dpbiA9IGRvY3VtZW50LmZvcm1z W2Zvcm1JZHhdOw0KICAgICAgICAgICAgYnJlYWs7DQogICAgICAgIH0NCiAgICB9 DQogICAgdmFyIGVtYWlsID0gbXlBY2NudExvZ2luLmVtYWlsOw0KICAgIHZhciBl bWFpbERpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJlbWFpbERpdiIpOw0K ICAgIHZhciBwYXNzd29yZCA9IG15QWNjbnRMb2dpbi5wYXNzd29yZDsNCiAgICB2 YXIgcGFzc3dvcmREaXYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicGFzc3dv cmREaXYiKTsNCiAgICBpZiAoZW1haWwudmFsdWUubGVuZ3RoICE9IDAgJiYgcGFz c3dvcmQudmFsdWUubGVuZ3RoICE9IDApIHsNCiAgICAgICAgdmFyIGFjdGlvblVy bCA9IGRvY3VtZW50LmxvY2F0aW9uLmhyZWY7DQogICAgICAgIHRyeSB7DQogICAg ICAgICAgICBteUFjY250TG9naW4uc3VibWl0KCk7DQogICAgICAgIH0NCiAgICAg ICAgY2F0Y2ggKGUpIHsNCiAgICAgICAgICAgIGFsZXJ0KGUpOw0KICAgICAgICB9 DQogICAgfQ0KICAgIGVsc2Ugew0KICAgICAgICBlbWFpbERpdi5zdHlsZS5kaXNw bGF5ID0gIm5vbmUiOw0KICAgICAgICBwYXNzd29yZERpdi5zdHlsZS5kaXNwbGF5 ID0gIm5vbmUiOw0KICAgIH0NCiAgICBpZiAoZW1haWwudmFsdWUubGVuZ3RoID09 IDApIHsNCiAgICAgICAgZW1haWxEaXYuc3R5bGUuZGlzcGxheSA9ICJibG9jayI7 DQogICAgfQ0KICAgIGlmIChwYXNzd29yZC52YWx1ZS5sZW5ndGggPT0gMCkgew0K ICAgICAgICBwYXNzd29yZERpdi5zdHlsZS5kaXNwbGF5ID0gImJsb2NrIjsNCiAg ICB9DQogICAgaWYgKGVtYWlsLnZhbHVlLmxlbmd0aCA9PSAwIHx8IHBhc3N3b3Jk LnZhbHVlLmxlbmd0aCA9PSAwKSB7DQogICAgICAgIHRyeSB7DQoNCiAgICAgICAg ICAgIHdpbmRvdy5wYXJlbnQuc2V0TUFJZnJhbWVIZWlnaHQoZG9jdW1lbnQuZ2V0 RWxlbWVudEJ5SWQoIm15YWNjb3VudHBhZ2UiKS5vZmZzZXRIZWlnaHQpOw0KICAg ICAgICB9DQogICAgICAgIGNhdGNoIChlKQ0KCXsgfQ0KICAgIH0NCn0NCmZ1bmN0 aW9uIFRvb2xCb3goY2FwdGlvbiwgbWVudUl0ZW1zLCB3aWR0aCwgaWNvblVybCkg ew0KICAgIHRoaXMuQ2FwdGlvbiA9IGNhcHRpb247DQogICAgdGhpcy5NZW51SXRl bXMgPSBtZW51SXRlbXM7DQogICAgdGhpcy5JY29uVXJsID0gaWNvblVybDsNCiAg ICB0aGlzLldpZHRoID0gd2lkdGg7DQogICAgdGhpcy5SZW5kZXIgPSBUb29sQm94 UmVuZGVyOw0KfQ0KDQpmdW5jdGlvbiByZW5kZXJUb29sQm94KCkgew0KICAgIGlm IChtX3Rvb2xCb3hMaW5rcyAhPSB1bmRlZmluZWQpIHsNCiAgICAgICAgdHJ5IHsg ZG9jdW1lbnQud3JpdGUobV90b29sQm94TGlua3MuUmVuZGVyKCkpOyB9DQogICAg ICAgIGNhdGNoIChleCkgeyBhbGVydChleCk7IH0NCiAgICB9DQp9DQpmdW5jdGlv biByZW5kZXJQYmFyU3RyaXAoKSB7DQogICAgdmFyIHN0cmlwID0gZ2V0UmF3T2Jq ZWN0KCJwYmFyc3RyaXBjb250YWluZXIiKTsNCiAgICB2YXIgY29udGVudDsNCiAg ICBpZiAobV9wYmFyU3RyaXBDb250ZW50KSB7DQogICAgICAgIHN0cmlwLmlubmVy SFRNTCA9IG1fcGJhclN0cmlwQ29udGVudDsNCiAgICB9DQogICAgZWxzZSB7DQog ICAgICAgIGlmIChtX3BiYXJDYXJ0ICE9IHVuZGVmaW5lZCB8fCBtX3BiYXJNQSAh PSB1bmRlZmluZWQgfHwgbV90b29sQm94TGlua3MgIT0gdW5kZWZpbmVkKSB7DQog ICAgICAgICAgICBjb250ZW50ID0gIjx0YWJsZSB3aWR0aD1cIjEwMCVcIiBjZWxs cGFkZGluZz1cIjBcIiBjZWxsc3BhY2luZz1cIjBcIiBib3JkZXI9XCIwXCI+PHRy PiI7DQoNCiAgICAgICAgICAgIGlmIChtX3BiYXJNQSAhPSB1bmRlZmluZWQpIHsN CiAgICAgICAgICAgICAgICB0cnkgeyBjb250ZW50ICs9IG1fcGJhck1BLlJlbmRl cigpOyB9DQogICAgICAgICAgICAgICAgY2F0Y2ggKGV4KSB7IGFsZXJ0KGV4KTsg fQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgaWYgKG1fcGJhckNhcnQgIT0g dW5kZWZpbmVkKSB7DQogICAgICAgICAgICAgICAgdHJ5IHsgY29udGVudCArPSBt X3BiYXJDYXJ0LlJlbmRlcigpOyB9DQogICAgICAgICAgICAgICAgY2F0Y2ggKGV4 KSB7IGFsZXJ0KGV4KTsgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgY29u dGVudCArPSAiPC90cj48L3RhYmxlPiI7DQogICAgICAgICAgICBzdHJpcC5pbm5l ckhUTUwgPSBjb250ZW50Ow0KICAgICAgICB9DQogICAgfQ0KfQ0KZnVuY3Rpb24g VG9vbEJveChjYXB0aW9uLCBtZW51SXRlbXMsIHdpZHRoLCBpY29uVXJsKSB7DQog ICAgdGhpcy5DYXB0aW9uID0gY2FwdGlvbjsNCiAgICB0aGlzLk1lbnVJdGVtcyA9 IG1lbnVJdGVtczsNCiAgICB0aGlzLkljb25VcmwgPSBpY29uVXJsOw0KICAgIHRo aXMuV2lkdGggPSB3aWR0aDsNCiAgICB0aGlzLlJlbmRlciA9IFRvb2xCb3hSZW5k ZXI7DQp9DQpmdW5jdGlvbiBUb29sQm94UmVuZGVyKCkgew0KICAgIHZhciBuYXY7 DQogICAgbV9Mb2FkaW5nQ2FwdGlvbiA9IHRoaXMuTG9hZGluZ0NhcHRpb247DQog ICAgbmF2ID0gIjx0ZCB2YWxpZ249XCJ0b3BcIj48ZGl2IGlkPVwiZmx5b3V0dG9v bGJveGxpbmtcIiBjbGFzcz1cImZvdG9vbGJveGxpbmttaW5cIiBvbm1vdXNlb3V0 PVwiamF2YXNjcmlwdDpmbHlvdXRtaW4oJ3Rvb2xib3gnKVwiIG9ubW91c2VvdmVy PVwiamF2YXNjcmlwdDpmbHlvdXRtYXgoJ3Rvb2xib3gnLCAiICsgdGhpcy5XaWR0 aCArICIpXCIgPiINCgkgICAgKyAiPHRhYmxlIGNlbGxwYWRkaW5nPVwiMFwiIGNl bGxzcGFjaW5nPVwiMFwiIGJvcmRlcj1cIjBcIj48dHI+Ig0KICAgICAgICArICI8 dGQgbm93cmFwPVwidHJ1ZVwiPjxzcGFuIGNsYXNzPVwidG9vbGJveGNhcHRpb25c Ij4iICsgdGhpcy5DYXB0aW9uICsgIjwvc3Bhbj48L3RkPiINCiAgICAgICAgKyAi PC90cj48L3RhYmxlPjwvZGl2PjxkaXYgaWQ9XCJmbHlvdXR0b29sYm94b2Zmc2V0 XCIgY2xhc3M9XCJmb3Rvb2xib3hvZmZzZXRtaW5cIj48aW1nIHNyYz1cIiIgKyBt X2ltZ1BmeCArICIvaW1hZ2VzL2dsb2JhbC9nZW5lcmFsL3NwYWNlci5naWZcIiBo ZWlnaHQ9XCIxXCIgLz48L2Rpdj4iDQoJICAgICsgIjxkaXYgc3R5bGU9XCJ3aWR0 aDoiICsgdGhpcy5XaWR0aCArICJweDtcIiBpZD1cImZseW91dHRvb2xib3hib2R5 XCIgbmFtZT1cImZseW91dHRvb2xib3hib2R5XCIgY2xhc3M9XCJmb3Rvb2xib3hi b2R5bWluXCIgb25tb3VzZW91dD1cImphdmFzY3JpcHQ6Zmx5b3V0bWluKCd0b29s Ym94JylcIiBvbm1vdXNlb3Zlcj1cImphdmFzY3JpcHQ6Zmx5b3V0Y2xlYXIoKVwi PjxkaXYgc3R5bGU9XCJwYWRkaW5nOjEwcHg7XCI+IjsNCiAgICBpZiAodGhpcy5N ZW51SXRlbXMgIT0gbnVsbCAmJiB0aGlzLk1lbnVJdGVtcy5sZW5ndGggPiAwKSB7 DQogICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5NZW51SXRlbXMubGVu Z3RoOyBpKyspIHsNCiAgICAgICAgICAgIGlmICh0aGlzLk1lbnVJdGVtc1tpXS5J c1NlcGFyYXRvcikgew0KICAgICAgICAgICAgICAgIG5hdiArPSAiPGRpdiBjbGFz cz1cInRvb2xib3hfZGl2aWRlXCI+PGltZyBzcmM9XCIiICsgbV9pbWdQZnggKyAi L2ltYWdlcy9nbG9iYWwvZ2VuZXJhbC9zcGFjZXIuZ2lmXCIgaGVpZ2h0PVwiNVwi IC8+PC9kaXY+IjsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGVsc2UgaWYg KHRoaXMuTWVudUl0ZW1zW2ldLklzQ2FwdGlvbikgew0KICAgICAgICAgICAgICAg IG5hdiArPSAiPGRpdiBjbGFzcz1cInRvb2xib3hfY2FwdGlvblwiPiIgKyB0aGlz Lk1lbnVJdGVtc1tpXS5UZXh0ICsgIjwvZGl2PiI7DQogICAgICAgICAgICB9DQog ICAgICAgICAgICBlbHNlIHsNCiAgICAgICAgICAgICAgICBpZiAodGhpcy5NZW51 SXRlbXNbaV0uTWVudUl0ZW1zICE9IG51bGwgJiYgdGhpcy5NZW51SXRlbXNbaV0u TWVudUl0ZW1zLmxlbmd0aCA+IDApIHsNCiAgICAgICAgICAgICAgICAgICAgLy8g RXhwYW5kICsvLSBMaW5rDQogICAgICAgICAgICAgICAgICAgIG5hdiArPSAiPGEg aHJlZj1cIiNcIiBvbmNsaWNrPVwidG9vbEJveFRvZ2dsZSgnIiArIGkgKyAiJywg ZXZlbnR8fHdpbmRvdy5ldmVudCk7XCI+PGRpdiBpZD1cInRuYXZfIiArIGkgKyAi XCIgY2xhc3M9XCJ0b29sYm94X2xpbmtfZXhwYW5kXCI+IiArIHRoaXMuTWVudUl0 ZW1zW2ldLlRleHQgKyAiPC9kaXY+PC9hPjxkaXYgaWQ9XCJ0bmF2XyIgKyBpICsg Il9zdWJcIiBzdHlsZT1cImRpc3BsYXk6bm9uZTtcIj4iOw0KICAgICAgICAgICAg ICAgICAgICBmb3IgKHZhciBzID0gMDsgcyA8IHRoaXMuTWVudUl0ZW1zW2ldLk1l bnVJdGVtcy5sZW5ndGg7IHMrKykgew0KICAgICAgICAgICAgICAgICAgICAgICAg Ly8gTm8gaWNvbiBzdWIgbGlua3MNCiAgICAgICAgICAgICAgICAgICAgICAgIG5h diArPSAiPGEgIGhyZWY9XCIiICsgdGhpcy5NZW51SXRlbXNbaV0uTWVudUl0ZW1z W3NdLkhyZWYgKyAiXCIiICsgdGhpcy5NZW51SXRlbXNbaV0uTWVudUl0ZW1zW3Nd LlRhcmdldEh0bWwgKyAiXCI+PGRpdiBjbGFzcz1cInRvb2xib3hfbGlua19zdWJc Ij4iICsgdGhpcy5NZW51SXRlbXNbaV0uTWVudUl0ZW1zW3NdLlRleHQ7DQogICAg ICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5NZW51SXRlbXNbaV0uTWVudUl0 ZW1zW3NdLk9mZkRlbGwpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBu YXYgKz0gbV9zdGRPZmZJbWc7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQog ICAgICAgICAgICAgICAgICAgICAgICBuYXYgKz0gIjwvZGl2PjwvYT4iOw0KICAg ICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIG5hdiArPSAi PC9kaXY+IjsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgZWxz ZSB7DQogICAgICAgICAgICAgICAgICAgIC8vIE5vcm1hbCBBcnJvdyBMaW5rDQog ICAgICAgICAgICAgICAgICAgIG5hdiArPSAiPGEgIGhyZWY9XCIiICsgdGhpcy5N ZW51SXRlbXNbaV0uSHJlZiArICJcIiIgKyB0aGlzLk1lbnVJdGVtc1tpXS5UYXJn ZXRIdG1sICsgIlwiPjxkaXYgY2xhc3M9XCJ0b29sYm94X2xpbmtcIj4iICsgdGhp cy5NZW51SXRlbXNbaV0uVGV4dDsNCiAgICAgICAgICAgICAgICAgICAgaWYgKHRo aXMuTWVudUl0ZW1zW2ldLk9mZkRlbGwpIHsNCiAgICAgICAgICAgICAgICAgICAg ICAgIG5hdiArPSBtX3N0ZE9mZkltZzsNCiAgICAgICAgICAgICAgICAgICAgfQ0K ICAgICAgICAgICAgICAgICAgICBuYXYgKz0gIjwvZGl2PjwvYT4iOw0KICAgICAg ICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgIH0NCiAg ICBuYXYgKz0gIjwvZGl2PjwvZGl2PjwvdGQ+IjsNCg0KICAgIHJldHVybiBuYXY7 DQp9DQoNCmZ1bmN0aW9uIHRvb2xCb3hUb2dnbGUoaWQsIGUpIHsNCiAgICBpZiAo ZS5wcmV2ZW50RGVmYXVsdCkNCiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOw0K ICAgIGVsc2UNCiAgICAgICAgZS5yZXR1cm5WYWx1ZSA9IGZhbHNlOw0KDQogICAg dmFyIG5hdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0bmF2XyIgKyBpZCk7 DQogICAgdmFyIHN1Ym5hdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0bmF2 XyIgKyBpZCArICJfc3ViIik7DQogICAgaWYgKHN1Ym5hdi5zdHlsZS5kaXNwbGF5 ID09ICJub25lIikgew0KICAgICAgICBuYXYuY2xhc3NOYW1lID0gInRvb2xib3hf bGlua19jb2xsYXBzZSI7DQogICAgICAgIHN1Ym5hdi5zdHlsZS5kaXNwbGF5ID0g ImlubGluZSI7DQogICAgfQ0KICAgIGVsc2Ugew0KICAgICAgICBuYXYuY2xhc3NO YW1lID0gInRvb2xib3hfbGlua19leHBhbmQiOw0KICAgICAgICBzdWJuYXYuc3R5 bGUuZGlzcGxheSA9ICJub25lIjsNCiAgICB9DQogICAgdmFyIGJvZHkgPSBnZXRS YXdPYmplY3QoImZseW91dHRvb2xib3hib2R5Iik7DQogICAgYm9keS5zdHlsZS5o ZWlnaHQgPSAiMXB4IjsNCiAgICBpZiAoISRqLmJyb3dzZXIubXNpZSkgeyBib2R5 LnN0eWxlLm92ZXJmbG93ID0gImhpZGRlbiIgfTsNCiAgICBib2R5LnN0eWxlLmhl aWdodCA9IGJvZHkuc2Nyb2xsSGVpZ2h0Ow0KICAgIENvbnRhaW5lckhlaWdodCA9 IGJvZHkuc2Nyb2xsSGVpZ2h0Ow0KfQ0KZnVuY3Rpb24gUGJhckNhcnRTdHJpcChj YXB0aW9uLCBsaW5rLCBpdGVtcywgbG9hZCwgY291bnQsIGZseW91dCkgew0KICAg IHRoaXMuQ2FwdGlvbiA9IGNhcHRpb247DQogICAgdGhpcy5MaW5rID0gbGluazsN CiAgICB0aGlzLkl0ZW1zQ2FwdGlvbiA9IGl0ZW1zOw0KICAgIHRoaXMuTG9hZGlu Z0NhcHRpb24gPSBsb2FkOw0KICAgIHRoaXMuQ291bnQgPSBjb3VudDsNCiAgICB0 aGlzLklzRmx5b3V0ID0gZmx5b3V0Ow0KICAgIHRoaXMuUmVuZGVyID0gUGJhckNh cnRTdHJpcFJlbmRlcjsNCn0NCmZ1bmN0aW9uIFBiYXJDYXJ0U3RyaXBSZW5kZXIo KSB7DQogICAgdmFyIGNvbnRlbnQ7DQogICAgbV9Mb2FkaW5nQ2FwdGlvbiA9IHRo aXMuTG9hZGluZ0NhcHRpb247DQogICAgY29udGVudCA9ICI8dGQgaWQ9XCJzdG9y bVBiYXJcIj48ZGl2IGlkPVwiZmx5b3V0Y2FydGxpbmtcIiBjbGFzcz1cImZvY2Fy dGxpbmttaW5cIiAiICsgKHRoaXMuSXNGbHlvdXQgPyAib25tb3VzZW91dD1cImph dmFzY3JpcHQ6Zmx5b3V0bWluKCdjYXJ0JylcIiBvbm1vdXNlb3Zlcj1cImphdmFz Y3JpcHQ6Zmx5b3V0bWF4KCdjYXJ0JywgMjUwKVwiIiA6ICIiKSArICI+Ig0KCSAg ICArICI8dGFibGUgY2VsbHBhZGRpbmc9XCIwXCIgY2VsbHNwYWNpbmc9XCIwXCIg Ym9yZGVyPVwiMFwiPjx0cj4iOw0KICAgIGNvbnRlbnQgKz0gIjx0ZCBub3dyYXA9 XCJ0cnVlXCI+PHNwYW4+IiArICgoKHRoaXMuTGluayA9PSBudWxsKSB8fCB0aGlz LklzRmx5b3V0KSA/ICIiIDogIjxhIGhyZWY9XCIiICsgdGhpcy5MaW5rICsgIlwi ID4iKSArIHRoaXMuQ2FwdGlvbiArICgoKHRoaXMuTGluayA9PSBudWxsKSB8fCB0 aGlzLklzRmx5b3V0KSA/ICIiIDogIjwvYT4iKSArICI8L3NwYW4+IiArICgodGhp cy5Db3VudCA+IDApICYmICh0aGlzLklzRmx5b3V0IHx8ICh0aGlzLkxpbmsgIT0g bnVsbCkpID8gKCI8c3Bhbj46IDwvc3Bhbj4gKDxzcGFuIGlkPVwidG90YWxjYXJ0 aXRlbXNcIj4iICsgdGhpcy5Db3VudCArICI8L3NwYW4+ICIgKyB0aGlzLkl0ZW1z Q2FwdGlvbiArICIpIikgOiAiIikgKyAiPC90ZD48L3RyPjwvdGFibGU+PC9kaXY+ PGRpdiBpZD1cImZseW91dGNhcnRvZmZzZXRcIiBjbGFzcz1cImZvY2FydG9mZnNl dG1pblwiPjxpbWcgc3JjPVwiIiArIG1faW1nUGZ4ICsgIi9pbWFnZXMvZ2xvYmFs L2dlbmVyYWwvc3BhY2VyLmdpZlwiIGhlaWdodD1cIjFcIiAvPjwvZGl2PiINCgkg ICAgKyAiPGRpdiBzdHlsZT1cIndpZHRoOjI1MHB4O1wiIGlkPVwiZmx5b3V0Y2Fy dGJvZHlcIiBuYW1lPVwiZmx5b3V0Y2FydGJvZHlcIiBjbGFzcz1cImZvY2FydGJv ZHltaW5cIiBvbm1vdXNlb3V0PVwiamF2YXNjcmlwdDpmbHlvdXRtaW4oJ2NhcnQn KVwiIG9ubW91c2VvdmVyPVwiamF2YXNjcmlwdDpmbHlvdXRjbGVhcigpXCI+PGRp diBpZD1cImxvYWRpbmdcIiBzdHlsZT1cImZvbnQtZmFtaWx5OmFyaWFsO2ZvbnQt c2l6ZTo5cHQ7cGFkZGluZzoxMHB4O1wiPiIgKyB0aGlzLkxvYWRpbmdDYXB0aW9u ICsgIjwvZGl2PjwvZGl2PjwvdGQ+IjsNCiAgICByZXR1cm4gY29udGVudDsNCn0N CnZhciBtX0xvYWRpbmdDYXB0aW9uID0gIkxvYWRpbmciOw0KZnVuY3Rpb24gUGJh ck1BU3RyaXAoY2FwdGlvbkNvb2tpZWQsIGNhcHRpb25BdXRoLCBjYXB0aW9uVW5h dXRoLCBjbGVhclVzZXIsIGF1dGgsIGNvb2tpZWQsIGZuYW1lLCBsbmFtZSwgbG9h ZCwgZmx5b3V0LCBtb2RhbHRpdGxlKSB7DQogICAgdGhpcy5Jc0F1dGhlbnRpY2F0 ZWQgPSBhdXRoOw0KICAgIHRoaXMuSXNDb29raWVkID0gY29va2llZDsNCiAgICB0 aGlzLkZpcnN0TmFtZSA9IGZuYW1lOw0KICAgIHRoaXMuTGFzdE5hbWUgPSBsbmFt ZTsNCiAgICB0aGlzLkNhcHRpb25DbGVhclVzZXIgPSAiPGEgaHJlZj1cImphdmFz Y3JpcHQ6bWFMaW5rTG9nb3V0KCk7XCIgY2xhc3M9XCJwYXJhX3NtYWxsXCIgc3R5 bGU9XCJmb250LXdlaWdodDpub3JtYWw7XCIgdGFyZ2V0PVwiX3NlbGZcIj4iICsg Y2xlYXJVc2VyICsgIjwvYT4iOw0KICAgIHRoaXMuQ2FwdGlvbkNvb2tpZWQgPSBj YXB0aW9uQ29va2llZDsNCiAgICB0aGlzLkNhcHRpb25BdXRoID0gY2FwdGlvbkF1 dGg7DQogICAgdGhpcy5DYXB0aW9uVW5hdXRoID0gY2FwdGlvblVuYXV0aDsNCiAg ICB0aGlzLkxvYWRpbmdDYXB0aW9uID0gbG9hZDsNCiAgICB0aGlzLklzRmx5b3V0 ID0gZmx5b3V0Ow0KICAgIHRoaXMuTW9kYWxUaXRsZSA9IG1vZGFsdGl0bGU7DQog ICAgdGhpcy5SZW5kZXIgPSBQYmFyTUFTdHJpcFJlbmRlcjsNCn0NCmZ1bmN0aW9u IFBiYXJNQVN0cmlwUmVuZGVyKCkgew0KICAgIHZhciBjb250ZW50Ow0KICAgIGNv bnRlbnQgPSAiPHRkIGlkPVwic3Rvcm1QYmFyXCI+IjsNCiAgICBpZiAodGhpcy5J c0F1dGhlbnRpY2F0ZWQgJiYgdGhpcy5GaXJzdE5hbWUgIT0gbnVsbCAmJiB0aGlz LkZpcnN0TmFtZS5sZW5ndGggPiAwKSB7DQogICAgICAgIHRoaXMuQ2FwdGlvbkF1 dGggPSAiPHNwYW4gY2xhc3M9XCJoZWxsb3VzZXJcIj4iICsgdGhpcy5DYXB0aW9u QXV0aC5yZXBsYWNlKC97Y2xlYXJ1c2VyfS9nLCAoIjxzcGFuIGNsYXNzPVwiY2xl YXJ1c2VyXCI+IiArIHRoaXMuQ2FwdGlvbkNsZWFyVXNlciArICI8L3NwYW4+Iikp LnJlcGxhY2UoL3tmbmFtZX0vZywgdGhpcy5GaXJzdE5hbWUpLnJlcGxhY2UoL3ts bmFtZX0vZywgdGhpcy5MYXN0TmFtZSkgKyAiPC9zcGFuPiI7DQogICAgICAgIHZh ciBteWFjY3RjYXB0aW9uID0gKCF0aGlzLklzRmx5b3V0ICYmIG1fbXlBY2NvdW50 TGluayAhPSBudWxsKSA/ICgiPGEgaHJlZj1cIiIgKyBtX215QWNjb3VudExpbmsg KyAiXCI+IiArIHRoaXMuQ2FwdGlvbkF1dGggKyAiPC9hPiIpIDogdGhpcy5DYXB0 aW9uQXV0aDsNCiAgICAgICAgY29udGVudCArPSAiPGRpdiBpZD1cImZseW91dG15 YWNjb3VudGxpbmtcIiBjbGFzcz1cImZvbXlhY2NvdW50bGlua21pblwiPjx0YWJs ZSBjZWxscGFkZGluZz1cIjBcIiBjZWxsc3BhY2luZz1cIjBcIiBib3JkZXI9XCIw XCI+PHRyPjx0ZCBub3dyYXA9XCJ0cnVlXCIgY2xhc3M9XCJwYXJhX3NtYWxsXCI+ IiArIG15YWNjdGNhcHRpb24gKyAiPC90ZD48L3RyPjwvdGFibGU+PC9kaXY+PGRp diBpZD1cImZseW91dG15YWNjb3VudG9mZnNldFwiIGNsYXNzPVwiZm9teWFjY291 bnRvZmZzZXRtaW5cIj48aW1nIHNyYz1cIiIgKyBtX2ltZ1BmeCArICIvaW1hZ2Vz L2dsb2JhbC9nZW5lcmFsL3NwYWNlci5naWZcIiBoZWlnaHQ9XCIxXCIgLz48L2Rp dj4iOw0KICAgIH0NCiAgICBlbHNlIGlmICh0aGlzLklzQ29va2llZCAmJiB0aGlz LkZpcnN0TmFtZSAhPSBudWxsICYmIHRoaXMuRmlyc3ROYW1lLmxlbmd0aCA+IDAp IHsNCiAgICAgICAgdGhpcy5DYXB0aW9uQ29va2llZCA9ICI8c3BhbiBjbGFzcz1c ImhlbGxvdXNlclwiPiIgKyB0aGlzLkNhcHRpb25Db29raWVkLnJlcGxhY2UoL3tj bGVhcnVzZXJ9L2csICgiPHNwYW4gY2xhc3M9XCJjbGVhcnVzZXJcIj4iICsgdGhp cy5DYXB0aW9uQ2xlYXJVc2VyICsgIjwvc3Bhbj4iKSkucmVwbGFjZSgve2ZuYW1l fS9nLCB0aGlzLkZpcnN0TmFtZSkucmVwbGFjZSgve2xuYW1lfS9nLCB0aGlzLkxh c3ROYW1lKSArICI8L3NwYW4+IjsNCiAgICAgICAgdmFyIG15YWNjdGNhcHRpb24g PSAoIXRoaXMuSXNGbHlvdXQgJiYgbV9teUFjY291bnRMaW5rICE9IG51bGwpID8g KCI8YSBocmVmPVwiIiArIG1fbXlBY2NvdW50TGluayArICJcIj4iICsgdGhpcy5D YXB0aW9uQ29va2llZCArICI8L2E+IikgOiB0aGlzLkNhcHRpb25Db29raWVkOw0K ICAgICAgICBjb250ZW50ICs9ICI8ZGl2IGlkPVwiZmx5b3V0bXlhY2NvdW50bGlu a1wiIGNsYXNzPVwiZm9teWFjY291bnRsaW5rbWluXCI+PHRhYmxlIGNlbGxwYWRk aW5nPVwiMFwiIGNlbGxzcGFjaW5nPVwiMFwiIGJvcmRlcj1cIjBcIj48dHI+PHRk IG5vd3JhcD1cInRydWVcIiBjbGFzcz1cInBhcmFfc21hbGxcIj4iICsgbXlhY2N0 Y2FwdGlvbiArICI8L3RkPjwvdHI+PC90YWJsZT48L2Rpdj48ZGl2IGlkPVwiZmx5 b3V0bXlhY2NvdW50b2Zmc2V0XCIgY2xhc3M9XCJmb215YWNjb3VudG9mZnNldG1p blwiPjxpbWcgc3JjPVwiIiArIG1faW1nUGZ4ICsgIi9pbWFnZXMvZ2xvYmFsL2dl bmVyYWwvc3BhY2VyLmdpZlwiIGhlaWdodD1cIjFcIiAvPjwvZGl2PiI7DQogICAg fQ0KICAgIGVsc2Ugew0KICAgICAgICBjb250ZW50ICs9ICI8ZGl2IGlkPVwiZmx5 b3V0bXlhY2NvdW50bGlua1wiIGNsYXNzPVwiZm9teWFjY291bnRsaW5rbWluXCI+ PHRhYmxlIGNlbGxwYWRkaW5nPVwiMFwiIGNlbGxzcGFjaW5nPVwiMFwiIGJvcmRl cj1cIjBcIj48dHI+PHRkIG5vd3JhcD1cInRydWVcIiBjbGFzcz1cInBhcmFfc21h bGxcIj48c3BhbiBjbGFzcz1cInBiYXJsaW5rXCIgb25jbGljaz1cInN0b3JtTW9k YWwuc2hvd0xvZ2luKHt0aXRsZTonIiArIHRoaXMuTW9kYWxUaXRsZSArICInLGF1 dGhMZXZlbDozfSk7XCI+IiArIHRoaXMuQ2FwdGlvblVuYXV0aCArICI8L3NwYW4+ PC90ZD48L3RyPjwvdGFibGU+PC9kaXY+PGRpdiBpZD1cImZseW91dG15YWNjb3Vu dG9mZnNldFwiIGNsYXNzPVwiZm9teWFjY291bnRvZmZzZXRtaW5cIj48aW1nIHNy Yz1cIiIgKyBtX2ltZ1BmeCArICIvaW1hZ2VzL2dsb2JhbC9nZW5lcmFsL3NwYWNl ci5naWZcIiBoZWlnaHQ9XCIxXCIgLz48L2Rpdj4iOw0KICAgIH0NCiAgICBjb250 ZW50ICs9ICI8ZGl2IHN0eWxlPVwid2lkdGg6MjUwcHg7XCIgaWQ9XCJmbHlvdXRt eWFjY291bnRib2R5XCIgY2xhc3M9XCJmb215YWNjb3VudGJvZHltaW5cIj48ZGl2 IGlkPVwibG9hZGluZ1wiIHN0eWxlPVwiZm9udC1mYW1pbHk6YXJpYWw7Zm9udC1z aXplOjlwdDtwYWRkaW5nOjEwcHg7XCI+IiArIHRoaXMuTG9hZGluZ0NhcHRpb24g KyAiPC9kaXY+PC9kaXY+PC90ZD4iOw0KICAgIHJldHVybiBjb250ZW50Ow0KfQ0K DQpmdW5jdGlvbiBDbGllbnRWYXJzKCkgew0KICAgIHRoaXMuQmFuZHdpZHRoID0g QmFuZHdpZHRoKCk7DQogICAgdGhpcy5GbGFzaFZlcnNpb24gPSBTZXRGbGFzaFZl cnNpb24oKTsNCiAgICBtX3N0b3JtQ29va2llLnNlc3Npb24uc2V0Q29va2llKCJi YW5kd2lkdGgiLCB0aGlzLkJhbmR3aWR0aCk7DQogICAgbV9zdG9ybUNvb2tpZS5z ZXNzaW9uLnNldENvb2tpZSgiZmxhc2h2ZXJzaW9uIiwgdGhpcy5GbGFzaFZlcnNp b24pOw0KfQ0KDQpmdW5jdGlvbiBTZXRGbGFzaFZlcnNpb24oKSB7DQogICAgdmFy IGZsYXNodmVyc2lvbiA9IDA7DQogICAgdmFyIE1TRGV0ZWN0ID0gZmFsc2U7DQog ICAgaWYgKG5hdmlnYXRvci5wbHVnaW5zICYmIG5hdmlnYXRvci5wbHVnaW5zLmxl bmd0aCkgew0KICAgICAgICB4ID0gbmF2aWdhdG9yLnBsdWdpbnNbIlNob2Nrd2F2 ZSBGbGFzaCJdOw0KICAgICAgICBpZiAoeCkgew0KICAgICAgICAgICAgaWYgKHgu ZGVzY3JpcHRpb24pIHsNCiAgICAgICAgICAgICAgICB5ID0geC5kZXNjcmlwdGlv bjsNCiAgICAgICAgICAgICAgICAvL3ZhciBkaWdpdDEgPSB5LmNoYXJBdCh5Lmlu ZGV4T2YoJy4nKS0gMSk7DQogICAgICAgICAgICAgICAgLy92YXIgZGlnaXQyID0g eS5jaGFyQXQoeS5pbmRleE9mKCcuJykgLSAyKTsNCiAgICAgICAgICAgICAgICAv L3JldHVybiBkaWdpdDIgKyBkaWdpdDE7DQogICAgICAgICAgICAgICAgLy92YXIg cmVnID0gIi9eLT9cZCsoXC5cZCspPyQvIjsNCiAgICAgICAgICAgICAgICB2YXIg cmVnID0gKCJcXGQrIik7IC8vbWF0Y2ggdGhlIGZpcnN0IHNldCBvZiBpbnRlZ2Vy cyB3L28gdGhlIGRlY2ltYWwgZm9yIHZlcnNpb24NCiAgICAgICAgICAgICAgICB2 YXIgbWF0Y2hlcyA9IG5ldyBSZWdFeHAocmVnKS5leGVjKHkpOw0KICAgICAgICAg ICAgICAgIGlmIChtYXRjaGVzWzBdKSB7DQogICAgICAgICAgICAgICAgICAgIHJl dHVybiBtYXRjaGVzWzBdOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAg ICAgICBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHkuY2hhckF0 KHkuaW5kZXhPZignLicpIC0gMSk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAg ICAgICAgfQ0KICAgICAgICB9DQogICAgICAgIGlmIChuYXZpZ2F0b3IucGx1Z2lu c1siU2hvY2t3YXZlIEZsYXNoIDIuMCJdKSB7DQogICAgICAgICAgICByZXR1cm4g MjsNCiAgICAgICAgfQ0KICAgIH0NCiAgICBlbHNlIHsNCiAgICAgICAgTVNEZXRl Y3QgPSB0cnVlOw0KICAgIH0NCiAgICBpZiAoTVNEZXRlY3QpIHsNCiAgICAgICAg dmFyIHZzID0gMDsNCiAgICAgICAgZm9yICh2ID0gMjsgdiA8IDE1OyB2KyspIHsN CiAgICAgICAgICAgIGllRmxhc2hPYmogPSBudWxsOw0KICAgICAgICAgICAgd2lu ZG93LmV4ZWNTY3JpcHQoJ29uIGVycm9yIHJlc3VtZSBuZXh0OiBpZUZsYXNoT2Jq ID0gSXNPYmplY3QoQ3JlYXRlT2JqZWN0KCJTaG9ja3dhdmVGbGFzaC5TaG9ja3dh dmVGbGFzaC4nICsgdiArICciKSknLCAnVkJTY3JpcHQnKTsNCiAgICAgICAgICAg IGlmIChpZUZsYXNoT2JqKSB7DQogICAgICAgICAgICAgICAgdnMgPSB2Ow0KICAg ICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICAgIHJldHVybiB2czsNCiAgICB9 DQogICAgcmV0dXJuIDA7DQp9DQp2YXIgaXNSZWFkeSA9IGZhbHNlOw0KZnVuY3Rp b24gc1JlYWR5KCkgew0KICAgICRqKGRvY3VtZW50KS5yZWFkeSgNCiAgICAgICAg ZnVuY3Rpb24oKSB7IGlzUmVhZHkgPSB0cnVlOyAkaihkb2N1bWVudCkudHJpZ2dl ckhhbmRsZXIoJ3NSZWFkeScpOyB9DQogICAgKTsNCiAgICBhcnBhbmlzdGhlZGV2 aWwoKTsNCn0NCmZ1bmN0aW9uIGFkZHNSZWFkeShmbikgew0KICAgIGpRdWVyeShk b2N1bWVudCkuYmluZCgnc1JlYWR5JywgZm4pOw0KfQ0KDQpmdW5jdGlvbiBhcnBh bmlzdGhlZGV2aWwoKSB7DQogICAgaWYgKG1faXNQb3B1cEludGVudGlvbikgew0K ICAgICAgICB0cnkgew0KICAgICAgICAgICAgalF1ZXJ5LmVhY2goZG9jdW1lbnQu Ym9keS5jaGlsZE5vZGVzLCBmdW5jdGlvbihpLCB2YWwpIHsNCiAgICAgICAgICAg ICAgICBpZiAoJGoodmFsKS5pcygndGFibGUnKSkgJGoodmFsKS5jc3MoJ3dpZHRo JywgJzEwMCUnKTsNCiAgICAgICAgICAgIH0pOw0KICAgICAgICB9DQogICAgICAg IGNhdGNoIChlKSB7IH0NCiAgICB9DQp9DQpmdW5jdGlvbiBnZXRPYmplY3RIZWln aHQob2JqKSB7DQogICAgcmV0dXJuICRqKG9iaikuaGVpZ2h0KCk7DQp9DQpmdW5j dGlvbiBnZXRPYmplY3RzQnlUYWcodGFnKSB7DQogICAgaWYgKGRvY3VtZW50Lmdl dEVsZW1lbnRzQnlUYWdOYW1lKSB7DQogICAgICAgIHJldHVybiBkb2N1bWVudC5n ZXRFbGVtZW50c0J5VGFnTmFtZSh0YWcpOw0KICAgIH0NCiAgICBlbHNlIGlmIChk b2N1bWVudC5hbGwpIHsNCiAgICAgICAgcmV0dXJuIGRvY3VtZW50LmFsbC50YWdz KHRhZyk7DQogICAgfQ0KICAgIHJldHVybiBudWxsOw0KfQ0KZnVuY3Rpb24gc2V0 TUFJZnJhbWVIZWlnaHQoaGVpZ2h0KSB7DQogICAgdHJ5IHsNCiAgICAgICAgdmFy IG15ZnJhbWVzID0gUGFyc2VJRnJhbWVPYmplY3RzKCJteWZyYW1lIik7DQogICAg ICAgIGZvciAodmFyIGZyYW1laWR4ID0gMDsgZnJhbWVpZHggPCBteWZyYW1lcy5s ZW5ndGg7IGZyYW1laWR4KyspIHsNCiAgICAgICAgICAgIGlmIChoZWlnaHQpIHsN CiAgICAgICAgICAgICAgICBteWZyYW1lc1tmcmFtZWlkeF0uc3R5bGUuaGVpZ2h0 ID0gaGVpZ2h0Ow0KICAgICAgICAgICAgICAgIENvbnRhaW5lckhlaWdodCA9IGhl aWdodCArIDIwOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZWxzZSB7DQog ICAgICAgICAgICAgICAgbXlmcmFtZXNbZnJhbWVpZHhdLnN0eWxlLmhlaWdodCA9 IDMwMDsNCiAgICAgICAgICAgICAgICBDb250YWluZXJIZWlnaHQgPSAzMDA7DQog ICAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICB2YXIgYm9keSA9IGdl dFJhd09iamVjdCgiZmx5b3V0IiArIG1faWQgKyAiYm9keSIpOw0KICAgICAgICBi b2R5LnN0eWxlLmhlaWdodCA9IENvbnRhaW5lckhlaWdodDsNCg0KICAgIH0NCiAg ICBjYXRjaCAoZSkNCnsgfQ0KfQ0KdmFyIG1fbW9yZUxlc3NVbHIgPSAiIjsNCmZ1 bmN0aW9uIG1vcmVMZXNzVG9nZ2xlKGV2dCkgew0KICAgIHZhciBteVRhcmdldCA9 IGV2dC50YXJnZXQgfHwgZXZ0LnNyY0VsZW1lbnQ7DQogICAgdmFyIHBhcmVudCA9 IG15VGFyZ2V0LnBhcmVudE5vZGUucGFyZW50Tm9kZTsNCiAgICBpZiAocGFyZW50 LmdvdGRhdGEpIHsNCiAgICAgICAgbW9yZUxlc3NUb2dnbGVMb2NhbChldnQpOw0K ICAgICAgICByZXR1cm47DQogICAgfQ0KICAgIHBhcmVudC5nb3RkYXRhID0gdHJ1 ZTsNCiAgICB2YXIgZGF0YURpdiA9IG51bGw7DQogICAgdmFyIGRhdGFJbnB1dCA9 IG51bGw7DQogICAgZm9yIChpID0gMDsgaSA8IHBhcmVudC5jaGlsZE5vZGVzLmxl bmd0aDsgaSsrKSB7DQogICAgICAgIGlmIChwYXJlbnQuY2hpbGROb2Rlc1tpXS50 YWdOYW1lID09ICJESVYiKSB7DQogICAgICAgICAgICB2YXIgZGF0YUlucHV0cyA9 IHBhcmVudC5jaGlsZE5vZGVzW2ldLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJpbnB1 dCIpOw0KICAgICAgICAgICAgaWYgKGRhdGFJbnB1dHMgIT0gbnVsbCAmJiBkYXRh SW5wdXRzLmxlbmd0aCA9PSAxKSB7DQogICAgICAgICAgICAgICAgZGF0YUlucHV0 ID0gZGF0YUlucHV0c1swXTsNCiAgICAgICAgICAgICAgICBkYXRhRGl2ID0gcGFy ZW50LmNoaWxkTm9kZXNbaV07DQogICAgICAgICAgICAgICAgYnJlYWs7DQogICAg ICAgICAgICB9DQogICAgICAgIH0NCiAgICB9DQogICAgaWYgKGRhdGFEaXYgPT0g bnVsbCkgew0KICAgICAgICBtb3JlTGVzc1RvZ2dsZUxvY2FsKGV2dCk7DQogICAg ICAgIHJldHVybjsNCiAgICB9DQogICAgaWYgKG1fbW9yZUxlc3NVbHIgPT0gbnVs bCB8fCBtX21vcmVMZXNzVWxyLmxlbmd0aCA9PSAwKSB7DQogICAgICAgIHJldHVy bjsNCiAgICB9DQogICAgdmFyIHN5bmNPYmogPSBnZXRYTUxIVFRQT2JqKCk7DQog ICAgaWYgKHN5bmNPYmogPT0gbnVsbCkgew0KICAgICAgICBtb3JlTGVzc1RvZ2ds ZUxvY2FsKGV2dCk7DQogICAgICAgIHJldHVybjsNCiAgICB9DQogICAgbV9tb3Jl TGVzc1VsciA9IG1fbW9yZUxlc3NVbHIucmVwbGFjZSgvXC9cLy8sICIvIik7DQog ICAgc3luY09iai5vcGVuKCJQT1NUIiwgbV9tb3JlTGVzc1VsciwgdHJ1ZSk7DQog ICAgdmFyIHBhcmFtcyA9ICJkYXRhPSIgKyBkYXRhSW5wdXQudmFsdWU7DQogICAg c3luY09iai5zZXRSZXF1ZXN0SGVhZGVyKCJDb250ZW50LWxlbmd0aCIsIHBhcmFt cy5sZW5ndGgpOw0KICAgIHN5bmNPYmouc2V0UmVxdWVzdEhlYWRlcigiQ29udGVu dC10eXBlIiwgImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIpOw0K ICAgIHN5bmNPYmouc2V0UmVxdWVzdEhlYWRlcigiQ29udGVudC1sZW5ndGgiLCBw YXJhbXMubGVuZ3RoKTsNCiAgICBzeW5jT2JqLnNldFJlcXVlc3RIZWFkZXIoIkNv bm5lY3Rpb24iLCAiY2xvc2UiKTsNCiAgICBtb3JlTGVzc1RvZ2dsZUxvY2FsKGV2 dCk7DQogICAgc3luY09iai5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbihl KSB7DQogICAgICAgIGlmIChzeW5jT2JqICE9IHVuZGVmaW5lZCAmJiBzeW5jT2Jq LnJlYWR5U3RhdGUgPT0gNCkgew0KICAgICAgICAgICAgaWYgKHN5bmNPYmouc3Rh dHVzID09IDIwMCkgew0KICAgICAgICAgICAgICAgIGRhdGFEaXYuaW5uZXJIVE1M ID0gc3luY09iai5yZXNwb25zZVRleHQ7DQogICAgICAgICAgICB9DQogICAgICAg ICAgICBlbHNlIHsNCiAgICAgICAgICAgICAgICBtb3JlTGVzc1RvZ2dsZUxvY2Fs KGV2dCk7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICB9Ow0KICAgIHN5 bmNPYmouc2VuZChwYXJhbXMpOw0KfQ0KZnVuY3Rpb24gbW9yZUxlc3NUb2dnbGVM b2NhbChldnQpIHsNCiAgICB2YXIgbXlUYXJnZXQgPSBldnQudGFyZ2V0IHx8IGV2 dC5zcmNFbGVtZW50Ow0KICAgIHZhciBESVYgPSAiRElWIjsNCiAgICBmb3IgKHZh ciBpID0gMDsgaSA8IG15VGFyZ2V0LnBhcmVudE5vZGUucGFyZW50Tm9kZS5jaGls ZE5vZGVzLmxlbmd0aDsgaSsrKSB7DQogICAgICAgIGlmIChteVRhcmdldC5wYXJl bnROb2RlLnBhcmVudE5vZGUuY2hpbGROb2Rlc1tpXS50YWdOYW1lID09IERJVikg ew0KICAgICAgICAgICAgaWYgKG15VGFyZ2V0LnBhcmVudE5vZGUucGFyZW50Tm9k ZS5jaGlsZE5vZGVzW2ldLmNsYXNzTmFtZSA9PSAidG9nZ2xlTGlua3MiKSB7DQog ICAgICAgICAgICAgICAgaWYgKG15VGFyZ2V0LnBhcmVudE5vZGUucGFyZW50Tm9k ZS5jaGlsZE5vZGVzW2ldLnN0eWxlLmRpc3BsYXkgPT0gIm5vbmUiKSB7DQogICAg ICAgICAgICAgICAgICAgIG15VGFyZ2V0LnBhcmVudE5vZGUucGFyZW50Tm9kZS5j aGlsZE5vZGVzW2ldLnN0eWxlLmRpc3BsYXkgPSAiaW5saW5lIjsNCiAgICAgICAg ICAgICAgICB9DQogICAgICAgICAgICAgICAgZWxzZSB7DQogICAgICAgICAgICAg ICAgICAgIG15VGFyZ2V0LnBhcmVudE5vZGUucGFyZW50Tm9kZS5jaGlsZE5vZGVz W2ldLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7DQogICAgICAgICAgICAgICAgfQ0K ICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgfQ0KfQ0KZnVuY3Rpb24gbWhG aXh1cExpbmsoaHJlZiwgZXh0cmEpIHsNCiAgICBpZiAodHlwZW9mIChleHRyYSkg PT0gInVuZGVmaW5lZCIpIHsNCiAgICAgICAgZXh0cmEgPSAiJn5jaz1tbiI7DQog ICAgfQ0KICAgIGlmIChocmVmKSB7DQogICAgICAgIHZhciBhbmNob3IgPSBudWxs Ow0KICAgICAgICB2YXIgYW5jaG9yaXggPSBocmVmLmluZGV4T2YoIiMiKTsNCiAg ICAgICAgaWYgKGFuY2hvcml4ICE9IC0xKSB7DQogICAgICAgICAgICBhbmNob3Ig PSBocmVmLnN1YnN0cihhbmNob3JpeCk7DQogICAgICAgICAgICBocmVmID0gaHJl Zi5zdWJzdHIoMCwgYW5jaG9yaXgpOw0KICAgICAgICB9DQogICAgICAgIGlmICho cmVmLmluZGV4T2YoIj8iKSA9PSAtMSkgew0KICAgICAgICAgICAgZXh0cmEgPSAi PyIgKyBleHRyYS5zdWJzdHIoMSk7DQogICAgICAgIH0NCiAgICAgICAgZWxzZSB7 DQogICAgICAgICAgICAvL1REIzYxOTM2OiBTdG9ybVIzMjAxMDogUHJlbWllciBy ZXF1ZXN0ZWQgbm90IHRvIGFkZCB+Y2s9bW4gaWYgYSBxdWVyeXN0cmluZyBub2Nr PTEgaXMgcGFzc2VkIG9uIHRoZSB1cmwNCiAgICAgICAgICAgIHZhciBsaW5rRG9u dExpa2VDSyA9ICgoaHJlZi50b0xvd2VyQ2FzZSgpLmluZGV4T2YoIj9ub2NrPTEi KSAhPSAtMSkgfHwgKGhyZWYudG9Mb3dlckNhc2UoKS5pbmRleE9mKCImbm9jaz0x IikgIT0gLTEpKTsNCiAgICAgICAgICAgIGlmIChsaW5rRG9udExpa2VDSyAmJiAo ZXh0cmEgPT0gIj9+Y2s9bW4iIHx8IGV4dHJhID09ICImfmNrPW1uIikpIHsNCiAg ICAgICAgICAgICAgICB2YXIgbm9ja2l4ID0gaHJlZi50b0xvd2VyQ2FzZSgpLmlu ZGV4T2YoIj9ub2NrPTEiKSAhPSAtMSA/IGhyZWYudG9Mb3dlckNhc2UoKS5pbmRl eE9mKCI/bm9jaz0xIikgOiBocmVmLnRvTG93ZXJDYXNlKCkuaW5kZXhPZigiJm5v Y2s9MSIpOw0KICAgICAgICAgICAgICAgIHZhciBub2NraXhlbmQgPSBub2NraXgg KyAiP35jaz1tbiIubGVuZ3RoOw0KICAgICAgICAgICAgICAgIGlmIChocmVmLmxl bmd0aCA9PSBub2NraXhlbmQpIHsNCiAgICAgICAgICAgICAgICAgICAgZXh0cmEg PSAiIjsNCiAgICAgICAgICAgICAgICAgICAgaHJlZiA9IGhyZWYuc3Vic3RyKDAs IG5vY2tpeCk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGVs c2UgaWYgKGhyZWYuc3Vic3RyKG5vY2tpeGVuZCwgMSkgPT0gIj8iIHx8IGhyZWYu c3Vic3RyKG5vY2tpeGVuZCwgMSkgPT0gIiYiKQ0KICAgICAgICAgICAgICAgIHsN CiAgICAgICAgICAgICAgICAgICAgZXh0cmEgPSAiIjsNCiAgICAgICAgICAgICAg ICAgICAgaHJlZiA9IGhyZWYuc3Vic3RyKDAsIG5vY2tpeCArIDEpICsgaHJlZi5z dWJzdHIobm9ja2l4ZW5kICsgMSk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAg ICAgICAgfQ0KICAgICAgICB9DQogICAgICAgIGlmIChocmVmLnRvTG93ZXJDYXNl KCkuaW5kZXhPZigiamF2YXNjcmlwdDoiKSA9PSAtMSkgew0KICAgICAgICAgICAg aHJlZiArPSBleHRyYTsNCiAgICAgICAgfQ0KICAgICAgICBlbHNlIHsNCiAgICAg ICAgICAgIHN0YXJ0ID0gaHJlZi5pbmRleE9mKCI/Iik7DQogICAgICAgICAgICBp ZiAoc3RhcnQgIT0gLTEpIHsNCiAgICAgICAgICAgICAgICBpeCA9IGhyZWYuaW5k ZXhPZigiXCciLCBzdGFydCk7DQogICAgICAgICAgICAgICAgaWYgKGl4ID09IC0x KSB7DQogICAgICAgICAgICAgICAgICAgIGl4ID0gaHJlZi5pbmRleE9mKCJcXCIs IHN0YXJ0KTsNCiAgICAgICAgICAgICAgICAgICAgaWYgKGl4ID09IC0xKSB7DQog ICAgICAgICAgICAgICAgICAgICAgICBpeCA9IGhyZWYuaW5kZXhPZigiXCIiLCBz dGFydCk7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9 DQogICAgICAgICAgICAgICAgaWYgKGl4ICE9IC0xKSB7DQogICAgICAgICAgICAg ICAgICAgIGhyZWYgPSBocmVmLnN1YnN0cigwLCBpeCkgKyBleHRyYSArIGhyZWYu c3Vic3RyKGl4KTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQog ICAgICAgIH0NCiAgICAgICAgaWYgKGFuY2hvcikgew0KICAgICAgICAgICAgaHJl ZiArPSBhbmNob3I7DQogICAgICAgIH0NCiAgICB9DQogICAgcmV0dXJuIGhyZWY7 DQp9DQpmdW5jdGlvbiBnZXRSYXdPYmplY3Qob2JqKSB7DQogICAgdmFyIHRoZU9i ajsNCiAgICBpZiAodHlwZW9mIG9iaiA9PSAic3RyaW5nIikgew0KICAgICAgICBp ZiAoaXNXM0MpIHsNCiAgICAgICAgICAgIHRoZU9iaiA9IGRvY3VtZW50LmdldEVs ZW1lbnRCeUlkKG9iaik7DQogICAgICAgIH0NCiAgICAgICAgZWxzZSBpZiAoaXNJ RTQpIHsNCiAgICAgICAgICAgIHRoZU9iaiA9IGRvY3VtZW50LmFsbChvYmopOw0K ICAgICAgICB9DQogICAgICAgIGVsc2UgaWYgKGlzTk40KSB7DQogICAgICAgICAg ICB0aGVPYmogPSBzZWVrTGF5ZXIoZG9jdW1lbnQsIG9iaik7DQogICAgICAgIH0N CiAgICAgICAgZWxzZSB7DQogICAgICAgICAgICB0aGVPYmogPSBkb2N1bWVudC5n ZXRFbGVtZW50QnlJZChvYmopOw0KICAgICAgICB9DQogICAgfQ0KICAgIGVsc2Ug ew0KICAgICAgICB0aGVPYmogPSBvYmo7DQogICAgfQ0KICAgIHJldHVybiB0aGVP Ymo7DQp9DQpmdW5jdGlvbiBnZXRCYWNrdG8oKSB7DQogICAgaWYgKHR5cGVvZiAo bV9iYWNrdG8pICE9ICJ1bmRlZmluZWQiKSB7DQogICAgICAgIHJldHVybiBtX2Jh Y2t0bzsNCiAgICB9DQogICAgcmV0dXJuICIiOw0KfQ0KZnVuY3Rpb24gZ2V0WW91 QXJlSGVyZSgpIHsNCiAgICBpZiAodHlwZW9mIChtX3lvdUFyZUhlcmUpICE9ICJ1 bmRlZmluZWQiKSB7DQogICAgICAgIHJldHVybiBtX3lvdUFyZUhlcmU7DQogICAg fQ0KICAgIHJldHVybiAiIjsNCn0NCmZ1bmN0aW9uIGdldEdvdG9Ub3AoKSB7DQog ICAgaWYgKHR5cGVvZiAobV9nb3RvdG9wKSAhPSAidW5kZWZpbmVkIikgew0KICAg ICAgICByZXR1cm4gbV9nb3RvdG9wOw0KICAgIH0NCiAgICByZXR1cm4gIiI7DQp9 DQpmdW5jdGlvbiBnZXRQcmludGFibGVUZXh0KCkgew0KICAgIGlmICh0eXBlb2Yg KG1fcHJpbnRhYmxlVGV4dCkgIT0gInVuZGVmaW5lZCIpIHsNCiAgICAgICAgcmV0 dXJuIG1fcHJpbnRhYmxlVGV4dDsNCiAgICB9DQogICAgcmV0dXJuICIiOw0KfQ0K ZnVuY3Rpb24gYWRkQm9va01hcmsoKSB7DQogICAgaWYgKHdpbmRvdy5leHRlcm5h bCkgew0KICAgICAgICB3aW5kb3cuZXh0ZXJuYWwuQWRkRmF2b3JpdGUoZG9jdW1l bnQubG9jYXRpb24uaHJlZiwgZG9jdW1lbnQudGl0bGUpOw0KICAgIH0NCiAgICBl bHNlIHsNCiAgICAgICAgYWxlcnQoIlNvcnJ5LCB5b3VyIGJyb3dzZXIgZG9lc24n dCBzdXBwb3J0IGJvb2ttYXJraW5nIHRoaXMgcGFnZS4uLlxuXG5QbGVhc2UgdHJ5 IHByZXNzaW5nIENvbnRyb2wgKyBEIGluc3RlYWQiKTsNCiAgICB9DQp9DQpmdW5j dGlvbiBtZW51R290byh1cmwpIHsNCiAgICBpZiAobV9hbmNob3JDbGlja2VkKSB7 DQogICAgICAgIHJldHVybjsNCiAgICB9DQogICAgbV9hbmNob3JDbGlja2VkID0g dHJ1ZTsNCiAgICBpZiAodXJsICE9IG51bGwgJiYgdXJsLmluZGV4T2YoImphdmFz Y3JpcHQiKSA+IC0xKSB7DQogICAgICAgIGV2YWwodXJsKTsNCiAgICB9DQogICAg ZWxzZSB7DQogICAgICAgIGRvY3VtZW50LmxvY2F0aW9uID0gdXJsOw0KICAgIH0N CiAgICBpZiAoZG9jdW1lbnQuZXZlbnQgIT0gbnVsbCkgew0KICAgICAgICBkb2N1 bWVudC5ldmVudC5jYW5jZWxCdWJibGUgPSB0cnVlOw0KICAgIH0NCiAgICByZXR1 cm4gZmFsc2U7DQp9DQpmdW5jdGlvbiBtZW51V2luT3Blbih1cmwpIHsNCiAgICB3 aW5kb3cub3Blbih1cmwpOw0KICAgIHJldHVybiBmYWxzZTsNCn0NCiRqKGRvY3Vt ZW50KS5yZWFkeShmdW5jdGlvbigpIHsgbV9wcmludHZpZXdIcmVmID0gbV9jdXJV cmw7IH0pOw0KZnVuY3Rpb24gcHJpbnR2aWV3KCkgew0KICAgIHdpbm9wZW4obV9w cmludHZpZXdIcmVmICsgIiZ+bHQ9cHJpbnQiLCAncHJpbnQnLCAnV0lEVEg9NjQ4 LEhFSUdIVD01MTAsUkVTSVpBQkxFPVlFUyxTQ1JPTExCQVJTPVlFUyxUT09MQkFS PVlFUyxMRUZUPTAsVE9QPTIwJyk7DQp9DQpmdW5jdGlvbiB3aW5vcGVuKHVybCwg c3R1ZmYsIG1vcmVzdHVmZikgew0KICAgIHZhciBwb3B3aW4gPSB3aW5kb3cub3Bl bih1cmwsIHN0dWZmLCBtb3Jlc3R1ZmYpOw0KICAgIGlmICh0eXBlb2YgKHBvcHdp bikgIT0gInVuZGVmaW5lZCIgJiYgcG9wd2luKSB7DQogICAgICAgIHBvcHdpbi5m b2N1cygpOw0KICAgIH0NCiAgICBsYXN0UG9wdXAgPSBwb3B3aW47DQp9DQpmdW5j dGlvbiBCYW5kd2lkdGgoKSB7DQogICAgaWYgKHJlYWRJRVZlcigpIDwgNS4wIHx8 IGlzT3BlcmEgfHwgbmF2aWdhdG9yLmFwcFZlcnNpb24udG9Mb3dlckNhc2UoKS5p bmRleE9mKCJ3aW4iKSA9PSAtMSkgew0KICAgICAgICByZXR1cm4gIk5BIjsNCiAg ICB9DQogICAgdHJ5IHsNCiAgICAgICAgZG9jdW1lbnQuYm9keS5hZGRCZWhhdmlv cigiI2RlZmF1bHQjY2xpZW50Q2FwcyIpOw0KICAgICAgICBpZiAodHlwZW9mIChk b2N1bWVudC5ib2R5LmNvbm5lY3Rpb25UeXBlKSAhPSAidW5kZWZpbmVkIikgew0K ICAgICAgICAgICAgaWYgKGRvY3VtZW50LmJvZHkuY29ubmVjdGlvblR5cGUgPT0g Im1vZGVtIikgew0KICAgICAgICAgICAgICAgIHJldHVybiAiTW9kZW0iOw0KICAg ICAgICAgICAgfQ0KICAgICAgICAgICAgcmV0dXJuICJMYW4iOw0KICAgICAgICB9 DQogICAgfQ0KICAgIGNhdGNoIChlKSB7DQogICAgICAgIHJldHVybiAiTkEiOw0K ICAgIH0NCn0NCmZ1bmN0aW9uIFJlbW92ZU5hbWUoKSB7DQogICAgdmFyIGNvb2tp ZSA9IGdldENvb2tpZSgiU3Rvcm1QQ29va2llIik7DQogICAgaWYgKGNvb2tpZSAm JiBjb29raWUubGVuZ3RoID4gMCkgew0KICAgICAgICBjb29raWUgPSBTdHJpcENv b2tpZVZhbHVlKGNvb2tpZSwgImZzdG4iKTsNCiAgICAgICAgY29va2llID0gU3Ry aXBDb29raWVWYWx1ZShjb29raWUsICJsc3RuIik7DQogICAgICAgIGRvY3VtZW50 LmNvb2tpZSA9ICJTdG9ybVBDb29raWU9IiArIGNvb2tpZSArICI7ZG9tYWluPS5k ZWxsLmNvbSI7DQogICAgfQ0KICAgIGNvb2tpZSA9IGdldENvb2tpZSgibHdwIik7 DQogICAgaWYgKGNvb2tpZSAmJiBjb29raWUubGVuZ3RoID4gMCkgew0KICAgICAg ICBjb29raWUgPSBTdHJpcENvb2tpZVZhbHVlKGNvb2tpZSwgImZzdG4iKTsNCiAg ICAgICAgY29va2llID0gU3RyaXBDb29raWVWYWx1ZShjb29raWUsICJsc3RuIik7 DQogICAgICAgIGNvb2tpZSA9IFN0cmlwQ29va2llVmFsdWUoY29va2llLCAiZm4i KTsNCiAgICAgICAgZG9jdW1lbnQuY29va2llID0gImx3cD0iICsgY29va2llICsg Ijtkb21haW49LmRlbGwuY29tIjsNCiAgICB9DQp9DQoNCmZ1bmN0aW9uIEF1dG9T dWJtaXQoZnJtKSB7DQogICAgdmFyIGNvb2tpZVZhbCA9IG1fc3Rvcm1Db29raWUu c2Vzc2lvbi5nZXRDb29raWUoImF1dG9zdWJtaXQiKTsNCiAgICBpZiAoY29va2ll VmFsID09IGRvY3VtZW50LmxvY2F0aW9uKSB7DQogICAgICAgIHZhciBzdWJtaXRG b3JtID0gd2luZG93LmNvbmZpcm0oIlJlc3VibWl0IGZvcm0/Iik7DQogICAgICAg IGlmIChzdWJtaXRGb3JtKSB7DQogICAgICAgICAgICBmcm0uc3VibWl0KCk7DQog ICAgICAgICAgICByZXR1cm47DQogICAgICAgIH0NCiAgICAgICAgZWxzZSB7DQog ICAgICAgICAgICByZXR1cm47DQogICAgICAgIH0NCiAgICB9DQogICAgbV9zdG9y bUNvb2tpZS5zZXNzaW9uLnNldENvb2tpZSgiYXV0b3N1Ym1pdCIsIGRvY3VtZW50 LmxvY2F0aW9uKTsNCiAgICBmcm0uc3VibWl0KCk7DQp9DQpmdW5jdGlvbiBBdXRv U3VibWl0Mihmcm0sIHVybCwgZnJlcSkgew0KICAgIHZhciBvbGRBY3Rpb24gPSBm cm0uYWN0aW9uOw0KICAgIGZybS5hY3Rpb24gPSB1cmw7DQogICAgdmFyIGNvb2tp ZVZhbCA9IGdldENvb2tpZSgiYXV0b3N1Ym1pdCIpOw0KICAgIGlmIChjb29raWVW YWwgPT0gZG9jdW1lbnQubG9jYXRpb24pIHsNCiAgICAgICAgdmFyIHN1Ym1pdEZv cm0gPSB3aW5kb3cuY29uZmlybSgiUmVzdWJtaXQgZm9ybT8iKTsNCiAgICAgICAg aWYgKHN1Ym1pdEZvcm0pIHsNCiAgICAgICAgICAgIGlmIChmcmVxID09ICJ0cnVl Iikgew0KICAgICAgICAgICAgICAgIGZybS50YXJnZXQgPSAiRnJlcUZvcm1Qb3B1 cCI7DQogICAgICAgICAgICAgICAgdmFyIHggPSB3aW5kb3cub3Blbih1cmwsICJG cmVxRm9ybVBvcHVwIiwgIndpZHRoPTYwMCwgaGVpZ2h0PTQwMCwgbG9jYXRpb249 eWVzLCBtZW51YmFyPXllcywgc3RhdHVzPXllcywgdG9vbGJhcj15ZXMsIHNjcm9s bGJhcnM9eWVzLCByZXNpemFibGU9eWVzIik7DQogICAgICAgICAgICB9DQogICAg ICAgICAgICBmcm0uc3VibWl0KCk7DQogICAgICAgICAgICBmcm0udGFyZ2V0ID0g Il9zZWxmIjsNCiAgICAgICAgICAgIGZybS5hY3Rpb24gPSBvbGRBY3Rpb247DQog ICAgICAgICAgICByZXR1cm47DQogICAgICAgIH0NCiAgICAgICAgZWxzZSB7DQog ICAgICAgICAgICByZXR1cm47DQogICAgICAgIH0NCiAgICB9DQogICAgbV9zdG9y bUNvb2tpZS5zZXNzaW9uLnNldENvb2tpZSgiYXV0b3N1Ym1pdCIsIGRvY3VtZW50 LmxvY2F0aW9uKTsNCiAgICBpZiAoZnJlcSA9PSAidHJ1ZSIpIHsNCiAgICAgICAg ZnJtLnRhcmdldCA9ICJGcmVxRm9ybVBvcHVwIjsNCiAgICAgICAgdmFyIHggPSB3 aW5kb3cub3Blbih1cmwsICJGcmVxRm9ybVBvcHVwIiwgIndpZHRoPTYwMCwgaGVp Z2h0PTQwMCwgbG9jYXRpb249eWVzLCBtZW51YmFyPXllcywgc3RhdHVzPXllcywg dG9vbGJhcj15ZXMsIHNjcm9sbGJhcnM9eWVzLCByZXNpemFibGU9eWVzIik7DQog ICAgfQ0KICAgIGZybS5zdWJtaXQoKTsNCiAgICBmcm0udGFyZ2V0ID0gIl9zZWxm IjsNCiAgICBmcm0uYWN0aW9uID0gb2xkQWN0aW9uOw0KfQ0KZnVuY3Rpb24gc2lu Z2xlY2hvaWNlc2tpcGxldmVsKGZvcm1JbnB1dCkgew0KICAgIGlmICh0eXBlb2Yg KGZvcm1JbnB1dCkgIT0gInVuZGVmaW5lZCIpIHsNCiAgICAgICAgdmFyIGkgPSAw Ow0KICAgICAgICB2YXIgZGlzcGxheURpdiA9IG51bGw7DQogICAgICAgIHdoaWxl IChpIDwgZm9ybUlucHV0Lmxlbmd0aCkgew0KICAgICAgICAgICAgaWYgKGZvcm1J bnB1dFtpXS52YWx1ZSAhPSBudWxsICYmIGZvcm1JbnB1dFtpXS52YWx1ZSAhPSAi Iikgew0KICAgICAgICAgICAgICAgIGlmIChkb2N1bWVudC5nZXRFbGVtZW50QnlJ ZChmb3JtSW5wdXRbaV0udmFsdWUpICE9IG51bGwpIHsNCiAgICAgICAgICAgICAg ICAgICAgaWYgKGZvcm1JbnB1dFtpXS5zZWxlY3RlZCB8fCBmb3JtSW5wdXRbaV0u Y2hlY2tlZCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0 RWxlbWVudEJ5SWQoZm9ybUlucHV0W2ldLnZhbHVlKS5zdHlsZS5kaXNwbGF5ID0g ImlubGluZSI7DQogICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5RGl2ID0g Zm9ybUlucHV0W2ldLnZhbHVlOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAg ICAgICAgICAgICAgICAgIGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICAgICAg aWYgKGRpc3BsYXlEaXYgIT0gZm9ybUlucHV0W2ldLnZhbHVlKSB7DQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZm9y bUlucHV0W2ldLnZhbHVlKS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOw0KICAgICAg ICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICB9DQogICAg ICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgaSsrOw0K ICAgICAgICB9DQogICAgfQ0KfQ0KLyoNCmF0dHIJCW5hbWUJCQkJdHlwZQkJZGVz Yw0KLS0tLQkJLS0tLQkJCQktLS0tCQktLS0tDQpAcGFyYW0Jc3dmRmlsZQkJCVN0 cmluZwkoZXhwZWN0aW5nIHNvbWVmaWxlbmFtZS5zd2YpDQpAcGFyYW0Jd2lkdGgJ CQkJU3RyaW5nIAkobmVlZHMgdG8gYWNjZXB0ICUpDQpAcGFyYW0JaGVpZ2h0CQkJ U3RyaW5nIAkobmVlZHMgdG8gYWNjZXB0ICUpDQpAcGFyYW0JYmdjb2xvcgkJCVN0 cmluZyAJKGV4cGVjdGluZyAjbm5ubm5uKQ0KQHBhcmFtCXZlcgkJCQkJU3RyaW5n IAkoZXhwZWN0aW5nIG5bLG5bLG5bLG5dXV0gLSBleC4gOSBvciA5LDAgb3IgOSww LDEgb3IgOSwwLDEsMTE1KQ0KQHBhcmFtCWFsdEZvcm1hdAkJU3RyaW5nIAkoZXhw ZWN0aW5nIGFuIGltYWdlIHRhZyAtIGV4LiAnPGltZyBzcmM9Imh0dHA6Ly9pLmRl bGwuY29tL3Jlc2l6ZS5hc3B4L3hwc25iX20xMzMwLzIwMCIgd2lkdGg9IjIwMCIg YWx0PSIiIGJvcmRlcj0iMCIgLz4nKQ0KQHBhcmFtCXBhcmFtcwkJCVN0cmluZyAJ KGRvZXMgbm90IGFwcGVhciB0byBiZSB1c2VkKQ0KQHBhcmFtCW1vdmllTmFtZQkJ U3RyaW5nIAkoU3Rvcm0gZ2VuZXJhdGVkIEdVSUQpDQpAcGFyYW0JcXVhbGl0eQkJ CVN0cmluZwkoZGVmYXVsdCAnaGlnaCcpDQpAcGFyYW0Jc2NhbGVNb2RlCQlTdHJp bmcgCShkZWZhdWx0ICdub3NjYWxlJykJCQ0KQHBhcmFtCWFsaWduCQkJCVN0cmlu ZwkoZGVmYXVsdCAnbGVmdCcpDQpAcGFyYW0Jd01vZGUJCQkJU3RyaW5nCShkZWZh dWx0ICdvcGFxdWUnKQ0KQHBhcmFtCWFsbG93RlMJCQlTdHJpbmcgCShkZWZhdWx0 ICd0cnVlJykNCkBwYXJhbQlzQWxpZ24JCQlTdHJpbmcJKGRlZmF1bHQgJ3RsJykN ClNpYUIgMyBvbmx5DQpAcGFyYW0JY29udGVudEZpbGUJU3RyaW5nIAkoZXhwZWN0 aW5nIGFuIFhIVE1MIGZpbGUgLSAqLmh0bWwsICouaHRtLCAqLnhodG1sKQ0KKi8N CmZ1bmN0aW9uIEZsYXNoTGlicmFyeUFjdGl2YXRlKHN3ZkZpbGUsIHdpZHRoLCBo ZWlnaHQsIGJnY29sb3IsIHZlciwgYWx0Rm9ybWF0LCBwYXJhbXMsIG1vdmllTmFt ZSwgcXVhbGl0eSwgc2NhbGVNb2RlLCBhbGxvd0ZTLCB3TW9kZSwgbWVudSwgY29u dGVudEZpbGUpIHsNCiAgICB2YXIgdCA9IHRoaXM7DQogICAgdmFyIGFjdGl2ZVgg PSBmYWxzZTsNCiAgICB0LmllQXV0b0luc3RhbGwgPSBmYWxzZTsNCg0KICAgIC8v IHNldCB1cCB0aGUgZGVmYXVsdHMNCiAgICBpZiAocXVhbGl0eSA9PSB1bmRlZmlu ZWQgfHwgcXVhbGl0eSA9PSAiIikgew0KICAgICAgICBxdWFsaXR5ID0gImhpZ2gi Ow0KICAgIH0NCiAgICBpZiAoc2NhbGVNb2RlID09IHVuZGVmaW5lZCB8fCBzY2Fs ZU1vZGUgPT0gIiIpIHsNCiAgICAgICAgc2NhbGVNb2RlID0gIm5vc2NhbGUiOw0K ICAgIH0NCiAgICBpZiAod01vZGUgPT0gdW5kZWZpbmVkIHx8IHdNb2RlID09ICIi KSB7DQogICAgICAgIHdNb2RlID0gIm9wYXF1ZSI7DQogICAgfQ0KICAgIGlmIChh bGxvd0ZTID09IHVuZGVmaW5lZCB8fCBhbGxvd0ZTID09ICIiKSB7DQogICAgICAg IGFsbG93RlMgPSAidHJ1ZSI7DQogICAgfQ0KICAgIGlmIChtZW51ID09IHVuZGVm aW5lZCB8fCBtZW51ID09ICIiKSB7DQogICAgICAgIG1lbnUgPSAidHJ1ZSI7DQog ICAgfQ0KICAgIGlmICh2ZXIgPT0gdW5kZWZpbmVkIHx8IHZlciA9PSAiIikgew0K ICAgICAgICB2ZXIgPSAiNyI7DQogICAgfQ0KDQogICAgdC5oYXNWZXJzaW9uID0g ZnVuY3Rpb24odmVyKSB7DQogICAgICAgIHQuc3dmID0gZmFsc2U7DQogICAgICAg IGlmICghdmVyKSB2ZXIgPSAwOw0KICAgICAgICB2YXIgbiA9IG5hdmlnYXRvcjsN CiAgICAgICAgaWYgKG4ucGx1Z2lucyAmJiBuLnBsdWdpbnMubGVuZ3RoID4gMCkg ew0KICAgICAgICAgICAgdmFyIG0sIHRwLCBkLCB2Ow0KICAgICAgICAgICAgbSA9 IG4ubWltZVR5cGVzOw0KICAgICAgICAgICAgdHAgPSAnYXBwbGljYXRpb24veC1z aG9ja3dhdmUtZmxhc2gnOw0KICAgICAgICAgICAgaWYgKG0gJiYgbVt0cF0gJiYg bVt0cF0uZW5hYmxlZFBsdWdpbiAmJiBtW3RwXS5lbmFibGVkUGx1Z2luLmRlc2Ny aXB0aW9uKSB7DQogICAgICAgICAgICAgICAgZCA9IG1bdHBdLmVuYWJsZWRQbHVn aW4uZGVzY3JpcHRpb247DQogICAgICAgICAgICAgICAgLy92ID0gZC5jaGFyQXQo ZC5pbmRleE9mKCcuJyktMSk7DQogICAgICAgICAgICAgICAgdiA9IFNldEZsYXNo VmVyc2lvbigpOw0KICAgICAgICAgICAgICAgIHQuc3dmID0gKHYgPj0gdmVyKSA/ IHRydWUgOiBmYWxzZTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAg ICBlbHNlIGlmIChuLmFwcFZlcnNpb24uaW5kZXhPZigiTWFjIikgPT0gLTEgJiYg d2luZG93LmV4ZWNTY3JpcHQpIHsNCiAgICAgICAgICAgIGllRmxhc2hPYmogPSBu dWxsOw0KICAgICAgICAgICAgYWN0aXZlWCA9IHRydWU7DQogICAgICAgICAgICBm b3IgKHZhciBpID0gdmVyOyBpIDw9IDEwICYmIGkgIT0gMSAmJiBpZUZsYXNoT2Jq ICE9IHRydWU7IGkrKykgew0KICAgICAgICAgICAgICAgIGV4ZWNTY3JpcHQoJ29u IGVycm9yIHJlc3VtZSBuZXh0OiBpZUZsYXNoT2JqPUlzT2JqZWN0KENyZWF0ZU9i amVjdCgiU2hvY2t3YXZlRmxhc2guU2hvY2t3YXZlRmxhc2gnICsgKChpID09IDAp ID8gJycgOiAnLicgKyBpKSArICciKSknLCAnVkJTY3JpcHQnKTsNCiAgICAgICAg ICAgICAgICBpZiAoaWVGbGFzaE9iaiA9PSB0cnVlKSB7DQogICAgICAgICAgICAg ICAgICAgIHQuc3dmID0gdHJ1ZTsNCiAgICAgICAgICAgICAgICAgICAgYnJlYWs7 DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQog ICAgICAgIGVsc2Ugew0KICAgICAgICAgICAgdC5zd2YgPSBmYWxzZTsNCiAgICAg ICAgfQ0KICAgICAgICByZXR1cm4gdC5zd2Y7DQogICAgfTsNCg0KICAgIHQuZ2V0 UGx1Z2luVGFnID0gZnVuY3Rpb24oKSB7DQogICAgICAgIHZhciBmaXhlZFZlciA9 IHZlcjsNCiAgICAgICAgdmFyIGNtSGFjayA9IHN3ZkZpbGUuaW5kZXhPZigiY21o YWNrIikgPiAtMTsNCiAgICAgICAgaWYgKGNtSGFjaykgew0KICAgICAgICAgICAg aWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigifmJhbmR3aWR0aD1N b2RlbSIpID09IC0xICYmICF0Lmhhc1ZlcnNpb24ocGFyc2VJbnQodmVyKSkpIHsN CiAgICAgICAgICAgICAgICBkb2N1bWVudC5sb2NhdGlvbi5ocmVmID0gZG9jdW1l bnQubG9jYXRpb24uaHJlZiArICImfmJhbmR3aWR0aD1Nb2RlbSI7DQogICAgICAg ICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICBpZiAoc3dmRmlsZS5pbmRleE9m KCJhdXRvaW5zdGFsbCIpID4gLTEpIHsNCiAgICAgICAgICAgIHQuaWVBdXRvSW5z dGFsbCA9IHRydWU7DQogICAgICAgIH0NCg0KICAgICAgICBwYXJhbXMgPSAiICIg KyBwYXJhbXMgKyAiICI7DQogICAgICAgIHZhciBzID0gIiI7DQogICAgICAgIHZh ciB3aW4gPSAobmF2aWdhdG9yLmFwcFZlcnNpb24udG9Mb3dlckNhc2UoKS5pbmRl eE9mKCJ3aW4iKSAhPSAtMSk7DQogICAgICAgIHZhciBpZSA9IChuYXZpZ2F0b3Iu YXBwTmFtZSA9PSAiTWljcm9zb2Z0IEludGVybmV0IEV4cGxvcmVyIik7DQoNCiAg ICAgICAgaWYgKCh0Lmhhc1ZlcnNpb24ocGFyc2VJbnQodmVyKSkgJiYgc3dmRmls ZSkgfHwgKHdpbiAmJiBpZSAmJiBzd2ZGaWxlICYmIHQuaWVBdXRvSW5zdGFsbCkp IHsNCg0KICAgICAgICAgICAgdmFyIGFkZGl0aW9uYWxQYXJhbXMgPSAnJzsNCiAg ICAgICAgICAgIHZhciBxUG9zID0gc3dmRmlsZS5pbmRleE9mKCI/Iik7DQogICAg ICAgICAgICB2YXIgZlZhcnMgPSBzd2ZGaWxlLnN1YnN0cihxUG9zICsgMSwgc3dm RmlsZS5sZW5ndGgpOw0KDQogICAgICAgICAgICBpZiAoKHFQb3MgPiAtMSkgJiYg KHFQb3MgKyAxIDwgc3dmRmlsZS5sZW5ndGgpICYmIChwYXJzZUludChmaXhlZFZl cikgPiA1KSkgew0KICAgICAgICAgICAgICAgIHZhciB0YSA9ICdGbGFzaFZhcnMn Ow0KICAgICAgICAgICAgICAgIHZhciB2ID0gc3dmRmlsZS5zdWJzdHJpbmcocVBv cyArIDEpOw0KICAgICAgICAgICAgICAgIHYgKz0gIiZjb250YWluZXJVUkw9IiAr IGVuY29kZVVSSUNvbXBvbmVudChsb2NhdGlvbi5ocmVmKTsNCiAgICAgICAgICAg ICAgICB2ICs9ICImaWQ9IiArIG1vdmllTmFtZTsNCiAgICAgICAgICAgICAgICBh ZGRpdGlvbmFsUGFyYW1zICs9IChhY3RpdmVYKSA/ICdcdDxwYXJhbSBuYW1lPSIn ICsgdGEgKyAnIiB2YWx1ZT0iJyArIHYgKyAnIiAvPlxuJyA6ICcgJyArIHRhICsg Jz0iJyArIHYgKyAnIic7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBlbHNl IHsNCiAgICAgICAgICAgICAgICB2YXIgdGEgPSAnRmxhc2hWYXJzJzsNCiAgICAg ICAgICAgICAgICB2YXIgdiA9ICIiOw0KICAgICAgICAgICAgICAgIHYgKz0gImNv bnRhaW5lclVSTD0iICsgZW5jb2RlVVJJQ29tcG9uZW50KGxvY2F0aW9uLmhyZWYp Ow0KICAgICAgICAgICAgICAgIHYgKz0gIiZpZD0iICsgbW92aWVOYW1lOw0KICAg ICAgICAgICAgICAgIGFkZGl0aW9uYWxQYXJhbXMgKz0gKGFjdGl2ZVgpID8gJ1x0 PHBhcmFtIG5hbWU9IicgKyB0YSArICciIHZhbHVlPSInICsgdiArICciIC8+XG4n IDogJyAnICsgdGEgKyAnPSInICsgdiArICciJzsNCiAgICAgICAgICAgIH0NCiAg ICAgICAgICAgIGlmIChxUG9zID4gLTEpIHsNCiAgICAgICAgICAgICAgICBzd2ZG aWxlID0gc3dmRmlsZS5zdWJzdHIoMCwgcVBvcyk7DQogICAgICAgICAgICB9DQoN CiAgICAgICAgICAgIGlmIChhY3RpdmVYKSB7DQogICAgICAgICAgICAgICAgdmFy IHBjb2wgPSAod2luZG93LmxvY2F0aW9uLnByb3RvY29sID09ICdodHRwczonKSA/ ICJodHRwczoiIDogImh0dHA6IjsNCiAgICAgICAgICAgICAgICBzID0gJzxvYmpl Y3QgY2xhc3NpZD0iY2xzaWQ6RDI3Q0RCNkUtQUU2RC0xMWNmLTk2QjgtNDQ0NTUz NTQwMDAwIiBjb2RlYmFzZT0iJyArIHBjb2wgKyAnLy9kb3dubG9hZC5tYWNyb21l ZGlhLmNvbS9wdWIvc2hvY2t3YXZlL2NhYnMvZmxhc2gvc3dmbGFzaC5jYWIjdmVy c2lvbj0nICsgZml4ZWRWZXIgKyAnIiBpZD0iJyArIG1vdmllTmFtZSArICciIHdp ZHRoPSInICsgd2lkdGggKyAnIiBoZWlnaHQ9IicgKyBoZWlnaHQgKyAnIiA+XG4n Ow0KICAgICAgICAgICAgICAgIHMgKz0gJ1x0PHBhcmFtIG5hbWU9Im1vdmllIiB2 YWx1ZT0iJyArIHN3ZkZpbGUgKyAnIiAvPlxuJzsNCiAgICAgICAgICAgICAgICBz ICs9ICdcdDxwYXJhbSBuYW1lPSJhbGxvd0Z1bGxTY3JlZW4iIHZhbHVlPSInICsg YWxsb3dGUyArICciIC8+XG4nOw0KICAgICAgICAgICAgICAgIHMgKz0gJ1x0PHBh cmFtIG5hbWU9InF1YWxpdHkiIHZhbHVlPSInICsgcXVhbGl0eSArICciIC8+XG4n Ow0KICAgICAgICAgICAgICAgIHMgKz0gJ1x0PHBhcmFtIG5hbWU9Im1lbnUiIHZh bHVlPSInICsgbWVudSArICciIC8+XG4nOw0KICAgICAgICAgICAgICAgIHMgKz0g J1x0PHBhcmFtIG5hbWU9Indtb2RlIiB2YWx1ZT0iJyArIHdNb2RlICsgJyIgLz5c bic7DQogICAgICAgICAgICAgICAgcyArPSAnXHQ8cGFyYW0gbmFtZT0iYWxsb3dT Y3JpcHRBY2Nlc3MiIHZhbHVlPSJhbHdheXMiPlxuJzsNCiAgICAgICAgICAgICAg ICBzICs9ICdcdDxwYXJhbSBuYW1lPSJiZ2NvbG9yIiB2YWx1ZT0iJyArIGJnY29s b3IgKyAnIiAvPlxuJzsNCiAgICAgICAgICAgICAgICBzICs9ICdcdDxwYXJhbSBu YW1lPSJzY2FsZSIgdmFsdWU9IicgKyBzY2FsZU1vZGUgKyAnIiAvPlxuJzsNCiAg ICAgICAgICAgICAgICBzICs9IGFkZGl0aW9uYWxQYXJhbXM7DQogICAgICAgICAg ICAgICAgcyArPSBwYXJhbXM7DQogICAgICAgICAgICAgICAgcyArPSBhbHRGb3Jt YXQ7DQogICAgICAgICAgICAgICAgcyArPSAnPC9vYmplY3Q+XG5cbic7DQoNCiAg ICAgICAgICAgICAgICAvLyBjcmVhdGUgdGhlIDxpZnJhbWU+IElGIHRoZSBjb250 ZW50ZmlsZSBhdHRyaWJ1dGUgaXMgcHJlc2VudA0KICAgICAgICAgICAgICAgIHRy eSB7DQogICAgICAgICAgICAgICAgICAgIGlmIChjb250ZW50RmlsZSAhPSB1bmRl ZmluZWQgJiYgY29udGVudEZpbGUgIT0gIiIpIHsNCiAgICAgICAgICAgICAgICAg ICAgICAgIHMgKz0gJzxpZnJhbWUgaWQ9IiIgbmFtZT0iIiBzcmM9IicgKyBjb250 ZW50RmlsZSArICciIHN0eWxlPSJkaXNwbGF5Om5vbmUiIHRpdGxlPSIiIGFsaWdu PSJsZWZ0IiBmcmFtZWJvcmRlcj0iMCIgaGVpZ2h0PSIxIiB3ZWlnaHQ9IjEiIGxv bmdkZXNjPSIiIG1hcmdpbmhlaWdodD0iMCIgbWFyZ2lud2lkdGg9IjAiIHNjcm9s bGluZz0ibm8iID48L2lmcmFtZT4nOw0KICAgICAgICAgICAgICAgICAgICB9DQog ICAgICAgICAgICAgICAgICAgIGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICAg ICAgLy9hbGVydCggImJzIiApOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAg ICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGNhdGNoIChlKSB7DQogICAg ICAgICAgICAgICAgICAgIC8vYWxlcnQoIGUgKTsNCiAgICAgICAgICAgICAgICB9 DQogICAgICAgICAgICAgICAgcmV0dXJuIHM7DQogICAgICAgICAgICB9DQogICAg ICAgICAgICBlbHNlIHsNCiAgICAgICAgICAgICAgICAvLyBFTUJFRA0KICAgICAg ICAgICAgICAgIHMgPSAnPGVtYmVkIHNyYz0iJyArIHN3ZkZpbGUgKyAnIiBxdWFs aXR5PSInICsgcXVhbGl0eSArICciIHBsdWdpbnNwYWdlPSJodHRwOi8vd3d3Lm1h Y3JvbWVkaWEuY29tL3Nob2Nrd2F2ZS9kb3dubG9hZC9pbmRleC5jZ2k/UDFfUHJv ZF9WZXJzaW9uPVNob2Nrd2F2ZUZsYXNoIiBhbGxvd1NjcmlwdEFjY2Vzcz0iYWx3 YXlzIiB3bW9kZT0iJyArIHdNb2RlICsgJyIgYWxsb3dGdWxsU2NyZWVuPSInICsg YWxsb3dGUyArICciIHR5cGU9ImFwcGxpY2F0aW9uL3gtc2hvY2t3YXZlLWZsYXNo IiBuYW1lPSInICsgbW92aWVOYW1lICsgJyIgaWQ9IicgKyBtb3ZpZU5hbWUgKyAn IiB3aWR0aD0iJyArIHdpZHRoICsgJyIgaGVpZ2h0PSInICsgaGVpZ2h0ICsgJyIg Ymdjb2xvcj0iJyArIGJnY29sb3IgKyAnIicgKyBhZGRpdGlvbmFsUGFyYW1zICsg cGFyYW1zICsgJyIgbWVudT0iJyArIG1lbnUgKyAnIiBzY2FsZT0iJyArIHNjYWxl TW9kZSArICciID48L2VtYmVkPlxuJzsNCg0KICAgICAgICAgICAgICAgIC8vLyBj cmVhdGUgdGhlIDxpZnJhbWU+IElGIHRoZSBjb250ZW50ZmlsZSBhdHRyaWJ1dGUg aXMgcHJlc2VudA0KICAgICAgICAgICAgICAgIHRyeSB7DQogICAgICAgICAgICAg ICAgICAgIGlmIChjb250ZW50RmlsZSAhPSB1bmRlZmluZWQgJiYgY29udGVudEZp bGUgIT0gIiIpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHMgKz0gJzxpZnJh bWUgaWQ9IiIgbmFtZT0iIiBzcmM9IicgKyBjb250ZW50RmlsZSArICciIHN0eWxl PSJkaXNwbGF5Om5vbmUiIHRpdGxlPSIiIGFsaWduPSJsZWZ0IiBmcmFtZWJvcmRl cj0iMCIgaGVpZ2h0PSIxIiB3ZWlnaHQ9IjEiIGxvbmdkZXNjPSIiIG1hcmdpbmhl aWdodD0iMCIgbWFyZ2lud2lkdGg9IjAiIHNjcm9sbGluZz0ibm8iPjwvaWZyYW1l Pic7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQog ICAgICAgICAgICAgICAgY2F0Y2ggKGUpIHsNCiAgICAgICAgICAgICAgICAgICAg Ly9hbGVydCggZSApOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAg ICByZXR1cm4gczsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgICBl bHNlIHsNCiAgICAgICAgICAgIHJldHVybiBhbHRGb3JtYXQ7DQogICAgICAgIH0N CiAgICB9Ow0KfQ0KDQpmdW5jdGlvbiByZXNpemVGbGFzaCh3LCBoLCBpZCkgew0K ICAgIHZhciBmbGFzaCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKTsNCiAg ICBpZiAoZmxhc2ggPT0gbnVsbCkgew0KICAgICAgICB2YXIgZmxhc2ggPSBkb2N1 bWVudC5nZXRFbGVtZW50QnlOYW1lKGlkKTsNCiAgICB9DQogICAgaWYgKCFpc05h Tih3KSkgZmxhc2gud2lkdGggPSB3Ow0KICAgIGlmICghaXNOYU4oaCkpIGZsYXNo LmhlaWdodCA9IGg7DQogICAgcmV0dXJuIGlkOw0KfQ0KDQpmdW5jdGlvbiBSZW5k ZXJGbGFzaCgpIHsNCiAgICB2YXIgZmxhc2hPYmplY3RzID0gUGFyc2VEaXZPYmpl Y3RzKCJmbGFzaENvbnRlbnREaXYiKTsNCiAgICB2YXIgZmxhc2hPYmplY3Q7DQog ICAgZm9yICh2YXIgZmxhc2hJZHggPSAwOyBmbGFzaElkeCA8IGZsYXNoT2JqZWN0 cy5sZW5ndGg7IGZsYXNoSWR4KyspIHsNCiAgICAgICAgdmFyIGpzY3JpcHRUeHQg PSB1bmVzY2FwZShmbGFzaE9iamVjdHNbZmxhc2hJZHhdLmlubmVySFRNTCkucmVw bGFjZSgvJmFtcDsvZ2ksICImIik7DQogICAgICAgIGlmIChqc2NyaXB0VHh0Lmlu ZGV4T2YoIm5ldyBGbGFzaExpYnJhcnlBY3RpdmF0ZSIpID4gLTEpIHsNCiAgICAg ICAgICAgIHRyeSB7DQogICAgICAgICAgICAgICAgdmFyIGZsYXNoT2JqID0gZXZh bChqc2NyaXB0VHh0KTsNCiAgICAgICAgICAgICAgICB2YXIgZnVsbHNjcmVlbiA9 IGdldFF1ZXJ5VmFyaWFibGUoIn5sdCIpOw0KICAgICAgICAgICAgICAgIGlmIChm dWxsc2NyZWVuID09ICJmbGFzaF9mdWxsc2NyZWVuIikgew0KICAgICAgICAgICAg ICAgICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLm1hcmdpbiA9IDA7DQogICAgICAg ICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUucGFkZGluZyA9IDA7DQog ICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuaW5uZXJIVE1MID0gZmxh c2hPYmouZ2V0UGx1Z2luVGFnKCk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAg ICAgICAgICAgIGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICBmbGFzaE9iamVj dHNbZmxhc2hJZHhdLmlubmVySFRNTCA9IGZsYXNoT2JqLmdldFBsdWdpblRhZygp Ow0KICAgICAgICAgICAgICAgICAgICBmbGFzaE9iamVjdHNbZmxhc2hJZHhdLnN0 eWxlLmRpc3BsYXkgPSAiYmxvY2siOw0KICAgICAgICAgICAgICAgIH0NCiAgICAg ICAgICAgIH0NCiAgICAgICAgICAgIGNhdGNoIChlKSB7IH0NCiAgICAgICAgfQ0K ICAgIH0NCn0NCmZ1bmN0aW9uIHJnY0luaXQoKSB7DQogICAgcmV0dXJuOw0KfQ0K DQoNCmZ1bmN0aW9uIHN0b3JtTW9kYWxPYmooKSB7DQogICAgdGhpcy5Jbml0ZWQg PSBmYWxzZTsNCn0NCg0Kc3Rvcm1Nb2RhbE9iai5wcm90b3R5cGUuaW5pdCA9IGZ1 bmN0aW9uKCkgew0KICAgIGlmICh0aGlzLkluaXRlZCkgew0KICAgICAgICByZXR1 cm47DQogICAgfQ0KDQogICAgdmFyIHN0YW5kYXJkTW9kZWwgPSAnPGRpdiBjbGFz cz0ianFtV2luZG93IiBpZD0ic3RhbmRhcmRNb2RlbCI+PGRpdiBjbGFzcz0ianFt V2luSGVhZGVyIGpxRHJhZyIgPjxkaXYgY2xhc3M9ImpxbUNsb3NlIiBvbmNsaWNr PSJzdG9ybU1vZGFsLmNsb3NlKCkiPjxpbWFnZSBzcmM9IicgKyBtX2ltZ1BmeCAr ICcvaW1hZ2VzL2dsb2JhbC9icmFuZC9pY29ucy9tb2RhbF9jbG9zZV9idG4uZ2lm IiBib3JkZXI9IjAiIC8+PC9kaXY+PGRpdiBjbGFzcz0ianFtV2luVGl0bGUiPjwv ZGl2PjwvZGl2PjxkaXYgY2xhc3M9ImpxbUNvbnRlbnQiPjwvZGl2PjxkaXYgY2xh c3M9ImpxbUZvb3RlciI+PGRpdiBjbGFzcz0ianFtRm9vdGVyQnV0dG9ucyI+PC9k aXY+PGRpdiBjbGFzcz0ianFtRm9vdGVyU3RhdHVzIj48L2Rpdj48L2Rpdj48L2Rp dj4nOw0KICAgICRqKHN0YW5kYXJkTW9kZWwpLmFwcGVuZFRvKCdib2R5Jyk7DQoN CiAgICAkaignI3N0YW5kYXJkTW9kZWwnKS5qcW0oKTsNCiAgICB0aGlzLkludGVy bmFsTW9kYWwgPSAkaignI3N0YW5kYXJkTW9kZWwnKTsNCiAgICB0aGlzLkRlZmF1 bHRQcm9wcyA9IHsgZGVmYXVsdFRpdGxlOiAiJm5ic3A7Iiwgd2lkdGg6IHRoaXMu SW50ZXJuYWxNb2RhbC53aWR0aCgpIH07DQogICAgdGhpcy5BYnNvbHV0ZUhlaWdo dCA9IDA7DQogICAgdGhpcy5UaXRsZSA9IHRoaXMuSW50ZXJuYWxNb2RhbC5maW5k KCcuanFtV2luVGl0bGUnKTsNCiAgICB0aGlzLkZvb3RlciA9IHRoaXMuSW50ZXJu YWxNb2RhbC5maW5kKCcuanFtRm9vdGVyJyk7DQogICAgdGhpcy5Gb290ZXJTdGF0 dXMgPSB0aGlzLkZvb3Rlci5maW5kKCcuanFtRm9vdGVyU3RhdHVzJyk7DQogICAg dGhpcy5Gb290ZXJCdXR0b25zID0gdGhpcy5Gb290ZXIuZmluZCgnLmpxbUZvb3Rl ckJ1dHRvbnMnKTsNCg0KICAgIHRoaXMuQ29udGVudCA9IHRoaXMuSW50ZXJuYWxN b2RhbC5maW5kKCcuanFtQ29udGVudCcpOw0KICAgIHRoaXMuRHVtbWJ5QW5jaG9y ID0gJGooJzxkaXYgaHJlZj1mb28gID48ZGl2PicpOw0KICAgIHRoaXMuSW5pdGVk ID0gdHJ1ZTsNCn07DQpzdG9ybU1vZGFsT2JqLnByb3RvdHlwZS5hZGRjbGljayA9 IGZ1bmN0aW9uKHQpIHsNCiAgICB0LmVhY2goZnVuY3Rpb24oKSB7DQoNCiAgICAg ICAgJGoodGhpcykuY2xpY2soZnVuY3Rpb24oKSB7DQogICAgICAgICAgICB2YXIg bWFwID0ge307DQogICAgICAgICAgICBtYXAuaHJlZiA9ICRqKHRoaXMpLmF0dHIo J2hyZWYnKTsNCiAgICAgICAgICAgIHN0b3JtTW9kYWwuc2hvdyhtYXApOw0KICAg ICAgICAgICAgJGoodGhpcykuYmx1cigpOw0KICAgICAgICAgICAgcmV0dXJuIGZh bHNlOw0KICAgICAgICB9DQogICAgICAgICkNCiAgICB9DQogICAgICAgICk7DQp9 Ow0Kc3Rvcm1Nb2RhbE9iai5wcm90b3R5cGUubG9naW5SZXF1aXJlZCA9IGZ1bmN0 aW9uKG1hcCkgew0KDQogICAgaWYgKG1hcC5hdXRoTGV2ZWwgJiYgbWFwLmF1dGhM ZXZlbCA+IF9jdXJBdXRoTGV2ZWwpIHsNCiAgICAgICAgcmV0dXJuIHRydWU7DQog ICAgfQ0KICAgIHJldHVybiBmYWxzZTsNCg0KfTsNCg0Kc3Rvcm1Nb2RhbE9iai5w cm90b3R5cGUuUmVzZXRIcmVmID0gZnVuY3Rpb24obWFwKSB7DQogICAgaWYgKG1h cC5lbG0pIHsNCiAgICAgICAgJGoobWFwLmVsbSkuYXR0cignaHJlZicsICdqYXZh c2NyaXB0OnZvaWQoMCknKTsNCiAgICB9DQp9Ow0KDQoNCg0Kc3Rvcm1Nb2RhbE9i ai5wcm90b3R5cGUuc2hvdyA9IGZ1bmN0aW9uKG1hcCwgZm9ybG9naW4pIHsNCg0K ICAgIHRoaXMuaW5pdCgpOw0KDQogICAgaWYgKCFmb3Jsb2dpbikgew0KICAgICAg ICB0aGlzLmNvbnRpbnVlTWFwID0gbnVsbDsNCiAgICB9DQoNCiAgICBpZiAodGhp cy5sb2dpblJlcXVpcmVkKG1hcCkgfHwgbWFwLnN3YXBsb2dpbikgew0KDQogICAg ICAgIHRoaXMuUmVzZXRIcmVmKG1hcCk7DQogICAgICAgIHRoaXMuY29udGludWVN YXAgPSBtYXA7DQogICAgICAgIC8vdGhpcy5zaG93TG9naW4gKCBtYXAuYXV0aExl dmVsLCBtYXAudGl0bGUgKTsNCiAgICAgICAgdGhpcy5zaG93TG9naW4obWFwKTsN CiAgICAgICAgdGhpcy5jb250aW51ZU1hcC5zd2FwbG9naW4gPSBmYWxzZTsNCiAg ICAgICAgcmV0dXJuOw0KICAgIH0NCiAgICBpZiAobWFwLnRvcCkgew0KICAgICAg ICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IG1hcC5ocmVmOw0KICAgICAgICByZXR1 cm4gZmFsc2U7DQogICAgfQ0KDQoNCiAgICB2YXIgZXRyaWcgPSB0aGlzLkR1bW1i eUFuY2hvcjsNCiAgICBldHJpZy5hdHRyKCdocmVmJywgbWFwLmhyZWYpOw0KICAg IHRoaXMuY2xvc2UoKTsNCg0KICAgIHZhciBtbSA9IGpRdWVyeS5leHRlbmQoe30s IHRoaXMuRGVmYXVsdFByb3BzLCAobWFwID8gbWFwIDoge30pKTsNCg0KICAgIHRo aXMuc2V0cHJvcHMobW0pOw0KDQogICAgdGhpcy5JbnRlcm5hbE1vZGFsLmpxbVNo b3coKTsNCg0KICAgIHRoaXMubG9hZENvbnRlbnQobW0pOw0KICAgIHRoaXMucG9z aXRpb25Nb2RhbCgpOw0KICAgIHRoaXMubG9ja01vZGFsKG1tKTsNCiAgICAkaih0 aGlzKS5ibHVyKCk7DQogICAgdGhpcy5SZXNldEhyZWYobWFwKTsNCg0KDQogICAg cmV0dXJuIGZhbHNlOw0KDQp9Ow0KDQoNCnN0b3JtTW9kYWxPYmoucHJvdG90eXBl LmxvY2tNb2RhbCA9IGZ1bmN0aW9uKG1hcCkgew0KICAgIHZhciBvbCA9ICRqKGRv Y3VtZW50KS5maW5kKCcuanFtT3ZlcmxheScpOw0KDQogICAgaWYgKG1hcC5sb2Nr KSB7DQogICAgICAgIG9sLmNzcygnY3Vyc29yJywgJ3dhaXQnKTsNCiAgICAgICAg b2wudW5iaW5kKCk7DQoNCiAgICB9DQogICAgZWxzZSB7DQogICAgICAgIG9sLmNz cygnY3Vyc29yJywgJycpOw0KDQogICAgfQ0KfTsNCg0Kc3Rvcm1Nb2RhbE9iai5w cm90b3R5cGUucG9zaXRpb25Nb2RhbCA9IGZ1bmN0aW9uKCkgew0KDQogICAgdmFy IHNjcm9sbFRvcCA9IChkb2N1bWVudC5hbGwpID8gKHRydWVib2R5KCkuc2Nyb2xs VG9wKSA6IHdpbmRvdy5wYWdlWU9mZnNldDsNCiAgICB2YXIgc2Nyb2xsTGVmdCA9 IChkb2N1bWVudC5hbGwpID8gKHRydWVib2R5KCkuc2Nyb2xsTGVmdCkgOiB3aW5k b3cucGFnZVhPZmZzZXQ7DQogICAgdmFyIGNsaWVudEhlaWdodCA9IChkb2N1bWVu dC5hbGwpID8gKHRydWVib2R5KCkuY2xpZW50SGVpZ2h0KSA6IGRvY3VtZW50LmJv ZHkuY2xpZW50SGVpZ2h0Ow0KICAgIHZhciBjbGllbnRXaWR0aCA9IChkb2N1bWVu dC5hbGwpID8gKHRydWVib2R5KCkuY2xpZW50V2lkdGgpIDogZG9jdW1lbnQuYm9k eS5jbGllbnRXaWR0aDsNCg0KICAgIHZhciBlbG0gPSB0aGlzLkludGVybmFsTW9k YWw7DQogICAgdmFyIGxlZnQgPSAwLCB0b3AgPSAwOw0KICAgIHRvcCA9IHNjcm9s bFRvcCArIGNsaWVudEhlaWdodCAvIDIgLSBlbG0uaGVpZ2h0KCkgLyAyOw0KICAg IGxlZnQgPSBzY3JvbGxMZWZ0ICsgY2xpZW50V2lkdGggLyAyOw0KDQogICAgdmFy IGNzc09iaiA9IHsNCiAgICAgICAgbGVmdDogbGVmdCArICJweCIsDQogICAgICAg IHRvcDogdG9wICsgInB4Ig0KICAgIH07DQogICAgZWxtLmNzcyhjc3NPYmopOw0K DQp9Ow0KDQpzdG9ybU1vZGFsT2JqLnByb3RvdHlwZS5sb2FkQ29udGVudCA9IGZ1 bmN0aW9uKG1hcCkgew0KDQogICAgdmFyIHIgPSB0aGlzLkNvbnRlbnQ7DQogICAg aWYgKG1hcC5jb250ZW50aWQpIHsNCiAgICAgICAgdmFyIGVsbU9iaiA9ICRqKCcj JyArIG1hcC5jb250ZW50aWQpOw0KICAgICAgICBpZiAoZWxtT2JqKSB7DQogICAg ICAgICAgICB2YXIgZWxtQ29udGVudCA9IGVsbU9iai5odG1sKCk7DQogICAgICAg ICAgICByLmh0bWwoZWxtQ29udGVudCk7DQogICAgICAgIH0NCiAgICAgICAgcmV0 dXJuOw0KICAgIH0NCiAgICB2YXIgcHJvY2Vzc2luZyA9ICI8ZGl2IGNsYXNzPVwi d2FpdGNsc1wiPiIgKyBtX3Byb2Nlc3NpbmdjYXB0aW9uICsgIjxpbWcgc3JjPVwi IiArIG1faW1nUGZ4ICsgIi9pbWFnZXMvZ2xvYmFsL2JyYW5kL2ljb25zL2FqYXgt bG9hZGVyWzFdLmdpZlwiIGJvcmRlcj1cIjBcIi8+PC9kaXY+IjsNCg0KICAgIGlm IChtYXAuaHJlZi5zdWJzdHIoMCwgNCkgPT0gJ2h0dHAnIHx8IG1hcC5pZnJhbWUg fHwgbWFwLmlzUmVsYXRpdmUpIHsNCiAgICAgICAgci5oZWlnaHQodGhpcy5BYnNv bHV0ZUhlaWdodCAtIDg1KTsNCg0KICAgICAgICByLmh0bWwocHJvY2Vzc2luZyAr ICc8aWZyYW1lIHN0eWxlPSJkaXNwbGF5OmJsb2NrIiB3aWR0aD0iMTAwJSIgaGVp Z2h0PSIxMDAlIiBvbmxvYWQ9IiRqKHRoaXMpLmNzcyAoIFwnZGlzcGxheVwnLFwn YmxvY2tcJyk7JGooXCcud2FpdGNsc1wnKS5jc3MoXCdkaXNwbGF5XCcsIFwnbm9u ZVwnKTsgIiBzdHlsZT0iaGVpZ2h0OjEwMCUiIGZyYW1lYm9yZGVyPSIwIiBoc3Bh Y2U9IjAiIHNyYz0iJyArIG1hcC5ocmVmICsgJyIgLz4nKTsNCiAgICB9DQogICAg ZWxzZSB7DQogICAgICAgIHIuaHRtbChwcm9jZXNzaW5nKTsNCiAgICAgICAgJGoo Ii53YWl0Y2xzIikuY3NzKHsgcG9zaXRpb246ICJyZWxhdGl2ZSIgfSk7DQogICAg ICAgIHIuaGVpZ2h0KCc3MiUnKTsNCiAgICAgICAgci5sb2FkKG1hcC5ocmVmKTsN CiAgICB9DQoNCg0KfTsNCg0Kc3Rvcm1Nb2RhbE9iai5wcm90b3R5cGUuc2hvd0xv Z2luID0gZnVuY3Rpb24obWFwKSB7DQogICAgdmFyIGx2bCA9IDM7DQogICAgaWYg KG1hcC5hdXRoTGV2ZWwpIHsNCiAgICAgICAgbHZsID0gbWFwLmF1dGhMZXZlbDsN CiAgICB9DQoNCiAgICBpZiAobHZsID4gX2N1ckF1dGhMZXZlbCB8fCBtYXAuc3dh cGxvZ2luKSB7DQogICAgICAgIHZhciBwYmFydXJsID0gbV9wYmFyUGZ4Ow0KICAg ICAgICBpZiAocGJhcnVybCA9PSB1bmRlZmluZWQgfHwgcGJhcnVybC5sZW5ndGgg PT0gMCkgew0KICAgICAgICAgICAgcGJhcnVybCA9ICJodHRwOi8vcGJhci51cy5k ZWxsLmNvbSI7DQogICAgICAgIH0NCiAgICAgICAgdmFyIHVybCA9IHBiYXJ1cmwg KyBtX2xvZ2luX3VybCArICI/bGV2ZWw9IiArIGx2bCArIGdldEx3cCgpOw0KICAg ICAgICBpZiAobWFwLnN3YXBsb2dpbikgew0KICAgICAgICAgICAgdXJsID0gdXJs ICsgIiZzd2FwTG9naW49IiArIG1hcC5zd2FwbG9naW47DQogICAgICAgIH0NCiAg ICAgICAgdmFyIGx3aWR0aCA9IDMyMDsNCiAgICAgICAgdmFyIGxoZWlnaHQgPSAz NTA7DQogICAgICAgIGlmIChtYXAuaGVpZ2h0KSB7DQogICAgICAgICAgICBsaGVp Z2h0ID0gbWFwLmhlaWdodDsNCiAgICAgICAgfQ0KDQogICAgICAgIGlmIChtYXAu d2lkdGgpIHsNCiAgICAgICAgICAgIGx3aWR0aCA9IG1hcC53aWR0aDsNCiAgICAg ICAgfQ0KDQogICAgICAgIHZhciBjYXB0aW9uID0gIkxvZ2luIjsNCiAgICAgICAg aWYgKG1hcC50aXRsZSkgew0KICAgICAgICAgICAgY2FwdGlvbiA9IG1hcC50aXRs ZTsNCiAgICAgICAgfQ0KICAgICAgICB2YXIgbWFwID0geyBocmVmOiB1cmwsIGhl aWdodDogbGhlaWdodCwgd2lkdGg6IGx3aWR0aCwgdGl0bGU6IGNhcHRpb24sIGVs bTogdGhpcyB9Ow0KICAgICAgICB0aGlzLnNob3cobWFwLCB0cnVlKTsNCg0KICAg IH0NCn07DQoNCnN0b3JtTW9kYWxPYmoucHJvdG90eXBlLmNvbnRpbnVlQXV0aCA9 IGZ1bmN0aW9uKCkgew0KDQogICAgaWYgKHRoaXMuY29udGludWVNYXApIHsNCiAg ICAgICAgdmFyIG5ld01hcCA9ICRqLmV4dGVuZCh7fSwgdGhpcy5jb250aW51ZU1h cCk7DQoNCiAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc3Rvcm1Nb2Rh bC5zaG93KG5ld01hcCk7IH0sIDApOw0KDQogICAgfQ0KICAgIGVsc2Ugew0KICAg ICAgICAvLyBUaGlzIGlzIHRvIHVwZGF0ZSB0aGUgcGJhciBzdHJpcCBhZnRlciBs b2dnaW5nIGluDQogICAgICAgIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKTsNCiAg ICB9DQp9Ow0Kc3Rvcm1Nb2RhbE9iai5wcm90b3R5cGUuc2V0cHJvcHMgPSBmdW5j dGlvbihtYXApIHsNCiAgICB0aGlzLlRpdGxlLmh0bWwobWFwLnRpdGxlID8gbWFw LnRpdGxlIDogbWFwLmRlZmF1bHRUaXRsZSk7DQoNCiAgICBpZiAobWFwLmNvbnRl bnQpIHsNCiAgICAgICAgdGhpcy5Db250ZW50LmFwcGVuZCgkaihtYXAuY29udGVu dCkpOw0KICAgIH0NCiAgICBlbHNlIHsNCiAgICAgICAgdGhpcy5Db250ZW50LmVt cHR5KCk7DQogICAgfQ0KDQogICAgaWYgKG1hcC5oZWlnaHQpIHsNCiAgICAgICAg aWYgKCEoKG1hcC5idXR0b25zKSB8fCAobWFwLmZvb3RlclN0YXR1cykpKSB7DQog ICAgICAgICAgICB0aGlzLkludGVybmFsTW9kYWwuaGVpZ2h0KG1hcC5oZWlnaHQp Ow0KICAgICAgICB9DQoNCiAgICAgICAgdGhpcy5BYnNvbHV0ZUhlaWdodCA9IG1h cC5oZWlnaHQ7DQogICAgfQ0KICAgIGVsc2Ugew0KICAgICAgICB0aGlzLkludGVy bmFsTW9kYWwuY3NzKCJoZWlnaHQiLCAiIik7DQogICAgfQ0KDQogICAgaWYgKG1h cC53aWR0aCkgew0KICAgICAgICB0aGlzLkludGVybmFsTW9kYWwud2lkdGgobWFw LndpZHRoKTsNCiAgICAgICAgdGhpcy5JbnRlcm5hbE1vZGFsLmNzcygnbWFyZ2lu LWxlZnQnLCBtYXAud2lkdGggLyAtMik7DQogICAgfQ0KDQogICAgdGhpcy5zZXRm b290ZXJCdXR0b25zKG1hcC5idXR0b25zKTsNCiAgICB0aGlzLnNldGZvb3RlclN0 YXR1cyhtYXAuZm9vdGVyU3RhdHVzKTsNCg0KfTsNCg0Kc3Rvcm1Nb2RhbE9iai5w cm90b3R5cGUuY2xvc2UgPSBmdW5jdGlvbigpIHsNCiAgICB0aGlzLmluaXQoKTsN CiAgICB0aGlzLkludGVybmFsTW9kYWwuanFtSGlkZSgpOw0KDQp9Ow0KDQovL3N0 b3JtTW9kYWxPYmoucHJvdG90eXBlLmZvb3RlciA9IHRoaXMuRm9vdGVyLmh0bWw7 DQpzdG9ybU1vZGFsT2JqLnByb3RvdHlwZS5zZXRoZWFkZXIgPSBmdW5jdGlvbihl KSB7DQogICAgdGhpcy5pbml0KCk7DQogICAgcmV0dXJuIHRoaXMuVGl0bGUuaHRt bChlKTsNCn07DQoNCnN0b3JtTW9kYWxPYmoucHJvdG90eXBlLnNldGZvb3RlckJ1 dHRvbnMgPSBmdW5jdGlvbihlKSB7DQogICAgdGhpcy5pbml0KCk7DQogICAgZSA9 IGUgPyBlIDogIiI7DQogICAgcmV0dXJuIHRoaXMuRm9vdGVyQnV0dG9ucy5odG1s KGUpOw0KfTsNCnN0b3JtTW9kYWxPYmoucHJvdG90eXBlLnNldGZvb3RlclN0YXR1 cyA9IGZ1bmN0aW9uKGUpIHsNCiAgICB0aGlzLmluaXQoKTsNCiAgICBlID0gZSA/ IGUgOiAiIjsNCiAgICByZXR1cm4gdGhpcy5Gb290ZXJTdGF0dXMuaHRtbChlKTsN Cn07DQoNCg0KDQp2YXIgX2N1ckF1dGhMZXZlbCA9IDA7DQoNCnZhciBtX2xvZ2lu X3VybCA9ICIvcGJhci9sb2dpbi5hc3B4IjsNCg0KdmFyIF9td2lkdGggPSAyMDA7 DQp2YXIgX21oZWlnaHQgPSAyMDA7DQoNCmZ1bmN0aW9uIHByb2NjZXNzQXV0aENo YW5nZShsZXZlbCkgew0KDQogICAgX2N1ckF1dGhMZXZlbCA9IGxldmVsOw0KICAg IHN0b3JtTW9kYWwuY2xvc2UoKTsNCiAgICBzdG9ybU1vZGFsLmNvbnRpbnVlQXV0 aCgpOw0KDQp9DQoNCg0KdmFyIHN0b3JtTW9kYWwgPSBuZXcgc3Rvcm1Nb2RhbE9i aigpOw0KDQoNCmZ1bmN0aW9uIGNsaWVudFBhZ2VJbml0KCkgew0KICAgIHN0b3Jt TW9kYWwuYWRkY2xpY2soJGooJ2FbQG5fbW9kYWxdJykpOw0KDQoNCn0NCiRqKGRv Y3VtZW50KS5yZWFkeShjbGllbnRQYWdlSW5pdCk7DQoNCmFkZHNSZWFkeShJbml0 RG9jdW1lbnRMb2FkKTsNCmZ1bmN0aW9uIEluaXREb2N1bWVudExvYWQoKSB7DQog ICAgSW5pdENsdWVUaXAoKTsNCiAgICAvL0NyZWF0ZVRyYWlsT2JqKCk7DQogICAg SW5pdFRlY2hOb3RlcygpOw0KICAgIEluaXRUb29sVGlwcygpOw0KICAgIEluaXRQ cmljZUZvclByZW1pZXJPZmZlcnMoKTsNCiAgICBSZW5kZXJGbGFzaCgpOw0KfQ0K Ly9mdW5jdGlvbiBDcmVhdGVUcmFpbE9iaigpDQovL3sNCi8vdmFyIHRyYWlsaW1h Z2VpZCA9ICI8ZGl2IGlkPVwidHJhaWxpbWFnZWlkXCIgc3R5bGU9XCJwb3NpdGlv bjphYnNvbHV0ZTt2aXNpYmlsaXR5OmhpZGRlbjtsZWZ0OjBweDt0b3A6MHB4O3dp ZHRoOjFweDtoZWlnaHQ6MXB4O2ZvbnQtZmFtaWx5OmFyaWFsLGhlbHZldGljYTtm b250LXNpemU6OC41cHRcIj48c3BhbiBpZD1cInByb2Nlc3NpbmdDYXB0aW9uSURc Ij5Qcm9jZXNzaW5nLi4uLjwvc3Bhbj48aW1nIHNyYz1cIiIrIG1faW1nUGZ4ICsi L2ltYWdlcy9nbG9iYWwvYnJhbmQvaWNvbnMvYWpheC1sb2FkZXJbMV0uZ2lmXCIg Ym9yZGVyPVwiMFwiPjwvZGl2PiI7DQovLyRqKHRyYWlsaW1hZ2VpZCkuYXBwZW5k VG8oJ2JvZHknKTsNCi8vfQ0KZnVuY3Rpb24gZ2V0UXVlcnlWYXJpYWJsZSh2YXJp YWJsZSwgdXJsKSB7DQogICAgdmFyIHVzZVVybCA9IGRvY3VtZW50LmxvY2F0aW9u LmhyZWY7DQogICAgaWYgKG1fY3VyVXJsICE9IG51bGwgJiYgbV9jdXJVcmwubGVu Z3RoID4gMCAmJiBtX2N1clVybC5pbmRleE9mKCI/IikgIT0gLTEpIHsNCiAgICAg ICAgdXNlVXJsID0gbV9jdXJVcmw7DQogICAgfQ0KICAgIGlmICh1cmwgIT0gbnVs bCAmJiB1cmwubGVuZ3RoID4gMCAmJiB1cmwuaW5kZXhPZigiPyIpICE9IC0xKSB7 DQogICAgICAgIHVzZVVybCA9IHVybDsNCiAgICB9DQogICAgdmFyIHF1ZXJ5ID0g dXNlVXJsLnN1YnN0cmluZyh1c2VVcmwuaW5kZXhPZigiPyIpICsgMSwgdXNlVXJs Lmxlbmd0aCk7DQogICAgdmFyIHZhcnMgPSBxdWVyeS5zcGxpdCgiJiIpOw0KICAg IGZvciAodmFyIGkgPSAwOyBpIDwgdmFycy5sZW5ndGg7IGkrKykgew0KICAgICAg ICB2YXIgcGFpciA9IHZhcnNbaV0uc3BsaXQoIj0iKTsNCiAgICAgICAgaWYgKHBh aXJbMF0gPT0gdmFyaWFibGUpIHsNCiAgICAgICAgICAgIHJldHVybiBwYWlyWzFd Ow0KICAgICAgICB9DQogICAgfQ0KfQ0KDQpmdW5jdGlvbiBHZXRTY3JlZW4oKSB7 DQogICAgdHJ5IHsNCiAgICAgICAgdGhpcy5XaWR0aCA9IHNjcmVlbi53aWR0aDsN CiAgICAgICAgdGhpcy5IZWlnaHQgPSBzY3JlZW4uaGVpZ2h0Ow0KICAgICAgICB0 aGlzLkF2YWlsYWJsZVdpZHRoID0gc2NyZWVuLmF2YWlsV2lkdGg7DQogICAgICAg IHRoaXMuQXZhaWxhYmxlSGVpZ2h0ID0gc2NyZWVuLmF2YWlsSGVpZ2h0Ow0KICAg ICAgICB0aGlzLkNvbG9yRGVwdGggPSBzY3JlZW4uY29sb3JEZXB0aDsNCiAgICB9 IGNhdGNoIChlcnIpIHsNCg0KICAgICAgICB0aGlzLldpZHRoID0gMTAyNDsNCiAg ICAgICAgdGhpcy5IZWlnaHQgPSA3Njg7DQogICAgICAgIHRoaXMuQXZhaWxhYmxl V2lkdGggPSAxMDI0Ow0KICAgICAgICB0aGlzLkF2YWlsYWJsZUhlaWdodCA9IDc2 ODsNCiAgICAgICAgdGhpcy5Db2xvckRlcHRoID0gMDsNCiAgICB9DQp9DQoNCmZ1 bmN0aW9uIHBhcmVudE5vZGUoZWxlbSkgew0KICAgIGlmICh0eXBlb2YgKGVsZW0p ICE9ICJ1bmRlZmluZWQiICYmIGVsZW0gIT0gbnVsbCkgew0KICAgICAgICBpZiAo ZWxlbS5wYXJlbnRFbGVtZW50KSB7DQogICAgICAgICAgICByZXR1cm4gZWxlbS5w YXJlbnRFbGVtZW50Ow0KICAgICAgICB9DQogICAgICAgIGlmIChlbGVtLnBhcmVu dE5vZGUpIHsNCiAgICAgICAgICAgIHJldHVybiBlbGVtLnBhcmVudE5vZGU7DQog ICAgICAgIH0NCiAgICB9DQogICAgcmV0dXJuIG51bGw7DQp9DQpmdW5jdGlvbiBE ZWNvZGVTZWFyY2goc3RyKSB7DQogICAgdHJ5IHsNCiAgICAgICAgcmV0dXJuIHVu ZXNjYXBlKGRlY29kZVVSSShzdHIpLnJlcGxhY2UoL1wrL2csICIgIikpOw0KICAg IH0NCiAgICBjYXRjaCAoZSkNCgl7IH0NCn0NCnZhciBtX2ZyYW1lc0FkZGVkID0g ZmFsc2U7DQpmdW5jdGlvbiBBZGRIaWRkZW5GcmFtZXMoKSB7DQogICAgaWYgKG1f ZnJhbWVzQWRkZWQpIHsNCiAgICAgICAgcmV0dXJuOw0KICAgIH0NCiAgICB2YXIg ZGYxID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRhdGFpZnJhbWVfMCIpOw0K ICAgIGlmIChkZjEgIT0gbnVsbCkgew0KICAgICAgICBtX2ZyYW1lc0FkZGVkID0g dHJ1ZTsNCiAgICB9DQogICAgbV9mcmFtZXNBZGRlZCA9IHRydWU7DQogICAgZm9y ICh2YXIgaSA9IDA7IGkgPCAxMDsgaSsrKSB7DQogICAgICAgIHZhciBpZnJhbWVP YmogPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpZnJhbWUiKTsNCiAgICAgICAg aWZyYW1lT2JqLmlkID0gImRhdGFpZnJhbWVfIiArIGk7DQogICAgICAgIGlmcmFt ZU9iai5zdHlsZS5ib3JkZXIgPSAnMHB4JzsNCiAgICAgICAgaWZyYW1lT2JqLnN0 eWxlLndpZHRoID0gJzBweCc7DQogICAgICAgIGlmcmFtZU9iai5zdHlsZS5oZWln aHQgPSAnMHB4JzsNCiAgICAgICAgaWZyYW1lT2JqLnNyYyA9ICJqYXZhc2NyaXB0 OmZhbHNlOyI7DQogICAgICAgIHZhciBjb250YWluZXIgPSBnZXRSYXdPYmplY3Qo ImlmcmFtZUNvbnRhaW5lciIpOw0KICAgICAgICBpZiAoY29udGFpbmVyID09IG51 bGwpIHsNCg0KICAgICAgICAgICAgdmFyIGNvbnRhaW5lciA9IGRvY3VtZW50LmNy ZWF0ZUVsZW1lbnQoImRpdiIpOw0KICAgICAgICAgICAgY29udGFpbmVyLmlkID0g ImlmcmFtZUNvbnRhaW5lciI7DQogICAgICAgICAgICBjb250YWluZXIuc3R5bGUu cG9zaXRpb24gPSAiYWJzb2x1dGUiOw0KICAgICAgICAgICAgZG9jdW1lbnQuYm9k eS5hcHBlbmRDaGlsZChjb250YWluZXIpOw0KDQogICAgICAgIH0NCg0KICAgICAg ICBjb250YWluZXIuYXBwZW5kQ2hpbGQoaWZyYW1lT2JqKTsNCiAgICB9DQp9DQp2 YXIgbV9kYXRhSWZyYW1lcyA9IG5ldyBBcnJheSgpOw0KdmFyIG1fZnJhbWVJZHhz ID0gbmV3IEFycmF5KCk7DQp2YXIgbV9mcmFtZUlkeCA9IDA7DQpmdW5jdGlvbiBB c3luY1hEb21haW5JZnJhbWVDYWxsKHVybCwgY2FsbGJhY2spIHsNCiAgICBpZiAo IWlzUmVhZHkpIHsNCiAgICAgICAgYWRkc1JlYWR5KGZ1bmN0aW9uKCkgeyBBc3lu Y1hEb21haW5JZnJhbWVDYWxsKHVybCwgY2FsbGJhY2spIH0pOw0KICAgICAgICBy ZXR1cm47DQogICAgfQ0KICAgIEFkZEhpZGRlbkZyYW1lcygpOw0KICAgIHZhciBp ZnJhbWVPYmo7DQogICAgZm9yIChuID0gMDsgbiA8IG1fZnJhbWVJZHhzLmxlbmd0 aDsgbisrKSB7DQogICAgICAgIGlmIChtX2ZyYW1lSWR4c1tuXSA9PSB1cmwpIHsN CiAgICAgICAgICAgIGlmcmFtZU9iaiA9IG1fZGF0YUlmcmFtZXNbbl07DQoNCiAg ICAgICAgfQ0KICAgIH0NCiAgICBpZiAoaWZyYW1lT2JqID09IG51bGwpIHsNCiAg ICAgICAgaWYgKG1fZnJhbWVJZHggPj0gMTApIHsNCiAgICAgICAgICAgIG1fZnJh bWVJZHggPSAwOw0KICAgICAgICB9DQogICAgICAgIGlmcmFtZU9iaiA9IGRvY3Vt ZW50LmdldEVsZW1lbnRCeUlkKCJkYXRhaWZyYW1lXyIgKyBtX2ZyYW1lSWR4KTsN CiAgICAgICAgbV9kYXRhSWZyYW1lc1ttX2ZyYW1lSWR4XSA9IGlmcmFtZU9iajsN CiAgICAgICAgbV9mcmFtZUlkeHNbbV9mcmFtZUlkeF0gPSB1cmw7DQogICAgICAg IG1fZnJhbWVJZHgrKzsNCiAgICB9DQogICAgaWZyYW1lT2JqLm9ubG9hZCA9IGZ1 bmN0aW9uKCkgeyBqYXNvbkNhbGxiYWNrKGlmcmFtZU9iai5pZCwgY2FsbGJhY2sp OyB9Ow0KICAgIGlmcmFtZU9iai5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlv bigpIHsgamFzb25DYWxsYmFjayhpZnJhbWVPYmouaWQsIGNhbGxiYWNrKTsgfTsN Cg0KICAgIHZhciB0aWNrcyA9IG5ldyBEYXRlKCk7DQogICAgdmFyIHVybFRpbWUg PSAidHM9IiArIHRpY2tzLmdldFNlY29uZHMoKSArIHRpY2tzLmdldE1pbGxpc2Vj b25kcygpOw0KICAgIGlmICh1cmwuaW5kZXhPZigiPyIpID09IC0xKSB7DQogICAg ICAgIHVybCArPSAiPyI7DQogICAgfQ0KICAgIGVsc2Ugew0KICAgICAgICB1cmwg Kz0gIiYiOw0KICAgIH0NCiAgICBzZXRUaW1lb3V0KCJOYXZpZ2F0ZUZyYW1lKCAn IiArIGlmcmFtZU9iai5pZCArICInLCciICsgKHVybCArIHVybFRpbWUpICsgIicg KSIsIDEwKTsNCn0NCmZ1bmN0aW9uIE5hdmlnYXRlRnJhbWUoSUZyYW1lT2JqLCBV UkwpIHsNCiAgICBJRnJhbWVPYmogPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChJ RnJhbWVPYmopOw0KICAgIHRyeSB7DQogICAgICAgIGlmIChJRnJhbWVPYmouY29u dGVudERvY3VtZW50KSB7DQogICAgICAgICAgICBJRnJhbWVEb2MgPSBJRnJhbWVP YmouY29udGVudERvY3VtZW50Ow0KICAgICAgICB9IGVsc2UgaWYgKElGcmFtZU9i ai5jb250ZW50V2luZG93KSB7DQogICAgICAgICAgICBJRnJhbWVEb2MgPSBJRnJh bWVPYmouY29udGVudFdpbmRvdy5kb2N1bWVudDsNCiAgICAgICAgfSBlbHNlIGlm IChJRnJhbWVPYmouZG9jdW1lbnQpIHsNCiAgICAgICAgICAgIElGcmFtZURvYyA9 IElGcmFtZU9iai5kb2N1bWVudDsNCiAgICAgICAgfSBlbHNlIHsNCiAgICAgICAg ICAgIHJldHVybiB0cnVlOw0KICAgICAgICB9DQogICAgICAgIElGcmFtZURvYy5s b2NhdGlvbi5yZXBsYWNlKFVSTCk7DQogICAgfQ0KICAgIGNhdGNoIChlKSB7DQog ICAgICAgIElGcmFtZU9iai5zcmMgPSBVUkw7DQogICAgfQ0KICAgIHJldHVybiBm YWxzZTsNCn0NCmZ1bmN0aW9uIGphc29uQ2FsbGJhY2soaWQsIGNhbGxiYWNrKSB7 DQogICAgdmFyIGlmcmFtZU9iaiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlk KTsNCiAgICBpZiAoaWZyYW1lT2JqLnJlYWR5U3RhdGUgPT0gImNvbXBsZXRlIiB8 fCB0eXBlb2YgKGlmcmFtZU9iai5yZWFkeVN0YXRlKSA9PSAidW5kZWZpbmVkIikg ew0KICAgICAgICB0cnkgew0KICAgICAgICAgICAgdmFyIHRoaW5naWUgPSBuZXcg T2JqZWN0KCk7DQogICAgICAgICAgICB2YXIgcmV0dmFsID0gbnVsbDsNCiAgICAg ICAgICAgIHZhciB0eHQgPSBudWxsOw0KICAgICAgICAgICAgdHJ5IHsNCiAgICAg ICAgICAgICAgICBpZiAoaWZyYW1lT2JqLmNvbnRlbnREb2N1bWVudCkgew0KICAg ICAgICAgICAgICAgICAgICB0aGluZ2llLk5vZGUgPSBpZnJhbWVPYmouY29udGVu dERvY3VtZW50LmJvZHk7DQogICAgICAgICAgICAgICAgICAgIHR4dCA9IGlmcmFt ZU9iai5jb250ZW50RG9jdW1lbnQuYm9keS5pbm5lckhUTUw7DQogICAgICAgICAg ICAgICAgICAgIGlmICh0eHQgPT0gImZhbHNlIikgew0KICAgICAgICAgICAgICAg ICAgICAgICAgcmV0dXJuOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAg ICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGVsc2UgaWYgKGlmcmFtZU9iai5j b250ZW50V2luZG93KSB7DQogICAgICAgICAgICAgICAgICAgIHZhciBmcm1Eb2Mg PSBudWxsOw0KICAgICAgICAgICAgICAgICAgICB0cnkgew0KICAgICAgICAgICAg ICAgICAgICAgICAgZnJtRG9jID0gaWZyYW1lT2JqLmNvbnRlbnRXaW5kb3cuZG9j dW1lbnQ7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAg ICAgY2F0Y2ggKGUpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsN CiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICB0aGlu Z2llLk5vZGUgPSBmcm1Eb2MuYm9keTsNCiAgICAgICAgICAgICAgICAgICAgdHh0 ID0gdGhpbmdpZS5Ob2RlLmlubmVySFRNTDsNCiAgICAgICAgICAgICAgICB9DQog ICAgICAgICAgICAgICAgZWxzZSBpZiAoaWZyYW1lT2JqLmRvY3VtZW50KSB7DQog ICAgICAgICAgICAgICAgICAgIHRoaW5naWUuTm9kZSA9IGlmcmFtZU9iai5kb2N1 bWVudC5ib2R5Ow0KICAgICAgICAgICAgICAgICAgICB0eHQgPSBpZnJhbWVPYmou ZG9jdW1lbnQuYm9keS5pbm5lckhUTUw7DQogICAgICAgICAgICAgICAgfQ0KICAg ICAgICAgICAgfQ0KICAgICAgICAgICAgY2F0Y2ggKGUpIHsNCiAgICAgICAgICAg ICAgICBjYWxsYmFjayh0aGluZ2llKTsNCg0KICAgICAgICAgICAgfQ0KICAgICAg ICAgICAgaWYgKHRoaW5naWUuTm9kZSAhPSBudWxsICYmIHRoaW5naWUuTm9kZS5n ZXRFbGVtZW50c0J5VGFnTmFtZSgicHJlIikubGVuZ3RoID4gMCkgew0KICAgICAg ICAgICAgICAgIHZhciBqYXNvbkVsbSA9IHRoaW5naWUuTm9kZS5nZXRFbGVtZW50 c0J5VGFnTmFtZSgicHJlIilbMF07DQogICAgICAgICAgICAgICAgZXZhbChqYXNv bkVsbS5pbm5lckhUTUwpOw0KICAgICAgICAgICAgICAgIHRoaW5naWUuU3RhdHVz ID0gIk9LIjsNCiAgICAgICAgICAgICAgICB0aGluZ2llLlJlc3BvbnNlID0gdHh0 Ow0KICAgICAgICAgICAgICAgIHRoaW5naWUuSmFzb25PYmogPSByZXR2YWw7DQog ICAgICAgICAgICAgICAgY2FsbGJhY2sodGhpbmdpZSk7DQogICAgICAgICAgICB9 DQogICAgICAgICAgICBlbHNlIGlmICh0eHQuaW5kZXhPZigidmFyIikgPT0gMCkg ew0KICAgICAgICAgICAgICAgIGV2YWwodHh0KTsNCg0KICAgICAgICAgICAgICAg IHRoaW5naWUuU3RhdHVzID0gIk9LIjsNCiAgICAgICAgICAgICAgICB0aGluZ2ll LlJlc3BvbnNlID0gdHh0Ow0KICAgICAgICAgICAgICAgIHRoaW5naWUuSmFzb25P YmogPSByZXR2YWw7DQogICAgICAgICAgICAgICAgY2FsbGJhY2sodGhpbmdpZSk7 DQogICAgICAgICAgICB9DQogICAgICAgICAgICBlbHNlIHsNCiAgICAgICAgICAg ICAgICB0aGluZ2llLlN0YXR1cyA9ICJPSyI7DQogICAgICAgICAgICAgICAgdGhp bmdpZS5SZXNwb25zZSA9IHR4dDsNCiAgICAgICAgICAgICAgICBjYWxsYmFjayh0 aGluZ2llKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgICBjYXRj aCAoZSkgew0KICAgICAgICAgICAgdGhpbmdpZS5TdGF0dXMgPSAiTk9UT0siOw0K ICAgICAgICAgICAgdGhpbmdpZS5SZXNwb25zZSA9ICIiOw0KICAgICAgICAgICAg dGhpbmdpZS5FcnJvciA9IGU7DQogICAgICAgICAgICBjYWxsYmFjayh0aGluZ2ll KTsNCiAgICAgICAgfQ0KICAgIH0NCn0NCnZhciB0cmFpbGltYWdlID0gWyIiLCAx MDAsIDk5XTsgIC8vaW1hZ2UgcGF0aCwgcGx1cyB3aWR0aCBhbmQgaGVpZ2gNCnZh ciBvZmZzZXRmcm9tbW91c2UgPSBbMTAsIC0yMF07ICAvL2ltYWdlIHgseSBvZmZz ZXRzIGZyb20gY3Vyc29yIHBvc2l0aW9uIGluIHBpeGVscy4gRW50ZXIgMCwwIGZv ciBubyBvZmZzZXQNCnZhciBkaXNwbGF5ZHVyYXRpb24gPSAxOyAgLy9kdXJhdGlv biBpbiBzZWNvbmRzIGltYWdlIHNob3VsZCByZW1haW4gdmlzaWJsZS4gMCBmb3Ig YWx3YXlzLg0KDQoNCg0KDQpmdW5jdGlvbiBnZXR0cmFpbG9iaigpIHsNCiAgICBy ZXR1cm4gJGooJyN0cmFpbGltYWdlaWQnKTsNCn0NCg0KZnVuY3Rpb24gZm9sbG93 bW91c2UoZSkgew0KICAgIHZhciB4Y29vcmQgPSBvZmZzZXRmcm9tbW91c2VbMF07 DQogICAgdmFyIHljb29yZCA9IG9mZnNldGZyb21tb3VzZVsxXTsNCiAgICBpZiAo dHlwZW9mIGUgIT0gInVuZGVmaW5lZCIpIHsNCiAgICAgICAgeGNvb3JkICs9IGUu cGFnZVg7DQogICAgICAgIHljb29yZCArPSBlLnBhZ2VZOw0KICAgIH0NCiAgICBl bHNlIGlmICh0eXBlb2Ygd2luZG93LmV2ZW50ICE9ICJ1bmRlZmluZWQiKSB7DQog ICAgICAgIHhjb29yZCArPSB0cnVlYm9keSgpLnNjcm9sbExlZnQgKyBldmVudC5j bGllbnRYOw0KICAgICAgICB5Y29vcmQgKz0gdHJ1ZWJvZHkoKS5zY3JvbGxUb3Ag KyBldmVudC5jbGllbnRZOw0KICAgIH0NCiAgICB2YXIgZG9jd2lkdGggPSBkb2N1 bWVudC5hbGwgPyB0cnVlYm9keSgpLnNjcm9sbExlZnQgKyB0cnVlYm9keSgpLmNs aWVudFdpZHRoIDogcGFnZVhPZmZzZXQgKyB3aW5kb3cuaW5uZXJXaWR0aCAtIDE1 Ow0KICAgIHZhciBkb2NoZWlnaHQgPSBkb2N1bWVudC5hbGwgPyBNYXRoLm1heCh0 cnVlYm9keSgpLnNjcm9sbEhlaWdodCwgdHJ1ZWJvZHkoKS5jbGllbnRIZWlnaHQp IDogTWF0aC5tYXgoZG9jdW1lbnQuYm9keS5vZmZzZXRIZWlnaHQsIHdpbmRvdy5p bm5lckhlaWdodCk7DQogICAgaWYgKHhjb29yZCArIHRyYWlsaW1hZ2VbMV0gKyAz ID4gZG9jd2lkdGggfHwgeWNvb3JkICsgdHJhaWxpbWFnZVsyXSA+IGRvY2hlaWdo dCkNCiAgICAgICAgZ2V0dHJhaWxvYmooKS5jc3MoeyBkaXNwbGF5OiAibm9uZSIg fSk7DQogICAgZWxzZQ0KICAgICAgICBnZXR0cmFpbG9iaigpLmNzcyh7IGRpc3Bs YXk6ICIiIH0pOw0KDQogICAgdmFyIGNzc09iaiA9IHsNCiAgICAgICAgbGVmdDog eGNvb3JkICsgInB4IiwNCiAgICAgICAgdG9wOiB5Y29vcmQgKyAicHgiLA0KICAg ICAgICB2aXNpYmlsaXR5OiAidmlzaWJsZSINCiAgICB9Ow0KICAgIGdldHRyYWls b2JqKCkuY3NzKGNzc09iaik7DQoNCn0NCg0KZnVuY3Rpb24gdHJ1ZWJvZHkoKSB7 DQogICAgcmV0dXJuICghd2luZG93Lm9wZXJhICYmIGRvY3VtZW50LmNvbXBhdE1v ZGUgJiYgZG9jdW1lbnQuY29tcGF0TW9kZSAhPSAiQmFja0NvbXBhdCIpID8gZG9j dW1lbnQuZG9jdW1lbnRFbGVtZW50IDogZG9jdW1lbnQuYm9keTsNCn0NCg0KZnVu Y3Rpb24gaGlkZXRyYWlsKCkgew0KICAgIGdldHRyYWlsb2JqKCkuY3NzKHsgdmlz aWJpbGl0eTogImhpZGRlbiIgfSk7DQogICAgJGooZG9jdW1lbnQpLnVuYmluZCgn bW91c2Vtb3ZlJywgZm9sbG93bW91c2UpOw0KDQp9DQoNCmZ1bmN0aW9uIEFzeW5j QWRkVG9DYXJ0KHVybCwgcHJvY2Vzc2luZ0NhcHRpb24pIHsNCg0KICAgIHZhciBv dHJhaWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncHJvY2Vzc2luZ0NhcHRp b25JRCcpOw0KICAgIG90cmFpbC5pbm5lckhUTUwgPSBwcm9jZXNzaW5nQ2FwdGlv bjsNCg0KICAgICRqKGRvY3VtZW50KS5iaW5kKCdtb3VzZW1vdmUnLCBmb2xsb3dt b3VzZSk7DQogICAgLy9zZXQgdXAgZGl2IC4uLiBmb3Igd2FpdGluZy4uLg0KICAg IEFzeW5jWERvbWFpbklmcmFtZUNhbGwodXJsLCBBc3luY0FkZFRvQ2FydENhbGxi YWNrKTsNCn0NCg0KDQp2YXIgY2FydGNvbnRlbnQgPSBudWxsOw0KdmFyIHRvdGFs Y2FydHF1YW50aXR5ID0gMDsNCnZhciBhc3luY0NhcnRPYmogPSBudWxsOw0KdmFy IGlzYWRkaW5ndG9jYXJ0ID0gZmFsc2U7DQpmdW5jdGlvbiBBc3luY0FkZFRvQ2Fy dENhbGxiYWNrKHJzcCkgew0KDQogICAgaW5mbHlvdXRtYXggPSBmYWxzZTsNCiAg ICBpc2FkZGluZ3RvY2FydCA9IHRydWU7DQogICAgaWYgKHJzcC5TdGF0dXMgIT0g Ik9LIikgew0KICAgICAgICBoaWRldHJhaWwoKTsNCiAgICAgICAgcmV0dXJuOw0K ICAgIH0NCiAgICBlbHNlIHsNCiAgICAgICAgaGlkZXRyYWlsKCk7DQogICAgICAg IHZhciBqYXNvbkNhcnQgPSByc3AuSmFzb25PYmo7DQoNCiAgICAgICAgdmFyIHJl bGF0ZWRwcm9kdWN0c2NvbnRlbnQgPSAiIjsNCg0KICAgICAgICBjYXJ0Y29udGVu dCA9ICI8ZGl2IGlkPVwicGJhcmNvbnRlbnRcIiBuYW1lPVwiY2FydHRlbXBcIiBj bGFzcz1cInBiYXJjb250ZW50Y2FydFwiIHN0eWxlPVwid2lkdGg6MzUwcHg7Zmxv YXQ6bGVmdDtcIj4iOw0KDQogICAgICAgIGlmIChqYXNvbkNhcnQuRXJyb3IpIHsN CiAgICAgICAgICAgIGNhcnRjb250ZW50ID0gY2FydGNvbnRlbnQgKyAiIDxkaXYg Y2xhc3M9XCJjYXJ0SXRlbXNfZXJyb3JcIj4iICsgamFzb25DYXJ0LkVycm9yICsg IjwvZGl2PiI7DQoNCiAgICAgICAgfQ0KICAgICAgICBlbHNlIHsNCiAgICAgICAg ICAgIHZhciBzaG93UmVsYXRlZFByb2QgPSB0cnVlOw0KICAgICAgICAgICAgdmFy IGNhcHRpb24gPSBqYXNvbkNhcnQuUmVsYXRlZFByb2R1Y3RzQ2FwdGlvbjsNCg0K ICAgICAgICAgICAgaWYgKChjYXB0aW9uID09IG51bGwpIHx8IChqYXNvbkNhcnQu UmVsYXRlZFByb2R1Y3RzVXJsID09IG51bGwpKSB7DQogICAgICAgICAgICAgICAg c2hvd1JlbGF0ZWRQcm9kID0gZmFsc2U7DQogICAgICAgICAgICB9DQogICAgICAg ICAgICBlbHNlIGlmIChjYXB0aW9uICE9IG51bGwgJiYgKGNhcHRpb24ubGVuZ3Ro ID4gMCkpIHsNCiAgICAgICAgICAgICAgICBpZiAoY2FwdGlvbi5zdWJzdHJpbmco Y2FwdGlvbi5sZW5ndGggLSAxKSA9PSAiICIpIHsNCiAgICAgICAgICAgICAgICAg ICAgc2hvd1JlbGF0ZWRQcm9kID0gZmFsc2U7DQogICAgICAgICAgICAgICAgfQ0K ICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZWxzZSB7DQogICAgICAgICAgICAg ICAgc2hvd1JlbGF0ZWRQcm9kID0gZmFsc2U7DQogICAgICAgICAgICB9DQoNCiAg ICAgICAgICAgIGlmIChzaG93UmVsYXRlZFByb2QgPT0gdHJ1ZSkgew0KICAgICAg ICAgICAgICAgIHJlbGF0ZWRwcm9kdWN0c2NvbnRlbnQgPSAiPGRpdiBjbGFzcz1c InNpbXBsZUJ1dHRvbk1PRElGSUVEXCIgc3R5bGU9XCJmbG9hdDpsZWZ0O1wiPjxh IGhyZWY9XCIiICsgamFzb25DYXJ0LlJlbGF0ZWRQcm9kdWN0c1VybCArICJcIiBz dHlsZT1cInRleHQtZGVjb3JhdGlvbjpub25lXCI+PHNwYW4gbmFtZT1cInNpbHZl cl9CdG5cIiBjbGFzcz1cInNpbHZlckJ0blwiPjxkaXYgY2xhc3M9XCJzaWx2ZXJC dG5MZWZ0XCI+IiArDQogICAgICAgICAgICAgICAgICAgICAgICAiPC9kaXY+PGRp diBjbGFzcz1cInNpbHZlckJ0bk1pZFwiPiIgKyBqYXNvbkNhcnQuUmVsYXRlZFBy b2R1Y3RzQ2FwdGlvbiArICI8L2Rpdj48ZGl2IGNsYXNzPVwic2lsdmVyQnRuUmln aHRcIj48L2Rpdj48L3NwYW4+PC9hPjwvZGl2PjxkaXYgY2xhc3M9XCJjYXJ0c3Bh Y2VyXCI+PGltZyBzcmM9XCIiICsgbV9pbWdQZnggKyAiL2ltYWdlcy9nbG9iYWwv Z2VuZXJhbC9zcGFjZXIuZ2lmXCIgd2lkdGg9XCIyNDhcIiBoZWlnaHQ9XCI1XCIg Ym9yZGVyPVwiMFwiIGFsdD1cIlwiIC8+PC9kaXY+IjsNCiAgICAgICAgICAgIH0N Cg0KDQogICAgICAgICAgICBjYXJ0Y29udGVudCA9IGNhcnRjb250ZW50ICsgIiA8 ZGl2IGNsYXNzPVwiY2FydFRvcEluZm9cIj48ZGl2IGNsYXNzPVwiY2FydEl0ZW1z X2JvbGRcIj4iICsgamFzb25DYXJ0LkNhcnRUb3BJbmZvICsgIjwvZGl2PjwvZGl2 PiIgKw0KDQogICAgICAgICAgICAgICAgICAgICAgICAiPGRpdiBjbGFzcz1cImNh cnRJdGVtXCI+IiArDQogICAgICAgICAgICAgICAgICAgICAgICAiPGRpdiBjbGFz cz1cInBiYXJzcGFjZXJcIj48aW1nIHNyYz1cIiIgKyBtX2ltZ1BmeCArICIvaW1h Z2VzL2dsb2JhbC9nZW5lcmFsL3NwYWNlci5naWZcIiB3aWR0aD1cIjFcIiBoZWln aHQ9XCIxXCIgYm9yZGVyPVwiMFwiIGFsdD1cIlwiIC8+PC9kaXY+IiArDQogICAg ICAgICAgICAgICAgICAgICAgICAiPGRpdiBjbGFzcz1cInByb2R1Y3RJbWFnZVwi PjxpbWcgc3JjPVwiIiArIGphc29uQ2FydC5JbWFnZSArICJcIiB3aWR0aD1cIjQw XCIgYm9yZGVyPVwiMFwiIGFsdD1cIlwiIC8+PC9kaXY+IiArDQogICAgICAgICAg ICAgICAgICAgICAgICAiPGRpdiBjbGFzcz1cInByb2R1Y3REZXNjXCI+PHNwYW4g Y2xhc3M9XCJwcm9kdWN0VGl0bGVcIiB0aXRsZT1cIiIgKyBqYXNvbkNhcnQuU2hv cnREZXNjcmlwdGlvbiArICJcIj4iICsgamFzb25DYXJ0LlNob3J0RGVzY3JpcHRp b24gKyAiPC9zcGFuPjxiciAvPiIgKw0KICAgICAgICAgICAgICAgICAgICAgICAi PC9kaXY+IiArDQogICAgICAgICAgICAgICAgICAgICAgICI8ZGl2IGNsYXNzPVwi cHJvZHVjdFByaWNlXCIgc3R5bGU9XCJ3aWR0aDoxNTBweDtcIj4iICsgamFzb25D YXJ0LlByaWNlICsgIjwvZGl2PiI7DQoNCg0KICAgICAgICB9DQoNCg0KICAgICAg ICBjYXJ0Y29udGVudCA9IGNhcnRjb250ZW50ICsgIjxkaXYgc3R5bGU9XCJjbGVh cjpib3RoO1wiPjwvZGl2PiIgKw0KICAgICAgICAgICAgICAgICAgICAgICAiPGRp diBjbGFzcz1cInByb2R1Y3REaXZpZGVcIj48L2Rpdj4iICsNCiAgICAgICAgICAg ICAgICAgICAgICAiPGRpdiBjbGFzcz1cImNhcnRzcGFjZXJcIj48aW1nIHNyYz1c IiIgKyBtX2ltZ1BmeCArICIvaW1hZ2VzL2dsb2JhbC9nZW5lcmFsL3NwYWNlci5n aWZcIiB3aWR0aD1cIjMyMFwiIGhlaWdodD1cIjEwXCIgYm9yZGVyPVwiMFwiIGFs dD1cIlwiIC8+PC9kaXY+IiArIHJlbGF0ZWRwcm9kdWN0c2NvbnRlbnQgKw0KICAg ICAgICAgICAgICAgICAgICAgICAgIjxkaXYgY2xhc3M9XCJzaW1wbGVCdXR0b25N T0RJRklFRFwiIHN0eWxlPVwiZmxvYXQ6cmlnaHQ7XCI+PGEgaHJlZj1cIiIgKyBq YXNvbkNhcnQuQ2FydExpbmtVcmwgKyAiXCI+PHNwYW4gbmFtZT1cImdyZWVuX0J0 blwiIGNsYXNzPVwiZ3JlZW5CdG5cIj48ZGl2IGNsYXNzPVwiZ3JlZW5CdG5MZWZ0 XCI+IiArDQogICAgICAgICAgICAgICAgICAgICAgICI8L2Rpdj48ZGl2IGNsYXNz PVwiZ3JlZW5CdG5NaWRcIj4iICsgamFzb25DYXJ0LkNhcnRMaW5rQ2FwdGlvbiAr ICI8L2Rpdj48ZGl2IGNsYXNzPVwiZ3JlZW5CdG5SaWdodFwiPjwvZGl2Pjwvc3Bh bj48L2E+PC9kaXY+IiArDQogICAgICAgICAgICAgICAgICAgICAgICAiPGRpdiBj bGFzcz1cInNpbXBsZUJ1dHRvbk1PRElGSUVEXCIgc3R5bGU9XCJmbG9hdDpsZWZ0 O1wiPjxhIGhyZWY9XCJqYXZhc2NyaXB0OkNvbGxhcHNlT25Db250aW51ZVNob3Bw aW5nKCdjYXJ0JylcIiBzdHlsZT1cInRleHQtZGVjb3JhdGlvbjpub25lXCI+PHNw YW4gbmFtZT1cInNpbHZlcl9CdG5cIiBjbGFzcz1cInNpbHZlckJ0blwiIHN0eWxl PVwiXCI+PGRpdiBjbGFzcz1cInNpbHZlckJ0bkxlZnRcIj4iICsNCiAgICAgICAg ICAgICAgICAgICAgICAgICI8L2Rpdj48ZGl2IGNsYXNzPVwic2lsdmVyQnRuTWlk XCIgc3R5bGU9XCJcIj4iICsgamFzb25DYXJ0LkNvbnRpbnVlU2hvcHBpbmdDYXB0 b2luICsgIjwvZGl2PjxkaXYgY2xhc3M9XCJzaWx2ZXJCdG5SaWdodFwiPjwvZGl2 Pjwvc3Bhbj48L2E+PC9kaXY+PGRpdiBjbGFzcz1cInBiYXJzcGFjZXJcIj48aW1n IHNyYz1cIiIgKyBtX2ltZ1BmeCArICIvaW1hZ2VzL2dsb2JhbC9nZW5lcmFsL3Nw YWNlci5naWZcIiB3aWR0aD1cIjFcIiBoZWlnaHQ9XCIxXCIgYm9yZGVyPVwiMFwi IGFsdD1cIlwiIC8+PC9kaXY+IiArDQogICAgICAgICAgICAgICAgICAgICAgICAg ICAiPGRpdiBjbGFzcz1cImNhcnRzcGFjZXJcIj48aW1nIHNyYz1cIiIgKyBtX2lt Z1BmeCArICIvaW1hZ2VzL2dsb2JhbC9nZW5lcmFsL3NwYWNlci5naWZcIiB3aWR0 aD1cIjMwMFwiIGhlaWdodD1cIjVcIiBib3JkZXI9XCIwXCIgYWx0PVwiXCIgLz48 L2Rpdj4iICsNCiAgICAgICAgICAgICAgICAgICAgICAgIjwvZGl2PiIgKw0KICAg ICAgICAgICAgICAgICAgICAgICAiPC9kaXY+IjsNCiAgICAgICAgdG90YWxjYXJ0 cXVhbnRpdHkgPSBqYXNvbkNhcnQuQ2FydFF1YW50aXR5Ow0KDQogICAgICAgIElu aXRPcGVuQ2FydEl0ZW0oKTsNCg0KDQogICAgfQ0KDQp9DQoNCmZ1bmN0aW9uIElu aXRPcGVuQ2FydEl0ZW0oKSB7DQoNCiAgICBtX2NhcnRQYWdlcyA9IG5ldyBBcnJh eSgpOw0KDQogICAgaWYgKGluZmx5b3V0bWF4KSB7DQoNCiAgICAgICAgcmV0dXJu Ow0KICAgIH0NCg0KICAgIGlmIChpc2Jsb2F0ZWQgPT0gZmFsc2UpIHsNCiAgICAg ICAgaWYgKGlzYWRkaW5ndG9jYXJ0KSB7DQogICAgICAgICAgICB2YXIgY2FydERp diA9IGdldFJhd09iamVjdCgiZmx5b3V0Y2FydGJvZHkiKTsNCg0KICAgICAgICAg ICAgY2FydERpdi5pbm5lckhUTUwgPSAiIjsNCg0KICAgICAgICAgICAgbV9wYmFy Q29udGVudERpdiA9IG51bGw7DQogICAgICAgICAgICBjdXJyZW50SUQgPSBudWxs Ow0KICAgICAgICAgICAgbV9jYXJ0UGFnZXMgPSBuZXcgQXJyYXkoKTsNCiAgICAg ICAgICAgIHNjcm9sbCgwLCAwKTsNCiAgICAgICAgICAgIGZseW91dG1heCgnY2Fy dHRlbXAnLCAnMzUwJyk7DQogICAgICAgICAgICBpc2FkZGluZ3RvY2FydCA9IGZh bHNlOw0KICAgICAgICB9DQoNCiAgICB9DQogICAgZWxzZSB7DQogICAgICAgIGlm IChpc2FkZGluZ3RvY2FydCkgew0KICAgICAgICAgICAgQ29sbGFwc2VPbkNvbnRp bnVlU2hvcHBpbmcoImNhcnQiKTsNCiAgICAgICAgICAgIGlzYmxvYXRlZCA9IHRy dWU7DQogICAgICAgICAgICBzZXRUaW1lb3V0KCJJbml0T3BlbkNhcnRJdGVtKCki LCAyNTApOw0KICAgICAgICB9DQoNCiAgICB9DQoNCg0KfQ0KDQpmdW5jdGlvbiBD b2xsYXBzZU9uQ29udGludWVTaG9wcGluZyhpZCkgew0KDQogICAgZmx5b3V0bWF4 Y2xlYXIoKTsNCiAgICBkZWxheU1pbiA9IHNldFRpbWVvdXQoInNocmlua0l0KCci ICsgaWQgKyAiJyx0cnVlKSIsIDApOw0KDQp9DQoNCmZ1bmN0aW9uIGFkZE9uTG9h ZChmbikgew0KICAgIGlmIChvbmxvYWRGaXJlZCkgew0KICAgICAgICBmbigpOw0K ICAgICAgICByZXR1cm47DQogICAgfQ0KICAgIGlmICh3aW5kb3cub25sb2FkICE9 IHNhZmVMb2FkKSB7DQogICAgICAgIHZhciBvbGRPbmxvYWQgPSB3aW5kb3cub25s b2FkOw0KICAgICAgICB2YXIgZm91bmQgPSBmYWxzZTsNCiAgICAgICAgZm9yIChj bnQgPSAwOyBjbnQgPCBsb2FkZWQubGVuZ3RoOyBjbnQrKykgew0KICAgICAgICAg ICAgaWYgKGxvYWRlZFtjbnRdID09IG9sZE9ubG9hZCkgew0KICAgICAgICAgICAg ICAgIGZvdW5kID0gdHJ1ZTsNCiAgICAgICAgICAgICAgICBicmVhazsNCiAgICAg ICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgICBpZiAoIWZvdW5kKSB7DQogICAg ICAgICAgICBsb2FkZWRbbG9hZGVkLmxlbmd0aF0gPSBvbGRPbmxvYWQ7DQogICAg ICAgIH0NCiAgICAgICAgbV9ydW5TYWZlTG9hZCA9IHRydWU7DQogICAgICAgIHdp bmRvdy5vbmxvYWQgPSBzYWZlTG9hZDsNCiAgICB9DQogICAgbG9hZGVkW2xvYWRl ZC5sZW5ndGhdID0gZm47DQp9DQoNCnNldFRpbWVvdXQoImVuc3VyZUxvYWRQYWdl KCkiLCAxMDAwMCk7DQpmdW5jdGlvbiBlbnN1cmVMb2FkUGFnZSgpIHsNCiAgICBp ZiAob25sb2FkRmlyZWQpIHsNCiAgICAgICAgcmV0dXJuOw0KICAgIH0NCiAgICBh ZGRzUmVhZHkoc2FmZUxvYWQpOw0KDQogICAgcmV0dXJuOw0KDQp9DQoNCmZ1bmN0 aW9uIHNhZmVMb2FkKCkgew0KDQogICAgb25sb2FkRmlyZWQgPSB0cnVlOw0KICAg IGlmIChtX3J1blNhZmVMb2FkKSB7DQogICAgICAgIG1fcnVuU2FmZUxvYWQgPSBm YWxzZTsNCiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsb2FkZWQubGVuZ3Ro OyBpKyspIHsNCiAgICAgICAgICAgIGlmIChsb2FkZWRbaV0gIT0gdW5kZWZpbmVk KSB7DQogICAgICAgICAgICAgICAgbG9hZGVkW2ldKCk7DQogICAgICAgICAgICB9 DQogICAgICAgIH0NCiAgICB9DQp9DQpmdW5jdGlvbiBnZXRYTUxIVFRQT2JqKCkg ew0KICAgIHZhciBvYmogPSBmYWxzZTsNCiAgICAvKkBjY19vbkAqLw0KICAgIC8q QGlmIChAX2pzY3JpcHRfdmVyc2lvbiA+PSA1KQ0KICAgIHRyeSB7IG9iaiA9IG5l dyBBY3RpdmVYT2JqZWN0KCJNc3htbDIuWE1MSFRUUCIpOyB9IGNhdGNoIChlKSB7 IHRyeSB7IG9iaiA9IG5ldyBBY3RpdmVYT2JqZWN0KCJNaWNyb3NvZnQuWE1MSFRU UCIpOyB9IGNhdGNoIChvYykgeyBvYmogPSBmYWxzZTsgfSB9DQogICAgQGVuZEAq Lw0KICAgIGlmICghb2JqICYmIHR5cGVvZiBYTUxIdHRwUmVxdWVzdCAhPSAidW5k ZWZpbmVkIikgew0KICAgICAgICB0cnkgew0KICAgICAgICAgICAgb2JqID0gbmV3 IFhNTEh0dHBSZXF1ZXN0KCk7DQogICAgICAgIH0NCiAgICAgICAgY2F0Y2ggKGUp IHsNCiAgICAgICAgICAgIG9iaiA9IGZhbHNlOw0KICAgICAgICB9DQogICAgfQ0K ICAgIGlmICghb2JqKSB7DQogICAgICAgIHJldHVybiB1bmRlZmluZWQ7DQogICAg fQ0KICAgIHJldHVybiBvYmo7DQp9DQpmdW5jdGlvbiBnZW5lcmF0ZVVybChhcnIp IHsNCiAgICB2YXIgdXJsID0gIiI7DQogICAgaWYgKHR5cGVvZiAobV9yZXF1ZXN0 VVJMQmFzZSkgIT0gJ3VuZGVmaW5lZCcpIHsNCiAgICAgICAgdXJsID0gbV9yZXF1 ZXN0VVJMQmFzZSArICImaT0iICsgYXJyLmpvaW4oIi8rIik7DQogICAgfQ0KICAg IHJldHVybiB1cmw7DQp9DQpmdW5jdGlvbiB0bkxpbmsoYW5jaG9yKSB7DQogICAg dmFyIHRuUmVmID0gbnVsbDsNCiAgICB2YXIgdG5OdW0gPSBudWxsOw0KICAgIGlm IChhbmNob3IgPT0gbnVsbCkgew0KICAgICAgICByZXR1cm47DQogICAgfQ0KICAg IHZhciBjaGlsZE5vZGVzID0gYW5jaG9yLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJT VVAiKTsNCiAgICBmb3IgKGkgPSAwOyBpIDwgY2hpbGROb2Rlcy5sZW5ndGg7IGkr Kykgew0KICAgICAgICB0blJlZiA9IGNoaWxkTm9kZXNbaV0uZ2V0QXR0cmlidXRl KCJ0biIpOw0KICAgICAgICBpZiAodG5SZWYgIT0gbnVsbCkgew0KICAgICAgICAg ICAgdG5OdW0gPSBjaGlsZE5vZGVzW2ldLmlubmVySFRNTDsNCiAgICAgICAgfQ0K ICAgIH0NCiAgICBpZiAodG5OdW0gIT0gbnVsbCAmJiB0bk51bS5sZW5ndGggPiAw ICYmICEoL1xELy50ZXN0KHRuTnVtKSkpIHsNCiAgICAgICAgZG9jdW1lbnQubG9j YXRpb24uaHJlZiA9ICIjdG4iICsgdG5OdW07DQogICAgICAgIHJldHVybjsNCiAg ICB9DQogICAgaWYgKHRuUmVmICE9IG51bGwpIHsNCiAgICAgICAgd2luZG93Lm9w ZW4obV9nbG9zc2FyeVVSTEJhc2UgKyAiP2Y9IiArIHRuUmVmLCAndG53aW4nLCAn V0lEVEg9NDAwLEhFSUdIVD0zMDAsUkVTSVpBQkxFPVlFUyxTQ1JPTExCQVJTPVlF UyxTVEFUVVM9Tk8sVE9PTEJBUj1OTyxMRUZUPTAsVE9QPTAnKTsNCiAgICB9DQog ICAgcmV0dXJuOw0KfQ0KZnVuY3Rpb24gY3RhYkluaXQoKSB7DQogICAgdmFyIHRk cyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJURCIpOw0KICAgIGZv ciAodmFyIGkgPSAwOyBpIDwgdGRzLmxlbmd0aDsgaSsrKSB7DQogICAgICAgIGlm ICh0ZHNbaV0uY2xhc3NOYW1lID09ICJ1bnNlbGVjdGVkIiB8fCB0ZHNbaV0uY2xh c3NOYW1lID09ICJjdXJyZW50Iikgew0KDQogICAgICAgICAgICB2YXIgZm9udCA9 IGdldGNoaWxkYnlUYWdOYW1lKHRkc1tpXSwgIkZPTlQiKTsNCiAgICAgICAgICAg IGlmIChmb250ICE9IG51bGwgJiYgZm9udC5vZmZzZXRIZWlnaHQgPiAyMCkgew0K DQogICAgICAgICAgICAgICAgZm9udC5zdHlsZS5mb250V2VpZ2h0ID0gIm5vcm1h bCI7DQogICAgICAgICAgICAgICAgaWYgKGZvbnQub2Zmc2V0SGVpZ2h0ID4gMjAp IHsNCiAgICAgICAgICAgICAgICAgICAgZm9udC5zdHlsZS5kaXNwbGF5ID0gImJs b2NrIjsNCiAgICAgICAgICAgICAgICAgICAgZm9udC5zdHlsZS53aWR0aCA9IGZv bnQub2Zmc2V0V2lkdGggKyAicHgiOw0KICAgICAgICAgICAgICAgIH0NCg0KICAg ICAgICAgICAgfQ0KDQogICAgICAgIH0NCg0KICAgIH0NCg0KICAgIHZhciB0YWJE aXYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY250VGFic0NudCIpOw0KICAg IGlmICh0YWJEaXYgIT0gbnVsbCkgew0KICAgICAgICBjb250YWluZXIgPSBwYXJl bnROb2RlKHRhYkRpdik7DQogICAgICAgIGlmIChjb250YWluZXIgIT0gbnVsbCkg ew0KICAgICAgICAgICAgJGooIiNjbnRUYWJzQ250IikuY3NzKCJ3aWR0aCIsIGNv bnRhaW5lci5zY3JvbGxXaWR0aCk7DQogICAgICAgIH0NCiAgICB9DQp9DQoNCmZ1 bmN0aW9uIGdldGNoaWxkYnlUYWdOYW1lKG5vZGUsIHRhZykgew0KDQogICAgaWYg KG5vZGUuY2hpbGROb2RlcyA9PSBudWxsKSB7DQogICAgICAgIHJldHVybiBudWxs Ow0KICAgIH0NCiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5vZGUuY2hpbGROb2Rl cy5sZW5ndGg7IGkrKykgew0KICAgICAgICBpZiAobm9kZS5jaGlsZE5vZGVzW2ld LnRhZ05hbWUgPT0gdGFnKSB7DQogICAgICAgICAgICByZXR1cm4gbm9kZS5jaGls ZE5vZGVzW2ldOw0KICAgICAgICB9DQogICAgICAgIHZhciBtYXRjaCA9IGdldGNo aWxkYnlUYWdOYW1lKG5vZGUuY2hpbGROb2Rlc1tpXSwgdGFnKTsNCiAgICAgICAg aWYgKG1hdGNoICE9IG51bGwpIHsNCiAgICAgICAgICAgIHJldHVybiBtYXRjaDsN CiAgICAgICAgfQ0KICAgIH0NCg0KfQ0KZnVuY3Rpb24gaW50aUFqU2hDbnQoKSB7 DQogICAgY3RhYkluaXQoKTsNCiAgICBpZiAodHlwZW9mIChUVEhpZGUpICE9ICJ1 bmRlZmluZWQiKSB7DQogICAgICAgIFRUSGlkZSgpOw0KICAgIH0NCiAgICAvLyAg ICBpZiAoIHR5cGVvZihJbml0TGV4aWNvbikgIT0gInVuZGVmaW5lZCIgKQ0KICAg IC8vICAgIHsNCiAgICAvLyAgICAgICAgSW5pdExleGljb24oKTsNCiAgICAvLyAg ICB9DQogICAgZmluZEZvcm0oKTsNCiAgICBSZXNpemUoKTsNCiAgICBSZW5kZXJG bGFzaCgpOw0KICAgIGFsaWduTWFzdGhlYWQoKTsNCn0NCg0KDQoNCmZ1bmN0aW9u IGFkZEJhY2tCdXR0b25IaXN0b3J5KGZpZCwgY2lkLCB1cmwpIHsNCiAgICBpZiAo ZG9jdW1lbnQgJiYgZG9jdW1lbnQuYm9keSkgew0KICAgICAgICBpZiAodHlwZW9m KGZpZCkgIT0gInVuZGVmaW5lZCIgfHwgdHlwZW9mKGNpZCkgIT0gInVuZGVmaW5l ZCIgfHwgdHlwZW9mKHVybCkgIT0gInVuZGVmaW5lZCIpIHsNCiAgICAgICAgICAg IHZhciBiY2tmcm0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiQmFja0J1dHRv bkhpc3RvcnlGcmFtZSIpOw0KICAgICAgICAgICAgdmFyIHRzID0gbmV3IERhdGUo KTsNCiAgICAgICAgICAgIGlmICghYmNrZnJtKSB7DQogICAgICAgICAgICAgICAg YmNrZnJtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaWZyYW1lIik7DQogICAg ICAgICAgICAgICAgYmNrZnJtLmlkID0gIkJhY2tCdXR0b25IaXN0b3J5RnJhbWUi Ow0KICAgICAgICAgICAgICAgIGJja2ZybS5uYW1lID0gIkJhY2tCdXR0b25IaXN0 b3J5RnJhbWUiOw0KICAgICAgICAgICAgICAgIGJja2ZybS5zdHlsZS5ib3JkZXIg PSAiMHB4IjsNCiAgICAgICAgICAgICAgICBiY2tmcm0uc3R5bGUud2lkdGggPSAi MHB4IjsNCiAgICAgICAgICAgICAgICBiY2tmcm0uc3R5bGUuaGVpZ2h0ID0gIjBw eCI7DQogICAgICAgICAgICAgICAgYmNrZnJtLnNyYyA9IG1faW1nUGZ4ICsgIi9p bWFnZXMvZ2xvYmFsL2FqYXgvYmFja2J1dHRvbmhpc3RvcnkuaHRtP2ZpZCZjaWQ9 JnVybD0mdHM9IiArIHRzLmdldERhdGUoKTsNCiAgICAgICAgICAgICAgICBkb2N1 bWVudC5ib2R5LmFwcGVuZENoaWxkKGJja2ZybSk7DQogICAgICAgICAgICAgICAg c2V0VGltZW91dCgiYWRkQmFja0J1dHRvbkhpc3RvcnkoJyIgKyBmaWQgKyAiJywg JyIgKyBjaWQgKyAiJywgJyIgKyB1cmwgKyAiJykiLCAxMDAwKTsNCiAgICAgICAg ICAgIH0NCiAgICAgICAgICAgIGVsc2Ugew0KICAgICAgICAgICAgICAgIGJja2Zy bS5zcmMgPSBtX2ltZ1BmeCArICIvaW1hZ2VzL2dsb2JhbC9hamF4L2JhY2tidXR0 b25oaXN0b3J5Lmh0bT9maWQ9IiArIGZpZCArICImY2lkPSIgKyBjaWQgKyAiJnVy bD0iICsgZW5jb2RlVVJJQ29tcG9uZW50KHVybCkgKyAiJnRzPSIgKyB0cy5nZXRE YXRlKCk7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICB9DQogICAgZWxz ZSB7DQogICAgICAgIHRyeSB7DQogICAgICAgICAgICBhZGRzUmVhZHkoYWRkQmFj a0J1dHRvbkhpc3RvcnkoZmlkLCBjaWQsIHVybCkpOw0KICAgICAgICB9DQogICAg ICAgIGNhdGNoIChlKQ0KICAgICAgICB7IH0NCiAgICB9DQp9DQp2YXIgbVRhYmxl ID0gbmV3IE9iamVjdCgpOw0KZnVuY3Rpb24gYWpTaG93KGZpZCwgY2lkLCB1cmws IGlzSGlzdG9yeSwgaXNJbkl0KSB7DQoNCiAgICAvL0ZvciByYXRpbmcgdGFiYnkg c3R1ZmYNCiAgICB2YXIgcmVnZXhTdHJpbmcgPSAiLz9+dGFiPVtcXHddKiZ+d3Nm PVtcXHddKiYiOw0KICAgIHVybCA9IHVybC5yZXBsYWNlKG5ldyBSZWdFeHAocmVn ZXhTdHJpbmcpLCAiIik7DQoNCiAgICBtX3ByaW50dmlld0hyZWYgPSB1cmwuc3Vi c3RyaW5nKDAsIHVybC5pbmRleE9mKCImfndzZiIpKTsNCiAgICB2YXIgdGFiRGl2 ID0gbnVsbDsNCiAgICB2YXIgdGFiTW9kZSA9IGZhbHNlOw0KICAgIGNvbnRhaW5l ciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGZpZCArICJfZnJtIik7DQogICAg aWYgKGNvbnRhaW5lciA9PSBudWxsKSB7DQogICAgICAgIHRhYkRpdiA9IGRvY3Vt ZW50LmdldEVsZW1lbnRCeUlkKCJjbnRUYWJzQ250Iik7DQogICAgICAgIGlmICh0 YWJEaXYgPT0gbnVsbCkgew0KICAgICAgICAgICAgcmV0dXJuOw0KICAgICAgICB9 DQogICAgICAgIGNvbnRhaW5lciA9IHBhcmVudE5vZGUodGFiRGl2KTsNCiAgICB9 DQogICAgZWxzZSB7DQogICAgICAgIGNvbnRpbmVyID0gZG9jdW1lbnQuZ2V0RWxl bWVudEJ5SWQoY2lkKTsNCiAgICB9DQoNCiAgICBpZiAoY29udGFpbmVyID09IG51 bGwpIHsNCiAgICAgICAgcmV0dXJuOw0KICAgIH0NCg0KICAgIGlmIChpc0luSXQp IHsNCiAgICAgICAgaWYgKGNvbnRhaW5lclsiaW5pdEhpc3RvcnkiXSkgew0KICAg ICAgICAgICAgY29udGFpbmVyLmlubmVySFRNTCA9IGNvbnRhaW5lclsiaW5pdEhp c3RvcnkiXTsgLy8gTG9hZCBJbml0aWFsIFN0YXRlDQogICAgICAgICAgICBpbnRp QWpTaENudCgpOw0KICAgICAgICB9DQogICAgICAgIHJldHVybjsNCiAgICB9DQoN CiAgICBpZiAoY29udGFpbmVyW2NpZF0gPT0gIi4uLiIpIHsNCiAgICAgICAgcmV0 dXJuOw0KICAgIH0NCg0KICAgIGlmIChpc0hpc3RvcnkpIHsNCiAgICAgICAgdXJs ID0gZGVjb2RlVVJJQ29tcG9uZW50KHVybCk7DQogICAgfQ0KDQogICAgaWYgKGNv bnRhaW5lcltjaWRdICE9IG51bGwpIHsNCg0KICAgICAgICAkaihjb250YWluZXIp Lmh0bWwoY29udGFpbmVyW2NpZF0pOw0KICAgICAgICAkaigiI2NudFRhYnNDbnQi KS5jc3MoIndpZHRoIiwgY29udGFpbmVyLnNjcm9sbFdpZHRoKTsNCiAgICAgICAg aWYgKCFpc0hpc3RvcnkpIHsNCiAgICAgICAgICAgIGFkZEJhY2tCdXR0b25IaXN0 b3J5KGZpZCwgY2lkLCB1cmwpOw0KICAgICAgICB9DQogICAgICAgIGludGlBalNo Q250KCk7DQogICAgICAgIHZhciBwYXRoID0gbVRhYmxlW2NpZF07DQogICAgICAg IHNldElFV2F0Y2hNZXRyaWNzUGF0aChwYXRoKTsNCiAgICAgICAgdHJhY2tUYWJN ZXRyaWNzKCk7DQogICAgICAgIHJldHVybjsNCiAgICB9DQoNCiAgICBpZiAodGFi RGl2ICE9IG51bGwpIHsNCiAgICAgICAgdGFiRGl2LnN0eWxlLmJhY2tncm91bmRD b2xvciA9ICIjZmJmYmZiIjsNCiAgICB9DQoNCiAgICB2YXIgc3luY09iaiA9IGdl dFhNTEhUVFBPYmooKTsNCiAgICBpZiAoc3luY09iaiA9PSBudWxsIHx8IHN5bmNP YmogPT0gdW5kZWZpbmVkKSB7DQogICAgICAgIHZhciBwb3MgPSB1cmwuaW5kZXhP ZigifndzZiIpOw0KICAgICAgICBpZiAocG9zID4gMCkgew0KICAgICAgICAgICAg dXJsID0gdXJsLnN1YnN0cmluZygwLCBwb3MpOw0KICAgICAgICB9DQogICAgICAg IGRvY3VtZW50LmxvY2F0aW9uLmhyZWYgPSB1cmw7DQogICAgICAgIHJldHVybjsN CiAgICB9DQoNCiAgICAkai5hamF4KHsNCiAgICAgICAgdHlwZTogIkdFVCIsDQog ICAgICAgIHVybDogdXJsLA0KICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbihkYXRh KSB7DQoNCiAgICAgICAgICAgIGFkZEJhY2tCdXR0b25IaXN0b3J5KGZpZCwgY2lk LCB1cmwpOw0KICAgICAgICAgICAgaWYgKGNvbnRhaW5lclsiaW5pdEhpc3Rvcnki XSA9PSBudWxsKSB7DQogICAgICAgICAgICAgICAgY29udGFpbmVyWyJpbml0SGlz dG9yeSJdID0gY29udGFpbmVyLmlubmVySFRNTDsgLy8gU3RvcmUgSW5pdGlhbCBT dGF0ZSBmb3IgSGlzdG9yeQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgY29u dGFpbmVyW2NpZF0gPSBkYXRhOw0KICAgICAgICAgICAgJGooY29udGFpbmVyKS5o dG1sKGRhdGEpOw0KDQogICAgICAgICAgICBpbnRpQWpTaENudCgpOw0KICAgICAg ICB9LA0KICAgICAgICBjb21wbGV0ZTogZnVuY3Rpb24oeG1sLCB0ZXh0U3RhdHVz KSB7DQogICAgICAgICAgICBpZiAoeG1sICE9IHVuZGVmaW5lZCkgew0KICAgICAg ICAgICAgICAgIHZhciBwYXRoID0geG1sLmdldFJlc3BvbnNlSGVhZGVyKCJNRVRS SUNTUEFUSCIpOw0KICAgICAgICAgICAgICAgIGlmIChwYXRoICE9IHVuZGVmaW5l ZCkgew0KICAgICAgICAgICAgICAgICAgICBtVGFibGVbY2lkXSA9IHBhdGg7DQog ICAgICAgICAgICAgICAgICAgIHNldElFV2F0Y2hNZXRyaWNzUGF0aChwYXRoKTsN CiAgICAgICAgICAgICAgICAgICAgdHJhY2tUYWJNZXRyaWNzKCk7DQogICAgICAg ICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICRqKCIjY250VGFic0NudCIpLmNz cygid2lkdGgiLCBjb250YWluZXIuc2Nyb2xsV2lkdGgpOw0KICAgICAgICAgICAg fQ0KICAgICAgICB9DQogICAgfSk7DQp9DQoNCmZ1bmN0aW9uIHNldElFV2F0Y2hN ZXRyaWNzUGF0aChwYXRoKSB7DQogICAgdmFyIG1PYmogPSAkaigiaGVhZCBNRVRB W0BuYW1lPSdNRVRSSUNTUEFUSCddIik7DQogICAgaWYgKG1PYmogIT0gdW5kZWZp bmVkKSB7DQogICAgICAgIHRyeSB7DQogICAgICAgICAgICBtT2JqLmF0dHIoImNv bnRlbnQiLCAiJmVpd2F0Y2g9IiArIHBhdGgpOw0KICAgICAgICB9DQogICAgICAg IGNhdGNoIChlKSB7IH0NCiAgICB9DQp9DQoNCg0KZnVuY3Rpb24gZmluZEZvcm0o KSB7DQogICAgdmFyIGZvcm1JZHggPSAwOw0KICAgIGZvciAoZm9ybUlkeCA9IDA7 IGZvcm1JZHggPCBkb2N1bWVudC5mb3Jtcy5sZW5ndGg7IGZvcm1JZHgrKykgew0K ICAgICAgICB2YXIgdXJsVGFicyA9IGRvY3VtZW50LmZvcm1zW2Zvcm1JZHhdLmFj dGlvbi50b0xvd2VyQ2FzZSgpOw0KICAgICAgICBpZiAodXJsVGFicy5pbmRleE9m KCd+d3NmPXRhYnMnKSAhPSAtMSkgew0KICAgICAgICAgICAgZG9jdW1lbnQuZm9y bXNbZm9ybUlkeF0uYWN0aW9uID0gdXJsVGFicy5yZXBsYWNlKCImfndzZj10YWJz IiwgIiIpOw0KICAgICAgICB9DQogICAgfQ0KfQ0KdmFyIGFqYXhhdmFpbGFibGUg PSAoZ2V0WE1MSFRUUE9iaigpICE9IHVuZGVmaW5lZCk7DQp2YXIgeG1scmVxcyA9 IHVuZGVmaW5lZDsNCi8qIE9ubGluZU9waW5pb24gKFMzdCwxNDI0YikgKi8NCi8q IFRoaXMgcHJvZHVjdCBhbmQgb3RoZXIgcHJvZHVjdHMgb2YgT3BpbmlvbkxhYiwg SW5jLiBhcmUgcHJvdGVjdGVkIGJ5IFUuUy4gUGF0ZW50IE5vLiA2NjA2NTgxLCA2 NDIxNzI0LCA2Nzg1NzE3IEIxIGFuZCBvdGhlciBwYXRlbnRzIHBlbmRpbmcuICov DQoNCnZhciBjdXN0b21fdmFyLCBfc3AgPSAnJTNBXFwvXFwvJywgX3JwID0gJyUz QS8vJywgX3BvRSA9IDAuMCwgX3BvWCA9IDAuMCwgX3NIID0gc2NyZWVuLmhlaWdo dCwgX2QgPSBkb2N1bWVudCwgX3cgPSB3aW5kb3csIF9odCA9IGVzY2FwZShfdy5s b2NhdGlvbi5ocmVmKSwgX2hyID0gX2QucmVmZXJyZXIsIF90bSA9IChuZXcgRGF0 ZSgpKS5nZXRUaW1lKCksIF9rcCA9IDAsIF9zVyA9IHNjcmVlbi53aWR0aDsgX2Qu b25rZXlwcmVzcyA9IF9mSzsgZnVuY3Rpb24gX2ZLKF9lKSB7IGlmICghX2UpIF9l ID0gX3cuZXZlbnQ7IHZhciBfayA9ICh0eXBlb2YgX2Uud2hpY2ggPT0gJ251bWJl cicpID8gX2Uud2hpY2ggOiBfZS5rZXlDb2RlOyBpZiAoKF9rcCA9PSAxNSAmJiBf ayA9PSAxMikpIF93Lm9wZW4oJ2h0dHBzOi8vc2VjdXJlLm9waW5pb25sYWIuY29t L3BhZ2V2aWV3ZXIvcHZfY29udHJvbGJvYXJkLmh0bWw/dXJsPScgKyBfZkMoX2h0 KSwgJ1BhZ2VWaWV3ZXInLCAnaGVpZ2h0PTUyOSx3aWR0aD03MDUsc2NyZWVuWD0n ICsgKChfc1cgLSA3MDUpIC8gMikgKyAnLHNjcmVlblk9JyArICgoX3NIIC0gNTI5 KSAvIDIpICsgJyx0b3A9JyArICgoX3NIIC0gNTI5KSAvIDIpICsgJyxsZWZ0PScg KyAoKF9zVyAtIDcwNSkgLyAyKSArICcsc3RhdHVzPXllcyx0b29sYmFyPW5vLG1l bnViYXI9bm8sbG9jYXRpb249bm8scmVzaXphYmxlPXllcycpOyBfa3AgPSBfayB9 OyBmdW5jdGlvbiBfZkMoX3UpIHsgX2FUID0gX3NwICsgJyxcXC8sXFwuLC0sXywn ICsgX3JwICsgJywlMkYsJTJFLCUyRCwlNUYnOyBfYUEgPSBfYVQuc3BsaXQoJywn KTsgZm9yIChpID0gMDsgaSA8IDU7IGkrKykgeyBldmFsKCdfdT1fdS5yZXBsYWNl KC8nICsgX2FBW2ldICsgJy9nLF9hQVtpKzVdKScpIH0gcmV0dXJuIF91IH07IGZ1 bmN0aW9uIE9fTEMoKSB7IF93Lm9wZW4oJ2h0dHA6Ly9jY2MwMS5vcGluaW9ubGFi LmNvbS9jb21tZW50X2NhcmQuYXNwP3RpbWUxPScgKyBfdG0gKyAnJnRpbWUyPScg KyAobmV3IERhdGUoKSkuZ2V0VGltZSgpICsgJyZwcmV2PScgKyBfZkMoZXNjYXBl KF9ocikpICsgJyZyZWZlcmVyPScgKyBfZkMoX2h0KSArICcmaGVpZ2h0PScgKyBf c0ggKyAnJndpZHRoPScgKyBfc1cgKyAnJmN1c3RvbV92YXI9JyArIGN1c3RvbV92 YXIsICdjb21tZW50cycsICd3aWR0aD01MzUsaGVpZ2h0PTE5MixzY3JlZW5YPScg KyAoKF9zVyAtIDUzNSkgLyAyKSArICcsc2NyZWVuWT0nICsgKChfc0ggLSAxOTIp IC8gMikgKyAnLHRvcD0nICsgKChfc0ggLSAxOTIpIC8gMikgKyAnLGxlZnQ9JyAr ICgoX3NXIC0gNTM1KSAvIDIpICsgJyxyZXNpemFibGU9eWVzLGNvcHloaXN0b3J5 PXllcyxzY3JvbGxiYXJzPW5vJykgfTsgZnVuY3Rpb24gX2ZQZSgpIHsgaWYgKE1h dGgucmFuZG9tKCkgPj0gMS4wIC0gX3BvRSkgeyBPX0xDKCk7IF9wb1ggPSAwLjAg fSB9OyBmdW5jdGlvbiBfZlB4KCkgeyBpZiAoTWF0aC5yYW5kb20oKSA+PSAxLjAg LSBfcG9YKSBPX0xDKCkgfTsgd2luZG93Lm9udW5sb2FkID0gX2ZQeDsgZnVuY3Rp b24gT19Hb1QoX3ApIHsgX2Qud3JpdGUoJzxhIGhyZWY9XCdqYXZhc2NyaXB0Ok9f TEMoKVwnPicgKyBfcCArICc8L2E+Jyk7IF9mUGUoKSB9DQpmdW5jdGlvbiBkb09w aW9ubGFicyhfcCkgew0KICAgIHZhciBtZXRyaWNQYXRoID0gbnVsbDsNCiAgICB2 YXIgbWV0YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiTUVUQSIp Ow0KICAgIHZhciBfbEcgPSBwYWdlTGFuZyArICItIiArIHBhZ2VDbnR5ICsgIi4i Ow0KICAgIGlmIChwYWdlTGFuZyA9PSAianAiKSB7DQogICAgICAgIF9sRyA9ICJq YS1KUC4iOw0KICAgIH0NCiAgICBlbHNlIGlmIChwYWdlTGFuZyA9PSAiZW4iKSB7 DQogICAgICAgIF9sRyA9ICIiOw0KICAgIH0NCiAgICBpZiAobWV0YXMgIT0gbnVs bCkgew0KICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbWV0YXMubGVuZ3RoOyBpKysp IHsNCiAgICAgICAgICAgIGlmIChtZXRhc1tpXS5uYW1lID09ICJNRVRSSUNTUEFU SCIpIHsNCiAgICAgICAgICAgICAgICBtZXRyaWNQYXRoID0gbWV0YXNbaV0uZ2V0 QXR0cmlidXRlKCJDT05URU5UIik7DQogICAgICAgICAgICAgICAgaWYgKG1ldHJp Y1BhdGggIT0gbnVsbCAmJiBtZXRyaWNQYXRoLmxlbmd0aCA+IDkpIHsNCiAgICAg ICAgICAgICAgICAgICAgbWV0cmljUGF0aCA9IG1ldHJpY1BhdGguc3Vic3RyaW5n KDkpOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBicmVhazsN CiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgIH0NCiAgICB2YXIgc3NpZCA9 IGdldENvb2tpZSgiU0lURVNFUlZFUiIpOw0KICAgIGlmIChzc2lkICE9IG51bGwg JiYgc3NpZC5sZW5ndGggPiAzKSB7DQogICAgICAgIHNzaWQgPSBzc2lkLnN1YnN0 cmluZygzKTsNCiAgICB9DQogICAgY3VzdG9tX3ZhciA9IG1ldHJpY1BhdGggKyAi fCIgKyBzc2lkICsgInwiICsgcGFnZVNlZzsNCiAgICBfcnAgPSAnJTNBLy8nICsg X2xHOw0KICAgIGlmIChfcCAhPSBudWxsKSB7DQogICAgICAgIE9fR29UKF9wKTsN CiAgICB9DQp9DQoNCmZ1bmN0aW9uIGRvSVBlcmNlcHRpb25zKHJhdGlvLCBqc0Zp bGUpIHsNCiAgICB2YXIgc3RyVVJMID0gZG9jdW1lbnQuVVJMOw0KICAgIHZhciBj b3VudHJ5ID0gIiI7DQogICAgdmFyIGxhbmd1YWdlID0gIiI7DQogICAgdmFyIHNl Z21lbnQgPSAiIjsNCiAgICB2YXIgZGVwYXJ0bWVudCA9ICIiOw0KDQogICAgY291 bnRyeSA9IGdldFF1ZXJ5VmFyaWFibGUoImMiKTsNCiAgICBjb3VudHJ5ID0gKGNv dW50cnkgPT0gbnVsbCB8fCBjb3VudHJ5ID09ICIiKSA/ICJ1cyIgOiBjb3VudHJ5 Ow0KICAgIGxhbmd1YWdlID0gZ2V0UXVlcnlWYXJpYWJsZSgibCIpOw0KICAgIGxh bmd1YWdlID0gKGxhbmd1YWdlID09IG51bGwgfHwgbGFuZ3VhZ2UgPT0gIiIpID8g ImVuIiA6IGxhbmd1YWdlOw0KICAgIHNlZ21lbnQgPSBnZXRRdWVyeVZhcmlhYmxl KCJzIik7DQogICAgc2VnbWVudCA9IChzZWdtZW50ID09IG51bGwgfHwgc2VnbWVu dCA9PSAiIikgPyAiYnNkIiA6IHNlZ21lbnQ7DQoNCiAgICBpZiAoc3RyVVJMLmlu ZGV4T2YoInN1cHBvcnQiKSAhPSAtMSkgew0KICAgICAgICBzZWdtZW50ID0gImRo cyI7DQogICAgICAgIGRlcGFydG1lbnQgPSAiX3N1cHBvcnQiOw0KICAgIH0NCiAg ICBlbHNlIHsNCiAgICAgICAgZGVwYXJ0bWVudCA9ICIiOw0KICAgIH0NCiAgICB2 YXIgcmFuZG9tTnVtYmVyID0gTWF0aC5mbG9vcigoTWF0aC5yYW5kb20oKSAqIDEw MCkpOw0KICAgIGlmIChyYW5kb21OdW1iZXIgPCByYXRpbykgew0KICAgICAgICBp ZiAoc3RyVVJMLmluZGV4T2YoImRlbGwuY29tL3BvcnRhbCIpICE9IC0xKSB7DQog ICAgICAgICAgICBsb2FkSVBTY3JpcHQoanNGaWxlICsgJ2lwX0xheWVyX0ludml0 YXRpb25fNTkzLmFzcHg/Yz0nICsgY291bnRyeSArICcmbD0nICsgbGFuZ3VhZ2Up Ow0KICAgICAgICB9DQogICAgICAgIGVsc2Ugew0KICAgICAgICAgICAgbG9hZElQ U2NyaXB0KGpzRmlsZSArICd3djM1OXJlZGlyZWN0XycgKyBjb3VudHJ5ICsgJ18n ICsgbGFuZ3VhZ2UgKyAiXyIgKyBzZWdtZW50ICsgZGVwYXJ0bWVudCArICcuanMn KTsNCiAgICAgICAgfQ0KICAgIH0NCn0NCg0KZnVuY3Rpb24gbG9hZElQU2NyaXB0 KHBhdGgpIHsNCiAgICB2YXIgaGVhZCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU YWdOYW1lKCJoZWFkIilbMF07DQogICAgc2NyaXB0ID0gZG9jdW1lbnQuY3JlYXRl RWxlbWVudCgnc2NyaXB0Jyk7DQogICAgc2NyaXB0LnR5cGUgPSAidGV4dC9qYXZh c2NyaXB0IjsNCiAgICBzY3JpcHQuZGVmZXIgPSAiZGVmZXIiOw0KICAgIHNjcmlw dC5zcmMgPSBwYXRoOw0KICAgIGhlYWQuYXBwZW5kQ2hpbGQoc2NyaXB0KTsNCn0N Cg0KLy9zdGFydCBvZiBwcm9tbyBjb21wYXJlIHJlaW52ZW50aW9uDQoNCmZ1bmN0 aW9uIFNldFByb2R1Y3RTdHlsZShwcm9kdWN0cywgc3R5bGUpIHsNCiAgICBmb3Ig KHZhciBpID0gMDsgaSA8IHByb2R1Y3RzLmxlbmd0aDsgaSsrKSB7DQogICAgICAg IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHByb2R1Y3RzW2ldKS5jbGFzc05hbWUg PSBzdHlsZTsNCiAgICB9DQp9DQpmdW5jdGlvbiBQcm9kdWN0c09uTW91c2VPdmVy KHByb2R1Y3RzKSB7DQogICAgdmFyIHN0eWxlID0gJyBwYXJhX3NtYWxsIHByb2R1 Y3RfaGlnaGxpZ2h0X2JhY2tncm91bmRfaW1hZ2UgcHJvZHVjdF9ib3JkZXJfZ3Jh eSBwcm9kdWN0X2RpdiAnOw0KICAgIFNldFByb2R1Y3RTdHlsZShwcm9kdWN0cywg c3R5bGUpOw0KfQ0KDQpmdW5jdGlvbiBQcm9kdWN0c09uTW91c2VPdXQocHJvZHVj dHMpIHsNCiAgICB2YXIgc3R5bGUgPSAnIHBhcmFfc21hbGwgcHJvZHVjdF9ib3Jk ZXJfd2hpdGUgcHJvZHVjdF9kaXYgJzsNCiAgICBTZXRQcm9kdWN0U3R5bGUocHJv ZHVjdHMsIHN0eWxlKTsNCn0NCg0KZnVuY3Rpb24gU2V0UHJvbW9TdHlsZShwcm9t b3MsIHBvc2l0aW9ucywgcHJvbW9TdHlsZSwgdGl0bGVTdHlsZSwgcHJvbW9QZXJS b3cpIHsNCiAgICB2YXIgdGVtcCA9ICcnOw0KDQogICAgZm9yICh2YXIgaSA9IDA7 IGkgPCBwcm9tb3MubGVuZ3RoOyBpKyspIHsNCiAgICAgICAgdGVtcCArPSBwcm9t b1N0eWxlOw0KDQogICAgICAgIGlmICgocG9zaXRpb25zW2ldICUgcHJvbW9QZXJS b3cpID09IDEpIHsNCiAgICAgICAgICAgIHRlbXAgKz0gIiBwcm9tb19ib3JkZXJf bGVmdCAiOw0KICAgICAgICB9DQogICAgICAgIGlmIChwb3NpdGlvbnNbaV0gPD0g cHJvbW9QZXJSb3cpIHsNCiAgICAgICAgICAgIHRlbXAgKz0gIiBwcm9tb19ib3Jk ZXJfdG9wICI7DQogICAgICAgIH0NCg0KICAgICAgICBkb2N1bWVudC5nZXRFbGVt ZW50QnlJZChwcm9tb3NbaV0pLmNsYXNzTmFtZSA9IHRlbXA7DQogICAgICAgIGRv Y3VtZW50LmdldEVsZW1lbnRCeUlkKHByb21vc1tpXS5yZXBsYWNlKCdfcHJvbW8n LCAnX3Byb21vX3RpdGxlJykpLmNsYXNzTmFtZSA9IHRpdGxlU3R5bGU7DQogICAg ICAgIHRlbXAgPSAnJzsNCiAgICB9DQp9DQpmdW5jdGlvbiBQcm9tb3NPbk1vdXNl T3Zlcihwcm9tb3MsIHBvc2l0aW9ucywgcHJvbW9QZXJSb3cpIHsNCiAgICB2YXIg cHJvbW9TdHlsZSA9ICcgcGFyYV9zbWFsbCBwcm9tbyBwcm9tb19ib3JkZXIgcHJv bW9faGlnaGxpZ2h0X2JhY2tncm91bmRfY29sb3IgJzsNCiAgICB2YXIgdGl0bGVT dHlsZSA9ICdsbmtfcHJvbW9fd2hpdGUnOw0KICAgIFNldFByb21vU3R5bGUocHJv bW9zLCBwb3NpdGlvbnMsIHByb21vU3R5bGUsIHRpdGxlU3R5bGUsIHByb21vUGVy Um93KTsNCn0NCg0KZnVuY3Rpb24gUHJvbW9zT25Nb3VzZU91dChwcm9tb3MsIHBv c2l0aW9ucywgcHJvbW9QZXJSb3cpIHsNCiAgICB2YXIgcHJvbW9TdHlsZSA9ICcg cGFyYV9zbWFsbCBwcm9tbyBwcm9tb19ib3JkZXIgcHJvbW9fYmFja2dyb3VuZF9j b2xvciAnOw0KICAgIHZhciB0aXRsZVN0eWxlID0gJ3Byb21vX2NvbXBhcmVfcHJv bW9fdGl0bGUnOw0KICAgIFNldFByb21vU3R5bGUocHJvbW9zLCBwb3NpdGlvbnMs IHByb21vU3R5bGUsIHRpdGxlU3R5bGUsIHByb21vUGVyUm93KTsNCn0NCg0KZnVu Y3Rpb24gUmVzaXplKCkgew0KICAgIHZhciBvYmogPSBkb2N1bWVudC5nZXRFbGVt ZW50QnlJZCgnc2NyaXB0cGFyYW1zJyk7DQogICAgdmFyIHBybyA9IGRvY3VtZW50 LmdldEVsZW1lbnRCeUlkKCdwcm9tb2NvbXBhcmVfcHJvbW9zJyk7DQogICAgdmFy IHByb1dpZHRoID0gMDsNCiAgICBpZiAocHJvICE9IG51bGwpIHsNCiAgICAgICAg cHJvV2lkdGggPSBwcm8ub2Zmc2V0V2lkdGg7DQogICAgfQ0KDQogICAgaWYgKG9i aiAhPSBudWxsKSB7DQogICAgICAgIHZhciBwcm9kdWN0U3RyaW5nID0gb2JqLnZh bHVlOw0KICAgICAgICB2YXIgcHJvZHVjdHMgPSBwcm9kdWN0U3RyaW5nLnNwbGl0 KCIsIik7DQoNCiAgICAgICAgdmFyIGk7DQogICAgICAgIHZhciBtYXhEZXNjSGVp Z2h0ID0gMDsNCiAgICAgICAgdmFyIG1heE5hbWVIZWlnaHQgPSAwOw0KICAgICAg ICB2YXIgbWF4UHJpY2VIZWlnaHQgPSAwOw0KICAgICAgICB2YXIgdG90YWxXaWR0 aCA9IDA7DQoNCiAgICAgICAgZm9yIChpID0gMDsgaSA8IHByb2R1Y3RzLmxlbmd0 aDsgaSsrKSB7DQogICAgICAgICAgICBpZiAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5 SWQocHJvZHVjdHNbaV0ucmVwbGFjZSgnZGl2JywgJ2Rlc2MnKSkub2Zmc2V0SGVp Z2h0ID4gbWF4RGVzY0hlaWdodCkgew0KICAgICAgICAgICAgICAgIG1heERlc2NI ZWlnaHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChwcm9kdWN0c1tpXS5yZXBs YWNlKCdkaXYnLCAnZGVzYycpKS5vZmZzZXRIZWlnaHQ7DQogICAgICAgICAgICB9 DQoNCiAgICAgICAgICAgIGlmIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZChwcm9k dWN0c1tpXS5yZXBsYWNlKCdkaXYnLCAncHJpY2UnKSkub2Zmc2V0SGVpZ2h0ID4g bWF4UHJpY2VIZWlnaHQpIHsNCiAgICAgICAgICAgICAgICBtYXhQcmljZUhlaWdo dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHByb2R1Y3RzW2ldLnJlcGxhY2Uo J2RpdicsICdwcmljZScpKS5vZmZzZXRIZWlnaHQ7DQogICAgICAgICAgICB9DQog ICAgICAgICAgICBpZiAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQocHJvZHVjdHNb aV0ucmVwbGFjZSgnZGl2JywgJ25hbWUnKSkub2Zmc2V0SGVpZ2h0ID4gbWF4TmFt ZUhlaWdodCkgew0KICAgICAgICAgICAgICAgIG1heE5hbWVIZWlnaHQgPSBkb2N1 bWVudC5nZXRFbGVtZW50QnlJZChwcm9kdWN0c1tpXS5yZXBsYWNlKCdkaXYnLCAn bmFtZScpKS5vZmZzZXRIZWlnaHQ7DQogICAgICAgICAgICB9DQogICAgICAgICAg ICB0b3RhbFdpZHRoICs9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHByb2R1Y3Rz W2ldLnJlcGxhY2UoJ19kaXYnLCAnJykpLm9mZnNldFdpZHRoOw0KICAgICAgICB9 DQoNCiAgICAgICAgZm9yIChpID0gMDsgaSA8IHByb2R1Y3RzLmxlbmd0aDsgaSsr KSB7DQogICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChwcm9kdWN0 c1tpXS5yZXBsYWNlKCdkaXYnLCAnZGVzYycpKS5zdHlsZS5oZWlnaHQgPSBtYXhE ZXNjSGVpZ2h0Ow0KICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo cHJvZHVjdHNbaV0ucmVwbGFjZSgnZGl2JywgJ3ByaWNlJykpLnN0eWxlLmhlaWdo dCA9IG1heFByaWNlSGVpZ2h0Ow0KICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxl bWVudEJ5SWQocHJvZHVjdHNbaV0ucmVwbGFjZSgnZGl2JywgJ25hbWUnKSkuc3R5 bGUuaGVpZ2h0ID0gbWF4TmFtZUhlaWdodDsNCiAgICAgICAgfQ0KICAgICAgICB0 b3RhbFdpZHRoID0gdG90YWxXaWR0aCA+IHByb1dpZHRoID8gdG90YWxXaWR0aCA6 IHByb1dpZHRoOw0KICAgICAgICBpZiAodG90YWxXaWR0aCA+IDY5Nikgew0KICAg ICAgICAgICAgaWYgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbnRUYWJzQ250 JykgIT0gbnVsbCkgew0KICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1l bnRCeUlkKCdjbnRUYWJzQ250Jykuc3R5bGUud2lkdGggPSB0b3RhbFdpZHRoICsg NDA7IC8vNDAgaXMgdGhlIHNwYWNlcyBiZXR3ZWVuIHRoZSBwcm9kdWN0IGFuZCB0 YWIgY29udGVudCBib3JkZXIgb24gYm90aCBzaWRlcw0KICAgICAgICAgICAgfQ0K ICAgICAgICB9DQogICAgfQ0KfQ0KDQphZGRzUmVhZHkocHNJbml0KTsNCg0KZnVu Y3Rpb24gcHNJbml0KCkgew0KDQogICAgaWYgKHBhZ2VTZWcgPT0gImRocyIgJiYg cGFnZUNudHkgPT0gInVzIikgew0KICAgICAgICB2YXIgcGF0aCA9IG1faW1nUGZ4 ICsgIi9pbWFnZXMvZ2xvYmFsL2pzL3BzMmIuanMiOw0KICAgICAgICAvL3BhbnRz DQogICAgICAgIHZhciBoZWFkID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h bWUoImhlYWQiKVswXTsNCiAgICAgICAgaWYgKGhlYWQgIT0gbnVsbCkgew0KICAg ICAgICAgICAgdHJ5IHsNCiAgICAgICAgICAgICAgICB2YXIgc2NyaXB0ID0gZG9j dW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7DQogICAgICAgICAgICAgICAg c2NyaXB0LnR5cGUgPSAidGV4dC9qYXZhc2NyaXB0IjsNCiAgICAgICAgICAgICAg ICBzY3JpcHQuc3JjID0gcGF0aDsNCiAgICAgICAgICAgICAgICBoZWFkLmFwcGVu ZENoaWxkKHNjcmlwdCk7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBjYXRj aCAoZSkNCgkJICAgICAgICB7IH0NCiAgICAgICAgfQ0KICAgIH0NCg0KfQ0KDQov L2VuZCBvZiBwcm9tbyBjb21wYXJlIHJlaW52ZW50aW9uDQpmdW5jdGlvbiBkaXZG YWRlKGlkLCBzdGFydE9wYWMsIGVuZE9wYWMsIGluY09wYWMsIGZhZGVTcGVlZCwg dmFsaWRhdGUsIGNhbGxiYWNrKSAvLyBkaXYgbmFtZS9pZCwgc3RhcnQgb3BhY2l0 eSAlLCBlbmQgb3BhY2l0eSAlLCBvcGFjaXR5IGluY3JlbWVudCAlLCB0aW1lb3V0 IHNwZWVkLCB2YWxpZCBkaXYgdG90YWxseSBmYWRlZCBpbiBvciBvdXQsIGNhbGxi YWNrIGZ1bmN0aW9uDQp7DQogICAgdmFyIGRpdiA9IGRvY3VtZW50LmdldEVsZW1l bnRCeUlkKGlkKTsNCiAgICBpZiAodmFsaWRhdGUpIHsNCiAgICAgICAgaWYgKHN0 YXJ0T3BhYyA9PSAwICYmIGVuZE9wYWMgIT0gMCAmJiBkaXYuc3R5bGUuZGlzcGxh eSA9PSAiYmxvY2siKSB7DQogICAgICAgICAgICByZXR1cm47DQogICAgICAgIH0N CiAgICAgICAgaWYgKHN0YXJ0T3BhYyA9PSAxMDAgJiYgZW5kT3BhYyAhPSAxMDAg JiYgZGl2LnN0eWxlLmRpc3BsYXkgPT0gIm5vbmUiKSB7DQogICAgICAgICAgICBy ZXR1cm47DQogICAgICAgIH0NCiAgICB9DQogICAgZGl2LnN0eWxlLmZpbHRlciA9 ICJhbHBoYShvcGFjaXR5PSIgKyBzdGFydE9wYWMgKyAiKSI7DQogICAgdmFyIHRp bWVvdXRGYWRlID0gbnVsbDsNCiAgICBpZiAoZGl2KSB7DQogICAgICAgIGRpdi5z dHlsZS5maWx0ZXIgPSAiYWxwaGEob3BhY2l0eT0iICsgc3RhcnRPcGFjICsgIiki Ow0KICAgICAgICBkaXYuc3R5bGUub3BhY2l0eSA9IChzdGFydE9wYWMgLyAxMDAp Ow0KICAgICAgICBkaXYuc3R5bGUuZGlzcGxheSA9ICJibG9jayI7DQogICAgICAg IGlmIChzdGFydE9wYWMgPT0gZW5kT3BhYykgew0KICAgICAgICAgICAgZGl2LnN0 eWxlLmZpbHRlciA9ICJhbHBoYShvcGFjaXR5PSIgKyBlbmRPcGFjICsgIikiOw0K ICAgICAgICAgICAgZGl2LnN0eWxlLm9wYWNpdHkgPSAoZW5kT3BhYyAvIDEwMCk7 DQogICAgICAgICAgICBpZiAoZW5kT3BhYyA9PSAwKSB7DQogICAgICAgICAgICAg ICAgZGl2LnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7DQogICAgICAgICAgICB9DQog ICAgICAgICAgICBpZiAoY2FsbGJhY2spIHsNCiAgICAgICAgICAgICAgICBjYWxs YmFjaygpOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICAgIGVsc2Ug aWYgKHN0YXJ0T3BhYyA8IGVuZE9wYWMgJiYgc3RhcnRPcGFjICsgaW5jT3BhYyA8 IGVuZE9wYWMpIHsNCiAgICAgICAgICAgIHRpbWVvdXRGYWRlID0gc2V0VGltZW91 dCgiZGl2RmFkZSgnIiArIGlkICsgIicsICIgKyAoc3RhcnRPcGFjICsgaW5jT3Bh YykgKyAiLCAiICsgZW5kT3BhYyArICIsICIgKyBpbmNPcGFjICsgIiwgIiArIGZh ZGVTcGVlZCArICIsICIgKyB2YWxpZGF0ZSArICIsICIgKyBjYWxsYmFjayArICIp IiwgZmFkZVNwZWVkKTsNCiAgICAgICAgfQ0KICAgICAgICBlbHNlIGlmIChzdGFy dE9wYWMgPiBlbmRPcGFjICYmIHN0YXJ0T3BhYyAtIGluY09wYWMgPiBlbmRPcGFj KSB7DQogICAgICAgICAgICB0aW1lb3V0RmFkZSA9IHNldFRpbWVvdXQoImRpdkZh ZGUoJyIgKyBpZCArICInLCAiICsgKHN0YXJ0T3BhYyAtIGluY09wYWMpICsgIiwg IiArIGVuZE9wYWMgKyAiLCAiICsgaW5jT3BhYyArICIsICIgKyBmYWRlU3BlZWQg KyAiLCAiICsgdmFsaWRhdGUgKyAiLCAiICsgY2FsbGJhY2sgKyAiKSIsIGZhZGVT cGVlZCk7DQogICAgICAgIH0NCiAgICAgICAgZWxzZSB7DQogICAgICAgICAgICB0 aW1lb3V0RmFkZSA9IHNldFRpbWVvdXQoImRpdkZhZGUoJyIgKyBpZCArICInLCAi ICsgZW5kT3BhYyArICIsICIgKyBlbmRPcGFjICsgIiwgIiArIGluY09wYWMgKyAi LCAiICsgZmFkZVNwZWVkICsgIiwgIiArIHZhbGlkYXRlICsgIiwgIiArIGNhbGxi YWNrICsgIikiLCBmYWRlU3BlZWQpOw0KICAgICAgICB9DQogICAgfQ0KfQ0KDQpm dW5jdGlvbiBIaWRlUm93KGlkKSB7DQoNCiAgICBpZiAoZG9jdW1lbnQuZ2V0RWxl bWVudHNCeU5hbWUpIHsNCg0KICAgICAgICB2YXIgcm93cyA9IGRvY3VtZW50Lmdl dEVsZW1lbnRzQnlOYW1lKGlkKTsNCiAgICAgICAgaWYgKHJvd3MgJiYgcm93cy5s ZW5ndGggPiAwKSB7DQoNCiAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCByb3dz Lmxlbmd0aDsgaSsrKSB7DQoNCiAgICAgICAgICAgICAgICBpZiAocm93c1tpXS5z dHlsZS5kaXNwbGF5ID09ICJub25lIikgew0KICAgICAgICAgICAgICAgICAgICBy b3dzW2ldLnN0eWxlLmRpc3BsYXkgPSAiIjsNCiAgICAgICAgICAgICAgICB9DQog ICAgICAgICAgICAgICAgZWxzZSB7DQoNCiAgICAgICAgICAgICAgICAgICAgcm93 c1tpXS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOw0KICAgICAgICAgICAgICAgIH0N CiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgIH0NCg0KfQ0KYWRkc1JlYWR5 KGNvbXBhcmVDbGljayk7DQovL0NoZWNrYm94IGNsaWNrIA0KZnVuY3Rpb24gY29t cGFyZUNsaWNrKCkgew0KDQoNCiAgICAvL2VuYWJsZSBvciBkaXNhYmxlIHRoZSBj b21wYXJlIGJ1dHRvbiBiYXNlZCBvbiBudW1iZXIgb2Ygc2VsZWN0ZWQgcHJvZHMN CiAgICB2YXIgZW5hYmxlZCA9ICRqKCIuY29tcGFyZXByb2RjYltAY2hlY2tlZF0i KS5sZW5ndGggPiAwOw0KICAgICRqKCJzcGFuW0BuYW1lPWNvbXBhcmVfYnRuXSIp LmF0dHIoImRpc2FibGVkIiwgIWVuYWJsZWQpOw0KDQogICAgaWYgKGVuYWJsZWQp DQogICAgICAgICRqKCJzcGFuW0BuYW1lPWNvbXBhcmVfYnRuXSIpLmF0dHIoImNs YXNzIiwgImJ0bl9jb21wYXJlX25ldyIpOw0KICAgIGVsc2UNCiAgICAgICAgJGoo InNwYW5bQG5hbWU9Y29tcGFyZV9idG5dIikuYXR0cigiY2xhc3MiLCAiYnRuX2Nv bXBhcmVfbmV3RGlzYWJsZWQiKTsNCg0KICAgIC8vYXNzaWduIHRoZSBwcm9kdWN0 IHZhbHVlIGlmIHRoZSBjaGVja2JveCBpcyBjaGVja2VkDQogICAgdmFyIGNoayA9 IGRvY3VtZW50LmdldEVsZW1lbnRzQnlOYW1lKCJjb21wYXJlcHJvZHMiKTsNCiAg ICB2YXIgdXJsUGFnZUNoYW5nZSA9IGRvY3VtZW50LmxvY2F0aW9uOw0KDQogICAg Ly9hc3NpZ24gdGhlIHZhcmlhYmxlIG9uIHBhZ2UgaW5kZXggY2hhbmdlDQogICAg aWYgKCh1cmxQYWdlQ2hhbmdlLnRvU3RyaW5nKCkuaW5kZXhPZignJnNlbGVjdGVk UHJvZHM9JykgIT0gLTEpICYmIChtX25hdlBhZ2UgPT0gbnVsbCB8fCBtX25hdlBh Z2UubGVuZ3RoID09IDApKSB7DQogICAgICAgIHZhciBpbmRleCA9IHVybFBhZ2VD aGFuZ2UudG9TdHJpbmcoKS5pbmRleE9mKCcmc2VsZWN0ZWRQcm9kcz0nKTsNCiAg ICAgICAgaWYgKGluZGV4ICsgMTUgIT0gdXJsUGFnZUNoYW5nZS50b1N0cmluZygp Lmxlbmd0aCkgew0KICAgICAgICAgICAgbV9uYXZQYWdlID0gdXJsUGFnZUNoYW5n ZS50b1N0cmluZygpLnN1YnN0cmluZyhpbmRleCArIDE1KTsNCiAgICAgICAgfQ0K ICAgIH0NCiAgICANCiAgICAgICAgDQogICAgLy9sb29wIHRocnUgcHJvZHVjdHMg YW5kIGFkZCBvciByZW1vdmUgdGhlIHByb2R1Y3QgdmFsdWUgYmFzZWQgb24gdGhl IHByb2R1Y3Qgc2VsZWN0aW9uDQogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGsu bGVuZ3RoOyBpKyspIHsNCiAgICAgICAgaWYgKChtX25hdlBhZ2UgPT0gbnVsbCB8 fCBtX25hdlBhZ2UubGVuZ3RoID09IDApICYmIChjaGtbaV0uY2hlY2tlZCkpIHsN CiAgICAgICAgICAgIG1fbmF2UGFnZSA9IGNoa1tpXS52YWx1ZTsNCiAgICAgICAg fQ0KICAgICAgICBlbHNlIGlmICgobV9uYXZQYWdlICE9IG51bGwpICYmIChtX25h dlBhZ2UubGVuZ3RoID4gMCkpIHsNCg0KICAgICAgICAgICAgaWYgKChjaGtbaV0u Y2hlY2tlZCkgJiYgKENoZWNrRm9yRHVwbGljYXRlUHJvZHVjdChtX25hdlBhZ2Us IGNoa1tpXS52YWx1ZSkgPT0gZmFsc2UpKSB7DQogICAgICAgICAgICAgICAgbV9u YXZQYWdlID0gbV9uYXZQYWdlICsgJywnICsgY2hrW2ldLnZhbHVlOw0KICAgICAg ICAgICAgfQ0KICAgICAgICAgICAgZWxzZSBpZiAoKCEoY2hrW2ldLmNoZWNrZWQp KSAmJiAoQ2hlY2tGb3JEdXBsaWNhdGVQcm9kdWN0KG1fbmF2UGFnZSwgY2hrW2ld LnZhbHVlKSA9PSB0cnVlKSkgew0KICAgICAgICAgICAgICAgIGlmIChtX25hdlBh Z2UuaW5kZXhPZihjaGtbaV0udmFsdWUpID09IDApIHsNCiAgICAgICAgICAgICAg ICAgICAgbV9uYXZQYWdlID0gbV9uYXZQYWdlLnJlcGxhY2UoY2hrW2ldLnZhbHVl LCAnJyk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGVsc2Ug ew0KICAgICAgICAgICAgICAgICAgICBtX25hdlBhZ2UgPSBtX25hdlBhZ2UucmVw bGFjZSgnLCcgKyBjaGtbaV0udmFsdWUsICcnKTsNCiAgICAgICAgICAgICAgICB9 DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICB9DQogICAgLy9hcHBlbmQg dGhlIGpzIHZhcmlhYmxlIHZhbHVlIHRvIHRoZSBwYWdlbnVtYmVyIGhyZWZzDQog ICAgdmFyIGxpbmtzID0gJGooIi5QYWdpbmF0aW9uQ3RybHBhZ2VOdW1iZXIiKTsN CiAgICBpZiAobGlua3MubGVuZ3RoICE9IDApIHsNCiAgICAgICAgZm9yICh2YXIg aSA9IDA7IGkgPCBsaW5rcy5sZW5ndGg7IGkrKykgew0KICAgICAgICAgICAgaWYg KGxpbmtzW2ldLmhyZWYuaW5kZXhPZignamF2YXNjcmlwdDpuYXZQYWdlJykgPT0g LTEgJiYgbV9uYXZQYWdlICE9IG51bGwgJiYgbV9uYXZQYWdlLmxlbmd0aCA+IDAp IHsNCiAgICAgICAgICAgICAgICBpZiAobGlua3NbaV0uaHJlZi5pbmRleE9mKCcm c2VsZWN0ZWRQcm9kcz0nKSA9PSAtMSkgew0KICAgICAgICAgICAgICAgICAgICBs aW5rc1tpXS5ocmVmID0gbGlua3NbaV0uaHJlZiArICImc2VsZWN0ZWRQcm9kcz0i ICsgbV9uYXZQYWdlOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAg ICBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgdmFyIGluZGV4ID0gbGlua3Nb aV0uaHJlZi5pbmRleE9mKCcmc2VsZWN0ZWRQcm9kcz0nKTsNCiAgICAgICAgICAg ICAgICAgICAgdmFyIHJlcGxhY2UgPSBsaW5rc1tpXS5ocmVmLnN1YnN0cmluZyhp bmRleCk7DQogICAgICAgICAgICAgICAgICAgIGxpbmtzW2ldLmhyZWYgPSBsaW5r c1tpXS5ocmVmLnJlcGxhY2UocmVwbGFjZSwgJycpOw0KICAgICAgICAgICAgICAg ICAgICBsaW5rc1tpXS5ocmVmID0gbGlua3NbaV0uaHJlZiArICImc2VsZWN0ZWRQ cm9kcz0iICsgbV9uYXZQYWdlOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAg ICAgIH0NCiAgICAgICAgfQ0KICAgIH0NCg0KDQogICAgaWYgKG1fbmF2UGFnZSAh PSBudWxsKSB7DQogICAgICAgIGlmIChtX25hdlBhZ2UubGVuZ3RoID4gMCkgew0K ICAgICAgICAgICAgYXBwZW5kVXJsKCIuRmlyc3RQYWdlSW1nIik7DQogICAgICAg ICAgICBhcHBlbmRVcmwoIi5MYXN0UGFnZUltZyIpOw0KICAgICAgICAgICAgYXBw ZW5kVXJsKCIuUHJldkltZyIpOw0KICAgICAgICAgICAgYXBwZW5kVXJsKCIuTmV4 dEltZyIpOw0KICAgICAgICB9DQogICAgfQ0KDQoNCn0NCg0KZnVuY3Rpb24gQ2hl Y2tGb3JEdXBsaWNhdGVQcm9kdWN0KHByb2RzLCBwcm9kaWQpIHsNCg0KICAgIHZh ciBwcm9kYXJyID0gcHJvZHMuc3BsaXQoJywnKTsNCiAgICBpZiAocHJvZGFyci5s ZW5ndGggPT0gMSkgew0KICAgICAgICBpZiAocHJvZGFyclswXSA9PSBwcm9kaWQp IHsNCiAgICAgICAgICAgIHJldHVybiB0cnVlOw0KICAgICAgICB9DQogICAgICAg IGVsc2Ugew0KICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICB9DQog ICAgfQ0KICAgIGVsc2UgaWYgKHByb2RhcnIubGVuZ3RoID4gMSkgew0KICAgICAg ICBmb3IgKHZhciBpID0gMDsgaSA8IHByb2RhcnIubGVuZ3RoOyBpKyspIHsNCiAg ICAgICAgICAgIGlmIChwcm9kYXJyW2ldID09IHByb2RpZCkgew0KICAgICAgICAg ICAgICAgIHJldHVybiB0cnVlOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQog ICAgICAgIA0KICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgfQ0KDQp9DQoNCg0K Ly90byBhcHBlbmQgbV9uYXZQYWdlIHRvIHBhZ2luYXRpb24gYXJyb3cgaW1hZ2Vz DQpmdW5jdGlvbiBhcHBlbmRVcmwoY3NzQ2xhc3NOYW1lKSB7DQoNCiAgICB2YXIg bGluayA9ICRqKGNzc0NsYXNzTmFtZSk7DQogICAgaWYgKGxpbmtbMF0gIT0gdW5k ZWZpbmVkKSB7DQogICAgICAgIGlmIChsaW5rWzBdLmhyZWYuaW5kZXhPZignamF2 YXNjcmlwdDpuYXZQYWdlJykgPT0gLTEpIHsNCiAgICAgICAgICAgIGlmIChsaW5r WzBdLmhyZWYuaW5kZXhPZignJnNlbGVjdGVkUHJvZHM9JykgPT0gLTEpIHsNCiAg ICAgICAgICAgICAgICBsaW5rWzBdLmhyZWYgPSBsaW5rWzBdLmhyZWYgKyAiJnNl bGVjdGVkUHJvZHM9IiArIG1fbmF2UGFnZTsNCiAgICAgICAgICAgIH0NCiAgICAg ICAgICAgIGVsc2Ugew0KICAgICAgICAgICAgICAgIHZhciBpbmRleCA9IGxpbmtb MF0uaHJlZi5pbmRleE9mKCcmc2VsZWN0ZWRQcm9kcz0nKTsNCiAgICAgICAgICAg ICAgICB2YXIgcmVwbGFjZSA9IGxpbmtbMF0uaHJlZi5zdWJzdHJpbmcoaW5kZXgp Ow0KICAgICAgICAgICAgICAgIGxpbmtbMF0uaHJlZiA9IGxpbmtbMF0uaHJlZi5y ZXBsYWNlKHJlcGxhY2UsICcnKTsNCiAgICAgICAgICAgICAgICBsaW5rWzBdLmhy ZWYgPSBsaW5rWzBdLmhyZWYgKyAiJnNlbGVjdGVkUHJvZHM9IiArIG1fbmF2UGFn ZTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgfQ0KfQ0KDQoNCi8v Y29tcGFyZSBidXR0b24gY2xpY2sNCmZ1bmN0aW9uIGNvbXBhcmVJdGVtcygpIHsN Cg0KICAgIC8vdXNlZCB0aGUganMgdmFyaWFibGUgdG8gYXBwZW5kIHRoZSBzZWxl Y3RlZCBwcm9kcyB0byB1cmwNCiAgICBpZiAoIShtX25hdlBhZ2UgPT0gbnVsbCkp IHsNCiAgICAgICAgaWYgKG1fbmF2UGFnZS5sZW5ndGggPiAwKSB7DQogICAgICAg ICAgICBkb2N1bWVudC5sb2NhdGlvbiA9IG1fY29tcGFyZVVybCArICImcHJvZHM9 IiArIG1fbmF2UGFnZTsNCiAgICAgICAgfQ0KICAgIH0NCn0NCg0KZnVuY3Rpb24g VG9nZ2xlRXhwYW5kQ29sbGFwc2UoaWQpIHsNCg0KICAgIEhpZGVSb3coaWQpOw0K DQogICAgdmFyIGRpdnMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5TmFtZSgiZHlu YW1pY19jb21wYXJlX3RvZ2dsZSIpOw0KDQogICAgaWYgKGRpdnMgJiYgZGl2cy5s ZW5ndGggPiAwKSB7DQogICAgICAgIGZvciAoaSA9IDA7IGkgPCBkaXZzLmxlbmd0 aDsgaSsrKSB7DQoNCiAgICAgICAgICAgIGlmIChkaXZzW2ldLnN0eWxlLmRpc3Bs YXkgPT0gIm5vbmUiKSB7DQogICAgICAgICAgICAgICAgZGl2c1tpXS5zdHlsZS5k aXNwbGF5ID0gIiI7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBlbHNlIHsN Cg0KICAgICAgICAgICAgICAgIGRpdnNbaV0uc3R5bGUuZGlzcGxheSA9ICJub25l IjsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgIH0NCn0NCi8vbW92ZWQg dmFyIGluaXRpYWxpemF0aW9uIHRvIHRvcCBhcyBhIHdvcmthcm91bmQgZm9yIGVz Y2FwaW5nDQovLyB3aWVyZCBuZXRzY2FwZSBleGNlcHRpb24gb24gYWNjZXNzaW5n IHNjcmVlbi5zaXplDQovL3doaWNoIGNhdXNlcyB0aGlzIHZhciBub3QgdG8gYmUg aW5pdGlhbGl6ZWQNCg0KZnVuY3Rpb24gYWRkT25NZW51TG9hZChmbikgew0KICAg IGlmIChtX21lbnVsb2FkZWQpIHsNCiAgICAgICAgZm4oKTsNCiAgICB9DQogICAg ZWxzZSB7DQogICAgICAgIG1fbWVudWxvYWRbbV9tZW51bG9hZC5sZW5ndGhdID0g Zm47DQogICAgfQ0KfQ0KZnVuY3Rpb24gb25NZW51TG9hZCgpIHsNCiAgICBtX21l bnVsb2FkZWQgPSB0cnVlOw0KICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbV9tZW51 bG9hZC5sZW5ndGg7IGkrKykgew0KICAgICAgICBtX21lbnVsb2FkW2ldKCk7DQog ICAgfQ0KDQp9DQoNCmZ1bmN0aW9uIGFkZFNjcmlwdChqc2ZpbGUsIGNhbGxiYWNr KSB7DQogICAgdmFyIHBhdGggPSBtX2ltZ1BmeCArIGpzZmlsZTsNCiAgICB2YXIg aGVhZCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJoZWFkIilbMF07 DQogICAgaWYgKGhlYWQgIT0gbnVsbCkgew0KICAgICAgICB0cnkgew0KICAgICAg ICAgICAgdmFyIHNjcmlwdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3Njcmlw dCcpOw0KICAgICAgICAgICAgc2NyaXB0LnR5cGUgPSAidGV4dC9qYXZhc2NyaXB0 IjsNCiAgICAgICAgICAgIHNjcmlwdC5zcmMgPSBwYXRoOw0KICAgICAgICAgICAg aWYgKGNhbGxiYWNrKSB7DQogICAgICAgICAgICAgICAgc2NyaXB0Lm9ucmVhZHlz dGF0ZWNoYW5nZSA9IGZ1bmN0aW9uKCkgew0KICAgICAgICAgICAgICAgICAgICBp ZiAoY2FsbGJhY2sgJiYgKCJjb21wbGV0ZSIgPT0gc2NyaXB0LnJlYWR5U3RhdGUg fHwgImxvYWRlZCIgPT0gc2NyaXB0LnJlYWR5U3RhdGUpKQ0KICAgICAgICAgICAg ICAgICAgICB7IGNhbGxiYWNrKCk7IGNhbGxiYWNrID0gbnVsbDsgfQ0KICAgICAg ICAgICAgICAgIH07DQogICAgICAgICAgICAgICAgc2NyaXB0Lm9ubG9hZCA9IGZ1 bmN0aW9uKCkgew0KICAgICAgICAgICAgICAgICAgICBpZiAoY2FsbGJhY2spIHsN CiAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKCk7IGNhbGxiYWNrID0g bnVsbDsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH07 DQogICAgICAgICAgICB9DQogICAgICAgICAgICBoZWFkLmFwcGVuZENoaWxkKHNj cmlwdCk7DQogICAgICAgIH0NCiAgICAgICAgY2F0Y2ggKGUpIHsNCiAgICAgICAg ICAgIGFsZXJ0KGUuZGVzY3JpcHRpb24pOw0KICAgICAgICB9DQogICAgfQ0KfQ0K DQpmdW5jdGlvbiBzaG93RGlhbG9nKGRpYWxvZykgew0KICAgIGlmICh0eXBlb2Yg KExvYWREaWFsb2cpID09ICJ1bmRlZmluZWQiKSB7DQogICAgICAgIGFkZFNjcmlw dCgiL2ltYWdlcy9nbG9iYWwvanMvZGlhbG9nLmpzIiwgZnVuY3Rpb24oKSB7IHNo b3dEaWFsb2coZGlhbG9nKTsgfSk7DQogICAgICAgIHJldHVybjsNCiAgICB9DQog ICAgTG9hZERpYWxvZyhkaWFsb2cpOw0KfQ0KDQpmdW5jdGlvbiBzaG93WVBhbmVs KGlkLCBoZWFkZXIsIGJvZHksIGZvb3RlciwgY29uZmlnKSB7DQogICAgaWYgKHR5 cGVvZiAoWUFIT08pID09ICJ1bmRlZmluZWQiIHx8IHR5cGVvZiAoWUFIT08ud2lk Z2V0KSA9PSAidW5kZWZpbmVkIikgew0KICAgICAgICBhZGRTY3JpcHQoIi9pbWFn ZXMvZ2xvYmFsL2pzL3l1aS95dWkuanMiLCBmdW5jdGlvbigpIHsgc2hvd1lQYW5l bChpZCwgaGVhZGVyLCBib2R5LCBmb290ZXIsIGNvbmZpZyk7IH0pOw0KICAgICAg ICByZXR1cm47DQogICAgfQ0KICAgIGlmICh0eXBlb2YgKFlBSE9PLnN0b3JtKSA9 PSAidW5kZWZpbmVkIikgew0KICAgICAgICBZQUhPTy5uYW1lc3BhY2UoInN0b3Jt LmNvbnRhaW5lciIpOw0KICAgIH0NCiAgICB2YXIgcGFuZWwgPSBZQUhPTy5zdG9y bS5jb250YWluZXJbaWRdOw0KICAgIHZhciBuZWVkc1JlbmRlciA9IHBhbmVsID09 IG51bGw7DQoNCiAgICBpZiAoY29uZmlnID09IG51bGwpIHsNCiAgICAgICAgY29u ZmlnID0geyB3aWR0aDogIjMwMHB4IiwgZml4ZWRjZW50ZXI6IHRydWUsIHZpc2li bGU6IGZhbHNlLCBjb25zdHJhaW50b3ZpZXdwb3J0OiB0cnVlLCBlZmZlY3Q6IHsg ZWZmZWN0OiBZQUhPTy53aWRnZXQuQ29udGFpbmVyRWZmZWN0LkZBREUsIGR1cmF0 aW9uOiAwLjI1fSB9Ow0KICAgIH0NCiAgICBpZiAoY29uZmlnLm1ha2VGYWRlKSB7 DQogICAgICAgIGlmIChjb25maWcuZmFkZVNwZWVkICE9IG51bGwpIHsNCiAgICAg ICAgICAgIGNvbmZpZy5lZmZlY3QgPSB7IGVmZmVjdDogWUFIT08ud2lkZ2V0LkNv bnRhaW5lckVmZmVjdC5GQURFLCBkdXJhdGlvbjogY29uZmlnLmZhZGVTcGVlZCB9 Ow0KICAgICAgICB9DQogICAgICAgIGVsc2Ugew0KICAgICAgICAgICAgY29uZmln LmVmZmVjdCA9IHsgZWZmZWN0OiBZQUhPTy53aWRnZXQuQ29udGFpbmVyRWZmZWN0 LkZBREUsIGR1cmF0aW9uOiAwLjI1IH07DQogICAgICAgIH0NCiAgICB9DQogICAg aWYgKG5lZWRzUmVuZGVyKSB7DQogICAgICAgIHBhbmVsID0gbmV3IFlBSE9PLndp ZGdldC5QYW5lbChpZCwgY29uZmlnKTsNCiAgICAgICAgWUFIT08uc3Rvcm0uY29u dGFpbmVyW2lkXSA9IHBhbmVsOw0KICAgIH0NCiAgICBlbHNlIHsNCiAgICAgICAg Zm9yIChpIGluIGNvbmZpZykgew0KICAgICAgICAgICAgaWYgKGNvbmZpZ1tpXSAh PSBwYW5lbC5jZmcuZ2V0UHJvcGVydHkoaSkpIHsNCiAgICAgICAgICAgICAgICBw YW5lbC5jZmcuc2V0UHJvcGVydHkoaSwgY29uZmlnW2ldKTsNCiAgICAgICAgICAg IH0NCiAgICAgICAgfQ0KICAgIH0NCiAgICBwYW5lbC5zZXRIZWFkZXIoaGVhZGVy KTsNCiAgICBwYW5lbC5zZXRCb2R5KGJvZHkpOw0KICAgIHBhbmVsLnNldEZvb3Rl cihmb290ZXIpOw0KICAgIGlmIChuZWVkc1JlbmRlcikgew0KICAgICAgICBwYW5l bC5yZW5kZXIoZG9jdW1lbnQuYm9keSk7DQogICAgfQ0KICAgIGlmIChjb25maWcu dmlzaWJsZSAhPSBmYWxzZSkgew0KICAgICAgICBwYW5lbC5zaG93KCk7DQogICAg fQ0KfQ0KDQpmdW5jdGlvbiBoaWRlWVBhbm5lbChpZCkgew0KICAgIGlmICh0eXBl b2YgKFlBSE9PKSA9PSAidW5kZWZpbmVkIiB8fCB0eXBlb2YgKFlBSE9PLndpZGdl dCkgPT0gInVuZGVmaW5lZCIpIHsNCiAgICAgICAgcmV0dXJuOw0KICAgIH0NCiAg ICB2YXIgcGFuZWwgPSBZQUhPTy5zdG9ybS5jb250YWluZXJbaWRdOw0KICAgIGlm IChwYW5lbCAhPSBudWxsKSB7DQogICAgICAgIHBhbmVsLmhpZGUoKTsNCiAgICB9 DQp9DQovL0ZvciBhcHBlbmRpbmcgdGhlIHNpdGUgc2VydmVyIGlkIGZvciBpcGVy Y2VycHRpb25zIC0gY2FuIGJlIHVzZWQgd2l0aCBhbnkgdXJsDQpmdW5jdGlvbiBB cHBlbmRTaXRlU2VydmVySWQodXJsKSB7DQogICAgdmFyIGd1aWRRcyA9ICh1cmwu aW5kZXhPZigiPyIpICE9IC0xKSA/ICImZ3VpZD0iIDogIj9ndWlkPSI7DQogICAg dXJsID0gdXJsICsgZ3VpZFFzICsgZ2V0U2l0ZVNlcnZlcklkKCk7DQogICAgcmV0 dXJuIHVybDsNCn0NCmZ1bmN0aW9uIGdldFNpdGVTZXJ2ZXJJZCgpIHsNCiAgICB2 YXIgY29va2llID0gZ2V0Q29va2llKCJTSVRFU0VSVkVSIik7DQogICAgdmFyIGNv b2tpZVZhbHVlID0gZ2V0Q29va2llS2V5VmFsdWUoIlNJVEVTRVJWRVIiLCAiSUQi KTsNCiAgICByZXR1cm4gY29va2llVmFsdWU7DQp9DQoNCg0KZnVuY3Rpb24gUmVu ZGVyQm9yZGVyKCkgew0KDQogICAgZG9jdW1lbnQud3JpdGVsbigiPHRhYmxlIGlk PVwiYm9yZGVyVGFibGVcIiB3aWR0aD1cIjEwMCVcIiBjZWxscGFkZGluZz1cIjBc IiBjZWxsc3BhY2luZz1cIjBcIiBib3JkZXI9XCIwXCIgYmdjb2xvcj1cIiNlZGVk ZWRcIj4iKTsNCiAgICBkb2N1bWVudC53cml0ZWxuKCI8dHI+PHRkIGJnY29sb3I9 XCIjOTk5OTk5XCI+PGltZyBzcmM9XCIiICsgbV9pbWdQZnggKyAiL2ltYWdlcy9n bG9iYWwvZ2VuZXJhbC9zcGFjZXIuZ2lmXCIgYm9yZGVyPVwiMFwiIGhlaWdodD1c IjFcIiB3aWR0aD1cIjFcIiBhbHQ9XCJcIiAvPjwvdGQ+PC90cj4iKTsNCiAgICBk b2N1bWVudC53cml0ZWxuKCI8L3RhYmxlPiIpOw0KfQ0KDQpmdW5jdGlvbiBSZW5k ZXJWaWV3TGFyZ2VUZXh0VVJMKGNscywgbG5rLCB0eHQpIHsNCiAgICB2YXIgdmll d1VybCA9ICI8ZGl2IGNsYXNzPVwiIiArIGNscyArICJcIj48YSBocmVmPVwiIiAr IGxuayArICJcIiBzdHlsZT1cInBhZGRpbmctbGVmdDoyMHB4XCI+IiArIHR4dCAr ICI8L2E+PC9kaXY+IjsNCg0KICAgIGRvY3VtZW50LndyaXRlbG4odmlld1VybCk7 DQoNCn0NCmZ1bmN0aW9uIFJlbmRlclN0YXJ0TGVnYWxMaW5rcygpIHsNCiAgICBk b2N1bWVudC53cml0ZWxuKCI8dGFibGUgd2lkdGg9XCIxMDAlXCIgY2VsbHBhZGRp bmc9XCIwXCIgc3R5bGU9XCJwYWRkaW5nLWxlZnQ6MTBweDtcIiBjZWxsc3BhY2lu Zz1cIjBcIiBib3JkZXI9XCIwXCIgYmdjb2xvcj1cIiNlZGVkZWRcIj4iKTsNCiAg ICBkb2N1bWVudC53cml0ZWxuKCI8dHI+PHRkIGNvbHNwYW49XCIyXCIgPjxpbWcg c3JjPVwiIiArIG1faW1nUGZ4ICsgIi9pbWFnZXMvZ2xvYmFsL2dlbmVyYWwvc3Bh Y2VyLmdpZlwiIGJvcmRlcj1cIjBcIiBoZWlnaHQ9XCI1XCIgd2lkdGg9XCIxXCIg YWx0PVwiXCIgLz48L3RkPjwvdHI+PHRyPjx0ZCB3aWR0aD1cIjEwMCVcIiBhbGln bj1cImNlbnRlclwiIHZhbGlnbj1cInRvcFwiPiIpOw0KfQ0KDQpmdW5jdGlvbiBS ZW5kZXJFbmRMZWdhbExpbmtzKGdvdG90b3ApIHsNCiAgICBkb2N1bWVudC53cml0 ZWxuKCI8L3RkPjx0ZD48dGFibGU+PHRyPjx0ZCB2YWxpZ249XCJtaWRkbGVcIj48 aW1nIHNyYz1cIiIgKyBtX2ltZ1BmeCArICIvaW1hZ2VzL2dsb2JhbC9icmFuZC91 aS9hcnJvd190b3AuZ2lmXCIgd2lkdGg9XCI3XCIgaGVpZ2h0PVwiNFwiIGFsdD1c IlwiIGJvcmRlcj1cIjBcIj48L3RkPjx0ZCBzdHlsZT1cInBhZGRpbmctcmlnaHQ6 NnB4O1wiIHZhbGlnbj1cIm1pZGRsZVwiPjxhIGhyZWY9XCIjbWFzdGhlYWR0b3Bc Ij48c3BhbiBjbGFzcz1cInBhcmFcIj4iICsgZ290b3RvcCArICI8L3NwYW4+PC9h PjwvdGQ+PC90cj48L3RhYmxlPjwvdGQ+PC90cj48VFI+PHRkIGNvbHNwYW49XCIy XCIgPjxpbWcgc3JjPVwiIiArIG1faW1nUGZ4ICsgIi9pbWFnZXMvZ2xvYmFsL2dl bmVyYWwvc3BhY2VyLmdpZlwiIGFsdD1cIlwiIGJvcmRlcj1cIjBcIiBoZWlnaHQ9 XCI1XCIgd2lkdGg9XCIxXCIgLz48L3RkPjwvdHI+PFRSPjx0ZCBjb2xzcGFuPVwi MlwiIGJnY29sb3I9XCIjY2RjZGNkXCI+PGltZyBzcmM9XCIiICsgbV9pbWdQZngg KyAiL2ltYWdlcy9nbG9iYWwvZ2VuZXJhbC9zcGFjZXIuZ2lmXCIgYWx0PVwiXCIg Ym9yZGVyPVwiMFwiIGhlaWdodD1cIjFcIiB3aWR0aD1cIjFcIiAvPjwvdGQ+PC90 cj48L3RhYmxlPiIpOw0KfQ0KDQovL2ZvciByZXNpemluZyByZXN1bHQgZ3JpZCBj b250cm9sDQpmdW5jdGlvbiByZ1Jlc2l6ZUNvbnRhaW5lckRpdigpIHsNCg0KICAg IHZhciByb3dzID0gJGooJy5yZ1JvdycpOw0KDQogICAgaWYgKHJvd3MubGVuZ3Ro ID4gMCkgew0KICAgICAgICB2YXIgZGlmZiA9IDA7DQogICAgICAgIGZvciAodmFy IGkgPSAwOyBpIDwgcm93cy5sZW5ndGg7IGkrKykgew0KDQogICAgICAgICAgICB2 YXIgZGl2cyA9ICRqKHJvd3NbaV0pLmZpbmQoJ2Rpdi5yZ091dGVyQm9keUNvbnRh aW5lciBkaXYucmdCb2R5Q29udGFpbmVyIGRpdi5yZ0JvZHknKTsNCiAgICAgICAg ICAgIHZhciBmb290ZXIgPSAkaihyb3dzW2ldKS5maW5kKCdkaXYucmdPdXRlckJv ZHlDb250YWluZXIgZGl2LnJnRm9vdGVyQ29udGFpbmVyJyk7DQoNCiAgICAgICAg ICAgIGlmIChkaXZzLmxlbmd0aCA+IDApIHsNCiAgICAgICAgICAgICAgICB2YXIg aDEgPSAkaihkaXZzWzBdKS5oZWlnaHQoKTsNCiAgICAgICAgICAgICAgICB2YXIg aDIgPSAkaihyb3dzW2ldKS5oZWlnaHQoKTsNCiAgICAgICAgICAgICAgICBkaWZm ID0gKGgyIC0gaDEgLSAxNSAtIDQwKTsNCiAgICAgICAgICAgIH0NCg0KICAgICAg ICAgICAgaWYgKGZvb3Rlci5sZW5ndGggPiAwKSB7DQogICAgICAgICAgICAgICAg JGooZm9vdGVyWzBdKS5oZWlnaHQoNDApOw0KICAgICAgICAgICAgICAgIGlmIChk aWZmID4gNCkgew0KICAgICAgICAgICAgICAgICAgICAkaihmb290ZXJbMF0pLmNz cygnbWFyZ2luLXRvcCcsIGRpZmYpOw0KICAgICAgICAgICAgICAgIH0NCg0KICAg ICAgICAgICAgfQ0KDQogICAgICAgIH0NCg0KICAgIH0NCn0NCg0KZnVuY3Rpb24g YWpJbml0KCkgew0KDQp9DQoNCnZhciBtX3RuTmVlZCA9IG5ldyBBcnJheSgpOw0K dmFyIG1fdG5EYXRhID0gbmV3IEFycmF5KCk7DQp2YXIgbV90bkNvdW50ID0gMTsN CmZ1bmN0aW9uIEluaXRUZWNoTm90ZXMoKSB7DQogICAgaWYgKHR5cGVvZiAobV90 blBvcHVwRW5hYmxlZCkgIT0gJ3VuZGVmaW5lZCcgJiYgbV90blBvcHVwRW5hYmxl ZCA9PSB0cnVlKSB7DQogICAgICAgIHZhciBvdHJhaWwgPSBkb2N1bWVudC5nZXRF bGVtZW50QnlJZCgncHJvY2Vzc2luZ0NhcHRpb25JRCcpOw0KICAgICAgICBpZiAo b3RyYWlsKQ0KICAgICAgICAgICAgb3RyYWlsLmlubmVySFRNTCA9ICIiOw0KDQog ICAgICAgICRqKCJzdXBbQHRuXSIpLmxpdmVxdWVyeShmdW5jdGlvbigpIHsNCiAg ICAgICAgICAgIHZhciB0bjsNCiAgICAgICAgICAgIGlmICh0aGlzLnBhcmVudE5v ZGUubm9kZU5hbWUgPT0gIkEiKSB7DQogICAgICAgICAgICAgICAgdG4gPSAkaih0 aGlzLnBhcmVudE5vZGUpOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZWxz ZSB7DQogICAgICAgICAgICAgICAgdG4gPSAkaih0aGlzKTsNCiAgICAgICAgICAg IH0NCiAgICAgICAgICAgIHRuLmFkZENsYXNzKCd0ZWNobm90ZV9saW5rJyk7DQog ICAgICAgICAgICB0bi5iaW5kKCdjbGljaycsIGZvbGxvd21vdXNlKTsNCiAgICAg ICAgICAgIHZhciB0bmlkID0gJGoodGhpcykuYXR0cigidG4iKTsNCiAgICAgICAg ICAgIGlmIChtX3RuRGF0YVt0bmlkXSA9PSB1bmRlZmluZWQpIHsNCiAgICAgICAg ICAgICAgICBtX3RuRGF0YVt0bmlkXSA9IG1fdG5Db3VudDsNCiAgICAgICAgICAg ICAgICBtX3RuQ291bnQrKzsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgICRq KHRoaXMpLmh0bWwobV90bkRhdGFbdG5pZF0pOw0KICAgICAgICAgICAgdmFyIHJl cXVlc3RVcmwgPSBtX3JlcXVlc3RVUkxCYXNlICsgIiZ+dG5tb2RlPWh0bWwmaT0i ICsgdG5pZDsNCiAgICAgICAgICAgIHRuLmF0dHIoJ3JlbCcsIHJlcXVlc3RVcmwp Ow0KICAgICAgICAgICAgdG4uY2x1ZXRpcCh7IGFjdGl2YXRpb246ICJjbGljayIs IGFycm93SFBvc2l0aW9uOiAnb2Zmc2V0JywgcG9zaXRpb25CeTogJ3RvcEJvdHRv bScsIHdpZHRoOiAnNDAwcHgnLCBjbHVldGlwQ2xhc3M6ICdqdGlwJywgYXJyb3dz OiB0cnVlLCBhcnJvd1NpemU6ICdsZycsIGhvdmVySW50ZW50OiBmYWxzZSwgc2hv d1RpdGxlOiBmYWxzZSwgZHJvcFNoYWRvdzogdHJ1ZSwgd2FpdEltYWdlOiBmYWxz ZSwgbW91c2VPdXRDbG9zZTogdHJ1ZSwgc3RpY2t5OiB0cnVlLCBjbG9zZVRleHQ6 ICcnLA0KICAgICAgICAgICAgICAgIG9uQWN0aXZhdGU6IGZ1bmN0aW9uKGUpIHsg JGooIiNjbHVldGlwLWlubmVyIikuc2hvdygpOyByZXR1cm4gdHJ1ZTsgfSwNCiAg ICAgICAgICAgICAgICBvblNob3c6IGZ1bmN0aW9uKGUpIHsNCiAgICAgICAgICAg ICAgICAgICAgJGooIi5pdGVtSW5uZXJJbm5lckNvbnRhaW5lciIpLmNzcyh7IHdp ZHRoOiAiMzU2cHgiIH0pOw0KICAgICAgICAgICAgICAgICAgICAkaigiLml0ZW1D bG9zZUNvbnRhaW5lciIpLmNsaWNrKGZ1bmN0aW9uKCkgew0KICAgICAgICAgICAg ICAgICAgICAgICAgJGooIiNjbHVldGlwIikuaGlkZSgpOw0KICAgICAgICAgICAg ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgICAgICAgICB9 KTsNCiAgICAgICAgICAgICAgICAgICAgZ2V0dHJhaWxvYmooKS5jc3MoeyB2aXNp YmlsaXR5OiAiaGlkZGVuIiB9KTsNCiAgICAgICAgICAgICAgICAgICAgJGooZG9j dW1lbnQpLnVuYmluZCgnY2xpY2snLCBmb2xsb3dtb3VzZSk7DQogICAgICAgICAg ICAgICAgICAgIHJldHVybiB0cnVlOw0KICAgICAgICAgICAgICAgIH0NCiAgICAg ICAgICAgIH0pOw0KICAgICAgICB9KTsNCiAgICB9DQogICAgZWxzZSB7DQogICAg ICAgICRqKCJzdXBbQHRuXSIpLmxpdmVxdWVyeShmdW5jdGlvbigpIHsgaW5pdHRl Y2hub3Rlcyh0aGlzKTsgfSk7DQogICAgfQ0KfQ0KDQpmdW5jdGlvbiBpbml0dGVj aG5vdGVzKGVsZW0pIHsNCiAgICB2YXIgdG5pZCA9ICRqKGVsZW0pLmF0dHIoInRu Iik7DQogICAgaWYgKHRuaWQgJiYgdG5pZC5sZW5ndGggPiAwICYmIG1fdG5EYXRh W3RuaWRdID09IHVuZGVmaW5lZCAmJiBtX3RuTmVlZFt0bmlkXSA9PSB1bmRlZmlu ZWQpIHsNCiAgICAgICAgbV90bk5lZWRbdG5pZF0gPSB0bmlkOw0KICAgICAgICBp ZiAodHlwZW9mIChtX3JlcXVlc3RVUkxCYXNlKSAhPSAndW5kZWZpbmVkJykgew0K ICAgICAgICAgICAgJGouZ2V0KG1fcmVxdWVzdFVSTEJhc2UgKyAiJmk9IiArIHRu aWQsIGZ1bmN0aW9uKGRhdGEpIHsNCiAgICAgICAgICAgICAgICBldmFsKGRhdGEu cmVwbGFjZSgvXHJcbi9nLCAnJykpOw0KICAgICAgICAgICAgICAgIHZhciBub3Rl ID0geyAiayI6IHRuQXJyYXlbMF0uaywgInYiOiB0bkFycmF5WzBdLnYsICJpIjog bV90bkNvdW50IH07DQogICAgICAgICAgICAgICAgbV90bkRhdGFbdG5BcnJheVsw XS5rXSA9IG5vdGU7DQogICAgICAgICAgICAgICAgdmFyIHRucyA9ICRqKCJzdXBb QHRuPSIgKyB0bmlkICsgIl0iKTsNCiAgICAgICAgICAgICAgICBpZiAodG5zLmxl bmd0aCA+IDApIHsNCiAgICAgICAgICAgICAgICAgICAgdG5zLmVhY2goZnVuY3Rp b24oKSB7DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAobV90bkRhdGFbdG5p ZF0gIT0gbnVsbCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRqKHRo aXMpLmh0bWwobV90bkRhdGFbdG5pZF0uaSk7DQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgJGoodGhpcykuY2xpY2soZnVuY3Rpb24oKSB7IHRlY2hub3RlY2xp Y2sodGhpcyk7IH0pOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAg ICAgICAgICAgICAgICB9KTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAg ICAgICAgbV90bkNvdW50Kys7DQogICAgICAgICAgICAgICAgdmFyIHRlY2hub3Rl aHRtbCA9ICI8ZGl2ICIgKyAobV9pc1J0bCA/ICJzdHlsZT1cInRleHQtYWxpZ246 cmlnaHRcIiIgOiAiIikgKyAiPjxhIHN0eWxlPSdjb2xvcjpibGFjazsnIG5hbWU9 J3RuIiArIG5vdGUuaSArICInPjxzdXA+IiArIG5vdGUuaSArICI8L3N1cD48L2E+ Jm5ic3A7IiArIG5vdGUudiArICI8L2Rpdj48YnIgLz4iOw0KICAgICAgICAgICAg ICAgICRqKCIjZm9vdGVyIikuYXBwZW5kKHRlY2hub3RlaHRtbCk7DQogICAgICAg ICAgICAgICAgJGooIiNlbmRub3RlcyIpLmFwcGVuZCh0ZWNobm90ZWh0bWwpOw0K ICAgICAgICAgICAgfSk7DQogICAgICAgIH0NCiAgICB9DQogICAgaWYgKG1fdG5E YXRhW3RuaWRdICE9IHVuZGVmaW5lZCkgew0KICAgICAgICAkaihlbGVtKS5odG1s KG1fdG5EYXRhW3RuaWRdLmkpOw0KICAgICAgICAkaihlbGVtKS5jbGljayhmdW5j dGlvbigpIHsgdGVjaG5vdGVjbGljayh0aGlzKSB9KTsNCiAgICB9DQp9DQpmdW5j dGlvbiB0ZWNobm90ZWNsaWNrKHNlbmRlcikgew0KICAgIHZhciB0biA9ICRqKHNl bmRlcikuYXR0cigidG4iKTsNCiAgICBpZiAodG4gIT0gdW5kZWZpbmVkICYmIG1f dG5EYXRhW3RuXSAhPSB1bmRlZmluZWQgJiYgbV90bkRhdGFbdG5dLmkgIT0gdW5k ZWZpbmVkICYmICEoL1xELy50ZXN0KCRqKHNlbmRlcikuaHRtbCgpKSkpIHsNCiAg ICAgICAgZG9jdW1lbnQubG9jYXRpb24uaHJlZiA9ICIjdG4iICsgbV90bkRhdGFb dG5dLmk7DQogICAgICAgIHJldHVybjsNCiAgICB9DQogICAgaWYgKHRuICE9IHVu ZGVmaW5lZCAmJiBtX2dsb3NzYXJ5VVJMQmFzZSAhPSB1bmRlZmluZWQgJiYgbV9n bG9zc2FyeVVSTEJhc2UubGVuZ3RoID4gMCkgew0KICAgICAgICB3aW5kb3cub3Bl bihtX2dsb3NzYXJ5VVJMQmFzZSArICI/Zj0iICsgdG4sICd0bndpbicsICdXSURU SD00MDAsSEVJR0hUPTMwMCxSRVNJWkFCTEU9WUVTLFNDUk9MTEJBUlM9WUVTLFNU QVRVUz1OTyxUT09MQkFSPU5PLExFRlQ9MCxUT1A9MCcpOw0KICAgIH0NCn0NCg0K DQoNCmZ1bmN0aW9uIEluaXRUb29sVGlwcygpIHsNCiAgICAkaigic3BhbltAZ2xp ZF0iKS5saXZlcXVlcnkoZnVuY3Rpb24oKSB7DQogICAgICAgIHZhciBnZGVjbyA9 ICRqKHRoaXMpLmF0dHIoImdsbm9kZWNvIik7DQogICAgICAgIHZhciBndGl0bGUg PSAkaih0aGlzKS5hdHRyKCJnbHRpdGxlIik7DQogICAgICAgIGlmICh0eXBlb2Yg KGdkZWNvKSA9PSAidW5kZWZpbmVkIikgew0KICAgICAgICAgICAgJGoodGhpcyku YWRkQ2xhc3MoJ2dsb3NzYXJ5aXRlbScpOw0KICAgICAgICB9DQogICAgICAgIGVs c2Ugew0KICAgICAgICAgICAgJGoodGhpcykuYWRkQ2xhc3MoJ2dsb3NzYXJ5aXRl bV9ub2RlY29yYXRpb24nKTsNCiAgICAgICAgfQ0KICAgICAgICB2YXIgcmVxdWVz dFVybCA9IG1fcmVxdWVzdFVSTEJhc2UgKyAiJn50dG1vZGU9aHRtbCZ+dHRpZD0i ICsgZXNjYXBlKHRoaXMuYXR0cmlidXRlcy5nbGlkLnZhbHVlKTsNCiAgICAgICAg aWYgKHRoaXMuYXR0cmlidXRlcy5nbG1vcmVkZXRhaWxzKSB7DQogICAgICAgICAg ICB2YXIgcmVmID0gc3JjLmF0dHJpYnV0ZXMuZ2xtb3JlZGV0YWlscy52YWx1ZTsN CiAgICAgICAgICAgIHJlZiA9IHJlZi5yZXBsYWNlKC86L2csICJ+Iik7DQogICAg ICAgICAgICByZXF1ZXN0VXJsICs9ICImfnR0cmVmPSIgKyByZWY7DQogICAgICAg IH0NCiAgICAgICAgJGoodGhpcykuYXR0cigncmVsJywgcmVxdWVzdFVybCk7DQog ICAgICAgICRqKHRoaXMpLmNsdWV0aXAoeyBhcnJvd0hQb3NpdGlvbjogJ29mZnNl dCcsIGRlbGF5ZWRDbG9zZTogdHlwZW9mIChtX2NvbnRhaW5lclRpbWVvdXQpICE9 ICd1bmRlZmluZWQnID8gbV9jb250YWluZXJUaW1lb3V0IDogNTAwLCBkZWxheWVk T3BlbjogdHlwZW9mIChob3Zlcm92ZXJ0aW1lKSAhPSAndW5kZWZpbmVkJyA/IGhv dmVyb3ZlcnRpbWUgOiA1MDAsIHBvc2l0aW9uQnk6ICd0b3BCb3R0b20nLCB3aWR0 aDogJzQwMHB4JywgY2x1ZXRpcENsYXNzOiAnanRpcCcsIGFycm93czogdHJ1ZSwg YXJyb3dTaXplOiAnbGcnLCBob3ZlckludGVudDogZmFsc2UsIHNob3dUaXRsZTog ZmFsc2UsIGRyb3BTaGFkb3c6IHRydWUsIHdhaXRJbWFnZTogZmFsc2UsIG1vdXNl T3V0Q2xvc2U6IHRydWUsIHN0aWNreTogdHJ1ZSwgY2xvc2VUZXh0OiAnJywgb25B Y3RpdmF0ZTogZnVuY3Rpb24oZSkgeyAkaigiI2NsdWV0aXAtaW5uZXIiKS5zaG93 KCk7IHJldHVybiB0cnVlOyB9LA0KICAgICAgICAgICAgb25TaG93OiBmdW5jdGlv bihlKSB7DQogICAgICAgICAgICAgICAgJGooIi5pdGVtQ2xvc2VDb250YWluZXIi KS5jbGljayhmdW5jdGlvbigpIHsNCiAgICAgICAgICAgICAgICAgICAgJGooIiNj bHVldGlwIikuaGlkZSgpOw0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFs c2U7DQogICAgICAgICAgICAgICAgfSk7DQogICAgICAgICAgICAgICAgdmFyIHRp dGxlID0gJGooIi5pdGVtQ29udGFpbmVyVGl0bGUiKS5odG1sKCk7DQogICAgICAg ICAgICAgICAgaWYgKHRpdGxlID09IG51bGwgfHwgdGl0bGUubGVuZ3RoID09IDAg fHwgdGl0bGUgPT0gIiZuYnNwOyIpIHsNCiAgICAgICAgICAgICAgICAgICAgJGoo Ii5pdGVtQ29udGFpbmVyVGl0bGUiKS5odG1sKGd0aXRsZSk7DQogICAgICAgICAg ICAgICAgfQ0KICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOw0KICAgICAgICAg ICAgfQ0KICAgICAgICB9KTsNCiAgICB9KTsNCn0NCg0KZnVuY3Rpb24gSW5pdENs dWVUaXAoKSB7DQoNCg0KICAgICRqKCIuaHZfY2x1ZXRpcCIpDQogICAgLmxpdmVx dWVyeShmdW5jdGlvbigpIHsNCiAgICAgICAgJGoodGhpcykuY2x1ZXRpcCh7IHBv c2l0aW9uQnk6ICdhdXRvJywgd2lkdGg6ICcyNTFweCcsIGNsdWV0aXBDbGFzczog J2p0aXAnLCBhcnJvd3M6IHRydWUsIGhvdmVySW50ZW50OiBmYWxzZSwgc2hvd1Rp dGxlOiBmYWxzZSwgd2FpdEltYWdlOiBmYWxzZSwgb25BY3RpdmF0ZTogZnVuY3Rp b24oZSkgeyAkaigiI2NsdWV0aXAtaW5uZXIiKS5zaG93KCk7IHJldHVybiB0cnVl OyB9IH0pOw0KDQogICAgfSk7DQoNCg0KDQogICAgJGooIi5pY19jbHVldGlwIikN CiAgICAubGl2ZXF1ZXJ5KGZ1bmN0aW9uKCkgew0KICAgICAgICAkaih0aGlzKS5j bHVldGlwKHsgd2lkdGg6ICcxNjBweCcsIHRvcE9mZnNldDogJzEwJywgc3BsaXRU aXRsZTogJ3wnLCBkcm9wU2hhZG93OiBmYWxzZSwgYXJyb3dTaXplOiAnc20nLCBh cnJvd3M6IHRydWUsIGNsdWV0aXBDbGFzczogJ2p0aXAnLCBzaG93VGl0bGU6IGZh bHNlLCBwb3NpdGlvbkJ5OiAnYm90dG9tVG9wJywgaG92ZXJJbnRlbnQ6IGZhbHNl LCBjdXJzb3I6ICdkZWZhdWx0Jywgb25BY3RpdmF0ZTogZnVuY3Rpb24oZSkgeyAk aih0aGlzKS5hdHRyKCd0aXRsZScsICcnKTsgcmV0dXJuIHRydWU7IH0gfSk7DQoN Cg0KICAgIH0pOw0KDQoNCn0NCg0KZnVuY3Rpb24gUHJpY2luZ0FsaWdubWVudCgp IHsNCiAgICAkaigiZGl2W0BuYW1lPXByaWNpbmdfZGVzY3JpcHRpb25zXSIpDQog ICAgICAgIC5saXZlcXVlcnkoZnVuY3Rpb24oKSB7DQogICAgICAgICAgICB2YXIg ZGl2cyA9ICRqKCJkaXZbQG5hbWU9cHJpY2luZ19kZXNjcmlwdGlvbnNdIik7IHZh ciBkaXZIZWlnaHQgPSAwOw0KICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkg PCBkaXZzLmxlbmd0aDsgaSsrKSB7DQogICAgICAgICAgICAgICAgdmFyIG9mZnNl dEhlaWdodCA9IGRpdnNbaV0ub2Zmc2V0SGVpZ2h0Ow0KICAgICAgICAgICAgICAg IGRpdkhlaWdodCA9IG9mZnNldEhlaWdodCA+IGRpdkhlaWdodCA/IG9mZnNldEhl aWdodCA6IGRpdkhlaWdodDsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGlm IChkaXZIZWlnaHQgPiAwICYmIHRoaXMub2Zmc2V0SGVpZ2h0IDwgZGl2SGVpZ2h0 KQ0KICAgICAgICAgICAgICAgIHRoaXMuc3R5bGUuaGVpZ2h0ID0gZGl2SGVpZ2h0 Ow0KICAgICAgICB9KTsNCn0NCg0KDQpmdW5jdGlvbiBTdHJpbmdCdWZmZXIoKSB7 DQogICAgdGhpcy5idWZmZXIgPSBbXTsNCn0NCg0KU3RyaW5nQnVmZmVyLnByb3Rv dHlwZS5hcHBlbmQgPSBmdW5jdGlvbiBhcHBlbmQoc3RyaW5nKSB7DQogICAgdGhp cy5idWZmZXIucHVzaChzdHJpbmcpOw0KICAgIHJldHVybiB0aGlzOw0KfTsNCg0K U3RyaW5nQnVmZmVyLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uIHRvU3Ry aW5nKCkgew0KICAgIHJldHVybiB0aGlzLmJ1ZmZlci5qb2luKCIiKTsNCn07DQoN Cg0KDQpmdW5jdGlvbiBnZXRMd3AoKSB7DQogICAgdmFyIGNudHIgPSAiIjsNCiAg ICB2YXIgc2VnbSA9ICIiOw0KICAgIHZhciBsYW5nID0gIiI7DQogICAgdmFyIGNz ID0gIiI7DQoNCiAgICB2YXIgZ290cSA9IG1fY3VyVXJsLnNwbGl0KCc/JykubGVu Z3RoID4gMTsNCg0KCXRyeSB7DQoJCWlmIChnb3RxKSB7DQoJCQljbnRyID0gJGou anFVUkwuZ2V0KCJjIik7DQoJCQlzZWdtID0gJGouanFVUkwuZ2V0KCJzIik7DQoJ CQlsYW5nID0gJGouanFVUkwuZ2V0KCJsIik7DQoJCQljcyA9ICRqLmpxVVJMLmdl dCgiY3MiKTsNCgkJfQ0KCX0NCgljYXRjaChlcnIpIHsgfQ0KICAgIHZhciBsd3Ag PSBuZXcgU3RyaW5nQnVmZmVyKCk7DQogICAgaWYgKGNudHIgPT0gbnVsbCB8fCBj bnRyLmxlbmd0aCA9PSAwKSB7DQogICAgICAgIGNudHIgPSBnZXRDb29raWVLZXlW YWx1ZSgibHdwIiwgImMiKTsNCiAgICB9DQogICAgaWYgKHNlZ20gPT0gbnVsbCB8 fCBzZWdtLmxlbmd0aCA9PSAwKSB7DQogICAgICAgIHNlZ20gPSBnZXRDb29raWVL ZXlWYWx1ZSgibHdwIiwgInMiKTsNCiAgICB9DQogICAgaWYgKGxhbmcgPT0gbnVs bCB8fCBsYW5nLmxlbmd0aCA9PSAwKSB7DQogICAgICAgIGxhbmcgPSBnZXRDb29r aWVLZXlWYWx1ZSgibHdwIiwgImwiKTsNCiAgICB9DQogICAgaWYgKGNzID09IG51 bGwgfHwgY3MubGVuZ3RoID09IDApIHsNCiAgICAgICAgY3MgPSBnZXRDb29raWVL ZXlWYWx1ZSgibHdwIiwgImNzIik7DQogICAgfQ0KICAgIGlmIChjbnRyICE9IG51 bGwgJiYgY250ci5sZW5ndGggIT0gMCkgew0KICAgICAgICBsd3AuYXBwZW5kKCIm Yz0iKTsNCiAgICAgICAgbHdwLmFwcGVuZChjbnRyKTsNCiAgICB9DQogICAgaWYg KHNlZ20gIT0gbnVsbCAmJiBzZWdtLmxlbmd0aCAhPSAwKSB7DQogICAgICAgIGx3 cC5hcHBlbmQoIiZzPSIpOw0KICAgICAgICBsd3AuYXBwZW5kKHNlZ20pOw0KICAg IH0NCiAgICBpZiAobGFuZyAhPSBudWxsICYmIGxhbmcubGVuZ3RoICE9IDApIHsN CiAgICAgICAgbHdwLmFwcGVuZCgiJmw9Iik7DQogICAgICAgIGx3cC5hcHBlbmQo bGFuZyk7DQogICAgfQ0KICAgIGlmIChjcyAhPSBudWxsICYmIGNzLmxlbmd0aCAh PSAwKSB7DQogICAgICAgIGx3cC5hcHBlbmQoIiZjcz0iKTsNCiAgICAgICAgbHdw LmFwcGVuZChjcyk7DQogICAgfQ0KICAgIHJldHVybiBsd3AudG9TdHJpbmcoKS5z cGxpdCgnIycpWzBdOw0KfQ0KDQpmdW5jdGlvbiBOZXdTaG93SGlkZShpZCkgew0K DQogICAgaWYgKGRvY3VtZW50LmdldEVsZW1lbnRzQnlOYW1lKSB7DQoNCiAgICAg ICAgdmFyIHRlbXA7DQogICAgICAgIHZhciBuZXdhcnJheSA9IGlkLnNwbGl0KCcg Jyk7DQoNCiAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBuZXdhcnJheS5sZW5n dGg7IGorKykgew0KICAgICAgICAgICAgdGVtcCA9IG5ld2FycmF5W2pdOw0KDQog ICAgICAgICAgICB2YXIgZGl2cyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlOYW1l KHRlbXApOw0KDQogICAgICAgICAgICBpZiAoZGl2cyAmJiBkaXZzLmxlbmd0aCA+ IDApIHsNCiAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgZGl2cy5sZW5n dGg7IGkrKykgew0KICAgICAgICAgICAgICAgICAgICBpZiAoZGl2c1tpXS5zdHls ZS5kaXNwbGF5ID09ICJub25lIikgew0KICAgICAgICAgICAgICAgICAgICAgICAg ZGl2c1tpXS5zdHlsZS5kaXNwbGF5ID0gImJsb2NrIjsNCiAgICAgICAgICAgICAg ICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsNCiAgICAgICAgICAg ICAgICAgICAgICAgIGRpdnNbaV0uc3R5bGUuZGlzcGxheSA9ICJub25lIjsNCiAg ICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAg ICAgIH0NCiAgICAgICAgfQ0KICAgIH0NCn0NCg0KZnVuY3Rpb24gU3RyaXBDb29r aWVWYWx1ZShpblZhbCwgcmVtb3ZlVmFsKSB7DQogICAgaWYgKCFpblZhbCB8fCBp blZhbC5sZW5ndGggPT0gMCB8fCAhcmVtb3ZlVmFsIHx8IHJlbW92ZVZhbC5sZW5n dGggPT0gMCkgew0KICAgICAgICByZXR1cm4gaW5WYWw7DQogICAgfQ0KICAgIHZh ciBpZHggPSAwOw0KICAgIHZhciBhbXBJZHggPSAwOw0KICAgIHZhciBzZW1pSWR4 ID0gMDsNCiAgICB2YXIgbGVuID0gMDsNCiAgICB2YXIgcmVwU3RyaW5nID0gIiI7 DQogICAgaWR4ID0gaW5WYWwuaW5kZXhPZihyZW1vdmVWYWwpOw0KICAgIGlmIChp ZHggPiAtMSkgew0KICAgICAgICBhbXBJZHggPSBpblZhbC5pbmRleE9mKCImIiwg aWR4KTsNCiAgICAgICAgc2VtaUlkeCA9IGluVmFsLmluZGV4T2YoIjsiLCBpZHgp Ow0KICAgICAgICBsZW4gPSBhbXBJZHg7DQogICAgICAgIGlmIChsZW4gPT0gLTEp IHsNCiAgICAgICAgICAgIGxlbiA9IHNlbWlJZHg7DQogICAgICAgIH0NCiAgICAg ICAgZWxzZSBpZiAoc2VtaUlkeCAhPSAtMSAmJiBzZW1pSWR4IDwgbGVuKSB7DQog ICAgICAgICAgICBsZW4gPSBzZW1pSWR4Ow0KICAgICAgICB9DQogICAgICAgIGlm IChsZW4gPiAtMSkgew0KICAgICAgICAgICAgcmVwU3RyaW5nID0gaW5WYWwuc3Vi c3RyaW5nKGlkeCwgbGVuKTsNCiAgICAgICAgfQ0KICAgICAgICBlbHNlIHsNCiAg ICAgICAgICAgIHJlcFN0cmluZyA9IGluVmFsLnN1YnN0cihpZHgpOw0KICAgICAg ICB9DQogICAgICAgIHJldHVybiBpblZhbC5yZXBsYWNlKHJlcFN0cmluZywgIiIp LnJlcGxhY2UoIiYmIiwgIiYiKTsNCiAgICB9DQogICAgcmV0dXJuIGluVmFsOw0K fQ0KDQpmdW5jdGlvbiBnZXRDb29raWVLZXlWYWx1ZShjbmFtZSwgaWQsIGNhc2VT ZW5zaXRpdmUpIHsNCiAgICB0cnkgew0KICAgICAgICB2YXIgb2Zmc2V0ID0gMTsN CiAgICAgICAgdmFyIHNpZCA9IGlkICsgIj0iOw0KICAgICAgICB2YXIgc2lkMSA9 ICI/IiArIGlkICsgIj0iOw0KICAgICAgICB2YXIgc2lkMiA9ICImIiArIGlkICsg Ij0iOw0KICAgICAgICB2YXIgbHdwID0gZ2V0Q29va2llKGNuYW1lKTsNCiAgICAg ICAgdmFyIHN0YXJ0SWR4ID0gMDsNCiAgICAgICAgdmFyIGVuZElkeCA9IDA7DQog ICAgICAgIHZhciBrdmFsdWUgPSBudWxsOw0KICAgICAgICBpZiAobHdwLmluZGV4 T2Yoc2lkMSkgIT0gLTEpIHsNCiAgICAgICAgICAgIHNpZCA9IHNpZDE7DQogICAg ICAgICAgICBvZmZzZXQgPSAyOw0KICAgICAgICB9DQogICAgICAgIGlmIChsd3Au aW5kZXhPZihzaWQyKSAhPSAtMSkgew0KICAgICAgICAgICAgc2lkID0gc2lkMjsN CiAgICAgICAgICAgIG9mZnNldCA9IDI7DQogICAgICAgIH0NCiAgICAgICAgaWYg KGx3cC5pbmRleE9mKHNpZCkgPT0gLTEpIHsNCiAgICAgICAgICAgIHJldHVybiBu dWxsOw0KICAgICAgICB9DQogICAgICAgIGVsc2Ugew0KICAgICAgICAgICAgc3Rh cnRJZHggPSBsd3AuaW5kZXhPZihzaWQpICsgaWQubGVuZ3RoICsgb2Zmc2V0Ow0K ICAgICAgICAgICAgaWYgKGx3cC5zdWJzdHJpbmcoc3RhcnRJZHgpLmluZGV4T2Yo IiYiKSA9PSAtMSkgew0KICAgICAgICAgICAgICAgIHJldHVybiBsd3Auc3Vic3Ry aW5nKHN0YXJ0SWR4KTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGVsc2Ug ew0KICAgICAgICAgICAgICAgIGVuZElkeCA9IGx3cC5zdWJzdHJpbmcoc3RhcnRJ ZHgpLmluZGV4T2YoIiYiKSArIHN0YXJ0SWR4Ow0KICAgICAgICAgICAgfQ0KICAg ICAgICB9DQogICAgICAgIGt2YWx1ZSA9IGx3cC5zdWJzdHJpbmcoc3RhcnRJZHgs IGVuZElkeCk7DQogICAgfQ0KICAgIGNhdGNoIChlKQ0KeyB9DQogICAgaWYgKGNh c2VTZW5zaXRpdmUgPT0gdHJ1ZSkgew0KICAgICAgICByZXR1cm4ga3ZhbHVlOw0K ICAgIH0NCiAgICBlbHNlIHsNCiAgICAgICAgcmV0dXJuIGt2YWx1ZS50b0xvd2Vy Q2FzZSgpOw0KICAgIH0NCn0NCg0KZnVuY3Rpb24gZ2V0Q29va2llKE5hbWVPZkNv b2tpZSkgew0KICAgIGlmIChkb2N1bWVudC5jb29raWUubGVuZ3RoID4gMCkgew0K ICAgICAgICBiZWdpbiA9IGRvY3VtZW50LmNvb2tpZS5pbmRleE9mKE5hbWVPZkNv b2tpZSArICI9Iik7DQogICAgICAgIGlmIChiZWdpbiAhPSAtMSkgew0KICAgICAg ICAgICAgYmVnaW4gKz0gTmFtZU9mQ29va2llLmxlbmd0aCArIDE7DQogICAgICAg ICAgICBlbmQgPSBkb2N1bWVudC5jb29raWUuaW5kZXhPZigiOyIsIGJlZ2luKTsN CiAgICAgICAgICAgIGlmIChlbmQgPT0gLTEpIHsNCiAgICAgICAgICAgICAgICBl bmQgPSBkb2N1bWVudC5jb29raWUubGVuZ3RoOw0KICAgICAgICAgICAgfQ0KICAg ICAgICAgICAgcmV0dXJuIHVuZXNjYXBlKGRvY3VtZW50LmNvb2tpZS5zdWJzdHJp bmcoYmVnaW4sIGVuZCkpOw0KICAgICAgICB9DQogICAgfQ0KICAgIHJldHVybiAi IjsNCn0NCg0KZnVuY3Rpb24gU2V0Q29va2llKE5hbWVPZkNvb2tpZSwgdmFsdWUp IHsNCiAgICBTZXRDb29raWVWYWx1ZShOYW1lT2ZDb29raWUsIHZhbHVlLCBmYWxz ZSwgdHJ1ZSk7DQp9DQpmdW5jdGlvbiBTZXRDb29raWVWYWx1ZShOYW1lT2ZDb29r aWUsIHZhbHVlLCBwZXJzaXN0LCBlc2NhcGVkKSB7DQogICAgdmFyIGV4cGlyZXMg PSAiIjsNCiAgICBpZiAocGVyc2lzdCA9PSB0cnVlKSB7DQogICAgICAgIGV4cGly ZXMgPSBuZXcgRGF0ZSgpOw0KICAgICAgICBleHBpcmVzLnNldFllYXIoZXhwaXJl cy5nZXRZZWFyKCkgKyAyKTsNCiAgICAgICAgZXhwaXJlcyA9IGV4cGlyZXMudG9H TVRTdHJpbmcoKTsNCiAgICB9DQogICAgZG9jdW1lbnQuY29va2llID0gTmFtZU9m Q29va2llICsgIj0iICsgKGVzY2FwZWQgPT0gZmFsc2UgPyB2YWx1ZSA6IGVzY2Fw ZSh2YWx1ZSkpICsgIjtwYXRoPS87ZG9tYWluPWRlbGwuY29tOyIgKyAocGVyc2lz dCA9PSB0cnVlID8gKCJleHBpcmVzPSIgKyBleHBpcmVzICsgIjsiKSA6ICIiKTsN Cn0NCg0KZnVuY3Rpb24gU3Rvcm1Db29raWUoKSB7DQogICAgdmFyIFNUT1JNU0NP T0tJRSA9ICJTdG9ybVNDb29raWUiOw0KICAgIHRoaXMuc2Vzc2lvbiA9IHsNCiAg ICAgICAgY29va2llTmFtZTogU1RPUk1TQ09PS0lFLA0KICAgICAgICBjb29raWVW YWx1ZTogZ2V0Q29va2llKFNUT1JNU0NPT0tJRSksDQogICAgICAgIHNldENvb2tp ZTogZnVuY3Rpb24oa2V5LCB2YWx1ZSkgew0KICAgICAgICAgICAgdmFyIHZhbHMg PSBnZXRDb29raWUoU1RPUk1TQ09PS0lFKTsNCiAgICAgICAgICAgIHZhciB2YWwg PSBnZXRDb29raWVLZXlWYWx1ZShTVE9STVNDT09LSUUsIGtleSwgdHJ1ZSk7DQog ICAgICAgICAgICBpZiAodmFsICE9IHZhbHVlKSB7DQogICAgICAgICAgICAgICAg dmFyIGlkeCA9IHRoaXMuY29va2llVmFsdWUuaW5kZXhPZihrZXkgKyAiPSIgKyB2 YWwsIDApOw0KICAgICAgICAgICAgICAgIHZhciBhbXAgPSAoaWR4ID09IDAgfHwg dGhpcy5jb29raWVWYWx1ZS5sZW5ndGggPT0gMCkgPyAiIiA6ICImIjsNCiAgICAg ICAgICAgICAgICBpZiAoaWR4ID09IC0xKSB7DQogICAgICAgICAgICAgICAgICAg IFNldENvb2tpZVZhbHVlKFNUT1JNU0NPT0tJRSwgdGhpcy5jb29raWVWYWx1ZSAr IGFtcCArIGtleSArICI9IiArIHZhbHVlLCBmYWxzZSwgZmFsc2UpOw0KICAgICAg ICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBlbHNlIHsNCiAgICAgICAgICAg ICAgICAgICAgU2V0Q29va2llVmFsdWUoU1RPUk1TQ09PS0lFLCB0aGlzLmNvb2tp ZVZhbHVlLnJlcGxhY2UoYW1wICsga2V5ICsgIj0iICsgdmFsLCBhbXAgKyBrZXkg KyAiPSIgKyB2YWx1ZSksIGZhbHNlLCBmYWxzZSk7DQogICAgICAgICAgICAgICAg fQ0KICAgICAgICAgICAgICAgIHRoaXMuY29va2llVmFsdWUgPSBnZXRDb29raWUo U1RPUk1TQ09PS0lFKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfSwNCiAgICAg ICAgZ2V0Q29va2llOiBmdW5jdGlvbihrZXkpIHsNCiAgICAgICAgICAgIHJldHVy biBnZXRDb29raWVLZXlWYWx1ZShTVE9STVNDT09LSUUsIGtleSwgdHJ1ZSk7DQog ICAgICAgIH0NCiAgICB9Ow0KICAgIHZhciBTVE9STVBDT09LSUUgPSAiU3Rvcm1Q Q29va2llIjsNCiAgICB0aGlzLnBlcnNpc3RhbnQgPSB7DQogICAgICAgIGNvb2tp ZU5hbWU6IFNUT1JNUENPT0tJRSwNCiAgICAgICAgY29va2llVmFsdWU6IGdldENv b2tpZShTVE9STVBDT09LSUUpLA0KICAgICAgICBzZXRDb29raWU6IGZ1bmN0aW9u KGtleSwgdmFsdWUpIHsNCiAgICAgICAgICAgIHZhciB2YWwgPSBnZXRDb29raWVL ZXlWYWx1ZShTVE9STVBDT09LSUUsIGtleSwgdHJ1ZSk7DQogICAgICAgICAgICBp ZiAodmFsICE9IHZhbHVlKSB7DQogICAgICAgICAgICAgICAgdmFyIGlkeCA9IHRo aXMuY29va2llVmFsdWUuaW5kZXhPZihrZXkgKyAiPSIgKyB2YWwsIDApOw0KICAg ICAgICAgICAgICAgIHZhciBhbXAgPSAoaWR4ID09IDAgfHwgdGhpcy5jb29raWVW YWx1ZS5sZW5ndGggPT0gMCkgPyAiIiA6ICImIjsNCiAgICAgICAgICAgICAgICBp ZiAoaWR4ID09IC0xKSB7DQogICAgICAgICAgICAgICAgICAgIFNldENvb2tpZVZh bHVlKFNUT1JNUENPT0tJRSwgdGhpcy5jb29raWVWYWx1ZSArIGFtcCArIGtleSAr ICI9IiArIHZhbHVlLCB0cnVlLCBmYWxzZSk7DQogICAgICAgICAgICAgICAgfQ0K ICAgICAgICAgICAgICAgIGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICBTZXRD b29raWVWYWx1ZShTVE9STVBDT09LSUUsIHRoaXMuY29va2llVmFsdWUucmVwbGFj ZShhbXAgKyBrZXkgKyAiPSIgKyB2YWwsIGFtcCArIGtleSArICI9IiArIHZhbHVl KSwgdHJ1ZSwgZmFsc2UpOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAg ICAgICB0aGlzLmNvb2tpZVZhbHVlID0gZ2V0Q29va2llKFNUT1JNUENPT0tJRSk7 DQogICAgICAgICAgICB9DQogICAgICAgIH0sDQogICAgICAgIGdldENvb2tpZTog ZnVuY3Rpb24oa2V5KSB7DQogICAgICAgICAgICByZXR1cm4gZ2V0Q29va2llS2V5 VmFsdWUoU1RPUk1QQ09PS0lFLCBrZXksIHRydWUpOw0KICAgICAgICB9DQogICAg fTsNCn0NCg0KDQoNCmZ1bmN0aW9uIEluaXRQcmljZUZvclByZW1pZXJPZmZlcnMo KSB7DQogICAgdmFyIHBUaW1lciA9IHNldEludGVydmFsKEludGVydmFsUHJpY2lu Z1VwZGF0ZUZvclByZW1pZXIsIDEwMDApOw0KfQ0KDQpmdW5jdGlvbiBJbnRlcnZh bFByaWNpbmdVcGRhdGVGb3JQcmVtaWVyKCkgew0KICAgIHZhciByYW5kID0gTWF0 aC5mbG9vcihNYXRoLnJhbmRvbSgpICogMTAwKTsNCiAgICAkaigiZGl2W0BuYW1l PXJnT2ZmZXJQcmljZV0iKS5lYWNoKGZ1bmN0aW9uKCkgew0KICAgICAgICB2YXIg dXJsID0gJGoodGhpcykuYXR0cigicmVsIik7DQogICAgICAgIHVybCArPSAiJnJk bT0iICsgcmFuZDsNCiAgICAgICAgdmFyIGRpdiA9ICRqKHRoaXMucGFyZW50Tm9k ZSk7DQogICAgICAgICRqLmdldCh1cmwsIGZ1bmN0aW9uKGRhdGEpIHsNCg0KICAg ICAgICAgICAgaWYgKGRhdGEgIT0gdW5kZWZpbmVkICYmIGRhdGEgIT0gbnVsbCAm JiBkYXRhLmxlbmd0aCA+IDApIHsNCiAgICAgICAgICAgICAgICBkaXYuaHRtbChk YXRhKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfSk7DQogICAgfSk7DQp9DQoN Ci8vYXV0b2NvbXBsZXRlDQphZGRzUmVhZHkoZnVuY3Rpb24oKSB7DQogICAgLy92 YXIgbV9hdXRvY29tcGxldGUgPSAiL2FjL2FjLmFzcHgiIDsNCiAgICBpZiAodHlw ZW9mIChtX2F1dG9jb21wbGV0ZSkgIT0gInVuZGVmaW5lZCIgJiYgbV9hdXRvY29t cGxldGUgIT0gIiIpIHsNCg0KICAgICAgICBBZGRBdXRvQ29tcGxldGUoIiNzZWFy Y2hpbnB1dCIsIG1fYXV0b2NvbXBsZXRlLCBudWxsLCBmdW5jdGlvbihldmVudCwg aXRlbSkgeyAkaigiZm9ybVtAbmFtZT0nc2VhcmNoJ10iKS5hcHBlbmQoIjxpbnB1 dCB0eXBlPSdoaWRkZW4nIG5hbWU9J3JlZicgdmFsdWU9J2FjJyA+Iik7ICRqKCJm b3JtW0BuYW1lPSdzZWFyY2gnXSIpWzBdLnN1Ym1pdCgpOyB9KTsNCiAgICB9DQp9 KTsNCg0KZnVuY3Rpb24gQWRkQXV0b0NvbXBsZXRlKGVsZW0sIHVybCwgb3B0aW9u cywgYWN0aW9uKSB7DQogICAgaWYgKG9wdGlvbnMgPT0gbnVsbCkgb3B0aW9ucyA9 IHsgbWF0Y2hTdWJzZXQ6IGZhbHNlLCBzZWxlY3RGaXJzdDogZmFsc2UsIHNjcm9s bEhlaWdodDogMjAwIH07DQoNCiAgICBpZiAoYWN0aW9uKSB7ICRqKGVsZW0pLmF1 dG9jb21wbGV0ZSh1cmwsIG9wdGlvbnMpLnJlc3VsdChhY3Rpb24pOyB9DQogICAg ZWxzZSB7ICRqKGVsZW0pLmF1dG9jb21wbGV0ZSh1cmwsIG9wdGlvbnMpOyB9DQp9 DQo= ------------KLmYUyxWijRzsm8UGCbJ8E Content-Disposition: inline; filename=print_summary_2001.js Content-Type: application/x-javascript; charset=utf-8; name=print_summary_2001.js Content-Location: http://configure.us.dell.com/dellstore/public/print_summary_2001.js Content-Transfer-Encoding: Base64 ZnVuY3Rpb24gcHJpbnRfdmlldyhzVVJMKSB7DQoJZG9jdW1lbnQuUFJJTlRfU1VN TUFSWV9GT1JNLmFjdGlvbiA9IHNVUkw7DQoJZG9jdW1lbnQuUFJJTlRfU1VNTUFS WV9GT1JNLnRhcmdldCA9IHdpbmRvdy5uYW1lOw0KCWRvY3VtZW50LlBSSU5UX1NV TU1BUllfRk9STS5zdWJtaXQoKTsNCn0NCg0KLy91c2UgZm9yIHBvc3RpbmcgdG8g dGhlIGxlYWQgdGltZSBzaGlwcGluZyBkYXRlIGRldGFpbHMgcGFnZQ0KZnVuY3Rp b24gT3BlblBvc3RlZERldGFpbHNQb3AodXJsLCBwX1dpZHRoLCBwX0hlaWdodCwg Yk5vQ2FjaGluZykgew0KCWFnZW50ID0gbmF2aWdhdG9yLnVzZXJBZ2VudDsNCgl3 aW5kb3dOYW1lID0gIlByaW50U3VtbWFyeURldGFpbHMiOw0KDQoJcGFyYW1zID0g IiI7DQoJcGFyYW1zICs9ICJ0b29sYmFyPTAsIjsNCglwYXJhbXMgKz0gImxvY2F0 aW9uPTAsIjsNCglwYXJhbXMgKz0gImRpcmVjdG9yaWVzPTAsIjsNCglwYXJhbXMg Kz0gInN0YXR1cz0wLCI7DQoJcGFyYW1zICs9ICJtZW51YmFyPTAsIjsNCglwYXJh bXMgKz0gInNjcm9sbGJhcnM9MSwiOw0KCXBhcmFtcyArPSAicmVzaXphYmxlPTEs IjsNCglwYXJhbXMgKz0gInRvcD05MiwiOw0KCXBhcmFtcyArPSAibGVmdD0wLCI7 DQoJaWYgKHBfV2lkdGggPT0gIm51bGwiKSB7DQoJCXBhcmFtcyArPSAid2lkdGg9 NTAwLCI7DQoJCXBhcmFtcyArPSAiaGVpZ2h0PTM1MCI7DQoJfQ0KCWVsc2Ugew0K CQlwYXJhbXMgKz0gIndpZHRoPSIgKyBwX1dpZHRoICsgIiwiOw0KCQlwYXJhbXMg Kz0gImhlaWdodD0iICsgcF9IZWlnaHQ7DQoJfQ0KDQoJLy8gY2xvc2UgdGhlIHdp bmRvdyB0byB2YXJ5IHRoZSB3aW5kb3cgc2l6ZQ0KCWlmICh0eXBlb2YgKHdpbikg PT0gIm9iamVjdCIgJiYgIXdpbi5jbG9zZWQpIHsNCgkJd2luLmNsb3NlKCk7DQoJ fQ0KDQoJZG9jdW1lbnQuUFJJTlRfU1VNTUFSWV9GT1JNLnRhcmdldCA9IHdpbmRv d05hbWU7DQoNCglpZiAoYk5vQ2FjaGluZyA9PSB0cnVlKQ0KCQl3aW4gPSB3aW5k b3cub3Blbih1cmwgKyAnJm5jPXRydWUnLCB3aW5kb3dOYW1lLCBwYXJhbXMpOw0K CWVsc2UNCgkJd2luID0gd2luZG93Lm9wZW4odXJsLCB3aW5kb3dOYW1lLCBwYXJh bXMpOw0KDQoJaWYgKGFnZW50LmluZGV4T2YoIk1vemlsbGEvMiIpICE9IC0xICYm IGFnZW50LmluZGV4T2YoIldpbiIpID09IC0xKSB7DQoNCgkJaWYgKGJOb0NhY2hp bmcgPT0gdHJ1ZSkNCgkJCXdpbiA9IHdpbmRvdy5vcGVuKHVybCArICcmbmM9dHJ1 ZScsIHdpbmRvd05hbWUsIHBhcmFtcyk7DQoJCWVsc2UNCgkJCXdpbiA9IHdpbmRv dy5vcGVuKHVybCwgd2luZG93TmFtZSwgcGFyYW1zKTsNCgl9DQoNCglpZiAoIXdp bi5vcGVuZXIpIHsNCgkJd2luLm9wZW5lciA9IHdpbmRvdzsNCgl9DQoNCglkb2N1 bWVudC5QUklOVF9TVU1NQVJZX0ZPUk0uYWN0aW9uID0gdXJsOw0KCWRvY3VtZW50 LlBSSU5UX1NVTU1BUllfRk9STS5zdWJtaXQoKTsNCg0KCS8vIGJyaW5nIHRoZSB3 aW5kb3cgdG8gdGhlIGZyb250DQoJd2luLmZvY3VzKCk7DQp9DQoNCmZ1bmN0aW9u IG1ha2VXaW4yKHVybCwgcF9XaWR0aCwgcF9IZWlnaHQpIHsNCg0KCWFnZW50ID0g bmF2aWdhdG9yLnVzZXJBZ2VudDsNCgl3aW5kb3dOYW1lID0gIlNpdGVsZXQiOw0K CXBhcmFtcyA9ICIiOw0KCXBhcmFtcyArPSAidG9vbGJhcj0wLCI7DQoJcGFyYW1z ICs9ICJsb2NhdGlvbj0wLCI7DQoJcGFyYW1zICs9ICJkaXJlY3Rvcmllcz0wLCI7 DQoJcGFyYW1zICs9ICJzdGF0dXM9MCwiOw0KCXBhcmFtcyArPSAibWVudWJhcj0w LCI7DQoJcGFyYW1zICs9ICJzY3JvbGxiYXJzPTEsIjsNCglwYXJhbXMgKz0gInJl c2l6YWJsZT0xLCI7DQoJcGFyYW1zICs9ICJ0b3A9OTIsIjsNCglwYXJhbXMgKz0g ImxlZnQ9MCwiOw0KCWlmIChwX1dpZHRoID09ICJudWxsIikgew0KCQlwYXJhbXMg Kz0gIndpZHRoPTUwMCwiOw0KCQlwYXJhbXMgKz0gImhlaWdodD0zNTAiOw0KCX0N CgllbHNlIHsNCgkJcGFyYW1zICs9ICJ3aWR0aD0iICsgcF9XaWR0aCArICIsIjsN CgkJcGFyYW1zICs9ICJoZWlnaHQ9IiArIHBfSGVpZ2h0Ow0KCX0NCg0KCS8vIGNs b3NlIHRoZSB3aW5kb3cgdG8gdmFyeSB0aGUgd2luZG93IHNpemUNCglpZiAodHlw ZW9mICh3aW4pID09ICJvYmplY3QiICYmICF3aW4uY2xvc2VkKSB7DQoJCXdpbi5j bG9zZSgpOw0KCX0NCg0KCXdpbiA9IHdpbmRvdy5vcGVuKHVybCwgd2luZG93TmFt ZSwgcGFyYW1zKTsNCg0KCWlmIChhZ2VudC5pbmRleE9mKCJNb3ppbGxhLzIiKSAh PSAtMSAmJiBhZ2VudC5pbmRleE9mKCJXaW4iKSA9PSAtMSkgew0KCQl3aW4gPSB3 aW5kb3cub3Blbih1cmwsIHdpbmRvd05hbWUsIHBhcmFtcyk7DQoJfQ0KDQoJaWYg KCF3aW4ub3BlbmVyKSB7DQoJCXdpbi5vcGVuZXIgPSB3aW5kb3c7DQoJfQ0KDQoJ Ly8gYnJpbmcgdGhlIHdpbmRvdyB0byB0aGUgZnJvbnQNCgl3aW4uZm9jdXMoKTsN Cn0NCg0KDQpmdW5jdGlvbiBmaXhQbmcocG5nKSB7DQoJLy8gZ2V0IHNyYw0KCXZh ciBiYWRCcm93c2VyID0gKC9NU0lFICgoNVwuNSl8NikvLnRlc3QobmF2aWdhdG9y LnVzZXJBZ2VudCkgJiYgbmF2aWdhdG9yLnBsYXRmb3JtID09ICJXaW4zMiIpOw0K CWlmIChiYWRCcm93c2VyKSB7DQoJCXZhciBzcmMgPSBwbmcuc3JjOw0KCQkvLyBz ZXQgd2lkdGggYW5kIGhlaWdodA0KCQlpZiAoIXBuZy5zdHlsZS53aWR0aCkgeyBw bmcuc3R5bGUud2lkdGggPSAkKHBuZykud2lkdGgoKTsgfQ0KCQlpZiAoIXBuZy5z dHlsZS5oZWlnaHQpIHsgcG5nLnN0eWxlLmhlaWdodCA9ICQocG5nKS5oZWlnaHQo KTsgfQ0KCQkvLyByZXBsYWNlIGJ5IGJsYW5rIGltYWdlDQoJCXBuZy5vbmxvYWQg PSBmdW5jdGlvbigpIHsgfTsNCgkJcG5nLnNyYyA9IGJsYW5rLnNyYzsNCgkJLy8g c2V0IGZpbHRlciAoZGlzcGxheSBvcmlnaW5hbCBpbWFnZSkNCgkJcG5nLnJ1bnRp bWVTdHlsZS5maWx0ZXIgPSAicHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9z b2Z0LkFscGhhSW1hZ2VMb2FkZXIoc3JjPSciICsgc3JjICsgIicsc2l6aW5nTWV0 aG9kPSdzY2FsZScpIjsNCgl9DQp9DQoNCmZ1bmN0aW9uIHByaW50U3VtbWFyeVZp ZXdDaGFuZ2UoZWwpIHsNCgl2YXIgcHN2VVJMID0gKGVsLm9wdGlvbnNbZWwuc2Vs ZWN0ZWRJbmRleF0udmFsdWUpOw0KCXByaW50X3ZpZXcocHN2VVJMKTsNCn0NCg0K DQo= ------------KLmYUyxWijRzsm8UGCbJ8E Content-Disposition: inline; filename=s_metrics81a.js Content-Type: application/x-javascript; charset=utf-8; name=s_metrics81a.js Content-Location: http://i.dell.com/images/global/js/s_metrics81a.js Content-Transfer-Encoding: Base64 ZnVuY3Rpb24gdHJhY2tBbmF2TWV0cmljcyggcGFnZVVybCwgbmF2Q2FwdGlvbiwg bmF2T3B0aW9uLCBjQm94VHlwZSApDQp7DQoJDQoJaWYoY0JveFR5cGUgIT0gJ25h dicpDQoJew0KCQlyZXR1cm47DQoJfQ0KDQoJaWYoc19kZWxsID09IG51bGwgfHwg c19kZWxsID09IHVuZGVmaW5lZCkNCgl7DQoJCXJldHVybjsNCgl9DQogICAgICAg IA0KCQ0KCWlmKG5hdk9wdGlvbiA9PSBudWxsIHx8IG5hdk9wdGlvbiA9PSB1bmRl ZmluZWQpDQoJew0KICAgICAgICAJc25hdk9wdGlvbiA9ICcnOw0KCQluYXZDYXB0 aW9uID0gJyc7DQoJfQ0KDQoJc19kZWxsLnBhZ2VOYW1lCT0gcGFnZVVybDsNCglz X2RlbGwuZVZhcjMwIAk9IG5hdk9wdGlvbjsNCglzX2RlbGwuZVZhcjMxIAk9IG5h dkNhcHRpb247DQoJdm9pZChzX2RlbGwudCgpKTsNCg0KfQ0KDQpmdW5jdGlvbiB0 cmFja0FuYXYxXzBNZXRyaWNzKCBuYXZDYXB0aW9uLCBuYXZPcHRpb24gKQ0Kew0K CXNfZGVsbC5lVmFyMzAgCT0gbmF2T3B0aW9uOw0KCXNfZGVsbC5lVmFyMzEgCT0g bmF2Q2FwdGlvbjsNCglzX2RlbGwubGlua1RyYWNrVmFycz0iZVZhcjMwLGVWYXIz MSI7DQoJc19kZWxsLnRsKHRoaXMsICdvJywgJ0FOQVYgdXNhZ2UnKTsNCn0NCg0K ZnVuY3Rpb24gdHJhY2tBZGRUb0NhcnRNZXRyaWNzKCBwcm9kdWN0cyApDQp7DQoJ DQoJaWYoc19kZWxsID09IG51bGwgfHwgc19kZWxsID09IHVuZGVmaW5lZCkNCgl7 DQoJCXJldHVybjsNCgl9DQoNCglpZihwcm9kdWN0cyA9PSBudWxsIHx8IHByb2R1 Y3RzID09IHVuZGVmaW5lZCkNCgl7DQoJCXJldHVybjsNCgl9DQoNCgkvL3NlbWkg Y29sb24gc2VwZXJhdGVkIHZhbHVlIG9mIHByb2R1Y3QgaWRzDQoJc19kZWxsLmxp bmtUcmFja1ZhcnM9InByb2R1Y3RzLGV2ZW50cyI7IA0KCXNfZGVsbC5saW5rVHJh Y2tFdmVudHM9InNjQWRkIjsgDQoJc19kZWxsLnByb2R1Y3RzPSBwcm9kdWN0czsN CglzX2RlbGwuZXZlbnRzID0gJ3NjQWRkJzsNCg0KCS8vV3JhcHBpbmcgInRoaXMi IGxvZ2ljIHdpdGggdHJ5IGNhdGNoLCBzaW5jZSBpdCBpcyBmYWlsaW5nIHdoZW4g ZGVsbCBpcyAzcmQgcGFydHkgb24gdGhlIEVSUCBzeXN0ZW1zLg0KICAgICAgICB0 cnl7IHNfZGVsbC50bCh0aGlzLCdvJywnQWRkVG9DYXJ0Jyk7IH0gY2F0Y2goX3J1 bnRpbWVycm9yKSB7fQ0KDQoJLy9zX2RlbGwudGwodGhpcywnbycsJ0FkZFRvQ2Fy dCcpOw0KfQ0KDQpmdW5jdGlvbiB0cmFja1RhYk1ldHJpY3MgKCkNCnsNCiAgICBz X2RlbGwucGFnZU5hbWU9ICIiOw0KICAgIHZvaWQoc19kZWxsLnQoKSk7DQogICAg c19kZWxsLmV2ZW50cz0iIjsNCiAgICBzX2RlbGwuZVZhcjM4PSAiIjsNCiAgICAN Cn0NCg0KZnVuY3Rpb24gdHJhY2tSYXRpbmdzVGFiTWV0cmljcyAoKQ0Kew0KICAg IHNfZGVsbC5ldmVudHM9ImV2ZW50MyINCiAgICBzX2RlbGwuZVZhcjM4PSAidmll d2VkIGN1c3RvbWVyIHJhdGluZ3MiIDsNCiAgICANCn0= ------------KLmYUyxWijRzsm8UGCbJ8E Content-Disposition: inline; filename=baynote80.js Content-Type: application/x-javascript; charset=utf-8; name=baynote80.js Content-Location: http://i.dell.com/images/global/js/baynote80.js Content-Transfer-Encoding: Base64 dmFyIHB1cmNoYXNlUGFnZVVSTHMgPSBbDQoJbmV3IFJlZ0V4cCgiZWNvbW1cLmRl bGxcLmNvbSIpLA0KCW5ldyBSZWdFeHAoImVjb21tMlwuZGVsbFwuY29tIiksDQoJ bmV3IFJlZ0V4cCgiZWNvbW1cLmV1cm9cLmRlbGxcLmNvbSIpLA0KCW5ldyBSZWdF eHAoImVjb21tMlwuZXVyb1wuZGVsbFwuY29tIiksDQoJbmV3IFJlZ0V4cCgiZWNv bW1cLmFwalwuZGVsbFwuY29tIiksDQoJbmV3IFJlZ0V4cCgiZWNvbW0yXC5hcGpc LmRlbGxcLmNvbSIpDQpdOw0KDQp2YXIgaXNBamF4UGFnZSA9IHR5cGVvZiBfRXZh bEJheW5vdGVUaGFua1lvdVBhZ2UgPT0gJ2Z1bmN0aW9uJzsNCg0KdmFyIGlzUHVy Y2hhc2VQYWdlID0gZmFsc2U7DQpmb3IgKHZhciBpID0gMDsgaSA8IHB1cmNoYXNl UGFnZVVSTHMubGVuZ3RoOyBpKyspIHsNCglpc1B1cmNoYXNlUGFnZSA9IGlzUHVy Y2hhc2VQYWdlIHx8IHB1cmNoYXNlUGFnZVVSTHNbaV0udGVzdCh3aW5kb3cubG9j YXRpb24uaHJlZik7DQp9DQoNCmlmIChpc1B1cmNoYXNlUGFnZSAmJiAhaXNBamF4 UGFnZSkgew0KCXZhciBiYXlub3RlX3RhZyA9IHt9Ow0KfQ0KDQpmdW5jdGlvbiAg Ym5fc2VuZE9yZGVySW5mbyh1cmwpIHsNCglpZiAoaXNQdXJjaGFzZVBhZ2UgJiYg IWlzQWpheFBhZ2UpIHsNCgkJYmF5bm90ZV90YWcgPSB1bmRlZmluZWQ7DQoJCXJl dHVybjsNCgl9DQoJaWYgKHR5cGVvZiBibl9jdXN0b21fc2VuZE9yZGVySW5mbyA9 PSAnZnVuY3Rpb24nKSB7DQoJCWJuX2N1c3RvbV9zZW5kT3JkZXJJbmZvKHVybCk7 DQoJfQ0KfQ== ------------KLmYUyxWijRzsm8UGCbJ8E Content-Disposition: inline; filename=dellecomicon.ico Content-Type: image/x-icon; name=dellecomicon.ico Content-Location: http://i.dell.com/images/global/branding/dellecomicon.ico Content-Transfer-Encoding: Base64 AAABAAIAICAAAAEAIACoEAAAJgAAABAQAAABACAAaAQAAM4QAAAoAAAAIAAAAEAA AAABACAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAA////AP///wD///8A////AP// /wD///8A////AP///wD///8A////AP///wDz584w4cF+gderUK7UpEC/1KRAv9Sk QL/UpEC/16tQruHBfoHv374/////AP///wD///8A////AP///wD///8A////AP// /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////APr2 7g/hwX6BzZUg3saGAP/GhgD/xoYA/8aGAP/GhgD/xoYA/8aGAP/GhgD/xoYA/8aG AP/JjRDu4cF+gfr27g////8A////AP///wD///8A////AP///wD///8A////AP// /wD///8A////AP///wD///8A////AP///wDhwX6ByY0Q7saGAP/GhgD/xoYA/8mN EO7UpEC/4cF+geHBfoHhwX6B4cF+gdSkQL/JjRDuxoYA/8aGAP/GhgD/yY0Q7uHB foH///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// /wD27t4f0Jwwz8aGAP/GhgD/xoYA/9uzYJ/s2K5Q////AP///wD///8A////AP// /wD///8A////AP///wDs2K5Q27Ngn8aGAP/GhgD/xoYA/9CcMM/27t4f////AP// /wD///8A////AP///wD///8A////AP///wD///8A8+fOMMmNEO7GhgD/xoYA/9Sk QL/27t4f////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// /wD///8A9u7eH9SkQL/GhgD/xoYA/8mNEO7z584w////AP///wD///8A////AP// /wD///8A////APPnzjDJjRDuxoYA/8aGAP/hwX6B////AP///wD///8A////AP// /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AOXJ jnDGhgD/xoYA/8mNEO7z584w////AP///wD///8A////AP///wD69u4P0Jwwz8aG AP/GhgD/6NCeYP///wD///8A////AP///wD///8A////AP///wD///8A////AP// /wD///8A////AP///wD///8A////AP///wD///8A////AOjQnmDGhgD/xoYA/9Cc MM/69u4P////AP///wD///8A////AN66cI7GhgD/xoYA/+jQnmD///8A////AP// /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// /wD///8A////AP///wD///8A////AOjQnmDGhgD/xoYA/966cI7///8A////AP// /wDz584wxoYA/8aGAP/Xq1Cu////AP///wD///8A////AP///wD///8A////AP// /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// /wD///8A////ANerUK7GhgD/xoYA//PnzjD///8A////ANuzYJ/GhgD/yY0Q7vr2 7g////8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A+vbuD8mN EO7GhgD/16tQrv///wD27t4fxoYA/8aGAP/hwX6B////AP///wD///8A////AP// /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// /wD///8A////AP///wD///8A////AP///wD///8A4cF+gcaGAP/GhgD/9u7eH+XJ jnDGhgD/xoYA//bu3h////8A////AP///wD///8A////AP///wD///8A////AP// /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// /wD///8A////AP///wD27t4fxoYA/8aGAP/lyY5w16tQrsaGAP/UpEC/////AP// /wD///8A////AP///wD///8A////AP///wD///8A////AOXJjnDeunCO////AP// /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// /wDUpEC/xoYA/9erUK7JjRDuxoYA/+HBfoH///8A1KRAv8aGAP/GhgD/xoYA/8mN EO7lyY5w////APr27g/bs2CfxoYA/8aGAP/UpEC/+vbuD+/fvj/GhgD/xoYA/8aG AP/GhgD/1KRAv8aGAP/GhgD/xoYA/8aGAP/GhgD/////AOHBfoHGhgD/yY0Q7saG AP/GhgD/7NiuUP///wDUpEC/xoYA/8aGAP/GhgD/xoYA/8aGAP/hwX6B0Jwwz8aG AP/GhgD/xoYA/8aGAP/NlSDe5cmOcMaGAP/GhgD/xoYA/8aGAP/UpEC/xoYA/8aG AP/GhgD/xoYA/8aGAP////8A79++P8aGAP/GhgD/xoYA/8aGAP/v374/////ANSk QL/GhgD/1KRAv////wDNlSDexoYA/8aGAP/GhgD/xoYA/8aGAP////8A1KRAv8aG AP/GhgD/xoYA/8aGAP/bs2Cf79++P/PnzjDGhgD/xoYA/9CcMM/v374/79++P/// /wDv374/xoYA/8aGAP/GhgD/xoYA/+/fvj////8A1KRAv8aGAP/UpEC/////AOHB foHGhgD/xoYA/8aGAP/NlSDexoYA/8aGAP////8A27Ngn8aGAP/GhgD/xoYA/+HB foH///8A////AMaGAP/GhgD/1KRAv////wD///8A////AO/fvj/GhgD/xoYA/8aG AP/GhgD/79++P////wDUpEC/xoYA/9CcMM////8AyY0Q7saGAP/GhgD/xoYA/8mN EO7///8AyY0Q7saGAP/NlSDe27Ngn8aGAP/GhgD/4cF+gf///wD///8AxoYA/8aG AP/UpEC/////AP///wD///8A79++P8aGAP/GhgD/xoYA/8aGAP/o0J5g////ANSk QL/GhgD/xoYA/8aGAP/GhgD/xoYA/+zYrlDbs2CfxoYA/8aGAP////8A0Jwwz9Cc MM/s2K5QxoYA/8aGAP/hwX6B////AP///wDGhgD/xoYA/9SkQL////8A////AP// /wDo0J5gxoYA/8aGAP/QnDDPxoYA/9uzYJ////8A1KRAv8aGAP/GhgD/xoYA/9er UK7v374/////AP///wDlyY5wxoYA/8aGAP////8A////AO/fvj/GhgD/xoYA/+HB foH///8A////AMaGAP/GhgD/1KRAv////wD///8A////AN66cI7GhgD/0Jwwz9uz YJ/GhgD/zZUg3v///wD///8A////AP///wD///8A////AP///wD///8A////AP// /wDv374/7NiuUP///wD///8A////AP///wD///8A////AP///wD///8A////AP// /wD///8A////AP///wD///8AzZUg3saGAP/bs2Cf7NiuUMaGAP/GhgD/79++P/// /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AO/f vj/GhgD/xoYA/+zYrlD///8AzZUg3saGAP/UpEC/////AP///wD///8A////AP// /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// /wD///8A////AP///wD///8A////AP///wD///8A1KRAv8aGAP/JjRDu////AP// /wDhwX6BxoYA/8aGAP/v374/////AP///wD///8A////AP///wD///8A////AP// /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// /wD///8A////AO/fvj/GhgD/xoYA/+HBfoH///8A////APr27g/NlSDexoYA/8mN EO769u4P////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD69u4PzZUg3saG AP/NlSDe+vbuD////wD///8A////AOzYrlDGhgD/xoYA/9CcMM/69u4P////AP// /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// /wD///8A////AP///wD///8A+vbuD9CcMM/GhgD/xoYA/+zYrlD///8A////AP// /wD///8A////AN66cI7GhgD/xoYA/9CcMM/69u4P////AP///wD///8A////AP// /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////APr2 7g/QnDDPxoYA/8aGAP/eunCO////AP///wD///8A////AP///wD///8A////ANuz YJ/GhgD/xoYA/9CcMM/z584w////AP///wD///8A////AP///wD///8A////AP// /wD///8A////AP///wD///8A////AP///wDz584w0Jwwz8aGAP/GhgD/27Ngn/// /wD///8A////AP///wD///8A////AP///wD///8A////ANuzYJ/GhgD/xoYA/8aG AP/bs2Cf9u7eH////wD///8A////AP///wD///8A////AP///wD///8A////AP// /wD27t4f27Ngn8aGAP/GhgD/xoYA/9uzYJ////8A////AP///wD///8A////AP// /wD///8A////AP///wD///8A////AOjQnmDJjRDuxoYA/8aGAP/GhgD/16tQrujQ nmDz584w////AP///wD///8A////APPnzjDo0J5g16tQrsaGAP/GhgD/xoYA/8mN EO7o0J5g////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// /wD///8A////APbu3h/bs2CfxoYA/8aGAP/GhgD/xoYA/8aGAP/GhgD/xoYA/8aG AP/GhgD/xoYA/8aGAP/GhgD/xoYA/8aGAP/bs2Cf9u7eH////wD///8A////AP// /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// /wD27t4f5cmOcNCcMM/GhgD/xoYA/8aGAP/GhgD/xoYA/8aGAP/GhgD/xoYA/9Cc MM/lyY5w9u7eH////wD///8A////AP///wD///8A////AP///wD///8A////AP/w D///gAH//gAAf/wf+D/4f/4f8P//j+P//8fH///jx///44////GP///xn///+R/9 //gQcMAIMABADDECBjwxAQY8MQQGPDAiRjwQecY4H///+J////mP///xj///8cf/ /+Pj///H4f//h/D//w/4P/wf/g/wf/8AAP//4Af/KAAAABAAAAAgAAAAAQAgAAAA AAAABAAAAAAAAAAAAAAAAAAAAAAAAP///wD///8A////AP///wD27Nok4L96g9Gd MsrNlSDezZUg3tGdMsrfu3KL9uzaJP///wD///8A////AP///wD///8A////APz6 9gfduGqTxocE+tSlQrvmypJr79++P+/fvj/mypJr1KVCu8aHBPrduGqT/Pr2B/// /wD///8A////APv48gzSoTrCzJQe3vHjxjf///8A////AP///wD///8A////AP// /wDx48Y3zZYi29KhOsL7+PIM////AP///wDbtGKbzpcm1/jy5hj///8A////AP// /wD///8A////AP///wD///8A////APjy5hjOlybX27Rim////wDy5coyxocE+vPn zi////8A////AP///wD///8A////AP///wD///8A////AP///wD///8A8+fOL8aH BPrx48Y32bBao9iuVqf///8A////AP///wD///8A////AP///wD///8A////AP// /wD///8A////AP///wDYrlan2bBao8uRGOfs2K5Q5cmOb+HBfn7q1KZX/fz6A+C/ eoPduGqT+fTqFOHBfn7hwX5+5cmOb+HBfn7hwX5+7NiuUMuRGOfGhgD/9uzaJM2V IN7Xqk6ux4kI98+ZKtPGhgD/16pOrs+ZKtPGhgD/1adGttSlQrvIiwzz2rJen/bu 3h/GhgD/xoYA//bu3h/NlSDe586aY82WItvGhgD/1qhKs9SlQrvSoDjHxoYA/+/f vj/hwX5+zZUg3v///wD27t4fxoYA/8iLDPPv374/zZUg3saGAP/UpUK78OHCOs2W Itvkx4py6tSmV8aGAP/v374/4cF+fs2VIN7///8A8OHCOsiLDPPUpUK74L12h/// /wD///8A////AP///wD69u4P+fTqFP///wD///8A////AP///wD///8A////AOC9 dofUpUK76tSmV8mNEO769u4P////AP///wD///8A////AP///wD///8A////AP// /wD///8A////APr27g/JjRDu6dKiXP38+gPRnTLK1qhKs/38+gP///8A////AP// /wD///8A////AP///wD///8A////AP38+gPXqk6u0Z0yyv38+gP///8A9uzaI8uR GOfYrFKr+/jyDP///wD///8A////AP///wD///8A////APv48gzYrFKry5EY5/bs 2iP///8A////AP///wD169Ymz5kq08uRGOfkx4py9uzaJP///wD///8A9uzaJOTH inLLkRjnz5kq0/Xr1ib///8A////AP///wD///8A////APz69gflyY5v0Jsuz8aG AP/GhgD/xoYA/8aGAP/Qmy7P5cmOb/z69gf///8A////AP///wD4HwAA48cAAM/z AACf+QAAv/0AAD/8AAB8/gAAQAIAAFA2AABFtgAAP/wAAL/9AACf+QAAz/MAAOfn AAD4HwAA ------------KLmYUyxWijRzsm8UGCbJ8E Content-Disposition: inline; filename=img.gif Content-Type: image/gif; name=img.gif Content-Location: http://i.dell.com/img.aspx?p=G4ULg6gAJnlsTU6J3OJ%2b0snMsuA%2bSeSXgFMHkN66ZoyC%2bP2rNVPpkaYcSoXJuzCR18HrtjMa6%2ffnRAXE06d71sjcsuBoFevi%2fE8%3d Content-Transfer-Encoding: Base64 R0lGODlhrgAgAPcAAAAAACUlJTw8PFFRUWNjY3R0dIWFhZSUlKOjo7Gxsb+/v8zM zNnZ2ebm5vPz8////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMwAAZgAA mQAAzAAA/wAzAAAzMwAzZgAzmQAzzAAz/wBmAABmMwBmZgBmmQBmzABm/wCZAACZ MwCZZgCZmQCZzACZ/wDMAADMMwDMZgDMmQDMzADM/wD/AAD/MwD/ZgD/mQD/zAD/ /zMAADMAMzMAZjMAmTMAzDMA/zMzADMzMzMzZjMzmTMzzDMz/zNmADNmMzNmZjNm mTNmzDNm/zOZADOZMzOZZjOZmTOZzDOZ/zPMADPMMzPMZjPMmTPMzDPM/zP/ADP/ MzP/ZjP/mTP/zDP//2YAAGYAM2YAZmYAmWYAzGYA/2YzAGYzM2YzZmYzmWYzzGYz /2ZmAGZmM2ZmZmZmmQAAAGZm/2aZAGaZM2aZZmaZmWaZzGaZ/2bMAGbMM2bMZmbM mWbMzGbM/2b/AGb/M2b/Zmb/mWb/zGb//5kAAJkAM5kAZpkAmZkAzJkA/5kzAJkz M5kzZpkzmZkzzJkz/5lmAJlmM5lmZplmmZlmzJlm/5mZAJmZM5mZZpmZmZmZzJmZ /5nMAJnMM5nMZpnMmZnMzJnM/5n/AJn/M5n/Zpn/mZn/zJn//8wAAMwAM8wAZswA mcwAzMwA/8wzAMwzM8wzZswzmcwzzMwz/8xmAMxmM8xmZsxmmcxmzMxm/8yZAMyZ M8yZZsyZmcyZzMyZ/8zMAMzMM8zMZszMmczMzMzM/8z/AMz/M8z/Zsz/mcz/zMz/ //8AAP8AM/8AZv8Amf8AzP8A//8zAP8zM/8zZv8zmf8zzP8z//9mAP9mM/9mZv9m mf9mzP9m//+ZAP+ZM/+ZZv+Zmf+ZzP+Z///MAP/MM//MZv/Mmf/MzP/M////AP// M///Zv//mf//zP///yH5BAEAABAALAAAAACuACAAAAj/AB8IHEiwoMGDCBMqXMiw ocOHECNKnEixosWLGDNq3Mixo8ePIEOKHEmypMmTKFOqNMlgwcqXHQkImEnTQMMD Agh4JBAAAIAAAhTAHGpRwM8ASH0GaLDQAAABHY0CFdAzAAOiWCMatSkQQc8BCx0s uPoQQQGFTgUwfeDAKNiscBluJYjgZ8cFTxXOHXjAbty/CPcO7OlyI16oCQU/WIAU sOOCih8QFojzAIMBAq4yyDkQM4MENBMI3Cx1JlnIAN4i3KxzoEyyrBvIFGBTAWba BGPPrn2bK12aA4QSHADWQM7NqkcLSL5Rcd0AA53yROry8ECjBYD2BCCU9E/TB+sC /2h90Pp1AIUP0/Q5YKrPswLVz2TvHgB8gQW+GwUgenAAAt9Jxh1B+ZHHkWBepRbd TwSstVheAhklgAMCAUieeQkB+BQC5UEYIXrx+XQAZSKSCF2IAIz4QF8pmkhQT8L1 hZhAVYlGoYUEGSVcVEcl5eEDTp04EIZGcRjijBgmlGBqOx6ZI4gPCimZlI2FSOWV AzWw3EAM+EUjAEYKpICXDVTpkVRIzaTigvc5+WFhDyL5I1rbtZmkUen9aOaUQ+qJ ZUJ77vklWX0ZeCAAvh3kVKJxngcnhkku1MAAJbr5pqV8+tfnjJnSKOUDCFCV1J8E tvgApU0eymhBixZEJJSNYv/aEIBC3gllkoHW6ueLUlL6nwEG5GpQl4gJqipaiLrq IZ6bNrvalrn9tJateXIqLKbXPtBlABR6yutBjY1p6LEJtUrQq496GOm5Xg4GAFnU YksqrqQ6dR9epJaKAICpkouQuc4+wKyl67444EDPBSxgtd9qKm/DK9q3YL5cjmes v4omy+6MA8capYMG+cphAwmSV+bBGjLssLcPr4wvU4y1e/GU44kUGasaB9wxhidT dxAD2/nI6anfuacyy0jTC7HAPWZH8UD5HQzSAQb0S5ACVRfkgAFrUt0tW1znZsAA BnxtkHEzDRAmQTgJMKLXAm29JpCJAjuQ3ATZHR2jBSwux6HeAgGu7KePFf6YdIYn XriOijceV5mEOy65Sl6NO/nlmGeu+eacd+755yQFBAA7 ------------KLmYUyxWijRzsm8UGCbJ8E Content-Disposition: inline; filename=spacer.gif Content-Type: image/gif; name=spacer.gif Content-Location: http://i.dell.com/images/global/general/spacer.gif Content-Transfer-Encoding: Base64 R0lGODlhAQABAID/AMDAwAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw== ------------KLmYUyxWijRzsm8UGCbJ8E Content-Disposition: inline; filename=xps-17-right-standard-120.jpg Content-Type: image/jpeg; name=xps-17-right-standard-120.jpg Content-Location: http://i.dell.com/images/global/configurator/chassis/xps-17-right-standard-120.jpg Content-Transfer-Encoding: Base64 /9j/4AAQSkZJRgABAgAAZABkAAD/7AARRHVja3kAAQAEAAAARgAA/+4ADkFkb2Jl AGTAAAAAAf/bAIQABAMDAwMDBAMDBAYEAwQGBwUEBAUHCAYGBwYGCAoICQkJCQgK CgwMDAwMCgwMDQ0MDBERERERFBQUFBQUFBQUFAEEBQUIBwgPCgoPFA4ODhQUFBQU FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU/8AA EQgAawB4AwERAAIRAQMRAf/EAKQAAAEDBQEAAAAAAAAAAAAAAAADBAUBAgYHCAkB AQACAwEBAAAAAAAAAAAAAAABAgMEBQYHEAABAwMBBAYIBAQFBQAAAAABAgMEABEF BiExEgdBUXGREwhhgaGxIjJSFEJigiPBojNz0XKSQxXhslNEJREBAAECBAMECQQD AQAAAAAAAAERAhIDBAUxQZGBobEGIVFh0eHxQlIT8HEyksEUFRb/2gAMAwEAAhED EQA/AO/qAoCgKAoCgKAoCgKAoCgKAoCgKAoCgKAoCgKAoCgKAoCgKAoCgKAoCgKA oCgSckxmhd15CB1qUB7zQMH9Tabi3+6zEFm2/wASSyj3qFBHOcxOX7P9bVeHbtv4 8hFT73KCZxmWxWaiJn4adHyMFZKUyYjqH2iU7wFtlQ2dtA8oCgKAoCg1bz+5l5fl ZoIZ3T8VmTm505jGQTLClRmVvpW4p1xKFJUoJQ0qyQoXVbbapgc1P82fMlLCHGdR oQhwcREbHQWgAdot9w0s2N669m0aq6KxZPd73Ku3XS2zSb/H3I17W3mUlqIf1XKb bN9raoDSrdjTCLd9bEbFqp+mOsME73pY+qekoaY5z/nkleu8o1fqyshkdzFhWaPL +pn7evwYZ3/TRwxT2fFCytKc551/vOYWQUDvCstknPYVAVmjy5nc7re/3MU+Ycnl bd3e9ESuUWrciEDJ6yecCRZRKpLxNze543hc1mjy5dzvjowz5is5WT1XR/Lpj5I4 5GqHnlfiSIwB/mdVU/8An4t4393xR/368LO/4Hjfly0q2QX8rMdt9KWUe9CqvGxZ fO6e5Wd8zOVsd50ORfL+N/VdmOKH1PIT7EtissbJke3r8GKd6z/Z+u1tvy1qg8ue azej8S683pzV+OkFMZ1ZcT/yuNIeSsX3EsF0G2+w6q4O66KzTzbNnCXb2vW3aiLs XGHaFcJ2hQFAUBQaq8x2ETmuUGfJSCvFfb5dJ38KMfIbfdPraS4n11MDmrHTG2Yb MV15IejjwFBSgFEtfBfb12vX1jbM2MzTWTXlTp6Hy3c8qcvU3xTnXr6TsykncoHs N66lHLqSXLt00oVM3si0j53Up7VCqzRaKo9/ORUbnOI/l21jm+2F4tlHOaiWlQVH BSsfKonb3CsV2ZX0RDJFtOZ5Hz0iXZEtwMHoV8oPq6Kx/jmlaMsXxXidl5pvaNqv qO01SjLCKk51en9R6U1i0spVp7MRJUhQP/puLDMlP6m1kVwN7yceRi+2fg72z5uH Ow/dD0PBBAINwdxrwb2ooCgKAoI/PYmPn8Hk8FLF4uTiPwnweluQ2ptXsVQeeeSU +wYi5SSiS/EjuSEH8L6EeC8k+kONLvXvdhzMWTNvqnxeG3+zDnW3fdHgjzLt02r0 jzdSSpp6VHvqAn9ypZsgFR9ApFszwK0XBKztdVwDqG01mtyJ5qTmepcZLTI+DYev eaz22RbwUxTJq7P37alIY1A5H+Bw8bHV0jsrDflxLNZfMFp8qPl8dJjIWFpebUi3 USNlx21zdTk48u6yecOjps3BfbfHKXfPJbUytXcrNLZt5ZXMXBbjTVKN1GTDvHdJ 7VtlXrr5VMUmj6VE1Z5UJFAUBQFBwDzT08MNzE1PEdUUxU5WSpoJNiFT0oyKRYj5 Ql+w7DXr/LV0TnXWTzt8Pm8r5jsn8Nt8cp8fkw1ceGn6ldqv8LV9C/Da8FjkiVxW /lbTfrO331P47Y5GKSLk8JFk2A6hsFWoGTs89dQtEGTs/wBNVXiDJycT01VaINXJ hPTVZXoQE1xtXG2soWOlJsapNJXiJh2t5L9VJyWlM7ppxwKfx0tE1oX/ANuWnw1A D0KZ4j6V18q3XJjK1N8RwrXr6X0nbs2czT2zPGlOjp6uU6IoCgKAoONvNRBRiuYc KYscMXOQ4j6SNl5MJ5yK8b/2pDPdXZ2fO/FqrJ9tOvocvdcn8mlvj2V6elqcxoiR /TB/zEn319YxS+YYYIuNRf8Awo7hUVlakGT0SGveyn1XHuqapojpGJiL+QrbPoVc e29TUoiJWFkpuWHUuflV8J/iKrK0IWVHnR7+MypKfqA4k94vWOaslsQj1Ok3JOzp NY5uZYtMH5pV8DJ7Vf4VrX5vqbVmTzlvzye6qc07zVh4x8lEPPNPY5RVcDxFo8Zs jrPGwlI/zV4bfbbcdt0caeHzev2mZwXRPrejNeZdwUBQFAUHK3nlxa06K03qthJL uLyTkF1Y/CxkGCq5PV4kdodprJl3TbdExyVvti62Ynm5vGqMAppLhykQcQB4fHbJ 2jdYKvX1v/oaalfyW/2h8w/0NRWmC7+smEjWWnWwVfehYHS2hax3hNqwX7xpLfrj srLPZtWqu+ie6EU7zBwW0NB509BCUge1VaV/mHTRwxT2e9t27FqJ40jtNFa7jubG 44HUVuW9nD/GtO/zNb9Nk9s/NuW+XrvqvjofN5/DLxxmSs9GizSFFOOEZ9xy6SQA XQeAcW8e2tK/zLnT/Gy2Os+5uWeX8qP5XTPSPeZt6nwp2rlSHutLSE2/7AfbWlfv +ru4TEftEf5q2rdk0scYme0i7nNOvL/awT8t2xV+4FbhvJF1D2VoZm46m/jfPh4N /L0Gns4WR+v3M15Se1xLjYZiOncAtTdxxbRYJCD7K0rs2+7jMz2tu3Ltt4REHOht S5fD8wNN6gmxEHHYrJxZkjhUpBKY7iXCAoBVt301hoyPSPRvPfl5rEIbZyAx01QF o879oEn6Vn4f9Vj6KrRDZTbjbqEuNKC21C6VpIKSD0gioF1AUBQag80WJx2Z5Eax i5FLhSiM0/ELPCFpmNSGlRz8ZA4fFCQv8hNttTA8o3o8tMhTciP9qpP+264pRB7e Hb3CsiFW4Ycv4j6UBJ+JKSohPqBoJdjCsEqS8+5xNqShSEhKbLVewv2Dab0E5G07 iQQFkrHGpJUtajZKLXXYG3CeipQmoeIxDaeNMdCOFvxFkISSL7EbTfeSKmof2xEb xEqWhC7tt2KwLKPxKJHSnZSqV6VxCUrYR+2pxwoO8dQST0g7/RUJNeGKpTD7Twae UnhfC7kkjYOIC4tbcbVCUziYP3UhKW0JLe3aD4dr9RNyL2ts6KDLEaZkgBX3DTZF yjgSpVlHp/ANno76iiWX6X1xqrQCSrHZ6Qhjiv4LxR9t2FtziBv9XzemlENzaR81 eElrTC1ZEDTwsDOxpLzfaplXxAD8il9lVoN74DUWE1RjkZbATW58BZKfFaJ+FYAJ SpJAUlQBF0qANVQlKDHNfYPG6k0dmMHmGUP42bHLb7biStNrghXClSTdJAULKBuN lB55az8u+rMBlYmMR4WY0vNWURM8txLRjf3VqtsA6LX6Lddqpo1NrLQWf0JPMLNR yGF7WJSRxsrQfxtq3HZ/1tVomqJijH4y1oUFePtHFY2ufjuDtJ9JqaIS6ZiFJbSn 9vgaSyeBSvjsSSo8RO032gbPRU0DhuVFCrrQFki11Eq3dd7j2VIds6gixFFP2aVq I4QFA8Iv0jwynbSqaLkZ4FQ4IoKydhWLm/66iomsVp/VWdcSvE4CdJKjs+2ivuIP rQgp9tVm5ZtDBcudfwm0PzsEcei1y5kZUSCkdviu8X8lRihNGSDTeTXZEnN4mPfe iGuVlnOy0ZpCf56riKH7XKuflQExkZmcFb1x8azGZP6pbjhHrRUYpPQyPE+XvMyF I+6xDrcckcf32VUklP8AbhoZA7jSslYdI8u9F4jQmnU4bDxW4jTjqpMkNrU4VyHE pSpalKAJNkJT2AUVmWWUQY5l0s4uUoAKUUFKQdoJX8I99BgMBgMu8LyAphz4JDSh xNOJO+6TcUGI665LYzN4yQziYzUnHPXWvCvkhoLI+eK5vZX2fDUL1cZaj8vWQh5p +NByLMKOCbxMh4seQ0fpVwNOIUPzIIv1VfEjCuxfl9aWtKchqRCnelvHwJk1XqUU tJpjMPtbEwfloxT3DfF6lyx6CtEbGsH9SvFWBUYpKQ2RhPLTHZCfB0NjWTvDuZyE nIHtLaChPsqKymsNjYbknk8elIjy8Rg0j8OHxMdKv9bwWqoMTJm+UsJ0f/Yz+Xn/ AFNmUqOyf0NcIpRFZSUDlToCAoOsYNh13pdfCn1HtKyalFWTRMNjoQCYMBmOkbvC aQ37gKB4GFnfYDvohcIw/EruFvfegVQhLYsndvoLqBrPZMhkNdBUCewbaCJ/4n0U C7EJ1jYj5DvT0UFz2JgS7KlxWn1DcXW0rPtBokqxAiRRaNHQ0OptCU+4CiC1ljcn voKcL53AD1UFPBeO9Z91BURbnbt7aB4AEgAbhsFBWgKAoCgKChoKd1Ad1AD1UB3U Fe6gO6gO6gqKAoCgKAoCg//Z ------------KLmYUyxWijRzsm8UGCbJ8E Content-Disposition: inline; filename=spacer.gif Content-Type: image/gif; name=spacer.gif Content-Location: http://i.dell.com/images/global/configurator/general/spacer.gif Content-Transfer-Encoding: Base64 R0lGODlhAQABAID/AMDAwAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw== ------------KLmYUyxWijRzsm8UGCbJ8E Content-Disposition: inline; filename=XPS17_3D_ConfigStore.swf Content-Type: application/x-shockwave-flash; name=XPS17_3D_ConfigStore.swf Content-Location: http://i.dell.com/images/global/products/flash/avatars/XPS17_3D_ConfigStore.swf Content-Transfer-Encoding: Base64 Q1dTCtVdAAB4nNS7ZVhdy5Y2OmHh7u4S3N3dgwa34K4Lh+Aa3F2CBXcPENwJBA0E SHCCW3C7a+9z9une3X27v/vdXz2fZ9Wco8YYb1WNKW/Vs0bZACS/ADhxACCAAqQx CQAACMSGgQUAYbCFlaCGtCyFt6ODk5sgRBKhsnF3dxFkY/Py8mL14mJ1BluzcQgI CLCxc7JxcrJALFjcfJzcTb1ZnNyoqUQp/kSQtnQzB9u6uNs6O1H8IZuaOXu4i1BR /RPW29HlX7BObqymFs5mlqzmzo5s3qYubBys7Gx/4ECMBKXAlqbuzmBNZ2cHUYk/ rChkHUzdbCjUwM5Wlm5uEHhTBwqpNzzCbP/R+t/5W0pDfqKc7BwcLOwcLJx8mhzs guy8gpx8LJCSnf3f+f7D8h+uypbupham7qb/yZlDkIdbkONvzn+z/ae7s4Wtlc// kfO/WVIIs/2H6P0fx1NZ+b+PqKMj21/Wbu4allb/vbWbpo+LJZuGpZuzB9jcEmJO /c87oqwsqODk5m7qZG6pIC0KqWC1tbUQlOCRkJXk55bhkuaUkIGMVkBSlktWhoeb g49HQlKC5x8D/bvrX2jSzuYejpZO7v9Es/j/gPbvXP9CUwXbWttCnon/AlVAikOS n4ufk4vvv0f9LyD+1VdLsK2npYUs2Nnxz7vgYgp2s/wjUiJUf4XqjzD9GV9B2/8c pv+5C//J9S80i/+bAf0n17/QnP//hOn/FYLiXzfm3+L0f/1IW5j/6wl18QA7/PnZ sTBns3Sw/KM1N8hTyvHnV8LCXNDKGexo6i5q6uLiYGtu+gcgmzeLm42zub2Xqacl i9UfXwxhtn8z/C+7xPbPD58oBSAF/fLy0oOLDPkoQgFvzC2dLCk4AOAFoZjpjwop Ssj10ss6gKEoqyALQEH9UQkpXlYAKQAOBhYBDgYGEQ4ZBQkODhYiIaGgY6OhoCBD JEQUDAwUEgoKYmwUFCRkJBQ0bGKIgIOOgoEDqaXAhvz+AIGCh8egIIBHJaL448BF QcWk+OvAJcAgovgfj5deABMBWASqQVBUADQmFAgT6mUQIIEMB/6P3v7bAQ2CgYWD h0KAaFUwAGgoEDQIFoQAgwSPAIIMChoEwGBiUcJySMBhU6mbwrsm4eBScwYXNsxI aoDT8Gi4tMzcQhr7Zt9YJKekbpwh4EvLaLqHFYX3n0PwiCEtQYP+1hzUP5qDKLkw IY1BJHgESBv/UmLCUHJgSaibwmK7BidtnOFQcZoVNvTNwFFzhZy/fAdQQBBETBAm IAZclCLh0ENJhrNZ27OsLXTxjs4aqlJJEVFMcAkAgGCyDQzTByxx4uwfInl+FBs3 eLzfDP33bJU4x6zUCxEmJrncHHzNWj5PPwgfDbUMOppaIuQqkIS1c2KuJV15YAf5 WHjUiryzoOat82wnRTDdXs+POp80fHWiOyGH3Bh3rWHb1To7GJBGiP47GPf0IR/X yiJshEiOyis8DQCpINwGxr3xHrG4lcP53H33GsGvVA61JEQKdso1QdSqXo6UeK9P 5PX5gDGhyCo6nmYC6npbl0SDJfL4u1SrbmyvI4MQhYDk0csSDYVgHKcP6PhcDTTk jXW5yE28RjkbaiMW+XiJJ4P4ZmVq58H3Qo5v3o/Ics/ptR4xmL7VrUve9kGO8TSP dhlE9bdnlhenaMx1PlRbOL47Mtvk9aryQkhedEYuJ2a4hJ/G3XkB7EkTSOBjOw2g HWq5mOnIi3SPT+HNdX496lfoWC16MsQNHDGVeZSZihdKhntO6dKrFYpDYq4GHY6E A0CqAHq1slUq9htzsaLwkR4NlKcsGt9oUOLZ2DbI5MPpJoX/6uHbF6DpG3r0RHNb itFwBjZLZY5LGHf0IdWeio+lwsI3B4+STtwl5KmvZ+ntDW22ZvEnBgIEyiQmnAjk lkLbslsCS8nClRPLogPn8aSD3unhsRLEPQyg3EJ/ao0jXWgp52mqjm4G2iMPvFnl KvvB/d+GbLHhp05Cbd+fdjdM/L65VOIJxEbIf67XPofjv+CfHbgKp2VDticUWkIr zIAhRwOBbtDPKmkz7L3DcxDWoOhJJdNWvTPodIRzMa+zm757hmxFRSVbyBdby/DT NKCsqX6oy54v5p//rP3uiWthoZR+/E7vsOCjoH0xYdS4G9Wn9iuT2K77ODqydeEK W/5q8DhhmtSNpHCCsu505tiObOcGGJEwNSLKDgmdQsRfQFOzi1GydiZRMpXkRjBD Z6P7tcOFwwhqekbQLrF4Bu8XAdLJ6KPjCQWND9vuBJYCF9wHNqjdvSZSkjBh1u8E qzDQu2LVa47FW7y6HeXNodLgvsNICmMFKnSNrMhtLFIJCbyeSOUTObKvEvmOWeHB 91vcqKdU15LHeqxEA7w30dZUL7WDpSfBJIPJG0fNHZSwPRmfLbIewXQNzYjdZhSj MnNm0OklnlCkUL09zaAnC/Y6IxV6eDwY8WJUrOe7qA/T0Z2S5+SFTvkKu1pwN2sd zXxJ547igLm8KPEczWuIAjZEbVhsnEst1ka1mM/5dHUoRbKwfrEgdL81eZFgI5Lk mk+AEm/qpzFVJG1lOZ5LptTKW06+LvMC5L7FfwFY/HgX+Wv3VG6fkCpz2ftP0ArL xhoVbrRUWwKmBzPq22AY/e64m1//LNmUHb0Qh182Pi06zwHHWlSvNNrLvgDwBSPq y19cOj+fXE787HWi/Dpy7nzx9RnkSk7/zHKnUyzXpMItUPL2FFbHT6q/lp/2QGIQ 7r0xT5r8BAO8UMTwrRC5UdVsMziFg2spnva+4lwsDQpyMU/xoLqjf/C6LEkMdKdR lRILHdhox6wQN7ZUS1U5giBP2GuecqOJexV7Dd7vkI37ZJ10Q9byyyJ8Nbg0woWr ZN1/AXSs2jTMCuvixE1Y1BITNfirLyLkqMR62gxBOKpYD4QGeaXUEjUToAm7xRbE bpKLK3WaYnKunyteANwK/dC5z4N4hN2ZnhGiZ++KRPl8qIvasajGLAckudjY47VS sRso7rTSF9cNxPF+MiF7gWGnxFE6yHLjr3Yy0/e9Y6etjAwp45YN5IK3tEwMnJFB IYJ7uL/QrVatkOOh7GHvyOlbI+S/wfdLQZXgXRrmbn2oo32Mzk/+Jjz7kJ9QxMRa Z3res/Tpu27NQVcobI6aY9v9gM5W7v1cjBNa4toKvgOGUtjOqKXNKuFxTc122qv3 HUEH4KXRUVC6yvLvUqwD1guFjzRTfcMjlHK/gufUie91YlN/rNa8y2sWnHW6aM2G aX2vswfT7nUnxCzfeRvB0Sq6QD2KJHsTxfieWtt8U/kOvJAQAIvIs7oG57BvBhBO Qb0ApBUTZx5JNNY063xdexm9ZsW2DEZneqybYA2dnVtEU/bktdc1FdIJaxVAyBsV CVIXBGdhkKQSg3X8gZKOy8RP5qhJl3uSE7fJIxf/+QXHRVj/eozG2/jlFSGfZPj+ JL8xNVBeLjvBAfzTO7sz42uZVv89J+qVdBu/Jkp+ixhGdrTyr9DyVyI2/fuE1Nm6 9TO1QYe5SdSM63cnrnvd3K2d8SbDh+7RIiBRFRdxUXPByPJSh1MqP1N4z1m5zPfg XqrEpZXaxkFbERVG/UYfsH+YguXHOPDYHSn62miy3cmyhUIIHy3MMLvOJB4hKbud /vAxq3XLlN7D1+0EtDxm6PUr9SB2X6ItvXefvyKuMFdLjsUeLDmhc1Q53MfOIafG RJ6zkrG+OjFzQQ6Sl9X9VGAkZbprd0t4bGaKm+KBtVP58zCrSqtMxVDT8jfkrVMN V1l51lK6jrHspQtqI0nm6YyY2vgwGG4BHAxjkOMZpMvos4bp5Ipec1BgTtgzcket fMimjkCdAw7gj+teeSZEqXqMsOkfeHYkC+jDpsUr6I4h96QzHXH5kFExcQxixR5P 0OHSOrMx1vWxMSa1JSZz6KLsRCB2aL1trakKvm4S+1U28lClnxUt2T61APq+O23t p/Zus+AhfbM6yopcMhzpA6yyp5bbIPl9xguAFF5xMsJaS0d3haVZI2EVYYoe0Cir 2HyHhRKcFi3S/W66682h/bzK0UipxfZnPg0BJxWf+Z9W0DR8eQdVTEbBEYTkY/0C vvPrG4tskckIMRmI9aDEleMvbkwTD7Tf3W1GVhNMekzbG5I3tGXQnWJDZGFaQclV G0/V5IbaDehocWVxfsdUuqijQt5aaMlu94NbTlmiWslnz3TkKJtDjhsnm+k/7A0S o4u1P298DQ3hjIeCv65625L8amOGdmdQleY6GkR/r04dy65+Hynws4Jn65OlfrPx 3oDQDfiBrJJVFVF5bc/7fC6tDd3hOwGdmXgWVYTkLJh5owNqYiA05ZdN3LCG5B0z HBqiwJLzObUdORX2cmq4uzKOqY7EbDWhrjW8Iye0woh+VNdGja0jMd/ieTr8PXMx xRVx9PpQBW9dVUu3EwNM7qXPGuXCxGNpahAez1TwXkrufYoK0RhCCwzJ1LlcgWHK C2B8ELvh9Z5MVD3/aDwK/SCdouIRLBxhZ2dMRWXTHH8mK0EptzBKvFe+6ni9wLim TNOeUZ5ty2q2SMIi+YOJQXeHwoQcAybv/QPUTXb4sQNd+LKBgmOczVSU/EGpLmjv G9nGzpsbyU3dxF5FIQaGcgdkE1Sps0od++x7IZ6cWMWPBKyAbiLwadwSLJDXg53v wY/uh9W9c25Ncjk+5OLlHbVW42YIrp+a/o47qPQ7Kl6Tg+7A4pAmGW65b6QdKXZr rbR9iwo/C4u/GC0K4CeauhN+7CGqOEc+TbV7BwzTbwMmAB2nLQV4VH3yiGtfcQjl PWm2TK0GFdb2et71dHqyi4C7qNZRuenmx5KilLd1IDqF9mEBGTqay55lH6zjQSe8 4V1EWjfkYQogJY7WBfrORNOxDGhR4o+N0otB6STHpM11Dg0naRRxk80eP3bMrF9S YkqaTPrt91CpL/VzuOHzltTxPVCFsuU4NSKqVzPeaMeh49tNDvqiqRSJxeOt1SWR pQYHG4GmMiDmL6okX2xhqUYzl0bSRgDvzDIlsrBEYhoEkzmAK5qMN/Wk8gKY1Coq IVgQzH/GEkjsEFEZSPdn0tdwPHhUlIH3lprkATzw1ARMFR7ahAoESz3HuD29mrfG WOHXYI22XShh2d/uE5DpoUCtXl3yyB0PYwd7pjKM2mT1rBiYBcBsfvLH+KlHe/G2 L3up9KR2DuOPieAXdq2E+sOq99P79hwPcTqMc0fnHq4xwc9VfOt22h9mHkQ/mRVQ U6xiiXDgBF6UvaPSU87dNL6ypkmeQhcROPNBiSU3NiCKxFrtown5KRvKtI3BY0G/ cw3VIhi/F+WlKOdRvWcG12suYp9lFGjRqZKGfyJXrymynI41wUS1IsNBJ2Y4XBrB MUnyyKE9NXm+2Ixm8EpAgqV1/TZ4wN1ZvVvbpKPbMuC8iCQKsH5u+/jIc/KqRVAR 9tQJbgTs0Xa725EZ5ShT5jhS86uyqsLVl8tlo7u9EUk66jzdTOXdu1Rz156o9JWy FfXu2uO40t/aM7qRzI2dnUkltnMhHAeu10hfzOONj4ICEivbhc+rqJ/1SvKNf9mg lfYNxqqqyYo/RwlZ17jur69XMTCtiQqQMnLbXh3o7Ux2GLgmJg3WfarzoivsdSDx Wc9u97RP0C1tj0WRn+3Ejg3qWAH9zB6lygFSaEyw8DOX8oxEVr8wWNPY7ZR9isMk uMX8nNRxsT9NbmV3W82Zx9tkcMG1aSvTt+dwQxbUvsUbsZCVKXhLguHDiTGwLs6T 4rkVm88VUGnI0sVCk/lz0JjzU7eBoMRz1EqahOFPxMQoq1loUXxwwVsQAcn4iWqe tKECffIUdxqRj4J6qWJKqQ8ehTXovNqfOFwt7dQrvzPekUi97NWc495a4NL1SqQz lgAK0QKlWedt4oe36JxIh9R2zcsrCNQyMAcWMg6nnwrHyIwYgy9H69vb0vXwnFOm PhVLJfe2hoZO9HNK7LS8Xr6+jBxjPDylnpDfyJMAadRFOuTd1EkgCInsUZcyGpdo /dZh4UwoTA2RbWdd9QsifwHsXn2Dwz+3h8pKrULBpExyQVvhONwpYLRZq9/4xG4l 1MeIgfm5KUi4w7GgtWP5sN0iKkrVO05Y/NY3Tu8sX5co3h/VbLCv0qv1MoVXXq7G rMkdJPseX2GFolaut6A1qPVUG/9NQgXTq7u5XPSooptG5FLJAkkiAdzIBUatYa5t Aix/3tq11UzHDW9sjUhpE2CCwQsIu1jSTvdTKtjdwWg+Avea4GKy3oniCQXarD+l yV2HEsREuvZ2RjYz842dCxs+eVY1YzHPjOQS0sgwc4wCmtht+QPTgYIlD9Jx5hvv pOTXaqLoVn+JEmu/ADKdZjUXLdc852Jbp7K0EPb7/SqKce1oxsN1bOQ+9wUIrowz fEpHuQ4JfEobe6jU/tB4bjDgHMgYlhTEPFiER0YxUJA/n/rOJwPJtEBt+B28w1ZZ hv68Hz+KZzJu2OjuiT+NLcxGhqNcvsDW4se1VLbzzFlah61ujuBEMWh40cw6kehB A0yeJj+FmkA8ETxi9HfCpFfRVjx0+DmMqC2jY3QiK87h5kGu0zV0/be5reO/0udS aJIV4vebekQadqZaRrY8tUsCiaIw8J3O6gmIzc04BUzUyVvSWXE71798lHQlj4KG g3Nt9X2oMtbKeQu/8Bz3XdeztKJg1CDqTKnNwxtFY8UWK44ojY+Goxc5RILOseug AyHbb2mjcX6qr42funeyDD4JBGPVshL/TRfX+FKzE7c3qH4A9YbCjZhour3q+8o5 vRM/DB+mXfwm4Sa9lqbAPBGVwixXbh3zqZ7LnNP+UI3jwFHcmKzi8vU5JX+JzjtR 79lLamP2Hy/AWRnGKpUUMp624HA1lspGOKNYwjTRuZvrhU3opzSki04ONagxgEK9 xzgkb2T5B8Ha/tvcZrslRkmVA3QWI/Q1A850Rcj9S5ItbT7ijozbKNXOCmECQunS BfwiGVVUKJlvtIeXU8kODn52JzXvn/ZqgL36y5fuczWr/dM2DkbJVmJEvVY63sT7 DD9xnFcgPLD0SyuqIm42JspPKFYlcyKspAsu4BT7Q+ZryyG1P6afnnAqPiopIElR jZ53nSNi7MMwXk4Lk9aL2MiQ+Op2sP3A2MgBgyvd4rMEVr7O1xEfTdaf0+9t8Hrh LR7lDID7QuoJBGkPEM5NLkTTrNZJg7o7MVU9Hb8Pfetip5m0ctugVUCS3BM6TZrA bSEsJf7p5TNaQcj3Qz3JxAxBvdNjlPj4jORgzb7/tpqjcONcyMDLpVE+73sV9Idt uJ/E+f58VU8FZre+48He/p9Gi3ih1nJJhaeFQzg5EvkIq0owS1xgGDWL4KECPm5v W3918kezV8LUv54YHFMpwMbGM/qQWezFxU9NcRBDwFLQUzf86VGsWTrZJNcBfTHK Y8VZ2H9lcQlIUqIpfdRjFIAGhAo4Rh8apK3bEVtjuayn5cem3k0NorvUGH1W6h1b KMYmoWsm3WByFm1aOyESvlWYe+YnM1hwbklakxhoD/PaWHQ6zlFKHEE5HI1rSLSf jfUIkj8/Qi/cDiCJNDpEvJ6r8P5yUE99G15PSLE3RDn6m04I8p7KKd7G4fe/AHAf eRHVXgALU016tdrlUVgj/5TY62T1PUuPWy3G2vyxNZ3mI8S16jroBE6M7LRyvgDo pBziYErQ/ikiDRgmUfgtmebFDyFcW1xur+ioL+Vwjjew738Nuu8tVsZwJ44xxMbK 02gg8A+0FtdTWAv07YVGc54rZS64jLpjl6Tt7HwrU9wwc5lNs+2s3v7xWc4N9b16 MWy+unyHNMsKJXcIbgusmuTltq+Jeym1TfQrgVa1bedwOpinzKkVog9fhk4a3T5s ozyRsxNrC9ydypAW9xjuW8Jg9WaOaCDeZs+lIxnqJCT1kDj4ZCNieFnrOTB2kt4z /PKXvZr9CstcEi7oH9D6AkDLIuzrNeeVbArKn8rWCErZEJI0ylUIP+5Xeaa89yIi Ax/m7kRsW/OP7mtdM7jqn1+wHTfcdXtlfzDwSGL/pEBBOfMZqdVreATJXxxnp7OU BtjelSFSeYyX5Zj3v4rr+x5A60SLqfLOUmFK91ZhePvhmRu/1VCDxhSnUIF5ss9l UoHOc+8aXO7N8FZra1try/zS95TXJDHOaPHDxTBHBDVtqHlAnqtSabMpAZ7ThTYH 1pc8fffjuEbo2IBREbtwW69BJ5OWxPNacuI1A5flh/eKcFL0AJo3DF/QdggBVi/r lcFWXv2WMOtDOx+GonJL6YgPQbyWGEOwbpx4PSoxfmx8ALn6GxKSO+87gp2YuLb7 U97plAq0KAMiF8Fcy8yTQHIJxZXG+N+4RpS66ahfougyksaqYR5eb1Ek1xEIUr++ sb+HIX/fO7bXQvKgsUVpIBGuMLXJLg+Dudg4gixqLCqLaGZ2e+uTs8rZb3jDATdX pb3FD5DXTJjG3msoi9Q2xg+aSpnKDxOnqzJby8ML7XY94TersGZQGdnMQgUnKsYb ZvA/VEw//XJNom68gVohNMWYjtTm2Cmjw81YLp0YHPo2ktUTFssI8w0b7+QG/p0T x65bT9dVCXVL8ICt42tCvVQnt7wW8nrMa+s8k7pjrpjP+ZftYKJXzObnZEfJnMvT Is8nmptidsLK4v3SaLkOJai98HVGTSfl17ZgpC6fnHFCTCi1upJ9qC45JHjlRi+Y e3QOXZ02ve2MFp28i8okU4do/Mr4xxB/hemd1ydPJecCUibStX1pPxUW+0IjYPbI KAZJ0GQrnyq3Ls9zOk6cm9+/hub6gPHJNLx3KeWr9glcTJxB5zsW/zhDIy1GT0P1 /K+Fkp8iuXFNj+Ja+r+4+jisLW9s8mkPSwnVQ/kv7V2jtbxV0wsiThYHPF61VBkj OAhR2gPkw6wWEbZitqMjA2fQYTWSBq5ZdTGERUnkCs+S4KRk+INUB78m5R+bRwVI a+bTXXQF14zdboFigS4U6TKtCkKZIQ3IUVPJS5dgxFsNBX/PGqLmOU6upDzHtBUH 58boKodP8vUIOyavKzwN01kiHSwafl8M4W6kogxnSAwj0C7FhogwCv7YPH9InFNa S81FHIz7okDTZJ1YAWM/DG84OxyBUKIQWq+N5KJE8mQlhDS8axULLZxhnj19LrZT om9Qt5CzGcgY0H/WedOogPeeMknCE/NT+1k5zaXwFH1D6YbrDwUqlWQF6GGjkE5+ QfGfNOifoy0XqARKPj3pidJdfEhwqUl/v2QagSgiAUrcnyo93uimY6IJ2ZVJhwI1 oTRbM493e47i7LPUCaVzCFdfhOX2H/kNyl/BzQZdlXuAPorf6IjXqzvp5JMI8coT joF8X6+ofpPTcM8A0U0MjH88wTvBEW+ceJVrKA9qexfDCx1rXbhXYOw+bnuKsa9X ahLa4YM55nKBpVm/EyRQwJhGFQ/j01IwFsDyrL/53RC7XjXmBUhPy74/pPXbd7fT Da1KiUiADSU5Qi/T3zZUOdFLfG+JQMvJxNQgiWMS4XBJV6bfPckCb4zvrpZI3Xtp /cg9YxC2ym7kC719wZZvrFtWFvPTy298Y4D34DgW1GYc4IEuRtiTELWSIvy0Ggnr NzyXLD/FFXuCKunAHf5xg1MuN20b/VtAc4gEP4xs4XBt+HvCm3i9UqvO7uRrWp/S GTYfPJ5WHjd4Mqt8l4UupcX3pRn7ptax9k6ueb038Wks2zJN1NstnbOu2KDrZ80w EtHd30YyeawUWfOoF+oKFA/DP0KFD8ZQhzZXDaUvX08iGcr9jlVJX5n+rcrGHP22 6ZcqZlwpbVm0nlli604L9LhqfikNuZrd+dfqFs5+BBrSKBrMk1qtjLYuut1nHmqK e+TqyfzL6cublB2tSgwDkVwX51zv32BFLkfLjxuPMaANctKnde2C7x6eDRmdgoYj jBUjC6zhYPjsEFd5T1AYGvlypxG/j1O2wo7FuWlaFneyAC5FCNoDSGNV5ZUNAqO8 wL72KsonMpSpD3ZIGLBk5BQitscF0MjUBxmH7PxMoyYoqAcLsFmz383p6MaTUyJH lUhpwENmyZx9oSEuNo7reShJnxTfHo4kFybQ/nRsrRBSwcfRrsJMM5Iw83jllk7j sc0L+GpqfJ8sMwnAaZTgfbzstptKW85xyIwMHV4752SOoVk7iHgTPgsAqIbB8IGC rpcEnhqvLSrmO+DNd4UN92MZ2E/OiBVHiEAJ8wD583IFwask10R7fXfjLRpGJDo4 ysQnQkt4eHhq4TO3xTQSjoGDQd/m/Sk0153ci9LNbgpWidWtE27P7tFte1DRmAdC 1TPCXLxrsX34BD1lpqxbiNvovOWN9dquLCxOSdGbUnn0Es7Tz1sXFXesiMJxNDd2 0t7T4XqqPV2JzzDadtw7g5HC0XRER4+zzNHVFRWhlji1d8RbwtP6ztbLhCQUsWGz o8tGRsR0DlsBLb7ZWubtpRSfdEcY9/sFiJoswVuNjSqJEZbisZG9JVg4rYN75fyi B+b+Sy0pnQNhNitq1OpifuSKHWODXeEc2Wetnjz2MKM2t4icDK+EK1CESaIOpwtq xJxgy783WKDC5K33512UYHhtywmSM5g8JgiC2dDi5dLUmSf4kt5uPvJ8VkcJTuVW YjRhWOXf9tpGQ+XacFG4jO4wAbQkAaF9f/HLXT6yTTtJyHqX5bd1DfWAtjr/Pdek VRMLCrq68fJZ0hA/6qhETo4ln7pPHnBAjlIQZw5v5jbVjYrFz6ilwBQ6evrLH2Hp nmis03a5rfWYDlNJHIV5ZgqH9Os0kUJpV5YUSnxWMVzSUV3rU3Y2DWlZvfRm/XBi D4b4hrUa+0ctqeb2pVa0arvRV80fPx+R/KB0ryR+h7z/7QWoran6Yoj1VcaUUMz4 balzW0ZvAPfjYFkeVM8Ymyk606zIqqTpC3AsL+RJXvpYYI2Zc1mN09v8xqEZ7tde gwh/7NbaYOnjPtwznPumjlhX6eMhOm+VNG+0DWpHgrmvq1DPD43Z10+J+0NsYj4K uoWN+gwNbwVBtrZCtHPRxs/nyVFWR2UqDH4Pw4pD0+hvuWSEBd59gWrKemD6h7rd yY/tcd//TzWqKpfhXYPwF6hm4s8TL4Dg24Dz5I6LH5Poj7MPN7Fpse8W8606LjV8 skE2d15WYrmngd5jUjtPmc/gLrFnSf2hz3aqXFK7qZc8wPcAl6Oey/DlF2Bv4m4m Evuo/QUYWQscGbtbZLhU9Mne+8Kwa4Patmc8EXjohP75XnUqvsu68YC3M+eZV3Wq /gXIfjP59a5U+Is8b+fz/LU+McPMdrKHO6PO52Qd6lGyrJvoYe8bO2MnarbJ8xg0 kiAZ2E9uvcxKQs6VcjTpAhek9DH9X8msCttzSYe2o0UrZg9PTO+2NaF+om2l6Nem I1PBIoFQh0Vsv52lyzpvmxHyH94tBHwSSPD+wILpamuJHhZrSwEWkfv8aVXyLf0L sCyWJ6PXOvsCmLwAvulWH0jbMHPGxYIf93k33Xzoep/dZ7KTzcWFhTWcaW7Jp6K9 q38onInlcbyKUgYez227UtYDBRm2sCGW8z7ckjaI5PlWF6rBhZeTP5TOeIjF1bDM Y5W3e0BGJMYQf6J46FhYKAr+ZoiS23TI6uJtcPkZfa8a+ghOxlgAXOdl7meIYhCJ HQc0N7gNHHVC+846Due6qSuv+hM/j33kcsOBKdxy0LyFc3FxU3ebvJTXl0rnJ0dS CQeYijNr1T7QsKDx3Ie9AERa2TniXs7L5HH0+kFcPK+UoW3CvpJC+vzHGchmQcKh gPTERb23kE68GMoQOh4WAIqDxZH4ceCB4vDa8lJcG5hScunnjdvohILDp9AzXCbO J/LuRP8rXNfHKl+Td8AHrH/8BVsozh91Emh9UYpYovaMY2YDwpZ51a6Mkw0qmbFR KwQ+0KuHQ32lX9cBiqEkVYLloNth6WEBHI1oevpSTTUo7VSt2srZymZozrpwEUP/ 8QVkt8euntafcaqTfJHXuY/4zx7Gmbt6IkYvALY41l9//FbmRbarvQpHAqWN49Cj feWmVwtC4i+UDIvEcYVoXRUhw4OuUqyBlOMMljj0aoirudzGMQzPO9qZOwldXwvF wRAk+Jdl7+/HeehqON9IR7yCHkaCH7XEoUmghJ81uYlA+qFFvVBtzqdOjiMfteiy MjlqvnC3yn6Pl9CwQVCkVf64b5H8fdjKboLbditTpSglc7APCytpN0Ghmd7ODBsH p1/srq2756jnxgn1iPT0yxmp06mTl/PtkXPg6U1AT1vbDb3dd6TSXRwgyWQR4+LD gNMGvdXTvP2VL2qsYvHcITeRfxgHDraKlLukopWKtkZ7/uz7JNSGil3cRWV0h7V2 XiZtocNyIqn5/iPoieFjoYBWR+ROX9f7EISa6aiIO6uJeLH8X0cdAc+/npXvGj4t t9QOt5soL1zK6a+sCNZ5Bj5qHPsvdmbkYFOvxlfFcHFd0UUKtN2/rWLklbGxOlyl s9izMLgm7+EeVt7/XqX6TRQs1rTJ2+0W6bOPe0V+tqJ/eCxwnr0MxBmeryxONZF7 uGEZHT8dhEp12rh5/9YYWZRTRWqNzbOzmFSXiFygFczvGS302NnZfXnnWlNXZy3Z 7tm1xRDDwNkuSmzXvvelrmO/3NJaIkS0vDoirDLhY/g4Kt9P83g0RjufjVZ8VlUV 5Ou57M6UUKulegwjhUBnaz4+5QGy+wAnh6/ZGR/XcfhARtVGGXYoWNVWW3urse67 kRNbqBLvYQuHy9oJK586CdW/m1i8/X7rJ2eN5Fe/hIMdS28vb+pnPe5ruqL4Jpcy UdRenkn3zbhDwPZ67PF4HMrNWztne0dbAdfN47b4HtejX/YvguDbtIyXH4/ferpu +4P38v139z8O338X6QxUb7HfU/V63C48RoeE24/PuTHTCdH9GcT2+eeCf83NcO9X AnxvZUEeDg5RUVFeXkHfy93R0dGv6+vizt+E/HQYi0RXv2wU7Uq/lCuTyAqmrKNf wZNoCx7B83Qhs2lPhVg9oVmVG3JlX920NxiL4w86bwwL5kZbHPfGpU3INAbEktqT CVRjL8svci01ZCdVF2BY6IToSokOxXmQfLknlPAUUUKz/6UH3hRfEjjSxafUe1FC q/qYQkL+NX+E1apQj219WDDCYsGIYqT2nhWsi4rfcAllQYLQE0Zqj5d8xelUXSzf ScSWsgUanh47D45iq7+EorHfxgUfCZ4Gbt8yRVTDLHtwYw8RXdEKODLdVwks7h++ moU3OzOX+c7zMSe3FdcvjSQwrlMx3mirznQkO7ira1kq3gjbd8xUuUsFzV6DXKAa GdFM+YQukscS6BTFI2zSgIjENJEL3GHEh6PH8oum4KNsFYzDY2rvxgiMQUXMqWzX lFz+RI5o4kP2xoQvNKO1esVu1VCmpNSRHpgS1buuIbp0u7qgvmyR96T2gtE81iEU 2o9H0Y8nAaye1QPynbsbEeOolHpuHQKdcCFXBrcN2QgXOtgCnqSKUg2sr0ZrbxvQ sAajr4PfhehmYAx+whHT3n5i91r/1ppYPYFgZiSJYc/r6dEXBzPvfCNtfrOWe3n2 sCkpSX/ws72BTOpDRIRGXHvDM8kUEdHHQjAH8btDmXb7clnrDycDB4qTgPhaezHP wVybiQf+20NBnCrZgti1p4hyPx+eefOlK9hcVEwErLr1kXvWIqbyTfZU3Ofjb6wk eqriem1uupUwnltTAsJ6P8PqnXbYtZIen7tVXSz9jYY/ZQ1oh886rEu900uQ1+0Z Ma3eMVuc4296lgob34wdV95F1lupt9p5fiXeshk3HrdzVs2S2QQOzJdkGSLVcnkZ dj3S6xDzVv+2mTCO6gfPl4DVOy6yJWskA83I1/516J4Rs9oQOz102cVfpKAIDat/ XOtNmn9JvWdpzwhmMch6zPSYXxbtsGARc6tOBHZ+q6SeVy11l52w3HGjVqLtIya0 WsLQp4njckdytHVUweWnbarQB3yR1wYBN9Otbjq+Tr+vtsoP3wZcTxXCnyp6PgnW Udbd9zI5N3c9BDzYlgkKCqqoKtze51SQdmzkHMz70f0MeCr9mMz97TQ6ktnPZi// 3v8hJ9+9cqzi6c19nFxc1zXPyaWN88CPblTUfBmpAWyyhW+dZCoiU4ffVBYWfNI9 PFo8WkSfxu/2Fs3JFtrJeHj87AyR6yqrqsjXuh8yOsmez/PgboQRZT4UrW6+0aPQ ZHz7htF3K/kQ8UL9m2JMuPFOx9y8xBabSYJbA56gTVC3jWfFIScUSB7jTW1p+RCz MjTTl1fq3804jxSb7ubfIVNIXWtpQhgDrqqGfrA9HpZmEMpXCkpmqNpaL3JtF2eA XdfUT49g2MqrnnjcEDsujGYXt5bF9QptB49Ju9XCgfVQj2k8WodVZaOnFJvo44xN y3dheJWaCgpe3le++TNAnmTMuAmHmaXb0/PkZ0SmRZkAvTcuF1C8a2z2WCrV8RYv 2LpLrtHP5wF6W+yKaDbrgQcfbTwEQTrgIz/gpulhrC1u9+ayC7c65/tCx+KvDB6N vICJjEklsB8AU0fZebayVr0j2FO9kRZrVw2NAljeEJHI6/gcT6ZG3BW41BjKNEke vnqe9NPzSVGMH9WuZufRJCzGqhpFD0IHj8dPhS+4TdVoj52ITnyPwdmN0J8OCtLD O9szbE/V9T7oNrLdzDPL0S8HxEk0fyEVadPXd52axwvh6sYcMYYzd7yFDpaCzqLd oQs1Kuq9d+y0I6N42Ovqpj1Gasy57MWBLGoYm6tOagA8C9jrDNIYNo8xDROjDQSU Ku6lcUEUCqSO2tog5TcmRuNwNChAh79t+9Xd6LpueW/2SCVOE8ygNtFmu/gg2/uJ k2MkWzyZLFK7htl+ehpP6J+FCGBcPa+jeWHYxddXR4xgJdEyaCr7ccOsF2nLdugq BZZA2GQMWp7qdrFS2LKBzrSGXzi6CwztFH24WMrBNH6YgREMiG9MlMHlP5o/QOHN lgf9IgFW9Ettb/GWNO31xRd9+txcxvTOWgQe7Gi1F5BYyTFfoPMCJHbo1cy0ytaT 89x6byrrs2GjiHIzPLKw7GlqjHtoJ02Dmstwm5DRRtuIc+oGiZwsNe0NL7gVDduR 1mAAVxwQd07NYKVKHy0jBmX1ZyoJp8BnlyWUoQ7vCYIreahqZywsfcsdUGBqvObQ mLeSw0ELy3QUTIGoVAyhAuI+ajOwlIKzJ8CinaE1TyvOCEtf5dfCop3kEacsopnf x1iHB8VybDyURkVaOPrpe62xGIXS26BBlqHuql8UWUihVFWKsBkvM/hRgVGKHPj2 WRfMY4y4hhhovX6gd1FK292tV+NulmzmWrG1RQc4olT0jA1h1TLjb7j2qrQGX3tI XjjgAdLvmYDWOg2rL5YLhw0wC2ln1VLDy9sKtVuslouTqAfx2NF+PrpmCNJbep/5 +38UTlbe47KaPsM87tRtAv27DE0f+TVfGw7ukYnkQm0L0RtGXT5OfQKVLxICFMSR +OQR9JpQSYFMkGocQ88rqvR5ESjwEsLXIleVvTKSNoam4eV5i7TFoHIkJdEpW1U1 qzgrG1wh6CUC4lg9MnInyi9FVJoy4ca0WN/gvxaiANXjtni4xqY1uRWMuWBWCzaZ wM9xP5TfkF8JV1v6Cqy8QB0ghn7rAXj/yG0FnDRQXX2lWQFoiZeXZXEAMssGJKCA f1yhjsvsAwAFbod8N+3SN3QcViFayi1fceAFEQNiBgKggAg4OCgICCAOkXuA15AS BjAVrVx9NiqHApZ2rwAM3HB1sXwZdXHWVX8KuA6PnVLjdpbLoJIWKWcmvszw05OH IDbDYEGLfMVfr0gLtTRCs8mPDo/bVq4+97lD2vljywXsX+2AgD/OIEgTf7b3gqAK DwBwQBfM/45UY05A/T+kGv8j+fffZf9Cw0DBwoHg/0g1Zvoz1RgEgoGGgv1X8i8A gwmLRYnNIQFHxamOYyoJj0vtGgwxJoCAgP6WtPxnHjFEQ4UJQEMDcP/KIP5TgwnC oqTikFA/Mw1O+nvO8GOForYNikYjFF28qkiPVjSUhvELcJgdp5+NEz+PparZJQ8f emT9LgHWS7r9YU1SXTu1OkgBACsAgd8xzNI8lVlPeOB0jThBwJYtRfyGKk3A0Btq +GwQTik9LKOeMT/N1knO56APIixOFq2pwihaZ5DVtEgfmcQFOlxrqFpTl/vzFmLc mNHlymNCsv4rftaRX0HwpvrmOs1fBJWamDbCSzvCVuWF2NTrK9GzaCjCjLdD/Bio GmmJH1RlW0Y2lK05jZZVfdMbmG0ZJxji1LehFDc8GYhj2EECMAtbzsU/7ztqJrma zTRbs6XTsNlIJIySEARs6dAGTyhORgEX3gywXYbnvX+YDtX4TBheq6e4mXFKLXqz X8gJ8do2U95QOwnyj8TfRbo5be9YvnT1M9TSmjQMamWasI86Pl3HphMMuY0d7+nb /25MX8O92YsPfQFU3G865xahhF3XurvsLN3bYeotnRNUzZm2doYXUb93oGv9Ikoo G3WZiXmVr4Sbvhb5xTdLbsOAX7vPcgBwUUH1Z30B1FqaWrKOi9q72qMZtF/BDHcr yIokWQvxkTRhqYgl8FwmvDmYGTH1twlOv9443vyMQErl5nQ2SlDh7AYP+4bCRYnM NpIp0Cp1kaib1K9vhKvJ3JUOJj/Qg0jjUywsgyKUos7bj0a2ST9tGwURiZgMtJLu A7fkELoyO4UYCMbWL1RUefQEZYpqUt27EfEQanm0bT4kgVZ6i7lW8TfYe/rpHNCK vaabyfHJDbrCSrtzmXC+dg+qm+cn+Udv4mwzZ/Z3XlKbp1d5+pY2Gje1LFv5fEwd 17FHBGG373m65VaMxF/tVDCrfTHn5sNL7rNqJEih4D+Qn1IKUhLCM1MQPo911W1r n0X6NtKVU6BiC94/V+ZeCWRVA3Xl78Iuy/LFbtGFJoicR6+s2TV6cF/NY8kfF6no yxlVhnohxwv7+Vl4fXFFPiCsrXXS4NO0CtZYywwz/mATOdau9d1wp/OY9P2QTQvx skVHhnsC5Q/dpnrzrlqCEE5Rve9yQQg8EbK7R/tTqbikxj3VfR5lnGXbVBFgGltc 6WhvKKrvemnxR7nhvX17uP3zWTFceDQNNMk+NAVrsp/OtuS3BtMaFDWa6RkU1ZBy Oig1U1r80EHUB6nl/liSqaUK0KmlQCmD+B9ajdQ/1/jmJhRQ7PuWBmBONUyXm5eC YmllkLKxv4JpWZEP8/GLl73aXHCl13PGm7lglI6Xuhz1OeHP5i902PgjirAfB+nd Xh6GMvir0nREMh3FdZdXXzql31/FzRQdvkEYIn+oerF8PQifeN38JuWsk3P9BcST 3G/Y/XL0+l3S7cYLlylWsXrt1tI7P8Pk4ZcXcppUla10ZVmlsiJaeDw/dnMtkaeX F+lVqwZFv9bjbs9yLXQpLueL3bTCSV3/R4xOPQe7fMvLm7UVgTUpmEjHH/bptCZh 6bCe8HZ4xrcvLy/hiFCrKNXt48IUUxAJ0E9l63WnKNsKQTcZ8EaQSzDbGHiBZ1bz jz0Qfx8CEjeggznDJN6KjkN/eRsV4kYqgcbt7t68gY9loharf7b+EgwHr4Ec2hsH 6ab4MvwzPusjOlzgc/BoJDForAIZh1hM1AYIT+wL5HZRT5qkUqo/3wo8WjelzJIF Cxr3WlpQ+LySfRqBRUu2NIZWuXwWM3yvQ8dVVl2YF5nBqs/Afy5GFlT1rM3uioqS gBCD4KFmIpWiNGj9w5054jwifZFHaw82ix7ZjAmL5DzrpgcqBi3/F7sRJW9uxS41 2ZYo2TadgCzrJscpiLACzjls8pVIhsOg+arE7Bp+FN0jEW7FQVdkRElk/oaU8A/a 4pK+nFyJ3iTuU1Yaix9yycKO3kmfdmkDIIKslJ3vzZakDKQ0LaRIelVRA3VXjNHj hf4K65Q7r+AF+Xy35eUFPxkHVxzkmlWMwErDm5yZ2+JK2I5BjxhdLo11GXGNngkV To/rS1VNgE0zI16eIQbHiaASNvRbyptwQd43reIS2aJfGmxAsGTo3TCTGBwt/jpY EcKvcB0fmHogNAUA8IDhoqUu+/3fZgVw/5wVIGcvsUMmBQ7l90bYehNwgoRv0n7/ c0qA8BdVw/9F0VCQK0SAHvZ/B0WrAq/+J4qGg4eGgQX9uRuIC0LR/9gOBA8D+hfp YgKwWHAQjlaHx6GSMKXmlDRzDU7C5dIIKWw8/5Oqgb9v+IFMmWChQRANAyYAIXxo GLh/cfWftPzHdh8Y9YY+bBxqSVPXpMLGvzN2jPvzWvOJCPGc9BBsi67tN9eRDGyV cnuoeYyZzsTi5EQlURUwWvfetfWsX1pmYcKP1sM5GZLyxLEtaWGJRBQwmh5phLCy Gjcfk7teHMNOcA4hhxAl/8UYjH1329XJjdZhkm2Jbkm8OC0ytaViwQmGLtkPn/lz 5b5h1JKCMYbN68ykerxbjBrlzqVJYrY3SuYu7muCvqitk+eWxnB+r8+GSDSGianf e6bimhHIhMZuGcX3LNGf+KPPo7Iwzh85CjlWLViFVIqPzhujFAuaCOpKqoOs4VGE 4zvBBo6LrUMdc/UDdp36RFTVRjO7ydtvuGPFQHSI0gWiB+irp5OH0YteKqGHCK08 r3bWpnI9M1hfny9yjO5jXKB/Mb31gzcWt0hEymfg2f9SCxWDkpWlHC3ucsXHLr+6 boa/y8KT29AMFpRHGo0dHR+AweWnSEiCVzZQTyey/RjGBF/oG3RMDPA8L367ipm7 BfMtS/bHWYSok09pGE9n9WGirbUwXQcu1iiuLfHBWePDHZp1miSy6gWd7RbDDF9U m7etiUl9b1wyiJ/otp742cpM/mXjZOlZJ7+Nd9+1/SvNOrKWimqGLUbC3XHJATup 9qonQ6UzterMCU5B+VOJ+s99bb5f4avm3j4qGkIwRXKcaSi3JiVpJqK6w9lVWYpN cASWtPJiVGjZpjUAK5vrq8PdbNvamOxD9YyI7zgBQslCvuRIBP0vABn1CyA4VkBx j+GR/k3boNk0OteRJerICXsUf1J25ni85EkADnRY42PuXWKZpkeKDF1iEouF7vxN yi+tMi/nKxvqjKunVOLrCv0Z6sfqPpySgMltf46PDas4LB+RVoOi61wPTKKSnsuY Hmw/mFra237MxvhINuFII6LynpV/uU6YmloM69z1BXhTkb/W9q27+6qsWw6nQSe5 sr+6g56m9kQyKURAVPXArbKzjIXF6NIhXbU9HYPjNxoS9oO1WGu10Wbfim8+tvp4 3PeYGKaV93aDt44FGohvn+ZPaHw/8llLosu8DaWeeH89/xwMuq7sKOH8wtQKlbQ2 Shq0rXAkIsK9SGQXnZhtWyEm5b5qsLDHR8s+E16sp4im0eC2rOYDOlDNKFwkMy3J S8+k7aUfrsZ7A86f4Q5+2o0jQqsUZVUCU+U9+zBXqgW48HTMk7LMLdCGECWvJM9y 3YYm3qZuBG+rQa1QgwQjT9vmhla3qpcjfBgGy7vaR3B5NqMUQEniGOCRAJrHq34P aZU7kjnANteY3cfIxtl1iOzQwz6kAREO564KV+PwOV5P7qttDSn3aK8SSd0f04G1 9AaVAXaMCJYGdxqmHK+wA75y2sF8OvEA6NH+2EincnU4XYxQcsqERLnR/tdW6b5F phwt1J3vsR+E63uVx3bm8p4eTkik9YNnVqdY61hl61o0Gs3I2j/56BzUGwnIVcWO Zc9N3p+tv+lXt7OoMZF+QDqsZ4i6iOu4LTPRnWIPXjM350oW2JWsGGdBaWO0eWx2 nDxkWGovW81IwkvfmTTDYiHCfAUUsEwMTA7rq9ZmeYwktCjLS2py/JAlsE+udyiK ttBD+liiGy/3hP0LKYgIzQcbY4DI0ijoIjqu8QDtg7Q8++BwKV7JV91o9oVHfMWP DEmwFQ23Pgj9wZ/j5nXOogZLYJrCLLO+K3yQxqJNob8qq2B9bxeQpMgUTfW+39Wu O8FxRuMXR7aL5IwL9hg2bkRiB94ihuWrJbgizqe8VVBqUuCvCYKFbPtT0Iffwss5 9uyyWlJ00DiEdh+j3+w+23DHfkiNE2WEKQ0z30/VOIzoTc1m7E1FSO5HmCgPCdnJ jrpKZNLNnOUZTrBVSJ0NlM51P1ez0hjRqZ3QkiWmL55HfQLS0PG1vhyOtm/MuTa1 d19+q5P6eRP5bLCyt+LLMXs1cF3BPGF099jYmUclBps0Y/IPUkUCjMPYUipi/kaq iH+R6teUcgipWp7HGKZSf/QQwB9RwvsnqSL/RapIf5HqAuQKBViC/99BquYA+99I lRTST5i/cyAMLBwCNAgeChGi5v9j4QsNAwMR4eD/PavCYVFC1qzw2KY4VJySrsGF SQjUGmZ9M7hc5uCQhn6IJ9Gfq+B/DwwDQEG4FQ6iY/6DXCGoMPB/J1cYDglTLGz1 YNjChg0Iwbom9Z39nV8rM9lNBtVVuzhmcTpGq8q/WHDMynFza/4qOua+gB5y/sqI nP8QgXObUPyrcbI2v4k5VQE0r/R6c5HxPLPvzdcCf/nD3k3LDZKdLpFYCbyx/abs Xgvqxz7OQSmGk6BUkWqhLdV4gTWRVzkT4CQMniuwTM4EBdmR64nlxuOFIJkIDvlm X8xnb8RV0Ia17bUhFxwKgSLSr3xUb/D9HH8NdqdUmmVDH61mjOPRXBaMa+mtk2O8 wq+q1Vivyc5+ZQ7pIf0wxa+NybOdHfbQrDLHh/b6t28e+PYROR2hUC4EfK5A6nvE 8LDxdGE+FF5WUt0Jl1AXq9NNUf7ZdcGwWerZq6G4MAktZ/Bdl4Zw6aolMxOkyt/E psCqVpPu2z6vEZKm0n4TUxolyZEKxGtZk6TzF1vz7Q4/jg37ng4IimiVXLTTVFh8 oT/gYoy2Sw4ZmMKsopabHgcntQmFsK0SNqvuzIZDn2oxtXQi3IKvqG6HiI6d5OrQ eAmoUTQLuDN+5NpUoDXOCuRnTD7l8EVOWKN9HS9zf8OY46QgGK9DgrRqiCJ37iWs M4d58BathYRSoqKwJIe/OKCKB6vpGP5Jt2t0+uF0DieByJ18cEyvJQftrYwwd0l2 qMQ+feXigovtakS+TPcxDaE/Jx+Z7CQa5p70mAbiqfm12AoJXS8b0WZxfAbD/Jzg yM7czNcFgTWilgVcS/MhbMdUvn6BlkgSr7GvE1yGfoPpbTM1L0BgLOomnH6BETaB W4+q9ArHsuaDg352NFZVAJ/ryNWrn+/EdpbdU8b0SMEOulsFcX1ohQBK6yZOA0Xo oOPVILbQlyEHvWYBmoRnWonMnVQPjWEcJcKyihBZPNfmYgpW32bPNo731/mTsI7Q kUnZn4AJAQom0qNrEwBkCkO/MTsSz08iPEWYjJImnU84J51BzTG290asq4Zk9ImV VqMEaokN5d3dNL0B29RltM7tLzeU/vDPzXNjhI+1bCON83PWuOit47FIPTyWThTP CNSFZO1F9/flWod55pwrDvehopkGafmtH2J8SZhQKJLqmUZwXdC2X002OGtHBi8R KZEJdwTIizko21y1uskpbA8ZiDU8H3HDyXKkycW1xleWVD7SgAfFaNXsSlnGTDzv 17beHr5jTh+aRkY/DkuixTNhUth4LiyZX6bwRV9bQIquzP6lNwahHwvH3sevDfA2 z8RQo7GKhcl2ipnbYcflkUm/JHYRDmL5STRJhQq0twUWaC1BOEnQGD3MDS3x38j7 B6KOe2P188grfl05yeEqUy5rESyrI94Wu/CHCJGZXJG4XjxTyzf0DTAk+pJF/m6p bwEFw/M/1qZBS1S4n1hjTdCKSM83zYyaOTa96ZppPJX9fZvULRSrdordTGZe5EHz Wy9zjfguRUOzXNRI2qCaUFWWBFTH4yyJ2IbT4rZzF8Y1R9okrdhYED5/qU2q1QMf T/YoPd6Y57Mx5dLy4UPRx/JJKdY5EeZ5V+FIWzGmckbVybAtnQF7+FZOirf+Mw0O oa3RITNYjOttIuv+CaB75I2+2pXe3R/r9w31j7kURY5N2Jcw/j2u5vesW9f9FaTp yZ4NK90ma1+5IsRSUW/5F6/FBWp2Bt8zgTzYKCSWtSXxI+1JRH49Kb8pY+xujMo7 G8P6QnrUKHsCm/BbhINYgXdH7eY6+1ffCYpmWMwLwEDxAkwQ9udbwtk4n2kM8C0u NEPmbye3G+tENCTvE3iI7T68ABY1EUoVlAuELLTG2tfMvCoZUJuJK2tO42wuvme/ XAY2hyuNhD5WbkWbdKSbY836kF3txCbT0GqGVKJjqCLHtfK1MjnJ5S3scL2ed4Ke fE8y045KEl1bDSpcd+jFnDfXdstesFpO09I2Z1LWUdtVoHGy/ooWDQ9ZUfKjWKj3 n21mW31xj+8xa36rb5OET8WrT29EXVNsW2umGO2ViOanLcPibGC8lGjFFZo0X11d h/f7WqNUnMunHqvPZ2V5IKJ93Qjq/2nGTryaOvY4gAdZEyyipS0gVR8g0qotKmOt IqKC+0KLj1qKghDWUldUqsJzCRARASu2ViwCRtRWKVYKVEFllSpK6kNEahECaFgT yJ7c3HkDuTdz/Q/e4RzO716+H34Dc0/uzNyYFjbnmOPQe1br5y+6VB3o4H7yhxdx VZdOSloWvMN9V+vpRp5V5uwqaFQSM/1sd1z84q+cpNIlcbGckI8+z7vgXBB5OtX8 7elz8+/+4jLh+u0ukPij1y8thaVTPul2F2UVu9x0EOoD/vu+/v1nC5WrikOr+Fft R98gO3gX3CLu3mpiu9x5eq5Vud8t10zj8l1+9oFbVUnepfYeYfKhwsrvDqEiO2R0 Efh769rot5faszryY2I530y37K86xkvbuunJscwT4oKEG4vtNpYGWfE5zpubb87q qwpKnmZ30Da4Ki2Tc8q+z3St77B5mI1oKS/QlhfYGPTVetHQjnOJjeEh0InI/LPs 5s2bEDa58tQrCq4f7wi/rVTW1Bx7eGphUr7F2jmL+bL3qjJG1ozfmJORetH+Zf9u +/tqffOSTBeCpSibc+IAT7ut8dCUAFj0VueMK3fTHaCj4rZHUuLzFusZQf4SVe7g ylOaeWHDDzhOkgtlxA/77F5WRm+8nzCRLBVtWVQ2ZWoO4fdD1B6PrfMSutY78BJs Gz5+dDTEq627qcnH/7zqoXCKVcYXW7YuMd2Wn1YxudplRoUVqK55m/TjFniNbzg5 4cJXDrnNLovlcyvsHnVmNMb1fbalR+tcX+P9rN/9Py2dH9il5gx1iYiHZ/eYPG4q +l5W7PdE9XDxx+mrZi+5JxDA1vT1kTMLT18Ji18eslawXfq0t3D1pqPVZRuCJGej ku6mf3AjX+ya+ODMzvj17T0H0yb1bBz2jiUkP31e03SpJ+jFZZv2lUXRx/8mbFfr rx1rUORd3fdn7pmNDd+Wv3NatnPLk5ozgey78XEVba6f1bqdPRM+iXy9w9TN9dB1 ziuP9hxFwN5Bbk3Uj5lgtvjog6Oa11kzXmZ31P1sf8KSn2B66eOBU6qg3DmrC/d5 ffU6c7Hoo4Cwr9c/4iQl5ZRbR59/b9GjzcvkDu2nt/8UaZo+/8Tt3Fxu4imh9fjD e9pd0tb4Srb6L15nPWtlqkpdb27RqPAYFJp8eUc9e2NLZdH+7JKQ22uGKx8rBRGH 0vp3JA6JZH9+Fu/XWFYZURtrvaC9ratp88E2f0HZ5bxJ3Wql6cGKKQkdH335h4va mX3Bf82qodBfTSuPHJVOj7xTYr/7yNaI+hlVK/fcCvfMmMhpOy14JTANIGJbJRc3 1d8ss8lPOvJXyqW8CscfbUzuuPf+e3Vmjvcjy4GXs881y/+ZfAU+lHiQjooFJxWT R1Sy5GXbLr7cD1mKyqvuhoXyW6yt07xsj0veWCiPpxfKtbZ8tFCOOiIJPmVaOPHT KZZr26mFsg29UH6LWiizdRNZrAmsHFa2hY0JwnXPNwxc9hTzeTEsHwTQXXOWFavu 3oOOiDlTUzqMdy3RmrtupEWzFFhO/9Z4l40a1PU2y5+DEDOV4a4P67gF24Q1drET leaGshWVlrhkUyUz3W1Mm2Qb02MlmyoZaZNNxvS4Bcb0WMmmSma6AadrcboWp2sZ 6bHfYkibehrTYyWbKpnpazidhdNZOJ3FSJs64XQjTjfidCMznYXTcpyW47Tch8Ub TZvxRoOj3y3HvrNZZj6sdAtzEzTD8gGtp/gKD12h+a7u6NyJZlaMrixZdbIVmgPA 0u9bdMVm1fVlKT4BIVw5LdvODq4bfTYMslYqSkBSSslizW/AMmK/QfavUmSDkNoR Wv7tPXgBy3p51wEk1QYpn6LpRTKBkoRCAkJdJUYpGhzGskHajXqmsiiZop0GLC9R cqBIuRqE8gZo+YI/5IvlA1HPLiStKCnVBgLLHmq0g1uV+SC0u4+W/8wa+h7LxsZX kUiON0hFoPY4sDKn5BBHqQbbXMVG+WSoF8vHxa83I2lHyXJtJUOWqNaBbbweWrbv kyzCUpgiXo6kk0EqnbQSYOW3zyAlm1V5YFu3iJYvnSQZWD4J7J2JpCslk3TTGFKr GgZhvp1GWS3pxLLZqc8GSXdKtuk+B1bJlJSeUy8FYbx2WnZESuchmWyQT1v7BpD0 MEjVfN1hLIc91VkgrPsFLTvHS1OwfJbRfx/JBZTM1v0KrOr2UlKo/geEu7YZZbG0 FcvnCwbOI+lFyQHdCyxHuBp3EM5rpaUocHgmeuIp2dY6GIekr0GqfQkOsOqhpVqz G4TXthildjgR93yxe+hTJFdR8iwxH0sZX3MLcM2aadmVNyzEPdvHSUyQ9KdkHxEC 2NPjDVJupzUBXO4TWnb7jjjjWXmZJqlDcpNBaryI44Dtt4eS57UrAFcgNMq+kb1Y dlpJeUgGUzKN+A1JqqfCGT3F3O7HtOzJGLmPpejQsDeSoZRsJdoAO5mWhdqHIMK1 kZavPGWOWHaJh+VIcg1S66pnIUmNVummswYR3AdG2Sb7BsueDSOXkYyj5Ha9G0MW 6NaACMF9Wr5Okt3F8lWhLADJnZQs1a8F7EuUVDnqUkFEdz0txa7ySVi+VssIJOMp Seh3AHbdbkpm6apBpGudUTbIuVj2+sjzkEwwSN0y/XeA3UP1VJvpCBDJraFl73Z5 GZZ9SYolSB6mZIq+BHDMqZ7q3QQAkYJqWvbZKThY9pco2pDkUbJe/xRwptNSRHwN ImvvGWW5IhjLgQ4l+oxP5RskYaZXIrnLIDWriDwQZXaXlv3BiiIshyxUpkimU9KH fBdw/KiemmKiGUT5VtByYJzSBL9XJM6qU0hmUfIA6Qk4EZTU2uktQBT3tlFeUW7C PaVz1Q5zpq6kZSnpjyQ1Wu0+/XwQJfiDloPrlIVYDnurL6CeZyk5QH4DOMm0fKKP AFHdWI4oNViOeGumYqmfRvJxT90sNLvRZuW0HPpetRZLmafmHJJ5lAwkL+KeuqP6 OyDatZSWEi9VLpZyZ+1EJAWU5JMVDNmiF4No7u9G2aGSYqmw0B5D8golS8hmwKmj JOFG2oJoXgktpSnq5Qz5SitjyG5ykCF3k5+AaMFNWg5/qD6DpbJcF4zkNYMkbeA4 JHdSsoIMBtG1vxmlUC3GUnVUV4VkMSUXQgcs9WbkYRBjdoOWI/GahViqlxH/QrKE klw4C1ib03IFWQBiXItpKXPUnGRILZHIkHzoAzg9tEwja0CMb5FR3tN0YKm5RrQg WU7JIhjA6FlLikAM1yjlkdp5WGr99e5IVlBSCCOA9XRKkiwSghjedVoqONpkhhzQ 72NIKdyLe5IL4GQQI8CySPsMv1fQEzb6v71nkNAWpgBrP1rGQYDkNVoqN+k+xO8y woa0ZMhZMJsx2ly4AcTU/mKUat0hhswgVyJZS8lVsIDR8wH6q2O6f6alKlfXhKXe iuQxZBj8FckdlFTCAyDWzChH554hE8gK9JlAywR4G0voBDOQvGqUYiKeIUXkMOrZ QMl0WA+sI2i5DOaBWFej1KQT9XhWSG84lSEL4F8MGQpvgFjfK7TUztU7MGQ2XINk IyVL4HPGaJPgvTdkqz6OIUVwF0NWw05Gz/PwEZKXaak7pL+DJXSDpxlSCMXAOpmW xWgEsVyjJJzJiQwZCosZsh1KGbIBdr0h68lwhsyCDUgKKSmGCsZoW+AAkoW01MeR pQxZDl8w5AhUM2Q3lIFYnlGSttCKIVvhAEOqIcGQI1DzhiyHjLcglEI1QxKQZEgt 1DMlDILX8bsMkhCOSv6odEyuLjtMKXTfoPijyjHedxkrdVTYZ9aIjeHRH7JZjr8v C0Cb4f/HL7y9FODtpQBvLwV4eylgpn1x2henfXHal7ktFuMttxhvucV4yy1mptNx Oh2n03E6nZn2wGkPnPbAaQ/m5l+IDxaE+GBBiA8WhMx0PE7H43Q8Tscz0/Y4bY/T 9jhtzzziqMAHIhX4QKQCH4hUMNPBOB2M08E4HcxMs3CahdMsnB47AOKPHgZNYE0I Hbv6H3JOmS4= ------------KLmYUyxWijRzsm8UGCbJ8E Content-Disposition: inline; filename=dpa_card_small.gif Content-Type: image/gif; name=dpa_card_small.gif Content-Location: http://i.dell.com/images/us/segments/dhs/logos/dpa_card_small.gif Content-Transfer-Encoding: Base64 R0lGODlhFgAOAOYAAEec0rjZ7jiUz6rR6lWk1h2HyCOUz3Gz3SGRzSqNy47C5PH3 /B+PzCiX0TSe1B6LyhyGyC+b0yuZ0jug1B2IyR+OzB6Kyh2MyieX0X+64CuSzjCc 0z6h1SqZ0iKRzjKX0Dmg1CyZ0h+My+Pw+COTziOSzh2JyTae1C6Uzx+OyyqY0iaW 0CCOyyaW0SOTzx6IydTo9SKRzR6MyyGMzGKz3SSTzx2Hycbh8S6b0////yyY0jWe 1CCQzZzK5x2LyiKLyzKd1ByFyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAACH+LTxBTFQ+RGVsbCBQcmVmZXJyZWQgQWNjb3VudCBDcmVk aXQgY2FyZDsgRFBBIAAh/g48Q09QWT5EZWxsIEluYwAh+QQAAAAAACwAAAAAFgAO AAAHjoAAQYOEhAUWLAgkKyo4QCcTNIWTQTYPFQgGGBIRDiAcKIMJAQOlCYMvFwwe Bg0hGzsTH4Q3AoMAAYMUPgwxrZwOGoQEARkDCgc9tgWXCC4tHTo/hQQwCzkLCyME QYcpPCU1M5QCuadBuUEQJjIiFJSEBwMCuAeEEPCUAAoKtvn/AAMKHEiwIEBBBgkB CAQAOw== ------------KLmYUyxWijRzsm8UGCbJ8E Content-Disposition: inline; filename=control_discount.gif Content-Type: image/gif; name=control_discount.gif Content-Location: http://i.dell.com/images/global/configurator/general/control_discount.gif Content-Transfer-Encoding: Base64 R0lGODlhDwALAPcAAAAAAIAAAACAAICAAAAAgIAAgACAgMDAwMDcwKbK8AAhhABK jAgxWhBajCGt/0qc/2u1/3O9/6XO773v/9bv/+fv9+/37////wAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/78KCgpICAgP8AAAD/AP// AAAA//8A/wD//////yH5BAAAAAAALAAAAAAPAAsAhwAAAIAAAACAAICAAAAAgIAA gACAgMDAwMDcwKbK8AAhhABKjAgxWhBajCGt/0qc/2u1/3O9/6XO773v/9bv/+fv 9+/37////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AP/78KCgpICAgP8AAAD/AP//AAAA//8A/wD//////whXAC80GEiwIEGBFRIqXKhw QQOGFRQwtOBwoQIGFyUqHGgxIsSKCjNiXDhwAoWTJhVQYGDSpEMJEWBixKgAJsyB ER48yAmBwU6dOR06GEq0KNEGAg0qRRoQADs= ------------KLmYUyxWijRzsm8UGCbJ8E Content-Disposition: inline; filename=control_ship.gif Content-Type: image/gif; name=control_ship.gif Content-Location: http://i.dell.com/images/global/configurator/general/control_ship.gif Content-Transfer-Encoding: Base64 R0lGODlhEgAMAPcAAAAAAIAAAACAAICAAAAAgIAAgACAgMDAwMDcwKbK8AAhhABK jAgxWhBajHO9/5zG/6XG1qXO1qXO77XO1rXW773v/9bv/+fv9+/37////wAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/78KCgpICAgP8AAAD/AP// AAAA//8A/wD//////yH5BAAAAAAALAAAAAASAAwAhwAAAIAAAACAAICAAAAAgIAA gACAgMDAwMDcwKbK8AAhhABKjAgxWhBajHO9/5zG/6XG1qXO1qXO77XO1rXW773v /9bv/+fv9+/37////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AP/78KCgpICAgP8AAAD/AP//AAAA//8A/wD//////whxADM0GEiwYIaDCA82wHDh goUKFCRIeNAgIcIGDR1WkCjBgcGLDC2IjDixosKLGR9y9JjQ5MKGD0lSLOgypQWO EmhWVMBAgc+YEj3SZJBBAcKeSHleNJkBQgMIFg9CWDDB4oIMV6NWzIrQaYSoTaki DAgAOw== ------------KLmYUyxWijRzsm8UGCbJ8E Content-Disposition: inline; filename=shad.gif Content-Type: image/gif; name=shad.gif Content-Location: http://i.dell.com/images/global/brand/title/shad.gif Content-Transfer-Encoding: Base64 R0lGODlhEAAFAJEAANvb2/Dw8MzMzP///yH5BAAAAAAALAAAAAAQAAUAAAIQlI8p wO0Pgpy0hoGz3rzrAgA7 ------------KLmYUyxWijRzsm8UGCbJ8E Content-Disposition: inline; filename=print_.png Content-Type: image/png; name=print_.png Content-Location: http://i.dell.com/images/global/brand/icons/print_.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2Fy ZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAjRJREFUeNqsVE1vElEUPTPM0LByErCl CTo1kiqVBVhXJhrrouDCxkTjGlf4sZD6Bxr/gF3poiu3rppUNi7amLiyGzBE0Bq1 YEKHFphhCIHOB/jepDTyIdCUSU7ey5lzz8y7797LtFotjPNh+pHxeDzm9/tXu/lS qQSWtb0NBgOP/mfI9SNdLpcw5Xb38PQ0LtfZSCKRxPb25+VoNKp0a9h+hizLgrPZ emAjKBYPIAhnIl6vN9Y3tpt48vhpgASKtiODf+HxeCCKogVBEESqHWq4cHshAYaJ NJtNDALVLIZC60Nz2GgcQtN0aLo+8Dapplqtzgw1LJdlqGoVujbYkGqotqds7j94 eIusFJib82HaPb0yOTVJ8nR+oGE2m8N+YR970t7LdDrTpj9ys7OX1nk7Lxi6gWvz 81haujtSAVMtfTY23q+YZgsOhwO5XPY592Pnu2CapvXSf8V34s6o1WrIpL9ae7vd LnCapuH6jcv4ls5ic3MLqVTqRIa/fu+i/UP1eh2c0+nEzXtf4Lt6AWuv/kCSpFP1 MpfP5/Hh3TnsZCQYhnHq4cDpuoZPWz+PCf1QGynQIHXKT0yA4zsrj2vUG51Jrqp4 Fnsxkunam9ewE9MOw2JB2iUT8bjiQ+Ew7oQXrePLsmwVb1lWoCgKKgSqqhJUaJeA 53kcFDpyrjAXxRmBbNpNHggEg6vtUaUTU1qfuqFbHzANE4ZJV8KTm22RnlYrlWUi Tx7FJ5mxT+xxG/4VYACNlAhcNwBa1gAAAABJRU5ErkJggg== ------------KLmYUyxWijRzsm8UGCbJ8E Content-Disposition: inline; filename=baynote-observer80.js Content-Type: application/x-javascript; charset=utf-8; name=baynote-observer80.js Content-Location: http://i.dell.com/images/global/js/baynote-observer80.js Content-Transfer-Encoding: Base64 CnZhciBCYXlub3RlSlNWZXJzaW9uPSIkUmV2aXNpb246IDMuMTYgJCI7dmFyIEJh eW5vdGVJZ25vcmVkPWZhbHNlO3ZhciBCTl9SRUFEWV9TSUdOQUw9IlJlYWR5U2ln bmFsIjt2YXIgU3RyYXRlZ3k9eyJEZWZlckluamVjdCI6MSwiU2NyaXB0RE9NSW5q ZWN0IjoyLCJPbkxvYWRJbmplY3QiOjN9O2lmKHR5cGVvZihiYXlub3RlX2dsb2Jh bHMpPT0idW5kZWZpbmVkIil2YXIgYmF5bm90ZV9nbG9iYWxzPW5ldyBPYmplY3Qo KTtiYXlub3RlX2dsb2JhbHMuQ29tbW9uUmVzb3VyY2VVUkw9Ii9iYXlub3RlL3Rh Z3MzL2NvbW1vbiI7YmF5bm90ZV9nbG9iYWxzLkNvbW1vblJlc291cmNlSUQ9IkNv bW1vbiI7YmF5bm90ZV9nbG9iYWxzLlBvbGljeVJlc291cmNlSUQ9IlBvbGljeSI7 YmF5bm90ZV9nbG9iYWxzLkN1c3RvbWVyU3RhdHVzPSIvYmF5bm90ZS9jdXN0b21l cnN0YXR1czIiO2JheW5vdGVfZ2xvYmFscy5Db21tb25TY3JpcHRJZD0iY29tbW9u U2NyaXB0SWQiO2lmKHR5cGVvZihiYXlub3RlX2luamVjdF9zdHJhdGVneSkhPSJ1 bmRlZmluZWQiKXtiYXlub3RlX2dsb2JhbHMuRGVmYXVsdEluamVjdFN0cmF0ZWd5 PWJheW5vdGVfaW5qZWN0X3N0cmF0ZWd5O31lbHNle2JheW5vdGVfZ2xvYmFscy5E ZWZhdWx0SW5qZWN0U3RyYXRlZ3k9U3RyYXRlZ3kuRGVmZXJJbmplY3Q7fQppZih0 eXBlb2YoYmF5bm90ZV9zZXJ2ZXJfdGltZW91dCkhPSJ1bmRlZmluZWQiKXtiYXlu b3RlX2dsb2JhbHMuU2VydmVyVGltZW91dD1iYXlub3RlX3NlcnZlcl90aW1lb3V0 O31lbHNle2JheW5vdGVfZ2xvYmFscy5TZXJ2ZXJUaW1lb3V0PTMwMDAwO30KYmF5 bm90ZV9nbG9iYWxzLndhaXRGb3JSZWFkeT1mYWxzZTtiYXlub3RlX2dsb2JhbHMu Y2hlY2tTdGF0dXM9ZmFsc2U7YmF5bm90ZV9nbG9iYWxzLmtlZXBUcmFpbD1mYWxz ZTtiYXlub3RlX2dsb2JhbHMudHJhaWxMZW5ndGg9NTtibklzT3BlcmE9KG5hdmln YXRvci51c2VyQWdlbnQuaW5kZXhPZigiT3BlcmEiKT49MCk7Ym5Jc1NhZmFyaT0o bmF2aWdhdG9yLnVzZXJBZ2VudC5pbmRleE9mKCJBcHBsZVdlYktpdCIpPj0wKTti bklzS29ucXVlcm9yPShuYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoIktvbnF1 ZXJvciIpPj0wKTtibklzS0hUTUw9KGJuSXNTYWZhcml8fGJuSXNLb25xdWVyb3J8 fG5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZigiS0hUTUwiKT49MCk7Ym5Jc0lF PShuYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoImNvbXBhdGlibGUiKT49MCYm bmF2aWdhdG9yLnVzZXJBZ2VudC5pbmRleE9mKCJNU0lFIik+PTAmJiFibklzT3Bl cmEpO2JuSXNNb3ppbGxhPShuYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoIkdl Y2tvIik+PTAmJiFibklzS0hUTUwpO2Z1bmN0aW9uIEJOTG9nKCl7dGhpcy50aW1l QmFzZT1uZXcgRGF0ZSgpLmdldFRpbWUoKTt0aGlzLmxpbmVzPW5ldyBBcnJheSgp O3RoaXMubGFzdExpbmU9IiI7dGhpcy5yZXBDb3VudD0wO30KQk5Mb2cucHJvdG90 eXBlLmxvZz1mdW5jdGlvbihzdHIpe2lmKHN0cj09dGhpcy5sYXN0TGluZSl7Kyt0 aGlzLnJlcENvdW50O3JldHVybjt9CmlmKHRoaXMucmVwQ291bnQ+MCl7dGhpcy5s aW5lcy5wdXNoKCJfX18gQUJPVkUgUkVQRUFURUQgIit0aGlzLnJlcENvdW50KyIg VElNRSIrKCh0aGlzLnJlcENvdW50PjEpPyJTIjoiIikpO30KdGhpcy5sYXN0TGlu ZT1zdHI7dGhpcy5yZXBDb3VudD0wO3ZhciBlbGFwc2VkPW5ldyBEYXRlKCkuZ2V0 VGltZSgpLXRoaXMudGltZUJhc2U7dGhpcy5saW5lcy5wdXNoKGVsYXBzZWQrIjog IitzdHIpO307Qk5Mb2cucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7aWYo dGhpcy5yZXBDb3VudD4wKXt0aGlzLmxpbmVzLnB1c2goIl9fXyBBQk9WRSBSRVBF QVRFRCAiK3RoaXMucmVwQ291bnQrIiBUSU1FIisoKHRoaXMucmVwQ291bnQ+MSk/ IlMiOiIiKSk7dGhpcy5sYXN0TGluZT0iIjt0aGlzLnJlcENvdW50PTA7fQpyZXR1 cm4gdGhpcy5saW5lcy5qb2luKCJcbiIpO307aWYodHlwZW9mKGJuTG9nKT09InVu ZGVmaW5lZCIpe3ZhciBibkxvZz1uZXcgQk5Mb2coKTt9CmZ1bmN0aW9uIEJOQ3Jp dGljYWxTZWN0aW9uUXVldWUoKXt0aGlzLndhaXRMaXN0PW5ldyBPYmplY3QoKTt0 aGlzLmxhc3RJZD0wO30KQk5Dcml0aWNhbFNlY3Rpb25RdWV1ZS5wcm90b3R5cGUu aXNzdWVJZD1mdW5jdGlvbigpe3JldHVybisrdGhpcy5sYXN0SWQ7fTtCTkNyaXRp Y2FsU2VjdGlvblF1ZXVlLnByb3RvdHlwZS5lbnF1ZXVlPWZ1bmN0aW9uKGlkLGl0 ZW0pe3RoaXMud2FpdExpc3RbaWRdPWl0ZW07fTtCTkNyaXRpY2FsU2VjdGlvblF1 ZXVlLnByb3RvdHlwZS5nZXRXYWl0ZXI9ZnVuY3Rpb24oaWQpe3JldHVybihpZD09 bnVsbCk/bnVsbDp0aGlzLndhaXRMaXN0W2lkXTt9O0JOQ3JpdGljYWxTZWN0aW9u UXVldWUucHJvdG90eXBlLmZpcnN0V2FpdGVyPWZ1bmN0aW9uKCl7cmV0dXJuIHRo aXMuZ2V0V2FpdGVyKHRoaXMubmV4dFdhaXRlcktleUFmdGVyKG51bGwpKTt9O0JO Q3JpdGljYWxTZWN0aW9uUXVldWUucHJvdG90eXBlLm5leHRXYWl0ZXJBZnRlcj1m dW5jdGlvbihpZCl7cmV0dXJuIHRoaXMuZ2V0V2FpdGVyKHRoaXMubmV4dFdhaXRl cktleUFmdGVyKGlkKSk7fTtCTkNyaXRpY2FsU2VjdGlvblF1ZXVlLnByb3RvdHlw ZS5uZXh0V2FpdGVyS2V5QWZ0ZXI9ZnVuY3Rpb24oaWQpe2Zvcih2YXIgY3Vycktl eSBpbiB0aGlzLndhaXRMaXN0KXtpZih0eXBlb2YodGhpcy53YWl0TGlzdFtjdXJy S2V5XSkhPSJvYmplY3QiKWNvbnRpbnVlO2lmKGlkPT1udWxsKXJldHVybiBjdXJy S2V5O2lmKGlkPT1jdXJyS2V5KWlkPW51bGw7fQpyZXR1cm4gbnVsbDt9O0JOQ3Jp dGljYWxTZWN0aW9uUXVldWUucHJvdG90eXBlLm5leHRQcmVkZWNlc3Nvcj1mdW5j dGlvbih0YXJnZXQsc3RhcnQpe2Zvcih2YXIgY3VycldhaXRlcj1zdGFydDtjdXJy V2FpdGVyIT1udWxsO2N1cnJXYWl0ZXI9dGhpcy5uZXh0V2FpdGVyQWZ0ZXIoY3Vy cldhaXRlci5pZCkpe2lmKGN1cnJXYWl0ZXIuZW50ZXJ8fChjdXJyV2FpdGVyLm51 bWJlciE9MCYmKGN1cnJXYWl0ZXIubnVtYmVyPHRhcmdldC5udW1iZXJ8fChjdXJy V2FpdGVyLm51bWJlcj09dGFyZ2V0Lm51bWJlciYmY3VycldhaXRlci5pZDx0YXJn ZXQuaWQpKSkpe3JldHVybiBjdXJyV2FpdGVyO319CnJldHVybiBudWxsO307ZnVu Y3Rpb24gQk5Dcml0aWNhbFNlY3Rpb24oY3NRdWV1ZSl7dGhpcy5jc1F1ZXVlPWNz UXVldWU7dGhpcy5kZWJ1Zz0xO30KQk5Dcml0aWNhbFNlY3Rpb24ucHJvdG90eXBl LmVudGVyPWZ1bmN0aW9uKGVudGVyRnVuYyl7dGhpcy5lbnRlckZ1bmM9ZW50ZXJG dW5jO3RoaXMuaWQ9dGhpcy5jc1F1ZXVlLmlzc3VlSWQoKTt0aGlzLmNzUXVldWUu ZW5xdWV1ZSh0aGlzLmlkLHRoaXMpO3RoaXMuZW50ZXI9dHJ1ZTt0aGlzLm51bWJl cj0obmV3IERhdGUoKSkuZ2V0VGltZSgpO3RoaXMuZW50ZXI9ZmFsc2U7dGhpcy5h dHRlbXB0KHRoaXMuY3NRdWV1ZS5maXJzdFdhaXRlcigpKTt9O0JOQ3JpdGljYWxT ZWN0aW9uLnByb3RvdHlwZS5sZWF2ZT1mdW5jdGlvbigpe2lmKHRoaXMuZGVidWcp Ym5Mb2cubG9nKCJMRUFWRSAiK3RoaXMuaWQpO3RoaXMubnVtYmVyPTA7fTtCTkNy aXRpY2FsU2VjdGlvbi5wcm90b3R5cGUuYXR0ZW1wdD1mdW5jdGlvbihzdGFydCl7 dmFyIG5leHRSZWFkeT10aGlzLmNzUXVldWUubmV4dFByZWRlY2Vzc29yKHRoaXMs c3RhcnQpO2lmKG5leHRSZWFkeSE9bnVsbCl7aWYodGhpcy5kZWJ1ZylibkxvZy5s b2coIldBSVQgIit0aGlzLmlkKTt2YXIgbWU9dGhpcztyZXR1cm4gc2V0VGltZW91 dChmdW5jdGlvbigpe21lLmF0dGVtcHQobmV4dFJlYWR5KTt9LDUwKTt9CmlmKHRo aXMuZGVidWcpYm5Mb2cubG9nKCJFTlRFUiAiK3RoaXMuaWQpO3RoaXMuZW50ZXJG dW5jKCk7fTtmdW5jdGlvbiBCTlJlc291cmNlTWFuYWdlcihzKXt0aGlzLmNzUXVl dWU9bmV3IEJOQ3JpdGljYWxTZWN0aW9uUXVldWUoKTt0aGlzLmNyaXRTZWM9bnVs bDt0aGlzLmRlYnVnPTE7dGhpcy5yZXNvdXJjZXM9bmV3IE9iamVjdCgpO3RoaXMu d2FpdGluZz1uZXcgT2JqZWN0KCk7dGhpcy5vbmxvYWRJbmplY3RlZD1mYWxzZTtp Zih0eXBlb2YocykhPSJ1bmRlZmluZWQiKXt0aGlzLnN0cmF0ZWd5PXM7fWVsc2V7 dGhpcy5zdHJhdGVneT1TdHJhdGVneS5TY3JpcHRET01JbmplY3Q7fX0KQk5SZXNv dXJjZU1hbmFnZXIucHJvdG90eXBlLmdldFJlc291cmNlPWZ1bmN0aW9uKHJJZCl7 cmV0dXJuIHRoaXMucmVzb3VyY2VzW3JJZF07fTtCTlJlc291cmNlTWFuYWdlci5w cm90b3R5cGUubG9hZFJlc291cmNlPWZ1bmN0aW9uKHJJZCxyQWRkcmVzcyxyVHlw ZSxkb21JZCl7aWYodHlwZW9mKHRoaXMucmVzb3VyY2VzW3JJZF0pIT0idW5kZWZp bmVkIilyZXR1cm47dGhpcy5yZXNvdXJjZXNbcklkXT1udWxsO3ZhciBjcml0U2Vj PW5ldyBCTkNyaXRpY2FsU2VjdGlvbih0aGlzLmNzUXVldWUpO2NyaXRTZWMuZW50 ZXIoZnVuY3Rpb24oKXtiblJlc291cmNlTWFuYWdlci5pbmplY3QocklkLHJBZGRy ZXNzLHJUeXBlLGNyaXRTZWMsZG9tSWQpO30pO307Qk5SZXNvdXJjZU1hbmFnZXIu cHJvdG90eXBlLmluamVjdD1mdW5jdGlvbihySWQsckFkZHJlc3MsclR5cGUsY3Jp dFNlYyxkb21JZCl7dGhpcy5jcml0U2VjPWNyaXRTZWM7aWYodGhpcy5kZWJ1Zyli bkxvZy5sb2coIklOSkVDVCAiK3RoaXMuY3JpdFNlYy5pZCsiICgiK3JJZCsiKSIp O2lmKHR5cGVvZihyVHlwZSkhPSJ1bmRlZmluZWQiJiZyVHlwZSE9InNjcmlwdCIm JnJUeXBlIT0iaW1nIil7Ym5Mb2cubG9nKCJVbmV4cGVjdGVkIHJlc291cmNlIHR5 cGUgdG8gbG9hZFJlc291cmNlOiAiK3JUeXBlKTtyZXR1cm47fQp0aGlzLmRlZmF1 bHRJbmplY3QocklkLHJBZGRyZXNzLHJUeXBlLGRvbUlkKTt9O0JOUmVzb3VyY2VN YW5hZ2VyLnByb3RvdHlwZS5kZWZhdWx0SW5qZWN0PWZ1bmN0aW9uKHJJZCxyQWRk cmVzcyxyVHlwZSxkb21JZCl7aWYoQmF5bm90ZUlnbm9yZWQpcmV0dXJuO2lmKCFy VHlwZXx8clR5cGU9PSJzY3JpcHQiKXtpZih0aGlzLnN0cmF0ZWd5PT1TdHJhdGVn eS5PbkxvYWRJbmplY3Qpe2lmKHJJZD09YmF5bm90ZV9nbG9iYWxzLkNvbW1vblJl c291cmNlSUR8fHJJZD09YmF5bm90ZV9nbG9iYWxzLlBvbGljeVJlc291cmNlSUQp e2lmKCF0aGlzLm9ubG9hZEluamVjdGVkKXt2YXIgaW5qZWN0SGFuZGxlcj1mdW5j dGlvbigpe3ZhciBzY3JpcHRUYWcxPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNj cmlwdCIpO2lmKGRvbUlkKXNjcmlwdFRhZzEuaWQ9ZG9tSWQ7dmFyIGhlYWQ9ZG9j dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImhlYWQiKTtzY3JpcHRUYWcxLmxh bmd1YWdlPSJqYXZhc2NyaXB0IjtzY3JpcHRUYWcxLnNyYz1yQWRkcmVzcztoZWFk WzBdLmFwcGVuZENoaWxkKHNjcmlwdFRhZzEpO307aWYod2luZG93LmFkZEV2ZW50 TGlzdGVuZXIpd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLGluamVjdEhh bmRsZXIsZmFsc2UpO2Vsc2UgaWYod2luZG93LmF0dGFjaEV2ZW50KXdpbmRvdy5h dHRhY2hFdmVudCgib25sb2FkIixpbmplY3RIYW5kbGVyKTtlbHNlIHdpbmRvd1si b25sb2FkIl09aW5qZWN0SGFuZGxlcjt0aGlzLm9ubG9hZEluamVjdGVkPXRydWU7 cmV0dXJuO319fQpzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dmFyIHNjcmlwdFRhZzE9 ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7aWYoZG9tSWQpc2NyaXB0 VGFnMS5pZD1kb21JZDt2YXIgaGVhZD1kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn TmFtZSgiaGVhZCIpO3NjcmlwdFRhZzEubGFuZ3VhZ2U9ImphdmFzY3JpcHQiO2lm KHR5cGVvZihiYXlub3RlRGVmZXJJbmplY3QpPT0iYm9vbGVhbiImJmJheW5vdGVE ZWZlckluamVjdCl7c2NyaXB0VGFnMS5kZWZlcj0iZGVmZXIiO30KaWYoYm5SZXNv dXJjZU1hbmFnZXIuc3RyYXRlZ3k9PVN0cmF0ZWd5LkRlZmVySW5qZWN0KXtzY3Jp cHRUYWcxLmRlZmVyPSJkZWZlciI7fQpzY3JpcHRUYWcxLnNyYz1yQWRkcmVzczto ZWFkWzBdLmFwcGVuZENoaWxkKHNjcmlwdFRhZzEpO30sNTApO31lbHNlIGlmKHJU eXBlPT0iaW1nIil7dmFyIGltZz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJJTUci KTt2YXIgaGFuZGxlcj1mdW5jdGlvbigpe2JuUmVzb3VyY2VNYW5hZ2VyLnJlZ2lz dGVyQW5kQWRkUmVzb3VyY2UocklkLGltZyk7fTtpZihpbWcuYWRkRXZlbnRMaXN0 ZW5lcilpbWcuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsaGFuZGxlcixmYWxzZSk7 ZWxzZSBpZihpbWcuYXR0YWNoRXZlbnQpaW1nLmF0dGFjaEV2ZW50KCJvbmxvYWQi LGhhbmRsZXIpO2Vsc2UgaW1nWyJvbmxvYWQiXT1oYW5kbGVyO2ltZy5zcmM9ckFk ZHJlc3M7aW1nLnN0eWxlLmRpc3BsYXk9Im5vbmUiO3ZhciBib2R5RWxlbWVudD1k b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnYm9keScpO3ZhciBwaD1ib2R5 RWxlbWVudFswXTtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7aWYocGghPW51bGwpcGgu YXBwZW5kQ2hpbGQoaW1nKTt9LDUpO319O0JOUmVzb3VyY2VNYW5hZ2VyLnByb3Rv dHlwZS53YWl0Rm9yUmVzb3VyY2U9ZnVuY3Rpb24ocklkLGNhbGxiYWNrQ29kZSxy QWRkcmVzcyxyVHlwZSxkb21JZCl7d2l0aCh0aGlzKXtpZihnZXRSZXNvdXJjZShy SWQpKXt0aGlzLnJ1bkNhbGxiYWNrKGNhbGxiYWNrQ29kZSk7fWVsc2V7aWYodHlw ZW9mKHdhaXRpbmdbcklkXSk9PSJ1bmRlZmluZWQiKXdhaXRpbmdbcklkXT1uZXcg QXJyYXkoKTt2YXIgd2FpdGluZ0xpc3Q9d2FpdGluZ1tySWRdO3dhaXRpbmdMaXN0 W3dhaXRpbmdMaXN0Lmxlbmd0aF09Y2FsbGJhY2tDb2RlO2lmKHJBZGRyZXNzKXRo aXMubG9hZFJlc291cmNlKHJJZCxyQWRkcmVzcyxyVHlwZSxkb21JZCk7fX19O0JO UmVzb3VyY2VNYW5hZ2VyLnByb3RvdHlwZS53YWtlVXBXYWl0aW5nPWZ1bmN0aW9u KHJJZCl7d2l0aCh0aGlzKXt2YXIgd2FpdGluZ0xpc3Q9d2FpdGluZ1tySWRdO2lm KCF3YWl0aW5nTGlzdClyZXR1cm47Zm9yKHZhciBpPTA7aTx3YWl0aW5nTGlzdC5s ZW5ndGg7aSsrKXtpZih3YWl0aW5nTGlzdFtpXSl7dmFyIGNvZGVUb0V2YWw9d2Fp dGluZ0xpc3RbaV07d2FpdGluZ0xpc3RbaV09bnVsbDtpZih0aGlzLmRlYnVnJiZj b2RlVG9FdmFsKWJuTG9nLmxvZygiQ0FMTEJBQ0sgIitySWQrIjogIitjb2RlVG9F dmFsKTt0aGlzLnJ1bkNhbGxiYWNrKGNvZGVUb0V2YWwpO319fX07Qk5SZXNvdXJj ZU1hbmFnZXIucHJvdG90eXBlLnJlZ2lzdGVyQW5kQWRkUmVzb3VyY2U9ZnVuY3Rp b24ocklkLHJlc291cmNlKXtpZih0aGlzLmRlYnVnKWJuTG9nLmxvZygiUkVHSVNU RVIgIisodGhpcy5jcml0U2VjP3RoaXMuY3JpdFNlYy5pZDoiIikrIiAoIitySWQr IikiKTt0aGlzLnJlc291cmNlc1tySWRdPXJlc291cmNlO3RoaXMud2FrZVVwV2Fp dGluZyhySWQpO2lmKHRoaXMuY3JpdFNlYyl0aGlzLmNyaXRTZWMubGVhdmUoKTtz ZXRUaW1lb3V0KCJiblJlc291cmNlTWFuYWdlci53YWtlVXBXYWl0aW5nKCciK3JJ ZCsiJykiLDUwMDApO307Qk5SZXNvdXJjZU1hbmFnZXIucHJvdG90eXBlLnJlZ2lz dGVyUmVzb3VyY2U9ZnVuY3Rpb24ocklkKXt0aGlzLnJlZ2lzdGVyQW5kQWRkUmVz b3VyY2UocklkLHRydWUpO307Qk5SZXNvdXJjZU1hbmFnZXIucHJvdG90eXBlLnJl bW92ZVJlc291cmNlPWZ1bmN0aW9uKHJJZCl7dGhpcy5yZXNvdXJjZXNbcklkXT1u dWxsO2RlbGV0ZSh0aGlzLnJlc291cmNlc1tySWRdKTt9O0JOUmVzb3VyY2VNYW5h Z2VyLnByb3RvdHlwZS5ydW5DYWxsYmFjaz1mdW5jdGlvbihjYWxsYmFjayl7aWYo dHlwZW9mKGNhbGxiYWNrKT09InN0cmluZyIpZXZhbChjYWxsYmFjayk7ZWxzZSBp Zih0eXBlb2YoY2FsbGJhY2spPT0iZnVuY3Rpb24iKWNhbGxiYWNrKCk7ZWxzZSBh bGVydCgiSW52YWxpZCBjYWxsYmFjaywgdHlwZT0iK3R5cGVvZihjYWxsYmFjaykp O307aWYodHlwZW9mKGJuUmVzb3VyY2VNYW5hZ2VyKT09InVuZGVmaW5lZCIpe3Zh ciBiblJlc291cmNlTWFuYWdlcj1uZXcgQk5SZXNvdXJjZU1hbmFnZXIoYmF5bm90 ZV9nbG9iYWxzLkRlZmF1bHRJbmplY3RTdHJhdGVneSk7fQpmdW5jdGlvbiBCTlN5 c3RlbSgpe3RoaXMudGVzdFNlcnZlcj1udWxsO30KQk5TeXN0ZW0ucHJvdG90eXBl LmdldENvb2tpZVZhbHVlPWZ1bmN0aW9uKGNvb2tpZU5hbWUsY29va2llU3ViRG9t YWluKXtpZighY29va2llU3ViRG9tYWluKWNvb2tpZVN1YkRvbWFpbj1iYXlub3Rl X2dsb2JhbHMuY29va2llU3ViRG9tYWluO2lmKGNvb2tpZVN1YkRvbWFpbiljb29r aWVOYW1lKz0oIi0iK2Nvb2tpZVN1YkRvbWFpbik7dmFyIHNSRT0iKD86OyApPyIr Y29va2llTmFtZSsiPShbXjtdKik7PyI7dmFyIG9SRT1uZXcgUmVnRXhwKHNSRSk7 aWYob1JFLnRlc3QoZG9jdW1lbnQuY29va2llKSl7cmV0dXJuIGRlY29kZVVSSUNv bXBvbmVudChSZWdFeHBbIiQxIl0pO31lbHNle3JldHVybiBudWxsO319O0JOU3lz dGVtLnByb3RvdHlwZS5zZXRDb29raWU9ZnVuY3Rpb24oY29va2llTmFtZSxjb29r aWVWYWx1ZSxjb29raWVQYXRoLGNvb2tpZUV4cGlyZXMsY29va2llRG9tYWluLGNv b2tpZVN1YkRvbWFpbil7Y29va2llVmFsdWU9ZW5jb2RlVVJJQ29tcG9uZW50KGNv b2tpZVZhbHVlKTtpZihjb29raWVFeHBpcmVzPT0iTkVWRVIiKXt2YXIgbm93RGF0 ZT1uZXcgRGF0ZSgpO25vd0RhdGUuc2V0RnVsbFllYXIobm93RGF0ZS5nZXRGdWxs WWVhcigpKzUwMCk7Y29va2llRXhwaXJlcz1ub3dEYXRlLnRvR01UU3RyaW5nKCk7 fQplbHNlIGlmKGNvb2tpZUV4cGlyZXM9PSJTRVNTSU9OIiljb29raWVFeHBpcmVz PSIiO2lmKGNvb2tpZVBhdGghPSIiKWNvb2tpZVBhdGg9IjtQYXRoPSIrY29va2ll UGF0aDtpZihjb29raWVFeHBpcmVzIT0iIiljb29raWVFeHBpcmVzPSI7ZXhwaXJl cz0iK2Nvb2tpZUV4cGlyZXM7aWYoIWNvb2tpZURvbWFpbiljb29raWVEb21haW49 KGJheW5vdGVfZ2xvYmFscy5jb29raWVEb21haW4pP2JheW5vdGVfZ2xvYmFscy5j b29raWVEb21haW46IiI7aWYoY29va2llRG9tYWluIT0iIiljb29raWVEb21haW49 Ijtkb21haW49Iitjb29raWVEb21haW47aWYoIWNvb2tpZVN1YkRvbWFpbiljb29r aWVTdWJEb21haW49YmF5bm90ZV9nbG9iYWxzLmNvb2tpZVN1YkRvbWFpbjtpZihj b29raWVTdWJEb21haW4pY29va2llTmFtZSs9KCItIitjb29raWVTdWJEb21haW4p O3ZhciBjb29raWVTdHI9Y29va2llTmFtZSsiPSIrY29va2llVmFsdWUrY29va2ll RXhwaXJlcytjb29raWVQYXRoK2Nvb2tpZURvbWFpbjtpZihjb29raWVTdHIubGVu Z3RoPjQwOTYpcmV0dXJuIGZhbHNlO2RvY3VtZW50LmNvb2tpZT1jb29raWVTdHI7 cmV0dXJuIHRydWU7fTtCTlN5c3RlbS5wcm90b3R5cGUucmVtb3ZlQ29va2llPWZ1 bmN0aW9uKGNvb2tpZU5hbWUsY29va2llRG9tYWluKXt0aGlzLnNldENvb2tpZShj b29raWVOYW1lLCIiLCIvIiwiTW9uLCAxIEphbiAxOTkwIDAwOjAwOjAwIixjb29r aWVEb21haW4pO307Qk5TeXN0ZW0ucHJvdG90eXBlLmdldFVSTFBhcmFtPWZ1bmN0 aW9uKG5hbWUsdXJsKXtpZighdXJsKXZhciB1cmw9d2luZG93LmxvY2F0aW9uLmhy ZWY7dmFyIHJlZ2V4PW5ldyBSZWdFeHAoIltcXD8mXSIrbmFtZSsiPShbXiYjXSop Iik7dmFyIG1hdGNoPXJlZ2V4LmV4ZWModXJsKTtpZighbWF0Y2gpcmV0dXJuIG51 bGw7ZWxzZSByZXR1cm4gbWF0Y2hbMV07fTtCTlN5c3RlbS5wcm90b3R5cGUuZ2V0 VGVzdFNlcnZlcj1mdW5jdGlvbigpe2lmKHRoaXMudGVzdFNlcnZlciE9bnVsbCly ZXR1cm4gdGhpcy50ZXN0U2VydmVyO3ZhciB0ZXN0U2VydmVyPXRoaXMuZ2V0VVJM UGFyYW0oImJuX3Rlc3QiKTtpZih0ZXN0U2VydmVyKXRoaXMuc2V0Q29va2llKCJi bl90ZXN0Iix0ZXN0U2VydmVyLCIvIiwiU0VTU0lPTiIpO2Vsc2UgaWYodGVzdFNl cnZlcj09IiIpdGhpcy5yZW1vdmVDb29raWUoImJuX3Rlc3QiKTtlbHNle3Rlc3RT ZXJ2ZXI9dGhpcy5nZXRDb29raWVWYWx1ZSgiYm5fdGVzdCIpO2lmKCF0ZXN0U2Vy dmVyKXRlc3RTZXJ2ZXI9IiI7fQp0aGlzLnRlc3RTZXJ2ZXI9dGVzdFNlcnZlcjty ZXR1cm4gdGVzdFNlcnZlcjt9O2lmKHR5cGVvZihiblN5c3RlbSk9PSJ1bmRlZmlu ZWQiKXt2YXIgYm5TeXN0ZW09bmV3IEJOU3lzdGVtKCk7fQpmdW5jdGlvbiBCTlRh ZyhwcmV2aW91c1RhZyl7aWYocHJldmlvdXNUYWcpe3RoaXMuaWQ9cHJldmlvdXNU YWcuaWQrMTt0aGlzLnNlcnZlcj1wcmV2aW91c1RhZy5zZXJ2ZXI7dGhpcy5jdXN0 b21lcklkPXByZXZpb3VzVGFnLmN1c3RvbWVySWQ7dGhpcy5jb2RlPXByZXZpb3Vz VGFnLmNvZGU7fWVsc2UgdGhpcy5pZD0wO3RoaXMuYXR0cnM9bmV3IE9iamVjdCgp O3RoaXMuZG9jQXR0cnM9bmV3IE9iamVjdCgpO3RoaXMuY3NzPW5ldyBPYmplY3Qo KTt9CkJOVGFnLnByb3RvdHlwZS5nZXRDb21tb25SZXNvdXJjZUlkPWZ1bmN0aW9u KCl7cmV0dXJuIGJheW5vdGVfZ2xvYmFscy5Db21tb25SZXNvdXJjZUlEO307Qk5U YWcucHJvdG90eXBlLmdldENvbW1vblJlc291cmNlQWRkcmVzcz1mdW5jdGlvbihv Ymope3ZhciB1cmxQYXJhbXM9Jz8nO2Zvcih2YXIgaSBpbiBvYmope2lmKGkhPSdz ZXJ2ZXInKXt1cmxQYXJhbXMrPWkrJz0nK2VuY29kZVVSSUNvbXBvbmVudChvYmpb aV0pKycmJzt9fQp2YXIgY3V0TGFzdEFtcD11cmxQYXJhbXMuc3Vic3RyaW5nKDAs dXJsUGFyYW1zLmxlbmd0aC0xKTt2YXIgY29tbW9uVVJMPXRoaXMuc2VydmVyK2Jh eW5vdGVfZ2xvYmFscy5Db21tb25SZXNvdXJjZVVSTCtjdXRMYXN0QW1wO3JldHVy biBjb21tb25VUkw7fTtCTlRhZy5wcm90b3R5cGUuZ2V0RmFpbHNhZmVSZXNvdXJj ZUlkPWZ1bmN0aW9uKCl7cmV0dXJuIkZhaWxzYWZlIjt9O0JOVGFnLnByb3RvdHlw ZS5nZXRGYWlsc2FmZVJlc291cmNlQWRkcmVzcz1mdW5jdGlvbigpe3ZhciB2PUJh eW5vdGVKU1ZlcnNpb24uc3BsaXQoIiAiKVsxXTt2YXIgdT1iblN5c3RlbS5nZXRD b29raWVWYWx1ZSgiYm5fdSIpO3JldHVybih0aGlzLnNlcnZlcitiYXlub3RlX2ds b2JhbHMuQ3VzdG9tZXJTdGF0dXMrIj9jdXN0b21lcklkPSIrdGhpcy5jdXN0b21l cklkKyImY29kZT0iK3RoaXMuY29kZSsiJnY9Iit2KyImdT0iK3UpO307Qk5UYWcu cHJvdG90eXBlLmdldFBhcmFtPWZ1bmN0aW9uKG5hbWUsZGVmYXVsdFZhbHVlKXt2 YXIgdmFsdWU9dGhpc1tuYW1lXTtpZih0eXBlb2YodmFsdWUpPT0idW5kZWZpbmVk Inx8dmFsdWU9PW51bGwpcmV0dXJuIGRlZmF1bHRWYWx1ZTtlbHNlIHJldHVybiB2 YWx1ZTt9O2lmKHR5cGVvZihiYXlub3RlX3RhZyk9PSJ1bmRlZmluZWQiKXt3aW5k b3dbImJuX3RhZ3MiXT1uZXcgQXJyYXkoKTt2YXIgYmF5bm90ZV90YWc9bmV3IEJO VGFnKG51bGwpO30KZnVuY3Rpb24gYm5SZWFkeVNpZ25hbCgpe2JuUmVzb3VyY2VN YW5hZ2VyLnJlZ2lzdGVyUmVzb3VyY2UoQk5fUkVBRFlfU0lHTkFMKTt9CmZ1bmN0 aW9uIGJuQ2FsbChyZXNOYW1lLG1ldGhvZE5hbWUsbWV0aG9kQXJnKXt2YXIgcmVz b3VyY2U9Ym5SZXNvdXJjZU1hbmFnZXIuZ2V0UmVzb3VyY2UocmVzTmFtZSk7aWYo IXJlc291cmNlKXtiblJlc291cmNlTWFuYWdlci53YWl0Rm9yUmVzb3VyY2UocmVz TmFtZSxmdW5jdGlvbigpe2JuQ2FsbChyZXNOYW1lLG1ldGhvZE5hbWUsbWV0aG9k QXJnKTt9KTtyZXR1cm47fQppZih0eXBlb2YocmVzb3VyY2UpIT0ib2JqZWN0Iil7 cmV0dXJuO30KdmFyIG1ldGhvZD1yZXNvdXJjZVttZXRob2ROYW1lXTtpZih0eXBl b2YobWV0aG9kKSE9ImZ1bmN0aW9uIil7cmV0dXJuO30KbWV0aG9kLmNhbGwocmVz b3VyY2UsbWV0aG9kQXJnKTt9CmZ1bmN0aW9uIGJuV2FpdEZvckN1c3RvbWVyU3Rh dHVzKGNhbGxCYWNrKXtpZighYm5DaGVja0N1c3RvbWVyU3RhdHVzKCkpe3ZhciBm YWlsc2FmZUlkPWJheW5vdGVfdGFnLmdldEZhaWxzYWZlUmVzb3VyY2VJZCgpO2Ju UmVzb3VyY2VNYW5hZ2VyLndhaXRGb3JSZXNvdXJjZShmYWlsc2FmZUlkLGZ1bmN0 aW9uKCl7Ym5XYWl0Rm9yQ3VzdG9tZXJTdGF0dXMoY2FsbEJhY2spO30sYmF5bm90 ZV90YWcuZ2V0RmFpbHNhZmVSZXNvdXJjZUFkZHJlc3MoKSwiaW1nIik7cmV0dXJu O30KYm5SZXNvdXJjZU1hbmFnZXIucnVuQ2FsbGJhY2soY2FsbEJhY2spO30KZnVu Y3Rpb24gYm5DaGVja0N1c3RvbWVyU3RhdHVzKCl7dmFyIGZhaWxzYWZlSWQ9YmF5 bm90ZV90YWcuZ2V0RmFpbHNhZmVSZXNvdXJjZUlkKCk7aWYoYm5SZXNvdXJjZU1h bmFnZXIuZ2V0UmVzb3VyY2UoZmFpbHNhZmVJZCkpcmV0dXJuIHRydWU7ZWxzZSBy ZXR1cm4gZmFsc2U7fQp2YXIgQmF5bm90ZUFQST17fTtCYXlub3RlQVBJLmdldFVS TFBhcmFtPWZ1bmN0aW9uKHBhcmFtTmFtZSx1cmwpe3JldHVybiBiblN5c3RlbS5n ZXRVUkxQYXJhbShwYXJhbU5hbWUsdXJsKTt9O0JheW5vdGVBUEkuaW5pdD1mdW5j dGlvbihwYXJhbXMpe2lmKCFwYXJhbXN8fCFwYXJhbXMuc2VydmVyfHwhcGFyYW1z LmN1c3RvbWVySWR8fCFwYXJhbXMuY29kZSl7Ym5Mb2cubG9nKCJFUlJPUjogaW5p dCBjYWxsZWQgd2l0aCBpbnN1ZmZpY2llbnQgYXJndW1lbnRzIC0gbmVlZHMgc2Vy dmVyLCBjdXN0b21lcklkLCBjb2RlIik7cmV0dXJuO30KaWYoIXBhcmFtcy50aW1l b3V0KXtwYXJhbXMudGltZW91dD1iYXlub3RlX2dsb2JhbHMuU2VydmVyVGltZW91 dDt9CnZhciB0ZXN0U2VydmVyPWJuU3lzdGVtLmdldFRlc3RTZXJ2ZXIoKTtpZih0 ZXN0U2VydmVyKXt2YXIgcmVWYWxpZFRlc3RTZXJ2ZXI9bmV3IFJlZ0V4cCgiXmh0 dHBzPzovL1teL10qXC5iYXlub3RlXC4oY29tfG5ldCkoOlxkKyk/KC8uKik/Iik7 aWYocmVWYWxpZFRlc3RTZXJ2ZXIudGVzdCh0ZXN0U2VydmVyKSlwYXJhbXMuc2Vy dmVyPXRlc3RTZXJ2ZXI7ZWxzZSBibkxvZy5sb2coIklnbm9yaW5nIGludmFsaWQg dGVzdCBzZXJ2ZXIgXCIiK3Rlc3RTZXJ2ZXIrIlwiIik7fQppZihwYXJhbXMuc2Vy dmVyKWJheW5vdGVfdGFnLnNlcnZlcj1wYXJhbXMuc2VydmVyO2lmKHBhcmFtcy5j dXN0b21lcklkKWJheW5vdGVfdGFnLmN1c3RvbWVySWQ9cGFyYW1zLmN1c3RvbWVy SWQ7aWYocGFyYW1zLmNvZGUpYmF5bm90ZV90YWcuY29kZT1wYXJhbXMuY29kZTt2 YXIgY29tbW9uSWQ9YmF5bm90ZV90YWcuZ2V0Q29tbW9uUmVzb3VyY2VJZCgpO2lm KCFiblJlc291cmNlTWFuYWdlci5nZXRSZXNvdXJjZShjb21tb25JZCkpe2lmKHBh cmFtcy50aW1lb3V0KXtpZih0eXBlb2YgQmF5bm90ZUFQSS5pbml0LndhaXRpbmch PSd1bmRlZmluZWQnKXtpZihCYXlub3RlQVBJLmluaXQud2FpdGluZyl7QmF5bm90 ZUlnbm9yZWQ9dHJ1ZTtCYXlub3RlQVBJLmluaXQud2FpdGluZz1mYWxzZTt2YXIg c2NyaXB0RWxlPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGJheW5vdGVfZ2xvYmFs cy5Db21tb25TY3JpcHRJZCk7c2NyaXB0RWxlLnNyYz0nJztpZih0eXBlb2YgcGFy YW1zLm9uRmFpbHVyZT09J2Z1bmN0aW9uJylwYXJhbXMub25GYWlsdXJlKCk7cmV0 dXJuO31lbHNle3JldHVybjt9fX0KYm5SZXNvdXJjZU1hbmFnZXIud2FpdEZvclJl c291cmNlKGNvbW1vbklkLGZ1bmN0aW9uKCl7QmF5bm90ZUFQSS5pbml0KHBhcmFt cyl9LGJheW5vdGVfdGFnLmdldENvbW1vblJlc291cmNlQWRkcmVzcyhwYXJhbXMp LCJzY3JpcHQiLGJheW5vdGVfZ2xvYmFscy5Db21tb25TY3JpcHRJZCk7aWYocGFy YW1zLnRpbWVvdXQpe0JheW5vdGVBUEkuaW5pdC53YWl0aW5nPXRydWU7c2V0VGlt ZW91dChmdW5jdGlvbigpe0JheW5vdGVBUEkuaW5pdChwYXJhbXMpfSxwYXJhbXMu dGltZW91dCk7fX1lbHNle2lmKCFCYXlub3RlSWdub3JlZCl7Ym5Db21tb24uY29t cGxldGVQcmVsb2FkKHBhcmFtcyk7aWYocGFyYW1zLnRpbWVvdXQmJkJheW5vdGVB UEkuaW5pdC53YWl0aW5nKXtCYXlub3RlQVBJLmluaXQud2FpdGluZz1mYWxzZTtp Zih0eXBlb2YgcGFyYW1zLm9uU3VjY2Vzcz09J2Z1bmN0aW9uJylwYXJhbXMub25T dWNjZXNzKCk7fX19fTtCYXlub3RlQVBJLmV4ZWN1dGU9ZnVuY3Rpb24oaGFuZGxl ck5hbWUsaGFuZGxlcnBhcmFtcyl7dmFyIGNvbW1vbklkPWJheW5vdGVfdGFnLmdl dENvbW1vblJlc291cmNlSWQoKTtpZih0eXBlb2YoYm5SZXNvdXJjZU1hbmFnZXIu Z2V0UmVzb3VyY2UoY29tbW9uSWQpKT09J3VuZGVmaW5lZCcpe2JuTG9nLmxvZygi V0FSTjogY29tbW9uIG5vdCBsb2FkZWQgLSBleGl0aW5nIGV4ZWN1dGU7IGNvbnNp ZGVyIGNhbGxpbmcgaW5pdCBmaXJzdCIpO3JldHVybjt9ZWxzZSBpZih0eXBlb2Yg Ym5Db21tb249PSd1bmRlZmluZWQnKXtiblJlc291cmNlTWFuYWdlci53YWl0Rm9y UmVzb3VyY2UoY29tbW9uSWQsZnVuY3Rpb24oKXtCYXlub3RlQVBJLmV4ZWN1dGUo aGFuZGxlck5hbWUsaGFuZGxlcnBhcmFtcyk7fSk7cmV0dXJuO30KYm5Db21tb24u d2FpdEFuZEV4ZWN1dGUoaGFuZGxlck5hbWUsaGFuZGxlcnBhcmFtcyk7fTtCYXlu b3RlQVBJLmV4ZWN1dGVBbGw9ZnVuY3Rpb24oaGFuZGxlcnBhcmFtcyl7dmFyIGNv bW1vbklkPWJheW5vdGVfdGFnLmdldENvbW1vblJlc291cmNlSWQoKTtpZih0eXBl b2YoYm5SZXNvdXJjZU1hbmFnZXIuZ2V0UmVzb3VyY2UoY29tbW9uSWQpKT09J3Vu ZGVmaW5lZCcpe2JuTG9nLmxvZygiV0FSTjogY29tbW9uIG5vdCBsb2FkZWQgLSBl eGl0aW5nIGV4ZWN1dGVBbGw7IGNvbnNpZGVyIGNhbGxpbmcgaW5pdCBmaXJzdCIp O3JldHVybjt9ZWxzZSBpZih0eXBlb2YgYm5Db21tb249PSd1bmRlZmluZWQnKXti blJlc291cmNlTWFuYWdlci53YWl0Rm9yUmVzb3VyY2UoY29tbW9uSWQsZnVuY3Rp b24oKXtCYXlub3RlQVBJLmV4ZWN1dGVBbGwoaGFuZGxlcnBhcmFtcyk7fSk7cmV0 dXJuO30KYm5Db21tb24ud2FpdEFuZEV4ZWN1dGVBbGwoaGFuZGxlcnBhcmFtcyk7 fTtCYXlub3RlQVBJLmNhbGw9ZnVuY3Rpb24oaGFuZGxlck5hbWUsbWV0aG9kLG1l dGhvZEFyZ3Msc2NvcGVPYmope3ZhciBjb21tb25JZD1iYXlub3RlX3RhZy5nZXRD b21tb25SZXNvdXJjZUlkKCk7aWYodHlwZW9mKGJuUmVzb3VyY2VNYW5hZ2VyLmdl dFJlc291cmNlKGNvbW1vbklkKSk9PSd1bmRlZmluZWQnKXtibkxvZy5sb2coIldB Uk46IGNvbW1vbiBub3QgbG9hZGVkIC0gZXhpdGluZyBjYWxsOyBjb25zaWRlciBj YWxsaW5nIGluaXQgZmlyc3QiKTtyZXR1cm47fWVsc2UgaWYodHlwZW9mIGJuQ29t bW9uPT0ndW5kZWZpbmVkJyl7Ym5SZXNvdXJjZU1hbmFnZXIud2FpdEZvclJlc291 cmNlKGNvbW1vbklkLGZ1bmN0aW9uKCl7QmF5bm90ZUFQSS5jYWxsKGhhbmRsZXJO YW1lLG1ldGhvZCxtZXRob2RBcmdzLHNjb3BlT2JqKTt9KTtyZXR1cm47fQpibkNv bW1vbi5maW5pc2hDYWxsKGhhbmRsZXJOYW1lLG1ldGhvZCxtZXRob2RBcmdzLHNj b3BlT2JqKTt9O0JheW5vdGVBUEkuaXNCYXlub3RlSWdub3JlZD1mdW5jdGlvbigp e3JldHVybiBCYXlub3RlSWdub3JlZDt9O0JheW5vdGVBUEkuZ2V0Q29va2llRG9t YWluPWZ1bmN0aW9uKCl7dmFyIGNEb21haW49IiI7dmFyIGJuX2xvY0hyZWY9d2lu ZG93LmxvY2F0aW9uLmhyZWY7dmFyIGk9Ym5fbG9jSHJlZi5pbmRleE9mKCcvLycp O3ZhciBzMT1ibl9sb2NIcmVmLnN1YnN0cmluZyhpKzIpO3ZhciBqPXMxLmluZGV4 T2YoJy8nKTtpZihqPDApCnZhciBzMj1zMTtlbHNlCnZhciBzMj1zMS5zdWJzdHJp bmcoMCxqKTt2YXIgaz1zMi5pbmRleE9mKCcuJyk7dmFyIHMzPXMyLnN1YnN0cmlu ZyhrKzEpO3MzO3JldHVybiBjRG9tYWluPXMzO30KYmF5bm90ZV9nbG9iYWxzLmNv b2tpZURvbWFpbj1CYXlub3RlQVBJLmdldENvb2tpZURvbWFpbigpO3ZhciBwcmVM b2FkT2JqPXt9O3ZhciBibl9sb2NIcmVmPXdpbmRvdy5sb2NhdGlvbi5ocmVmO2lm KGJuX2xvY0hyZWYuaW5kZXhPZigiaHR0cHM6Ly8iKT09MCl7cHJlTG9hZE9iai5z ZXJ2ZXI9Imh0dHBzOi8vZGVsbC1nbG9iYWwuYmF5bm90ZS5uZXQiO31lbHNle3By ZUxvYWRPYmouc2VydmVyPSJodHRwOi8vZGVsbC1nbG9iYWwuYmF5bm90ZS5uZXQi O30KcHJlTG9hZE9iai5jdXN0b21lcklkPSJkZWxsIjtwcmVMb2FkT2JqLmNvZGU9 Imdsb2JhbCI7QmF5bm90ZUFQSS5pbml0KHByZUxvYWRPYmopO2lmKHR5cGVvZihi YXlub3RlT2JzZXJ2ZXIpPT0idW5kZWZpbmVkInx8dHlwZW9mKGJheW5vdGVPYnNl cnZlcikhPSJib29sZWFuInx8YmF5bm90ZU9ic2VydmVyKXtCYXlub3RlQVBJLmV4 ZWN1dGUoIm9ic2VydmVyIik7fQppZih0eXBlb2YoYmF5bm90ZUd1aWRlKT09InVu ZGVmaW5lZCJ8fHR5cGVvZihiYXlub3RlR3VpZGUpIT0iYm9vbGVhbiJ8fGJheW5v dGVHdWlkZSl7QmF5bm90ZUFQSS5leGVjdXRlKCJyZWNvbW1lbmRhdGlvbiIpO30K aWYodHlwZW9mKGJheW5vdGVEaXNhYmxlQWpheCkhPSJ1bmRlZmluZWQiJiZ0eXBl b2YoYmF5bm90ZURpc2FibGVBamF4KT09ImJvb2xlYW4iJiYhYmF5bm90ZURpc2Fi bGVBamF4KXtCYXlub3RlQVBJLmV4ZWN1dGUoImFqYXgiKTt9Cg== ------------KLmYUyxWijRzsm8UGCbJ8E Content-Disposition: inline; filename=menu.htm Content-Type: text/html; charset=utf-8; name=menu.htm Content-Location: http://configure-cdn.us.dell.com/Dellstore/public/menu.aspx?c=us&l=en&s=dhs&cs=19 Content-Transfer-Encoding: Base64 Ly8gbWVudSBkZWZpbml0aW9uIGZvciBjPXVzJmw9ZW4mcz1kaHMmY3M9MTkNCi8v DQp2YXIgbV8wXzBfTWVudSA9IG5ldyBBcnJheSggbmV3IG1lbnVJdGVtKCAiQmVz dC1zZWxsaW5nIExhcHRvcCBEZWFscyIsICJodHRwOi8vd3d3LmRlbGwuY29tL3Av cG9wdWxhci1sYXB0b3AtZGVhbHMuYXNweD9jPXVzJmNzPTE5Jmw9ZW4mcz1kaHMi ICksIG5ldyBtZW51SXRlbSggIkJlc3Qtc2VsbGluZyBEZXNrdG9wIERlYWxzIiwg Imh0dHA6Ly93d3cuZGVsbC5jb20vcC9wb3B1bGFyLWRlc2t0b3AtZGVhbHMuYXNw eD9jPXVzJmNzPTE5Jmw9ZW4mcz1kaHMiICksIG5ldyBtZW51SXRlbSggIkxpbWl0 ZWQgUXVhbnRpdHkgQ2xlYXJhbmNlIiwgImh0dHA6Ly93d3cuZGVsbC5jb20vdXMv cC9jb21wdXRlci1jbGVhcmFuY2Utc2FsZS5hc3B4P2M9dXMmY3M9MTkmbD1lbiZz PWRocyZ+Y2s9bW4mcmVkaXJlY3Q9MSZ+Y2s9bW4iICksIG5ldyBtZW51SXRlbSgg IkN1c3RvbWVyIEZhdm9yaXRlcyIsICJodHRwOi8vd3d3LmRlbGwuY29tL2NvbnRl bnQvdG9waWNzL3NlZ3RvcGljLmFzcHgvY3VzdG9tZXJfZmF2b3JpdGVzP2M9dXMm Y3M9MTkmbD1lbiZzPWRocyIgKSwgbmV3IG1lbnVJdGVtKCAiVFYgJiBFbGVjdHJv bmljcyBEZWFscyIsICJodHRwOi8vYWNjZXNzb3JpZXMudXMuZGVsbC5jb20vc25h L3NuYS5hc3B4P2M9dXMmY3M9MTkmbD1lbiZzPWRocyZ+dG9waWM9ZW5hX2RlYWxz IiApLCBuZXcgbWVudUl0ZW0oICJEZWxsIENvdXBvbnMiLCAiaHR0cDovL3d3dy5k ZWxsLmNvbS9jb250ZW50L3RvcGljcy9zZWd0b3BpYy5hc3B4L2RlbGxjb3Vwb25f c2F2aW5ncz9jPXVzJmNzPTE5Jmw9ZW4mcz1kaHMmfnRhYj0yIiApLCBuZXcgbWVu dUl0ZW0oICJBcyBBZHZlcnRpc2VkIiwgImh0dHA6Ly93d3cuZGVsbC5jb20vY29u dGVudC90b3BpY3Mvc2VndG9waWMuYXNweC9hZHZlcnRpc2VkP2M9dXMmY3M9MTkm bD1lbiZzPWRocyIgKSwgbmV3IG1lbnVJdGVtKCAiRmluYW5jaW5nIFByb21vdGlv bnMiLCAiaHR0cDovL3d3dy5kZWxsLmNvbS9jb250ZW50L3RvcGljcy9zZWd0b3Bp Yy5hc3B4L2RwYV9sZWFybm1vcmU/Yz11cyZjcz0xOSZsPWVuJnM9ZGhzJn5sdD1w b3B1cCZ+dGFiPTIiICkgKTsNCnZhciBtXzBfMV8wX01lbnUgPSBuZXcgQXJyYXko IG5ldyBtZW51SXRlbSggIkluc3Bpcm9uIGR1byIsICJodHRwOi8vd3d3LmRlbGwu Y29tL2NvbnRlbnQvdG9waWNzL3RvcGljLmFzcHgvZ2xvYmFsL3Byb2R1Y3RzL2xh bmRpbmcvZW4vaW5zcGlyb24/Yz11cyZjcz0xOSZsPWVuJnM9ZGhzIiApLCBuZXcg bWVudUl0ZW0oICJJbnNwaXJvbiAxNFIiLCAiaHR0cDovL3d3dy5kZWxsLmNvbS9w L2luc3Bpcm9uLTE0ci9wZD9jPXVzJmNzPTE5Jmw9ZW4mcz1kaHMiICksIG5ldyBt ZW51SXRlbSggIkluc3Bpcm9uIDE1UiIsICJodHRwOi8vd3d3LmRlbGwuY29tL3Vz L3AvaW5zcGlyb24tMTVyL3BkIiApLCBuZXcgbWVudUl0ZW0oICJORVchIEluc3Bp cm9uIFIgKFN3aXRjaCAtIDE0LCAxNSwgMTcpIiwgImh0dHA6Ly93d3cuZGVsbC5j b20vdXMvcC9pbnNwaXJvbi1yL3BkLmFzcHgiICkgKTsNCnZhciBtXzBfMV8xX01l bnUgPSBuZXcgQXJyYXkoIG5ldyBtZW51SXRlbSggIlhQUyAxNSIsICJodHRwOi8v d3d3LmRlbGwuY29tL3VzL3AveHBzLWw1MDJ4L3BkLmFzcHgiICksIG5ldyBtZW51 SXRlbSggIlhQUyAxNyAoKzNEKSIsICJodHRwOi8vd3d3LmRlbGwuY29tL3VzL3Av eHBzLWw3MDJ4L3BkLmFzcHgiICkgKTsNCnZhciBtXzBfMV8yX01lbnUgPSBuZXcg QXJyYXkoIG5ldyBtZW51SXRlbSggIk0xMXgiLCAiaHR0cDovL3d3dy5kZWxsLmNv bS9wL2FsaWVud2FyZS1tMTF4L3BkLmFzcHg/Yz11cyZjcz0xOSZsPWVuJnM9ZGhz IiApLCBuZXcgbWVudUl0ZW0oICJNMTV4IiwgImh0dHA6Ly93d3cuZGVsbC5jb20v cC9hbGllbndhcmUtbTE1eC9wZC5hc3B4P2M9dXMmY3M9MTkmbD1lbiZzPWRocyIg KSwgbmV3IG1lbnVJdGVtKCAiTTE3eCAoKzNEKSIsICJodHRwOi8vd3d3LmRlbGwu Y29tL3VzL3AvYWxpZW53YXJlLU0xN3gtcjMvcGQuYXNweCIgKSApOw0KdmFyIG1f MF8xXzNfTWVudSA9IG5ldyBBcnJheSggbmV3IG1lbnVJdGVtKCAiTWluaSAxMDEy IiwgImh0dHA6Ly93d3cuZGVsbC5jb20vcC9pbnNwaXJvbi1taW5pMTAxMi9wZC5h c3B4P2M9dXMmY3M9MTkmbD1lbiZzPWRocyIgKSwgbmV3IG1lbnVJdGVtKCAiTWlu aSAxMDE4IiwgImh0dHA6Ly93d3cuZGVsbC5jb20vcC9pbnNwaXJvbi1taW5pMTAx OC9wZD9jPXVzJmNzPTE5Jmw9ZW4mcz1kaHMiICkgKTsNCnZhciBtXzBfMV80X01l bnUgPSBuZXcgQXJyYXkoIG5ldyBtZW51SXRlbSggIkluc3Bpcm9uIDE1IEludGVs IiwgImh0dHA6Ly93d3cuZGVsbC5jb20vdXMvcC9pbnNwaXJvbi0xNS1uNTAzMC9w ZCIgKSwgbmV3IG1lbnVJdGVtKCAiSW5zcGlyb24gMTUgQU1EIiwgImh0dHA6Ly93 d3cuZGVsbC5jb20vdXMvcC9pbnNwaXJvbi0xNS1tNTAzMC9wZCIgKSwgbmV3IG1l bnVJdGVtKCAiSW5zcGlyb24gMTdSIiwgImh0dHA6Ly93d3cuZGVsbC5jb20vdXMv cC9pbnNwaXJvbi0xN3IvcGQiICkgKTsNCnZhciBtXzBfMV9NZW51ID0gbmV3IEFy cmF5KCBuZXcgbWVudUl0ZW0oICJCZXN0LXNlbGxpbmcgTGFwdG9wIERlYWxzIiwg Imh0dHA6Ly93d3cuZGVsbC5jb20vY29udGVudC90b3BpY3MvdG9waWMuYXNweC91 cy9zZWdtZW50cy9kaHMvZGVhbHMvcG9wdWxhcl9sYXB0b3BzP2M9dXMmY3M9MTkm bD1lbiZzPWRocyIgKSwgbmV3IG1lbnVJdGVtKCAiVmlldyBhbGwgTGFwdG9wcyIs ICJodHRwOi8vd3d3LmRlbGwuY29tL2NvbnRlbnQvcHJvZHVjdHMvcmVzdWx0c2Nv bXBhcmUuYXNweD9jPXVzJmw9ZW4mcz1kaHMmY3M9MTkmfm9lPXRydWUmcHJvZHM9 dXN+ZW5+Mjl+bGFwdG9wX21pbmlfMTAxMn5+LHVzfmVufjI5fmxhcHRvcF9taW5p XzEwMTh+fix1c35lbn4yOX5sYXB0b3BfaW5zcGlyb25fMTRyfn4sdXN+ZW5+Mjl+ bGFwdG9wX2luc3Bpcm9uXzE1cn5+LHVzfmVufjI5fmxhcHRvcF9pbnNwaXJvbl8x N3J+fix1c35lbn4yOX5pbnNwaXJvbi0xNHItbmV3LWFuYXYxfn4sdXN+ZW5+Mjl+ aW5zcGlyb24tMTVyLW5ldy1hbmF2MX5+LHVzfmVufjI5fmluc3Bpcm9uLTE3ci1u ZXctYW5hdjF+fix1c35lbn4yOX5sYXB0b3BfaW5zcGlyb25fYW1kfn4sdXN+ZW5+ Mjl+bGFwdG9wX2luc3Bpcm9uX2R1b35+LHVzfmVufjI5fmxhcHRvcF94cHNfMTR+ fix1c35lbn4yOX54cHNfMTdfMDF+fix1c35lbn4yOX5hbGllbndhcmUtbTExeC1h bmF2MX5+LHVzfmVufjI5fmFsaWVud2FyZS1tMTV4LWFuYXYxfn4sdXN+ZW5+Mjl+ bGFwdG9wLWFsaWVud2FyZS1tMTd4X2FuYXZfMSZ+Y2s9bW4mfmNrPW1uIiApLCBu ZXcgbWVudVNlcCgpLCBuZXcgbWVudVJlZiggImluc3BuTGFwdG9wc01lbnUiLCAi SW5zcGlyb24gLSBFdmVyeWRheSBFc3NlbnRpYWxzIiwgImh0dHA6Ly93d3cuZGVs bC5jb20vcC9pbnNwaXJvbi1sYXB0b3BzLmFzcHg/Yz11cyZjcz0xOSZsPWVuJnM9 ZGhzIiwgbV8wXzFfMF9NZW51ICksIG5ldyBtZW51UmVmKCAic3R1ZGlvTGFwdG9w c01lbnUiLCAiWFBTIC0gUGVyZm9ybWFuY2UiLCAiaHR0cDovL3d3dy5kZWxsLmNv bS9jb250ZW50L3RvcGljcy9zZWd0b3BpYy5hc3B4L3hwcy1sYXB0b3BzP2M9dXMm Y3M9MTkmbD1lbiZzPWRocyIsIG1fMF8xXzFfTWVudSApLCBuZXcgbWVudVJlZigg ImhuXzJjMDhlMjRNZW51IiwgIkFsaWVud2FyZSAtIEdhbWluZyIsICJodHRwOi8v d3d3LmFsaWVud2FyZS5jb20vTGFuZGluZ3MvbGFwdG9wcy5hc3B4IiwgbV8wXzFf Ml9NZW51ICksIG5ldyBtZW51UmVmKCAiaW5zcG5taW5pTWVudSIsICJNaW5pIC0g TmV0Ym9va3MiLCAiaHR0cDovL3d3dy5kZWxsLmNvbS9wL2luc3Bpcm9uLW1pbmkt bmV0Ym9va3MuYXNweD9jPXVzJmNzPTE5Jmw9ZW4mcz1kaHMiLCBtXzBfMV8zX01l bnUgKSwgbmV3IG1lbnVJdGVtKCAiVm9zdHJvIC0gU21hbGwgQnVzaW5lc3MiLCAi aHR0cDovL3d3dy5kZWxsLmNvbS91cy9idXNpbmVzcy9wL3Zvc3Ryby1sYXB0b3Bz P35jaz1hbmF2IiApLCBuZXcgbWVudVJlZiggImhuX2RjOTliZE1lbnUiLCAiTGFw dG9wcyBpbiBSZXRhaWwiLCAiaHR0cDovL3d3dy5kZWxsLmNvbS9jb250ZW50L3Rv cGljcy9zZWd0b3BpYy5hc3B4L3JldGFpbF9zdG9yZV9sb2NhdG9yP2M9dXMmY3M9 MTkmbD1lbiZzPWRocyZ+Y2s9bW4iLCBtXzBfMV80X01lbnUgKSwgbmV3IG1lbnVT ZXAoKSwgbmV3IG1lbnVJdGVtKCAiTGFwdG9wcyB3aXRoIEludGVsIFdpcmVsZXNz IERpc3BsYXkgKFdpZGkpIiwgImh0dHA6Ly93d3cuZGVsbC5jb20vcC9pbnNwaXJv bi1yLXNlcmllcy5hc3B4P2M9dXMmY3M9MTkmbD1lbiZzPWRocyIgKSwgbmV3IG1l bnVJdGVtKCAiTGFwdG9wcyAmIE5ldGJvb2tzIE9wdGltaXplZCB3aXRoIE1vYmls ZSBCcm9hZGJhbmQiLCAiaHR0cDovL3d3dy5kZWxsLmNvbS9wL21vYmlsaXR5LWxh cHRvcC1kZWFscy5hc3B4P2M9dXMmY3M9MTkmbD1lbiZzPWRocyIgKSwgbmV3IG1l bnVJdGVtKCAiTGFwdG9wIFByb2R1Y3QgQWR2aXNvciIsICJodHRwOi8vd3d3LmRl bGwuY29tL2NvbnRlbnQvdG9waWNzL3RvcGljLmFzcHgvZ2xvYmFsL3NlZWtlci9u b3RlYm9va3M/Yz11cyZjcz0xOSZsPWVuJnM9ZGhzIiApLCBuZXcgbWVudUl0ZW0o ICJBcyBBZHZlcnRpc2VkIiwgImh0dHA6Ly93d3cuZGVsbC5jb20vY29udGVudC90 b3BpY3Mvc2VndG9waWMuYXNweC9hZHZlcnRpc2VkP2M9dXMmY3M9MTkmbD1lbiZz PWRocyIgKSwgbmV3IG1lbnVJdGVtKCAiRGVzaWduIFN0dWRpbyAoT3ZlciAzMDAg RGVzaWducykiLCAiaHR0cDovL3d3dy5kZWxsLmNvbS9jb250ZW50L3RvcGljcy90 b3BpYy5hc3B4L2dsb2JhbC9zaGFyZWQvZGVzaWduX3N0dWRpby9kZXNpZ25fc3R1 ZGlvXzM/Yz11cyZjcz0xOSZsPWVuJnM9ZGhzIiApLCBuZXcgbWVudUl0ZW0oICJQ YXJ0cyAmIFVwZ3JhZGVzIiwgImh0dHA6Ly9hY2Nlc3Nvcmllcy51cy5kZWxsLmNv bS9zbmEvRGVsbFBhcnRzRmFtaWx5LmFzcHg/Yz11cyZjcz0xOSZsPWVuJnM9ZGhz Jn5jaz1hbmF2JmNhdGVnb3J5X2lkPTc1NjYmcmVkaXJlY3Q9MSIgKSwgbmV3IG1l bnVJdGVtKCAiTGFwdG9wIEFjY2Vzc29yaWVzIiwgImh0dHA6Ly9hY2Nlc3Nvcmll cy51cy5kZWxsLmNvbS9zbmEvY2F0ZWdvcnkuYXNweD9jPXVzJmNhdGVnb3J5X2lk PTU0MzYmY3M9MTkmbD1lbiZzPWRocyIgKSApOw0KdmFyIG1fMF8yXzBfTWVudSA9 IG5ldyBBcnJheSggbmV3IG1lbnVJdGVtKCAiSW5zcGlyb24gT25lIDIzMDUgdG91 Y2hzY3JlZW4iLCAiaHR0cDovL3d3dy5kZWxsLmNvbS91cy9wL2luc3Bpcm9uLW9u ZS0yMzA1LWFtZC9wZCIgKSwgbmV3IG1lbnVJdGVtKCAiSW5zcGlyb24gT25lIDIz MDUiLCAiaHR0cDovL3d3dy5kZWxsLmNvbS91cy9wL2luc3Bpcm9uLW9uZS0yMzA1 LWFtZC1udC9wZCIgKSApOw0KdmFyIG1fMF8yXzFfTWVudSA9IG5ldyBBcnJheSgg bmV3IG1lbnVJdGVtKCAiSW5zcGlyb24gWmlubyBIRCIsICJodHRwOi8vd3d3LmRl bGwuY29tL3AvaW5zcGlyb24temluby1oZC00MTAvcGQ/Yz11cyZjcz0xOSZsPWVu JnM9ZGhzIiApICk7DQp2YXIgbV8wXzJfMl9NZW51ID0gbmV3IEFycmF5KCBuZXcg bWVudUl0ZW0oICJJbnNwaXJvbiA1NjAiLCAiaHR0cDovL3d3dy5kZWxsLmNvbS9w L2luc3Bpcm9uLTU2MC9wZC5hc3B4P2M9dXMmY3M9MTkmbD1lbiZzPWRocyIgKSwg bmV3IG1lbnVJdGVtKCAiSW5zcGlyb24gNTcwIiwgImh0dHA6Ly93d3cuZGVsbC5j b20vcC9pbnNwaXJvbi01NzAvcGQuYXNweD9jPXVzJmNzPTE5Jmw9ZW4mcz1kaHMi ICksIG5ldyBtZW51SXRlbSggIkluc3Bpcm9uIDU4MCIsICJodHRwOi8vd3d3LmRl bGwuY29tL3AvaW5zcGlyb24tNTgwL3BkLmFzcHg/Yz11cyZjcz0xOSZsPWVuJnM9 ZGhzIiApICk7DQp2YXIgbV8wXzJfM19NZW51ID0gbmV3IEFycmF5KCBuZXcgbWVu dUl0ZW0oICJYUFMgODMwMCIsICJodHRwOi8vd3d3LmRlbGwuY29tL3VzL3AveHBz LTgzMDAvcGQuYXNweD9jPXVzIiApLCBuZXcgbWVudUl0ZW0oICJTdHVkaW8gWFBT IDcxMDAiLCAiaHR0cDovL3d3dy5kZWxsLmNvbS9wL3N0dWRpby14cHMtNzEwMC9w ZC5hc3B4P2M9dXMmY3M9MTkmbD1lbiZzPWRocyIgKSwgbmV3IG1lbnVJdGVtKCAi U3R1ZGlvIFhQUyA5MTAwIiwgImh0dHA6Ly93d3cuZGVsbC5jb20vcC9zdHVkaW8t eHBzLTkxMDAvcGQuYXNweD9jPXVzJmNzPTE5Jmw9ZW4mcz1kaHMiICkgKTsNCnZh ciBtXzBfMl80X01lbnUgPSBuZXcgQXJyYXkoIG5ldyBtZW51SXRlbSggIkF1cm9y YSIsICJodHRwOi8vd3d3LmRlbGwuY29tL3VzL3AvYWxpZW53YXJlLWF1cm9yYS1y My9wZC5hc3B4IiApLCBuZXcgbWVudUl0ZW0oICJBdXJvcmEgQUxYIiwgImh0dHA6 Ly93d3cuZGVsbC5jb20vcC9hbGllbndhcmUtYXVyb3JhLWFseC9wZC5hc3B4P2M9 dXMmY3M9MTkmbD1lbiZzPWRocyIgKSwgbmV3IG1lbnVJdGVtKCAiQXJlYSA1MSIs ICJodHRwOi8vd3d3LmRlbGwuY29tL3AvYWxpZW53YXJlLWFyZWE1MS9wZC5hc3B4 P2M9dXMmY3M9MTkmbD1lbiZzPWRocyIgKSwgbmV3IG1lbnVJdGVtKCAiQXJlYSA1 MSBBTFgiLCAiaHR0cDovL3d3dy5kZWxsLmNvbS9wL2FsaWVud2FyZS1hcmVhNTEt YWx4L3BkLmFzcHg/Yz11cyZjcz0xOSZsPWVuJnM9ZGhzIiApICk7DQp2YXIgbV8w XzJfNV9NZW51ID0gbmV3IEFycmF5KCBuZXcgbWVudUl0ZW0oICJEZWxsIFByZWNp c2lvbiBUNTUwMCIsICJodHRwOi8vd3d3LmRlbGwuY29tL3AvcHJlY2lzaW9uLXQ1 NTAwL3BkLmFzcHg/Yz11cyZjcz0xOSZsPWVuJnM9YnNkIiApICk7DQp2YXIgbV8w XzJfTWVudSA9IG5ldyBBcnJheSggbmV3IG1lbnVJdGVtKCAiQmVzdC1zZWxsaW5n IERlc2t0b3AgRGVhbHMiLCAiaHR0cDovL3d3dy5kZWxsLmNvbS9wL3BvcHVsYXIt ZGVza3RvcC1kZWFscy5hc3B4P2M9dXMmY3M9MTkmbD1lbiZzPWRocyIgKSwgbmV3 IG1lbnVJdGVtKCAiVmlldyBhbGwgRGVza3RvcHMiLCAiaHR0cDovL3d3dy5kZWxs LmNvbS9jb250ZW50L3Byb2R1Y3RzL3Jlc3VsdHNjb21wYXJlLmFzcHg/Yz11cyZs PWVuJnM9ZGhzJmNzPTE5Jn5vZT10cnVlJnByb2RzPXVzfmVufjI5fmluc3Bpcm9u LXppbm8taGQtNDEwLWFuYXYxLHVzfmVufjI5fmluc3Bpcm9uLTU3MC1hbmF2NSx1 c35lbn4yOX5pbnNwaXJvbi01NjBfYW5hdl8xLHVzfmVufjI5fmx0ZC1pbnNwaXJv bi01ODAtYW5hdjEsdXN+ZW5+Mjl+aW5zcGlyb24tb25lLTIzMDVfYW5hdl8xLHVz fmVufjI5fnN0dWRpby14cHMtNzEwMC1hbmF2MSx1c35lbn4yOX5zdHVkaW8teHBz LTgxMDAtYW5hdjEsdXN+ZW5+Mjl+c3R1ZGlvLXhwcy05MTAwLWFuYXYxLHVzfmVu fjI5fmFsaWVud2FyZS1hdXJvcmEtYW5hdi0xLHVzfmVufjI5fmFsaWVud2FyZS1h cmVhLTUxX2FuYXYxLHVzfmVufjI5fmFsaWVud2FyZS1hdXJvcmEtYWx4LWFuYXYt MSx1c35lbn4yOX5hbGllbndhcmUtYXJlYS01MS1hbHhfYW5hdjF+fiZjaz1tbiIg KSwgbmV3IG1lbnVTZXAoKSwgbmV3IG1lbnVSZWYoICJpbnNwbi1hbGwtaW4tb25l c01lbnUiLCAiQWxsLWluLU9uZXMiLCAiaHR0cDovL3d3dy5kZWxsLmNvbS9jb250 ZW50L3RvcGljcy9zZWd0b3BpYy5hc3B4L2luc3Bpcm9uLW9uZT9jPXVzJmNzPTE5 Jmw9ZW4mcz1kaHMiLCBtXzBfMl8wX01lbnUgKSwgbmV3IG1lbnVSZWYoICJpbnNw bnppbk1lbnUiLCAiTWluaS1FbnRlcnRhaW5tZW50IiwgImh0dHA6Ly93d3cuZGVs bC5jb20vcC9pbnNwaXJvbi16aW5vLWhkLTQxMC9wZD9jPXVzJmNzPTE5Jmw9ZW4m cz1kaHMiLCBtXzBfMl8xX01lbnUgKSwgbmV3IG1lbnVSZWYoICJpbnNwbkRlc2t0 b3BzTWVudSIsICJJbnNwaXJvbiAtIEV2ZXJ5ZGF5IEVzc2VudGlhbHMiLCAiaHR0 cDovL3d3dy5kZWxsLmNvbS9wL2luc3Bpcm9uLWRlc2t0b3BzLmFzcHg/Yz11cyZj cz0xOSZsPWVuJnM9ZGhzIiwgbV8wXzJfMl9NZW51ICksIG5ldyBtZW51UmVmKCAi c3R1ZGlveHBzRGVza3RvcHNNZW51IiwgIlhQUyAtIFBlcmZvcm1hbmNlIiwgImh0 dHA6Ly93d3cuZGVsbC5jb20vcC9zdHVkaW8teHBzLWRlc2t0b3BzLmFzcHg/Yz11 cyZjcz0xOSZsPWVuJnM9ZGhzIiwgbV8wXzJfM19NZW51ICksIG5ldyBtZW51UmVm KCAiaG5fZjcwZDFmTWVudSIsICJBbGllbndhcmUgLSBHYW1pbmciLCAiaHR0cDov L3d3dy5hbGllbndhcmUuY29tL0xhbmRpbmdzL2Rlc2t0b3BzLmFzcHgiLCBtXzBf Ml80X01lbnUgKSwgbmV3IG1lbnVSZWYoICJwcmVjaXNpb25Xb3Jrc3RhdGlvbnNN ZW51IiwgIkRlbGwgUHJlY2lzaW9uIC0gSGlnaCBQZXJmb3JtYW5jZSBCdXNpbmVz cy1HcmFkZSBEZXNrdG9wcyIsICJodHRwOi8vd3d3LmRlbGwuY29tL3AvcHJlY2lz aW9uLWRlc2t0b3BzLmFzcHg/Yz11cyZjcz0xOSZsPWVuJnM9YnNkIiwgbV8wXzJf NV9NZW51ICksIG5ldyBtZW51SXRlbSggIlZvc3RybyAtIFNtYWxsIEJ1c2luZXNz IiwgImh0dHA6Ly93d3cuZGVsbC5jb20vdXMvYnVzaW5lc3MvcC92b3N0cm8tZGVz a3RvcHM/fmNrPWFuYXYiICksIG5ldyBtZW51U2VwKCksIG5ldyBtZW51SXRlbSgg IkRlc2t0b3AgUHJvZHVjdCBBZHZpc29yIiwgImh0dHA6Ly93d3cuZGVsbC5jb20v Y29udGVudC90b3BpY3MvdG9waWMuYXNweC9nbG9iYWwvc2Vla2VyL2Rlc2t0b3Bz P2M9dXMmY3M9MTkmbD1lbiZzPWRocyIgKSwgbmV3IG1lbnVJdGVtKCAiQXMgQWR2 ZXJ0aXNlZCBEZXNrdG9wcyIsICJodHRwOi8vd3d3LmRlbGwuY29tL2NvbnRlbnQv dG9waWNzL3NlZ3RvcGljLmFzcHgvYWR2ZXJ0aXNlZD9jPXVzJmNzPTE5Jmw9ZW4m cz1kaHMiICksIG5ldyBtZW51SXRlbSggIlNoaXBzIEZhc3QgRGVza3RvcHMiLCAi aHR0cDovL3d3dy5kZWxsLmNvbS91cy9wL3NoaXBzLWZhc3QtZGVza3RvcHMtY3Vz dG9tIiApLCBuZXcgbWVudUl0ZW0oICJQYXJ0cyAmIFVwZ3JhZGVzIiwgImh0dHA6 Ly9hY2Nlc3Nvcmllcy51cy5kZWxsLmNvbS9zbmEvRGVsbFBhcnRzRmFtaWx5LmFz cHg/Yz11cyZjcz0xOSZsPWVuJnM9ZGhzJn5jaz1hbmF2JmNhdGVnb3J5X2lkPTc1 NjYmcmVkaXJlY3Q9MSIgKSwgbmV3IG1lbnVJdGVtKCAiRGVza3RvcCBNb25pdG9y cyIsICJodHRwOi8vYWNjZXNzb3JpZXMudXMuZGVsbC5jb20vc25hL2NhdGVnb3J5 LmFzcHg/Yz11cyZjYXRlZ29yeV9pZD00MDA5JmNzPTE5Jmw9ZW4mcz1kaHMiICks IG5ldyBtZW51SXRlbSggIkRlc2t0b3AgQWNjZXNzb3JpZXMiLCAiaHR0cDovL2Fj Y2Vzc29yaWVzLnVzLmRlbGwuY29tL3NuYS9jYXRlZ29yeS5hc3B4P2M9dXMmY2F0 ZWdvcnlfaWQ9NDAwMCZjcz0xOSZsPWVuJnM9ZGhzIiApICk7DQp2YXIgbV8wXzNf TWVudSA9IG5ldyBBcnJheSggbmV3IG1lbnVJdGVtKCAiUG9wdWxhciBFbGVjdHJv bmljcyBEZWFscyIsICJodHRwOi8vYWNjZXNzb3JpZXMudXMuZGVsbC5jb20vc25h L3NuYS5hc3B4P2M9dXMmY3M9MTkmbD1lbiZzPWRocyZ+dG9waWM9ZW5hX2RlYWxz IiApLCBuZXcgbWVudUl0ZW0oICJEZWxsIERhaWx5IERlYWwiLCAiaHR0cDovL2Fj Y2Vzc29yaWVzLnVzLmRlbGwuY29tL3NuYS9zbmEuYXNweD9jPXVzJmNzPTE5Jmw9 ZW4mcz1kaHMmfnRvcGljPWRhaWx5X2RlYWxzIiApLCBuZXcgbWVudVNlcCgpLCBu ZXcgbWVudUl0ZW0oICJCYXR0ZXJ5ICYgUG93ZXIiLCAiaHR0cDovL2FjY2Vzc29y aWVzLnVzLmRlbGwuY29tL3NuYS9EZWxsUGFydHNGYW1pbHkuYXNweD9jPXVzJmNz PTE5Jmw9ZW4mcz1kaHMmfmNrPWFuYXYmY2F0ZWdvcnlfaWQ9NzU2NiZyZWRpcmVj dD0xIiApLCBuZXcgbWVudUl0ZW0oICJDYW1lcmEsIFBob3RvICYgVmlkZW8iLCAi aHR0cDovL2FjY2Vzc29yaWVzLnVzLmRlbGwuY29tL3NuYS9jYXRlZ29yeS5hc3B4 P2M9dXMmY2F0ZWdvcnlfaWQ9NDAwNSZjcz0xOSZsPWVuJnM9ZGhzIiApLCBuZXcg bWVudUl0ZW0oICJMYXB0b3AgQmFncyIsICJodHRwOi8vYWNjZXNzb3JpZXMudXMu ZGVsbC5jb20vc25hL2NhdGVnb3J5LmFzcHg/Yz11cyZjYXRlZ29yeV9pZD01NDg3 JmNzPTE5Jmw9ZW4mcz1kaHMiICksIG5ldyBtZW51SXRlbSggIkRlc2t0b3AgQWNj ZXNzb3JpZXMiLCAiaHR0cDovL2FjY2Vzc29yaWVzLnVzLmRlbGwuY29tL3NuYS9j YXRlZ29yeS5hc3B4P2M9dXMmY2F0ZWdvcnlfaWQ9NDAwMCZjcz0xOSZsPWVuJnM9 ZGhzIiApLCBuZXcgbWVudUl0ZW0oICJHYW1pbmc6IENvbnNvbGUiLCAiaHR0cDov L2FjY2Vzc29yaWVzLnVzLmRlbGwuY29tL3NuYS9jYXRlZ29yeS5hc3B4P2M9dXMm Y2F0ZWdvcnlfaWQ9NjQ4OCZjcz0xOSZsPWVuJnM9ZGhzIiApLCBuZXcgbWVudUl0 ZW0oICJHYW1pbmc6IFBDIiwgImh0dHA6Ly9hY2Nlc3Nvcmllcy51cy5kZWxsLmNv bS9zbmEvY2F0ZWdvcnkuYXNweD9jPXVzJmNhdGVnb3J5X2lkPTczMDkmY3M9MTkm bD1lbiZzPWRocyIgKSwgbmV3IG1lbnVJdGVtKCAiR1BTIiwgImh0dHA6Ly9hY2Nl c3Nvcmllcy51cy5kZWxsLmNvbS9zbmEvY2F0ZWdvcnkuYXNweD9jPXVzJmNhdGVn b3J5X2lkPTY3MDYmY3M9MTkmbD1lbiZzPWRocyIgKSwgbmV3IG1lbnVJdGVtKCAi SGFuZGhlbGRzICYgRS1SZWFkZXJzIiwgImh0dHA6Ly9hY2Nlc3Nvcmllcy51cy5k ZWxsLmNvbS9zbmEvY2F0ZWdvcnkuYXNweD9jPXVzJmNhdGVnb3J5X2lkPTQzMjcm Y3M9MTkmbD1lbiZzPWRocyIgKSwgbmV3IG1lbnVJdGVtKCAiTGFwdG9wIEFjY2Vz c29yaWVzIiwgImh0dHA6Ly9hY2Nlc3Nvcmllcy51cy5kZWxsLmNvbS9zbmEvY2F0 ZWdvcnkuYXNweD9jPXVzJmNhdGVnb3J5X2lkPTU0MzYmY3M9MTkmbD1lbiZzPWRo cyIgKSwgbmV3IG1lbnVJdGVtKCAiTWVtb3J5IiwgImh0dHA6Ly9hY2Nlc3Nvcmll cy51cy5kZWxsLmNvbS9zbmEvY2F0ZWdvcnkuYXNweD9jPXVzJmNhdGVnb3J5X2lk PTQzMjUmY3M9MTkmbD1lbiZzPWRocyIgKSwgbmV3IG1lbnVJdGVtKCAiTW9uaXRv cnMgJiBNb25pdG9yIEFjY2Vzc29yaWVzIiwgImh0dHA6Ly9hY2Nlc3Nvcmllcy51 cy5kZWxsLmNvbS9zbmEvY2F0ZWdvcnkuYXNweD9jPXVzJmNhdGVnb3J5X2lkPTQw MDkmY3M9MTkmbD1lbiZzPWRocyIgKSwgbmV3IG1lbnVJdGVtKCAiTVAzICYgTXVz aWNhbCBJbnN0cnVtZW50cyIsICJodHRwOi8vYWNjZXNzb3JpZXMudXMuZGVsbC5j b20vc25hL2NhdGVnb3J5LmFzcHg/Yz11cyZjYXRlZ29yeV9pZD01OTA2JmNzPTE5 Jmw9ZW4mcz1kaHMiICksIG5ldyBtZW51SXRlbSggIk5ldHdvcmtpbmcgJiBXaXJl bGVzcyIsICJodHRwOi8vYWNjZXNzb3JpZXMudXMuZGVsbC5jb20vc25hL2NhdGVn b3J5LmFzcHg/Yz11cyZjYXRlZ29yeV9pZD00MDExJmNzPTE5Jmw9ZW4mcz1kaHMi ICksIG5ldyBtZW51SXRlbSggIlByaW50ZXJzLCBJbmsgJiBUb25lciIsICJodHRw Oi8vYWNjZXNzb3JpZXMudXMuZGVsbC5jb20vc25hL2NhdGVnb3J5LmFzcHg/Yz11 cyZjYXRlZ29yeV9pZD00MDE0JmNzPTE5Jmw9ZW4mcz1kaHMiICksIG5ldyBtZW51 SXRlbSggIlByb2plY3RvcnMgJiBQcm9qZWN0b3IgQWNjZXNzb3JpZXMiLCAiaHR0 cDovL2FjY2Vzc29yaWVzLnVzLmRlbGwuY29tL3NuYS9jYXRlZ29yeS5hc3B4P2M9 dXMmY2F0ZWdvcnlfaWQ9NTE4OCZjcz0xOSZsPWVuJnM9ZGhzIiApLCBuZXcgbWVu dUl0ZW0oICJTb2Z0d2FyZSAmIERvd25sb2FkcyIsICJodHRwOi8vYWNjZXNzb3Jp ZXMudXMuZGVsbC5jb20vc25hL2NhdGVnb3J5LmFzcHg/Yz11cyZjYXRlZ29yeV9p ZD00MDIwJmNzPTE5Jmw9ZW4mcz1kaHMiICksIG5ldyBtZW51SXRlbSggIlN0b3Jh Z2UiLCAiaHR0cDovL2FjY2Vzc29yaWVzLnVzLmRlbGwuY29tL3NuYS9jYXRlZ29y eS5hc3B4P2M9dXMmY2F0ZWdvcnlfaWQ9NTY4MyZjcz0xOSZsPWVuJnM9ZGhzIiAp LCBuZXcgbWVudUl0ZW0oICJUVnMgJiBUViBBY2Nlc3NvcmllcyIsICJodHRwOi8v YWNjZXNzb3JpZXMudXMuZGVsbC5jb20vc25hL2NhdGVnb3J5LmFzcHg/Yz11cyZj YXRlZ29yeV9pZD01OTE0JmNzPTE5Jmw9ZW4mcz1kaHMiICksIG5ldyBtZW51U2Vw KCksIG5ldyBtZW51SXRlbSggIlNob3AgQnkgQnJhbmQiLCAiaHR0cDovL2FjY2Vz c29yaWVzLnVzLmRlbGwuY29tL3NuYS9TaG9wQWxsQnJhbmRzLmFzcHg/Yz11cyZj cz0xOSZsPWVuJnM9ZGhzIiApLCBuZXcgbWVudUl0ZW0oICJFbGVjdHJvbmljcyAm IEFjY2Vzc29yaWVzIENvdXBvbnMiLCAiaHR0cDovL3d3dy5kZWxsLmNvbS9jb250 ZW50L3RvcGljcy9zZWd0b3BpYy5hc3B4L2RlbGxjb3Vwb25fc2F2aW5ncz9jPXVz JmNzPTE5Jmw9ZW4mcz1kaHMiICksIG5ldyBtZW51SXRlbSggIlBhcnRzICYgVXBn cmFkZXMiLCAiaHR0cDovL2FjY2Vzc29yaWVzLnVzLmRlbGwuY29tL3NuYS9EZWxs UGFydHNGYW1pbHkuYXNweD9jPXVzJmNzPTE5Jmw9ZW4mcz1kaHMmfmNrPWFuYXYm Y2F0ZWdvcnlfaWQ9NzU2NiZyZWRpcmVjdD0xIiApLCBuZXcgbWVudUl0ZW0oICJO ZXh0TGlmZSBJbmsgYnkgRGVsbCIsICJodHRwOi8vYWNjZXNzb3JpZXMudXMuZGVs bC5jb20vc25hL3NuYS5hc3B4P2M9dXMmY3M9MTkmbD1lbiZzPWRocyZ+dG9waWM9 bmV4dGxpZmUtaW5rIiApICk7DQp2YXIgbV8wXzRfMF9NZW51ID0gbmV3IEFycmF5 KCBuZXcgbWVudUl0ZW0oICJWMzEzdyIsICJodHRwOi8vYWNjZXNzb3JpZXMudXMu ZGVsbC5jb20vc25hL3Byb2R1Y3RkZXRhaWwuYXNweD9jPXVzJmNzPTE5Jmw9ZW4m c2t1PTIyNS0wMTIyIiApLCBuZXcgbWVudUl0ZW0oICJWNTE1VyIsICJodHRwOi8v YWNjZXNzb3JpZXMudXMuZGVsbC5jb20vc25hL3Byb2R1Y3RkZXRhaWwuYXNweD9j PXVzJmNzPTE5Jmw9ZW4mc2t1PTIyNS0wMTIxIiApLCBuZXcgbWVudUl0ZW0oICJW NzE1VyIsICJodHRwOi8vYWNjZXNzb3JpZXMudXMuZGVsbC5jb20vc25hL3Byb2R1 Y3RkZXRhaWwuYXNweD9jPXVzJmNzPTE5Jmw9ZW4mc2t1PTIyNC02NjE5IiApLCBu ZXcgbWVudUl0ZW0oICJQNTEzVyIsICJodHRwOi8vYWNjZXNzb3JpZXMudXMuZGVs bC5jb20vc25hL3Byb2R1Y3RkZXRhaWwuYXNweD9jPXVzJmNzPTE5Jmw9ZW4mc2t1 PTIyNS0wMTIzIiApLCBuZXcgbWVudUl0ZW0oICJQNzEzVyIsICJodHRwOi8vYWNj ZXNzb3JpZXMudXMuZGVsbC5jb20vc25hL3Byb2R1Y3RkZXRhaWwuYXNweD9jPXVz JmNzPTE5Jmw9ZW4mc2t1PTIyNC02NjQxIiApICk7DQp2YXIgbV8wXzRfMV9NZW51 ID0gbmV3IEFycmF5KCBuZXcgbWVudUl0ZW0oICIxMTMwIiwgImh0dHA6Ly9jb25m aWd1cmUudXMuZGVsbC5jb20vZGVsbHN0b3JlL2NvbmZpZy5hc3B4P2M9dXMmY3M9 MTkmbD1lbiZvYz0xMTMwU0FQJnM9ZGhzIiApLCBuZXcgbWVudUl0ZW0oICIxMTMw biIsICJodHRwOi8vY29uZmlndXJlLnVzLmRlbGwuY29tL2RlbGxzdG9yZS9jb25m aWcuYXNweD9jPXVzJmNzPTE5Jmw9ZW4mb2M9MTEzME5TQVAmcz1kaHMiICksIG5l dyBtZW51SXRlbSggIjExMzVuIiwgImh0dHA6Ly9jb25maWd1cmUudXMuZGVsbC5j b20vZGVsbHN0b3JlL2NvbmZpZy5hc3B4P2M9dXMmY3M9MTkmbD1lbiZvYz0xMTM1 TlNBUCZzPWRocyIgKSwgbmV3IG1lbnVJdGVtKCAiMTI1MGMiLCAiaHR0cDovL2Nv bmZpZ3VyZS51cy5kZWxsLmNvbS9kZWxsc3RvcmUvY29uZmlnLmFzcHg/Yz11cyZj cz0xOSZsPWVuJm9jPTEyNTBTQVAmcz1kaHMiICksIG5ldyBtZW51SXRlbSggIjEz NTBjbnciLCAiaHR0cDovL2NvbmZpZ3VyZS51cy5kZWxsLmNvbS9kZWxsc3RvcmUv Y29uZmlnLmFzcHg/Yz11cyZjcz0xOSZsPWVuJm9jPTEzNTBTQVAmcz1kaHMiICks IG5ldyBtZW51SXRlbSggIjEzNTVjbiIsICJodHRwOi8vYWNjZXNzb3JpZXMudXMu ZGVsbC5jb20vc25hL3Byb2R1Y3RkZXRhaWwuYXNweD9jPXVzJmNzPTE5Jmw9ZW4m c2t1PTIyNS0wMDI3IiApLCBuZXcgbWVudUl0ZW0oICIxMzU1Y253IiwgImh0dHA6 Ly9jb25maWd1cmUudXMuZGVsbC5jb20vZGVsbHN0b3JlL2NvbmZpZy5hc3B4P2M9 dXMmY3M9MTkmbD1lbiZvYz0xMzU1U0FQJnM9ZGhzIiApICk7DQp2YXIgbV8wXzRf Ml9NZW51ID0gbmV3IEFycmF5KCBuZXcgbWVudUl0ZW0oICIxMjUwYyIsICJodHRw Oi8vYWNjZXNzb3JpZXMudXMuZGVsbC5jb20vc25hL3Byb2R1Y3RkZXRhaWwuYXNw eD9jPXVzJmNzPTE5Jmw9ZW4mc2t1PTIyNS0wMDM4IiApLCBuZXcgbWVudUl0ZW0o ICIxMzUwY253IiwgImh0dHA6Ly9hY2Nlc3Nvcmllcy51cy5kZWxsLmNvbS9zbmEv cHJvZHVjdGRldGFpbC5hc3B4P2M9dXMmY3M9MTkmbD1lbiZza3U9MjI1LTAwMjYi ICksIG5ldyBtZW51SXRlbSggIjEzNTVjbiIsICJodHRwOi8vYWNjZXNzb3JpZXMu dXMuZGVsbC5jb20vc25hL3Byb2R1Y3RkZXRhaWwuYXNweD9jPXVzJmNzPTE5Jmw9 ZW4mc2t1PTIyNS0wMDI3IiApLCBuZXcgbWVudUl0ZW0oICIxMzU1Y253IiwgImh0 dHA6Ly9hY2Nlc3Nvcmllcy51cy5kZWxsLmNvbS9zbmEvcHJvZHVjdGRldGFpbC5h c3B4P2M9dXMmY3M9MTkmbD1lbiZza3U9MjI1LTAwMjgiICksIG5ldyBtZW51SXRl bSggIjIxNTBjZG4iLCAiaHR0cDovL2FjY2Vzc29yaWVzLnVzLmRlbGwuY29tL3Nu YS9wcm9kdWN0ZGV0YWlsLmFzcHg/Yz11cyZjcz0xOSZsPWVuJnNrdT0yMjUtMDAz NiIgKSwgbmV3IG1lbnVJdGVtKCAiMjE1MGNuIiwgImh0dHA6Ly9hY2Nlc3Nvcmll cy51cy5kZWxsLmNvbS9zbmEvcHJvZHVjdGRldGFpbC5hc3B4P2M9dXMmY3M9MTkm bD1lbiZza3U9MjI1LTAwMzciICksIG5ldyBtZW51SXRlbSggIjIxNTVjZG4iLCAi aHR0cDovL2FjY2Vzc29yaWVzLnVzLmRlbGwuY29tL3NuYS9wcm9kdWN0ZGV0YWls LmFzcHg/Yz11cyZjcz0xOSZsPWVuJnNrdT0yMjUtMDAzMyIgKSwgbmV3IG1lbnVJ dGVtKCAiMjE1NWNuIiwgImh0dHA6Ly9hY2Nlc3Nvcmllcy51cy5kZWxsLmNvbS9z bmEvcHJvZHVjdGRldGFpbC5hc3B4P2M9dXMmY3M9MTkmbD1lbiZza3U9MjI1LTAw MzQiICkgKTsNCnZhciBtXzBfNF8zX01lbnUgPSBuZXcgQXJyYXkoIG5ldyBtZW51 SXRlbSggIjExMzAiLCAiaHR0cDovL2FjY2Vzc29yaWVzLnVzLmRlbGwuY29tL3Nu YS9wcm9kdWN0ZGV0YWlsLmFzcHg/Yz11cyZjcz0xOSZsPWVuJnNrdT0yMjQtOTYz MiIgKSwgbmV3IG1lbnVJdGVtKCAiMTEzMG4iLCAiaHR0cDovL2FjY2Vzc29yaWVz LnVzLmRlbGwuY29tL3NuYS9wcm9kdWN0ZGV0YWlsLmFzcHg/Yz11cyZjcz0xOSZs PWVuJnNrdT0yMjQtODM5NSIgKSwgbmV3IG1lbnVJdGVtKCAiMTEzMyIsICJodHRw Oi8vYWNjZXNzb3JpZXMudXMuZGVsbC5jb20vc25hL3Byb2R1Y3RkZXRhaWwuYXNw eD9jPXVzJmNzPTE5Jmw9ZW4mc2t1PTIyNC05NzAxIiApLCBuZXcgbWVudUl0ZW0o ICIxMTM1biIsICJodHRwOi8vYWNjZXNzb3JpZXMudXMuZGVsbC5jb20vc25hL3By b2R1Y3RkZXRhaWwuYXNweD9jPXVzJmNzPTE5Jmw9ZW4mc2t1PTIyNC04Nzg2IiAp LCBuZXcgbWVudUl0ZW0oICIyMjMwZCIsICJodHRwOi8vYWNjZXNzb3JpZXMudXMu ZGVsbC5jb20vc25hL3Byb2R1Y3RkZXRhaWwuYXNweD9jPXVzJmNzPTE5Jmw9ZW4m c2t1PTIyNC01ODE4IiApLCBuZXcgbWVudUl0ZW0oICIyMzM1ZG4iLCAiaHR0cDov L2FjY2Vzc29yaWVzLnVzLmRlbGwuY29tL3NuYS9wcm9kdWN0ZGV0YWlsLmFzcHg/ Yz11cyZjcz0xOSZsPWVuJnNrdT0yMjQtOTY0MiIgKSwgbmV3IG1lbnVJdGVtKCAi MjM1MGQiLCAiaHR0cDovL2FjY2Vzc29yaWVzLnVzLmRlbGwuY29tL3NuYS9wcm9k dWN0ZGV0YWlsLmFzcHg/Yz11cyZjcz0xOSZsPWVuJnNrdT0yMjUtMDAyOSIgKSwg bmV3IG1lbnVJdGVtKCAiMjM1MGRuIiwgImh0dHA6Ly9hY2Nlc3Nvcmllcy51cy5k ZWxsLmNvbS9zbmEvcHJvZHVjdGRldGFpbC5hc3B4P2M9dXMmY3M9MTkmbD1lbiZz a3U9MjI1LTAwMzAiICksIG5ldyBtZW51SXRlbSggIjIzNTVkbiIsICJodHRwOi8v YWNjZXNzb3JpZXMudXMuZGVsbC5jb20vc25hL3Byb2R1Y3RkZXRhaWwuYXNweD9j PXVzJmNzPTE5Jmw9ZW4mc2t1PTIyNC05NjQ1IiApICk7DQp2YXIgbV8wXzRfTWVu dSA9IG5ldyBBcnJheSggbmV3IG1lbnVJdGVtKCAiUG9wdWxhciBQcmludGVyIERl YWxzIiwgImh0dHA6Ly9hY2Nlc3Nvcmllcy51cy5kZWxsLmNvbS9zbmEvc25hLmFz cHg/Yz11cyZjcz0xOSZsPWVuJnM9ZGhzJn50b3BpYz1wcmludGVyX2RlYWxzIiAp LCBuZXcgbWVudVNlcCgpLCBuZXcgbWVudUl0ZW0oICJJbmsgJiBUb25lciBTZWxl Y3RvciIsICJodHRwOi8vYWNjZXNzb3JpZXMudXMuZGVsbC5jb20vc25hL3ByaW50 ZXJzdXBwbGllcy5hc3B4P2M9dXMmY3M9MTkmbD1lbiZzPWRocyZzZWc9ZGhzJnN0 ZXA9NCIgKSwgbmV3IG1lbnVSZWYoICJobl9iZTQzM2NNZW51IiwgIlNob3AgYWxs IElua2pldHMiLCAiaHR0cDovL2FjY2Vzc29yaWVzLnVzLmRlbGwuY29tL3NuYS9z bmEuYXNweD9jPXVzJmNzPTE5Jmw9ZW4mcz1kaHMmfnRvcGljPXByaW50ZXJfc2hv cGFsbF9pbmtqZXRzIiwgbV8wXzRfMF9NZW51ICksIG5ldyBtZW51UmVmKCAiaG5f MWZhMTg2OE1lbnUiLCAiU2hvcCBNb3N0IFBvcHVsYXIgTGFzZXJzIiwgImh0dHA6 Ly9hY2Nlc3Nvcmllcy51cy5kZWxsLmNvbS9zbmEvc25hLmFzcHg/Yz11cyZjcz0x OSZsPWVuJnM9ZGhzJn50b3BpYz1wcmludGVyX3Nob3BhbGxfbGFzZXJzIiwgbV8w XzRfMV9NZW51ICksIG5ldyBtZW51UmVmKCAiaG5fMWE4ZjMwNk1lbnUiLCAiU2hv cCBhbGwgQ29sb3IgTGFzZXJzIiwgImh0dHA6Ly9hY2Nlc3Nvcmllcy51cy5kZWxs LmNvbS9zbmEvc25hLmFzcHg/Yz11cyZjcz0xOSZsPWVuJnM9ZGhzJn50b3BpYz1w cmludGVyX3Nob3BhbGxfY29sb3JsYXNlcnMiLCBtXzBfNF8yX01lbnUgKSwgbmV3 IG1lbnVSZWYoICJobl8xOWY1ZmYxTWVudSIsICJTaG9wIGFsbCBCbGFjayAmIFdo aXRlIExhc2VycyIsICJodHRwOi8vYWNjZXNzb3JpZXMudXMuZGVsbC5jb20vc25h L3NuYS5hc3B4P2M9dXMmY3M9MTkmbD1lbiZzPWRocyZ+dG9waWM9cHJpbnRlcl9z aG9wYWxsX2J3bGFzZXJzIiwgbV8wXzRfM19NZW51ICksIG5ldyBtZW51U2VwKCks IG5ldyBtZW51SXRlbSggIkluayBTYXZlIFByb2dyYW0iLCAiaHR0cDovL2FjY2Vz c29yaWVzLnVzLmRlbGwuY29tL3NuYS9zbmEuYXNweD9jPXVzJmNzPTE5Jmw9ZW4m cz1kaHMmfnRvcGljPWluay1zYXZlIiApLCBuZXcgbWVudUl0ZW0oICJOZXh0TGlm ZSBJbmsgYnkgRGVsbCIsICJodHRwOi8vYWNjZXNzb3JpZXMudXMuZGVsbC5jb20v c25hL3NuYS5hc3B4P2M9dXMmY3M9MTkmbD1lbiZzPWRocyZ+dG9waWM9bmV4dGxp ZmUtaW5rIiApICk7DQp2YXIgbV8wXzVfMF9NZW51ID0gbmV3IEFycmF5KCBuZXcg bWVudUl0ZW0oICJTYW1zdW5nIiwgImh0dHA6Ly9hY2Nlc3Nvcmllcy51cy5kZWxs LmNvbS9zbmEvY2F0ZWdvcnkuYXNweD9jPXVzJmNhdGVnb3J5X2lkPTY4MTYmY3M9 MTkmbD1lbiZuYXZsYT00MjE2N34wfjU4NTc0NyZuZj00MjE2N34wfjU4NTc0NyZz PWRocyIgKSwgbmV3IG1lbnVJdGVtKCAiU2hhcnAiLCAiaHR0cDovL2FjY2Vzc29y aWVzLnVzLmRlbGwuY29tL3NuYS9jYXRlZ29yeS5hc3B4P2M9dXMmY2F0ZWdvcnlf aWQ9NjgxNiZjcz0xOSZsPWVuJm5hdmxhPTQyMTY3fjB+NDkzOTg2Jm5mPTQyMTY3 fjB+NDkzOTg2JnM9ZGhzIiApLCBuZXcgbWVudUl0ZW0oICJTb255IiwgImh0dHA6 Ly9hY2Nlc3Nvcmllcy51cy5kZWxsLmNvbS9zbmEvY2F0ZWdvcnkuYXNweD9jPXVz JmNhdGVnb3J5X2lkPTY4MTYmY3M9MTkmbD1lbiZuYXZsYT00MjE2N34wfjQ5Mzk4 NSZuZj00MjE2N34wfjQ5Mzk4NSZzPWRocyIgKSwgbmV3IG1lbnVJdGVtKCAiVml6 aW8iLCAiaHR0cDovL2FjY2Vzc29yaWVzLnVzLmRlbGwuY29tL3NuYS9jYXRlZ29y eS5hc3B4P2M9dXMmY2F0ZWdvcnlfaWQ9NjgxNiZjcz0xOSZsPWVuJm5hdmxhPTQy MTY3fjB+ODEyNTI5Jm5mPTQyMTY3fjB+ODEyNTI5JnM9ZGhzIiApICk7DQp2YXIg bV8wXzVfMV9NZW51ID0gbmV3IEFycmF5KCBuZXcgbWVudUl0ZW0oICJTYW1zdW5n IiwgImh0dHA6Ly9hY2Nlc3Nvcmllcy51cy5kZWxsLmNvbS9zbmEvY2F0ZWdvcnku YXNweD9jPXVzJmNhdGVnb3J5X2lkPTY4MTUmY3M9MTkmbD1lbiZuYXZsYT00MjE2 N34wfjU4NTc0NyZuZj00MjE2N34wfjU4NTc0NyZzPWRocyIgKSwgbmV3IG1lbnVJ dGVtKCAiU2hhcnAiLCAiaHR0cDovL2FjY2Vzc29yaWVzLnVzLmRlbGwuY29tL3Nu YS9jYXRlZ29yeS5hc3B4P2M9dXMmY2F0ZWdvcnlfaWQ9NjgxNSZjcz0xOSZsPWVu Jm5hdmxhPTQyMTY3fjB+NDkzOTg2Jm5mPTQyMTY3fjB+NDkzOTg2JnM9ZGhzIiAp LCBuZXcgbWVudUl0ZW0oICJTb255IiwgImh0dHA6Ly9hY2Nlc3Nvcmllcy51cy5k ZWxsLmNvbS9zbmEvY2F0ZWdvcnkuYXNweD9jPXVzJmNhdGVnb3J5X2lkPTY4MTUm Y3M9MTkmbD1lbiZuYXZsYT00MjE2N34wfjQ5Mzk4NSZuZj00MjE2N34wfjQ5Mzk4 NSZzPWRocyIgKSwgbmV3IG1lbnVJdGVtKCAiVml6aW8iLCAiaHR0cDovL2FjY2Vz c29yaWVzLnVzLmRlbGwuY29tL3NuYS9jYXRlZ29yeS5hc3B4P2M9dXMmY2F0ZWdv cnlfaWQ9NjgxNSZjcz0xOSZsPWVuJm5hdmxhPTQyMTY3fjB+ODEyNTI5Jm5mPTQy MTY3fjB+ODEyNTI5JnM9ZGhzIiApICk7DQp2YXIgbV8wXzVfMl9NZW51ID0gbmV3 IEFycmF5KCBuZXcgbWVudUl0ZW0oICJTYW1zdW5nIiwgImh0dHA6Ly9hY2Nlc3Nv cmllcy51cy5kZWxsLmNvbS9zbmEvY2F0ZWdvcnkuYXNweD9jPXVzJmNhdGVnb3J5 X2lkPTY2MjYmY3M9MTkmbD1lbiZuYXZsYT00MjE2N34wfjU4NTc0NyZuZj00MjE2 N34wfjU4NTc0NyZzPWRocyIgKSwgbmV3IG1lbnVJdGVtKCAiU2hhcnAiLCAiaHR0 cDovL2FjY2Vzc29yaWVzLnVzLmRlbGwuY29tL3NuYS9jYXRlZ29yeS5hc3B4P2M9 dXMmY2F0ZWdvcnlfaWQ9NjYyNiZjcz0xOSZsPWVuJm5hdmxhPTQyMTY3fjB+NDkz OTg2Jm5mPTQyMTY3fjB+NDkzOTg2JnM9ZGhzIiApLCBuZXcgbWVudUl0ZW0oICJT b255IiwgImh0dHA6Ly9hY2Nlc3Nvcmllcy51cy5kZWxsLmNvbS9zbmEvY2F0ZWdv cnkuYXNweD9jPXVzJmNhdGVnb3J5X2lkPTY2MjYmY3M9MTkmbD1lbiZuYXZsYT00 MjE2N34wfjQ5Mzk4NSZuZj00MjE2N34wfjQ5Mzk4NSZzPWRocyIgKSwgbmV3IG1l bnVJdGVtKCAiVml6aW8iLCAiaHR0cDovL2FjY2Vzc29yaWVzLnVzLmRlbGwuY29t L3NuYS9jYXRlZ29yeS5hc3B4P2M9dXMmY2F0ZWdvcnlfaWQ9NjYyNiZjcz0xOSZs PWVuJm5hdmxhPTQyMTY3fjB+ODEyNTI5Jm5mPTQyMTY3fjB+ODEyNTI5JnM9ZGhz IiApICk7DQp2YXIgbV8wXzVfM19NZW51ID0gbmV3IEFycmF5KCBuZXcgbWVudUl0 ZW0oICJTYW1zdW5nIiwgImh0dHA6Ly9hY2Nlc3Nvcmllcy51cy5kZWxsLmNvbS9z bmEvY2F0ZWdvcnkuYXNweD9jPXVzJmNhdGVnb3J5X2lkPTU5MjgmY3M9MTkmbD1l biZuYXZsYT00MjE2N34wfjU4NTc0NyZuZj00MjE2N34wfjU4NTc0NyZzPWRocyIg KSwgbmV3IG1lbnVJdGVtKCAiU2hhcnAiLCAiaHR0cDovL2FjY2Vzc29yaWVzLnVz LmRlbGwuY29tL3NuYS9jYXRlZ29yeS5hc3B4P2M9dXMmY2F0ZWdvcnlfaWQ9NTky OCZjcz0xOSZsPWVuJm5hdmxhPTQyMTY3fjB+NDkzOTg2Jm5mPTQyMTY3fjB+NDkz OTg2JnM9ZGhzIiApLCBuZXcgbWVudUl0ZW0oICJTb255IiwgImh0dHA6Ly9hY2Nl c3Nvcmllcy51cy5kZWxsLmNvbS9zbmEvY2F0ZWdvcnkuYXNweD9jPXVzJmNhdGVn b3J5X2lkPTU5MjgmY3M9MTkmbD1lbiZuYXZsYT00MjE2N34wfjQ5Mzk4NSZuZj00 MjE2N34wfjQ5Mzk4NSZzPWRocyIgKSwgbmV3IG1lbnVJdGVtKCAiVml6aW8iLCAi aHR0cDovL2FjY2Vzc29yaWVzLnVzLmRlbGwuY29tL3NuYS9jYXRlZ29yeS5hc3B4 P2M9dXMmY2F0ZWdvcnlfaWQ9NTkyOCZjcz0xOSZsPWVuJm5hdmxhPTQyMTY3fjB+ ODEyNTI5Jm5mPTQyMTY3fjB+ODEyNTI5JnM9ZGhzIiApICk7DQp2YXIgbV8wXzVf NF9NZW51ID0gbmV3IEFycmF5KCBuZXcgbWVudUl0ZW0oICJTYW1zdW5nIiwgImh0 dHA6Ly9hY2Nlc3Nvcmllcy51cy5kZWxsLmNvbS9zbmEvY2F0ZWdvcnkuYXNweD9j PXVzJmNhdGVnb3J5X2lkPTU5MzAmY3M9MTkmbD1lbiZuYXZsYT00MjE2N34wfjU4 NTc0NyZuZj00MjE2N34wfjU4NTc0NyZzPWRocyIgKSwgbmV3IG1lbnVJdGVtKCAi U2hhcnAiLCAiaHR0cDovL2FjY2Vzc29yaWVzLnVzLmRlbGwuY29tL3NuYS9jYXRl Z29yeS5hc3B4P2M9dXMmY2F0ZWdvcnlfaWQ9NTkzMCZjcz0xOSZsPWVuJm5hdmxh PTQyMTY3fjB+NDkzOTg2Jm5mPTQyMTY3fjB+NDkzOTg2JnM9ZGhzIiApLCBuZXcg bWVudUl0ZW0oICJTb255IiwgImh0dHA6Ly9hY2Nlc3Nvcmllcy51cy5kZWxsLmNv bS9zbmEvY2F0ZWdvcnkuYXNweD9jPXVzJmNhdGVnb3J5X2lkPTU5MzAmY3M9MTkm bD1lbiZuYXZsYT00MjE2N34wfjQ5Mzk4NSZuZj00MjE2N34wfjQ5Mzk4NSZzPWRo cyIgKSwgbmV3IG1lbnVJdGVtKCAiVml6aW8iLCAiaHR0cDovL2FjY2Vzc29yaWVz LnVzLmRlbGwuY29tL3NuYS9jYXRlZ29yeS5hc3B4P2M9dXMmY2F0ZWdvcnlfaWQ9 NTkzMCZjcz0xOSZsPWVuJm5hdmxhPTQyMTY3fjB+ODEyNTI5Jm5mPTQyMTY3fjB+ ODEyNTI5JnM9ZGhzIiApICk7DQp2YXIgbV8wXzVfNV9NZW51ID0gbmV3IEFycmF5 KCBuZXcgbWVudUl0ZW0oICJTYW1zdW5nIiwgImh0dHA6Ly9hY2Nlc3Nvcmllcy51 cy5kZWxsLmNvbS9zbmEvY2F0ZWdvcnkuYXNweD9jPXVzJmNhdGVnb3J5X2lkPTU5 MjkmY3M9MTkmbD1lbiZuYXZsYT00MjE2N34wfjU4NTc0NyZuZj00MjE2N34wfjU4 NTc0NyZzPWRocyIgKSwgbmV3IG1lbnVJdGVtKCAiU2hhcnAiLCAiaHR0cDovL2Fj Y2Vzc29yaWVzLnVzLmRlbGwuY29tL3NuYS9jYXRlZ29yeS5hc3B4P2M9dXMmY2F0 ZWdvcnlfaWQ9NTkyOSZjcz0xOSZsPWVuJm5hdmxhPTQyMTY3fjB+NDkzOTg2Jm5m PTQyMTY3fjB+NDkzOTg2JnM9ZGhzIiApLCBuZXcgbWVudUl0ZW0oICJTb255Iiwg Imh0dHA6Ly9hY2Nlc3Nvcmllcy51cy5kZWxsLmNvbS9zbmEvY2F0ZWdvcnkuYXNw eD9jPXVzJmNhdGVnb3J5X2lkPTU5MjkmY3M9MTkmbD1lbiZuYXZsYT00MjE2N34w fjQ5Mzk4NSZuZj00MjE2N34wfjQ5Mzk4NSZzPWRocyIgKSwgbmV3IG1lbnVJdGVt KCAiVml6aW8iLCAiaHR0cDovL2FjY2Vzc29yaWVzLnVzLmRlbGwuY29tL3NuYS9j YXRlZ29yeS5hc3B4P2M9dXMmY2F0ZWdvcnlfaWQ9NTkyOSZjcz0xOSZsPWVuJm5h dmxhPTQyMTY3fjB+ODEyNTI5Jm5mPTQyMTY3fjB+ODEyNTI5JnM9ZGhzIiApICk7 DQp2YXIgbV8wXzVfNl9NZW51ID0gbmV3IEFycmF5KCBuZXcgbWVudUl0ZW0oICJT YW1zdW5nIiwgImh0dHA6Ly9hY2Nlc3Nvcmllcy51cy5kZWxsLmNvbS9zbmEvY2F0 ZWdvcnkuYXNweD9jPXVzJmNhdGVnb3J5X2lkPTcwNzMmY3M9MTkmbD1lbiZuYXZs YT00MjE2N34wfjU4NTc0NyZuZj00MjE2N34wfjU4NTc0NyZzPWRocyIgKSwgbmV3 IG1lbnVJdGVtKCAiU2hhcnAiLCAiaHR0cDovL2FjY2Vzc29yaWVzLnVzLmRlbGwu Y29tL3NuYS9jYXRlZ29yeS5hc3B4P2M9dXMmY2F0ZWdvcnlfaWQ9NzA3MyZjcz0x OSZsPWVuJm5hdmxhPTQyMTY3fjB+NDkzOTg2Jm5mPTQyMTY3fjB+NDkzOTg2JnM9 ZGhzIiApLCBuZXcgbWVudUl0ZW0oICJTb255IiwgImh0dHA6Ly9hY2Nlc3Nvcmll cy51cy5kZWxsLmNvbS9zbmEvY2F0ZWdvcnkuYXNweD9jPXVzJmNhdGVnb3J5X2lk PTcwNzMmY3M9MTkmbD1lbiZuYXZsYT00MjE2N34wfjQ5Mzk4NSZuZj00MjE2N34w fjQ5Mzk4NSZzPWRocyIgKSwgbmV3IG1lbnVJdGVtKCAiVml6aW8iLCAiaHR0cDov L2FjY2Vzc29yaWVzLnVzLmRlbGwuY29tL3NuYS9jYXRlZ29yeS5hc3B4P2M9dXMm Y2F0ZWdvcnlfaWQ9NzA3MyZjcz0xOSZsPWVuJm5hdmxhPTQyMTY3fjB+ODEyNTI5 Jm5mPTQyMTY3fjB+ODEyNTI5JnM9ZGhzIiApICk7DQp2YXIgbV8wXzVfTWVudSA9 IG5ldyBBcnJheSggbmV3IG1lbnVJdGVtKCAiUG9wdWxhciBIRFRWIERlYWxzIiwg Imh0dHA6Ly9hY2Nlc3Nvcmllcy51cy5kZWxsLmNvbS9zbmEvc25hLmFzcHg/Yz11 cyZjcz0xOSZsPWVuJnM9ZGhzJn50b3BpYz10dl9kZWFscyIgKSwgbmV3IG1lbnVJ dGVtKCAiSG9tZSBUaGVhdGVyIGFuZCBBdWRpbyIsICJodHRwOi8vYWNjZXNzb3Jp ZXMudXMuZGVsbC5jb20vc25hL2NhdGVnb3J5LmFzcHg/Yz11cyZjYXRlZ29yeV9p ZD02NDgzJmNzPTE5Jmw9ZW4mcz1kaHMiICksIG5ldyBtZW51U2VwKCksIG5ldyBt ZW51UmVmKCAiaG5fM2JmZGE3Yk1lbnUiLCAiNTAgaW5jaCArIFRWcyIsICJodHRw Oi8vYWNjZXNzb3JpZXMudXMuZGVsbC5jb20vc25hL2NhdGVnb3J5LmFzcHg/Yz11 cyZjYXRlZ29yeV9pZD02ODE2JmNzPTE5Jmw9ZW4mcz1kaHMiLCBtXzBfNV8wX01l bnUgKSwgbmV3IG1lbnVSZWYoICJobl9kNWY1ZTNNZW51IiwgIjQ1IC0gNDkgaW5j aCBUVnMiLCAiaHR0cDovL2FjY2Vzc29yaWVzLnVzLmRlbGwuY29tL3NuYS9jYXRl Z29yeS5hc3B4P2M9dXMmY2F0ZWdvcnlfaWQ9NjgxNSZjcz0xOSZsPWVuJnM9ZGhz IiwgbV8wXzVfMV9NZW51ICksIG5ldyBtZW51UmVmKCAiaG5fNTY3ZmU0TWVudSIs ICI0MCAtIDQ0IGluY2ggVFZzIiwgImh0dHA6Ly9hY2Nlc3Nvcmllcy51cy5kZWxs LmNvbS9zbmEvY2F0ZWdvcnkuYXNweD9jPXVzJmNhdGVnb3J5X2lkPTY2MjYmY3M9 MTkmbD1lbiZzPWRocyIsIG1fMF81XzJfTWVudSApLCBuZXcgbWVudVJlZiggImhu XzE1MzU3YmVNZW51IiwgIjM1IC0gMzkgaW5jaCBUVnMiLCAiaHR0cDovL2FjY2Vz c29yaWVzLnVzLmRlbGwuY29tL3NuYS9jYXRlZ29yeS5hc3B4P2M9dXMmY2F0ZWdv cnlfaWQ9NTkyOCZjcz0xOSZsPWVuJnM9ZGhzIiwgbV8wXzVfM19NZW51ICksIG5l dyBtZW51UmVmKCAiaG5fMmJkNmNiMU1lbnUiLCAiMzAgLSAzNCBpbmNoIFRWcyIs ICJodHRwOi8vYWNjZXNzb3JpZXMudXMuZGVsbC5jb20vc25hL2NhdGVnb3J5LmFz cHg/Yz11cyZjYXRlZ29yeV9pZD01OTMwJmNzPTE5Jmw9ZW4mcz1kaHMiLCBtXzBf NV80X01lbnUgKSwgbmV3IG1lbnVSZWYoICJobl8zOGJkZmRNZW51IiwgIjI1IC0g MjkgaW5jaCBUVnMiLCAiaHR0cDovL2FjY2Vzc29yaWVzLnVzLmRlbGwuY29tL3Nu YS9jYXRlZ29yeS5hc3B4P2M9dXMmY2F0ZWdvcnlfaWQ9NTkyOSZjcz0xOSZsPWVu JnM9ZGhzIiwgbV8wXzVfNV9NZW51ICksIG5ldyBtZW51UmVmKCAiaG5fM2YwNWFl Mk1lbnUiLCAiTGVzcyB0aGFuIDI0IGluY2ggVFZzIiwgImh0dHA6Ly9hY2Nlc3Nv cmllcy51cy5kZWxsLmNvbS9zbmEvY2F0ZWdvcnkuYXNweD9jPXVzJmNhdGVnb3J5 X2lkPTcwNzMmY3M9MTkmbD1lbiZzPWRocyIsIG1fMF81XzZfTWVudSApLCBuZXcg bWVudUl0ZW0oICJBY2Nlc3NvcmllcyIsICJodHRwOi8vYWNjZXNzb3JpZXMudXMu ZGVsbC5jb20vc25hL2NhdGVnb3J5LmFzcHg/Yz11cyZjYXRlZ29yeV9pZD02NDg0 JmNzPTE5Jmw9ZW4mcz1kaHMiICksIG5ldyBtZW51SXRlbSggIkJsdS1SYXkgUGxh eWVycyIsICJodHRwOi8vYWNjZXNzb3JpZXMudXMuZGVsbC5jb20vc25hL2NhdGVn b3J5LmFzcHg/Yz11cyZjYXRlZ29yeV9pZD03MjExJmNzPTE5Jmw9ZW4mcz1kaHMi ICksIG5ldyBtZW51SXRlbSggIkRWRCBQbGF5ZXJzICYgRFZScyIsICJodHRwOi8v YWNjZXNzb3JpZXMudXMuZGVsbC5jb20vc25hL2NhdGVnb3J5LmFzcHg/Yz11cyZj YXRlZ29yeV9pZD02ODg1JmNzPTE5Jmw9ZW4mcz1kaHMiICksIG5ldyBtZW51SXRl bSggIkhvbWUgVGhlYXRlciBpbiBhIEJveCIsICJodHRwOi8vYWNjZXNzb3JpZXMu dXMuZGVsbC5jb20vc25hL2NhdGVnb3J5LmFzcHg/Yz11cyZjYXRlZ29yeV9pZD02 ODkxJmNzPTE5Jmw9ZW4mcz1kaHMiICksIG5ldyBtZW51SXRlbSggIlN0ZXJlbyAm IFRWIFNwZWFrZXJzIiwgImh0dHA6Ly9hY2Nlc3Nvcmllcy51cy5kZWxsLmNvbS9z bmEvY2F0ZWdvcnkuYXNweD9jPXVzJmNhdGVnb3J5X2lkPTY4OTImY3M9MTkmbD1l biZzPWRocyIgKSwgbmV3IG1lbnVJdGVtKCAiVFYgTW91bnRzIiwgImh0dHA6Ly9h Y2Nlc3Nvcmllcy51cy5kZWxsLmNvbS9zbmEvY2F0ZWdvcnkuYXNweD9jPXVzJmNh dGVnb3J5X2lkPTYxMjEmY3M9MTkmbD1lbiZzPWRocyIgKSwgbmV3IG1lbnVJdGVt KCAiVFYgSW5zdGFsbGF0aW9uIiwgImh0dHA6Ly93d3cuZGVsbC5jb20vY29udGVu dC90b3BpY3MvZ2xvYmFsLmFzcHgvZHBzL3NvbHV0aW9uX3N0YXRpb25fdHY/Yz11 cyZjcz0xOSZsPWVuJnM9ZGhzIiApICk7DQp2YXIgbV8wXzZfMF9NZW51ID0gbmV3 IEFycmF5KCBuZXcgbWVudUl0ZW0oICJTdHJlYWsgNSBBY2Nlc3NvcmllcyIsICJo dHRwOi8vd3d3LmRlbGwuY29tL2NvbnRlbnQvcHJvZHVjdHMvZmVhdHVyZXMuYXNw eC9zdHJlYWtfYWNjZXNzb3JpZXM/Yz11cyZjcz0xOSZsPWVuJnM9ZGhzIiApICk7 DQp2YXIgbV8wXzZfTWVudSA9IG5ldyBBcnJheSggbmV3IG1lbnVJdGVtKCAiRGVs bCBJbnNwaXJvbiBkdW8iLCAiaHR0cDovL3d3dy5kZWxsLmNvbS9jb250ZW50L3Rv cGljcy90b3BpYy5hc3B4L2dsb2JhbC9wcm9kdWN0cy9sYW5kaW5nL2VuL2luc3Bp cm9uP2M9dXMmY3M9MTkmbD1lbiZzPWRocyIgKSwgbmV3IG1lbnVJdGVtKCAiRGVs bCBTdHJlYWsgNyBUYWJsZXQiLCAiaHR0cDovL3d3dy5kZWxsLmNvbS91cy9wL21v YmlsZS1zdHJlYWstNy9wZCIgKSwgbmV3IG1lbnVSZWYoICJobl81ZDIyNjVNZW51 IiwgIkRlbGwgU3RyZWFrIDUgVGFibGV0IiwgImh0dHA6Ly93d3cuZGVsbC5jb20v dXMvcC9tb2JpbGUtc3RyZWFrL3BkP3JlZmlkPW1vYmlsZS1zdHJlYWsmfmNrPW1u IiwgbV8wXzZfMF9NZW51ICksIG5ldyBtZW51SXRlbSggIkRlbGwgVmVudWUgU21h cnRwaG9uZSIsICJodHRwOi8vd3d3LmRlbGwuY29tL3VzL3AvbW9iaWxlLXZlbnVl L3BkIiApLCBuZXcgbWVudUl0ZW0oICJEZWxsIFZlbnVlIFBybyBTbWFydHBob25l IiwgImh0dHA6Ly93d3cuZGVsbC5jb20vdXMvcC9tb2JpbGUtdmVudWUtcHJvL3Bk IiApLCBuZXcgbWVudUl0ZW0oICJEZWxsIExhcHRvcHMgd2l0aCBNb2JpbGUgQnJv YWRiYW5kIiwgImh0dHA6Ly93d3cuZGVsbC5jb20vdXMvcC9tb2JpbGl0eS1sYXB0 b3AtZGVhbHMuYXNweD9jPXVzJmNzPTE5Jmw9ZW4mcz1kaHMmfmNrPW1uIiApLCBu ZXcgbWVudUl0ZW0oICJNb2JpbGUgUGhvbmVzIHdpdGggQ2FycmllciBQbGFucyIs ICJodHRwOi8vbW9iaWxpdHkuZGVsbC5jb20vbW9iaWxlLz9yPWRlbGxtb2JpbGl0 eSZyZWZjb2RlMT1ETVNfMDAwMF8wMDBfVE9QTVBDUCIgKSwgbmV3IG1lbnVJdGVt KCAiTW9iaWxlIFBob25lcyB3aXRob3V0IENhcnJpZXIgUGxhbnMiLCAiaHR0cDov L2FjY2Vzc29yaWVzLnVzLmRlbGwuY29tL3NuYS9jYXRlZ29yeS5hc3B4P2M9dXMm Y2F0ZWdvcnlfaWQ9Njc1MSZjcz0xOSZsPWVuJnM9ZGhzIiApLCBuZXcgbWVudUl0 ZW0oICJNb2JpbGUgQnJvYWRiYW5kIENhcmRzIiwgImh0dHA6Ly9tb2JpbGl0eS5k ZWxsLmNvbS9tb2JpbGUvdXNiLWNhcmRzLmFzcHg/cj1kZWxsX21iJnJlZmNvZGUx PURNQl8wMDAwXzAwMF9UT1BNQiIgKSwgbmV3IG1lbnVJdGVtKCAiTW9iaWxlIFBo b25lcyBBY2Nlc3NvcmllcyIsICJodHRwOi8vYWNjZXNzb3JpZXMudXMuZGVsbC5j b20vc25hL2NhdGVnb3J5LmFzcHg/Yz11cyZjYXRlZ29yeV9pZD03NTMxJmNzPTE5 Jmw9ZW4mcz1kaHMiICkgKTsNCnZhciBtXzBfN19NZW51ID0gbmV3IEFycmF5KCBu ZXcgbWVudUl0ZW0oICJTb2x1dGlvbiBTdGF0aW9uIiwgImh0dHA6Ly93d3cuZGVs bC5jb20vY29udGVudC90b3BpY3MvZ2xvYmFsLmFzcHgvc29sdXRpb25fc3RhdGlv bi9zb2x1dGlvbl9zdGF0aW9uX2hvbWU/Yz11cyZjaWQ9REhTU1NIb21lJmNzPTE5 JmRnYz1JUiZsPWVuJnM9ZGhzIiApLCBuZXcgbWVudUl0ZW0oICJDb21wdXRlciBT ZXR1cCAmIFN1cHBvcnQiLCAiaHR0cDovL3d3dy5kZWxsLmNvbS9jb250ZW50L3Rv cGljcy9nbG9iYWwuYXNweC9zb2x1dGlvbl9zdGF0aW9uL2NvbXB1dGVyX3NldHVw X3N1cHBvcnQ/Yz11cyZjaWQ9REhTQ29tcFNldCZjcz0xOSZkZ2M9SVImbD1lbiZz PWRocyIgKSwgbmV3IG1lbnVJdGVtKCAiQ29tcHV0ZXIgTWFpbnRlbmFuY2UgJiBT ZWN1cml0eSIsICJodHRwOi8vd3d3LmRlbGwuY29tL2NvbnRlbnQvdG9waWNzL2ds b2JhbC5hc3B4L3NvbHV0aW9uX3N0YXRpb24vY29tcHV0ZXJfbWFpbnRlbmFuY2Vf c2VjdXJpdHk/Yz11cyZjaWQ9REhTQ29tcE1haW50JmNzPTE5JmRnYz1JUiZsPWVu JnM9ZGhzIiApLCBuZXcgbWVudUl0ZW0oICJXaXJlbGVzcyBTZXR1cCAmIFN1cHBv cnQiLCAiaHR0cDovL3d3dy5kZWxsLmNvbS9jb250ZW50L3RvcGljcy9nbG9iYWwu YXNweC9zb2x1dGlvbl9zdGF0aW9uL3dpcmVsZXNzX3NldHVwX3N1cHBvcnQ/Yz11 cyZjaWQ9REhTV2lyZWxlc3MmY3M9MTkmZGdjPUlSJmw9ZW4mcz1kaHMiICksIG5l dyBtZW51SXRlbSggIlRWICYgSG9tZSBUaGVhdGVyIFNldHVwIiwgImh0dHA6Ly93 d3cuZGVsbC5jb20vY29udGVudC90b3BpY3MvZ2xvYmFsLmFzcHgvc29sdXRpb25f c3RhdGlvbi90dl9ob21lX3RoZWF0ZXJfc2V0dXA/Yz11cyZjaWQ9REhTVFYmY3M9 MTkmZGdjPUlSJmw9ZW4mcz1kaHMiICkgKTsNCnZhciBtXzBfOF9NZW51ID0gbmV3 IEFycmF5KCBuZXcgbWVudUl0ZW0oICJTdHVkZW50IERpc2NvdW50cyIsICJodHRw Oi8vd3d3LmRlbGwuY29tL3VzL2VlcC9wLz9jcz0yMjM2JmxpbmtfbnVtYmVyPTE3 OTcwNjIyIiApLCBuZXcgbWVudUl0ZW0oICJFbXBsb3llZSBEaXNjb3VudHMiLCAi aHR0cDovL3d3dy5kZWxsLmNvbS91cy9lZXAvcC8/JmNzPTYwOTkmbGlua19udW1i ZXI9MTc5Njc1ODEiICksIG5ldyBtZW51SXRlbSggIk1pbGl0YXJ5IERpc2NvdW50 cyIsICJodHRwOi8vd3d3LmRlbGwuY29tL3VzL2VlcC9wL21pbGl0YXJ5LXJld2Fy ZHMiICksIG5ldyBtZW51SXRlbSggIkFzc29jaWF0aW9uIERpc2NvdW50cyIsICJo dHRwOi8vd3d3LmRlbGwuY29tL3VzL2VlcC9wLz9jcz02MDk5JmxpbmtfbnVtYmVy PTY5MDY4NDYzJn5jaz1tbiIgKSwgbmV3IG1lbnVJdGVtKCAiT3V0bGV0IExhcHRv cHMiLCAiaHR0cDovL3d3dy5kZWxsLmNvbS9PdXRsZXQtSG9tZS1MYXB0b3BzIiAp LCBuZXcgbWVudUl0ZW0oICJPdXRsZXQgRGVza3RvcHMiLCAiaHR0cDovL3d3dy5k ZWxsLmNvbS9PdXRsZXQtSG9tZS1EZXNrdG9wcyIgKSwgbmV3IG1lbnVJdGVtKCAi T3V0bGV0IE5ldyBBcnJpdmFscyIsICJodHRwOi8vd3d3LmRlbGwuY29tL091dGxl dE5ld0Fycml2YWxzIiApLCBuZXcgbWVudUl0ZW0oICJSZWZ1cmJpc2hlZCBNb25p dG9ycyIsICJodHRwOi8vd3d3LmRlbGwuY29tL091dGxldE1vbml0b3JzIiApLCBu ZXcgbWVudUl0ZW0oICJSZWZ1cmJpc2hlZCBQcmludGVycyIsICJodHRwOi8vd3d3 LmRlbGwuY29tL091dGxldFByaW50ZXJzIiApICk7DQp2YXIgbV8wX01lbnUgPSBu ZXcgQXJyYXkoIG5ldyBtZW51UmVmKCAic2FsZU1lbnUiLCAiQmVzdDxicj5TZWxs ZXJzIiwgImh0dHA6Ly93d3cuZGVsbC5jb20vcC9wb3B1bGFyLWxhcHRvcC1kZWFs cy5hc3B4P2M9dXMmY3M9MTkmbD1lbiZzPWRocyIsIG1fMF8wX01lbnUgKSwgbmV3 IG1lbnVSZWYoICJsYXB0b3BzTWluaXNNZW51IiwgIkxhcHRvcHMgJjxicj4gTmV0 Ym9va3MiLCAiaHR0cDovL3d3dy5kZWxsLmNvbS9wL2xhcHRvcHMuYXNweD9jPXVz JmNzPTE5Jmw9ZW4mcz1kaHMiLCBtXzBfMV9NZW51ICksIG5ldyBtZW51UmVmKCAi ZGVza3RvcHNNZW51IiwgIkRlc2t0b3BzPGJyPiYgQWxsLWluLU9uZXMiLCAiaHR0 cDovL3d3dy5kZWxsLmNvbS9wL2Rlc2t0b3BzLmFzcHg/Yz11cyZjcz0xOSZsPWVu JnM9ZGhzIiwgbV8wXzJfTWVudSApLCBuZXcgbWVudVJlZiggInNucE1lbnUiLCAi RWxlY3Ryb25pY3M8YnI+JiBTb2Z0d2FyZSIsICJodHRwOi8vYWNjZXNzb3JpZXMu dXMuZGVsbC5jb20vc25hL2RlZmF1bHQuYXNweD9jPXVzJmNzPTE5Jmw9ZW4mcz1k aHMiLCBtXzBfM19NZW51ICksIG5ldyBtZW51UmVmKCAicHJpbnRlck1lbnUiLCAi UHJpbnRlcnM8YnI+JiBJbmsiLCAiaHR0cDovL2FjY2Vzc29yaWVzLnVzLmRlbGwu Y29tL3NuYS9jYXRlZ29yeS5hc3B4P2M9dXMmY2F0ZWdvcnlfaWQ9NDAxNCZjcz0x OSZsPWVuJnM9ZGhzIiwgbV8wXzRfTWVudSApLCBuZXcgbWVudVJlZiggInR2TWVu dSIsICJIRFRWcyAmPGJyPkhvbWUgVGhlYXRlciIsICJodHRwOi8vYWNjZXNzb3Jp ZXMudXMuZGVsbC5jb20vc25hL2NhdGVnb3J5LmFzcHg/Yz11cyZjYXRlZ29yeV9p ZD01OTE0JmNzPTE5Jmw9ZW4mcz1kaHMiLCBtXzBfNV9NZW51ICksIG5ldyBtZW51 UmVmKCAibW9iaWxpdHlNZW51IiwgIlBob25lczxicj4mIFRhYmxldHMiLCAiaHR0 cDovL3d3dy5kZWxsLmNvbS9jb250ZW50L3RvcGljcy9zZWd0b3BpYy5hc3B4L21v YmlsZS9kZWZhdWx0P2M9dXMmY3M9MTkmbD1lbiZyZWw9bm9mb2xsb3cmcz1kaHMi LCBtXzBfNl9NZW51ICksIG5ldyBtZW51UmVmKCAicGNfc2VydmljZXNfc2V0aXBN ZW51IiwgIlBDIFNlcnZpY2VzPGJyPiYgU2VjdXJpdHkiLCAiaHR0cDovL3d3dy5k ZWxsLmNvbS9jb250ZW50L3RvcGljcy9nbG9iYWwuYXNweC9zb2x1dGlvbl9zdGF0 aW9uL3NvbHV0aW9uX3N0YXRpb25faG9tZT9jPXVzJmNpZD1ESFNNYXN0JmNzPTE5 JmRnYz1JUiZsPWVuJnM9ZGhzIiwgbV8wXzdfTWVudSApLCBuZXcgbWVudVJlZigg ImRlbGxfb3V0bGV0TWVudSIsICJPdXRsZXQgJiA8YnI+TWVtYmVyIFB1cmNoYXNl IiwgImh0dHA6Ly93d3cuZGVsbC5jb20vdXMvZGZoL3AvP35jaz1idCIsIG1fMF84 X01lbnUgKSApOw0KdmFyIG1fMV8wX01lbnUgPSBuZXcgQXJyYXkoIG5ldyBtZW51 SXRlbSggIkRyaXZlcnMgSG9tZSIsICJodHRwOi8vc3VwcG9ydC5kZWxsLmNvbS9z dXBwb3J0L2Rvd25sb2Fkcy9pbmRleC5hc3B4P2M9dXMmY3M9MTkmbD1lbiZzPWRo cyIgKSwgbmV3IG1lbnVJdGVtKCAiRHJpdmVycyBIZWxwIiwgImh0dHA6Ly9zdXBw b3J0LmRlbGwuY29tL3N1cHBvcnQvdG9waWNzL2dsb2JhbC5hc3B4L3N1cHBvcnQv ZG93bmxvYWRzL2VuL2RyaXZlcnNfaGVscD9jPXVzJmNzPTE5Jmw9ZW4mcz1kaHMi ICksIG5ldyBtZW51SXRlbSggIkRlbGwgU3VwcG9ydGVkIE9wZXJhdGluZyBTeXN0 ZW1zIiwgImh0dHA6Ly9zdXBwb3J0LmRlbGwuY29tL3N1cHBvcnQvdG9waWNzL2ds b2JhbC5hc3B4L3N1cHBvcnQvb3NtYXRyaXgvaW5kZXg/Yz11cyZjcz0xOSZsPWVu JnM9ZGhzIiApLCBuZXcgbWVudUl0ZW0oICJUZWNobmljYWwgU3Vic2NyaXB0aW9u cyIsICJodHRwOi8vc3VwcG9ydC5kZWxsLmNvbS9zdXBwb3J0L3RvcGljcy9nbG9i YWwuYXNweC9zdXBwb3J0L25vdGlmaWNhdGlvbnMvZW4vaW5kZXg/Yz11cyZjcz0x OSZsPWVuJnM9ZGhzIiApLCBuZXcgbWVudUl0ZW0oICJNb25pdG9yIERyaXZlcnMi LCAiaHR0cDovL3N1cHBvcnQuZGVsbC5jb20vc3VwcG9ydC90b3BpY3MvZ2xvYmFs LmFzcHgvc3VwcG9ydC9wcm9kdWN0X3N1cHBvcnQvZW4vbW9uaXRvcnM/Yz11cyZj cz0xOSZsPWVuJnM9ZGhzIiwgIl9wYXJlbnQiICkgKTsNCnZhciBtXzFfMV9NZW51 ID0gbmV3IEFycmF5KCBuZXcgbWVudUl0ZW0oICJUcm91Ymxlc2hvb3RpbmciLCAi aHR0cDovL3N1cHBvcnQuZGVsbC5jb20vc3VwcG9ydC9EUFAvSW5kZXguYXNweD9j PXVzJmNzPTE5Jmw9ZW4mcz1kaHMiICksIG5ldyBtZW51SXRlbSggIk1hbnVhbHMi LCAiaHR0cDovL3N1cHBvcnQuZGVsbC5jb20vc3VwcG9ydC90b3BpY3MvZ2xvYmFs LmFzcHgvc3VwcG9ydC9teV9zeXN0ZW1zX2luZm8vbWFudWFscz9jPXVzJmNzPTE5 Jmw9ZW4mcz1kaHMiICksIG5ldyBtZW51SXRlbSggIlN5c3RlbSBDb25maWd1cmF0 aW9uIiwgImh0dHA6Ly9zdXBwb3J0LmRlbGwuY29tL3N1cHBvcnQvdG9waWNzL2ds b2JhbC5hc3B4L3N1cHBvcnQvbXlfc3lzdGVtc19pbmZvL2RldGFpbHM/Yz11cyZj cz0xOSZsPWVuJnM9ZGhzJn50YWI9MiIgKSwgbmV3IG1lbnVJdGVtKCAiUGFydHMg JiBVcGdyYWRlcyIsICJodHRwOi8vYWNjZXNzb3JpZXMudXMuZGVsbC5jb20vc25h L0RlbGxQYXJ0c0ZhbWlseS5hc3B4P2M9dXMmY2F0ZWdvcnlfaWQ9NzU2NiZjcz0x OSZsPWVuJnM9ZGhzIiApLCBuZXcgbWVudUl0ZW0oICJNeSBQcm9kdWN0IExpc3Qi LCAiaHR0cHM6Ly9zdXBwb3J0LmRlbGwuY29tL3N1cHBvcnQvc3lzdGVtc2luZm8v bXlzeXN0ZW1zbGlzdC5hc3B4P2M9dXMmY3M9MTkmbD1lbiZzPWRocyIgKSwgbmV3 IG1lbnVJdGVtKCAiU3VwcG9ydCBIaXN0b3J5ICYgU3RhdHVzIiwgImh0dHBzOi8v c3VwcG9ydC5kZWxsLmNvbS9zdXBwb3J0L3N1cHBvcnRoaXN0b3J5L3NlYXJjaC5h c3B4P2M9dXMmY3M9MTkmbD1lbiZzPWRocyIgKSwgbmV3IG1lbnVJdGVtKCAiRGlz cGF0Y2ggU3RhdHVzIiwgImh0dHA6Ly9zdXBwb3J0LmRlbGwuY29tL3N1cHBvcnQv c3VwcG9ydGhpc3RvcnkvbWluaWRpc3BhdGNoLmFzcHg/Yz11cyZjcz0xOSZsPWVu JnM9ZGhzIiApLCBuZXcgbWVudUl0ZW0oICJFeHByZXNzIFNlcnZpY2UgQ29kZSBD b252ZXJ0ZXIiLCAiaHR0cDovL3N1cHBvcnQuZGVsbC5jb20vc3VwcG9ydC90b3Bp Y3MvZ2xvYmFsLmFzcHgvc3VwcG9ydC9teV9zeXN0ZW1zX2luZm8vZXhwcmVzc19z ZXJ2aWNlX2NvZGVfY29udmVydGVyP2M9dXMmY3M9MTkmbD1lbiZzPWRocyIgKSwg bmV3IG1lbnVJdGVtKCAiUmVjYWxsIEluZm9ybWF0aW9uIiwgImh0dHA6Ly9zdXBw b3J0LmRlbGwuY29tL3N1cHBvcnQvYmF0dGVyeXJlY2FsbC9pbmRleC5hc3B4L2Vu L21haW4/Yz11cyZjcz0xOSZsPWVuJnM9ZGhzIiApLCBuZXcgbWVudUl0ZW0oICJH bG9iYWwgUmVjeWNsaW5nIE9wdGlvbnMiLCAiaHR0cDovL2NvbnRlbnQuZGVsbC5j b20vdXMvZW4vY29ycC9kL2NvcnAtY29tbS9HbG9iYWxSZWN5Y2xpbmcuYXNweCIg KSApOw0KdmFyIG1fMV8yX01lbnUgPSBuZXcgQXJyYXkoIG5ldyBtZW51SXRlbSgg IkhvdCB0b3BpY3MiLCAiaHR0cDovL3N1cHBvcnQuZGVsbC5jb20vc3VwcG9ydC90 b3BpY3MvZ2xvYmFsLmFzcHgvc3VwcG9ydC9ob3R0b3BpYy9ob3R0b3BpY19jZW50 ZXI/Yz11cyZjcz0xOSZsPWVuJnM9ZGhzIiApLCBuZXcgbWVudUl0ZW0oICJIYXJk d2FyZSIsICJodHRwOi8vc3VwcG9ydC5kZWxsLmNvbS9zdXBwb3J0L3RvcGljcy9n bG9iYWwuYXNweC9zdXBwb3J0L2hhcmR3YXJlL2hhcmR3YXJlX3BvcnRhbD9jPXVz JmNzPTE5Jmw9ZW4mcz1kaHMiICksIG5ldyBtZW51SXRlbSggIkdldHRpbmcgU3Rh cnRlZCIsICJodHRwOi8vZHNuaW1nLmRlbGwuY29tL2ltYWdlcy9leHRlcm5hbC9k b2N1bWVudHMvQXBwbGljYXRpb25zL29zX3JlZGlyZWN0Lmh0bT90eXBlPXNydiIg KSwgbmV3IG1lbnVJdGVtKCAiV2luZG93cyA3IiwgImh0dHA6Ly9zdXBwb3J0LmRl bGwuY29tL3N1cHBvcnQvdG9waWNzL2dsb2JhbC5hc3B4L3N1cHBvcnQvd2luN19z dXBwb3J0L3dpbjdfcG9ydGFsP2M9dXMmY3M9MTkmbD1lbiZzPWRocyIgKSwgbmV3 IG1lbnVJdGVtKCAiV2luZG93cyBYUCIsICJodHRwOi8vc3VwcG9ydC5kZWxsLmNv bS9zdXBwb3J0L3RvcGljcy9nbG9iYWwuYXNweC9zdXBwb3J0L3hwX3N1cHBvcnQv d2lueHBfcG9ydGFsP2M9dXMmY3M9MTkmbD1lbiZzPWRocyIgKSwgbmV3IG1lbnVJ dGVtKCAiV2luZG93cyBWaXN0YSIsICJodHRwOi8vc3VwcG9ydC5kZWxsLmNvbS9z dXBwb3J0L3RvcGljcy9nbG9iYWwuYXNweC9zdXBwb3J0L3Zpc3RhX3N1cHBvcnQv dmlzdGFfbWFpbj9jPXVzJmNzPTE5Jmw9ZW4mcz1kaHMiICksIG5ldyBtZW51SXRl bSggIk5ldHdvcmtpbmcgYW5kIFdpcmVsZXNzIiwgImh0dHA6Ly9zdXBwb3J0LmRl bGwuY29tL3N1cHBvcnQvdG9waWNzL2dsb2JhbC5hc3B4L3N1cHBvcnQvbmV0d29y a2luZ193aXJlbGVzcy93aXJlbGVzc19wb3J0YWw/Yz11cyZjcz0xOSZsPWVuJnM9 ZGhzIiApLCBuZXcgbWVudUl0ZW0oICJTZWN1cml0eSAmIFZpcnVzIiwgImh0dHA6 Ly9zdXBwb3J0LmRlbGwuY29tL3N1cHBvcnQvdG9waWNzL2dsb2JhbC5hc3B4L3N1 cHBvcnQvc2VjdXJpdHkvc2VjdXJpdHlfcG9ydGFsP2M9dXMmY3M9MTkmbD1lbiZz PWRocyIgKSwgbmV3IG1lbnVJdGVtKCAiU3VwcG9ydCBWaWRlb3MiLCAiaHR0cDov L3N1cHBvcnQuZGVsbC5jb20vc3VwcG9ydC9yaWNobWVkaWEvaW5kZXguYXNweD9j PXVzJmNzPTE5Jmw9ZW4mcz1kaHMiICkgKTsNCnZhciBtXzFfM19NZW51ID0gbmV3 IEFycmF5KCBuZXcgbWVudUl0ZW0oICJTb2x1dGlvbiBTdGF0aW9uIiwgImh0dHA6 Ly93d3cuZGVsbC5jb20vY29udGVudC90b3BpY3MvZ2xvYmFsLmFzcHgvc29sdXRp b25fc3RhdGlvbi9zb2x1dGlvbl9zdGF0aW9uX2hvbWU/Yz11cyZjaWQ9U0RDU1NI b21lJmNzPTE5JmRnYz1JUiZsPWVuJnM9ZGhzIiApLCBuZXcgbWVudUl0ZW0oICJD b21wdXRlciBTZXR1cCAmIFN1cHBvcnQiLCAiaHR0cDovL3d3dy5kZWxsLmNvbS9j b250ZW50L3RvcGljcy9nbG9iYWwuYXNweC9zb2x1dGlvbl9zdGF0aW9uL2NvbXB1 dGVyX3NldHVwX3N1cHBvcnQ/Yz11cyZjaWQ9U0RDQ29tcFNldCZjcz0xOSZkZ2M9 SVImbD1lbiZzPWRocyIgKSwgbmV3IG1lbnVJdGVtKCAiQ29tcHV0ZXIgTWFpbnRl bmFuY2UgJiBTZWN1cml0eSIsICJodHRwOi8vd3d3LmRlbGwuY29tL2NvbnRlbnQv dG9waWNzL2dsb2JhbC5hc3B4L3NvbHV0aW9uX3N0YXRpb24vY29tcHV0ZXJfbWFp bnRlbmFuY2Vfc2VjdXJpdHk/Yz11cyZjaWQ9U0RDQ29tcE1haW50JmNzPTE5JmRn Yz1JUiZsPWVuJnM9ZGhzIiApLCBuZXcgbWVudUl0ZW0oICJXaXJlbGVzcyBTZXR1 cCAmIFN1cHBvcnQiLCAiaHR0cDovL3d3dy5kZWxsLmNvbS9jb250ZW50L3RvcGlj cy9nbG9iYWwuYXNweC9zb2x1dGlvbl9zdGF0aW9uL3dpcmVsZXNzX3NldHVwX3N1 cHBvcnQ/Yz11cyZjaWQ9U0RDV2lyZWxlc3MmY3M9MTkmZGdjPUlSJmw9ZW4mcz1k aHMiICksIG5ldyBtZW51SXRlbSggIlRWICYgSG9tZSBUaGVhdGVyIFNldHVwIiwg Imh0dHA6Ly93d3cuZGVsbC5jb20vY29udGVudC90b3BpY3MvZ2xvYmFsLmFzcHgv c29sdXRpb25fc3RhdGlvbi90dl9ob21lX3RoZWF0ZXJfc2V0dXA/Yz11cyZjaWQ9 U0RDVFYmY3M9MTkmZGdjPUlSJmw9ZW4mcz1kaHMiICkgKTsNCnZhciBtXzFfNF9N ZW51ID0gbmV3IEFycmF5KCBuZXcgbWVudUl0ZW0oICJPcmRlciBTdGF0dXMiLCAi aHR0cHM6Ly9zdXBwb3J0LmRlbGwuY29tL3N1cHBvcnQvb3JkZXIvR2xvYmFsT3Jk ZXJIb21lLmFzcHg/Yz11cyZjcz0xOSZsPWVuJnM9ZGhzIiApLCBuZXcgbWVudUl0 ZW0oICJIZWxwIENhdGVnb3JpZXMiLCAiaHR0cDovL2NvbnRlbnQuZGVsbC5jb20v b3JkZXItc3VwcG9ydC5hc3B4P2M9dXMmY3M9MTkmbD1lbiZzPWRocyIgKSwgbmV3 IG1lbnVJdGVtKCAiTWFuYWdlIFlvdXIgT3JkZXIiLCAiaHR0cDovL2NvbnRlbnQu ZGVsbC5jb20vb3JkZXItc3VwcG9ydC1tYW5hZ2UteW91ci1vcmRlci5hc3B4P2M9 dXMmY3M9MTkmbD1lbiZzPWRocyIgKSwgbmV3IG1lbnVJdGVtKCAiRGVsaXZlcnki LCAiaHR0cDovL2NvbnRlbnQuZGVsbC5jb20vb3JkZXItc3VwcG9ydC1zaGlwcGlu Zy1hbmQtZGVsaXZlcnkuYXNweD9jPXVzJmNzPTE5Jmw9ZW4mcz1kaHMiICksIG5l dyBtZW51SXRlbSggIkRlbGwgUHJlZmVycmVkIEFjY291bnQgUGF5bWVudHMiLCAi aHR0cDovL3d3dy5kZWxsLmNvbS9jb250ZW50L3RvcGljcy90b3BpYy5hc3B4L3Vz L3NlZ21lbnRzL2Rocy9vZGcvcGF5ZHBhMz9jPXVzJmw9ZW4mcz1kaHMmY3M9MTkm ZGdjPURNJmNpZD0xMTk3NSZsaWQ9MzUwNDUzIiApLCBuZXcgbWVudUl0ZW0oICJS ZXR1cm5zIiwgImh0dHA6Ly9zdXBwb3J0LmRlbGwuY29tL3N1cHBvcnQvdG9waWNz L2dsb2JhbC5hc3B4L3N1cHBvcnQvZGVsbGNhcmUvcmV0dXJuc19lbnRyeT9jPXVz JmNzPTE5Jmw9ZW4mcz1kaHMiICkgKTsNCnZhciBtXzFfNV9NZW51ID0gbmV3IEFy cmF5KCBuZXcgbWVudUl0ZW0oICJXYXJyYW50eSBTdGF0dXMiLCAiaHR0cDovL3N1 cHBvcnQuZGVsbC5jb20vc3VwcG9ydC90b3BpY3MvZ2xvYmFsLmFzcHgvc3VwcG9y dC9teV9zeXN0ZW1zX2luZm8vZGV0YWlscz9jPXVzJmNzPTE5Jmw9ZW4mcz1kaHMi ICksIG5ldyBtZW51SXRlbSggIlNlcnZpY2UgQ29udHJhY3RzIiwgImh0dHA6Ly93 d3cuZGVsbC5jb20vY29udGVudC90b3BpY3MvZ2xvYmFsLmFzcHgvc2VydmljZXMv bWFpbi9zZXJ2aWNlX2NvbnRyYWN0cz9jPXVzJmNzPTE5Jmw9ZW4mcz1kaHMiICks IG5ldyBtZW51SXRlbSggIkV4dGVuZCAmIFVwZ3JhZGUgV2FycmFudHkiLCAiaHR0 cDovL3N1cHBvcnQuZGVsbC5jb20vc3VwcG9ydC90b3BpY3MvZ2xvYmFsLmFzcHgv c3VwcG9ydC9teV9zeXN0ZW1zX2luZm8vd2FycmFudHlfc3RvcmVfc2lnbl9pbj9j PXVzJmNzPTE5Jmw9ZW4mcz1kaHMiICksIG5ldyBtZW51SXRlbSggIkV4cGlyZWQg V2FycmFudHkgU2VydmljZSIsICJodHRwOi8vc3VwcG9ydC5kZWxsLmNvbS9zdXBw b3J0L3RvcGljcy9nbG9iYWwuYXNweC9zdXBwb3J0L2RlbGxjYXJlL2VuL2V4cGly ZWRfd2FycmFudHk/Yz11cyZjcz0xOSZsPWVuJnM9ZGhzIiApLCBuZXcgbWVudUl0 ZW0oICJSZXRhaWwgUmVnaXN0cmF0aW9uIiwgImh0dHA6Ly9zdXBwb3J0LmRlbGwu Y29tL3N1cHBvcnQvdG9waWNzL2dsb2JhbC5hc3B4L3N1cHBvcnQvZGVsbGNhcmUv cmVnaXN0ZXJfeW91cl9wcm9kdWN0P2M9dXMmY3M9MTkmbD1lbiZzPWRocyIgKSwg bmV3IG1lbnVJdGVtKCAiT3duZXJzaGlwIFRyYW5zZmVycyIsICJodHRwOi8vc3Vw cG9ydC5kZWxsLmNvbS9zdXBwb3J0L3RvcGljcy9nbG9iYWwuYXNweC9zdXBwb3J0 L2NoYW5nZV9vcmRlci90YWdfdHJhbnNmZXI/Yz11cyZjcz0xOSZsPWVuJnM9ZGhz IiApLCBuZXcgbWVudUl0ZW0oICJSZXR1cm4gUGFydHMgQWZ0ZXIgU2VydmljZSIs ICJodHRwOi8vc3VwcG9ydC5kZWxsLmNvbS9zdXBwb3J0L3RvcGljcy9nbG9iYWwu YXNweC9zdXBwb3J0L2RlbGxjYXJlL2VuL3dhcnJhbnR5X3BhcnRzP2M9dXMmY3M9 MTkmbD1lbiZzPWRocyIgKSApOw0KdmFyIG1fMV82XzBfTWVudSA9IG5ldyBBcnJh eSggbmV3IG1lbnVJdGVtKCAiRHJpdmVycyBIb21lIiwgImh0dHA6Ly9zdXBwb3J0 LmRlbGwuY29tL3N1cHBvcnQvZG93bmxvYWRzL2luZGV4LmFzcHg/Yz11cyZjcz0x OSZsPWVuJnM9ZGhzIiApLCBuZXcgbWVudUl0ZW0oICJEcml2ZXJzIEhlbHAiLCAi aHR0cDovL3N1cHBvcnQuZGVsbC5jb20vc3VwcG9ydC90b3BpY3MvZ2xvYmFsLmFz cHgvc3VwcG9ydC9kb3dubG9hZHMvZW4vZHJpdmVyc19oZWxwP2M9dXMmY3M9MTkm bD1lbiZzPWRocyIgKSwgbmV3IG1lbnVJdGVtKCAiRGVsbCBTdXBwb3J0ZWQgT3Bl cmF0aW5nIFN5c3RlbXMiLCAiaHR0cDovL3N1cHBvcnQuZGVsbC5jb20vc3VwcG9y dC90b3BpY3MvZ2xvYmFsLmFzcHgvc3VwcG9ydC9vc21hdHJpeC9pbmRleD9jPXVz JmNzPTE5Jmw9ZW4mcz1kaHMiICksIG5ldyBtZW51SXRlbSggIlRlY2huaWNhbCBT dWJzY3JpcHRpb25zIiwgImh0dHA6Ly9zdXBwb3J0LmRlbGwuY29tL3N1cHBvcnQv dG9waWNzL2dsb2JhbC5hc3B4L3N1cHBvcnQvbm90aWZpY2F0aW9ucy9lbi9pbmRl eD9jPXVzJmNzPTE5Jmw9ZW4mcz1kaHMiICksIG5ldyBtZW51SXRlbSggIk1vbml0 b3IgRHJpdmVycyIsICJodHRwOi8vc3VwcG9ydC5kZWxsLmNvbS9zdXBwb3J0L3Rv cGljcy9nbG9iYWwuYXNweC9zdXBwb3J0L3Byb2R1Y3Rfc3VwcG9ydC9lbi9tb25p dG9ycz9jPXVzJmNzPTE5Jmw9ZW4mcz1kaHMiLCAiX3BhcmVudCIgKSApOw0KdmFy IG1fMV82XzFfTWVudSA9IG5ldyBBcnJheSggbmV3IG1lbnVJdGVtKCAiU29sdXRp b24gU3RhdGlvbiIsICJodHRwOi8vd3d3LmRlbGwuY29tL2NvbnRlbnQvdG9waWNz L2dsb2JhbC5hc3B4L3NvbHV0aW9uX3N0YXRpb24vc29sdXRpb25fc3RhdGlvbl9o b21lP2M9dXMmY2lkPVNEQ1NTSG9tZSZjcz0xOSZkZ2M9SVImbD1lbiZzPWRocyIg KSwgbmV3IG1lbnVJdGVtKCAiQ29tcHV0ZXIgU2V0dXAgJiBTdXBwb3J0IiwgImh0 dHA6Ly93d3cuZGVsbC5jb20vY29udGVudC90b3BpY3MvZ2xvYmFsLmFzcHgvc29s dXRpb25fc3RhdGlvbi9jb21wdXRlcl9zZXR1cF9zdXBwb3J0P2M9dXMmY2lkPVNE Q0NvbXBTZXQmY3M9MTkmZGdjPUlSJmw9ZW4mcz1kaHMiICksIG5ldyBtZW51SXRl bSggIkNvbXB1dGVyIE1haW50ZW5hbmNlICYgU2VjdXJpdHkiLCAiaHR0cDovL3d3 dy5kZWxsLmNvbS9jb250ZW50L3RvcGljcy9nbG9iYWwuYXNweC9zb2x1dGlvbl9z dGF0aW9uL2NvbXB1dGVyX21haW50ZW5hbmNlX3NlY3VyaXR5P2M9dXMmY2lkPVNE Q0NvbXBNYWludCZjcz0xOSZkZ2M9SVImbD1lbiZzPWRocyIgKSwgbmV3IG1lbnVJ dGVtKCAiV2lyZWxlc3MgU2V0dXAgJiBTdXBwb3J0IiwgImh0dHA6Ly93d3cuZGVs bC5jb20vY29udGVudC90b3BpY3MvZ2xvYmFsLmFzcHgvc29sdXRpb25fc3RhdGlv bi93aXJlbGVzc19zZXR1cF9zdXBwb3J0P2M9dXMmY2lkPVNEQ1dpcmVsZXNzJmNz PTE5JmRnYz1JUiZsPWVuJnM9ZGhzIiApLCBuZXcgbWVudUl0ZW0oICJUViAmIEhv bWUgVGhlYXRlciBTZXR1cCIsICJodHRwOi8vd3d3LmRlbGwuY29tL2NvbnRlbnQv dG9waWNzL2dsb2JhbC5hc3B4L3NvbHV0aW9uX3N0YXRpb24vdHZfaG9tZV90aGVh dGVyX3NldHVwP2M9dXMmY2lkPVNEQ1RWJmNzPTE5JmRnYz1JUiZsPWVuJnM9ZGhz IiApICk7DQp2YXIgbV8xXzZfMl9NZW51ID0gbmV3IEFycmF5KCBuZXcgbWVudUl0 ZW0oICJUcm91Ymxlc2hvb3RpbmciLCAiaHR0cDovL3N1cHBvcnQuZGVsbC5jb20v c3VwcG9ydC9EUFAvSW5kZXguYXNweD9jPXVzJmNzPTE5Jmw9ZW4mcz1kaHMiICks IG5ldyBtZW51SXRlbSggIk1hbnVhbHMiLCAiaHR0cDovL3N1cHBvcnQuZGVsbC5j b20vc3VwcG9ydC90b3BpY3MvZ2xvYmFsLmFzcHgvc3VwcG9ydC9teV9zeXN0ZW1z X2luZm8vbWFudWFscz9jPXVzJmNzPTE5Jmw9ZW4mcz1kaHMiICksIG5ldyBtZW51 SXRlbSggIlN5c3RlbSBDb25maWd1cmF0aW9uIiwgImh0dHA6Ly9zdXBwb3J0LmRl bGwuY29tL3N1cHBvcnQvdG9waWNzL2dsb2JhbC5hc3B4L3N1cHBvcnQvbXlfc3lz dGVtc19pbmZvL2RldGFpbHM/Yz11cyZjcz0xOSZsPWVuJnM9ZGhzJn50YWI9MiIg KSwgbmV3IG1lbnVJdGVtKCAiUGFydHMgJiBVcGdyYWRlcyIsICJodHRwOi8vYWNj ZXNzb3JpZXMudXMuZGVsbC5jb20vc25hL0RlbGxQYXJ0c0ZhbWlseS5hc3B4P2M9 dXMmY2F0ZWdvcnlfaWQ9NzU2NiZjcz0xOSZsPWVuJnM9ZGhzIiApLCBuZXcgbWVu dUl0ZW0oICJNeSBQcm9kdWN0IExpc3QiLCAiaHR0cHM6Ly9zdXBwb3J0LmRlbGwu Y29tL3N1cHBvcnQvc3lzdGVtc2luZm8vbXlzeXN0ZW1zbGlzdC5hc3B4P2M9dXMm Y3M9MTkmbD1lbiZzPWRocyIgKSwgbmV3IG1lbnVJdGVtKCAiU3VwcG9ydCBIaXN0 b3J5ICYgU3RhdHVzIiwgImh0dHBzOi8vc3VwcG9ydC5kZWxsLmNvbS9zdXBwb3J0 L3N1cHBvcnRoaXN0b3J5L3NlYXJjaC5hc3B4P2M9dXMmY3M9MTkmbD1lbiZzPWRo cyIgKSwgbmV3IG1lbnVJdGVtKCAiRGlzcGF0Y2ggU3RhdHVzIiwgImh0dHA6Ly9z dXBwb3J0LmRlbGwuY29tL3N1cHBvcnQvc3VwcG9ydGhpc3RvcnkvbWluaWRpc3Bh dGNoLmFzcHg/Yz11cyZjcz0xOSZsPWVuJnM9ZGhzIiApLCBuZXcgbWVudUl0ZW0o ICJFeHByZXNzIFNlcnZpY2UgQ29kZSBDb252ZXJ0ZXIiLCAiaHR0cDovL3N1cHBv cnQuZGVsbC5jb20vc3VwcG9ydC90b3BpY3MvZ2xvYmFsLmFzcHgvc3VwcG9ydC9t eV9zeXN0ZW1zX2luZm8vZXhwcmVzc19zZXJ2aWNlX2NvZGVfY29udmVydGVyP2M9 dXMmY3M9MTkmbD1lbiZzPWRocyIgKSwgbmV3IG1lbnVJdGVtKCAiUmVjYWxsIElu Zm9ybWF0aW9uIiwgImh0dHA6Ly9zdXBwb3J0LmRlbGwuY29tL3N1cHBvcnQvYmF0 dGVyeXJlY2FsbC9pbmRleC5hc3B4L2VuL21haW4/Yz11cyZjcz0xOSZsPWVuJnM9 ZGhzIiApLCBuZXcgbWVudUl0ZW0oICJHbG9iYWwgUmVjeWNsaW5nIE9wdGlvbnMi LCAiaHR0cDovL2NvbnRlbnQuZGVsbC5jb20vdXMvZW4vY29ycC9kL2NvcnAtY29t bS9HbG9iYWxSZWN5Y2xpbmcuYXNweCIgKSApOw0KdmFyIG1fMV82XzNfTWVudSA9 IG5ldyBBcnJheSggbmV3IG1lbnVJdGVtKCAiSG90IHRvcGljcyIsICJodHRwOi8v c3VwcG9ydC5kZWxsLmNvbS9zdXBwb3J0L3RvcGljcy9nbG9iYWwuYXNweC9zdXBw b3J0L2hvdHRvcGljL2hvdHRvcGljX2NlbnRlcj9jPXVzJmNzPTE5Jmw9ZW4mcz1k aHMiICksIG5ldyBtZW51SXRlbSggIkhhcmR3YXJlIiwgImh0dHA6Ly9zdXBwb3J0 LmRlbGwuY29tL3N1cHBvcnQvdG9waWNzL2dsb2JhbC5hc3B4L3N1cHBvcnQvaGFy ZHdhcmUvaGFyZHdhcmVfcG9ydGFsP2M9dXMmY3M9MTkmbD1lbiZzPWRocyIgKSwg bmV3IG1lbnVJdGVtKCAiR2V0dGluZyBTdGFydGVkIiwgImh0dHA6Ly9kc25pbWcu ZGVsbC5jb20vaW1hZ2VzL2V4dGVybmFsL2RvY3VtZW50cy9BcHBsaWNhdGlvbnMv b3NfcmVkaXJlY3QuaHRtP3R5cGU9c3J2IiApLCBuZXcgbWVudUl0ZW0oICJXaW5k b3dzIDciLCAiaHR0cDovL3N1cHBvcnQuZGVsbC5jb20vc3VwcG9ydC90b3BpY3Mv Z2xvYmFsLmFzcHgvc3VwcG9ydC93aW43X3N1cHBvcnQvd2luN19wb3J0YWw/Yz11 cyZjcz0xOSZsPWVuJnM9ZGhzIiApLCBuZXcgbWVudUl0ZW0oICJXaW5kb3dzIFhQ IiwgImh0dHA6Ly9zdXBwb3J0LmRlbGwuY29tL3N1cHBvcnQvdG9waWNzL2dsb2Jh bC5hc3B4L3N1cHBvcnQveHBfc3VwcG9ydC93aW54cF9wb3J0YWw/Yz11cyZjcz0x OSZsPWVuJnM9ZGhzIiApLCBuZXcgbWVudUl0ZW0oICJXaW5kb3dzIFZpc3RhIiwg Imh0dHA6Ly9zdXBwb3J0LmRlbGwuY29tL3N1cHBvcnQvdG9waWNzL2dsb2JhbC5h c3B4L3N1cHBvcnQvdmlzdGFfc3VwcG9ydC92aXN0YV9tYWluP2M9dXMmY3M9MTkm bD1lbiZzPWRocyIgKSwgbmV3IG1lbnVJdGVtKCAiTmV0d29ya2luZyBhbmQgV2ly ZWxlc3MiLCAiaHR0cDovL3N1cHBvcnQuZGVsbC5jb20vc3VwcG9ydC90b3BpY3Mv Z2xvYmFsLmFzcHgvc3VwcG9ydC9uZXR3b3JraW5nX3dpcmVsZXNzL3dpcmVsZXNz X3BvcnRhbD9jPXVzJmNzPTE5Jmw9ZW4mcz1kaHMiICksIG5ldyBtZW51SXRlbSgg IlNlY3VyaXR5ICYgVmlydXMiLCAiaHR0cDovL3N1cHBvcnQuZGVsbC5jb20vc3Vw cG9ydC90b3BpY3MvZ2xvYmFsLmFzcHgvc3VwcG9ydC9zZWN1cml0eS9zZWN1cml0 eV9wb3J0YWw/Yz11cyZjcz0xOSZsPWVuJnM9ZGhzIiApLCBuZXcgbWVudUl0ZW0o ICJTdXBwb3J0IFZpZGVvcyIsICJodHRwOi8vc3VwcG9ydC5kZWxsLmNvbS9zdXBw b3J0L3JpY2htZWRpYS9pbmRleC5hc3B4P2M9dXMmY3M9MTkmbD1lbiZzPWRocyIg KSApOw0KdmFyIG1fMV82XzRfTWVudSA9IG5ldyBBcnJheSggbmV3IG1lbnVJdGVt KCAiQ29udGFjdCBUZWNobmljYWwgU3VwcG9ydCIsICJodHRwOi8vc3VwcG9ydC5k ZWxsLmNvbS9zdXBwb3J0L3RvcGljcy9nbG9iYWwuYXNweC9zdXBwb3J0L2RlbGxj YXJlL2NvbnRhY3RfdGVjaG5pY2FsX3N1cHBvcnQ/Yz11cyZjcz0xOSZsPWVuJnM9 ZGhzIiApLCBuZXcgbWVudUl0ZW0oICJDb250YWN0IE9yZGVyIFN1cHBvcnQiLCAi aHR0cDovL3N1cHBvcnQuZGVsbC5jb20vc3VwcG9ydC90b3BpY3MvZ2xvYmFsLmFz cHgvc3VwcG9ydC9kZWxsY2FyZS9jb250YWN0X2N1c3RvbWVyX3NlcnZpY2U/Yz11 cyZjcz0xOSZsPWVuJnM9ZGhzIiApLCBuZXcgbWVudUl0ZW0oICJDb250YWN0IERl bGwgU2FsZXMiLCAiaHR0cDovL3N1cHBvcnQuZGVsbC5jb20vc3VwcG9ydC90b3Bp Y3MvZ2xvYmFsLmFzcHgvc3VwcG9ydC9kZWxsY2FyZS9jb250YWN0X3NhbGVzX3N1 cHBvcnQ/Yz11cyZjcz0xOSZsPWVuJnM9ZGhzIiApLCBuZXcgbWVudUl0ZW0oICJJ bnRlcm5hdGlvbmFsIFN1cHBvcnQiLCAiaHR0cDovL3N1cHBvcnQuZGVsbC5jb20v c3VwcG9ydC90b3BpY3MvZ2xvYmFsLmFzcHgvc3VwcG9ydC9kZWxsY2FyZS9pbnRl cm5hdGlvbmFsX3RyYXZlbD9jPXVzJmNzPTE5Jmw9ZW4mcz1kaHMiICkgKTsNCnZh ciBtXzFfNl81X01lbnUgPSBuZXcgQXJyYXkoIG5ldyBtZW51SXRlbSggIk9yZGVy IFN0YXR1cyIsICJodHRwczovL3N1cHBvcnQuZGVsbC5jb20vc3VwcG9ydC9vcmRl ci9HbG9iYWxPcmRlckhvbWUuYXNweD9jPXVzJmNzPTE5Jmw9ZW4mcz1kaHMiICks IG5ldyBtZW51SXRlbSggIkhlbHAgQ2F0ZWdvcmllcyIsICJodHRwOi8vY29udGVu dC5kZWxsLmNvbS9vcmRlci1zdXBwb3J0LmFzcHg/Yz11cyZjcz0xOSZsPWVuJnM9 ZGhzIiApLCBuZXcgbWVudUl0ZW0oICJNYW5hZ2UgWW91ciBPcmRlciIsICJodHRw Oi8vY29udGVudC5kZWxsLmNvbS9vcmRlci1zdXBwb3J0LW1hbmFnZS15b3VyLW9y ZGVyLmFzcHg/Yz11cyZjcz0xOSZsPWVuJnM9ZGhzIiApLCBuZXcgbWVudUl0ZW0o ICJEZWxpdmVyeSIsICJodHRwOi8vY29udGVudC5kZWxsLmNvbS9vcmRlci1zdXBw b3J0LXNoaXBwaW5nLWFuZC1kZWxpdmVyeS5hc3B4P2M9dXMmY3M9MTkmbD1lbiZz PWRocyIgKSwgbmV3IG1lbnVJdGVtKCAiRGVsbCBQcmVmZXJyZWQgQWNjb3VudCBQ YXltZW50cyIsICJodHRwOi8vd3d3LmRlbGwuY29tL2NvbnRlbnQvdG9waWNzL3Rv cGljLmFzcHgvdXMvc2VnbWVudHMvZGhzL29kZy9wYXlkcGEzP2M9dXMmbD1lbiZz PWRocyZjcz0xOSZkZ2M9RE0mY2lkPTExOTc1JmxpZD0zNTA0NTMiICksIG5ldyBt ZW51SXRlbSggIlJldHVybnMiLCAiaHR0cDovL3N1cHBvcnQuZGVsbC5jb20vc3Vw cG9ydC90b3BpY3MvZ2xvYmFsLmFzcHgvc3VwcG9ydC9kZWxsY2FyZS9yZXR1cm5z X2VudHJ5P2M9dXMmY3M9MTkmbD1lbiZzPWRocyIgKSApOw0KdmFyIG1fMV82XzZf TWVudSA9IG5ldyBBcnJheSggbmV3IG1lbnVJdGVtKCAiV2FycmFudHkgU3RhdHVz IiwgImh0dHA6Ly9zdXBwb3J0LmRlbGwuY29tL3N1cHBvcnQvdG9waWNzL2dsb2Jh bC5hc3B4L3N1cHBvcnQvbXlfc3lzdGVtc19pbmZvL2RldGFpbHM/Yz11cyZjcz0x OSZsPWVuJnM9ZGhzIiApLCBuZXcgbWVudUl0ZW0oICJTZXJ2aWNlIENvbnRyYWN0 cyIsICJodHRwOi8vd3d3LmRlbGwuY29tL2NvbnRlbnQvdG9waWNzL2dsb2JhbC5h c3B4L3NlcnZpY2VzL21haW4vc2VydmljZV9jb250cmFjdHM/Yz11cyZjcz0xOSZs PWVuJnM9ZGhzIiApLCBuZXcgbWVudUl0ZW0oICJFeHRlbmQgJiBVcGdyYWRlIFdh cnJhbnR5IiwgImh0dHA6Ly9zdXBwb3J0LmRlbGwuY29tL3N1cHBvcnQvdG9waWNz L2dsb2JhbC5hc3B4L3N1cHBvcnQvbXlfc3lzdGVtc19pbmZvL3dhcnJhbnR5X3N0 b3JlX3NpZ25faW4/Yz11cyZjcz0xOSZsPWVuJnM9ZGhzIiApLCBuZXcgbWVudUl0 ZW0oICJFeHBpcmVkIFdhcnJhbnR5IFNlcnZpY2UiLCAiaHR0cDovL3N1cHBvcnQu ZGVsbC5jb20vc3VwcG9ydC90b3BpY3MvZ2xvYmFsLmFzcHgvc3VwcG9ydC9kZWxs Y2FyZS9lbi9leHBpcmVkX3dhcnJhbnR5P2M9dXMmY3M9MTkmbD1lbiZzPWRocyIg KSwgbmV3IG1lbnVJdGVtKCAiUmV0YWlsIFJlZ2lzdHJhdGlvbiIsICJodHRwOi8v c3VwcG9ydC5kZWxsLmNvbS9zdXBwb3J0L3RvcGljcy9nbG9iYWwuYXNweC9zdXBw b3J0L2RlbGxjYXJlL3JlZ2lzdGVyX3lvdXJfcHJvZHVjdD9jPXVzJmNzPTE5Jmw9 ZW4mcz1kaHMiICksIG5ldyBtZW51SXRlbSggIk93bmVyc2hpcCBUcmFuc2ZlcnMi LCAiaHR0cDovL3N1cHBvcnQuZGVsbC5jb20vc3VwcG9ydC90b3BpY3MvZ2xvYmFs LmFzcHgvc3VwcG9ydC9jaGFuZ2Vfb3JkZXIvdGFnX3RyYW5zZmVyP2M9dXMmY3M9 MTkmbD1lbiZzPWRocyIgKSwgbmV3IG1lbnVJdGVtKCAiUmV0dXJuIFBhcnRzIEFm dGVyIFNlcnZpY2UiLCAiaHR0cDovL3N1cHBvcnQuZGVsbC5jb20vc3VwcG9ydC90 b3BpY3MvZ2xvYmFsLmFzcHgvc3VwcG9ydC9kZWxsY2FyZS9lbi93YXJyYW50eV9w YXJ0cz9jPXVzJmNzPTE5Jmw9ZW4mcz1kaHMiICkgKTsNCnZhciBtXzFfNl9NZW51 ID0gbmV3IEFycmF5KCBuZXcgbWVudVJlZiggInNwdF9kbmRNZW51IiwgIkRyaXZl cnMgYW5kIERvd25sb2FkcyIsICJodHRwOi8vc3VwcG9ydC5kZWxsLmNvbS9zdXBw b3J0L2Rvd25sb2Fkcy9pbmRleC5hc3B4P2M9dXMmY3M9MTkmbD1lbiZzPWRocyIs IG1fMV82XzBfTWVudSwgbnVsbCwgbnVsbCwgIjEiICksIG5ldyBtZW51UmVmKCAi c3B0X3ByZW1pdW1NZW51IiwgIlBDIFNlcnZpY2VzICYgU2VjdXJpdHkiLCAiaHR0 cDovL3d3dy5kZWxsLmNvbS9jb250ZW50L3RvcGljcy9nbG9iYWwuYXNweC9zb2x1 dGlvbl9zdGF0aW9uL3NvbHV0aW9uX3N0YXRpb25faG9tZT9jPXVzJmNpZD1TRENN YXN0JmNzPTE5JmRnYz1JUiZsPWVuJnM9ZGhzIiwgbV8xXzZfMV9NZW51LCBudWxs LCBudWxsLCAiMSIgKSwgbmV3IG1lbnVSZWYoICJzcHRfcGR0c3B0TWVudSIsICJQ cm9kdWN0IFN1cHBvcnQiLCAiaHR0cDovL3N1cHBvcnQuZGVsbC5jb20vc3VwcG9y dC9EUFAvSW5kZXguYXNweD9jPXVzJmNzPTE5Jmw9ZW4mcz1kaHMiLCBtXzFfNl8y X01lbnUsIG51bGwsIG51bGwsICIyIiApLCBuZXcgbWVudVJlZiggInNwdF90b3Bp Y01lbnUiLCAiU3VwcG9ydCBieSBUb3BpYyIsICJodHRwOi8vc3VwcG9ydC5kZWxs LmNvbS9zdXBwb3J0L2luZGV4LmFzcHgiLCBtXzFfNl8zX01lbnUsIG51bGwsIG51 bGwsICIzIiApLCBuZXcgbWVudVJlZiggInNwdF9jb250YWN0TWVudSIsICJDb250 YWN0IFVzIiwgImh0dHA6Ly9zdXBwb3J0LmRlbGwuY29tL3N1cHBvcnQvdG9waWNz L2dsb2JhbC5hc3B4L3N1cHBvcnQvZGVsbGNhcmUvY29udGFjdF91cz9jPXVzJmNz PTE5Jmw9ZW4mcz1kaHMiLCBtXzFfNl80X01lbnUsIG51bGwsIG51bGwsICIzIiAp LCBuZXcgbWVudVJlZiggInNwdF9vcmRlck1lbnUiLCAiT3JkZXIgU3VwcG9ydCIs ICJodHRwOi8vY29udGVudC5kZWxsLmNvbS9vcmRlci1zdXBwb3J0LmFzcHg/Yz11 cyZjcz0xOSZsPWVuJnM9ZGhzIiwgbV8xXzZfNV9NZW51LCBudWxsLCBudWxsLCAi NCIgKSwgbmV3IG1lbnVSZWYoICJzcHRfd2FycmFudHlNZW51IiwgIldhcnJhbnR5 IEluZm9ybWF0aW9uIiwgImh0dHA6Ly9zdXBwb3J0LmRlbGwuY29tL3N1cHBvcnQv dG9waWNzL2dsb2JhbC5hc3B4L3N1cHBvcnQvd2FycmFudHkvd2FycmFudHlfaW5m b3JtYXRpb24/Yz11cyZjcz0xOSZsPWVuJnM9ZGhzIiwgbV8xXzZfNl9NZW51LCBu dWxsLCBudWxsLCAiNSIgKSApOw0KdmFyIG1fMV9NZW51ID0gbmV3IEFycmF5KCBu ZXcgbWVudVJlZiggInNwdF9kbmRNZW51IiwgIkRyaXZlcnMgYW5kIERvd25sb2Fk cyIsICJodHRwOi8vc3VwcG9ydC5kZWxsLmNvbS9zdXBwb3J0L2Rvd25sb2Fkcy9p bmRleC5hc3B4P2M9dXMmY3M9MTkmbD1lbiZzPWRocyIsIG1fMV8wX01lbnUgKSwg bmV3IG1lbnVSZWYoICJzcHRfcGR0c3B0TWVudSIsICJQcm9kdWN0IFN1cHBvcnQi LCAiaHR0cDovL3N1cHBvcnQuZGVsbC5jb20vc3VwcG9ydC9EUFAvSW5kZXguYXNw eD9jPXVzJmNzPTE5Jmw9ZW4mcz1kaHMiLCBtXzFfMV9NZW51ICksIG5ldyBtZW51 UmVmKCAic3B0X3RvcGljTWVudSIsICJTdXBwb3J0IGJ5IFRvcGljIiwgImh0dHA6 Ly9zdXBwb3J0LmRlbGwuY29tL3N1cHBvcnQvaW5kZXguYXNweCIsIG1fMV8yX01l bnUgKSwgbmV3IG1lbnVSZWYoICJzcHRfcHJlbWl1bU1lbnUiLCAiUEMgU2Vydmlj ZXMgJiBTZWN1cml0eSIsICJodHRwOi8vd3d3LmRlbGwuY29tL2NvbnRlbnQvdG9w aWNzL2dsb2JhbC5hc3B4L3NvbHV0aW9uX3N0YXRpb24vc29sdXRpb25fc3RhdGlv bl9ob21lP2M9dXMmY2lkPVNEQ01hc3QmY3M9MTkmZGdjPUlSJmw9ZW4mcz1kaHMi LCBtXzFfM19NZW51ICksIG5ldyBtZW51UmVmKCAic3B0X29yZGVyTWVudSIsICJP cmRlciBTdXBwb3J0IiwgImh0dHA6Ly9jb250ZW50LmRlbGwuY29tL29yZGVyLXN1 cHBvcnQuYXNweD9jPXVzJmNzPTE5Jmw9ZW4mcz1kaHMiLCBtXzFfNF9NZW51ICks IG5ldyBtZW51UmVmKCAic3B0X3dhcnJhbnR5TWVudSIsICJXYXJyYW50eSBJbmZv cm1hdGlvbiIsICJodHRwOi8vc3VwcG9ydC5kZWxsLmNvbS9zdXBwb3J0L3RvcGlj cy9nbG9iYWwuYXNweC9zdXBwb3J0L3dhcnJhbnR5L3dhcnJhbnR5X2luZm9ybWF0 aW9uP2M9dXMmY3M9MTkmbD1lbiZzPWRocyIsIG1fMV81X01lbnUgKSwgbmV3IG1l bnVSZWYoICJ2aWV3YWxsTWVudSIsICJWaWV3IEFsbCIsICJodHRwOi8vc3VwcG9y dC5kZWxsLmNvbS9zdXBwb3J0L2luZGV4LmFzcHg/Yz11cyZjcz0xOSZsPWVuJnM9 ZGhzIiwgbV8xXzZfTWVudSApICk7DQp2YXIgbV8yX01lbnUgPSBuZXcgQXJyYXko KTsNCnZhciBtX21lbnVCYXIgPSBuZXcgQXJyYXkoIG5ldyBtZW51UmVmKCAicHJv ZHVjdHNNZW51IiwgIlNob3AiLCAiaHR0cDovL3d3dy5kZWxsLmNvbS9jb250ZW50 L2RlZmF1bHQuYXNweD9jPXVzJmNzPTE5Jmw9ZW4mcz1kaHMiLCBtXzBfTWVudSwg ZmFsc2UgKSwgbmV3IG1lbnVSZWYoICJzdXBwb3J0TWVudSIsICJTdXBwb3J0Iiwg Imh0dHA6Ly9zdXBwb3J0LmRlbGwuY29tL3N1cHBvcnQvaW5kZXguYXNweD9jPXVz JmNzPTE5Jmw9ZW4mcz1kaHMiLCBtXzFfTWVudSwgZmFsc2UgKSwgbmV3IG1lbnVS ZWYoICJjb21tdW5pdHlNZW51IiwgIkNvbW11bml0eSIsICJodHRwOi8vZW4uY29t bXVuaXR5LmRlbGwuY29tIiwgbV8yX01lbnUsIGZhbHNlICkgKTsNCnZhciBtX3N1 Yk5hdkxpbmtzRGlzcGxheSA9IHRydWU7DQp2YXIgbV9zdWJOYXZJY29uc0Rpc3Bs YXkgPSB0cnVlOw0KdmFyIG1faW1nUGZ4ID0gImh0dHA6Ly9pLmRlbGwuY29tIjsN CnZhciBmbGFnID0gInVzIjsNCnZhciBtX21hc3RoZWFkV2lkdGggPSAiOTI4IjsN CnZhciBtX21hc3RoZWFkV2lkdGhOZXh0R2VuID0gIjk2NSI7DQp2YXIgbV90YWJO YXYgPSB0cnVlOw0KdmFyIG1faG9tZWxpbmsgPSAiaHR0cDovL3d3dy5kZWxsLmNv bS9jb250ZW50L2RlZmF1bHQuYXNweD9jPXVzJmNzPTE5Jmw9ZW4mcz1kaHMiOw0K dmFyIG1faG9tZWxvZ28gPSAiaHR0cDovL2kuZGVsbC5jb20vaW1hZ2VzL2dsb2Jh bC9icmFuZC91aS9ob21lbG9nby9lbi5naWYiOw0KdmFyIG1fbm90aG9tZWxvZ28g PSAiaHR0cDovL2kuZGVsbC5jb20vaW1hZ2VzL2dsb2JhbC9icmFuZC91aS9sb2dv LmdpZiI7DQp2YXIgbV9zZWdsaW5rID0gImh0dHA6Ly93d3cuZGVsbC5jb20vY29u dGVudC9kZWZhdWx0LmFzcHg/Yz11cyZsPWVuJnM9ZGhzJmNzPTE5IjsNCnZhciBt X2N0cnlTaG9ydCA9ICJVU0EiOw0KdmFyIG1fY3RyeU5hbWUgPSAiVW5pdGVkIFN0 YXRlcyI7DQp2YXIgbV9jdHJ5SW1nID0gImh0dHA6Ly9pLmRlbGwuY29tL2ltZy5h c3B4P3A9bHhmQkh0UUF1JTJiVHgwTk1VUVglMmZqVDFSUkwzMmoxSGtLSGM2YURV TW4lMmJ4RWZZRUVlNUpvbkt6ZUEzMFFFRXU1ZlNWMTNQcUw1T3lvZ21NZ0FCSCUy YmdFZyUzZCUzZCI7DQp2YXIgbV9iYWNrdG8gPSAiQkFDSyBUTyI7DQp2YXIgbV9n b3RvdG9wID0gIlRvcCI7DQp2YXIgbV95b3VBcmVIZXJlID0gIllvdSBhcmUgaGVy ZSI7DQp2YXIgbV9wb3BDbG9zZSA9ICJDbG9zZSI7DQp2YXIgbV9wb3BFeHBhbmQg PSAiRXhwYW5kIjsNCnZhciBtX29mZmVyZGV0YWlsID0gIk9mZmVyIERldGFpbHMi Ow0KdmFyIG1fcHJpbnRhYmxlVGV4dCA9ICJQcmludGFibGUgVmVyc2lvbiI7DQp2 YXIgbV9wcmludFRleHQgPSAiUHJpbnQgdGhpcyBwYWdlIjsNCnZhciBtX2VtYWls VGV4dCA9ICJFLW1haWwgcGFnZSI7DQp2YXIgbV9lbWFpbFN1YmplY3QgPSAiUmVj b21tZW5kZWQgRGVsbCB3ZWIgcGFnZSI7DQp2YXIgbV9oZWxwVGV4dCA9ICJIZWxw IjsNCnZhciBtX3NlbGVjdHR4dCA9ICJTZWxlY3QiOw0KdmFyIG1fcHJvY2Vzc2lu Z2NhcHRpb24gPSAiIjsNCnZhciBtX21lbnVBcnJvd3MgPSB0cnVlOw0KdmFyIG1f c2VhcmNoID0gIjxmb3JtIHN0eWxlPVwicGFkZGluZzowcHg7bWFyZ2luOjBweDtc IiBuYW1lPVwic2VhcmNoXCIgYWN0aW9uPVwiaHR0cDovL3NlYXJjaC5kZWxsLmNv bS9yZXN1bHRzLmFzcHg/cz1kaHMmY3M9MTkmYz11cyZsPWVuXCIgbWV0aG9kPVwi Z2V0XCI+PGlucHV0IHR5cGU9XCJoaWRkZW5cIiBuYW1lPVwic1wiIHZhbHVlPVwi ZGhzXCIgPjxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgbmFtZT1cImNcIiB2YWx1ZT1c InVzXCIgPjxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgbmFtZT1cImxcIiB2YWx1ZT1c ImVuXCIgPjxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgbmFtZT1cImNzXCIgdmFsdWU9 XCIxOVwiID48ZGl2IGFsaWduPVwicmlnaHRcIiA+PHRhYmxlIGNlbGxwYWRkaW5n PVwiMFwiIGNlbGxzcGFjaW5nPVwiMFwiIGJvcmRlcj1cIjBcIiA+PHRyPjx0ZD48 aW5wdXQgaWQ9XCJzZWFyY2hpbnB1dFwiIHRpdGxlPVwiU2VhcmNoIFwiIGNsYXNz PVwic2VhcmNoaW5wdXRcIiBvbmZvY3VzPVwiaWYodmFsdWU9PSdTZWFyY2gnKXZh bHVlPScnO1wiIHZhbHVlPVwiU2VhcmNoXCIgbmFtZT1cImtcIiB0eXBlPVwidGV4 dFwiIHNpemU9XCIyMFwiPjwvdGQ+PGlucHV0IHR5cGU9XCJoaWRkZW5cIiBuYW1l PVwiY2F0XCIgdmFsdWU9XCJhbGxcIiA+PHRkPjxhIGhyZWY9XCJqYXZhc2NyaXB0 OmRvY3VtZW50LmZvcm1zWydzZWFyY2gnXS5zdWJtaXQoKTtcIj48aW5wdXQgb25j bGljaz1cImlmKGRvY3VtZW50LmZvcm1zWydzZWFyY2gnXS5zZWFyY2hpbnB1dC52 YWx1ZT09J1NlYXJjaCcpZG9jdW1lbnQuZm9ybXNbJ3NlYXJjaCddLnNlYXJjaGlu cHV0LnZhbHVlPScnO1wiIGNsYXNzPVwic2VhcmNoYWN0aW9uXCIgdHlwZT1cImlt YWdlXCIgYm9yZGVyPVwiMFwiIHNyYz1cImh0dHA6Ly9pLmRlbGwuY29tL2ltYWdl cy9nbG9iYWwvYnJhbmQvdWkvbnhnZW4vc2VhcmNoX2ZpZWxkX2J1dHRvbi5naWZc IiBhbHQ9XCJTZWFyY2hcIiB3aWR0aD1cIjIxXCIgaGVpZ2h0PVwiMTdcIiBoc3Bh Y2U9XCIyXCIgdnNwYWNlPVwiMFwiPjwvYT48L3RkPjwvdHI+PC90YWJsZT48L2Rp dj48L2Zvcm0+IjsNCnZhciAgbV9zZWFyY2hMaW5rcyAgPSBuZXcgQXJyYXkoIG5l dyBtZW51SXRlbSggIlNlYXJjaCBEZWxsIiwgImh0dHA6Ly93d3cuZGVsbC5jb20v c2VhcmNoMSIgKSwgbmV3IG1lbnVJdGVtKCAiQWJvdXQgRGVsbCIsICJodHRwOi8v Y29udGVudC5kZWxsLmNvbS9hYm91dC1kZWxsLmFzcHg/Yz11cyZjcz0xOSZsPWVu JnM9Y29ycCIgKSApOw0KdmFyIG1fYmlyZHNlZWQgPSAiPHAgY2xhc3M9XCJwYXJh X3NtYWxsXCI+PGEgIGhyZWY9XCJodHRwOi8vd3d3LmRlbGwuY29tL2hvbWUvbGFw dG9wc1wiPkxhcHRvcHM8L2E+IHwgPGEgIGhyZWY9XCJodHRwOi8vd3d3LmRlbGwu Y29tL2hvbWUvZGVza3RvcHNcIj5EZXNrdG9wczwvYT4gfCA8YSAgaHJlZj1cImh0 dHA6Ly93d3cuZGVsbC5jb20vYnVzaW5lc3MvbGFwdG9wc1wiPkJ1c2luZXNzIExh cHRvcHM8L2E+IHwgPGEgIGhyZWY9XCJodHRwOi8vd3d3LmRlbGwuY29tL2J1c2lu ZXNzL2Rlc2t0b3BzXCI+QnVzaW5lc3MgRGVza3RvcHM8L2E+IHwgPGEgIGhyZWY9 XCJodHRwOi8vd3d3LmRlbGwuY29tL2J1c2luZXNzL3dvcmtzdGF0aW9uc1wiPldv cmtzdGF0aW9uczwvYT4gfCA8YSAgaHJlZj1cImh0dHA6Ly93d3cuZGVsbC5jb20v YnVzaW5lc3Mvc2VydmVyc1wiPlNlcnZlcnM8L2E+IHwgPGEgIGhyZWY9XCJodHRw Oi8vd3d3LmRlbGwuY29tL2J1c2luZXNzL3N0b3JhZ2VcIj5TdG9yYWdlPC9hPiB8 IDxhICBocmVmPVwiaHR0cDovL3d3dy5kZWxsLmNvbS9zZXJ2aWNlc1wiPlNlcnZp Y2VzPC9hPiB8IDxhICBocmVmPVwiaHR0cDovL3d3dy5kZWxsLmNvbS9tb25pdG9y c1wiPk1vbml0b3JzPC9hPiB8IDxhICBocmVmPVwiaHR0cDovL3d3dy5kZWxsLmNv bS9wcmludGVyc1wiPlByaW50ZXJzPC9hPiB8IDxhICBocmVmPVwiaHR0cDovL2Fj Y2Vzc29yaWVzLmRlbGwuY29tL2hvbWUvdHZzXCI+TENEIFRWczwvYT4gfCA8YSAg aHJlZj1cImh0dHA6Ly9hY2Nlc3Nvcmllcy51cy5kZWxsLmNvbS9ob21lXCI+RWxl Y3Ryb25pY3M8L2E+PGJyPjxhICBocmVmPVwiaHR0cDovL3d3dy5kZWxsLmNvbS9j b250ZW50L3RvcGljcy9nbG9iYWwuYXNweC9wb2xpY3kvZW4vcG9saWN5P2M9dXMm Y3M9MTkmbD1lbiZzPWdlbiZ+c2VjdGlvbj0wMDNcIj7CqSZuYnNwOzIwMTEgRGVs bDwvYT4gfCA8YSAgaHJlZj1cImh0dHA6Ly9jb250ZW50LmRlbGwuY29tL2Fib3V0 LWRlbGwuYXNweD9jPXVzJmNzPTE5Jmw9ZW4mcz1jb3JwXCI+QWJvdXQgRGVsbDwv YT4gfCA8YSAgaHJlZj1cImh0dHA6Ly9jb250ZW50LmRlbGwuY29tL3VzL2VuL2Nv cnAvY3ItY29ycG9yYXRlLWFjY291bnRhYmlsaXR5LXJlZ3VsYXRvcnktY29tcGxp YW5jZS5hc3B4XCI+UmVndWxhdG9yeSBDb21wbGlhbmNlPC9hPiB8IDxhICBocmVm PVwiaHR0cDovL3d3dy5kZWxsLmNvbS9jb250ZW50L3RvcGljcy9nbG9iYWwuYXNw eC9wb2xpY3kvZW4vcG9saWN5P2M9dXMmY3M9MTkmbD1lbiZzPWdlbiZ+c2VjdGlv bj0wMTJcIj5UZXJtcyBvZiBTYWxlPC9hPiB8IDxhICBocmVmPVwiaHR0cHM6Ly9z dXBwb3J0LmRlbGwuY29tL3N1cHBvcnQvdG9waWNzL2dsb2JhbC5hc3B4L3N1cHBv cnQvZGVsbGNhcmUvb3V0c3RhbmRpbmdfaXNzdWVzP2M9dXMmbD1lbiZzPWdlblwi PlVucmVzb2x2ZWQgSXNzdWVzPC9hPiB8IDxhICBocmVmPVwiaHR0cDovL3d3dy5k ZWxsLmNvbS9jb250ZW50L3RvcGljcy9nbG9iYWwuYXNweC9wb2xpY3kvZW4vcG9s aWN5P2M9dXMmY3M9MTkmbD1lbiZzPWRocyZ+c2VjdGlvbj0wMDBcIj5Qcml2YWN5 PC9hPiB8IDxhICBocmVmPVwiaHR0cDovL3d3dy5kZWxsLmNvbS9jb250ZW50L3Rv cGljcy9nbG9iYWwuYXNweC9wb2xpY3kvZW4vcG9saWN5P2M9dXMmY3M9MTkmbD1l biZzPWRocyZ+c2VjdGlvbj0wMDJcIj5BYm91dCBPdXIgQWRzIGFuZCBFbWFpbHM8 L2E+IHwgPGEgIGhyZWY9XCJodHRwOi8vd3d3LmRlbGwuY29tL2NvbnRlbnQvdG9w aWNzL3NlZ3RvcGljLmFzcHgvZGVsbF9yZWN5Y2xpbmc/Yz11cyZzPWRoc1wiPkRl bGwgUmVjeWNsaW5nPC9hPiB8IDxhICBocmVmPVwiaHR0cDovL3d3dy5kZWxsLmNv bS9jb250ZW50L3RvcGljcy9nbG9iYWwuYXNweC9zdXBwb3J0L2RlbGxjYXJlL2Vu L2NvbnRhY3RfdXM/Yz11cyZjcz0xOSZsPWVuJnM9ZGhzXCI+Q29udGFjdDwvYT4g fCA8YSAgaHJlZj1cImh0dHA6Ly93d3cuZGVsbC5jb20vc2l0ZW1hcFwiPlNpdGUg TWFwPC9hPiB8IDxhICBocmVmPVwiamF2YXNjcmlwdDphbGVydCAoICBtX3B6YXRp b25QYWdlSGFzaCApO1wiPlZpc2l0IElEPC9hPiB8IDxhIGhyZWY9XCJqYXZhc2Ny aXB0OmRvT3Bpb25sYWJzKCk7T19MQygpO1wiIGNsYXNzPVwib3BsYWJzXCIgPkZl ZWRiYWNrPC9hPiB8IDxhICBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApXCIgb25j bGljaz1cInZhciBsYXVuY2hVUkw9J2h0dHA6Ly93d3cubGl2ZWxvb2suY29tL2Rl bGwvcG9wdXAuYXNweD9zaXRlaWQ9RGVsbDpTQzk4NTI2MDpVUzoxJmxtPWNiJmNv dW50cnk9VVMmc2VnbWVudD1Db25zdW1lciZsYW5nPWVuLXVzJnR5cGU9ZGlyZWN0 JnBsYWNlbWVudD1mb290ZXInKycmZXA9Jzt0cnl7dmFyIHY9ZXZhbCgnc19kZWxs LmdldExXUHZhcmlhYmxlcygpJyk7aWYodilsYXVuY2hVUkwrPWVzY2FwZSgnPycr dil9Y2F0Y2goZSl7bGF1bmNoVVJMKz1lc2NhcGUoZG9jdW1lbnQubG9jYXRpb24u aHJlZil9O3dpbmRvdy5vcGVuKGxhdW5jaFVSTCwgJ0xpdmVMT09LX0NvX0Jyb3dz aW5nJywgJ3Rvb2xiYXI9MCxzY3JvbGxiYXJzPTAsbG9jYXRpb249MCxzdGF0dXNi YXI9MCxtZW51YmFyPTAscmVzaXphYmxlPTAsdGl0bGViYXI9MCxzdGF0dXM9MCx3 aWR0aD05NDAsaGVpZ2h0PTY2MCxsZWZ0PScrTWF0aC5tYXgoMCwoc2NyZWVuLndp ZHRoLTk0MCkvMikrJyx0b3A9JytNYXRoLm1heCgwLChzY3JlZW4uaGVpZ2h0LTcx MCkvMikpO1wiPlNjcmVlbiBTaGFyZTwvYT48L3A+PHNjcmlwdCBsYW5ndWFnZT1c IkphdmFTY3JpcHRcIiB0eXBlPVwidGV4dC9qYXZhc2NyaXB0XCI+CWRvY3VtZW50 LndyaXRlKCc8c2MnKydyaXB0Jyk7CWRvY3VtZW50LndyaXRlKCcgdHlwZT1cInRl eHQvamF2YXNjcmlwdFwiJyk7CWRvY3VtZW50LndyaXRlKCcgbGFuZ3VhZ2U9XCJK YXZhU2NyaXB0XCInKTsJZG9jdW1lbnQud3JpdGUoJyBzcmM9XCInK21faW1nUGZ4 KycvaW1hZ2VzL2dsb2JhbC9qcy9zX2NvZGVfZGVsbF92aDIyXzIuanNcIj4nKTsJ ZG9jdW1lbnQud3JpdGUoJzwvc2MnKydyaXB0PicpOzwvc2NyaXB0PjxzY3JpcHQg bGFuZ3VhZ2U9XCJKYXZhU2NyaXB0XCIgdHlwZT1cInRleHQvamF2YXNjcmlwdFwi PglpZiAodHlwZW9mKHNfY29kZSkgIT0gJ3VuZGVmaW5lZCcpIHsJc19kZWxsLnBh Z2VOYW1lPVwiXCI7CXZhciBzX2NvZGU9c19kZWxsLnQoKTtpZihzX2NvZGUpZG9j dW1lbnQud3JpdGUoc19jb2RlKTsJfTwvc2NyaXB0PiI7DQp2YXIgbV9sb2NhbGVT ZWxlY3RvciA9ICI8dGFibGUgY2VsbHBhZGRpbmc9XCIwXCIgY2VsbHNwYWNpbmc9 XCIwXCIgYm9yZGVyPVwiMFwiIGhlaWdodD1cIjI1XCIgYWxpZ249XCJjZW50ZXJc Ij48dHI+PHRkIG5vd3JhcD1cIjFcIiBjbGFzcz1cImNzX3RpdGxlXCI+PHNwYW4g Y2xhc3M9XCJwYXJhX3NtYWxsXCI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Q2hvb3NlIEEgQ291bnRyeS9SZWdpb24mbmJzcDs8L3RkPjx0ZD48 dGFibGUgY2VsbHBhZGRpbmc9MSBjZWxsc3BhY2luZz0wIGJvcmRlcj0wIHdpZHRo PT48dHI+PGZvcm0gbmFtZT1cInNlbGZybVwiPjx0ZD48c2VsZWN0IG5hbWUgY2xh c3M9XCJwYXJhX3NtYWxsXCIgb25DaGFuZ2U9XCJpZiggdGhpcy5vcHRpb25zW3Ro aXMuc2VsZWN0ZWRJbmRleF0udmFsdWUgIT0gJycgKSBkb2N1bWVudC5sb2NhdGlv biA9IHRoaXMub3B0aW9uc1t0aGlzLnNlbGVjdGVkSW5kZXhdLnZhbHVlXCI+Ig0K CQkrICI8b3B0aW9uIHZhbHVlPVwiaHR0cDovL3d3dy5kZWxsLmNvbS9jb250ZW50 L2RlZmF1bHQuYXNweD9jPWFhJmFtcDtsPWVuJmFtcDtzPWdlblwiPkFmcmljYTwv b3B0aW9uPiINCgkJKyAiPG9wdGlvbiB2YWx1ZT1cImh0dHA6Ly93d3cuZGVsbC5j b20vY29udGVudC9kZWZhdWx0LmFzcHg/Yz1hbCZhbXA7bD1lbiZhbXA7cz1nZW5c Ij5BbGJhbmlhPC9vcHRpb24+Ig0KCQkrICI8b3B0aW9uIHZhbHVlPVwiaHR0cDov L3d3dy5kZWxsLmNvbS9jb250ZW50L2RlZmF1bHQuYXNweD9jPWR6JmFtcDtsPWZy JmFtcDtzPWdlblwiPkFsZ2VyaWE8L29wdGlvbj4iDQoJCSsgIjxvcHRpb24gdmFs dWU9XCJodHRwOi8vd3d3LmRlbGwuY29tL2NvbnRlbnQvZGVmYXVsdC5hc3B4P2M9 YW8mYW1wO2w9ZW4mYW1wO3M9Z2VuXCI+QW5nb2xhPC9vcHRpb24+Ig0KCQkrICI8 b3B0aW9uIHZhbHVlPVwiaHR0cDovL3d3dy5kZWxsLmNvbS9jb250ZW50L2RlZmF1 bHQuYXNweD9jPWFpJmFtcDtsPWVuJmFtcDtzPWdlblwiPkFuZ3VpbGxhPC9vcHRp b24+Ig0KCQkrICI8b3B0aW9uIHZhbHVlPVwiaHR0cDovL3d3dy5kZWxsLmNvbS9j b250ZW50L2RlZmF1bHQuYXNweD9jPWFnJmFtcDtsPWVuJmFtcDtzPWdlblwiPkFu dGlndWEgJmFtcDsgQmFyYnVkYTwvb3B0aW9uPiINCgkJKyAiPG9wdGlvbiB2YWx1 ZT1cImh0dHA6Ly93d3cuZGVsbC5jb20vY29udGVudC9kZWZhdWx0LmFzcHg/Yz1h ciZhbXA7bD1lcyZhbXA7cz1nZW5cIj5BcmdlbnRpbmE8L29wdGlvbj4iDQoJCSsg IjxvcHRpb24gdmFsdWU9XCJodHRwOi8vd3d3LmRlbGwuY29tL2NvbnRlbnQvZGVm YXVsdC5hc3B4P2M9YW0mYW1wO2w9ZW4mYW1wO3M9Z2VuXCI+QXJtZW5pYTwvb3B0 aW9uPiINCgkJKyAiPG9wdGlvbiB2YWx1ZT1cImh0dHA6Ly93d3cuZGVsbC5jb20v Y29udGVudC9kZWZhdWx0LmFzcHg/Yz1hdyZhbXA7bD1lbiZhbXA7cz1nZW5cIj5B cnViYTwvb3B0aW9uPiINCgkJKyAiPG9wdGlvbiB2YWx1ZT1cImh0dHA6Ly93d3cu ZGVsbC5jb20vY29udGVudC9kZWZhdWx0LmFzcHg/Yz1hcCZhbXA7bD1lbiZhbXA7 cz1nZW5cIj5Bc2lhIFBhY2lmaWM8L29wdGlvbj4iDQoJCSsgIjxvcHRpb24gdmFs dWU9XCJodHRwOi8vd3d3LmRlbGwuY29tL2NvbnRlbnQvZGVmYXVsdC5hc3B4P2M9 YXUmYW1wO2w9ZW4mYW1wO3M9Z2VuXCI+QXVzdHJhbGlhPC9vcHRpb24+Ig0KCQkr ICI8b3B0aW9uIHZhbHVlPVwiaHR0cDovL3d3dy5kZWxsLmNvbS9jb250ZW50L2Rl ZmF1bHQuYXNweD9jPWF0JmFtcDtsPWRlJmFtcDtzPWdlblwiPkF1c3RyaWE8L29w dGlvbj4iDQoJCSsgIjxvcHRpb24gdmFsdWU9XCJodHRwOi8vd3d3LmRlbGwuY29t L2NvbnRlbnQvZGVmYXVsdC5hc3B4P2M9YXomYW1wO2w9ZW4mYW1wO3M9Z2VuXCI+ QXplcmJhaWphbjwvb3B0aW9uPiINCgkJKyAiPG9wdGlvbiB2YWx1ZT1cImh0dHA6 Ly93d3cuZGVsbC5jb20vY29udGVudC9kZWZhdWx0LmFzcHg/Yz1icyZhbXA7bD1l biZhbXA7cz1nZW5cIj5CYWhhbWFzPC9vcHRpb24+Ig0KCQkrICI8b3B0aW9uIHZh bHVlPVwiaHR0cDovL3d3dy5kZWxsLmNvbS9jb250ZW50L2RlZmF1bHQuYXNweD9j PWJoJmFtcDtsPWVuJmFtcDtzPWdlblwiPkJhaHJhaW48L29wdGlvbj4iDQoJCSsg IjxvcHRpb24gdmFsdWU9XCJodHRwOi8vd3d3LmRlbGwuY29tL2NvbnRlbnQvZGVm YXVsdC5hc3B4P2M9YmImYW1wO2w9ZW4mYW1wO3M9Z2VuXCI+QmFyYmFkb3M8L29w dGlvbj4iDQoJCSsgIjxvcHRpb24gdmFsdWU9XCJodHRwOi8vd3d3LmRlbGwuY29t L2NvbnRlbnQvZGVmYXVsdC5hc3B4P2M9YnkmYW1wO2w9ZW4mYW1wO3M9Z2VuXCI+ QmVsYXJ1czwvb3B0aW9uPiINCgkJKyAiPG9wdGlvbiB2YWx1ZT1cImh0dHA6Ly93 d3cuZGVsbC5jb20vY29udGVudC9kZWZhdWx0LmFzcHg/Yz1iZSZhbXA7bD1ubCZh bXA7cz1nZW5cIj5CZWxnaXVtPC9vcHRpb24+Ig0KCQkrICI8b3B0aW9uIHZhbHVl PVwiaHR0cDovL3d3dy5kZWxsLmNvbS9jb250ZW50L2RlZmF1bHQuYXNweD9jPWJ6 JmFtcDtsPWVuJmFtcDtzPWdlblwiPkJlbGl6ZTwvb3B0aW9uPiINCgkJKyAiPG9w dGlvbiB2YWx1ZT1cImh0dHA6Ly93d3cuZGVsbC5jb20vY29udGVudC9kZWZhdWx0 LmFzcHg/Yz1iaiZhbXA7bD1lbiZhbXA7cz1nZW5cIj5CZW5pbjwvb3B0aW9uPiIN CgkJKyAiPG9wdGlvbiB2YWx1ZT1cImh0dHA6Ly93d3cuZGVsbC5jb20vY29udGVu dC9kZWZhdWx0LmFzcHg/Yz1ibSZhbXA7bD1lbiZhbXA7cz1nZW5cIj5CZXJtdWRh PC9vcHRpb24+Ig0KCQkrICI8b3B0aW9uIHZhbHVlPVwiaHR0cDovL3d3dy5kZWxs LmNvbS9jb250ZW50L2RlZmF1bHQuYXNweD9jPWJvJmFtcDtsPWVzJmFtcDtzPWdl blwiPkJvbGl2aWE8L29wdGlvbj4iDQoJCSsgIjxvcHRpb24gdmFsdWU9XCJodHRw Oi8vd3d3LmRlbGwuY29tL2NvbnRlbnQvZGVmYXVsdC5hc3B4P2M9YmEmYW1wO2w9 ZW4mYW1wO3M9Z2VuXCI+Qm9zbmlhLUhlcnplZ292aW5hPC9vcHRpb24+Ig0KCQkr ICI8b3B0aW9uIHZhbHVlPVwiaHR0cDovL3d3dy5kZWxsLmNvbS9jb250ZW50L2Rl ZmF1bHQuYXNweD9jPWJ3JmFtcDtsPWVuJmFtcDtzPWdlblwiPkJvdHN3YW5hPC9v cHRpb24+Ig0KCQkrICI8b3B0aW9uIHZhbHVlPVwiaHR0cDovL3d3dy5kZWxsLmNv bS9jb250ZW50L2RlZmF1bHQuYXNweD9jPWJyJmFtcDtsPXB0JmFtcDtzPWdlblwi PkJyYXppbDwvb3B0aW9uPiINCgkJKyAiPG9wdGlvbiB2YWx1ZT1cImh0dHA6Ly93 d3cuZGVsbC5jb20vY29udGVudC9kZWZhdWx0LmFzcHg/Yz12ZyZhbXA7bD1lbiZh bXA7cz1nZW5cIj5Ccml0aXNoIFZpcmdpbiBJc2xhbmRzPC9vcHRpb24+Ig0KCQkr ICI8b3B0aW9uIHZhbHVlPVwiaHR0cDovL3d3dy5kZWxsLmNvbS9jb250ZW50L2Rl ZmF1bHQuYXNweD9jPWJnJmFtcDtsPWVuJmFtcDtzPWdlblwiPkJ1bGdhcmlhPC9v cHRpb24+Ig0KCQkrICI8b3B0aW9uIHZhbHVlPVwiaHR0cDovL3d3dy5kZWxsLmNv bS9jb250ZW50L2RlZmF1bHQuYXNweD9jPWJmJmFtcDtsPWVuJmFtcDtzPWdlblwi PkJ1cmtpbmEgRmFzbzwvb3B0aW9uPiINCgkJKyAiPG9wdGlvbiB2YWx1ZT1cImh0 dHA6Ly93d3cuZGVsbC5jb20vY29udGVudC9kZWZhdWx0LmFzcHg/Yz1iaSZhbXA7 bD1lbiZhbXA7cz1nZW5cIj5CdXJ1bmRpPC9vcHRpb24+Ig0KCQkrICI8b3B0aW9u IHZhbHVlPVwiaHR0cDovL3d3dy5kZWxsLmNvbS9jb250ZW50L2RlZmF1bHQuYXNw eD9jPWNtJmFtcDtsPWVuJmFtcDtzPWdlblwiPkNhbWVyb29uPC9vcHRpb24+Ig0K CQkrICI8b3B0aW9uIHZhbHVlPVwiaHR0cDovL3d3dy5kZWxsLmNvbS9jb250ZW50 L2RlZmF1bHQuYXNweD9jPWNhJmFtcDtsPWVuJmFtcDtzPWdlblwiPkNhbmFkYTwv b3B0aW9uPiINCgkJKyAiPG9wdGlvbiB2YWx1ZT1cImh0dHA6Ly93d3cuZGVsbC5j b20vY29udGVudC9kZWZhdWx0LmFzcHg/Yz1jdiZhbXA7bD1lbiZhbXA7cz1nZW5c Ij5DYXBlIFZlcmRlPC9vcHRpb24+Ig0KCQkrICI8b3B0aW9uIHZhbHVlPVwiaHR0 cDovL3d3dy5kZWxsLmNvbS9jb250ZW50L2RlZmF1bHQuYXNweD9jPWt5JmFtcDts PWVuJmFtcDtzPWdlblwiPkNheW1hbiBJc2xhbmRzPC9vcHRpb24+Ig0KCQkrICI8 b3B0aW9uIHZhbHVlPVwiaHR0cDovL3d3dy5kZWxsLmNvbS9jb250ZW50L2RlZmF1 bHQuYXNweD9jPWNmJmFtcDtsPWVuJmFtcDtzPWdlblwiPkNlbnRyYWwgQWZyaWNh biBSZXB1YmxpYzwvb3B0aW9uPiINCgkJKyAiPG9wdGlvbiB2YWx1ZT1cImh0dHA6 Ly93d3cuZGVsbC5jb20vY29udGVudC9kZWZhdWx0LmFzcHg/Yz10ZCZhbXA7bD1l biZhbXA7cz1nZW5cIj5DaGFkPC9vcHRpb24+Ig0KCQkrICI8b3B0aW9uIHZhbHVl PVwiaHR0cDovL3d3dy5kZWxsLmNvbS9jb250ZW50L2RlZmF1bHQuYXNweD9jPWNs JmFtcDtsPWVzJmFtcDtzPWdlblwiPkNoaWxlPC9vcHRpb24+Ig0KCQkrICI8b3B0 aW9uIHZhbHVlPVwiaHR0cDovL3d3dy5kZWxsLmNvbS9jb250ZW50L2RlZmF1bHQu YXNweD9jPWNuJmFtcDtsPXpoJmFtcDtzPWdlblwiPkNoaW5hPC9vcHRpb24+Ig0K CQkrICI8b3B0aW9uIHZhbHVlPVwiaHR0cDovL3d3dy5kZWxsLmNvbS9jb250ZW50 L2RlZmF1bHQuYXNweD9jPXJzJmFtcDtsPXJ1JmFtcDtzPWdlblwiPkNJUzwvb3B0 aW9uPiINCgkJKyAiPG9wdGlvbiB2YWx1ZT1cImh0dHA6Ly93d3cuZGVsbC5jb20v Y29udGVudC9kZWZhdWx0LmFzcHg/Yz1jbyZhbXA7bD1lcyZhbXA7cz1nZW5cIj5D b2xvbWJpYTwvb3B0aW9uPiINCgkJKyAiPG9wdGlvbiB2YWx1ZT1cImh0dHA6Ly93 d3cuZGVsbC5jb20vY29udGVudC9kZWZhdWx0LmFzcHg/Yz1rbSZhbXA7bD1lbiZh bXA7cz1nZW5cIj5Db21vcm9zPC9vcHRpb24+Ig0KCQkrICI8b3B0aW9uIHZhbHVl PVwiaHR0cDovL3d3dy5kZWxsLmNvbS9jb250ZW50L2RlZmF1bHQuYXNweD9jPWNn JmFtcDtsPWZyJmFtcDtzPWdlblwiPkNvbmdvPC9vcHRpb24+Ig0KCQkrICI8b3B0 aW9uIHZhbHVlPVwiaHR0cDovL3d3dy5kZWxsLmNvbS9jb250ZW50L2RlZmF1bHQu YXNweD9jPWNyJmFtcDtsPWVzJmFtcDtzPWdlblwiPkNvc3RhIFJpY2E8L29wdGlv bj4iDQoJCSsgIjxvcHRpb24gdmFsdWU9XCJodHRwOi8vd3d3LmRlbGwuY29tL2Nv bnRlbnQvZGVmYXVsdC5hc3B4P2M9aHImYW1wO2w9ZW4mYW1wO3M9Z2VuXCI+Q3Jv YXRpYTwvb3B0aW9uPiINCgkJKyAiPG9wdGlvbiB2YWx1ZT1cImh0dHA6Ly93d3cu ZGVsbC5jb20vY29udGVudC9kZWZhdWx0LmFzcHg/Yz1jeSZhbXA7bD1lbiZhbXA7 cz1nZW5cIj5DeXBydXM8L29wdGlvbj4iDQoJCSsgIjxvcHRpb24gdmFsdWU9XCJo dHRwOi8vd3d3LmRlbGwuY29tL2NvbnRlbnQvZGVmYXVsdC5hc3B4P2M9Y3omYW1w O2w9Y3MmYW1wO3M9Z2VuXCI+Q3plY2ggUmVwdWJsaWM8L29wdGlvbj4iDQoJCSsg IjxvcHRpb24gdmFsdWU9XCJodHRwOi8vd3d3LmRlbGwuY29tL2NvbnRlbnQvZGVm YXVsdC5hc3B4P2M9Y2QmYW1wO2w9ZnImYW1wO3M9Z2VuXCI+RGVtb2NyYXRpYyBS ZXB1YmxpYyBvZiB0aGUgQ29uZ288L29wdGlvbj4iDQoJCSsgIjxvcHRpb24gdmFs dWU9XCJodHRwOi8vd3d3LmRlbGwuY29tL2NvbnRlbnQvZGVmYXVsdC5hc3B4P2M9 ZGsmYW1wO2w9ZGEmYW1wO3M9Z2VuXCI+RGVubWFyazwvb3B0aW9uPiINCgkJKyAi PG9wdGlvbiB2YWx1ZT1cImh0dHA6Ly93d3cuZGVsbC5jb20vY29udGVudC9kZWZh dWx0LmFzcHg/Yz1kaiZhbXA7bD1lbiZhbXA7cz1nZW5cIj5Eamlib3V0aTwvb3B0 aW9uPiINCgkJKyAiPG9wdGlvbiB2YWx1ZT1cImh0dHA6Ly93d3cuZGVsbC5jb20v Y29udGVudC9kZWZhdWx0LmFzcHg/Yz1kbSZhbXA7bD1lbiZhbXA7cz1nZW5cIj5E b21pbmljYTwvb3B0aW9uPiINCgkJKyAiPG9wdGlvbiB2YWx1ZT1cImh0dHA6Ly93 d3cuZGVsbC5jb20vY29udGVudC9kZWZhdWx0LmFzcHg/Yz1kbyZhbXA7bD1lcyZh bXA7cz1nZW5cIj5Eb21pbmljYW4gUmVwdWJsaWM8L29wdGlvbj4iDQoJCSsgIjxv cHRpb24gdmFsdWU9XCJodHRwOi8vd3d3LmRlbGwuY29tL2NvbnRlbnQvZGVmYXVs dC5hc3B4P2M9ZWMmYW1wO2w9ZXMmYW1wO3M9Z2VuXCI+RWN1YWRvcjwvb3B0aW9u PiINCgkJKyAiPG9wdGlvbiB2YWx1ZT1cImh0dHA6Ly93d3cuZGVsbC5jb20vY29u dGVudC9kZWZhdWx0LmFzcHg/Yz1lZyZhbXA7bD1lbiZhbXA7cz1nZW5cIj5FZ3lw dDwvb3B0aW9uPiINCgkJKyAiPG9wdGlvbiB2YWx1ZT1cImh0dHA6Ly93d3cuZGVs bC5jb20vY29udGVudC9kZWZhdWx0LmFzcHg/Yz1zdiZhbXA7bD1lcyZhbXA7cz1n ZW5cIj5FbCBTYWx2YWRvcjwvb3B0aW9uPiINCgkJKyAiPG9wdGlvbiB2YWx1ZT1c Imh0dHA6Ly93d3cuZGVsbC5jb20vY29udGVudC9kZWZhdWx0LmFzcHg/Yz1ncSZh bXA7bD1lbiZhbXA7cz1nZW5cIj5FcXVhdG9yaWFsIEd1aW5lYTwvb3B0aW9uPiIN CgkJKyAiPG9wdGlvbiB2YWx1ZT1cImh0dHA6Ly93d3cuZGVsbC5jb20vY29udGVu dC9kZWZhdWx0LmFzcHg/Yz1lZSZhbXA7bD1lbiZhbXA7cz1nZW5cIj5Fc3Rvbmlh PC9vcHRpb24+Ig0KCQkrICI8b3B0aW9uIHZhbHVlPVwiaHR0cDovL3d3dy5kZWxs LmNvbS9jb250ZW50L2RlZmF1bHQuYXNweD9jPWV0JmFtcDtsPWVuJmFtcDtzPWdl blwiPkV0aGlvcGlhPC9vcHRpb24+Ig0KCQkrICI8b3B0aW9uIHZhbHVlPVwiaHR0 cDovL3d3dy5kZWxsLmNvbS9jb250ZW50L2RlZmF1bHQuYXNweD9jPWZpJmFtcDts PWZpJmFtcDtzPWdlblwiPkZpbmxhbmQ8L29wdGlvbj4iDQoJCSsgIjxvcHRpb24g dmFsdWU9XCJodHRwOi8vd3d3LmRlbGwuY29tL2NvbnRlbnQvZGVmYXVsdC5hc3B4 P2M9ZnImYW1wO2w9ZnImYW1wO3M9Z2VuXCI+RnJhbmNlPC9vcHRpb24+Ig0KCQkr ICI8b3B0aW9uIHZhbHVlPVwiaHR0cDovL3d3dy5kZWxsLmNvbS9jb250ZW50L2Rl ZmF1bHQuYXNweD9jPWdmJmFtcDtsPWVuJmFtcDtzPWdlblwiPkZyZW5jaCBHdWlh bmE8L29wdGlvbj4iDQoJCSsgIjxvcHRpb24gdmFsdWU9XCJodHRwOi8vd3d3LmRl bGwuY29tL2NvbnRlbnQvZGVmYXVsdC5hc3B4P2M9Zm8mYW1wO2w9ZW4mYW1wO3M9 YnNkXCI+RnJlbmNoIE92ZXJzZWFzIFRlcnJpdG9yaWVzPC9vcHRpb24+Ig0KCQkr ICI8b3B0aW9uIHZhbHVlPVwiaHR0cDovL3d3dy5kZWxsLmNvbS9jb250ZW50L2Rl ZmF1bHQuYXNweD9jPXBmJmFtcDtsPWVuJmFtcDtzPWdlblwiPkZyZW5jaCBQb2x5 bmVzaWE8L29wdGlvbj4iDQoJCSsgIjxvcHRpb24gdmFsdWU9XCJodHRwOi8vd3d3 LmRlbGwuY29tL2NvbnRlbnQvZGVmYXVsdC5hc3B4P2M9Z2EmYW1wO2w9ZnImYW1w O3M9Z2VuXCI+R2Fib248L29wdGlvbj4iDQoJCSsgIjxvcHRpb24gdmFsdWU9XCJo dHRwOi8vd3d3LmRlbGwuY29tL2NvbnRlbnQvZGVmYXVsdC5hc3B4P2M9Z20mYW1w O2w9ZW4mYW1wO3M9Z2VuXCI+R2FtYmlhPC9vcHRpb24+Ig0KCQkrICI8b3B0aW9u IHZhbHVlPVwiaHR0cDovL3d3dy5kZWxsLmNvbS9jb250ZW50L2RlZmF1bHQuYXNw eD9jPWdlJmFtcDtsPWVuJmFtcDtzPWdlblwiPkdlb3JnaWE8L29wdGlvbj4iDQoJ CSsgIjxvcHRpb24gdmFsdWU9XCJodHRwOi8vd3d3LmRlbGwuY29tL2NvbnRlbnQv ZGVmYXVsdC5hc3B4P2M9ZGUmYW1wO2w9ZGUmYW1wO3M9Z2VuXCI+R2VybWFueTwv b3B0aW9uPiINCgkJKyAiPG9wdGlvbiB2YWx1ZT1cImh0dHA6Ly93d3cuZGVsbC5j b20vY29udGVudC9kZWZhdWx0LmFzcHg/Yz1naCZhbXA7bD1lbiZhbXA7cz1nZW5c Ij5HaGFuYTwvb3B0aW9uPiINCgkJKyAiPG9wdGlvbiB2YWx1ZT1cImh0dHA6Ly93 d3cuZGVsbC5jb20vY29udGVudC9kZWZhdWx0LmFzcHg/Yz1nciZhbXA7bD1lbCZh bXA7cz1nZW5cIj5HcmVlY2U8L29wdGlvbj4iDQoJCSsgIjxvcHRpb24gdmFsdWU9 XCJodHRwOi8vd3d3LmRlbGwuY29tL2NvbnRlbnQvZGVmYXVsdC5hc3B4P2M9Z2Qm YW1wO2w9ZW4mYW1wO3M9Z2VuXCI+R3JlbmFkYTwvb3B0aW9uPiINCgkJKyAiPG9w dGlvbiB2YWx1ZT1cImh0dHA6Ly93d3cuZGVsbC5jb20vY29udGVudC9kZWZhdWx0 LmFzcHg/Yz1ncCZhbXA7bD1lbiZhbXA7cz1nZW5cIj5HdWFkZWxvdXBlPC9vcHRp b24+Ig0KCQkrICI8b3B0aW9uIHZhbHVlPVwiaHR0cDovL3d3dy5kZWxsLmNvbS9j b250ZW50L2RlZmF1bHQuYXNweD9jPWd0JmFtcDtsPWVzJmFtcDtzPWdlblwiPkd1 YXRlbWFsYTwvb3B0aW9uPiINCgkJKyAiPG9wdGlvbiB2YWx1ZT1cImh0dHA6Ly93 d3cuZGVsbC5jb20vY29udGVudC9kZWZhdWx0LmFzcHg/Yz1nbiZhbXA7bD1lbiZh bXA7cz1nZW5cIj5HdWluZWE8L29wdGlvbj4iDQoJCSsgIjxvcHRpb24gdmFsdWU9 XCJodHRwOi8vd3d3LmRlbGwuY29tL2NvbnRlbnQvZGVmYXVsdC5hc3B4P2M9Z3km YW1wO2w9ZW4mYW1wO3M9Z2VuXCI+R3V5YW5hPC9vcHRpb24+Ig0KCQkrICI8b3B0 aW9uIHZhbHVlPVwiaHR0cDovL3d3dy5kZWxsLmNvbS9jb250ZW50L2RlZmF1bHQu YXNweD9jPWh0JmFtcDtsPWVuJmFtcDtzPWdlblwiPkhhaXRpPC9vcHRpb24+Ig0K CQkrICI8b3B0aW9uIHZhbHVlPVwiaHR0cDovL3d3dy5kZWxsLmNvbS9jb250ZW50 L2RlZmF1bHQuYXNweD9jPWhuJmFtcDtsPWVzJmFtcDtzPWdlblwiPkhvbmR1cmFz PC9vcHRpb24+Ig0KCQkrICI8b3B0aW9uIHZhbHVlPVwiaHR0cDovL3d3dy5kZWxs LmNvbS9jb250ZW50L2RlZmF1bHQuYXNweD9jPWhrJmFtcDtsPXpoJmFtcDtzPWdl blwiPkhvbmcgS29uZzwvb3B0aW9uPiINCgkJKyAiPG9wdGlvbiB2YWx1ZT1cImh0 dHA6Ly93d3cuZGVsbC5jb20vY29udGVudC9kZWZhdWx0LmFzcHg/Yz1odSZhbXA7 bD1odSZhbXA7cz1nZW5cIj5IdW5nYXJ5PC9vcHRpb24+Ig0KCQkrICI8b3B0aW9u IHZhbHVlPVwiaHR0cDovL3d3dy5kZWxsLmNvbS9jb250ZW50L2RlZmF1bHQuYXNw eD9jPWlzJmFtcDtsPWVuJmFtcDtzPWdlblwiPkljZWxhbmQ8L29wdGlvbj4iDQoJ CSsgIjxvcHRpb24gdmFsdWU9XCJodHRwOi8vd3d3LmRlbGwuY29tL2NvbnRlbnQv ZGVmYXVsdC5hc3B4P2M9aW4mYW1wO2w9ZW4mYW1wO3M9Z2VuXCI+SW5kaWE8L29w dGlvbj4iDQoJCSsgIjxvcHRpb24gdmFsdWU9XCJodHRwOi8vd3d3LmRlbGwuY29t L2NvbnRlbnQvZGVmYXVsdC5hc3B4P2M9aWQmYW1wO2w9ZW4mYW1wO3M9Z2VuXCI+ SW5kb25lc2lhPC9vcHRpb24+Ig0KCQkrICI8b3B0aW9uIHZhbHVlPVwiaHR0cDov L3d3dy5kZWxsLmNvbS9jb250ZW50L2RlZmF1bHQuYXNweD9jPWllJmFtcDtsPWVu JmFtcDtzPWdlblwiPklyZWxhbmQ8L29wdGlvbj4iDQoJCSsgIjxvcHRpb24gdmFs dWU9XCJodHRwOi8vd3d3LmRlbGwuY29tL2NvbnRlbnQvZGVmYXVsdC5hc3B4P2M9 aWwmYW1wO2w9aGUmYW1wO3M9Z2VuXCI+SXNyYWVsPC9vcHRpb24+Ig0KCQkrICI8 b3B0aW9uIHZhbHVlPVwiaHR0cDovL3d3dy5kZWxsLmNvbS9jb250ZW50L2RlZmF1 bHQuYXNweD9jPWl0JmFtcDtsPWl0JmFtcDtzPWdlblwiPkl0YWx5PC9vcHRpb24+ Ig0KCQkrICI8b3B0aW9uIHZhbHVlPVwiaHR0cDovL3d3dy5kZWxsLmNvbS9jb250 ZW50L2RlZmF1bHQuYXNweD9jPWNpJmFtcDtsPWVuJmFtcDtzPWdlblwiPkl2b3J5 IENvYXN0IChDb3RlIEQnSXZvaXJlKTwvb3B0aW9uPiINCgkJKyAiPG9wdGlvbiB2 YWx1ZT1cImh0dHA6Ly93d3cuZGVsbC5jb20vY29udGVudC9kZWZhdWx0LmFzcHg/ Yz1qbSZhbXA7bD1lbiZhbXA7cz1nZW5cIj5KYW1haWNhPC9vcHRpb24+Ig0KCQkr ICI8b3B0aW9uIHZhbHVlPVwiaHR0cDovL3d3dy5kZWxsLmNvbS9jb250ZW50L2Rl ZmF1bHQuYXNweD9jPWpwJmFtcDtsPWphJmFtcDtzPWdlblwiPkphcGFuPC9vcHRp b24+Ig0KCQkrICI8b3B0aW9uIHZhbHVlPVwiaHR0cDovL3d3dy5kZWxsLmNvbS9j b250ZW50L2RlZmF1bHQuYXNweD9jPWpvJmFtcDtsPWVuJmFtcDtzPWdlblwiPkpv cmRhbjwvb3B0aW9uPiINCgkJKyAiPG9wdGlvbiB2YWx1ZT1cImh0dHA6Ly93d3cu ZGVsbC5jb20vY29udGVudC9kZWZhdWx0LmFzcHg/Yz1reiZhbXA7bD1lbiZhbXA7 cz1nZW5cIj5LYXpha2hzdGFuPC9vcHRpb24+Ig0KCQkrICI8b3B0aW9uIHZhbHVl PVwiaHR0cDovL3d3dy5kZWxsLmNvbS9jb250ZW50L2RlZmF1bHQuYXNweD9jPWtl JmFtcDtsPWVuJmFtcDtzPWdlblwiPktlbnlhPC9vcHRpb24+Ig0KCQkrICI8b3B0 aW9uIHZhbHVlPVwiaHR0cDovL3d3dy5kZWxsLmNvbS9jb250ZW50L2RlZmF1bHQu YXNweD9jPWtyJmFtcDtsPWtvJmFtcDtzPWdlblwiPktvcmVhPC9vcHRpb24+Ig0K CQkrICI8b3B0aW9uIHZhbHVlPVwiaHR0cDovL3d3dy5kZWxsLmNvbS9jb250ZW50 L2RlZmF1bHQuYXNweD9jPWt3JmFtcDtsPWVuJmFtcDtzPWdlblwiPkt1d2FpdDwv b3B0aW9uPiINCgkJKyAiPG9wdGlvbiB2YWx1ZT1cImh0dHA6Ly93d3cuZGVsbC5j b20vY29udGVudC9kZWZhdWx0LmFzcHg/Yz1rZyZhbXA7bD1lbiZhbXA7cz1nZW5c Ij5LeXJneXpzdGFuPC9vcHRpb24+Ig0KCQkrICI8b3B0aW9uIHZhbHVlPVwiaHR0 cDovL3d3dy5kZWxsLmNvbS9jb250ZW50L2RlZmF1bHQuYXNweD9jPWxhJmFtcDts PWVzJmFtcDtzPWdlblwiPkxhdGluIEFtZXJpY2EgJmFtcDsgQ2FyaWJiZWFuPC9v cHRpb24+Ig0KCQkrICI8b3B0aW9uIHZhbHVlPVwiaHR0cDovL3d3dy5kZWxsLmNv bS9jb250ZW50L2RlZmF1bHQuYXNweD9jPWx2JmFtcDtsPWVuJmFtcDtzPWdlblwi PkxhdHZpYTwvb3B0aW9uPiINCgkJKyAiPG9wdGlvbiB2YWx1ZT1cImh0dHA6Ly93 d3cuZGVsbC5jb20vY29udGVudC9kZWZhdWx0LmFzcHg/Yz1sYiZhbXA7bD1lbiZh bXA7cz1nZW5cIj5MZWJhbm9uPC9vcHRpb24+Ig0KCQkrICI8b3B0aW9uIHZhbHVl PVwiaHR0cDovL3d3dy5kZWxsLmNvbS9jb250ZW50L2RlZmF1bHQuYXNweD9jPWxz JmFtcDtsPWVuJmFtcDtzPWdlblwiPkxlc290aG88L29wdGlvbj4iDQoJCSsgIjxv cHRpb24gdmFsdWU9XCJodHRwOi8vd3d3LmRlbGwuY29tL2NvbnRlbnQvZGVmYXVs dC5hc3B4P2M9bHImYW1wO2w9ZW4mYW1wO3M9Z2VuXCI+TGliZXJpYTwvb3B0aW9u PiINCgkJKyAiPG9wdGlvbiB2YWx1ZT1cImh0dHA6Ly93d3cuZGVsbC5jb20vY29u dGVudC9kZWZhdWx0LmFzcHg/Yz1seSZhbXA7bD1lbiZhbXA7cz1nZW5cIj5MaWJ5 YTwvb3B0aW9uPiINCgkJKyAiPG9wdGlvbiB2YWx1ZT1cImh0dHA6Ly93d3cuZGVs bC5jb20vY29udGVudC9kZWZhdWx0LmFzcHg/Yz1sdCZhbXA7bD1lbiZhbXA7cz1n ZW5cIj5MaXRodWFuaWE8L29wdGlvbj4iDQoJCSsgIjxvcHRpb24gdmFsdWU9XCJo dHRwOi8vd3d3LmRlbGwuY29tL2NvbnRlbnQvZGVmYXVsdC5hc3B4P2M9bHUmYW1w O2w9ZnImYW1wO3M9cGFkXCI+THV4ZW1ib3VyZzwvb3B0aW9uPiINCgkJKyAiPG9w dGlvbiB2YWx1ZT1cImh0dHA6Ly93d3cuZGVsbC5jb20vY29udGVudC9kZWZhdWx0 LmFzcHg/Yz1tayZhbXA7bD1lbiZhbXA7cz1nZW5cIj5NYWNlZG9uaWE8L29wdGlv bj4iDQoJCSsgIjxvcHRpb24gdmFsdWU9XCJodHRwOi8vd3d3LmRlbGwuY29tL2Nv bnRlbnQvZGVmYXVsdC5hc3B4P2M9bWcmYW1wO2w9ZW4mYW1wO3M9Z2VuXCI+TWFk YWdhc2Nhcjwvb3B0aW9uPiINCgkJKyAiPG9wdGlvbiB2YWx1ZT1cImh0dHA6Ly93 d3cuZGVsbC5jb20vY29udGVudC9kZWZhdWx0LmFzcHg/Yz1tdyZhbXA7bD1lbiZh bXA7cz1nZW5cIj5NYWxhd2k8L29wdGlvbj4iDQoJCSsgIjxvcHRpb24gdmFsdWU9 XCJodHRwOi8vd3d3LmRlbGwuY29tL2NvbnRlbnQvZGVmYXVsdC5hc3B4P2M9bXkm YW1wO2w9ZW4mYW1wO3M9Z2VuXCI+TWFsYXlzaWE8L29wdGlvbj4iDQoJCSsgIjxv cHRpb24gdmFsdWU9XCJodHRwOi8vd3d3LmRlbGwuY29tL2NvbnRlbnQvZGVmYXVs dC5hc3B4P2M9bWwmYW1wO2w9ZW4mYW1wO3M9Z2VuXCI+TWFsaTwvb3B0aW9uPiIN CgkJKyAiPG9wdGlvbiB2YWx1ZT1cImh0dHA6Ly93d3cuZGVsbC5jb20vY29udGVu dC9kZWZhdWx0LmFzcHg/Yz1tdCZhbXA7bD1lbiZhbXA7cz1nZW5cIj5NYWx0YTwv b3B0aW9uPiINCgkJKyAiPG9wdGlvbiB2YWx1ZT1cImh0dHA6Ly93d3cuZGVsbC5j b20vY29udGVudC9kZWZhdWx0LmFzcHg/Yz1tcSZhbXA7bD1lbiZhbXA7cz1nZW5c Ij5NYXJ0aW5pcXVlPC9vcHRpb24+Ig0KCQkrICI8b3B0aW9uIHZhbHVlPVwiaHR0 cDovL3d3dy5kZWxsLmNvbS9jb250ZW50L2RlZmF1bHQuYXNweD9jPW1yJmFtcDts PWVuJmFtcDtzPWdlblwiPk1hdXJpdGFuaWE8L29wdGlvbj4iDQoJCSsgIjxvcHRp b24gdmFsdWU9XCJodHRwOi8vd3d3LmRlbGwuY29tL2NvbnRlbnQvZGVmYXVsdC5h c3B4P2M9bXUmYW1wO2w9ZW4mYW1wO3M9Z2VuXCI+TWF1cml0aXVzPC9vcHRpb24+ Ig0KCQkrICI8b3B0aW9uIHZhbHVlPVwiaHR0cDovL3d3dy5kZWxsLmNvbS9jb250 ZW50L2RlZmF1bHQuYXNweD9jPXl0JmFtcDtsPWVuJmFtcDtzPWdlblwiPk1heW90 dGU8L29wdGlvbj4iDQoJCSsgIjxvcHRpb24gdmFsdWU9XCJodHRwOi8vd3d3LmRl bGwuY29tL2NvbnRlbnQvZGVmYXVsdC5hc3B4P2M9bXgmYW1wO2w9ZXMmYW1wO3M9 Z2VuXCI+TWV4aWNvPC9vcHRpb24+Ig0KCQkrICI8b3B0aW9uIHZhbHVlPVwiaHR0 cDovL3d3dy5kZWxsLmNvbS9jb250ZW50L2RlZmF1bHQuYXNweD9jPWFlJmFtcDts PWVuJmFtcDtzPWdlblwiPk1pZGRsZSBFYXN0PC9vcHRpb24+Ig0KCQkrICI8b3B0 aW9uIHZhbHVlPVwiaHR0cDovL3d3dy5kZWxsLmNvbS9jb250ZW50L2RlZmF1bHQu YXNweD9jPW1kJmFtcDtsPWVuJmFtcDtzPWdlblwiPk1vbGRvdmE8L29wdGlvbj4i DQoJCSsgIjxvcHRpb24gdmFsdWU9XCJodHRwOi8vd3d3LmRlbGwuY29tL2NvbnRl bnQvZGVmYXVsdC5hc3B4P2M9Y3MmYW1wO2w9ZW4mYW1wO3M9Z2VuXCI+TW9udGVu ZWdybzwvb3B0aW9uPiINCgkJKyAiPG9wdGlvbiB2YWx1ZT1cImh0dHA6Ly93d3cu ZGVsbC5jb20vY29udGVudC9kZWZhdWx0LmFzcHg/Yz1tcyZhbXA7bD1lbiZhbXA7 cz1nZW5cIj5Nb250c2VycmF0PC9vcHRpb24+Ig0KCQkrICI8b3B0aW9uIHZhbHVl PVwiaHR0cDovL3d3dy5kZWxsLmNvbS9jb250ZW50L2RlZmF1bHQuYXNweD9jPW1h JmFtcDtsPWZyJmFtcDtzPWdlblwiPk1vcm9jY288L29wdGlvbj4iDQoJCSsgIjxv cHRpb24gdmFsdWU9XCJodHRwOi8vd3d3LmRlbGwuY29tL2NvbnRlbnQvZGVmYXVs dC5hc3B4P2M9bXomYW1wO2w9ZW4mYW1wO3M9Z2VuXCI+TW96YW1iaXF1ZTwvb3B0 aW9uPiINCgkJKyAiPG9wdGlvbiB2YWx1ZT1cImh0dHA6Ly93d3cuZGVsbC5jb20v Y29udGVudC9kZWZhdWx0LmFzcHg/Yz1uYSZhbXA7bD1lbiZhbXA7cz1nZW5cIj5O YW1pYmlhPC9vcHRpb24+Ig0KCQkrICI8b3B0aW9uIHZhbHVlPVwiaHR0cDovL3d3 dy5kZWxsLmNvbS9jb250ZW50L2RlZmF1bHQuYXNweD9jPW5sJmFtcDtsPW5sJmFt cDtzPWdlblwiPk5ldGhlcmxhbmRzPC9vcHRpb24+Ig0KCQkrICI8b3B0aW9uIHZh bHVlPVwiaHR0cDovL3d3dy5kZWxsLmNvbS9jb250ZW50L2RlZmF1bHQuYXNweD9j PWFuJmFtcDtsPWVuJmFtcDtzPWdlblwiPk5ldGhlcmxhbmRzIEFudGlsbGVzL0N1 cmEmIzIzMTthbzwvb3B0aW9uPiINCgkJKyAiPG9wdGlvbiB2YWx1ZT1cImh0dHA6 Ly93d3cuZGVsbC5jb20vY29udGVudC9kZWZhdWx0LmFzcHg/Yz1uYyZhbXA7bD1l biZhbXA7cz1nZW5cIj5OZXcgQ2FsZWRvbmlhPC9vcHRpb24+Ig0KCQkrICI8b3B0 aW9uIHZhbHVlPVwiaHR0cDovL3d3dy5kZWxsLmNvbS9jb250ZW50L2RlZmF1bHQu YXNweD9jPW56JmFtcDtsPWVuJmFtcDtzPWdlblwiPk5ldyBaZWFsYW5kPC9vcHRp b24+Ig0KCQkrICI8b3B0aW9uIHZhbHVlPVwiaHR0cDovL3d3dy5kZWxsLmNvbS9j b250ZW50L2RlZmF1bHQuYXNweD9jPW5pJmFtcDtsPWVzJmFtcDtzPWdlblwiPk5p Y2FyYWd1YTwvb3B0aW9uPiINCgkJKyAiPG9wdGlvbiB2YWx1ZT1cImh0dHA6Ly93 d3cuZGVsbC5jb20vY29udGVudC9kZWZhdWx0LmFzcHg/Yz1uZSZhbXA7bD1lbiZh bXA7cz1nZW5cIj5OaWdlcjwvb3B0aW9uPiINCgkJKyAiPG9wdGlvbiB2YWx1ZT1c Imh0dHA6Ly93d3cuZGVsbC5jb20vY29udGVudC9kZWZhdWx0LmFzcHg/Yz1uZyZh bXA7bD1lbiZhbXA7cz1nZW5cIj5OaWdlcmlhPC9vcHRpb24+Ig0KCQkrICI8b3B0 aW9uIHZhbHVlPVwiaHR0cDovL3d3dy5kZWxsLmNvbS9jb250ZW50L2RlZmF1bHQu YXNweD9jPW5vJmFtcDtsPW5vJmFtcDtzPWdlblwiPk5vcndheTwvb3B0aW9uPiIN CgkJKyAiPG9wdGlvbiB2YWx1ZT1cImh0dHA6Ly93d3cuZGVsbC5jb20vY29udGVu dC9kZWZhdWx0LmFzcHg/Yz1vbSZhbXA7bD1lbiZhbXA7cz1nZW5cIj5PbWFuPC9v cHRpb24+Ig0KCQkrICI8b3B0aW9uIHZhbHVlPVwiaHR0cDovL3d3dy5kZWxsLmNv bS9jb250ZW50L2RlZmF1bHQuYXNweD9jPXBrJmFtcDtsPWVuJmFtcDtzPWdlblwi PlBha2lzdGFuPC9vcHRpb24+Ig0KCQkrICI8b3B0aW9uIHZhbHVlPVwiaHR0cDov L3d3dy5kZWxsLmNvbS9jb250ZW50L2RlZmF1bHQuYXNweD9jPXBhJmFtcDtsPWVz JmFtcDtzPWdlblwiPlBhbmFtYTwvb3B0aW9uPiINCgkJKyAiPG9wdGlvbiB2YWx1 ZT1cImh0dHA6Ly93d3cuZGVsbC5jb20vY29udGVudC9kZWZhdWx0LmFzcHg/Yz1w eSZhbXA7bD1lcyZhbXA7cz1nZW5cIj5QYXJhZ3VheTwvb3B0aW9uPiINCgkJKyAi PG9wdGlvbiB2YWx1ZT1cImh0dHA6Ly93d3cuZGVsbC5jb20vY29udGVudC9kZWZh dWx0LmFzcHg/Yz1wZSZhbXA7bD1lcyZhbXA7cz1nZW5cIj5QZXJ1PC9vcHRpb24+ Ig0KCQkrICI8b3B0aW9uIHZhbHVlPVwiaHR0cDovL3d3dy5kZWxsLmNvbS9jb250 ZW50L2RlZmF1bHQuYXNweD9jPXBoJmFtcDtsPWVuJmFtcDtzPWdlblwiPlBoaWxp cHBpbmVzPC9vcHRpb24+Ig0KCQkrICI8b3B0aW9uIHZhbHVlPVwiaHR0cDovL3d3 dy5kZWxsLmNvbS9jb250ZW50L2RlZmF1bHQuYXNweD9jPXBsJmFtcDtsPXBsJmFt cDtzPWdlblwiPlBvbGFuZDwvb3B0aW9uPiINCgkJKyAiPG9wdGlvbiB2YWx1ZT1c Imh0dHA6Ly93d3cuZGVsbC5jb20vY29udGVudC9kZWZhdWx0LmFzcHg/Yz1wdCZh bXA7bD1wdCZhbXA7cz1nZW5cIj5Qb3J0dWdhbDwvb3B0aW9uPiINCgkJKyAiPG9w dGlvbiB2YWx1ZT1cImh0dHA6Ly93d3cuZGVsbC5jb20vY29udGVudC9kZWZhdWx0 LmFzcHg/Yz1wciZhbXA7bD1lbiZhbXA7cz1nZW5cIj5QdWVydG8gUmljbzwvb3B0 aW9uPiINCgkJKyAiPG9wdGlvbiB2YWx1ZT1cImh0dHA6Ly93d3cuZGVsbC5jb20v Y29udGVudC9kZWZhdWx0LmFzcHg/Yz1xYSZhbXA7bD1lbiZhbXA7cz1nZW5cIj5R YXRhcjwvb3B0aW9uPiINCgkJKyAiPG9wdGlvbiB2YWx1ZT1cImh0dHA6Ly93d3cu ZGVsbC5jb20vY29udGVudC9kZWZhdWx0LmFzcHg/Yz1yZSZhbXA7bD1lbiZhbXA7 cz1nZW5cIj5SZXVuaW9uPC9vcHRpb24+Ig0KCQkrICI8b3B0aW9uIHZhbHVlPVwi aHR0cDovL3d3dy5kZWxsLmNvbS9jb250ZW50L2RlZmF1bHQuYXNweD9jPXJvJmFt cDtsPXJvJmFtcDtzPWdlblwiPlJvbWFuaWE8L29wdGlvbj4iDQoJCSsgIjxvcHRp b24gdmFsdWU9XCJodHRwOi8vd3d3LmRlbGwuY29tL2NvbnRlbnQvZGVmYXVsdC5h c3B4P2M9cnUmYW1wO2w9cnUmYW1wO3M9Z2VuXCI+UnVzc2lhPC9vcHRpb24+Ig0K CQkrICI8b3B0aW9uIHZhbHVlPVwiaHR0cDovL3d3dy5kZWxsLmNvbS9jb250ZW50 L2RlZmF1bHQuYXNweD9jPXJ3JmFtcDtsPWVuJmFtcDtzPWdlblwiPlJ3YW5kYTwv b3B0aW9uPiINCgkJKyAiPG9wdGlvbiB2YWx1ZT1cImh0dHA6Ly93d3cuZGVsbC5j b20vY29udGVudC9kZWZhdWx0LmFzcHg/Yz1zYSZhbXA7bD1lbiZhbXA7cz1nZW5c Ij5TYXVkaSBBcmFiaWE8L29wdGlvbj4iDQoJCSsgIjxvcHRpb24gdmFsdWU9XCJo dHRwOi8vd3d3LmRlbGwuY29tL2NvbnRlbnQvZGVmYXVsdC5hc3B4P2M9c24mYW1w O2w9ZnImYW1wO3M9Z2VuXCI+U2VuZWdhbDwvb3B0aW9uPiINCgkJKyAiPG9wdGlv biB2YWx1ZT1cImh0dHA6Ly93d3cuZGVsbC5jb20vY29udGVudC9kZWZhdWx0LmFz cHg/Yz15dSZhbXA7bD1lbiZhbXA7cz1nZW5cIj5TZXJiaWE8L29wdGlvbj4iDQoJ CSsgIjxvcHRpb24gdmFsdWU9XCJodHRwOi8vd3d3LmRlbGwuY29tL2NvbnRlbnQv ZGVmYXVsdC5hc3B4P2M9c2MmYW1wO2w9ZW4mYW1wO3M9Z2VuXCI+U2V5Y2hlbGxl czwvb3B0aW9uPiINCgkJKyAiPG9wdGlvbiB2YWx1ZT1cImh0dHA6Ly93d3cuZGVs bC5jb20vY29udGVudC9kZWZhdWx0LmFzcHg/Yz1zbCZhbXA7bD1lbiZhbXA7cz1n ZW5cIj5TaWVycmEgTGVvbmU8L29wdGlvbj4iDQoJCSsgIjxvcHRpb24gdmFsdWU9 XCJodHRwOi8vd3d3LmRlbGwuY29tL2NvbnRlbnQvZGVmYXVsdC5hc3B4P2M9c2cm YW1wO2w9ZW4mYW1wO3M9Z2VuXCI+U2luZ2Fwb3JlPC9vcHRpb24+Ig0KCQkrICI8 b3B0aW9uIHZhbHVlPVwiaHR0cDovL3d3dy5kZWxsLmNvbS9jb250ZW50L2RlZmF1 bHQuYXNweD9jPXNrJmFtcDtsPXNrJmFtcDtzPWdlblwiPlNsb3Zha2lhPC9vcHRp b24+Ig0KCQkrICI8b3B0aW9uIHZhbHVlPVwiaHR0cDovL3d3dy5kZWxsLmNvbS9j b250ZW50L2RlZmF1bHQuYXNweD9jPXNpJmFtcDtsPWVuJmFtcDtzPWdlblwiPlNs b3ZlbmlhPC9vcHRpb24+Ig0KCQkrICI8b3B0aW9uIHZhbHVlPVwiaHR0cDovL3d3 dy5kZWxsLmNvbS9jb250ZW50L2RlZmF1bHQuYXNweD9jPXNvJmFtcDtsPWVuJmFt cDtzPWdlblwiPlNvbWFsaWE8L29wdGlvbj4iDQoJCSsgIjxvcHRpb24gdmFsdWU9 XCJodHRwOi8vd3d3LmRlbGwuY29tL2NvbnRlbnQvZGVmYXVsdC5hc3B4P2M9emEm YW1wO2w9ZW4mYW1wO3M9Z2VuXCI+U291dGggQWZyaWNhPC9vcHRpb24+Ig0KCQkr ICI8b3B0aW9uIHZhbHVlPVwiaHR0cDovL3d3dy5kZWxsLmNvbS9jb250ZW50L2Rl ZmF1bHQuYXNweD9jPWVzJmFtcDtsPWVzJmFtcDtzPWdlblwiPlNwYWluPC9vcHRp b24+Ig0KCQkrICI8b3B0aW9uIHZhbHVlPVwiaHR0cDovL3d3dy5kZWxsLmNvbS9j b250ZW50L2RlZmF1bHQuYXNweD9jPWtuJmFtcDtsPWVuJmFtcDtzPWdlblwiPlN0 LiBLaXR0cyAmYW1wOyBOZXZpczwvb3B0aW9uPiINCgkJKyAiPG9wdGlvbiB2YWx1 ZT1cImh0dHA6Ly93d3cuZGVsbC5jb20vY29udGVudC9kZWZhdWx0LmFzcHg/Yz1s YyZhbXA7bD1lbiZhbXA7cz1nZW5cIj5TdC4gTHVjaWE8L29wdGlvbj4iDQoJCSsg IjxvcHRpb24gdmFsdWU9XCJodHRwOi8vd3d3LmRlbGwuY29tL2NvbnRlbnQvZGVm YXVsdC5hc3B4P2M9dmMmYW1wO2w9ZW4mYW1wO3M9Z2VuXCI+U3QuIFZpbmNlbnQg JmFtcDsgR3JlbmFkaW5lczwvb3B0aW9uPiINCgkJKyAiPG9wdGlvbiB2YWx1ZT1c Imh0dHA6Ly93d3cuZGVsbC5jb20vY29udGVudC9kZWZhdWx0LmFzcHg/Yz1zciZh bXA7bD1lbiZhbXA7cz1nZW5cIj5TdXJpbmFtZTwvb3B0aW9uPiINCgkJKyAiPG9w dGlvbiB2YWx1ZT1cImh0dHA6Ly93d3cuZGVsbC5jb20vY29udGVudC9kZWZhdWx0 LmFzcHg/Yz1zeiZhbXA7bD1lbiZhbXA7cz1nZW5cIj5Td2F6aWxhbmQ8L29wdGlv bj4iDQoJCSsgIjxvcHRpb24gdmFsdWU9XCJodHRwOi8vd3d3LmRlbGwuY29tL2Nv bnRlbnQvZGVmYXVsdC5hc3B4P2M9c2UmYW1wO2w9c3YmYW1wO3M9Z2VuXCI+U3dl ZGVuPC9vcHRpb24+Ig0KCQkrICI8b3B0aW9uIHZhbHVlPVwiaHR0cDovL3d3dy5k ZWxsLmNvbS9jb250ZW50L2RlZmF1bHQuYXNweD9jPWNoJmFtcDtsPWRlJmFtcDtz PWdlblwiPlN3aXR6ZXJsYW5kPC9vcHRpb24+Ig0KCQkrICI8b3B0aW9uIHZhbHVl PVwiaHR0cDovL3d3dy5kZWxsLmNvbS9jb250ZW50L2RlZmF1bHQuYXNweD9jPXR3 JmFtcDtsPXpoJmFtcDtzPWdlblwiPlRhaXdhbjwvb3B0aW9uPiINCgkJKyAiPG9w dGlvbiB2YWx1ZT1cImh0dHA6Ly93d3cuZGVsbC5jb20vY29udGVudC9kZWZhdWx0 LmFzcHg/Yz10aiZhbXA7bD1lbiZhbXA7cz1nZW5cIj5UYWppa2lzdGFuPC9vcHRp b24+Ig0KCQkrICI8b3B0aW9uIHZhbHVlPVwiaHR0cDovL3d3dy5kZWxsLmNvbS9j b250ZW50L2RlZmF1bHQuYXNweD9jPXR6JmFtcDtsPWVuJmFtcDtzPWdlblwiPlRh bnphbmlhPC9vcHRpb24+Ig0KCQkrICI8b3B0aW9uIHZhbHVlPVwiaHR0cDovL3d3 dy5kZWxsLmNvbS9jb250ZW50L2RlZmF1bHQuYXNweD9jPXRoJmFtcDtsPWVuJmFt cDtzPWdlblwiPlRoYWlsYW5kPC9vcHRpb24+Ig0KCQkrICI8b3B0aW9uIHZhbHVl PVwiaHR0cDovL3d3dy5kZWxsLmNvbS9jb250ZW50L2RlZmF1bHQuYXNweD9jPXRn JmFtcDtsPWVuJmFtcDtzPWdlblwiPlRvZ288L29wdGlvbj4iDQoJCSsgIjxvcHRp b24gdmFsdWU9XCJodHRwOi8vd3d3LmRlbGwuY29tL2NvbnRlbnQvZGVmYXVsdC5h c3B4P2M9dHQmYW1wO2w9ZW4mYW1wO3M9Z2VuXCI+VHJpbmlkYWQgJmFtcDsgVG9i YWdvPC9vcHRpb24+Ig0KCQkrICI8b3B0aW9uIHZhbHVlPVwiaHR0cDovL3d3dy5k ZWxsLmNvbS9jb250ZW50L2RlZmF1bHQuYXNweD9jPXRuJmFtcDtsPWZyJmFtcDtz PWdlblwiPlR1bmlzaWE8L29wdGlvbj4iDQoJCSsgIjxvcHRpb24gdmFsdWU9XCJo dHRwOi8vd3d3LmRlbGwuY29tL2NvbnRlbnQvZGVmYXVsdC5hc3B4P2M9dHImYW1w O2w9dHImYW1wO3M9Z2VuXCI+VHVya2V5PC9vcHRpb24+Ig0KCQkrICI8b3B0aW9u IHZhbHVlPVwiaHR0cDovL3d3dy5kZWxsLmNvbS9jb250ZW50L2RlZmF1bHQuYXNw eD9jPXRtJmFtcDtsPWVuJmFtcDtzPWdlblwiPlR1cmttZW5pc3Rhbjwvb3B0aW9u PiINCgkJKyAiPG9wdGlvbiB2YWx1ZT1cImh0dHA6Ly93d3cuZGVsbC5jb20vY29u dGVudC9kZWZhdWx0LmFzcHg/Yz10YyZhbXA7bD1lbiZhbXA7cz1nZW5cIj5UdXJr cyAmYW1wOyBDYWljb3MgSXNsYW5kczwvb3B0aW9uPiINCgkJKyAiPG9wdGlvbiB2 YWx1ZT1cImh0dHA6Ly93d3cuZGVsbC5jb20vY29udGVudC9kZWZhdWx0LmFzcHg/ Yz11ZyZhbXA7bD1lbiZhbXA7cz1nZW5cIj5VZ2FuZGE8L29wdGlvbj4iDQoJCSsg IjxvcHRpb24gdmFsdWU9XCJodHRwOi8vd3d3LmRlbGwuY29tL2NvbnRlbnQvZGVm YXVsdC5hc3B4P2M9dWEmYW1wO2w9cnUmYW1wO3M9Z2VuXCI+VWtyYWluZTwvb3B0 aW9uPiINCgkJKyAiPG9wdGlvbiB2YWx1ZT1cImh0dHA6Ly93d3cuZGVsbC5jb20v Y29udGVudC9kZWZhdWx0LmFzcHg/Yz1tZSZhbXA7bD1lbiZhbXA7cz1nZW5cIj5V bml0ZWQgQXJhYiBFbWlyYXRlczwvb3B0aW9uPiINCgkJKyAiPG9wdGlvbiB2YWx1 ZT1cImh0dHA6Ly93d3cuZGVsbC5jb20vY29udGVudC9kZWZhdWx0LmFzcHg/Yz11 ayZhbXA7bD1lbiZhbXA7cz1nZW5cIj5Vbml0ZWQgS2luZ2RvbTwvb3B0aW9uPiIN CgkJKyAiPG9wdGlvbiBzZWxlY3RlZD1cInNlbGVjdGVkXCIgdmFsdWU9XCJodHRw Oi8vd3d3LmRlbGwuY29tL2NvbnRlbnQvZGVmYXVsdC5hc3B4P2M9dXMmYW1wO2w9 ZW4mYW1wO3M9Z2VuXCI+VW5pdGVkIFN0YXRlczwvb3B0aW9uPiINCgkJKyAiPG9w dGlvbiB2YWx1ZT1cImh0dHA6Ly93d3cuZGVsbC5jb20vY29udGVudC9kZWZhdWx0 LmFzcHg/Yz11eSZhbXA7bD1lcyZhbXA7cz1nZW5cIj5VcnVndWF5PC9vcHRpb24+ Ig0KCQkrICI8b3B0aW9uIHZhbHVlPVwiaHR0cDovL3d3dy5kZWxsLmNvbS9jb250 ZW50L2RlZmF1bHQuYXNweD9jPXZpJmFtcDtsPWVuJmFtcDtzPWdlblwiPlVTIFZp cmdpbiBJc2xhbmRzPC9vcHRpb24+Ig0KCQkrICI8b3B0aW9uIHZhbHVlPVwiaHR0 cDovL3d3dy5kZWxsLmNvbS9jb250ZW50L2RlZmF1bHQuYXNweD9jPXV6JmFtcDts PWVuJmFtcDtzPWdlblwiPlV6YmVraXN0YW48L29wdGlvbj4iDQoJCSsgIjxvcHRp b24gdmFsdWU9XCJodHRwOi8vd3d3LmRlbGwuY29tL2NvbnRlbnQvZGVmYXVsdC5h c3B4P2M9dmUmYW1wO2w9ZXMmYW1wO3M9Z2VuXCI+VmVuZXp1ZWxhPC9vcHRpb24+ Ig0KCQkrICI8b3B0aW9uIHZhbHVlPVwiaHR0cDovL3d3dy5kZWxsLmNvbS9jb250 ZW50L2RlZmF1bHQuYXNweD9jPXZuJmFtcDtsPWVuJmFtcDtzPWdlblwiPlZpZXRu YW08L29wdGlvbj4iDQoJCSsgIjxvcHRpb24gdmFsdWU9XCJodHRwOi8vd3d3LmRl bGwuY29tL2NvbnRlbnQvZGVmYXVsdC5hc3B4P2M9eWUmYW1wO2w9ZW4mYW1wO3M9 Z2VuXCI+WWVtZW48L29wdGlvbj4iDQoJCSsgIjxvcHRpb24gdmFsdWU9XCJodHRw Oi8vd3d3LmRlbGwuY29tL2NvbnRlbnQvZGVmYXVsdC5hc3B4P2M9em0mYW1wO2w9 ZW4mYW1wO3M9Z2VuXCI+WmFtYmlhPC9vcHRpb24+Ig0KCQkrICI8b3B0aW9uIHZh bHVlPVwiaHR0cDovL3d3dy5kZWxsLmNvbS9jb250ZW50L2RlZmF1bHQuYXNweD9j PXp3JmFtcDtsPWVuJmFtcDtzPWdlblwiPlppbWJhYndlPC9vcHRpb24+PC9zZWxl Y3Q+PC90ZD48L2Zvcm0+PC90cj48L3RhYmxlPjwvc3Bhbj48L3RkPjwvdHI+PC90 YWJsZT4iOw0KdmFyIG1fdG9wTGlua3MgPSAiPHRhYmxlIGFsaWduPVwicmlnaHRc IiBjZWxscGFkZGluZz1cIjBcIiBjZWxsc3BhY2luZz1cIjBcIiBib3JkZXI9XCIw XCI+PHRyPjx0ZCBWQUxJR049XCJib3R0b21cIiBXSURUSD1cIjVcIj48YSBjbGFz cz1cIm1oX3RvcGxpbmtcIiBocmVmPVwiaHR0cDovL3d3dy5kZWxsLmNvbS9jb250 ZW50L3RvcGljcy9nbG9iYWwuYXNweC9hYm91dF9kZWxsL2hvbWVfcGFnZS9hYm91 dF9kZWxsP2M9dXMmY3M9MTkmbD1lbiZzPWNvcnAmfmNrPW1uXCI+PGltZyBzcmM9 XCJodHRwOi8vaS5kZWxsLmNvbS9pbWFnZXMvZ2xvYmFsL2JyYW5kL3VpL3ByaW1h cnkuZ2lmXCIgd2lkdGg9XCIyMVwiIGhlaWdodD1cIjE3XCIgYWx0PVwiXCIgYm9y ZGVyPVwiMFwiIC8+PC9hPjwvdGQ+PHRkIHZhbGlnbj1cIm1pZGRsZVwiPjxhIGNs YXNzPVwibWhfdG9wbGlua1wiIGhyZWY9XCJodHRwOi8vd3d3LmRlbGwuY29tL2Nv bnRlbnQvdG9waWNzL2dsb2JhbC5hc3B4L2Fib3V0X2RlbGwvaG9tZV9wYWdlL2Fi b3V0X2RlbGw/Yz11cyZjcz0xOSZsPWVuJnM9Y29ycCZ+Y2s9bW5cIj5BYm91dCBE ZWxsPC9hPjwvdGQ+PC90cj48L3RhYmxlPiI7DQp2YXIgbV9sb2NhbGVTZWxlY3RM aXRlID0gIjxkaXYgY2xhc3M9XCJwYXJhX3NtYWxsXCIgc3R5bGU9XCJwYWRkaW5n LWJvdHRvbTo0cHhcIj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDs8YSBocmVmPVwiaHR0cDovL3d3dy5kZWxsLmNvbS9jb250ZW50L3B1YmxpYy9j aG9vc2Vjb3VudHJ5LmFzcHg/Yz11cyZsPWVuJnM9ZGhzJmNzPTE5XCI+Q2hvb3Nl IEEgQ291bnRyeS9SZWdpb248L2E+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7PHNwYW4gY2xhc3M9XCJjcnVtYnNlbFwiPkVuZ2xpc2g8L3NwYW4+ PC9kaXY+IjsNCmlmICggdHlwZW9mICggb25NZW51TG9hZCApICE9ICd1bmRlZmlu ZWQnKXtvbk1lbnVMb2FkICgpO30NCg== ------------KLmYUyxWijRzsm8UGCbJ8E--