<?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>26501</bug_id>
          
          <creation_ts>2009-06-17 17:08:42 -0700</creation_ts>
          <short_desc>layoutTestController should have dumpAsMarkup</short_desc>
          <delta_ts>2010-04-27 14:06:49 -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>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ojan Vafai">ojan</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>aroben</cc>
    
    <cc>eric</cc>
    
    <cc>hamaji</cc>
    
    <cc>jmalonzo</cc>
    
    <cc>jparent</cc>
    
    <cc>levin</cc>
    
    <cc>mrowe</cc>
    
    <cc>rniwa</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>126606</commentid>
    <comment_count>0</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2009-06-17 17:08:42 -0700</bug_when>
    <thetext>This is for tests that care about the resultant DOM, not the rendering of the DOM. Note that these tests would *not* do pixel comparisons, so they have many of the advantages of dumpAsText tests. This is essentially sugar for a dumpAsText tests that spits out the body&apos;s innerHTML. 

Although, I wonder if it should also include the markup for the HTML and HEAD elements. Seems like that would be good.

Also, it should somehow print the page&apos;s selection if there is one. Here&apos;s the IRC discussion around that:
othermaciej: ojan: maybe there is a good way for the page itself to print the selection range, if there is a good way to do so
&lt;snip&gt;...&lt;/snip&gt;
ojan: othermaciej: i see two ways this could work
ojan: 1. after the markup dump, print the baseNode, baseOffset, etc like we do currently with the renderdumps
ojan: 2. actually include something like [START_SELECTION] inline in the markup
ojan: i prefer 2. it&apos;s hard to make sense of the serialized selection stuff in the renderdumps
othermaciej: 2. seems nice for reading though it&apos;s a bit harder to implement I think
othermaciej: since you can&apos;t just directly print document.innerHTML
othermaciej: (and then do separate selection dumping)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>126623</commentid>
    <comment_count>1</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2009-06-17 17:51:07 -0700</bug_when>
    <thetext>Darin suggested another potentially useful feature for dumpAsMarkup. He mentioned one thing we get out of the render tree dump is detecting when we inadvertantly make multiple adjacent text nodes. The editing code is not supposed to do that, but it is a common bug for it to accidentally do so. It would be very useful if markup dumping had an indicator for boundaries between multiple adjacent text nodes. That would automatically test for this bug in an even better way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>194908</commentid>
    <comment_count>2</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-03-01 19:06:10 -0800</bug_when>
    <thetext>This sounds similar to the output when calling dumpTree() from gdb on a node.  For position related nodes, it puts an asterisk on the left side of the line and write the offset at the end of the output.  It also shows cases where two text nodes are adjacent.  Maybe we can repurpose this output format?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>194912</commentid>
    <comment_count>3</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-03-01 19:23:20 -0800</bug_when>
    <thetext>One thing that&apos;s lost in the dumpTree view is the value of node attributes. For the editing tests, we&apos;ll want to see things like font-family. 

I was picturing something that would just be a modified form of innerHTML (maybe innerHTML takes an optional boolean?). Modified to add info for textnodes (e.g. wrap text nodes in &lt;webkit_test_text&gt;&lt;/webkit_test_text&gt; tags) and selections (e.g. &lt;webkit_test_selection&gt;&lt;/webkit_test_selection&gt;).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>203708</commentid>
    <comment_count>4</comment_count>
      <attachid>51570</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-03-24 18:00:19 -0700</bug_when>
    <thetext>Created attachment 51570
initial prototype

Not ready for review, but any feedback would be appreciated. Some questions I&apos;d like answered:
1. Does this output format look good (see the test&apos;s expected results)?
2. Should I commit this layout test or just rely on tests actually using dumpAsMarkup to act as the testing?

Some things I&apos;d like to do before putting it up for review:
1. Figure out how to include selection state
2. Make it work with other ports / TestShell</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>212104</commentid>
    <comment_count>5</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-04-13 15:02:15 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; 1. Does this output format look good (see the test&apos;s expected results)?

The output looks nice but is it possible to format them as a tree with indentations?  e.g. instead of 

&lt;html lang=&quot;en&quot;&gt;
&lt;body&gt;&lt;text&gt;\n &lt;/text&gt; 
&lt;p&gt;&lt;/p&gt; 
&lt;text&gt;\n &lt;/text&gt;&lt;text&gt;\n&lt;/text&gt;&lt;text&gt;\n&lt;/text&gt;&lt;/body&gt; 
&lt;/html&gt;

get

&lt;html lang=&quot;en&quot;&gt;
	&lt;body&gt;
		&lt;text&gt;\n &lt;/text&gt; 
		&lt;p&gt;&lt;/p&gt;
		&lt;text&gt;\n &lt;/text&gt;
		&lt;text&gt;\n&lt;/text&gt;
		&lt;text&gt;\n&lt;/text&gt;
	&lt;/body&gt; 
&lt;/html&gt;

This would improve the readability of the output at least for me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>217420</commentid>
    <comment_count>6</comment_count>
      <attachid>54367</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-04-26 18:27:57 -0700</bug_when>
    <thetext>Created attachment 54367
Patch-14001</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>217422</commentid>
    <comment_count>7</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-04-26 18:29:04 -0700</bug_when>
    <thetext>Darin and I talked about making this a JS file at the webkit conference. Here&apos;s my attempt. It&apos;s basically done except that I can&apos;t get the dumpAsText version to keep my indenting. Open to suggestions as to how to make it not strip whitespace.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>217858</commentid>
    <comment_count>8</comment_count>
      <attachid>54367</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-04-27 12:48:43 -0700</bug_when>
    <thetext>Comment on attachment 54367
Patch-14001

LayoutTests/editing/selection/dump-as-markup.html:16
 +  \ No newline at end of file


Should have newlines at ends of files.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>217889</commentid>
    <comment_count>9</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-04-27 13:29:57 -0700</bug_when>
    <thetext>Committed r58331: &lt;http://trac.webkit.org/changeset/58331&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>217911</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-04-27 13:51:10 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/58331 might have broken Qt Linux Release
The following changes are on the blame list:
http://trac.webkit.org/changeset/58329
http://trac.webkit.org/changeset/58330
http://trac.webkit.org/changeset/58331</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>217912</commentid>
    <comment_count>11</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-04-27 13:53:37 -0700</bug_when>
    <thetext>Apparently this patch as a new test that fails on Qt.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>217915</commentid>
    <comment_count>12</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-04-27 13:56:52 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; Apparently this patch as a new test that fails on Qt.

Ugh. I forgot to reset the expected result after adding the newline. Fix coming as soon as my build finishes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>217922</commentid>
    <comment_count>13</comment_count>
      <attachid>54452</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-04-27 14:05:52 -0700</bug_when>
    <thetext>Created attachment 54452
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>217924</commentid>
    <comment_count>14</comment_count>
      <attachid>54452</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-04-27 14:06:46 -0700</bug_when>
    <thetext>Comment on attachment 54452
Patch

Forgot to update the test result after adding the newline. Quick commit to fix the now failing test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>217925</commentid>
    <comment_count>15</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-04-27 14:06:49 -0700</bug_when>
    <thetext>Committed r58335: &lt;http://trac.webkit.org/changeset/58335&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>51570</attachid>
            <date>2010-03-24 18:00:19 -0700</date>
            <delta_ts>2010-04-26 18:27:51 -0700</delta_ts>
            <desc>initial prototype</desc>
            <filename>foo.diff</filename>
            <type>text/plain</type>
            <size>22407</size>
            <attacher name="Ojan Vafai">ojan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2R1bXAtYXMtbWFya3Vw
Lmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9kdW1wLWFzLW1hcmt1cC5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAyM2E5MTEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9kdW1wLWFzLW1hcmt1cC5odG1s
CkBAIC0wLDAgKzEsMTUgQEAKKzxkaXY+Zm9vPC9kaXY+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikKKyAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzTWFya3Vw
KCk7CisvL2NvbnNvbGUubG9nKGRvY3VtZW50LmJvZHkucGFyZW50RWxlbWVudC5vdXRlckhUTUwp
OworPC9zY3JpcHQ+Cis8ZGl2IGNvbnRlbnRFZGl0YWJsZSBpZD0iZm9vIj4KKyAgZm9vICAgYmFy
Cis8L2Rpdj4KKzxzY3JpcHQ+Citmb28uZmlyc3RDaGlsZC5zcGxpdFRleHQoNik7Cis8L3Njcmlw
dD4KKzxzcGFuPmZvbzwvc3Bhbj48c3Bhbj5iYXI8L3NwYW4+Cis8ZGl2PjxkaXY+PGI+c2RmPC9i
PjxpPnNkZjwvaT5zZGY8L2Rpdj48L2Rpdj4KKzxpZnJhbWUgc3JjPSdkYXRhOnRleHQvaHRtbDtj
aGFyc2V0PXV0Zi04LDwhRE9DVFlQRSUyMEhUTUwlMjBQVUJMSUMlMjAiLS8vVzNDLy9EVEQlMjBI
VE1MJTIwNC4wLy9FTiI+JTBEJTBBPGh0bWwlMjBsYW5nJTNEImVuIj4lMEQlMEElMjA8aGVhZD4l
MEQlMEElMjAlMjA8dGl0bGU+VGVzdDwvdGl0bGU+JTBEJTBBJTIwJTIwPHN0eWxlJTIwdHlwZSUz
RCJ0ZXh0L2NzcyI+JTBEJTBBJTIwJTIwPC9zdHlsZT4lMEQlMEElMjA8L2hlYWQ+JTBEJTBBJTIw
PGJvZHk+JTBEJTBBJTIwJTIwPHA+PC9wPiUwRCUwQSUyMDwvYm9keT4lMEQlMEE8L2h0bWw+JTBE
JTBBJz48L2lmcmFtZT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0
aW5nL3NlbGVjdGlvbi9kdW1wLWFzLW1hcmt1cC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9tYWMvZWRpdGluZy9zZWxlY3Rpb24vZHVtcC1hcy1tYXJrdXAtZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI5Y2Q4OGQKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9zZWxlY3Rpb24vZHVtcC1h
cy1tYXJrdXAtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNDcgQEAKKzxodG1sPgorPGhlYWQ+PC9o
ZWFkPgorPGJvZHk+Cis8ZGl2Pjx0ZXh0PmZvbzwvdGV4dD48L2Rpdj4KKzx0ZXh0PlxuPC90ZXh0
PgorPHNjcmlwdD4KK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBBc01hcmt1cCgpOworLy9jb25zb2xlLmxvZyhkb2N1bWVudC5ib2R5
LnBhcmVudEVsZW1lbnQub3V0ZXJIVE1MKTsKKzwvc2NyaXB0PgorPHRleHQ+XG48L3RleHQ+Cis8
ZGl2IGNvbnRlbnRlZGl0YWJsZT0iIiBpZD0iZm9vIj48dGV4dD5cbiAgZm9vPC90ZXh0Pjx0ZXh0
PiAgIGJhclxuPC90ZXh0PjwvZGl2PgorPHRleHQ+XG48L3RleHQ+Cis8c2NyaXB0PgorZm9vLmZp
cnN0Q2hpbGQuc3BsaXRUZXh0KDYpOworPC9zY3JpcHQ+Cis8dGV4dD5cbjwvdGV4dD4KKzxzcGFu
Pjx0ZXh0PmZvbzwvdGV4dD48L3NwYW4+Cis8c3Bhbj48dGV4dD5iYXI8L3RleHQ+PC9zcGFuPgor
PHRleHQ+XG48L3RleHQ+Cis8ZGl2PgorPGRpdj4KKzxiPjx0ZXh0PnNkZjwvdGV4dD48L2I+Cis8
aT48dGV4dD5zZGY8L3RleHQ+PC9pPgorPHRleHQ+c2RmPC90ZXh0PjwvZGl2PgorPC9kaXY+Cis8
dGV4dD5cbjwvdGV4dD4KKzxpZnJhbWUgc3JjPSJkYXRhOnRleHQvaHRtbDtjaGFyc2V0PXV0Zi04
LCZsdDshRE9DVFlQRSUyMEhUTUwlMjBQVUJMSUMlMjAmcXVvdDstLy9XM0MvL0RURCUyMEhUTUwl
MjA0LjAvL0VOJnF1b3Q7Jmd0OyUwRCUwQSZsdDtodG1sJTIwbGFuZyUzRCZxdW90O2VuJnF1b3Q7
Jmd0OyUwRCUwQSUyMCZsdDtoZWFkJmd0OyUwRCUwQSUyMCUyMCZsdDt0aXRsZSZndDtUZXN0Jmx0
Oy90aXRsZSZndDslMEQlMEElMjAlMjAmbHQ7c3R5bGUlMjB0eXBlJTNEJnF1b3Q7dGV4dC9jc3Mm
cXVvdDsmZ3Q7JTBEJTBBJTIwJTIwJmx0Oy9zdHlsZSZndDslMEQlMEElMjAmbHQ7L2hlYWQmZ3Q7
JTBEJTBBJTIwJmx0O2JvZHkmZ3Q7JTBEJTBBJTIwJTIwJmx0O3AmZ3Q7Jmx0Oy9wJmd0OyUwRCUw
QSUyMCZsdDsvYm9keSZndDslMEQlMEEmbHQ7L2h0bWwmZ3Q7JTBEJTBBIj48L2lmcmFtZT4KKzx0
ZXh0PlxuPC90ZXh0PjwvYm9keT4KKzwvaHRtbD4KKworCistLS0tLS0tLQorRnJhbWU6ICc8IS0t
ZnJhbWVQYXRoIC8vPCEtLWZyYW1lMC0tPi0tPicKKy0tLS0tLS0tCis8aHRtbCBsYW5nPSJlbiI+
Cis8aGVhZD48dGV4dD5cbiAgPC90ZXh0PgorPHRpdGxlPjx0ZXh0PlRlc3Q8L3RleHQ+PC90aXRs
ZT4KKzx0ZXh0PlxuICA8L3RleHQ+Cis8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorICA8L3N0eWxl
PgorPHRleHQ+XG4gPC90ZXh0PjwvaGVhZD4KKzxib2R5Pjx0ZXh0PlxuICA8L3RleHQ+Cis8cD48
L3A+Cis8dGV4dD5cbiA8L3RleHQ+PHRleHQ+XG48L3RleHQ+PHRleHQ+XG48L3RleHQ+PC9ib2R5
PgorPC9odG1sPgorCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUuYmFzZS5leHAgYi9XZWJD
b3JlL1dlYkNvcmUuYmFzZS5leHAKaW5kZXggMGE2YjIzNC4uMmQwN2E2OSAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9XZWJDb3JlLmJhc2UuZXhwCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5iYXNlLmV4cApA
QCAtMjY2LDcgKzI2Niw2IEBAIF9fWk43V2ViQ29yZTEyVGV4dEl0ZXJhdG9yQzFFUEtOU181UmFu
Z2VFYmIKIF9fWk43V2ViQ29yZTEyV29ya2VyVGhyZWFkMTd3b3JrZXJUaHJlYWRDb3VudEV2CiBf
X1pON1dlYkNvcmUxMmFwcGx5Q29tbWFuZEVOM1dURjEwUGFzc1JlZlB0cklOU18xMUVkaXRDb21t
YW5kRUVFCiBfX1pON1dlYkNvcmUxMmNhY2hlU3RvcmFnZUV2Ci1fX1pON1dlYkNvcmUxMmNyZWF0
ZU1hcmt1cEVQS05TXzROb2RlRU5TXzEzRUNoaWxkcmVuT25seUVQTjNXVEY2VmVjdG9ySVBTMF9M
bTBFRUUKIF9fWk43V2ViQ29yZTEyY3JlYXRlTWFya3VwRVBLTlNfNVJhbmdlRVBOM1dURjZWZWN0
b3JJUE5TXzROb2RlRUxtMEVFRU5TXzIzRUFubm90YXRlRm9ySW50ZXJjaGFuZ2VFYgogX19aTjdX
ZWJDb3JlMTJnY0NvbnRyb2xsZXJFdgogX19aTjdXZWJDb3JlMTJpY29uRGF0YWJhc2VFdgpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL1B1YmxpY0RPTUludGVyZmFjZXMuaCBiL1dl
YkNvcmUvYmluZGluZ3Mvb2JqYy9QdWJsaWNET01JbnRlcmZhY2VzLmgKaW5kZXggZWE0NjQzNi4u
NTE0OGJmMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL1B1YmxpY0RPTUludGVy
ZmFjZXMuaAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL29iamMvUHVibGljRE9NSW50ZXJmYWNlcy5o
CkBAIC0xMDMsNiArMTAzLDcgQEAKIEBwcm9wZXJ0eShyZWFkb25seSwgY29weSkgTlNTdHJpbmcg
KnByZWZlcnJlZFN0eWxlc2hlZXRTZXQgQVZBSUxBQkxFX1dFQktJVF9WRVJTSU9OXzNfMF9BTkRf
TEFURVI7CiBAcHJvcGVydHkoY29weSkgTlNTdHJpbmcgKnNlbGVjdGVkU3R5bGVzaGVldFNldCBB
VkFJTEFCTEVfV0VCS0lUX1ZFUlNJT05fM18wX0FORF9MQVRFUjsKIEBwcm9wZXJ0eShyZWFkb25s
eSwgY29weSkgTlNTdHJpbmcgKmxhc3RNb2RpZmllZCBBVkFJTEFCTEVfSU5fV0VCS0lUX1ZFUlNJ
T05fNF8wOworQHByb3BlcnR5KHJlYWRvbmx5LCBjb3B5KSBOU1N0cmluZyAqb3V0ZXJIVE1MOwog
LSAoRE9NRWxlbWVudCAqKWNyZWF0ZUVsZW1lbnQ6KE5TU3RyaW5nICopdGFnTmFtZTsKIC0gKERP
TURvY3VtZW50RnJhZ21lbnQgKiljcmVhdGVEb2N1bWVudEZyYWdtZW50OwogLSAoRE9NVGV4dCAq
KWNyZWF0ZVRleHROb2RlOihOU1N0cmluZyAqKWRhdGE7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAgYi9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggYWVkYmEwZC4u
YmNhMzc4MSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmNwcApAQCAtMTcwMyw2ICsxNzAzLDI0IEBAIHZvaWQgRG9jdW1lbnQ6
OmltcGxpY2l0T3BlbigpCiAgICAgICAgIG1fZnJhbWUtPmFuaW1hdGlvbigpLT5iZWdpbkFuaW1h
dGlvblVwZGF0ZSgpOwogfQogCitTdHJpbmcgRG9jdW1lbnQ6Om91dGVySFRNTCgpIGNvbnN0Cit7
CisgICAgU3RyaW5nIG91dGVySFRNTCgiIik7CisKKyAgICBOb2RlKiBkZSA9IGRvY3VtZW50RWxl
bWVudCgpOworICAgIGlmICghZGUpCisgICAgICAgIHJldHVybiBvdXRlckhUTUw7CisKKyAgICBF
bGVtZW50KiBub2RlID0gYm9keSgpLT5wYXJlbnRFbGVtZW50KCk7CisgICAgaWYgKG5vZGUtPmlz
SFRNTEVsZW1lbnQoKSkgeworICAgICAgICBvdXRlckhUTUwgKz0gc3RhdGljX2Nhc3Q8SFRNTEVs
ZW1lbnQqPihub2RlKS0+b3V0ZXJIVE1MKHRydWUpOworICAgIH0gZWxzZSB7CisgICAgICAgIG91
dGVySFRNTCArPSBub2RlLT50ZXh0Q29udGVudCgpOworICAgIH0KKworICAgIHJldHVybiBvdXRl
ckhUTUw7Cit9CisKIEhUTUxFbGVtZW50KiBEb2N1bWVudDo6Ym9keSgpIGNvbnN0CiB7CiAgICAg
Tm9kZSogZGUgPSBkb2N1bWVudEVsZW1lbnQoKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmggYi9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IGNjM2U1NTkuLmM0OGJkOWUg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvV2ViQ29yZS9kb20vRG9j
dW1lbnQuaApAQCAtODAxLDYgKzgwMSw4IEBAIHB1YmxpYzoKICAgICBEb2N1bWVudCogcGFyZW50
RG9jdW1lbnQoKSBjb25zdDsKICAgICBEb2N1bWVudCogdG9wRG9jdW1lbnQoKSBjb25zdDsKIAor
ICAgIFN0cmluZyBvdXRlckhUTUwoKSBjb25zdDsKKwogICAgIGludCBkb2NJRCgpIGNvbnN0IHsg
cmV0dXJuIG1fZG9jSUQ7IH0KIAogICAgIHZvaWQgZXhlY3V0ZVNjcmlwdFNvb24oU2NyaXB0RWxl
bWVudERhdGEqLCBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRTY3JpcHQ+KTsKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvZG9tL0RvY3VtZW50LmlkbCBiL1dlYkNvcmUvZG9tL0RvY3VtZW50LmlkbApp
bmRleCAyNmVkN2ZkLi4xMjU1MjA3IDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5p
ZGwKKysrIGIvV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRsCkBAIC0xNzQsNiArMTc0LDExIEBAIG1v
ZHVsZSBjb3JlIHsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIEhUTUxDb2xsZWN0aW9uIGFu
Y2hvcnM7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgbGFzdE1vZGlmaWVk
OwogCisjaWYgZGVmaW5lZChMQU5HVUFHRV9PQkpFQ1RJVkVfQykgJiYgTEFOR1VBR0VfT0JKRUNU
SVZFX0MKKyAgICAgICAgLy8gT2JqZWN0aXZlLUMgZXh0ZW5zaW9ucworICAgICAgICByZWFkb25s
eSBhdHRyaWJ1dGUgRE9NU3RyaW5nIG91dGVySFRNTDsKKyNlbmRpZgorCiAgICAgICAgIE5vZGVM
aXN0IGdldEVsZW1lbnRzQnlOYW1lKGluIERPTVN0cmluZyBlbGVtZW50TmFtZSk7CiAKICNpZiBk
ZWZpbmVkKExBTkdVQUdFX0pBVkFTQ1JJUFQpICYmIExBTkdVQUdFX0pBVkFTQ1JJUFQKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwIGIvV2ViQ29yZS9lZGl0aW5nL21hcmt1
cC5jcHAKaW5kZXggNzg3ZGFkOS4uMTIxOGRiMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9lZGl0aW5n
L21hcmt1cC5jcHAKKysrIGIvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKQEAgLTE0MCw3ICsx
NDAsNyBAQCBzdGF0aWMgdm9pZCBhcHBlbmRBdHRyaWJ1dGVWYWx1ZShWZWN0b3I8VUNoYXI+JiBy
ZXN1bHQsIGNvbnN0IFN0cmluZyYgYXR0ciwgYm9vbAogICAgIHJlc3VsdC5hcHBlbmQodWNoYXJz
ICsgbGFzdENvcGllZEZyb20sIGxlbiAtIGxhc3RDb3BpZWRGcm9tKTsKIH0KIAotc3RhdGljIHZv
aWQgYXBwZW5kRXNjYXBlZENvbnRlbnQoVmVjdG9yPFVDaGFyPiYgcmVzdWx0LCBwYWlyPGNvbnN0
IFVDaGFyKiwgc2l6ZV90PiByYW5nZSwgYm9vbCBlc2NhcGVOQlNQKQorc3RhdGljIHZvaWQgYXBw
ZW5kRXNjYXBlZENvbnRlbnQoVmVjdG9yPFVDaGFyPiYgcmVzdWx0LCBwYWlyPGNvbnN0IFVDaGFy
Kiwgc2l6ZV90PiByYW5nZSwgYm9vbCBlc2NhcGVOQlNQLCBib29sIGVzY2FwZU5ld0xpbmVzID0g
ZmFsc2UpCiB7CiAgICAgY29uc3QgVUNoYXIqIHVjaGFycyA9IHJhbmdlLmZpcnN0OwogICAgIHVu
c2lnbmVkIGxlbiA9IHJhbmdlLnNlY29uZDsKQEAgLTE1MCw2ICsxNTAsNyBAQCBzdGF0aWMgdm9p
ZCBhcHBlbmRFc2NhcGVkQ29udGVudChWZWN0b3I8VUNoYXI+JiByZXN1bHQsIHBhaXI8Y29uc3Qg
VUNoYXIqLCBzaXplXwogICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCBndEVu
dGl0eSwgKCImZ3Q7IikpOwogICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCBs
dEVudGl0eSwgKCImbHQ7IikpOwogICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5n
LCBuYnNwRW50aXR5LCAoIiZuYnNwOyIpKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0
IFN0cmluZywgbGluZUJyZWFrRW50aXR5LCAoIlxcbiIpKTsKIAogICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBsZW47ICsraSkgewogICAgICAgICBVQ2hhciBjID0gdWNoYXJzW2ldOwpAQCAt
MTc2LDYgKzE3NywxMyBAQCBzdGF0aWMgdm9pZCBhcHBlbmRFc2NhcGVkQ29udGVudChWZWN0b3I8
VUNoYXI+JiByZXN1bHQsIHBhaXI8Y29uc3QgVUNoYXIqLCBzaXplXwogICAgICAgICAgICAgICAg
ICAgICBsYXN0Q29waWVkRnJvbSA9IGkgKyAxOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgJ1xuJzoKKyAgICAgICAgICAgICAgICBp
ZiAoZXNjYXBlTmV3TGluZXMpIHsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCh1
Y2hhcnMgKyBsYXN0Q29waWVkRnJvbSwgaSAtIGxhc3RDb3BpZWRGcm9tKTsKKyAgICAgICAgICAg
ICAgICAgICAgYXBwZW5kKHJlc3VsdCwgbGluZUJyZWFrRW50aXR5KTsKKyAgICAgICAgICAgICAg
ICAgICAgbGFzdENvcGllZEZyb20gPSBpICsgMTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9CiAgICAgCkBAIC0zOTAsMTAgKzM5OCwy
MCBAQCBzdGF0aWMgdm9pZCByZW1vdmVFeHRlcmlvclN0eWxlcyhDU1NNdXRhYmxlU3R5bGVEZWNs
YXJhdGlvbiogc3R5bGUpCiB7CiAgICAgc3R5bGUtPnJlbW92ZVByb3BlcnR5KENTU1Byb3BlcnR5
RmxvYXQpOwogfQorICAgIAorc3RhdGljIGJvb2wgaXNTcGVjaWFsVGV4dE5vZGUoY29uc3QgTm9k
ZSogbm9kZSkKK3sKKyAgICBOb2RlKiBwYXJlbnQgPSBub2RlLT5wYXJlbnROb2RlKCk7CisgICAg
cmV0dXJuIHBhcmVudCAmJiAocGFyZW50LT5oYXNUYWdOYW1lKHNjcmlwdFRhZykKKyAgICAgICAg
fHwgcGFyZW50LT5oYXNUYWdOYW1lKHN0eWxlVGFnKQorICAgICAgICB8fCBwYXJlbnQtPmhhc1Rh
Z05hbWUodGV4dGFyZWFUYWcpCisgICAgICAgIHx8IHBhcmVudC0+aGFzVGFnTmFtZSh4bXBUYWcp
KTsKK30KIAogZW51bSBSYW5nZUZ1bGx5U2VsZWN0c05vZGUgeyBEb2VzRnVsbHlTZWxlY3ROb2Rl
LCBEb2VzTm90RnVsbHlTZWxlY3ROb2RlIH07CiAKLXN0YXRpYyB2b2lkIGFwcGVuZFN0YXJ0TWFy
a3VwKFZlY3RvcjxVQ2hhcj4mIHJlc3VsdCwgY29uc3QgTm9kZSogbm9kZSwgY29uc3QgUmFuZ2Uq
IHJhbmdlLCBFQW5ub3RhdGVGb3JJbnRlcmNoYW5nZSBhbm5vdGF0ZSwgYm9vbCBjb252ZXJ0Qmxv
Y2tzVG9JbmxpbmVzID0gZmFsc2UsIEhhc2hNYXA8QXRvbWljU3RyaW5nSW1wbCosIEF0b21pY1N0
cmluZ0ltcGwqPiogbmFtZXNwYWNlcyA9IDAsIFJhbmdlRnVsbHlTZWxlY3RzTm9kZSByYW5nZUZ1
bGx5U2VsZWN0c05vZGUgPSBEb2VzRnVsbHlTZWxlY3ROb2RlKQorc3RhdGljIHZvaWQgYXBwZW5k
U3RhcnRNYXJrdXAoVmVjdG9yPFVDaGFyPiYgcmVzdWx0LCBjb25zdCBOb2RlKiBub2RlLCBjb25z
dCBSYW5nZSogcmFuZ2UsIEVBbm5vdGF0ZUZvckludGVyY2hhbmdlIGFubm90YXRlLCBib29sIGNv
bnZlcnRCbG9ja3NUb0lubGluZXMgPSBmYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEhhc2hNYXA8QXRvbWljU3RyaW5nSW1wbCosIEF0b21pY1N0cmluZ0ltcGwqPiogbmFtZXNw
YWNlcyA9IDAsIFJhbmdlRnVsbHlTZWxlY3RzTm9kZSByYW5nZUZ1bGx5U2VsZWN0c05vZGUgPSBE
b2VzRnVsbHlTZWxlY3ROb2RlLCBib29sIGFwcGVuZFRlc3RNYXJrdXAgPSBmYWxzZSkKIHsKICAg
ICBpZiAobmFtZXNwYWNlcykKICAgICAgICAgbmFtZXNwYWNlcy0+Y2hlY2tDb25zaXN0ZW5jeSgp
OwpAQCAtNDAxLDE3ICs0MTksMTQgQEAgc3RhdGljIHZvaWQgYXBwZW5kU3RhcnRNYXJrdXAoVmVj
dG9yPFVDaGFyPiYgcmVzdWx0LCBjb25zdCBOb2RlKiBub2RlLCBjb25zdCBSYW4KICAgICBib29s
IGRvY3VtZW50SXNIVE1MID0gbm9kZS0+ZG9jdW1lbnQoKS0+aXNIVE1MRG9jdW1lbnQoKTsKICAg
ICBzd2l0Y2ggKG5vZGUtPm5vZGVUeXBlKCkpIHsKICAgICAgICAgY2FzZSBOb2RlOjpURVhUX05P
REU6IHsKLSAgICAgICAgICAgIGlmIChOb2RlKiBwYXJlbnQgPSBub2RlLT5wYXJlbnROb2RlKCkp
IHsKLSAgICAgICAgICAgICAgICBpZiAocGFyZW50LT5oYXNUYWdOYW1lKHNjcmlwdFRhZykKLSAg
ICAgICAgICAgICAgICAgICAgfHwgcGFyZW50LT5oYXNUYWdOYW1lKHN0eWxlVGFnKQotICAgICAg
ICAgICAgICAgICAgICB8fCBwYXJlbnQtPmhhc1RhZ05hbWUodGV4dGFyZWFUYWcpCi0gICAgICAg
ICAgICAgICAgICAgIHx8IHBhcmVudC0+aGFzVGFnTmFtZSh4bXBUYWcpKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIGFwcGVuZFVDaGFyUmFuZ2UocmVzdWx0LCB1Y2hhclJhbmdlKG5vZGUsIHJhbmdl
KSk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIGlmIChpc1NwZWNpYWxUZXh0Tm9kZShub2RlKSkgeworICAgICAgICAgICAgICAgIGFw
cGVuZFVDaGFyUmFuZ2UocmVzdWx0LCB1Y2hhclJhbmdlKG5vZGUsIHJhbmdlKSk7CisgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoIWFubm90YXRl
KSB7Ci0gICAgICAgICAgICAgICAgYXBwZW5kRXNjYXBlZENvbnRlbnQocmVzdWx0LCB1Y2hhclJh
bmdlKG5vZGUsIHJhbmdlKSwgZG9jdW1lbnRJc0hUTUwpOworICAgICAgICAgICAgICAgIGlmIChh
cHBlbmRUZXN0TWFya3VwKQorICAgICAgICAgICAgICAgICAgICBhcHBlbmQocmVzdWx0LCAiPHRl
eHQ+Iik7CisgICAgICAgICAgICAgICAgYXBwZW5kRXNjYXBlZENvbnRlbnQocmVzdWx0LCB1Y2hh
clJhbmdlKG5vZGUsIHJhbmdlKSwgZG9jdW1lbnRJc0hUTUwsIGFwcGVuZFRlc3RNYXJrdXApOwog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgCkBAIC00
NDQsNiArNDU5LDkgQEAgc3RhdGljIHZvaWQgYXBwZW5kU3RhcnRNYXJrdXAoVmVjdG9yPFVDaGFy
PiYgcmVzdWx0LCBjb25zdCBOb2RlKiBub2RlLCBjb25zdCBSYW4KICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAgICAgICAgIGNhc2UgTm9kZTo6RUxFTUVOVF9OT0RFOiB7CisgICAgICAg
ICAgICBpZiAoYXBwZW5kVGVzdE1hcmt1cCAmJiAhcmVzdWx0LmlzRW1wdHkoKSAmJiByZXN1bHQu
bGFzdCgpICE9ICdcbicpCisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnXG4nKTsKKwog
ICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnPCcpOwogICAgICAgICAgICAgY29uc3QgRWxlbWVu
dCogZWwgPSBzdGF0aWNfY2FzdDxjb25zdCBFbGVtZW50Kj4obm9kZSk7CiAgICAgICAgICAgICBi
b29sIGNvbnZlcnQgPSBjb252ZXJ0QmxvY2tzVG9JbmxpbmVzICYmIGlzQmxvY2soY29uc3RfY2Fz
dDxOb2RlKj4obm9kZSkpOwpAQCAtNTgxLDggKzU5OSwxMyBAQCBzdGF0aWMgaW5saW5lIGJvb2wg
c2hvdWxkU2VsZkNsb3NlKGNvbnN0IE5vZGUgKm5vZGUpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
LXN0YXRpYyB2b2lkIGFwcGVuZEVuZE1hcmt1cChWZWN0b3I8VUNoYXI+JiByZXN1bHQsIGNvbnN0
IE5vZGUqIG5vZGUpCitzdGF0aWMgdm9pZCBhcHBlbmRFbmRNYXJrdXAoVmVjdG9yPFVDaGFyPiYg
cmVzdWx0LCBjb25zdCBOb2RlKiBub2RlLCBib29sIGFwcGVuZFRlc3RNYXJrdXAgPSBmYWxzZSkK
IHsKKyAgICBpZiAoYXBwZW5kVGVzdE1hcmt1cCAmJiBub2RlLT5pc1RleHROb2RlKCkgJiYgIWlz
U3BlY2lhbFRleHROb2RlKG5vZGUpKSB7CisgICAgICAgIGFwcGVuZChyZXN1bHQsICI8L3RleHQ+
Iik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBpZiAoIW5vZGUtPmlzRWxlbWVudE5v
ZGUoKSB8fCBzaG91bGRTZWxmQ2xvc2Uobm9kZSkgfHwgKCFub2RlLT5oYXNDaGlsZE5vZGVzKCkg
JiYgZG9lc0hUTUxGb3JiaWRFbmRUYWcobm9kZSkpKQogICAgICAgICByZXR1cm47CiAKQEAgLTU5
MCw2ICs2MTMsOSBAQCBzdGF0aWMgdm9pZCBhcHBlbmRFbmRNYXJrdXAoVmVjdG9yPFVDaGFyPiYg
cmVzdWx0LCBjb25zdCBOb2RlKiBub2RlKQogICAgIHJlc3VsdC5hcHBlbmQoJy8nKTsKICAgICBh
cHBlbmQocmVzdWx0LCBzdGF0aWNfY2FzdDxjb25zdCBFbGVtZW50Kj4obm9kZSktPm5vZGVOYW1l
UHJlc2VydmluZ0Nhc2UoKSk7CiAgICAgcmVzdWx0LmFwcGVuZCgnPicpOworCisgICAgaWYgKGFw
cGVuZFRlc3RNYXJrdXApCisgICAgICAgIHJlc3VsdC5hcHBlbmQoJ1xuJyk7CiB9CiAKIHN0YXRp
YyBTdHJpbmcgZ2V0RW5kTWFya3VwKGNvbnN0IE5vZGUgKm5vZGUpCkBAIC02MDcsNyArNjMzLDcg
QEAgcHVibGljOgogICAgIHsKICAgICB9CiAKLSAgICB2b2lkIGFwcGVuZE1hcmt1cChOb2RlKiBz
dGFydE5vZGUsIEVDaGlsZHJlbk9ubHksIGNvbnN0IEhhc2hNYXA8QXRvbWljU3RyaW5nSW1wbCos
IEF0b21pY1N0cmluZ0ltcGwqPiogbmFtZXNwYWNlcyA9IDApOworICAgIHZvaWQgYXBwZW5kTWFy
a3VwKE5vZGUqIHN0YXJ0Tm9kZSwgRUNoaWxkcmVuT25seSwgY29uc3QgSGFzaE1hcDxBdG9taWNT
dHJpbmdJbXBsKiwgQXRvbWljU3RyaW5nSW1wbCo+KiBuYW1lc3BhY2VzID0gMCwgIGJvb2wgYXBw
ZW5kVGVzdE1hcmt1cCA9IGZhbHNlKTsKIAogICAgIFN0cmluZyB0YWtlUmVzdWx0KCkgeyByZXR1
cm4gU3RyaW5nOjphZG9wdChtX3Jlc3VsdCk7IH0KIApAQCAtNjE4LDcgKzY0NCw3IEBAIHByaXZh
dGU6CiB9OwogCiAvLyBGSVhNRTogV291bGQgYmUgbmljZSB0byBkbyB0aGlzIGluIGEgbm9uLXJl
Y3Vyc2l2ZSB3YXkuCi12b2lkIE1hcmt1cEFjY3VtdWxhdG9yOjphcHBlbmRNYXJrdXAoTm9kZSog
c3RhcnROb2RlLCBFQ2hpbGRyZW5Pbmx5IGNoaWxkcmVuT25seSwgY29uc3QgSGFzaE1hcDxBdG9t
aWNTdHJpbmdJbXBsKiwgQXRvbWljU3RyaW5nSW1wbCo+KiBuYW1lc3BhY2VzKQordm9pZCBNYXJr
dXBBY2N1bXVsYXRvcjo6YXBwZW5kTWFya3VwKE5vZGUqIHN0YXJ0Tm9kZSwgRUNoaWxkcmVuT25s
eSBjaGlsZHJlbk9ubHksIGNvbnN0IEhhc2hNYXA8QXRvbWljU3RyaW5nSW1wbCosIEF0b21pY1N0
cmluZ0ltcGwqPiogbmFtZXNwYWNlcywgYm9vbCBhcHBlbmRUZXN0TWFya3VwKQogewogICAgIGlm
IChzdGFydE5vZGUgPT0gbV9ub2RlVG9Ta2lwKQogICAgICAgICByZXR1cm47CkBAIC02MzEsMTgg
KzY1NywxOCBAQCB2b2lkIE1hcmt1cEFjY3VtdWxhdG9yOjphcHBlbmRNYXJrdXAoTm9kZSogc3Rh
cnROb2RlLCBFQ2hpbGRyZW5Pbmx5IGNoaWxkcmVuT25seQogICAgIGlmICghY2hpbGRyZW5Pbmx5
KSB7CiAgICAgICAgIGlmIChtX25vZGVzKQogICAgICAgICAgICAgbV9ub2Rlcy0+YXBwZW5kKHN0
YXJ0Tm9kZSk7Ci0gICAgICAgIGFwcGVuZFN0YXJ0TWFya3VwKG1fcmVzdWx0LCBzdGFydE5vZGUs
IDAsIERvTm90QW5ub3RhdGVGb3JJbnRlcmNoYW5nZSwgZmFsc2UsICZuYW1lc3BhY2VIYXNoKTsK
KyAgICAgICAgYXBwZW5kU3RhcnRNYXJrdXAobV9yZXN1bHQsIHN0YXJ0Tm9kZSwgMCwgRG9Ob3RB
bm5vdGF0ZUZvckludGVyY2hhbmdlLCBmYWxzZSwgJm5hbWVzcGFjZUhhc2gsIERvZXNGdWxseVNl
bGVjdE5vZGUsIGFwcGVuZFRlc3RNYXJrdXApOwogICAgIH0KIAogICAgIC8vIGNoaWxkcmVuCiAg
ICAgaWYgKCEoc3RhcnROb2RlLT5kb2N1bWVudCgpLT5pc0hUTUxEb2N1bWVudCgpICYmIGRvZXNI
VE1MRm9yYmlkRW5kVGFnKHN0YXJ0Tm9kZSkpKSB7CiAgICAgICAgIGZvciAoTm9kZSogY3VycmVu
dCA9IHN0YXJ0Tm9kZS0+Zmlyc3RDaGlsZCgpOyBjdXJyZW50OyBjdXJyZW50ID0gY3VycmVudC0+
bmV4dFNpYmxpbmcoKSkKLSAgICAgICAgICAgIGFwcGVuZE1hcmt1cChjdXJyZW50LCBJbmNsdWRl
Tm9kZSwgJm5hbWVzcGFjZUhhc2gpOworICAgICAgICAgICAgYXBwZW5kTWFya3VwKGN1cnJlbnQs
IEluY2x1ZGVOb2RlLCAmbmFtZXNwYWNlSGFzaCwgYXBwZW5kVGVzdE1hcmt1cCk7CiAgICAgfQog
CiAgICAgLy8gZW5kIHRhZwogICAgIGlmICghY2hpbGRyZW5Pbmx5KQotICAgICAgICBhcHBlbmRF
bmRNYXJrdXAobV9yZXN1bHQsIHN0YXJ0Tm9kZSk7CisgICAgICAgIGFwcGVuZEVuZE1hcmt1cCht
X3Jlc3VsdCwgc3RhcnROb2RlLCBhcHBlbmRUZXN0TWFya3VwKTsKIH0KIAogc3RhdGljIHZvaWQg
Y29tcGxldGVVUkxzKE5vZGUqIG5vZGUsIGNvbnN0IFN0cmluZyYgYmFzZVVSTCkKQEAgLTEwNjYs
NyArMTA5Miw3IEBAIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlRnJhZ21lbnRG
cm9tTWFya3VwKERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QKICAgICByZXR1cm4gZnJhZ21lbnQu
cmVsZWFzZSgpOwogfQogCi1TdHJpbmcgY3JlYXRlTWFya3VwKGNvbnN0IE5vZGUqIG5vZGUsIEVD
aGlsZHJlbk9ubHkgY2hpbGRyZW5Pbmx5LCBWZWN0b3I8Tm9kZSo+KiBub2RlcykKK1N0cmluZyBj
cmVhdGVNYXJrdXAoY29uc3QgTm9kZSogbm9kZSwgRUNoaWxkcmVuT25seSBjaGlsZHJlbk9ubHks
IFZlY3RvcjxOb2RlKj4qIG5vZGVzLCBib29sIGFwcGVuZFRlc3RNYXJrdXApCiB7CiAgICAgaWYg
KCFub2RlKQogICAgICAgICByZXR1cm4gIiI7CkBAIC0xMDc5LDcgKzExMDUsNyBAQCBTdHJpbmcg
Y3JlYXRlTWFya3VwKGNvbnN0IE5vZGUqIG5vZGUsIEVDaGlsZHJlbk9ubHkgY2hpbGRyZW5Pbmx5
LCBWZWN0b3I8Tm9kZSo+KgogICAgIH0KIAogICAgIE1hcmt1cEFjY3VtdWxhdG9yIGFjY3VtdWxh
dG9yKGRlbGV0ZUJ1dHRvbkNvbnRhaW5lckVsZW1lbnQsIG5vZGVzKTsKLSAgICBhY2N1bXVsYXRv
ci5hcHBlbmRNYXJrdXAoY29uc3RfY2FzdDxOb2RlKj4obm9kZSksIGNoaWxkcmVuT25seSk7Cisg
ICAgYWNjdW11bGF0b3IuYXBwZW5kTWFya3VwKGNvbnN0X2Nhc3Q8Tm9kZSo+KG5vZGUpLCBjaGls
ZHJlbk9ubHksIDAsIGFwcGVuZFRlc3RNYXJrdXApOwogICAgIHJldHVybiBhY2N1bXVsYXRvci50
YWtlUmVzdWx0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuaCBi
L1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuaAppbmRleCA1YWNlMDRhLi4yYTBkOTk0IDEwMDY0NAot
LS0gYS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmgKKysrIGIvV2ViQ29yZS9lZGl0aW5nL21hcmt1
cC5oCkBAIC00OSw3ICs0OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIFN0cmluZyBj
cmVhdGVNYXJrdXAoY29uc3QgUmFuZ2UqLAogICAgICAgICBWZWN0b3I8Tm9kZSo+KiA9IDAsIEVB
bm5vdGF0ZUZvckludGVyY2hhbmdlID0gRG9Ob3RBbm5vdGF0ZUZvckludGVyY2hhbmdlLCBib29s
IGNvbnZlcnRCbG9ja3NUb0lubGluZXMgPSBmYWxzZSk7Ci0gICAgU3RyaW5nIGNyZWF0ZU1hcmt1
cChjb25zdCBOb2RlKiwgRUNoaWxkcmVuT25seSA9IEluY2x1ZGVOb2RlLCBWZWN0b3I8Tm9kZSo+
KiA9IDApOworICAgIFN0cmluZyBjcmVhdGVNYXJrdXAoY29uc3QgTm9kZSosIEVDaGlsZHJlbk9u
bHkgPSBJbmNsdWRlTm9kZSwgVmVjdG9yPE5vZGUqPiogPSAwLCBib29sIGFwcGVuZFRlc3RNYXJr
dXAgPSBmYWxzZSk7CiAgICAgCiAgICAgU3RyaW5nIGNyZWF0ZUZ1bGxNYXJrdXAoY29uc3QgTm9k
ZSopOwogICAgIFN0cmluZyBjcmVhdGVGdWxsTWFya3VwKGNvbnN0IFJhbmdlKik7CmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwIGIvV2ViQ29yZS9odG1sL0hUTUxFbGVt
ZW50LmNwcAppbmRleCA4MTZiYjYwLi45NzljNDYzIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwv
SFRNTEVsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKQEAgLTI3
Miw5ICsyNzIsOSBAQCBTdHJpbmcgSFRNTEVsZW1lbnQ6OmlubmVySFRNTCgpIGNvbnN0CiAgICAg
cmV0dXJuIGNyZWF0ZU1hcmt1cCh0aGlzLCBDaGlsZHJlbk9ubHkpOwogfQogCi1TdHJpbmcgSFRN
TEVsZW1lbnQ6Om91dGVySFRNTCgpIGNvbnN0CitTdHJpbmcgSFRNTEVsZW1lbnQ6Om91dGVySFRN
TChib29sIGFwcGVuZFRlc3RNYXJrdXApIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGNyZWF0ZU1hcmt1
cCh0aGlzKTsKKyAgICByZXR1cm4gY3JlYXRlTWFya3VwKHRoaXMsIEluY2x1ZGVOb2RlLCAwLCBh
cHBlbmRUZXN0TWFya3VwKTsKIH0KIAogUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBIVE1M
RWxlbWVudDo6Y3JlYXRlQ29udGV4dHVhbEZyYWdtZW50KGNvbnN0IFN0cmluZyYgbWFya3VwLCBG
cmFnbWVudFNjcmlwdGluZ1Blcm1pc3Npb24gc2NyaXB0aW5nUGVybWlzc2lvbikKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5oIGIvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50
LmgKaW5kZXggY2NjOWFhMy4uYTk0ODIzYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxF
bGVtZW50LmgKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmgKQEAgLTQ1LDcgKzQ1LDcg
QEAgcHVibGljOgogICAgIHZvaWQgc2V0VGFiSW5kZXgoaW50KTsKIAogICAgIFN0cmluZyBpbm5l
ckhUTUwoKSBjb25zdDsKLSAgICBTdHJpbmcgb3V0ZXJIVE1MKCkgY29uc3Q7CisgICAgU3RyaW5n
IG91dGVySFRNTChib29sIGFwcGVuZFRlc3RNYXJrdXAgPSBmYWxzZSkgY29uc3Q7CiAgICAgUGFz
c1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVDb250ZXh0dWFsRnJhZ21lbnQoY29uc3Qg
U3RyaW5nJiwgRnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uID0gRnJhZ21lbnRTY3JpcHRpbmdB
bGxvd2VkKTsKICAgICB2b2lkIHNldElubmVySFRNTChjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25D
b2RlJik7CiAgICAgdm9pZCBzZXRPdXRlckhUTUwoY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29k
ZSYpOwpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENv
bnRyb2xsZXIuY3BwIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRy
b2xsZXIuY3BwCmluZGV4IGE5ZWJlODEuLmY2MTI0ZDIgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xz
L0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAorKysgYi9XZWJLaXRUb29s
cy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKQEAgLTQyLDYgKzQyLDcg
QEAKIExheW91dFRlc3RDb250cm9sbGVyOjpMYXlvdXRUZXN0Q29udHJvbGxlcihjb25zdCBzdGQ6
OnN0cmluZyYgdGVzdFBhdGhPclVSTCwgY29uc3Qgc3RkOjpzdHJpbmcmIGV4cGVjdGVkUGl4ZWxI
YXNoKQogICAgIDogbV9kdW1wQXNQREYoZmFsc2UpCiAgICAgLCBtX2R1bXBBc1RleHQoZmFsc2Up
CisgICAgLCBtX2R1bXBBc01hcmt1cChmYWxzZSkKICAgICAsIG1fZHVtcEJhY2tGb3J3YXJkTGlz
dChmYWxzZSkKICAgICAsIG1fZHVtcENoaWxkRnJhbWVTY3JvbGxQb3NpdGlvbnMoZmFsc2UpCiAg
ICAgLCBtX2R1bXBDaGlsZEZyYW1lc0FzVGV4dChmYWxzZSkKQEAgLTg4LDYgKzg5LDEzIEBAIHN0
YXRpYyBKU1ZhbHVlUmVmIGR1bXBBc1BERkNhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBK
U09iamVjdFJlZiBmdW5jdGlvbiwKICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29u
dGV4dCk7CiB9CiAKK3N0YXRpYyBKU1ZhbHVlUmVmIGR1bXBBc01hcmt1cENhbGxiYWNrKEpTQ29u
dGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09i
amVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10s
IEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBMYXlvdXRUZXN0Q29udHJvbGxlciogY29u
dHJvbGxlciA9IHN0YXRpY19jYXN0PExheW91dFRlc3RDb250cm9sbGVyKj4oSlNPYmplY3RHZXRQ
cml2YXRlKHRoaXNPYmplY3QpKTsKKyAgICBjb250cm9sbGVyLT5zZXREdW1wQXNNYXJrdXAodHJ1
ZSk7CisgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworfQorCiBzdGF0
aWMgSlNWYWx1ZVJlZiBkdW1wQXNUZXh0Q2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpT
T2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1l
bnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0
aW9uKQogewogICAgIExheW91dFRlc3RDb250cm9sbGVyKiBjb250cm9sbGVyID0gc3RhdGljX2Nh
c3Q8TGF5b3V0VGVzdENvbnRyb2xsZXIqPihKU09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkp
OwpAQCAtMTQwMiw2ICsxNDEwLDcgQEAgSlNTdGF0aWNGdW5jdGlvbiogTGF5b3V0VGVzdENvbnRy
b2xsZXI6OnN0YXRpY0Z1bmN0aW9ucygpCiAgICAgICAgIHsgImRpc2FibGVJbWFnZUxvYWRpbmci
LCBkaXNhYmxlSW1hZ2VMb2FkaW5nQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9u
bHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAiZGlzcGF0
Y2hQZW5kaW5nTG9hZFJlcXVlc3RzIiwgZGlzcGF0Y2hQZW5kaW5nTG9hZFJlcXVlc3RzQ2FsbGJh
Y2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURv
bnREZWxldGUgfSwKICAgICAgICAgeyAiZGlzcGxheSIsIGRpc3BsYXlDYWxsYmFjaywga0pTUHJv
cGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9
LAorICAgICAgICB7ICJkdW1wQXNNYXJrdXAiLCBkdW1wQXNNYXJrdXBDYWxsYmFjaywga0pTUHJv
cGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9
LAogICAgICAgICB7ICJkdW1wQXNUZXh0IiwgZHVtcEFzVGV4dENhbGxiYWNrLCBrSlNQcm9wZXJ0
eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAg
ICAgICAgIHsgImR1bXBCYWNrRm9yd2FyZExpc3QiLCBkdW1wQmFja0ZvcndhcmRMaXN0Q2FsbGJh
Y2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURv
bnREZWxldGUgfSwKICAgICAgICAgeyAiZHVtcENoaWxkRnJhbWVTY3JvbGxQb3NpdGlvbnMiLCBk
dW1wQ2hpbGRGcmFtZVNjcm9sbFBvc2l0aW9uc0NhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0
ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCmRpZmYgLS1naXQg
YS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oIGIvV2Vi
S2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAppbmRleCA3MmUx
MGQyLi45NzhlM2JiIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlv
dXRUZXN0Q29udHJvbGxlci5oCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91
dFRlc3RDb250cm9sbGVyLmgKQEAgLTEwOCw2ICsxMDgsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBk
dW1wQXNQREYoKSBjb25zdCB7IHJldHVybiBtX2R1bXBBc1BERjsgfQogICAgIHZvaWQgc2V0RHVt
cEFzUERGKGJvb2wgZHVtcEFzUERGKSB7IG1fZHVtcEFzUERGID0gZHVtcEFzUERGOyB9CiAKKyAg
ICBib29sIGR1bXBBc01hcmt1cCgpIGNvbnN0IHsgcmV0dXJuIG1fZHVtcEFzTWFya3VwOyB9Cisg
ICAgdm9pZCBzZXREdW1wQXNNYXJrdXAoYm9vbCBkdW1wQXNNYXJrdXApIHsgbV9kdW1wQXNNYXJr
dXAgPSBkdW1wQXNNYXJrdXA7IH0KKwogICAgIGJvb2wgZHVtcEFzVGV4dCgpIGNvbnN0IHsgcmV0
dXJuIG1fZHVtcEFzVGV4dDsgfQogICAgIHZvaWQgc2V0RHVtcEFzVGV4dChib29sIGR1bXBBc1Rl
eHQpIHsgbV9kdW1wQXNUZXh0ID0gZHVtcEFzVGV4dDsgfQogICAgIApAQCAtMjUwLDYgKzI1Myw3
IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgYm9vbCBtX2R1bXBBc1BERjsKICAgICBib29sIG1f
ZHVtcEFzVGV4dDsKKyAgICBib29sIG1fZHVtcEFzTWFya3VwOwogICAgIGJvb2wgbV9kdW1wQmFj
a0ZvcndhcmRMaXN0OwogICAgIGJvb2wgbV9kdW1wQ2hpbGRGcmFtZVNjcm9sbFBvc2l0aW9uczsK
ICAgICBib29sIG1fZHVtcENoaWxkRnJhbWVzQXNUZXh0OwpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9v
bHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tIGIvV2ViS2l0VG9vbHMvRHVt
cFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCmluZGV4IGEyMDcyMWMuLjJiMTM4MzIg
MTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJl
ZS5tbQorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUu
bW0KQEAgLTc0MiwyMiArNzQyLDQyIEBAIHN0YXRpYyB2b2lkIGR1bXBGcmFtZVNjcm9sbFBvc2l0
aW9uKFdlYkZyYW1lICpmKQogICAgIH0KIH0KIAorc3RhdGljIE5TU3RyaW5nICpkdW1wRnJhbWVz
QXNNYXJrdXAoV2ViRnJhbWUgKmZyYW1lKQoreworICAgIERPTURvY3VtZW50ICpkb2N1bWVudCA9
IFtmcmFtZSBET01Eb2N1bWVudF07CisgICAgTlNNdXRhYmxlU3RyaW5nICpyZXN1bHQgPSBbW1tO
U011dGFibGVTdHJpbmcgYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKKworICAgIC8vIEFkZCBo
ZWFkZXIgZm9yIGFsbCBidXQgdGhlIG1haW4gZnJhbWUuCisgICAgaWYgKFtmcmFtZSBwYXJlbnRG
cmFtZV0pCisgICAgICAgIHJlc3VsdCA9IFtOU011dGFibGVTdHJpbmcgc3RyaW5nV2l0aEZvcm1h
dDpAIlxuLS0tLS0tLS1cbkZyYW1lOiAnJUAnXG4tLS0tLS0tLVxuIiwgW2ZyYW1lIG5hbWVdXTsK
KworICAgIFtyZXN1bHQgYXBwZW5kRm9ybWF0OkAiJUBcbiIsIFtkb2N1bWVudCBvdXRlckhUTUxd
XTsKKworICAgIE5TQXJyYXkgKmtpZHMgPSBbZnJhbWUgY2hpbGRGcmFtZXNdOworICAgIGlmIChr
aWRzKSB7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBba2lkcyBjb3VudF07IGkr
KykKKyAgICAgICAgICAgIFtyZXN1bHQgYXBwZW5kU3RyaW5nOmR1bXBGcmFtZXNBc01hcmt1cChb
a2lkcyBvYmplY3RBdEluZGV4OmldKV07CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKK30K
Kwogc3RhdGljIE5TU3RyaW5nICpkdW1wRnJhbWVzQXNUZXh0KFdlYkZyYW1lICpmcmFtZSkKIHsK
ICAgICBET01Eb2N1bWVudCAqZG9jdW1lbnQgPSBbZnJhbWUgRE9NRG9jdW1lbnRdOwogICAgIERP
TUVsZW1lbnQgKmRvY3VtZW50RWxlbWVudCA9IFtkb2N1bWVudCBkb2N1bWVudEVsZW1lbnRdOwot
CisgICAgCiAgICAgaWYgKCFkb2N1bWVudEVsZW1lbnQpCiAgICAgICAgIHJldHVybiBAIiI7Ci0K
KyAgICAKICAgICBOU011dGFibGVTdHJpbmcgKnJlc3VsdCA9IFtbW05TTXV0YWJsZVN0cmluZyBh
bGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOwotCisgICAgCiAgICAgLy8gQWRkIGhlYWRlciBmb3Ig
YWxsIGJ1dCB0aGUgbWFpbiBmcmFtZS4KICAgICBpZiAoW2ZyYW1lIHBhcmVudEZyYW1lXSkKICAg
ICAgICAgcmVzdWx0ID0gW05TTXV0YWJsZVN0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiXG4tLS0t
LS0tLVxuRnJhbWU6ICclQCdcbi0tLS0tLS0tXG4iLCBbZnJhbWUgbmFtZV1dOwotCisgICAgCiAg
ICAgW3Jlc3VsdCBhcHBlbmRGb3JtYXQ6QCIlQFxuIiwgW2RvY3VtZW50RWxlbWVudCBpbm5lclRl
eHRdXTsKLQorICAgIAogICAgIGlmIChnTGF5b3V0VGVzdENvbnRyb2xsZXItPmR1bXBDaGlsZEZy
YW1lc0FzVGV4dCgpKSB7CiAgICAgICAgIE5TQXJyYXkgKmtpZHMgPSBbZnJhbWUgY2hpbGRGcmFt
ZXNdOwogICAgICAgICBpZiAoa2lkcykgewpAQCAtNzY1LDcgKzc4NSw3IEBAIHN0YXRpYyBOU1N0
cmluZyAqZHVtcEZyYW1lc0FzVGV4dChXZWJGcmFtZSAqZnJhbWUpCiAgICAgICAgICAgICAgICAg
W3Jlc3VsdCBhcHBlbmRTdHJpbmc6ZHVtcEZyYW1lc0FzVGV4dChba2lkcyBvYmplY3RBdEluZGV4
OmldKV07CiAgICAgICAgIH0KICAgICB9Ci0KKyAgICAKICAgICByZXR1cm4gcmVzdWx0OwogfQog
CkBAIC0xMDU1LDYgKzEwNzUsNyBAQCB2b2lkIGR1bXAoKQogICAgIGludmFsaWRhdGVBbnlQcmV2
aW91c1dhaXRUb0R1bXBXYXRjaGRvZygpOwogCiAgICAgYm9vbCBkdW1wQXNUZXh0ID0gZ0xheW91
dFRlc3RDb250cm9sbGVyLT5kdW1wQXNUZXh0KCk7CisgICAgYm9vbCBkdW1wQXNNYXJrdXAgPSBn
TGF5b3V0VGVzdENvbnRyb2xsZXItPmR1bXBBc01hcmt1cCgpOwogICAgIGlmIChkdW1wVHJlZSkg
ewogICAgICAgICBOU1N0cmluZyAqcmVzdWx0U3RyaW5nID0gbmlsOwogICAgICAgICBOU0RhdGEg
KnJlc3VsdERhdGEgPSBuaWw7CkBAIC0xMDY0LDYgKzEwODUsOCBAQCB2b2lkIGR1bXAoKQogICAg
ICAgICBnTGF5b3V0VGVzdENvbnRyb2xsZXItPnNldER1bXBBc1RleHQoZHVtcEFzVGV4dCk7CiAg
ICAgICAgIGlmIChnTGF5b3V0VGVzdENvbnRyb2xsZXItPmR1bXBBc1RleHQoKSkgewogICAgICAg
ICAgICAgcmVzdWx0U3RyaW5nID0gZHVtcEZyYW1lc0FzVGV4dChtYWluRnJhbWUpOworICAgICAg
ICB9IGVsc2UgaWYgKGdMYXlvdXRUZXN0Q29udHJvbGxlci0+ZHVtcEFzTWFya3VwKCkpIHsKKyAg
ICAgICAgICAgIHJlc3VsdFN0cmluZyA9IGR1bXBGcmFtZXNBc01hcmt1cChtYWluRnJhbWUpOwog
ICAgICAgICB9IGVsc2UgaWYgKGdMYXlvdXRUZXN0Q29udHJvbGxlci0+ZHVtcEFzUERGKCkpIHsK
ICAgICAgICAgICAgIHJlc3VsdERhdGEgPSBkdW1wRnJhbWVBc1BERihtYWluRnJhbWUpOwogICAg
ICAgICAgICAgcmVzdWx0TWltZVR5cGUgPSBAImFwcGxpY2F0aW9uL3BkZiI7CkBAIC0xMDg4LDcg
KzExMTEsNyBAQCB2b2lkIGR1bXAoKQogICAgICAgICBpZiAocmVzdWx0RGF0YSkgewogICAgICAg
ICAgICAgZndyaXRlKFtyZXN1bHREYXRhIGJ5dGVzXSwgMSwgW3Jlc3VsdERhdGEgbGVuZ3RoXSwg
c3Rkb3V0KTsKIAotICAgICAgICAgICAgaWYgKCFnTGF5b3V0VGVzdENvbnRyb2xsZXItPmR1bXBB
c1RleHQoKSAmJiAhZ0xheW91dFRlc3RDb250cm9sbGVyLT5kdW1wRE9NQXNXZWJBcmNoaXZlKCkg
JiYgIWdMYXlvdXRUZXN0Q29udHJvbGxlci0+ZHVtcFNvdXJjZUFzV2ViQXJjaGl2ZSgpKQorICAg
ICAgICAgICAgaWYgKCFnTGF5b3V0VGVzdENvbnRyb2xsZXItPmR1bXBBc1RleHQoKSAmJiAhZ0xh
eW91dFRlc3RDb250cm9sbGVyLT5kdW1wQXNNYXJrdXAoKSAmJiAhZ0xheW91dFRlc3RDb250cm9s
bGVyLT5kdW1wRE9NQXNXZWJBcmNoaXZlKCkgJiYgIWdMYXlvdXRUZXN0Q29udHJvbGxlci0+ZHVt
cFNvdXJjZUFzV2ViQXJjaGl2ZSgpKQogICAgICAgICAgICAgICAgIGR1bXBGcmFtZVNjcm9sbFBv
c2l0aW9uKG1haW5GcmFtZSk7CiAKICAgICAgICAgICAgIGlmIChnTGF5b3V0VGVzdENvbnRyb2xs
ZXItPmR1bXBCYWNrRm9yd2FyZExpc3QoKSkKQEAgLTExMDcsNyArMTEzMCw3IEBAIHZvaWQgZHVt
cCgpCiAgICAgICAgIH0gICAgICAgICAgICAKICAgICB9CiAKLSAgICBpZiAoZHVtcFBpeGVscyAm
JiAhZHVtcEFzVGV4dCkKKyAgICBpZiAoZHVtcFBpeGVscyAmJiAhZHVtcEFzVGV4dCAmJiAhZHVt
cEFzTWFya3VwKQogICAgICAgICBkdW1wV2ViVmlld0FzUGl4ZWxzQW5kQ29tcGFyZVdpdGhFeHBl
Y3RlZChnTGF5b3V0VGVzdENvbnRyb2xsZXItPmV4cGVjdGVkUGl4ZWxIYXNoKCkpOwogCiAgICAg
cHV0cygiI0VPRiIpOyAgIC8vIHRlcm1pbmF0ZSB0aGUgKHBvc3NpYmx5IGVtcHR5KSBwaXhlbHMg
YmxvY2sK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>54367</attachid>
            <date>2010-04-26 18:27:57 -0700</date>
            <delta_ts>2010-04-27 14:05:40 -0700</delta_ts>
            <desc>Patch-14001</desc>
            <filename>bug-26501-20100426182756.patch</filename>
            <type>text/plain</type>
            <size>10411</size>
            <attacher name="Ojan Vafai">ojan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA5ZTNlODMyZWIzZWI1ZjA1YTY0Y2VjYTgxOGFlZjM4YTUxYmI5NjU4Li40Yzg2MzZl
