<?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>144455</bug_id>
          
          <creation_ts>2015-04-30 10:20:14 -0700</creation_ts>
          <short_desc>streams/readable-stream.html is very flaky</short_desc>
          <delta_ts>2015-05-05 06:25:16 -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>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>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexey Proskuryakov">ap</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>benjamin</cc>
    
    <cc>calvaris</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1090471</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2015-04-30 10:20:14 -0700</bug_when>
    <thetext>streams/readable-stream.html fails quite a bit, especially on slower bots.

https://webkit-test-results.appspot.com/dashboards/flakiness_dashboard.html#showAllRuns=true&amp;tests=streams%2Freadable-stream.html

@@ -2,5 +2,5 @@
 PASS ReadableStream can&apos;t be constructed with garbage 
 PASS ReadableStream start should be called with the proper parameters 
 PASS ReadableStream should be able to call start method within prototype chain of its source 
-PASS A readable stream controller methods should throw if its readablestream is collected 
+FAIL A readable stream controller methods should throw if its readablestream is collected assert_throws: function &quot;function () { controller.close(); }&quot; did not throw

This is very easily reproducible locally with a debug build:

run-webkit-tests streams/readable-stream.html --repeat 100 -f
...
7 tests ran as expected, 93 didn&apos;t</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1090490</commentid>
    <comment_count>1</comment_count>
      <attachid>252072</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-04-30 11:11:28 -0700</bug_when>
    <thetext>Created attachment 252072
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1090492</commentid>
    <comment_count>2</comment_count>
      <attachid>252072</attachid>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2015-04-30 11:15:18 -0700</bug_when>
    <thetext>Comment on attachment 252072
Patch

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

&gt; LayoutTests/ChangeLog:1
&gt; +2015-04-30  Youenn Fablet  &lt;youenn.fablet@crf.canon.fr&gt;

Don&apos;t you feel lonely here? :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1090493</commentid>
    <comment_count>3</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-04-30 11:16:30 -0700</bug_when>
    <thetext>(In reply to comment #1)
&gt; Created attachment 252072 [details]
&gt; Patch

Improved the gc technique, and waiting before evaluating assertions after gc.
Hopefully, that will solve the issue, and could be refactored in LayoutTests/resources/gc.js

Split flaky test in its own file so that we can update expectations if it is still flaky.
It is planned to add more gc tests to readable-stream-gc.html in the future.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1090494</commentid>
    <comment_count>4</comment_count>
      <attachid>252072</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2015-04-30 11:20:36 -0700</bug_when>
    <thetext>Comment on attachment 252072
Patch

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

&gt; LayoutTests/streams/readable-stream-gc.html:15
&gt; +        timeout = 400;

I don&apos;t think that changing the timeout from 10ms to 400ms is the right approach. This difference doesn&apos;t make sense in the context of layout tests - the process can easily be suspended for several seconds.

Why are you trying to wait at all here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1090500</commentid>
    <comment_count>5</comment_count>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2015-04-30 11:28:53 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Split flaky test in its own file so that we can update expectations if it is
&gt; still flaky.
&gt; It is planned to add more gc tests to readable-stream-gc.html in the future.

If flakyness doesn&apos;t disappear completely (or almost) we might want to mark this new test as [ PASS TIMEOUT ].</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1090502</commentid>
    <comment_count>6</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-04-30 11:34:38 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Comment on attachment 252072 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=252072&amp;action=review
&gt; 
&gt; &gt; LayoutTests/ChangeLog:1
&gt; &gt; +2015-04-30  Youenn Fablet  &lt;youenn.fablet@crf.canon.fr&gt;
&gt; 
&gt; Don&apos;t you feel lonely here? :)

Sure, I&apos;ll fix that at cq time ;)

