<?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>240229</bug_id>
          
          <creation_ts>2022-05-09 05:03:05 -0700</creation_ts>
          <short_desc>[GStreamer][VideoCapture] Add support for capturing encoded video streams from a webcam</short_desc>
          <delta_ts>2023-02-09 23:26:41 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Platform</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Loïc Le Page">llepage</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>hta</cc>
    
    <cc>james.hilliard1</cc>
    
    <cc>jer.noble</cc>
    
    <cc>philipj</cc>
    
    <cc>philn</cc>
    
    <cc>pnormand</cc>
    
    <cc>sergio</cc>
    
    <cc>tommyw</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youssefdevelops</cc>
    
    <cc>y_soliman</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1867608</commentid>
    <comment_count>0</comment_count>
      <attachid>459040</attachid>
    <who name="Loïc Le Page">llepage</who>
    <bug_when>2022-05-09 05:03:05 -0700</bug_when>
    <thetext>Created attachment 459040
Capture video from a webcam and show effective stream configuration

Video streams captured from a webcam using the GStreamer API are limited to the raw video type only.
Some webcams may offer higher resolutions or frame rates with encoded streams (like image/jpeg or video/x-h264 for example).
Those resolutions and frame rates should be taken into account while choosing the webcam configuration.

Let&apos;s take for example a specific webcam with those characteristics:
video/x-raw, width=1280, height=720, framerate=10/1
image/jpeg, width=1280, height=720, framerate=30/1

When calling `navigator.mediaDevices.getUserMedia(constraints)` with those constraints:
```
video: {
    width: 1280,
    height: 720,
    frameRate: 30
}
```

The captured video stream configuration is 1280x720@10fps whereas the expected result should be 1280x720@30fps.

The attached index.html file try to capture a video stream from a webcam at 1280x720@30fps and shows the characteristics of the effective video stream configuration.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1867636</commentid>
    <comment_count>1</comment_count>
      <attachid>459042</attachid>
    <who name="Loïc Le Page">llepage</who>
    <bug_when>2022-05-09 07:49:44 -0700</bug_when>
    <thetext>Created attachment 459042
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1867894</commentid>
    <comment_count>2</comment_count>
      <attachid>459042</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2022-05-10 03:56:22 -0700</bug_when>
    <thetext>Comment on attachment 459042
Patch

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

&gt; Source/WebCore/platform/mediastream/gstreamer/GStreamerVideoCapturer.cpp:158
&gt; +        std::string mimeType;

We don&apos;t use std::string much here, we use String, AtomString, CString from WTF::. I wonder though could this one be const char*?

&gt; Source/WebCore/platform/mediastream/gstreamer/GStreamerVideoCapturer.cpp:182
&gt; +        selector.stopCondition.frameRate = static_cast&lt;double&gt;(numerator) / static_cast&lt;double&gt;(denominator);

gst_util_fraction_to_double()

&gt; Source/WebCore/platform/mediastream/gstreamer/GStreamerVideoCapturer.cpp:198
&gt; +            if (!gst_structure_get_int(structure, &quot;width&quot;, &amp;width)
&gt; +                || !gst_structure_get_int(structure, &quot;height&quot;, &amp;height)
&gt; +                || !gst_structure_get_fraction(structure, &quot;framerate&quot;, &amp;numerator, &amp;denominator))

One line, you can go up to 120 chars per line.

&gt; Source/WebCore/platform/mediastream/gstreamer/GStreamerVideoCapturer.cpp:201
&gt; +            double frameRate = static_cast&lt;double&gt;(numerator) / static_cast&lt;double&gt;(denominator);

Ditto

&gt; Source/WebCore/platform/mediastream/gstreamer/GStreamerVideoCapturer.cpp:204
&gt; +            if ((width &gt;= selector-&gt;stopCondition.width)
&gt; +                &amp;&amp; (height &gt;= selector-&gt;stopCondition.height)
&gt; +                &amp;&amp; (frameRate &gt;= selector-&gt;stopCondition.frameRate)) {

One line and no need for so many () I think?

&gt; Source/WebCore/platform/mediastream/gstreamer/GStreamerVideoCapturer.cpp:211
&gt; +            if ((width &gt;= selector-&gt;maxWidth)
&gt; +                &amp;&amp; (height &gt;= selector-&gt;maxHeight)
&gt; +                &amp;&amp; (frameRate &gt;= selector-&gt;maxFrameRate)) {

Ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1867931</commentid>
    <comment_count>3</comment_count>
      <attachid>459042</attachid>
    <who name="Loïc Le Page">llepage</who>
    <bug_when>2022-05-10 08:30:40 -0700</bug_when>
    <thetext>Comment on attachment 459042
Patch

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

&gt;&gt; Source/WebCore/platform/mediastream/gstreamer/GStreamerVideoCapturer.cpp:158
&gt;&gt; +        std::string mimeType;
&gt; 
&gt; We don&apos;t use std::string much here, we use String, AtomString, CString from WTF::. I wonder though could this one be const char*?

Effectively, the string memory is hold by deviceCaps which is only destroyed when the function returns, so it can perfectly be a simple const char*.
Thanks for seeing it ;)

&gt;&gt; Source/WebCore/platform/mediastream/gstreamer/GStreamerVideoCapturer.cpp:182
&gt;&gt; +        selector.stopCondition.frameRate = static_cast&lt;double&gt;(numerator) / static_cast&lt;double&gt;(denominator);
&gt; 
&gt; gst_util_fraction_to_double()

done

&gt;&gt; Source/WebCore/platform/mediastream/gstreamer/GStreamerVideoCapturer.cpp:198
&gt;&gt; +                || !gst_structure_get_fraction(structure, &quot;framerate&quot;, &amp;numerator, &amp;denominator))
&gt; 
&gt; One line, you can go up to 120 chars per line.

Here it takes more than 120 chars if you try to group the conditions together on the same line.

&gt;&gt; Source/WebCore/platform/mediastream/gstreamer/GStreamerVideoCapturer.cpp:201
&gt;&gt; +            double frameRate = static_cast&lt;double&gt;(numerator) / static_cast&lt;double&gt;(denominator);
&gt; 
&gt; Ditto

done

