<?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>209119</bug_id>
          
          <creation_ts>2020-03-14 21:32:30 -0700</creation_ts>
          <short_desc>[GStreamer][MSE] Youtube &apos;live stream&apos;/H264 URLs fail to play, VP8/9 URLs play OK</short_desc>
          <delta_ts>2020-04-22 04:36:33 -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>WebKitGTK</component>
          <version>Other</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=206873</see_also>
          <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="Chris">cbillington</reporter>
          <assigned_to name="Philippe Normand">pnormand</assigned_to>
          <cc>aboya</cc>
    
    <cc>bugs-noreply</cc>
    
    <cc>calvaris</cc>
    
    <cc>cbillington</cc>
    
    <cc>cgarcia</cc>
    
    <cc>eocanha</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gustavo</cc>
    
    <cc>jer.noble</cc>
    
    <cc>menard</cc>
    
    <cc>philipj</cc>
    
    <cc>pnormand</cc>
    
    <cc>sergio</cc>
    
    <cc>vjaquez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1630136</commentid>
    <comment_count>0</comment_count>
    <who name="Chris">cbillington</who>
    <bug_when>2020-03-14 21:32:30 -0700</bug_when>
    <thetext>Arch Linux x86_64
Since updating to Gnome 3.36/Epiphany(Web) 3.36  Epiphany doesn&apos;t play H264 Youtube videos. 
Eventually YT message appears &apos;If playback doesn&apos;t begin shortly, try restarting your device&apos;

These are usually &apos;live streams&apos;, since they are not often streamed using the YT-preferred VP8/9 codec.

An example is https://www.youtube.com/watch?v=9Auq9mYxFEE (Sky UK News live stream): 

&apos;Stats for nerds&apos; show the video codec as &apos;avc1.4d401f(136). Other live streams using this codec also fail. 

Tested using Epiphany/Gnome Web and also Webkit2gtk MiniBrowser (with default User Agent string) on two different systems with different Intel graphics carss.

Previously these kind of YT URLs worked with Epiphany 3.34/Webkit2gtk 2.26, though with noticeable video decoding delay relative to audio.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1630137</commentid>
    <comment_count>1</comment_count>
    <who name="Chris">cbillington</who>
    <bug_when>2020-03-14 21:35:49 -0700</bug_when>
    <thetext>$ youtube-dl -F https://www.youtube.com/watch?v=9Auq9mYxFEE
[youtube] 9Auq9mYxFEE: Downloading webpage
[youtube] 9Auq9mYxFEE: Downloading m3u8 information
[youtube] 9Auq9mYxFEE: Downloading MPD manifest
[info] Available formats for 9Auq9mYxFEE:
format code  extension  resolution note
91           mp4        256x144    HLS  197k , avc1.42c00b, 30.0fps, mp4a.40.5@ 48k
92           mp4        426x240    HLS  338k , avc1.4d4015, 30.0fps, mp4a.40.5@ 48k
93           mp4        640x360    HLS  829k , avc1.4d401e, 30.0fps, mp4a.40.2@128k
94           mp4        854x480    HLS 1380k , avc1.4d401f, 30.0fps, mp4a.40.2@128k
95           mp4        1280x720   HLS 2593k , avc1.4d401f, 30.0fps, mp4a.40.2@256k
96           mp4        1920x1080  HLS 4715k , avc1.640028, 30.0fps, mp4a.40.2@256k (best)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1630156</commentid>
    <comment_count>2</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2020-03-15 03:05:47 -0700</bug_when>
    <thetext>Hi Chris, thanks for the bug-report. I confirm this is indeed a regression in 2.28. The stream plays fine in 2.26.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1631686</commentid>
    <comment_count>3</comment_count>
      <attachid>393986</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2020-03-19 09:34:32 -0700</bug_when>
    <thetext>Created attachment 393986
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1631702</commentid>
    <comment_count>4</comment_count>
      <attachid>393986</attachid>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2020-03-19 10:03:59 -0700</bug_when>
    <thetext>Comment on attachment 393986
Patch

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

If Alicia says it&apos;s ok, I&apos;m good as well.

&gt; Source/WebCore/platform/graphics/gstreamer/mse/AppendPipeline.cpp:464
&gt; +    static MediaTime decodeTimeOffset = MediaTime::invalidTime();

I think this should be MediaTime m_decodeTimeOffset in AppendPipeline.h.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1631750</commentid>
    <comment_count>5</comment_count>
      <attachid>393986</attachid>
    <who name="Alicia Boya García">aboya</who>
    <bug_when>2020-03-19 11:21:55 -0700</bug_when>
    <thetext>Comment on attachment 393986
Patch

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

This is not the correct solution. In the review I gave some background on the purpose of the code that is being altered by the patch, which we don&apos;t want to break, plus some other problems it introduces. In any case, tweaking the timestamps exposed to WebKit or GStreamer elements is not the solution in this case.

I&apos;ve gave a look to the streams YouTube is serving for live streams. They don&apos;t have edit lists or any other MP4 time offseting mechanisms. The problem is somewhere else, and actually rather simple: we&apos;re just given a stream that starts at time 13:00:00, not at 0:00:00. But YouTube is also setting currentTime to 13:00:00. We should be able to play that way!

You can confirm this by opening the inspector and querying the buffered ranges and currentTime:

&gt; $(&quot;video&quot;).buffered.start(0) / 3600
13
&gt; $(&quot;video&quot;).currentTime / 3600
13.00218702527778

Also I will say this worked fine in my Epiphany 3.34.3 with WebKitGTK 2.26.4 with avc1 and mp4a, while this seems to be broken in my master branch with the same codecs, so watch out for regressions.

&gt; Source/WebCore/platform/graphics/gstreamer/MediaSampleGStreamer.cpp:-98
&gt; -void MediaSampleGStreamer::applyPtsOffset(MediaTime timestampOffset)

For some context: the original purpose of applyPtsOffset() is to ensure the believed first sample of the stream starts in clean PTS boundaries.

This is a hack. We shouldn&apos;t have to do this, but because of a bug in qtdemux in gst &lt; 1.16, this is how we have been managing. (The fix https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/commit/c2a0da8096009f0f99943f78dc18066965be60f9)

Also, this is only relevant for MP4 streams, Matroska doesn&apos;t have this problem. In particular, the problem is qtdemux used to obviate edit lists for all push-mode based streams. For an explanation of why edit lists are a thing and why they are important, I have a section in my media notes: https://github.com/ntrrgc/media-notes/wiki/MP4-Notes#simple-edit-lists

Put simply, edit lists define a mapping between the timestamps the tracks in a MP4 movie are encoded with, and the timestamps these sections of the track are placed in the overall movie... And they are only a thing because of technicalities.

Here is the example from my media notes. Applications like WebKit are interested in Movie DTS and Movie PTS. Unfortunately, before the patch previously mentioned, there was no way to get these (and even now, you have to go through the extra step of converting to stream time to get them, which, for consistency between supported GStreamer runtimes, we&apos;re not doing yet).

                     ·---·   ·---·   ·---·
Decode order:        | A |   | C |   | B |
                     ·---·   ·---·   ·---·
Duration:             100     100     100
Track DTS:              0     100     200
Track PTS (AKA CTS)   100     300     200
Movie DTS:           -100       0     100
Movie PTS:              0     200     100

Note Track PTS starts at 100, not 0. This is our biggest problem, as playing starting at zero will fail as no frame with PTS=0 seems to arrive. So, what is the hack we did?

    // Add a gap sample if a gap is detected before the first sample.
    if (mediaSample-&gt;decodeTime() == MediaTime::zeroTime() &amp;&amp; mediaSample-&gt;presentationTime() &gt; MediaTime::zeroTime() &amp;&amp; mediaSample-&gt;presentationTime() &lt;= MediaTime(1, 10)) {
        GST_DEBUG(&quot;Adding gap offset&quot;);
        mediaSample-&gt;applyPtsOffset(MediaTime::zeroTime());
    }

If we have a frame with DTS=0 (track DTS always starts implicitly at zero), but with PTS &gt; 0 (and not too long), we basically extend the frame to the left, by setting its PTS = 0 and enlarging its duration to compensate.

Note this is intentionally the only use of applyPtsOffset(), and the argument is arguably redundant, since it&apos;s always zero. Also you could argue the name is not descriptive, since it&apos;s doing more of an extension than an offset. Also remember this is only done *for the first sample* (since that&apos;s the only one that can have DTS=0).

void MediaSampleGStreamer::applyPtsOffset(MediaTime timestampOffset)
{
    if (m_pts &gt; timestampOffset) {
        m_duration = m_duration + (m_pts - timestampOffset);
        m_pts = timestampOffset;
    }
}

The consequences of this hack are:

1) First frame is slightly (typically one frame) longer.
2) Because we&apos;re not actually playing frames on the correct movie PTS, we can have slight A/V synchronization problems, also in the order of one frame.

None of these are the end of the world, since their effects are too slight to be noticed by users in typical files. Lots of players in the wild have broken edit list handling and happy users.

Also, this fix has a very important property: The resulting PTS and DTS that WebKit keeps don&apos;t vary no matter the order of appended media segments. Break that property and you&apos;ll have seek bugs eventually, so you should be very careful with adding offsets in MSE code.

&gt;&gt; Source/WebCore/platform/graphics/gstreamer/mse/AppendPipeline.cpp:464
&gt;&gt; +    static MediaTime decodeTimeOffset = MediaTime::invalidTime();
&gt; 
&gt; I think this should be MediaTime m_decodeTimeOffset in AppendPipeline.h.

This should be, if anything, a member variable. Otherwise, wrong offsets would be applied to other AppendPipeline streams, potentially corrupting them.

&gt; Source/WebCore/platform/graphics/gstreamer/mse/AppendPipeline.cpp:466
&gt; +        decodeTimeOffset = mediaSample-&gt;decodeTime();

This will break any playback use case where the first appended sample is not from the beginning of the movie.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1632038</commentid>
    <comment_count>6</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2020-03-20 02:58:56 -0700</bug_when>
    <thetext>(In reply to Alicia Boya García from comment #5)

&gt; 
&gt; Also I will say this worked fine in my Epiphany 3.34.3 with WebKitGTK 2.26.4
&gt; with avc1 and mp4a, while this seems to be broken in my master branch with
&gt; the same codecs, so watch out for regressions.
&gt; 

As mentioned in comment 2 indeed.

&gt; &gt; Source/WebCore/platform/graphics/gstreamer/MediaSampleGStreamer.cpp:-98
&gt; &gt; -void MediaSampleGStreamer::applyPtsOffset(MediaTime timestampOffset)
&gt; 
&gt; For some context: the original purpose of applyPtsOffset() is to ensure the
&gt; believed first sample of the stream starts in clean PTS boundaries.
&gt; 
&gt; This is a hack.

OK but it seems this has nothing to do with the issue at hand. As mentioned in the ChangeLog, the SourceBuffer interprets the huge DTS (not PTS) as a gap and thus exits early from provideMediaData().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1632055</commentid>
    <comment_count>7</comment_count>
    <who name="Alicia Boya García">aboya</who>
    <bug_when>2020-03-20 05:31:16 -0700</bug_when>
    <thetext>(In reply to Philippe Normand from comment #6)
&gt; &gt; &gt; Source/WebCore/platform/graphics/gstreamer/MediaSampleGStreamer.cpp:-98
&gt; &gt; &gt; -void MediaSampleGStreamer::applyPtsOffset(MediaTime timestampOffset)
&gt; &gt; 
&gt; &gt; For some context: the original purpose of applyPtsOffset() is to ensure the
&gt; &gt; believed first sample of the stream starts in clean PTS boundaries.
&gt; &gt; 
&gt; &gt; This is a hack.
&gt; 
&gt; OK but it seems this has nothing to do with the issue at hand.

Yeah, it has nothing to do with the issue at hand, but since you were changing that code, I wanted to provide an explanation for why it exists, since it&apos;s something I don&apos;t consider obvious.

&gt; As mentioned
&gt; in the ChangeLog, the SourceBuffer interprets the huge DTS (not PTS) as a
&gt; gap and thus exits early from provideMediaData().

A huge DTS shouldn&apos;t be a problem if currentTime is also huge. Any frame with PTS &lt;= currentTime should be enough to start playback. I wouldn&apos;t discard the possibility of a bug in SourceBuffer either. Mock codec tests are useful to test this. See LayoutTests/media/media-source/media-source-append-overlapping-dts.html for an example.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1632851</commentid>
    <comment_count>8</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2020-03-23 08:18:07 -0700</bug_when>
    <thetext>(In reply to Alicia Boya García from comment #7)
&gt; &gt; As mentioned
&gt; &gt; in the ChangeLog, the SourceBuffer interprets the huge DTS (not PTS) as a
&gt; &gt; gap and thus exits early from provideMediaData().
&gt; 
&gt; A huge DTS shouldn&apos;t be a problem if currentTime is also huge. Any frame
&gt; with PTS &lt;= currentTime should be enough to start playback. I wouldn&apos;t
&gt; discard the possibility of a bug in SourceBuffer either. Mock codec tests
&gt; are useful to test this. See
&gt; LayoutTests/media/media-source/media-source-append-overlapping-dts.html for
&gt; an example.

OK but as Safari doesn&apos;t seem to suffer from this bug, I&apos;m not sure this is an issue in SourceBuffer or any of the cross-platform code... But I&apos;ll have a look, anyway...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1634286</commentid>
    <comment_count>9</comment_count>
    <who name="Enrique Ocaña">eocanha</who>
    <bug_when>2020-03-26 05:57:27 -0700</bug_when>
    <thetext>I&apos;ve been debugging the issue. This is a case of initial append and playback start at a non-zero position.

What is happening is that the unbuffered gap bailout code added in bug 201323 is preventing the appended data to be automatically enqueed as they are appended. That&apos;s not necessarily bad, because a later reenqueue after the seek to the playback start position should enquee the data.

However, the seek is never propagated to MediaSource and SourceBuffer because doSeek() detects that the pipeline is in &quot;async change READY --&gt; PAUSED&quot; and just waits for an hypotetical start (from zero) to finish, but that&apos;ll never happen because no sample has been fed to the pipeline.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1643863</commentid>
    <comment_count>10</comment_count>
      <attachid>397079</attachid>
    <who name="Enrique Ocaña">eocanha</who>
    <bug_when>2020-04-21 07:23:14 -0700</bug_when>
    <thetext>Created attachment 397079
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1643873</commentid>
    <comment_count>11</comment_count>
      <attachid>397079</attachid>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2020-04-21 08:00:59 -0700</bug_when>
    <thetext>Comment on attachment 397079
Patch

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

&gt; Source/WebCore/platform/graphics/gstreamer/mse/MediaPlayerPrivateGStreamerMSE.cpp:264
&gt; +        &amp;&amp; (!(state == GST_STATE_PLAYING &amp;&amp; newState == GST_STATE_PAUSED)
&gt; +            &amp;&amp; !(state == GST_STATE_READY &amp;&amp; newState &gt;= GST_STATE_PAUSED)))

&quot;De-morganize&quot; this, please.

&gt; Source/WebCore/platform/graphics/gstreamer/mse/MediaPlayerPrivateGStreamerMSE.cpp:270
&gt; +            &amp;&amp; (!(state == GST_STATE_PLAYING &amp;&amp; newState == GST_STATE_PAUSED)
&gt; +                &amp;&amp; !(state == GST_STATE_READY &amp;&amp; newState &gt;= GST_STATE_PAUSED))) {

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1643875</commentid>
    <comment_count>12</comment_count>
      <attachid>397079</attachid>
    <who name="Alicia Boya García">aboya</who>
    <bug_when>2020-04-21 08:13:43 -0700</bug_when>
    <thetext>Comment on attachment 397079
Patch

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

Overall LGTM.

&gt; Source/WebCore/platform/graphics/gstreamer/mse/WebKitMediaSourceGStreamer.cpp:738
&gt; +        gst_event_parse_segment(event, const_cast&lt;const GstSegment**&gt;(&amp;originalSegment));

The segment in GST_EVENT_SEGMENT is immutable. Instead of forcing it to mutate with const_casts, try to replace the whole info-&gt;data with a new GstEvent* with the desired segment.

Tip: When doing so, it&apos;s useful to use gst_event_replace(&amp;info-&gt;data, newEvent) so GStreamer unrefs the old one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1643918</commentid>
    <comment_count>13</comment_count>
      <attachid>397093</attachid>
    <who name="Enrique Ocaña">eocanha</who>
    <bug_when>2020-04-21 10:28:10 -0700</bug_when>
    <thetext>Created attachment 397093
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1644256</commentid>
    <comment_count>14</comment_count>
      <attachid>397093</attachid>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2020-04-22 03:27:35 -0700</bug_when>
    <thetext>Comment on attachment 397093
Patch

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

&gt; Source/WebCore/platform/graphics/gstreamer/mse/MediaPlayerPrivateGStreamerMSE.cpp:253
&gt; +static bool checkStateChangeShouldDelaySeek(GstStateChangeReturn getStateResult, GstState currentState, GstState newState)
&gt; +{
&gt; +    if (getStateResult != GST_STATE_CHANGE_ASYNC)
&gt; +        return false;
&gt; +    if (GST_STATE_TRANSITION(currentState, newState) == GST_STATE_CHANGE_PLAYING_TO_PAUSED)
&gt; +        return false;
&gt; +    if (currentState == GST_STATE_READY &amp;&amp; newState &gt;= GST_STATE_PAUSED)
&gt; +        return false;
&gt; +    return true;
&gt; +}

This function looks much better than the code before. If I can do a nit, I would do just: shouldDelaySeek. And similar for the variables you use below.

&gt; Source/WebCore/platform/graphics/gstreamer/mse/MediaPlayerPrivateGStreamerMSE.cpp:364
&gt; +        GST_DEBUG(&quot;doSeek(): Initial seek succeeded, returning true&quot;);

You don&apos;t need to specify the function in the seek, it&apos;s included in the log already.

&gt; Source/WebCore/platform/graphics/gstreamer/mse/MediaPlayerPrivateGStreamerMSE.cpp:373
&gt; +            GST_DEBUG(&quot;doSeek(): gst_element_seek() failed, returning false&quot;);

Ditto

&gt; Source/WebCore/platform/graphics/gstreamer/mse/MediaPlayerPrivateGStreamerMSE.cpp:377
&gt; +        GST_DEBUG(&quot;doSeek(): gst_element_seek() succeeded, returning true&quot;);

Ditto

&gt; Source/WebCore/platform/graphics/gstreamer/mse/WebKitMediaSourceGStreamer.cpp:774
&gt; +            initialSeekSegmentFixerProbe, gst_segment_copy(segment.get()), reinterpret_cast&lt;GDestroyNotify&gt;(gst_segment_free));

I don&apos;t think it is needed to copy the segment here, right? We are not using it anymore so I think we can either .release() the GUniquePtr or just not use it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1644257</commentid>
    <comment_count>15</comment_count>
      <attachid>397093</attachid>
    <who name="Enrique Ocaña">eocanha</who>
    <bug_when>2020-04-22 03:45:10 -0700</bug_when>
    <thetext>Comment on attachment 397093
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/gstreamer/mse/WebKitMediaSourceGStreamer.cpp:774
&gt;&gt; +            initialSeekSegmentFixerProbe, gst_segment_copy(segment.get()), reinterpret_cast&lt;GDestroyNotify&gt;(gst_segment_free));
&gt; 
&gt; I don&apos;t think it is needed to copy the segment here, right? We are not using it anymore so I think we can either .release() the GUniquePtr or just not use it.