(In reply to comment #4)
&gt; Comment on attachment 252072 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=252072&amp;action=review
&gt; 
&gt; &gt; LayoutTests/streams/readable-stream-gc.html:15
&gt; &gt; +        timeout = 400;
&gt; 
&gt; I don&apos;t think that changing the timeout from 10ms to 400ms is the right
&gt; approach. This difference doesn&apos;t make sense in the context of layout tests
&gt; - the process can easily be suspended for several seconds.
&gt; 
&gt; Why are you trying to wait at all here?

In the previous test, we were doing: wait, gc then check assertions.
We are now doing: gc, wait, then check assertions.
GC may also use window.GCController if available.

We are only waiting 400ms if neither window.gc nor wingow.GCController are available.

This is the same code as LayoutTests/fast/canvas/canvas-bg-multiple-removal.html. It would be good if a single technique be recommended for those kind of tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1090506</commentid>
    <comment_count>7</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-04-30 11:35:48 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #3)
&gt; &gt; Split flaky test in its own file so that we can update expectations if it is
&gt; &gt; still flaky.
&gt; &gt; It is planned to add more gc tests to readable-stream-gc.html in the future.
&gt; 
&gt; If flakyness doesn&apos;t disappear completely (or almost) we might want to mark
&gt; this new test as [ PASS TIMEOUT ].

Yep, that is another bonus of splitting the test.
[ Pass Failure ] in this case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1090517</commentid>
    <comment_count>8</comment_count>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2015-04-30 11:51:59 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; &gt; If flakyness doesn&apos;t disappear completely (or almost) we might want to mark
&gt; &gt; this new test as [ PASS TIMEOUT ].
&gt; 
&gt; Yep, that is another bonus of splitting the test.
&gt; [ Pass Failure ] in this case.

Yes, my bad.

Anyway, this could be a first step towards recovering all those commented out tests, which breaks my heart because it is going to be hell to maintain.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1090669</commentid>
    <comment_count>9</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2015-04-30 17:14:16 -0700</bug_when>
    <thetext>I tested, and this test still relies on the 50 ms timeout - it fails if I change that to 0 ms. Why, what&apos;s going on here? I thought that GCController.collect was synchronous.

Also, the test appears to verify that we have a bug. Garbage collection should never be observable from JS, but this test verifies the opposite.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1090670</commentid>
    <comment_count>10</comment_count>
      <attachid>252072</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2015-04-30 17:15:01 -0700</bug_when>
    <thetext>Comment on attachment 252072
Patch

Please fix the actual bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1091339</commentid>
    <comment_count>11</comment_count>
      <attachid>252301</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-05-04 03:31:14 -0700</bug_when>
    <thetext>Created attachment 252301
Updating controller/stream link</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1091359</commentid>
    <comment_count>12</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-05-04 05:47:51 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; 
&gt; Also, the test appears to verify that we have a bug. Garbage collection
&gt; should never be observable from JS, but this test verifies the opposite.

The latest patch tries to fix that.
We can no longer test whether garbage collection happens correctly though.
I guess leak tests can capture that?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1091364</commentid>
    <comment_count>13</comment_count>
      <attachid>252301</attachid>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2015-05-04 06:52:41 -0700</bug_when>
    <thetext>Comment on attachment 252301
Updating controller/stream link

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

&gt; LayoutTests/streams/readable-stream-gc.html:31
&gt; +        controller.close();
&gt; +        assert_throws(new TypeError(), function() { controller.close(); });
&gt; +        assert_throws(new TypeError(), function() { controller.error(); });

Is this right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1091573</commentid>
    <comment_count>14</comment_count>
      <attachid>252301</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-05-04 16:02:05 -0700</bug_when>
    <thetext>Comment on attachment 252301
Updating controller/stream link

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

&gt; Source/WebCore/Modules/streams/ReadableStreamController.h:45
&gt;      ~ReadableStreamController() { }

Should delete this, the automatically generated one will do fine.

&gt; Source/WebCore/Modules/streams/ReadableStreamController.h:47
&gt;      ReadableJSStream* stream() { return m_stream; }

Should return a reference, not a pointer.

&gt; Source/WebCore/Modules/streams/ReadableStreamController.h:53
&gt;      ReadableJSStream* m_stream;

Should be a reference, not a pointer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1091666</commentid>
    <comment_count>15</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2015-05-04 19:50:38 -0700</bug_when>
    <thetext>&gt; I guess leak tests can capture that?

No, that only captures leaks (i.e. objects that don&apos;t have pointers to).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1091734</commentid>
    <comment_count>16</comment_count>
      <attachid>252301</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-05-05 05:33:20 -0700</bug_when>
    <thetext>Comment on attachment 252301
Updating controller/stream link

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

&gt;&gt; Source/WebCore/Modules/streams/ReadableStreamController.h:45
&gt;&gt;      ~ReadableStreamController() { }
&gt; 
&gt; Should delete this, the automatically generated one will do fine.

OK

&gt;&gt; Source/WebCore/Modules/streams/ReadableStreamController.h:47
&gt;&gt;      ReadableJSStream* stream() { return m_stream; }
&gt; 
&gt; Should return a reference, not a pointer.

OK

&gt;&gt; Source/WebCore/Modules/streams/ReadableStreamController.h:53
&gt;&gt;      ReadableJSStream* m_stream;
&gt; 
&gt; Should be a reference, not a pointer.

OK

&gt;&gt; LayoutTests/streams/readable-stream-gc.html:31
&gt;&gt; +        assert_throws(new TypeError(), function() { controller.error(); });
&gt; 
&gt; Is this right?

What we exercise here is that even if the stream reference is lost from the JS script, the controller still works properly.
In that case, we validate that the stream gets closed on the first close() call, and subsequent close() and error() calls throw exceptions (as the stream is closed).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1091735</commentid>
    <comment_count>17</comment_count>
      <attachid>252377</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-05-05 05:36:42 -0700</bug_when>
    <thetext>Created attachment 252377
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1091746</commentid>
    <comment_count>18</comment_count>
      <attachid>252377</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-05-05 06:25:13 -0700</bug_when>
    <thetext>Comment on attachment 252377
Patch for landing

Clearing flags on attachment: 252377

Committed r183803: &lt;http://trac.webkit.org/changeset/183803&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1091747</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-05-05 06:25:16 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>252072</attachid>
            <date>2015-04-30 11:11:28 -0700</date>
            <delta_ts>2015-05-04 03:31:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-144455-20150430201015.patch</filename>
            <type>text/plain</type>
            <size>4625</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgzNTM5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNTc2NWU5YjFkYzQ3NDAzNWViZDM2
NjZmMmIwYWZiZTkxNjg0ZGEwMy4uMTQ2Nzg0MTRkNjU2YWUzOGFmMjRhMTg4YWVmYTY0ZDQ3ZWE0
YWU1NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE1LTA0LTMwICBZb3Vlbm4gRmFibGV0ICA8
eW91ZW5uLmZhYmxldEBjcmYuY2Fub24uZnI+CisKKyAgICAgICAgc3RyZWFtcy9yZWFkYWJsZS1z
dHJlYW0uaHRtbCBpcyB2ZXJ5IGZsYWt5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNDQ0NTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBTcGxpdCBmbGFreSB0ZXN0IGluIGEgc2VwYXJhdGUgdGVzdCBmaWxl
LgorICAgICAgICBJbXByb3ZlZCBzdGFiaWxpdHkgYnkgd2FpdGluZyB0byBjaGVjayBmb3Igc3Rh
dGUgYWZ0ZXIgZ2MuCisKKyAgICAgICAgKiBzdHJlYW1zL3JlYWRhYmxlLXN0cmVhbS1leHBlY3Rl
ZC50eHQ6CisgICAgICAgICogc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW0tZ2MtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBzdHJlYW1zL3JlYWRhYmxlLXN0cmVhbS1nYy5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBzdHJlYW1zL3JlYWRhYmxlLXN0cmVhbS5odG1sOgorCiAyMDE1LTA0LTI5
ICBIeXVuZ3dvb2sgTGVlICA8aHl1bmd3b29rLmxlZUBuYXZlcmNvcnAuY29tPgogCiAgICAgICAg
IEZpeCBjcmFzaCBpbiBXZWJDb3JlOjpMb2dpY2FsU2VsZWN0aW9uT2Zmc2V0Q2FjaGVzOjpDb250
YWluaW5nQmxvY2tJbmZvOjpzZXRCbG9jaygpLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3Ry
ZWFtcy9yZWFkYWJsZS1zdHJlYW0tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9y
ZWFkYWJsZS1zdHJlYW0tZXhwZWN0ZWQudHh0CmluZGV4IGE3OTEzMDVlOTczMjFlNzk5Y2UxYzdi
MDRlZmJhY2MwZjEwNzhlMWUuLjdhMTYxOWVlMzIyOGQ1YTNmNGE0YmMxMmZlY2ZkMjMzMTAyYzlm
Y2YgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtLWV4cGVj
dGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbS1leHBlY3Rl
ZC50eHQKQEAgLTIsNSArMiw0IEBACiBQQVNTIFJlYWRhYmxlU3RyZWFtIGNhbid0IGJlIGNvbnN0
cnVjdGVkIHdpdGggZ2FyYmFnZSAKIFBBU1MgUmVhZGFibGVTdHJlYW0gc3RhcnQgc2hvdWxkIGJl
IGNhbGxlZCB3aXRoIHRoZSBwcm9wZXIgcGFyYW1ldGVycyAKIFBBU1MgUmVhZGFibGVTdHJlYW0g
c2hvdWxkIGJlIGFibGUgdG8gY2FsbCBzdGFydCBtZXRob2Qgd2l0aGluIHByb3RvdHlwZSBjaGFp
biBvZiBpdHMgc291cmNlIAotUEFTUyBBIHJlYWRhYmxlIHN0cmVhbSBjb250cm9sbGVyIG1ldGhv
ZHMgc2hvdWxkIHRocm93IGlmIGl0cyByZWFkYWJsZXN0cmVhbSBpcyBjb2xsZWN0ZWQgCiAKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtLWdjLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtLWdjLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5kZjQ4Y2Q5NzgzYjQ4MzVlM2RkZWU2OGViZDllZmFlNjc1Mjg0ZDA4Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW0tZ2Mt
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorCitQQVNTIFJlYWRhYmxlU3RyZWFtQ29udHJv
bGxlciBtZXRob2RzIHNob3VsZCB0aHJvdyBpZiBpdHMgUmVhZGFibGVTdHJlYW0gaXMgY29sbGVj
dGVkIAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbS1n
Yy5odG1sIGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW0tZ2MuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5lMDIyZTIzMDA1NWZlNjMyNGU4NDA5MWNjNTk1NjNhYjY1ZjUxZmQwCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW0tZ2MuaHRtbApA
QCAtMCwwICsxLDM0IEBACis8IURPQ1RZUEUgaHRtbD4KKzxzY3JpcHQgc3JjPScuLi9yZXNvdXJj
ZXMvdGVzdGhhcm5lc3MuanMnPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Jy4uL3Jlc291cmNlcy90
ZXN0aGFybmVzc3JlcG9ydC5qcyc+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0nLi4vcmVzb3VyY2Vz
L2djLmpzJz48L3NjcmlwdD4KKzxzY3JpcHQ+CisKK2Z1bmN0aW9uIGdhcmJhZ2VDb2xsZWN0QW5k
RG8odGFzaykKK3sKKyAgICB2YXIgdGltZW91dCA9IDUwOworICAgIGlmICh3aW5kb3cuR0NDb250
cm9sbGVyKQorICAgICAgICB3aW5kb3cuR0NDb250cm9sbGVyLmNvbGxlY3QoKTsKKyAgICBlbHNl
IGlmICh3aW5kb3cuZ2MpCisgICAgICAgIGdjKCk7CisgICAgZWxzZQorICAgICAgICB0aW1lb3V0
ID0gNDAwOworICAgIHNldFRpbWVvdXQodGFzaywgdGltZW91dCk7Cit9CisKK3QxID0gYXN5bmNf
dGVzdCgnUmVhZGFibGVTdHJlYW1Db250cm9sbGVyIG1ldGhvZHMgc2hvdWxkIHRocm93IGlmIGl0
cyBSZWFkYWJsZVN0cmVhbSBpcyBjb2xsZWN0ZWQnKTsKK3QxLnN0ZXAoZnVuY3Rpb24oKSB7Cisg
ICAgdmFyIGNvbnRyb2xsZXI7CisgICAgbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICAgICAgc3Rh
cnQ6IGZ1bmN0aW9uKGMpIHsKKyAgICAgICAgICAgIGNvbnRyb2xsZXIgPSBjOworICAgICAgICB9
CisgICAgfSk7CisgICAgZ2FyYmFnZUNvbGxlY3RBbmREbyh0MS5zdGVwX2Z1bmMoZnVuY3Rpb24o
KSB7CisgICAgICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCBmdW5jdGlvbigpIHsg
Y29udHJvbGxlci5jbG9zZSgpOyB9KTsKKyAgICAgICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVy
cm9yKCksIGZ1bmN0aW9uKCkgeyBjb250cm9sbGVyLmVycm9yKCk7IH0pOworICAgICAgICBhc3Nl
cnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgZnVuY3Rpb24oKSB7IGNvbnRyb2xsZXIuZW5xdWV1
ZSgpOyB9KTsKKyAgICAgICAgdDEuZG9uZSgpOworICAgIH0pKTsKK30pOworPC9zY3JpcHQ+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbS5odG1sIGIvTGF5
b3V0VGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW0uaHRtbAppbmRleCBlNWFlZmY3OGYzZmJj
ZjdlOTE1ZTg5NDY0NDc5ZWQyOGQxZWQzOWFmLi40NGU4NjUxNzlhOGMzZDYwZTY2MjEwNTAyN2Iy
YWEzYmUwY2JjMDczIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0
cmVhbS5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtLmh0bWwK
QEAgLTEsNyArMSw2IEBACiA8IURPQ1RZUEUgaHRtbD4KIDxzY3JpcHQgc3JjPScuLi9yZXNvdXJj
ZXMvdGVzdGhhcm5lc3MuanMnPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Jy4uL3Jlc291cmNlcy90
ZXN0aGFybmVzc3JlcG9ydC5qcyc+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0nLi4vcmVzb3VyY2Vz
L2djLmpzJz48L3NjcmlwdD4KIDxzY3JpcHQ+CiB0ZXN0KGZ1bmN0aW9uKCkgewogICAgIGFzc2Vy
dF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCBmdW5jdGlvbigpIHsKQEAgLTU4LDIwICs1Nyw0IEBA
IHRlc3QoZnVuY3Rpb24oKQogICAgIGFzc2VydF90cnVlKGlzU3RhcnRDYWxsZWQpOwogfSwgJ1Jl
YWRhYmxlU3RyZWFtIHNob3VsZCBiZSBhYmxlIHRvIGNhbGwgc3RhcnQgbWV0aG9kIHdpdGhpbiBw
cm90b3R5cGUgY2hhaW4gb2YgaXRzIHNvdXJjZScpOwogCi10MSA9IGFzeW5jX3Rlc3QoJ0EgcmVh
ZGFibGUgc3RyZWFtIGNvbnRyb2xsZXIgbWV0aG9kcyBzaG91bGQgdGhyb3cgaWYgaXRzIHJlYWRh
Ymxlc3RyZWFtIGlzIGNvbGxlY3RlZCcpOwotdDEuc3RlcChmdW5jdGlvbigpIHsKLSAgICB2YXIg
Y29udHJvbGxlcjsKLSAgICBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgICAgICBzdGFydDogZnVu
Y3Rpb24oYykgewotICAgICAgICAgICAgY29udHJvbGxlciA9IGM7Ci0gICAgICAgIH0KLSAgICB9
KTsKLSAgICBzZXRUaW1lb3V0KHQxLnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKLSAgICAgICAgd2lu
ZG93LmdjKCk7Ci0gICAgICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCBmdW5jdGlv
bigpIHsgY29udHJvbGxlci5jbG9zZSgpOyB9KTsKLSAgICAgICAgYXNzZXJ0X3Rocm93cyhuZXcg
VHlwZUVycm9yKCksIGZ1bmN0aW9uKCkgeyBjb250cm9sbGVyLmVycm9yKCk7IH0pOwotICAgICAg
ICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgZnVuY3Rpb24oKSB7IGNvbnRyb2xsZXIu
ZW5xdWV1ZSgpOyB9KTsKLSAgICAgICAgdDEuZG9uZSgpOwotICAgIH0pLCAxMCk7Ci19KTsKIDwv
c2NyaXB0Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>252301</attachid>
            <date>2015-05-04 03:31:14 -0700</date>
            <delta_ts>2015-05-05 05:36:34 -0700</delta_ts>
            <desc>Updating controller/stream link</desc>
            <filename>bug-144455-20150504122958.patch</filename>
            <type>text/plain</type>
            <size>14792</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgzNzM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjZmOTk3YmFjZjUwMWMw
YjgwNjVhMTM4Mjg5ODgwNWJkYzUwMmY2NC4uNzBhZTNmN2NlOWU4MGYyYmIwMmYxNjBjMjgyNmNl
OWFiM2IyODJlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDE1LTA1LTA0ICBYYWJp
ZXIgUm9kcmlndWV6IENhbHZhciAgPGNhbHZhcmlzQGlnYWxpYS5jb20+IGFuZCBZb3Vlbm4gRmFi
bGV0ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24uZnI+CisKKyAgICAgICAgc3RyZWFtcy9yZWFk
YWJsZS1zdHJlYW0uaHRtbCBpcyB2ZXJ5IGZsYWt5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDQ0NTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBDaGFuZ2VkIHRoZSBsaW5rIGJldHdlZW4gcmVhZGFkYWJs
ZSBzdHJlYW0gYW5kIGNvbnRyb2xsZXIuCisgICAgICAgIENvbnRyb2xsZXIgcmVmKCkvZGVmcmVm
KCkgbm93IGluY3JlbWVudHMvZGVjcmVtZW50cyBpdHMgc3RyZWFtIGNvdW50ZXIuCisgICAgICAg
IFRoaXMgZW5zdXJlcyB0aGF0IGV2ZW4gaWYgSlMgc2NyaXB0cyBkbyBub3Qga2VlcCB0cmFjayBv
ZiB0aGUgcmVhZGFibGUgc3RyZWFtLAorICAgICAgICBpdCB3aWxsIG5vdCBiZSBkaXNwb3NlZCBh
cyBsb25nIGFzIHRoZSBKUyBzY3JpcHQgaGFzIGFjY2VzcyB0byBpdHMgY29udHJvbGxlci4KKwor
ICAgICAgICBUZXN0OiBzdHJlYW1zL3JlYWRhYmxlLXN0cmVhbS1nYy5odG1sCisKKyAgICAgICAg
KiBNb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1Db250cm9sbGVyLmg6CisgICAgICAgIChX
ZWJDb3JlOjpSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXI6OlJlYWRhYmxlU3RyZWFtQ29udHJvbGxl
cik6CisgICAgICAgIChXZWJDb3JlOjpSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXI6OnJlZik6Cisg
ICAgICAgIChXZWJDb3JlOjpSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXI6OmRlcmVmKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlYWRhYmxlU3RyZWFtQ29udHJvbGxlcjo6Y3JlYXRlKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlJlYWRhYmxlU3RyZWFtQ29udHJvbGxlcjo6c3RyZWFtKTogRGVs
ZXRlZC4KKyAgICAgICAgICogYmluZGluZ3MvanMvSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJD
dXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXI6
OmNsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTUmVhZGFibGVTdHJlYW1Db250cm9sbGVyOjpl
bnF1ZXVlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTUmVhZGFibGVTdHJlYW1Db250cm9sbGVyOjpl
cnJvcik6CisgICAgICAgICogYmluZGluZ3MvanMvUmVhZGFibGVTdHJlYW1KU1NvdXJjZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZWFkYWJsZVN0cmVhbUpTU291cmNlOjp+UmVhZGFibGVTdHJl
YW1KU1NvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpSZWFkYWJsZVN0cmVhbUpTU291cmNlOjpz
dGFydCk6CisgICAgICAgIChXZWJDb3JlOjpSZWFkYWJsZUpTU3RyZWFtOjpqc0NvbnRyb2xsZXIp
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL1JlYWRhYmxlU3RyZWFtSlNTb3VyY2UuaDoKKwogMjAx
NS0wNS0wMyAgR3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgUHVyZ2UgUGFzc1JlZlB0ciBpbiBXZWJDb3JlL2h0bWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIuaAppbmRl
eCA2ZmQ5ZDIxYzQzODhjOGQwNjJhZjJlYmRmMmMyNzVmYTU4N2VlOWM0Li5lNWU0NDk0ZjIyMjM1
MzllNDJmZGQ2ZGJmZjVhYzBiZTBmZDgxODIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1Db250cm9sbGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlci5oCkBAIC0zMiwz
MSArMzIsMjQgQEAKIAogI2lmIEVOQUJMRShTVFJFQU1TX0FQSSkKIAotI2luY2x1ZGUgPHd0Zi9S
ZWYuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgIlJlYWRhYmxlU3Ry
ZWFtSlNTb3VyY2UuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBSZWFkYWJsZUpT
U3RyZWFtOwotCiAvLyBUaGlzIGNsYXNzIGlzIG9ubHkgdXNlZCBmb3IgSlMgc291cmNlIHJlYWRh
YmxlIHN0cmVhbXMgdG8gYWxsb3cgZW5xdWV1aW5nLCBjbG9zaW5nIG9yIGVycm9yaW5nIGEgcmVh
ZGFibGUgc3RyZWFtLgogLy8gSXRzIGRlZmluaXRpb24gaXMgYXQgaHR0cHM6Ly9zdHJlYW1zLnNw
ZWMud2hhdHdnLm9yZy8jcnMtY29udHJvbGxlci1jbGFzcy4KIC8vIE5vdGUgdGhhdCBpdHMgY29u
c3RydWN0b3IgaXMgdGFraW5nIGEgUmVhZGFibGVKU1N0cmVhbSBhcyBpdCBzaG91bGQgb25seSBi
ZSB1c2VkIGZvciBKUyBzb3VyY2VzLgotY2xhc3MgUmVhZGFibGVTdHJlYW1Db250cm9sbGVyIDog
cHVibGljIFJlZkNvdW50ZWQ8UmVhZGFibGVTdHJlYW1Db250cm9sbGVyPiB7CitjbGFzcyBSZWFk
YWJsZVN0cmVhbUNvbnRyb2xsZXIgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8UmVhZGFibGVT
dHJlYW1Db250cm9sbGVyPiBjcmVhdGUoUmVhZGFibGVKU1N0cmVhbSYgc3RyZWFtKQotICAgIHsK
LSAgICAgICAgYXV0byBjb250cm9sbGVyID0gYWRvcHRSZWYoKm5ldyBSZWFkYWJsZVN0cmVhbUNv
bnRyb2xsZXIoc3RyZWFtKSk7Ci0gICAgICAgIHJldHVybiBjb250cm9sbGVyOwotICAgIH0KKyAg
ICBleHBsaWNpdCBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIoUmVhZGFibGVKU1N0cmVhbSYgc3Ry
ZWFtKSB7IG1fc3RyZWFtID0gJnN0cmVhbTsgfQogICAgIH5SZWFkYWJsZVN0cmVhbUNvbnRyb2xs
ZXIoKSB7IH0KIAotICAgIHZvaWQgcmVzZXRTdHJlYW0oKSB7IG1fc3RyZWFtID0gbnVsbHB0cjsg
fQogICAgIFJlYWRhYmxlSlNTdHJlYW0qIHN0cmVhbSgpIHsgcmV0dXJuIG1fc3RyZWFtOyB9CiAK
LXByaXZhdGU6Ci0gICAgUmVhZGFibGVTdHJlYW1Db250cm9sbGVyKFJlYWRhYmxlSlNTdHJlYW0m
IHN0cmVhbSkgeyBtX3N0cmVhbSA9ICZzdHJlYW07IH0KKyAgICB2b2lkIHJlZigpIHsgbV9zdHJl
YW0tPnJlZigpOyB9CisgICAgdm9pZCBkZXJlZigpIHsgbV9zdHJlYW0tPmRlcmVmKCk7IH0KIAor
cHJpdmF0ZToKICAgICBSZWFkYWJsZUpTU3RyZWFtKiBtX3N0cmVhbTsKIH07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUmVhZGFibGVTdHJlYW1Db250cm9sbGVy
Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUmVhZGFibGVTdHJlYW1D
b250cm9sbGVyQ3VzdG9tLmNwcAppbmRleCA4NDZhYzcwZDk1MzMzZDg2MDg4OTMyOTJiZWMwMGFh
ZmQ3ZTcwNTdmLi5jYTQ2ZDg0ZTc4MmFiNTQzMjU3ZmJhMzU4MTAwNDI1N2I5NTA0ZTEyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1JlYWRhYmxlU3RyZWFtQ29udHJv
bGxlckN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNSZWFkYWJs
ZVN0cmVhbUNvbnRyb2xsZXJDdXN0b20uY3BwCkBAIC00NCw4ICs0NCw2IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIEpTVmFsdWUgSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXI6OmNsb3NlKEV4ZWNT
dGF0ZSogZXhlYykKIHsKICAgICBSZWFkYWJsZUpTU3RyZWFtKiBzdHJlYW0gPSBpbXBsKCkuc3Ry
ZWFtKCk7Ci0gICAgaWYgKCFzdHJlYW0pCi0gICAgICAgIHJldHVybiBleGVjLT52bSgpLnRocm93
RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkNvbnRy
b2xsZXIgaGFzIG5vIHJlYWRhYmxlc3RyZWFtIikpKTsKICAgICAvLyBGSVhNRTogSGFuZGxlIHRo
ZSBjYXNlIG9mIGRyYWluaW5nLgogICAgIGlmIChzdHJlYW0tPmludGVybmFsU3RhdGUoKSAhPSBS
ZWFkYWJsZVN0cmVhbTo6U3RhdGU6OlJlYWRhYmxlKQogICAgICAgICByZXR1cm4gZXhlYy0+dm0o
KS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFs
KCJDYWxsaW5nIGNsb3NlIG9uIGEgc3RyZWFtIHdoaWNoIGlzIG5vdCByZWFkYWJsZSIpKSk7CkBA
IC01MywxMSArNTEsOCBAQCBKU1ZhbHVlIEpTUmVhZGFibGVTdHJlYW1Db250cm9sbGVyOjpjbG9z
ZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiB9CiAKLUpTVmFs
dWUgSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXI6OmVucXVldWUoRXhlY1N0YXRlKiBleGVjKQor
SlNWYWx1ZSBKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlcjo6ZW5xdWV1ZShFeGVjU3RhdGUqKQog
ewotICAgIFJlYWRhYmxlSlNTdHJlYW0qIHN0cmVhbSA9IGltcGwoKS5zdHJlYW0oKTsKLSAgICBp
ZiAoIXN0cmVhbSkKLSAgICAgICAgcmV0dXJuIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhl
YywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQ29udHJvbGxlciBoYXMgbm8g
cmVhZGFibGVzdHJlYW0iKSkpOwogICAgIG5vdEltcGxlbWVudGVkKCk7CiAgICAgcmV0dXJuIGpz
Qm9vbGVhbihmYWxzZSk7CiB9CkBAIC02NSw4ICs2MCw2IEBAIEpTVmFsdWUgSlNSZWFkYWJsZVN0
cmVhbUNvbnRyb2xsZXI6OmVucXVldWUoRXhlY1N0YXRlKiBleGVjKQogSlNWYWx1ZSBKU1JlYWRh
YmxlU3RyZWFtQ29udHJvbGxlcjo6ZXJyb3IoRXhlY1N0YXRlKiBleGVjKQogewogICAgIFJlYWRh
YmxlSlNTdHJlYW0qIHN0cmVhbSA9IGltcGwoKS5zdHJlYW0oKTsKLSAgICBpZiAoIXN0cmVhbSkK
LSAgICAgICAgcmV0dXJuIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlVHlw
ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQ29udHJvbGxlciBoYXMgbm8gcmVhZGFibGVzdHJl
YW0iKSkpOwogICAgIGlmIChzdHJlYW0tPmludGVybmFsU3RhdGUoKSAhPSBSZWFkYWJsZVN0cmVh
bTo6U3RhdGU6OlJlYWRhYmxlKQogICAgICAgICByZXR1cm4gZXhlYy0+dm0oKS50aHJvd0V4Y2Vw
dGlvbihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJDYWxsaW5nIGVy
cm9yIG9uIGEgc3RyZWFtIHdoaWNoIGlzIG5vdCByZWFkYWJsZSIpKSk7CiAgICAgbm90SW1wbGVt
ZW50ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxl
U3RyZWFtSlNTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUmVhZGFibGVT
dHJlYW1KU1NvdXJjZS5jcHAKaW5kZXggMDUyMjhmNzk1OGMyZTc5MDY3Yjc1ZjZkZDNjYjM3NmY0
MTk5MWRjNy4uNDI5ODc2ZDllYTRhNzYwMjE2MGJlMTIyNzIwZGZhZGI5ZmJiYzkyZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUmVhZGFibGVTdHJlYW1KU1NvdXJjZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUmVhZGFibGVTdHJlYW1KU1NvdXJj
ZS5jcHAKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJET01XcmFwcGVyV29ybGQuaCIKICNp
bmNsdWRlICJKU0RPTVByb21pc2UuaCIKICNpbmNsdWRlICJKU1JlYWRhYmxlU3RyZWFtLmgiCisj
aW5jbHVkZSAiSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJOb3RJbXBs
ZW1lbnRlZC5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRl
IDxydW50aW1lL0Vycm9yLmg+CkBAIC05MCw4ICs5MSw2IEBAIFJlYWRhYmxlU3RyZWFtSlNTb3Vy
Y2U6OlJlYWRhYmxlU3RyZWFtSlNTb3VyY2UoSlNDOjpFeGVjU3RhdGUqIGV4ZWMpCiAKIFJlYWRh
YmxlU3RyZWFtSlNTb3VyY2U6On5SZWFkYWJsZVN0cmVhbUpTU291cmNlKCkKIHsKLSAgICBpZiAo
bV9jb250cm9sbGVyKQotICAgICAgICBtX2NvbnRyb2xsZXIuZ2V0KCktPmltcGwoKS5yZXNldFN0
cmVhbSgpOwogfQogCiBzdGF0aWMgdm9pZCBzdGFydFJlYWRhYmxlU3RyZWFtQXN5bmMoUmVhZGFi
bGVTdHJlYW0mIHJlYWRhYmxlU3RyZWFtKQpAQCAtMTAyLDI0ICsxMDEsMjMgQEAgc3RhdGljIHZv
aWQgc3RhcnRSZWFkYWJsZVN0cmVhbUFzeW5jKFJlYWRhYmxlU3RyZWFtJiByZWFkYWJsZVN0cmVh
bSkKICAgICB9KTsKIH0KIAotdm9pZCBSZWFkYWJsZVN0cmVhbUpTU291cmNlOjpzdGFydChKU0M6
OkV4ZWNTdGF0ZSogZXhlYywgSlNSZWFkYWJsZVN0cmVhbSogcmVhZGFibGVTdHJlYW0pCit2b2lk
IFJlYWRhYmxlU3RyZWFtSlNTb3VyY2U6OnN0YXJ0KEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU1Jl
YWRhYmxlU3RyZWFtKiBqc1N0cmVhbSkKIHsKICAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsK
IAotICAgIFJlZjxSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXI+IGNvbnRyb2xsZXIgPSBSZWFkYWJs
ZVN0cmVhbUNvbnRyb2xsZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxSZWFkYWJsZUpTU3RyZWFtJj4o
cmVhZGFibGVTdHJlYW0tPmltcGwoKSkpOwotICAgIG1fY29udHJvbGxlci5zZXQoZXhlYy0+dm0o
KSwganNEeW5hbWljQ2FzdDxKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlcio+KHRvSlMoZXhlYywg
cmVhZGFibGVTdHJlYW0tPmdsb2JhbE9iamVjdCgpLCBjb250cm9sbGVyKSkpOworICAgIFJlYWRh
YmxlSlNTdHJlYW0mIHN0cmVhbSA9IHN0YXRpY19jYXN0PFJlYWRhYmxlSlNTdHJlYW0mPihqc1N0
cmVhbS0+aW1wbCgpKTsKIAogICAgIEpTVmFsdWUgc3RhcnRGdW5jdGlvbiA9IGdldFByb3BlcnR5
RnJvbU9iamVjdChleGVjLCBtX3NvdXJjZS5nZXQoKSwgInN0YXJ0Iik7CiAgICAgaWYgKCFzdGFy
dEZ1bmN0aW9uLmlzRnVuY3Rpb24oKSkgewogICAgICAgICBpZiAoIXN0YXJ0RnVuY3Rpb24uaXNV
bmRlZmluZWQoKSkKICAgICAgICAgICAgIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJy
b3IoZXhlYywgQVNDSUlMaXRlcmFsKCJSZWFkYWJsZVN0cmVhbSBjb25zdHJ1Y3RvciBvYmplY3Qg
c3RhcnQgcHJvcGVydHkgc2hvdWxkIGJlIGEgZnVuY3Rpb24uIikpKTsKICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgc3RhcnRSZWFkYWJsZVN0cmVhbUFzeW5jKHJlYWRhYmxlU3RyZWFtLT5pbXBs
KCkpOworICAgICAgICAgICAgc3RhcnRSZWFkYWJsZVN0cmVhbUFzeW5jKHN0cmVhbSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmd1bWVudHM7
Ci0gICAgYXJndW1lbnRzLmFwcGVuZChtX2NvbnRyb2xsZXIuZ2V0KCkpOworICAgIGFyZ3VtZW50
cy5hcHBlbmQoc3RyZWFtLmpzQ29udHJvbGxlcigqZXhlYywganNTdHJlYW0tPmdsb2JhbE9iamVj
dCgpKSk7CiAKICAgICBKU1ZhbHVlIGV4Y2VwdGlvbjsKICAgICBjYWxsRnVuY3Rpb24oZXhlYywg
c3RhcnRGdW5jdGlvbiwgbV9zb3VyY2UuZ2V0KCksIGFyZ3VtZW50cywgJmV4Y2VwdGlvbik7CkBA
IC0xMzAsNyArMTI4LDcgQEAgdm9pZCBSZWFkYWJsZVN0cmVhbUpTU291cmNlOjpzdGFydChKU0M6
OkV4ZWNTdGF0ZSogZXhlYywgSlNSZWFkYWJsZVN0cmVhbSogcmVhZGEKICAgICB9CiAKICAgICAv
LyBGSVhNRTogSW1wbGVtZW50IGhhbmRsaW5nIHByb21pc2UgYXMgcmVzdWx0IG9mIGNhbGxpbmcg
c3RhcnQgZnVuY3Rpb24uCi0gICAgc3RhcnRSZWFkYWJsZVN0cmVhbUFzeW5jKHJlYWRhYmxlU3Ry
ZWFtLT5pbXBsKCkpOworICAgIHN0YXJ0UmVhZGFibGVTdHJlYW1Bc3luYyhzdHJlYW0pOwogfQog
CiBSZWY8UmVhZGFibGVKU1N0cmVhbT4gUmVhZGFibGVKU1N0cmVhbTo6Y3JlYXRlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIFJlZjxSZWFkYWJsZVN0cmVh
bUpTU291cmNlPiYmIHNvdXJjZSkKQEAgLTE1MCw2ICsxNDgsMTMgQEAgUmVhZGFibGVKU1N0cmVh
bTo6UmVhZGFibGVKU1N0cmVhbShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRp
b25Db250ZXgKIHsKIH0KIAorSlNWYWx1ZSBSZWFkYWJsZUpTU3RyZWFtOjpqc0NvbnRyb2xsZXIo
RXhlY1N0YXRlJiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQoreworICAg
IGlmICghbV9jb250cm9sbGVyKQorICAgICAgICBtX2NvbnRyb2xsZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlcj4oKnRoaXMpOworICAgIHJldHVybiB0b0pTKCZl
eGVjLCBnbG9iYWxPYmplY3QsIG1fY29udHJvbGxlci5nZXQoKSk7Cit9CisKIFJlZjxSZWFkYWJs
ZUpTU3RyZWFtUmVhZGVyPiBSZWFkYWJsZUpTU3RyZWFtUmVhZGVyOjpjcmVhdGUoUmVhZGFibGVK
U1N0cmVhbSYgc3RyZWFtKQogewogICAgIGF1dG8gcmVhZGFibGVTdHJlYW1SZWFkZXIgPSBhZG9w
dFJlZigqbmV3IFJlYWRhYmxlSlNTdHJlYW1SZWFkZXIoc3RyZWFtKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZVN0cmVhbUpTU291cmNlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZVN0cmVhbUpTU291cmNlLmgKaW5kZXggMjIz
YjI3NzYzZTExYmU3ZGFkNDA0N2QxNmMyNWNhYjczNTQ0ZmJjNi4uMmUzN2NjYWM2NGYyYjBkNjFk
ZWZlOGNkM2QwNjg4ODc2Y2ZiMDY0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvUmVhZGFibGVTdHJlYW1KU1NvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1JlYWRhYmxlU3RyZWFtSlNTb3VyY2UuaApAQCAtMzIsNyArMzIsNiBAQAogCiAjaWYg
RU5BQkxFKFNUUkVBTVNfQVBJKQogCi0jaW5jbHVkZSAiSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xs
ZXIuaCIKICNpbmNsdWRlICJSZWFkYWJsZVN0cmVhbS5oIgogI2luY2x1ZGUgIlJlYWRhYmxlU3Ry
ZWFtUmVhZGVyLmgiCiAjaW5jbHVkZSAiUmVhZGFibGVTdHJlYW1Tb3VyY2UuaCIKQEAgLTQ0LDcg
KzQzLDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBKU0RPTUdsb2JhbE9iamVj
dDsKIGNsYXNzIEpTUmVhZGFibGVTdHJlYW07CitjbGFzcyBSZWFkYWJsZVN0cmVhbUNvbnRyb2xs
ZXI7CiAKIGNsYXNzIFJlYWRhYmxlU3RyZWFtSlNTb3VyY2U6IHB1YmxpYyBSZWFkYWJsZVN0cmVh
bVNvdXJjZSB7CiBwdWJsaWM6CkBAIC01OCwxNiArNTksMTkgQEAgcHJpdmF0ZToKIAogICAgIC8v
IE9iamVjdCBwYXNzZWQgdG8gY29uc3RydWN0b3IuCiAgICAgSlNDOjpTdHJvbmc8SlNDOjpKU09i
amVjdD4gbV9zb3VyY2U7Ci0KLSAgICBKU0M6OlN0cm9uZzxKU1JlYWRhYmxlU3RyZWFtQ29udHJv
bGxlcj4gbV9jb250cm9sbGVyOwogfTsKIAogY2xhc3MgUmVhZGFibGVKU1N0cmVhbTogcHVibGlj
IFJlYWRhYmxlU3RyZWFtIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFJlYWRhYmxlSlNTdHJl
YW0+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgUmVmPFJlYWRhYmxlU3RyZWFtSlNT
b3VyY2U+JiYpOwogICAgIHZpcnR1YWwgUmVmPFJlYWRhYmxlU3RyZWFtUmVhZGVyPiBjcmVhdGVS
ZWFkZXIoKSBvdmVycmlkZTsKKworICAgIEpTQzo6SlNWYWx1ZSBqc0NvbnRyb2xsZXIoSlNDOjpF
eGVjU3RhdGUmLCBKU0RPTUdsb2JhbE9iamVjdCopOworCiBwcml2YXRlOgogICAgIFJlYWRhYmxl
SlNTdHJlYW0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFJlZjxSZWFkYWJsZVN0cmVhbUpTU291
cmNlPiYmKTsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXI+
IG1fY29udHJvbGxlcjsKIH07CiAKIGNsYXNzIFJlYWRhYmxlSlNTdHJlYW1SZWFkZXI6IHB1Ymxp
YyBSZWFkYWJsZVN0cmVhbVJlYWRlciB7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMjgwNzkyYTc2YTYwOTZmODZmOTcxYTQ5
YjFjMmQ0OWQ1MWI4ODI3NS4uZmY2MTcxOWUxNjA5ODA3MzViNDVjOThmZjgyMTA1NDA2MjZhNWQ1
MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE1LTA1LTA0ICBYYWJpZXIgUm9kcmlndWV6IENh
bHZhciAgPGNhbHZhcmlzQGlnYWxpYS5jb20+IGFuZCBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uLmZh
YmxldEBjcmYuY2Fub24uZnI+CisKKyAgICAgICAgc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW0uaHRt
bCBpcyB2ZXJ5IGZsYWt5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNDQ0NTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBNb3ZlZCBmbGFreSB0ZXN0IHRvIHN0cmVhbXMvcmVhZGFibGUtc3RyZWFtLWdjLmh0
bWwuCisgICAgICAgIFVwZGF0ZWQgZmxha3kgdGVzdCB0byBjaGVjayB0aGF0IHRoZSBjb250cm9s
bGVyIG1ldGhvZHMgd29yayB3ZWxsIGV2ZW4gaWYgcmVhZGFibGUgc3RyZWFtIHJlZmVyZW5jZSBp
cyBsb3N0IGJ5IHNjcmlwdC4KKworICAgICAgICAqIHN0cmVhbXMvcmVhZGFibGUtc3RyZWFtLWV4
cGVjdGVkLnR4dDoKKyAgICAgICAgKiBzdHJlYW1zL3JlYWRhYmxlLXN0cmVhbS1nYy1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHN0cmVhbXMvcmVhZGFibGUtc3RyZWFtLWdjLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIHN0cmVhbXMvcmVhZGFibGUtc3RyZWFtLmh0bWw6CisKIDIwMTUt
MDUtMDIgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAg
QXNzZXJ0aW9uIGZhaWx1cmUgKCFuZWVkc0xheW91dCgpKSBsb2FkaW5nIGlua2VkbWFnLmNvbQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW0tZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW0tZXhwZWN0ZWQudHh0Cmlu
ZGV4IGE3OTEzMDVlOTczMjFlNzk5Y2UxYzdiMDRlZmJhY2MwZjEwNzhlMWUuLjdhMTYxOWVlMzIy
OGQ1YTNmNGE0YmMxMmZlY2ZkMjMzMTAyYzlmY2YgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0
cmVhbXMvcmVhZGFibGUtc3RyZWFtLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdHJl
YW1zL3JlYWRhYmxlLXN0cmVhbS1leHBlY3RlZC50eHQKQEAgLTIsNSArMiw0IEBACiBQQVNTIFJl
YWRhYmxlU3RyZWFtIGNhbid0IGJlIGNvbnN0cnVjdGVkIHdpdGggZ2FyYmFnZSAKIFBBU1MgUmVh
ZGFibGVTdHJlYW0gc3RhcnQgc2hvdWxkIGJlIGNhbGxlZCB3aXRoIHRoZSBwcm9wZXIgcGFyYW1l
dGVycyAKIFBBU1MgUmVhZGFibGVTdHJlYW0gc2hvdWxkIGJlIGFibGUgdG8gY2FsbCBzdGFydCBt
ZXRob2Qgd2l0aGluIHByb3RvdHlwZSBjaGFpbiBvZiBpdHMgc291cmNlIAotUEFTUyBBIHJlYWRh
YmxlIHN0cmVhbSBjb250cm9sbGVyIG1ldGhvZHMgc2hvdWxkIHRocm93IGlmIGl0cyByZWFkYWJs
ZXN0cmVhbSBpcyBjb2xsZWN0ZWQgCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0cmVhbXMv
cmVhZGFibGUtc3RyZWFtLWdjLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVh
ZGFibGUtc3RyZWFtLWdjLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNjc5MWFhODg5ZjkwOGMy
MTAwNjBkMDNiYTJkMTgxMzk5NDVjOTc0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
c3RyZWFtcy9yZWFkYWJsZS1zdHJlYW0tZ2MtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAor
CitQQVNTIFJlYWRhYmxlIHN0cmVhbSBjb250cm9sbGVyIG1ldGhvZHMgc2hvdWxkIGNvbnRpbnVl
IHdvcmtpbmcgcHJvcGVybHkgd2hlbiBzY3JpcHRzIGFyZSBsb29zaW5nIHJlZmVyZW5jZSB0byB0
aGUgcmVhZGFibGUgc3RyZWFtIAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3Jl
YWRhYmxlLXN0cmVhbS1nYy5odG1sIGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJl
YW0tZ2MuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mOTU3Njg0Y2VjZDAwODc3YjY1ZDc5ODUwN2I3MTQzNWU1
MzUyZWFhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1z
dHJlYW0tZ2MuaHRtbApAQCAtMCwwICsxLDM2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxzY3JpcHQg
c3JjPScuLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMnPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Jy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyc+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0nLi4vcmVzb3VyY2VzL2djLmpzJz48L3NjcmlwdD4KKzxzY3JpcHQ+CisKK2Z1bmN0aW9uIGdh
cmJhZ2VDb2xsZWN0QW5kRG8odGFzaykKK3sKKyAgICB2YXIgdGltZW91dCA9IDUwOworICAgIGlm
ICh3aW5kb3cuR0NDb250cm9sbGVyKQorICAgICAgICB3aW5kb3cuR0NDb250cm9sbGVyLmNvbGxl
Y3QoKTsKKyAgICBlbHNlIGlmICh3aW5kb3cuZ2MpCisgICAgICAgIHdpbmRvdy5nYygpOworICAg
IGVsc2UKKyAgICAgICAgdGltZW91dCA9IDQwMDsKKyAgICBzZXRUaW1lb3V0KHRhc2ssIHRpbWVv
dXQpOworfQorCit0MSA9IGFzeW5jX3Rlc3QoJ1JlYWRhYmxlIHN0cmVhbSBjb250cm9sbGVyIG1l
dGhvZHMgc2hvdWxkIGNvbnRpbnVlIHdvcmtpbmcgcHJvcGVybHkgd2hlbiBzY3JpcHRzIGFyZSBs
b29zaW5nIHJlZmVyZW5jZSB0byB0aGUgcmVhZGFibGUgc3RyZWFtJyk7Cit0MS5zdGVwKGZ1bmN0
aW9uKCkgeworICAgIHZhciBjb250cm9sbGVyOworICAgIG5ldyBSZWFkYWJsZVN0cmVhbSh7Cisg
ICAgICAgIHN0YXJ0OiBmdW5jdGlvbihjKSB7CisgICAgICAgICAgICBjb250cm9sbGVyID0gYzsK
KyAgICAgICAgfQorICAgIH0pOworCisgICAgZ2FyYmFnZUNvbGxlY3RBbmREbyh0MS5zdGVwX2Z1
bmMoZnVuY3Rpb24oKSB7CisgICAgICAgIGNvbnRyb2xsZXIuY2xvc2UoKTsKKyAgICAgICAgYXNz
ZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksIGZ1bmN0aW9uKCkgeyBjb250cm9sbGVyLmNsb3Nl
KCk7IH0pOworICAgICAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgZnVuY3Rpb24o
KSB7IGNvbnRyb2xsZXIuZXJyb3IoKTsgfSk7CisgICAgICAgIHQxLmRvbmUoKTsKKyAgICB9KSk7
Cit9KTsKKworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlYWRh
YmxlLXN0cmVhbS5odG1sIGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW0uaHRt
bAppbmRleCBlNWFlZmY3OGYzZmJjZjdlOTE1ZTg5NDY0NDc5ZWQyOGQxZWQzOWFmLi40NGU4NjUx
NzlhOGMzZDYwZTY2MjEwNTAyN2IyYWEzYmUwY2JjMDczIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbS5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0cmVhbXMv
cmVhZGFibGUtc3RyZWFtLmh0bWwKQEAgLTEsNyArMSw2IEBACiA8IURPQ1RZUEUgaHRtbD4KIDxz
Y3JpcHQgc3JjPScuLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMnPjwvc2NyaXB0PgogPHNjcmlw
dCBzcmM9Jy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyc+PC9zY3JpcHQ+Ci08c2Ny
aXB0IHNyYz0nLi4vcmVzb3VyY2VzL2djLmpzJz48L3NjcmlwdD4KIDxzY3JpcHQ+CiB0ZXN0KGZ1
bmN0aW9uKCkgewogICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCBmdW5jdGlvbigp
IHsKQEAgLTU4LDIwICs1Nyw0IEBAIHRlc3QoZnVuY3Rpb24oKQogICAgIGFzc2VydF90cnVlKGlz
U3RhcnRDYWxsZWQpOwogfSwgJ1JlYWRhYmxlU3RyZWFtIHNob3VsZCBiZSBhYmxlIHRvIGNhbGwg
c3RhcnQgbWV0aG9kIHdpdGhpbiBwcm90b3R5cGUgY2hhaW4gb2YgaXRzIHNvdXJjZScpOwogCi10
MSA9IGFzeW5jX3Rlc3QoJ0EgcmVhZGFibGUgc3RyZWFtIGNvbnRyb2xsZXIgbWV0aG9kcyBzaG91
bGQgdGhyb3cgaWYgaXRzIHJlYWRhYmxlc3RyZWFtIGlzIGNvbGxlY3RlZCcpOwotdDEuc3RlcChm
dW5jdGlvbigpIHsKLSAgICB2YXIgY29udHJvbGxlcjsKLSAgICBuZXcgUmVhZGFibGVTdHJlYW0o
ewotICAgICAgICBzdGFydDogZnVuY3Rpb24oYykgewotICAgICAgICAgICAgY29udHJvbGxlciA9
IGM7Ci0gICAgICAgIH0KLSAgICB9KTsKLSAgICBzZXRUaW1lb3V0KHQxLnN0ZXBfZnVuYyhmdW5j
dGlvbigpIHsKLSAgICAgICAgd2luZG93LmdjKCk7Ci0gICAgICAgIGFzc2VydF90aHJvd3MobmV3
IFR5cGVFcnJvcigpLCBmdW5jdGlvbigpIHsgY29udHJvbGxlci5jbG9zZSgpOyB9KTsKLSAgICAg
ICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksIGZ1bmN0aW9uKCkgeyBjb250cm9sbGVy
LmVycm9yKCk7IH0pOwotICAgICAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgZnVu
Y3Rpb24oKSB7IGNvbnRyb2xsZXIuZW5xdWV1ZSgpOyB9KTsKLSAgICAgICAgdDEuZG9uZSgpOwot
ICAgIH0pLCAxMCk7Ci19KTsKIDwvc2NyaXB0Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>252377</attachid>
            <date>2015-05-05 05:36:42 -0700</date>
            <delta_ts>2015-05-05 06:25:13 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-144455-20150505143526.patch</filename>
            <type>text/plain</type>
            <size>14379</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgzNzk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjhmMDFkNDNjN2I4ZDdj
ZTQwMTJiMWY1ZDgyMWY4YWQzNTc4Zjc4OC4uOGQ5N2MwMjAyY2U2MzcwZjU3NmE2ZmU5NDViZjZh
ZGJlYjJhNjYwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDE1LTA1LTA0ICBYYWJp
ZXIgUm9kcmlndWV6IENhbHZhciAgPGNhbHZhcmlzQGlnYWxpYS5jb20+IGFuZCBZb3Vlbm4gRmFi
bGV0ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24uZnI+CisKKyAgICAgICAgc3RyZWFtcy9yZWFk
YWJsZS1zdHJlYW0uaHRtbCBpcyB2ZXJ5IGZsYWt5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDQ0NTUKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJp
biBBZGxlci4KKworICAgICAgICBDaGFuZ2VkIHRoZSBsaW5rIGJldHdlZW4gcmVhZGFkYWJsZSBz
dHJlYW0gYW5kIGNvbnRyb2xsZXIuCisgICAgICAgIENvbnRyb2xsZXIgcmVmKCkvZGVyZWYoKSBu
b3cgaW5jcmVtZW50cy9kZWNyZW1lbnRzIGl0cyBzdHJlYW0gcmVmIGNvdW50ZXIuCisgICAgICAg
IFRoaXMgZW5zdXJlcyB0aGF0IGV2ZW4gaWYgSlMgc2NyaXB0cyBkbyBub3Qga2VlcCB0cmFjayBv
ZiB0aGUgcmVhZGFibGUgc3RyZWFtLAorICAgICAgICB0aGUgcmVhZGFibGUgc3RyZWFtIHdpbGwg
bm90IGJlIGRpc3Bvc2VkIGFzIGxvbmcgYXMgdGhlIEpTIHNjcmlwdCBoYXMgYWNjZXNzIHRvIGl0
cyBjb250cm9sbGVyLgorCisgICAgICAgIFRlc3Q6IHN0cmVhbXMvcmVhZGFibGUtc3RyZWFtLWdj
Lmh0bWwKKworICAgICAgICAqIE1vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbUNvbnRyb2xs
ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlYWRhYmxlU3RyZWFtQ29udHJvbGxlcjo6UmVhZGFi
bGVTdHJlYW1Db250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWRhYmxlU3RyZWFtQ29u
dHJvbGxlcjo6cmVmKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWRhYmxlU3RyZWFtQ29udHJvbGxl
cjo6ZGVyZWYpOgorICAgICAgICAoV2ViQ29yZTo6UmVhZGFibGVTdHJlYW1Db250cm9sbGVyOjpj
cmVhdGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVhZGFibGVTdHJlYW1Db250cm9s
bGVyOjpzdHJlYW0pOiBEZWxldGVkLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTUmVhZGFibGVT
dHJlYW1Db250cm9sbGVyQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTUmVhZGFibGVT
dHJlYW1Db250cm9sbGVyOjpjbG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1JlYWRhYmxlU3Ry
ZWFtQ29udHJvbGxlcjo6ZW5xdWV1ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1JlYWRhYmxlU3Ry
ZWFtQ29udHJvbGxlcjo6ZXJyb3IpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1JlYWRhYmxlU3Ry
ZWFtSlNTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVhZGFibGVTdHJlYW1KU1NvdXJj
ZTo6flJlYWRhYmxlU3RyZWFtSlNTb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVhZGFibGVT
dHJlYW1KU1NvdXJjZTo6c3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVhZGFibGVKU1N0cmVh
bTo6anNDb250cm9sbGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9SZWFkYWJsZVN0cmVhbUpT
U291cmNlLmg6CisKIDIwMTUtMDUtMDQgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29t
PgogCiAgICAgICAgIFJlY29yZCB0aGUgcmVmZXJlbmNlIHRpbWUgd2hlbiBQZXJmb3JtYW5jZSBp
cyBjb25zdHJ1Y3RlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFt
cy9SZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3Ry
ZWFtcy9SZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIuaAppbmRleCA2ZmQ5ZDIxYzQzODhjOGQwNjJh
ZjJlYmRmMmMyNzVmYTU4N2VlOWM0Li5mMzQxNWMxMDgxYjFhOTU0NDA2MmJiM2FlMTQ2Mzk2OGFi
YWE1ODU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFi
bGVTdHJlYW1Db250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1z
L1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlci5oCkBAIC0zMiwzMiArMzIsMjUgQEAKIAogI2lmIEVO
QUJMRShTVFJFQU1TX0FQSSkKIAotI2luY2x1ZGUgPHd0Zi9SZWYuaD4KLSNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgorI2luY2x1ZGUgIlJlYWRhYmxlU3RyZWFtSlNTb3VyY2UuaCIKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBSZWFkYWJsZUpTU3RyZWFtOwotCiAvLyBUaGlzIGNs
YXNzIGlzIG9ubHkgdXNlZCBmb3IgSlMgc291cmNlIHJlYWRhYmxlIHN0cmVhbXMgdG8gYWxsb3cg
ZW5xdWV1aW5nLCBjbG9zaW5nIG9yIGVycm9yaW5nIGEgcmVhZGFibGUgc3RyZWFtLgogLy8gSXRz
IGRlZmluaXRpb24gaXMgYXQgaHR0cHM6Ly9zdHJlYW1zLnNwZWMud2hhdHdnLm9yZy8jcnMtY29u
dHJvbGxlci1jbGFzcy4KIC8vIE5vdGUgdGhhdCBpdHMgY29uc3RydWN0b3IgaXMgdGFraW5nIGEg
UmVhZGFibGVKU1N0cmVhbSBhcyBpdCBzaG91bGQgb25seSBiZSB1c2VkIGZvciBKUyBzb3VyY2Vz
LgotY2xhc3MgUmVhZGFibGVTdHJlYW1Db250cm9sbGVyIDogcHVibGljIFJlZkNvdW50ZWQ8UmVh
ZGFibGVTdHJlYW1Db250cm9sbGVyPiB7CitjbGFzcyBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIg
ewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8UmVhZGFibGVTdHJlYW1Db250cm9sbGVyPiBjcmVh
dGUoUmVhZGFibGVKU1N0cmVhbSYgc3RyZWFtKQotICAgIHsKLSAgICAgICAgYXV0byBjb250cm9s
bGVyID0gYWRvcHRSZWYoKm5ldyBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIoc3RyZWFtKSk7Ci0g
ICAgICAgIHJldHVybiBjb250cm9sbGVyOwotICAgIH0KLSAgICB+UmVhZGFibGVTdHJlYW1Db250
cm9sbGVyKCkgeyB9CisgICAgZXhwbGljaXQgUmVhZGFibGVTdHJlYW1Db250cm9sbGVyKFJlYWRh
YmxlSlNTdHJlYW0mIHN0cmVhbSkKKyAgICAgICAgOiBtX3N0cmVhbShzdHJlYW0pIHsgfQogCi0g
ICAgdm9pZCByZXNldFN0cmVhbSgpIHsgbV9zdHJlYW0gPSBudWxscHRyOyB9Ci0gICAgUmVhZGFi
bGVKU1N0cmVhbSogc3RyZWFtKCkgeyByZXR1cm4gbV9zdHJlYW07IH0KKyAgICBSZWFkYWJsZUpT
U3RyZWFtJiBzdHJlYW0oKSB7IHJldHVybiBtX3N0cmVhbTsgfQogCi1wcml2YXRlOgotICAgIFJl
YWRhYmxlU3RyZWFtQ29udHJvbGxlcihSZWFkYWJsZUpTU3RyZWFtJiBzdHJlYW0pIHsgbV9zdHJl
YW0gPSAmc3RyZWFtOyB9CisgICAgdm9pZCByZWYoKSB7IG1fc3RyZWFtLnJlZigpOyB9CisgICAg
dm9pZCBkZXJlZigpIHsgbV9zdHJlYW0uZGVyZWYoKTsgfQogCi0gICAgUmVhZGFibGVKU1N0cmVh
bSogbV9zdHJlYW07Citwcml2YXRlOgorICAgIFJlYWRhYmxlSlNTdHJlYW0mIG1fc3RyZWFtOwog
fTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNSZWFkYWJs
ZVN0cmVhbUNvbnRyb2xsZXJDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJDdXN0b20uY3BwCmluZGV4IDg0NmFjNzBkOTUzMzNk
ODYwODg5MzI5MmJlYzAwYWFmZDdlNzA1N2YuLmZiNWQ2ZjhkYmVkYTgwOTg5MjhiNmU1N2QyNWIw
OGEwNmQ0Mzk5ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUmVh
ZGFibGVTdHJlYW1Db250cm9sbGVyQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlckN1c3RvbS5jcHAKQEAgLTQzLDMxICs0
MywyNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEpTVmFsdWUgSlNSZWFkYWJsZVN0cmVhbUNv
bnRyb2xsZXI6OmNsb3NlKEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICBSZWFkYWJsZUpTU3RyZWFt
KiBzdHJlYW0gPSBpbXBsKCkuc3RyZWFtKCk7Ci0gICAgaWYgKCFzdHJlYW0pCi0gICAgICAgIHJl
dHVybiBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVj
LCBBU0NJSUxpdGVyYWwoIkNvbnRyb2xsZXIgaGFzIG5vIHJlYWRhYmxlc3RyZWFtIikpKTsKKyAg
ICBSZWFkYWJsZUpTU3RyZWFtJiBzdHJlYW0gPSBpbXBsKCkuc3RyZWFtKCk7CiAgICAgLy8gRklY
TUU6IEhhbmRsZSB0aGUgY2FzZSBvZiBkcmFpbmluZy4KLSAgICBpZiAoc3RyZWFtLT5pbnRlcm5h
bFN0YXRlKCkgIT0gUmVhZGFibGVTdHJlYW06OlN0YXRlOjpSZWFkYWJsZSkKKyAgICBpZiAoc3Ry
ZWFtLmludGVybmFsU3RhdGUoKSAhPSBSZWFkYWJsZVN0cmVhbTo6U3RhdGU6OlJlYWRhYmxlKQog
ICAgICAgICByZXR1cm4gZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVUeXBl
RXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJDYWxsaW5nIGNsb3NlIG9uIGEgc3RyZWFtIHdoaWNo
IGlzIG5vdCByZWFkYWJsZSIpKSk7Ci0gICAgc3RyZWFtLT5jaGFuZ2VTdGF0ZVRvQ2xvc2VkKCk7
CisgICAgc3RyZWFtLmNoYW5nZVN0YXRlVG9DbG9zZWQoKTsKICAgICByZXR1cm4ganNVbmRlZmlu
ZWQoKTsKIH0KIAotSlNWYWx1ZSBKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlcjo6ZW5xdWV1ZShF
eGVjU3RhdGUqIGV4ZWMpCitKU1ZhbHVlIEpTUmVhZGFibGVTdHJlYW1Db250cm9sbGVyOjplbnF1
ZXVlKEV4ZWNTdGF0ZSopCiB7Ci0gICAgUmVhZGFibGVKU1N0cmVhbSogc3RyZWFtID0gaW1wbCgp
LnN0cmVhbSgpOwotICAgIGlmICghc3RyZWFtKQotICAgICAgICByZXR1cm4gZXhlYy0+dm0oKS50
aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJD
b250cm9sbGVyIGhhcyBubyByZWFkYWJsZXN0cmVhbSIpKSk7CiAgICAgbm90SW1wbGVtZW50ZWQo
KTsKICAgICByZXR1cm4ganNCb29sZWFuKGZhbHNlKTsKIH0KIAogSlNWYWx1ZSBKU1JlYWRhYmxl
U3RyZWFtQ29udHJvbGxlcjo6ZXJyb3IoRXhlY1N0YXRlKiBleGVjKQogewotICAgIFJlYWRhYmxl
SlNTdHJlYW0qIHN0cmVhbSA9IGltcGwoKS5zdHJlYW0oKTsKLSAgICBpZiAoIXN0cmVhbSkKLSAg
ICAgICAgcmV0dXJuIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlVHlwZUVy
cm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQ29udHJvbGxlciBoYXMgbm8gcmVhZGFibGVzdHJlYW0i
KSkpOwotICAgIGlmIChzdHJlYW0tPmludGVybmFsU3RhdGUoKSAhPSBSZWFkYWJsZVN0cmVhbTo6
U3RhdGU6OlJlYWRhYmxlKQorICAgIFJlYWRhYmxlSlNTdHJlYW0mIHN0cmVhbSA9IGltcGwoKS5z
dHJlYW0oKTsKKyAgICBpZiAoc3RyZWFtLmludGVybmFsU3RhdGUoKSAhPSBSZWFkYWJsZVN0cmVh
bTo6U3RhdGU6OlJlYWRhYmxlKQogICAgICAgICByZXR1cm4gZXhlYy0+dm0oKS50aHJvd0V4Y2Vw
dGlvbihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJDYWxsaW5nIGVy
cm9yIG9uIGEgc3RyZWFtIHdoaWNoIGlzIG5vdCByZWFkYWJsZSIpKSk7CiAgICAgbm90SW1wbGVt
ZW50ZWQoKTsKICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxlU3RyZWFtSlNTb3VyY2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvUmVhZGFibGVTdHJlYW1KU1NvdXJjZS5jcHAKaW5kZXggMjIyMGVj
ZDEzMWNhMjI0MWZiMTEwOGEyYzU5ZDk5ZDI4YjRhOGMwZC4uOTRlOTEwYjcwN2MyZGZlNWZhN2Q3
MzQwNzk4NTdiNDVjZDE5ZDllYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvUmVhZGFibGVTdHJlYW1KU1NvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvUmVhZGFibGVTdHJlYW1KU1NvdXJjZS5jcHAKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNs
dWRlICJET01XcmFwcGVyV29ybGQuaCIKICNpbmNsdWRlICJKU0RPTVByb21pc2UuaCIKICNpbmNs
dWRlICJKU1JlYWRhYmxlU3RyZWFtLmgiCisjaW5jbHVkZSAiSlNSZWFkYWJsZVN0cmVhbUNvbnRy
b2xsZXIuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlIDxydW50aW1lL0Vycm9yLmg+CkBAIC05MCw4ICs5
MSw2IEBAIFJlYWRhYmxlU3RyZWFtSlNTb3VyY2U6OlJlYWRhYmxlU3RyZWFtSlNTb3VyY2UoSlND
OjpFeGVjU3RhdGUqIGV4ZWMpCiAKIFJlYWRhYmxlU3RyZWFtSlNTb3VyY2U6On5SZWFkYWJsZVN0
cmVhbUpTU291cmNlKCkKIHsKLSAgICBpZiAobV9jb250cm9sbGVyKQotICAgICAgICBtX2NvbnRy
b2xsZXIuZ2V0KCktPmltcGwoKS5yZXNldFN0cmVhbSgpOwogfQogCiBzdGF0aWMgdm9pZCBzdGFy
dFJlYWRhYmxlU3RyZWFtQXN5bmMoUmVhZGFibGVTdHJlYW0mIHJlYWRhYmxlU3RyZWFtKQpAQCAt
MTExLDkgKzExMCw2IEBAIHZvaWQgUmVhZGFibGVTdHJlYW1KU1NvdXJjZTo6c3RhcnQoRXhlY1N0
YXRlJiBleGVjLCBSZWFkYWJsZUpTU3RyZWFtJiByZWFkYWJsZVN0CiB7CiAgICAgSlNMb2NrSG9s
ZGVyIGxvY2soJmV4ZWMpOwogCi0gICAgUmVmPFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlcj4gY29u
dHJvbGxlciA9IFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlcjo6Y3JlYXRlKHJlYWRhYmxlU3RyZWFt
KTsKLSAgICBtX2NvbnRyb2xsZXIuc2V0KGV4ZWMudm0oKSwganNEeW5hbWljQ2FzdDxKU1JlYWRh
YmxlU3RyZWFtQ29udHJvbGxlcio+KHRvSlMoJmV4ZWMsIGdsb2JhbE9iamVjdCgpLCBjb250cm9s
bGVyKSkpOwotCiAgICAgSlNWYWx1ZSBzdGFydEZ1bmN0aW9uID0gZ2V0UHJvcGVydHlGcm9tT2Jq
ZWN0KCZleGVjLCBtX3NvdXJjZS5nZXQoKSwgInN0YXJ0Iik7CiAgICAgaWYgKCFzdGFydEZ1bmN0
aW9uLmlzRnVuY3Rpb24oKSkgewogICAgICAgICBpZiAoIXN0YXJ0RnVuY3Rpb24uaXNVbmRlZmlu
ZWQoKSkKQEAgLTEyNCw3ICsxMjAsNyBAQCB2b2lkIFJlYWRhYmxlU3RyZWFtSlNTb3VyY2U6OnN0
YXJ0KEV4ZWNTdGF0ZSYgZXhlYywgUmVhZGFibGVKU1N0cmVhbSYgcmVhZGFibGVTdAogICAgIH0K
IAogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3VtZW50czsKLSAgICBhcmd1bWVudHMuYXBw
ZW5kKG1fY29udHJvbGxlci5nZXQoKSk7CisgICAgYXJndW1lbnRzLmFwcGVuZChyZWFkYWJsZVN0
cmVhbS5qc0NvbnRyb2xsZXIoZXhlYywgZ2xvYmFsT2JqZWN0KCkpKTsKIAogICAgIEpTVmFsdWUg
ZXhjZXB0aW9uOwogICAgIGNhbGxGdW5jdGlvbigmZXhlYywgc3RhcnRGdW5jdGlvbiwgbV9zb3Vy
Y2UuZ2V0KCksIGFyZ3VtZW50cywgJmV4Y2VwdGlvbik7CkBAIC0xNjEsNiArMTU3LDEzIEBAIFJl
YWRhYmxlU3RyZWFtSlNTb3VyY2UmIFJlYWRhYmxlSlNTdHJlYW06OmpzU291cmNlKCkKICAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8UmVhZGFibGVTdHJlYW1KU1NvdXJjZSY+KHNvdXJjZSgpKTsKIH0K
IAorSlNWYWx1ZSBSZWFkYWJsZUpTU3RyZWFtOjpqc0NvbnRyb2xsZXIoRXhlY1N0YXRlJiBleGVj
LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQoreworICAgIGlmICghbV9jb250cm9s
bGVyKQorICAgICAgICBtX2NvbnRyb2xsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlYWRhYmxlU3Ry
ZWFtQ29udHJvbGxlcj4oKnRoaXMpOworICAgIHJldHVybiB0b0pTKCZleGVjLCBnbG9iYWxPYmpl
Y3QsIG1fY29udHJvbGxlci5nZXQoKSk7Cit9CisKIFJlZjxSZWFkYWJsZUpTU3RyZWFtOjpSZWFk
ZXI+IFJlYWRhYmxlSlNTdHJlYW06OlJlYWRlcjo6Y3JlYXRlKFJlYWRhYmxlSlNTdHJlYW0mIHN0
cmVhbSkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZWFkZXIoc3RyZWFtKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZVN0cmVhbUpTU291cmNl
LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZVN0cmVhbUpTU291cmNlLmgK
aW5kZXggMTMxZDQxMWI0OGZlMjBkZjNhZWM3OTcxM2VkMWIwMmY5MGM3ZWU4OC4uMzBlM2IxZGFi
NDk2ZWQ3YTlmNzZkYTcxNWQwYWRlZmY1ZmYzMDA2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvUmVhZGFibGVTdHJlYW1KU1NvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxlU3RyZWFtSlNTb3VyY2UuaApAQCAtMzIsNyArMzIsNiBA
QAogCiAjaWYgRU5BQkxFKFNUUkVBTVNfQVBJKQogCi0jaW5jbHVkZSAiSlNSZWFkYWJsZVN0cmVh
bUNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJSZWFkYWJsZVN0cmVhbS5oIgogI2luY2x1ZGUgIlJl
YWRhYmxlU3RyZWFtUmVhZGVyLmgiCiAjaW5jbHVkZSAiUmVhZGFibGVTdHJlYW1Tb3VyY2UuaCIK
QEAgLTQ0LDYgKzQzLDEwIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgSlNET01H
bG9iYWxPYmplY3Q7CitjbGFzcyBSZWFkYWJsZUpTU3RyZWFtOworY2xhc3MgUmVhZGFibGVTdHJl
YW1Db250cm9sbGVyOworCiBjbGFzcyBSZWFkYWJsZVN0cmVhbUpTU291cmNlOiBwdWJsaWMgUmVh
ZGFibGVTdHJlYW1Tb3VyY2UgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8UmVhZGFibGVTdHJl
YW1KU1NvdXJjZT4gY3JlYXRlKEpTQzo6RXhlY1N0YXRlKik7CkBAIC01NywxNSArNjAsMTUgQEAg
cHJpdmF0ZToKIAogICAgIC8vIE9iamVjdCBwYXNzZWQgdG8gY29uc3RydWN0b3IuCiAgICAgSlND
OjpTdHJvbmc8SlNDOjpKU09iamVjdD4gbV9zb3VyY2U7Ci0KLSAgICBKU0M6OlN0cm9uZzxKU1Jl
YWRhYmxlU3RyZWFtQ29udHJvbGxlcj4gbV9jb250cm9sbGVyOwogfTsKIAogY2xhc3MgUmVhZGFi
bGVKU1N0cmVhbTogcHVibGljIFJlYWRhYmxlU3RyZWFtIHsKIHB1YmxpYzoKICAgICBzdGF0aWMg
UmVmPFJlYWRhYmxlSlNTdHJlYW0+IGNyZWF0ZShKU0M6OkV4ZWNTdGF0ZSYsIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmKTsKICAgICB2aXJ0dWFsIFJlZjxSZWFkYWJsZVN0cmVhbVJlYWRlcj4gY3Jl
YXRlUmVhZGVyKCkgb3ZlcnJpZGU7CisKICAgICBSZWFkYWJsZVN0cmVhbUpTU291cmNlJiBqc1Nv
dXJjZSgpOworICAgIEpTQzo6SlNWYWx1ZSBqc0NvbnRyb2xsZXIoSlNDOjpFeGVjU3RhdGUmLCBK
U0RPTUdsb2JhbE9iamVjdCopOwogCiBwcml2YXRlOgogICAgIFJlYWRhYmxlSlNTdHJlYW0oU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYsIFJlZjxSZWFkYWJsZVN0cmVhbUpTU291cmNlPiYmKTsKQEAg
LTc2LDYgKzc5LDggQEAgcHJpdmF0ZToKICAgICBwcml2YXRlOgogICAgICAgICBleHBsaWNpdCBS
ZWFkZXIoUmVhZGFibGVKU1N0cmVhbSYpOwogICAgIH07CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
UmVhZGFibGVTdHJlYW1Db250cm9sbGVyPiBtX2NvbnRyb2xsZXI7CiB9OwogCiB2b2lkIHNldElu
dGVybmFsU2xvdFRvT2JqZWN0KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBKU0M6OlBy
aXZhdGVOYW1lJiwgSlNDOjpKU1ZhbHVlKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA5OWFiMzc0OWY4Y2U3YThkMGM0OTk4
NDg3YTVkYmFmNTRiNjkxZWY2Li5kNjYyOTNkOGIyNGI3NzJhNGY3OGM5MDc1ODNlMGNkODk0Mzk1
Yjc0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTUtMDUtMDQgIFhhYmllciBSb2RyaWd1ZXog
Q2FsdmFyICA8Y2FsdmFyaXNAaWdhbGlhLmNvbT4gYW5kIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm4u
ZmFibGV0QGNyZi5jYW5vbi5mcj4KKworICAgICAgICBzdHJlYW1zL3JlYWRhYmxlLXN0cmVhbS5o
dG1sIGlzIHZlcnkgZmxha3kKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE0NDQ1NQorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisg
ICAgICAgIE1vdmVkIGZsYWt5IHRlc3QgdG8gc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW0tZ2MuaHRt
bC4KKyAgICAgICAgVXBkYXRlZCBmbGFreSB0ZXN0IHRvIGNoZWNrIHRoYXQgdGhlIGNvbnRyb2xs
ZXIgbWV0aG9kcyB3b3JrIHdlbGwgZXZlbiBpZiByZWFkYWJsZSBzdHJlYW0gcmVmZXJlbmNlIGlz
IGxvc3QgYnkgc2NyaXB0LgorCisgICAgICAgICogc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW0tZXhw
ZWN0ZWQudHh0OgorICAgICAgICAqIHN0cmVhbXMvcmVhZGFibGUtc3RyZWFtLWdjLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW0tZ2MuaHRtbDog
QWRkZWQuCisgICAgICAgICogc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW0uaHRtbDoKKwogMjAxNS0w
NS0wNCAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBG
aXggYXNzZXJ0aW9ucyBpbiBXSzEgdGVzdHMgYWZ0ZXIgcjE4Mzc3Ny4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtLWV4cGVjdGVkLnR4dAppbmRleCBhNzkxMzA1ZTk3
MzIxZTc5OWNlMWM3YjA0ZWZiYWNjMGYxMDc4ZTFlLi43YTE2MTllZTMyMjhkNWEzZjRhNGJjMTJm
ZWNmZDIzMzEwMmM5ZmNmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlYWRhYmxl
LXN0cmVhbS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1z
dHJlYW0tZXhwZWN0ZWQudHh0CkBAIC0yLDUgKzIsNCBAQAogUEFTUyBSZWFkYWJsZVN0cmVhbSBj
YW4ndCBiZSBjb25zdHJ1Y3RlZCB3aXRoIGdhcmJhZ2UgCiBQQVNTIFJlYWRhYmxlU3RyZWFtIHN0
YXJ0IHNob3VsZCBiZSBjYWxsZWQgd2l0aCB0aGUgcHJvcGVyIHBhcmFtZXRlcnMgCiBQQVNTIFJl
YWRhYmxlU3RyZWFtIHNob3VsZCBiZSBhYmxlIHRvIGNhbGwgc3RhcnQgbWV0aG9kIHdpdGhpbiBw
cm90b3R5cGUgY2hhaW4gb2YgaXRzIHNvdXJjZSAKLVBBU1MgQSByZWFkYWJsZSBzdHJlYW0gY29u
dHJvbGxlciBtZXRob2RzIHNob3VsZCB0aHJvdyBpZiBpdHMgcmVhZGFibGVzdHJlYW0gaXMgY29s
bGVjdGVkIAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVh
bS1nYy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbS1n
Yy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTY3OTFhYTg4OWY5MDhjMjEwMDYwZDAzYmEyZDE4
MTM5OTQ1Yzk3NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVhZGFi
bGUtc3RyZWFtLWdjLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAKKworUEFTUyBSZWFkYWJs
ZSBzdHJlYW0gY29udHJvbGxlciBtZXRob2RzIHNob3VsZCBjb250aW51ZSB3b3JraW5nIHByb3Bl
cmx5IHdoZW4gc2NyaXB0cyBhcmUgbG9vc2luZyByZWZlcmVuY2UgdG8gdGhlIHJlYWRhYmxlIHN0
cmVhbSAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW0t
Z2MuaHRtbCBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtLWdjLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZjk1NzY4NGNlY2QwMDg3N2I2NWQ3OTg1MDdiNzE0MzVlNTM1MmVhYQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtLWdjLmh0bWwK
QEAgLTAsMCArMSwzNiBAQAorPCFET0NUWVBFIGh0bWw+Cis8c2NyaXB0IHNyYz0nLi4vcmVzb3Vy
Y2VzL3Rlc3RoYXJuZXNzLmpzJz48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPScuLi9yZXNvdXJjZXMv
dGVzdGhhcm5lc3NyZXBvcnQuanMnPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Jy4uL3Jlc291cmNl
cy9nYy5qcyc+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCitmdW5jdGlvbiBnYXJiYWdlQ29sbGVjdEFu
ZERvKHRhc2spCit7CisgICAgdmFyIHRpbWVvdXQgPSA1MDsKKyAgICBpZiAod2luZG93LkdDQ29u
dHJvbGxlcikKKyAgICAgICAgd2luZG93LkdDQ29udHJvbGxlci5jb2xsZWN0KCk7CisgICAgZWxz
ZSBpZiAod2luZG93LmdjKQorICAgICAgICB3aW5kb3cuZ2MoKTsKKyAgICBlbHNlCisgICAgICAg
IHRpbWVvdXQgPSA0MDA7CisgICAgc2V0VGltZW91dCh0YXNrLCB0aW1lb3V0KTsKK30KKwordDEg
PSBhc3luY190ZXN0KCdSZWFkYWJsZSBzdHJlYW0gY29udHJvbGxlciBtZXRob2RzIHNob3VsZCBj
b250aW51ZSB3b3JraW5nIHByb3Blcmx5IHdoZW4gc2NyaXB0cyBhcmUgbG9vc2luZyByZWZlcmVu
Y2UgdG8gdGhlIHJlYWRhYmxlIHN0cmVhbScpOwordDEuc3RlcChmdW5jdGlvbigpIHsKKyAgICB2
YXIgY29udHJvbGxlcjsKKyAgICBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgICAgICBzdGFydDog
ZnVuY3Rpb24oYykgeworICAgICAgICAgICAgY29udHJvbGxlciA9IGM7CisgICAgICAgIH0KKyAg
ICB9KTsKKworICAgIGdhcmJhZ2VDb2xsZWN0QW5kRG8odDEuc3RlcF9mdW5jKGZ1bmN0aW9uKCkg
eworICAgICAgICBjb250cm9sbGVyLmNsb3NlKCk7CisgICAgICAgIGFzc2VydF90aHJvd3MobmV3
IFR5cGVFcnJvcigpLCBmdW5jdGlvbigpIHsgY29udHJvbGxlci5jbG9zZSgpOyB9KTsKKyAgICAg
ICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksIGZ1bmN0aW9uKCkgeyBjb250cm9sbGVy
LmVycm9yKCk7IH0pOworICAgICAgICB0MS5kb25lKCk7CisgICAgfSkpOworfSk7CisKKzwvc2Ny
aXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW0uaHRt
bCBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtLmh0bWwKaW5kZXggZTVhZWZm
NzhmM2ZiY2Y3ZTkxNWU4OTQ2NDQ3OWVkMjhkMWVkMzlhZi4uNDRlODY1MTc5YThjM2Q2MGU2NjIx
MDUwMjdiMmFhM2JlMGNiYzA3MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWFk
YWJsZS1zdHJlYW0uaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVh
bS5odG1sCkBAIC0xLDcgKzEsNiBAQAogPCFET0NUWVBFIGh0bWw+CiA8c2NyaXB0IHNyYz0nLi4v
cmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzJz48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPScuLi9yZXNv
dXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMnPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Jy4uL3Jl
c291cmNlcy9nYy5qcyc+PC9zY3JpcHQ+CiA8c2NyaXB0PgogdGVzdChmdW5jdGlvbigpIHsKICAg
ICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgZnVuY3Rpb24oKSB7CkBAIC01OCwyMCAr
NTcsNCBAQCB0ZXN0KGZ1bmN0aW9uKCkKICAgICBhc3NlcnRfdHJ1ZShpc1N0YXJ0Q2FsbGVkKTsK
IH0sICdSZWFkYWJsZVN0cmVhbSBzaG91bGQgYmUgYWJsZSB0byBjYWxsIHN0YXJ0IG1ldGhvZCB3
aXRoaW4gcHJvdG90eXBlIGNoYWluIG9mIGl0cyBzb3VyY2UnKTsKIAotdDEgPSBhc3luY190ZXN0
KCdBIHJlYWRhYmxlIHN0cmVhbSBjb250cm9sbGVyIG1ldGhvZHMgc2hvdWxkIHRocm93IGlmIGl0
cyByZWFkYWJsZXN0cmVhbSBpcyBjb2xsZWN0ZWQnKTsKLXQxLnN0ZXAoZnVuY3Rpb24oKSB7Ci0g
ICAgdmFyIGNvbnRyb2xsZXI7Ci0gICAgbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICAgICAgc3Rh
cnQ6IGZ1bmN0aW9uKGMpIHsKLSAgICAgICAgICAgIGNvbnRyb2xsZXIgPSBjOwotICAgICAgICB9
Ci0gICAgfSk7Ci0gICAgc2V0VGltZW91dCh0MS5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7Ci0gICAg
ICAgIHdpbmRvdy5nYygpOwotICAgICAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwg
ZnVuY3Rpb24oKSB7IGNvbnRyb2xsZXIuY2xvc2UoKTsgfSk7Ci0gICAgICAgIGFzc2VydF90aHJv
d3MobmV3IFR5cGVFcnJvcigpLCBmdW5jdGlvbigpIHsgY29udHJvbGxlci5lcnJvcigpOyB9KTsK
LSAgICAgICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksIGZ1bmN0aW9uKCkgeyBjb250
cm9sbGVyLmVucXVldWUoKTsgfSk7Ci0gICAgICAgIHQxLmRvbmUoKTsKLSAgICB9KSwgMTApOwot
fSk7CiA8L3NjcmlwdD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>