<?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>146802</bug_id>
          
          <creation_ts>2015-07-09 13:16:27 -0700</creation_ts>
          <short_desc>[Streams API] Templating ReadableJSStream</short_desc>
          <delta_ts>2015-07-12 09:29:23 -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 Misc.</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="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>benjamin</cc>
    
    <cc>calvaris</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1108308</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-07-09 13:16:27 -0700</bug_when>
    <thetext>Templaing ReadableJSStream might allow easier support for teeing streams as well as more easily supporting ReadableByteStream.
The queue management in particular could be templatized.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1108336</commentid>
    <comment_count>1</comment_count>
      <attachid>256509</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-07-09 13:52:31 -0700</bug_when>
    <thetext>Created attachment 256509
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1108343</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-07-09 13:55:23 -0700</bug_when>
    <thetext>Attachment 256509 did not pass style-queue:


ERROR: Source/WebCore/Modules/streams/ReadableStream.h:145:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
Total errors found: 1 in 5 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1108634</commentid>
    <comment_count>3</comment_count>
      <attachid>256509</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-07-10 09:40:15 -0700</bug_when>
    <thetext>Comment on attachment 256509
Patch

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

Still really concerned about the use of JSC::Strong here. I am increasingly thinking this belongs in JavaScriptCore not WebCore, despite the comments about where Blink chose to put it.

&gt; Source/WebCore/Modules/streams/ReadableStream.h:141
&gt; +//   Subclasses should implement error storage, pulling and cancelling.

Normally we’d say “derived classes” rather than “subclasses” to match C++ terminology.

&gt; Source/WebCore/Modules/streams/ReadableStream.h:142
&gt; +template &lt;typename ChunkType&gt;

We typically omit out the space between template and &quot;&lt;&quot;.