I wish we could do that, but unfortunately this code is inside a loop, so the same segment can be passed to more than one &quot;instance&quot; of the probe. The probe that runs first would use and free the segment and the probe that runs second (assuming 1 audio and 1 video streams) would operate on a dangling pointer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1644260</commentid>
    <comment_count>16</comment_count>
      <attachid>397185</attachid>
    <who name="Enrique Ocaña">eocanha</who>
    <bug_when>2020-04-22 04:01:23 -0700</bug_when>
    <thetext>Created attachment 397185
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1644261</commentid>
    <comment_count>17</comment_count>
    <who name="Enrique Ocaña">eocanha</who>
    <bug_when>2020-04-22 04:04:17 -0700</bug_when>
    <thetext>I ended up naming the function as checkShouldDelaySeek() and the variable as shouldDelaySeek because the compiler complains that they can&apos;t have the same name.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1644263</commentid>
    <comment_count>18</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-04-22 04:36:31 -0700</bug_when>
    <thetext>Committed r260506: &lt;https://trac.webkit.org/changeset/260506&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 397185.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>393986</attachid>
            <date>2020-03-19 09:34:32 -0700</date>
            <delta_ts>2020-04-21 07:23:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209119-20200319163431.patch</filename>
            <type>text/plain</type>
            <size>5371</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4Njk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTQ3OTUwODc0MGZjZjk4
NGYwYTgyNWRiMDY5YTAzOTgyMTcxM2NkOC4uOWU0YjViYzk3ZWFjYjY2NzZlNjQyZWIzNjRkNzA0
NDY1MGU3OGM1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDIwLTAzLTE5ICBQaGls
aXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1N0cmVhbWVy
XVtNU0VdIFlvdXR1YmUgJ2xpdmUgc3RyZWFtJy9IMjY0IFVSTHMgZmFpbCB0byBwbGF5LCBWUDgv
OSBVUkxzIHBsYXkgT0sKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIwOTExOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEJlY2F1c2UgdGhlIERUUyB0aW1lc3RhbXBzIG9mIFlUIGxpdmUgc3RyZWFtcyBhcmUg
dG9vIGZhciBpbiB0aGUKKyAgICAgICAgZnV0dXJlIHRoZXkgc3RhcnZlIHRoZSBTb3VyY2VCdWZm
ZXI6OnByb3ZpZGVNZWRpYURhdGEoKSBtYWtpbmcgaXQKKyAgICAgICAgdGhpbmsgYW4gdW5idWZm
ZXJlZCBnYXAgd2FzIGRldGVjdGVkOgorCisgICAgICAgIFNvdXJjZUJ1ZmZlcjo6cHJvdmlkZU1l
ZGlhRGF0YSg0RjY4QkQwOTE4ODUwMDAyKSBiYWlsaW5nIGVhcmx5CisgICAgICAgIGJlY2F1c2Ug
b2YgdW5idWZmZXJlZCBnYXAsIG5ldyBzYW1wbGU6CisgICAgICAgIHsidmFsdWUiOjQ2ODAwLjAx
MDY2NiwibnVtZXJhdG9yIjo0NjgwMDAxMDY2NiwiZGVub21pbmF0b3IiOjEwMDAwMDAsImZsYWdz
IjoxfQorICAgICAgICA+PSB0aGUgY3VycmVudCBkaXNjb250aW51aXR5IGJvdW5kYXJ5OgorICAg
ICAgICB7InZhbHVlIjoxLCJudW1lcmF0b3IiOjEsImRlbm9taW5hdG9yIjoxLCJmbGFncyI6MX0K
KworICAgICAgICBUaGUgcHJvcG9zZWQgc29sdXRpb24gZm9yIHRoaXMgaXMgdG8gZW5zdXJlIERU
UyBzdGFydCBhdCAwLCBieQorICAgICAgICBzdWJzdHJhY3RpbmcgdGhlIERUUyBvZiB0aGUgZmly
c3Qgc2FtcGxlIHRvIGFsbCBlbnF1ZXVlZCBzYW1wbGVzLgorCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhU2FtcGxlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhU2FtcGxlR1N0cmVhbWVyOjphcHBseUR0c09mZnNldCk6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVNhbXBsZUdTdHJlYW1lcjo6YXBwbHlQdHNPZmZzZXQpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFTYW1wbGVHU3RyZWFtZXI6Om9mZnNldFRpbWVzdGFtcHNCeSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhU2FtcGxlR1N0cmVhbWVyLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBlbmRQaXBlbGlu
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBlbmRQaXBlbGluZTo6YXBwc2lua05ld1NhbXBs
ZSk6CisKIDIwMjAtMDMtMTkgIENoYXJsaWUgVHVybmVyICA8Y3R1cm5lckBpZ2FsaWEuY29tPgog
CiAgICAgICAgIEZpeCBtYW55IHdhcm5pbmdzIHdpdGggQ2xhbmcgNy4wIG9uIEdUSyB4ODYtNjQg
aW4gRGVidWcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvTWVkaWFTYW1wbGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhU2FtcGxlR1N0cmVhbWVyLmNwcAppbmRleCBmNWE3
ZGQ2NmQyMThlNDdmYmQ1OWEyMzk0YTkxOGM1MGQyOGE1NDI0Li5mYTc0NmYwNzc5ODcwYWU4MWY0
M2Y0ZmM3NDA5MjViNmNiYzBkZjhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFTYW1wbGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVNhbXBsZUdTdHJlYW1l
ci5jcHAKQEAgLTk1LDE4ICs5NSwyNSBAQCBSZWY8TWVkaWFTYW1wbGVHU3RyZWFtZXI+IE1lZGlh
U2FtcGxlR1N0cmVhbWVyOjpjcmVhdGVGYWtlU2FtcGxlKEdzdENhcHMqLCBNZWRpYQogICAgIHJl
dHVybiBhZG9wdFJlZigqZ3N0cmVhbWVyTWVkaWFTYW1wbGUpOwogfQogCi12b2lkIE1lZGlhU2Ft
cGxlR1N0cmVhbWVyOjphcHBseVB0c09mZnNldChNZWRpYVRpbWUgdGltZXN0YW1wT2Zmc2V0KQor
dm9pZCBNZWRpYVNhbXBsZUdTdHJlYW1lcjo6YXBwbHlEdHNPZmZzZXQoY29uc3QgTWVkaWFUaW1l
JiB0aW1lc3RhbXBPZmZzZXQpCiB7Ci0gICAgaWYgKG1fcHRzID4gdGltZXN0YW1wT2Zmc2V0KSB7
Ci0gICAgICAgIG1fZHVyYXRpb24gPSBtX2R1cmF0aW9uICsgKG1fcHRzIC0gdGltZXN0YW1wT2Zm
c2V0KTsKLSAgICAgICAgbV9wdHMgPSB0aW1lc3RhbXBPZmZzZXQ7Ci0gICAgfQorICAgIG1fZHRz
ICs9IHRpbWVzdGFtcE9mZnNldDsKK30KKwordm9pZCBNZWRpYVNhbXBsZUdTdHJlYW1lcjo6YXBw
bHlQdHNPZmZzZXQoY29uc3QgTWVkaWFUaW1lJiB0aW1lc3RhbXBPZmZzZXQpCit7CisgICAgaWYg
KG1fcHRzIDw9IHRpbWVzdGFtcE9mZnNldCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9kdXJh
dGlvbiA9IG1fZHVyYXRpb24gKyAobV9wdHMgLSB0aW1lc3RhbXBPZmZzZXQpOworICAgIG1fcHRz
ID0gdGltZXN0YW1wT2Zmc2V0OwogfQogCiB2b2lkIE1lZGlhU2FtcGxlR1N0cmVhbWVyOjpvZmZz
ZXRUaW1lc3RhbXBzQnkoY29uc3QgTWVkaWFUaW1lJiB0aW1lc3RhbXBPZmZzZXQpCiB7CiAgICAg
aWYgKCF0aW1lc3RhbXBPZmZzZXQpCiAgICAgICAgIHJldHVybjsKKwogICAgIG1fcHRzICs9IHRp
bWVzdGFtcE9mZnNldDsKICAgICBtX2R0cyArPSB0aW1lc3RhbXBPZmZzZXQ7CiAgICAgaWYgKGF1
dG8qIGJ1ZmZlciA9IGdzdF9zYW1wbGVfZ2V0X2J1ZmZlcihtX3NhbXBsZS5nZXQoKSkpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRp
YVNhbXBsZUdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL01lZGlhU2FtcGxlR1N0cmVhbWVyLmgKaW5kZXggMWRmNDQzNWE3OTNmOGQwYjkzNTdi
NGVjNjczZTM5NzdjNmRlNWQ2Yy4uZmY3YzI4N2VmOGEzNGNhNTA0OWNjNzQxNjAwMDVjMjMwY2Vm
NWU1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL01lZGlhU2FtcGxlR1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhU2FtcGxlR1N0cmVhbWVyLmgKQEAgLTM4LDcgKzM4LDgg
QEAgcHVibGljOgogCiAgICAgc3RhdGljIFJlZjxNZWRpYVNhbXBsZUdTdHJlYW1lcj4gY3JlYXRl
RmFrZVNhbXBsZShHc3RDYXBzKiwgTWVkaWFUaW1lIHB0cywgTWVkaWFUaW1lIGR0cywgTWVkaWFU
aW1lIGR1cmF0aW9uLCBjb25zdCBGbG9hdFNpemUmIHByZXNlbnRhdGlvblNpemUsIGNvbnN0IEF0
b21TdHJpbmcmIHRyYWNrSWQpOwogCi0gICAgdm9pZCBhcHBseVB0c09mZnNldChNZWRpYVRpbWUp
OworICAgIHZvaWQgYXBwbHlEdHNPZmZzZXQoY29uc3QgTWVkaWFUaW1lJik7CisgICAgdm9pZCBh
cHBseVB0c09mZnNldChjb25zdCBNZWRpYVRpbWUmKTsKICAgICBNZWRpYVRpbWUgcHJlc2VudGF0
aW9uVGltZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fcHRzOyB9CiAgICAgTWVkaWFUaW1l
IGRlY29kZVRpbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2R0czsgfQogICAgIE1lZGlh
VGltZSBkdXJhdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fZHVyYXRpb247IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2Uv
QXBwZW5kUGlwZWxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL21zZS9BcHBlbmRQaXBlbGluZS5jcHAKaW5kZXggNWEyYmRlZGExYjg3YTFkZWE4YzZi
YmY1ZjY5ODQxZDdlOWY2NmMwYi4uZDQzNTZhNjMwNDVkMTA2MjMzZGI4MzVjNTEyZGEzYTRlNTFm
NDlmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL21zZS9BcHBlbmRQaXBlbGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBlbmRQaXBlbGluZS5jcHAKQEAgLTQ2MCw4ICs0NjAs
MTYgQEAgdm9pZCBBcHBlbmRQaXBlbGluZTo6YXBwc2lua05ld1NhbXBsZShHUmVmUHRyPEdzdFNh
bXBsZT4mJiBzYW1wbGUpCiAKICAgICBhdXRvIG1lZGlhU2FtcGxlID0gV2ViQ29yZTo6TWVkaWFT
YW1wbGVHU3RyZWFtZXI6OmNyZWF0ZShXVEZNb3ZlKHNhbXBsZSksIG1fcHJlc2VudGF0aW9uU2l6
ZSwgdHJhY2tJZCgpKTsKIAotICAgIEdTVF9UUkFDRSgiYXBwZW5kOiB0cmFja0lkPSVzIFBUUz0l
cyBEVFM9JXMgRFVSPSVzIHByZXNlbnRhdGlvblNpemU9JS4wZnglLjBmIiwKKyAgICAvLyBNYWtl
IHN1cmUgZGVjb2RlIHRpbWVzdGFtcHMgc3RhcnQgYXQgMC4gVGhpcyBpcyBzcGVjaWFsbHkgbmVl
ZGVkIGZvciBsaXZlIHN0cmVhbXMuCisgICAgc3RhdGljIE1lZGlhVGltZSBkZWNvZGVUaW1lT2Zm
c2V0ID0gTWVkaWFUaW1lOjppbnZhbGlkVGltZSgpOworICAgIGlmIChkZWNvZGVUaW1lT2Zmc2V0
LmlzSW52YWxpZCgpKQorICAgICAgICBkZWNvZGVUaW1lT2Zmc2V0ID0gbWVkaWFTYW1wbGUtPmRl
Y29kZVRpbWUoKTsKKworICAgIG1lZGlhU2FtcGxlLT5hcHBseUR0c09mZnNldCgtZGVjb2RlVGlt
ZU9mZnNldCk7CisKKyAgICBHU1RfVFJBQ0UoImFwcGVuZDogdHJhY2tJZD0lcyBkZWNvZGVUaW1l
T2Zmc2V0PSVzIFBUUz0lcyBEVFM9JXMgRFVSPSVzIHByZXNlbnRhdGlvblNpemU9JS4wZnglLjBm
IiwKICAgICAgICAgbWVkaWFTYW1wbGUtPnRyYWNrSUQoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgp
LAorICAgICAgICBkZWNvZGVUaW1lT2Zmc2V0LnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSwKICAg
ICAgICAgbWVkaWFTYW1wbGUtPnByZXNlbnRhdGlvblRpbWUoKS50b1N0cmluZygpLnV0ZjgoKS5k
YXRhKCksCiAgICAgICAgIG1lZGlhU2FtcGxlLT5kZWNvZGVUaW1lKCkudG9TdHJpbmcoKS51dGY4
KCkuZGF0YSgpLAogICAgICAgICBtZWRpYVNhbXBsZS0+ZHVyYXRpb24oKS50b1N0cmluZygpLnV0
ZjgoKS5kYXRhKCksCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>397079</attachid>
            <date>2020-04-21 07:23:14 -0700</date>
            <delta_ts>2020-04-21 10:28:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209119-20200421142312.patch</filename>
            <type>text/plain</type>
            <size>12164</size>
            <attacher name="Enrique Ocaña">eocanha</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwMjU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmI1NTgzYTE2OWU0Zjhk
