<?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>179241</bug_id>
          
          <creation_ts>2017-11-03 07:59:03 -0700</creation_ts>
          <short_desc>[GStreamer][MSE][webm] Support repetitive appending of the same webm segment</short_desc>
          <delta_ts>2018-10-01 07:39:31 -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>Media</component>
          <version>WebKit Local Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>DUPLICATE</resolution>
          <dup_id>185731</dup_id>
          
          <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="Enrique Ocaña">eocanha</reporter>
          <assigned_to name="Enrique Ocaña">eocanha</assigned_to>
          <cc>aboya</cc>
    
    <cc>bandou.yacine</cc>
    
    <cc>mcatanzaro</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1367916</commentid>
    <comment_count>0</comment_count>
    <who name="Enrique Ocaña">eocanha</who>
    <bug_when>2017-11-03 07:59:03 -0700</bug_when>
    <thetext>Test &quot;20. VideoBufferSize&quot; in YouTube TV 2018 MSE Conformance Tests[1] tries to append the same webm segment several times and expects it to be properly processed. However, the current matroskademux implementation in GStreamer is unable to recognize a new header after having parsed the first one.

[1] http://yt-dash-mse-test.commondatastorage.googleapis.com/unit-tests/2018.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1368014</commentid>
    <comment_count>1</comment_count>
      <attachid>325918</attachid>
    <who name="Enrique Ocaña">eocanha</who>
    <bug_when>2017-11-03 11:09:29 -0700</bug_when>
    <thetext>Created attachment 325918
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1368145</commentid>
    <comment_count>2</comment_count>
      <attachid>325918</attachid>
    <who name="Alicia Boya García">aboya</who>
    <bug_when>2017-11-03 14:12:27 -0700</bug_when>
    <thetext>Comment on attachment 325918
Patch

m_sampleDuration, m_lastPts and m_lastDts are stream (track) specific fields, so they should be encapsulated in some track-specific structure rather than a AppendPipeline one. This will become more important if we include support for multiple tracks per SourceBuffer. A way to fix this would be moving those fields to a separate struct that is instantiated and deleted with a probe.

Using DISCONT is problematic because it breaks partial appends: when a single media segment is fed to MSE through many small append operations. This prevents YTTV2018 55.DelayedAACAudio from passing, for instance.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1374226</commentid>
    <comment_count>3</comment_count>
      <attachid>327459</attachid>
    <who name="Enrique Ocaña">eocanha</who>
    <bug_when>2017-11-22 10:16:18 -0800</bug_when>
    <thetext>Created attachment 327459
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1374363</commentid>
    <comment_count>4</comment_count>
    <who name="Alicia Boya García">aboya</who>
    <bug_when>2017-11-23 02:17:50 -0800</bug_when>
    <thetext>Here goes my unofficial review:

&gt; GST_BUFFER_FLAG_SET(buffer, GST_BUFFER_FLAG_DISCONT);

Please remove that. It will break things (any append that contains part of a MSE segment). It will break a YT2018 test.

The same problem it attempts to fix (being able to demux segments with a timestamp lesser to the first frame PTS) is a bug in matroskademux and should be fixed there.

I have a patch for exactly that. It&apos;s not a definitive version though, but it should work perfectly for MSE (the rest of the work before I upstream it is to avoid a regression in some non-MSE edge cases). I can upload the current version to WebKit nevertheless so that we can use that in the meantime.