Nzc0YjcyMTFjODIyZWUwMTMzMzYyMTgzNGNjNGExM2EwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAK
KzIwMTAtMDQtMjYgIE9qYW4gVmFmYWkgIDxvamFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ciBzaG91bGQgaGF2ZSBkdW1wQXNNYXJrdXAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTI2NTAxCisKKyAgICAgICAgKiBlZGl0aW5nL3NlbGVjdGlvbi9k
dW1wLWFzLW1hcmt1cC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvc2Vs
ZWN0aW9uL2R1bXAtYXMtbWFya3VwLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHJlc291cmNlcy9k
dW1wLWFzLW1hcmt1cC5qczogQWRkZWQuCisgICAgICAgIChNYXJrdXAuZHVtcC5nZXQgdmFyKToK
KyAgICAgICAgKE1hcmt1cC5kdW1wLmdldCBjYXRjaCk6CisgICAgICAgIChNYXJrdXAuZHVtcCk6
CisgICAgICAgIChNYXJrdXAud2FpdFVudGlsRG9uZSk6CisgICAgICAgIChNYXJrdXAubm90aWZ5
RG9uZSk6CisgICAgICAgIChNYXJrdXAuX3NwYWNlcyk6CisgICAgICAgIChNYXJrdXAuX2dldEF0
dHJpYnV0ZXMpOgorICAgICAgICAoTWFya3VwLl9nZXRNYXJrdXBGb3JUZXh0Tm9kZSk6CisgICAg
ICAgIChNYXJrdXAuX2dldFNlbGVjdGlvbk1hcmtlcik6CisKIDIwMTAtMDQtMjYgIER1bWl0cnUg
RGFuaWxpdWMgIDxkdW1pQGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCBmaXhp
bmcgdGhlIGJ1aWxkIGJyZWFrYWdlIGludHJvZHVjZWQgYnkgcjU4MjcwLgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vZHVtcC1hcy1tYXJrdXAtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vZHVtcC1hcy1tYXJrdXAtZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjFlM2RkZDQwNTcyZDRkOTJhNzI1NzNkMmE4NTNmNjUxNDlhZmYwMWUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9kdW1wLWFz
LW1hcmt1cC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw2MiBAQAorCis8SFRNTD4KKzxIRUFEPgor
PFNDUklQVCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9kdW1wLWFzLW1hcmt1cC5qcyI+PC9TQ1JJUFQ+
Cis8I3RleHQ+CisKKzwvI3RleHQ+Cis8L0hFQUQ+Cis8Qk9EWT4KKzxESVYgaWQ9ImJhciI+Cis8
I3RleHQ+PHNlbGVjdGlvbi1hbmNob3I+Zm9vPC8jdGV4dD4KKzxIUj48c2VsZWN0aW9uLWZvY3Vz
PgorPC9ESVY+Cis8I3RleHQ+Cis8LyN0ZXh0PgorPElOUFVUIHR5cGU9InRleHQiPgorPCN0ZXh0
PgorPC8jdGV4dD4KKzxESVYgaWQ9ImZvbyIgY29udGVudEVkaXRhYmxlPSIiPgorPCN0ZXh0Pgor
Zm9vPC8jdGV4dD4KKzwjdGV4dD4gYmFyCis8LyN0ZXh0PgorPC9ESVY+Cis8I3RleHQ+Cis8LyN0
ZXh0PgorPFNDUklQVD5mb28uZmlyc3RDaGlsZC5zcGxpdFRleHQoNik7PC9TQ1JJUFQ+Cis8I3Rl
eHQ+Cis8LyN0ZXh0PgorPFNQQU4+Cis8I3RleHQ+Zm9vPC8jdGV4dD4KKzwvU1BBTj4KKzxTUEFO
PgorPCN0ZXh0PmJhcjwvI3RleHQ+Cis8L1NQQU4+Cis8I3RleHQ+Cis8LyN0ZXh0PgorPERJVj4K
KzxESVY+Cis8Qj4KKzwjdGV4dD5zZGY8LyN0ZXh0PgorPC9CPgorPEk+Cis8I3RleHQ+c2RmPC8j
dGV4dD4KKzwvST4KKzwjdGV4dD5zZGY8LyN0ZXh0PgorPC9ESVY+Cis8L0RJVj4KKzwjdGV4dD4K
KzwvI3RleHQ+Cis8SUZSQU1FIHNyYz0iZGF0YTp0ZXh0L2h0bWw7Y2hhcnNldD11dGYtOCw8IURP
Q1RZUEUlMjBIVE1MJTIwUFVCTElDJTIwIi0vL1czQy8vRFREJTIwSFRNTCUyMDQuMC8vRU4iPiUw
RCUwQTxodG1sJTIwbGFuZyUzRCJlbiI+JTBEJTBBJTIwPGhlYWQ+JTBEJTBBJTIwJTIwPHRpdGxl
PlRlc3Q8L3RpdGxlPiUwRCUwQSUyMCUyMDxzdHlsZSUyMHR5cGUlM0QidGV4dC9jc3MiPiUwRCUw
QSUyMCUyMDwvc3R5bGU+JTBEJTBBJTIwPC9oZWFkPiUwRCUwQSUyMDxib2R5PiUwRCUwQSUyMCUy
MDxwPjwvcD4lMEQlMEElMjA8L2JvZHk+JTBEJTBBPC9odG1sPiUwRCUwQSI+PC9JRlJBTUU+Cis8
I3RleHQ+CisKKzwvI3RleHQ+Cis8U0NSSVBUPgord2luZG93LmdldFNlbGVjdGlvbigpLnNlbGVj
dEFsbENoaWxkcmVuKGJhcikKKzwvU0NSSVBUPgorPC9CT0RZPgorPC9IVE1MPgorCitGUkFNRSAw
OgorRklYTUU6IEFkZCBtZXRob2QgdG8gbGF5b3V0IHRlc3QgY29udHJvbGxlciB0byBnZXQgYWNj
ZXNzIHRvIGNyb3NzLW9yaWdpbiBmcmFtZXMuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0
aW5nL3NlbGVjdGlvbi9kdW1wLWFzLW1hcmt1cC5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9z
ZWxlY3Rpb24vZHVtcC1hcy1tYXJrdXAuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lODNmNTgzNjgwN2FhZTll
MjNiZDg3NDUwYjFhNjRmNDYwMzIzZjljCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZWRpdGluZy9zZWxlY3Rpb24vZHVtcC1hcy1tYXJrdXAuaHRtbApAQCAtMCwwICsxLDE1IEBACis8
c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2R1bXAtYXMtbWFya3VwLmpzIj48L3NjcmlwdD4K
KworPGRpdiBpZD0iYmFyIj5mb288aHI+PC9kaXY+Cis8aW5wdXQgdHlwZT10ZXh0PgorPGRpdiBj
b250ZW50RWRpdGFibGUgaWQ9ImZvbyI+CisgIGZvbyAgIGJhcgorPC9kaXY+Cis8c2NyaXB0PmZv
by5maXJzdENoaWxkLnNwbGl0VGV4dCg2KTs8L3NjcmlwdD4KKzxzcGFuPmZvbzwvc3Bhbj48c3Bh
bj5iYXI8L3NwYW4+Cis8ZGl2PjxkaXY+PGI+c2RmPC9iPjxpPnNkZjwvaT5zZGY8L2Rpdj48L2Rp
dj4KKzxpZnJhbWUgc3JjPSdkYXRhOnRleHQvaHRtbDtjaGFyc2V0PXV0Zi04LDwhRE9DVFlQRSUy
MEhUTUwlMjBQVUJMSUMlMjAiLS8vVzNDLy9EVEQlMjBIVE1MJTIwNC4wLy9FTiI+JTBEJTBBPGh0
bWwlMjBsYW5nJTNEImVuIj4lMEQlMEElMjA8aGVhZD4lMEQlMEElMjAlMjA8dGl0bGU+VGVzdDwv
dGl0bGU+JTBEJTBBJTIwJTIwPHN0eWxlJTIwdHlwZSUzRCJ0ZXh0L2NzcyI+JTBEJTBBJTIwJTIw
PC9zdHlsZT4lMEQlMEElMjA8L2hlYWQ+JTBEJTBBJTIwPGJvZHk+JTBEJTBBJTIwJTIwPHA+PC9w
PiUwRCUwQSUyMDwvYm9keT4lMEQlMEE8L2h0bWw+JTBEJTBBJz48L2lmcmFtZT4KKworPHNjcmlw
dD4KK3dpbmRvdy5nZXRTZWxlY3Rpb24oKS5zZWxlY3RBbGxDaGlsZHJlbihiYXIpCis8L3Njcmlw
dD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9y
ZXNvdXJjZXMvZHVtcC1hcy1tYXJrdXAuanMgYi9MYXlvdXRUZXN0cy9yZXNvdXJjZXMvZHVtcC1h
cy1tYXJrdXAuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTY4NmZiMGQ3M2E1MzE1MmMzYWUxOWJkZDc3MWE0MTdi
YmJhYTNmMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3Jlc291cmNlcy9kdW1wLWFz
LW1hcmt1cC5qcwpAQCAtMCwwICsxLDIwNyBAQAoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Cit9CisKKy8vIE5hbWVzcGFjZQordmFy
IE1hcmt1cCA9IHt9OworCisvKioKKyAqIER1bXBzIHRoZSBtYXJrdXAgZm9yIHRoZSBnaXZlbiBu
b2RlIChIVE1MIGVsZW1lbnQgaWYgbm8gbm9kZSBpcyBnaXZlbikuCisgKiBPdmVyLXdyaXRlcyB0
aGUgYm9keSdzIGNvbnRlbnQgd2l0aCB0aGUgbWFya3VwIGluIGxheW91dCB0ZXN0IG1vZGUuIEFw
cGVuZHMKKyAqIGEgcHJlIGVsZW1lbnQgd2hlbiBsb2FkZWQgbWFudWFsbHksIGluIG9yZGVyIHRv
IGFpZCBkZWJ1Z2dpbmcuCisgKi8KK01hcmt1cC5kdW1wID0gZnVuY3Rpb24ob3B0X25vZGUpCit7
CisgICAgLy8gQWxsb3cgZm9yIHVzaW5nIE1hcmt1cC5kdW1wIGFzIGFuIG9ubG9hZCBoYW5kbGVy
LgorICAgIGlmIChvcHRfbm9kZSBpbnN0YW5jZW9mIEV2ZW50KQorICAgICAgICBvcHRfbm9kZSA9
IHVuZGVmaW5lZDsKKworICAgIHZhciBtYXJrdXAgPSBNYXJrdXAuZ2V0KG9wdF9ub2RlKTsKKyAg
ICB2YXIgY29udGFpbmVyOworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisg
ICAgICAgIGNvbnRhaW5lciA9IGRvY3VtZW50LmJvZHk7CisgICAgZWxzZSB7CisgICAgICAgIC8v
IEluIG5vbi1sYXlvdXQgdGVzdCBtb2RlLCBhcHBlbmQgdGhlIHJlc3VsdHMgaW4gYSBwcmUgc28g
dGhhdCB3ZSBkb24ndAorICAgICAgICAvLyBjbG9iYmVyIHRoZSB0ZXN0IGl0c2VsZi4gQnV0IHdo
ZW4gaW4gbGF5b3V0IHRlc3QgbW9kZSwgd2UgZG9uJ3Qgd2FudAorICAgICAgICAvLyBzaWRlIGVm
ZmVjdHMgZnJvbSB0aGUgdGVzdCB0byBiZSBpbmNsdWRlZCBpbiB0aGUgcmVzdWx0cy4KKyAgICAg
ICAgY29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgncHJlJyk7CisgICAgICAgIGNv
bnRhaW5lci5zdHlsZS5jc3NUZXh0ID0gJ3dpZHRoOjEwMCUnOworICAgICAgICBkb2N1bWVudC5i
b2R5LmFwcGVuZENoaWxkKGNvbnRhaW5lcik7CisgICAgfQorCisgICAgLy8gRklYTUU6IEhhdmUg
dGhpcyByZXNwZWN0IGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBDaGlsZEZyYW1lc0FzVGV4dD8K
KyAgICBmb3IgKHZhciBpID0gMDsgaSA8IHdpbmRvdy5mcmFtZXMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgICAgbWFya3VwICs9ICdcblxuRlJBTUUgJyArIGkgKyAnOlxuJworICAgICAgICB0cnkgewor
ICAgICAgICAgICAgbWFya3VwICs9IE1hcmt1cC5nZXQod2luZG93LmZyYW1lc1tpXS5jb250ZW50
RG9jdW1lbnQuYm9keS5wYXJlbnRFbGVtZW50KTsKKyAgICAgICAgfSBjYXRjaCAoZSkgeworICAg
ICAgICAgICAgbWFya3VwICs9ICdGSVhNRTogQWRkIG1ldGhvZCB0byBsYXlvdXQgdGVzdCBjb250
cm9sbGVyIHRvIGdldCBhY2Nlc3MgdG8gY3Jvc3Mtb3JpZ2luIGZyYW1lcy4nOworICAgICAgICB9
CisgICAgfQorCisgICAgY29udGFpbmVyLmlubmVyVGV4dCA9IG1hcmt1cDsKKworICAgIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
Lm5vdGlmeURvbmUoKTsKK30KKworTWFya3VwLndhaXRVbnRpbERvbmUgPSBmdW5jdGlvbigpCit7
CisgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBNYXJrdXAuZHVtcCwgZmFs
c2UpOworfQorCitNYXJrdXAubm90aWZ5RG9uZSA9IGZ1bmN0aW9uKCkKK3sKKyAgICBNYXJrdXAu
ZHVtcCgpOworfQorCisvKioKKyAqIFJldHVybnMgdGhlIG1hcmt1cCBmb3IgdGhlIGdpdmVuIG5v
ZGUuIFRvIGJlIHVzZWQgZm9yIGNhc2VzIHdoZXJlIGEgdGVzdCBuZWVkcworICogdG8gZ2V0IHRo
ZSBtYXJrdXAgYnV0IG5vdCBjbG9iYmVyIHRoZSB3aG9sZSBwYWdlLgorICovCitNYXJrdXAuZ2V0
ID0gZnVuY3Rpb24ob3B0X25vZGUsIG9wdF9kZXB0aCkKK3sKKyAgICB2YXIgbm9kZSA9IG9wdF9u
b2RlIHx8IGRvY3VtZW50LmJvZHkucGFyZW50RWxlbWVudAorICAgIHZhciBkZXB0aCA9IG9wdF9k
ZXB0aCB8fCAwOworCisgICAgdmFyIGF0dHJzID0gTWFya3VwLl9nZXRBdHRyaWJ1dGVzKG5vZGUp
OworICAgIHZhciBhdHRyc1N0cmluZyA9IGF0dHJzLmxlbmd0aCA/ICcgJyArIGF0dHJzLmpvaW4o
JyAnKSA6ICcnOworCisgICAgdmFyIG5vZGVOYW1lID0gbm9kZS5ub2RlTmFtZTsKKyAgICB2YXIg
bWFya3VwID0gJzwnICsgbm9kZU5hbWUgKyBhdHRyc1N0cmluZyArICc+JzsKKworICAgIHZhciBp
c1NwZWNpYWxOb2RlID0gTWFya3VwLl9GT1JCSURTX0VORF9UQUdbbm9kZU5hbWVdOworICAgIHZh
ciBpbm5lck1hcmt1cCA9ICcnOworICAgIHN3aXRjaCAobm9kZU5hbWUpIHsKKyAgICAgICAgY2Fz
ZSAnI3RleHQnOgorICAgICAgICBjYXNlICdTVFlMRSc6CisgICAgICAgIGNhc2UgJ1NDUklQVCc6
CisgICAgICAgIGNhc2UgJ0lGUkFNRSc6CisgICAgICAgIGNhc2UgJ1RFWFRBUkVBJzoKKyAgICAg
ICAgY2FzZSAnWE1QJzoKKyAgICAgICAgICAgIGlubmVyTWFya3VwID0gbm9kZU5hbWUgPT0gJyN0
ZXh0JyA/IE1hcmt1cC5fZ2V0TWFya3VwRm9yVGV4dE5vZGUobm9kZSkgOiBub2RlLmlubmVyVGV4
dDsKKyAgICAgICAgICAgIGlubmVyTWFya3VwID0gaW5uZXJNYXJrdXAucmVwbGFjZSgvXG4vZywg
J1xuJyArIE1hcmt1cC5fc3BhY2VzKGRlcHRoKSkKKyAgICAgICAgICAgIGlzU3BlY2lhbE5vZGUg
PSB0cnVlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIAorICAgICAgICBkZWZhdWx0Ogor
ICAgICAgICAgICAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IG5vZGUuY2hpbGROb2Rlcy5sZW5ndGg7
IGkgPCBsZW47IGkrKykgeworICAgICAgICAgICAgICAgIGlubmVyTWFya3VwICs9IE1hcmt1cC5f
Z2V0U2VsZWN0aW9uTWFya2VyKG5vZGUsIGkpOworICAgICAgICAgICAgICAgIGlubmVyTWFya3Vw
ICs9IE1hcmt1cC5nZXQobm9kZS5jaGlsZE5vZGVzW2ldLCBkZXB0aCArIDEpOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgaW5uZXJNYXJrdXAgKz0gTWFya3VwLl9nZXRTZWxlY3Rpb25NYXJr
ZXIobm9kZSwgaSk7CisgICAgfQorCisgICAgbWFya3VwID0gJ1xuJyArIE1hcmt1cC5fc3BhY2Vz
KGRlcHRoKSArIG1hcmt1cCAKKyAgICBpZiAoIWlzU3BlY2lhbE5vZGUpCisgICAgICAgIGlubmVy
TWFya3VwICs9ICdcbicgKyBNYXJrdXAuX3NwYWNlcyhkZXB0aCk7CisKKyAgICBtYXJrdXAgKz0g
aW5uZXJNYXJrdXA7CisgICAgCisgICAgaWYgKCFNYXJrdXAuX0ZPUkJJRFNfRU5EX1RBR1tub2Rl
TmFtZV0pCisgICAgICAgIG1hcmt1cCArPSAnPC8nICsgbm9kZU5hbWUgKyAnPic7CisKKyAgICBy
ZXR1cm4gbWFya3VwOworfQorCitNYXJrdXAuX3NwYWNlcyA9IGZ1bmN0aW9uKG11bHRpcGxpZXIp
Cit7CisgICAgcmV0dXJuIG5ldyBBcnJheShtdWx0aXBsaWVyICogNCArIDEpLmpvaW4oJyAnKTsK
K30KKworLy8gRklYTUU6IElzIHRoZXJlIGEgYmV0dGVyIHdheSB0byBkbyB0aGlzIHRoYW4gYSBo
YXJkIGNvZGVkIGxpc3Q/CitNYXJrdXAuX0RVTVBfQVNfTUFSS1VQX1BST1BFUlRJRVMgPSBbJ3Ny
YycsICd0eXBlJywgJ2hyZWYnLCAnc3R5bGUnLCAnY2xhc3MnLCAnaWQnLCAnY29udGVudEVkaXRh
YmxlJ107CisKK01hcmt1cC5fZ2V0QXR0cmlidXRlcyA9IGZ1bmN0aW9uKG5vZGUpCit7CisgICAg
dmFyIHByb3BzID0gW107CisgICAgaWYgKCFub2RlLmhhc0F0dHJpYnV0ZSkKKyAgICAgICAgcmV0
dXJuIHByb3BzOworCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBNYXJrdXAuX0RVTVBfQVNfTUFS
S1VQX1BST1BFUlRJRVMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgdmFyIGF0dHIgPSBNYXJrdXAu
X0RVTVBfQVNfTUFSS1VQX1BST1BFUlRJRVNbaV07CisgICAgICAgIGlmIChub2RlLmhhc0F0dHJp
YnV0ZShhdHRyKSkgeworICAgICAgICAgICAgcHJvcHMucHVzaChhdHRyICsgJz0iJyArIG5vZGUu
Z2V0QXR0cmlidXRlKGF0dHIpICsgJyInKTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4g
cHJvcHM7Cit9CisKKy8vIFRoaXMgbGlzdCBzaG91bGQgbWF0Y2ggYWxsIEhUTUwgZWxlbWVudHMg
dGhhdCByZXR1cm4gVGFnU3RhdHVzRm9yYmlkZGVuIGZvciBlbmRUYWdSZXF1aXJlbWVudCgpLgor
TWFya3VwLl9GT1JCSURTX0VORF9UQUcgPSB7CisgICAgJ01FVEEnOiAxLAorICAgICdIUic6IDEs
CisgICAgJ0FSRUEnOiAxLAorICAgICdMSU5LJzogMSwKKyAgICAnV0JSJzogMSwKKyAgICAnQlIn
OiAxLAorICAgICdCQVNFJzogMSwKKyAgICAnVEFCTEVDT0wnOiAxLAorICAgICdTT1VSQ0UnOiAx
LAorICAgICdJTlBVVCc6IDEsCisgICAgJ1BBUkFNJzogMSwKKyAgICAnRU1CRUQnOiAxLAorICAg
ICdGUkFNRSc6IDEsCisgICAgJ0NBTlZBUyc6IDEsCisgICAgJ0lNRyc6IDEsCisgICAgJ0lTSU5E
RVgnOiAxLAorICAgICdCQVNFRk9OVCc6IDEsCisgICAgJ0RBVEFHUklEQ0VMTCc6IDEsCisgICAg
J0RBVEFHUklEQ09MJzogMQorfQorCitNYXJrdXAuX2dldE1hcmt1cEZvclRleHROb2RlID0gZnVu
Y3Rpb24obm9kZSkKK3sKKyAgICBpbm5lck1hcmt1cCA9IG5vZGUubm9kZVZhbHVlOworICAgIHZh
ciBzdGFydE9mZnNldCwgZW5kT2Zmc2V0LCBzdGFydFRleHQsIGVuZFRleHQ7CisKKyAgICB2YXIg
c2VsID0gd2luZG93LmdldFNlbGVjdGlvbigpOworICAgIGlmIChub2RlID09IHNlbC5hbmNob3JO
b2RlICYmIG5vZGUgPT0gc2VsLmZvY3VzTm9kZSkgeworICAgICAgICBpZiAoc2VsLmlzQ29sbGFw
c2VkKSB7CisgICAgICAgICAgICBzdGFydE9mZnNldCA9IHNlbC5hbmNob3JPZmZzZXQ7CisgICAg
ICAgICAgICBzdGFydFRleHQgPSAnPHNlbGVjdGlvbi1jYXJldD4nOworICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgaWYgKHNlbC5mb2N1c09mZnNldCA+IHNlbC5hbmNob3JPZmZzZXQpIHsK
KyAgICAgICAgICAgICAgICBzdGFydE9mZnNldCA9IHNlbC5hbmNob3JPZmZzZXQ7CisgICAgICAg
ICAgICAgICAgZW5kT2Zmc2V0ID0gc2VsLmZvY3VzT2Zmc2V0OworICAgICAgICAgICAgICAgIHN0
YXJ0VGV4dCA9ICc8c2VsZWN0aW9uLWFuY2hvcj4nOworICAgICAgICAgICAgICAgIGVuZFRleHQg
PSAnPHNlbGVjdGlvbi1mb2N1cz4nOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgICBzdGFydE9mZnNldCA9IHNlbC5mb2N1c09mZnNldDsKKyAgICAgICAgICAgICAgICBlbmRP
ZmZzZXQgPSBzZWwuYW5jaG9yT2Zmc2V0OworICAgICAgICAgICAgICAgIHN0YXJ0VGV4dCA9ICc8
c2VsZWN0aW9uLWZvY3VzPic7CisgICAgICAgICAgICAgICAgZW5kVGV4dCA9ICc8c2VsZWN0aW9u
LWFuY2hvcj4nOyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgfSBlbHNlIGlmIChub2RlID09IHNlbC5mb2N1c05vZGUpIHsKKyAgICAgICAgc3Rh
cnRPZmZzZXQgPSBzZWwuZm9jdXNPZmZzZXQ7CisgICAgICAgIHN0YXJ0VGV4dCA9ICc8c2VsZWN0
aW9uLWZvY3VzPic7CisgICAgfSBlbHNlIGlmIChub2RlID09IHNlbC5hbmNob3JOb2RlKSB7Cisg
ICAgICAgIHN0YXJ0T2Zmc2V0ID0gc2VsLmFuY2hvck9mZnNldDsKKyAgICAgICAgc3RhcnRUZXh0
ID0gJzxzZWxlY3Rpb24tYW5jaG9yPic7CisgICAgfQorICAgIAorICAgIGlmIChzdGFydFRleHQg
JiYgZW5kVGV4dCkKKyAgICAgICAgaW5uZXJNYXJrdXAgPSBpbm5lck1hcmt1cC5zdWJzdHJpbmco
MCwgc3RhcnRPZmZzZXQpICsgc3RhcnRUZXh0ICsgaW5uZXJNYXJrdXAuc3Vic3RyaW5nKHN0YXJ0
T2Zmc2V0LCBlbmRPZmZzZXQpICsgZW5kVGV4dCArIGlubmVyTWFya3VwLnN1YnN0cmluZyhlbmRP
ZmZzZXQpOyAgICAgICAgICAgICAgICAgICAgICAgCisgICAgZWxzZSBpZiAoc3RhcnRUZXh0KQor
ICAgICAgICBpbm5lck1hcmt1cCA9IGlubmVyTWFya3VwLnN1YnN0cmluZygwLCBzdGFydE9mZnNl
dCkgKyBzdGFydFRleHQgKyBpbm5lck1hcmt1cC5zdWJzdHJpbmcoc3RhcnRPZmZzZXQpOworCisg
ICAgcmV0dXJuIGlubmVyTWFya3VwOworfQorCitNYXJrdXAuX2dldFNlbGVjdGlvbk1hcmtlciA9
IGZ1bmN0aW9uKG5vZGUsIGluZGV4KQoreworICAgIHZhciBzZWwgPSB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCk7CisgICAgaWYgKGluZGV4ID09IHNlbC5hbmNob3JPZmZzZXQgJiYgbm9kZSA9PSBzZWwu
YW5jaG9yTm9kZSkgeworICAgICAgICBpZiAoc2VsLmlzQ29sbGFwc2VkKQorICAgICAgICAgICAg
cmV0dXJuICc8c2VsZWN0aW9uLWNhcmV0Pic7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJl
dHVybiAnPHNlbGVjdGlvbi1hbmNob3I+JzsKKyAgICB9IGVsc2UgaWYgKGluZGV4ID09IHNlbC5m
b2N1c09mZnNldCAmJiBub2RlID09IHNlbC5mb2N1c05vZGUpCisgICAgICAgIHJldHVybiAnPHNl
bGVjdGlvbi1mb2N1cz4nOworCisgICAgcmV0dXJuICcnOworfQorCit3aW5kb3cuYWRkRXZlbnRM
aXN0ZW5lcignbG9hZCcsIE1hcmt1cC5kdW1wLCBmYWxzZSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>54452</attachid>
            <date>2010-04-27 14:05:52 -0700</date>
            <delta_ts>2010-04-27 14:06:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-26501-20100427140546.patch</filename>
            <type>text/plain</type>
            <size>1218</size>
            <attacher name="Ojan Vafai">ojan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAwYzY1YjA0MDI0ZjJkNGMwYTBmODMzNDE3Yzk5ZmE3OTM1YmU1ODM3Li4zMDFhNTcz