MGQ0NWViMTkzOTkxMjAxYzdlNzUyMGIzOS4uMGFkZTkxYzljNWMyMzVjY2RlZTAxZDRjZWQ1MGIw
OWM2MzVmYzk5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDIwLTA0LTIxICBFbnJp
cXVlIE9jYcOxYSBHb256w6FsZXogIDxlb2NhbmhhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dT
dHJlYW1lcl1bTVNFXSBZb3V0dWJlICdsaXZlIHN0cmVhbScvSDI2NCBVUkxzIGZhaWwgdG8gcGxh
eSwgVlA4LzkgVVJMcyBwbGF5IE9LCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMDkxMTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUaGUgZml4IGNvbnNpc3RzIG9mIHJlbW92aW5nIHRoZSBpbml0aWFsIGF2
b2lkaW5nIG9mIHNlZWtpbmcgYW5kIGp1c3QKKyAgICAgICAgaXNzdWluZyB0aGUgcHJvcGVyIHNl
Z21lbnQgaW5zdGVhZCBvZiBzZWVraW5nIChzZWVrcyBpbiBHU3RyZWFtZXIgY2FuJ3QKKyAgICAg
ICAgYmUgZG9uZSBiZWZvcmUgcHJlcm9sbGluZyBhbnl3YXkpLiBBcHBzcmMgZG9lc24ndCBtYWtl
IGVhc3kgdG8gZW1pdCBvdXIKKyAgICAgICAgb3duIGN1c3RvbSBzZWdtZW50LCBzbyB3aGF0IEkg
ZGlkIHdhcyB0byB1c2UgYSBzZWdtZW50IGZpeGVyIHByb2JlIHRvCisgICAgICAgIG1vZGlmeSB0
aGUgb3JpZ2luYWwgWzAsIGluZmluaXR5XSBzZWdtZW50IGlzc3VlZCBieSBhcHBzcmMgYW5kIHVz
ZQorICAgICAgICBhIFtzdGFydFRpbWUsIHN0b3BUaW1lXSB3aXRoIHByb3BlciB2YWx1ZXMgZGVw
ZW5kaW5nIG9uIHRoZSBzZWVrIHRhcmdldAorICAgICAgICBhbmQgcmF0ZS4KKworICAgICAgICBD
b3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFOjpkb1NlZWspOiBEb24n
dCBob2xkIHNlZWtzIG9uIHN0YXJ0dXAsIHdoZW4gY2hhbmdpbmcgZnJvbSBSRUFEWSB0byBQQVVT
RUQuCisgICAgICAgIEFsc28sIGRvbid0IGRvIGEgcmVndWxhciBnc3RfZWxlbWVudF9zZWVrKCkg
Zm9yIGluaXRpYWwgc2Vla3MsIGp1c3QgcHJvY2VlZCB3aXRoIGEgc3BlY2lhbCBjYXNlIGluIHRo
YXQgc2l0dWF0aW9uLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2Uv
V2ViS2l0TWVkaWFTb3VyY2VHU3RyZWFtZXIuY3BwOgorICAgICAgICAoaW5pdGlhbFNlZWtTZWdt
ZW50Rml4ZXJQcm9iZSk6IFByb2JlIHRoYXQgZml4ZXMgdGhlIHNlZ21lbnQuCisgICAgICAgICh3
ZWJLaXRNZWRpYVNyY1ByZXBhcmVJbml0aWFsU2Vlayk6IEJlaGF2ZSBtdWNoIGxpa2UgYSByZWd1
bGFyIHNlZWssIGJ1dCBhbHNvIGNvbXB1dGUgdGhlIHJpZ2h0IEdzdFNlZ21lbnQsIGluc3RhbGwK
KyAgICAgICAgdGhlIHNlZ21lbnQgZml4ZXIgcHJvYmUgYW5kIHNldFJlYWR5Rm9yTW9yZVNhbXBs
ZXMoKSBvbiB0aGUgU291cmNlQnVmZmVyUHJpdmF0ZXMuCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL21zZS9XZWJLaXRNZWRpYVNvdXJjZUdTdHJlYW1lci5oOgorCiAyMDIw
LTA0LTE3ICBDbGF1ZGlvIFNhYXZlZHJhICA8Y3NhYXZlZHJhQGlnYWxpYS5jb20+CiAKICAgICAg
ICAgW0dUS10gVXBkYXRlIGZvciBHZGtLZXltYXAgQVBJIGNoYW5nZXMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyTVNFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9tc2UvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFLmNwcAppbmRleCAx
YjcwMGJiYzA4NGM3MTI5ZGRiMDE0N2I0NDZkOTFlNDY4ZWM5MmYwLi45ZTE3NGY5YjNkZjJkOWM0
MjU4MzgyOWI2NWNmOTkwZWYxYmVhZDkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1T
RS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21z
ZS9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UuY3BwCkBAIC0yNjAsMTIgKzI2MCwxNCBA
QCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRTo6ZG9TZWVrKGNvbnN0IE1lZGlh
VGltZSYgcG9zaXRpb24sIGZsb2F0IHJhdAogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQog
ICAgIGlmICgoZ2V0U3RhdGVSZXN1bHQgPT0gR1NUX1NUQVRFX0NIQU5HRV9BU1lOQwotICAgICAg
ICAmJiAhKHN0YXRlID09IEdTVF9TVEFURV9QTEFZSU5HICYmIG5ld1N0YXRlID09IEdTVF9TVEFU
RV9QQVVTRUQpKQotICAgICAgICB8fCBzdGF0ZSA8IEdTVF9TVEFURV9QQVVTRUQKKyAgICAgICAg
JiYgKCEoc3RhdGUgPT0gR1NUX1NUQVRFX1BMQVlJTkcgJiYgbmV3U3RhdGUgPT0gR1NUX1NUQVRF
X1BBVVNFRCkKKyAgICAgICAgICAgICYmICEoc3RhdGUgPT0gR1NUX1NUQVRFX1JFQURZICYmIG5l
d1N0YXRlID49IEdTVF9TVEFURV9QQVVTRUQpKSkKICAgICAgICAgfHwgbV9pc0VuZFJlYWNoZWQK
ICAgICAgICAgfHwgIW1fZ3N0U2Vla0NvbXBsZXRlZCkgewogICAgICAgICBDU3RyaW5nIHJlYXNv
biA9ICJVbmtub3duIHJlYXNvbiI7Ci0gICAgICAgIGlmIChnZXRTdGF0ZVJlc3VsdCA9PSBHU1Rf
U1RBVEVfQ0hBTkdFX0FTWU5DKSB7CisgICAgICAgIGlmIChnZXRTdGF0ZVJlc3VsdCA9PSBHU1Rf
U1RBVEVfQ0hBTkdFX0FTWU5DCisgICAgICAgICAgICAmJiAoIShzdGF0ZSA9PSBHU1RfU1RBVEVf
UExBWUlORyAmJiBuZXdTdGF0ZSA9PSBHU1RfU1RBVEVfUEFVU0VEKQorICAgICAgICAgICAgICAg
ICYmICEoc3RhdGUgPT0gR1NUX1NUQVRFX1JFQURZICYmIG5ld1N0YXRlID49IEdTVF9TVEFURV9Q
QVVTRUQpKSkgewogICAgICAgICAgICAgcmVhc29uID0gbWFrZVN0cmluZygiSW4gYXN5bmMgY2hh
bmdlICIsCiAgICAgICAgICAgICAgICAgZ3N0X2VsZW1lbnRfc3RhdGVfZ2V0X25hbWUoc3RhdGUp
LCAiIC0tPiAiLAogICAgICAgICAgICAgICAgIGdzdF9lbGVtZW50X3N0YXRlX2dldF9uYW1lKG5l
d1N0YXRlKSkudXRmOCgpOwpAQCAtMzQ3LDIwICszNDksMjYgQEAgYm9vbCBNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXJNU0U6OmRvU2Vlayhjb25zdCBNZWRpYVRpbWUmIHBvc2l0aW9uLCBmbG9h
dCByYXQKIAogICAgIEdTVF9ERUJVR19PQkpFQ1QocGlwZWxpbmUoKSwgIkFjdHVhbCBzZWVrIHRv
ICVzLCBlbmQgdGltZTogICVzLCByYXRlOiAlZiIsIHRvU3RyaW5nKHN0YXJ0VGltZSkudXRmOCgp
LmRhdGEoKSwgdG9TdHJpbmcoZW5kVGltZSkudXRmOCgpLmRhdGEoKSwgcmF0ZSk7CiAKLSAgICAv
LyBUaGlzIHdpbGwgY2FsbCBub3RpZnlTZWVrTmVlZHNEYXRhKCkgYWZ0ZXIgc29tZSB0aW1lIHRv
IHRlbGwgdGhhdCB0aGUgcGlwZWxpbmUgaXMgcmVhZHkgZm9yIHNhbXBsZSBlbnF1ZXVpbmcuCi0g
ICAgd2ViS2l0TWVkaWFTcmNQcmVwYXJlU2VlayhXRUJLSVRfTUVESUFfU1JDKG1fc291cmNlLmdl
dCgpKSwgc2Vla1RpbWUpOwotCiAgICAgbV9nc3RTZWVrQ29tcGxldGVkID0gZmFsc2U7Ci0gICAg
aWYgKCFnc3RfZWxlbWVudF9zZWVrKG1fcGlwZWxpbmUuZ2V0KCksIHJhdGUsIEdTVF9GT1JNQVRf
VElNRSwgc2Vla1R5cGUsIEdTVF9TRUVLX1RZUEVfU0VULCB0b0dzdENsb2NrVGltZShzdGFydFRp
bWUpLCBHU1RfU0VFS19UWVBFX1NFVCwgdG9Hc3RDbG9ja1RpbWUoZW5kVGltZSkpKSB7Ci0gICAg
ICAgIHdlYktpdE1lZGlhU3JjU2V0UmVhZHlGb3JTYW1wbGVzKFdFQktJVF9NRURJQV9TUkMobV9z
b3VyY2UuZ2V0KCkpLCB0cnVlKTsKLSAgICAgICAgbV9pc1NlZWtpbmcgPSBmYWxzZTsKLSAgICAg
ICAgbV9nc3RTZWVrQ29tcGxldGVkID0gdHJ1ZTsKLSAgICAgICAgR1NUX0RFQlVHX09CSkVDVChw
aXBlbGluZSgpLCAiZG9TZWVrKCk6IGdzdF9lbGVtZW50X3NlZWsoKSBmYWlsZWQsIHJldHVybmlu
ZyBmYWxzZSIpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQorICAgIGlmIChzdGF0ZSA8
IEdTVF9TVEFURV9QQVVTRUQpIHsKKyAgICAgICAgLy8gU3BlY2lhbCBjYXNlIG9mIGluaXRpYWwg
c2Vlay4gV2Ugc2V0IHRoZSByaWdodCBzZWdtZW50IGluc3RlYWQgb2YgYSBzZWVrLgorICAgICAg
ICB3ZWJLaXRNZWRpYVNyY1ByZXBhcmVJbml0aWFsU2VlayhXRUJLSVRfTUVESUFfU1JDKG1fc291
cmNlLmdldCgpKSwgcmF0ZSwgc3RhcnRUaW1lLCBlbmRUaW1lKTsKKyAgICAgICAgbm90aWZ5U2Vl
a05lZWRzRGF0YUZvclRpbWUoc2Vla1RpbWUpOworICAgICAgICBHU1RfREVCVUcoImRvU2Vlaygp
OiBJbml0aWFsIHNlZWsgc3VjY2VlZGVkLCByZXR1cm5pbmcgdHJ1ZSIpOworICAgIH0gZWxzZSB7
CisgICAgICAgIC8vIFRoaXMgd2lsbCBjYWxsIG5vdGlmeVNlZWtOZWVkc0RhdGEoKSBhZnRlciBz
b21lIHRpbWUgdG8gdGVsbCB0aGF0IHRoZSBwaXBlbGluZSBpcyByZWFkeSBmb3Igc2FtcGxlIGVu
cXVldWluZy4KKyAgICAgICAgd2ViS2l0TWVkaWFTcmNQcmVwYXJlU2VlayhXRUJLSVRfTUVESUFf
U1JDKG1fc291cmNlLmdldCgpKSwgc2Vla1RpbWUpOwogCi0gICAgLy8gVGhlIHNhbXBsZXMgd2ls
bCBiZSBlbnF1ZXVlZCBpbiBub3RpZnlTZWVrTmVlZHNEYXRhKCkuCi0gICAgR1NUX0RFQlVHX09C
SkVDVChwaXBlbGluZSgpLCAiZG9TZWVrKCk6IGdzdF9lbGVtZW50X3NlZWsoKSBzdWNjZWVkZWQs
IHJldHVybmluZyB0cnVlIik7CisgICAgICAgIGlmICghZ3N0X2VsZW1lbnRfc2VlayhtX3BpcGVs
aW5lLmdldCgpLCByYXRlLCBHU1RfRk9STUFUX1RJTUUsIHNlZWtUeXBlLCBHU1RfU0VFS19UWVBF
X1NFVCwgdG9Hc3RDbG9ja1RpbWUoc3RhcnRUaW1lKSwgR1NUX1NFRUtfVFlQRV9TRVQsIHRvR3N0
Q2xvY2tUaW1lKGVuZFRpbWUpKSkgeworICAgICAgICAgICAgd2ViS2l0TWVkaWFTcmNTZXRSZWFk
eUZvclNhbXBsZXMoV0VCS0lUX01FRElBX1NSQyhtX3NvdXJjZS5nZXQoKSksIHRydWUpOworICAg
ICAgICAgICAgbV9pc1NlZWtpbmcgPSBmYWxzZTsKKyAgICAgICAgICAgIG1fZ3N0U2Vla0NvbXBs
ZXRlZCA9IHRydWU7CisgICAgICAgICAgICBHU1RfREVCVUcoImRvU2VlaygpOiBnc3RfZWxlbWVu
dF9zZWVrKCkgZmFpbGVkLCByZXR1cm5pbmcgZmFsc2UiKTsKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgfQorICAgICAgICAvLyBUaGUgc2FtcGxlcyB3aWxsIGJlIGVucXVldWVk
IGluIG5vdGlmeVNlZWtOZWVkc0RhdGEoKS4KKyAgICAgICAgR1NUX0RFQlVHKCJkb1NlZWsoKTog
Z3N0X2VsZW1lbnRfc2VlaygpIHN1Y2NlZWRlZCwgcmV0dXJuaW5nIHRydWUiKTsKKyAgICB9CiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvV2ViS2l0TWVkaWFTb3VyY2VHU3RyZWFtZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9XZWJLaXRNZWRp
YVNvdXJjZUdTdHJlYW1lci5jcHAKaW5kZXggMWFkNDQyNDkwMjE5NTY0ZDUwMDFjZjQ2OGRlZTI4
N2MwZDQxMmYxMS4uYzgzYjEwNGViMTNmMjlkZTFmZjkxYjJkZWZkYjQ0NDY4NDI4MTgzYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9X
ZWJLaXRNZWRpYVNvdXJjZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9XZWJLaXRNZWRpYVNvdXJjZUdTdHJlYW1lci5jcHAK
QEAgLTcyOSw2ICs3MjksNTUgQEAgdm9pZCB3ZWJLaXRNZWRpYVNyY1ByZXBhcmVTZWVrKFdlYktp
dE1lZGlhU3JjKiBzb3VyY2UsIGNvbnN0IE1lZGlhVGltZSYgdGltZSkKICAgICBHU1RfT0JKRUNU
X1VOTE9DSyhzb3VyY2UpOwogfQogCitHc3RQYWRQcm9iZVJldHVybiBpbml0aWFsU2Vla1NlZ21l
bnRGaXhlclByb2JlKEdzdFBhZCAqcGFkLCBHc3RQYWRQcm9iZUluZm8gKmluZm8sIGdwb2ludGVy
IHVzZXJEYXRhKQoreworICAgIEdzdEV2ZW50KiBldmVudCA9IEdTVF9QQURfUFJPQkVfSU5GT19F
VkVOVChpbmZvKTsKKyAgICBpZiAoR1NUX0VWRU5UX1RZUEUoZXZlbnQpID09IEdTVF9FVkVOVF9T
RUdNRU5UKSB7CisgICAgICAgIGNvbnN0IEdzdFNlZ21lbnQqIG9yaWdpbmFsU2VnbWVudCA9IG51
bGxwdHI7CisgICAgICAgIGNvbnN0IEdzdFNlZ21lbnQqIGZpeGVkU2VnbWVudCA9IHN0YXRpY19j
YXN0PEdzdFNlZ21lbnQqPih1c2VyRGF0YSk7CisgICAgICAgIGdzdF9ldmVudF9wYXJzZV9zZWdt
ZW50KGV2ZW50LCBjb25zdF9jYXN0PGNvbnN0IEdzdFNlZ21lbnQqKj4oJm9yaWdpbmFsU2VnbWVu
dCkpOworICAgICAgICBHU1RfREVCVUcoIlNlZ21lbnQgYXQgJXM6ICUiIEdTVF9TRUdNRU5UX0ZP
Uk1BVCAiLCByZXBsYWNlZCBieSAlIiBHU1RfU0VHTUVOVF9GT1JNQVQsIEdTVF9FTEVNRU5UX05B
TUUoR1NUX1BBRF9QQVJFTlQocGFkKSksIG9yaWdpbmFsU2VnbWVudCwgZml4ZWRTZWdtZW50KTsK
KyAgICAgICAgZ3N0X3NlZ21lbnRfY29weV9pbnRvKGZpeGVkU2VnbWVudCwgY29uc3RfY2FzdDxH
c3RTZWdtZW50Kj4ob3JpZ2luYWxTZWdtZW50KSk7CisgICAgICAgIHJldHVybiBHU1RfUEFEX1BS
T0JFX1JFTU9WRTsKKyAgICB9CisgICAgcmV0dXJuIEdTVF9QQURfUFJPQkVfT0s7Cit9CisKK3Zv
aWQgd2ViS2l0TWVkaWFTcmNQcmVwYXJlSW5pdGlhbFNlZWsoV2ViS2l0TWVkaWFTcmMqIHNvdXJj
ZSwgZG91YmxlIHJhdGUsIGNvbnN0IE1lZGlhVGltZSYgc3RhcnRUaW1lLCBjb25zdCBNZWRpYVRp
bWUmIGVuZFRpbWUpCit7CisgICAgR1NUX09CSkVDVF9MT0NLKHNvdXJjZSk7CisgICAgTWVkaWFU
aW1lIHNlZWtUaW1lID0gKHJhdGUgPj0gMCkgPyBzdGFydFRpbWUgOiBlbmRUaW1lOworICAgIHNv
dXJjZS0+cHJpdi0+c2Vla1RpbWUgPSBzZWVrVGltZTsKKyAgICBzb3VyY2UtPnByaXYtPmFwcHNy
Y1NlZWtEYXRhQ291bnQgPSAwOworICAgIHNvdXJjZS0+cHJpdi0+YXBwc3JjTmVlZERhdGFDb3Vu
dCA9IDA7CisKKyAgICBmb3IgKFN0cmVhbSogc3RyZWFtIDogc291cmNlLT5wcml2LT5zdHJlYW1z
KSB7CisgICAgICAgIHN0cmVhbS0+YXBwc3JjTmVlZERhdGFGbGFnID0gZmFsc2U7CisgICAgICAg
IC8vIERvbid0IGFsbG93IHNhbXBsZXMgYXdheSBmcm9tIHRoZSBzZWVrVGltZSB0byBiZSBlbnF1
ZXVlZC4KKyAgICAgICAgc3RyZWFtLT5sYXN0RW5xdWV1ZWRUaW1lID0gc2Vla1RpbWU7CisgICAg
fQorCisgICAgLy8gVGhlIHBlbmRpbmcgYWN0aW9uIHdpbGwgYmUgcGVyZm9ybWVkIGluIGVuYWJs
ZWRBcHBzcmNTZWVrRGF0YSgpLgorICAgIHNvdXJjZS0+cHJpdi0+YXBwc3JjU2Vla0RhdGFOZXh0
QWN0aW9uID0gTWVkaWFTb3VyY2VTZWVrVG9UaW1lOworCisgICAgR1VuaXF1ZVB0cjxHc3RTZWdt
ZW50PiBzZWdtZW50KGdzdF9zZWdtZW50X25ldygpKTsKKyAgICBzZWdtZW50LT5mb3JtYXQgPSBH
U1RfRk9STUFUX1RJTUU7CisgICAgZ3N0X3NlZ21lbnRfZG9fc2VlayhzZWdtZW50LmdldCgpLCBy
YXRlLCBHU1RfRk9STUFUX1RJTUUsCisgICAgICAgIHN0YXRpY19jYXN0PEdzdFNlZWtGbGFncz4o
R1NUX1NFRUtfRkxBR19GTFVTSCB8IEdTVF9TRUVLX0ZMQUdfQUNDVVJBVEUpLAorICAgICAgICBH
U1RfU0VFS19UWVBFX1NFVCwgV2ViQ29yZTo6dG9Hc3RVbnNpZ25lZDY0VGltZShzdGFydFRpbWUp
LAorICAgICAgICBHU1RfU0VFS19UWVBFX1NFVCwgV2ViQ29yZTo6dG9Hc3RVbnNpZ25lZDY0VGlt
ZShlbmRUaW1lKSwgbnVsbHB0cik7CisKKyAgICBmb3IgKFN0cmVhbSogc3RyZWFtIDogc291cmNl
LT5wcml2LT5zdHJlYW1zKSB7CisgICAgICAgIC8vIFRoaXMgcHJvYmUgd2lsbCBmaXggdGhlIHNl
Z21lbnQgYXV0b2dlbmVyYXRlZCBieSBhcHBzcmMuCisgICAgICAgIEdSZWZQdHI8R3N0UGFkPiBw
YWQgPSBhZG9wdEdSZWYoZ3N0X2VsZW1lbnRfZ2V0X3N0YXRpY19wYWQoc3RyZWFtLT5hcHBzcmMs
ICJzcmMiKSk7CisgICAgICAgIGdzdF9wYWRfYWRkX3Byb2JlKHBhZC5nZXQoKSwgR1NUX1BBRF9Q
Uk9CRV9UWVBFX0VWRU5UX0RPV05TVFJFQU0sCisgICAgICAgICAgICBpbml0aWFsU2Vla1NlZ21l
bnRGaXhlclByb2JlLCBnc3Rfc2VnbWVudF9jb3B5KHNlZ21lbnQuZ2V0KCkpLCByZWludGVycHJl
dF9jYXN0PEdEZXN0cm95Tm90aWZ5Pihnc3Rfc2VnbWVudF9mcmVlKSk7CisgICAgICAgIHN0cmVh
bS0+c291cmNlQnVmZmVyLT5zZXRSZWFkeUZvck1vcmVTYW1wbGVzKHRydWUpOworICAgIH0KKwor
ICAgIEdTVF9PQkpFQ1RfVU5MT0NLKHNvdXJjZSk7Cit9CisKIG5hbWVzcGFjZSBXVEYgewogdGVt
cGxhdGUgPD4gR1JlZlB0cjxXZWJLaXRNZWRpYVNyYz4gYWRvcHRHUmVmKFdlYktpdE1lZGlhU3Jj
KiBwdHIpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvbXNlL1dlYktpdE1lZGlhU291cmNlR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL1dlYktpdE1lZGlhU291cmNlR1N0cmVh
bWVyLmgKaW5kZXggNmM0NWViNjg3M2VjYmQ5NTJlNTcwOTc5ZmY5YzE0Zjk3ZWU4ODNlZS4uOWE3
NzQ2OWFiOWM2MzllNGU1YjNkNzU3ZjFlYTkyODVkNjhhODkzMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9XZWJLaXRNZWRpYVNvdXJj
ZUdTdHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9tc2UvV2ViS2l0TWVkaWFTb3VyY2VHU3RyZWFtZXIuaApAQCAtNzMsNiArNzMsNyBAQCBH
VHlwZSB3ZWJraXRfbWVkaWFfc3JjX2dldF90eXBlKHZvaWQpOwogdm9pZCB3ZWJLaXRNZWRpYVNy
Y1NldE1lZGlhUGxheWVyUHJpdmF0ZShXZWJLaXRNZWRpYVNyYyosIFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lck1TRSopOwogCiB2b2lkIHdlYktpdE1lZGlhU3JjUHJlcGFyZVNl
ZWsoV2ViS2l0TWVkaWFTcmMqLCBjb25zdCBNZWRpYVRpbWUmKTsKK3ZvaWQgd2ViS2l0TWVkaWFT
cmNQcmVwYXJlSW5pdGlhbFNlZWsoV2ViS2l0TWVkaWFTcmMqLCBkb3VibGUgcmF0ZSwgY29uc3Qg
TWVkaWFUaW1lJiBzdGFydFRpbWUsIGNvbnN0IE1lZGlhVGltZSYgZW5kVGltZSk7CiB2b2lkIHdl
YktpdE1lZGlhU3JjU2V0UmVhZHlGb3JTYW1wbGVzKFdlYktpdE1lZGlhU3JjKiwgYm9vbCk7CiAK
IEdfRU5EX0RFQ0xTCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKaW5kZXggYTk0Y2UxMzI0YTc2MTBiMDM0ZDE0ODA5NGNmZDYwYjJiNDhm
YjRiMy4uN2RlNzI0NGJiOTM1MmFlZjhhMjJiNWU4Mzk3ODU5MTc4M2U2ODIzYyAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE2IEBACisyMDIwLTA0LTIxICBFbnJpcXVlIE9jYcOxYSBHb256w6FsZXogIDxlb2Nh
bmhhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dTdHJlYW1lcl1bTVNFXSBZb3V0dWJlICdsaXZl
IHN0cmVhbScvSDI2NCBVUkxzIGZhaWwgdG8gcGxheSwgVlA4LzkgVVJMcyBwbGF5IE9LCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDkxMTkKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVbnNraXBwZWQgbWVk
aWEvbWVkaWEtc291cmNlL21lZGlhLXNvdXJjZS1zZWVrLXJlZHVuZGFudC1hcHBlbmQuaHRtbCwK
KyAgICAgICAgd2hpY2ggcGFzc2VzIG5vdy4KKworICAgICAgICAqIHBsYXRmb3JtL2d0ay9UZXN0
RXhwZWN0YXRpb25zOgorICAgICAgICAqIHBsYXRmb3JtL3dwZS9UZXN0RXhwZWN0YXRpb25zOgor
CiAyMDIwLTA0LTE3ICBPcmlvbCBCcnVmYXUgIDxvYnJ1ZmF1QGlnYWxpYS5jb20+CiAKICAgICAg
ICAgUmV2ZXJ0ICJbY3NzLWdyaWRdIEV4Y2x1ZGUgaW1wbGljaXQgZ3JpZCB0cmFja3MgZnJvbSB0
aGUgcmVzb2x2ZWQgdmFsdWUiCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsv
VGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRp
b25zCmluZGV4IDE3OTI1NmE3YTA0ZjJjYTU0ODBhZGE1MjE2MWJiNmZkODI1NTBlZmUuLjRlOTlm
MWZmMGY1Yjk0ODEwNTRiMTYwNTBhZmI3NDk0MDZjZmRhOTIgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zCkBAIC0zMzI1LDggKzMzMjUsNiBAQCB3ZWJraXQub3Jn
L2IvMjA2MTQ5IHdlYnJ0Yy9wZWVyLWNvbm5lY3Rpb24tcmVtb3RlLWF1ZGlvLW11dGUuaHRtbCBb
IFRpbWVvdXQgXQogd2Via2l0Lm9yZy9iLzIwMjczNiBodHRwL3Rlc3RzL2FwcGNhY2hlL3JlbW92
ZS1jYWNoZS5odG1sIFsgRmFpbHVyZSBUaW1lb3V0IFBhc3MgXQogd2Via2l0Lm9yZy9iLzIwMjcz
NiBbIFJlbGVhc2UgXSBodHRwL3dwdC9jYWNoZS1zdG9yYWdlL3F1b3RhLXRoaXJkLXBhcnR5Lmh0
dHBzLmh0bWwgWyBGYWlsdXJlIFRpbWVvdXQgUGFzcyBdCiAKLXdlYmtpdC5vcmcvYi8yMDY4NzMg
bWVkaWEvbWVkaWEtc291cmNlL21lZGlhLXNvdXJjZS1zZWVrLXJlZHVuZGFudC1hcHBlbmQuaHRt
bCBbIFRpbWVvdXQgXQotCiB3ZWJraXQub3JnL2IvMjA2ODc2IGh0dHAvdGVzdHMvc2VjdXJpdHkv
c3RvcmFnZS1ibG9ja2luZy1zdHJlbmd0aGVuZWQtcHJpdmF0ZS1icm93c2luZy1wbHVnaW4uaHRt
bCBbIFRpbWVvdXQgXQogCiB3ZWJraXQub3JnL2IvMjA3NzExIFsgUmVsZWFzZSBdIGZhc3QvaGlz
dG9yeS9wYWdlLWNhY2hlLXdlYmRhdGFiYXNlLXBlbmRpbmctdHJhbnNhY3Rpb24uaHRtbCBbIFRp
bWVvdXQgXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd3BlL1Rlc3RFeHBlY3Rh
dGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93cGUvVGVzdEV4cGVjdGF0aW9ucwppbmRleCAy
MTZiZDc5NzdlNzJhNTJiZDAyYmE2ZTQ1Y2Q4YTM5Y2Q3NzVkNmFkLi5jZDQ3MDE2NjJjNGNlNDQ2
Y2UzZmY1ZGZkZTIwYWY0YjcyMTI1ZDg0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS93cGUvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93cGUvVGVz
dEV4cGVjdGF0aW9ucwpAQCAtMTQ5NCw4ICsxNDk0LDYgQEAgd2Via2l0Lm9yZy9iLzE5MTAwOCB3
ZWJhbmltYXRpb25zL2FjY2VsZXJhdGVkLWFuaW1hdGlvbi1zdXNwZW5zaW9uLmh0bWwgWyBUaW1l
b3UKIAogd2Via2l0Lm9yZy9iLzIwMTI2OCBhY2Nlc3NpYmlsaXR5L2luc2VydC1uZXdsaW5lLmh0
bWwgWyBUaW1lb3V0IF0KIAotd2Via2l0Lm9yZy9iLzIwNjg3MyBtZWRpYS9tZWRpYS1zb3VyY2Uv
bWVkaWEtc291cmNlLXNlZWstcmVkdW5kYW50LWFwcGVuZC5odG1sIFsgVGltZW91dCBdCi0KIHdl
YmtpdC5vcmcvYi8yMDc3MTEgWyBEZWJ1ZyBdIGZhc3Qvc2VsZWN0b3JzL3Nsb3ctc3R5bGUtc2hh
cmluZy13aXRoLWxvbmctY291c2luLWxpc3QuaHRtbCBbIFRpbWVvdXQgXQogd2Via2l0Lm9yZy9i
LzIwNzcxMSBodHRwL3Rlc3RzL2Nvb2tpZXMvZG91YmxlLXF1b3RlZC12YWx1ZS13aXRoLXNlbWkt
Y29sb24uaHRtbCBbIEZhaWx1cmUgVGltZW91dCBdCiB3ZWJraXQub3JnL2IvMjA3NzExIFsgUmVs
ZWFzZSBdIGZhc3QvaGlzdG9yeS9wYWdlLWNhY2hlLXdlYmRhdGFiYXNlLXBlbmRpbmctdHJhbnNh
Y3Rpb24uaHRtbCBbIFRpbWVvdXQgXQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>397093</attachid>
            <date>2020-04-21 10:28:10 -0700</date>
            <delta_ts>2020-04-22 04:01:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209119-20200421172809.patch</filename>
            <type>text/plain</type>
            <size>12888</size>
            <attacher name="Enrique Ocaña">eocanha</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwMjU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmI1NTgzYTE2OWU0Zjhk
