<?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>82090</bug_id>
          
          <creation_ts>2012-03-23 14:10:17 -0700</creation_ts>
          <short_desc>[JSC]ArrayBufferView and its ArrayBuffer are appended to object pool in wrong order</short_desc>
          <delta_ts>2012-04-04 13:43:55 -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>WebCore JavaScript</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P1</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yong Li">yong.li.webkit</reporter>
          <assigned_to name="Dmitry Lomov">dslomov</assigned_to>
          <cc>dslomov</cc>
    
    <cc>kbr</cc>
    
    <cc>levin</cc>
    
    <cc>oliver</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>586720</commentid>
    <comment_count>0</comment_count>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2012-03-23 14:10:17 -0700</bug_when>
    <thetext>if (!arrayBufferObj || !arrayBufferObj-&gt;inherits(&amp;JSArrayBuffer::s_info))
 1241 return false; 

It assumes arrayBufferObj must be a JSArrayBuffer, however arrays like JSUitn8Array are derived from JSArrayBufferView.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586722</commentid>
    <comment_count>1</comment_count>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2012-03-23 14:10:44 -0700</bug_when>
    <thetext>got a fix, will try to create a test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586756</commentid>
    <comment_count>2</comment_count>
    <who name="Dmitry Lomov">dslomov</who>
    <bug_when>2012-03-23 14:28:44 -0700</bug_when>
    <thetext>(In reply to comment #1)
&gt; got a fix, will try to create a test

What is the test that fails for you? 
LayoutTests/fast/canvas/webgl/array-message-passing.html is the key test that tests this functionality and it passes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586771</commentid>
    <comment_count>3</comment_count>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2012-03-23 14:47:08 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (In reply to comment #1)
&gt; &gt; got a fix, will try to create a test
&gt; 
&gt; What is the test that fails for you? 
&gt; LayoutTests/fast/canvas/webgl/array-message-passing.html is the key test that tests this functionality and it passes.

Sorry my first conclusion is wrong. It appears like ArrayBufferView just because the ArrayBuffer isn&apos;t there, and it hits the other ArrayBufferView.

The reason that the ArrayBuffer isn&apos;t there is due to this:

                if (!startObjectInternal(obj)) // handle duplicates
636:                    return true;
                write(ArrayBufferTag);

When the deserializer reads the ArrayBufferView, it doesn&apos;t expect missing array buffer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586840</commentid>
    <comment_count>4</comment_count>
    <who name="Dmitry Lomov">dslomov</who>
    <bug_when>2012-03-23 16:07:26 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (In reply to comment #2)
&gt; &gt; (In reply to comment #1)
&gt; &gt; &gt; got a fix, will try to create a test
&gt; &gt; 
&gt; &gt; What is the test that fails for you? 
&gt; &gt; LayoutTests/fast/canvas/webgl/array-message-passing.html is the key test that tests this functionality and it passes.
&gt; 
&gt; Sorry my first conclusion is wrong. It appears like ArrayBufferView just because the ArrayBuffer isn&apos;t there, and it hits the other ArrayBufferView.
&gt; 
&gt; The reason that the ArrayBuffer isn&apos;t there is due to this:
&gt; 
&gt;                 if (!startObjectInternal(obj)) // handle duplicates
&gt; 636:                    return true;
&gt;                 write(ArrayBufferTag);
&gt; 
&gt; When the deserializer reads the ArrayBufferView, it doesn&apos;t expect missing array buffer.

Could you give an example of JavaScript code that fails?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>587698</commentid>
    <comment_count>5</comment_count>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2012-03-26 07:10:46 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (In reply to comment #3)
&gt; &gt; (In reply to comment #2)
&gt; &gt; &gt; (In reply to comment #1)
&gt; &gt; &gt; &gt; got a fix, will try to create a test
&gt; &gt; &gt; 
&gt; &gt; &gt; What is the test that fails for you? 
&gt; &gt; &gt; LayoutTests/fast/canvas/webgl/array-message-passing.html is the key test that tests this functionality and it passes.
&gt; &gt; 
&gt; &gt; Sorry my first conclusion is wrong. It appears like ArrayBufferView just because the ArrayBuffer isn&apos;t there, and it hits the other ArrayBufferView.
&gt; &gt; 
&gt; &gt; The reason that the ArrayBuffer isn&apos;t there is due to this:
&gt; &gt; 
&gt; &gt;                 if (!startObjectInternal(obj)) // handle duplicates
&gt; &gt; 636:                    return true;
&gt; &gt;                 write(ArrayBufferTag);
&gt; &gt; 
&gt; &gt; When the deserializer reads the ArrayBufferView, it doesn&apos;t expect missing array buffer.
&gt; 
&gt; Could you give an example of JavaScript code that fails?

I&apos;ll look deeper into it. For now let me close it. If there is a real issue, I&apos;ll reopen this bug</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>587893</commentid>
    <comment_count>6</comment_count>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2012-03-26 10:50:38 -0700</bug_when>
    <thetext>Dmitry, the problem I&apos;m seeing is:

1) when serializing ArrayBufferView, it appends the ArrayBufferView object to m_objectPool first, and then appends the ArrayBuffer object.

2) When deserializing, it reads ArrayBuffer first (to m_gcBuffer), and then reads ArrayBufferView.

So if the objects are referenced later with ObjectReferenceTag, it could mess up.

Trying to get a test case now. Do you see anything wrong above?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>587959</commentid>
    <comment_count>7</comment_count>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2012-03-26 11:47:46 -0700</bug_when>
    <thetext>patch is forthcoming</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>587967</commentid>
    <comment_count>8</comment_count>
      <attachid>133858</attachid>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2012-03-26 12:00:33 -0700</bug_when>
    <thetext>Created attachment 133858
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>587985</commentid>
    <comment_count>9</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2012-03-26 12:22:32 -0700</bug_when>
    <thetext>Did this bug cause a crash or did it just fail to copy correctly?  I&apos;m asking simply because it&apos;s important that the deserialiser never crash, even on bogus data</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>587991</commentid>
    <comment_count>10</comment_count>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2012-03-26 12:27:46 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; Did this bug cause a crash or did it just fail to copy correctly?  I&apos;m asking simply because it&apos;s important that the deserialiser never crash, even on bogus data

I believe it fails to copy correctly. My Qt build does crash (on ubuntu 32) though, when trying to report a JS error. I haven&apos;t looked deeper into that crash but I think it is another issue. When building with the patch, it doesn&apos;t crash any more and can dump the results.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>588008</commentid>
    <comment_count>11</comment_count>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2012-03-26 12:39:33 -0700</bug_when>
    <thetext>to (In reply to comment #10)
&gt; (In reply to comment #9)
&gt; &gt; Did this bug cause a crash or did it just fail to copy correctly?  I&apos;m asking simply because it&apos;s important that the deserialiser never crash, even on bogus data
&gt; 
&gt; I believe it fails to copy correctly. My Qt build does crash (on ubuntu 32) though, when trying to report a JS error. I haven&apos;t looked deeper into that crash but I think it is another issue. When building with the patch, it doesn&apos;t crash any more and can dump the results.

Forgot to mention, it doesn&apos;t on QNX</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>588016</commentid>
    <comment_count>12</comment_count>
      <attachid>133858</attachid>
    <who name="Dmitry Lomov">dslomov</who>
    <bug_when>2012-03-26 12:44:29 -0700</bug_when>
    <thetext>Comment on attachment 133858
the patch

View in context: https://bugs.webkit.org/attachment.cgi?id=133858&amp;action=review

Thanks for fishing out the root cause! It is a bug indeed!
However I do not think that your fix is correct.

&gt; Source/WebCore/bindings/js/SerializedScriptValue.cpp:1499
&gt; +            m_gcBuffer.removeLast();

I do not understand this. There is no guarantee that m_gcBuffer.last() is in fact a slot for ArrayBuffer. Here is the object serialization of which will fail:
{ new DataView(arrayBuffer), intermediateDataObject, new DataView(arrayBuffer) }
By the second DataView is deserialized, m_gcBuffer.last() will be a slot for intermediateDataObject. 
The real fix would be to synchronize index allocation for serialization and deserialization, the easiest way to do this is on serialization time - first allocate id fot ArrayBuffer and only then allocate id for ArrayBufferView.
I can prep a fix for that if you want (will be today later in the day)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>588061</commentid>
    <comment_count>13</comment_count>
      <attachid>133858</attachid>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2012-03-26 13:22:21 -0700</bug_when>
    <thetext>Comment on attachment 133858
the patch

Thanks Dmitry! You are definitely the best one to fix it, at least better than me :). I&apos;ll leave it to you then.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>590573</commentid>
    <comment_count>14</comment_count>
      <attachid>134437</attachid>
    <who name="Dmitry Lomov">dslomov</who>
    <bug_when>2012-03-28 16:23:01 -0700</bug_when>
    <thetext>Created attachment 134437
The fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>594747</commentid>
    <comment_count>15</comment_count>
      <attachid>134437</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2012-04-03 12:29:55 -0700</bug_when>
    <thetext>Comment on attachment 134437
The fix

View in context: https://bugs.webkit.org/attachment.cgi?id=134437&amp;action=review

Looks good. Couple of minor typos in the ChangeLogs; feel free to fix upon landing. r=me

&gt; LayoutTests/ChangeLog:5
&gt; +        The implementation of structured cloning algorithm (http://www.w3.org/TR/html5/common-dom-interfaces.html#internal-structured-cloning-algorithm)

Perhaps this ChangeLog message shouldn&apos;t duplicate that in WebCore?

&gt; LayoutTests/ChangeLog:15
&gt; +        the ArrayBufferView and then to underlying ArrayBuffer; however on deserialziation the ids were assigned another way round.

typo: deserialization

&gt; LayoutTests/ChangeLog:17
&gt; +        This patch fixes that by assigning the id first to ArrayBuffer and then to ArrayBufferView, and addes corresponding test cases.

typo: adds

&gt; Source/WebCore/ChangeLog:15
&gt; +        the ArrayBufferView and then to underlying ArrayBuffer; however on deserialziation the ids were assigned another way round.

typo (see above)

&gt; Source/WebCore/ChangeLog:17
&gt; +        This patch fixes that by assigning the id first to ArrayBuffer and then to ArrayBufferView, and addes corresponding test cases.

typo (see above)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>595784</commentid>
    <comment_count>16</comment_count>
      <attachid>135646</attachid>
    <who name="Dmitry Lomov">dslomov</who>
    <bug_when>2012-04-04 12:11:54 -0700</bug_when>
    <thetext>Created attachment 135646
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>595785</commentid>
    <comment_count>17</comment_count>
      <attachid>135647</attachid>
    <who name="Dmitry Lomov">dslomov</who>
    <bug_when>2012-04-04 12:13:50 -0700</bug_when>
    <thetext>Created attachment 135647
One more</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>595786</commentid>
    <comment_count>18</comment_count>
      <attachid>135647</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2012-04-04 12:15:14 -0700</bug_when>
    <thetext>Comment on attachment 135647
One more

View in context: https://bugs.webkit.org/attachment.cgi?id=135647&amp;action=review

r=me again; one minor typo.

&gt; LayoutTests/ChangeLog:5
&gt; +        Adds tests that cover mnore than one view of the same ArrayBuffer being cloned.

typo: mnore</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>595788</commentid>
    <comment_count>19</comment_count>
    <who name="Dmitry Lomov">dslomov</who>
    <bug_when>2012-04-04 12:17:58 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; (From update of attachment 135647 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=135647&amp;action=review
&gt; 
&gt; r=me again; one minor typo.
&gt; 
&gt; &gt; LayoutTests/ChangeLog:5
&gt; &gt; +        Adds tests that cover mnore than one view of the same ArrayBuffer being cloned.
&gt; 
&gt; typo: mnore

Rats I cant type...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>595791</commentid>
    <comment_count>20</comment_count>
      <attachid>135650</attachid>
    <who name="Dmitry Lomov">dslomov</who>
    <bug_when>2012-04-04 12:19:55 -0700</bug_when>
    <thetext>Created attachment 135650
Typo fixed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>595882</commentid>
    <comment_count>21</comment_count>
      <attachid>135650</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-04 13:43:49 -0700</bug_when>
    <thetext>Comment on attachment 135650
Typo fixed

Clearing flags on attachment: 135650

Committed r113233: &lt;http://trac.webkit.org/changeset/113233&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>595883</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-04 13:43:55 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133858</attachid>
            <date>2012-03-26 12:00:33 -0700</date>
            <delta_ts>2012-03-26 13:22:20 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>82090.patch</filename>
            <type>text/plain</type>
            <size>5287</size>
            <attacher name="Yong Li">yong.li.webkit</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA2NTU4MGVjLi4zMmI4OTlmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMDMt
MjYgIFlvbmcgTGkgIDx5b2xpQHJpbS5jb20+CisKKyAgICAgICAgQWRkIGEgY2FzZSB0aGF0IDIg
QXJyYXlCdWZmZXJWaWV3IHNoYXJlcyBvbmUgQXJyYXlCdWZmZXIuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MjA5MAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvYXJyYXkt
bWVzc2FnZS1wYXNzaW5nLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJn
bC9zY3JpcHQtdGVzdHMvYXJyYXktbWVzc2FnZS1wYXNzaW5nLmpzOgorICAgICAgICAoZGF0YVZp
ZXdDb21wYXJlMik6CisKIDIwMTItMDMtMDkgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9y
Zz4KIAogICAgICAgICBOb3RlIHRoYXQgZmFzdC9ldmVudHMvaW5wdXQtaW1hZ2Utc2Nyb2xsZWQt
eC15Lmh0bWwgaXMgZmxha3kuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93
ZWJnbC9hcnJheS1tZXNzYWdlLXBhc3NpbmctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFz
dC9jYW52YXMvd2ViZ2wvYXJyYXktbWVzc2FnZS1wYXNzaW5nLWV4cGVjdGVkLnR4dAppbmRleCAz
OTM2ZjUyLi4xZWQ5ZTQzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJn
bC9hcnJheS1tZXNzYWdlLXBhc3NpbmctZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvY2FudmFzL3dlYmdsL2FycmF5LW1lc3NhZ2UtcGFzc2luZy1leHBlY3RlZC50eHQKQEAgLTIz
LDYgKzIzLDE4IEBAIFBBU1MgRGF0YVZpZXcxOiBidWZmZXIgbGVuZ3RocyBhcmUgMQogUEFTUyBE
YXRhVmlldzE6IGJ1ZmZlcnMgaGF2ZSB0aGUgc2FtZSBjb250ZW50cwogUEFTUyBEYXRhVmlldzE6
IG9mZnNldCBpcyAwCiBQQVNTIERhdGFWaWV3MTogbGVuZ3RoIGlzIDEKK1BBU1MgRGF0YVZpZXcx
LWR1cDogY2xhc3NlcyBhcmUgW29iamVjdCBEYXRhVmlld10KK1BBU1MgRGF0YVZpZXcxLWR1cDog
Y2xhc3NlcyBhcmUgW29iamVjdCBBcnJheUJ1ZmZlcl0KK1BBU1MgRGF0YVZpZXcxLWR1cDogYnVm
ZmVyIGxlbmd0aHMgYXJlIDEKK1BBU1MgRGF0YVZpZXcxLWR1cDogYnVmZmVycyBoYXZlIHRoZSBz
YW1lIGNvbnRlbnRzCitQQVNTIERhdGFWaWV3MS1kdXA6IG9mZnNldCBpcyAwCitQQVNTIERhdGFW
aWV3MS1kdXA6IGxlbmd0aCBpcyAxCitQQVNTIERhdGFWaWV3MS1kdXA6IGNsYXNzZXMgYXJlIFtv
YmplY3QgRGF0YVZpZXddCitQQVNTIERhdGFWaWV3MS1kdXA6IGNsYXNzZXMgYXJlIFtvYmplY3Qg
QXJyYXlCdWZmZXJdCitQQVNTIERhdGFWaWV3MS1kdXA6IGJ1ZmZlciBsZW5ndGhzIGFyZSAxCitQ
QVNTIERhdGFWaWV3MS1kdXA6IGJ1ZmZlcnMgaGF2ZSB0aGUgc2FtZSBjb250ZW50cworUEFTUyBE
YXRhVmlldzEtZHVwOiBvZmZzZXQgaXMgMAorUEFTUyBEYXRhVmlldzEtZHVwOiBsZW5ndGggaXMg
MQogUEFTUyBEYXRhVmlldzEyODogY2xhc3NlcyBhcmUgW29iamVjdCBEYXRhVmlld10KIFBBU1Mg
RGF0YVZpZXcxMjg6IGNsYXNzZXMgYXJlIFtvYmplY3QgQXJyYXlCdWZmZXJdCiBQQVNTIERhdGFW
aWV3MTI4OiBidWZmZXIgbGVuZ3RocyBhcmUgMTI4CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L2NhbnZhcy93ZWJnbC9zY3JpcHQtdGVzdHMvYXJyYXktbWVzc2FnZS1wYXNzaW5nLmpzIGIv
TGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvc2NyaXB0LXRlc3RzL2FycmF5LW1lc3NhZ2Ut
cGFzc2luZy5qcwppbmRleCA3NGYxODkxLi4wOTk1NjdiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9mYXN0L2NhbnZhcy93ZWJnbC9zY3JpcHQtdGVzdHMvYXJyYXktbWVzc2FnZS1wYXNzaW5nLmpz
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3NjcmlwdC10ZXN0cy9hcnJheS1t
ZXNzYWdlLXBhc3NpbmcuanMKQEAgLTY5LDEyICs2OSwyMCBAQCBmdW5jdGlvbiB0eXBlZEFycmF5
Q29tcGFyZSh0ZXN0TmFtZSwgZ290LCBzZW50KSB7CiAgICAgICAgIHRlc3RGYWlsZWQodGVzdE5h
bWUgKyAiOiBleHBlY3RlZCBCWVRFU19QRVJfRUxFTUVOVCAiICsgc2VudC5CWVRFU19QRVJfRUxF
TUVOVCArICIsIHNhdyAiICsgZ290LkJZVEVTX1BFUl9FTEVNRU5UKTsKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogZnVuY3Rpb24gZGF0YVZpZXdD
b21wYXJlKHRlc3ROYW1lLCBnb3QsIHNlbnQpIHsKLSAgICBpZiAoIXZpZXdDb21wYXJlKHRlc3RO
YW1lLCBnb3QsIHNlbnQpKSB7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gdmll
d0NvbXBhcmUodGVzdE5hbWUsIGdvdCwgc2VudCk7Cit9CisKK2Z1bmN0aW9uIGRhdGFWaWV3Q29t
cGFyZTIodGVzdE5hbWUsIGdvdCwgc2VudCkgeworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMjsg
KytpKSB7CisgICAgICAgIGlmICghZGF0YVZpZXdDb21wYXJlKHRlc3ROYW1lLCBnb3RbaV0sIHNl
bnRbaV0pKSB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KICAgICB9Cisg
ICAgcmV0dXJuIHRydWU7CiB9CiAKIGZ1bmN0aW9uIGNyZWF0ZUJ1ZmZlcihsZW5ndGgpIHsKQEAg
LTExNSwxMiArMTIzLDE1IEBAIHZhciBiYXNpY0J1ZmZlclR5cGVzID0gWwogICAgIFsiRmxvYXQ2
NCIsIEZsb2F0NjRBcnJheSwgOF0KIF07CiAKK3ZhciBhcnJheUJ1ZmZlcjEgPSBjcmVhdGVCdWZm
ZXIoMSk7CisKIHZhciB0ZXN0TGlzdCA9IFsKICAgICBbJ0FycmF5QnVmZmVyMCcsIG5ldyBBcnJh
eUJ1ZmZlcigwKSwgYnVmZmVyQ29tcGFyZV0sCiAgICAgWydBcnJheUJ1ZmZlcjEnLCBjcmVhdGVC
dWZmZXIoMSksIGJ1ZmZlckNvbXBhcmVdLAogICAgIFsnQXJyYXlCdWZmZXIxMjgnLCBjcmVhdGVC
dWZmZXIoMTI4KSwgYnVmZmVyQ29tcGFyZV0sCiAgICAgWydEYXRhVmlldzAnLCBuZXcgRGF0YVZp
ZXcobmV3IEFycmF5QnVmZmVyKDApKSwgZGF0YVZpZXdDb21wYXJlXSwKICAgICBbJ0RhdGFWaWV3
MScsIG5ldyBEYXRhVmlldyhjcmVhdGVCdWZmZXIoMSkpLCBkYXRhVmlld0NvbXBhcmVdLAorICAg
IFsnRGF0YVZpZXcxLWR1cCcsIFtuZXcgRGF0YVZpZXcoYXJyYXlCdWZmZXIxKSwgbmV3IERhdGFW
aWV3KGFycmF5QnVmZmVyMSldLCBkYXRhVmlld0NvbXBhcmUyXSwKICAgICBbJ0RhdGFWaWV3MTI4
JywgbmV3IERhdGFWaWV3KGNyZWF0ZUJ1ZmZlcigxMjgpKSwgZGF0YVZpZXdDb21wYXJlXSwKICAg
ICBbJ0RhdGFWaWV3MV9vZmZzZXRfYXRfZW5kJywgbmV3IERhdGFWaWV3KGNyZWF0ZUJ1ZmZlcigx
KSwgMSwgMCksIGRhdGFWaWV3Q29tcGFyZV0sCiAgICAgWydEYXRhVmlldzEyOF9vZmZzZXRfYXRf
ZW5kJywgbmV3IERhdGFWaWV3KGNyZWF0ZUJ1ZmZlcigxMjgpLCAxMjgsIDApLCBkYXRhVmlld0Nv
bXBhcmVdLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCmluZGV4IDFiYWE2NDcuLjI4ZTI0YjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMSBAQAorMjAxMi0wMy0yNiAgWW9uZyBMaSAgPHlvbGlAcmltLmNvbT4KKworICAgICAg
ICBBcnJheUJ1ZmZlclZpZXcgYW5kIGl0cyBBcnJheUJ1ZmZlciBhcmUgYXBwZW5kZWQgdG8gb2Jq
ZWN0IHBvb2wKKyAgICAgICAgaW4gdGhlIHJldmVyc2Ugb3JkZXIgdGhleSBhcmUgcHV0LgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODIwOTAKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDbG9uZVNlcmlhbGl6
ZXIgcHV0cyBBcnJheUJ1ZmZlclZpZXcgZmlyc3QgdG8gdGhlIG9iamVjdCBwb29sLAorICAgICAg
ICBhbmQgdGhlbiBwdXRzIGl0cyBBcnJheUJ1ZmZlci4gSG93ZXZlciBDbG9uZURlc2VyaWFsaXpl
ciBkb2VzCisgICAgICAgIHRoZSByZXZlcnNlIHdheSwgd2hpY2ggd2lsbCBjYXVzZSBwcm9ibGVt
IHdoZW4gdGhlIEFycmF5QnVmZmVyCisgICAgICAgIGlzIHJlZmVyZW5jZWQgYnkgYW5vdGhlciBB
cnJheUJ1ZmZlclZpZXcgKHRocm91Z2ggT2JqZWN0UmVmZXJlbmNlVGFnKS4KKworICAgICAgICBU
ZXN0OiBmYXN0L2NhbnZhcy93ZWJnbC9zY3JpcHQtdGVzdHMvYXJyYXktbWVzc2FnZS1wYXNzaW5n
LmpzOiBtb2RpZmllZC4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRW
YWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZURlc2VyaWFsaXplcjo6cmVhZFRlcm1p
bmFsKToKKwogMjAxMi0wMy0wOSAgTmF0ZSBDaGFwaW4gIDxqYXBoZXRAY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIENhY2hlZFJhd1Jlc291cmNlIGJyZWFrcyB3aGVuIHRyeWluZyB0byBsb2FkCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFs
dWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVl
LmNwcAppbmRleCA3YzU4NmFhLi4zYjUyYWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKQEAgLTE0OTQsNyArMTQ5NCwx
MSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGZhaWwoKTsKICAgICAgICAgICAgICAgICBy
ZXR1cm4gSlNWYWx1ZSgpOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgQVNTRVJUKCFtX2dj
QnVmZmVyLmlzRW1wdHkoKSk7CisgICAgICAgICAgICBKU1ZhbHVlIGFycmF5QnVmZmVyID0gbV9n
Y0J1ZmZlci5sYXN0KCk7CisgICAgICAgICAgICBtX2djQnVmZmVyLnJlbW92ZUxhc3QoKTsKICAg
ICAgICAgICAgIG1fZ2NCdWZmZXIuYXBwZW5kKGFycmF5QnVmZmVyVmlldyk7CisgICAgICAgICAg
ICBtX2djQnVmZmVyLmFwcGVuZChhcnJheUJ1ZmZlcik7CiAgICAgICAgICAgICByZXR1cm4gYXJy
YXlCdWZmZXJWaWV3OwogICAgICAgICB9CiAgICAgICAgIGRlZmF1bHQ6Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>134437</attachid>
            <date>2012-03-28 16:23:01 -0700</date>
            <delta_ts>2012-04-04 12:11:54 -0700</delta_ts>
            <desc>The fix</desc>
            <filename>82090.patch</filename>
            <type>text/plain</type>
            <size>10501</size>
            <attacher name="Dmitry Lomov">dslomov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBmN2IwZTNkLi45Y2NiNjA3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTItMDMt
MjggIERtaXRyeSBMb21vdiAgPGRzbG9tb3ZAZ29vZ2xlLmNvbT4KKworICAgICAgICBbSlNDXSBB
cnJheUJ1ZmZlclZpZXcgYW5kIGl0cyBBcnJheUJ1ZmZlciBhcmUgYXBwZW5kZWQgdG8gb2JqZWN0
IHBvb2wgaW4gd3Jvbmcgb3JkZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTgyMDkwCisgICAgICAgIFRoZSBpbXBsZW1lbnRhdGlvbiBvZiBzdHJ1Y3R1
cmVkIGNsb25pbmcgYWxnb3JpdGhtIChodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNS9jb21tb24t
ZG9tLWludGVyZmFjZXMuaHRtbCNpbnRlcm5hbC1zdHJ1Y3R1cmVkLWNsb25pbmctYWxnb3JpdGht
KQorICAgICAgICBpbiBTZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwIGFzc2lnbnMgbnVtZXJpY2Fs
IGlkZW50aWZpZXJzIHRvIGVuY29udGVyZWQgb2JqZWN0cyBhcyBpdCB0cmF2ZXJzZXMKKyAgICAg
ICAgdGhlIGNsb25lZCBvYmplY3QgZHVyaW5nIHNlcmlhbGl6YXRpb24uCisgICAgICAgIFdoZW4g
dGhlIGNsb25pbmcgZW5jb3VudGVycyBhbiBhbHJlYWR5IHNlZW4gb2JqZWN0LCBpdCB0cmFuc2Zl
cnMgdGhlIGFzc2lnbmVkIG51bWVyaWNhbCBpZAorICAgICAgICBpbnN0ZWFkIG9mIGNsb25pbmcg
dGhlIG9iamVjdCBhZ2Fpbi4gRGVzZXJpYWxpemF0aW9uIHByb2Nlc3MgdGhlbiByZXBlYXRzIHRo
ZSBwcm9jZXNzIGluIAorICAgICAgICB0aGUgbWlycm9yIGZhc2hpb24sIGkuZS4gb24gZGVzZXJp
YWxpemluZyB0aGUgb2JqZWN0IGl0IGFzc2lnbnMgZGVzZXJpYWxpemVkIG9iamVjdCBhIG51bWVy
aWMgaWQgYW5kIGlmIGl0CisgICAgICAgIGRlc2VyaWFsaXplcyB0aGUgaWQgaXQgc3Vic3RpdHV0
ZXMgdGhlIHBlcnZpb3VzbHkgZGVzZXJpYWxpemVkIG9iamVjdHMuIEl0IGlzIGNyaXRpY2FsIHRo
YXQgc2VyaWFsaXphdGlvbiBhbmQgZGVzZXJpYWxpemF0aW9uCisgICAgICAgIGFzc2lnbnMgbnVt
ZXJpYyBpZHMgaW4gdGhlIHNhbWUgb3JkZXIuCisKKyAgICAgICAgVGhlIGJ1ZyAoZGlzY292ZXJl
ZCBieSBZb25nIExpKSBpcyB0aGF0IHdoZW4gc2VyaWFsaXppbmcgQXJyYXlCdWZmZXJWaWV3LCB0
aGUgaWRzIHdlcmUgYXNzaWduZWQgZmlyc3QgdG8gCisgICAgICAgIHRoZSBBcnJheUJ1ZmZlclZp
ZXcgYW5kIHRoZW4gdG8gdW5kZXJseWluZyBBcnJheUJ1ZmZlcjsgaG93ZXZlciBvbiBkZXNlcmlh
bHppYXRpb24gdGhlIGlkcyB3ZXJlIGFzc2lnbmVkIGFub3RoZXIgd2F5IHJvdW5kLgorCisgICAg
ICAgIFRoaXMgcGF0Y2ggZml4ZXMgdGhhdCBieSBhc3NpZ25pbmcgdGhlIGlkIGZpcnN0IHRvIEFy
cmF5QnVmZmVyIGFuZCB0aGVuIHRvIEFycmF5QnVmZmVyVmlldywgYW5kIGFkZGVzIGNvcnJlc3Bv
bmRpbmcgdGVzdCBjYXNlcy4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL2FycmF5LW1lc3NhZ2UtcGFzc2luZy1leHBl
Y3RlZC50eHQ6CisgICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvc2NyaXB0LXRlc3RzL2FycmF5
LW1lc3NhZ2UtcGFzc2luZy5qczoKKyAgICAgICAgKHR5cGVkQXJyYXlDb21wYXJlKToKKyAgICAg
ICAgKGRhdGFWaWV3Q29tcGFyZSk6CisgICAgICAgIChkYXRhVmlld0NvbXBhcmUyKToKKyAgICAg
ICAgKGRhdGFWaWV3Q29tcGFyZTMpOgorCiAyMDEyLTAzLTI4ICBEaXJrIFByYW5rZSAgPGRwcmFu
a2VAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIE1vcmUgZmxha3kgdGVzdHMuCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9hcnJheS1tZXNzYWdlLXBhc3NpbmctZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvYXJyYXktbWVzc2FnZS1w
YXNzaW5nLWV4cGVjdGVkLnR4dAppbmRleCAzOTM2ZjUyLi5mMGRmNDY4IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9hcnJheS1tZXNzYWdlLXBhc3NpbmctZXhwZWN0
ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2FycmF5LW1lc3NhZ2Ut
cGFzc2luZy1leHBlY3RlZC50eHQKQEAgLTIzLDYgKzIzLDMwIEBAIFBBU1MgRGF0YVZpZXcxOiBi
dWZmZXIgbGVuZ3RocyBhcmUgMQogUEFTUyBEYXRhVmlldzE6IGJ1ZmZlcnMgaGF2ZSB0aGUgc2Ft
ZSBjb250ZW50cwogUEFTUyBEYXRhVmlldzE6IG9mZnNldCBpcyAwCiBQQVNTIERhdGFWaWV3MTog
bGVuZ3RoIGlzIDEKK1BBU1MgRGF0YVZpZXcxLWR1cDogY2xhc3NlcyBhcmUgW29iamVjdCBEYXRh
Vmlld10KK1BBU1MgRGF0YVZpZXcxLWR1cDogY2xhc3NlcyBhcmUgW29iamVjdCBBcnJheUJ1ZmZl
cl0KK1BBU1MgRGF0YVZpZXcxLWR1cDogYnVmZmVyIGxlbmd0aHMgYXJlIDEKK1BBU1MgRGF0YVZp
ZXcxLWR1cDogYnVmZmVycyBoYXZlIHRoZSBzYW1lIGNvbnRlbnRzCitQQVNTIERhdGFWaWV3MS1k
dXA6IG9mZnNldCBpcyAwCitQQVNTIERhdGFWaWV3MS1kdXA6IGxlbmd0aCBpcyAxCitQQVNTIERh
dGFWaWV3MS1kdXA6IGNsYXNzZXMgYXJlIFtvYmplY3QgRGF0YVZpZXddCitQQVNTIERhdGFWaWV3
MS1kdXA6IGNsYXNzZXMgYXJlIFtvYmplY3QgQXJyYXlCdWZmZXJdCitQQVNTIERhdGFWaWV3MS1k
dXA6IGJ1ZmZlciBsZW5ndGhzIGFyZSAxCitQQVNTIERhdGFWaWV3MS1kdXA6IGJ1ZmZlcnMgaGF2
ZSB0aGUgc2FtZSBjb250ZW50cworUEFTUyBEYXRhVmlldzEtZHVwOiBvZmZzZXQgaXMgMAorUEFT
UyBEYXRhVmlldzEtZHVwOiBsZW5ndGggaXMgMQorUEFTUyBEYXRhVmlldzEtZHVwMjogY2xhc3Nl
cyBhcmUgW29iamVjdCBEYXRhVmlld10KK1BBU1MgRGF0YVZpZXcxLWR1cDI6IGNsYXNzZXMgYXJl
IFtvYmplY3QgQXJyYXlCdWZmZXJdCitQQVNTIERhdGFWaWV3MS1kdXAyOiBidWZmZXIgbGVuZ3Ro
cyBhcmUgMQorUEFTUyBEYXRhVmlldzEtZHVwMjogYnVmZmVycyBoYXZlIHRoZSBzYW1lIGNvbnRl
bnRzCitQQVNTIERhdGFWaWV3MS1kdXAyOiBvZmZzZXQgaXMgMAorUEFTUyBEYXRhVmlldzEtZHVw
MjogbGVuZ3RoIGlzIDEKK1BBU1MgRGF0YVZpZXcxLWR1cDI6IGNsYXNzZXMgYXJlIFtvYmplY3Qg
RGF0YVZpZXddCitQQVNTIERhdGFWaWV3MS1kdXAyOiBjbGFzc2VzIGFyZSBbb2JqZWN0IEFycmF5
QnVmZmVyXQorUEFTUyBEYXRhVmlldzEtZHVwMjogYnVmZmVyIGxlbmd0aHMgYXJlIDEKK1BBU1Mg
RGF0YVZpZXcxLWR1cDI6IGJ1ZmZlcnMgaGF2ZSB0aGUgc2FtZSBjb250ZW50cworUEFTUyBEYXRh
VmlldzEtZHVwMjogb2Zmc2V0IGlzIDAKK1BBU1MgRGF0YVZpZXcxLWR1cDI6IGxlbmd0aCBpcyAx
CiBQQVNTIERhdGFWaWV3MTI4OiBjbGFzc2VzIGFyZSBbb2JqZWN0IERhdGFWaWV3XQogUEFTUyBE
YXRhVmlldzEyODogY2xhc3NlcyBhcmUgW29iamVjdCBBcnJheUJ1ZmZlcl0KIFBBU1MgRGF0YVZp
ZXcxMjg6IGJ1ZmZlciBsZW5ndGhzIGFyZSAxMjgKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvY2FudmFzL3dlYmdsL3NjcmlwdC10ZXN0cy9hcnJheS1tZXNzYWdlLXBhc3NpbmcuanMgYi9M
YXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9zY3JpcHQtdGVzdHMvYXJyYXktbWVzc2FnZS1w
YXNzaW5nLmpzCmluZGV4IDc0ZjE4OTEuLjY1NjBjYzMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2Zhc3QvY2FudmFzL3dlYmdsL3NjcmlwdC10ZXN0cy9hcnJheS1tZXNzYWdlLXBhc3NpbmcuanMK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvc2NyaXB0LXRlc3RzL2FycmF5LW1l
c3NhZ2UtcGFzc2luZy5qcwpAQCAtNjksMTQgKzY5LDQzIEBAIGZ1bmN0aW9uIHR5cGVkQXJyYXlD
b21wYXJlKHRlc3ROYW1lLCBnb3QsIHNlbnQpIHsKICAgICAgICAgdGVzdEZhaWxlZCh0ZXN0TmFt
ZSArICI6IGV4cGVjdGVkIEJZVEVTX1BFUl9FTEVNRU5UICIgKyBzZW50LkJZVEVTX1BFUl9FTEVN
RU5UICsgIiwgc2F3ICIgKyBnb3QuQllURVNfUEVSX0VMRU1FTlQpOwogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQorICAgIHJldHVybiB0cnVlOwogfQogCiBmdW5jdGlvbiBkYXRhVmlld0Nv
bXBhcmUodGVzdE5hbWUsIGdvdCwgc2VudCkgewotICAgIGlmICghdmlld0NvbXBhcmUodGVzdE5h
bWUsIGdvdCwgc2VudCkpIHsKKyAgICByZXR1cm4gdmlld0NvbXBhcmUodGVzdE5hbWUsIGdvdCwg
c2VudCk7Cit9CisKK2Z1bmN0aW9uIGRhdGFWaWV3Q29tcGFyZTIodGVzdE5hbWUsIGdvdCwgc2Vu
dCkgeworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMjsgKytpKSB7CisgICAgICAgIGlmICghZGF0
YVZpZXdDb21wYXJlKHRlc3ROYW1lLCBnb3RbaV0sIHNlbnRbaV0pKSB7CisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKGdvdFswXS5idWZmZXIgIT09
IGdvdFsxXS5idWZmZXIpIHsKKyAgICAgICAgdGVzdEZhaWxlZCh0ZXN0TmFtZSArICI6IGV4cGVj
dGVkIHRoZSBzYW1lIEFycmF5QnVmZmVyIGZvciBib3RoIHZpZXdzIik7CisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CitmdW5jdGlvbiBkYXRhVmlld0Nv
bXBhcmUzKHRlc3ROYW1lLCBnb3QsIHNlbnQpIHsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDM7
IGkgKz0gMikgeworICAgICAgICBpZiAoIWRhdGFWaWV3Q29tcGFyZSh0ZXN0TmFtZSwgZ290W2ld
LCBzZW50W2ldKSkgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAg
fQorICAgIGlmIChnb3RbMV0ueCAhPT0gc2VudFsxXS54IHx8IGdvdFsxXS55ICE9PSBzZW50WzFd
LnkpIHsKKyAgICAgICAgdGVzdEZhaWxlZCh0ZXN0TmFtZSArICI6IHt4OjEsIHk6MX0gd2FzIG5v
dCB0cmFuc2ZlcnJlZCBwcm9wZXJseSIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQor
ICAgIGlmIChnb3RbMF0uYnVmZmVyICE9PSBnb3RbMl0uYnVmZmVyKSB7CisgICAgICAgIHRlc3RG
YWlsZWQodGVzdE5hbWUgKyAiOiBleHBlY3RlZCB0aGUgc2FtZSBBcnJheUJ1ZmZlciBmb3IgYm90
aCB2aWV3cyIpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiBmYWxz
ZTsKIH0KIAorCiBmdW5jdGlvbiBjcmVhdGVCdWZmZXIobGVuZ3RoKSB7CiAgICAgdmFyIGJ1ZmZl
ciA9IG5ldyBBcnJheUJ1ZmZlcihsZW5ndGgpOwogICAgIHZhciB2aWV3ID0gbmV3IFVpbnQ4QXJy
YXkoYnVmZmVyKTsKQEAgLTExNSwxMiArMTQ0LDE2IEBAIHZhciBiYXNpY0J1ZmZlclR5cGVzID0g
WwogICAgIFsiRmxvYXQ2NCIsIEZsb2F0NjRBcnJheSwgOF0KIF07CiAKK3ZhciBhcnJheUJ1ZmZl
cjEgPSBjcmVhdGVCdWZmZXIoMSk7CisKIHZhciB0ZXN0TGlzdCA9IFsKICAgICBbJ0FycmF5QnVm
ZmVyMCcsIG5ldyBBcnJheUJ1ZmZlcigwKSwgYnVmZmVyQ29tcGFyZV0sCiAgICAgWydBcnJheUJ1
ZmZlcjEnLCBjcmVhdGVCdWZmZXIoMSksIGJ1ZmZlckNvbXBhcmVdLAogICAgIFsnQXJyYXlCdWZm
ZXIxMjgnLCBjcmVhdGVCdWZmZXIoMTI4KSwgYnVmZmVyQ29tcGFyZV0sCiAgICAgWydEYXRhVmll
dzAnLCBuZXcgRGF0YVZpZXcobmV3IEFycmF5QnVmZmVyKDApKSwgZGF0YVZpZXdDb21wYXJlXSwK
ICAgICBbJ0RhdGFWaWV3MScsIG5ldyBEYXRhVmlldyhjcmVhdGVCdWZmZXIoMSkpLCBkYXRhVmll
d0NvbXBhcmVdLAorICAgIFsnRGF0YVZpZXcxLWR1cCcsIFtuZXcgRGF0YVZpZXcoYXJyYXlCdWZm
ZXIxKSwgbmV3IERhdGFWaWV3KGFycmF5QnVmZmVyMSldLCBkYXRhVmlld0NvbXBhcmUyXSwKKyAg
ICBbJ0RhdGFWaWV3MS1kdXAyJywgW25ldyBEYXRhVmlldyhhcnJheUJ1ZmZlcjEpLCB7eDoxLCB5
OjF9LCBuZXcgRGF0YVZpZXcoYXJyYXlCdWZmZXIxKV0sIGRhdGFWaWV3Q29tcGFyZTNdLAogICAg
IFsnRGF0YVZpZXcxMjgnLCBuZXcgRGF0YVZpZXcoY3JlYXRlQnVmZmVyKDEyOCkpLCBkYXRhVmll
d0NvbXBhcmVdLAogICAgIFsnRGF0YVZpZXcxX29mZnNldF9hdF9lbmQnLCBuZXcgRGF0YVZpZXco
Y3JlYXRlQnVmZmVyKDEpLCAxLCAwKSwgZGF0YVZpZXdDb21wYXJlXSwKICAgICBbJ0RhdGFWaWV3
MTI4X29mZnNldF9hdF9lbmQnLCBuZXcgRGF0YVZpZXcoY3JlYXRlQnVmZmVyKDEyOCksIDEyOCwg
MCksIGRhdGFWaWV3Q29tcGFyZV0sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGZkN2YxYy4uZDRkYjVhYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDEyLTAzLTI4ICBEbWl0cnkgTG9tb3YgIDxkc2xv
bW92QGdvb2dsZS5jb20+CisKKyAgICAgICAgW0pTQ10gQXJyYXlCdWZmZXJWaWV3IGFuZCBpdHMg
QXJyYXlCdWZmZXIgYXJlIGFwcGVuZGVkIHRvIG9iamVjdCBwb29sIGluIHdyb25nIG9yZGVyCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MjA5MAorICAg
ICAgICBUaGUgaW1wbGVtZW50YXRpb24gb2Ygc3RydWN0dXJlZCBjbG9uaW5nIGFsZ29yaXRobSAo
aHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDUvY29tbW9uLWRvbS1pbnRlcmZhY2VzLmh0bWwjaW50
ZXJuYWwtc3RydWN0dXJlZC1jbG9uaW5nLWFsZ29yaXRobSkKKyAgICAgICAgaW4gU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLmNwcCBhc3NpZ25zIG51bWVyaWNhbCBpZGVudGlmaWVycyB0byBlbmNvbnRl
cmVkIG9iamVjdHMgYXMgaXQgdHJhdmVyc2VzCisgICAgICAgIHRoZSBjbG9uZWQgb2JqZWN0IGR1
cmluZyBzZXJpYWxpemF0aW9uLgorICAgICAgICBXaGVuIHRoZSBjbG9uaW5nIGVuY291bnRlcnMg
YW4gYWxyZWFkeSBzZWVuIG9iamVjdCwgaXQgdHJhbnNmZXJzIHRoZSBhc3NpZ25lZCBudW1lcmlj
YWwgaWQKKyAgICAgICAgaW5zdGVhZCBvZiBjbG9uaW5nIHRoZSBvYmplY3QgYWdhaW4uIERlc2Vy
aWFsaXphdGlvbiBwcm9jZXNzIHRoZW4gcmVwZWF0cyB0aGUgcHJvY2VzcyBpbiAKKyAgICAgICAg
dGhlIG1pcnJvciBmYXNoaW9uLCBpLmUuIG9uIGRlc2VyaWFsaXppbmcgdGhlIG9iamVjdCBpdCBh
c3NpZ25zIGRlc2VyaWFsaXplZCBvYmplY3QgYSBudW1lcmljIGlkIGFuZCBpZiBpdAorICAgICAg
ICBkZXNlcmlhbGl6ZXMgdGhlIGlkIGl0IHN1YnN0aXR1dGVzIHRoZSBwZXJ2aW91c2x5IGRlc2Vy
aWFsaXplZCBvYmplY3RzLiBJdCBpcyBjcml0aWNhbCB0aGF0IHNlcmlhbGl6YXRpb24gYW5kIGRl
c2VyaWFsaXphdGlvbgorICAgICAgICBhc3NpZ25zIG51bWVyaWMgaWRzIGluIHRoZSBzYW1lIG9y
ZGVyLgorCisgICAgICAgIFRoZSBidWcgKGRpc2NvdmVyZWQgYnkgWW9uZyBMaSkgaXMgdGhhdCB3
aGVuIHNlcmlhbGl6aW5nIEFycmF5QnVmZmVyVmlldywgdGhlIGlkcyB3ZXJlIGFzc2lnbmVkIGZp
cnN0IHRvIAorICAgICAgICB0aGUgQXJyYXlCdWZmZXJWaWV3IGFuZCB0aGVuIHRvIHVuZGVybHlp
bmcgQXJyYXlCdWZmZXI7IGhvd2V2ZXIgb24gZGVzZXJpYWx6aWF0aW9uIHRoZSBpZHMgd2VyZSBh
c3NpZ25lZCBhbm90aGVyIHdheSByb3VuZC4KKworICAgICAgICBUaGlzIHBhdGNoIGZpeGVzIHRo
YXQgYnkgYXNzaWduaW5nIHRoZSBpZCBmaXJzdCB0byBBcnJheUJ1ZmZlciBhbmQgdGhlbiB0byBB
cnJheUJ1ZmZlclZpZXcsIGFuZCBhZGRlcyBjb3JyZXNwb25kaW5nIHRlc3QgY2FzZXMuCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTmV3IHRlc3QgY2Fz
ZXMgYWRkZWQgdG8gZmFzdC9jYW52YXMvd2ViLWdsL2FycmF5LW1lc3NhZ2UtcGFzc2luZy5odG1s
LgorCisgICAgICAgICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNsb25lU2VyaWFsaXplcjo6Y2hlY2tGb3JEdXBsaWNhdGUpOgorICAg
ICAgICAoQ2xvbmVTZXJpYWxpemVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNsb25lU2VyaWFsaXpl
cjo6cmVjb3JkT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNsb25lU2VyaWFsaXplcjo6c3Rh
cnRPYmplY3RJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZVNlcmlhbGl6ZXI6OmR1
bXBJZlRlcm1pbmFsKToKKwogMjAxMi0wMy0yOCAgUGV0ZXIgUnliaW4gIDxwZXRlci5yeWJpbkBn
bWFpbC5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogQ29kZUdlbmVyYXRvckluc3BlY3Rv
ci5weTogc3dpdGNoIFJ1bnRpbWUsIE5ldHdvcmsgYW5kIERPTSBkb21haW5zIHRvIHR5cGVkIEFQ
SQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlw
dFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRW
YWx1ZS5jcHAKaW5kZXggOTZmMGE4MS4uZGY5MDUyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCkBAIC0zODksMjAgKzM4
OSwzMyBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gaXNKU0FycmF5KG9iamVjdCkgfHwgb2Jq
ZWN0LT5pbmhlcml0cygmSlNBcnJheTo6c19pbmZvKTsKICAgICB9CiAKLSAgICBib29sIHN0YXJ0
T2JqZWN0SW50ZXJuYWwoSlNPYmplY3QqIG9iamVjdCkKKyAgICBib29sIGNoZWNrRm9yRHVwbGlj
YXRlKEpTT2JqZWN0KiBvYmplY3QpCiAgICAgewogICAgICAgICAvLyBSZWNvcmQgb2JqZWN0IGZv
ciBncmFwaCByZWNvbnN0cnVjdGlvbgotICAgICAgICBwYWlyPE9iamVjdFBvb2w6Oml0ZXJhdG9y
LCBib29sPiBpdGVyID0gbV9vYmplY3RQb29sLmFkZChvYmplY3QsIG1fb2JqZWN0UG9vbC5zaXpl
KCkpOwotICAgICAgICAKKyAgICAgICAgT2JqZWN0UG9vbDo6aXRlcmF0b3IgaXRlciA9IG1fb2Jq
ZWN0UG9vbC5maW5kKG9iamVjdCk7CisKICAgICAgICAgLy8gSGFuZGxlIGR1cGxpY2F0ZSByZWZl
cmVuY2VzCi0gICAgICAgIGlmICghaXRlci5zZWNvbmQpIHsKKyAgICAgICAgaWYgKGl0ZXIgIT0g
bV9vYmplY3RQb29sLmVuZCgpKSB7CiAgICAgICAgICAgICB3cml0ZShPYmplY3RSZWZlcmVuY2VU
YWcpOwotICAgICAgICAgICAgQVNTRVJUKHN0YXRpY19jYXN0PGludDMyX3Q+KGl0ZXIuZmlyc3Qt
PnNlY29uZCkgPCBtX29iamVjdFBvb2wuc2l6ZSgpKTsKLSAgICAgICAgICAgIHdyaXRlT2JqZWN0
SW5kZXgoaXRlci5maXJzdC0+c2Vjb25kKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgICAgIEFTU0VSVChzdGF0aWNfY2FzdDxpbnQzMl90PihpdGVyLT5zZWNvbmQpIDwgbV9v
YmplY3RQb29sLnNpemUoKSk7CisgICAgICAgICAgICB3cml0ZU9iamVjdEluZGV4KGl0ZXItPnNl
Y29uZCk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQotICAgICAgICAKKwor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgdm9pZCByZWNvcmRPYmplY3QoSlNP
YmplY3QqIG9iamVjdCkKKyAgICB7CisgICAgICAgIG1fb2JqZWN0UG9vbC5hZGQob2JqZWN0LCBt
X29iamVjdFBvb2wuc2l6ZSgpKTsKICAgICAgICAgbV9nY0J1ZmZlci5hcHBlbmQob2JqZWN0KTsK
KyAgICB9CisKKyAgICBib29sIHN0YXJ0T2JqZWN0SW50ZXJuYWwoSlNPYmplY3QqIG9iamVjdCkK
KyAgICB7CisgICAgICAgIGlmIChjaGVja0ZvckR1cGxpY2F0ZShvYmplY3QpKQorICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZWNvcmRPYmplY3Qob2JqZWN0KTsKICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfQogCkBAIC02NDMsOSArNjU2LDExIEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAo
b2JqLT5pbmhlcml0cygmSlNBcnJheUJ1ZmZlclZpZXc6OnNfaW5mbykpIHsKLSAgICAgICAgICAg
ICAgICBpZiAoIXN0YXJ0T2JqZWN0SW50ZXJuYWwob2JqKSkKKyAgICAgICAgICAgICAgICBpZiAo
Y2hlY2tGb3JEdXBsaWNhdGUob2JqKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGR1bXBBcnJheUJ1ZmZlclZpZXcob2JqLCBjb2RlKTsK
KyAgICAgICAgICAgICAgICBib29sIHN1Y2Nlc3MgPSBkdW1wQXJyYXlCdWZmZXJWaWV3KG9iaiwg
Y29kZSk7CisgICAgICAgICAgICAgICAgcmVjb3JkT2JqZWN0KG9iaik7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIHN1Y2Nlc3M7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIENhbGxEYXRh
IHVudXNlZERhdGE7Cg==
</data>
<flag name="review"
          id="138691"
          type_id="1"
          status="+"
          setter="kbr"
    />
    <flag name="commit-queue"
          id="138692"
          type_id="3"
          status="-"
          setter="kbr"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>135646</attachid>
            <date>2012-04-04 12:11:54 -0700</date>
            <delta_ts>2012-04-04 12:13:50 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>82090.patch</filename>
            <type>text/plain</type>
            <size>9177</size>
            <attacher name="Dmitry Lomov">dslomov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA1M2EyNWY3Li44Njg3MmYxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTItMDMt
MjggIERtaXRyeSBMb21vdiAgPGRzbG9tb3ZAZ29vZ2xlLmNvbT4KKworICAgICAgICBbSlNDXSBB
cnJheUJ1ZmZlclZpZXcgYW5kIGl0cyBBcnJheUJ1ZmZlciBhcmUgYXBwZW5kZWQgdG8gb2JqZWN0
IHBvb2wgaW4gd3Jvbmcgb3JkZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTgyMDkwCisgICAgICAgIEFkZHMgdGVzdHMgdGhhdCBjb3ZlciBtbm9yZSB0
aGFuIG9uZSB2aWV3IG9mIHRoZSBzYW1lIEFycmF5QnVmZmVyIGJlaW5nIGNsb25lZC4KKworICAg
ICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJ1c3NlbGwuCisKKyAgICAgICAgKiBmYXN0L2NhbnZh
cy93ZWJnbC9hcnJheS1tZXNzYWdlLXBhc3NpbmctZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZh
c3QvY2FudmFzL3dlYmdsL3NjcmlwdC10ZXN0cy9hcnJheS1tZXNzYWdlLXBhc3NpbmcuanM6Cisg
ICAgICAgICh0eXBlZEFycmF5Q29tcGFyZSk6CisgICAgICAgIChkYXRhVmlld0NvbXBhcmUpOgor
ICAgICAgICAoZGF0YVZpZXdDb21wYXJlMik6CisgICAgICAgIChkYXRhVmlld0NvbXBhcmUzKToK
KwogMjAxMi0wNC0wMyAgQWJoaXNoZWsgQXJ5YSAgPGluZmVybm9AY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIENyYXNoIGluIFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmVTZWxlY3Rvci4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2FycmF5LW1lc3NhZ2UtcGFzc2lu
Zy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9hcnJheS1tZXNz
YWdlLXBhc3NpbmctZXhwZWN0ZWQudHh0CmluZGV4IDM5MzZmNTIuLmYwZGY0NjggMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2FycmF5LW1lc3NhZ2UtcGFzc2luZy1l
eHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvYXJyYXktbWVz
c2FnZS1wYXNzaW5nLWV4cGVjdGVkLnR4dApAQCAtMjMsNiArMjMsMzAgQEAgUEFTUyBEYXRhVmll
dzE6IGJ1ZmZlciBsZW5ndGhzIGFyZSAxCiBQQVNTIERhdGFWaWV3MTogYnVmZmVycyBoYXZlIHRo
ZSBzYW1lIGNvbnRlbnRzCiBQQVNTIERhdGFWaWV3MTogb2Zmc2V0IGlzIDAKIFBBU1MgRGF0YVZp
ZXcxOiBsZW5ndGggaXMgMQorUEFTUyBEYXRhVmlldzEtZHVwOiBjbGFzc2VzIGFyZSBbb2JqZWN0
IERhdGFWaWV3XQorUEFTUyBEYXRhVmlldzEtZHVwOiBjbGFzc2VzIGFyZSBbb2JqZWN0IEFycmF5
QnVmZmVyXQorUEFTUyBEYXRhVmlldzEtZHVwOiBidWZmZXIgbGVuZ3RocyBhcmUgMQorUEFTUyBE
YXRhVmlldzEtZHVwOiBidWZmZXJzIGhhdmUgdGhlIHNhbWUgY29udGVudHMKK1BBU1MgRGF0YVZp
ZXcxLWR1cDogb2Zmc2V0IGlzIDAKK1BBU1MgRGF0YVZpZXcxLWR1cDogbGVuZ3RoIGlzIDEKK1BB
U1MgRGF0YVZpZXcxLWR1cDogY2xhc3NlcyBhcmUgW29iamVjdCBEYXRhVmlld10KK1BBU1MgRGF0
YVZpZXcxLWR1cDogY2xhc3NlcyBhcmUgW29iamVjdCBBcnJheUJ1ZmZlcl0KK1BBU1MgRGF0YVZp
ZXcxLWR1cDogYnVmZmVyIGxlbmd0aHMgYXJlIDEKK1BBU1MgRGF0YVZpZXcxLWR1cDogYnVmZmVy
cyBoYXZlIHRoZSBzYW1lIGNvbnRlbnRzCitQQVNTIERhdGFWaWV3MS1kdXA6IG9mZnNldCBpcyAw
CitQQVNTIERhdGFWaWV3MS1kdXA6IGxlbmd0aCBpcyAxCitQQVNTIERhdGFWaWV3MS1kdXAyOiBj
bGFzc2VzIGFyZSBbb2JqZWN0IERhdGFWaWV3XQorUEFTUyBEYXRhVmlldzEtZHVwMjogY2xhc3Nl
cyBhcmUgW29iamVjdCBBcnJheUJ1ZmZlcl0KK1BBU1MgRGF0YVZpZXcxLWR1cDI6IGJ1ZmZlciBs
ZW5ndGhzIGFyZSAxCitQQVNTIERhdGFWaWV3MS1kdXAyOiBidWZmZXJzIGhhdmUgdGhlIHNhbWUg
Y29udGVudHMKK1BBU1MgRGF0YVZpZXcxLWR1cDI6IG9mZnNldCBpcyAwCitQQVNTIERhdGFWaWV3
MS1kdXAyOiBsZW5ndGggaXMgMQorUEFTUyBEYXRhVmlldzEtZHVwMjogY2xhc3NlcyBhcmUgW29i
amVjdCBEYXRhVmlld10KK1BBU1MgRGF0YVZpZXcxLWR1cDI6IGNsYXNzZXMgYXJlIFtvYmplY3Qg
QXJyYXlCdWZmZXJdCitQQVNTIERhdGFWaWV3MS1kdXAyOiBidWZmZXIgbGVuZ3RocyBhcmUgMQor
UEFTUyBEYXRhVmlldzEtZHVwMjogYnVmZmVycyBoYXZlIHRoZSBzYW1lIGNvbnRlbnRzCitQQVNT
IERhdGFWaWV3MS1kdXAyOiBvZmZzZXQgaXMgMAorUEFTUyBEYXRhVmlldzEtZHVwMjogbGVuZ3Ro
IGlzIDEKIFBBU1MgRGF0YVZpZXcxMjg6IGNsYXNzZXMgYXJlIFtvYmplY3QgRGF0YVZpZXddCiBQ
QVNTIERhdGFWaWV3MTI4OiBjbGFzc2VzIGFyZSBbb2JqZWN0IEFycmF5QnVmZmVyXQogUEFTUyBE
YXRhVmlldzEyODogYnVmZmVyIGxlbmd0aHMgYXJlIDEyOApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9jYW52YXMvd2ViZ2wvc2NyaXB0LXRlc3RzL2FycmF5LW1lc3NhZ2UtcGFzc2luZy5q
cyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3NjcmlwdC10ZXN0cy9hcnJheS1tZXNz
YWdlLXBhc3NpbmcuanMKaW5kZXggNzRmMTg5MS4uNjU2MGNjMyAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvc2NyaXB0LXRlc3RzL2FycmF5LW1lc3NhZ2UtcGFzc2lu
Zy5qcworKysgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9zY3JpcHQtdGVzdHMvYXJy
YXktbWVzc2FnZS1wYXNzaW5nLmpzCkBAIC02OSwxNCArNjksNDMgQEAgZnVuY3Rpb24gdHlwZWRB
cnJheUNvbXBhcmUodGVzdE5hbWUsIGdvdCwgc2VudCkgewogICAgICAgICB0ZXN0RmFpbGVkKHRl
c3ROYW1lICsgIjogZXhwZWN0ZWQgQllURVNfUEVSX0VMRU1FTlQgIiArIHNlbnQuQllURVNfUEVS
X0VMRU1FTlQgKyAiLCBzYXcgIiArIGdvdC5CWVRFU19QRVJfRUxFTUVOVCk7CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIGZ1bmN0aW9uIGRhdGFW
aWV3Q29tcGFyZSh0ZXN0TmFtZSwgZ290LCBzZW50KSB7Ci0gICAgaWYgKCF2aWV3Q29tcGFyZSh0
ZXN0TmFtZSwgZ290LCBzZW50KSkgeworICAgIHJldHVybiB2aWV3Q29tcGFyZSh0ZXN0TmFtZSwg
Z290LCBzZW50KTsKK30KKworZnVuY3Rpb24gZGF0YVZpZXdDb21wYXJlMih0ZXN0TmFtZSwgZ290
LCBzZW50KSB7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAyOyArK2kpIHsKKyAgICAgICAgaWYg
KCFkYXRhVmlld0NvbXBhcmUodGVzdE5hbWUsIGdvdFtpXSwgc2VudFtpXSkpIHsKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoZ290WzBdLmJ1ZmZl
ciAhPT0gZ290WzFdLmJ1ZmZlcikgeworICAgICAgICB0ZXN0RmFpbGVkKHRlc3ROYW1lICsgIjog
ZXhwZWN0ZWQgdGhlIHNhbWUgQXJyYXlCdWZmZXIgZm9yIGJvdGggdmlld3MiKTsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KK2Z1bmN0aW9uIGRhdGFW
aWV3Q29tcGFyZTModGVzdE5hbWUsIGdvdCwgc2VudCkgeworICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgMzsgaSArPSAyKSB7CisgICAgICAgIGlmICghZGF0YVZpZXdDb21wYXJlKHRlc3ROYW1lLCBn
b3RbaV0sIHNlbnRbaV0pKSB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0K
KyAgICB9CisgICAgaWYgKGdvdFsxXS54ICE9PSBzZW50WzFdLnggfHwgZ290WzFdLnkgIT09IHNl
bnRbMV0ueSkgeworICAgICAgICB0ZXN0RmFpbGVkKHRlc3ROYW1lICsgIjoge3g6MSwgeToxfSB3
YXMgbm90IHRyYW5zZmVycmVkIHByb3Blcmx5Iik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9CisgICAgaWYgKGdvdFswXS5idWZmZXIgIT09IGdvdFsyXS5idWZmZXIpIHsKKyAgICAgICAg
dGVzdEZhaWxlZCh0ZXN0TmFtZSArICI6IGV4cGVjdGVkIHRoZSBzYW1lIEFycmF5QnVmZmVyIGZv
ciBib3RoIHZpZXdzIik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJu
IGZhbHNlOwogfQogCisKIGZ1bmN0aW9uIGNyZWF0ZUJ1ZmZlcihsZW5ndGgpIHsKICAgICB2YXIg
YnVmZmVyID0gbmV3IEFycmF5QnVmZmVyKGxlbmd0aCk7CiAgICAgdmFyIHZpZXcgPSBuZXcgVWlu
dDhBcnJheShidWZmZXIpOwpAQCAtMTE1LDEyICsxNDQsMTYgQEAgdmFyIGJhc2ljQnVmZmVyVHlw
ZXMgPSBbCiAgICAgWyJGbG9hdDY0IiwgRmxvYXQ2NEFycmF5LCA4XQogXTsKIAordmFyIGFycmF5
QnVmZmVyMSA9IGNyZWF0ZUJ1ZmZlcigxKTsKKwogdmFyIHRlc3RMaXN0ID0gWwogICAgIFsnQXJy
YXlCdWZmZXIwJywgbmV3IEFycmF5QnVmZmVyKDApLCBidWZmZXJDb21wYXJlXSwKICAgICBbJ0Fy
cmF5QnVmZmVyMScsIGNyZWF0ZUJ1ZmZlcigxKSwgYnVmZmVyQ29tcGFyZV0sCiAgICAgWydBcnJh
eUJ1ZmZlcjEyOCcsIGNyZWF0ZUJ1ZmZlcigxMjgpLCBidWZmZXJDb21wYXJlXSwKICAgICBbJ0Rh
dGFWaWV3MCcsIG5ldyBEYXRhVmlldyhuZXcgQXJyYXlCdWZmZXIoMCkpLCBkYXRhVmlld0NvbXBh
cmVdLAogICAgIFsnRGF0YVZpZXcxJywgbmV3IERhdGFWaWV3KGNyZWF0ZUJ1ZmZlcigxKSksIGRh
dGFWaWV3Q29tcGFyZV0sCisgICAgWydEYXRhVmlldzEtZHVwJywgW25ldyBEYXRhVmlldyhhcnJh
eUJ1ZmZlcjEpLCBuZXcgRGF0YVZpZXcoYXJyYXlCdWZmZXIxKV0sIGRhdGFWaWV3Q29tcGFyZTJd
LAorICAgIFsnRGF0YVZpZXcxLWR1cDInLCBbbmV3IERhdGFWaWV3KGFycmF5QnVmZmVyMSksIHt4
OjEsIHk6MX0sIG5ldyBEYXRhVmlldyhhcnJheUJ1ZmZlcjEpXSwgZGF0YVZpZXdDb21wYXJlM10s
CiAgICAgWydEYXRhVmlldzEyOCcsIG5ldyBEYXRhVmlldyhjcmVhdGVCdWZmZXIoMTI4KSksIGRh
dGFWaWV3Q29tcGFyZV0sCiAgICAgWydEYXRhVmlldzFfb2Zmc2V0X2F0X2VuZCcsIG5ldyBEYXRh
VmlldyhjcmVhdGVCdWZmZXIoMSksIDEsIDApLCBkYXRhVmlld0NvbXBhcmVdLAogICAgIFsnRGF0
YVZpZXcxMjhfb2Zmc2V0X2F0X2VuZCcsIG5ldyBEYXRhVmlldyhjcmVhdGVCdWZmZXIoMTI4KSwg
MTI4LCAwKSwgZGF0YVZpZXdDb21wYXJlXSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA0OTk3NTg5Li43NDEzZGVm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIwMTItMDMtMjggIERtaXRyeSBMb21vdiAg
PGRzbG9tb3ZAZ29vZ2xlLmNvbT4KKworICAgICAgICBbSlNDXSBBcnJheUJ1ZmZlclZpZXcgYW5k
IGl0cyBBcnJheUJ1ZmZlciBhcmUgYXBwZW5kZWQgdG8gb2JqZWN0IHBvb2wgaW4gd3Jvbmcgb3Jk
ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgyMDkw
CisgICAgICAgIFRoZSBpbXBsZW1lbnRhdGlvbiBvZiBzdHJ1Y3R1cmVkIGNsb25pbmcgYWxnb3Jp
dGhtIChodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNS9jb21tb24tZG9tLWludGVyZmFjZXMuaHRt
bCNpbnRlcm5hbC1zdHJ1Y3R1cmVkLWNsb25pbmctYWxnb3JpdGhtKQorICAgICAgICBpbiBTZXJp
YWxpemVkU2NyaXB0VmFsdWUuY3BwIGFzc2lnbnMgbnVtZXJpY2FsIGlkZW50aWZpZXJzIHRvIGVu
Y29udGVyZWQgb2JqZWN0cyBhcyBpdCB0cmF2ZXJzZXMKKyAgICAgICAgdGhlIGNsb25lZCBvYmpl
Y3QgZHVyaW5nIHNlcmlhbGl6YXRpb24uCisgICAgICAgIFdoZW4gdGhlIGNsb25pbmcgZW5jb3Vu
dGVycyBhbiBhbHJlYWR5IHNlZW4gb2JqZWN0LCBpdCB0cmFuc2ZlcnMgdGhlIGFzc2lnbmVkIG51
bWVyaWNhbCBpZAorICAgICAgICBpbnN0ZWFkIG9mIGNsb25pbmcgdGhlIG9iamVjdCBhZ2Fpbi4g
RGVzZXJpYWxpemF0aW9uIHByb2Nlc3MgdGhlbiByZXBlYXRzIHRoZSBwcm9jZXNzIGluIAorICAg
ICAgICB0aGUgbWlycm9yIGZhc2hpb24sIGkuZS4gb24gZGVzZXJpYWxpemluZyB0aGUgb2JqZWN0
IGl0IGFzc2lnbnMgZGVzZXJpYWxpemVkIG9iamVjdCBhIG51bWVyaWMgaWQgYW5kIGlmIGl0Cisg
ICAgICAgIGRlc2VyaWFsaXplcyB0aGUgaWQgaXQgc3Vic3RpdHV0ZXMgdGhlIHBlcnZpb3VzbHkg
ZGVzZXJpYWxpemVkIG9iamVjdHMuIEl0IGlzIGNyaXRpY2FsIHRoYXQgc2VyaWFsaXphdGlvbiBh
bmQgZGVzZXJpYWxpemF0aW9uCisgICAgICAgIGFzc2lnbnMgbnVtZXJpYyBpZHMgaW4gdGhlIHNh
bWUgb3JkZXIuCisKKyAgICAgICAgVGhlIGJ1ZyAoZGlzY292ZXJlZCBieSBZb25nIExpKSBpcyB0
aGF0IHdoZW4gc2VyaWFsaXppbmcgQXJyYXlCdWZmZXJWaWV3LCB0aGUgaWRzIHdlcmUgYXNzaWdu
ZWQgZmlyc3QgdG8gCisgICAgICAgIHRoZSBBcnJheUJ1ZmZlclZpZXcgYW5kIHRoZW4gdG8gdW5k
ZXJseWluZyBBcnJheUJ1ZmZlcjsgaG93ZXZlciBvbiBkZXNlcmlhbGl6YXRpb24gdGhlIGlkcyB3
ZXJlIGFzc2lnbmVkIGFub3RoZXIgd2F5IHJvdW5kLgorCisgICAgICAgIFRoaXMgcGF0Y2ggZml4
ZXMgdGhhdCBieSBhc3NpZ25pbmcgdGhlIGlkIGZpcnN0IHRvIEFycmF5QnVmZmVyIGFuZCB0aGVu
IHRvIEFycmF5QnVmZmVyVmlldywgYW5kIGFkZHMgY29ycmVzcG9uZGluZyB0ZXN0IGNhc2VzLgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5ldyB0ZXN0
IGNhc2VzIGFkZGVkIHRvIGZhc3QvY2FudmFzL3dlYi1nbC9hcnJheS1tZXNzYWdlLXBhc3Npbmcu
aHRtbC4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDbG9uZVNlcmlhbGl6ZXI6OmNoZWNrRm9yRHVwbGljYXRlKToK
KyAgICAgICAgKENsb25lU2VyaWFsaXplcik6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZVNlcmlh
bGl6ZXI6OnJlY29yZE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZVNlcmlhbGl6ZXI6
OnN0YXJ0T2JqZWN0SW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVTZXJpYWxpemVy
OjpkdW1wSWZUZXJtaW5hbCk6CisKIDIwMTItMDQtMDMgIEFkYW0gQmFydGggIDxhYmFydGhAd2Vi
a2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLiBUaGlzIHBhdGNoIGFkZHMgYW4gdWdseSwg
dWdseSBoYWNrIHRvIGJhbmRhaWQgb3ZlciB0aGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCmluZGV4IDdhYzE1NWMuLmIyNTky
OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNj
cmlwdFZhbHVlLmNwcApAQCAtMzg5LDIwICszODksMzMgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0
dXJuIGlzSlNBcnJheShvYmplY3QpIHx8IG9iamVjdC0+aW5oZXJpdHMoJkpTQXJyYXk6OnNfaW5m
byk7CiAgICAgfQogCi0gICAgYm9vbCBzdGFydE9iamVjdEludGVybmFsKEpTT2JqZWN0KiBvYmpl
Y3QpCisgICAgYm9vbCBjaGVja0ZvckR1cGxpY2F0ZShKU09iamVjdCogb2JqZWN0KQogICAgIHsK
ICAgICAgICAgLy8gUmVjb3JkIG9iamVjdCBmb3IgZ3JhcGggcmVjb25zdHJ1Y3Rpb24KICAgICAg
ICAgT2JqZWN0UG9vbDo6QWRkUmVzdWx0IGFkZFJlc3VsdCA9IG1fb2JqZWN0UG9vbC5hZGQob2Jq
ZWN0LCBtX29iamVjdFBvb2wuc2l6ZSgpKTsKLSAgICAgICAgCisKICAgICAgICAgLy8gSGFuZGxl
IGR1cGxpY2F0ZSByZWZlcmVuY2VzCiAgICAgICAgIGlmICghYWRkUmVzdWx0LmlzTmV3RW50cnkp
IHsKICAgICAgICAgICAgIHdyaXRlKE9iamVjdFJlZmVyZW5jZVRhZyk7CiAgICAgICAgICAgICBB
U1NFUlQoc3RhdGljX2Nhc3Q8aW50MzJfdD4oYWRkUmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQpIDwg
bV9vYmplY3RQb29sLnNpemUoKSk7CiAgICAgICAgICAgICB3cml0ZU9iamVjdEluZGV4KGFkZFJl
c3VsdC5pdGVyYXRvci0+c2Vjb25kKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9Ci0gICAgICAgIAorCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9CisKKyAgICB2b2lkIHJlY29yZE9iamVjdChKU09iamVjdCogb2JqZWN0
KQorICAgIHsKKyAgICAgICAgbV9vYmplY3RQb29sLmFkZChvYmplY3QsIG1fb2JqZWN0UG9vbC5z
aXplKCkpOwogICAgICAgICBtX2djQnVmZmVyLmFwcGVuZChvYmplY3QpOworICAgIH0KKworICAg
IGJvb2wgc3RhcnRPYmplY3RJbnRlcm5hbChKU09iamVjdCogb2JqZWN0KQorICAgIHsKKyAgICAg
ICAgaWYgKGNoZWNrRm9yRHVwbGljYXRlKG9iamVjdCkpCisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIHJlY29yZE9iamVjdChvYmplY3QpOwogICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICB9CiAKQEAgLTY0Myw5ICs2NTYsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChvYmotPmluaGVyaXRz
KCZKU0FycmF5QnVmZmVyVmlldzo6c19pbmZvKSkgewotICAgICAgICAgICAgICAgIGlmICghc3Rh
cnRPYmplY3RJbnRlcm5hbChvYmopKQorICAgICAgICAgICAgICAgIGlmIChjaGVja0ZvckR1cGxp
Y2F0ZShvYmopKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAg
ICAgICByZXR1cm4gZHVtcEFycmF5QnVmZmVyVmlldyhvYmosIGNvZGUpOworICAgICAgICAgICAg
ICAgIGJvb2wgc3VjY2VzcyA9IGR1bXBBcnJheUJ1ZmZlclZpZXcob2JqLCBjb2RlKTsKKyAgICAg
ICAgICAgICAgICByZWNvcmRPYmplY3Qob2JqKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3Vj
Y2VzczsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgQ2FsbERhdGEgdW51c2VkRGF0YTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>135647</attachid>
            <date>2012-04-04 12:13:50 -0700</date>
            <delta_ts>2012-04-04 12:19:55 -0700</delta_ts>
            <desc>One more</desc>
            <filename>82090.patch</filename>
            <type>text/plain</type>
            <size>9178</size>
            <attacher name="Dmitry Lomov">dslomov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA1M2EyNWY3Li44Njg3MmYxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTItMDMt
MjggIERtaXRyeSBMb21vdiAgPGRzbG9tb3ZAZ29vZ2xlLmNvbT4KKworICAgICAgICBbSlNDXSBB
cnJheUJ1ZmZlclZpZXcgYW5kIGl0cyBBcnJheUJ1ZmZlciBhcmUgYXBwZW5kZWQgdG8gb2JqZWN0
IHBvb2wgaW4gd3Jvbmcgb3JkZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTgyMDkwCisgICAgICAgIEFkZHMgdGVzdHMgdGhhdCBjb3ZlciBtbm9yZSB0
aGFuIG9uZSB2aWV3IG9mIHRoZSBzYW1lIEFycmF5QnVmZmVyIGJlaW5nIGNsb25lZC4KKworICAg
ICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJ1c3NlbGwuCisKKyAgICAgICAgKiBmYXN0L2NhbnZh
cy93ZWJnbC9hcnJheS1tZXNzYWdlLXBhc3NpbmctZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZh
c3QvY2FudmFzL3dlYmdsL3NjcmlwdC10ZXN0cy9hcnJheS1tZXNzYWdlLXBhc3NpbmcuanM6Cisg
ICAgICAgICh0eXBlZEFycmF5Q29tcGFyZSk6CisgICAgICAgIChkYXRhVmlld0NvbXBhcmUpOgor
ICAgICAgICAoZGF0YVZpZXdDb21wYXJlMik6CisgICAgICAgIChkYXRhVmlld0NvbXBhcmUzKToK
KwogMjAxMi0wNC0wMyAgQWJoaXNoZWsgQXJ5YSAgPGluZmVybm9AY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIENyYXNoIGluIFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmVTZWxlY3Rvci4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2FycmF5LW1lc3NhZ2UtcGFzc2lu
Zy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9hcnJheS1tZXNz
YWdlLXBhc3NpbmctZXhwZWN0ZWQudHh0CmluZGV4IDM5MzZmNTIuLmYwZGY0NjggMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2FycmF5LW1lc3NhZ2UtcGFzc2luZy1l
eHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvYXJyYXktbWVz
c2FnZS1wYXNzaW5nLWV4cGVjdGVkLnR4dApAQCAtMjMsNiArMjMsMzAgQEAgUEFTUyBEYXRhVmll
dzE6IGJ1ZmZlciBsZW5ndGhzIGFyZSAxCiBQQVNTIERhdGFWaWV3MTogYnVmZmVycyBoYXZlIHRo
ZSBzYW1lIGNvbnRlbnRzCiBQQVNTIERhdGFWaWV3MTogb2Zmc2V0IGlzIDAKIFBBU1MgRGF0YVZp
ZXcxOiBsZW5ndGggaXMgMQorUEFTUyBEYXRhVmlldzEtZHVwOiBjbGFzc2VzIGFyZSBbb2JqZWN0
IERhdGFWaWV3XQorUEFTUyBEYXRhVmlldzEtZHVwOiBjbGFzc2VzIGFyZSBbb2JqZWN0IEFycmF5
QnVmZmVyXQorUEFTUyBEYXRhVmlldzEtZHVwOiBidWZmZXIgbGVuZ3RocyBhcmUgMQorUEFTUyBE
YXRhVmlldzEtZHVwOiBidWZmZXJzIGhhdmUgdGhlIHNhbWUgY29udGVudHMKK1BBU1MgRGF0YVZp
ZXcxLWR1cDogb2Zmc2V0IGlzIDAKK1BBU1MgRGF0YVZpZXcxLWR1cDogbGVuZ3RoIGlzIDEKK1BB
U1MgRGF0YVZpZXcxLWR1cDogY2xhc3NlcyBhcmUgW29iamVjdCBEYXRhVmlld10KK1BBU1MgRGF0
YVZpZXcxLWR1cDogY2xhc3NlcyBhcmUgW29iamVjdCBBcnJheUJ1ZmZlcl0KK1BBU1MgRGF0YVZp
ZXcxLWR1cDogYnVmZmVyIGxlbmd0aHMgYXJlIDEKK1BBU1MgRGF0YVZpZXcxLWR1cDogYnVmZmVy
cyBoYXZlIHRoZSBzYW1lIGNvbnRlbnRzCitQQVNTIERhdGFWaWV3MS1kdXA6IG9mZnNldCBpcyAw
CitQQVNTIERhdGFWaWV3MS1kdXA6IGxlbmd0aCBpcyAxCitQQVNTIERhdGFWaWV3MS1kdXAyOiBj
bGFzc2VzIGFyZSBbb2JqZWN0IERhdGFWaWV3XQorUEFTUyBEYXRhVmlldzEtZHVwMjogY2xhc3Nl
cyBhcmUgW29iamVjdCBBcnJheUJ1ZmZlcl0KK1BBU1MgRGF0YVZpZXcxLWR1cDI6IGJ1ZmZlciBs
ZW5ndGhzIGFyZSAxCitQQVNTIERhdGFWaWV3MS1kdXAyOiBidWZmZXJzIGhhdmUgdGhlIHNhbWUg
Y29udGVudHMKK1BBU1MgRGF0YVZpZXcxLWR1cDI6IG9mZnNldCBpcyAwCitQQVNTIERhdGFWaWV3
MS1kdXAyOiBsZW5ndGggaXMgMQorUEFTUyBEYXRhVmlldzEtZHVwMjogY2xhc3NlcyBhcmUgW29i
amVjdCBEYXRhVmlld10KK1BBU1MgRGF0YVZpZXcxLWR1cDI6IGNsYXNzZXMgYXJlIFtvYmplY3Qg
QXJyYXlCdWZmZXJdCitQQVNTIERhdGFWaWV3MS1kdXAyOiBidWZmZXIgbGVuZ3RocyBhcmUgMQor
UEFTUyBEYXRhVmlldzEtZHVwMjogYnVmZmVycyBoYXZlIHRoZSBzYW1lIGNvbnRlbnRzCitQQVNT
IERhdGFWaWV3MS1kdXAyOiBvZmZzZXQgaXMgMAorUEFTUyBEYXRhVmlldzEtZHVwMjogbGVuZ3Ro
IGlzIDEKIFBBU1MgRGF0YVZpZXcxMjg6IGNsYXNzZXMgYXJlIFtvYmplY3QgRGF0YVZpZXddCiBQ
QVNTIERhdGFWaWV3MTI4OiBjbGFzc2VzIGFyZSBbb2JqZWN0IEFycmF5QnVmZmVyXQogUEFTUyBE
YXRhVmlldzEyODogYnVmZmVyIGxlbmd0aHMgYXJlIDEyOApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9jYW52YXMvd2ViZ2wvc2NyaXB0LXRlc3RzL2FycmF5LW1lc3NhZ2UtcGFzc2luZy5q
cyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3NjcmlwdC10ZXN0cy9hcnJheS1tZXNz
YWdlLXBhc3NpbmcuanMKaW5kZXggNzRmMTg5MS4uNjU2MGNjMyAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvc2NyaXB0LXRlc3RzL2FycmF5LW1lc3NhZ2UtcGFzc2lu
Zy5qcworKysgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9zY3JpcHQtdGVzdHMvYXJy
YXktbWVzc2FnZS1wYXNzaW5nLmpzCkBAIC02OSwxNCArNjksNDMgQEAgZnVuY3Rpb24gdHlwZWRB
cnJheUNvbXBhcmUodGVzdE5hbWUsIGdvdCwgc2VudCkgewogICAgICAgICB0ZXN0RmFpbGVkKHRl
c3ROYW1lICsgIjogZXhwZWN0ZWQgQllURVNfUEVSX0VMRU1FTlQgIiArIHNlbnQuQllURVNfUEVS
X0VMRU1FTlQgKyAiLCBzYXcgIiArIGdvdC5CWVRFU19QRVJfRUxFTUVOVCk7CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIGZ1bmN0aW9uIGRhdGFW
aWV3Q29tcGFyZSh0ZXN0TmFtZSwgZ290LCBzZW50KSB7Ci0gICAgaWYgKCF2aWV3Q29tcGFyZSh0
ZXN0TmFtZSwgZ290LCBzZW50KSkgeworICAgIHJldHVybiB2aWV3Q29tcGFyZSh0ZXN0TmFtZSwg
Z290LCBzZW50KTsKK30KKworZnVuY3Rpb24gZGF0YVZpZXdDb21wYXJlMih0ZXN0TmFtZSwgZ290
LCBzZW50KSB7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAyOyArK2kpIHsKKyAgICAgICAgaWYg
KCFkYXRhVmlld0NvbXBhcmUodGVzdE5hbWUsIGdvdFtpXSwgc2VudFtpXSkpIHsKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoZ290WzBdLmJ1ZmZl
ciAhPT0gZ290WzFdLmJ1ZmZlcikgeworICAgICAgICB0ZXN0RmFpbGVkKHRlc3ROYW1lICsgIjog
ZXhwZWN0ZWQgdGhlIHNhbWUgQXJyYXlCdWZmZXIgZm9yIGJvdGggdmlld3MiKTsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KK2Z1bmN0aW9uIGRhdGFW
aWV3Q29tcGFyZTModGVzdE5hbWUsIGdvdCwgc2VudCkgeworICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgMzsgaSArPSAyKSB7CisgICAgICAgIGlmICghZGF0YVZpZXdDb21wYXJlKHRlc3ROYW1lLCBn
b3RbaV0sIHNlbnRbaV0pKSB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0K
KyAgICB9CisgICAgaWYgKGdvdFsxXS54ICE9PSBzZW50WzFdLnggfHwgZ290WzFdLnkgIT09IHNl
bnRbMV0ueSkgeworICAgICAgICB0ZXN0RmFpbGVkKHRlc3ROYW1lICsgIjoge3g6MSwgeToxfSB3
YXMgbm90IHRyYW5zZmVycmVkIHByb3Blcmx5Iik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9CisgICAgaWYgKGdvdFswXS5idWZmZXIgIT09IGdvdFsyXS5idWZmZXIpIHsKKyAgICAgICAg
dGVzdEZhaWxlZCh0ZXN0TmFtZSArICI6IGV4cGVjdGVkIHRoZSBzYW1lIEFycmF5QnVmZmVyIGZv
ciBib3RoIHZpZXdzIik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJu
IGZhbHNlOwogfQogCisKIGZ1bmN0aW9uIGNyZWF0ZUJ1ZmZlcihsZW5ndGgpIHsKICAgICB2YXIg
YnVmZmVyID0gbmV3IEFycmF5QnVmZmVyKGxlbmd0aCk7CiAgICAgdmFyIHZpZXcgPSBuZXcgVWlu
dDhBcnJheShidWZmZXIpOwpAQCAtMTE1LDEyICsxNDQsMTYgQEAgdmFyIGJhc2ljQnVmZmVyVHlw
ZXMgPSBbCiAgICAgWyJGbG9hdDY0IiwgRmxvYXQ2NEFycmF5LCA4XQogXTsKIAordmFyIGFycmF5
QnVmZmVyMSA9IGNyZWF0ZUJ1ZmZlcigxKTsKKwogdmFyIHRlc3RMaXN0ID0gWwogICAgIFsnQXJy
YXlCdWZmZXIwJywgbmV3IEFycmF5QnVmZmVyKDApLCBidWZmZXJDb21wYXJlXSwKICAgICBbJ0Fy
cmF5QnVmZmVyMScsIGNyZWF0ZUJ1ZmZlcigxKSwgYnVmZmVyQ29tcGFyZV0sCiAgICAgWydBcnJh
eUJ1ZmZlcjEyOCcsIGNyZWF0ZUJ1ZmZlcigxMjgpLCBidWZmZXJDb21wYXJlXSwKICAgICBbJ0Rh
dGFWaWV3MCcsIG5ldyBEYXRhVmlldyhuZXcgQXJyYXlCdWZmZXIoMCkpLCBkYXRhVmlld0NvbXBh
cmVdLAogICAgIFsnRGF0YVZpZXcxJywgbmV3IERhdGFWaWV3KGNyZWF0ZUJ1ZmZlcigxKSksIGRh
dGFWaWV3Q29tcGFyZV0sCisgICAgWydEYXRhVmlldzEtZHVwJywgW25ldyBEYXRhVmlldyhhcnJh
eUJ1ZmZlcjEpLCBuZXcgRGF0YVZpZXcoYXJyYXlCdWZmZXIxKV0sIGRhdGFWaWV3Q29tcGFyZTJd
LAorICAgIFsnRGF0YVZpZXcxLWR1cDInLCBbbmV3IERhdGFWaWV3KGFycmF5QnVmZmVyMSksIHt4
OjEsIHk6MX0sIG5ldyBEYXRhVmlldyhhcnJheUJ1ZmZlcjEpXSwgZGF0YVZpZXdDb21wYXJlM10s
CiAgICAgWydEYXRhVmlldzEyOCcsIG5ldyBEYXRhVmlldyhjcmVhdGVCdWZmZXIoMTI4KSksIGRh
dGFWaWV3Q29tcGFyZV0sCiAgICAgWydEYXRhVmlldzFfb2Zmc2V0X2F0X2VuZCcsIG5ldyBEYXRh
VmlldyhjcmVhdGVCdWZmZXIoMSksIDEsIDApLCBkYXRhVmlld0NvbXBhcmVdLAogICAgIFsnRGF0
YVZpZXcxMjhfb2Zmc2V0X2F0X2VuZCcsIG5ldyBEYXRhVmlldyhjcmVhdGVCdWZmZXIoMTI4KSwg
MTI4LCAwKSwgZGF0YVZpZXdDb21wYXJlXSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA0OTk3NTg5Li41OWJkNjA1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIwMTItMDMtMjggIERtaXRyeSBMb21vdiAg
PGRzbG9tb3ZAZ29vZ2xlLmNvbT4KKworICAgICAgICBbSlNDXSBBcnJheUJ1ZmZlclZpZXcgYW5k
IGl0cyBBcnJheUJ1ZmZlciBhcmUgYXBwZW5kZWQgdG8gb2JqZWN0IHBvb2wgaW4gd3Jvbmcgb3Jk
ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgyMDkw
CisgICAgICAgIFRoZSBpbXBsZW1lbnRhdGlvbiBvZiBzdHJ1Y3R1cmVkIGNsb25pbmcgYWxnb3Jp
dGhtIChodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNS9jb21tb24tZG9tLWludGVyZmFjZXMuaHRt
bCNpbnRlcm5hbC1zdHJ1Y3R1cmVkLWNsb25pbmctYWxnb3JpdGhtKQorICAgICAgICBpbiBTZXJp
YWxpemVkU2NyaXB0VmFsdWUuY3BwIGFzc2lnbnMgbnVtZXJpY2FsIGlkZW50aWZpZXJzIHRvIGVu
Y29udGVyZWQgb2JqZWN0cyBhcyBpdCB0cmF2ZXJzZXMKKyAgICAgICAgdGhlIGNsb25lZCBvYmpl
Y3QgZHVyaW5nIHNlcmlhbGl6YXRpb24uCisgICAgICAgIFdoZW4gdGhlIGNsb25pbmcgZW5jb3Vu
dGVycyBhbiBhbHJlYWR5IHNlZW4gb2JqZWN0LCBpdCB0cmFuc2ZlcnMgdGhlIGFzc2lnbmVkIG51
bWVyaWNhbCBpZAorICAgICAgICBpbnN0ZWFkIG9mIGNsb25pbmcgdGhlIG9iamVjdCBhZ2Fpbi4g
RGVzZXJpYWxpemF0aW9uIHByb2Nlc3MgdGhlbiByZXBlYXRzIHRoZSBwcm9jZXNzIGluIAorICAg
ICAgICB0aGUgbWlycm9yIGZhc2hpb24sIGkuZS4gb24gZGVzZXJpYWxpemluZyB0aGUgb2JqZWN0
IGl0IGFzc2lnbnMgZGVzZXJpYWxpemVkIG9iamVjdCBhIG51bWVyaWMgaWQgYW5kIGlmIGl0Cisg
ICAgICAgIGRlc2VyaWFsaXplcyB0aGUgaWQgaXQgc3Vic3RpdHV0ZXMgdGhlIHBlcnZpb3VzbHkg
ZGVzZXJpYWxpemVkIG9iamVjdHMuIEl0IGlzIGNyaXRpY2FsIHRoYXQgc2VyaWFsaXphdGlvbiBh
bmQgZGVzZXJpYWxpemF0aW9uCisgICAgICAgIGFzc2lnbnMgbnVtZXJpYyBpZHMgaW4gdGhlIHNh
bWUgb3JkZXIuCisKKyAgICAgICAgVGhlIGJ1ZyAoZGlzY292ZXJlZCBieSBZb25nIExpKSBpcyB0
aGF0IHdoZW4gc2VyaWFsaXppbmcgQXJyYXlCdWZmZXJWaWV3LCB0aGUgaWRzIHdlcmUgYXNzaWdu
ZWQgZmlyc3QgdG8gCisgICAgICAgIHRoZSBBcnJheUJ1ZmZlclZpZXcgYW5kIHRoZW4gdG8gdW5k
ZXJseWluZyBBcnJheUJ1ZmZlcjsgaG93ZXZlciBvbiBkZXNlcmlhbGl6YXRpb24gdGhlIGlkcyB3
ZXJlIGFzc2lnbmVkIGFub3RoZXIgd2F5IHJvdW5kLgorCisgICAgICAgIFRoaXMgcGF0Y2ggZml4
ZXMgdGhhdCBieSBhc3NpZ25pbmcgdGhlIGlkIGZpcnN0IHRvIEFycmF5QnVmZmVyIGFuZCB0aGVu
IHRvIEFycmF5QnVmZmVyVmlldywgYW5kIGFkZHMgY29ycmVzcG9uZGluZyB0ZXN0IGNhc2VzLgor
CisgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUnVzc2VsbC4KKworICAgICAgICBOZXcgdGVz
dCBjYXNlcyBhZGRlZCB0byBmYXN0L2NhbnZhcy93ZWItZ2wvYXJyYXktbWVzc2FnZS1wYXNzaW5n
Lmh0bWwuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVTZXJpYWxpemVyOjpjaGVja0ZvckR1cGxpY2F0ZSk6
CisgICAgICAgIChDbG9uZVNlcmlhbGl6ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVTZXJp
YWxpemVyOjpyZWNvcmRPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVTZXJpYWxpemVy
OjpzdGFydE9iamVjdEludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkNsb25lU2VyaWFsaXpl
cjo6ZHVtcElmVGVybWluYWwpOgorCiAyMDEyLTA0LTAzICBBZGFtIEJhcnRoICA8YWJhcnRoQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZC4gVGhpcyBwYXRjaCBhZGRzIGFuIHVnbHks
IHVnbHkgaGFjayB0byBiYW5kYWlkIG92ZXIgdGhlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAppbmRleCA3YWMxNTVjLi5iMjU5
MjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2Ny
aXB0VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZS5jcHAKQEAgLTM4OSwyMCArMzg5LDMzIEBAIHByaXZhdGU6CiAgICAgICAgIHJl
dHVybiBpc0pTQXJyYXkob2JqZWN0KSB8fCBvYmplY3QtPmluaGVyaXRzKCZKU0FycmF5OjpzX2lu
Zm8pOwogICAgIH0KIAotICAgIGJvb2wgc3RhcnRPYmplY3RJbnRlcm5hbChKU09iamVjdCogb2Jq
ZWN0KQorICAgIGJvb2wgY2hlY2tGb3JEdXBsaWNhdGUoSlNPYmplY3QqIG9iamVjdCkKICAgICB7
CiAgICAgICAgIC8vIFJlY29yZCBvYmplY3QgZm9yIGdyYXBoIHJlY29uc3RydWN0aW9uCiAgICAg
ICAgIE9iamVjdFBvb2w6OkFkZFJlc3VsdCBhZGRSZXN1bHQgPSBtX29iamVjdFBvb2wuYWRkKG9i
amVjdCwgbV9vYmplY3RQb29sLnNpemUoKSk7Ci0gICAgICAgIAorCiAgICAgICAgIC8vIEhhbmRs
ZSBkdXBsaWNhdGUgcmVmZXJlbmNlcwogICAgICAgICBpZiAoIWFkZFJlc3VsdC5pc05ld0VudHJ5
KSB7CiAgICAgICAgICAgICB3cml0ZShPYmplY3RSZWZlcmVuY2VUYWcpOwogICAgICAgICAgICAg
QVNTRVJUKHN0YXRpY19jYXN0PGludDMyX3Q+KGFkZFJlc3VsdC5pdGVyYXRvci0+c2Vjb25kKSA8
IG1fb2JqZWN0UG9vbC5zaXplKCkpOwogICAgICAgICAgICAgd3JpdGVPYmplY3RJbmRleChhZGRS
ZXN1bHQuaXRlcmF0b3ItPnNlY29uZCk7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQotICAgICAgICAKKworICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorCisgICAgdm9pZCByZWNvcmRPYmplY3QoSlNPYmplY3QqIG9iamVj
dCkKKyAgICB7CisgICAgICAgIG1fb2JqZWN0UG9vbC5hZGQob2JqZWN0LCBtX29iamVjdFBvb2wu
c2l6ZSgpKTsKICAgICAgICAgbV9nY0J1ZmZlci5hcHBlbmQob2JqZWN0KTsKKyAgICB9CisKKyAg
ICBib29sIHN0YXJ0T2JqZWN0SW50ZXJuYWwoSlNPYmplY3QqIG9iamVjdCkKKyAgICB7CisgICAg
ICAgIGlmIChjaGVja0ZvckR1cGxpY2F0ZShvYmplY3QpKQorICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICByZWNvcmRPYmplY3Qob2JqZWN0KTsKICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgfQogCkBAIC02NDMsOSArNjU2LDExIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAob2JqLT5pbmhlcml0
cygmSlNBcnJheUJ1ZmZlclZpZXc6OnNfaW5mbykpIHsKLSAgICAgICAgICAgICAgICBpZiAoIXN0
YXJ0T2JqZWN0SW50ZXJuYWwob2JqKSkKKyAgICAgICAgICAgICAgICBpZiAoY2hlY2tGb3JEdXBs
aWNhdGUob2JqKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuIGR1bXBBcnJheUJ1ZmZlclZpZXcob2JqLCBjb2RlKTsKKyAgICAgICAgICAg
ICAgICBib29sIHN1Y2Nlc3MgPSBkdW1wQXJyYXlCdWZmZXJWaWV3KG9iaiwgY29kZSk7CisgICAg
ICAgICAgICAgICAgcmVjb3JkT2JqZWN0KG9iaik7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN1
Y2Nlc3M7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIENhbGxEYXRhIHVudXNlZERhdGE7
Cg==
</data>
<flag name="review"
          id="140222"
          type_id="1"
          status="+"
          setter="kbr"
    />
    <flag name="commit-queue"
          id="140221"
          type_id="3"
          status="-"
          setter="dslomov"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>135650</attachid>
            <date>2012-04-04 12:19:55 -0700</date>
            <delta_ts>2012-04-04 13:43:49 -0700</delta_ts>
            <desc>Typo fixed</desc>
            <filename>82090.patch</filename>
            <type>text/plain</type>
            <size>9177</size>
            <attacher name="Dmitry Lomov">dslomov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA1M2EyNWY3Li4wYzk3YzA3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTItMDMt
MjggIERtaXRyeSBMb21vdiAgPGRzbG9tb3ZAZ29vZ2xlLmNvbT4KKworICAgICAgICBbSlNDXSBB
cnJheUJ1ZmZlclZpZXcgYW5kIGl0cyBBcnJheUJ1ZmZlciBhcmUgYXBwZW5kZWQgdG8gb2JqZWN0
IHBvb2wgaW4gd3Jvbmcgb3JkZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTgyMDkwCisgICAgICAgIEFkZHMgdGVzdHMgdGhhdCBjb3ZlciBtb3JlIHRo
YW4gb25lIHZpZXcgb2YgdGhlIHNhbWUgQXJyYXlCdWZmZXIgYmVpbmcgY2xvbmVkLgorCisgICAg
ICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUnVzc2VsbC4KKworICAgICAgICAqIGZhc3QvY2FudmFz
L3dlYmdsL2FycmF5LW1lc3NhZ2UtcGFzc2luZy1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFz
dC9jYW52YXMvd2ViZ2wvc2NyaXB0LXRlc3RzL2FycmF5LW1lc3NhZ2UtcGFzc2luZy5qczoKKyAg
ICAgICAgKHR5cGVkQXJyYXlDb21wYXJlKToKKyAgICAgICAgKGRhdGFWaWV3Q29tcGFyZSk6Cisg
ICAgICAgIChkYXRhVmlld0NvbXBhcmUyKToKKyAgICAgICAgKGRhdGFWaWV3Q29tcGFyZTMpOgor
CiAyMDEyLTA0LTAzICBBYmhpc2hlayBBcnlhICA8aW5mZXJub0BjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgQ3Jhc2ggaW4gU2VsZWN0b3JDaGVja2VyOjpjaGVja09uZVNlbGVjdG9yLgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvYXJyYXktbWVzc2FnZS1wYXNzaW5n
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2FycmF5LW1lc3Nh
Z2UtcGFzc2luZy1leHBlY3RlZC50eHQKaW5kZXggMzkzNmY1Mi4uZjBkZjQ2OCAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvYXJyYXktbWVzc2FnZS1wYXNzaW5nLWV4
cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9hcnJheS1tZXNz
YWdlLXBhc3NpbmctZXhwZWN0ZWQudHh0CkBAIC0yMyw2ICsyMywzMCBAQCBQQVNTIERhdGFWaWV3
MTogYnVmZmVyIGxlbmd0aHMgYXJlIDEKIFBBU1MgRGF0YVZpZXcxOiBidWZmZXJzIGhhdmUgdGhl
IHNhbWUgY29udGVudHMKIFBBU1MgRGF0YVZpZXcxOiBvZmZzZXQgaXMgMAogUEFTUyBEYXRhVmll
dzE6IGxlbmd0aCBpcyAxCitQQVNTIERhdGFWaWV3MS1kdXA6IGNsYXNzZXMgYXJlIFtvYmplY3Qg
RGF0YVZpZXddCitQQVNTIERhdGFWaWV3MS1kdXA6IGNsYXNzZXMgYXJlIFtvYmplY3QgQXJyYXlC
dWZmZXJdCitQQVNTIERhdGFWaWV3MS1kdXA6IGJ1ZmZlciBsZW5ndGhzIGFyZSAxCitQQVNTIERh
dGFWaWV3MS1kdXA6IGJ1ZmZlcnMgaGF2ZSB0aGUgc2FtZSBjb250ZW50cworUEFTUyBEYXRhVmll
dzEtZHVwOiBvZmZzZXQgaXMgMAorUEFTUyBEYXRhVmlldzEtZHVwOiBsZW5ndGggaXMgMQorUEFT
UyBEYXRhVmlldzEtZHVwOiBjbGFzc2VzIGFyZSBbb2JqZWN0IERhdGFWaWV3XQorUEFTUyBEYXRh
VmlldzEtZHVwOiBjbGFzc2VzIGFyZSBbb2JqZWN0IEFycmF5QnVmZmVyXQorUEFTUyBEYXRhVmll
dzEtZHVwOiBidWZmZXIgbGVuZ3RocyBhcmUgMQorUEFTUyBEYXRhVmlldzEtZHVwOiBidWZmZXJz
IGhhdmUgdGhlIHNhbWUgY29udGVudHMKK1BBU1MgRGF0YVZpZXcxLWR1cDogb2Zmc2V0IGlzIDAK
K1BBU1MgRGF0YVZpZXcxLWR1cDogbGVuZ3RoIGlzIDEKK1BBU1MgRGF0YVZpZXcxLWR1cDI6IGNs
YXNzZXMgYXJlIFtvYmplY3QgRGF0YVZpZXddCitQQVNTIERhdGFWaWV3MS1kdXAyOiBjbGFzc2Vz
IGFyZSBbb2JqZWN0IEFycmF5QnVmZmVyXQorUEFTUyBEYXRhVmlldzEtZHVwMjogYnVmZmVyIGxl
bmd0aHMgYXJlIDEKK1BBU1MgRGF0YVZpZXcxLWR1cDI6IGJ1ZmZlcnMgaGF2ZSB0aGUgc2FtZSBj
b250ZW50cworUEFTUyBEYXRhVmlldzEtZHVwMjogb2Zmc2V0IGlzIDAKK1BBU1MgRGF0YVZpZXcx
LWR1cDI6IGxlbmd0aCBpcyAxCitQQVNTIERhdGFWaWV3MS1kdXAyOiBjbGFzc2VzIGFyZSBbb2Jq
ZWN0IERhdGFWaWV3XQorUEFTUyBEYXRhVmlldzEtZHVwMjogY2xhc3NlcyBhcmUgW29iamVjdCBB
cnJheUJ1ZmZlcl0KK1BBU1MgRGF0YVZpZXcxLWR1cDI6IGJ1ZmZlciBsZW5ndGhzIGFyZSAxCitQ
QVNTIERhdGFWaWV3MS1kdXAyOiBidWZmZXJzIGhhdmUgdGhlIHNhbWUgY29udGVudHMKK1BBU1Mg
RGF0YVZpZXcxLWR1cDI6IG9mZnNldCBpcyAwCitQQVNTIERhdGFWaWV3MS1kdXAyOiBsZW5ndGgg
aXMgMQogUEFTUyBEYXRhVmlldzEyODogY2xhc3NlcyBhcmUgW29iamVjdCBEYXRhVmlld10KIFBB
U1MgRGF0YVZpZXcxMjg6IGNsYXNzZXMgYXJlIFtvYmplY3QgQXJyYXlCdWZmZXJdCiBQQVNTIERh
dGFWaWV3MTI4OiBidWZmZXIgbGVuZ3RocyBhcmUgMTI4CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2NhbnZhcy93ZWJnbC9zY3JpcHQtdGVzdHMvYXJyYXktbWVzc2FnZS1wYXNzaW5nLmpz
IGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvc2NyaXB0LXRlc3RzL2FycmF5LW1lc3Nh
Z2UtcGFzc2luZy5qcwppbmRleCA3NGYxODkxLi42NTYwY2MzIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9zY3JpcHQtdGVzdHMvYXJyYXktbWVzc2FnZS1wYXNzaW5n
LmpzCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3NjcmlwdC10ZXN0cy9hcnJh
eS1tZXNzYWdlLXBhc3NpbmcuanMKQEAgLTY5LDE0ICs2OSw0MyBAQCBmdW5jdGlvbiB0eXBlZEFy
cmF5Q29tcGFyZSh0ZXN0TmFtZSwgZ290LCBzZW50KSB7CiAgICAgICAgIHRlc3RGYWlsZWQodGVz
dE5hbWUgKyAiOiBleHBlY3RlZCBCWVRFU19QRVJfRUxFTUVOVCAiICsgc2VudC5CWVRFU19QRVJf
RUxFTUVOVCArICIsIHNhdyAiICsgZ290LkJZVEVTX1BFUl9FTEVNRU5UKTsKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogZnVuY3Rpb24gZGF0YVZp
ZXdDb21wYXJlKHRlc3ROYW1lLCBnb3QsIHNlbnQpIHsKLSAgICBpZiAoIXZpZXdDb21wYXJlKHRl
c3ROYW1lLCBnb3QsIHNlbnQpKSB7CisgICAgcmV0dXJuIHZpZXdDb21wYXJlKHRlc3ROYW1lLCBn
b3QsIHNlbnQpOworfQorCitmdW5jdGlvbiBkYXRhVmlld0NvbXBhcmUyKHRlc3ROYW1lLCBnb3Qs
IHNlbnQpIHsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDI7ICsraSkgeworICAgICAgICBpZiAo
IWRhdGFWaWV3Q29tcGFyZSh0ZXN0TmFtZSwgZ290W2ldLCBzZW50W2ldKSkgeworICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorICAgIGlmIChnb3RbMF0uYnVmZmVy
ICE9PSBnb3RbMV0uYnVmZmVyKSB7CisgICAgICAgIHRlc3RGYWlsZWQodGVzdE5hbWUgKyAiOiBl
eHBlY3RlZCB0aGUgc2FtZSBBcnJheUJ1ZmZlciBmb3IgYm90aCB2aWV3cyIpOworICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorZnVuY3Rpb24gZGF0YVZp
ZXdDb21wYXJlMyh0ZXN0TmFtZSwgZ290LCBzZW50KSB7CisgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCAzOyBpICs9IDIpIHsKKyAgICAgICAgaWYgKCFkYXRhVmlld0NvbXBhcmUodGVzdE5hbWUsIGdv
dFtpXSwgc2VudFtpXSkpIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQor
ICAgIH0KKyAgICBpZiAoZ290WzFdLnggIT09IHNlbnRbMV0ueCB8fCBnb3RbMV0ueSAhPT0gc2Vu
dFsxXS55KSB7CisgICAgICAgIHRlc3RGYWlsZWQodGVzdE5hbWUgKyAiOiB7eDoxLCB5OjF9IHdh
cyBub3QgdHJhbnNmZXJyZWQgcHJvcGVybHkiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KKyAgICBpZiAoZ290WzBdLmJ1ZmZlciAhPT0gZ290WzJdLmJ1ZmZlcikgeworICAgICAgICB0
ZXN0RmFpbGVkKHRlc3ROYW1lICsgIjogZXhwZWN0ZWQgdGhlIHNhbWUgQXJyYXlCdWZmZXIgZm9y
IGJvdGggdmlld3MiKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4g
ZmFsc2U7CiB9CiAKKwogZnVuY3Rpb24gY3JlYXRlQnVmZmVyKGxlbmd0aCkgewogICAgIHZhciBi
dWZmZXIgPSBuZXcgQXJyYXlCdWZmZXIobGVuZ3RoKTsKICAgICB2YXIgdmlldyA9IG5ldyBVaW50
OEFycmF5KGJ1ZmZlcik7CkBAIC0xMTUsMTIgKzE0NCwxNiBAQCB2YXIgYmFzaWNCdWZmZXJUeXBl
cyA9IFsKICAgICBbIkZsb2F0NjQiLCBGbG9hdDY0QXJyYXksIDhdCiBdOwogCit2YXIgYXJyYXlC
dWZmZXIxID0gY3JlYXRlQnVmZmVyKDEpOworCiB2YXIgdGVzdExpc3QgPSBbCiAgICAgWydBcnJh
eUJ1ZmZlcjAnLCBuZXcgQXJyYXlCdWZmZXIoMCksIGJ1ZmZlckNvbXBhcmVdLAogICAgIFsnQXJy
YXlCdWZmZXIxJywgY3JlYXRlQnVmZmVyKDEpLCBidWZmZXJDb21wYXJlXSwKICAgICBbJ0FycmF5
QnVmZmVyMTI4JywgY3JlYXRlQnVmZmVyKDEyOCksIGJ1ZmZlckNvbXBhcmVdLAogICAgIFsnRGF0
YVZpZXcwJywgbmV3IERhdGFWaWV3KG5ldyBBcnJheUJ1ZmZlcigwKSksIGRhdGFWaWV3Q29tcGFy
ZV0sCiAgICAgWydEYXRhVmlldzEnLCBuZXcgRGF0YVZpZXcoY3JlYXRlQnVmZmVyKDEpKSwgZGF0
YVZpZXdDb21wYXJlXSwKKyAgICBbJ0RhdGFWaWV3MS1kdXAnLCBbbmV3IERhdGFWaWV3KGFycmF5
QnVmZmVyMSksIG5ldyBEYXRhVmlldyhhcnJheUJ1ZmZlcjEpXSwgZGF0YVZpZXdDb21wYXJlMl0s
CisgICAgWydEYXRhVmlldzEtZHVwMicsIFtuZXcgRGF0YVZpZXcoYXJyYXlCdWZmZXIxKSwge3g6
MSwgeToxfSwgbmV3IERhdGFWaWV3KGFycmF5QnVmZmVyMSldLCBkYXRhVmlld0NvbXBhcmUzXSwK
ICAgICBbJ0RhdGFWaWV3MTI4JywgbmV3IERhdGFWaWV3KGNyZWF0ZUJ1ZmZlcigxMjgpKSwgZGF0
YVZpZXdDb21wYXJlXSwKICAgICBbJ0RhdGFWaWV3MV9vZmZzZXRfYXRfZW5kJywgbmV3IERhdGFW
aWV3KGNyZWF0ZUJ1ZmZlcigxKSwgMSwgMCksIGRhdGFWaWV3Q29tcGFyZV0sCiAgICAgWydEYXRh
VmlldzEyOF9vZmZzZXRfYXRfZW5kJywgbmV3IERhdGFWaWV3KGNyZWF0ZUJ1ZmZlcigxMjgpLCAx
MjgsIDApLCBkYXRhVmlld0NvbXBhcmVdLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDQ5OTc1ODkuLjU5YmQ2MDUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMiBAQAorMjAxMi0wMy0yOCAgRG1pdHJ5IExvbW92ICA8
ZHNsb21vdkBnb29nbGUuY29tPgorCisgICAgICAgIFtKU0NdIEFycmF5QnVmZmVyVmlldyBhbmQg
aXRzIEFycmF5QnVmZmVyIGFyZSBhcHBlbmRlZCB0byBvYmplY3QgcG9vbCBpbiB3cm9uZyBvcmRl
cgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODIwOTAK
KyAgICAgICAgVGhlIGltcGxlbWVudGF0aW9uIG9mIHN0cnVjdHVyZWQgY2xvbmluZyBhbGdvcml0
aG0gKGh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw1L2NvbW1vbi1kb20taW50ZXJmYWNlcy5odG1s
I2ludGVybmFsLXN0cnVjdHVyZWQtY2xvbmluZy1hbGdvcml0aG0pCisgICAgICAgIGluIFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS5jcHAgYXNzaWducyBudW1lcmljYWwgaWRlbnRpZmllcnMgdG8gZW5j
b250ZXJlZCBvYmplY3RzIGFzIGl0IHRyYXZlcnNlcworICAgICAgICB0aGUgY2xvbmVkIG9iamVj
dCBkdXJpbmcgc2VyaWFsaXphdGlvbi4KKyAgICAgICAgV2hlbiB0aGUgY2xvbmluZyBlbmNvdW50
ZXJzIGFuIGFscmVhZHkgc2VlbiBvYmplY3QsIGl0IHRyYW5zZmVycyB0aGUgYXNzaWduZWQgbnVt
ZXJpY2FsIGlkCisgICAgICAgIGluc3RlYWQgb2YgY2xvbmluZyB0aGUgb2JqZWN0IGFnYWluLiBE
ZXNlcmlhbGl6YXRpb24gcHJvY2VzcyB0aGVuIHJlcGVhdHMgdGhlIHByb2Nlc3MgaW4gCisgICAg
ICAgIHRoZSBtaXJyb3IgZmFzaGlvbiwgaS5lLiBvbiBkZXNlcmlhbGl6aW5nIHRoZSBvYmplY3Qg
aXQgYXNzaWducyBkZXNlcmlhbGl6ZWQgb2JqZWN0IGEgbnVtZXJpYyBpZCBhbmQgaWYgaXQKKyAg
ICAgICAgZGVzZXJpYWxpemVzIHRoZSBpZCBpdCBzdWJzdGl0dXRlcyB0aGUgcGVydmlvdXNseSBk
ZXNlcmlhbGl6ZWQgb2JqZWN0cy4gSXQgaXMgY3JpdGljYWwgdGhhdCBzZXJpYWxpemF0aW9uIGFu
ZCBkZXNlcmlhbGl6YXRpb24KKyAgICAgICAgYXNzaWducyBudW1lcmljIGlkcyBpbiB0aGUgc2Ft
ZSBvcmRlci4KKworICAgICAgICBUaGUgYnVnIChkaXNjb3ZlcmVkIGJ5IFlvbmcgTGkpIGlzIHRo
YXQgd2hlbiBzZXJpYWxpemluZyBBcnJheUJ1ZmZlclZpZXcsIHRoZSBpZHMgd2VyZSBhc3NpZ25l
ZCBmaXJzdCB0byAKKyAgICAgICAgdGhlIEFycmF5QnVmZmVyVmlldyBhbmQgdGhlbiB0byB1bmRl
cmx5aW5nIEFycmF5QnVmZmVyOyBob3dldmVyIG9uIGRlc2VyaWFsaXphdGlvbiB0aGUgaWRzIHdl
cmUgYXNzaWduZWQgYW5vdGhlciB3YXkgcm91bmQuCisKKyAgICAgICAgVGhpcyBwYXRjaCBmaXhl
cyB0aGF0IGJ5IGFzc2lnbmluZyB0aGUgaWQgZmlyc3QgdG8gQXJyYXlCdWZmZXIgYW5kIHRoZW4g
dG8gQXJyYXlCdWZmZXJWaWV3LCBhbmQgYWRkcyBjb3JyZXNwb25kaW5nIHRlc3QgY2FzZXMuCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSdXNzZWxsLgorCisgICAgICAgIE5ldyB0ZXN0
IGNhc2VzIGFkZGVkIHRvIGZhc3QvY2FudmFzL3dlYi1nbC9hcnJheS1tZXNzYWdlLXBhc3Npbmcu
aHRtbC4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDbG9uZVNlcmlhbGl6ZXI6OmNoZWNrRm9yRHVwbGljYXRlKToK
KyAgICAgICAgKENsb25lU2VyaWFsaXplcik6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZVNlcmlh
bGl6ZXI6OnJlY29yZE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZVNlcmlhbGl6ZXI6
OnN0YXJ0T2JqZWN0SW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVTZXJpYWxpemVy
OjpkdW1wSWZUZXJtaW5hbCk6CisKIDIwMTItMDQtMDMgIEFkYW0gQmFydGggIDxhYmFydGhAd2Vi
a2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLiBUaGlzIHBhdGNoIGFkZHMgYW4gdWdseSwg
dWdseSBoYWNrIHRvIGJhbmRhaWQgb3ZlciB0aGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCmluZGV4IDdhYzE1NWMuLmIyNTky
OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNj
cmlwdFZhbHVlLmNwcApAQCAtMzg5LDIwICszODksMzMgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0
dXJuIGlzSlNBcnJheShvYmplY3QpIHx8IG9iamVjdC0+aW5oZXJpdHMoJkpTQXJyYXk6OnNfaW5m
byk7CiAgICAgfQogCi0gICAgYm9vbCBzdGFydE9iamVjdEludGVybmFsKEpTT2JqZWN0KiBvYmpl
Y3QpCisgICAgYm9vbCBjaGVja0ZvckR1cGxpY2F0ZShKU09iamVjdCogb2JqZWN0KQogICAgIHsK
ICAgICAgICAgLy8gUmVjb3JkIG9iamVjdCBmb3IgZ3JhcGggcmVjb25zdHJ1Y3Rpb24KICAgICAg
ICAgT2JqZWN0UG9vbDo6QWRkUmVzdWx0IGFkZFJlc3VsdCA9IG1fb2JqZWN0UG9vbC5hZGQob2Jq
ZWN0LCBtX29iamVjdFBvb2wuc2l6ZSgpKTsKLSAgICAgICAgCisKICAgICAgICAgLy8gSGFuZGxl
IGR1cGxpY2F0ZSByZWZlcmVuY2VzCiAgICAgICAgIGlmICghYWRkUmVzdWx0LmlzTmV3RW50cnkp
IHsKICAgICAgICAgICAgIHdyaXRlKE9iamVjdFJlZmVyZW5jZVRhZyk7CiAgICAgICAgICAgICBB
U1NFUlQoc3RhdGljX2Nhc3Q8aW50MzJfdD4oYWRkUmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQpIDwg
bV9vYmplY3RQb29sLnNpemUoKSk7CiAgICAgICAgICAgICB3cml0ZU9iamVjdEluZGV4KGFkZFJl
c3VsdC5pdGVyYXRvci0+c2Vjb25kKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9Ci0gICAgICAgIAorCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9CisKKyAgICB2b2lkIHJlY29yZE9iamVjdChKU09iamVjdCogb2JqZWN0
KQorICAgIHsKKyAgICAgICAgbV9vYmplY3RQb29sLmFkZChvYmplY3QsIG1fb2JqZWN0UG9vbC5z
aXplKCkpOwogICAgICAgICBtX2djQnVmZmVyLmFwcGVuZChvYmplY3QpOworICAgIH0KKworICAg
IGJvb2wgc3RhcnRPYmplY3RJbnRlcm5hbChKU09iamVjdCogb2JqZWN0KQorICAgIHsKKyAgICAg
ICAgaWYgKGNoZWNrRm9yRHVwbGljYXRlKG9iamVjdCkpCisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIHJlY29yZE9iamVjdChvYmplY3QpOwogICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICB9CiAKQEAgLTY0Myw5ICs2NTYsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChvYmotPmluaGVyaXRz
KCZKU0FycmF5QnVmZmVyVmlldzo6c19pbmZvKSkgewotICAgICAgICAgICAgICAgIGlmICghc3Rh
cnRPYmplY3RJbnRlcm5hbChvYmopKQorICAgICAgICAgICAgICAgIGlmIChjaGVja0ZvckR1cGxp
Y2F0ZShvYmopKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAg
ICAgICByZXR1cm4gZHVtcEFycmF5QnVmZmVyVmlldyhvYmosIGNvZGUpOworICAgICAgICAgICAg
ICAgIGJvb2wgc3VjY2VzcyA9IGR1bXBBcnJheUJ1ZmZlclZpZXcob2JqLCBjb2RlKTsKKyAgICAg
ICAgICAgICAgICByZWNvcmRPYmplY3Qob2JqKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3Vj
Y2VzczsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgQ2FsbERhdGEgdW51c2VkRGF0YTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>