NDY2YTYyMDI0MzM1ZDNiYWVmNTUzNGNmNTVhZGJiNWZiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAK
KzIwMTAtMDQtMjcgIE9qYW4gVmFmYWkgIDxvamFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBV
bnJldmlld2VkLiBNaW5vciBmaXggYWZ0ZXIgZ29vZnVwIGluIGh0dHA6Ly90cmFjLndlYmtpdC5v
cmcvY2hhbmdlc2V0LzU4MzMxCisKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIgc2hvdWxk
IGhhdmUgZHVtcEFzTWFya3VwCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yNjUwMQorCisgICAgICAgIEZvcmdvdCB0byByZXNldCB0aGUgdGVzdCByZXN1
bHRzIGFmdGVyIGRvaW5nIHRoZSBjb2RlIHJldmlldyBmZWVkYmFjaworICAgICAgICBvZiBhZGRp
bmcgYSBuZXdsaW5lLgorCisgICAgICAgICogZWRpdGluZy9zZWxlY3Rpb24vZHVtcC1hcy1tYXJr
dXAtZXhwZWN0ZWQudHh0OgorCiAyMDEwLTA0LTI2ICBPamFuIFZhZmFpICA8b2phbkBjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9kdW1wLWFzLW1hcmt1cC1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9kdW1wLWFzLW1hcmt1cC1leHBlY3RlZC50
eHQKaW5kZXggMWUzZGRkNDA1NzJkNGQ5MmE3MjU3M2QyYTg1M2Y2NTE0OWFmZjAxZS4uMDM2NzQ1
Y2FhYjRmNDE0YmMyN2RkNWE2NmI5YTkxYjljMTJjNDExNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvZWRpdGluZy9zZWxlY3Rpb24vZHVtcC1hcy1tYXJrdXAtZXhwZWN0ZWQudHh0CisrKyBiL0xh
eW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2R1bXAtYXMtbWFya3VwLWV4cGVjdGVkLnR4dApA
QCAtNTUsNiArNTUsOCBAQCBmb288LyN0ZXh0PgogPFNDUklQVD4KIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5zZWxlY3RBbGxDaGlsZHJlbihiYXIpCiA8L1NDUklQVD4KKzwjdGV4dD4KKzwvI3RleHQ+
CiA8L0JPRFk+CiA8L0hUTUw+CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>