MGQ0NWViMTkzOTkxMjAxYzdlNzUyMGIzOS4uZjZkNWNjYjM0NTJiZTM2MTc5YzY5ZjRiZjRiOWIx
MDA2Mjg4MmRkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDIwLTA0LTIxICBFbnJp
cXVlIE9jYcOxYSBHb256w6FsZXogIDxlb2NhbmhhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dT
dHJlYW1lcl1bTVNFXSBZb3V0dWJlICdsaXZlIHN0cmVhbScvSDI2NCBVUkxzIGZhaWwgdG8gcGxh
eSwgVlA4LzkgVVJMcyBwbGF5IE9LCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMDkxMTkKKworICAgICAgICBSZXZpZXdlZCBieSBYYWJpZXIgUm9kcmln
dWV6LUNhbHZhci4KKworICAgICAgICBUaGUgZml4IGNvbnNpc3RzIG9mIHJlbW92aW5nIHRoZSBp
bml0aWFsIGF2b2lkaW5nIG9mIHNlZWtpbmcgYW5kIGp1c3QKKyAgICAgICAgaXNzdWluZyB0aGUg
cHJvcGVyIHNlZ21lbnQgaW5zdGVhZCBvZiBzZWVraW5nIChzZWVrcyBpbiBHU3RyZWFtZXIgY2Fu
J3QKKyAgICAgICAgYmUgZG9uZSBiZWZvcmUgcHJlcm9sbGluZyBhbnl3YXkpLiBBcHBzcmMgZG9l
c24ndCBtYWtlIGVhc3kgdG8gZW1pdCBvdXIKKyAgICAgICAgb3duIGN1c3RvbSBzZWdtZW50LCBz
byB3aGF0IEkgZGlkIHdhcyB0byB1c2UgYSBzZWdtZW50IGZpeGVyIHByb2JlIHRvCisgICAgICAg
IG1vZGlmeSB0aGUgb3JpZ2luYWwgWzAsIGluZmluaXR5XSBzZWdtZW50IGlzc3VlZCBieSBhcHBz
cmMgYW5kIHVzZQorICAgICAgICBhIFtzdGFydFRpbWUsIHN0b3BUaW1lXSB3aXRoIHByb3BlciB2
YWx1ZXMgZGVwZW5kaW5nIG9uIHRoZSBzZWVrIHRhcmdldAorICAgICAgICBhbmQgcmF0ZS4KKwor
ICAgICAgICBDb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Y2hlY2tTdGF0ZUNoYW5nZVNob3VsZERlbGF5U2Vlayk6IERv
bid0IGhvbGQgc2Vla3Mgb24gc3RhcnR1cCwgd2hlbiBjaGFuZ2luZyBmcm9tIFJFQURZIHRvIFBB
VVNFRC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRTo6
ZG9TZWVrKTogUmVmYWN0b3JlZCBzZWVrIGRlbGF5IGNvbmRpdGlvbi4gQWxzbywgZG9uJ3QgZG8g
YSByZWd1bGFyCisgICAgICAgIGdzdF9lbGVtZW50X3NlZWsoKSBmb3IgaW5pdGlhbCBzZWVrcywg
anVzdCBwcm9jZWVkIHdpdGggYSBzcGVjaWFsIGNhc2UgaW4gdGhhdCBzaXR1YXRpb24uCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9XZWJLaXRNZWRpYVNvdXJjZUdT
dHJlYW1lci5jcHA6CisgICAgICAgIChpbml0aWFsU2Vla1NlZ21lbnRGaXhlclByb2JlKTogUHJv
YmUgdGhhdCBmaXhlcyB0aGUgc2VnbWVudC4KKyAgICAgICAgKHdlYktpdE1lZGlhU3JjUHJlcGFy
ZUluaXRpYWxTZWVrKTogQmVoYXZlIG11Y2ggbGlrZSBhIHJlZ3VsYXIgc2VlaywgYnV0IGFsc28g
Y29tcHV0ZSB0aGUgcmlnaHQgR3N0U2VnbWVudCwgaW5zdGFsbAorICAgICAgICB0aGUgc2VnbWVu
dCBmaXhlciBwcm9iZSBhbmQgc2V0UmVhZHlGb3JNb3JlU2FtcGxlcygpIG9uIHRoZSBTb3VyY2VC
dWZmZXJQcml2YXRlcy4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNl
L1dlYktpdE1lZGlhU291cmNlR1N0cmVhbWVyLmg6CisKIDIwMjAtMDQtMTcgIENsYXVkaW8gU2Fh
dmVkcmEgIDxjc2FhdmVkcmFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBVcGRhdGUgZm9y
IEdka0tleW1hcCBBUEkgY2hhbmdlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UuY3BwCmluZGV4IDFiNzAwYmJjMDg0YzcxMjlkZGIw
MTQ3YjQ0NmQ5MWU0NjhlYzkyZjAuLjI5MmJhZTBlYTc1Y2I5MDE4MmZlN2UzZGEwMmJkOTJmMDlh
MTEyZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9tc2UvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lck1TRS5jcHAKQEAgLTI0MSw2ICsyNDEsMTcgQEAgdm9pZCBNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXJNU0U6Om5vdGlmeVNlZWtOZWVkc0RhdGFGb3JUaW1lKGNvbnN0IE1lZGlh
VGltZSYKICAgICB9CiB9CiAKK3N0YXRpYyBib29sIGNoZWNrU3RhdGVDaGFuZ2VTaG91bGREZWxh
eVNlZWsoR3N0U3RhdGVDaGFuZ2VSZXR1cm4gZ2V0U3RhdGVSZXN1bHQsIEdzdFN0YXRlIGN1cnJl
bnRTdGF0ZSwgR3N0U3RhdGUgbmV3U3RhdGUpCit7CisgICAgaWYgKGdldFN0YXRlUmVzdWx0ICE9
IEdTVF9TVEFURV9DSEFOR0VfQVNZTkMpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAo
R1NUX1NUQVRFX1RSQU5TSVRJT04oY3VycmVudFN0YXRlLCBuZXdTdGF0ZSkgPT0gR1NUX1NUQVRF
X0NIQU5HRV9QTEFZSU5HX1RPX1BBVVNFRCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlm
IChjdXJyZW50U3RhdGUgPT0gR1NUX1NUQVRFX1JFQURZICYmIG5ld1N0YXRlID49IEdTVF9TVEFU
RV9QQVVTRUQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwog
Ym9vbCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0U6OmRvU2Vlayhjb25zdCBNZWRpYVRp
bWUmIHBvc2l0aW9uLCBmbG9hdCByYXRlLCBHc3RTZWVrRmxhZ3Mgc2Vla1R5cGUpCiB7CiAgICAg
Ly8gRklYTUU6IE1ha2UgYSBjb3B5IGhlcmUgYmVjYXVzZSBpbiBzb21lIGNhc2VzIGJlbG93IGl0
IGlzIG1vZGlmaWVkLiBUaGlzCkBAIC0yNTksMTMgKzI3MCwxMSBAQCBib29sIE1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lck1TRTo6ZG9TZWVrKGNvbnN0IE1lZGlhVGltZSYgcG9zaXRpb24sIGZs
b2F0IHJhdAogICAgICAgICBtX2lzU2Vla2luZyA9IGZhbHNlOwogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQotICAgIGlmICgoZ2V0U3RhdGVSZXN1bHQgPT0gR1NUX1NUQVRFX0NIQU5HRV9B
U1lOQwotICAgICAgICAmJiAhKHN0YXRlID09IEdTVF9TVEFURV9QTEFZSU5HICYmIG5ld1N0YXRl
ID09IEdTVF9TVEFURV9QQVVTRUQpKQotICAgICAgICB8fCBzdGF0ZSA8IEdTVF9TVEFURV9QQVVT
RUQKLSAgICAgICAgfHwgbV9pc0VuZFJlYWNoZWQKLSAgICAgICAgfHwgIW1fZ3N0U2Vla0NvbXBs
ZXRlZCkgeworCisgICAgYm9vbCBzdGF0ZUNoYW5nZVNob3VsZERlbGF5U2VlayA9IGNoZWNrU3Rh
dGVDaGFuZ2VTaG91bGREZWxheVNlZWsoZ2V0U3RhdGVSZXN1bHQsIHN0YXRlLCBuZXdTdGF0ZSk7
CisgICAgaWYgKHN0YXRlQ2hhbmdlU2hvdWxkRGVsYXlTZWVrIHx8IG1faXNFbmRSZWFjaGVkIHx8
ICFtX2dzdFNlZWtDb21wbGV0ZWQpIHsKICAgICAgICAgQ1N0cmluZyByZWFzb24gPSAiVW5rbm93
biByZWFzb24iOwotICAgICAgICBpZiAoZ2V0U3RhdGVSZXN1bHQgPT0gR1NUX1NUQVRFX0NIQU5H
RV9BU1lOQykgeworICAgICAgICBpZiAoc3RhdGVDaGFuZ2VTaG91bGREZWxheVNlZWspIHsKICAg
ICAgICAgICAgIHJlYXNvbiA9IG1ha2VTdHJpbmcoIkluIGFzeW5jIGNoYW5nZSAiLAogICAgICAg
ICAgICAgICAgIGdzdF9lbGVtZW50X3N0YXRlX2dldF9uYW1lKHN0YXRlKSwgIiAtLT4gIiwKICAg
ICAgICAgICAgICAgICBnc3RfZWxlbWVudF9zdGF0ZV9nZXRfbmFtZShuZXdTdGF0ZSkpLnV0Zjgo
KTsKQEAgLTM0NywyMCArMzU2LDI2IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
TVNFOjpkb1NlZWsoY29uc3QgTWVkaWFUaW1lJiBwb3NpdGlvbiwgZmxvYXQgcmF0CiAKICAgICBH
U1RfREVCVUdfT0JKRUNUKHBpcGVsaW5lKCksICJBY3R1YWwgc2VlayB0byAlcywgZW5kIHRpbWU6
ICAlcywgcmF0ZTogJWYiLCB0b1N0cmluZyhzdGFydFRpbWUpLnV0ZjgoKS5kYXRhKCksIHRvU3Ry
aW5nKGVuZFRpbWUpLnV0ZjgoKS5kYXRhKCksIHJhdGUpOwogCi0gICAgLy8gVGhpcyB3aWxsIGNh
bGwgbm90aWZ5U2Vla05lZWRzRGF0YSgpIGFmdGVyIHNvbWUgdGltZSB0byB0ZWxsIHRoYXQgdGhl
IHBpcGVsaW5lIGlzIHJlYWR5IGZvciBzYW1wbGUgZW5xdWV1aW5nLgotICAgIHdlYktpdE1lZGlh
U3JjUHJlcGFyZVNlZWsoV0VCS0lUX01FRElBX1NSQyhtX3NvdXJjZS5nZXQoKSksIHNlZWtUaW1l
KTsKLQogICAgIG1fZ3N0U2Vla0NvbXBsZXRlZCA9IGZhbHNlOwotICAgIGlmICghZ3N0X2VsZW1l
bnRfc2VlayhtX3BpcGVsaW5lLmdldCgpLCByYXRlLCBHU1RfRk9STUFUX1RJTUUsIHNlZWtUeXBl
LCBHU1RfU0VFS19UWVBFX1NFVCwgdG9Hc3RDbG9ja1RpbWUoc3RhcnRUaW1lKSwgR1NUX1NFRUtf
VFlQRV9TRVQsIHRvR3N0Q2xvY2tUaW1lKGVuZFRpbWUpKSkgewotICAgICAgICB3ZWJLaXRNZWRp
YVNyY1NldFJlYWR5Rm9yU2FtcGxlcyhXRUJLSVRfTUVESUFfU1JDKG1fc291cmNlLmdldCgpKSwg
dHJ1ZSk7Ci0gICAgICAgIG1faXNTZWVraW5nID0gZmFsc2U7Ci0gICAgICAgIG1fZ3N0U2Vla0Nv
bXBsZXRlZCA9IHRydWU7Ci0gICAgICAgIEdTVF9ERUJVR19PQkpFQ1QocGlwZWxpbmUoKSwgImRv
U2VlaygpOiBnc3RfZWxlbWVudF9zZWVrKCkgZmFpbGVkLCByZXR1cm5pbmcgZmFsc2UiKTsKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KKyAgICBpZiAoc3RhdGUgPCBHU1RfU1RBVEVfUEFV
U0VEKSB7CisgICAgICAgIC8vIFNwZWNpYWwgY2FzZSBvZiBpbml0aWFsIHNlZWsuIFdlIHNldCB0
aGUgcmlnaHQgc2VnbWVudCBpbnN0ZWFkIG9mIGEgc2Vlay4KKyAgICAgICAgd2ViS2l0TWVkaWFT
cmNQcmVwYXJlSW5pdGlhbFNlZWsoV0VCS0lUX01FRElBX1NSQyhtX3NvdXJjZS5nZXQoKSksIHJh
dGUsIHN0YXJ0VGltZSwgZW5kVGltZSk7CisgICAgICAgIG5vdGlmeVNlZWtOZWVkc0RhdGFGb3JU
aW1lKHNlZWtUaW1lKTsKKyAgICAgICAgR1NUX0RFQlVHKCJkb1NlZWsoKTogSW5pdGlhbCBzZWVr
IHN1Y2NlZWRlZCwgcmV0dXJuaW5nIHRydWUiKTsKKyAgICB9IGVsc2UgeworICAgICAgICAvLyBU
aGlzIHdpbGwgY2FsbCBub3RpZnlTZWVrTmVlZHNEYXRhKCkgYWZ0ZXIgc29tZSB0aW1lIHRvIHRl
bGwgdGhhdCB0aGUgcGlwZWxpbmUgaXMgcmVhZHkgZm9yIHNhbXBsZSBlbnF1ZXVpbmcuCisgICAg
ICAgIHdlYktpdE1lZGlhU3JjUHJlcGFyZVNlZWsoV0VCS0lUX01FRElBX1NSQyhtX3NvdXJjZS5n
ZXQoKSksIHNlZWtUaW1lKTsKIAotICAgIC8vIFRoZSBzYW1wbGVzIHdpbGwgYmUgZW5xdWV1ZWQg
aW4gbm90aWZ5U2Vla05lZWRzRGF0YSgpLgotICAgIEdTVF9ERUJVR19PQkpFQ1QocGlwZWxpbmUo
KSwgImRvU2VlaygpOiBnc3RfZWxlbWVudF9zZWVrKCkgc3VjY2VlZGVkLCByZXR1cm5pbmcgdHJ1
ZSIpOworICAgICAgICBpZiAoIWdzdF9lbGVtZW50X3NlZWsobV9waXBlbGluZS5nZXQoKSwgcmF0
ZSwgR1NUX0ZPUk1BVF9USU1FLCBzZWVrVHlwZSwgR1NUX1NFRUtfVFlQRV9TRVQsIHRvR3N0Q2xv
Y2tUaW1lKHN0YXJ0VGltZSksIEdTVF9TRUVLX1RZUEVfU0VULCB0b0dzdENsb2NrVGltZShlbmRU
aW1lKSkpIHsKKyAgICAgICAgICAgIHdlYktpdE1lZGlhU3JjU2V0UmVhZHlGb3JTYW1wbGVzKFdF
QktJVF9NRURJQV9TUkMobV9zb3VyY2UuZ2V0KCkpLCB0cnVlKTsKKyAgICAgICAgICAgIG1faXNT
ZWVraW5nID0gZmFsc2U7CisgICAgICAgICAgICBtX2dzdFNlZWtDb21wbGV0ZWQgPSB0cnVlOwor
ICAgICAgICAgICAgR1NUX0RFQlVHKCJkb1NlZWsoKTogZ3N0X2VsZW1lbnRfc2VlaygpIGZhaWxl
ZCwgcmV0dXJuaW5nIGZhbHNlIik7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
IH0KKyAgICAgICAgLy8gVGhlIHNhbXBsZXMgd2lsbCBiZSBlbnF1ZXVlZCBpbiBub3RpZnlTZWVr
TmVlZHNEYXRhKCkuCisgICAgICAgIEdTVF9ERUJVRygiZG9TZWVrKCk6IGdzdF9lbGVtZW50X3Nl
ZWsoKSBzdWNjZWVkZWQsIHJldHVybmluZyB0cnVlIik7CisgICAgfQogICAgIHJldHVybiB0cnVl
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvbXNlL1dlYktpdE1lZGlhU291cmNlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvV2ViS2l0TWVkaWFTb3VyY2VHU3RyZWFt
ZXIuY3BwCmluZGV4IDFhZDQ0MjQ5MDIxOTU2NGQ1MDAxY2Y0NjhkZWUyODdjMGQ0MTJmMTEuLmQx
ZWE5YTM0YjI2Y2FjNjczZGE4ZmQ4NDcyYTAyNWM2ODBiYzQ5ODkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvV2ViS2l0TWVkaWFTb3Vy
Y2VHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9tc2UvV2ViS2l0TWVkaWFTb3VyY2VHU3RyZWFtZXIuY3BwCkBAIC03MjksNiArNzI5
LDU1IEBAIHZvaWQgd2ViS2l0TWVkaWFTcmNQcmVwYXJlU2VlayhXZWJLaXRNZWRpYVNyYyogc291
cmNlLCBjb25zdCBNZWRpYVRpbWUmIHRpbWUpCiAgICAgR1NUX09CSkVDVF9VTkxPQ0soc291cmNl
KTsKIH0KIAorR3N0UGFkUHJvYmVSZXR1cm4gaW5pdGlhbFNlZWtTZWdtZW50Rml4ZXJQcm9iZShH
c3RQYWQgKnBhZCwgR3N0UGFkUHJvYmVJbmZvICppbmZvLCBncG9pbnRlciB1c2VyRGF0YSkKK3sK
KyAgICBHc3RFdmVudCogZXZlbnQgPSBHU1RfUEFEX1BST0JFX0lORk9fRVZFTlQoaW5mbyk7Cisg
ICAgaWYgKEdTVF9FVkVOVF9UWVBFKGV2ZW50KSA9PSBHU1RfRVZFTlRfU0VHTUVOVCkgeworICAg
ICAgICBjb25zdCBHc3RTZWdtZW50KiBvcmlnaW5hbFNlZ21lbnQgPSBudWxscHRyOworICAgICAg
ICBjb25zdCBHc3RTZWdtZW50KiBmaXhlZFNlZ21lbnQgPSBzdGF0aWNfY2FzdDxHc3RTZWdtZW50
Kj4odXNlckRhdGEpOworICAgICAgICBnc3RfZXZlbnRfcGFyc2Vfc2VnbWVudChldmVudCwgJm9y
aWdpbmFsU2VnbWVudCk7CisgICAgICAgIEdTVF9ERUJVRygiU2VnbWVudCBhdCAlczogJSIgR1NU
X1NFR01FTlRfRk9STUFUICIsIHJlcGxhY2VkIGJ5ICUiIEdTVF9TRUdNRU5UX0ZPUk1BVCwgR1NU
X0VMRU1FTlRfTkFNRShHU1RfUEFEX1BBUkVOVChwYWQpKSwgb3JpZ2luYWxTZWdtZW50LCBmaXhl
ZFNlZ21lbnQpOworICAgICAgICBnc3RfZXZlbnRfcmVwbGFjZShyZWludGVycHJldF9jYXN0PEdz
dEV2ZW50Kio+KCZpbmZvLT5kYXRhKSwgZ3N0X2V2ZW50X25ld19zZWdtZW50KGZpeGVkU2VnbWVu
dCkpOworICAgICAgICByZXR1cm4gR1NUX1BBRF9QUk9CRV9SRU1PVkU7CisgICAgfQorICAgIHJl
dHVybiBHU1RfUEFEX1BST0JFX09LOworfQorCit2b2lkIHdlYktpdE1lZGlhU3JjUHJlcGFyZUlu
aXRpYWxTZWVrKFdlYktpdE1lZGlhU3JjKiBzb3VyY2UsIGRvdWJsZSByYXRlLCBjb25zdCBNZWRp
YVRpbWUmIHN0YXJ0VGltZSwgY29uc3QgTWVkaWFUaW1lJiBlbmRUaW1lKQoreworICAgIEdTVF9P
QkpFQ1RfTE9DSyhzb3VyY2UpOworICAgIE1lZGlhVGltZSBzZWVrVGltZSA9IChyYXRlID49IDAp
ID8gc3RhcnRUaW1lIDogZW5kVGltZTsKKyAgICBzb3VyY2UtPnByaXYtPnNlZWtUaW1lID0gc2Vl
a1RpbWU7CisgICAgc291cmNlLT5wcml2LT5hcHBzcmNTZWVrRGF0YUNvdW50ID0gMDsKKyAgICBz
b3VyY2UtPnByaXYtPmFwcHNyY05lZWREYXRhQ291bnQgPSAwOworCisgICAgZm9yIChTdHJlYW0q
IHN0cmVhbSA6IHNvdXJjZS0+cHJpdi0+c3RyZWFtcykgeworICAgICAgICBzdHJlYW0tPmFwcHNy
Y05lZWREYXRhRmxhZyA9IGZhbHNlOworICAgICAgICAvLyBEb24ndCBhbGxvdyBzYW1wbGVzIGF3
YXkgZnJvbSB0aGUgc2Vla1RpbWUgdG8gYmUgZW5xdWV1ZWQuCisgICAgICAgIHN0cmVhbS0+bGFz
dEVucXVldWVkVGltZSA9IHNlZWtUaW1lOworICAgIH0KKworICAgIC8vIFRoZSBwZW5kaW5nIGFj
dGlvbiB3aWxsIGJlIHBlcmZvcm1lZCBpbiBlbmFibGVkQXBwc3JjU2Vla0RhdGEoKS4KKyAgICBz
b3VyY2UtPnByaXYtPmFwcHNyY1NlZWtEYXRhTmV4dEFjdGlvbiA9IE1lZGlhU291cmNlU2Vla1Rv
VGltZTsKKworICAgIEdVbmlxdWVQdHI8R3N0U2VnbWVudD4gc2VnbWVudChnc3Rfc2VnbWVudF9u
ZXcoKSk7CisgICAgc2VnbWVudC0+Zm9ybWF0ID0gR1NUX0ZPUk1BVF9USU1FOworICAgIGdzdF9z
ZWdtZW50X2RvX3NlZWsoc2VnbWVudC5nZXQoKSwgcmF0ZSwgR1NUX0ZPUk1BVF9USU1FLAorICAg
ICAgICBzdGF0aWNfY2FzdDxHc3RTZWVrRmxhZ3M+KEdTVF9TRUVLX0ZMQUdfRkxVU0ggfCBHU1Rf
U0VFS19GTEFHX0FDQ1VSQVRFKSwKKyAgICAgICAgR1NUX1NFRUtfVFlQRV9TRVQsIFdlYkNvcmU6
OnRvR3N0VW5zaWduZWQ2NFRpbWUoc3RhcnRUaW1lKSwKKyAgICAgICAgR1NUX1NFRUtfVFlQRV9T
RVQsIFdlYkNvcmU6OnRvR3N0VW5zaWduZWQ2NFRpbWUoZW5kVGltZSksIG51bGxwdHIpOworCisg
ICAgZm9yIChTdHJlYW0qIHN0cmVhbSA6IHNvdXJjZS0+cHJpdi0+c3RyZWFtcykgeworICAgICAg
ICAvLyBUaGlzIHByb2JlIHdpbGwgZml4IHRoZSBzZWdtZW50IGF1dG9nZW5lcmF0ZWQgYnkgYXBw
c3JjLgorICAgICAgICBHUmVmUHRyPEdzdFBhZD4gcGFkID0gYWRvcHRHUmVmKGdzdF9lbGVtZW50
X2dldF9zdGF0aWNfcGFkKHN0cmVhbS0+YXBwc3JjLCAic3JjIikpOworICAgICAgICBnc3RfcGFk
X2FkZF9wcm9iZShwYWQuZ2V0KCksIEdTVF9QQURfUFJPQkVfVFlQRV9FVkVOVF9ET1dOU1RSRUFN
LAorICAgICAgICAgICAgaW5pdGlhbFNlZWtTZWdtZW50Rml4ZXJQcm9iZSwgZ3N0X3NlZ21lbnRf
Y29weShzZWdtZW50LmdldCgpKSwgcmVpbnRlcnByZXRfY2FzdDxHRGVzdHJveU5vdGlmeT4oZ3N0
X3NlZ21lbnRfZnJlZSkpOworICAgICAgICBzdHJlYW0tPnNvdXJjZUJ1ZmZlci0+c2V0UmVhZHlG
b3JNb3JlU2FtcGxlcyh0cnVlKTsKKyAgICB9CisKKyAgICBHU1RfT0JKRUNUX1VOTE9DSyhzb3Vy
Y2UpOworfQorCiBuYW1lc3BhY2UgV1RGIHsKIHRlbXBsYXRlIDw+IEdSZWZQdHI8V2ViS2l0TWVk
aWFTcmM+IGFkb3B0R1JlZihXZWJLaXRNZWRpYVNyYyogcHRyKQogewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9XZWJLaXRNZWRpYVNv
dXJjZUdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL21zZS9XZWJLaXRNZWRpYVNvdXJjZUdTdHJlYW1lci5oCmluZGV4IDZjNDVlYjY4NzNlY2Jk
OTUyZTU3MDk3OWZmOWMxNGY5N2VlODgzZWUuLjlhNzc0NjlhYjljNjM5ZTRlNWIzZDc1N2YxZWE5
Mjg1ZDY4YTg5MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9tc2UvV2ViS2l0TWVkaWFTb3VyY2VHU3RyZWFtZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL1dlYktpdE1lZGlhU291cmNl
R1N0cmVhbWVyLmgKQEAgLTczLDYgKzczLDcgQEAgR1R5cGUgd2Via2l0X21lZGlhX3NyY19nZXRf
dHlwZSh2b2lkKTsKIHZvaWQgd2ViS2l0TWVkaWFTcmNTZXRNZWRpYVBsYXllclByaXZhdGUoV2Vi
S2l0TWVkaWFTcmMqLCBXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UqKTsK
IAogdm9pZCB3ZWJLaXRNZWRpYVNyY1ByZXBhcmVTZWVrKFdlYktpdE1lZGlhU3JjKiwgY29uc3Qg
TWVkaWFUaW1lJik7Cit2b2lkIHdlYktpdE1lZGlhU3JjUHJlcGFyZUluaXRpYWxTZWVrKFdlYktp
dE1lZGlhU3JjKiwgZG91YmxlIHJhdGUsIGNvbnN0IE1lZGlhVGltZSYgc3RhcnRUaW1lLCBjb25z
dCBNZWRpYVRpbWUmIGVuZFRpbWUpOwogdm9pZCB3ZWJLaXRNZWRpYVNyY1NldFJlYWR5Rm9yU2Ft
cGxlcyhXZWJLaXRNZWRpYVNyYyosIGJvb2wpOwogCiBHX0VORF9ERUNMUwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGE5NGNl
MTMyNGE3NjEwYjAzNGQxNDgwOTRjZmQ2MGIyYjQ4ZmI0YjMuLjJmN2JiOGE2YzQwZTg1ZDYxOTgw
NTA5NTIwYmZmODIzMzQ0MjM3NjAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZwor
KysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAyMC0wNC0yMSAg
RW5yaXF1ZSBPY2HDsWEgR29uesOhbGV6ICA8ZW9jYW5oYUBpZ2FsaWEuY29tPgorCisgICAgICAg
IFtHU3RyZWFtZXJdW01TRV0gWW91dHViZSAnbGl2ZSBzdHJlYW0nL0gyNjQgVVJMcyBmYWlsIHRv
IHBsYXksIFZQOC85IFVSTHMgcGxheSBPSworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjA5MTE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWGFiaWVyIFJv
ZHJpZ3Vlei1DYWx2YXIuCisKKyAgICAgICAgVW5za2lwcGVkIG1lZGlhL21lZGlhLXNvdXJjZS9t
ZWRpYS1zb3VyY2Utc2Vlay1yZWR1bmRhbnQtYXBwZW5kLmh0bWwsCisgICAgICAgIHdoaWNoIHBh
c3NlcyBub3cuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9uczoKKyAg
ICAgICAgKiBwbGF0Zm9ybS93cGUvVGVzdEV4cGVjdGF0aW9uczoKKwogMjAyMC0wNC0xNyAgT3Jp
b2wgQnJ1ZmF1ICA8b2JydWZhdUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFJldmVydCAiW2Nzcy1n
cmlkXSBFeGNsdWRlIGltcGxpY2l0IGdyaWQgdHJhY2tzIGZyb20gdGhlIHJlc29sdmVkIHZhbHVl
IgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnMg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucwppbmRleCAxNzkyNTZh
N2EwNGYyY2E1NDgwYWRhNTIxNjFiYjZmZDgyNTUwZWZlLi40ZTk5ZjFmZjBmNWI5NDgxMDU0YjE2
MDUwYWZiNzQ5NDA2Y2ZkYTkyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsv
VGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVj
dGF0aW9ucwpAQCAtMzMyNSw4ICszMzI1LDYgQEAgd2Via2l0Lm9yZy9iLzIwNjE0OSB3ZWJydGMv
cGVlci1jb25uZWN0aW9uLXJlbW90ZS1hdWRpby1tdXRlLmh0bWwgWyBUaW1lb3V0IF0KIHdlYmtp
dC5vcmcvYi8yMDI3MzYgaHR0cC90ZXN0cy9hcHBjYWNoZS9yZW1vdmUtY2FjaGUuaHRtbCBbIEZh
aWx1cmUgVGltZW91dCBQYXNzIF0KIHdlYmtpdC5vcmcvYi8yMDI3MzYgWyBSZWxlYXNlIF0gaHR0
cC93cHQvY2FjaGUtc3RvcmFnZS9xdW90YS10aGlyZC1wYXJ0eS5odHRwcy5odG1sIFsgRmFpbHVy
ZSBUaW1lb3V0IFBhc3MgXQogCi13ZWJraXQub3JnL2IvMjA2ODczIG1lZGlhL21lZGlhLXNvdXJj
ZS9tZWRpYS1zb3VyY2Utc2Vlay1yZWR1bmRhbnQtYXBwZW5kLmh0bWwgWyBUaW1lb3V0IF0KLQog
d2Via2l0Lm9yZy9iLzIwNjg3NiBodHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmct
c3RyZW5ndGhlbmVkLXByaXZhdGUtYnJvd3NpbmctcGx1Z2luLmh0bWwgWyBUaW1lb3V0IF0KIAog
d2Via2l0Lm9yZy9iLzIwNzcxMSBbIFJlbGVhc2UgXSBmYXN0L2hpc3RvcnkvcGFnZS1jYWNoZS13
ZWJkYXRhYmFzZS1wZW5kaW5nLXRyYW5zYWN0aW9uLmh0bWwgWyBUaW1lb3V0IF0KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dwZS9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vd3BlL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggMjE2YmQ3OTc3ZTcyYTUyYmQw
MmJhNmU0NWNkOGEzOWNkNzc1ZDZhZC4uY2Q0NzAxNjYyYzRjZTQ0NmNlM2ZmNWRmZGUyMGFmNGI3
MjEyNWQ4NCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd3BlL1Rlc3RFeHBlY3Rh
dGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd3BlL1Rlc3RFeHBlY3RhdGlvbnMKQEAg
LTE0OTQsOCArMTQ5NCw2IEBAIHdlYmtpdC5vcmcvYi8xOTEwMDggd2ViYW5pbWF0aW9ucy9hY2Nl
bGVyYXRlZC1hbmltYXRpb24tc3VzcGVuc2lvbi5odG1sIFsgVGltZW91CiAKIHdlYmtpdC5vcmcv
Yi8yMDEyNjggYWNjZXNzaWJpbGl0eS9pbnNlcnQtbmV3bGluZS5odG1sIFsgVGltZW91dCBdCiAK
LXdlYmtpdC5vcmcvYi8yMDY4NzMgbWVkaWEvbWVkaWEtc291cmNlL21lZGlhLXNvdXJjZS1zZWVr
LXJlZHVuZGFudC1hcHBlbmQuaHRtbCBbIFRpbWVvdXQgXQotCiB3ZWJraXQub3JnL2IvMjA3NzEx
IFsgRGVidWcgXSBmYXN0L3NlbGVjdG9ycy9zbG93LXN0eWxlLXNoYXJpbmctd2l0aC1sb25nLWNv
dXNpbi1saXN0Lmh0bWwgWyBUaW1lb3V0IF0KIHdlYmtpdC5vcmcvYi8yMDc3MTEgaHR0cC90ZXN0
cy9jb29raWVzL2RvdWJsZS1xdW90ZWQtdmFsdWUtd2l0aC1zZW1pLWNvbG9uLmh0bWwgWyBGYWls
dXJlIFRpbWVvdXQgXQogd2Via2l0Lm9yZy9iLzIwNzcxMSBbIFJlbGVhc2UgXSBmYXN0L2hpc3Rv
cnkvcGFnZS1jYWNoZS13ZWJkYXRhYmFzZS1wZW5kaW5nLXRyYW5zYWN0aW9uLmh0bWwgWyBUaW1l
b3V0IF0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>397185</attachid>
            <date>2020-04-22 04:01:23 -0700</date>
            <delta_ts>2020-04-22 04:36:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209119-20200422110121.patch</filename>
            <type>text/plain</type>
            <size>12792</size>
            <attacher name="Enrique Ocaña">eocanha</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwMjU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmI1NTgzYTE2OWU0Zjhk