&gt; if (gst_structure_get_fraction(structure, &quot;framerate&quot;, &amp;framerateNumerator, &amp;framerateDenominator)
&gt; else if (gst_structure_get_int(structure, &quot;rate&quot;, &amp;framerateNumerator))

There is some confusion here, probably because the terminology is confusing, but it works like this:

- &quot;framerate&quot;: Fraction specifying the amount of video frames per second.
- &quot;rate&quot;: Integer number specifying the sampling rate of the audio, i.e. the number of PCM audio samples per second.

A GstSample corresponds to a video frame or audio frame. An audio frame contains many PCM audio samples (a PCM audio sample is a just numeric value that indicates the amplitude of the wave signal at a given instant).

Two audio GstSample&apos;s with the same &quot;rate&quot; may perfectly have very different durations. 

As an example, a typical Opus audio frame is 20 ms long and is encoded with a sampling rate of 48000 Hz. Assuming duration = 1 / rate as you are doing would give you a duration of 20.833 µs, very far from the real duration of 20 ms.

If the &quot;rate&quot; branch makes something work, it would be because any small value would do in that case. Do you know any example where this is the case?

&gt; // Some containers like webm and audio/x-opus don&apos;t supply a duration. Let&apos;s use the one supplied by the caps.

I have several problems with that comment: 

(1) Not all WebM files containing Opus do that, only those muxed by ffmpeg, which among other issues, omit Track.DefaultDuration, to the grief of people working with containers who would rather have them abstract the inner elementary streams (which was partly the point of having containers in the first place!). A more correct statement would be:

// Some WebM files containing Opus audio don&apos;t supply frame duration.

Apart from that...

(2) &gt; Let&apos;s use the one supplied by the caps.

No, we cannot do that for audio, it&apos;s not supplied in the caps for the reasons specified above. &quot;rate&quot; is the PCM sampling rate, which has nothing to do with duration.

Furthermore...

(3) Opus is no longer a good example since now we use opusparse, which handles those correctly. That branch would only be useful for streams that have a useful &quot;framerate&quot; cap but don&apos;t set durations.

That is impossible in MP4, because durations are mandatory (succesive frame&apos;s DTS are computed from durations). In Matroska there is a deprecated FrameRate field, but it&apos;s converted to DefaultDuration by GStreamer, no work to do on our part.

https://www.matroska.org/technical/specs/index.html#FrameRate
https://www.matroska.org/technical/specs/index.html#DefaultDuration

What I noticed is that when a file does not define neither FrameRate nor DefaultDuration, GStreamer sets &quot;framerate&quot; to zero in the caps:

video/x-vp9, width=(int)426, height=(int)240, framerate=(fraction)0/1

This is the case for feelings_vp9-20130806-242.webm from the YTTV tests.

That was long... Next issue:

134	                } else if (m_lastPts.isValid()) {
135	                    m_sampleDuration = MediaTime(GST_BUFFER_PTS(buffer), GST_SECOND) - m_lastPts;

Usually this is the case... but what happens in the rare, but no less important cases? There are two pathological (yet common) cases:

{PTS=30.0s} -&gt; DUR=?? (probably a small default value, like 1ms)
{PTS=30.1s} -&gt; DUR=0.1s
{PTS=30.2s} -&gt; DUR=0.1s
(new segment is inserted)
{PTS=60.0s} -&gt; DUR=29.8s (wrong, and dangerous!)

or...

{PTS=30.0s} -&gt; DUR=?? (probably a small default value, like 1ms)
{PTS=30.1s} -&gt; DUR=0.1s
{PTS=30.2s} -&gt; DUR=0.1s
(new segment is inserted)
{PTS=0.0s} -&gt; DUR=-30.2s (wrong, even more dangerous!)

&gt; // Some containers like webm don&apos;t supply a duration. Let&apos;s assume 60fps and let the gap sample hack fill the gaps if the duration was actually longer.

It would be desirable to get as small here as possible to avoid frame overlaps. 60 fps = 16ms. An Opus audio frame can get as low as 2.5 ms. Would everything work with a value of 1ms?

&gt; // If we had a last DTS and the PTS hasn&apos;t varied too much (continuous samples), DTS++.

Some formats like VP8 and VP9 don&apos;t need different a different frame order for decoding and presentation. In those cases, per definition, DTS == PTS.

What is the reason for DTS++? The only case where it would be useful would be a container format where DTSs are somehow omitted but they are important for something, and they are caveats*.

In MP4 this is impossible, as it forces you (thankfully!) to specify DTS in all cases due to the implicit nature of many of its boxes (PTS is defined in terms of DTS plus some offset, DTS is defined in terms of durations).

In Matroska... well, there is no such thing as DTSs in Matroska. Frame dependencies, if specified at all, are specified by a completely different mechanism: ReferenceBlock timestamp pointers. https://www.matroska.org/technical/specs/index.html#ReferenceBlock

In practice the lack of DTSs for decoders is not such a big deal as frame dependencies are already stored in the video elementary streams. In fact, looking at the GStreamer code for a while I could not find a single decoder element that uses them for anything.

This makes sense when you consider that h264 is usually encoded in Matroska too and although matroskademux does not completely understand ReferenceBlock, it works just fine!

Caveat on DTS++: The Gst docs define DTS as &quot;the timestamp when the buffer should be decoded&quot; (see https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstBuffer.html). This definition is consistent with the MPEG standards and the MSE spec.

In other words, DTS is a deadline for when the frame should be fully decoded so that it can, at any moment from that point of time, be either presented or used as a dependency for another frame coming next. Note that, as a consequence DTS &lt;= PTS for any correct frame.

This is not the case with your code. Take this few frames as an example and run your algorithm in your head:

           DUR =  1  1  1  1

           PTS =  0  1  3  2
    Actual DTS = -1  0  1  2

Calculated DTS =  1  2  3  4

The DTS calculated by your algorithm don&apos;t resemble the actual decoding order (of course, since that was lost when the file was muxed!). Given that, wouldn&apos;t it make more sense to use PTS as default DTS value?

Furthermore, you don&apos;t even need to do that because there is this code in GStreamerMediaSample: https://github.com/WebKit/webkit/blob/master/Source/WebCore/platform/graphics/gstreamer/mse/GStreamerMediaSample.cpp#L56

Using GST_BUFFER_DTS_OR_PTS() is good because we don&apos;t need to modify the GstBuffer, so even if any decoder would look at the DTS (chances are they won&apos;t), it won&apos;t make a difference.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1376454</commentid>
    <comment_count>5</comment_count>
      <attachid>327459</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-11-30 12:35:13 -0800</bug_when>
    <thetext>Comment on attachment 327459
Patch

Alicia has reviewed this. Removing from request queue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1397582</commentid>
    <comment_count>6</comment_count>
    <who name="Alicia Boya García">aboya</who>
    <bug_when>2018-02-08 10:32:30 -0800</bug_when>
    <thetext>&gt; The DTS calculated by your algorithm don&apos;t resemble the actual decoding order (of course, since that was lost when the file was muxed!). Given that, wouldn&apos;t it make more sense to use PTS as default DTS value?

Correction: It resembles the actual decoding order because the values are increasing and frames in Matroska are stored in decoding order.

In any case, DTS=PTS for all formats used with WebM. Some other formats supported by Matroska (e.g. h264) require more attention, but those are not supported in WebM either way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1464999</commentid>
    <comment_count>7</comment_count>
    <who name="Enrique Ocaña">eocanha</who>
    <bug_when>2018-10-01 07:39:31 -0700</bug_when>
    <thetext>The changes proposed in this patch aren&apos;t needed anymore, as the original issues are already resolved by the recent webm patches landed by Alicia.

*** This bug has been marked as a duplicate of bug 185731 ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>325918</attachid>
            <date>2017-11-03 11:09:29 -0700</date>
            <delta_ts>2017-11-22 10:16:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-179241-20171103180928.patch</filename>
            <type>text/plain</type>
            <size>11071</size>
            <attacher name="Enrique Ocaña">eocanha</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIyOTcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzk2NTU4M2RiNDE1YTU2
ZWE5MGU4YWZhZDllYzg3ZDY5ODc3NWRmMC4uODk3MTcyM2ViNDc3NTNiMzUyNWRiNjBlMDZjNGZh
NzVhNzYzMWE2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDE3LTExLTAzICBFbnJp
cXVlIE9jYcOxYSBHb256w6FsZXogIDxlb2NhbmhhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dT
dHJlYW1lcl1bTVNFXVt3ZWJtXSBTdXBwb3J0IHJlcGV0aXRpdmUgYXBwZW5kaW5nIG9mIHRoZSBz
YW1lIHdlYm0gc2VnbWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTc5MjQxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgTm8gbmV3IHRlc3RzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL21zZS9BcHBlbmRQaXBlbGluZS5jcHA6IEFkZGVkIG5ldworICAgICAgICBmaWVsZHMg
dG8gY29tcHV0ZSB0aGUgZHVyYXRpb24sIFBUUyBhbmQgRFRTIHdoZW4gbm90IHN1cHBsaWVkIGJ5
CisgICAgICAgIEdTdHJlYW1lci4KKyAgICAgICAgKFdlYkNvcmU6OkFwcGVuZFBpcGVsaW5lOjpB
cHBlbmRQaXBlbGluZSk6IEluaXRpYWxpemUgZmllbGRzLgorICAgICAgICAoV2ViQ29yZTo6QXBw
ZW5kUGlwZWxpbmU6OnBhcnNlRGVtdXhlclNyY1BhZENhcHMpOiBBdHRlbXB0IHRvCisgICAgICAg
IGNvbXB1dGUgZHVyYXRpb24gdXNpbmcgdGhlIGZyYW1lcmF0ZSBpZiBwcmVzZW50LgorICAgICAg
ICAoV2ViQ29yZTo6QXBwZW5kUGlwZWxpbmU6OmFwcHNpbmtOZXdTYW1wbGUpOiBBdHRlbXB0IHRv
IGNvbXB1dGUKKyAgICAgICAgZHVyYXRpb24vRFRTL1BUUyBleHRyYXBvbGF0aW5nIGxhc3Qga25v
d24gdmFsdWVzLgorICAgICAgICAoV2ViQ29yZTo6QXBwZW5kUGlwZWxpbmU6OnB1c2hOZXdCdWZm
ZXIpOiBTZXQgdGhlIERJU0NPTlQgZmxhZyBpbiB0aGUKKyAgICAgICAgYnVmZmVyIG9uIHdlYm0g
Y2FzZSB0byBoaW50IEdzdE1hdHJvc2thRGVtdXguCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL21zZS9BcHBlbmRQaXBlbGluZS5oOiBBZGRlZCBuZXcgZmllbGRzLgorCiAy
MDE3LTEwLTA2ICBFbnJpcXVlIE9jYcOxYSBHb256w6FsZXogIDxlb2NhbmhhQGlnYWxpYS5jb20+
CiAKICAgICAgICAgW0dTdHJlYW1lcl1bTVNFXSBMaWtlbHkgcmFjZSBjb25kaXRpb24gY2F1c2Vz
IFdURjo6RGVxdWUgdG8gY3Jhc2ggb24gZGVidWcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBlbmRQaXBlbGlu
ZS5jcHAKaW5kZXggYmQ2NDg5ODYxYjRhZTQ3Y2Y2NmZiNGRjNGY0Yzc3NzRlNWNiY2E4Mi4uNjM0
YzFhMGYzZWVhZGNlYmFkOWVhY2YzYTZmNDI0NmE3MGFjNjFiMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBlbmRQaXBlbGluZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9B
cHBlbmRQaXBlbGluZS5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJHU3RyZWFtZXJF
TUVVdGlsaXRpZXMuaCIKICNpbmNsdWRlICJHU3RyZWFtZXJNZWRpYURlc2NyaXB0aW9uLmgiCiAj
aW5jbHVkZSAiR1N0cmVhbWVyTWVkaWFTYW1wbGUuaCIKKyNpbmNsdWRlICJHU3RyZWFtZXJVdGls
aXRpZXMuaCIKICNpbmNsdWRlICJJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyLmgiCiAj
aW5jbHVkZSAiTWVkaWFEZXNjcmlwdGlvbi5oIgogI2luY2x1ZGUgIlNvdXJjZUJ1ZmZlclByaXZh
dGVHU3RyZWFtZXIuaCIKQEAgLTExMSw2ICsxMTIsOSBAQCBBcHBlbmRQaXBlbGluZTo6QXBwZW5k
UGlwZWxpbmUoUmVmPE1lZGlhU291cmNlQ2xpZW50R1N0cmVhbWVyTVNFPiBtZWRpYVNvdXJjZUNs
aQogICAgICwgbV9hcHBlbmRTdGF0ZShBcHBlbmRTdGF0ZTo6Tm90U3RhcnRlZCkKICAgICAsIG1f
YWJvcnRQZW5kaW5nKGZhbHNlKQogICAgICwgbV9zdHJlYW1UeXBlKFVua25vd24pCisgICAgLCBt
X3NhbXBsZUR1cmF0aW9uKE1lZGlhVGltZTo6aW52YWxpZFRpbWUoKSkKKyAgICAsIG1fbGFzdFB0
cyhNZWRpYVRpbWU6OmludmFsaWRUaW1lKCkpCisgICAgLCBtX2xhc3REdHMoTWVkaWFUaW1lOjpp
bnZhbGlkVGltZSgpKQogewogICAgIEFTU0VSVChXVEY6OmlzTWFpblRocmVhZCgpKTsKIApAQCAt
NjI3LDYgKzYzMSwxNCBAQCB2b2lkIEFwcGVuZFBpcGVsaW5lOjpwYXJzZURlbXV4ZXJTcmNQYWRD
YXBzKEdzdENhcHMqIGRlbXV4ZXJTcmNQYWRDYXBzKQogICAgICAgICAgICAgICAgIG1fc3RyZWFt
VHlwZSA9IFdlYkNvcmU6Ok1lZGlhU291cmNlU3RyZWFtVHlwZUdTdHJlYW1lcjo6VGV4dDsKICAg
ICAgICAgfQogICAgIH0KKworICAgIGdpbnQgZnJhbWVyYXRlTnVtZXJhdG9yLCBmcmFtZXJhdGVE
ZW5vbWluYXRvcjsKKyAgICBpZiAoZ3N0X3N0cnVjdHVyZV9nZXRfZnJhY3Rpb24oc3RydWN0dXJl
LCAiZnJhbWVyYXRlIiwgJmZyYW1lcmF0ZU51bWVyYXRvciwgJmZyYW1lcmF0ZURlbm9taW5hdG9y
KSAmJiBmcmFtZXJhdGVOdW1lcmF0b3IpCisgICAgICAgIG1fc2FtcGxlRHVyYXRpb24gPSBNZWRp
YVRpbWUoZnJhbWVyYXRlRGVub21pbmF0b3IsIGZyYW1lcmF0ZU51bWVyYXRvcik7CisgICAgZWxz
ZSBpZiAoZ3N0X3N0cnVjdHVyZV9nZXRfaW50KHN0cnVjdHVyZSwgInJhdGUiLCAmZnJhbWVyYXRl
TnVtZXJhdG9yKSkKKyAgICAgICAgbV9zYW1wbGVEdXJhdGlvbiA9IE1lZGlhVGltZSgxLCBmcmFt
ZXJhdGVOdW1lcmF0b3IpOworICAgIGVsc2UKKyAgICAgICAgbV9zYW1wbGVEdXJhdGlvbiA9IE1l
ZGlhVGltZTo6aW52YWxpZFRpbWUoKTsKIH0KIAogdm9pZCBBcHBlbmRQaXBlbGluZTo6YXBwc2lu
a0NhcHNDaGFuZ2VkKCkKQEAgLTcwMiw2ICs3MTQsMzggQEAgdm9pZCBBcHBlbmRQaXBlbGluZTo6
YXBwc2lua05ld1NhbXBsZShHc3RTYW1wbGUqIHNhbXBsZSkKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogCisgICAgICAgIGlmIChzYW1wbGUpIHsKKyAgICAgICAgICAgIEdzdEJ1ZmZl
ciogYnVmZmVyID0gZ3N0X3NhbXBsZV9nZXRfYnVmZmVyKHNhbXBsZSk7CisgICAgICAgICAgICBp
ZiAoYnVmZmVyKSB7CisgICAgICAgICAgICAgICAgaWYgKCFHU1RfQlVGRkVSX0RVUkFUSU9OX0lT
X1ZBTElEKGJ1ZmZlcikpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG1fc2FtcGxlRHVyYXRp
b24uaXNWYWxpZCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBTb21lIGNvbnRhaW5l
cnMgbGlrZSB3ZWJtIGFuZCBhdWRpby94LW9wdXMgZG9uJ3Qgc3VwcGx5IGEgZHVyYXRpb24uIExl
dCdzIHVzZSB0aGUgb25lIHN1cHBsaWVkIGJ5IHRoZSBjYXBzLgorICAgICAgICAgICAgICAgICAg
ICAgICAgR1NUX0JVRkZFUl9EVVJBVElPTihidWZmZXIpID0gdG9Hc3RDbG9ja1RpbWUobV9zYW1w
bGVEdXJhdGlvbik7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobV9sYXN0UHRzLmlz
VmFsaWQoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgbV9zYW1wbGVEdXJhdGlvbiA9IE1l
ZGlhVGltZShHU1RfQlVGRkVSX1BUUyhidWZmZXIpLCBHU1RfU0VDT05EKSAtIG1fbGFzdFB0czsK
KyAgICAgICAgICAgICAgICAgICAgICAgIEdTVF9CVUZGRVJfRFVSQVRJT04oYnVmZmVyKSA9IHRv
R3N0Q2xvY2tUaW1lKG1fc2FtcGxlRHVyYXRpb24pOworICAgICAgICAgICAgICAgICAgICB9IGVs
c2UgaWYgKEdTVF9CVUZGRVJfUFRTX0lTX1ZBTElEKGJ1ZmZlcikpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIFNvbWUgY29udGFpbmVycyBsaWtlIHdlYm0gZG9uJ3Qgc3VwcGx5IGEgZHVy
YXRpb24uIExldCdzIGFzc3VtZSA2MGZwcyBhbmQgbGV0IHRoZSBnYXAgc2FtcGxlIGhhY2sgZmls
bCB0aGUgZ2FwcyBpZiB0aGUgZHVyYXRpb24gd2FzIGFjdHVhbGx5IGxvbmdlci4KKyAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIFRoZSBkdXJhdGlvbiBmb3IgdGhlIG5leHQgc2FtcGxlcyB3aWxs
IGJlIGNvbXB1dGVkIHVzaW5nIFBUUyBkaWZmZXJlbmNlcy4KKyAgICAgICAgICAgICAgICAgICAg
ICAgIEdTVF9CVUZGRVJfRFVSQVRJT04oYnVmZmVyKSA9IHRvR3N0Q2xvY2tUaW1lKE1lZGlhVGlt
ZSgxLCA2MCkpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorCisK
KyAgICAgICAgICAgICAgICBpZiAoIUdTVF9CVUZGRVJfRFRTX0lTX1ZBTElEKGJ1ZmZlcikgJiYg
R1NUX0JVRkZFUl9QVFNfSVNfVkFMSUQoYnVmZmVyKSkgeworICAgICAgICAgICAgICAgICAgICAv
LyBJZiB3ZSBoYWQgYSBsYXN0IERUUyBhbmQgdGhlIFBUUyBoYXNuJ3QgdmFyaWVkIHRvbyBtdWNo
IChjb250aW51b3VzIHNhbXBsZXMpLCBEVFMrKy4KKyAgICAgICAgICAgICAgICAgICAgaWYgKG1f
bGFzdER0cy5pc1ZhbGlkKCkgJiYgYWJzKG1fbGFzdFB0cyArIE1lZGlhVGltZShHU1RfQlVGRkVS
X0RVUkFUSU9OKGJ1ZmZlciksIEdTVF9TRUNPTkQpIC0gTWVkaWFUaW1lKEdTVF9CVUZGRVJfUFRT
KGJ1ZmZlciksIEdTVF9TRUNPTkQpKSA8IE1lZGlhVGltZSgxLCAyKSkKKyAgICAgICAgICAgICAg
ICAgICAgICAgIEdTVF9CVUZGRVJfRFRTKGJ1ZmZlcikgPSB0b0dzdENsb2NrVGltZShtX2xhc3RE
dHMgKyBNZWRpYVRpbWUoR1NUX0JVRkZFUl9EVVJBVElPTihidWZmZXIpLCBHU1RfU0VDT05EKSk7
CisgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIEdTVF9C
VUZGRVJfRFRTKGJ1ZmZlcikgPSB0b0dzdENsb2NrVGltZShNZWRpYVRpbWUoR1NUX0JVRkZFUl9Q
VFMoYnVmZmVyKSwgR1NUX1NFQ09ORCkgKyBNZWRpYVRpbWUoR1NUX0JVRkZFUl9EVVJBVElPTihi
dWZmZXIpLCBHU1RfU0VDT05EKSk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAg
ICAgbV9sYXN0UHRzID0gTWVkaWFUaW1lKEdTVF9CVUZGRVJfUFRTKGJ1ZmZlciksIEdTVF9TRUNP
TkQpOworICAgICAgICAgICAgICAgIG1fbGFzdER0cyA9IE1lZGlhVGltZShHU1RfQlVGRkVSX0RU
UyhidWZmZXIpLCBHU1RfU0VDT05EKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICB9CisKICAg
ICAgICAgUmVmUHRyPEdTdHJlYW1lck1lZGlhU2FtcGxlPiBtZWRpYVNhbXBsZSA9IFdlYkNvcmU6
OkdTdHJlYW1lck1lZGlhU2FtcGxlOjpjcmVhdGUoc2FtcGxlLCBtX3ByZXNlbnRhdGlvblNpemUs
IHRyYWNrSWQoKSk7CiAKICAgICAgICAgR1NUX1RSQUNFKCJhcHBlbmQ6IHRyYWNrSWQ9JXMgUFRT
PSVmIHByZXNlbnRhdGlvblNpemU9JS4wZnglLjBmIiwgbWVkaWFTYW1wbGUtPnRyYWNrSUQoKS5z
dHJpbmcoKS51dGY4KCkuZGF0YSgpLCBtZWRpYVNhbXBsZS0+cHJlc2VudGF0aW9uVGltZSgpLnRv
RmxvYXQoKSwgbWVkaWFTYW1wbGUtPnByZXNlbnRhdGlvblNpemUoKS53aWR0aCgpLCBtZWRpYVNh
bXBsZS0+cHJlc2VudGF0aW9uU2l6ZSgpLmhlaWdodCgpKTsKQEAgLTg2NSw2ICs5MDksMTEgQEAg
R3N0Rmxvd1JldHVybiBBcHBlbmRQaXBlbGluZTo6cHVzaE5ld0J1ZmZlcihHc3RCdWZmZXIqIGJ1
ZmZlcikKIHsKICAgICBHc3RGbG93UmV0dXJuIHJlc3VsdDsKIAorICAgIGlmIChtX3NvdXJjZUJ1
ZmZlclByaXZhdGUtPnR5cGUoKS5jb250YWluZXJUeXBlKCkuZW5kc1dpdGgoIndlYm0iKSkgewor
ICAgICAgICAvLyBUaGlzIGhpbnRzIHRoZSBkZW11eGVyIHRvIHByb2Nlc3Mgb3V0LW9mLW9yZGVy
IGFwcGVuZHMgcHJvcGVybHkgaW4gbWF0cm9za2FkZW11eC4KKyAgICAgICAgR1NUX0JVRkZFUl9G
TEFHX1NFVChidWZmZXIsIEdTVF9CVUZGRVJfRkxBR19ESVNDT05UKTsKKyAgICB9CisKICAgICBp
ZiAobV9hYm9ydFBlbmRpbmcpIHsKICAgICAgICAgbV9wZW5kaW5nQnVmZmVyID0gYWRvcHRHUmVm
KGJ1ZmZlcik7CiAgICAgICAgIHJlc3VsdCA9IEdTVF9GTE9XX09LOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBlbmRQaXBlbGlu
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBl
bmRQaXBlbGluZS5oCmluZGV4IDViMTcxNWFmZjQ3MWRhMTg4MzkyOTgxMDcwNjA1NjFiZWY5M2Q4
ODEuLjQxZWQ5ZTFiNGU4Nzc1YTEwYzNlODViYzYyMjA0NzhkYjYzZDA1YjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlw
ZWxpbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
bXNlL0FwcGVuZFBpcGVsaW5lLmgKQEAgLTE1NCw2ICsxNTQsMTIgQEAgcHJpdmF0ZToKICAgICBS
ZWZQdHI8V2ViQ29yZTo6VHJhY2tQcml2YXRlQmFzZT4gbV90cmFjazsKIAogICAgIEdSZWZQdHI8
R3N0QnVmZmVyPiBtX3BlbmRpbmdCdWZmZXI7CisKKyAgICAvLyBBdXhpbGlhcnkgYXR0cmlidXRl
cyB0byBjb21wdXRlIHRoZSBzYW1wbGUgZHVyYXRpb24gd2hlbiBHU3RyZWFtZXIgcHJvdmlkZXMg
YW4gaW52YWxpZCBvbmUuCisgICAgTWVkaWFUaW1lIG1fc2FtcGxlRHVyYXRpb247CisgICAgTWVk
aWFUaW1lIG1fbGFzdFB0czsKKyAgICBNZWRpYVRpbWUgbV9sYXN0RHRzOworCiAjaWYgRU5BQkxF
KEVOQ1JZUFRFRF9NRURJQSkKICAgICBHVW5pcXVlUHRyPEdzdFN0cnVjdHVyZT4gbV9wZW5kaW5n
RGVjcnlwdGlvblN0cnVjdHVyZTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9n
IGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDc1N2JjOGFhNjc2YTFhMTI3ZDJmMDg4YTUzNTAwZWEx
YjZkZTZhM2QuLmE0NTY1ZGE5ZDI0ZDIzYWVlYjk1ZTcxNTU2MzRmZTIzYmNiNmMwOTQgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NyBAQAorMjAxNy0xMS0wMyAgRW5yaXF1ZSBPY2HDsWEgR29uesOhbGV6ICA8ZW9jYW5oYUBpZ2Fs
aWEuY29tPgorCisgICAgICAgIFtHU3RyZWFtZXJdW01TRV1bd2VibV0gU3VwcG9ydCByZXBldGl0
aXZlIGFwcGVuZGluZyBvZiB0aGUgc2FtZSB3ZWJtIHNlZ21lbnQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3OTI0MQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vZGlmaWNhdGlvbnMgb24gR3N0TWF0cm9z
a2FEZW11eCB0cmFja2VkIGluIEdTdHJlYW1lciBidWd6aWxsYSBoZXJlOgorICAgICAgICBodHRw
czovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzM0MDgyCisgICAgICAgIGh0
dHBzOi8vYnVnMzM0MDgyLmJ1Z3ppbGxhLWF0dGFjaG1lbnRzLmdub21lLm9yZy9hdHRhY2htZW50
LmNnaT9pZD0zNjIyMTIKKworICAgICAgICAqIGdzdHJlYW1lci9qaGJ1aWxkLm1vZHVsZXM6IEFk
ZGVkIG5ldyBwYXRjaC4KKyAgICAgICAgKiBnc3RyZWFtZXIvcGF0Y2hlcy9nc3QtcGx1Z2lucy1n
b29kLTAwMDktbWF0cm9za2FkZW11eC1TdXBwb3J0LXJlcHJvY2Vzc2luZy1vZi10aGUtc2FtZS1m
aWxlLS5wYXRjaDogQWRkZWQuCisKIDIwMTctMTAtMDYgIENoYXJsZXMgVHVybmVyICA8Y3R1cm5l
ckBpZ2FsaWEuY29tPgogCiAgICAgICAgIERpc2FibGUgYm1hbGxvYyB3aGVuIHJ1bm5pbmcgVmFs
Z3JpbmQKZGlmZiAtLWdpdCBhL1Rvb2xzL2dzdHJlYW1lci9qaGJ1aWxkLm1vZHVsZXMgYi9Ub29s
cy9nc3RyZWFtZXIvamhidWlsZC5tb2R1bGVzCmluZGV4IGNhYzM1Zjk4MGMzYWJhODllYmU3MzNm
MmQ0MzQyN2ZjMjFiYzkyMGQuLjU2MDZlYTQ4ZjI5NGVkNjZiODVmYTg5N2VlYmQwOWRlMzcwOWYz
ODQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL2dzdHJlYW1lci9qaGJ1aWxkLm1vZHVsZXMKKysrIGIvVG9v
bHMvZ3N0cmVhbWVyL2poYnVpbGQubW9kdWxlcwpAQCAtNzgsNiArNzgsNyBAQAogICAgICAgPHBh
dGNoIGZpbGU9ImdzdC1wbHVnaW5zLWdvb2QtMDAwNS1zb3VwaHR0cHNyYy1jb29raWUtamFyLWFu
ZC1jb250ZXh0LXF1ZXJ5LXN1cHBvcnQucGF0Y2giIHN0cmlwPSIxIi8+CiAgICAgICA8cGF0Y2gg
ZmlsZT0iZ3N0LXBsdWdpbnMtZ29vZC0wMDA2LXF0ZGVtdXgtYWRkLWNvbnRleHQtZm9yLWEtcHJl
ZmVycmVkLXByb3RlY3Rpb24ucGF0Y2giIHN0cmlwPSIxIi8+CiAgICAgICA8cGF0Y2ggZmlsZT0i
Z3N0LXBsdWdpbnMtZ29vZC0wMDA4LXF0ZGVtdXgtYWxzby1wdXNoLWJ1ZmZlcnMtd2l0aG91dC1l
bmNyeXB0aW9uLWluZm8taW4ucGF0Y2giIHN0cmlwPSIxIi8+CisgICAgICA8cGF0Y2ggZmlsZT0i
Z3N0LXBsdWdpbnMtZ29vZC0wMDA5LW1hdHJvc2thZGVtdXgtU3VwcG9ydC1yZXByb2Nlc3Npbmct
b2YtdGhlLXNhbWUtZmlsZS0ucGF0Y2giIHN0cmlwPSIxIi8+CiAgICAgPC9icmFuY2g+CiAgIDwv
YXV0b3Rvb2xzPgogCmRpZmYgLS1naXQgYS9Ub29scy9nc3RyZWFtZXIvcGF0Y2hlcy9nc3QtcGx1
Z2lucy1nb29kLTAwMDktbWF0cm9za2FkZW11eC1TdXBwb3J0LXJlcHJvY2Vzc2luZy1vZi10aGUt
c2FtZS1maWxlLS5wYXRjaCBiL1Rvb2xzL2dzdHJlYW1lci9wYXRjaGVzL2dzdC1wbHVnaW5zLWdv
b2QtMDAwOS1tYXRyb3NrYWRlbXV4LVN1cHBvcnQtcmVwcm9jZXNzaW5nLW9mLXRoZS1zYW1lLWZp
bGUtLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI5Yzc4NWY3ZGI5YzRkZDJiNmU4NTQ5ZWNhZWU2Mjc1ZGVi
NTEwODkKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9nc3RyZWFtZXIvcGF0Y2hlcy9nc3QtcGx1
Z2lucy1nb29kLTAwMDktbWF0cm9za2FkZW11eC1TdXBwb3J0LXJlcHJvY2Vzc2luZy1vZi10aGUt
c2FtZS1maWxlLS5wYXRjaApAQCAtMCwwICsxLDQ0IEBACitGcm9tIGYyOGNhYTlkNWY0MjczYjRl
ZGM1NTc2NWZlODVjMDE5NzhiNDBiNzQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiA9
P1VURi04P3E/RW5yaXF1ZT0yME9jYT1DMz1CMWE9MjBHb256PUMzPUExbGV6Pz0gPGVvY2FuaGFA
aWdhbGlhLmNvbT4KK0RhdGU6IEZyaSwgMjAgT2N0IDIwMTcgMTY6MDU6MTkgKzAwMDAKK1N1Ympl
Y3Q6IFtQQVRDSF0gbWF0cm9za2FkZW11eDogU3VwcG9ydCByZXByb2Nlc3Npbmcgb2YgdGhlIHNh
bWUgZmlsZSBzZXZlcmFsCisgdGltZXMKKworYnkgYWxzbyBleHBlY3RpbmcgdGhlIEdTVF9FQk1M
X0lEX0hFQURFUiB3aGlsZSBpbiB0aGUKK0dTVF9NQVRST1NLQV9SRUFEX1NUQVRFX3tIRUFERVIs
REFUQSxTRUVLfSBzdGF0ZXMgYW5kIHJlc2V0dGluZyB0aGUKK3NlZ21lbnQgcG9zaXRpb24gaWYg
dGhlIGlucHV0IEdzdEJ1ZmZlciBoYXMgdGhlIERJU0NPTlQgZmxhZyBzZXQuCisKK1RoaXMgaXMg
bmVlZGVkIGluIG9yZGVyIHRvIHBhc3MgdGVzdCAiMjAuIFZpZGVvQnVmZmVyU2l6ZSIgZnJvbSB0
aGUKK1lvdVR1YmUgTVNFIENvbmZvcm1hbmNlIFRlc3RzIDIwMTggdXNpbmcgV2ViS2l0LgorLS0t
CisgZ3N0L21hdHJvc2thL21hdHJvc2thLWRlbXV4LmMgfCA3ICsrKysrKysKKyAxIGZpbGUgY2hh
bmdlZCwgNyBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9nc3QvbWF0cm9za2EvbWF0cm9z
a2EtZGVtdXguYyBiL2dzdC9tYXRyb3NrYS9tYXRyb3NrYS1kZW11eC5jCitpbmRleCBlNDE5YTcw
Li4zODQ5MGY4IDEwMDY0NAorLS0tIGEvZ3N0L21hdHJvc2thL21hdHJvc2thLWRlbXV4LmMKKysr
KyBiL2dzdC9tYXRyb3NrYS9tYXRyb3NrYS1kZW11eC5jCitAQCAtNDM5MSw2ICs0MzkxLDExIEBA
IGdzdF9tYXRyb3NrYV9kZW11eF9wYXJzZV9pZCAoR3N0TWF0cm9za2FEZW11eCAqIGRlbXV4LCBn
dWludDMyIGlkLAorICAgICBjYXNlIEdTVF9NQVRST1NLQV9SRUFEX1NUQVRFX0RBVEE6CisgICAg
IGNhc2UgR1NUX01BVFJPU0tBX1JFQURfU1RBVEVfU0VFSzoKKyAgICAgICBzd2l0Y2ggKGlkKSB7
CisrICAgICAgICBjYXNlIEdTVF9FQk1MX0lEX0hFQURFUjoKKysgICAgICAgICAgR1NUX1JFQURf
Q0hFQ0sgKGdzdF9tYXRyb3NrYV9kZW11eF9mbHVzaCAoZGVtdXgsIHJlYWQpKTsKKysgICAgICAg
ICAgZGVtdXgtPmNvbW1vbi5zdGF0ZSA9IEdTVF9NQVRST1NLQV9SRUFEX1NUQVRFX1NFR01FTlQ7
CisrICAgICAgICAgIGdzdF9tYXRyb3NrYV9kZW11eF9jaGVja19zZWVrYWJpbGl0eSAoZGVtdXgp
OworKyAgICAgICAgICBicmVhazsKKyAgICAgICAgIGNhc2UgR1NUX01BVFJPU0tBX0lEX1NFR01F
TlRJTkZPOgorICAgICAgICAgICBpZiAoIWRlbXV4LT5jb21tb24uc2VnbWVudGluZm9fcGFyc2Vk
KSB7CisgICAgICAgICAgICAgR1NUX1JFQURfQ0hFQ0sgKGdzdF9tYXRyb3NrYV9kZW11eF90YWtl
IChkZW11eCwgcmVhZCwgJmVibWwpKTsKK0BAIC00ODIzLDYgKzQ4MjgsOCBAQCBnc3RfbWF0cm9z
a2FfZGVtdXhfY2hhaW4gKEdzdFBhZCAqIHBhZCwgR3N0T2JqZWN0ICogcGFyZW50LCBHc3RCdWZm
ZXIgKiBidWZmZXIpCisgICBpZiAoR19VTkxJS0VMWSAoR1NUX0JVRkZFUl9JU19ESVNDT05UIChi
dWZmZXIpKSkgeworICAgICBHU1RfREVCVUdfT0JKRUNUIChkZW11eCwgImdvdCBESVNDT05UIik7
CisgICAgIGdzdF9hZGFwdGVyX2NsZWFyIChkZW11eC0+Y29tbW9uLmFkYXB0ZXIpOworKyAgICBk
ZW11eC0+Y29tbW9uLnNlZ21lbnQucG9zaXRpb24gPSAwOworKworICAgICBHU1RfT0JKRUNUX0xP
Q0sgKGRlbXV4KTsKKyAgICAgZ3N0X21hdHJvc2thX3JlYWRfY29tbW9uX3Jlc2V0X3N0cmVhbXMg
KCZkZW11eC0+Y29tbW9uLAorICAgICAgICAgR1NUX0NMT0NLX1RJTUVfTk9ORSwgRkFMU0UpOwor
LS0gCisyLjEuNAorCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>327459</attachid>
            <date>2017-11-22 10:16:18 -0800</date>
            <delta_ts>2017-11-30 12:35:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-179241-20171122181617.patch</filename>
            <type>text/plain</type>
            <size>11253</size>
            <attacher name="Enrique Ocaña">eocanha</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI0OTE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjUxYWUwMTE4YWM5YTBj
Y2VjNjY4MDdmNWEyYzg1NTY3YWU1MWUwMC4uMTIyMTFhYTAwODcwNjM4OWFlYjM0NTM0M2UzODg2
MzNkNzA5ZWI5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDE3LTExLTIyICBFbnJp
cXVlIE9jYcOxYSBHb256w6FsZXogIDxlb2NhbmhhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dT
dHJlYW1lcl1bTVNFXVt3ZWJtXSBTdXBwb3J0IHJlcGV0aXRpdmUgYXBwZW5kaW5nIG9mIHRoZSBz
YW1lIHdlYm0gc2VnbWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTc5MjQxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgTm8gbmV3IHRlc3RzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL21zZS9BcHBlbmRQaXBlbGluZS5jcHA6IEFkZGVkIGhlbHBlcgorICAgICAgICBjbGFz
cyB0byBjb21wdXRlIHRoZSBkdXJhdGlvbiBhbmQgRFRTIHdoZW4gbm90IHN1cHBsaWVkIGJ5IEdT
dHJlYW1lci4KKyAgICAgICAgKFdlYkNvcmU6OkJ1ZmZlck1ldGFkYXRhQ29tcGxldGVyOjpCdWZm
ZXJNZXRhZGF0YUNvbXBsZXRlcik6IEluaXRpYWxpemUKKyAgICAgICAgZHVyYXRpb24gZnJvbSBm
cmFtZXJhdGUgaWYgYXZhaWxhYmxlLgorICAgICAgICAoV2ViQ29yZTo6QnVmZmVyTWV0YWRhdGFD
b21wbGV0ZXI6OmNvbXBsZXRlTWlzc2luZ01ldGFkYXRhKTogRmlsbCBpbgorICAgICAgICB0aGUg
bWlzc2luZyBtZXRhZGF0YSAoZHVyYXRpb24sIFBUUykgaW4gdGhlIEdzdEJ1ZmZlci4gVXBkYXRl
IGludGVybmFsCisgICAgICAgIGF0dHJpYnV0ZXMuCisgICAgICAgIChXZWJDb3JlOjpBcHBlbmRQ
aXBlbGluZTo6cHVzaE5ld0J1ZmZlcik6IFNldCB0aGUgRElTQ09OVCBmbGFnIGluIHRoZQorICAg
ICAgICBidWZmZXIgb24gd2VibSBjYXNlIHRvIGhpbnQgR3N0TWF0cm9za2FEZW11eC4KKyAgICAg
ICAgKFdlYkNvcmU6OkFwcGVuZFBpcGVsaW5lOjpjb25uZWN0RGVtdXhlclNyY1BhZFRvQXBwc2lu
ayk6IFJlZ2lzdGVyIGEKKyAgICAgICAgcHJvYmUgdG8gY2FsbCBCdWZmZXJNZXRhZGF0YUNvbXBs
ZXRlciAoYXMgdXNlckRhdGEpLiBMaW5raW5nIGl0IHRvIHRoZQorICAgICAgICBwcm9iZSBhcyB1
c2VyRGF0YSBpbnN0ZWFkIG9mIHVzaW5nIGFuIEFwcGVuZFBpcGVsaW5lIGF0dHJpYnV0ZSB3aWxs
IGJlCisgICAgICAgIGhlbHBmdWwgaW4gdGhlIGZ1dHVyZSB3aGVuIHdlIGFkZCBzdXBwb3J0IGZv
ciBtdWx0aXBsZSB0cmFja3MgcGVyCisgICAgICAgIFNvdXJjZUJ1ZmZlci4KKwogMjAxNy0xMS0x
NiAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGlnYWxpYS5jb20+CiAKICAgICAgICAg
UkVHUkVTU0lPTihyMjI0ODg3KTogR0NDIDUgYnVpbGQgYnJva2VuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL0FwcGVuZFBpcGVsaW5l
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBw
ZW5kUGlwZWxpbmUuY3BwCmluZGV4IDc0Y2QyOGJiOTkxNzU4NzdmMjcxNTlhMjBhMjc3YzgwMzhm
ZTkxMmYuLjExOWNlNzY3ZjA1MTY2OTVkZDI2ZTczZjM5MDExZjgyMzI0NjhjZWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBwZW5k
UGlwZWxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9tc2UvQXBwZW5kUGlwZWxpbmUuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAi
R1N0cmVhbWVyRU1FVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiR1N0cmVhbWVyTWVkaWFEZXNjcmlw
dGlvbi5oIgogI2luY2x1ZGUgIkdTdHJlYW1lck1lZGlhU2FtcGxlLmgiCisjaW5jbHVkZSAiR1N0
cmVhbWVyVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJl
YW1lci5oIgogI2luY2x1ZGUgIk1lZGlhRGVzY3JpcHRpb24uaCIKICNpbmNsdWRlICJTb3VyY2VC
dWZmZXJQcml2YXRlR1N0cmVhbWVyLmgiCkBAIC0xMDUsNiArMTA2LDYwIEBAIHN0YXRpYyB2b2lk
IGFwcGVuZFBpcGVsaW5lU3RhdGVDaGFuZ2VNZXNzYWdlQ2FsbGJhY2soR3N0QnVzKiwgR3N0TWVz
c2FnZSogbWVzc2FnCiAgICAgYXBwZW5kUGlwZWxpbmUtPmhhbmRsZVN0YXRlQ2hhbmdlTWVzc2Fn
ZShtZXNzYWdlKTsKIH0KIAorLy8gQXV4aWxpYXJ5IGNsYXNzIHRvIGNvbXB1dGUgdGhlIHNhbXBs
ZSBkdXJhdGlvbiB3aGVuIEdTdHJlYW1lciBwcm92aWRlcyBhbiBpbnZhbGlkIG9uZS4KK2NsYXNz
IEJ1ZmZlck1ldGFkYXRhQ29tcGxldGVyIHsKK3B1YmxpYzoKKyAgICBCdWZmZXJNZXRhZGF0YUNv
bXBsZXRlcihHc3RDYXBzKiBkZW11eGVyU3JjUGFkQ2FwcykKKyAgICAgICAgOiBtX3NhbXBsZUR1
cmF0aW9uKE1lZGlhVGltZTo6aW52YWxpZFRpbWUoKSkKKyAgICAgICAgLCBtX2xhc3RQdHMoTWVk
aWFUaW1lOjppbnZhbGlkVGltZSgpKQorICAgICAgICAsIG1fbGFzdER0cyhNZWRpYVRpbWU6Omlu
dmFsaWRUaW1lKCkpCisgICAgeworICAgICAgICBpZiAoZGVtdXhlclNyY1BhZENhcHMpIHsKKyAg
ICAgICAgICAgIEdzdFN0cnVjdHVyZSogc3RydWN0dXJlID0gZ3N0X2NhcHNfZ2V0X3N0cnVjdHVy
ZShkZW11eGVyU3JjUGFkQ2FwcywgMCk7CisgICAgICAgICAgICBnaW50IGZyYW1lcmF0ZU51bWVy
YXRvciwgZnJhbWVyYXRlRGVub21pbmF0b3I7CisgICAgICAgICAgICBpZiAoZ3N0X3N0cnVjdHVy
ZV9nZXRfZnJhY3Rpb24oc3RydWN0dXJlLCAiZnJhbWVyYXRlIiwgJmZyYW1lcmF0ZU51bWVyYXRv
ciwgJmZyYW1lcmF0ZURlbm9taW5hdG9yKSAmJiBmcmFtZXJhdGVOdW1lcmF0b3IpCisgICAgICAg
ICAgICAgICAgbV9zYW1wbGVEdXJhdGlvbiA9IE1lZGlhVGltZShmcmFtZXJhdGVEZW5vbWluYXRv
ciwgZnJhbWVyYXRlTnVtZXJhdG9yKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKGdzdF9zdHJ1Y3R1
cmVfZ2V0X2ludChzdHJ1Y3R1cmUsICJyYXRlIiwgJmZyYW1lcmF0ZU51bWVyYXRvcikpCisgICAg
ICAgICAgICAgICAgbV9zYW1wbGVEdXJhdGlvbiA9IE1lZGlhVGltZSgxLCBmcmFtZXJhdGVOdW1l
cmF0b3IpOworICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCBjb21wbGV0ZU1pc3NpbmdNZXRh
ZGF0YShHc3RCdWZmZXIqIGJ1ZmZlcikKKyAgICB7CisgICAgICAgIGlmIChidWZmZXIpIHsKKyAg
ICAgICAgICAgIGlmICghR1NUX0JVRkZFUl9EVVJBVElPTl9JU19WQUxJRChidWZmZXIpKSB7Cisg
ICAgICAgICAgICAgICAgaWYgKG1fc2FtcGxlRHVyYXRpb24uaXNWYWxpZCgpKSB7CisgICAgICAg
ICAgICAgICAgICAgIC8vIFNvbWUgY29udGFpbmVycyBsaWtlIHdlYm0gYW5kIGF1ZGlvL3gtb3B1
cyBkb24ndCBzdXBwbHkgYSBkdXJhdGlvbi4gTGV0J3MgdXNlIHRoZSBvbmUgc3VwcGxpZWQgYnkg
dGhlIGNhcHMuCisgICAgICAgICAgICAgICAgICAgIEdTVF9CVUZGRVJfRFVSQVRJT04oYnVmZmVy
KSA9IHRvR3N0Q2xvY2tUaW1lKG1fc2FtcGxlRHVyYXRpb24pOworICAgICAgICAgICAgICAgIH0g
ZWxzZSBpZiAobV9sYXN0UHRzLmlzVmFsaWQoKSkgeworICAgICAgICAgICAgICAgICAgICBtX3Nh
bXBsZUR1cmF0aW9uID0gTWVkaWFUaW1lKEdTVF9CVUZGRVJfUFRTKGJ1ZmZlciksIEdTVF9TRUNP
TkQpIC0gbV9sYXN0UHRzOworICAgICAgICAgICAgICAgICAgICBHU1RfQlVGRkVSX0RVUkFUSU9O
KGJ1ZmZlcikgPSB0b0dzdENsb2NrVGltZShtX3NhbXBsZUR1cmF0aW9uKTsKKyAgICAgICAgICAg
ICAgICB9IGVsc2UgaWYgKEdTVF9CVUZGRVJfUFRTX0lTX1ZBTElEKGJ1ZmZlcikpIHsKKyAgICAg
ICAgICAgICAgICAgICAgLy8gU29tZSBjb250YWluZXJzIGxpa2Ugd2VibSBkb24ndCBzdXBwbHkg
YSBkdXJhdGlvbi4gTGV0J3MgYXNzdW1lIDYwZnBzIGFuZCBsZXQgdGhlIGdhcCBzYW1wbGUgaGFj
ayBmaWxsIHRoZSBnYXBzIGlmIHRoZSBkdXJhdGlvbiB3YXMgYWN0dWFsbHkgbG9uZ2VyLgorICAg
ICAgICAgICAgICAgICAgICAvLyBUaGUgZHVyYXRpb24gZm9yIHRoZSBuZXh0IHNhbXBsZXMgd2ls
bCBiZSBjb21wdXRlZCB1c2luZyBQVFMgZGlmZmVyZW5jZXMuCisgICAgICAgICAgICAgICAgICAg
IEdTVF9CVUZGRVJfRFVSQVRJT04oYnVmZmVyKSA9IHRvR3N0Q2xvY2tUaW1lKE1lZGlhVGltZSgx
LCA2MCkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
aWYgKCFHU1RfQlVGRkVSX0RUU19JU19WQUxJRChidWZmZXIpICYmIEdTVF9CVUZGRVJfUFRTX0lT
X1ZBTElEKGJ1ZmZlcikpIHsKKyAgICAgICAgICAgICAgICAvLyBJZiB3ZSBoYWQgYSBsYXN0IERU
UyBhbmQgdGhlIFBUUyBoYXNuJ3QgdmFyaWVkIHRvbyBtdWNoIChjb250aW51b3VzIHNhbXBsZXMp
LCBEVFMrKy4KKyAgICAgICAgICAgICAgICBpZiAobV9sYXN0RHRzLmlzVmFsaWQoKSAmJiBhYnMo
bV9sYXN0UHRzICsgTWVkaWFUaW1lKEdTVF9CVUZGRVJfRFVSQVRJT04oYnVmZmVyKSwgR1NUX1NF
Q09ORCkgLSBNZWRpYVRpbWUoR1NUX0JVRkZFUl9QVFMoYnVmZmVyKSwgR1NUX1NFQ09ORCkpIDwg
TWVkaWFUaW1lKDEsIDIpKQorICAgICAgICAgICAgICAgICAgICBHU1RfQlVGRkVSX0RUUyhidWZm
ZXIpID0gdG9Hc3RDbG9ja1RpbWUobV9sYXN0RHRzICsgTWVkaWFUaW1lKEdTVF9CVUZGRVJfRFVS
QVRJT04oYnVmZmVyKSwgR1NUX1NFQ09ORCkpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICAgICAgR1NUX0JVRkZFUl9EVFMoYnVmZmVyKSA9IHRvR3N0Q2xvY2tUaW1lKE1l
ZGlhVGltZShHU1RfQlVGRkVSX1BUUyhidWZmZXIpLCBHU1RfU0VDT05EKSArIE1lZGlhVGltZShH
U1RfQlVGRkVSX0RVUkFUSU9OKGJ1ZmZlciksIEdTVF9TRUNPTkQpKTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgbV9sYXN0UHRzID0gTWVkaWFUaW1lKEdTVF9CVUZGRVJfUFRTKGJ1ZmZl
ciksIEdTVF9TRUNPTkQpOworICAgICAgICAgICAgbV9sYXN0RHRzID0gTWVkaWFUaW1lKEdTVF9C
VUZGRVJfRFRTKGJ1ZmZlciksIEdTVF9TRUNPTkQpOworICAgICAgICB9CisgICAgfQorCitwcml2
YXRlOgorICAgIE1lZGlhVGltZSBtX3NhbXBsZUR1cmF0aW9uOworICAgIE1lZGlhVGltZSBtX2xh
c3RQdHM7CisgICAgTWVkaWFUaW1lIG1fbGFzdER0czsKK307CisKIEFwcGVuZFBpcGVsaW5lOjpB
cHBlbmRQaXBlbGluZShSZWY8TWVkaWFTb3VyY2VDbGllbnRHU3RyZWFtZXJNU0U+IG1lZGlhU291
cmNlQ2xpZW50LCBSZWY8U291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lcj4gc291cmNlQnVmZmVy
UHJpdmF0ZSwgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFJiBwbGF5ZXJQcml2YXRlKQog
ICAgIDogbV9tZWRpYVNvdXJjZUNsaWVudChtZWRpYVNvdXJjZUNsaWVudC5nZXQoKSkKICAgICAs
IG1fc291cmNlQnVmZmVyUHJpdmF0ZShzb3VyY2VCdWZmZXJQcml2YXRlLmdldCgpKQpAQCAtODk0
LDYgKzk0OSwxMSBAQCBHc3RGbG93UmV0dXJuIEFwcGVuZFBpcGVsaW5lOjpwdXNoTmV3QnVmZmVy
KEdzdEJ1ZmZlciogYnVmZmVyKQogewogICAgIEdzdEZsb3dSZXR1cm4gcmVzdWx0OwogCisgICAg
aWYgKG1fc291cmNlQnVmZmVyUHJpdmF0ZS0+dHlwZSgpLmNvbnRhaW5lclR5cGUoKS5lbmRzV2l0
aCgid2VibSIpKSB7CisgICAgICAgIC8vIFRoaXMgaGludHMgdGhlIGRlbXV4ZXIgdG8gcHJvY2Vz
cyBvdXQtb2Ytb3JkZXIgYXBwZW5kcyBwcm9wZXJseSBpbiBtYXRyb3NrYWRlbXV4LgorICAgICAg
ICBHU1RfQlVGRkVSX0ZMQUdfU0VUKGJ1ZmZlciwgR1NUX0JVRkZFUl9GTEFHX0RJU0NPTlQpOwor
ICAgIH0KKwogICAgIGlmIChtX2Fib3J0UGVuZGluZykgewogICAgICAgICBtX3BlbmRpbmdCdWZm
ZXIgPSBhZG9wdEdSZWYoYnVmZmVyKTsKICAgICAgICAgcmVzdWx0ID0gR1NUX0ZMT1dfT0s7CkBA
IC0xMTA3LDYgKzExNjcsMjAgQEAgdm9pZCBBcHBlbmRQaXBlbGluZTo6Y29ubmVjdERlbXV4ZXJT
cmNQYWRUb0FwcHNpbmsoR3N0UGFkKiBkZW11eGVyU3JjUGFkKQogCiAgICAgcGFyc2VEZW11eGVy
U3JjUGFkQ2Fwcyhnc3RfY2Fwc19yZWYoY2Fwcy5nZXQoKSkpOwogCisgICAgZ3N0X3BhZF9hZGRf
cHJvYmUoZGVtdXhlclNyY1BhZCwgR1NUX1BBRF9QUk9CRV9UWVBFX0JVRkZFUiwKKyAgICAgICAg
W10gKEdzdFBhZCosIEdzdFBhZFByb2JlSW5mbyogaW5mbywgdm9pZCogdXNlckRhdGEpIC0+IEdz
dFBhZFByb2JlUmV0dXJuIHsKKyAgICAgICAgICAgIEFTU0VSVChHU1RfUEFEX1BST0JFX0lORk9f
VFlQRShpbmZvKSAmIEdTVF9QQURfUFJPQkVfVFlQRV9CVUZGRVIpOworICAgICAgICAgICAgQnVm
ZmVyTWV0YWRhdGFDb21wbGV0ZXIqIGNvbXBsZXRlciA9IHN0YXRpY19jYXN0PEJ1ZmZlck1ldGFk
YXRhQ29tcGxldGVyKj4odXNlckRhdGEpOworICAgICAgICAgICAgR3N0QnVmZmVyKiBidWZmZXIg
PSBHU1RfUEFEX1BST0JFX0lORk9fQlVGRkVSKGluZm8pOworICAgICAgICAgICAgY29tcGxldGVy
LT5jb21wbGV0ZU1pc3NpbmdNZXRhZGF0YShidWZmZXIpOworICAgICAgICAgICAgcmV0dXJuIEdT
VF9QQURfUFJPQkVfT0s7CisgICAgICAgIH0sCisgICAgICAgIG5ldyBCdWZmZXJNZXRhZGF0YUNv
bXBsZXRlcihjYXBzLmdldCgpKSwKKyAgICAgICAgW10gKGdwb2ludGVyIHVzZXJEYXRhKSB7Cisg
ICAgICAgICAgICBCdWZmZXJNZXRhZGF0YUNvbXBsZXRlciogY29tcGxldGVyID0gc3RhdGljX2Nh
c3Q8QnVmZmVyTWV0YWRhdGFDb21wbGV0ZXIqPih1c2VyRGF0YSk7CisgICAgICAgICAgICBkZWxl
dGUgY29tcGxldGVyOworICAgICAgICB9KTsKKwogICAgIHN3aXRjaCAobV9zdHJlYW1UeXBlKSB7
CiAgICAgY2FzZSBXZWJDb3JlOjpNZWRpYVNvdXJjZVN0cmVhbVR5cGVHU3RyZWFtZXI6OkF1ZGlv
OgogICAgICAgICBpZiAobV9wbGF5ZXJQcml2YXRlKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdl
TG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGY3ZDNhYzZlMDE5YTk4YmY3MDZiN2M4ZDg4NTU2
ODYwZjc0NjA4MjMuLjU0NmU3OTE3YzAxMjUxNjVjOTE4NjJiNzRiYzllNTg5NDI3OGJhZjYgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNyBAQAorMjAxNy0xMS0wMyAgRW5yaXF1ZSBPY2HDsWEgR29uesOhbGV6ICA8ZW9jYW5oYUBp
Z2FsaWEuY29tPgorCisgICAgICAgIFtHU3RyZWFtZXJdW01TRV1bd2VibV0gU3VwcG9ydCByZXBl
dGl0aXZlIGFwcGVuZGluZyBvZiB0aGUgc2FtZSB3ZWJtIHNlZ21lbnQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3OTI0MQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vZGlmaWNhdGlvbnMgb24gR3N0TWF0
cm9za2FEZW11eCB0cmFja2VkIGluIEdTdHJlYW1lciBidWd6aWxsYSBoZXJlOgorICAgICAgICBo
dHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzM0MDgyCisgICAgICAg
IGh0dHBzOi8vYnVnMzM0MDgyLmJ1Z3ppbGxhLWF0dGFjaG1lbnRzLmdub21lLm9yZy9hdHRhY2ht
ZW50LmNnaT9pZD0zNjIyMTIKKworICAgICAgICAqIGdzdHJlYW1lci9qaGJ1aWxkLm1vZHVsZXM6
IEFkZGVkIG5ldyBwYXRjaC4KKyAgICAgICAgKiBnc3RyZWFtZXIvcGF0Y2hlcy9nc3QtcGx1Z2lu
cy1nb29kLTAwMDktbWF0cm9za2FkZW11eC1TdXBwb3J0LXJlcHJvY2Vzc2luZy1vZi10aGUtc2Ft
ZS1maWxlLS5wYXRjaDogQWRkZWQuCisKIDIwMTctMTEtMTUgIENhcmxvcyBHYXJjaWEgQ2FtcG9z
ICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtXUEVdIEFkZCBpbml0aWFsIHN1cHBv
cnQgZm9yIFdlYkRyaXZlcgpkaWZmIC0tZ2l0IGEvVG9vbHMvZ3N0cmVhbWVyL2poYnVpbGQubW9k
dWxlcyBiL1Rvb2xzL2dzdHJlYW1lci9qaGJ1aWxkLm1vZHVsZXMKaW5kZXggZWE2OTgxNTQzODVk
OWZmMDk0ZTdmMjlhMzk2OTIzMzU0Y2VkNzE2OS4uNmQ5ZTMwNzdlYWRlZmYwYzY4NDRkOWViOWU2
N2Q2ZmU5ZGVjOGMxOSAxMDA2NDQKLS0tIGEvVG9vbHMvZ3N0cmVhbWVyL2poYnVpbGQubW9kdWxl
cworKysgYi9Ub29scy9nc3RyZWFtZXIvamhidWlsZC5tb2R1bGVzCkBAIC04Miw2ICs4Miw3IEBA
CiAgICAgICA8cGF0Y2ggZmlsZT0iZ3N0LXBsdWdpbnMtZ29vZC0wMDA2LXF0ZGVtdXgtYWRkLWNv
bnRleHQtZm9yLWEtcHJlZmVycmVkLXByb3RlY3Rpb24ucGF0Y2giIHN0cmlwPSIxIi8+CiAgICAg
ICA8cGF0Y2ggZmlsZT0iZ3N0LXBsdWdpbnMtZ29vZC0wMDA4LXF0ZGVtdXgtYWxzby1wdXNoLWJ1
ZmZlcnMtd2l0aG91dC1lbmNyeXB0aW9uLWluZm8taW4ucGF0Y2giIHN0cmlwPSIxIi8+CiAgICAg
ICA8cGF0Y2ggZmlsZT0iZ3N0LXBsdWdpbnMtZ29vZC0wMDA5LXF0ZGVtdXgtZml4LWFzc2VydC13
aGVuLW1vb2YtY29udGFpbnMtb25lLXNhbXBsZS5wYXRjaCIgc3RyaXA9IjEiLz4KKyAgICAgIDxw
YXRjaCBmaWxlPSJnc3QtcGx1Z2lucy1nb29kLTAwMTAtbWF0cm9za2FkZW11eC1TdXBwb3J0LXJl
cHJvY2Vzc2luZy1vZi10aGUtc2FtZS1maWxlLS5wYXRjaCIgc3RyaXA9IjEiLz4KICAgICA8L2Jy
YW5jaD4KICAgPC9hdXRvdG9vbHM+CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL2dzdHJlYW1lci9wYXRj
aGVzL2dzdC1wbHVnaW5zLWdvb2QtMDAxMC1tYXRyb3NrYWRlbXV4LVN1cHBvcnQtcmVwcm9jZXNz
aW5nLW9mLXRoZS1zYW1lLWZpbGUtLnBhdGNoIGIvVG9vbHMvZ3N0cmVhbWVyL3BhdGNoZXMvZ3N0
LXBsdWdpbnMtZ29vZC0wMDEwLW1hdHJvc2thZGVtdXgtU3VwcG9ydC1yZXByb2Nlc3Npbmctb2Yt
dGhlLXNhbWUtZmlsZS0ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjljNzg1ZjdkYjljNGRkMmI2ZTg1NDll
Y2FlZTYyNzVkZWI1MTA4OQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL2dzdHJlYW1lci9wYXRj
aGVzL2dzdC1wbHVnaW5zLWdvb2QtMDAxMC1tYXRyb3NrYWRlbXV4LVN1cHBvcnQtcmVwcm9jZXNz
aW5nLW9mLXRoZS1zYW1lLWZpbGUtLnBhdGNoCkBAIC0wLDAgKzEsNDQgQEAKK0Zyb20gZjI4Y2Fh
OWQ1ZjQyNzNiNGVkYzU1NzY1ZmU4NWMwMTk3OGI0MGI3NCBNb24gU2VwIDE3IDAwOjAwOjAwIDIw
MDEKK0Zyb206ID0/VVRGLTg/cT9FbnJpcXVlPTIwT2NhPUMzPUIxYT0yMEdvbno9QzM9QTFsZXo/
PSA8ZW9jYW5oYUBpZ2FsaWEuY29tPgorRGF0ZTogRnJpLCAyMCBPY3QgMjAxNyAxNjowNToxOSAr
MDAwMAorU3ViamVjdDogW1BBVENIXSBtYXRyb3NrYWRlbXV4OiBTdXBwb3J0IHJlcHJvY2Vzc2lu
ZyBvZiB0aGUgc2FtZSBmaWxlIHNldmVyYWwKKyB0aW1lcworCitieSBhbHNvIGV4cGVjdGluZyB0
aGUgR1NUX0VCTUxfSURfSEVBREVSIHdoaWxlIGluIHRoZQorR1NUX01BVFJPU0tBX1JFQURfU1RB
VEVfe0hFQURFUixEQVRBLFNFRUt9IHN0YXRlcyBhbmQgcmVzZXR0aW5nIHRoZQorc2VnbWVudCBw
b3NpdGlvbiBpZiB0aGUgaW5wdXQgR3N0QnVmZmVyIGhhcyB0aGUgRElTQ09OVCBmbGFnIHNldC4K
KworVGhpcyBpcyBuZWVkZWQgaW4gb3JkZXIgdG8gcGFzcyB0ZXN0ICIyMC4gVmlkZW9CdWZmZXJT
aXplIiBmcm9tIHRoZQorWW91VHViZSBNU0UgQ29uZm9ybWFuY2UgVGVzdHMgMjAxOCB1c2luZyBX
ZWJLaXQuCistLS0KKyBnc3QvbWF0cm9za2EvbWF0cm9za2EtZGVtdXguYyB8IDcgKysrKysrKwor
IDEgZmlsZSBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2dzdC9tYXRy
b3NrYS9tYXRyb3NrYS1kZW11eC5jIGIvZ3N0L21hdHJvc2thL21hdHJvc2thLWRlbXV4LmMKK2lu
ZGV4IGU0MTlhNzAuLjM4NDkwZjggMTAwNjQ0CistLS0gYS9nc3QvbWF0cm9za2EvbWF0cm9za2Et
ZGVtdXguYworKysrIGIvZ3N0L21hdHJvc2thL21hdHJvc2thLWRlbXV4LmMKK0BAIC00MzkxLDYg
KzQzOTEsMTEgQEAgZ3N0X21hdHJvc2thX2RlbXV4X3BhcnNlX2lkIChHc3RNYXRyb3NrYURlbXV4
ICogZGVtdXgsIGd1aW50MzIgaWQsCisgICAgIGNhc2UgR1NUX01BVFJPU0tBX1JFQURfU1RBVEVf
REFUQToKKyAgICAgY2FzZSBHU1RfTUFUUk9TS0FfUkVBRF9TVEFURV9TRUVLOgorICAgICAgIHN3
aXRjaCAoaWQpIHsKKysgICAgICAgIGNhc2UgR1NUX0VCTUxfSURfSEVBREVSOgorKyAgICAgICAg
ICBHU1RfUkVBRF9DSEVDSyAoZ3N0X21hdHJvc2thX2RlbXV4X2ZsdXNoIChkZW11eCwgcmVhZCkp
OworKyAgICAgICAgICBkZW11eC0+Y29tbW9uLnN0YXRlID0gR1NUX01BVFJPU0tBX1JFQURfU1RB
VEVfU0VHTUVOVDsKKysgICAgICAgICAgZ3N0X21hdHJvc2thX2RlbXV4X2NoZWNrX3NlZWthYmls
aXR5IChkZW11eCk7CisrICAgICAgICAgIGJyZWFrOworICAgICAgICAgY2FzZSBHU1RfTUFUUk9T
S0FfSURfU0VHTUVOVElORk86CisgICAgICAgICAgIGlmICghZGVtdXgtPmNvbW1vbi5zZWdtZW50
aW5mb19wYXJzZWQpIHsKKyAgICAgICAgICAgICBHU1RfUkVBRF9DSEVDSyAoZ3N0X21hdHJvc2th
X2RlbXV4X3Rha2UgKGRlbXV4LCByZWFkLCAmZWJtbCkpOworQEAgLTQ4MjMsNiArNDgyOCw4IEBA
IGdzdF9tYXRyb3NrYV9kZW11eF9jaGFpbiAoR3N0UGFkICogcGFkLCBHc3RPYmplY3QgKiBwYXJl
bnQsIEdzdEJ1ZmZlciAqIGJ1ZmZlcikKKyAgIGlmIChHX1VOTElLRUxZIChHU1RfQlVGRkVSX0lT
X0RJU0NPTlQgKGJ1ZmZlcikpKSB7CisgICAgIEdTVF9ERUJVR19PQkpFQ1QgKGRlbXV4LCAiZ290
IERJU0NPTlQiKTsKKyAgICAgZ3N0X2FkYXB0ZXJfY2xlYXIgKGRlbXV4LT5jb21tb24uYWRhcHRl
cik7CisrICAgIGRlbXV4LT5jb21tb24uc2VnbWVudC5wb3NpdGlvbiA9IDA7CisrCisgICAgIEdT
VF9PQkpFQ1RfTE9DSyAoZGVtdXgpOworICAgICBnc3RfbWF0cm9za2FfcmVhZF9jb21tb25fcmVz
ZXRfc3RyZWFtcyAoJmRlbXV4LT5jb21tb24sCisgICAgICAgICBHU1RfQ0xPQ0tfVElNRV9OT05F
LCBGQUxTRSk7CistLSAKKzIuMS40CisK
</data>
<flag name="review"
          id="346684"
          type_id="1"
          status="-"
          setter="mcatanzaro"
    />
          </attachment>
      

    </bug>

</bugzilla>