&gt; Source/WebCore/Modules/streams/ReadableStream.h:143
&gt; +class ReadableEnqueuingStream : public ReadableStream {

Could/should put &quot;final&quot; here.

&gt; Source/WebCore/bindings/js/ReadableJSStream.h:60
&gt; +template &lt;&gt;

Again, normally no space after &quot;template&quot;. I also think this looks better on a single line, but not sure others agree.

&gt; Source/WebCore/bindings/js/ReadableJSStream.h:61
&gt; +class ReadableEnqueuingStream&lt;ReadableJSStreamValue&gt; : public ReadableStream {

Is it really helpful to have this be a class template specialization? Why not have this be a non-template class?

Related question; perhaps this should derive from ReadableEnqueuingStream&lt;ReadableJSStreamValue&gt; rather than from ReadableStream, for more code sharing. Then we’d want that class to not be final, but this one would be. I guess the problem with that is that it’s not OK to call the enqueueChunk feature from the base, so maybe not good to inherit that way. Too bad, though.

&gt; Source/WebCore/bindings/js/ReadableJSStream.h:63
&gt; +    double desiredSize() const  { return m_highWaterMark - m_totalQueueSize; }

Extra space here after &quot;const&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1109026</commentid>
    <comment_count>4</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-07-12 07:05:58 -0700</bug_when>
    <thetext>Thanks for the review.

(In reply to comment #3)
&gt; Comment on attachment 256509 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=256509&amp;action=review
&gt; 
&gt; Still really concerned about the use of JSC::Strong here. I am increasingly
&gt; thinking this belongs in JavaScriptCore not WebCore, despite the comments
&gt; about where Blink chose to put 

I agree, although I think we can find workarounds to remove JSC::Strong uses.

In addition to straightforward GC, putting ReadableStream into JSC would allow us to get closer to the spec.
We would probably use UnderlyingSource to tie WebCore (HTTP, MediaStream) with JSC streams.
Part of the implementation would be done in JS as well.

Having it in WebCore ensures that the pipe between specific WebCore producer and consumer can be made efficient (HTTP to MediaStream e.g.).
I am thinking that this would still be possible to do it even if streams are in JSC, but further validating this would be good.
It was also helping to have everything in WebCore so that the queuing is made efficient (no use of promises all the time).
But early optimization is usually bad so probably not a strong point.

&gt; 
&gt; &gt; Source/WebCore/Modules/streams/ReadableStream.h:141
&gt; &gt; +//   Subclasses should implement error storage, pulling and cancelling.
&gt; 
&gt; Normally we’d say “derived classes” rather than “subclasses” to match C++
&gt; terminology.

OK

&gt; 
&gt; &gt; Source/WebCore/Modules/streams/ReadableStream.h:142
&gt; &gt; +template &lt;typename ChunkType&gt;
&gt; 
&gt; We typically omit out the space between template and &quot;&lt;&quot;.

OK

&gt; 
&gt; &gt; Source/WebCore/Modules/streams/ReadableStream.h:143
&gt; &gt; +class ReadableEnqueuingStream : public ReadableStream {
&gt; 
&gt; Could/should put &quot;final&quot; here.
&gt; 
&gt; &gt; Source/WebCore/bindings/js/ReadableJSStream.h:60
&gt; &gt; +template &lt;&gt;
&gt; 
&gt; Again, normally no space after &quot;template&quot;. I also think this looks better on
&gt; a single line, but not sure others agree.

OK

&gt; 
&gt; &gt; Source/WebCore/bindings/js/ReadableJSStream.h:61
&gt; &gt; +class ReadableEnqueuingStream&lt;ReadableJSStreamValue&gt; : public ReadableStream {
&gt; 
&gt; Is it really helpful to have this be a class template specialization? Why
&gt; not have this be a non-template class?

That could be done too.

&gt; 
&gt; Related question; perhaps this should derive from
&gt; ReadableEnqueuingStream&lt;ReadableJSStreamValue&gt; rather than from
&gt; ReadableStream, for more code sharing. Then we’d want that class to not be
&gt; final, but this one would be. I guess the problem with that is that it’s not
&gt; OK to call the enqueueChunk feature from the base, so maybe not good to
&gt; inherit that way. Too bad, though.

We could add an incrementSize() method and specialize it for ReadableJSStreamValue.

&gt; 
&gt; &gt; Source/WebCore/bindings/js/ReadableJSStream.h:63
&gt; &gt; +    double desiredSize() const  { return m_highWaterMark - m_totalQueueSize; }
&gt; 
&gt; Extra space here after &quot;const&quot;.

OK</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1109027</commentid>
    <comment_count>5</comment_count>
      <attachid>256679</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-07-12 08:31:21 -0700</bug_when>
    <thetext>Created attachment 256679
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1109028</commentid>
    <comment_count>6</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-07-12 08:34:20 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Created attachment 256679 [details]
&gt; Patch for landing

I fixed the style issues and final.
I will further check improvements at my return in two weeks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1109030</commentid>
    <comment_count>7</comment_count>
      <attachid>256679</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-07-12 09:29:20 -0700</bug_when>
    <thetext>Comment on attachment 256679
Patch for landing

Clearing flags on attachment: 256679

Committed r186740: &lt;http://trac.webkit.org/changeset/186740&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1109031</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-07-12 09:29:23 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>256509</attachid>
            <date>2015-07-09 13:52:31 -0700</date>
            <delta_ts>2015-07-12 08:31:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-146802-20150709225118.patch</filename>
            <type>text/plain</type>
            <size>11267</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg2NDQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzQzY2Q0N2MwMDk2ZGU1
MzFmNDFhZTc3OTczZDA5NjE3YzFjYjc3Ny4uODY2OTMxZmE1NmQ3MWIwZjBiNmQ1ODE1YjhmYjRl
MzU5OTdmMjA3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDE1LTA3LTA5ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24uZnI+CisKKyAgICAgICAgW1N0cmVh
bXMgQVBJXSBUZW1wbGF0aW5nIFJlYWRhYmxlSlNTdHJlYW0KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NjgwMgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEludHJvZHVjaW5nIFJlYWRhYmxlU3RyZWFtOjpj
bGVhclZhbHVlcyB0byBjbGVhciBxdWV1ZWQgdmFsdWVzIHdoZW4gY2FuY2VsbGluZyBhbmQgZ29p
bmcgaW50byBlcnJvciBzdGF0ZS4KKworICAgICAgICBJbnRyb2R1Y2luZyBSZWFkYWJsZUVucXVl
dWluZ1N0cmVhbSB0byBoYW5kbGUgdGhlIHN0cmVhbSBxdWV1ZSwgYXMgYSBjbGFzcyB0ZW1wbGF0
ZS4KKyAgICAgICAgU3BlY2lhbGl6ZWQgUmVhZGFibGVFbnF1ZXVpbmdTdHJlYW0gZm9yIHRoZSBw
dXJwb3NlIG9mIFJlYWRhYmxlSlNTdHJlYW0gKHN0b3JhZ2Ugb2YgSlNWYWx1ZSB3aXRoIHZhcmlh
YmxlIHNpemUpLgorCisgICAgICAgIFVwZGF0ZWQgc29tZSBzdGF0aWMgZnVuY3Rpb25zIHRvIGFj
Y2VwdCBhIFJlYWRhYmxlU3RyZWFtIGluIGxpZXUgb2YgdGhlIG1vcmUgc3BlY2lhbGl6ZWQgUmVh
ZGFibGVKU1N0cmVhbS4KKworICAgICAgICBDb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisg
ICAgICAgICogTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlYWRhYmxlU3RyZWFtOjpjaGFuZ2VTdGF0ZVRvRXJyb3JlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZWFkYWJsZVN0cmVhbTo6Y2FuY2VsTm9DaGVjayk6CisgICAgICAgICogTW9kdWxl
cy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtLmg6CisgICAgICAgIChXZWJDb3JlOjpSZWFkYWJsZUVu
cXVldWluZ1N0cmVhbTo6UmVhZGFibGVFbnF1ZXVpbmdTdHJlYW0pOgorICAgICAgICAoV2ViQ29y
ZTo6UmVhZGFibGVFbnF1ZXVpbmdTdHJlYW06OmVucXVldWVDaHVuayk6CisgICAgICAgIChXZWJD
b3JlOjpSZWFkYWJsZUVucXVldWluZ1N0cmVhbTxDaHVua1R5cGU+OjpyZWFkKToKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9SZWFkYWJsZUpTU3RyZWFtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
YWRhYmxlRW5xdWV1aW5nU3RyZWFtPFJlYWRhYmxlSlNTdHJlYW1WYWx1ZT46OnJlYWQpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVhZGFibGVFbnF1ZXVpbmdTdHJlYW08UmVhZGFibGVKU1N0cmVhbVZh
bHVlPjo6ZW5xdWV1ZUNodW5rKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVB1bGxSZXN1bHRG
dWxmaWxsZWRGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVDYW5jZWxSZXN1bHRG
dWxmaWxsZWRGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZWFkYWJsZUpTU3RyZWFtOjpS
ZWFkYWJsZUpTU3RyZWFtKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWRhYmxlSlNTdHJlYW06OmVu
cXVldWUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1JlYWRhYmxlSlNTdHJlYW0uaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlYWRhYmxlSlNTdHJlYW1WYWx1ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlYWRhYmxlRW5xdWV1aW5nU3RyZWFtPFJlYWRhYmxlSlNTdHJlYW1WYWx1ZT46OmRl
c2lyZWRTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWRhYmxlRW5xdWV1aW5nU3RyZWFtPFJl
YWRhYmxlSlNTdHJlYW1WYWx1ZT46OlJlYWRhYmxlRW5xdWV1aW5nU3RyZWFtKToKKwogMjAxNS0w
Ny0wNyAgWW91ZW5uIEZhYmxldCAgPHlvdWVubi5mYWJsZXRAY3JmLmNhbm9uLmZyPgogCiAgICAg
ICAgIFtTdHJlYW1zIEFQSV0gUmVtb3ZlIFJlYWRhYmxlU3RyZWFtUmVhZGVyLnJlYWQoKSBjdXN0
b20gYmluZGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1Jl
YWRhYmxlU3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJs
ZVN0cmVhbS5jcHAKaW5kZXggNTU1ZDAyZDQyYTNlYWExOGQzMzYxMTc1M2M5NmMxM2JiMzJmMjQ3
Mi4uNjlhZjVhMWIwMGJlMWExODIzMGIxNmE4NTJiYzM4Nzg5ODA0YTdmZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW0uY3BwCkBAIC0xMDUs
NiArMTA1LDggQEAgdm9pZCBSZWFkYWJsZVN0cmVhbTo6Y2hhbmdlU3RhdGVUb0Vycm9yZWQoKQog
ewogICAgIGlmIChtX3N0YXRlICE9IFN0YXRlOjpSZWFkYWJsZSkKICAgICAgICAgcmV0dXJuOwor
CisgICAgY2xlYXJWYWx1ZXMoKTsKICAgICBtX3N0YXRlID0gU3RhdGU6OkVycm9yZWQ7CiAKICAg
ICBKU0M6OkpTVmFsdWUgZXJyb3IgPSB0aGlzLT5lcnJvcigpOwpAQCAtMTk3LDYgKzE5OSw4IEBA
IHZvaWQgUmVhZGFibGVTdHJlYW06OmNhbmNlbE5vQ2hlY2soSlNDOjpKU1ZhbHVlIHJlYXNvbiwg
Q2FuY2VsUHJvbWlzZSYmIHByb21pc2UpCiAgICAgfQogICAgIEFTU0VSVChtX3N0YXRlID09IFN0
YXRlOjpSZWFkYWJsZSk7CiAKKyAgICBjbGVhclZhbHVlcygpOworCiAgICAgbV9jYW5jZWxQcm9t
aXNlID0gV1RGOjptb3ZlKHByb21pc2UpOwogCiAgICAgY2xvc2UoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbS5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtLmgKaW5kZXggMjk1NTA0MTZjNzdm
Yzg5MDY1YWE0MDk4OTNiMDM0MjBmZjYxMWY3ZS4uNGI4ZmQyODc1NTcxODIyZGYzMDJiODE1NDM4
ZDEzMmExMTAzZDAzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1z
L1JlYWRhYmxlU3RyZWFtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1Jl
YWRhYmxlU3RyZWFtLmgKQEAgLTMzLDcgKzMzLDkgQEAKICNpZiBFTkFCTEUoU1RSRUFNU19BUEkp
CiAKICNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKKyNpbmNsdWRlICJET01SZXF1ZXN0U3Rh
dGUuaCIKICNpbmNsdWRlICJKU0RPTVByb21pc2UuaCIKKyNpbmNsdWRlICJTY3JpcHRTdGF0ZS5o
IgogI2luY2x1ZGUgIlNjcmlwdFdyYXBwYWJsZS5oIgogI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAj
aW5jbHVkZSA8d3RmL0RlcXVlLmg+CkBAIC0xMTMsNiArMTE1LDcgQEAgcHJpdmF0ZToKICAgICB2
b2lkIGNsZWFyQ2FsbGJhY2tzKCk7CiAgICAgdm9pZCBjbG9zZSgpOwogCisgICAgdmlydHVhbCB2
b2lkIGNsZWFyVmFsdWVzKCkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBoYXNFbm91Z2hWYWx1ZXMo
KSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIGhhc1ZhbHVlKCkgY29uc3QgPSAwOwogICAg
IHZpcnR1YWwgSlNDOjpKU1ZhbHVlIHJlYWQoKSA9IDA7CkBAIC0xMzQsNiArMTM3LDMxIEBAIHBy
aXZhdGU6CiAgICAgU3RhdGUgbV9zdGF0ZSB7IFN0YXRlOjpSZWFkYWJsZSB9OwogfTsKIAorLy8g
VGhpcyBjbGFzcyBtYW5hZ2VzIHRoZSBxdWV1ZSBhbmQga25vd3Mgd2hldGhlciB0aGVyZSBpcyBz
dWZmaWNpZW50IGRhdGEgaW4gaXQuCisvLyAgIFN1YmNsYXNzZXMgc2hvdWxkIGltcGxlbWVudCBl
cnJvciBzdG9yYWdlLCBwdWxsaW5nIGFuZCBjYW5jZWxsaW5nLgordGVtcGxhdGUgPHR5cGVuYW1l
IENodW5rVHlwZT4KK2NsYXNzIFJlYWRhYmxlRW5xdWV1aW5nU3RyZWFtIDogcHVibGljIFJlYWRh
YmxlU3RyZWFtIHsKK3Byb3RlY3RlZDoKKyAgICBleHBsaWNpdCBSZWFkYWJsZUVucXVldWluZ1N0
cmVhbShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSA6IFJlYWRhYmxlU3RyZWFtKGNv
bnRleHQpIHsgfQorCisgICAgdm9pZCBlbnF1ZXVlQ2h1bmsoQ2h1bmtUeXBlJiYgY2h1bmspIHsg
bV9xdWV1ZS5hcHBlbmQoc3RkOjpmb3J3YXJkKGNodW5rKSk7IH0KKworcHJpdmF0ZToKKyAgICB2
aXJ0dWFsIHZvaWQgY2xlYXJWYWx1ZXMoKSBvdmVycmlkZSB7IG1fcXVldWUuY2xlYXIoKTsgfQor
ICAgIHZpcnR1YWwgYm9vbCBoYXNFbm91Z2hWYWx1ZXMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBtX3F1ZXVlLnNpemUoKTsgfQorICAgIHZpcnR1YWwgYm9vbCBoYXNWYWx1ZSgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIG1fcXVldWUuc2l6ZSgpOyB9CisgICAgdmlydHVhbCBKU0M6OkpTVmFs
dWUgcmVhZCgpIG92ZXJyaWRlOworCisgICAgRGVxdWU8Q2h1bmtUeXBlPiBtX3F1ZXVlOworfTsK
KwordGVtcGxhdGU8dHlwZW5hbWUgQ2h1bmtUeXBlPgoraW5saW5lIEpTQzo6SlNWYWx1ZSBSZWFk
YWJsZUVucXVldWluZ1N0cmVhbTxDaHVua1R5cGU+OjpyZWFkKCkKK3sKKyAgICBET01SZXF1ZXN0
U3RhdGUgc3RhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKyAgICByZXR1cm4gdG9KUyhz
dGF0ZS5leGVjKCksIHRvSlNET01HbG9iYWxPYmplY3Qoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
LCBzdGF0ZS5leGVjKCkpLCBtX3F1ZXVlLnJlYWQoKSk7Cit9CisKIH0KIAogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZUpTU3RyZWFtLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxlSlNTdHJlYW0uY3BwCmluZGV4IGMw
MDE5NzFmYTVkZGYwMjY0ODQ2YjEzY2E1ZjhlZTg1YzE4ZjUxOTguLjc5YjY2NmMxZDJhMTNhNTI3
ZDdiYzc4YTYxOTk5NTU1NjRkY2U0MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1JlYWRhYmxlSlNTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1JlYWRhYmxlSlNTdHJlYW0uY3BwCkBAIC0xMTksNiArMTE5LDE5IEBAIHN0YXRpYyBpbmxp
bmUgdm9pZCBzdGFydFJlYWRhYmxlU3RyZWFtQXN5bmMoUmVhZGFibGVTdHJlYW0mIHN0cmVhbSkK
ICAgICB9KTsKIH0KIAorSlNDOjpKU1ZhbHVlIFJlYWRhYmxlRW5xdWV1aW5nU3RyZWFtPFJlYWRh
YmxlSlNTdHJlYW1WYWx1ZT46OnJlYWQoKQoreworICAgIFJlYWRhYmxlSlNTdHJlYW1WYWx1ZSBj
aHVuayA9IG1fcXVldWUudGFrZUZpcnN0KCk7CisgICAgbV90b3RhbFF1ZXVlU2l6ZSAtPSBjaHVu
ay5zaXplOworICAgIHJldHVybiBjaHVuay52YWx1ZS5nZXQoKTsKK30KKwordm9pZCBSZWFkYWJs
ZUVucXVldWluZ1N0cmVhbTxSZWFkYWJsZUpTU3RyZWFtVmFsdWU+OjplbnF1ZXVlQ2h1bmsoUmVh
ZGFibGVKU1N0cmVhbVZhbHVlJiYgY2h1bmspCit7CisgICAgbV90b3RhbFF1ZXVlU2l6ZSArPSBj
aHVuay5zaXplOworICAgIG1fcXVldWUuYXBwZW5kKFdURjo6bW92ZShjaHVuaykpOworfQorCiB2
b2lkIFJlYWRhYmxlSlNTdHJlYW06OmRvU3RhcnQoRXhlY1N0YXRlJiBleGVjKQogewogICAgIEpT
TG9ja0hvbGRlciBsb2NrKCZleGVjKTsKQEAgLTEzNiw5ICsxNDksOSBAQCB2b2lkIFJlYWRhYmxl
SlNTdHJlYW06OmRvU3RhcnQoRXhlY1N0YXRlJiBleGVjKQogICAgIHRoZW5Qcm9taXNlKGV4ZWMs
IHByb21pc2UsIGNyZWF0ZVN0YXJ0UmVzdWx0RnVsZmlsbGVkRnVuY3Rpb24oZXhlYywgKnRoaXMp
LCBtX2Vycm9yRnVuY3Rpb24uZ2V0KCkpOwogfQogCi1zdGF0aWMgaW5saW5lIEpTRnVuY3Rpb24q
IGNyZWF0ZVB1bGxSZXN1bHRGdWxmaWxsZWRGdW5jdGlvbihFeGVjU3RhdGUmIGV4ZWMsIFJlYWRh
YmxlSlNTdHJlYW0mIHN0cmVhbSkKK3N0YXRpYyBpbmxpbmUgSlNGdW5jdGlvbiogY3JlYXRlUHVs
bFJlc3VsdEZ1bGZpbGxlZEZ1bmN0aW9uKEV4ZWNTdGF0ZSYgZXhlYywgUmVhZGFibGVTdHJlYW0m
IHN0cmVhbSkKIHsKLSAgICBSZWZQdHI8UmVhZGFibGVKU1N0cmVhbT4gcHJvdGVjdGVkU3RyZWFt
ID0gJnN0cmVhbTsKKyAgICBSZWZQdHI8UmVhZGFibGVTdHJlYW0+IHByb3RlY3RlZFN0cmVhbSA9
ICZzdHJlYW07CiAgICAgcmV0dXJuIEpTRnVuY3Rpb246OmNyZWF0ZShleGVjLnZtKCksIGV4ZWMu
Y2FsbGVlKCktPmdsb2JhbE9iamVjdCgpLCAwLCBTdHJpbmcoKSwgW3Byb3RlY3RlZFN0cmVhbV0o
RXhlY1N0YXRlKikgewogICAgICAgICBwcm90ZWN0ZWRTdHJlYW0tPmZpbmlzaFB1bGxpbmcoKTsK
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTE2NCw5
ICsxNzcsOSBAQCBib29sIFJlYWRhYmxlSlNTdHJlYW06OmRvUHVsbCgpCiAgICAgcmV0dXJuICFw
cm9taXNlOwogfQogCi1zdGF0aWMgSlNGdW5jdGlvbiogY3JlYXRlQ2FuY2VsUmVzdWx0RnVsZmls
bGVkRnVuY3Rpb24oRXhlY1N0YXRlJiBleGVjLCBSZWFkYWJsZUpTU3RyZWFtJiBzdHJlYW0pCitz
dGF0aWMgSlNGdW5jdGlvbiogY3JlYXRlQ2FuY2VsUmVzdWx0RnVsZmlsbGVkRnVuY3Rpb24oRXhl
Y1N0YXRlJiBleGVjLCBSZWFkYWJsZVN0cmVhbSYgc3RyZWFtKQogewotICAgIFJlZlB0cjxSZWFk
YWJsZUpTU3RyZWFtPiBwcm90ZWN0ZWRTdHJlYW0gPSAmc3RyZWFtOworICAgIFJlZlB0cjxSZWFk
YWJsZVN0cmVhbT4gcHJvdGVjdGVkU3RyZWFtID0gJnN0cmVhbTsKICAgICByZXR1cm4gSlNGdW5j
dGlvbjo6Y3JlYXRlKGV4ZWMudm0oKSwgZXhlYy5jYWxsZWUoKS0+Z2xvYmFsT2JqZWN0KCksIDEs
IFN0cmluZygpLCBbcHJvdGVjdGVkU3RyZWFtXShFeGVjU3RhdGUqKSB7CiAgICAgICAgIHByb3Rl
Y3RlZFN0cmVhbS0+bm90aWZ5Q2FuY2VsU3VjY2VlZGVkKCk7CiAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC0yNDcsOCArMjYwLDcgQEAgUmVmUHRyPFJl
YWRhYmxlSlNTdHJlYW0+IFJlYWRhYmxlSlNTdHJlYW06OmNyZWF0ZShKU0M6OkV4ZWNTdGF0ZSYg
c3RhdGUsIEpTQzo6SlMKIH0KIAogUmVhZGFibGVKU1N0cmVhbTo6UmVhZGFibGVKU1N0cmVhbShF
eGVjU3RhdGUmIHN0YXRlLCBKU09iamVjdCogc291cmNlLCBkb3VibGUgaGlnaFdhdGVyTWFyaywg
SlNGdW5jdGlvbiogc2l6ZUZ1bmN0aW9uKQotICAgIDogUmVhZGFibGVTdHJlYW0oKnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRGcm9tRXhlY1N0YXRlKCZzdGF0ZSkpCi0gICAgLCBtX2hpZ2hXYXRlck1h
cmsoaGlnaFdhdGVyTWFyaykKKyAgICA6IFJlYWRhYmxlRW5xdWV1aW5nU3RyZWFtPFJlYWRhYmxl
SlNTdHJlYW1WYWx1ZT4oKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHRGcm9tRXhlY1N0YXRlKCZzdGF0
ZSksIGhpZ2hXYXRlck1hcmspCiB7CiAgICAgbV9zb3VyY2Uuc2V0KHN0YXRlLnZtKCksIHNvdXJj
ZSk7CiAgICAgLy8gV2UgZG8gbm90IHRha2UgYSBSZWYgdG8gdGhlIHN0cmVhbSBhcyB0aGlzIHdv
dWxkIGNhdXNlIGEgUmVmIGN5Y2xlLgpAQCAtMzAyLDIxICszMTQsNiBAQCB2b2lkIFJlYWRhYmxl
SlNTdHJlYW06OnN0b3JlRXJyb3IoSlNDOjpFeGVjU3RhdGUmIGV4ZWMsIEpTVmFsdWUgZXJyb3Ip
CiAgICAgY2hhbmdlU3RhdGVUb0Vycm9yZWQoKTsKIH0KIAotYm9vbCBSZWFkYWJsZUpTU3RyZWFt
OjpoYXNWYWx1ZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fY2h1bmtRdWV1ZS5zaXplKCk7Ci19
Ci0KLUpTVmFsdWUgUmVhZGFibGVKU1N0cmVhbTo6cmVhZCgpCi17Ci0gICAgQVNTRVJUKGhhc1Zh
bHVlKCkpOwotCi0gICAgQ2h1bmsgY2h1bmsgPSBtX2NodW5rUXVldWUudGFrZUZpcnN0KCk7Ci0g
ICAgbV90b3RhbFF1ZXVlU2l6ZSAtPSBjaHVuay5zaXplOwotCi0gICAgcmV0dXJuIGNodW5rLnZh
bHVlLmdldCgpOwotfQotCiB2b2lkIFJlYWRhYmxlSlNTdHJlYW06OmVucXVldWUoSlNDOjpFeGVj
U3RhdGUmIHN0YXRlLCBKU0M6OkpTVmFsdWUgY2h1bmspCiB7CiAgICAgaWYgKGlzRXJyb3JlZCgp
KSB7CkBAIC0zMzksOCArMzM2LDcgQEAgdm9pZCBSZWFkYWJsZUpTU3RyZWFtOjplbnF1ZXVlKEpT
Qzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpKU1ZhbHVlIGNodW5rKQogICAgIGlmIChzdGF0ZS5o
YWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9jaHVua1F1ZXVlLmFwcGVu
ZCh7IEpTQzo6U3Ryb25nPEpTQzo6VW5rbm93bj4oc3RhdGUudm0oKSwgY2h1bmspLCBzaXplIH0p
OwotICAgIG1fdG90YWxRdWV1ZVNpemUgKz0gc2l6ZTsKKyAgICBlbnF1ZXVlQ2h1bmsoeyBKU0M6
OlN0cm9uZzxKU0M6OlVua25vd24+KHN0YXRlLnZtKCksIGNodW5rKSwgc2l6ZSB9KTsKIAogICAg
IHB1bGwoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRh
YmxlSlNTdHJlYW0uaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxlSlNTdHJl
YW0uaAppbmRleCBjODU4YWIzODdlMDkzYTQ1OWFjNGE4MTkwOWZmODJhNDFkZDkxYjUzLi4yZjZh
MWRjOGY5NzBkMjQ4YTA5ZTRiZTMzZGEwZjk0ZmQxYzRlMjdlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZUpTU3RyZWFtLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvUmVhZGFibGVKU1N0cmVhbS5oCkBAIC01Miw3ICs1MiwzNSBAQCBjbGFz
cyBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXI7CiAKIHR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7
CiAKLWNsYXNzIFJlYWRhYmxlSlNTdHJlYW06IHB1YmxpYyBSZWFkYWJsZVN0cmVhbSB7CitzdHJ1
Y3QgUmVhZGFibGVKU1N0cmVhbVZhbHVlIHsKKyAgICBKU0M6OlN0cm9uZzxKU0M6OlVua25vd24+
IHZhbHVlOworICAgIGRvdWJsZSBzaXplOworfTsKKwordGVtcGxhdGUgPD4KK2NsYXNzIFJlYWRh
YmxlRW5xdWV1aW5nU3RyZWFtPFJlYWRhYmxlSlNTdHJlYW1WYWx1ZT4gOiBwdWJsaWMgUmVhZGFi
bGVTdHJlYW0geworcHVibGljOgorICAgIGRvdWJsZSBkZXNpcmVkU2l6ZSgpIGNvbnN0ICB7IHJl
dHVybiBtX2hpZ2hXYXRlck1hcmsgLSBtX3RvdGFsUXVldWVTaXplOyB9CisKK3Byb3RlY3RlZDoK
KyAgICBSZWFkYWJsZUVucXVldWluZ1N0cmVhbShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250
ZXh0LCBkb3VibGUgaGlnaFdhdGVyTWFyaykKKyAgICAgICAgOiBSZWFkYWJsZVN0cmVhbShjb250
ZXh0KQorICAgICAgICAsIG1faGlnaFdhdGVyTWFyayhoaWdoV2F0ZXJNYXJrKSB7IH0KKworICAg
IHZvaWQgZW5xdWV1ZUNodW5rKFJlYWRhYmxlSlNTdHJlYW1WYWx1ZSYmKTsKKworcHJpdmF0ZToK
KyAgICB2aXJ0dWFsIHZvaWQgY2xlYXJWYWx1ZXMoKSBvdmVycmlkZSB7IG1fcXVldWUuY2xlYXIo
KTsgfQorICAgIHZpcnR1YWwgYm9vbCBoYXNFbm91Z2hWYWx1ZXMoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBkZXNpcmVkU2l6ZSgpIDw9IDA7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaGFzVmFsdWUo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3F1ZXVlLnNpemUoKTsgfQorICAgIHZpcnR1YWwg
SlNDOjpKU1ZhbHVlIHJlYWQoKSBvdmVycmlkZTsKKworICAgIERlcXVlPFJlYWRhYmxlSlNTdHJl
YW1WYWx1ZT4gbV9xdWV1ZTsKKyAgICBkb3VibGUgbV90b3RhbFF1ZXVlU2l6ZSB7IDAgfTsKKyAg
ICBkb3VibGUgbV9oaWdoV2F0ZXJNYXJrOworfTsKKworY2xhc3MgUmVhZGFibGVKU1N0cmVhbSBm
aW5hbCA6IHB1YmxpYyBSZWFkYWJsZUVucXVldWluZ1N0cmVhbTxSZWFkYWJsZUpTU3RyZWFtVmFs
dWU+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmUHRyPFJlYWRhYmxlSlNTdHJlYW0+IGNyZWF0
ZShKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSwgY29uc3QgRGljdGlvbmFyeSYpOwogCkBA
IC02NSw4ICs5Myw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGVucXVldWUoSlNDOjpFeGVjU3RhdGUm
LCBKU0M6OkpTVmFsdWUpOwogICAgIHZvaWQgZXJyb3IoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpT
VmFsdWUsIEV4Y2VwdGlvbkNvZGUmKTsKIAotICAgIGRvdWJsZSBkZXNpcmVkU2l6ZSgpIGNvbnN0
IHsgcmV0dXJuIG1faGlnaFdhdGVyTWFyayAtIG1fdG90YWxRdWV1ZVNpemU7IH0KLQogcHJpdmF0
ZToKICAgICBSZWFkYWJsZUpTU3RyZWFtKEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU09iamVjdCos
IGRvdWJsZSwgSlNDOjpKU0Z1bmN0aW9uKik7CiAKQEAgLTc1LDkgKzEwMSw2IEBAIHByaXZhdGU6
CiAgICAgSlNDOjpKU1Byb21pc2UqIGludm9rZShKU0M6OkV4ZWNTdGF0ZSYsIGNvbnN0IGNoYXIq
LCBKU0M6OkpTVmFsdWUgcGFyYW1ldGVyKTsKICAgICB2b2lkIHN0b3JlRXhjZXB0aW9uKEpTQzo6
RXhlY1N0YXRlJik7CiAKLSAgICB2aXJ0dWFsIGJvb2wgaGFzRW5vdWdoVmFsdWVzKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gZGVzaXJlZFNpemUoKSA8PSAwOyB9Ci0gICAgdmlydHVhbCBib29s
IGhhc1ZhbHVlKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBKU0M6OkpTVmFsdWUgcmVh
ZCgpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBkb1B1bGwoKSBvdmVycmlkZTsKICAgICB2
aXJ0dWFsIGJvb2wgZG9DYW5jZWwoSlNDOjpKU1ZhbHVlKSBvdmVycmlkZTsKIApAQCAtODksMTYg
KzExMiw4IEBAIHByaXZhdGU6CiAgICAgLy8gRklYTUU6IHdlIHNob3VsZCBjb25zaWRlciBub3Qg
dXNpbmcgSlNDOjpTdHJvbmcsIHNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTQ2Mjc4CiAgICAgSlNDOjpTdHJvbmc8SlNDOjpVbmtub3duPiBtX2Vycm9yOwogICAg
IEpTQzo6U3Ryb25nPEpTQzo6SlNGdW5jdGlvbj4gbV9lcnJvckZ1bmN0aW9uOwotICAgIEpTQzo6
U3Ryb25nPEpTQzo6SlNPYmplY3Q+IG1fc291cmNlOwotCi0gICAgc3RydWN0IENodW5rIHsKLSAg
ICAgICAgSlNDOjpTdHJvbmc8SlNDOjpVbmtub3duPiB2YWx1ZTsKLSAgICAgICAgZG91YmxlIHNp
emU7Ci0gICAgfTsKLSAgICBEZXF1ZTxDaHVuaz4gbV9jaHVua1F1ZXVlOwogCi0gICAgZG91Ymxl
IG1fdG90YWxRdWV1ZVNpemUgeyAwIH07Ci0gICAgZG91YmxlIG1faGlnaFdhdGVyTWFyazsKKyAg
ICBKU0M6OlN0cm9uZzxKU0M6OkpTT2JqZWN0PiBtX3NvdXJjZTsKICAgICBKU0M6OlN0cm9uZzxK
U0M6OkpTRnVuY3Rpb24+IG1fc2l6ZUZ1bmN0aW9uOwogfTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>256679</attachid>
            <date>2015-07-12 08:31:21 -0700</date>
            <delta_ts>2015-07-12 09:29:20 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-146802-20150712173016.patch</filename>
            <type>text/plain</type>
            <size>11216</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg2NzI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTEzMjFmYmM1NmJkZWQw
YjhiZjRmZjk3NGM2NjFlNzY3ZTU1MjI4Ni4uNDEzYmUyMTU5MTcyOTY3NTc5YjljNmVmOTY1MmM3
OWJlMzBhOTQzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDE1LTA3LTEyICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24uZnI+CisKKyAgICAgICAgW1N0cmVh
bXMgQVBJXSBUZW1wbGF0aW5nIFJlYWRhYmxlSlNTdHJlYW0KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NjgwMgorCisgICAgICAgIFJldmlld2VkIGJ5
IERhcmluIEFkbGVyLgorCisgICAgICAgIEludHJvZHVjaW5nIFJlYWRhYmxlU3RyZWFtOjpjbGVh
clZhbHVlcyB0byBjbGVhciBxdWV1ZWQgdmFsdWVzIHdoZW4gY2FuY2VsbGluZyBhbmQgZ29pbmcg
aW50byBlcnJvciBzdGF0ZS4KKworICAgICAgICBJbnRyb2R1Y2luZyBSZWFkYWJsZUVucXVldWlu
Z1N0cmVhbSB0byBoYW5kbGUgdGhlIHN0cmVhbSBxdWV1ZSwgYXMgYSBjbGFzcyB0ZW1wbGF0ZS4K
KyAgICAgICAgU3BlY2lhbGl6ZWQgUmVhZGFibGVFbnF1ZXVpbmdTdHJlYW0gZm9yIHRoZSBwdXJw
b3NlIG9mIFJlYWRhYmxlSlNTdHJlYW0gKHN0b3JhZ2Ugb2YgSlNWYWx1ZSB3aXRoIHZhcmlhYmxl
IHNpemUpLgorCisgICAgICAgIFVwZGF0ZWQgc29tZSBzdGF0aWMgZnVuY3Rpb25zIHRvIGFjY2Vw
dCBhIFJlYWRhYmxlU3RyZWFtIGluIGxpZXUgb2YgdGhlIG1vcmUgc3BlY2lhbGl6ZWQgUmVhZGFi
bGVKU1N0cmVhbS4KKworICAgICAgICBDb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAg
ICAgICogTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlYWRhYmxlU3RyZWFtOjpjaGFuZ2VTdGF0ZVRvRXJyb3JlZCk6CisgICAgICAgIChXZWJD
b3JlOjpSZWFkYWJsZVN0cmVhbTo6Y2FuY2VsTm9DaGVjayk6CisgICAgICAgICogTW9kdWxlcy9z
dHJlYW1zL1JlYWRhYmxlU3RyZWFtLmg6CisgICAgICAgIChXZWJDb3JlOjpSZWFkYWJsZUVucXVl
dWluZ1N0cmVhbTo6UmVhZGFibGVFbnF1ZXVpbmdTdHJlYW0pOgorICAgICAgICAoV2ViQ29yZTo6
UmVhZGFibGVFbnF1ZXVpbmdTdHJlYW06OmVucXVldWVDaHVuayk6CisgICAgICAgIChXZWJDb3Jl
OjpSZWFkYWJsZUVucXVldWluZ1N0cmVhbTxDaHVua1R5cGU+OjpyZWFkKToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9SZWFkYWJsZUpTU3RyZWFtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlYWRh
YmxlRW5xdWV1aW5nU3RyZWFtPFJlYWRhYmxlSlNTdHJlYW1WYWx1ZT46OnJlYWQpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVhZGFibGVFbnF1ZXVpbmdTdHJlYW08UmVhZGFibGVKU1N0cmVhbVZhbHVl
Pjo6ZW5xdWV1ZUNodW5rKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVB1bGxSZXN1bHRGdWxm
aWxsZWRGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVDYW5jZWxSZXN1bHRGdWxm
aWxsZWRGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZWFkYWJsZUpTU3RyZWFtOjpSZWFk
YWJsZUpTU3RyZWFtKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWRhYmxlSlNTdHJlYW06OmVucXVl
dWUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1JlYWRhYmxlSlNTdHJlYW0uaDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlYWRhYmxlSlNTdHJlYW1WYWx1ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlYWRhYmxlRW5xdWV1aW5nU3RyZWFtPFJlYWRhYmxlSlNTdHJlYW1WYWx1ZT46OmRlc2ly
ZWRTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWRhYmxlRW5xdWV1aW5nU3RyZWFtPFJlYWRh
YmxlSlNTdHJlYW1WYWx1ZT46OlJlYWRhYmxlRW5xdWV1aW5nU3RyZWFtKToKKwogMjAxNS0wNy0x
MSAgQmFiYWsgU2hhZmllaSAgPGJzaGFmaWVpQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmll
d2VkIGJ1aWxkIGZpeC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFt
cy9SZWFkYWJsZVN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVh
ZGFibGVTdHJlYW0uY3BwCmluZGV4IDU1NWQwMmQ0MmEzZWFhMThkMzM2MTE3NTNjOTZjMTNiYjMy
ZjI0NzIuLjY5YWY1YTFiMDBiZTFhMTgyMzBiMTZhODUyYmMzODc4OTgwNGE3ZmYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtLmNwcApAQCAt
MTA1LDYgKzEwNSw4IEBAIHZvaWQgUmVhZGFibGVTdHJlYW06OmNoYW5nZVN0YXRlVG9FcnJvcmVk
KCkKIHsKICAgICBpZiAobV9zdGF0ZSAhPSBTdGF0ZTo6UmVhZGFibGUpCiAgICAgICAgIHJldHVy
bjsKKworICAgIGNsZWFyVmFsdWVzKCk7CiAgICAgbV9zdGF0ZSA9IFN0YXRlOjpFcnJvcmVkOwog
CiAgICAgSlNDOjpKU1ZhbHVlIGVycm9yID0gdGhpcy0+ZXJyb3IoKTsKQEAgLTE5Nyw2ICsxOTks
OCBAQCB2b2lkIFJlYWRhYmxlU3RyZWFtOjpjYW5jZWxOb0NoZWNrKEpTQzo6SlNWYWx1ZSByZWFz
b24sIENhbmNlbFByb21pc2UmJiBwcm9taXNlKQogICAgIH0KICAgICBBU1NFUlQobV9zdGF0ZSA9
PSBTdGF0ZTo6UmVhZGFibGUpOwogCisgICAgY2xlYXJWYWx1ZXMoKTsKKwogICAgIG1fY2FuY2Vs
UHJvbWlzZSA9IFdURjo6bW92ZShwcm9taXNlKTsKIAogICAgIGNsb3NlKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW0uaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbS5oCmluZGV4IDI5NTUwNDE2
Yzc3ZmM4OTA2NWFhNDA5ODkzYjAzNDIwZmY2MTFmN2UuLjRlNzdiYTU4OWVlMDIxMDU3MTE5NWQ5
YTNhNWE3Y2JhMzUwZDE2NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3Ry
ZWFtcy9SZWFkYWJsZVN0cmVhbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFt
cy9SZWFkYWJsZVN0cmVhbS5oCkBAIC0zMyw3ICszMyw5IEBACiAjaWYgRU5BQkxFKFNUUkVBTVNf
QVBJKQogCiAjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCisjaW5jbHVkZSAiRE9NUmVxdWVz
dFN0YXRlLmgiCiAjaW5jbHVkZSAiSlNET01Qcm9taXNlLmgiCisjaW5jbHVkZSAiU2NyaXB0U3Rh
dGUuaCIKICNpbmNsdWRlICJTY3JpcHRXcmFwcGFibGUuaCIKICNpbmNsdWRlIDxmdW5jdGlvbmFs
PgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgpAQCAtMTEzLDYgKzExNSw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBjbGVhckNhbGxiYWNrcygpOwogICAgIHZvaWQgY2xvc2UoKTsKIAorICAgIHZpcnR1
YWwgdm9pZCBjbGVhclZhbHVlcygpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaGFzRW5vdWdoVmFs
dWVzKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBoYXNWYWx1ZSgpIGNvbnN0ID0gMDsK
ICAgICB2aXJ0dWFsIEpTQzo6SlNWYWx1ZSByZWFkKCkgPSAwOwpAQCAtMTM0LDYgKzEzNywzMSBA
QCBwcml2YXRlOgogICAgIFN0YXRlIG1fc3RhdGUgeyBTdGF0ZTo6UmVhZGFibGUgfTsKIH07CiAK
Ky8vIFRoaXMgY2xhc3MgbWFuYWdlcyB0aGUgcXVldWUgYW5kIGtub3dzIHdoZXRoZXIgdGhlcmUg
aXMgc3VmZmljaWVudCBkYXRhIGluIGl0LgorLy8gICBTdWJjbGFzc2VzIHNob3VsZCBpbXBsZW1l
bnQgZXJyb3Igc3RvcmFnZSwgcHVsbGluZyBhbmQgY2FuY2VsbGluZy4KK3RlbXBsYXRlPHR5cGVu
YW1lIENodW5rVHlwZT4KK2NsYXNzIFJlYWRhYmxlRW5xdWV1aW5nU3RyZWFtIGZpbmFsIDogcHVi
bGljIFJlYWRhYmxlU3RyZWFtIHsKK3Byb3RlY3RlZDoKKyAgICBleHBsaWNpdCBSZWFkYWJsZUVu
cXVldWluZ1N0cmVhbShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSA6IFJlYWRhYmxl
U3RyZWFtKGNvbnRleHQpIHsgfQorCisgICAgdm9pZCBlbnF1ZXVlQ2h1bmsoQ2h1bmtUeXBlJiYg
Y2h1bmspIHsgbV9xdWV1ZS5hcHBlbmQoc3RkOjpmb3J3YXJkKGNodW5rKSk7IH0KKworcHJpdmF0
ZToKKyAgICB2aXJ0dWFsIHZvaWQgY2xlYXJWYWx1ZXMoKSBvdmVycmlkZSB7IG1fcXVldWUuY2xl
YXIoKTsgfQorICAgIHZpcnR1YWwgYm9vbCBoYXNFbm91Z2hWYWx1ZXMoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBtX3F1ZXVlLnNpemUoKTsgfQorICAgIHZpcnR1YWwgYm9vbCBoYXNWYWx1ZSgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fcXVldWUuc2l6ZSgpOyB9CisgICAgdmlydHVhbCBK
U0M6OkpTVmFsdWUgcmVhZCgpIG92ZXJyaWRlOworCisgICAgRGVxdWU8Q2h1bmtUeXBlPiBtX3F1
ZXVlOworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgQ2h1bmtUeXBlPgoraW5saW5lIEpTQzo6SlNW
YWx1ZSBSZWFkYWJsZUVucXVldWluZ1N0cmVhbTxDaHVua1R5cGU+OjpyZWFkKCkKK3sKKyAgICBE
T01SZXF1ZXN0U3RhdGUgc3RhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKyAgICByZXR1
cm4gdG9KUyhzdGF0ZS5leGVjKCksIHRvSlNET01HbG9iYWxPYmplY3Qoc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpLCBzdGF0ZS5leGVjKCkpLCBtX3F1ZXVlLnJlYWQoKSk7Cit9CisKIH0KIAogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZUpTU3Ry
ZWFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxlSlNTdHJlYW0uY3Bw
CmluZGV4IGMwMDE5NzFmYTVkZGYwMjY0ODQ2YjEzY2E1ZjhlZTg1YzE4ZjUxOTguLjc5YjY2NmMx
ZDJhMTNhNTI3ZDdiYzc4YTYxOTk5NTU1NjRkY2U0MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxlSlNTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1JlYWRhYmxlSlNTdHJlYW0uY3BwCkBAIC0xMTksNiArMTE5LDE5IEBAIHN0
YXRpYyBpbmxpbmUgdm9pZCBzdGFydFJlYWRhYmxlU3RyZWFtQXN5bmMoUmVhZGFibGVTdHJlYW0m
IHN0cmVhbSkKICAgICB9KTsKIH0KIAorSlNDOjpKU1ZhbHVlIFJlYWRhYmxlRW5xdWV1aW5nU3Ry
ZWFtPFJlYWRhYmxlSlNTdHJlYW1WYWx1ZT46OnJlYWQoKQoreworICAgIFJlYWRhYmxlSlNTdHJl
YW1WYWx1ZSBjaHVuayA9IG1fcXVldWUudGFrZUZpcnN0KCk7CisgICAgbV90b3RhbFF1ZXVlU2l6
ZSAtPSBjaHVuay5zaXplOworICAgIHJldHVybiBjaHVuay52YWx1ZS5nZXQoKTsKK30KKwordm9p
ZCBSZWFkYWJsZUVucXVldWluZ1N0cmVhbTxSZWFkYWJsZUpTU3RyZWFtVmFsdWU+OjplbnF1ZXVl
Q2h1bmsoUmVhZGFibGVKU1N0cmVhbVZhbHVlJiYgY2h1bmspCit7CisgICAgbV90b3RhbFF1ZXVl
U2l6ZSArPSBjaHVuay5zaXplOworICAgIG1fcXVldWUuYXBwZW5kKFdURjo6bW92ZShjaHVuaykp
OworfQorCiB2b2lkIFJlYWRhYmxlSlNTdHJlYW06OmRvU3RhcnQoRXhlY1N0YXRlJiBleGVjKQog
ewogICAgIEpTTG9ja0hvbGRlciBsb2NrKCZleGVjKTsKQEAgLTEzNiw5ICsxNDksOSBAQCB2b2lk
IFJlYWRhYmxlSlNTdHJlYW06OmRvU3RhcnQoRXhlY1N0YXRlJiBleGVjKQogICAgIHRoZW5Qcm9t
aXNlKGV4ZWMsIHByb21pc2UsIGNyZWF0ZVN0YXJ0UmVzdWx0RnVsZmlsbGVkRnVuY3Rpb24oZXhl
YywgKnRoaXMpLCBtX2Vycm9yRnVuY3Rpb24uZ2V0KCkpOwogfQogCi1zdGF0aWMgaW5saW5lIEpT
RnVuY3Rpb24qIGNyZWF0ZVB1bGxSZXN1bHRGdWxmaWxsZWRGdW5jdGlvbihFeGVjU3RhdGUmIGV4
ZWMsIFJlYWRhYmxlSlNTdHJlYW0mIHN0cmVhbSkKK3N0YXRpYyBpbmxpbmUgSlNGdW5jdGlvbiog
Y3JlYXRlUHVsbFJlc3VsdEZ1bGZpbGxlZEZ1bmN0aW9uKEV4ZWNTdGF0ZSYgZXhlYywgUmVhZGFi
bGVTdHJlYW0mIHN0cmVhbSkKIHsKLSAgICBSZWZQdHI8UmVhZGFibGVKU1N0cmVhbT4gcHJvdGVj
dGVkU3RyZWFtID0gJnN0cmVhbTsKKyAgICBSZWZQdHI8UmVhZGFibGVTdHJlYW0+IHByb3RlY3Rl
ZFN0cmVhbSA9ICZzdHJlYW07CiAgICAgcmV0dXJuIEpTRnVuY3Rpb246OmNyZWF0ZShleGVjLnZt
KCksIGV4ZWMuY2FsbGVlKCktPmdsb2JhbE9iamVjdCgpLCAwLCBTdHJpbmcoKSwgW3Byb3RlY3Rl
ZFN0cmVhbV0oRXhlY1N0YXRlKikgewogICAgICAgICBwcm90ZWN0ZWRTdHJlYW0tPmZpbmlzaFB1
bGxpbmcoKTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
QEAgLTE2NCw5ICsxNzcsOSBAQCBib29sIFJlYWRhYmxlSlNTdHJlYW06OmRvUHVsbCgpCiAgICAg
cmV0dXJuICFwcm9taXNlOwogfQogCi1zdGF0aWMgSlNGdW5jdGlvbiogY3JlYXRlQ2FuY2VsUmVz
dWx0RnVsZmlsbGVkRnVuY3Rpb24oRXhlY1N0YXRlJiBleGVjLCBSZWFkYWJsZUpTU3RyZWFtJiBz
dHJlYW0pCitzdGF0aWMgSlNGdW5jdGlvbiogY3JlYXRlQ2FuY2VsUmVzdWx0RnVsZmlsbGVkRnVu
Y3Rpb24oRXhlY1N0YXRlJiBleGVjLCBSZWFkYWJsZVN0cmVhbSYgc3RyZWFtKQogewotICAgIFJl
ZlB0cjxSZWFkYWJsZUpTU3RyZWFtPiBwcm90ZWN0ZWRTdHJlYW0gPSAmc3RyZWFtOworICAgIFJl
ZlB0cjxSZWFkYWJsZVN0cmVhbT4gcHJvdGVjdGVkU3RyZWFtID0gJnN0cmVhbTsKICAgICByZXR1
cm4gSlNGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMudm0oKSwgZXhlYy5jYWxsZWUoKS0+Z2xvYmFsT2Jq
ZWN0KCksIDEsIFN0cmluZygpLCBbcHJvdGVjdGVkU3RyZWFtXShFeGVjU3RhdGUqKSB7CiAgICAg
ICAgIHByb3RlY3RlZFN0cmVhbS0+bm90aWZ5Q2FuY2VsU3VjY2VlZGVkKCk7CiAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC0yNDcsOCArMjYwLDcgQEAg
UmVmUHRyPFJlYWRhYmxlSlNTdHJlYW0+IFJlYWRhYmxlSlNTdHJlYW06OmNyZWF0ZShKU0M6OkV4
ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6SlMKIH0KIAogUmVhZGFibGVKU1N0cmVhbTo6UmVhZGFibGVK
U1N0cmVhbShFeGVjU3RhdGUmIHN0YXRlLCBKU09iamVjdCogc291cmNlLCBkb3VibGUgaGlnaFdh
dGVyTWFyaywgSlNGdW5jdGlvbiogc2l6ZUZ1bmN0aW9uKQotICAgIDogUmVhZGFibGVTdHJlYW0o
KnNjcmlwdEV4ZWN1dGlvbkNvbnRleHRGcm9tRXhlY1N0YXRlKCZzdGF0ZSkpCi0gICAgLCBtX2hp
Z2hXYXRlck1hcmsoaGlnaFdhdGVyTWFyaykKKyAgICA6IFJlYWRhYmxlRW5xdWV1aW5nU3RyZWFt
PFJlYWRhYmxlSlNTdHJlYW1WYWx1ZT4oKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHRGcm9tRXhlY1N0
YXRlKCZzdGF0ZSksIGhpZ2hXYXRlck1hcmspCiB7CiAgICAgbV9zb3VyY2Uuc2V0KHN0YXRlLnZt
KCksIHNvdXJjZSk7CiAgICAgLy8gV2UgZG8gbm90IHRha2UgYSBSZWYgdG8gdGhlIHN0cmVhbSBh
cyB0aGlzIHdvdWxkIGNhdXNlIGEgUmVmIGN5Y2xlLgpAQCAtMzAyLDIxICszMTQsNiBAQCB2b2lk
IFJlYWRhYmxlSlNTdHJlYW06OnN0b3JlRXJyb3IoSlNDOjpFeGVjU3RhdGUmIGV4ZWMsIEpTVmFs
dWUgZXJyb3IpCiAgICAgY2hhbmdlU3RhdGVUb0Vycm9yZWQoKTsKIH0KIAotYm9vbCBSZWFkYWJs
ZUpTU3RyZWFtOjpoYXNWYWx1ZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fY2h1bmtRdWV1ZS5z
aXplKCk7Ci19Ci0KLUpTVmFsdWUgUmVhZGFibGVKU1N0cmVhbTo6cmVhZCgpCi17Ci0gICAgQVNT
RVJUKGhhc1ZhbHVlKCkpOwotCi0gICAgQ2h1bmsgY2h1bmsgPSBtX2NodW5rUXVldWUudGFrZUZp
cnN0KCk7Ci0gICAgbV90b3RhbFF1ZXVlU2l6ZSAtPSBjaHVuay5zaXplOwotCi0gICAgcmV0dXJu
IGNodW5rLnZhbHVlLmdldCgpOwotfQotCiB2b2lkIFJlYWRhYmxlSlNTdHJlYW06OmVucXVldWUo
SlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpTVmFsdWUgY2h1bmspCiB7CiAgICAgaWYgKGlz
RXJyb3JlZCgpKSB7CkBAIC0zMzksOCArMzM2LDcgQEAgdm9pZCBSZWFkYWJsZUpTU3RyZWFtOjpl
bnF1ZXVlKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpKU1ZhbHVlIGNodW5rKQogICAgIGlm
IChzdGF0ZS5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9jaHVua1F1
ZXVlLmFwcGVuZCh7IEpTQzo6U3Ryb25nPEpTQzo6VW5rbm93bj4oc3RhdGUudm0oKSwgY2h1bmsp
LCBzaXplIH0pOwotICAgIG1fdG90YWxRdWV1ZVNpemUgKz0gc2l6ZTsKKyAgICBlbnF1ZXVlQ2h1
bmsoeyBKU0M6OlN0cm9uZzxKU0M6OlVua25vd24+KHN0YXRlLnZtKCksIGNodW5rKSwgc2l6ZSB9
KTsKIAogICAgIHB1bGwoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1JlYWRhYmxlSlNTdHJlYW0uaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRh
YmxlSlNTdHJlYW0uaAppbmRleCBjODU4YWIzODdlMDkzYTQ1OWFjNGE4MTkwOWZmODJhNDFkZDkx
YjUzLi44M2RjZjY5ZmUyZDIyYzgwZmExMDQzYTk2ZmQzZjMwM2I4MWMxYzU0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZUpTU3RyZWFtLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUmVhZGFibGVKU1N0cmVhbS5oCkBAIC01Miw3ICs1Miwz
NCBAQCBjbGFzcyBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXI7CiAKIHR5cGVkZWYgaW50IEV4Y2Vw
dGlvbkNvZGU7CiAKLWNsYXNzIFJlYWRhYmxlSlNTdHJlYW06IHB1YmxpYyBSZWFkYWJsZVN0cmVh
bSB7CitzdHJ1Y3QgUmVhZGFibGVKU1N0cmVhbVZhbHVlIHsKKyAgICBKU0M6OlN0cm9uZzxKU0M6
OlVua25vd24+IHZhbHVlOworICAgIGRvdWJsZSBzaXplOworfTsKKwordGVtcGxhdGU8PiBjbGFz
cyBSZWFkYWJsZUVucXVldWluZ1N0cmVhbTxSZWFkYWJsZUpTU3RyZWFtVmFsdWU+IDogcHVibGlj
IFJlYWRhYmxlU3RyZWFtIHsKK3B1YmxpYzoKKyAgICBkb3VibGUgZGVzaXJlZFNpemUoKSBjb25z
dCB7IHJldHVybiBtX2hpZ2hXYXRlck1hcmsgLSBtX3RvdGFsUXVldWVTaXplOyB9CisKK3Byb3Rl
Y3RlZDoKKyAgICBSZWFkYWJsZUVucXVldWluZ1N0cmVhbShTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjb250ZXh0LCBkb3VibGUgaGlnaFdhdGVyTWFyaykKKyAgICAgICAgOiBSZWFkYWJsZVN0cmVh
bShjb250ZXh0KQorICAgICAgICAsIG1faGlnaFdhdGVyTWFyayhoaWdoV2F0ZXJNYXJrKSB7IH0K
KworICAgIHZvaWQgZW5xdWV1ZUNodW5rKFJlYWRhYmxlSlNTdHJlYW1WYWx1ZSYmKTsKKworcHJp
dmF0ZToKKyAgICB2aXJ0dWFsIHZvaWQgY2xlYXJWYWx1ZXMoKSBvdmVycmlkZSB7IG1fcXVldWUu
Y2xlYXIoKTsgfQorICAgIHZpcnR1YWwgYm9vbCBoYXNFbm91Z2hWYWx1ZXMoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBkZXNpcmVkU2l6ZSgpIDw9IDA7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaGFz
VmFsdWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3F1ZXVlLnNpemUoKTsgfQorICAgIHZp
cnR1YWwgSlNDOjpKU1ZhbHVlIHJlYWQoKSBvdmVycmlkZTsKKworICAgIERlcXVlPFJlYWRhYmxl
SlNTdHJlYW1WYWx1ZT4gbV9xdWV1ZTsKKyAgICBkb3VibGUgbV90b3RhbFF1ZXVlU2l6ZSB7IDAg
fTsKKyAgICBkb3VibGUgbV9oaWdoV2F0ZXJNYXJrOworfTsKKworY2xhc3MgUmVhZGFibGVKU1N0
cmVhbSBmaW5hbCA6IHB1YmxpYyBSZWFkYWJsZUVucXVldWluZ1N0cmVhbTxSZWFkYWJsZUpTU3Ry
ZWFtVmFsdWU+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmUHRyPFJlYWRhYmxlSlNTdHJlYW0+
IGNyZWF0ZShKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSwgY29uc3QgRGljdGlvbmFyeSYp
OwogCkBAIC02NSw4ICs5Miw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGVucXVldWUoSlNDOjpFeGVj
U3RhdGUmLCBKU0M6OkpTVmFsdWUpOwogICAgIHZvaWQgZXJyb3IoSlNDOjpFeGVjU3RhdGUmLCBK
U0M6OkpTVmFsdWUsIEV4Y2VwdGlvbkNvZGUmKTsKIAotICAgIGRvdWJsZSBkZXNpcmVkU2l6ZSgp
IGNvbnN0IHsgcmV0dXJuIG1faGlnaFdhdGVyTWFyayAtIG1fdG90YWxRdWV1ZVNpemU7IH0KLQog
cHJpdmF0ZToKICAgICBSZWFkYWJsZUpTU3RyZWFtKEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU09i
amVjdCosIGRvdWJsZSwgSlNDOjpKU0Z1bmN0aW9uKik7CiAKQEAgLTc1LDkgKzEwMCw2IEBAIHBy
aXZhdGU6CiAgICAgSlNDOjpKU1Byb21pc2UqIGludm9rZShKU0M6OkV4ZWNTdGF0ZSYsIGNvbnN0
IGNoYXIqLCBKU0M6OkpTVmFsdWUgcGFyYW1ldGVyKTsKICAgICB2b2lkIHN0b3JlRXhjZXB0aW9u
KEpTQzo6RXhlY1N0YXRlJik7CiAKLSAgICB2aXJ0dWFsIGJvb2wgaGFzRW5vdWdoVmFsdWVzKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZGVzaXJlZFNpemUoKSA8PSAwOyB9Ci0gICAgdmlydHVh
bCBib29sIGhhc1ZhbHVlKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBKU0M6OkpTVmFs
dWUgcmVhZCgpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBkb1B1bGwoKSBvdmVycmlkZTsK
ICAgICB2aXJ0dWFsIGJvb2wgZG9DYW5jZWwoSlNDOjpKU1ZhbHVlKSBvdmVycmlkZTsKIApAQCAt
ODksMTYgKzExMSw4IEBAIHByaXZhdGU6CiAgICAgLy8gRklYTUU6IHdlIHNob3VsZCBjb25zaWRl
ciBub3QgdXNpbmcgSlNDOjpTdHJvbmcsIHNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTQ2Mjc4CiAgICAgSlNDOjpTdHJvbmc8SlNDOjpVbmtub3duPiBtX2Vycm9y
OwogICAgIEpTQzo6U3Ryb25nPEpTQzo6SlNGdW5jdGlvbj4gbV9lcnJvckZ1bmN0aW9uOwotICAg
IEpTQzo6U3Ryb25nPEpTQzo6SlNPYmplY3Q+IG1fc291cmNlOwotCi0gICAgc3RydWN0IENodW5r
IHsKLSAgICAgICAgSlNDOjpTdHJvbmc8SlNDOjpVbmtub3duPiB2YWx1ZTsKLSAgICAgICAgZG91
YmxlIHNpemU7Ci0gICAgfTsKLSAgICBEZXF1ZTxDaHVuaz4gbV9jaHVua1F1ZXVlOwogCi0gICAg
ZG91YmxlIG1fdG90YWxRdWV1ZVNpemUgeyAwIH07Ci0gICAgZG91YmxlIG1faGlnaFdhdGVyTWFy
azsKKyAgICBKU0M6OlN0cm9uZzxKU0M6OkpTT2JqZWN0PiBtX3NvdXJjZTsKICAgICBKU0M6OlN0
cm9uZzxKU0M6OkpTRnVuY3Rpb24+IG1fc2l6ZUZ1bmN0aW9uOwogfTsKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>