MGQ0NWViMTkzOTkxMjAxYzdlNzUyMGIzOS4uMWU1MzdkNWRiZjJmZTRlNTBkZTJiMWZjZTdiMmIz
ODc2M2U3M2U3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDIwLTA0LTIyICBFbnJp
cXVlIE9jYcOxYSBHb256w6FsZXogIDxlb2NhbmhhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dT
dHJlYW1lcl1bTVNFXSBZb3V0dWJlICdsaXZlIHN0cmVhbScvSDI2NCBVUkxzIGZhaWwgdG8gcGxh
eSwgVlA4LzkgVVJMcyBwbGF5IE9LCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMDkxMTkKKworICAgICAgICBSZXZpZXdlZCBieSBYYWJpZXIgUm9kcmln
dWV6LUNhbHZhci4KKworICAgICAgICBUaGUgZml4IGNvbnNpc3RzIG9mIHJlbW92aW5nIHRoZSBp
bml0aWFsIGF2b2lkaW5nIG9mIHNlZWtpbmcgYW5kIGp1c3QKKyAgICAgICAgaXNzdWluZyB0aGUg
cHJvcGVyIHNlZ21lbnQgaW5zdGVhZCBvZiBzZWVraW5nIChzZWVrcyBpbiBHU3RyZWFtZXIgY2Fu
J3QKKyAgICAgICAgYmUgZG9uZSBiZWZvcmUgcHJlcm9sbGluZyBhbnl3YXkpLiBBcHBzcmMgZG9l
c24ndCBtYWtlIGVhc3kgdG8gZW1pdCBvdXIKKyAgICAgICAgb3duIGN1c3RvbSBzZWdtZW50LCBz
byB3aGF0IEkgZGlkIHdhcyB0byB1c2UgYSBzZWdtZW50IGZpeGVyIHByb2JlIHRvCisgICAgICAg
IG1vZGlmeSB0aGUgb3JpZ2luYWwgWzAsIGluZmluaXR5XSBzZWdtZW50IGlzc3VlZCBieSBhcHBz
cmMgYW5kIHVzZQorICAgICAgICBhIFtzdGFydFRpbWUsIHN0b3BUaW1lXSB3aXRoIHByb3BlciB2
YWx1ZXMgZGVwZW5kaW5nIG9uIHRoZSBzZWVrIHRhcmdldAorICAgICAgICBhbmQgcmF0ZS4KKwor
ICAgICAgICBDb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Y2hlY2tTaG91bGREZWxheVNlZWspOiBEb24ndCBob2xkIHNl
ZWtzIG9uIHN0YXJ0dXAsIHdoZW4gY2hhbmdpbmcgZnJvbSBSRUFEWSB0byBQQVVTRUQuCisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0U6OmRvU2Vlayk6IFJl
ZmFjdG9yZWQgc2VlayBkZWxheSBjb25kaXRpb24uIEFsc28sIGRvbid0IGRvIGEgcmVndWxhcgor
ICAgICAgICBnc3RfZWxlbWVudF9zZWVrKCkgZm9yIGluaXRpYWwgc2Vla3MsIGp1c3QgcHJvY2Vl
ZCB3aXRoIGEgc3BlY2lhbCBjYXNlIGluIHRoYXQgc2l0dWF0aW9uLgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvV2ViS2l0TWVkaWFTb3VyY2VHU3RyZWFtZXIuY3Bw
OgorICAgICAgICAoaW5pdGlhbFNlZWtTZWdtZW50Rml4ZXJQcm9iZSk6IFByb2JlIHRoYXQgZml4
ZXMgdGhlIHNlZ21lbnQuCisgICAgICAgICh3ZWJLaXRNZWRpYVNyY1ByZXBhcmVJbml0aWFsU2Vl
ayk6IEJlaGF2ZSBtdWNoIGxpa2UgYSByZWd1bGFyIHNlZWssIGJ1dCBhbHNvIGNvbXB1dGUgdGhl
IHJpZ2h0IEdzdFNlZ21lbnQsIGluc3RhbGwKKyAgICAgICAgdGhlIHNlZ21lbnQgZml4ZXIgcHJv
YmUgYW5kIHNldFJlYWR5Rm9yTW9yZVNhbXBsZXMoKSBvbiB0aGUgU291cmNlQnVmZmVyUHJpdmF0
ZXMuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9XZWJLaXRNZWRp
YVNvdXJjZUdTdHJlYW1lci5oOgorCiAyMDIwLTA0LTE3ICBDbGF1ZGlvIFNhYXZlZHJhICA8Y3Nh
YXZlZHJhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gVXBkYXRlIGZvciBHZGtLZXltYXAg
QVBJIGNoYW5nZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9tc2UvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyTVNFLmNwcAppbmRleCAxYjcwMGJiYzA4NGM3MTI5ZGRiMDE0N2I0NDZkOTFl
NDY4ZWM5MmYwLi4yM2Q2YmJmNDJjNDJhMWJjMDFkOGNlYmZjMzI5NDJkOTM5MGM2MmUzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJN
U0UuY3BwCkBAIC0yNDEsNiArMjQxLDE3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyTVNFOjpub3RpZnlTZWVrTmVlZHNEYXRhRm9yVGltZShjb25zdCBNZWRpYVRpbWUmCiAgICAg
fQogfQogCitzdGF0aWMgYm9vbCBjaGVja1Nob3VsZERlbGF5U2VlayhHc3RTdGF0ZUNoYW5nZVJl
dHVybiBnZXRTdGF0ZVJlc3VsdCwgR3N0U3RhdGUgY3VycmVudFN0YXRlLCBHc3RTdGF0ZSBuZXdT
dGF0ZSkKK3sKKyAgICBpZiAoZ2V0U3RhdGVSZXN1bHQgIT0gR1NUX1NUQVRFX0NIQU5HRV9BU1lO
QykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChHU1RfU1RBVEVfVFJBTlNJVElPTihj
dXJyZW50U3RhdGUsIG5ld1N0YXRlKSA9PSBHU1RfU1RBVEVfQ0hBTkdFX1BMQVlJTkdfVE9fUEFV
U0VEKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKGN1cnJlbnRTdGF0ZSA9PSBHU1Rf
U1RBVEVfUkVBRFkgJiYgbmV3U3RhdGUgPj0gR1NUX1NUQVRFX1BBVVNFRCkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIHJldHVybiB0cnVlOworfQorCiBib29sIE1lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lck1TRTo6ZG9TZWVrKGNvbnN0IE1lZGlhVGltZSYgcG9zaXRpb24sIGZsb2F0IHJh
dGUsIEdzdFNlZWtGbGFncyBzZWVrVHlwZSkKIHsKICAgICAvLyBGSVhNRTogTWFrZSBhIGNvcHkg
aGVyZSBiZWNhdXNlIGluIHNvbWUgY2FzZXMgYmVsb3cgaXQgaXMgbW9kaWZpZWQuIFRoaXMKQEAg
LTI1OSwxMyArMjcwLDExIEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFOjpk
b1NlZWsoY29uc3QgTWVkaWFUaW1lJiBwb3NpdGlvbiwgZmxvYXQgcmF0CiAgICAgICAgIG1faXNT
ZWVraW5nID0gZmFsc2U7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0gICAgaWYgKChn
ZXRTdGF0ZVJlc3VsdCA9PSBHU1RfU1RBVEVfQ0hBTkdFX0FTWU5DCi0gICAgICAgICYmICEoc3Rh
dGUgPT0gR1NUX1NUQVRFX1BMQVlJTkcgJiYgbmV3U3RhdGUgPT0gR1NUX1NUQVRFX1BBVVNFRCkp
Ci0gICAgICAgIHx8IHN0YXRlIDwgR1NUX1NUQVRFX1BBVVNFRAotICAgICAgICB8fCBtX2lzRW5k
UmVhY2hlZAotICAgICAgICB8fCAhbV9nc3RTZWVrQ29tcGxldGVkKSB7CisKKyAgICBib29sIHNo
b3VsZERlbGF5U2VlayA9IGNoZWNrU2hvdWxkRGVsYXlTZWVrKGdldFN0YXRlUmVzdWx0LCBzdGF0
ZSwgbmV3U3RhdGUpOworICAgIGlmIChzaG91bGREZWxheVNlZWsgfHwgbV9pc0VuZFJlYWNoZWQg
fHwgIW1fZ3N0U2Vla0NvbXBsZXRlZCkgewogICAgICAgICBDU3RyaW5nIHJlYXNvbiA9ICJVbmtu
b3duIHJlYXNvbiI7Ci0gICAgICAgIGlmIChnZXRTdGF0ZVJlc3VsdCA9PSBHU1RfU1RBVEVfQ0hB
TkdFX0FTWU5DKSB7CisgICAgICAgIGlmIChzaG91bGREZWxheVNlZWspIHsKICAgICAgICAgICAg
IHJlYXNvbiA9IG1ha2VTdHJpbmcoIkluIGFzeW5jIGNoYW5nZSAiLAogICAgICAgICAgICAgICAg
IGdzdF9lbGVtZW50X3N0YXRlX2dldF9uYW1lKHN0YXRlKSwgIiAtLT4gIiwKICAgICAgICAgICAg
ICAgICBnc3RfZWxlbWVudF9zdGF0ZV9nZXRfbmFtZShuZXdTdGF0ZSkpLnV0ZjgoKTsKQEAgLTM0
NywyMCArMzU2LDI2IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFOjpkb1Nl
ZWsoY29uc3QgTWVkaWFUaW1lJiBwb3NpdGlvbiwgZmxvYXQgcmF0CiAKICAgICBHU1RfREVCVUdf
T0JKRUNUKHBpcGVsaW5lKCksICJBY3R1YWwgc2VlayB0byAlcywgZW5kIHRpbWU6ICAlcywgcmF0
ZTogJWYiLCB0b1N0cmluZyhzdGFydFRpbWUpLnV0ZjgoKS5kYXRhKCksIHRvU3RyaW5nKGVuZFRp
bWUpLnV0ZjgoKS5kYXRhKCksIHJhdGUpOwogCi0gICAgLy8gVGhpcyB3aWxsIGNhbGwgbm90aWZ5
U2Vla05lZWRzRGF0YSgpIGFmdGVyIHNvbWUgdGltZSB0byB0ZWxsIHRoYXQgdGhlIHBpcGVsaW5l
IGlzIHJlYWR5IGZvciBzYW1wbGUgZW5xdWV1aW5nLgotICAgIHdlYktpdE1lZGlhU3JjUHJlcGFy
ZVNlZWsoV0VCS0lUX01FRElBX1NSQyhtX3NvdXJjZS5nZXQoKSksIHNlZWtUaW1lKTsKLQogICAg
IG1fZ3N0U2Vla0NvbXBsZXRlZCA9IGZhbHNlOwotICAgIGlmICghZ3N0X2VsZW1lbnRfc2Vlayht
X3BpcGVsaW5lLmdldCgpLCByYXRlLCBHU1RfRk9STUFUX1RJTUUsIHNlZWtUeXBlLCBHU1RfU0VF
S19UWVBFX1NFVCwgdG9Hc3RDbG9ja1RpbWUoc3RhcnRUaW1lKSwgR1NUX1NFRUtfVFlQRV9TRVQs
IHRvR3N0Q2xvY2tUaW1lKGVuZFRpbWUpKSkgewotICAgICAgICB3ZWJLaXRNZWRpYVNyY1NldFJl
YWR5Rm9yU2FtcGxlcyhXRUJLSVRfTUVESUFfU1JDKG1fc291cmNlLmdldCgpKSwgdHJ1ZSk7Ci0g
ICAgICAgIG1faXNTZWVraW5nID0gZmFsc2U7Ci0gICAgICAgIG1fZ3N0U2Vla0NvbXBsZXRlZCA9
IHRydWU7Ci0gICAgICAgIEdTVF9ERUJVR19PQkpFQ1QocGlwZWxpbmUoKSwgImRvU2VlaygpOiBn
c3RfZWxlbWVudF9zZWVrKCkgZmFpbGVkLCByZXR1cm5pbmcgZmFsc2UiKTsKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIH0KKyAgICBpZiAoc3RhdGUgPCBHU1RfU1RBVEVfUEFVU0VEKSB7Cisg
ICAgICAgIC8vIFNwZWNpYWwgY2FzZSBvZiBpbml0aWFsIHNlZWsuIFdlIHNldCB0aGUgcmlnaHQg
c2VnbWVudCBpbnN0ZWFkIG9mIGEgc2Vlay4KKyAgICAgICAgd2ViS2l0TWVkaWFTcmNQcmVwYXJl
SW5pdGlhbFNlZWsoV0VCS0lUX01FRElBX1NSQyhtX3NvdXJjZS5nZXQoKSksIHJhdGUsIHN0YXJ0
VGltZSwgZW5kVGltZSk7CisgICAgICAgIG5vdGlmeVNlZWtOZWVkc0RhdGFGb3JUaW1lKHNlZWtU
aW1lKTsKKyAgICAgICAgR1NUX0RFQlVHKCJJbml0aWFsIHNlZWsgc3VjY2VlZGVkLCByZXR1cm5p
bmcgdHJ1ZSIpOworICAgIH0gZWxzZSB7CisgICAgICAgIC8vIFRoaXMgd2lsbCBjYWxsIG5vdGlm
eVNlZWtOZWVkc0RhdGEoKSBhZnRlciBzb21lIHRpbWUgdG8gdGVsbCB0aGF0IHRoZSBwaXBlbGlu
ZSBpcyByZWFkeSBmb3Igc2FtcGxlIGVucXVldWluZy4KKyAgICAgICAgd2ViS2l0TWVkaWFTcmNQ
cmVwYXJlU2VlayhXRUJLSVRfTUVESUFfU1JDKG1fc291cmNlLmdldCgpKSwgc2Vla1RpbWUpOwog
Ci0gICAgLy8gVGhlIHNhbXBsZXMgd2lsbCBiZSBlbnF1ZXVlZCBpbiBub3RpZnlTZWVrTmVlZHNE
YXRhKCkuCi0gICAgR1NUX0RFQlVHX09CSkVDVChwaXBlbGluZSgpLCAiZG9TZWVrKCk6IGdzdF9l
bGVtZW50X3NlZWsoKSBzdWNjZWVkZWQsIHJldHVybmluZyB0cnVlIik7CisgICAgICAgIGlmICgh
Z3N0X2VsZW1lbnRfc2VlayhtX3BpcGVsaW5lLmdldCgpLCByYXRlLCBHU1RfRk9STUFUX1RJTUUs
IHNlZWtUeXBlLCBHU1RfU0VFS19UWVBFX1NFVCwgdG9Hc3RDbG9ja1RpbWUoc3RhcnRUaW1lKSwg
R1NUX1NFRUtfVFlQRV9TRVQsIHRvR3N0Q2xvY2tUaW1lKGVuZFRpbWUpKSkgeworICAgICAgICAg
ICAgd2ViS2l0TWVkaWFTcmNTZXRSZWFkeUZvclNhbXBsZXMoV0VCS0lUX01FRElBX1NSQyhtX3Nv
dXJjZS5nZXQoKSksIHRydWUpOworICAgICAgICAgICAgbV9pc1NlZWtpbmcgPSBmYWxzZTsKKyAg
ICAgICAgICAgIG1fZ3N0U2Vla0NvbXBsZXRlZCA9IHRydWU7CisgICAgICAgICAgICBHU1RfREVC
VUcoImdzdF9lbGVtZW50X3NlZWsoKSBmYWlsZWQsIHJldHVybmluZyBmYWxzZSIpOworICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIC8vIFRoZSBzYW1wbGVzIHdp
bGwgYmUgZW5xdWV1ZWQgaW4gbm90aWZ5U2Vla05lZWRzRGF0YSgpLgorICAgICAgICBHU1RfREVC
VUcoImdzdF9lbGVtZW50X3NlZWsoKSBzdWNjZWVkZWQsIHJldHVybmluZyB0cnVlIik7CisgICAg
fQogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL1dlYktpdE1lZGlhU291cmNlR1N0cmVhbWVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvV2ViS2l0
TWVkaWFTb3VyY2VHU3RyZWFtZXIuY3BwCmluZGV4IDFhZDQ0MjQ5MDIxOTU2NGQ1MDAxY2Y0Njhk
ZWUyODdjMGQ0MTJmMTEuLmQxZWE5YTM0YjI2Y2FjNjczZGE4ZmQ4NDcyYTAyNWM2ODBiYzQ5ODkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9t
c2UvV2ViS2l0TWVkaWFTb3VyY2VHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvV2ViS2l0TWVkaWFTb3VyY2VHU3RyZWFtZXIu
Y3BwCkBAIC03MjksNiArNzI5LDU1IEBAIHZvaWQgd2ViS2l0TWVkaWFTcmNQcmVwYXJlU2VlayhX
ZWJLaXRNZWRpYVNyYyogc291cmNlLCBjb25zdCBNZWRpYVRpbWUmIHRpbWUpCiAgICAgR1NUX09C
SkVDVF9VTkxPQ0soc291cmNlKTsKIH0KIAorR3N0UGFkUHJvYmVSZXR1cm4gaW5pdGlhbFNlZWtT
ZWdtZW50Rml4ZXJQcm9iZShHc3RQYWQgKnBhZCwgR3N0UGFkUHJvYmVJbmZvICppbmZvLCBncG9p
bnRlciB1c2VyRGF0YSkKK3sKKyAgICBHc3RFdmVudCogZXZlbnQgPSBHU1RfUEFEX1BST0JFX0lO
Rk9fRVZFTlQoaW5mbyk7CisgICAgaWYgKEdTVF9FVkVOVF9UWVBFKGV2ZW50KSA9PSBHU1RfRVZF
TlRfU0VHTUVOVCkgeworICAgICAgICBjb25zdCBHc3RTZWdtZW50KiBvcmlnaW5hbFNlZ21lbnQg
PSBudWxscHRyOworICAgICAgICBjb25zdCBHc3RTZWdtZW50KiBmaXhlZFNlZ21lbnQgPSBzdGF0
aWNfY2FzdDxHc3RTZWdtZW50Kj4odXNlckRhdGEpOworICAgICAgICBnc3RfZXZlbnRfcGFyc2Vf
c2VnbWVudChldmVudCwgJm9yaWdpbmFsU2VnbWVudCk7CisgICAgICAgIEdTVF9ERUJVRygiU2Vn
bWVudCBhdCAlczogJSIgR1NUX1NFR01FTlRfRk9STUFUICIsIHJlcGxhY2VkIGJ5ICUiIEdTVF9T
RUdNRU5UX0ZPUk1BVCwgR1NUX0VMRU1FTlRfTkFNRShHU1RfUEFEX1BBUkVOVChwYWQpKSwgb3Jp
Z2luYWxTZWdtZW50LCBmaXhlZFNlZ21lbnQpOworICAgICAgICBnc3RfZXZlbnRfcmVwbGFjZShy
ZWludGVycHJldF9jYXN0PEdzdEV2ZW50Kio+KCZpbmZvLT5kYXRhKSwgZ3N0X2V2ZW50X25ld19z
ZWdtZW50KGZpeGVkU2VnbWVudCkpOworICAgICAgICByZXR1cm4gR1NUX1BBRF9QUk9CRV9SRU1P
VkU7CisgICAgfQorICAgIHJldHVybiBHU1RfUEFEX1BST0JFX09LOworfQorCit2b2lkIHdlYktp
dE1lZGlhU3JjUHJlcGFyZUluaXRpYWxTZWVrKFdlYktpdE1lZGlhU3JjKiBzb3VyY2UsIGRvdWJs
ZSByYXRlLCBjb25zdCBNZWRpYVRpbWUmIHN0YXJ0VGltZSwgY29uc3QgTWVkaWFUaW1lJiBlbmRU
aW1lKQoreworICAgIEdTVF9PQkpFQ1RfTE9DSyhzb3VyY2UpOworICAgIE1lZGlhVGltZSBzZWVr
VGltZSA9IChyYXRlID49IDApID8gc3RhcnRUaW1lIDogZW5kVGltZTsKKyAgICBzb3VyY2UtPnBy
aXYtPnNlZWtUaW1lID0gc2Vla1RpbWU7CisgICAgc291cmNlLT5wcml2LT5hcHBzcmNTZWVrRGF0
YUNvdW50ID0gMDsKKyAgICBzb3VyY2UtPnByaXYtPmFwcHNyY05lZWREYXRhQ291bnQgPSAwOwor
CisgICAgZm9yIChTdHJlYW0qIHN0cmVhbSA6IHNvdXJjZS0+cHJpdi0+c3RyZWFtcykgeworICAg
ICAgICBzdHJlYW0tPmFwcHNyY05lZWREYXRhRmxhZyA9IGZhbHNlOworICAgICAgICAvLyBEb24n
dCBhbGxvdyBzYW1wbGVzIGF3YXkgZnJvbSB0aGUgc2Vla1RpbWUgdG8gYmUgZW5xdWV1ZWQuCisg
ICAgICAgIHN0cmVhbS0+bGFzdEVucXVldWVkVGltZSA9IHNlZWtUaW1lOworICAgIH0KKworICAg
IC8vIFRoZSBwZW5kaW5nIGFjdGlvbiB3aWxsIGJlIHBlcmZvcm1lZCBpbiBlbmFibGVkQXBwc3Jj
U2Vla0RhdGEoKS4KKyAgICBzb3VyY2UtPnByaXYtPmFwcHNyY1NlZWtEYXRhTmV4dEFjdGlvbiA9
IE1lZGlhU291cmNlU2Vla1RvVGltZTsKKworICAgIEdVbmlxdWVQdHI8R3N0U2VnbWVudD4gc2Vn
bWVudChnc3Rfc2VnbWVudF9uZXcoKSk7CisgICAgc2VnbWVudC0+Zm9ybWF0ID0gR1NUX0ZPUk1B
VF9USU1FOworICAgIGdzdF9zZWdtZW50X2RvX3NlZWsoc2VnbWVudC5nZXQoKSwgcmF0ZSwgR1NU
X0ZPUk1BVF9USU1FLAorICAgICAgICBzdGF0aWNfY2FzdDxHc3RTZWVrRmxhZ3M+KEdTVF9TRUVL
X0ZMQUdfRkxVU0ggfCBHU1RfU0VFS19GTEFHX0FDQ1VSQVRFKSwKKyAgICAgICAgR1NUX1NFRUtf
VFlQRV9TRVQsIFdlYkNvcmU6OnRvR3N0VW5zaWduZWQ2NFRpbWUoc3RhcnRUaW1lKSwKKyAgICAg
ICAgR1NUX1NFRUtfVFlQRV9TRVQsIFdlYkNvcmU6OnRvR3N0VW5zaWduZWQ2NFRpbWUoZW5kVGlt
ZSksIG51bGxwdHIpOworCisgICAgZm9yIChTdHJlYW0qIHN0cmVhbSA6IHNvdXJjZS0+cHJpdi0+
c3RyZWFtcykgeworICAgICAgICAvLyBUaGlzIHByb2JlIHdpbGwgZml4IHRoZSBzZWdtZW50IGF1
dG9nZW5lcmF0ZWQgYnkgYXBwc3JjLgorICAgICAgICBHUmVmUHRyPEdzdFBhZD4gcGFkID0gYWRv
cHRHUmVmKGdzdF9lbGVtZW50X2dldF9zdGF0aWNfcGFkKHN0cmVhbS0+YXBwc3JjLCAic3JjIikp
OworICAgICAgICBnc3RfcGFkX2FkZF9wcm9iZShwYWQuZ2V0KCksIEdTVF9QQURfUFJPQkVfVFlQ
RV9FVkVOVF9ET1dOU1RSRUFNLAorICAgICAgICAgICAgaW5pdGlhbFNlZWtTZWdtZW50Rml4ZXJQ
cm9iZSwgZ3N0X3NlZ21lbnRfY29weShzZWdtZW50LmdldCgpKSwgcmVpbnRlcnByZXRfY2FzdDxH
RGVzdHJveU5vdGlmeT4oZ3N0X3NlZ21lbnRfZnJlZSkpOworICAgICAgICBzdHJlYW0tPnNvdXJj
ZUJ1ZmZlci0+c2V0UmVhZHlGb3JNb3JlU2FtcGxlcyh0cnVlKTsKKyAgICB9CisKKyAgICBHU1Rf
T0JKRUNUX1VOTE9DSyhzb3VyY2UpOworfQorCiBuYW1lc3BhY2UgV1RGIHsKIHRlbXBsYXRlIDw+
IEdSZWZQdHI8V2ViS2l0TWVkaWFTcmM+IGFkb3B0R1JlZihXZWJLaXRNZWRpYVNyYyogcHRyKQog
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L21zZS9XZWJLaXRNZWRpYVNvdXJjZUdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9XZWJLaXRNZWRpYVNvdXJjZUdTdHJlYW1lci5oCmlu
ZGV4IDZjNDVlYjY4NzNlY2JkOTUyZTU3MDk3OWZmOWMxNGY5N2VlODgzZWUuLjlhNzc0NjlhYjlj
NjM5ZTRlNWIzZDc1N2YxZWE5Mjg1ZDY4YTg5MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvV2ViS2l0TWVkaWFTb3VyY2VHU3RyZWFt
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNl
L1dlYktpdE1lZGlhU291cmNlR1N0cmVhbWVyLmgKQEAgLTczLDYgKzczLDcgQEAgR1R5cGUgd2Vi
a2l0X21lZGlhX3NyY19nZXRfdHlwZSh2b2lkKTsKIHZvaWQgd2ViS2l0TWVkaWFTcmNTZXRNZWRp
YVBsYXllclByaXZhdGUoV2ViS2l0TWVkaWFTcmMqLCBXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJNU0UqKTsKIAogdm9pZCB3ZWJLaXRNZWRpYVNyY1ByZXBhcmVTZWVrKFdlYktp
dE1lZGlhU3JjKiwgY29uc3QgTWVkaWFUaW1lJik7Cit2b2lkIHdlYktpdE1lZGlhU3JjUHJlcGFy
ZUluaXRpYWxTZWVrKFdlYktpdE1lZGlhU3JjKiwgZG91YmxlIHJhdGUsIGNvbnN0IE1lZGlhVGlt
ZSYgc3RhcnRUaW1lLCBjb25zdCBNZWRpYVRpbWUmIGVuZFRpbWUpOwogdm9pZCB3ZWJLaXRNZWRp
YVNyY1NldFJlYWR5Rm9yU2FtcGxlcyhXZWJLaXRNZWRpYVNyYyosIGJvb2wpOwogCiBHX0VORF9E
RUNMUwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCmluZGV4IGE5NGNlMTMyNGE3NjEwYjAzNGQxNDgwOTRjZmQ2MGIyYjQ4ZmI0YjMuLmZk
OWRhYTAyZWQ3MGI2YTZkOTY1OTU0YTAzODZjM2U3MjY0NTM4ZWQgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NiBAQAorMjAyMC0wNC0yMiAgRW5yaXF1ZSBPY2HDsWEgR29uesOhbGV6ICA8ZW9jYW5oYUBpZ2Fs
aWEuY29tPgorCisgICAgICAgIFtHU3RyZWFtZXJdW01TRV0gWW91dHViZSAnbGl2ZSBzdHJlYW0n
L0gyNjQgVVJMcyBmYWlsIHRvIHBsYXksIFZQOC85IFVSTHMgcGxheSBPSworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5MTE5CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgWGFiaWVyIFJvZHJpZ3Vlei1DYWx2YXIuCisKKyAgICAgICAgVW5za2lwcGVkIG1l
ZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2Utc2Vlay1yZWR1bmRhbnQtYXBwZW5kLmh0bWws
CisgICAgICAgIHdoaWNoIHBhc3NlcyBub3cuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvVGVz
dEV4cGVjdGF0aW9uczoKKyAgICAgICAgKiBwbGF0Zm9ybS93cGUvVGVzdEV4cGVjdGF0aW9uczoK
KwogMjAyMC0wNC0xNyAgT3Jpb2wgQnJ1ZmF1ICA8b2JydWZhdUBpZ2FsaWEuY29tPgogCiAgICAg
ICAgIFJldmVydCAiW2Nzcy1ncmlkXSBFeGNsdWRlIGltcGxpY2l0IGdyaWQgdHJhY2tzIGZyb20g
dGhlIHJlc29sdmVkIHZhbHVlIgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3Rr
L1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0
aW9ucwppbmRleCAxNzkyNTZhN2EwNGYyY2E1NDgwYWRhNTIxNjFiYjZmZDgyNTUwZWZlLi40ZTk5
ZjFmZjBmNWI5NDgxMDU0YjE2MDUwYWZiNzQ5NDA2Y2ZkYTkyIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMzMyNSw4ICszMzI1LDYgQEAgd2Via2l0Lm9y
Zy9iLzIwNjE0OSB3ZWJydGMvcGVlci1jb25uZWN0aW9uLXJlbW90ZS1hdWRpby1tdXRlLmh0bWwg
WyBUaW1lb3V0IF0KIHdlYmtpdC5vcmcvYi8yMDI3MzYgaHR0cC90ZXN0cy9hcHBjYWNoZS9yZW1v
dmUtY2FjaGUuaHRtbCBbIEZhaWx1cmUgVGltZW91dCBQYXNzIF0KIHdlYmtpdC5vcmcvYi8yMDI3
MzYgWyBSZWxlYXNlIF0gaHR0cC93cHQvY2FjaGUtc3RvcmFnZS9xdW90YS10aGlyZC1wYXJ0eS5o
dHRwcy5odG1sIFsgRmFpbHVyZSBUaW1lb3V0IFBhc3MgXQogCi13ZWJraXQub3JnL2IvMjA2ODcz
IG1lZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2Utc2Vlay1yZWR1bmRhbnQtYXBwZW5kLmh0
bWwgWyBUaW1lb3V0IF0KLQogd2Via2l0Lm9yZy9iLzIwNjg3NiBodHRwL3Rlc3RzL3NlY3VyaXR5
L3N0b3JhZ2UtYmxvY2tpbmctc3RyZW5ndGhlbmVkLXByaXZhdGUtYnJvd3NpbmctcGx1Z2luLmh0
bWwgWyBUaW1lb3V0IF0KIAogd2Via2l0Lm9yZy9iLzIwNzcxMSBbIFJlbGVhc2UgXSBmYXN0L2hp
c3RvcnkvcGFnZS1jYWNoZS13ZWJkYXRhYmFzZS1wZW5kaW5nLXRyYW5zYWN0aW9uLmh0bWwgWyBU
aW1lb3V0IF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dwZS9UZXN0RXhwZWN0
YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd3BlL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXgg
MjE2YmQ3OTc3ZTcyYTUyYmQwMmJhNmU0NWNkOGEzOWNkNzc1ZDZhZC4uY2Q0NzAxNjYyYzRjZTQ0
NmNlM2ZmNWRmZGUyMGFmNGI3MjEyNWQ4NCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vd3BlL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd3BlL1Rl
c3RFeHBlY3RhdGlvbnMKQEAgLTE0OTQsOCArMTQ5NCw2IEBAIHdlYmtpdC5vcmcvYi8xOTEwMDgg
d2ViYW5pbWF0aW9ucy9hY2NlbGVyYXRlZC1hbmltYXRpb24tc3VzcGVuc2lvbi5odG1sIFsgVGlt
ZW91CiAKIHdlYmtpdC5vcmcvYi8yMDEyNjggYWNjZXNzaWJpbGl0eS9pbnNlcnQtbmV3bGluZS5o
dG1sIFsgVGltZW91dCBdCiAKLXdlYmtpdC5vcmcvYi8yMDY4NzMgbWVkaWEvbWVkaWEtc291cmNl
L21lZGlhLXNvdXJjZS1zZWVrLXJlZHVuZGFudC1hcHBlbmQuaHRtbCBbIFRpbWVvdXQgXQotCiB3
ZWJraXQub3JnL2IvMjA3NzExIFsgRGVidWcgXSBmYXN0L3NlbGVjdG9ycy9zbG93LXN0eWxlLXNo
YXJpbmctd2l0aC1sb25nLWNvdXNpbi1saXN0Lmh0bWwgWyBUaW1lb3V0IF0KIHdlYmtpdC5vcmcv
Yi8yMDc3MTEgaHR0cC90ZXN0cy9jb29raWVzL2RvdWJsZS1xdW90ZWQtdmFsdWUtd2l0aC1zZW1p
LWNvbG9uLmh0bWwgWyBGYWlsdXJlIFRpbWVvdXQgXQogd2Via2l0Lm9yZy9iLzIwNzcxMSBbIFJl
bGVhc2UgXSBmYXN0L2hpc3RvcnkvcGFnZS1jYWNoZS13ZWJkYXRhYmFzZS1wZW5kaW5nLXRyYW5z
YWN0aW9uLmh0bWwgWyBUaW1lb3V0IF0K
</data>

          </attachment>
      

    </bug>

</bugzilla>