&gt;&gt; Source/WebCore/platform/mediastream/gstreamer/GStreamerVideoCapturer.cpp:204
&gt;&gt; +                &amp;&amp; (frameRate &gt;= selector-&gt;stopCondition.frameRate)) {
&gt; 
&gt; One line and no need for so many () I think?

done

&gt;&gt; Source/WebCore/platform/mediastream/gstreamer/GStreamerVideoCapturer.cpp:211
&gt;&gt; +                &amp;&amp; (frameRate &gt;= selector-&gt;maxFrameRate)) {
&gt; 
&gt; Ditto

done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1867938</commentid>
    <comment_count>4</comment_count>
      <attachid>459121</attachid>
    <who name="Loïc Le Page">llepage</who>
    <bug_when>2022-05-10 08:49:47 -0700</bug_when>
    <thetext>Created attachment 459121
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1867942</commentid>
    <comment_count>5</comment_count>
      <attachid>459122</attachid>
    <who name="Loïc Le Page">llepage</who>
    <bug_when>2022-05-10 08:58:49 -0700</bug_when>
    <thetext>Created attachment 459122
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1867946</commentid>
    <comment_count>6</comment_count>
      <attachid>459122</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2022-05-10 09:19:26 -0700</bug_when>
    <thetext>Comment on attachment 459122
Patch

LGTM, thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1867964</commentid>
    <comment_count>7</comment_count>
    <who name="Loïc Le Page">llepage</who>
    <bug_when>2022-05-10 10:18:43 -0700</bug_when>
    <thetext>I forgot to take into account the caps ranges in the algo.
I need to correct it and I will file a new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1867965</commentid>
    <comment_count>8</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2022-05-10 10:21:13 -0700</bug_when>
    <thetext>OK, good thing I haven&apos;t set commit-queue+ on this then :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1867966</commentid>
    <comment_count>9</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2022-05-10 10:21:52 -0700</bug_when>
    <thetext>(In reply to Philippe Normand from comment #8)
&gt; OK, good thing I haven&apos;t set commit-queue+ on this then :)

You can update this patch if you prefer, since it hasn&apos;t landed yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1868334</commentid>
    <comment_count>10</comment_count>
      <attachid>459216</attachid>
    <who name="Loïc Le Page">llepage</who>
    <bug_when>2022-05-12 02:47:54 -0700</bug_when>
    <thetext>Created attachment 459216
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1868337</commentid>
    <comment_count>11</comment_count>
    <who name="Loïc Le Page">llepage</who>
    <bug_when>2022-05-12 02:51:35 -0700</bug_when>
    <thetext>The latest patch corrects what was lacking previously. It has been tested on two different machines, one of it having ranges and arrays for device caps to be sure it now takes correctly into account those caps.

It also corrects another issue with ghost pads that were not correctly connected inside the converter bin.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1868349</commentid>
    <comment_count>12</comment_count>
      <attachid>459216</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2022-05-12 04:37:27 -0700</bug_when>
    <thetext>Comment on attachment 459216
Patch

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

&gt; Source/WebCore/platform/mediastream/gstreamer/GStreamerVideoCapturer.cpp:71
&gt; +    auto bin = makeGStreamerBin(&quot;capsfilter caps=\&quot;video/x-raw\&quot; name=mimetype-filter ! decodebin3 ! videoscale ! videoconvert ! videorate drop-only=1 average-period=1 name=videorate&quot;, false);

So passing true as second argument here wasn&apos;t working? Was it due to decodebin3?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1868424</commentid>
    <comment_count>13</comment_count>
      <attachid>459216</attachid>
    <who name="Loïc Le Page">llepage</who>
    <bug_when>2022-05-12 08:37:41 -0700</bug_when>
    <thetext>Comment on attachment 459216
Patch

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

&gt;&gt; Source/WebCore/platform/mediastream/gstreamer/GStreamerVideoCapturer.cpp:71
&gt;&gt; +    auto bin = makeGStreamerBin(&quot;capsfilter caps=\&quot;video/x-raw\&quot; name=mimetype-filter ! decodebin3 ! videoscale ! videoconvert ! videorate drop-only=1 average-period=1 name=videorate&quot;, false);
&gt; 
&gt; So passing true as second argument here wasn&apos;t working? Was it due to decodebin3?

Yes, this is because of decobin3.

As src pad is a &quot;sometimes&quot; pad the automatic ghost pad was connected to the videoscale right after and so the mimetype was correctly forced on the first capsfilter but it was useless as the bin src pad was bypassing it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1868442</commentid>
    <comment_count>14</comment_count>
      <attachid>459216</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2022-05-12 09:16:47 -0700</bug_when>
    <thetext>Comment on attachment 459216
Patch

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

&gt;&gt;&gt; Source/WebCore/platform/mediastream/gstreamer/GStreamerVideoCapturer.cpp:71
&gt;&gt;&gt; +    auto bin = makeGStreamerBin(&quot;capsfilter caps=\&quot;video/x-raw\&quot; name=mimetype-filter ! decodebin3 ! videoscale ! videoconvert ! videorate drop-only=1 average-period=1 name=videorate&quot;, false);
&gt;&gt; 
&gt;&gt; So passing true as second argument here wasn&apos;t working? Was it due to decodebin3?
&gt; 
&gt; Yes, this is because of decobin3.
&gt; 
&gt; As src pad is a &quot;sometimes&quot; pad the automatic ghost pad was connected to the videoscale right after and so the mimetype was correctly forced on the first capsfilter but it was useless as the bin src pad was bypassing it.

Ok then. Maybe later we could rework this part a bit, constructing the bin manually and handling db3 pads with the pad-added signal. But if this approach works fine let&apos;s land it :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1868444</commentid>
    <comment_count>15</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-05-12 09:25:09 -0700</bug_when>
    <thetext>Committed r294104 (250489@main): &lt;https://commits.webkit.org/250489@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 459216.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1868445</commentid>
    <comment_count>16</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-05-12 09:26:15 -0700</bug_when>
    <thetext>&lt;rdar://problem/93179669&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1869007</commentid>
    <comment_count>17</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2022-05-14 09:02:59 -0700</bug_when>
    <thetext>Introduced regression: https://bugs.webkit.org/show_bug.cgi?id=240420</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1921446</commentid>
    <comment_count>18</comment_count>
    <who name="Philippe Normand">philn</who>
    <bug_when>2022-12-22 11:46:25 -0800</bug_when>
    <thetext>So, this kind-of introduces a new CPU perf issue. For instance my laptop webcam has these capabilities:


	name  : Integrated_Webcam_HD (V4L2)
	class : Video/Source
	caps  : image/jpeg, width=1280, height=720, framerate=30/1
	        image/jpeg, width=960, height=540, framerate=30/1
	        image/jpeg, width=848, height=480, framerate=30/1
	        image/jpeg, width=640, height=480, framerate=30/1
	        image/jpeg, width=640, height=360, framerate=30/1
	        video/x-raw, format=YUY2, width=640, height=480, framerate=30/1
	        video/x-raw, format=YUY2, width=640, height=360, framerate=30/1
	        video/x-raw, format=YUY2, width=424, height=240, framerate=30/1
	        video/x-raw, format=YUY2, width=320, height=240, framerate=30/1
	        video/x-raw, format=YUY2, width=320, height=180, framerate=30/1
	        video/x-raw, format=YUY2, width=160, height=120, framerate=30/1

image/jpeg is chosen when we look for a 640x480 resolution, so we have to decode this, in software, before then re-encoding to whatever was negotiated with WebRTC.

For this case I think it&apos;d be better to select the video/x-raw caps.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1932445</commentid>
    <comment_count>19</comment_count>
    <who name="James Hilliard">james.hilliard1</who>
    <bug_when>2023-02-09 13:23:29 -0800</bug_when>
    <thetext>Maybe we should prefer the accelerated jpeg decoders, I&apos;m setting this which seems to work reasonably well on slower systems with vaapi compatible intel GPU&apos;s:
GST_PLUGIN_FEATURE_RANK=vajpegdec:PRIMARY,jpegparse:PRIMARY,jpegdec:SECONDARY</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1932559</commentid>
    <comment_count>20</comment_count>
    <who name="Philippe Normand">philn</who>
    <bug_when>2023-02-09 23:20:41 -0800</bug_when>
    <thetext>(In reply to James Hilliard from comment #19)
&gt; Maybe we should prefer the accelerated jpeg decoders,

Maybe... Our capture handling is not great, TBH :(
We should decode only when needed.

&gt; I&apos;m setting this which
&gt; seems to work reasonably well on slower systems with vaapi compatible intel
&gt; GPU&apos;s:
&gt; GST_PLUGIN_FEATURE_RANK=vajpegdec:PRIMARY,jpegparse:PRIMARY,jpegdec:SECONDARY

My GPU doesn&apos;t seem to support JPEG...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1932560</commentid>
    <comment_count>21</comment_count>
    <who name="James Hilliard">james.hilliard1</who>
    <bug_when>2023-02-09 23:26:41 -0800</bug_when>
    <thetext>Hmm, which GPU does your system have? It&apos;s sometimes a bit tricky to get the jpeg acceleration working.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>459040</attachid>
            <date>2022-05-09 05:03:05 -0700</date>
            <delta_ts>2022-05-09 05:03:05 -0700</delta_ts>
            <desc>Capture video from a webcam and show effective stream configuration</desc>
            <filename>index.html</filename>
            <type>text/html</type>
            <size>858</size>
            <attacher name="Loïc Le Page">llepage</attacher>
            
              <data encoding="base64">PCFkb2N0eXBlIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KCjxoZWFkPgogICAgPG1ldGEgY2hhcnNl
dD0iVVRGLTgiPgogICAgPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmlj
ZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xLjAiPgogICAgPHRpdGxlPlRlc3QgV2ViY2FtPC90aXRs
ZT4KPC9oZWFkPgoKPGJvZHk+CiAgICA8dmlkZW8gYXV0b3BsYXkgd2lkdGg9IjY0MCI+PC92aWRl
bz4KICAgIDxoMT48L2gxPgogICAgPHNjcmlwdD4KICAgICAgICBjb25zdCBjb25zdHJhaW50cyA9
IHsKICAgICAgICAgICAgdmlkZW86IHsKICAgICAgICAgICAgICAgIHdpZHRoOiAxMjgwLAogICAg
ICAgICAgICAgICAgaGVpZ2h0OiA3MjAsCiAgICAgICAgICAgICAgICBmcmFtZVJhdGU6IDMwCiAg
ICAgICAgICAgIH0KICAgICAgICB9OwogICAgICAgIGNvbnN0IHZpZGVvID0gZG9jdW1lbnQucXVl
cnlTZWxlY3RvcigidmlkZW8iKTsKICAgICAgICBjb25zdCBpbmZvID0gZG9jdW1lbnQucXVlcnlT
ZWxlY3RvcigiaDEiKTsKICAgICAgICBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRp
YShjb25zdHJhaW50cykudGhlbigoc3RyZWFtKSA9PiB7CiAgICAgICAgICAgIHZpZGVvLnNyY09i
amVjdCA9IHN0cmVhbTsKCiAgICAgICAgICAgIGxldCBzZXR0aW5ncyA9IHN0cmVhbS5nZXRWaWRl
b1RyYWNrcygpWzBdLmdldFNldHRpbmdzKCk7CiAgICAgICAgICAgIGluZm8uaW5uZXJUZXh0ID0g
YFdpZHRoOiAke3NldHRpbmdzLndpZHRofSwgSGVpZ2h0OiAke3NldHRpbmdzLmhlaWdodH0sIEZw
czogJHtzZXR0aW5ncy5mcmFtZVJhdGV9YAogICAgICAgIH0pOwogICAgPC9zY3JpcHQ+CjwvYm9k
eT4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>459042</attachid>
            <date>2022-05-09 07:49:44 -0700</date>
            <delta_ts>2022-05-10 08:49:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-240229-20220509164943.patch</filename>
            <type>text/plain</type>
            <size>8233</size>
            <attacher name="Loïc Le Page">llepage</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzOTcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGQxMWQ3NGFkMDEwZjI3
ZDNmYTgwMDQ2Zjc2ODAxNmQ0NmM1MjRlYS4uODgyYWVhM2MxMjBjNjhkMjg1MWQxYzUyZjFhMDYw
ODljMTA2MzFhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDIyLTA1LTA5ICBMb8Ov
YyBMZSBQYWdlICA8bGxlcGFnZUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHU3RyZWFtZXJdW1Zp
ZGVvQ2FwdHVyZV0gQWRkIHN1cHBvcnQgZm9yIGNhcHR1cmluZyBlbmNvZGVkIHZpZGVvIHN0cmVh
bXMgZnJvbSBhIHdlYmNhbQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjQwMjI5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVGFrZXMgaW50byBhY2NvdW50IGVuY29kZWQgdmlkZW8gc3RyZWFtcyBwcm9kdWNl
ZCBieSBhIHdlYmNhbSBmb3IKKyAgICAgICAgdmlkZW8gY2FwdHVyZS4KKworICAgICAgICBNYW51
YWxseSB0ZXN0ZWQgKHJlcXVpcmVzIGEgd2ViY2FtIHdpdGggZW5jb2RlZCB2aWRlbyBzdHJlYW1z
KS4KKworICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJW
aWRlb0NhcHR1cmVTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyVmlkZW9D
YXB0dXJlU291cmNlOjpnZW5lcmF0ZVByZXNldHMpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlh
c3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJWaWRlb0NhcHR1cmVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkdTdHJlYW1lclZpZGVvQ2FwdHVyZXI6OmNyZWF0ZUNvbnZlcnRlcik6CisgICAgICAg
IChXZWJDb3JlOjpHU3RyZWFtZXJWaWRlb0NhcHR1cmVyOjpzZXRTaXplKToKKyAgICAgICAgKFdl
YkNvcmU6OkdTdHJlYW1lclZpZGVvQ2FwdHVyZXI6OnNldEZyYW1lUmF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpHU3RyZWFtZXJWaWRlb0NhcHR1cmVyOjphZGp1c3RWaWRlb1NyY01JTUVUeXBlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyVmlkZW9D
YXB0dXJlci5oOgorCiAyMDIyLTA1LTA5ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNv
bT4KIAogICAgICAgICBDb3JlQXVkaW9DYXB0dXJlU291cmNlOjpzZXR0aW5nc0RpZENoYW5nZSBz
aG91bGQgbm90IHJlY29uZmlndXJlIHRoZSBhdWRpbyB1bml0IGlmIENvcmVBdWRpb0NhcHR1cmVT
b3VyY2UgaXMgbm90IHN0YXJ0ZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclZp
ZGVvQ2FwdHVyZVNvdXJjZS5jcHAKaW5kZXggN2UzOTZjMmNjMzViMTU5ODRjMGJlODg3Yzc4MmMw
NzA5ZWVjZGI3NS4uZGQwOTg3MmY2OThiNGJkMDU3N2M5ZjY0YzE5ZWZiZGUxMTc1N2ExZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dT
dHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZS5jcHAK
QEAgLTI2NCwxMCArMjY0LDYgQEAgdm9pZCBHU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2U6Omdl
bmVyYXRlUHJlc2V0cygpCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGdzdF9jYXBzX2dl
dF9zaXplKGNhcHMuZ2V0KCkpOyBpKyspIHsKICAgICAgICAgR3N0U3RydWN0dXJlKiBzdHIgPSBn
c3RfY2Fwc19nZXRfc3RydWN0dXJlKGNhcHMuZ2V0KCksIGkpOwogCi0gICAgICAgIC8vIE9ubHkg
YWNjZXB0IHJhdyB2aWRlbyBmb3Igbm93LgotICAgICAgICBpZiAoIWdzdF9zdHJ1Y3R1cmVfaGFz
X25hbWUoc3RyLCAidmlkZW8veC1yYXciKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCiAgICAg
ICAgIGludDMyX3Qgd2lkdGgsIGhlaWdodDsKICAgICAgICAgaWYgKCFnc3Rfc3RydWN0dXJlX2dl
dChzdHIsICJ3aWR0aCIsIEdfVFlQRV9JTlQsICZ3aWR0aCwgImhlaWdodCIsIEdfVFlQRV9JTlQs
ICZoZWlnaHQsIG51bGxwdHIpKSB7CiAgICAgICAgICAgICBHU1RfSU5GTygiQ291bGQgbm90IGZp
bmQgZGlzY3JldCBoZWlnaHQgYW5kIHdpZHRoIHZhbHVlcyBpbiAlIiBHU1RfUFRSX0ZPUk1BVCwg
c3RyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dz
dHJlYW1lci9HU3RyZWFtZXJWaWRlb0NhcHR1cmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJWaWRlb0NhcHR1cmVyLmNwcAppbmRl
eCBmOTk3NzUyNDIzMTIyYjQ5ZTI1NmIxMjVmZTZhYjYxYmMxYTQ1NzYzLi5lMjFhMzg3ODg0YTU1
ZjUwM2Q5NGVlNzBmNzhhZTlhZDQ1NmE3MGMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyVmlkZW9DYXB0dXJlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJl
YW1lclZpZGVvQ2FwdHVyZXIuY3BwCkBAIC02OCw3ICs2OCwxMCBAQCBHc3RFbGVtZW50KiBHU3Ry
ZWFtZXJWaWRlb0NhcHR1cmVyOjpjcmVhdGVTb3VyY2UoKQogR3N0RWxlbWVudCogR1N0cmVhbWVy
VmlkZW9DYXB0dXJlcjo6Y3JlYXRlQ29udmVydGVyKCkKIHsKICAgICAvLyBodHRwczovL2dpdGxh
Yi5mcmVlZGVza3RvcC5vcmcvZ3N0cmVhbWVyL2dzdC1wbHVnaW5zLWJhc2UvaXNzdWVzLzk3I25v
dGVfNTY1NzUKLSAgICByZXR1cm4gbWFrZUdTdHJlYW1lckJpbigidmlkZW9zY2FsZSAhIHZpZGVv
Y29udmVydCAhIHZpZGVvcmF0ZSBkcm9wLW9ubHk9MSBhdmVyYWdlLXBlcmlvZD0xIiwgdHJ1ZSk7
CisgICAgYXV0byBiaW4gPSBtYWtlR1N0cmVhbWVyQmluKCJjYXBzZmlsdGVyIGNhcHM9XCJ2aWRl
by94LXJhd1wiIG5hbWU9bWltZXR5cGUtZmlsdGVyICEgZGVjb2RlYmluMyAhIHZpZGVvc2NhbGUg
ISB2aWRlb2NvbnZlcnQgISB2aWRlb3JhdGUgZHJvcC1vbmx5PTEgYXZlcmFnZS1wZXJpb2Q9MSIs
IHRydWUpOworICAgIG1fdmlkZW9TcmNNSU1FVHlwZUZpbHRlciA9IGFkb3B0R1JlZihnc3RfYmlu
X2dldF9ieV9uYW1lKEdTVF9CSU4oYmluKSwgIm1pbWV0eXBlLWZpbHRlciIpKTsKKyAgICBhZGp1
c3RWaWRlb1NyY01JTUVUeXBlKCk7CisgICAgcmV0dXJuIGJpbjsKIH0KIAogR3N0VmlkZW9JbmZv
IEdTdHJlYW1lclZpZGVvQ2FwdHVyZXI6OmdldEJlc3RGb3JtYXQoKQpAQCAtMTAxLDYgKzEwNCw4
IEBAIGJvb2wgR1N0cmVhbWVyVmlkZW9DYXB0dXJlcjo6c2V0U2l6ZShpbnQgd2lkdGgsIGludCBo
ZWlnaHQpCiAgICAgbV9jYXBzID0gYWRvcHRHUmVmKGdzdF9jYXBzX2NvcHkobV9jYXBzLmdldCgp
KSk7CiAgICAgZ3N0X2NhcHNfc2V0X3NpbXBsZShtX2NhcHMuZ2V0KCksICJ3aWR0aCIsIEdfVFlQ
RV9JTlQsIHdpZHRoLCAiaGVpZ2h0IiwgR19UWVBFX0lOVCwgaGVpZ2h0LCBudWxscHRyKTsKIAor
ICAgIGFkanVzdFZpZGVvU3JjTUlNRVR5cGUoKTsKKwogICAgIGlmICghbV9jYXBzZmlsdGVyKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTEzMyw2ICsxMzgsOCBAQCBib29sIEdTdHJlYW1l
clZpZGVvQ2FwdHVyZXI6OnNldEZyYW1lUmF0ZShkb3VibGUgZnJhbWVSYXRlKQogICAgIG1fY2Fw
cyA9IGFkb3B0R1JlZihnc3RfY2Fwc19jb3B5KG1fY2Fwcy5nZXQoKSkpOwogICAgIGdzdF9jYXBz
X3NldF9zaW1wbGUobV9jYXBzLmdldCgpLCAiZnJhbWVyYXRlIiwgR1NUX1RZUEVfRlJBQ1RJT04s
IG51bWVyYXRvciwgZGVub21pbmF0b3IsIG51bGxwdHIpOwogCisgICAgYWRqdXN0VmlkZW9TcmNN
SU1FVHlwZSgpOworCiAgICAgaWYgKCFtX2NhcHNmaWx0ZXIpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIApAQCAtMTQyLDYgKzE0OSw4MyBAQCBib29sIEdTdHJlYW1lclZpZGVvQ2FwdHVyZXI6OnNl
dEZyYW1lUmF0ZShkb3VibGUgZnJhbWVSYXRlKQogICAgIHJldHVybiB0cnVlOwogfQogCit2b2lk
IEdTdHJlYW1lclZpZGVvQ2FwdHVyZXI6OmFkanVzdFZpZGVvU3JjTUlNRVR5cGUoKQoreworICAg
IGlmICghbV92aWRlb1NyY01JTUVUeXBlRmlsdGVyKQorICAgICAgICByZXR1cm47CisKKyAgICBz
dHJ1Y3QgTWltZVR5cGVTZWxlY3RvciB7CisgICAgICAgIHN0ZDo6c3RyaW5nIG1pbWVUeXBlOwor
CisgICAgICAgIGludCBtYXhXaWR0aCA9IDA7CisgICAgICAgIGludCBtYXhIZWlnaHQgPSAwOwor
ICAgICAgICBkb3VibGUgbWF4RnJhbWVSYXRlID0gMC4wOworCisgICAgICAgIHN0cnVjdCB7Cisg
ICAgICAgICAgICBpbnQgd2lkdGggPSAwOworICAgICAgICAgICAgaW50IGhlaWdodCA9IDA7Cisg
ICAgICAgICAgICBkb3VibGUgZnJhbWVSYXRlID0gMC4wOworICAgICAgICB9IHN0b3BDb25kaXRp
b247CisgICAgfSBzZWxlY3RvcjsKKworICAgIC8vIElmIG5vdGhpbmcgaGFzIGJlZW4gc3BlY2lm
aWVkIGJ5IHRoZSB1c2VyLCB3ZSB0YXJnZXQgYXQgbGVhc3QgYW4gYXJiaXRyYXJ5IHJlc29sdXRp
b24gb2YgMTkyMHgxMDgwQDI0ZnBzLgorICAgIGNvbnN0IEdzdFN0cnVjdHVyZSogY2Fwc1N0cnVj
dCA9IGdzdF9jYXBzX2dldF9zdHJ1Y3R1cmUobV9jYXBzLmdldCgpLCAwKTsKKyAgICBpZiAoIWdz
dF9zdHJ1Y3R1cmVfZ2V0X2ludChjYXBzU3RydWN0LCAid2lkdGgiLCAmc2VsZWN0b3Iuc3RvcENv
bmRpdGlvbi53aWR0aCkpCisgICAgICAgIHNlbGVjdG9yLnN0b3BDb25kaXRpb24ud2lkdGggPSAx
OTIwOworCisgICAgaWYgKCFnc3Rfc3RydWN0dXJlX2dldF9pbnQoY2Fwc1N0cnVjdCwgImhlaWdo
dCIsICZzZWxlY3Rvci5zdG9wQ29uZGl0aW9uLmhlaWdodCkpCisgICAgICAgIHNlbGVjdG9yLnN0
b3BDb25kaXRpb24uaGVpZ2h0ID0gMTA4MDsKKworICAgIGludCBudW1lcmF0b3IgPSAwOworICAg
IGludCBkZW5vbWluYXRvciA9IDE7CisgICAgaWYgKGdzdF9zdHJ1Y3R1cmVfZ2V0X2ZyYWN0aW9u
KGNhcHNTdHJ1Y3QsICJmcmFtZXJhdGUiLCAmbnVtZXJhdG9yLCAmZGVub21pbmF0b3IpKQorICAg
ICAgICBzZWxlY3Rvci5zdG9wQ29uZGl0aW9uLmZyYW1lUmF0ZSA9IHN0YXRpY19jYXN0PGRvdWJs
ZT4obnVtZXJhdG9yKSAvIHN0YXRpY19jYXN0PGRvdWJsZT4oZGVub21pbmF0b3IpOworICAgIGVs
c2UKKyAgICAgICAgc2VsZWN0b3Iuc3RvcENvbmRpdGlvbi5mcmFtZVJhdGUgPSAyNC4wOworCisg
ICAgR1NUX0RFQlVHX09CSkVDVChtX3BpcGVsaW5lLmdldCgpLCAiU2VhcmNoaW5nIGJlc3Qgdmlk
ZW8gY2FwdHVyZSBkZXZpY2UgbWltZSB0eXBlIGZvciByZXNvbHV0aW9uICVkeCVkQCUuM2YiLAor
ICAgICAgICBzZWxlY3Rvci5zdG9wQ29uZGl0aW9uLndpZHRoLCBzZWxlY3Rvci5zdG9wQ29uZGl0
aW9uLmhlaWdodCwgc2VsZWN0b3Iuc3RvcENvbmRpdGlvbi5mcmFtZVJhdGUpOworCisgICAgYXV0
byBkZXZpY2VDYXBzID0gYWRvcHRHUmVmKGdzdF9kZXZpY2VfZ2V0X2NhcHMobV9kZXZpY2UuZ2V0
KCkpKTsKKyAgICBnc3RfY2Fwc19mb3JlYWNoKGRldmljZUNhcHMuZ2V0KCksCisgICAgICAgIHJl
aW50ZXJwcmV0X2Nhc3Q8R3N0Q2Fwc0ZvcmVhY2hGdW5jPigrW10oR3N0Q2Fwc0ZlYXR1cmVzKiwg
R3N0U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIE1pbWVUeXBlU2VsZWN0b3IqIHNlbGVjdG9yKSAtPiBn
Ym9vbGVhbiB7CisgICAgICAgICAgICBpbnQgd2lkdGggPSAwOworICAgICAgICAgICAgaW50IGhl
aWdodCA9IDA7CisgICAgICAgICAgICBpbnQgbnVtZXJhdG9yID0gMDsKKyAgICAgICAgICAgIGlu
dCBkZW5vbWluYXRvciA9IDE7CisgICAgICAgICAgICBpZiAoIWdzdF9zdHJ1Y3R1cmVfZ2V0X2lu
dChzdHJ1Y3R1cmUsICJ3aWR0aCIsICZ3aWR0aCkKKyAgICAgICAgICAgICAgICB8fCAhZ3N0X3N0
cnVjdHVyZV9nZXRfaW50KHN0cnVjdHVyZSwgImhlaWdodCIsICZoZWlnaHQpCisgICAgICAgICAg
ICAgICAgfHwgIWdzdF9zdHJ1Y3R1cmVfZ2V0X2ZyYWN0aW9uKHN0cnVjdHVyZSwgImZyYW1lcmF0
ZSIsICZudW1lcmF0b3IsICZkZW5vbWluYXRvcikpCisgICAgICAgICAgICAgICAgcmV0dXJuIFRS
VUU7CisKKyAgICAgICAgICAgIGRvdWJsZSBmcmFtZVJhdGUgPSBzdGF0aWNfY2FzdDxkb3VibGU+
KG51bWVyYXRvcikgLyBzdGF0aWNfY2FzdDxkb3VibGU+KGRlbm9taW5hdG9yKTsKKyAgICAgICAg
ICAgIGlmICgod2lkdGggPj0gc2VsZWN0b3ItPnN0b3BDb25kaXRpb24ud2lkdGgpCisgICAgICAg
ICAgICAgICAgJiYgKGhlaWdodCA+PSBzZWxlY3Rvci0+c3RvcENvbmRpdGlvbi5oZWlnaHQpCisg
ICAgICAgICAgICAgICAgJiYgKGZyYW1lUmF0ZSA+PSBzZWxlY3Rvci0+c3RvcENvbmRpdGlvbi5m
cmFtZVJhdGUpKSB7CisgICAgICAgICAgICAgICAgc2VsZWN0b3ItPm1pbWVUeXBlID0gZ3N0X3N0
cnVjdHVyZV9nZXRfbmFtZShzdHJ1Y3R1cmUpOworICAgICAgICAgICAgICAgIHJldHVybiBGQUxT
RTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCh3aWR0aCA+PSBzZWxlY3Rvci0+
bWF4V2lkdGgpCisgICAgICAgICAgICAgICAgJiYgKGhlaWdodCA+PSBzZWxlY3Rvci0+bWF4SGVp
Z2h0KQorICAgICAgICAgICAgICAgICYmIChmcmFtZVJhdGUgPj0gc2VsZWN0b3ItPm1heEZyYW1l
UmF0ZSkpIHsKKyAgICAgICAgICAgICAgICBzZWxlY3Rvci0+bWF4V2lkdGggPSB3aWR0aDsKKyAg
ICAgICAgICAgICAgICBzZWxlY3Rvci0+bWF4SGVpZ2h0ID0gaGVpZ2h0OworICAgICAgICAgICAg
ICAgIHNlbGVjdG9yLT5tYXhGcmFtZVJhdGUgPSBmcmFtZVJhdGU7CisgICAgICAgICAgICAgICAg
c2VsZWN0b3ItPm1pbWVUeXBlID0gZ3N0X3N0cnVjdHVyZV9nZXRfbmFtZShzdHJ1Y3R1cmUpOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gVFJVRTsKKyAgICAgICAgfSksCisg
ICAgICAgICZzZWxlY3Rvcik7CisKKyAgICBjb25zdCBjaGFyKiBtaW1lVHlwZSA9IHNlbGVjdG9y
Lm1pbWVUeXBlLmVtcHR5KCkgPyAidmlkZW8veC1yYXciIDogc2VsZWN0b3IubWltZVR5cGUuY19z
dHIoKTsKKyAgICBHU1RfSU5GT19PQkpFQ1QobV9waXBlbGluZS5nZXQoKSwgIlNldHRpbmcgdmlk
ZW8gY2FwdHVyZSBkZXZpY2UgbWltZSB0eXBlIHRvICVzIiwgbWltZVR5cGUpOworCisgICAgYXV0
byBjYXBzID0gYWRvcHRHUmVmKGdzdF9jYXBzX25ld19lbXB0eV9zaW1wbGUobWltZVR5cGUpKTsK
KyAgICBnX29iamVjdF9zZXQobV92aWRlb1NyY01JTUVUeXBlRmlsdGVyLmdldCgpLCAiY2FwcyIs
IGNhcHMuZ2V0KCksIG51bGxwdHIpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNl
bmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBVU0UoR1NUUkVBTUVSKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1l
clZpZGVvQ2FwdHVyZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dz
dHJlYW1lci9HU3RyZWFtZXJWaWRlb0NhcHR1cmVyLmgKaW5kZXggZmNlNmYxODdhODU2NTk3OTg4
MzVhNmU4NzIwY2EzODEyM2QxYmIzYy4uYzUzZmI1NWFhNjViNTZlNmEyMmUzMmU4MzVlMmZlNGNh
NDZhNGJkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
Z3N0cmVhbWVyL0dTdHJlYW1lclZpZGVvQ2FwdHVyZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyVmlkZW9DYXB0dXJlci5oCkBA
IC01MCw2ICs1MCw4IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBzdGQ6Om9wdGlvbmFsPE5v
ZGVBbmRGRD4gbV9ub2RlQW5kRmQ7CisgICAgR1JlZlB0cjxHc3RFbGVtZW50PiBtX3ZpZGVvU3Jj
TUlNRVR5cGVGaWx0ZXI7CisgICAgdm9pZCBhZGp1c3RWaWRlb1NyY01JTUVUeXBlKCk7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>459121</attachid>
            <date>2022-05-10 08:49:47 -0700</date>
            <delta_ts>2022-05-10 09:58:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-240229-20220510174945.patch</filename>
            <type>text/plain</type>
            <size>8060</size>
            <attacher name="Loïc Le Page">llepage</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjk0MDA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzI2MjFjMmQxOGQxOGNi
OTA1MjQ0YmMyZDc4M2E3MzFjMTg0NDcwMy4uNzlkOGM5NTQ5ZDg3N2Y2YzhmNmMxMjkwZWQwYjlh
MzY3MzYyMWIzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDIyLTA1LTA5ICBMb8Ov
YyBMZSBQYWdlICA8bGxlcGFnZUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHU3RyZWFtZXJdW1Zp
ZGVvQ2FwdHVyZV0gQWRkIHN1cHBvcnQgZm9yIGNhcHR1cmluZyBlbmNvZGVkIHZpZGVvIHN0cmVh
bXMgZnJvbSBhIHdlYmNhbQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjQwMjI5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVGFrZXMgaW50byBhY2NvdW50IGVuY29kZWQgdmlkZW8gc3RyZWFtcyBwcm9kdWNl
ZCBieSBhIHdlYmNhbSBmb3IKKyAgICAgICAgdmlkZW8gY2FwdHVyZS4KKworICAgICAgICBNYW51
YWxseSB0ZXN0ZWQgKHJlcXVpcmVzIGEgd2ViY2FtIHdpdGggZW5jb2RlZCB2aWRlbyBzdHJlYW1z
KS4KKworICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJW
aWRlb0NhcHR1cmVTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyVmlkZW9D
YXB0dXJlU291cmNlOjpnZW5lcmF0ZVByZXNldHMpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlh
c3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJWaWRlb0NhcHR1cmVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkdTdHJlYW1lclZpZGVvQ2FwdHVyZXI6OmNyZWF0ZUNvbnZlcnRlcik6CisgICAgICAg
IChXZWJDb3JlOjpHU3RyZWFtZXJWaWRlb0NhcHR1cmVyOjpzZXRTaXplKToKKyAgICAgICAgKFdl
YkNvcmU6OkdTdHJlYW1lclZpZGVvQ2FwdHVyZXI6OnNldEZyYW1lUmF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpHU3RyZWFtZXJWaWRlb0NhcHR1cmVyOjphZGp1c3RWaWRlb1NyY01JTUVUeXBlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyVmlkZW9D
YXB0dXJlci5oOgorCiAyMDIyLTA1LTEwICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNv
bT4KIAogICAgICAgICBDcmVhdGUgYSBzdG9wcGVkIENhY2hlU3RvcmFnZUNvbm5lY3Rpb24gZm9y
IHdvcmtlcnMgaW4gY2FzZSBvZiBkZXRhY2hlZCBkb2N1bWVudHMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJWaWRlb0Nh
cHR1cmVTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0
cmVhbWVyL0dTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZS5jcHAKaW5kZXggN2UzOTZjMmNjMzVi
MTU5ODRjMGJlODg3Yzc4MmMwNzA5ZWVjZGI3NS4uZGQwOTg3MmY2OThiNGJkMDU3N2M5ZjY0YzE5
ZWZiZGUxMTc1N2ExZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclZpZGVv
Q2FwdHVyZVNvdXJjZS5jcHAKQEAgLTI2NCwxMCArMjY0LDYgQEAgdm9pZCBHU3RyZWFtZXJWaWRl
b0NhcHR1cmVTb3VyY2U6OmdlbmVyYXRlUHJlc2V0cygpCiAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IGdzdF9jYXBzX2dldF9zaXplKGNhcHMuZ2V0KCkpOyBpKyspIHsKICAgICAgICAgR3N0
U3RydWN0dXJlKiBzdHIgPSBnc3RfY2Fwc19nZXRfc3RydWN0dXJlKGNhcHMuZ2V0KCksIGkpOwog
Ci0gICAgICAgIC8vIE9ubHkgYWNjZXB0IHJhdyB2aWRlbyBmb3Igbm93LgotICAgICAgICBpZiAo
IWdzdF9zdHJ1Y3R1cmVfaGFzX25hbWUoc3RyLCAidmlkZW8veC1yYXciKSkKLSAgICAgICAgICAg
IGNvbnRpbnVlOwotCiAgICAgICAgIGludDMyX3Qgd2lkdGgsIGhlaWdodDsKICAgICAgICAgaWYg
KCFnc3Rfc3RydWN0dXJlX2dldChzdHIsICJ3aWR0aCIsIEdfVFlQRV9JTlQsICZ3aWR0aCwgImhl
aWdodCIsIEdfVFlQRV9JTlQsICZoZWlnaHQsIG51bGxwdHIpKSB7CiAgICAgICAgICAgICBHU1Rf
SU5GTygiQ291bGQgbm90IGZpbmQgZGlzY3JldCBoZWlnaHQgYW5kIHdpZHRoIHZhbHVlcyBpbiAl
IiBHU1RfUFRSX0ZPUk1BVCwgc3RyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJWaWRlb0NhcHR1cmVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJWaWRl
b0NhcHR1cmVyLmNwcAppbmRleCBmOTk3NzUyNDIzMTIyYjQ5ZTI1NmIxMjVmZTZhYjYxYmMxYTQ1
NzYzLi5iNjQzMGI1MjE3ODFmNTBmZjY1YTcwZThlOWQ0Yzc5ZmJmZjc4NzRkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVy
VmlkZW9DYXB0dXJlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vZ3N0cmVhbWVyL0dTdHJlYW1lclZpZGVvQ2FwdHVyZXIuY3BwCkBAIC02OCw3ICs2OCwxMCBA
QCBHc3RFbGVtZW50KiBHU3RyZWFtZXJWaWRlb0NhcHR1cmVyOjpjcmVhdGVTb3VyY2UoKQogR3N0
RWxlbWVudCogR1N0cmVhbWVyVmlkZW9DYXB0dXJlcjo6Y3JlYXRlQ29udmVydGVyKCkKIHsKICAg
ICAvLyBodHRwczovL2dpdGxhYi5mcmVlZGVza3RvcC5vcmcvZ3N0cmVhbWVyL2dzdC1wbHVnaW5z
LWJhc2UvaXNzdWVzLzk3I25vdGVfNTY1NzUKLSAgICByZXR1cm4gbWFrZUdTdHJlYW1lckJpbigi
dmlkZW9zY2FsZSAhIHZpZGVvY29udmVydCAhIHZpZGVvcmF0ZSBkcm9wLW9ubHk9MSBhdmVyYWdl
LXBlcmlvZD0xIiwgdHJ1ZSk7CisgICAgYXV0byBiaW4gPSBtYWtlR1N0cmVhbWVyQmluKCJjYXBz
ZmlsdGVyIGNhcHM9XCJ2aWRlby94LXJhd1wiIG5hbWU9bWltZXR5cGUtZmlsdGVyICEgZGVjb2Rl
YmluMyAhIHZpZGVvc2NhbGUgISB2aWRlb2NvbnZlcnQgISB2aWRlb3JhdGUgZHJvcC1vbmx5PTEg
YXZlcmFnZS1wZXJpb2Q9MSIsIHRydWUpOworICAgIG1fdmlkZW9TcmNNSU1FVHlwZUZpbHRlciA9
IGFkb3B0R1JlZihnc3RfYmluX2dldF9ieV9uYW1lKEdTVF9CSU4oYmluKSwgIm1pbWV0eXBlLWZp
bHRlciIpKTsKKyAgICBhZGp1c3RWaWRlb1NyY01JTUVUeXBlKCk7CisgICAgcmV0dXJuIGJpbjsK
IH0KIAogR3N0VmlkZW9JbmZvIEdTdHJlYW1lclZpZGVvQ2FwdHVyZXI6OmdldEJlc3RGb3JtYXQo
KQpAQCAtMTAxLDYgKzEwNCw4IEBAIGJvb2wgR1N0cmVhbWVyVmlkZW9DYXB0dXJlcjo6c2V0U2l6
ZShpbnQgd2lkdGgsIGludCBoZWlnaHQpCiAgICAgbV9jYXBzID0gYWRvcHRHUmVmKGdzdF9jYXBz
X2NvcHkobV9jYXBzLmdldCgpKSk7CiAgICAgZ3N0X2NhcHNfc2V0X3NpbXBsZShtX2NhcHMuZ2V0
KCksICJ3aWR0aCIsIEdfVFlQRV9JTlQsIHdpZHRoLCAiaGVpZ2h0IiwgR19UWVBFX0lOVCwgaGVp
Z2h0LCBudWxscHRyKTsKIAorICAgIGFkanVzdFZpZGVvU3JjTUlNRVR5cGUoKTsKKwogICAgIGlm
ICghbV9jYXBzZmlsdGVyKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTEzMyw2ICsxMzgs
OCBAQCBib29sIEdTdHJlYW1lclZpZGVvQ2FwdHVyZXI6OnNldEZyYW1lUmF0ZShkb3VibGUgZnJh
bWVSYXRlKQogICAgIG1fY2FwcyA9IGFkb3B0R1JlZihnc3RfY2Fwc19jb3B5KG1fY2Fwcy5nZXQo
KSkpOwogICAgIGdzdF9jYXBzX3NldF9zaW1wbGUobV9jYXBzLmdldCgpLCAiZnJhbWVyYXRlIiwg
R1NUX1RZUEVfRlJBQ1RJT04sIG51bWVyYXRvciwgZGVub21pbmF0b3IsIG51bGxwdHIpOwogCisg
ICAgYWRqdXN0VmlkZW9TcmNNSU1FVHlwZSgpOworCiAgICAgaWYgKCFtX2NhcHNmaWx0ZXIpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtMTQyLDYgKzE0OSw4MCBAQCBib29sIEdTdHJlYW1l
clZpZGVvQ2FwdHVyZXI6OnNldEZyYW1lUmF0ZShkb3VibGUgZnJhbWVSYXRlKQogICAgIHJldHVy
biB0cnVlOwogfQogCit2b2lkIEdTdHJlYW1lclZpZGVvQ2FwdHVyZXI6OmFkanVzdFZpZGVvU3Jj
TUlNRVR5cGUoKQoreworICAgIGlmICghbV92aWRlb1NyY01JTUVUeXBlRmlsdGVyKQorICAgICAg
ICByZXR1cm47CisKKyAgICBzdHJ1Y3QgTWltZVR5cGVTZWxlY3RvciB7CisgICAgICAgIGNvbnN0
IGNoYXIqIG1pbWVUeXBlID0gInZpZGVvL3gtcmF3IjsKKworICAgICAgICBpbnQgbWF4V2lkdGgg
PSAwOworICAgICAgICBpbnQgbWF4SGVpZ2h0ID0gMDsKKyAgICAgICAgZG91YmxlIG1heEZyYW1l
UmF0ZSA9IDA7CisKKyAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgIGludCB3aWR0aCA9IDA7
CisgICAgICAgICAgICBpbnQgaGVpZ2h0ID0gMDsKKyAgICAgICAgICAgIGRvdWJsZSBmcmFtZVJh
dGUgPSAwOworICAgICAgICB9IHN0b3BDb25kaXRpb247CisgICAgfSBzZWxlY3RvcjsKKworICAg
IC8vIElmIG5vdGhpbmcgaGFzIGJlZW4gc3BlY2lmaWVkIGJ5IHRoZSB1c2VyLCB3ZSB0YXJnZXQg
YXQgbGVhc3QgYW4gYXJiaXRyYXJ5IHJlc29sdXRpb24gb2YgMTkyMHgxMDgwQDI0ZnBzLgorICAg
IGNvbnN0IEdzdFN0cnVjdHVyZSogY2Fwc1N0cnVjdCA9IGdzdF9jYXBzX2dldF9zdHJ1Y3R1cmUo
bV9jYXBzLmdldCgpLCAwKTsKKyAgICBpZiAoIWdzdF9zdHJ1Y3R1cmVfZ2V0X2ludChjYXBzU3Ry
dWN0LCAid2lkdGgiLCAmc2VsZWN0b3Iuc3RvcENvbmRpdGlvbi53aWR0aCkpCisgICAgICAgIHNl
bGVjdG9yLnN0b3BDb25kaXRpb24ud2lkdGggPSAxOTIwOworCisgICAgaWYgKCFnc3Rfc3RydWN0
dXJlX2dldF9pbnQoY2Fwc1N0cnVjdCwgImhlaWdodCIsICZzZWxlY3Rvci5zdG9wQ29uZGl0aW9u
LmhlaWdodCkpCisgICAgICAgIHNlbGVjdG9yLnN0b3BDb25kaXRpb24uaGVpZ2h0ID0gMTA4MDsK
KworICAgIGludCBudW1lcmF0b3IgPSAwOworICAgIGludCBkZW5vbWluYXRvciA9IDE7CisgICAg
aWYgKGdzdF9zdHJ1Y3R1cmVfZ2V0X2ZyYWN0aW9uKGNhcHNTdHJ1Y3QsICJmcmFtZXJhdGUiLCAm
bnVtZXJhdG9yLCAmZGVub21pbmF0b3IpKQorICAgICAgICBnc3RfdXRpbF9mcmFjdGlvbl90b19k
b3VibGUobnVtZXJhdG9yLCBkZW5vbWluYXRvciwgJnNlbGVjdG9yLnN0b3BDb25kaXRpb24uZnJh
bWVSYXRlKTsKKyAgICBlbHNlCisgICAgICAgIHNlbGVjdG9yLnN0b3BDb25kaXRpb24uZnJhbWVS
YXRlID0gMjQ7CisKKyAgICBHU1RfREVCVUdfT0JKRUNUKG1fcGlwZWxpbmUuZ2V0KCksICJTZWFy
Y2hpbmcgYmVzdCB2aWRlbyBjYXB0dXJlIGRldmljZSBtaW1lIHR5cGUgZm9yIHJlc29sdXRpb24g
JWR4JWRAJS4zZiIsCisgICAgICAgIHNlbGVjdG9yLnN0b3BDb25kaXRpb24ud2lkdGgsIHNlbGVj
dG9yLnN0b3BDb25kaXRpb24uaGVpZ2h0LCBzZWxlY3Rvci5zdG9wQ29uZGl0aW9uLmZyYW1lUmF0
ZSk7CisKKyAgICBhdXRvIGRldmljZUNhcHMgPSBhZG9wdEdSZWYoZ3N0X2RldmljZV9nZXRfY2Fw
cyhtX2RldmljZS5nZXQoKSkpOworICAgIGdzdF9jYXBzX2ZvcmVhY2goZGV2aWNlQ2Fwcy5nZXQo
KSwKKyAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxHc3RDYXBzRm9yZWFjaEZ1bmM+KCtbXShHc3RD
YXBzRmVhdHVyZXMqLCBHc3RTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgTWltZVR5cGVTZWxlY3Rvciog
c2VsZWN0b3IpIC0+IGdib29sZWFuIHsKKyAgICAgICAgICAgIGludCB3aWR0aCA9IDA7CisgICAg
ICAgICAgICBpbnQgaGVpZ2h0ID0gMDsKKyAgICAgICAgICAgIGludCBudW1lcmF0b3IgPSAwOwor
ICAgICAgICAgICAgaW50IGRlbm9taW5hdG9yID0gMTsKKyAgICAgICAgICAgIGlmICghZ3N0X3N0
cnVjdHVyZV9nZXRfaW50KHN0cnVjdHVyZSwgIndpZHRoIiwgJndpZHRoKQorICAgICAgICAgICAg
ICAgIHx8ICFnc3Rfc3RydWN0dXJlX2dldF9pbnQoc3RydWN0dXJlLCAiaGVpZ2h0IiwgJmhlaWdo
dCkKKyAgICAgICAgICAgICAgICB8fCAhZ3N0X3N0cnVjdHVyZV9nZXRfZnJhY3Rpb24oc3RydWN0
dXJlLCAiZnJhbWVyYXRlIiwgJm51bWVyYXRvciwgJmRlbm9taW5hdG9yKSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gVFJVRTsKKworICAgICAgICAgICAgZG91YmxlIGZyYW1lUmF0ZSA9IDA7Cisg
ICAgICAgICAgICBnc3RfdXRpbF9mcmFjdGlvbl90b19kb3VibGUobnVtZXJhdG9yLCBkZW5vbWlu
YXRvciwgJmZyYW1lcmF0ZSk7CisgICAgICAgICAgICBpZiAod2lkdGggPj0gc2VsZWN0b3ItPnN0
b3BDb25kaXRpb24ud2lkdGggJiYgaGVpZ2h0ID49IHNlbGVjdG9yLT5zdG9wQ29uZGl0aW9uLmhl
aWdodAorICAgICAgICAgICAgICAgICYmIGZyYW1lUmF0ZSA+PSBzZWxlY3Rvci0+c3RvcENvbmRp
dGlvbi5mcmFtZVJhdGUpIHsKKyAgICAgICAgICAgICAgICBzZWxlY3Rvci0+bWltZVR5cGUgPSBn
c3Rfc3RydWN0dXJlX2dldF9uYW1lKHN0cnVjdHVyZSk7CisgICAgICAgICAgICAgICAgcmV0dXJu
IEZBTFNFOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAod2lkdGggPj0gc2VsZWN0
b3ItPm1heFdpZHRoICYmIGhlaWdodCA+PSBzZWxlY3Rvci0+bWF4SGVpZ2h0ICYmIGZyYW1lUmF0
ZSA+PSBzZWxlY3Rvci0+bWF4RnJhbWVSYXRlKSB7CisgICAgICAgICAgICAgICAgc2VsZWN0b3It
Pm1heFdpZHRoID0gd2lkdGg7CisgICAgICAgICAgICAgICAgc2VsZWN0b3ItPm1heEhlaWdodCA9
IGhlaWdodDsKKyAgICAgICAgICAgICAgICBzZWxlY3Rvci0+bWF4RnJhbWVSYXRlID0gZnJhbWVS
YXRlOworICAgICAgICAgICAgICAgIHNlbGVjdG9yLT5taW1lVHlwZSA9IGdzdF9zdHJ1Y3R1cmVf
Z2V0X25hbWUoc3RydWN0dXJlKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJu
IFRSVUU7CisgICAgICAgIH0pLAorICAgICAgICAmc2VsZWN0b3IpOworCisgICAgR1NUX0lORk9f
T0JKRUNUKG1fcGlwZWxpbmUuZ2V0KCksICJTZXR0aW5nIHZpZGVvIGNhcHR1cmUgZGV2aWNlIG1p
bWUgdHlwZSB0byAlcyIsIHNlbGVjdG9yLm1pbWVUeXBlKTsKKworICAgIGF1dG8gY2FwcyA9IGFk
b3B0R1JlZihnc3RfY2Fwc19uZXdfZW1wdHlfc2ltcGxlKHNlbGVjdG9yLm1pbWVUeXBlKSk7Cisg
ICAgZ19vYmplY3Rfc2V0KG1fdmlkZW9TcmNNSU1FVHlwZUZpbHRlci5nZXQoKSwgImNhcHMiLCBj
YXBzLmdldCgpLCBudWxscHRyKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5k
aWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgVVNFKEdTVFJFQU1FUikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJW
aWRlb0NhcHR1cmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3Ry
ZWFtZXIvR1N0cmVhbWVyVmlkZW9DYXB0dXJlci5oCmluZGV4IGZjZTZmMTg3YTg1NjU5Nzk4ODM1
YTZlODcyMGNhMzgxMjNkMWJiM2MuLmM1M2ZiNTVhYTY1YjU2ZTZhMjJlMzJlODM1ZTJmZTRjYTQ2
YTRiZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dz
dHJlYW1lci9HU3RyZWFtZXJWaWRlb0NhcHR1cmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclZpZGVvQ2FwdHVyZXIuaApAQCAt
NTAsNiArNTAsOCBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgc3RkOjpvcHRpb25hbDxOb2Rl
QW5kRkQ+IG1fbm9kZUFuZEZkOworICAgIEdSZWZQdHI8R3N0RWxlbWVudD4gbV92aWRlb1NyY01J
TUVUeXBlRmlsdGVyOworICAgIHZvaWQgYWRqdXN0VmlkZW9TcmNNSU1FVHlwZSgpOwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>
<flag name="commit-queue"
          id="488134"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>459122</attachid>
            <date>2022-05-10 08:58:49 -0700</date>
            <delta_ts>2022-05-12 02:47:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-240229-20220510175847.patch</filename>
            <type>text/plain</type>
            <size>8060</size>
            <attacher name="Loïc Le Page">llepage</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjk0MDA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzI2MjFjMmQxOGQxOGNi
OTA1MjQ0YmMyZDc4M2E3MzFjMTg0NDcwMy4uNzlkOGM5NTQ5ZDg3N2Y2YzhmNmMxMjkwZWQwYjlh
MzY3MzYyMWIzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDIyLTA1LTA5ICBMb8Ov
YyBMZSBQYWdlICA8bGxlcGFnZUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHU3RyZWFtZXJdW1Zp
ZGVvQ2FwdHVyZV0gQWRkIHN1cHBvcnQgZm9yIGNhcHR1cmluZyBlbmNvZGVkIHZpZGVvIHN0cmVh
bXMgZnJvbSBhIHdlYmNhbQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjQwMjI5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVGFrZXMgaW50byBhY2NvdW50IGVuY29kZWQgdmlkZW8gc3RyZWFtcyBwcm9kdWNl
ZCBieSBhIHdlYmNhbSBmb3IKKyAgICAgICAgdmlkZW8gY2FwdHVyZS4KKworICAgICAgICBNYW51
YWxseSB0ZXN0ZWQgKHJlcXVpcmVzIGEgd2ViY2FtIHdpdGggZW5jb2RlZCB2aWRlbyBzdHJlYW1z
KS4KKworICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJW
aWRlb0NhcHR1cmVTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyVmlkZW9D
YXB0dXJlU291cmNlOjpnZW5lcmF0ZVByZXNldHMpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlh
c3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJWaWRlb0NhcHR1cmVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkdTdHJlYW1lclZpZGVvQ2FwdHVyZXI6OmNyZWF0ZUNvbnZlcnRlcik6CisgICAgICAg
IChXZWJDb3JlOjpHU3RyZWFtZXJWaWRlb0NhcHR1cmVyOjpzZXRTaXplKToKKyAgICAgICAgKFdl
YkNvcmU6OkdTdHJlYW1lclZpZGVvQ2FwdHVyZXI6OnNldEZyYW1lUmF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpHU3RyZWFtZXJWaWRlb0NhcHR1cmVyOjphZGp1c3RWaWRlb1NyY01JTUVUeXBlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyVmlkZW9D
YXB0dXJlci5oOgorCiAyMDIyLTA1LTEwICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNv
bT4KIAogICAgICAgICBDcmVhdGUgYSBzdG9wcGVkIENhY2hlU3RvcmFnZUNvbm5lY3Rpb24gZm9y
IHdvcmtlcnMgaW4gY2FzZSBvZiBkZXRhY2hlZCBkb2N1bWVudHMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJWaWRlb0Nh
cHR1cmVTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0
cmVhbWVyL0dTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZS5jcHAKaW5kZXggN2UzOTZjMmNjMzVi
MTU5ODRjMGJlODg3Yzc4MmMwNzA5ZWVjZGI3NS4uZGQwOTg3MmY2OThiNGJkMDU3N2M5ZjY0YzE5
ZWZiZGUxMTc1N2ExZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclZpZGVv
Q2FwdHVyZVNvdXJjZS5jcHAKQEAgLTI2NCwxMCArMjY0LDYgQEAgdm9pZCBHU3RyZWFtZXJWaWRl
b0NhcHR1cmVTb3VyY2U6OmdlbmVyYXRlUHJlc2V0cygpCiAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IGdzdF9jYXBzX2dldF9zaXplKGNhcHMuZ2V0KCkpOyBpKyspIHsKICAgICAgICAgR3N0
U3RydWN0dXJlKiBzdHIgPSBnc3RfY2Fwc19nZXRfc3RydWN0dXJlKGNhcHMuZ2V0KCksIGkpOwog
Ci0gICAgICAgIC8vIE9ubHkgYWNjZXB0IHJhdyB2aWRlbyBmb3Igbm93LgotICAgICAgICBpZiAo
IWdzdF9zdHJ1Y3R1cmVfaGFzX25hbWUoc3RyLCAidmlkZW8veC1yYXciKSkKLSAgICAgICAgICAg
IGNvbnRpbnVlOwotCiAgICAgICAgIGludDMyX3Qgd2lkdGgsIGhlaWdodDsKICAgICAgICAgaWYg
KCFnc3Rfc3RydWN0dXJlX2dldChzdHIsICJ3aWR0aCIsIEdfVFlQRV9JTlQsICZ3aWR0aCwgImhl
aWdodCIsIEdfVFlQRV9JTlQsICZoZWlnaHQsIG51bGxwdHIpKSB7CiAgICAgICAgICAgICBHU1Rf
SU5GTygiQ291bGQgbm90IGZpbmQgZGlzY3JldCBoZWlnaHQgYW5kIHdpZHRoIHZhbHVlcyBpbiAl
IiBHU1RfUFRSX0ZPUk1BVCwgc3RyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJWaWRlb0NhcHR1cmVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJWaWRl
b0NhcHR1cmVyLmNwcAppbmRleCBmOTk3NzUyNDIzMTIyYjQ5ZTI1NmIxMjVmZTZhYjYxYmMxYTQ1
NzYzLi40MTdhOTc3ZDc2MDNiOTFlMzJhYTU5NGRlOTIyN2Y4YzQ5MDliY2U4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVy
VmlkZW9DYXB0dXJlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vZ3N0cmVhbWVyL0dTdHJlYW1lclZpZGVvQ2FwdHVyZXIuY3BwCkBAIC02OCw3ICs2OCwxMCBA
QCBHc3RFbGVtZW50KiBHU3RyZWFtZXJWaWRlb0NhcHR1cmVyOjpjcmVhdGVTb3VyY2UoKQogR3N0
RWxlbWVudCogR1N0cmVhbWVyVmlkZW9DYXB0dXJlcjo6Y3JlYXRlQ29udmVydGVyKCkKIHsKICAg
ICAvLyBodHRwczovL2dpdGxhYi5mcmVlZGVza3RvcC5vcmcvZ3N0cmVhbWVyL2dzdC1wbHVnaW5z
LWJhc2UvaXNzdWVzLzk3I25vdGVfNTY1NzUKLSAgICByZXR1cm4gbWFrZUdTdHJlYW1lckJpbigi
dmlkZW9zY2FsZSAhIHZpZGVvY29udmVydCAhIHZpZGVvcmF0ZSBkcm9wLW9ubHk9MSBhdmVyYWdl
LXBlcmlvZD0xIiwgdHJ1ZSk7CisgICAgYXV0byBiaW4gPSBtYWtlR1N0cmVhbWVyQmluKCJjYXBz
ZmlsdGVyIGNhcHM9XCJ2aWRlby94LXJhd1wiIG5hbWU9bWltZXR5cGUtZmlsdGVyICEgZGVjb2Rl
YmluMyAhIHZpZGVvc2NhbGUgISB2aWRlb2NvbnZlcnQgISB2aWRlb3JhdGUgZHJvcC1vbmx5PTEg
YXZlcmFnZS1wZXJpb2Q9MSIsIHRydWUpOworICAgIG1fdmlkZW9TcmNNSU1FVHlwZUZpbHRlciA9
IGFkb3B0R1JlZihnc3RfYmluX2dldF9ieV9uYW1lKEdTVF9CSU4oYmluKSwgIm1pbWV0eXBlLWZp
bHRlciIpKTsKKyAgICBhZGp1c3RWaWRlb1NyY01JTUVUeXBlKCk7CisgICAgcmV0dXJuIGJpbjsK
IH0KIAogR3N0VmlkZW9JbmZvIEdTdHJlYW1lclZpZGVvQ2FwdHVyZXI6OmdldEJlc3RGb3JtYXQo
KQpAQCAtMTAxLDYgKzEwNCw4IEBAIGJvb2wgR1N0cmVhbWVyVmlkZW9DYXB0dXJlcjo6c2V0U2l6
ZShpbnQgd2lkdGgsIGludCBoZWlnaHQpCiAgICAgbV9jYXBzID0gYWRvcHRHUmVmKGdzdF9jYXBz
X2NvcHkobV9jYXBzLmdldCgpKSk7CiAgICAgZ3N0X2NhcHNfc2V0X3NpbXBsZShtX2NhcHMuZ2V0
KCksICJ3aWR0aCIsIEdfVFlQRV9JTlQsIHdpZHRoLCAiaGVpZ2h0IiwgR19UWVBFX0lOVCwgaGVp
Z2h0LCBudWxscHRyKTsKIAorICAgIGFkanVzdFZpZGVvU3JjTUlNRVR5cGUoKTsKKwogICAgIGlm
ICghbV9jYXBzZmlsdGVyKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTEzMyw2ICsxMzgs
OCBAQCBib29sIEdTdHJlYW1lclZpZGVvQ2FwdHVyZXI6OnNldEZyYW1lUmF0ZShkb3VibGUgZnJh
bWVSYXRlKQogICAgIG1fY2FwcyA9IGFkb3B0R1JlZihnc3RfY2Fwc19jb3B5KG1fY2Fwcy5nZXQo
KSkpOwogICAgIGdzdF9jYXBzX3NldF9zaW1wbGUobV9jYXBzLmdldCgpLCAiZnJhbWVyYXRlIiwg
R1NUX1RZUEVfRlJBQ1RJT04sIG51bWVyYXRvciwgZGVub21pbmF0b3IsIG51bGxwdHIpOwogCisg
ICAgYWRqdXN0VmlkZW9TcmNNSU1FVHlwZSgpOworCiAgICAgaWYgKCFtX2NhcHNmaWx0ZXIpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtMTQyLDYgKzE0OSw4MCBAQCBib29sIEdTdHJlYW1l
clZpZGVvQ2FwdHVyZXI6OnNldEZyYW1lUmF0ZShkb3VibGUgZnJhbWVSYXRlKQogICAgIHJldHVy
biB0cnVlOwogfQogCit2b2lkIEdTdHJlYW1lclZpZGVvQ2FwdHVyZXI6OmFkanVzdFZpZGVvU3Jj
TUlNRVR5cGUoKQoreworICAgIGlmICghbV92aWRlb1NyY01JTUVUeXBlRmlsdGVyKQorICAgICAg
ICByZXR1cm47CisKKyAgICBzdHJ1Y3QgTWltZVR5cGVTZWxlY3RvciB7CisgICAgICAgIGNvbnN0
IGNoYXIqIG1pbWVUeXBlID0gInZpZGVvL3gtcmF3IjsKKworICAgICAgICBpbnQgbWF4V2lkdGgg
PSAwOworICAgICAgICBpbnQgbWF4SGVpZ2h0ID0gMDsKKyAgICAgICAgZG91YmxlIG1heEZyYW1l
UmF0ZSA9IDA7CisKKyAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgIGludCB3aWR0aCA9IDA7
CisgICAgICAgICAgICBpbnQgaGVpZ2h0ID0gMDsKKyAgICAgICAgICAgIGRvdWJsZSBmcmFtZVJh
dGUgPSAwOworICAgICAgICB9IHN0b3BDb25kaXRpb247CisgICAgfSBzZWxlY3RvcjsKKworICAg
IC8vIElmIG5vdGhpbmcgaGFzIGJlZW4gc3BlY2lmaWVkIGJ5IHRoZSB1c2VyLCB3ZSB0YXJnZXQg
YXQgbGVhc3QgYW4gYXJiaXRyYXJ5IHJlc29sdXRpb24gb2YgMTkyMHgxMDgwQDI0ZnBzLgorICAg
IGNvbnN0IEdzdFN0cnVjdHVyZSogY2Fwc1N0cnVjdCA9IGdzdF9jYXBzX2dldF9zdHJ1Y3R1cmUo
bV9jYXBzLmdldCgpLCAwKTsKKyAgICBpZiAoIWdzdF9zdHJ1Y3R1cmVfZ2V0X2ludChjYXBzU3Ry
dWN0LCAid2lkdGgiLCAmc2VsZWN0b3Iuc3RvcENvbmRpdGlvbi53aWR0aCkpCisgICAgICAgIHNl
bGVjdG9yLnN0b3BDb25kaXRpb24ud2lkdGggPSAxOTIwOworCisgICAgaWYgKCFnc3Rfc3RydWN0
dXJlX2dldF9pbnQoY2Fwc1N0cnVjdCwgImhlaWdodCIsICZzZWxlY3Rvci5zdG9wQ29uZGl0aW9u
LmhlaWdodCkpCisgICAgICAgIHNlbGVjdG9yLnN0b3BDb25kaXRpb24uaGVpZ2h0ID0gMTA4MDsK
KworICAgIGludCBudW1lcmF0b3IgPSAwOworICAgIGludCBkZW5vbWluYXRvciA9IDE7CisgICAg
aWYgKGdzdF9zdHJ1Y3R1cmVfZ2V0X2ZyYWN0aW9uKGNhcHNTdHJ1Y3QsICJmcmFtZXJhdGUiLCAm
bnVtZXJhdG9yLCAmZGVub21pbmF0b3IpKQorICAgICAgICBnc3RfdXRpbF9mcmFjdGlvbl90b19k
b3VibGUobnVtZXJhdG9yLCBkZW5vbWluYXRvciwgJnNlbGVjdG9yLnN0b3BDb25kaXRpb24uZnJh
bWVSYXRlKTsKKyAgICBlbHNlCisgICAgICAgIHNlbGVjdG9yLnN0b3BDb25kaXRpb24uZnJhbWVS
YXRlID0gMjQ7CisKKyAgICBHU1RfREVCVUdfT0JKRUNUKG1fcGlwZWxpbmUuZ2V0KCksICJTZWFy
Y2hpbmcgYmVzdCB2aWRlbyBjYXB0dXJlIGRldmljZSBtaW1lIHR5cGUgZm9yIHJlc29sdXRpb24g
JWR4JWRAJS4zZiIsCisgICAgICAgIHNlbGVjdG9yLnN0b3BDb25kaXRpb24ud2lkdGgsIHNlbGVj
dG9yLnN0b3BDb25kaXRpb24uaGVpZ2h0LCBzZWxlY3Rvci5zdG9wQ29uZGl0aW9uLmZyYW1lUmF0
ZSk7CisKKyAgICBhdXRvIGRldmljZUNhcHMgPSBhZG9wdEdSZWYoZ3N0X2RldmljZV9nZXRfY2Fw
cyhtX2RldmljZS5nZXQoKSkpOworICAgIGdzdF9jYXBzX2ZvcmVhY2goZGV2aWNlQ2Fwcy5nZXQo
KSwKKyAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxHc3RDYXBzRm9yZWFjaEZ1bmM+KCtbXShHc3RD
YXBzRmVhdHVyZXMqLCBHc3RTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgTWltZVR5cGVTZWxlY3Rvciog
c2VsZWN0b3IpIC0+IGdib29sZWFuIHsKKyAgICAgICAgICAgIGludCB3aWR0aCA9IDA7CisgICAg
ICAgICAgICBpbnQgaGVpZ2h0ID0gMDsKKyAgICAgICAgICAgIGludCBudW1lcmF0b3IgPSAwOwor
ICAgICAgICAgICAgaW50IGRlbm9taW5hdG9yID0gMTsKKyAgICAgICAgICAgIGlmICghZ3N0X3N0
cnVjdHVyZV9nZXRfaW50KHN0cnVjdHVyZSwgIndpZHRoIiwgJndpZHRoKQorICAgICAgICAgICAg
ICAgIHx8ICFnc3Rfc3RydWN0dXJlX2dldF9pbnQoc3RydWN0dXJlLCAiaGVpZ2h0IiwgJmhlaWdo
dCkKKyAgICAgICAgICAgICAgICB8fCAhZ3N0X3N0cnVjdHVyZV9nZXRfZnJhY3Rpb24oc3RydWN0
dXJlLCAiZnJhbWVyYXRlIiwgJm51bWVyYXRvciwgJmRlbm9taW5hdG9yKSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gVFJVRTsKKworICAgICAgICAgICAgZG91YmxlIGZyYW1lUmF0ZSA9IDA7Cisg
ICAgICAgICAgICBnc3RfdXRpbF9mcmFjdGlvbl90b19kb3VibGUobnVtZXJhdG9yLCBkZW5vbWlu
YXRvciwgJmZyYW1lUmF0ZSk7CisgICAgICAgICAgICBpZiAod2lkdGggPj0gc2VsZWN0b3ItPnN0
b3BDb25kaXRpb24ud2lkdGggJiYgaGVpZ2h0ID49IHNlbGVjdG9yLT5zdG9wQ29uZGl0aW9uLmhl
aWdodAorICAgICAgICAgICAgICAgICYmIGZyYW1lUmF0ZSA+PSBzZWxlY3Rvci0+c3RvcENvbmRp
dGlvbi5mcmFtZVJhdGUpIHsKKyAgICAgICAgICAgICAgICBzZWxlY3Rvci0+bWltZVR5cGUgPSBn
c3Rfc3RydWN0dXJlX2dldF9uYW1lKHN0cnVjdHVyZSk7CisgICAgICAgICAgICAgICAgcmV0dXJu
IEZBTFNFOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAod2lkdGggPj0gc2VsZWN0
b3ItPm1heFdpZHRoICYmIGhlaWdodCA+PSBzZWxlY3Rvci0+bWF4SGVpZ2h0ICYmIGZyYW1lUmF0
ZSA+PSBzZWxlY3Rvci0+bWF4RnJhbWVSYXRlKSB7CisgICAgICAgICAgICAgICAgc2VsZWN0b3It
Pm1heFdpZHRoID0gd2lkdGg7CisgICAgICAgICAgICAgICAgc2VsZWN0b3ItPm1heEhlaWdodCA9
IGhlaWdodDsKKyAgICAgICAgICAgICAgICBzZWxlY3Rvci0+bWF4RnJhbWVSYXRlID0gZnJhbWVS
YXRlOworICAgICAgICAgICAgICAgIHNlbGVjdG9yLT5taW1lVHlwZSA9IGdzdF9zdHJ1Y3R1cmVf
Z2V0X25hbWUoc3RydWN0dXJlKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJu
IFRSVUU7CisgICAgICAgIH0pLAorICAgICAgICAmc2VsZWN0b3IpOworCisgICAgR1NUX0lORk9f
T0JKRUNUKG1fcGlwZWxpbmUuZ2V0KCksICJTZXR0aW5nIHZpZGVvIGNhcHR1cmUgZGV2aWNlIG1p
bWUgdHlwZSB0byAlcyIsIHNlbGVjdG9yLm1pbWVUeXBlKTsKKworICAgIGF1dG8gY2FwcyA9IGFk
b3B0R1JlZihnc3RfY2Fwc19uZXdfZW1wdHlfc2ltcGxlKHNlbGVjdG9yLm1pbWVUeXBlKSk7Cisg
ICAgZ19vYmplY3Rfc2V0KG1fdmlkZW9TcmNNSU1FVHlwZUZpbHRlci5nZXQoKSwgImNhcHMiLCBj
YXBzLmdldCgpLCBudWxscHRyKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5k
aWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgVVNFKEdTVFJFQU1FUikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJW
aWRlb0NhcHR1cmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3Ry
ZWFtZXIvR1N0cmVhbWVyVmlkZW9DYXB0dXJlci5oCmluZGV4IGZjZTZmMTg3YTg1NjU5Nzk4ODM1
YTZlODcyMGNhMzgxMjNkMWJiM2MuLmM1M2ZiNTVhYTY1YjU2ZTZhMjJlMzJlODM1ZTJmZTRjYTQ2
YTRiZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dz
dHJlYW1lci9HU3RyZWFtZXJWaWRlb0NhcHR1cmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclZpZGVvQ2FwdHVyZXIuaApAQCAt
NTAsNiArNTAsOCBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgc3RkOjpvcHRpb25hbDxOb2Rl
QW5kRkQ+IG1fbm9kZUFuZEZkOworICAgIEdSZWZQdHI8R3N0RWxlbWVudD4gbV92aWRlb1NyY01J
TUVUeXBlRmlsdGVyOworICAgIHZvaWQgYWRqdXN0VmlkZW9TcmNNSU1FVHlwZSgpOwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>459216</attachid>
            <date>2022-05-12 02:47:54 -0700</date>
            <delta_ts>2022-05-12 09:25:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-240229-20220512114752.patch</filename>
            <type>text/plain</type>
            <size>11716</size>
            <attacher name="Loïc Le Page">llepage</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjk0MDk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTZjZWJhMDRiNWNiYzdj
MzA5ZmZmM2U4YzJiZTU1ZjY3YTVkNzM3YS4uNzk0YWY0NDg2ZTRmNWI5MzdkMmRhY2E1NThiYmJl
NmQyM2NhNmYyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDIyLTA1LTEyICBMb8Ov
YyBMZSBQYWdlICA8bGxlcGFnZUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHU3RyZWFtZXJdW1Zp
ZGVvQ2FwdHVyZV0gQWRkIHN1cHBvcnQgZm9yIGNhcHR1cmluZyBlbmNvZGVkIHZpZGVvIHN0cmVh
bXMgZnJvbSBhIHdlYmNhbQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjQwMjI5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVGFrZXMgaW50byBhY2NvdW50IGVuY29kZWQgdmlkZW8gc3RyZWFtcyBwcm9kdWNl
ZCBieSBhIHdlYmNhbSBmb3IKKyAgICAgICAgdmlkZW8gY2FwdHVyZS4KKworICAgICAgICBNYW51
YWxseSB0ZXN0ZWQgKHJlcXVpcmVzIGEgd2ViY2FtIHdpdGggZW5jb2RlZCB2aWRlbyBzdHJlYW1z
KS4KKworICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJW
aWRlb0NhcHR1cmVTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyVmlkZW9D
YXB0dXJlU291cmNlOjpnZW5lcmF0ZVByZXNldHMpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlh
c3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJWaWRlb0NhcHR1cmVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkdTdHJlYW1lclZpZGVvQ2FwdHVyZXI6OmNyZWF0ZUNvbnZlcnRlcik6CisgICAgICAg
IChXZWJDb3JlOjpHU3RyZWFtZXJWaWRlb0NhcHR1cmVyOjpzZXRTaXplKToKKyAgICAgICAgKFdl
YkNvcmU6OkdTdHJlYW1lclZpZGVvQ2FwdHVyZXI6OnNldEZyYW1lUmF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpHU3RyZWFtZXJWaWRlb0NhcHR1cmVyOjphZGp1c3RWaWRlb1NyY01JTUVUeXBlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyVmlkZW9D
YXB0dXJlci5oOgorCiAyMDIyLTA1LTExICBEaWVnbyBQaW5vIEdhcmNpYSAgPGRwaW5vQGlnYWxp
YS5jb20+CiAKICAgICAgICAgW1dQRV0gVW5yZXZpZXdlZCwgYnVpbGQgZml4IGFmdGVyIHIyOTM4
MTYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJl
YW1lci9HU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZS5j
cHAKaW5kZXggN2UzOTZjMmNjMzViMTU5ODRjMGJlODg3Yzc4MmMwNzA5ZWVjZGI3NS4uZGQwOTg3
MmY2OThiNGJkMDU3N2M5ZjY0YzE5ZWZiZGUxMTc1N2ExZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclZpZGVvQ2FwdHVy
ZVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0
cmVhbWVyL0dTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZS5jcHAKQEAgLTI2NCwxMCArMjY0LDYg
QEAgdm9pZCBHU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2U6OmdlbmVyYXRlUHJlc2V0cygpCiAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGdzdF9jYXBzX2dldF9zaXplKGNhcHMuZ2V0KCkp
OyBpKyspIHsKICAgICAgICAgR3N0U3RydWN0dXJlKiBzdHIgPSBnc3RfY2Fwc19nZXRfc3RydWN0
dXJlKGNhcHMuZ2V0KCksIGkpOwogCi0gICAgICAgIC8vIE9ubHkgYWNjZXB0IHJhdyB2aWRlbyBm
b3Igbm93LgotICAgICAgICBpZiAoIWdzdF9zdHJ1Y3R1cmVfaGFzX25hbWUoc3RyLCAidmlkZW8v
eC1yYXciKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCiAgICAgICAgIGludDMyX3Qgd2lkdGgs
IGhlaWdodDsKICAgICAgICAgaWYgKCFnc3Rfc3RydWN0dXJlX2dldChzdHIsICJ3aWR0aCIsIEdf
VFlQRV9JTlQsICZ3aWR0aCwgImhlaWdodCIsIEdfVFlQRV9JTlQsICZoZWlnaHQsIG51bGxwdHIp
KSB7CiAgICAgICAgICAgICBHU1RfSU5GTygiQ291bGQgbm90IGZpbmQgZGlzY3JldCBoZWlnaHQg
YW5kIHdpZHRoIHZhbHVlcyBpbiAlIiBHU1RfUFRSX0ZPUk1BVCwgc3RyKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJW
aWRlb0NhcHR1cmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dz
dHJlYW1lci9HU3RyZWFtZXJWaWRlb0NhcHR1cmVyLmNwcAppbmRleCBmOTk3NzUyNDIzMTIyYjQ5
ZTI1NmIxMjVmZTZhYjYxYmMxYTQ1NzYzLi4wMzVmNWNiZTU1ODVhMTNkNDExOWM1N2MzOTFjYTMx
YjUyNGNkMzIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9nc3RyZWFtZXIvR1N0cmVhbWVyVmlkZW9DYXB0dXJlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclZpZGVvQ2FwdHVyZXIu
Y3BwCkBAIC02OCw3ICs2OCwxNiBAQCBHc3RFbGVtZW50KiBHU3RyZWFtZXJWaWRlb0NhcHR1cmVy
OjpjcmVhdGVTb3VyY2UoKQogR3N0RWxlbWVudCogR1N0cmVhbWVyVmlkZW9DYXB0dXJlcjo6Y3Jl
YXRlQ29udmVydGVyKCkKIHsKICAgICAvLyBodHRwczovL2dpdGxhYi5mcmVlZGVza3RvcC5vcmcv
Z3N0cmVhbWVyL2dzdC1wbHVnaW5zLWJhc2UvaXNzdWVzLzk3I25vdGVfNTY1NzUKLSAgICByZXR1
cm4gbWFrZUdTdHJlYW1lckJpbigidmlkZW9zY2FsZSAhIHZpZGVvY29udmVydCAhIHZpZGVvcmF0
ZSBkcm9wLW9ubHk9MSBhdmVyYWdlLXBlcmlvZD0xIiwgdHJ1ZSk7CisgICAgYXV0byBiaW4gPSBt
YWtlR1N0cmVhbWVyQmluKCJjYXBzZmlsdGVyIGNhcHM9XCJ2aWRlby94LXJhd1wiIG5hbWU9bWlt
ZXR5cGUtZmlsdGVyICEgZGVjb2RlYmluMyAhIHZpZGVvc2NhbGUgISB2aWRlb2NvbnZlcnQgISB2
aWRlb3JhdGUgZHJvcC1vbmx5PTEgYXZlcmFnZS1wZXJpb2Q9MSBuYW1lPXZpZGVvcmF0ZSIsIGZh
bHNlKTsKKworICAgIG1fdmlkZW9TcmNNSU1FVHlwZUZpbHRlciA9IGFkb3B0R1JlZihnc3RfYmlu
X2dldF9ieV9uYW1lKEdTVF9CSU4oYmluKSwgIm1pbWV0eXBlLWZpbHRlciIpKTsKKyAgICBhdXRv
IHZpZGVvcmF0ZSA9IGFkb3B0R1JlZihnc3RfYmluX2dldF9ieV9uYW1lKEdTVF9CSU4oYmluKSwg
InZpZGVvcmF0ZSIpKTsKKworICAgIFJFTEVBU0VfQVNTRVJUKGdzdF9lbGVtZW50X2FkZF9wYWQo
YmluLCBnc3RfZ2hvc3RfcGFkX25ldygic2luayIsIEdTVF9QQUQobV92aWRlb1NyY01JTUVUeXBl
RmlsdGVyLT5zaW5rcGFkcy0+ZGF0YSkpKSk7CisgICAgUkVMRUFTRV9BU1NFUlQoZ3N0X2VsZW1l
bnRfYWRkX3BhZChiaW4sIGdzdF9naG9zdF9wYWRfbmV3KCJzcmMiLCBHU1RfUEFEKHZpZGVvcmF0
ZS0+c3JjcGFkcy0+ZGF0YSkpKSk7CisKKyAgICBhZGp1c3RWaWRlb1NyY01JTUVUeXBlKCk7Cisg
ICAgcmV0dXJuIGJpbjsKIH0KIAogR3N0VmlkZW9JbmZvIEdTdHJlYW1lclZpZGVvQ2FwdHVyZXI6
OmdldEJlc3RGb3JtYXQoKQpAQCAtMTAxLDYgKzExMCw4IEBAIGJvb2wgR1N0cmVhbWVyVmlkZW9D
YXB0dXJlcjo6c2V0U2l6ZShpbnQgd2lkdGgsIGludCBoZWlnaHQpCiAgICAgbV9jYXBzID0gYWRv
cHRHUmVmKGdzdF9jYXBzX2NvcHkobV9jYXBzLmdldCgpKSk7CiAgICAgZ3N0X2NhcHNfc2V0X3Np
bXBsZShtX2NhcHMuZ2V0KCksICJ3aWR0aCIsIEdfVFlQRV9JTlQsIHdpZHRoLCAiaGVpZ2h0Iiwg
R19UWVBFX0lOVCwgaGVpZ2h0LCBudWxscHRyKTsKIAorICAgIGFkanVzdFZpZGVvU3JjTUlNRVR5
cGUoKTsKKwogICAgIGlmICghbV9jYXBzZmlsdGVyKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
QEAgLTEzMyw2ICsxNDQsOCBAQCBib29sIEdTdHJlYW1lclZpZGVvQ2FwdHVyZXI6OnNldEZyYW1l
UmF0ZShkb3VibGUgZnJhbWVSYXRlKQogICAgIG1fY2FwcyA9IGFkb3B0R1JlZihnc3RfY2Fwc19j
b3B5KG1fY2Fwcy5nZXQoKSkpOwogICAgIGdzdF9jYXBzX3NldF9zaW1wbGUobV9jYXBzLmdldCgp
LCAiZnJhbWVyYXRlIiwgR1NUX1RZUEVfRlJBQ1RJT04sIG51bWVyYXRvciwgZGVub21pbmF0b3Is
IG51bGxwdHIpOwogCisgICAgYWRqdXN0VmlkZW9TcmNNSU1FVHlwZSgpOworCiAgICAgaWYgKCFt
X2NhcHNmaWx0ZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtMTQyLDYgKzE1NSwxNjAg
QEAgYm9vbCBHU3RyZWFtZXJWaWRlb0NhcHR1cmVyOjpzZXRGcmFtZVJhdGUoZG91YmxlIGZyYW1l
UmF0ZSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorc3RhdGljIHN0ZDo6b3B0aW9uYWw8aW50PiBn
ZXRNYXhJbnRWYWx1ZUZyb21TdHJ1Y3R1cmUoY29uc3QgR3N0U3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IGNvbnN0IGNoYXIqIGZpZWxkTmFtZSkKK3sKKyAgICBjb25zdCBHVmFsdWUqIHZhbHVlID0gZ3N0
X3N0cnVjdHVyZV9nZXRfdmFsdWUoc3RydWN0dXJlLCBmaWVsZE5hbWUpOworICAgIGlmICghdmFs
dWUpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBpbnQgbWF4SW50ID0gLUdf
TUFYSU5UOworICAgIGlmIChHX1ZBTFVFX0hPTERTX0lOVCh2YWx1ZSkpCisgICAgICAgIG1heElu
dCA9IGdfdmFsdWVfZ2V0X2ludCh2YWx1ZSk7CisgICAgZWxzZSBpZiAoR1NUX1ZBTFVFX0hPTERT
X0lOVF9SQU5HRSh2YWx1ZSkpCisgICAgICAgIG1heEludCA9IGdzdF92YWx1ZV9nZXRfaW50X3Jh
bmdlX21heCh2YWx1ZSk7CisgICAgZWxzZSBpZiAoR1NUX1ZBTFVFX0hPTERTX0FSUkFZKHZhbHVl
KSkgeworICAgICAgICBjb25zdCBndWludCBzaXplID0gZ3N0X3ZhbHVlX2FycmF5X2dldF9zaXpl
KHZhbHVlKTsKKyAgICAgICAgZm9yIChndWludCBpID0gMDsgaSA8IHNpemU7ICsraSkgeworICAg
ICAgICAgICAgY29uc3QgR1ZhbHVlKiBpdGVtID0gZ3N0X3ZhbHVlX2FycmF5X2dldF92YWx1ZSh2
YWx1ZSwgaSk7CisgICAgICAgICAgICBpZiAoR19WQUxVRV9IT0xEU19JTlQoaXRlbSkpIHsKKyAg
ICAgICAgICAgICAgICBpbnQgdmFsID0gZ192YWx1ZV9nZXRfaW50KGl0ZW0pOworICAgICAgICAg
ICAgICAgIGlmICh2YWwgPiBtYXhJbnQpCisgICAgICAgICAgICAgICAgICAgIG1heEludCA9IHZh
bDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0gZWxzZSBpZiAoR1NUX1ZBTFVFX0hP
TERTX0xJU1QodmFsdWUpKSB7CisgICAgICAgIGNvbnN0IGd1aW50IHNpemUgPSBnc3RfdmFsdWVf
bGlzdF9nZXRfc2l6ZSh2YWx1ZSk7CisgICAgICAgIGZvciAoZ3VpbnQgaSA9IDA7IGkgPCBzaXpl
OyArK2kpIHsKKyAgICAgICAgICAgIGNvbnN0IEdWYWx1ZSogaXRlbSA9IGdzdF92YWx1ZV9saXN0
X2dldF92YWx1ZSh2YWx1ZSwgaSk7CisgICAgICAgICAgICBpZiAoR19WQUxVRV9IT0xEU19JTlQo
aXRlbSkpIHsKKyAgICAgICAgICAgICAgICBpbnQgdmFsID0gZ192YWx1ZV9nZXRfaW50KGl0ZW0p
OworICAgICAgICAgICAgICAgIGlmICh2YWwgPiBtYXhJbnQpCisgICAgICAgICAgICAgICAgICAg
IG1heEludCA9IHZhbDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHJl
dHVybiAobWF4SW50ID4gLUdfTUFYSU5UKSA/IHN0ZDo6bWFrZV9vcHRpb25hbDw+KG1heEludCkg
OiBzdGQ6Om51bGxvcHQ7Cit9CisKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gZ2V0TWF4
RnJhY3Rpb25WYWx1ZUZyb21TdHJ1Y3R1cmUoY29uc3QgR3N0U3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IGNvbnN0IGNoYXIqIGZpZWxkTmFtZSkKK3sKKyAgICBjb25zdCBHVmFsdWUqIHZhbHVlID0gZ3N0
X3N0cnVjdHVyZV9nZXRfdmFsdWUoc3RydWN0dXJlLCBmaWVsZE5hbWUpOworICAgIGlmICghdmFs
dWUpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBkb3VibGUgbWF4RnJhY3Rp
b24gPSAtR19NQVhET1VCTEU7CisgICAgaWYgKEdTVF9WQUxVRV9IT0xEU19GUkFDVElPTih2YWx1
ZSkpIHsKKyAgICAgICAgZ3N0X3V0aWxfZnJhY3Rpb25fdG9fZG91YmxlKGdzdF92YWx1ZV9nZXRf
ZnJhY3Rpb25fbnVtZXJhdG9yKHZhbHVlKSwKKyAgICAgICAgICAgIGdzdF92YWx1ZV9nZXRfZnJh
Y3Rpb25fZGVub21pbmF0b3IodmFsdWUpLCAmbWF4RnJhY3Rpb24pOworICAgIH0gZWxzZSBpZiAo
R1NUX1ZBTFVFX0hPTERTX0ZSQUNUSU9OX1JBTkdFKHZhbHVlKSkgeworICAgICAgICBjb25zdCBH
VmFsdWUqIGZyYWN0aW9uVmFsdWUgPSBnc3RfdmFsdWVfZ2V0X2ZyYWN0aW9uX3JhbmdlX21heCh2
YWx1ZSk7CisgICAgICAgIGdzdF91dGlsX2ZyYWN0aW9uX3RvX2RvdWJsZShnc3RfdmFsdWVfZ2V0
X2ZyYWN0aW9uX251bWVyYXRvcihmcmFjdGlvblZhbHVlKSwKKyAgICAgICAgICAgIGdzdF92YWx1
ZV9nZXRfZnJhY3Rpb25fZGVub21pbmF0b3IoZnJhY3Rpb25WYWx1ZSksICZtYXhGcmFjdGlvbik7
CisgICAgfSBlbHNlIGlmIChHU1RfVkFMVUVfSE9MRFNfQVJSQVkodmFsdWUpKSB7CisgICAgICAg
IGNvbnN0IGd1aW50IHNpemUgPSBnc3RfdmFsdWVfYXJyYXlfZ2V0X3NpemUodmFsdWUpOworICAg
ICAgICBmb3IgKGd1aW50IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CisgICAgICAgICAgICBjb25z
dCBHVmFsdWUqIGl0ZW0gPSBnc3RfdmFsdWVfYXJyYXlfZ2V0X3ZhbHVlKHZhbHVlLCBpKTsKKyAg
ICAgICAgICAgIGlmIChHU1RfVkFMVUVfSE9MRFNfRlJBQ1RJT04oaXRlbSkpIHsKKyAgICAgICAg
ICAgICAgICBkb3VibGUgdmFsID0gLUdfTUFYRE9VQkxFOworICAgICAgICAgICAgICAgIGdzdF91
dGlsX2ZyYWN0aW9uX3RvX2RvdWJsZShnc3RfdmFsdWVfZ2V0X2ZyYWN0aW9uX251bWVyYXRvcihp
dGVtKSwKKyAgICAgICAgICAgICAgICAgICAgZ3N0X3ZhbHVlX2dldF9mcmFjdGlvbl9kZW5vbWlu
YXRvcihpdGVtKSwgJnZhbCk7CisgICAgICAgICAgICAgICAgaWYgKHZhbCA+IG1heEZyYWN0aW9u
KQorICAgICAgICAgICAgICAgICAgICBtYXhGcmFjdGlvbiA9IHZhbDsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgIH0gZWxzZSBpZiAoR1NUX1ZBTFVFX0hPTERTX0xJU1QodmFsdWUpKSB7
CisgICAgICAgIGNvbnN0IGd1aW50IHNpemUgPSBnc3RfdmFsdWVfbGlzdF9nZXRfc2l6ZSh2YWx1
ZSk7CisgICAgICAgIGZvciAoZ3VpbnQgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKKyAgICAgICAg
ICAgIGNvbnN0IEdWYWx1ZSogaXRlbSA9IGdzdF92YWx1ZV9saXN0X2dldF92YWx1ZSh2YWx1ZSwg
aSk7CisgICAgICAgICAgICBpZiAoR1NUX1ZBTFVFX0hPTERTX0ZSQUNUSU9OKGl0ZW0pKSB7Cisg
ICAgICAgICAgICAgICAgZG91YmxlIHZhbCA9IC1HX01BWERPVUJMRTsKKyAgICAgICAgICAgICAg
ICBnc3RfdXRpbF9mcmFjdGlvbl90b19kb3VibGUoZ3N0X3ZhbHVlX2dldF9mcmFjdGlvbl9udW1l
cmF0b3IoaXRlbSksCisgICAgICAgICAgICAgICAgICAgIGdzdF92YWx1ZV9nZXRfZnJhY3Rpb25f
ZGVub21pbmF0b3IoaXRlbSksICZ2YWwpOworICAgICAgICAgICAgICAgIGlmICh2YWwgPiBtYXhG
cmFjdGlvbikKKyAgICAgICAgICAgICAgICAgICAgbWF4RnJhY3Rpb24gPSB2YWw7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gKG1heEZyYWN0aW9uID4gLUdf
TUFYRE9VQkxFKSA/IHN0ZDo6bWFrZV9vcHRpb25hbDw+KG1heEZyYWN0aW9uKSA6IHN0ZDo6bnVs
bG9wdDsKK30KKwordm9pZCBHU3RyZWFtZXJWaWRlb0NhcHR1cmVyOjphZGp1c3RWaWRlb1NyY01J
TUVUeXBlKCkKK3sKKyAgICBpZiAoIW1fdmlkZW9TcmNNSU1FVHlwZUZpbHRlcikKKyAgICAgICAg
cmV0dXJuOworCisgICAgc3RydWN0IE1pbWVUeXBlU2VsZWN0b3IgeworICAgICAgICBjb25zdCBj
aGFyKiBtaW1lVHlwZSA9ICJ2aWRlby94LXJhdyI7CisKKyAgICAgICAgaW50IG1heFdpZHRoID0g
MDsKKyAgICAgICAgaW50IG1heEhlaWdodCA9IDA7CisgICAgICAgIGRvdWJsZSBtYXhGcmFtZVJh
dGUgPSAwOworCisgICAgICAgIHN0cnVjdCB7CisgICAgICAgICAgICBpbnQgd2lkdGggPSAwOwor
ICAgICAgICAgICAgaW50IGhlaWdodCA9IDA7CisgICAgICAgICAgICBkb3VibGUgZnJhbWVSYXRl
ID0gMDsKKyAgICAgICAgfSBzdG9wQ29uZGl0aW9uOworICAgIH0gc2VsZWN0b3I7CisKKyAgICAv
LyBJZiBub3RoaW5nIGhhcyBiZWVuIHNwZWNpZmllZCBieSB0aGUgdXNlciwgd2UgdGFyZ2V0IGF0
IGxlYXN0IGFuIGFyYml0cmFyeSByZXNvbHV0aW9uIG9mIDE5MjB4MTA4MEAyNGZwcy4KKyAgICBj
b25zdCBHc3RTdHJ1Y3R1cmUqIGNhcHNTdHJ1Y3QgPSBnc3RfY2Fwc19nZXRfc3RydWN0dXJlKG1f
Y2Fwcy5nZXQoKSwgMCk7CisgICAgaWYgKCFnc3Rfc3RydWN0dXJlX2dldF9pbnQoY2Fwc1N0cnVj
dCwgIndpZHRoIiwgJnNlbGVjdG9yLnN0b3BDb25kaXRpb24ud2lkdGgpKQorICAgICAgICBzZWxl
Y3Rvci5zdG9wQ29uZGl0aW9uLndpZHRoID0gMTkyMDsKKworICAgIGlmICghZ3N0X3N0cnVjdHVy
ZV9nZXRfaW50KGNhcHNTdHJ1Y3QsICJoZWlnaHQiLCAmc2VsZWN0b3Iuc3RvcENvbmRpdGlvbi5o
ZWlnaHQpKQorICAgICAgICBzZWxlY3Rvci5zdG9wQ29uZGl0aW9uLmhlaWdodCA9IDEwODA7CisK
KyAgICBpbnQgbnVtZXJhdG9yID0gMDsKKyAgICBpbnQgZGVub21pbmF0b3IgPSAxOworICAgIGlm
IChnc3Rfc3RydWN0dXJlX2dldF9mcmFjdGlvbihjYXBzU3RydWN0LCAiZnJhbWVyYXRlIiwgJm51
bWVyYXRvciwgJmRlbm9taW5hdG9yKSkKKyAgICAgICAgZ3N0X3V0aWxfZnJhY3Rpb25fdG9fZG91
YmxlKG51bWVyYXRvciwgZGVub21pbmF0b3IsICZzZWxlY3Rvci5zdG9wQ29uZGl0aW9uLmZyYW1l
UmF0ZSk7CisgICAgZWxzZQorICAgICAgICBzZWxlY3Rvci5zdG9wQ29uZGl0aW9uLmZyYW1lUmF0
ZSA9IDI0OworCisgICAgR1NUX0RFQlVHX09CSkVDVChtX3BpcGVsaW5lLmdldCgpLCAiU2VhcmNo
aW5nIGJlc3QgdmlkZW8gY2FwdHVyZSBkZXZpY2UgbWltZSB0eXBlIGZvciByZXNvbHV0aW9uICVk
eCVkQCUuM2YiLAorICAgICAgICBzZWxlY3Rvci5zdG9wQ29uZGl0aW9uLndpZHRoLCBzZWxlY3Rv
ci5zdG9wQ29uZGl0aW9uLmhlaWdodCwgc2VsZWN0b3Iuc3RvcENvbmRpdGlvbi5mcmFtZVJhdGUp
OworCisgICAgYXV0byBkZXZpY2VDYXBzID0gYWRvcHRHUmVmKGdzdF9kZXZpY2VfZ2V0X2NhcHMo
bV9kZXZpY2UuZ2V0KCkpKTsKKyAgICBnc3RfY2Fwc19mb3JlYWNoKGRldmljZUNhcHMuZ2V0KCks
CisgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8R3N0Q2Fwc0ZvcmVhY2hGdW5jPigrW10oR3N0Q2Fw
c0ZlYXR1cmVzKiwgR3N0U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIE1pbWVUeXBlU2VsZWN0b3IqIHNl
bGVjdG9yKSAtPiBnYm9vbGVhbiB7CisgICAgICAgICAgICBhdXRvIHdpZHRoID0gZ2V0TWF4SW50
VmFsdWVGcm9tU3RydWN0dXJlKHN0cnVjdHVyZSwgIndpZHRoIik7CisgICAgICAgICAgICBpZiAo
IXdpZHRoLmhhc192YWx1ZSgpKQorICAgICAgICAgICAgICAgIHJldHVybiBUUlVFOworCisgICAg
ICAgICAgICBhdXRvIGhlaWdodCA9IGdldE1heEludFZhbHVlRnJvbVN0cnVjdHVyZShzdHJ1Y3R1
cmUsICJoZWlnaHQiKTsKKyAgICAgICAgICAgIGlmICghaGVpZ2h0Lmhhc192YWx1ZSgpKQorICAg
ICAgICAgICAgICAgIHJldHVybiBUUlVFOworCisgICAgICAgICAgICBhdXRvIGZyYW1lUmF0ZSA9
IGdldE1heEZyYWN0aW9uVmFsdWVGcm9tU3RydWN0dXJlKHN0cnVjdHVyZSwgImZyYW1lcmF0ZSIp
OworICAgICAgICAgICAgaWYgKCFmcmFtZVJhdGUuaGFzX3ZhbHVlKCkpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIFRSVUU7CisKKyAgICAgICAgICAgIGlmICgqd2lkdGggPj0gc2VsZWN0b3ItPnN0
b3BDb25kaXRpb24ud2lkdGggJiYgKmhlaWdodCA+PSBzZWxlY3Rvci0+c3RvcENvbmRpdGlvbi5o
ZWlnaHQKKyAgICAgICAgICAgICAgICAmJiAqZnJhbWVSYXRlID49IHNlbGVjdG9yLT5zdG9wQ29u
ZGl0aW9uLmZyYW1lUmF0ZSkgeworICAgICAgICAgICAgICAgIHNlbGVjdG9yLT5taW1lVHlwZSA9
IGdzdF9zdHJ1Y3R1cmVfZ2V0X25hbWUoc3RydWN0dXJlKTsKKyAgICAgICAgICAgICAgICByZXR1
cm4gRkFMU0U7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICgqd2lkdGggPj0gc2Vs
ZWN0b3ItPm1heFdpZHRoICYmICpoZWlnaHQgPj0gc2VsZWN0b3ItPm1heEhlaWdodCAmJiAqZnJh
bWVSYXRlID49IHNlbGVjdG9yLT5tYXhGcmFtZVJhdGUpIHsKKyAgICAgICAgICAgICAgICBzZWxl
Y3Rvci0+bWF4V2lkdGggPSAqd2lkdGg7CisgICAgICAgICAgICAgICAgc2VsZWN0b3ItPm1heEhl
aWdodCA9ICpoZWlnaHQ7CisgICAgICAgICAgICAgICAgc2VsZWN0b3ItPm1heEZyYW1lUmF0ZSA9
ICpmcmFtZVJhdGU7CisgICAgICAgICAgICAgICAgc2VsZWN0b3ItPm1pbWVUeXBlID0gZ3N0X3N0
cnVjdHVyZV9nZXRfbmFtZShzdHJ1Y3R1cmUpOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICByZXR1cm4gVFJVRTsKKyAgICAgICAgfSksCisgICAgICAgICZzZWxlY3Rvcik7CisKKyAgICBH
U1RfSU5GT19PQkpFQ1QobV9waXBlbGluZS5nZXQoKSwgIlNldHRpbmcgdmlkZW8gY2FwdHVyZSBk
ZXZpY2UgbWltZSB0eXBlIHRvICVzIiwgc2VsZWN0b3IubWltZVR5cGUpOworCisgICAgYXV0byBj
YXBzID0gYWRvcHRHUmVmKGdzdF9jYXBzX25ld19lbXB0eV9zaW1wbGUoc2VsZWN0b3IubWltZVR5
cGUpKTsKKyAgICBnX29iamVjdF9zZXQobV92aWRlb1NyY01JTUVUeXBlRmlsdGVyLmdldCgpLCAi
Y2FwcyIsIGNhcHMuZ2V0KCksIG51bGxwdHIpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKICNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBVU0UoR1NUUkVBTUVSKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dT
dHJlYW1lclZpZGVvQ2FwdHVyZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJWaWRlb0NhcHR1cmVyLmgKaW5kZXggZmNlNmYxODdhODU2
NTk3OTg4MzVhNmU4NzIwY2EzODEyM2QxYmIzYy4uYzUzZmI1NWFhNjViNTZlNmEyMmUzMmU4MzVl
MmZlNGNhNDZhNGJkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclZpZGVvQ2FwdHVyZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyVmlkZW9DYXB0dXJl
ci5oCkBAIC01MCw2ICs1MCw4IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBzdGQ6Om9wdGlv
bmFsPE5vZGVBbmRGRD4gbV9ub2RlQW5kRmQ7CisgICAgR1JlZlB0cjxHc3RFbGVtZW50PiBtX3Zp
ZGVvU3JjTUlNRVR5cGVGaWx0ZXI7CisgICAgdm9pZCBhZGp1c3RWaWRlb1NyY01JTUVUeXBlKCk7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>