<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>7951</bug_id>
          
          <creation_ts>2006-03-23 22:17:53 -0800</creation_ts>
          <short_desc>REGRESSION: Safari crashes when printing a google map w/directions</short_desc>
          <delta_ts>2006-04-09 16:46:11 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Printing</component>
          <version>420+</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://maps.google.com/maps?f=d&amp;hl=en&amp;saddr=94025&amp;daddr=10+market+st,+san+francisco</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Critical</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Trey Matteson">trey</reporter>
          <assigned_to name="Trey Matteson">trey</assigned_to>
          <cc>trey</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>37467</commentid>
    <comment_count>0</comment_count>
    <who name="Trey Matteson">trey</who>
    <bug_when>2006-03-23 22:17:53 -0800</bug_when>
    <thetext>Go to the URL above.  Print.  Hit Preview.  Crash with the backtrace below.

The bug is a little finnicky to repro because it relies on reuse of some freed memory.  On a different version of the app/OS, you may need to try a different source/destination for the directions, or try printing a few times to get it to croak.

#0  0x01b29f70 in WebCore::DataRef&lt;WebCore::StyleSurroundData&gt;::operator-&gt; (this=0x1c) at /Volumes/Whopper/WebKit/WebCore/rendering/DataRef.h:54
#1  0x01b2a08c in WebCore::RenderStyle::borderRight (this=0x0) at /Volumes/Whopper/WebKit/WebCore/rendering/render_style.h:1132
#2  0x019e29bc in WebCore::RenderTableCell::collapsedLeftBorder (this=0x122dd55c, rtl=false) at /Volumes/Whopper/WebKit/WebCore/rendering/RenderTableCell.cpp:238
#3  0x019e3d6c in WebCore::RenderTableCell::borderLeft (this=0x122dd55c) at /Volumes/Whopper/WebKit/WebCore/rendering/RenderTableCell.cpp:478
#4  0x019626f8 in WebCore::RenderBlock::calcMinMaxWidth (this=0x122dd55c) at /Volumes/Whopper/WebKit/WebCore/rendering/RenderBlock.cpp:2709
#5  0x019e5838 in WebCore::RenderTableCell::calcMinMaxWidth (this=0x122dd55c) at /Volumes/Whopper/WebKit/WebCore/rendering/RenderTableCell.cpp:88
#6  0x019ba488 in WebCore::RenderObject::recalcMinMaxWidths (this=0x122dd55c) at /Volumes/Whopper/WebKit/WebCore/rendering/RenderObject.cpp:2284
#7  0x019ba2a0 in WebCore::RenderObject::recalcMinMaxWidths (this=0x1260482c) at /Volumes/Whopper/WebKit/WebCore/rendering/RenderObject.cpp:2269
#8  0x019ba2a0 in WebCore::RenderObject::recalcMinMaxWidths (this=0x1260315c) at /Volumes/Whopper/WebKit/WebCore/rendering/RenderObject.cpp:2269
#9  0x019ba2a0 in WebCore::RenderObject::recalcMinMaxWidths (this=0x122fa5ac) at /Volumes/Whopper/WebKit/WebCore/rendering/RenderObject.cpp:2269
#10 0x019e7f0c in WebCore::RenderTable::recalcMinMaxWidths (this=0x122fa5ac) at /Volumes/Whopper/WebKit/WebCore/rendering/RenderTable.cpp:552
#11 0x019ba2a0 in WebCore::RenderObject::recalcMinMaxWidths (this=0x122aa49c) at /Volumes/Whopper/WebKit/WebCore/rendering/RenderObject.cpp:2269
#12 0x019ba2a0 in WebCore::RenderObject::recalcMinMaxWidths (this=0x124b1eec) at /Volumes/Whopper/WebKit/WebCore/rendering/RenderObject.cpp:2269
#13 0x019ba2a0 in WebCore::RenderObject::recalcMinMaxWidths (this=0x1249ec5c) at /Volumes/Whopper/WebKit/WebCore/rendering/RenderObject.cpp:2269
#14 0x019ba2a0 in WebCore::RenderObject::recalcMinMaxWidths (this=0x122a208c) at /Volumes/Whopper/WebKit/WebCore/rendering/RenderObject.cpp:2269
#15 0x019ba2a0 in WebCore::RenderObject::recalcMinMaxWidths (this=0x106e32bc) at /Volumes/Whopper/WebKit/WebCore/rendering/RenderObject.cpp:2269
#16 0x019ba2a0 in WebCore::RenderObject::recalcMinMaxWidths (this=0x1247474c) at /Volumes/Whopper/WebKit/WebCore/rendering/RenderObject.cpp:2269
#17 0x0197b99c in WebCore::RenderCanvas::layout (this=0x1247474c) at /Volumes/Whopper/WebKit/WebCore/rendering/RenderCanvas.cpp:112
#18 0x0189fff4 in WebCore::FrameView::layout (this=0xd46da10) at /Volumes/Whopper/WebKit/WebCore/page/FrameView.cpp:415
#19 0x01879084 in WebCore::Frame::forceLayout (this=&lt;incomplete type&gt;) at /Volumes/Whopper/WebKit/WebCore/page/Frame.cpp:2925
#20 0x018c2f78 in -[WebCoreFrameBridge forceLayoutAdjustingViewSize:] (self=&lt;incomplete type&gt;, _cmd=0x90a1380c, flag=1 &apos;\001&apos;) at /Volumes/Whopper/WebKit/WebCore/kwq/DeprecatedPtrList.h:891
#21 0x0037a5f0 in -[WebHTMLView layoutToMinimumPageWidth:maximumPageWidth:adjustingViewSize:] (self=0x122ae230, _cmd=0x90a1f200, minPageWidth=0, maxPageWidth=0, adjustViewSize=1 &apos;\001&apos;) at /Volumes/Whopper/WebKit/WebKit/WebView/WebHTMLView.m:2306
#22 0x0037f1c8 in -[WebHTMLView _setPrinting:minimumPageWidth:maximumPageWidth:adjustViewSize:] (self=0x122ae230, _cmd=0x909f87f4, printing=0 &apos;\0&apos;, minPageWidth=0, maxPageWidth=0, adjustViewSize=1 &apos;\001&apos;) at /Volumes/Whopper/WebKit/WebKit/WebView/WebHTMLView.m:3060
#23 0x0037f774 in -[WebHTMLView _endPrintMode] (self=0x122ae230, _cmd=0x414a84) at /Volumes/Whopper/WebKit/WebKit/WebView/WebHTMLView.m:3128
#24 0x003801e0 in -[WebHTMLView endDocument] (self=0x122ae230, _cmd=0x90a115d0) at /Volumes/Whopper/WebKit/WebKit/WebView/WebHTMLView.m:3241</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>37468</commentid>
    <comment_count>1</comment_count>
      <attachid>7267</attachid>
    <who name="Trey Matteson">trey</who>
    <bug_when>2006-03-23 22:22:04 -0800</bug_when>
    <thetext>Created attachment 7267
partial reduction</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>37469</commentid>
    <comment_count>2</comment_count>
    <who name="Trey Matteson">trey</who>
    <bug_when>2006-03-23 22:24:33 -0800</bug_when>
    <thetext>I created an ugly &quot;reduction&quot; for this bug, which amounted to some de-obfuscation of the page, commenting out certain parts, and NOP&apos;ing some elements by adding &quot;xx&quot; to their names.  The main goal was to reduce the number of table cells, since they were at the heart of the bug.  The ugly techniques stemmed from the fact that when I actually removed code the bug would change places, presumably because the heap access sequence would change.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>37471</commentid>
    <comment_count>3</comment_count>
    <who name="Trey Matteson">trey</who>
    <bug_when>2006-03-23 22:33:52 -0800</bug_when>
    <thetext>I believe this is a regression from stock 10.4.5 (at least I can&apos;t make it crash).  It would be interesting to hear from an expert in the code if there is any idea why this would have regressed.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>37472</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Petersen">c.petersen87</who>
    <bug_when>2006-03-23 22:53:24 -0800</bug_when>
    <thetext>I can&apos;t reproduce this issue under 10.4.5 with WebKit-SVN-r13461. 

Trey: Does this still happen for you with the latest Nightly build ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>37473</commentid>
    <comment_count>5</comment_count>
      <attachid>7269</attachid>
    <who name="Trey Matteson">trey</who>
    <bug_when>2006-03-23 23:48:15 -0800</bug_when>
    <thetext>Created attachment 7269
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>37474</commentid>
    <comment_count>6</comment_count>
    <who name="Trey Matteson">trey</who>
    <bug_when>2006-03-23 23:51:37 -0800</bug_when>
    <thetext>Hmm, no, it doesn&apos;t happen for me on TOT.  On the other hand, I believe I found a clear logic error in the code, whose effects I observed in gdb, and which when fixed did definitely make the problem go away (all that before I updated to TOT).  I will consult the table experts as to whether another related fix went in recently, and whether my change makes sense.

The bug was so sensitive to the conditions of heap usage that it&apos;s quite possible that the change I got when I updated masked it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>37504</commentid>
    <comment_count>7</comment_count>
    <who name="Trey Matteson">trey</who>
    <bug_when>2006-03-24 10:59:38 -0800</bug_when>
    <thetext>More info on why this now works on TOT:  I tried running with MallocScribble, and still did not see a crash.  I then debugged, and found a big difference from the code path I was previously seeing.  During the relayouts during printing, we no longer do a full decent of recalcMinMaxWidths() through the render tree.  The topmost block has m_recalcMinMax false, so we never get into the recursion that was previously running into the freed table cells.

I believe my proposed change is still an improvement in safety, but I don&apos;t know the conditions now needed to force this issue to cause a crash.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>37518</commentid>
    <comment_count>8</comment_count>
      <attachid>7269</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2006-03-24 15:47:25 -0800</bug_when>
    <thetext>Comment on attachment 7269
proposed patch

I&apos;d like to understand this problem a bit better.  recalcMinMaxWidths is supposed to just be the generic non-virtual workhorse that calls the virtual calcMinMaxWidth methods.

Could the cells not force a section recalc when needed?  

It&apos;s also not clear to me what causes this problem, since I thought the recalc was done when cells got added/removed.  Is printing causing a change in the cell composition of the table?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>37519</commentid>
    <comment_count>9</comment_count>
      <attachid>7269</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2006-03-24 15:53:38 -0800</bug_when>
    <thetext>Comment on attachment 7269
proposed patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>37520</commentid>
    <comment_count>10</comment_count>
      <attachid>7269</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2006-03-24 15:56:42 -0800</bug_when>
    <thetext>Comment on attachment 7269
proposed patch

Sorry to flip-flop.  I do think doing this in the cell is slightly better because

(a) You avoid making recalcMinMaxWidths virtual

and

(b) Your current patch does the section recalc even when the table may not need to recompute its min/max width (or cells may not etc.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>37523</commentid>
    <comment_count>11</comment_count>
      <attachid>7290</attachid>
    <who name="Trey Matteson">trey</who>
    <bug_when>2006-03-24 17:09:07 -0800</bug_when>
    <thetext>Created attachment 7290
patch incorporating review comments

Same idea, this time with the cells requesting that the sections be made up to date.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>38425</commentid>
    <comment_count>12</comment_count>
      <attachid>7290</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2006-04-03 15:02:37 -0700</bug_when>
    <thetext>Comment on attachment 7290
patch incorporating review comments

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>38840</commentid>
    <comment_count>13</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-04-09 16:46:11 -0700</bug_when>
    <thetext>Landed back on 2006-04-04.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>7267</attachid>
            <date>2006-03-23 22:22:04 -0800</date>
            <delta_ts>2006-03-23 22:22:04 -0800</delta_ts>
            <desc>partial reduction</desc>
            <filename>mapTest7.html</filename>
            <type>text/html</type>
            <size>26470</size>
            <attacher name="Trey Matteson">trey</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgU3RyaWN0Ly9FTiIg
Imh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXN0cmljdC5kdGQiPgo8aHRt
bCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIgeG1sbnM6dj0idXJuOnNjaGVt
YXMtbWljcm9zb2Z0LWNvbTp2bWwiPjxoZWFkPgo8QkFTRSBocmVmPSJodHRwOi8vbWFwcy5nb29n
bGUuY29tLyI+CjxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9o
dG1sOyBjaGFyc2V0PVVURi04Ii8+PG5vc2NyaXB0Pgo8bWV0YSBodHRwLWVxdWl2PSJyZWZyZXNo
IiBjb250ZW50PSIwOyBVUkw9aHR0cDovL21hcHMuZ29vZ2xlLmNvbS9tYXBzP2Y9ZCZobD1lbiZz
YWRkcj0yMCttYXJrZXQrc3QsKzk0MTExJmRhZGRyPTEwK21hcmtldCtzdCwrOTQxMTEmb3V0cHV0
PWh0bWwiLz4KPC9ub3NjcmlwdD48dGl0bGU+R29vZ2xlIExvY2FsPC90aXRsZT4KCjxzdHlsZSB0
eXBlPSJ0ZXh0L2NzcyI+Ym9keXtiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtjb2xvcjogYmxhY2s7
Zm9udC1mYW1pbHk6IEFyaWFsLCBzYW5zLXNlcmlmO21hcmdpbi10b3A6IDNweDttYXJnaW4tYm90
dG9tOiAwO31hOmxpbmt7Y29sb3I6ICMwMDAwY2M7fWE6dmlzaXRlZHtjb2xvcjogIzU1MWE4Yjt9
YTphY3RpdmV7Y29sb3I6IHJlZDt9YS5mbHtjb2xvcjogIzc3NzdjYzt9YS5xOnZpc2l0ZWR7Y29s
b3I6ICMwMDAwY2M7fXRhYmxle2JvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7fXRke3BhZGRpbmc6
IDA7fWltZ3tib3JkZXI6IDA7fWZvcm17cGFkZGluZzogMDttYXJnaW46IDA7fSNnYWlhe2ZvbnQt
c2l6ZTogc21hbGw7fSNzZWFyY2h7bWFyZ2luLWJvdHRvbTogMTBweDtmb250LXNpemU6IHNtYWxs
O30jc2VhcmNoIC5sb2dve3BhZGRpbmctcmlnaHQ6IDdweDt9I3NlYXJjaCAudGFic3t2ZXJ0aWNh
bC1hbGlnbjogYm90dG9tO3BhZGRpbmctYm90dG9tOiA1cHg7cGFkZGluZy1sZWZ0OiA0cHg7fSNz
ZWFyY2ggLmJveHt2ZXJ0aWNhbC1hbGlnbjogdG9wO30jc2VhcmNoIC5ib3ggLmZvcm0gLmlucHV0
IHRke3BhZGRpbmctcmlnaHQ6IDAuMzVlbTt9I3NlYXJjaCAuYm94IC5mb3JtIC5sYWJlbHMgdGR7
cGFkZGluZy10b3A6IDFweDtmb250LXNpemU6IDg1JTt9I3NlYXJjaCAuYm94IC5mb3JtIC5sYWJl
bHMgLmV4YW1wbGV7Y29sb3I6IGdyYXk7fSNzZWFyY2ggLmhlbHBsaW5rc3t2ZXJ0aWNhbC1hbGln
bjogdG9wO3doaXRlLXNwYWNlOm5vd3JhcDtmb250LXNpemU6IDg1JTtwYWRkaW5nLWxlZnQ6IDdw
eDt9I3NlYXJjaCAuaGVscGxpbmtzIC5zZWxlY3RlZCBhe3RleHQtZGVjb3JhdGlvbjogbm9uZTtj
b2xvcjogYmxhY2s7fSNzZWFyY2ggLmhlbHBsaW5rcyAuc2VsZWN0ZWQgYXtmb250LXdlaWdodDog
Ym9sZDt9I3RpdGxlYmFye2JvcmRlci10b3A6IDFweCBzb2xpZCAjZmY5OTAwO2JhY2tncm91bmQt
Y29sb3I6ICNmZmVhYzA7d2lkdGg6IDEwMCU7bWFyZ2luLWJvdHRvbTogN3B4O30jdGl0bGViYXIg
LnRpdGxle2ZvbnQtc2l6ZTogbGFyZ2U7Zm9udC13ZWlnaHQ6IGJvbGQ7cGFkZGluZy1sZWZ0OiAz
cHg7fSN0aXRsZWJhciAubGlua3N7Zm9udC1zaXplOiBzbWFsbDt0ZXh0LWFsaWduOiByaWdodDt2
ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO3BhZGRpbmctcmlnaHQ6IDNweDt9CiN0aXRsZWJhciAubGlu
a3MgYXt0ZXh0LWRlY29yYXRpb246IG5vbmU7d2hpdGUtc3BhY2U6IG5vd3JhcDtwYWRkaW5nLWxl
ZnQ6IDAuNzVlbTtjb2xvcjogIzAwMDBjYzt9I3RpdGxlYmFyIC5saW5rcyBhIHNwYW57dGV4dC1k
ZWNvcmF0aW9uOiB1bmRlcmxpbmU7fSN0aXRsZWJhciAubGlua3MgYSBpbWd7d2lkdGg6IDE2cHg7
aGVpZ2h0OiAxNnB4O3ZlcnRpY2FsLWFsaWduOiBib3R0b207fUBtZWRpYSBzY3JlZW4sIHByb2pl
Y3Rpb24geyNwYWdle3Bvc2l0aW9uOiByZWxhdGl2ZTt3aWR0aDogMTAwJTt9I3BhbmVse3Bvc2l0
aW9uOiBhYnNvbHV0ZTt0b3A6IDBweDtsZWZ0OiAwcHg7d2lkdGg6IDIwZW07b3ZlcmZsb3c6IGF1
dG87fSNtYXB7bWFyZ2luLWxlZnQ6IDIwLjRlbTtib3JkZXI6IDFweCBzb2xpZCAjOTc5Nzk3O2Jh
Y2tncm91bmQtY29sb3I6ICNlNWUzZGY7fX0jbWFwIC5sb2FkaW5ne2NvbG9yOiBncmF5O3BhZGRp
bmc6IDEwcHg7fS5xdWVyeXtmb250LXNpemU6bWVkaXVtO3BhZGRpbmctYm90dG9tOjAuMmVtO3Bh
ZGRpbmctcmlnaHQ6MC4yZW07fS5zdWdnZXN0e2ZvbnQtc2l6ZTptZWRpdW07fS5zdWdnZXN0IC5y
ZWZ7bWFyZ2luLXRvcDowLjVlbTt9LnN1Z2dlc3QgLmRpZHlvdXtjb2xvcjojY2MwMDAwO30uZGlz
dHtjb2xvcjojNzc3N2NjO30uZGVie2ZvbnQtc2l6ZTp4LXNtYWxsO30jdnB7cG9zaXRpb246IGFi
c29sdXRlO3RvcDogLTEwcHg7bGVmdDogLTEwcHg7d2lkdGg6IDFweDtoZWlnaHQ6IDFweDt2aXNp
YmlsaXR5OiBoaWRkZW47fSNob21lc3RhdGV7ZGlzcGxheTogbm9uZTt9Lmhwe21hcmdpbi1yaWdo
dDowLjJlbTtmb250LXNpemU6c21hbGw7fS5ocCAucHJvbW97bWFyZ2luLWJvdHRvbToxZW07fS5o
cCAuaG9tZXttYXJnaW4tYm90dG9tOjFlbTt9LmhwIC50aW5zdHJ1Y3R7bWFyZ2luLWJvdHRvbTox
ZW07fS5ocCAuaGRye2ZvbnQtc2l6ZTptZWRpdW07bWFyZ2luLXJpZ2h0OjAuMmVtO21hcmdpbi1i
b3R0b206MC4yZW07Zm9udC13ZWlnaHQ6Ym9sZDt9LmhwIC5zdWJoZHJ7cGFkZGluZy10b3A6MC41
ZW07cGFkZGluZy1ib3R0b206MC4yZW07Zm9udC13ZWlnaHQ6Ym9sZDt9LmhwIC5lZ3twYWRkaW5n
LXJpZ2h0OjAuMmVtO3BhZGRpbmctYm90dG9tOjAuMmVtO3BhZGRpbmctbGVmdDowLjhlbTttYXJn
aW4tdG9wOjFlbTt9LmhwIC50b3Vye21hcmdpbi10b3A6MWVtO30uaHAgLmFtc2d7bWFyZ2luLXRv
cDowLjNlbTttYXJnaW4tYm90dG9tOjAuMmVtO30uaHAgLmZlZWRiYWNre21hcmdpbi10b3A6MWVt
O30uaHAgLmxiY3tmb250LXNpemU6c21hbGw7fS5kaXJ7Zm9udC1zaXplOiBzbWFsbDtwYWRkaW5n
LWxlZnQ6IDFweDtwYWRkaW5nLXRvcDogMXB4O3BhZGRpbmctcmlnaHQ6IDRweDt9LmRpciB0ZHti
b3JkZXI6IDFweCBzb2xpZCBzaWx2ZXI7cGFkZGluZzogMC4yZW07dmVydGljYWwtYWxpZ246IHRv
cDt9LmRpciAubGVnYWx7cGFkZGluZzogMC4yZW07cGFkZGluZy10b3A6IDFlbTtmb250LXNpemU6
IDg1JTtjb2xvcjogZ3JheTt9LmRpciAucmV2ZXJzZXtwYWRkaW5nLXRvcDogMC43NWVtO3BhZGRp
bmctYm90dG9tOiAwLjVlbTt9LmRpciAubnVtLCAuZGlyIC5uYW1lIHt3aGl0ZS1zcGFjZTogbm93
cmFwO2JhY2tncm91bmQtY29sb3I6ICNlZWVlZWU7fS5wcmludHN1bW1hcnkgLm5hbWUge2ZvbnQt
c2l6ZTogOTAlO30uZGlyIC5udW17dGV4dC1hbGlnbjogcmlnaHQ7fS5kaXIgLmRlc2MsIC5kaXIg
LnZhbHVle3dpZHRoOiAxMDAlO30ucHJpbnRzdW1tYXJ5IC52YWx1ZSB7Zm9udC13ZWlnaHQ6IGJv
bGQ7fS5wcmludGhlYWR0YWJsZSB7bWFyZ2luLWJvdHRvbTogMC4zZW07fS5wcmludGhlYWR0YWJs
ZSB0ZCB7cGFkZGluZy1sZWZ0OiAwLjJlbTtwYWRkaW5nLXJpZ2h0OiAwLjJlbTt2ZXJ0aWNhbC1h
bGlnbjogdG9wO30uZGlyIC5udW0sIC5kaXIgLmRlc2MsIC5kaXIgLm1pbGVzdG9uZXtjdXJzb3I6
IHBvaW50ZXI7fS5kaXIgdGQuZ2Fwe3RleHQtYWxpZ246IGNlbnRlcjtib3JkZXItbGVmdDogbm9u
ZTtib3JkZXItcmlnaHQ6IG5vbmU7cGFkZGluZzogMDt9LmRpciBkaXYuZ2Fwe21hcmdpbi10b3A6
IC0wLjVlbTt9dGFibGUuZGlyc2VnbWVudCx0YWJsZS5kaXJjc2ksdGFibGUuZGlyY3NpX2hpZGRl
biB7Ym9yZGVyOiBub25lO3BhZGRpbmc6IDBweDt3aWR0aDogMTAwJTt9dGFibGUuZGlyc2VnbWVu
dCB0ZCx0YWJsZS5kaXJjc2kgdGQsdGFibGUuZGlyY3NpX2hpZGRlbiB0ZCB7Ym9yZGVyOiBub25l
O3BhZGRpbmc6IDBweDt9LmRpcmNzaV9oaWRkZW4ge2Rpc3BsYXk6IG5vbmU7fXRyLmNzaSB7Lyog
Zm9udC1zdHlsZTogaXRhbGljOyAqL310ZC5jc2lfaW50ZXJ2YWwsdGQuY3NpX3NlZ2Rpc3Qge3Rl
eHQtYWxpZ246cmlnaHQ7d2lkdGg6IDQuMzNlbTtvdmVyZmxvdzogdmlzaWJsZTt9dGQuY3Npb3Bl
bmVyLHRkLmNzaWNsb3NlciB7d2lkdGg6IDEycHg7YmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVh
dDt9dGQuY3Npb3BlbmVyIHtiYWNrZ3JvdW5kLWltYWdlOiB1cmwoL21hcGZpbGVzL2Nsb3NlZEFy
cm93LmdpZik7fXRkLmNzaWNsb3NlciB7YmFja2dyb3VuZC1pbWFnZTogdXJsKC9tYXBmaWxlcy9v
cGVuQXJyb3cuZ2lmKTt9Lml3e2ZvbnQtc2l6ZTpzbWFsbDtwYWRkaW5nLXJpZ2h0OiAxMHB4O30u
aXcgLnRpdGxle2ZvbnQtc2l6ZTptZWRpdW07Zm9udC13ZWlnaHQ6Ym9sZDttYXJnaW4tYm90dG9t
OjAuMWVtO30uaXcgLmRpciAubGFiZWx7cGFkZGluZy10b3A6MC4yZW07fS5pdyAuc2R7bWFyZ2lu
LXRvcDowLjJlbTt9Ci5pdyAuc2QgLmxua3tmb250LXNpemU6ODUlO3BhZGRpbmctdG9wOjAuNWVt
O3BhZGRpbmctYm90dG9tOjAuNWVtO30uaXcgLnNkIGEubG5rbW9yZTpsaW5re2NvbG9yOiMwMDgw
MDA7fS5pdyAuc2QgYS5sbmttb3JlLCAuaXcgLnNkIHNwYW4udGFiIHt3aGl0ZS1zcGFjZTogbm93
cmFwO30uaXcgLnNkIC5zcmN7cGFkZGluZy10b3A6MC4yZW07fS5pdyAuc2QgLnNyYyBhe2NvbG9y
OiMwMDgwMDA7fS51bnZlcntjb2xvcjojNzc3N2NjO3doaXRlLXNwYWNlOm5vd3JhcDt9LnVudmVy
IGE6bGlua3tjb2xvcjojNzc3N2NjO30uaXcgLnBue3BhZGRpbmctYm90dG9tOjAuMmVtO30uaXcg
LnJlZntwYWRkaW5nLWJvdHRvbTowLjJlbTt9Lml3IC5yZWYgYTpsaW5re2NvbG9yOiMwMDgwMDA7
fS5pdyAucmV2e3BhZGRpbmctdG9wOjAuMWVtO3BhZGRpbmctYm90dG9tOjAuMmVtO30uaXcgLnJl
diBhOmxpbmt7Y29sb3I6Izc3NzdjYzt9Lml3IC5zdHB7cGFkZGluZy10b3A6MC44ZW07cGFkZGlu
Zy1ib3R0b206MC4yZW07fS5pdyAuc2hvcnRfbXNne2NvbG9yOiMyMjIyMjI7Zm9udC1zaXplOjEx
MCU7bGV0dGVyLXNwYWNpbmc6MC4xZXg7cGFkZGluZy1ib3R0b206MWVtO30uaXcgLmRpcntwYWRk
aW5nLWJvdHRvbToycHg7fS5pdyAuZGlyIC5pbnB0e3dpZHRoOjE2ZW07fS5pdyAuYXR0cntwYWRk
aW5nLXRvcDowLjE1ZW07d2lkdGg6IDIwZW07fS5pdyAuYXR0ciAubmFtZXtmb250LXdlaWdodDpi
b2xkO30uaXcgLnRhYnt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lO2NvbG9yOmJsdWU7Y3Vyc29y
OnBvaW50ZXI7fS5pdyBzcGFuLnNlbGVjdGVke2ZvbnQtd2VpZ2h0OmJvbGQ7dGV4dC1kZWNvcmF0
aW9uOm5vbmU7Y29sb3I6YmxhY2s7Y3Vyc29yOmRlZmF1bHQ7fS5pdyAuY2FyZHtkaXNwbGF5Om5v
bmU7fS5pdyBkaXYuc2VsZWN0ZWR7ZGlzcGxheTpibG9jazt9LnNsb2N7Zm9udC1zaXplOnNtYWxs
O21hcmdpbi10b3A6MC41ZW07fSNwYW5lbCAubG9jYWx7Zm9udC1zaXplOiBzbWFsbDtwYWRkaW5n
LWJvdHRvbTogMC41ZW07fS5jYXR7bWFyZ2luLWJvdHRvbTogMC43NWVtO3BhZGRpbmctcmlnaHQ6
IDdweDt9LnJlc3tib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO30jcGFuZWwgLnJlcyAuc2VsZWN0
ZWQsICNwYW5lbCAuZGlyIC5zZWxlY3RlZHtiYWNrZ3JvdW5kLWNvbG9yOiNlZWVlZWU7fS5yZXMg
dGR7dmVydGljYWwtYWxpZ246IHRvcDt9LnJlcyAuaWNvbntjdXJzb3I6IHBvaW50ZXI7cGFkZGlu
Zy10b3A6IDAuMjVlbTtwYWRkaW5nLXJpZ2h0OiAycHg7fS5yZXMgLnRleHR7cGFkZGluZy1sZWZ0
OiA1cHg7cGFkZGluZy10b3A6IDAuMjVlbTtwYWRkaW5nLWJvdHRvbTogMC41ZW07cGFkZGluZy1y
aWdodDogN3B4O30ucmVzIC5uYW1le2ZvbnQtc2l6ZTogbWVkaXVtO3BhZGRpbmctdG9wOiAzcHg7
fS5yZXMgLndlYnttYXJnaW4tdG9wOiAwLjVlbTt9LnVybHtjb2xvcjogIzAwODAwMDt9LmFkcyAu
Z2Vve2NvbG9yOiBncmF5O30uYWRzIC5oZWFke2ZvbnQtc2l6ZTogOTAlO2NvbG9yOiBncmF5O30u
YWR7bWFyZ2luLWJvdHRvbTogMC41ZW07bWFyZ2luLWxlZnQ6IDAuM2VtO30uYWQgLnRpdGxle2Zv
bnQtc2l6ZTptZWRpdW07fS5ib3R0b21hZHN7YmFja2dyb3VuZC1jb2xvcjojZTVlY2Y5O21hcmdp
bi10b3A6IDAuMjVlbTtwYWRkaW5nLWJvdHRvbTogMC4xNWVtO30udG9wYWRze2JhY2tncm91bmQt
Y29sb3I6I2U1ZWNmOTttYXJnaW4tYm90dG9tOiAwLjVlbTtwYWRkaW5nLWJvdHRvbTogMC4xNWVt
O30uYWRzbWVzc2FnZXtjb2xvcjpncmF5O2ZvbnQtc2l6ZTo5MCU7Y3Vyc29yOmRlZmF1bHQ7fS5n
ZW9hZHN7bWFyZ2luLWJvdHRvbTowLjVlbTtiYWNrZ3JvdW5kLWNvbG9yOiNlNWVjZjk7fS5nZW9h
ZHMgLm1hcmtlcnt2ZXJ0aWNhbC1hbGlnbjp0b3A7Y3Vyc29yOnBvaW50ZXI7cGFkZGluZy1sZWZ0
OjJweDt9Lmdlb2FkcyAubWFya2VyIGRpdntwb3NpdGlvbjpyZWxhdGl2ZTt9Lmdlb2FkcyAubWFy
a2VyIC5wdXNocGlue3dpZHRoOjMzcHg7aGVpZ2h0OjI4cHg7ei1pbmRleDowO30uZ2VvYWRzIC5t
YXJrZXIgLmxhYmVse3Bvc2l0aW9uOmFic29sdXRlO3RvcDozcHg7bGVmdDozcHg7d2lkdGg6MTZw
eDtoZWlnaHQ6MTZweDt6LWluZGV4OjE7fS5nZW9hZHMgLnRleHR7dmVydGljYWwtYWxpZ246IHRv
cDtwYWRkaW5nOjAuMWVtO3dpZHRoOjEwMCU7Y3Vyc29yOmRlZmF1bHQ7fS5nZW9hZHMgLnRleHQg
LmxpbmUxe2ZvbnQtc2l6ZTptZWRpdW07fS5nZW9hZHMgLnRleHQgLnBob25le30uZ2VvYWRzIC50
ZXh0IC52aXN1cmx7Y29sb3I6IzAwODAwMDt9Lmdlb2FkcyAudGV4dCAuYWRkcntjb2xvcjpncmF5
O30uaXdnZW9hZHttYXJnaW46MHB4O2ZvbnQtc2l6ZTpzbWFsbDt9Lml3Z2VvYWQgLmFkbXNne2Zv
bnQtc2l6ZTo5MCU7Y29sb3I6Z3JheTt9Lml3Z2VvYWQgLmhlYWR7cGFkZGluZy1yaWdodDowLjJl
bTt9Lml3Z2VvYWQgLmhlYWQgLnRpdGxle2ZvbnQtc2l6ZTptZWRpdW07Zm9udC13ZWlnaHQ6Ym9s
ZDt9Lml3Z2VvYWQgLmRldGxze30uaXdnZW9hZCAuZGV0bHMgLnZpc3VybHtwYWRkaW5nLXRvcDow
ZW07Y29sb3I6IzAwODAwMDt9Lml3Z2VvYWQgLmRldGxzIC5hZGRye3BhZGRpbmctdG9wOjAuNWVt
O2NvbG9yOmdyYXk7fS5pd2dlb2FkIC5pbWFnZXt2ZXJ0aWNhbC1hbGlnbjp0b3A7cGFkZGluZy1s
ZWZ0OjAuNWVtO30uaXdnZW9hZCAuaW1hZ2UgLmJkcntib3JkZXI6MXB4IHNvbGlkIHNpbHZlcjt9
Lml3Z2VvYWQgLmltYWdlIGltZ3tib3JkZXI6MnB4IHNvbGlkIHdoaXRlO30ubm90aWNlc3ttYXJn
aW4tdG9wOiAxZW07fSNobSB7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDogMztib3JkZXI6IDFw
eCBzb2xpZCBibGFjaztiYWNrZ3JvdW5kOiB3aGl0ZTtwYWRkaW5nOiAwcHg7fS5hYyB0ZCB7dGV4
dC1kZWNvcmF0aW9uOiBub25lO2JhY2tncm91bmQ6IHdoaXRlO2NvbG9yOiBibGFjaztkaXNwbGF5
OiBibG9jaztjdXJzb3I6IGRlZmF1bHQ7cGFkZGluZzogMXB4IDJweCAxcHggMnB4O2ZvbnQtc2l6
ZTogODAlO3doaXRlLXNwYWNlOiBub3dyYXA7fS5hYyB0ZC5zZWwge2JhY2tncm91bmQ6IzMzNjZD
Qztjb2xvcjp3aGl0ZTtwYWRkaW5nOiAxcHggMnB4IDFweCAycHg7fS5hY2wge2NvbG9yOiMwMDAw
Y2M7Y3Vyc29yOnBvaW50ZXI7d2hpdGUtc3BhY2U6bm93cmFwO30uYWNyIHtmb250LXNpemU6IHNt
YWxsO21hcmdpbi1ib3R0b206IDFlbTt9LmFjZGVsIHttYXJnaW4tdG9wOiAycHh9ZGl2IC5uIHtt
YXJnaW4tdG9wOiAxZW07dGV4dC1hbGlnbjpjZW50ZXJ9Lm4gYXtmb250LXNpemU6MTBwdDtjb2xv
cjojMDAwfS5uIC5pe2ZvbnQtc2l6ZToxMHB0O2ZvbnQtd2VpZ2h0OmJvbGR9LmksLmk6bGlua3tj
b2xvcjojYTkwYTA4fS5ie2ZvbnQtc2l6ZToxMnB0O2NvbG9yOiMwMGM7Zm9udC13ZWlnaHQ6Ym9s
ZH0ubiAuaW1nbnt0ZXh0LWRlY29yYXRpb246bm9uZX0ubmF2IHtwYWRkaW5nLWxlZnQ6MmVtfS53
cHQge21hcmdpbi10b3A6MWVtO21hcmdpbi1ib3R0b206MWVtO2ZvbnQtc2l6ZTptZWRpdW07fS5l
cnJvcnRpcHMgbGkge3BhZGRpbmctYm90dG9tOjAuNWVtO31AbWVkaWEgc2NyZWVuLCBwcm9qZWN0
aW9uey5ub3NjcmVlbntkaXNwbGF5Om5vbmU7fWh0bWwsIGJvZHl7b3ZlcmZsb3c6IGhpZGRlbjt9
I3ByaW50bWVzc2FnZXtkaXNwbGF5Om5vbmU7fX1AbWVkaWEgcHJpbnR7Lm5vcHJpbnR7ZGlzcGxh
eTpub25lO30ucHJpbnRpbWFnZSB7d2lkdGg6IDEwMCU7Ym9yZGVyOiAxcHggc29saWQgc2lsdmVy
O30jcHJpbnRtZXNzYWdlIHtkaXNwbGF5OiBibG9jaztwb3NpdGlvbjogYWJzb2x1dGU7ei1pbmRl
eDogMTAwMDAwO3RvcDogMG1tO3JpZ2h0OiAwbW07d2lkdGg6IDdjbTtwYWRkaW5nOiAxLjVtbSAy
bW07Y29sb3I6IGJsYWNrO2JhY2tncm91bmQtY29sb3I6IHNpbHZlcjtib3JkZXI6IDFweCBzb2xp
ZCBibGFjazt0ZXh0LWFsaWduOiBjZW50ZXI7Zm9udC1zaXplOiA2cHQ7Zm9udC1mYW1pbHk6IHNh
bnMtc2VyaWY7fSNnYWlhLCAjaGVhZGVyLCNwYW5lbCBkaXYucmV2ZXJzZSwjcGFuZWwgLmRpciAu
c3VtbWFyeSB7ZGlzcGxheTogbm9uZTt9fQo8L3N0eWxlPgoKPHNjcmlwdCB0eXBlPSJ0ZXh0L2ph
dmFzY3JpcHQiPi8vPCFbQ0RBVEFbCnZhciBHX0lOQ09NUEFUID0gZmFsc2U7ZnVuY3Rpb24gR1Nj
cmlwdChzcmMpIHtkb2N1bWVudC53cml0ZSgnPCcgKyAnc2NyaXB0IHNyYz0iJyArIHNyYyArICci
JyArJyB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwnICsgJy9zY3JpcHQ+Jyk7fWZ1bmN0aW9uIEdC
cm93c2VySXNDb21wYXRpYmxlKCkge2lmIChHX0lOQ09NUEFUKSByZXR1cm4gZmFsc2U7aWYgKCF3
aW5kb3cuUmVnRXhwKSByZXR1cm4gZmFsc2U7dmFyIEFHRU5UUyA9IFsib3BlcmEiLCJtc2llIiwi
c2FmYXJpIiwiZmlyZWZveCIsIm5ldHNjYXBlIiwibW96aWxsYSJdO3ZhciBhZ2VudCA9IG5hdmln
YXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKTtmb3IgKHZhciBpID0gMDsgaSA8IEFHRU5UUy5s
ZW5ndGg7IGkrKykge3ZhciBhZ2VudFN0ciA9IEFHRU5UU1tpXTtpZiAoYWdlbnQuaW5kZXhPZihh
Z2VudFN0cikgIT0gLTEpIHt2YXIgdmVyc2lvbkV4cHIgPSBuZXcgUmVnRXhwKGFnZW50U3RyICsg
IlsgXC9dPyhbMC05XSsoXC5bMC05XSspPykiKTt2YXIgdmVyc2lvbiA9IDA7aWYgKHZlcnNpb25F
eHByLmV4ZWMoYWdlbnQpICE9IG51bGwpIHt2ZXJzaW9uID0gcGFyc2VGbG9hdChSZWdFeHAuJDEp
O31pZiAoYWdlbnRTdHIgPT0gIm9wZXJhIikgcmV0dXJuIHZlcnNpb24gPj0gNztpZiAoYWdlbnRT
dHIgPT0gInNhZmFyaSIpIHJldHVybiB2ZXJzaW9uID49IDEyNTtpZiAoYWdlbnRTdHIgPT0gIm1z
aWUiKSByZXR1cm4gKHZlcnNpb24gPj0gNS41ICYmYWdlbnQuaW5kZXhPZigicG93ZXJwYyIpID09
IC0xKTtpZiAoYWdlbnRTdHIgPT0gIm5ldHNjYXBlIikgcmV0dXJuIHZlcnNpb24gPiA3O319cmV0
dXJuIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkO31mdW5jdGlvbiBHTG9hZCgpIHtHTG9hZEFwaShb
Imh0dHA6Ly9tdDAuZ29vZ2xlLmNvbS9tdD9uPTQwNCZ2PXcyLjkmIiwiaHR0cDovL210MS5nb29n
bGUuY29tL210P249NDA0JnY9dzIuOSYiLCJodHRwOi8vbXQyLmdvb2dsZS5jb20vbXQ/bj00MDQm
dj13Mi45JiIsImh0dHA6Ly9tdDMuZ29vZ2xlLmNvbS9tdD9uPTQwNCZ2PXcyLjkmIl0sIFsiaHR0
cDovL2toMC5nb29nbGUuY29tL2toP249NDA0JnY9NSYiLCJodHRwOi8va2gxLmdvb2dsZS5jb20v
a2g/bj00MDQmdj01JiIsImh0dHA6Ly9raDIuZ29vZ2xlLmNvbS9raD9uPTQwNCZ2PTUmIiwiaHR0
cDovL2toMy5nb29nbGUuY29tL2toP249NDA0JnY9NSYiXSwgWyJodHRwOi8vbXQwLmdvb2dsZS5j
b20vbXQ/bj00MDQmdj13MnQuNCYiLCJodHRwOi8vbXQxLmdvb2dsZS5jb20vbXQ/bj00MDQmdj13
MnQuNCYiLCJodHRwOi8vbXQyLmdvb2dsZS5jb20vbXQ/bj00MDQmdj13MnQuNCYiLCJodHRwOi8v
bXQzLmdvb2dsZS5jb20vbXQ/bj00MDQmdj13MnQuNCYiXSk7fWZ1bmN0aW9uIEdVbmxvYWQoKSB7
aWYgKHdpbmRvdy5HVW5sb2FkQXBpKSB7R1VubG9hZEFwaSgpO319dmFyIF9tRmxhZ3MgPSB7fTt2
YXIgX21Ib3N0ID0gImh0dHA6Ly9tYXBzLmdvb2dsZS5jb20iO3ZhciBfbVVyaSA9ICIvbWFwcyI7
dmFyIF9tRG9tYWluID0gImdvb2dsZS5jb20iO3ZhciBfbVN0YXRpY1BhdGggPSAiaHR0cDovL3d3
dy5nb29nbGUuY29tL2ludGwvZW5fdXMvbWFwZmlsZXMvIjt2YXIgX21UZXJtc1VybCA9ICJodHRw
Oi8vd3d3Lmdvb2dsZS5jb20vaW50bC9lbl91cy9oZWxwL3Rlcm1zX2xvY2FsLmh0bWwiO3ZhciBf
bVRlcm1zID0gIlRlcm1zIG9mIFVzZSI7dmFyIF9tTWFwTW9kZSA9ICJNYXAiO3ZhciBfbU1hcE1v
ZGVTaG9ydCA9ICJNYXAiO3ZhciBfbU1hcEVycm9yID0gIldlIGFyZSBzb3JyeSwgYnV0IHdlIGRv
blwndCBoYXZlIG1hcHMgYXQgdGhpcyB6b29tIGxldmVsIGZvciB0aGlzIHJlZ2lvbi48cD5Ucnkg
em9vbWluZyBvdXQgZm9yIGEgYnJvYWRlciBsb29rLjwvcD4iO3ZhciBfbVNhdGVsbGl0ZU1vZGUg
PSAiU2F0ZWxsaXRlIjt2YXIgX21TYXRlbGxpdGVNb2RlU2hvcnQgPSAiU2F0Ijt2YXIgX21TYXRl
bGxpdGVFcnJvciA9ICJXZSBhcmUgc29ycnksIGJ1dCB3ZSBkb25cJ3QgaGF2ZSBpbWFnZXJ5IGF0
IHRoaXMgem9vbSBsZXZlbCBmb3IgdGhpcyByZWdpb24uPHA+VHJ5IHpvb21pbmcgb3V0IGZvciBh
IGJyb2FkZXIgbG9vay48L3A+Ijt2YXIgX21IeWJyaWRNb2RlID0gIkh5YnJpZCI7dmFyIF9tSHli
cmlkTW9kZVNob3J0ID0gIkh5YiI7dmFyIF9tU2F0ZWxsaXRlVG9rZW4gPSAiZnp3cTJpbjRKN0ww
eENTc3oxelBoelBpQmM0RjJvUWloNk5kWWciO3ZhciBfbVpvb21JbiA9ICJab29tIEluIjt2YXIg
X21ab29tT3V0ID0gIlpvb20gT3V0Ijt2YXIgX21ab29tU2V0ID0gIkNsaWNrIHRvIHNldCB6b29t
IGxldmVsIjt2YXIgX21ab29tRHJhZyA9ICJEcmFnIHRvIHpvb20iO3ZhciBfbVBhbldlc3QgPSAi
R28gbGVmdCI7dmFyIF9tUGFuRWFzdCA9ICJHbyByaWdodCI7dmFyIF9tUGFuTm9ydGggPSAiR28g
dXAiO3ZhciBfbVBhblNvdXRoID0gIkdvIGRvd24iO3ZhciBfbUxhc3RSZXN1bHQgPSAiUmV0dXJu
IHRvIHRoZSBsYXN0IHJlc3VsdCI7dmFyIF9tTWFwQ29weSA9ICJNYXAgZGF0YSAmIzE2OTsyMDA1
ICI7dmFyIF9tU2F0ZWxsaXRlQ29weSA9ICJJbWFnZXJ5ICYjMTY5OzIwMDUgIjt2YXIgX21Hb29n
bGVDb3B5ID0gIiYjMTY5OzIwMDUgR29vZ2xlIjt2YXIgX21LaWxvbWV0ZXJzID0gImttIjt2YXIg
X21NaWxlcyA9ICJtaSI7dmFyIF9tTWV0ZXJzID0gIm0iO3ZhciBfbUZlZXQgPSAiZnQiO3ZhciBf
bVByZWZlck1ldHJpYyA9IGZhbHNlO3ZhciBfbVVzZVByaW50TGluayA9ICdUbyBzZWUgYWxsIHRo
ZSBkZXRhaWxzIHRoYXQgYXJlIHZpc2libGUgb24gdGhlIHNjcmVlbix1c2UgdGhlICJQcmludCIg
bGluayBuZXh0IHRvIHRoZSBtYXAuJzt2YXIgX21QcmludFNvcnJ5ID0gJyc7dmFyIF9tTWFwUHJp
bnRVcmwgPSAnaHR0cDovL3d3dy5nb29nbGUuY29tL21hcHByaW50Jzt2YXIgX21BdXRvY29tcGxl
dGVGcm9tID0gJ2Zyb20nO3ZhciBfbUF1dG9jb21wbGV0ZVRvID0gJ3RvJzt2YXIgX21BdXRvY29t
cGxldGVOZWFyUmUgPSAnXig/Oig/Oi4qPykmIzkyO3MrKSg/Oig/OmlufG5lYXJ8YXJvdW5kfGNs
b3NlIHRvKTo/JiM5MjtzKykoLispJCc7dmFyIF9tU3ZnRW5hYmxlZCA9IGZhbHNlO3ZhciBfbVN2
Z0ZvcmNlZCA9IGZhbHNlO2Z1bmN0aW9uIEdMb2FkTWFwc1NjcmlwdCgpIHtpZiAoR0Jyb3dzZXJJ
c0NvbXBhdGlibGUoKSkge0dTY3JpcHQoImh0dHA6Ly9tYXBzLmdvb2dsZS5jb20vbWFwZmlsZXMv
bWFwczIuNDIuanMiKTt9fS8vXV0+Cjwvc2NyaXB0PgoKPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFz
Y3JpcHQiPi8vPCFbQ0RBVEFbCmlmICghR0Jyb3dzZXJJc0NvbXBhdGlibGUoKSkge2xvY2F0aW9u
LmhyZWYgPSAiaHR0cDovL21hcHMuZ29vZ2xlLmNvbS9tYXBzP2Y9ZCZobD1lbiZzYWRkcj0yMCtt
YXJrZXQrc3QsKzk0MTExJmRhZGRyPTEwK21hcmtldCtzdCwrOTQxMTEmb3V0cHV0PWh0bWwiO30K
ZnVuY3Rpb24gZShpZCkge3JldHVybiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCk7fQpmdW5j
dGlvbiBhY2luaXQoaWQsIHNwbGl0KSB7fQpmdW5jdGlvbiBzcGluaXQoaWQpIHt2YXIgbyA9IGUo
aWQpO2lmIChvKSB7bmV3IEdTbWFydFBhc3RlKG8pO319dmFyIGdBcHBsaWNhdGlvbiA9IG51bGw7
dmFyIGdBZGRyZXNzQm9vayA9IG51bGw7CmZ1bmN0aW9uIGxvYWRBcHBsaWNhdGlvbigpIHt2YXIg
YSA9IGdBcHBsaWNhdGlvbiA9IG5ldyBHTWFwc0FwcGxpY2F0aW9uKGUoIm1hcCIpKTtHRXZlbnQu
YWRkTGlzdGVuZXIoYS5nZXRNYXAoKSwgIm1vdmVlbmQiLCB1cGRhdGVQYWdlVXJsKTtzcGluaXQo
InFfZCIpO3NwaW5pdCgibF9kIik7c3Bpbml0KCJsX25lYXIiKTtzcGluaXQoImRfZCIpO3NwaW5p
dCgiZF9kYWRkciIpO30KZnVuY3Rpb24gdXBkYXRlUGFnZVVybCgpIHt2YXIgdXJsID0gZ0FwcGxp
Y2F0aW9uLmdldFBhZ2VVcmwoKTtlKCJsaW5rIikuaHJlZiA9IHVybDtlKCJlbWFpbCIpLmhyZWYg
PSAibWFpbHRvOj9zdWJqZWN0PSIgK2VuY29kZVVSSUNvbXBvbmVudCgiR29vZ2xlIExvY2FsIikg
KyImYm9keT0iICsgZW5jb2RlVVJJQ29tcG9uZW50KHVybCk7fQpmdW5jdGlvbiBnZXRXaW5kb3dI
ZWlnaHQoKSB7aWYgKHdpbmRvdy5zZWxmICYmIHNlbGYuaW5uZXJIZWlnaHQpIHtyZXR1cm4gc2Vs
Zi5pbm5lckhlaWdodDt9aWYgKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCAmJiBkb2N1bWVudC5k
b2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0KSB7cmV0dXJuIGRvY3VtZW50LmRvY3VtZW50RWxl
bWVudC5jbGllbnRIZWlnaHQ7fXJldHVybiAwO30KZnVuY3Rpb24gbG9hZFVybChzaW1wbGVVcmwp
IHt2YXIgdXJsID0gc2ltcGxlVXJsICsgIiZvdXRwdXQ9anMiO2lmIChnQXBwbGljYXRpb24pIHt1
cmwgKz0gZ0FwcGxpY2F0aW9uLmdldFVybFZpZXdwb3J0KCk7fWUoInZwIikuc3JjID0gdXJsO3Jl
dHVybiBmYWxzZTt9CmZ1bmN0aW9uIG9wZW5JbmZvV2luZG93KGlkKSB7aWYgKGdBcHBsaWNhdGlv
biAmJiBpZCAhPSAiIikge2dBcHBsaWNhdGlvbi5vcGVuSW5mb1dpbmRvdyhpZCk7cmV0dXJuIGZh
bHNlO31yZXR1cm4gdHJ1ZTt9CmZ1bmN0aW9uIHByZXBhcmVGb3JtKGZvcm0sIGNpZCkge2dBcHBs
aWNhdGlvbi5wcmVwYXJlRm9ybShmb3JtLCBjaWQpO30KZnVuY3Rpb24gc2hvd1BvbHlsaW5lQmxv
d3VwKGxpbmVJZCwgaW5kZXgpIHtpZiAoZ0FwcGxpY2F0aW9uKSB7Z0FwcGxpY2F0aW9uLnNob3dQ
b2x5bGluZUJsb3d1cChsaW5lSWQsIGluZGV4KTtyZXR1cm4gZmFsc2U7fXJldHVybiB0cnVlO30K
ZnVuY3Rpb24gdG9nZ2xlQ3NpKGV2LCBpZCwgY29udHJvbCkge2lmICh0eXBlb2YgR0NsYXNzVG9n
Z2xlICE9ICJ1bmRlZmluZWQiKSB7dmFyIGVsID0gZShpZCk7R0NsYXNzVG9nZ2xlKGV2LGVsLCBb
ImRpcmNzaV9oaWRkZW4iLCAiZGlyY3NpIl0sY29udHJvbCwgWyJjc2lvcGVuZXIiLCAiY3NpY2xv
c2VyIl0pO3JldHVybiBmYWxzZTt9cmV0dXJuIHRydWU7fQpmdW5jdGlvbiByZXNpemVNYXAoKSB7
dmFyIG9mZnNldCA9IDA7Zm9yICh2YXIgZWxlbSA9IGUoIm1hcCIpOyBlbGVtICE9IG51bGw7IGVs
ZW0gPSBlbGVtLm9mZnNldFBhcmVudCkge29mZnNldCArPSBlbGVtLm9mZnNldFRvcDt9dmFyIHdp
bmRvd0hlaWdodCA9IGdldFdpbmRvd0hlaWdodCgpO3ZhciBoZWlnaHQgPSB3aW5kb3dIZWlnaHQg
LSBvZmZzZXQgLSAxMDtpZiAoaGVpZ2h0ID49IDApIHtlKCJtYXAiKS5zdHlsZS5oZWlnaHQgPSBo
ZWlnaHQgKyAicHgiO2UoInBhbmVsIikuc3R5bGUuaGVpZ2h0ID0gaGVpZ2h0ICsgInB4Ijt9fXZh
ciBnRm9ybXMgPSBbInEiLCJsIiwiZCJdOwpmdW5jdGlvbiBzd2l0Y2hGb3JtKG5hbWUpIHtmb3Ig
KHZhciBpID0gMDsgaSA8IGdGb3Jtcy5sZW5ndGg7IGkrKykge3ZhciBuID0gZ0Zvcm1zW2ldO2Uo
biArICJfZiIpLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7ZShuICsgIl9sIikuY2xhc3NOYW1lID0g
InVuc2VsZWN0ZWQiO31lKG5hbWUgKyAiX2YiKS5zdHlsZS5kaXNwbGF5ID0gIiI7ZShuYW1lICsg
Il9sIikuY2xhc3NOYW1lID0gInNlbGVjdGVkIjtlKG5hbWUgKyAiX2QiKS5mb2N1cygpO3JldHVy
biBmYWxzZTt9CmZ1bmN0aW9uIGlzU2VsZWN0ZWQoZm9ybSkge3JldHVybiBlKGZvcm0gKyAiX2wi
KS5jbGFzc05hbWUgPT0gInNlbGVjdGVkIjt9CmZ1bmN0aW9uIHRhYlVybCh1cmwpIHtpZiAoZ0Fw
cGxpY2F0aW9uKSB7dmFyIHEgPSAiIjt2YXIgc2VsID0gInNlbGVjdGVkIjtpZiAoaXNTZWxlY3Rl
ZCgicSIpKSB7cSA9IGUoInFfZCIpLnZhbHVlO30gZWxzZSBpZiAoaXNTZWxlY3RlZCgibCIpKSB7
cSA9IGUoImxfZCIpLnZhbHVlO2lmIChlKCJsX25lYXIiKS52YWx1ZSAmJiBlKCJsX25lYXIiKS52
YWx1ZSAhPSBnV2hlcmVNc2cpIHtxKz0gIiBuZWFyOiAiICsgZSgibF9uZWFyIikudmFsdWU7fX1l
bHNlIGlmIChpc1NlbGVjdGVkKCJkIikpIHtpZiAoZSgiZF9kIikudmFsdWUpIHtxID0gImZyb206
ICIgKyBlKCJkX2QiKS52YWx1ZTt9aWYgKGUoImRfZGFkZHIiKS52YWx1ZSkge3EgKz0gIiB0bzog
IiArIGUoImRfZGFkZHIiKS52YWx1ZTt9fXJldHVybiBnQXBwbGljYXRpb24uZ2V0VGFiVXJsKHVy
bCwgcSk7fSBlbHNlIHtyZXR1cm4gdXJsO319CmZ1bmN0aW9uIG9uU2VhcmNoKGZvcm0pIHtpZiAo
Z0FwcGxpY2F0aW9uKSB7Z0FwcGxpY2F0aW9uLnByZXBhcmVNYWluRm9ybShmb3JtKTt9aWYgKGZv
cm0ubmVhciAmJiBmb3JtLm5lYXIudmFsdWUgPT0gZ1doZXJlTXNnKSB7Zm9ybS5uZWFyLnZhbHVl
ID0gIiI7c2V0VGltZW91dCgKZnVuY3Rpb24oKSB7IG9uV2hlcmVCbHVyKGUoImxfbmVhciIpKTsg
fSwgMCk7fXJldHVybiB0cnVlO312YXIgZ1BlbmRpbmdWUGFnZSA9IG51bGw7dmFyIGdJbml0aWFs
UGFnZSA9IHRydWU7CmZ1bmN0aW9uIGxvYWRWUGFnZSh2UGFnZSwgc3RhdGVCb3gpIHtnSW5pdGlh
bFBhZ2UgPSBmYWxzZTtldmFsKCJ0cnkgeyBlKCdxX2QnKS5mb2N1cygpOyB9IGNhdGNoIChlKSB7
fSIpO2lmIChnQXBwbGljYXRpb24pIGdBcHBsaWNhdGlvbi5jbGVhcigpO2xvYWRWUGFnZVRleHQo
dlBhZ2UpO2lmICghZ0FwcGxpY2F0aW9uKSB7Z1BlbmRpbmdWUGFnZSA9IHZQYWdlO2dQZW5kaW5n
U3RhdGUgPSBzdGF0ZUJveDtyZXR1cm47fSBlbHNlIHtnQXBwbGljYXRpb24ubG9hZFZQYWdlKHZQ
YWdlLCBzdGF0ZUJveCk7dXBkYXRlUGFnZVVybCgpO319CmZ1bmN0aW9uIGxvYWRIb21lUGFnZSgp
IHtpZiAoIWdJbml0aWFsUGFnZSkge2xvYWRWUGFnZShnSG9tZVZQYWdlLCBlKCJob21lc3RhdGUi
KSk7fX0KZnVuY3Rpb24gbG9hZFBlbmRpbmcoKSB7aWYgKGdQZW5kaW5nVlBhZ2UpIHtnQXBwbGlj
YXRpb24ubG9hZFZQYWdlKGdQZW5kaW5nVlBhZ2UsIGdQZW5kaW5nU3RhdGUpO3VwZGF0ZVBhZ2VV
cmwoKTt9fQpmdW5jdGlvbiBsb2FkVlBhZ2VUZXh0KHZQYWdlKSB7d2luZG93LmRvY3VtZW50LnRp
dGxlID0gdlBhZ2UudGl0bGU7Zm9yICh2YXIgaSA9IDA7IGkgPCBnRm9ybXMubGVuZ3RoOyBpKysp
IHt2YXIgaWQgPSBnRm9ybXNbaV07dmFyIGZvcm0gPSBlKGlkICsgIl9mb3JtIik7Zm9yICh2YXIg
bmFtZSBpbiB2UGFnZS5mb3JtW2lkXSkge3ZhciBpbnB1dCA9IGZvcm1bbmFtZV07aWYgKGlucHV0
KSB7aW5wdXQudmFsdWUgPSB2UGFnZS5mb3JtW2lkXVtuYW1lXTt9fX1vbldoZXJlQmx1cihlKCJs
X25lYXIiKSk7c3dpdGNoRm9ybSh2UGFnZS5mb3JtLnNlbGVjdGVkKTt2YXIgcCA9IGUoInBhbmVs
Iik7dmFyIHBzID0gcC5zdHlsZTt2YXIgbSA9IGUoIm1hcCIpO3ZhciBtcyA9IG0uc3R5bGU7dmFy
IHYgPSAocHMuZGlzcGxheSAhPSAibm9uZSIpO2lmICh2UGFnZS5wYW5lbCkge3AuaW5uZXJIVE1M
ID0gdlBhZ2UucGFuZWw7cC5zY3JvbGxUb3AgPSAwO2lmICghdikge21zLm1hcmdpbkxlZnQgPSBn
TWFwTWFyZ2luO3BzLmRpc3BsYXkgPSAiIjt9fSBlbHNlIGlmICh2KSB7cHMuZGlzcGxheSA9ICJu
b25lIjtnTWFwTWFyZ2luID0gbXMubWFyZ2luTGVmdDttcy5tYXJnaW5MZWZ0ID0gIjBweCI7cC5p
bm5lckhUTUwgPSAiIjt9fXZhciBnV2hlcmVNc2cgPSAidGhlIG1hcCBhcmVhIGJlbG93IjsKZnVu
Y3Rpb24gb25XaGVyZUJsdXIodykge2lmICh3LnZhbHVlLmxlbmd0aCA9PSAwIHx8IHcudmFsdWUg
PT0gZ1doZXJlTXNnKSB7dy5zdHlsZS5jb2xvciA9ICJncmF5Ijt3LnZhbHVlID0gZ1doZXJlTXNn
O30gZWxzZSB7dy5zdHlsZS5jb2xvciA9ICIiO319CmZ1bmN0aW9uIG9uV2hlcmVGb2N1cyh3KSB7
aWYgKHcuc3R5bGUuY29sb3IgPT0gImdyYXkiKSB7dy52YWx1ZSA9ICIiO3cuc3R5bGUuY29sb3Ig
PSAiIjt9fQp2YXIgZ0hvbWVWUGFnZSA9IHsKICB0aXRsZTogIkdvb2dsZSBMb2NhbCAtIGZyb206
IDIwIG1hcmtldCBzdCwgOTQxMTEgdG86IDEwIG1hcmtldCBzdCwgOTQxMTEiLAogIHVybDogIi9t
YXBzP2Y9ZCZobD1lbiZzYWRkcj0yMCttYXJrZXQrc3QsKzk0MTExJmRhZGRyPTEwK21hcmtldCtz
dCwrOTQxMTEiLAogIHVybFZpZXdwb3J0OiBmYWxzZSxmb3JtOiB7c2VsZWN0ZWQ6ICJkIiwKICAg
IHE6IHtxOiAiZnJvbTogMjAgbWFya2V0IHN0LCA5NDExMSB0bzogMTAgbWFya2V0IHN0LCA5NDEx
MSJ9LAogICAgbDoge3E6ICIiLG5lYXI6ICIxMCBtYXJrZXQgc3QsIDk0MTExIn0sCiAgICBkOiB7
c2FkZHI6ICIyMCBtYXJrZXQgc3QsIDk0MTExIixkYWRkcjogIjEwIG1hcmtldCBzdCwgOTQxMTEi
fX0sCiAgc3RpY2t5RmxhZ3M6IHtobDogImVuIixob3N0OiAiIn0sCiAgdmlld3BvcnQ6IHtjZW50
ZXI6IHtsYXQ6IDM3Ljc5NDM1MCxsbmc6IC0xMjIuMzk0OTc1fSxzcGFuOiB7bGF0OiAwLjAwMDA2
MCxsbmc6IDAuMDAwMDkwfSxtYXBUeXBlOiBudWxsfSwKICBvdmVybGF5czoge21hcmtlcnM6IFsK
ICAgICAgIHtpZDogJ3N0YXJ0JyxsYXQ6IDM3Ljc5NDMyMCxsbmc6IC0xMjIuMzk1MDIwLGltYWdl
OiAnL21hcGZpbGVzL2RkLXN0YXJ0LnBuZycsaW5mb1dpbmRvdzogCmZ1bmN0aW9uKCkge3RoaXMu
c2hvd01hcEJsb3d1cCgpO319LAogICAgICAge2lkOiAnZW5kJyxsYXQ6IDM3Ljc5NDM4MCxsbmc6
IC0xMjIuMzk0OTMwLGltYWdlOiAnL21hcGZpbGVzL2RkLWVuZC5wbmcnLGluZm9XaW5kb3c6IApm
dW5jdGlvbigpIHt0aGlzLnNob3dNYXBCbG93dXAoKTt9fV0sCiAgICAgcG9seWxpbmVzOiBbe2lk
OiAnZCcscG9pbnRzOiAnb3V0ZUZ6Z2BqVktRJyxsZXZlbHM6ICdCQicsbnVtTGV2ZWxzOiA0LHpv
b21GYWN0b3I6IDMyfV19LAogIHBhbmVsOiAnPGRpdiBjbGFzcz1cImRpclwiPjx0YWJsZSBjbGFz
cz1cInN1bW1hcnlcIj5cCiAgICAgICAgICA8eHRyIGNsYXNzPVwibWlsZXN0b25lXCIgb25jbGlj
az1cIm9wZW5JbmZvV2luZG93KFwnc3RhcnRcJylcIj5cCiAgICAgICAgICAgIDx4dGQgY2xhc3M9
XCJuYW1lIGxpbmtcIj48YSBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApXCIgb25jbGljaz1cInRo
aXMuYmx1cigpXCI+U3RhcnQgYWRkcmVzczwvYT46PC94dGQ+XAogICAgICAgICAgICA8eHRkIGlk
PVwicGFuZWxfc3RhcnRcIiBjbGFzcz1cInZhbHVlXCI+MjAgTWFya2V0IFN0PGJyLz5TYW4gRnJh
bmNpc2NvLCBDQSA5NDExMTxici8+PC94dGQ+PC94dHI+XAogICAgICAgICAgPHh0ciBjbGFzcz1c
Im1pbGVzdG9uZVwiIG9uY2xpY2s9XCJvcGVuSW5mb1dpbmRvdyhcJ2VuZFwnKVwiPlwKICAgICAg
ICAgICAgPHh0ZCBjbGFzcz1cIm5hbWVcIj48YSBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApXCIg
b25jbGljaz1cInRoaXMuYmx1cigpXCI+RW5kIGFkZHJlc3M8L2E+OjwveHRkPlwKICAgICAgICAg
ICAgPHh0ZCBpZD1cInBhbmVsX2VuZFwiIGNsYXNzPVwidmFsdWVcIj4xMCBNYXJrZXQgU3Q8YnIv
PlNhbiBGcmFuY2lzY28sIENBIDk0MTExPGJyLz48L3h0ZD48L3h0cj5cCiAgICAgICAgICA8dHI+
XAogICAgICAgICAgICA8dGQgY2xhc3M9XCJuYW1lXCI+RGlzdGFuY2U6PC90ZD5cCiAgICAgICAg
ICAgIDx0ZCBjbGFzcz1cInZhbHVlXCI+MzQmIzE2MDtmdCYjMTYwOyhhYm91dCYjMTYwOzAgc2Vj
cyk8L3RkPjwvdHI+PC90YWJsZT5cCiAgICAgICAgICA8ZGl2IGNsYXNzPVwicmV2ZXJzZVwiPjxh
IGhyZWY9XCIvbWFwcz9mPWQmYW1wO2hsPWVuJmFtcDtzYWRkcj0xMCttYXJrZXQrc3QsKzk0MTEx
JmFtcDtkYWRkcj0yMCttYXJrZXQrc3QsKzk0MTExXCIgb25jbGljaz1cInJldHVybiBsb2FkVXJs
KHRoaXMuaHJlZilcIj5SZXZlcnNlIGRpcmVjdGlvbnM8L2E+PC9kaXY+XAogICAgICAgICAgPGRp
diBjbGFzcz1cInByaW50c3BhY2VyIG5vc2NyZWVuXCI+JiMxNjA7PC9kaXY+XAogICAgICAgICAg
PHRhYmxlIGNsYXNzPVwic3RlcHNcIj48dHIgb25jbGljaz1cInNob3dQb2x5bGluZUJsb3d1cChc
J2RcJywgMClcIj5cCiAgICAgICAgICAgIDx0ZCBjbGFzcz1cIm51bSBub3ByaW50XCI+PGEgaHJl
Zj1cImphdmFzY3JpcHQ6dm9pZCgwKVwiPjE8L2E+LjwvdGQ+XAogICAgICAgICAgICA8dGQgY2xh
c3M9XCJudW0gbm9zY3JlZW5cIj4xLjwvdGQ+XAogICAgICAgICAgICA8dGQgY2xhc3M9XCJkZXNj
XCIgaWQ9XCJwYW5lbF8wXCI+SGVhZCBmcm9tIDxiPk1hcmtldCBTdDwvYj4gLSBnbyYjMTYwOzxi
PjM0JiMxNjA7ZnQ8L2I+PC90ZD48L3RyPjwvdGFibGU+XAogICAgICAgICAgJywKICAgcHJpbnRo
ZWFkZXI6ICc8dGFibGUgY2xhc3M9XCJwcmludHN1bW1hcnlcIj48dHI+XAogICAgICAgICAgICAg
ICAgICAgPHh0ZCBjbGFzcz1cIm5hbWVcIj5TdGFydCBhZGRyZXNzOjwveHRkPlwKICAgICAgICAg
ICAgICAgICAgIDx4dGQgaWQ9XCJoZWFkZXJfc3RhcnRcIiBjbGFzcz1cInZhbHVlXCI+MjAgTWFy
a2V0IFN0PGJyLz5TYW4gRnJhbmNpc2NvLCBDQSA5NDExMTxici8+PC94dGQ+PC90cj5cCiAgICAg
ICAgICAgICAgICAgPHRyPlwKICAgICAgICAgICAgICAgICAgIDx4dGQgY2xhc3M9XCJuYW1lXCI+
RW5kIGFkZHJlc3M6PC94dGQ+XAogICAgICAgICAgICAgICAgICAgPHh0ZCBpZD1cImhlYWRlcl9l
bmRcIiBjbGFzcz1cInZhbHVlXCI+MTAgTWFya2V0IFN0PGJyLz5TYW4gRnJhbmNpc2NvLCBDQSA5
NDExMTxici8+PC94dGQ+PC90cj5cCiAgICAgICAgICAgICAgICAgPHRyPlwKICAgICAgICAgICAg
ICAgICAgIDx0ZCBjbGFzcz1cIm5hbWVcIj5EaXN0YW5jZTo8L3RkPlwKICAgICAgICAgICAgICAg
ICAgIDx0ZCBjbGFzcz1cInZhbHVlXCI+MzQmIzE2MDtmdCYjMTYwOyhhYm91dCYjMTYwOzAgc2Vj
cyk8L3RkPjwvdHI+PC90YWJsZT4nfTsvL11dPgo8L3NjcmlwdD48L2hlYWQ+CgoKPGJvZHkgb25y
ZXNpemU9InJlc2l6ZU1hcCgpIiBvbnVubG9hZD0iR1VubG9hZCgpIj4KPCEtLQo8aWZyYW1lIG5h
bWU9InZwIiBpZD0idnAiIHNyYz0iL21hcGZpbGVzL2hvbWUzLmh0bWwiPjwvaWZyYW1lPgo8aW5w
dXQgdHlwZT0idGV4dCIgaWQ9ImhvbWVzdGF0ZSIvPgo8ZGl2IGlkPSJnYWlhIj4KPHRhYmxlIGJv
cmRlcj0wIGNlbGxzcGFjaW5nPTAgY2VsbHBhZGRpbmc9MCB3aWR0aD0xMDAlPjx0cj48dGQgYWxp
Z249cmlnaHQgbm93cmFwPjxmb250IHNpemU9LTE+CjxhIGhyZWY9Imh0dHA6Ly9sb2NhbC5nb29n
bGUuY29tL3N1cHBvcnQ/aGw9ZW4iPkhlbHA8L2E+PC9mb250PjwvdGQ+PC90cj4KPHRyIGhlaWdo
dD00Pjx0ZD48aW1nIGFsdD0iIiB3aWR0aD0xIGhlaWdodD0xPjwvdGQ+PC90cj48L3RhYmxlPjwv
ZGl2PgoKPGRpdiBpZD0iaGVhZGVyIj48dGFibGUgaWQ9InNlYXJjaCI+PHRyPjx0ZCBjbGFzcz0i
bG9nbyIgcm93c3Bhbj0iMiI+PGEgaHJlZj0iL21hcHMiPgo8aW1nIHNyYz0iaHR0cDovL3d3dy5n
b29nbGUuY29tL2ludGwvZW5fdXMvaW1hZ2VzL2xvY2FsX3Jlc19sb2dvMy5naWYiIHdpZHRoPSIx
NTAiIGhlaWdodD0iNTUiIGFsdD0iR28gdG8gR29vZ2xlIExvY2FsIEhvbWUiLz48L2E+PC90ZD4K
PHRkIGNsYXNzPSJ0YWJzIiBjb2xzcGFuPSIzIj48ZGl2IGlkPSJyZXN1bHR0YWJzIiBzdHlsZT0i
ZGlzcGxheTogbm9uZSI+Cgo8c2NyaXB0PjwhLS0KZnVuY3Rpb24gcXMoZWwpIHtpZiAod2luZG93
LlJlZ0V4cCAmJiB3aW5kb3cuZW5jb2RlVVJJQ29tcG9uZW50KSB7aWYod2luZG93LnRhYlVybCl7
ZWwuaHJlZj13aW5kb3cudGFiVXJsKGVsLmhyZWYpO30gZWxzZSBpZihfbSl7ZWwuaHJlZj1fbS5n
ZXRUYWJVUkwoZWwuaHJlZik7fX1yZXR1cm4gMTt9Ci8vIC0tPgo8L3NjcmlwdD4KCjx0YWJsZSBi
b3JkZXI9MCBjZWxscGFkZGluZz00IGNlbGxzcGFjaW5nPTA+PHRyPgo8dGQ+PGZvbnQgc2l6ZT0t
MT4KPGEgaWQ9dDBhIGNsYXNzPXEgaHJlZj0iaHR0cDovL3d3dy5nb29nbGUuY29tL3NlYXJjaD9m
PWQmaGw9ZW4mc2FkZHI9MjArbWFya2V0K3N0LCs5NDExMSZkYWRkcj0xMCttYXJrZXQrc3QsKzk0
MTExJnNhPU4mdGFiPWx3IiBvbkNsaWNrPSJyZXR1cm4gcXModGhpcyk7Ij5XZWI8L2E+Jm5ic3A7
Jm5ic3A7Jm5ic3A7Jm5ic3A7CjxhIGlkPXQxYSBjbGFzcz1xIGhyZWY9Imh0dHA6Ly9pbWFnZXMu
Z29vZ2xlLmNvbS9pbWFnZXM/Zj1kJmhsPWVuJnNhZGRyPTIwK21hcmtldCtzdCwrOTQxMTEmZGFk
ZHI9MTArbWFya2V0K3N0LCs5NDExMSZzYT1OJnRhYj1saSIgb25DbGljaz0icmV0dXJuIHFzKHRo
aXMpOyI+SW1hZ2VzPC9hPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOwo8YSBpZD10MmEgY2xhc3M9
cSBocmVmPSJodHRwOi8vZ3JvdXBzLmdvb2dsZS5jb20vZ3JvdXBzP2Y9ZCZobD1lbiZzYWRkcj0y
MCttYXJrZXQrc3QsKzk0MTExJmRhZGRyPTEwK21hcmtldCtzdCwrOTQxMTEmc2E9TiZ0YWI9bGci
IG9uQ2xpY2s9InJldHVybiBxcyh0aGlzKTsiPkdyb3VwczwvYT4mbmJzcDsmbmJzcDsmbmJzcDsm
bmJzcDsKPGEgaWQ9dDRhIGNsYXNzPXEgaHJlZj0iaHR0cDovL25ld3MuZ29vZ2xlLmNvbS9uZXdz
P2Y9ZCZobD1lbiZzYWRkcj0yMCttYXJrZXQrc3QsKzk0MTExJmRhZGRyPTEwK21hcmtldCtzdCwr
OTQxMTEmc2E9TiZ0YWI9bG4iIG9uQ2xpY2s9InJldHVybiBxcyh0aGlzKTsiPk5ld3M8L2E+Jm5i
c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7CjxhIGlkPXQ1YSBjbGFzcz1xIGhyZWY9Imh0dHA6Ly9mcm9v
Z2xlLmdvb2dsZS5jb20vZnJvb2dsZT9mPWQmaGw9ZW4mc2FkZHI9MjArbWFya2V0K3N0LCs5NDEx
MSZkYWRkcj0xMCttYXJrZXQrc3QsKzk0MTExJnNhPU4mdGFiPWxmIiBvbkNsaWNrPSJyZXR1cm4g
cXModGhpcyk7Ij5Gcm9vZ2xlPC9hPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzxiPkxvY2FsPC9i
PiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzxiPgo8YSBocmVmPSJodHRwOi8vd3d3Lmdvb2dsZS5j
b20vaW50bC9lbi9vcHRpb25zLyIgY2xhc3M9cT5tb3JlJm5ic3A7JnJhcXVvOzwvYT48L2I+PC9m
b250PjwvdGQ+PC90cj48L3RhYmxlPgoKPC9kaXY+Ci0tPgoKPHh4eGRpdiBpZD0iaG9tZXRhYnMi
Pgo8c2NyaXB0PjwhLS0KZnVuY3Rpb24gcXMoZWwpIHtpZiAod2luZG93LlJlZ0V4cCAmJiB3aW5k
b3cuZW5jb2RlVVJJQ29tcG9uZW50KSB7aWYod2luZG93LnRhYlVybCl7ZWwuaHJlZj13aW5kb3cu
dGFiVXJsKGVsLmhyZWYpO30gZWxzZSBpZihfbSl7ZWwuaHJlZj1fbS5nZXRUYWJVUkwoZWwuaHJl
Zik7fX1yZXR1cm4gMTt9Ci8vIC0tPjwvc2NyaXB0PgoKPCEtLQo8dGFibGUgYm9yZGVyPTAgY2Vs
bHNwYWNpbmc9MCBjZWxscGFkZGluZz00Pjx0cj4KPHRkIG5vd3JhcD48Zm9udCBzaXplPS0xPgog
IDxhIGlkPTBhIGNsYXNzPXEgaHJlZj0iL3dlYmhwP2hsPWVuJnRhYj1sdyIgb25DbGljaz0icmV0
dXJuIHFzKHRoaXMpOyI+V2ViPC9hPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOwogIDxhIGlkPTFh
IGNsYXNzPXEgaHJlZj0iL2ltZ2hwP2hsPWVuJnRhYj1saSIgb25DbGljaz0icmV0dXJuIHFzKHRo
aXMpOyI+SW1hZ2VzPC9hPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOwogIDxhIGlkPTJhIGNsYXNz
PXEgaHJlZj0iaHR0cDovL2dyb3Vwcy5nb29nbGUuY29tL2dycGhwP2hsPWVuJnRhYj1sZyIgb25D
bGljaz0icmV0dXJuIHFzKHRoaXMpOyI+R3JvdXBzPC9hPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw
OwogIDxhIGlkPTRhIGNsYXNzPXEgaHJlZj0iaHR0cDovL25ld3MuZ29vZ2xlLmNvbS9ud3NocD9o
bD1lbiZ0YWI9bG4iIG9uQ2xpY2s9InJldHVybiBxcyh0aGlzKTsiPk5ld3M8L2E+Jm5ic3A7Jm5i
c3A7Jm5ic3A7Jm5ic3A7CiAgPGEgaWQ9NWEgY2xhc3M9cSBocmVmPSJodHRwOi8vZnJvb2dsZS5n
b29nbGUuY29tL2ZyZ2hwP2hsPWVuJnRhYj1sZiIgb25DbGljaz0icmV0dXJuIHFzKHRoaXMpOyI+
RnJvb2dsZTwvYT4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsKICA8Yj5Mb2NhbDwvYj4mbmJzcDsm
bmJzcDsmbmJzcDsmbmJzcDs8Yj4KICA8YSBocmVmPSJodHRwOi8vd3d3Lmdvb2dsZS5jb20vaW50
bC9lbi9vcHRpb25zLyIgY2xhc3M9cT5tb3JlJm5ic3A7JnJhcXVvOzwvYT48L2I+PC9mb250Pjwv
dGQ+PC90cj48L3RhYmxlPgotLT4KPC94eHhkaXY+CgoKCjwveHh4dGQ+PC94eHh0cj4KPHh4eHRy
Pgo8eHh4dGQgY2xhc3M9ImJveCI+Cjx4eHh0YWJsZT4KPHh4eHRyPgo8eHh4dGQ+PGRpdiBjbGFz
cz0iYnhmbSI+CjxkaXYgaWQ9InFfZiI+Cjxmb3JtIGlkPSJxX2Zvcm0iIGFjdGlvbj0iL21hcHMi
IHRhcmdldD0idnAiIG9uc3VibWl0PSJyZXR1cm4gb25TZWFyY2godGhpcykiPgo8L2Zvcm0+Cjwv
ZGl2Pgo8ZGl2IGlkPSJsX2YiIHN0eWxlPSJkaXNwbGF5OiBub25lIj48Zm9ybSBpZD0ibF9mb3Jt
IiBhY3Rpb249Ii9tYXBzIiB0YXJnZXQ9InZwIiBvbnN1Ym1pdD0icmV0dXJuIG9uU2VhcmNoKHRo
aXMpIj48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJmIiB2YWx1ZT0ibCIvPjxpbnB1dCB0eXBl
PSJoaWRkZW4iIG5hbWU9Im91dHB1dCIgdmFsdWU9ImpzIi8+PGlucHV0IHR5cGU9ImhpZGRlbiIg
bmFtZT0iaGwiIHZhbHVlPSJlbiIvPjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InNsbCIgdmFs
dWU9IiIvPjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InNzcG4iIHZhbHVlPSIiLz4KPHh4eHRh
YmxlIGNsYXNzPSJmb3JtIj4KPHh4eHRyIGNsYXNzPSJpbnB1dCI+CjwhLS0gPHRkPjxpbnB1dCBp
ZD0ibF9kIiB0eXBlPSJ0ZXh0IiBuYW1lPSJxIiBzaXplPSIyMCIvPjwvdGQ+ICAgIC0tPgo8aW5w
dXQgaWQ9ImxfbmVhciIgdHlwZT0idGV4dCIgbmFtZT0ibmVhciIgc2l6ZT0iMzMiIG9uZm9jdXM9
Im9uV2hlcmVGb2N1cyh0aGlzKSIgb25ibHVyPSJvbldoZXJlQmx1cih0aGlzKSIvPgo8IS0tIDx0
ZD48aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJidG5HIiB2YWx1ZT0iU2VhcmNoIi8+PC90ZD4g
LS0+CjwveHh4dHI+CjwhLS0KPHRyIGNsYXNzPSJsYWJlbHMiPgo8dGQ+V2hhdCZuYnNwOzxzcGFu
IGNsYXNzPSJleGFtcGxlIj5lLmcuLCBwaXp6YTwvc3Bhbj48L3RkPgo8dGQgY29sc3Bhbj0iMiI+
V2hlcmUmbmJzcDs8c3BhbiBjbGFzcz0iZXhhbXBsZSI+ZS5nLiwgUG91Z2hrZWVwc2llLCBOWTwv
c3Bhbj48L3RkPjwvdHI+Ci0tPgo8L3h4eHRhYmxlPjwvZm9ybT48L2Rpdj4KCjxkaXYgaWQ9ImRf
ZiIgc3R5bGU9ImRpc3BsYXk6IG5vbmUiPjxmb3JtIGlkPSJkX2Zvcm0iIGFjdGlvbj0iL21hcHMi
IHRhcmdldD0idnAiIG9uc3VibWl0PSJyZXR1cm4gb25TZWFyY2godGhpcykiPgogIDxpbnB1dCB0
eXBlPSJoaWRkZW4iIG5hbWU9ImYiIHZhbHVlPSJkIi8+PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFt
ZT0ib3V0cHV0IiB2YWx1ZT0ianMiLz4KICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJobCIg
dmFsdWU9ImVuIi8+PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ic2xsIiB2YWx1ZT0iIi8+CiAg
PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ic3NwbiIgdmFsdWU9IiIvPgo8eHh0YWJsZSBjbGFz
cz0iZm9ybSI+PHh4dHIgY2xhc3M9ImlucHV0Ij4KPHh4dGQ+PGlucHV0IGlkPSJkX2QiIHR5cGU9
ImNoZWNrYm94IiBuYW1lPSJzYWRkciIgc2l6ZT0iMjYiIHRhYmluZGV4PSIxIi8+PC94eHRkPgo8
eHh0ZD48YSBocmVmPSIvbWFwcz9mPWQiIG9uY2xpY2s9InZhciBmID0gZSgnZF9mb3JtJyk7dmFy
IHRtcCA9IGYuc2FkZHIudmFsdWU7Zi5zYWRkci52YWx1ZSA9IGYuZGFkZHIudmFsdWU7Zi5kYWRk
ci52YWx1ZSA9IHRtcDtyZXR1cm4gZmFsc2U7Ij4KICAgIDxpbWcgd2lkdGg9IjEwIiBoZWlnaHQ9
IjE0IiBhbHQ9IlN3aXRjaCBzdGFydCBhbmQgZW5kIGFkZHJlc3MiIHRpdGxlPSJTd2l0Y2ggc3Rh
cnQgYW5kIGVuZCBhZGRyZXNzIiBzcmM9Ii9pbnRsL2VuX3VzL21hcGZpbGVzL2RkaXJmbGlwLmdp
ZiIvPjwvYT48L3h4dGQ+Cjx4eHRkPjxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0iZF9kYWRkciIgbmFt
ZT0iZGFkZHIiIHNpemU9IjI1IiB0YWJpbmRleD0iMiIvPjwveHh0ZD4KPHh4dGQ+PGlucHV0IHR5
cGU9InN1Ym1pdCIgbmFtZT0iYnRuRyIgdGFiaW5kZXg9IjMiIHZhbHVlPSJTZWFyY2giLz48L3h4
dGQ+CjwveHh0cj4KPCEtLSAgPHRyIGNsYXNzPSJsYWJlbHMiPjx0ZCBjb2xzcGFuPSIyIj5TdGFy
dCBhZGRyZXNzPC90ZD48dGQgY29sc3Bhbj0iMiI+RW5kIGFkZHJlc3M8L3RkPjwvdHI+Ci0tPgo8
L3h4dGFibGU+PC9mb3JtPjwvZGl2PgoKCjwvZGl2PjwvdGQ+Cjx4eHh0ZCBjbGFzcz0iaGVscGxp
bmtzIj4KICAgPGRpdiBpZD0icV9sIiBjbGFzcz0ic2VsZWN0ZWQiPjxhIG9uY2xpY2s9InJldHVy
biBzd2l0Y2hGb3JtKCdxJykiIGhyZWY9Ii9tYXBzP2Y9cSI+U2VhcmNoIHRoZSBtYXA8L2E+PC9k
aXY+CiAgIDxkaXYgaWQ9ImxfbCIgY2xhc3M9InVuc2VsZWN0ZWQiPjxhIG9uY2xpY2s9InJldHVy
biBzd2l0Y2hGb3JtKCdsJykiIGhyZWY9Ii9tYXBzP2Y9bCI+RmluZCBidXNpbmVzc2VzPC9hPjwv
ZGl2PgogICA8ZGl2IGlkPSJkX2wiIGNsYXNzPSJ1bnNlbGVjdGVkIj48YSBvbmNsaWNrPSJyZXR1
cm4gc3dpdGNoRm9ybSgnZCcpIiBocmVmPSIvbWFwcz9mPWQiPkdldCBEaXJlY3Rpb25zPC9hPjwv
ZGl2Pgo8L3h4eHRkPgoKPC94eHh0cj4KPC94eHh0YWJsZT4KPC94eHh0ZD48L3h4dHI+CjwveHh0
YWJsZT4KPCEtLQo8dGFibGUgaWQ9InRpdGxlYmFyIj48dHI+Cjx0ZCBjbGFzcz0idGl0bGUiPkxv
Y2FsPC90ZD4KPHRkIGNsYXNzPSJsaW5rcyI+PGEgaHJlZj0iamF2YXNjcmlwdDp2b2lkKDApIiBp
ZD0icHJpbnQiPjxpbWcgc3JjPSIvaW50bC9lbl91cy9tYXBmaWxlcy9iYXJfaWNvbl9wcmludF8y
LmdpZiIgYWx0PSJQcmludCIvPiA8c3Bhbj5QcmludDwvc3Bhbj48L2E+PGEgaHJlZj0iL21hcHMi
IGlkPSJlbWFpbCI+PGltZyBzcmM9Ii9pbnRsL2VuX3VzL21hcGZpbGVzL2Jhcl9pY29uX2VtYWls
XzIuZ2lmIiBhbHQ9IkVtYWlsIi8+IDxzcGFuPkVtYWlsPC9zcGFuPjwvYT48YSBocmVmPSIvbWFw
cyIgaWQ9ImxpbmsiPjxpbWcgc3JjPSIvaW50bC9lbl91cy9tYXBmaWxlcy9iYXJfaWNvbl9saW5r
LmdpZiIgYWx0PSJMaW5rIHRvIHRoaXMgcGFnZSIvPiA8c3Bhbj5MaW5rIHRvIHRoaXMgcGFnZTwv
c3Bhbj48L2E+PC90ZD48L3RyPjwvdGFibGU+Ci0tPgo8L2Rpdj4KCjxkaXYgaWQ9InByaW50aGVh
ZGFyZWEiIGNsYXNzPSJub3NjcmVlbiI+Cjx0YWJsZSBjbGFzcz0icHJpbnRoZWFkdGFibGUiPjx0
cj4KPHRkIGNsYXNzPSJsb2dvIj48YSBocmVmPSIvbWFwcyI+CiAgPGltZyBzcmM9Imh0dHA6Ly93
d3cuZ29vZ2xlLmNvbS9pbnRsL2VuX3VzL2ltYWdlcy9sb2NhbF9yZXNfbG9nbzMuZ2lmIiB3aWR0
aD0iMTUwIiBoZWlnaHQ9IjU1IiBhbHQ9IkdvIHRvIEdvb2dsZSBMb2NhbCBIb21lIi8+PC9hPjwv
dGQ+Cjx0ZD48L3RkPgo8dGQ+PGRpdiBpZD0icHJpbnRoZWFkZXIiPjwvZGl2PjwvdGQ+PC90cj48
L3RhYmxlPgo8L2Rpdj4KCjxkaXYgaWQ9InBhZ2UiPjxkaXYgaWQ9Im1hcCI+PGRpdiBjbGFzcz0i
bG9hZGluZyI+TG9hZGluZy4uLjwvZGl2PjwvZGl2PjxkaXYgaWQ9InBhbmVsIj48L2Rpdj48L2Rp
dj4KCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4vLzwhW0NEQVRBWwppZiAoZSgicmVz
dWx0dGFicyIpICYmIGRvY3VtZW50LmxvY2F0aW9uLnBhdGhuYW1lICE9ICIvbG9jaHAiKSB7ZSgi
cmVzdWx0dGFicyIpLnN0eWxlLmRpc3BsYXkgPSAiIjtlKCJob21ldGFicyIpLnN0eWxlLmRpc3Bs
YXkgPSAibm9uZSI7fQpyZXNpemVNYXAoKTsKaWYgKCFnUGVuZGluZ1ZQYWdlKSB7bG9hZFZQYWdl
VGV4dChnSG9tZVZQYWdlKTtnUGVuZGluZ1ZQYWdlID0gZ0hvbWVWUGFnZTtnUGVuZGluZ1N0YXRl
ID0gZSgiaG9tZXN0YXRlIik7fQp4eEdMb2FkTWFwc1NjcmlwdCgpOy8vXV0+PC9zY3JpcHQ+Cgo8
aW1nIHNyYz0iL2ludGwvZW5fdXMvbWFwZmlsZXMvdHJhbnNwYXJlbnQucG5nIiBzdHlsZT0iZGlz
cGxheTpub25lIiBhbHQ9IiIvPgoKCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4vLzwh
W0NEQVRBWwpnID0gbnVsbDtsb2FkQXBwbGljYXRpb24oKTtsb2FkUGVuZGluZygpOy8vXV0+PC9z
Y3JpcHQ+Cgo8L2JvZHk+PC9odG1sPg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>7269</attachid>
            <date>2006-03-23 23:48:15 -0800</date>
            <delta_ts>2006-03-24 15:56:42 -0800</delta_ts>
            <desc>proposed patch</desc>
            <filename>7951.patch</filename>
            <type>text/plain</type>
            <size>2918</size>
            <attacher name="Trey Matteson">trey</attacher>
            
              <data encoding="base64">SW5kZXg6IHJlbmRlcmluZy9SZW5kZXJUYWJsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHJlbmRlcmluZy9S
ZW5kZXJUYWJsZS5oCShyZXZpc2lvbiAxMzQ2NSkKKysrIHJlbmRlcmluZy9SZW5kZXJUYWJsZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC05Miw2ICs5Miw3IEBACiAgICAgdmlydHVhbCB2b2lkIHBhaW50
Qm94RGVjb3JhdGlvbnMoUGFpbnRJbmZvJiwgaW50IF90eCwgaW50IF90eSk7CiAgICAgdmlydHVh
bCB2b2lkIGxheW91dCgpOwogICAgIHZpcnR1YWwgdm9pZCBjYWxjTWluTWF4V2lkdGgoKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgcmVjYWxjTWluTWF4V2lkdGhzKCk7CiAKICAgICB2aXJ0dWFsIFJlbmRl
ckJsb2NrKiBmaXJzdExpbmVCbG9jaygpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVG
aXJzdExldHRlcigpOwpJbmRleDogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuaAkocmV2aXNpb24gMTM0NjUpCisrKyByZW5kZXJp
bmcvUmVuZGVyT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQzNCw3ICs0MzQsNyBAQAogICAg
IC8qCiAgICAgICogRG9lcyB0aGUgbWluIG1heCB3aWR0aCByZWNhbGN1bGF0aW9ucyBhZnRlciBj
aGFuZ2VzLgogICAgICAqLwotICAgIHZvaWQgcmVjYWxjTWluTWF4V2lkdGhzKCk7CisgICAgdmly
dHVhbCB2b2lkIHJlY2FsY01pbk1heFdpZHRocygpOwogCiAgICAgLyoKICAgICAgKiBDYWxjdWxh
dGVzIHRoZSBhY3R1YWwgd2lkdGggb2YgdGhlIG9iamVjdCAob25seSBmb3Igbm9uIGlubGluZQpJ
bmRleDogcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSByZW5kZXJpbmcv
UmVuZGVyVGFibGUuY3BwCShyZXZpc2lvbiAxMzQ2NSkKKysrIHJlbmRlcmluZy9SZW5kZXJUYWJs
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0NSw2ICs1NDUsMTcgQEAKICAgICByZXR1cm4gMDsK
IH0KIAordm9pZCBSZW5kZXJUYWJsZTo6cmVjYWxjTWluTWF4V2lkdGhzKCkKK3sKKyAgICAvLyBy
ZWNhbGNNaW5NYXhXaWR0aHMgd29ya3MgZGVwdGggZmlyc3QuICBIb3dldmVyLCBvdXIgY2hpbGQg
Y2VsbHMgcmVseSBvbiB0aGUgZ3JpZHMgaW4gdGhlCisgICAgLy8gc2VjdGlvbnMgdG8gZG8gdGhl
aXIgY2FsY01pbk1heFdpZHRocyB3b3JrLiAgTm9ybWFsbHkgdGhlIHNlY3Rpb25zIGFyZSBzZXQg
dXAgZWFybHksIGFzIHRhYmxlCisgICAgLy8gY2VsbHMgYXJlIGFkZGVkLCBidXQgcmVsYXlvdXQg
Y2FuIGNhdXNlIHRoZSBjZWxscyB0byBiZSBmcmVlZCwgbGVhdmluZyBzdGFsZSBwdHJzIGluIHRo
ZSBzZWN0aW9ucycKKyAgICAvLyBncmlkcy4gIFdlIG11c3QgcmVmcmVzaCB0aG9zZSBncmlkcyBi
ZWZvcmUgdGhlIGNoaWxkIGNlbGxzIHRyeSB0byB1c2UgdGhlbS4KKyAgICBpZiAobmVlZFNlY3Rp
b25SZWNhbGMpCisgICAgICAgIHJlY2FsY1NlY3Rpb25zKCk7CisgICAgUmVuZGVyQmxvY2s6OnJl
Y2FsY01pbk1heFdpZHRocygpOworfQorCiB2b2lkIFJlbmRlclRhYmxlOjpyZWNhbGNTZWN0aW9u
cygpCiB7CiAgICAgdENhcHRpb24gPSAwOwpJbmRleDogQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IENoYW5nZUxvZwkocmV2aXNpb24gMTM0NjkpCisrKyBDaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwyMiBAQAorMjAwNi0wMy0yMyAgVHJleSBNYXR0ZXNvbiAgPHRyZXlAdXNhLm5l
dD4KKworICAgICAgICBSZXZpZXdlZCBieSBIeWF0dC4KKworICAgICAgICBodHRwOi8vYnVnemls
bGEub3BlbmRhcndpbi5vcmcvc2hvd19idWcuY2dpP2lkPTc5NTEKKyAgICAgICAgUkVHUkVTU0lP
TjogU2FmYXJpIGNyYXNoZXMgd2hlbiBwcmludGluZyBhIGdvb2dsZSBtYXAgdy9kaXJlY3Rpb25z
CisKKyAgICAgICAgVGVzdHM6IG5vbmUsIGJlY2F1c2UgSSBiZWxpZXZlIGl0IG9ubHkgaGFwcGVu
cyB3aGVuIHByaW50aW5nLCBkdWUgdG8gdGhlIHJlbGF5b3V0cworCisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlck9iamVjdC5oOgorICAgICAgICBNYWtlIG1ldGhvZCB2aXJ1YWwgdG8gYWxsb3cg
c3ViY2xhc3MgdG8gYWRkIHNvbWUgYmVoYXZpb3IgdG8gdGhlIHRyYXZlcnNhbC4KKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFi
bGU6OnJlY2FsY01pbk1heFdpZHRocyk6ICBBZGQgYW4gb3ZlcnJpZGUgb2YgdGhpcyBtZXRob2Qs
IHdoaWNoCisgICAgICAgIGVuc3VyZXMgdGhhdCBvdXIgc2VjdGlvbnMgYXJlIHVwIHRvIGRhdGUg
YmVmb3JlIHByb2NlZWRpbmcgd2l0aCB0aGUgZGVwdGgtZmlyc3QKKyAgICAgICAgdHJhdmVyc2Fs
LiAgVGhlIGNoaWxkIGNlbGxzIGRlcGVuZCBvbiB0aGlzIGluZm8gdG8gZG8gdGhlaXIgTWluTWF4
IHdvcmsuICBCZWNhdXNlCisgICAgICAgIG9mIGhvdyBwcmludGluZyBkb2VzIHJlbGF5b3V0cywg
d2hpY2ggZGVsZXRlcyBSZW5kZXJUYWJsZUNlbGxzLCB3ZSdkIGNyYXNoIGJ5CisJY2FsbGluZyB0
aGUgY2hpbGRyZW4gd2l0aCBzdGFsZSBwb2ludGVycyB0byB0aGUgb2xkIHRhYmxlY2VsbHMgaW4g
dGhlIHNlY3Rpb24uCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlLmg6CisKIDIwMDYt
MDMtMjMgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IEFkZWxlLgo=
</data>
<flag name="review"
          id="1937"
          type_id="1"
          status="-"
          setter="hyatt"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>7290</attachid>
            <date>2006-03-24 17:09:07 -0800</date>
            <delta_ts>2006-04-03 15:02:37 -0700</delta_ts>
            <desc>patch incorporating review comments</desc>
            <filename>7951.patch</filename>
            <type>text/plain</type>
            <size>2635</size>
            <attacher name="Trey Matteson">trey</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcAkocmV2aXNpb24gMTM0NjUp
CisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC04NSw2ICs4NSwxMiBAQCBMZW5ndGggUmVuZGVyVGFibGVDZWxsOjpzdHlsZU9yQ29sV2lk
dGgoCiAKIHZvaWQgUmVuZGVyVGFibGVDZWxsOjpjYWxjTWluTWF4V2lkdGgoKQogeworICAgIC8v
IHJlY2FsY01pbk1heFdpZHRocyB3b3JrcyBkZXB0aCBmaXJzdC4gIEhvd2V2ZXIsIHRoZSBjaGls
ZCBjZWxscyByZWx5IG9uIHRoZSBncmlkcyB1cCBpbiB0aGUKKyAgICAvLyBzZWN0aW9ucyB0byBk
byB0aGVpciBjYWxjTWluTWF4V2lkdGhzIHdvcmsuICBOb3JtYWxseSB0aGUgc2VjdGlvbnMgYXJl
IHNldCB1cCBlYXJseSwgYXMgdGFibGUKKyAgICAvLyBjZWxscyBhcmUgYWRkZWQsIGJ1dCByZWxh
eW91dCBjYW4gY2F1c2UgdGhlIGNlbGxzIHRvIGJlIGZyZWVkLCBsZWF2aW5nIHN0YWxlIHB0cnMg
aW4gdGhlIHNlY3Rpb25zJworICAgIC8vIGdyaWRzLiAgV2UgbXVzdCByZWZyZXNoIHRob3NlIGdy
aWRzIGJlZm9yZSB0aGUgY2hpbGQgY2VsbHMgdHJ5IHRvIHVzZSB0aGVtLgorICAgIHRhYmxlKCkt
PnJlY2FsY1NlY3Rpb25zSWZOZWVkZWQoKTsKKwogICAgIFJlbmRlckJsb2NrOjpjYWxjTWluTWF4
V2lkdGgoKTsKICAgICBpZiAoZWxlbWVudCgpICYmIHN0eWxlKCktPmF1dG9XcmFwKCkpIHsKICAg
ICAgICAgLy8gU2VlIGlmIG5vd3JhcCB3YXMgc2V0LgpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGFibGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJs
ZS5oCShyZXZpc2lvbiAxMzQ2NSkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTE2MCw2ICsxNjAsOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFs
IEludFJlY3QgZ2V0T3ZlcmZsb3dDbGlwUmVjdChpbnQgdHgsIGludCB0eSk7CiAKKyAgICB2b2lk
IHJlY2FsY1NlY3Rpb25zSWZOZWVkZWQoKTsKKwogcHJpdmF0ZToKICAgICB2b2lkIHJlY2FsY1Nl
Y3Rpb25zKCk7CiAKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHAJKHJldmlzaW9uIDEz
NDY1KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC01NDUsNiArNTQ1LDEyIEBAIFJlbmRlclRhYmxlQ29sICpSZW5kZXJUYWJsZTo6Y29sRWxl
bWVudCgKICAgICByZXR1cm4gMDsKIH0KIAordm9pZCBSZW5kZXJUYWJsZTo6cmVjYWxjU2VjdGlv
bnNJZk5lZWRlZCgpCit7CisgICAgaWYgKG5lZWRTZWN0aW9uUmVjYWxjKQorICAgICAgICByZWNh
bGNTZWN0aW9ucygpOworfQorCiB2b2lkIFJlbmRlclRhYmxlOjpyZWNhbGNTZWN0aW9ucygpCiB7
CiAgICAgdENhcHRpb24gPSAwOwpJbmRleDogV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzNDcyKQorKysgV2ViQ29yZS9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOSBAQAorMjAwNi0wMy0yNCAgVHJleSBNYXR0
ZXNvbiAgPHRyZXlAdXNhLm5ldD4KKworICAgICAgICBSZXZpZXdlZCBieSBIeWF0dC4KKworICAg
ICAgICBodHRwOi8vYnVnemlsbGEub3BlbmRhcndpbi5vcmcvc2hvd19idWcuY2dpP2lkPTc5NTEK
KyAgICAgICAgUkVHUkVTU0lPTjogU2FmYXJpIGNyYXNoZXMgd2hlbiBwcmludGluZyBhIGdvb2ds
ZSBtYXAgdy9kaXJlY3Rpb25zCisKKyAgICAgICAgVGVzdHM6IG5vbmUsIGJlY2F1c2UgSSBiZWxp
ZXZlIGl0IG9ubHkgaGFwcGVucyB3aGVuIHByaW50aW5nLCBkdWUgdG8gdGhlIHJlbGF5b3V0cwor
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRhYmxlOjpyZWNhbGNTZWN0aW9uc0lmTmVlZGVkKTogQWRkIG5ldyB1dGlsaXR5IHRv
IGxldCB0aGUgY2VsbHMKKyAgICAgICAgZW5zdXJlIHRoZSBzZWN0aW9ucycgZ3JpZCBkYXRhIGlz
IHVwIHRvIGRhdGUuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlLmg6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUYWJsZUNlbGw6OmNhbGNNaW5NYXhXaWR0aCk6ICBDYWxsIGFib3ZlIG1ldGhvZC4KKwogMjAw
Ni0wMy0yNCAgRXJpYyBTZWlkZWwgIDxlc2VpZGVsQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBtanMuCg==
</data>
<flag name="review"
          id="1939"
          type_id="1"
          status="+"
          setter="hyatt"
    />
          </attachment>
      

    </bug>

</bugzilla>