<?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>228941</bug_id>
          
          <creation_ts>2021-08-09 19:46:21 -0700</creation_ts>
          <short_desc>REGRESSION(r280732) [GStreamer] fast/mediastream/getDisplayMedia-max-constraints1.html and other are failing</short_desc>
          <delta_ts>2021-09-03 07:42:14 -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 Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=228759</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=210926</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=229343</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=229868</see_also>
          <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="Lauro Moura">lmoura</reporter>
          <assigned_to name="Philippe Normand">pnormand</assigned_to>
          <cc>bugs-noreply</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>hta</cc>
    
    <cc>jer.noble</cc>
    
    <cc>philipj</cc>
    
    <cc>pnormand</cc>
    
    <cc>sergio</cc>
    
    <cc>tommyw</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1783080</commentid>
    <comment_count>0</comment_count>
    <who name="Lauro Moura">lmoura</who>
    <bug_when>2021-08-09 19:46:21 -0700</bug_when>
    <thetext>fast/mediastream/getDisplayMedia-max-constraints1.html
fast/mediastream/getDisplayMedia-max-constraints2.html

After r280732 (240319@main) (partial revert from r279940)

Both tests fail/time out while waiting for the expectedWidth, which always comes unadjusted for the aspect ratio. e.g. the first test expects 281 for height but only 500 is arriving.

While inspecting the mockvideosource code, indeed the source has its size changed to the expected value, but this doesn&apos;t seems to be reflected in the track settings attribute.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1784458</commentid>
    <comment_count>1</comment_count>
      <attachid>435586</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2021-08-16 04:22:58 -0700</bug_when>
    <thetext>Created attachment 435586
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1784472</commentid>
    <comment_count>2</comment_count>
      <attachid>435586</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-08-16 05:49:46 -0700</bug_when>
    <thetext>Comment on attachment 435586
Patch

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

&gt; Source/WebCore/ChangeLog:9
&gt; +        GStreamer ports differ in that regard, in their mock source implementations.

Diverting here is probably not very healthy, though it is true that cocoa port is doing capture out of process and GStreamer is probably not.
Is it only the mock sources that differ or is it also the case for actual sources?
If the issue is with mock, can we realign mocks?

&gt; Source/WebCore/platform/mediastream/RealtimeVideoSource.cpp:119
&gt;      if (size.isEmpty())

Do you know why size is not empty here for those tests in GStreamer but is empty for Cocoa port?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1784474</commentid>
    <comment_count>3</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2021-08-16 06:29:03 -0700</bug_when>
    <thetext>In GStreamer ports we use our mock video source for mock&apos;ing display capture, while the mac ports use a custom mock display capture source, MockDisplayCapturer (inherits from DisplayCaptureSourceCocoa::Capturer.

For us the size is not empty because it&apos;s set from the settings, whereas your Capturer seems to delay that to until the first frame has been generated. I haven&apos;t verified this though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1784479</commentid>
    <comment_count>4</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-08-16 06:40:15 -0700</bug_when>
    <thetext>&gt; For us the size is not empty because it&apos;s set from the settings

Where is it set in the source code? Does it mirror what the GStreamer capture source is doing?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1784806</commentid>
    <comment_count>5</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2021-08-17 07:17:30 -0700</bug_when>
    <thetext>This code in the MockRealtimeVideoSource ctor:

    if (mockDisplay()) {
        auto&amp; properties = WTF::get&lt;MockDisplayProperties&gt;(m_device.properties);
        setIntrinsicSize(properties.defaultSize);
        setSize(properties.defaultSize);
        m_fillColor = properties.fillColor;
        return;
    }</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1784807</commentid>
    <comment_count>6</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2021-08-17 07:35:17 -0700</bug_when>
    <thetext>Disabling that setSize call gets me passing tests :P</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1784809</commentid>
    <comment_count>7</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2021-08-17 07:51:03 -0700</bug_when>
    <thetext>(In reply to Philippe Normand from comment #6)
&gt; Disabling that setSize call gets me passing tests :P

Hum no, this needs more debugging...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1785425</commentid>
    <comment_count>8</comment_count>
      <attachid>435857</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2021-08-19 05:00:59 -0700</bug_when>
    <thetext>Created attachment 435857
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1785439</commentid>
    <comment_count>9</comment_count>
      <attachid>435857</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-08-19 06:31:56 -0700</bug_when>
    <thetext>Comment on attachment 435857
Patch

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

&gt; Source/WebCore/platform/mediastream/gstreamer/MockRealtimeVideoSourceGStreamer.h:31
&gt;  class MockRealtimeVideoSourceGStreamer final : public MockRealtimeVideoSource {

It seems MockRealtimeVideoSourceGStreamer is only used for display. Should its name be updated? Should it be merged with MockDisplayCaptureSourceGStreamer at some point?

&gt; Source/WebCore/platform/mediastream/gstreamer/MockRealtimeVideoSourceGStreamer.h:47
&gt; +    MockDisplayCaptureSourceGStreamer(RefPtr&lt;MockRealtimeVideoSourceGStreamer&gt;&amp;&amp; source, CaptureDevice::DeviceType type)

Can it be made private? Can we pass a Ref&lt;&gt;&amp;&amp; source.

&gt; Source/WebCore/platform/mediastream/gstreamer/MockRealtimeVideoSourceGStreamer.h:67
&gt; +    RefPtr&lt;MockRealtimeVideoSourceGStreamer&gt; m_source;

Can we make it a Ref&lt;&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1785440</commentid>
    <comment_count>10</comment_count>
      <attachid>435857</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2021-08-19 07:07:05 -0700</bug_when>
    <thetext>Comment on attachment 435857
Patch

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

&gt;&gt; Source/WebCore/platform/mediastream/gstreamer/MockRealtimeVideoSourceGStreamer.h:31
&gt;&gt;  class MockRealtimeVideoSourceGStreamer final : public MockRealtimeVideoSource {
&gt; 
&gt; It seems MockRealtimeVideoSourceGStreamer is only used for display. Should its name be updated? Should it be merged with MockDisplayCaptureSourceGStreamer at some point?

It&apos;s used for mocking cameras gUM as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1785769</commentid>
    <comment_count>11</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2021-08-20 03:17:12 -0700</bug_when>
    <thetext>Committed r281305 (240725@main): &lt;https://commits.webkit.org/240725@main&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1785770</commentid>
    <comment_count>12</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-08-20 03:18:20 -0700</bug_when>
    <thetext>&lt;rdar://problem/82163904&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>435586</attachid>
            <date>2021-08-16 04:22:58 -0700</date>
            <delta_ts>2021-08-19 05:00:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228941-20210816042257.patch</filename>
            <type>text/plain</type>
            <size>3524</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxMDc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzM3YjVkZTA1YmM1YTRk
OTRjYzEyNzhlZTQ1Yjk2OWNmODU4NmViYi4uY2M1ODE2NTVjNDMzMjZlNDE3NDVlMGMzZjgwOGEx
OTNkNTU0ZDdlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIxLTA4LTE2ICBQaGls
aXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KKworICAgICAgICBSRUdSRVNTSU9O
KHIyODA3MzIpIFtHU3RyZWFtZXJdIGZhc3QvbWVkaWFzdHJlYW0vZ2V0RGlzcGxheU1lZGlhLW1h
eC1jb25zdHJhaW50czEuaHRtbCBhbmQgb3RoZXIgYXJlIGZhaWxpbmcKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyODk0MQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlc3RvcmUgdGhlIHNpemUgaGFuZGxp
bmcgZm9yIEdTdHJlYW1lciBwb3J0cyBpbiBSZWFsdGltZVZpZGVvU291cmNlLiBUaGUgQ29jb2Eg
YW5kCisgICAgICAgIEdTdHJlYW1lciBwb3J0cyBkaWZmZXIgaW4gdGhhdCByZWdhcmQsIGluIHRo
ZWlyIG1vY2sgc291cmNlIGltcGxlbWVudGF0aW9ucy4KKworICAgICAgICAqIHBsYXRmb3JtL21l
ZGlhc3RyZWFtL1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVh
bHRpbWVWaWRlb1NvdXJjZTo6c291cmNlU2V0dGluZ3NDaGFuZ2VkKToKKwogMjAyMS0wOC0xNiAg
Q2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgTW92
ZSBXZWJNQXVkaW9VdGlsaXRpZXNDb2NvYS5oIGZyb20gSGVhZGVycy5jbWFrZSB0byBQbGF0Zm9y
bU1hYy5jbWFrZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9SZWFsdGltZVZpZGVvU291cmNlLmNwcAppbmRleCBmNjc3NDAwMTQxNmQ2NjQzNWIx
OTkwZWZlZjNlNmZmNjE1MGNlZWVmLi5hNjhhYzEzNjI5YzIwNmJhODY5NWQ2NTMzZmM5NTQzY2M5
Y2NmOWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9S
ZWFsdGltZVZpZGVvU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9SZWFsdGltZVZpZGVvU291cmNlLmNwcApAQCAtMTEyLDkgKzExMiwxMyBAQCB2b2lk
IFJlYWx0aW1lVmlkZW9Tb3VyY2U6OnNvdXJjZU11dGVkQ2hhbmdlZCgpCiB2b2lkIFJlYWx0aW1l
VmlkZW9Tb3VyY2U6OnNvdXJjZVNldHRpbmdzQ2hhbmdlZCgpCiB7CiAgICAgYXV0byByb3RhdGlv
biA9IG1fc291cmNlLT5zYW1wbGVSb3RhdGlvbigpOworI2lmIFVTRShHU1RSRUFNRVIpCisgICAg
YXV0byBzaXplID0gbV9zb3VyY2UtPnNpemUoKTsKKyNlbHNlCiAgICAgYXV0byBzaXplID0gdGhp
cy0+c2l6ZSgpOwogICAgIGlmIChzaXplLmlzRW1wdHkoKSkKICAgICAgICAgc2l6ZSA9IG1fc291
cmNlLT5zaXplKCk7CisjZW5kaWYKIAogICAgIGlmIChyb3RhdGlvbiA9PSBNZWRpYVNhbXBsZTo6
VmlkZW9Sb3RhdGlvbjo6TGVmdCB8fCByb3RhdGlvbiA9PSBNZWRpYVNhbXBsZTo6VmlkZW9Sb3Rh
dGlvbjo6UmlnaHQpCiAgICAgICAgIHNpemUgPSBzaXplLnRyYW5zcG9zZWRTaXplKCk7CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5k
ZXggZDg3ZDQwZTAwZjUyOTA4NWEyMTAxYmZhMDNhOTQ0NTgwYjQ1NDBiOC4uYzEwMTQwNmI4ZmVj
MDg3NzhiOThjMDQ3NmMzZDU5YjFmYzYxMTNlYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDIx
LTA4LTE2ICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KKworICAgICAg
ICBSRUdSRVNTSU9OKHIyODA3MzIpIFtHU3RyZWFtZXJdIGZhc3QvbWVkaWFzdHJlYW0vZ2V0RGlz
cGxheU1lZGlhLW1heC1jb25zdHJhaW50czEuaHRtbCBhbmQgb3RoZXIgYXJlIGZhaWxpbmcKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyODk0MQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0v
Z2xpYi9UZXN0RXhwZWN0YXRpb25zOiBVbmZsYWcgbm93LXBhc3NpbmcgdGVzdHMuCisKIDIwMjEt
MDgtMTUgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAg
W2lPUyAxNV0gZWRpdGluZy9zZWxlY3Rpb24vaW9zL3NlbGVjdC1hbGwtaW4tcmVhZG9ubHktaW5w
dXQtZG9lcy1ub3Qtb3ZlcmZsb3cuaHRtbCBpcyBhIGZsYWt5IHRpbWVvdXQKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL2dsaWIvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2dsaWIvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBjMDdiMDQ0ZjQ0YTFhOGZhYjIy
NTkyMzA1NjUzMWM4OTE1N2MwNjZhLi40NzY1MGZhNzU2NTY1MWVjYWY0MzVmZmEyNTI1Y2VjY2Uw
ZjQ1NTAzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9nbGliL1Rlc3RFeHBlY3Rh
dGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ2xpYi9UZXN0RXhwZWN0YXRpb25zCkBA
IC02MjQsOSArNjI0LDYgQEAgd2Via2l0Lm9yZy9iLzIyNzY2MSBodHRwL3Rlc3RzL21lZGlhL2hs
cy9obHMtd2VidnR0LXNlZWstYmFja3dhcmRzLmh0bWwgWyBUaW1lb3UKIHdlYmtpdC5vcmcvYi8y
Mjc5MzQgbWVkaWEvbWVkaWEtc291cmNlL21lZGlhLXdlYm0tdm9yYmlzLXBhcnRpYWwuaHRtbCBb
IEZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzIyNzkzNCBtZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWEt
d2VibS1vcHVzLXBhcnRpYWwuaHRtbCBbIEZhaWx1cmUgXQogCi13ZWJraXQub3JnL2IvMjI4OTQx
IGZhc3QvbWVkaWFzdHJlYW0vZ2V0RGlzcGxheU1lZGlhLW1heC1jb25zdHJhaW50czEuaHRtbCBb
IFRpbWVvdXQgRmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjI4OTQxIGZhc3QvbWVkaWFzdHJlYW0v
Z2V0RGlzcGxheU1lZGlhLW1heC1jb25zdHJhaW50czIuaHRtbCBbIFRpbWVvdXQgRmFpbHVyZSBd
Ci0KICMvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAjIEVuZCBvZiBHU3RyZWFtZXIt
cmVsYXRlZCBidWdzCiAjLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>435857</attachid>
            <date>2021-08-19 05:00:59 -0700</date>
            <delta_ts>2021-08-19 06:31:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228941-20210819050057.patch</filename>
            <type>text/plain</type>
            <size>13598</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxMjI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2ZhMmJmNDA1MzJiNTFj
OTBhMWE3YmQyMzY3YWQzZTk1YTUyYWJmYS4uYjAwZDdiOWY1MzlmMDYwOTY3OGExYTYzMzY5Y2I5
NjljZTBmNWFjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDIxLTA4LTE5ICBQaGls
aXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KKworICAgICAgICBSRUdSRVNTSU9O
KHIyODA3MzIpIFtHU3RyZWFtZXJdIGZhc3QvbWVkaWFzdHJlYW0vZ2V0RGlzcGxheU1lZGlhLW1h
eC1jb25zdHJhaW50czEuaHRtbCBhbmQgb3RoZXIgYXJlIGZhaWxpbmcKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyODk0MQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBHU3RyZWFtZXIgbW9jayBkaXNw
bGF5IGNhcHR1cmUgc291cmNlIGlzIG5vdyB3cmFwcGVkIGluIGFub3RoZXIgUmVhbHRpbWVNZWRp
YVNvdXJjZSBpbgorICAgICAgICBvcmRlciB0byBhdm9pZCBhIHNwdXJpb3VzIHNldFNpemUoKSBj
YWxsIGZyb20gdGhlIFJlYWx0aW1lVmlkZW9Tb3VyY2UgY29uc3RydWN0b3IgdGhhdCB3b3VsZAor
ICAgICAgICB0aGVuIHByZXZlbnQgdGhlIG1vY2sgc291cmNlIHRvIGVuc3VyZSBpdHMgc2l6ZSBt
YXRjaGVzIHRoZSBpbnRyaW5zaWMgc2l6ZS4KKworICAgICAgICBGb3IgdGhlIG5vbi1tb2NrIGRp
c3BsYXkgY2FwdHVyZSBzb3VyY2UsIHdlIG5vdyBlbnN1cmUgdGhlIHNpemUgbWF0Y2hlcyB0aGUg
aW50cmluc2ljIHNpemUKKyAgICAgICAgd2hlbmV2ZXIgdGhlIGNhcHR1cmUgc2V0dGluZ3MgaGF2
ZSBjaGFuZ2VkLgorCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVWaWRl
b0NhcHR1cmVTb3VyY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFt
ZXIvR1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdT
dHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZTo6c2V0dGluZ3NEaWRDaGFuZ2UpOgorICAgICAgICAq
IHBsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZUdT
dHJlYW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrRGlzcGxheUNhcHR1cmVTb3VyY2VH
U3RyZWFtZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrRGlzcGxheUNhcHR1cmVT
b3VyY2VHU3RyZWFtZXI6OmNhcGFiaWxpdGllcyk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrRGlz
cGxheUNhcHR1cmVTb3VyY2VHU3RyZWFtZXI6OnNldHRpbmdzKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VHU3RyZWFtZXIu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVy
LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZVZpZGVvU291cmNlOjpnZW5lcmF0ZUZy
YW1lKToKKwogMjAyMS0wOC0xOSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAK
ICAgICAgICAgQWRkIHN1cHBvcnQgZm9yIFJUQ0R0bHNUcmFuc3BvcnQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lVmlkZW9DYXB0dXJlU291
cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZVZpZGVv
Q2FwdHVyZVNvdXJjZS5oCmluZGV4IDBhYjE1ZTdiODcxNTdkNDI5MzI4ODkyMmQ5ZjQ1OWFkODM3
OGM0YjMuLjdjMjBiNjFhZjc5NzIxZDI4NjM5ZTFkZWZjMWE1Y2NlMzE0MjRlMjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lVmlkZW9DYXB0
dXJlU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVh
bHRpbWVWaWRlb0NhcHR1cmVTb3VyY2UuaApAQCAtNTEsNiArNTEsOCBAQCBwdWJsaWM6CiAgICAg
ZG91YmxlIG9ic2VydmVkRnJhbWVSYXRlKCkgY29uc3QgeyByZXR1cm4gbV9vYnNlcnZlZEZyYW1l
UmF0ZTsgfQogICAgIFZlY3RvcjxWaWRlb1ByZXNldERhdGE+IHByZXNldHNEYXRhKCk7CiAKKyAg
ICB2b2lkIGVuc3VyZUludHJpbnNpY1NpemVNYWludGFpbnNBc3BlY3RSYXRpbygpOworCiBwcm90
ZWN0ZWQ6CiAgICAgUmVhbHRpbWVWaWRlb0NhcHR1cmVTb3VyY2UoU3RyaW5nJiYgbmFtZSwgU3Ry
aW5nJiYgaWQsIFN0cmluZyYmIGhhc2hTYWx0KTsKIApAQCAtNzMsOCArNzUsNiBAQCBwcm90ZWN0
ZWQ6CiAgICAgdm9pZCBkaXNwYXRjaE1lZGlhU2FtcGxlVG9PYnNlcnZlcnMoTWVkaWFTYW1wbGUm
KTsKICAgICBjb25zdCBWZWN0b3I8SW50U2l6ZT4mIHN0YW5kYXJkVmlkZW9TaXplcygpOwogCi0g
ICAgdm9pZCBlbnN1cmVJbnRyaW5zaWNTaXplTWFpbnRhaW5zQXNwZWN0UmF0aW8oKTsKLQogcHJp
dmF0ZToKICAgICBzdHJ1Y3QgQ2FwdHVyZVNpemVBbmRGcmFtZVJhdGUgewogICAgICAgICBSZWZQ
dHI8VmlkZW9QcmVzZXQ+IGVuY29kaW5nUHJlc2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclZpZGVvQ2FwdHVyZVNv
dXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIv
R1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlLmNwcAppbmRleCA0NTJjZWYyMjVlMGRkZWMwNDkz
NmViYTJiZjEwMjM2YmU5ZjM2MzE5Li43NDEyMGU5MWYxNDY1MzYyNDFkMzZjOGU3NjM5MzU1NTk1
Yzc2MzVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9n
c3RyZWFtZXIvR1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyVmlkZW9DYXB0dXJl
U291cmNlLmNwcApAQCAtMTUzLDggKzE1MywxMyBAQCBHU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3Vy
Y2U6On5HU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2UoKQogCiB2b2lkIEdTdHJlYW1lclZpZGVv
Q2FwdHVyZVNvdXJjZTo6c2V0dGluZ3NEaWRDaGFuZ2UoT3B0aW9uU2V0PFJlYWx0aW1lTWVkaWFT
b3VyY2VTZXR0aW5nczo6RmxhZz4gc2V0dGluZ3MpCiB7Ci0gICAgaWYgKHNldHRpbmdzLmNvbnRh
aW5zQW55KHsgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpGbGFnOjpXaWR0aCwgUmVhbHRp
bWVNZWRpYVNvdXJjZVNldHRpbmdzOjpGbGFnOjpIZWlnaHQgfSkpCisgICAgaWYgKHNldHRpbmdz
LmNvbnRhaW5zQW55KHsgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpGbGFnOjpXaWR0aCwg
UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpGbGFnOjpIZWlnaHQgfSkpIHsKKyAgICAgICAg
aWYgKG1fZGV2aWNlVHlwZSA9PSBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpXaW5kb3cgfHwg
bV9kZXZpY2VUeXBlID09IENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6OlNjcmVlbikKKyAgICAg
ICAgICAgIGVuc3VyZUludHJpbnNpY1NpemVNYWludGFpbnNBc3BlY3RSYXRpbygpOworCiAgICAg
ICAgIG1fY2FwdHVyZXItPnNldFNpemUoc2l6ZSgpLndpZHRoKCksIHNpemUoKS5oZWlnaHQoKSk7
CisgICAgfQorCiAgICAgaWYgKHNldHRpbmdzLmNvbnRhaW5zKFJlYWx0aW1lTWVkaWFTb3VyY2VT
ZXR0aW5nczo6RmxhZzo6RnJhbWVSYXRlKSkKICAgICAgICAgbV9jYXB0dXJlci0+c2V0RnJhbWVS
YXRlKGZyYW1lUmF0ZSgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL2dzdHJlYW1lci9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZUdTdHJlYW1lci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvTW9ja1Jl
YWx0aW1lVmlkZW9Tb3VyY2VHU3RyZWFtZXIuY3BwCmluZGV4IGRiYmViMWZlMDIwNzhhNzc1NTU4
NGVlMTM1NmU5N2NiZjI2N2FkNjguLjJhMTZlMDE3ZjVlNGViNDRkYzgyZDljZDVkOGMyNjEyMDg2
N2Q3NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dz
dHJlYW1lci9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL01vY2tSZWFsdGltZVZpZGVv
U291cmNlR1N0cmVhbWVyLmNwcApAQCAtNTAsMjAgKzUwLDU5IEBAIENhcHR1cmVTb3VyY2VPckVy
cm9yIE1vY2tSZWFsdGltZVZpZGVvU291cmNlOjpjcmVhdGUoU3RyaW5nJiYgZGV2aWNlSUQsIFN0
cmluZyYmCiAgICAgcmV0dXJuIENhcHR1cmVTb3VyY2VPckVycm9yKFJlYWx0aW1lVmlkZW9Tb3Vy
Y2U6OmNyZWF0ZShXVEZNb3ZlKHNvdXJjZSkpKTsKIH0KIAotQ2FwdHVyZVNvdXJjZU9yRXJyb3Ig
TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VHU3RyZWFtZXI6OmNyZWF0ZU1vY2tEaXNwbGF5Q2FwdHVy
ZVNvdXJjZShTdHJpbmcmJiBkZXZpY2VJRCwgU3RyaW5nJiYgbmFtZSwgU3RyaW5nJiYgaGFzaFNh
bHQsIGNvbnN0IE1lZGlhQ29uc3RyYWludHMqIGNvbnN0cmFpbnRzKQorQ2FwdHVyZVNvdXJjZU9y
RXJyb3IgTW9ja0Rpc3BsYXlDYXB0dXJlU291cmNlR1N0cmVhbWVyOjpjcmVhdGUoY29uc3QgQ2Fw
dHVyZURldmljZSYgZGV2aWNlLCBjb25zdCBNZWRpYUNvbnN0cmFpbnRzKiBjb25zdHJhaW50cykK
IHsKLSAgICBhdXRvIHNvdXJjZSA9IE1vY2tSZWFsdGltZVZpZGVvU291cmNlR1N0cmVhbWVyOjpj
cmVhdGVGb3JNb2NrRGlzcGxheUNhcHR1cmVyKFdURk1vdmUoZGV2aWNlSUQpLCBXVEZNb3ZlKG5h
bWUpLCBXVEZNb3ZlKGhhc2hTYWx0KSk7CisgICAgYXV0byBtb2NrU291cmNlID0gYWRvcHRSZWYo
Km5ldyBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZUdTdHJlYW1lcihTdHJpbmcgeyBkZXZpY2UucGVy
c2lzdGVudElkKCkgfSwgU3RyaW5nIHsgZGV2aWNlLmxhYmVsKCkgfSwgeyB9KSk7CisKICAgICBp
ZiAoY29uc3RyYWludHMpIHsKLSAgICAgICAgaWYgKGF1dG8gZXJyb3IgPSBzb3VyY2UtPmFwcGx5
Q29uc3RyYWludHMoKmNvbnN0cmFpbnRzKSkKKyAgICAgICAgaWYgKGF1dG8gZXJyb3IgPSBtb2Nr
U291cmNlLT5hcHBseUNvbnN0cmFpbnRzKCpjb25zdHJhaW50cykpCiAgICAgICAgICAgICByZXR1
cm4gV1RGTW92ZShlcnJvci52YWx1ZSgpLmJhZENvbnN0cmFpbnQpOwogICAgIH0KIAotICAgIHJl
dHVybiBDYXB0dXJlU291cmNlT3JFcnJvcihSZWFsdGltZVZpZGVvU291cmNlOjpjcmVhdGUoV1RG
TW92ZShzb3VyY2UpKSk7CisgICAgYXV0byBzb3VyY2UgPSBhZG9wdFJlZigqbmV3IE1vY2tEaXNw
bGF5Q2FwdHVyZVNvdXJjZUdTdHJlYW1lcihXVEZNb3ZlKG1vY2tTb3VyY2UpLCBkZXZpY2UudHlw
ZSgpKSk7CisgICAgcmV0dXJuIENhcHR1cmVTb3VyY2VPckVycm9yKFdURk1vdmUoc291cmNlKSk7
CiB9CiAKLVJlZjxNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZT4gTW9ja1JlYWx0aW1lVmlkZW9Tb3Vy
Y2VHU3RyZWFtZXI6OmNyZWF0ZUZvck1vY2tEaXNwbGF5Q2FwdHVyZXIoU3RyaW5nJiYgZGV2aWNl
SUQsIFN0cmluZyYmIG5hbWUsIFN0cmluZyYmIGhhc2hTYWx0KQorY29uc3QgUmVhbHRpbWVNZWRp
YVNvdXJjZUNhcGFiaWxpdGllcyYgTW9ja0Rpc3BsYXlDYXB0dXJlU291cmNlR1N0cmVhbWVyOjpj
YXBhYmlsaXRpZXMoKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1vY2tSZWFsdGltZVZp
ZGVvU291cmNlR1N0cmVhbWVyKFdURk1vdmUoZGV2aWNlSUQpLCBXVEZNb3ZlKG5hbWUpLCBXVEZN
b3ZlKGhhc2hTYWx0KSkpOworICAgIGlmICghbV9jYXBhYmlsaXRpZXMpIHsKKyAgICAgICAgUmVh
bHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcyBjYXBhYmlsaXRpZXMoc2V0dGluZ3MoKS5zdXBw
b3J0ZWRDb25zdHJhaW50cygpKTsKKworICAgICAgICAvLyBGSVhNRTogd2hhdCBzaG91bGQgdGhl
c2UgYmU/CisgICAgICAgIGNhcGFiaWxpdGllcy5zZXRXaWR0aChDYXBhYmlsaXR5VmFsdWVPclJh
bmdlKDEsIDM4NDApKTsKKyAgICAgICAgY2FwYWJpbGl0aWVzLnNldEhlaWdodChDYXBhYmlsaXR5
VmFsdWVPclJhbmdlKDEsIDIxNjApKTsKKyAgICAgICAgY2FwYWJpbGl0aWVzLnNldEZyYW1lUmF0
ZShDYXBhYmlsaXR5VmFsdWVPclJhbmdlKC4wMSwgMzAuMCkpOworCisgICAgICAgIG1fY2FwYWJp
bGl0aWVzID0gV1RGTW92ZShjYXBhYmlsaXRpZXMpOworICAgIH0KKyAgICByZXR1cm4gbV9jYXBh
YmlsaXRpZXMudmFsdWUoKTsKK30KKworY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdz
JiBNb2NrRGlzcGxheUNhcHR1cmVTb3VyY2VHU3RyZWFtZXI6OnNldHRpbmdzKCkKK3sKKyAgICBp
ZiAoIW1fY3VycmVudFNldHRpbmdzKSB7CisgICAgICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0
aW5ncyBzZXR0aW5nczsKKyAgICAgICAgc2V0dGluZ3Muc2V0RnJhbWVSYXRlKGZyYW1lUmF0ZSgp
KTsKKworICAgICAgICBtX3NvdXJjZS0+ZW5zdXJlSW50cmluc2ljU2l6ZU1haW50YWluc0FzcGVj
dFJhdGlvKCk7CisgICAgICAgIGF1dG8gc2l6ZSA9IG1fc291cmNlLT5zaXplKCk7CisgICAgICAg
IHNldHRpbmdzLnNldFdpZHRoKHNpemUud2lkdGgoKSk7CisgICAgICAgIHNldHRpbmdzLnNldEhl
aWdodChzaXplLmhlaWdodCgpKTsKKworICAgICAgICBzZXR0aW5ncy5zZXRMb2dpY2FsU3VyZmFj
ZShmYWxzZSk7CisKKyAgICAgICAgUmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRlZENvbnN0cmFp
bnRzIHN1cHBvcnRlZENvbnN0cmFpbnRzOworICAgICAgICBzdXBwb3J0ZWRDb25zdHJhaW50cy5z
ZXRTdXBwb3J0c0ZyYW1lUmF0ZSh0cnVlKTsKKyAgICAgICAgc3VwcG9ydGVkQ29uc3RyYWludHMu
c2V0U3VwcG9ydHNXaWR0aCh0cnVlKTsKKyAgICAgICAgc3VwcG9ydGVkQ29uc3RyYWludHMuc2V0
U3VwcG9ydHNIZWlnaHQodHJ1ZSk7CisgICAgICAgIHN1cHBvcnRlZENvbnN0cmFpbnRzLnNldFN1
cHBvcnRzRGlzcGxheVN1cmZhY2UodHJ1ZSk7CisgICAgICAgIHN1cHBvcnRlZENvbnN0cmFpbnRz
LnNldFN1cHBvcnRzTG9naWNhbFN1cmZhY2UodHJ1ZSk7CisKKyAgICAgICAgc2V0dGluZ3Muc2V0
U3VwcG9ydGVkQ29uc3RyYWludHMoc3VwcG9ydGVkQ29uc3RyYWludHMpOworCisgICAgICAgIG1f
Y3VycmVudFNldHRpbmdzID0gV1RGTW92ZShzZXR0aW5ncyk7CisgICAgfQorICAgIHJldHVybiBt
X2N1cnJlbnRTZXR0aW5ncy52YWx1ZSgpOwogfQogCiBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZUdT
dHJlYW1lcjo6TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VHU3RyZWFtZXIoU3RyaW5nJiYgZGV2aWNl
SUQsIFN0cmluZyYmIG5hbWUsIFN0cmluZyYmIGhhc2hTYWx0KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL01vY2tSZWFsdGltZVZpZGVv
U291cmNlR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9n
c3RyZWFtZXIvTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VHU3RyZWFtZXIuaAppbmRleCAxM2QwZjgx
NzNkZWJkOGIwNGMzOGJhMWVhM2U2NWU0YmQ3NTNiNDZiLi43ZTBmNjc1MzkyNzJlYTBjOTU2OTkw
YWQ4Y2RiN2U5MDI0YmViNmM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9nc3RyZWFtZXIvTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VHU3RyZWFtZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvTW9ja1Jl
YWx0aW1lVmlkZW9Tb3VyY2VHU3RyZWFtZXIuaApAQCAtMzAsMjAgKzMwLDQ2IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY2xhc3MgTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VHU3RyZWFtZXIgZmlu
YWwgOiBwdWJsaWMgTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UgewogcHVibGljOgotICAgIHN0YXRp
YyBSZWY8TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U+IGNyZWF0ZUZvck1vY2tEaXNwbGF5Q2FwdHVy
ZXIoU3RyaW5nJiYgZGV2aWNlSUQsIFN0cmluZyYmIG5hbWUsIFN0cmluZyYmIGhhc2hTYWx0KTsK
LQotICAgIHN0YXRpYyBDYXB0dXJlU291cmNlT3JFcnJvciBjcmVhdGVNb2NrRGlzcGxheUNhcHR1
cmVTb3VyY2UoU3RyaW5nJiYgZGV2aWNlSUQsIFN0cmluZyYmIG5hbWUsIFN0cmluZyYmIGhhc2hT
YWx0LCBjb25zdCBNZWRpYUNvbnN0cmFpbnRzKik7Ci0KKyAgICBNb2NrUmVhbHRpbWVWaWRlb1Nv
dXJjZUdTdHJlYW1lcihTdHJpbmcmJiBkZXZpY2VJRCwgU3RyaW5nJiYgbmFtZSwgU3RyaW5nJiYg
aGFzaFNhbHQpOwogICAgIH5Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZUdTdHJlYW1lcigpID0gZGVm
YXVsdDsKIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgTW9ja1JlYWx0aW1lVmlkZW9Tb3Vy
Y2U7Ci0gICAgTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VHU3RyZWFtZXIoU3RyaW5nJiYgZGV2aWNl
SUQsIFN0cmluZyYmIG5hbWUsIFN0cmluZyYmIGhhc2hTYWx0KTsKIAogICAgIHZvaWQgdXBkYXRl
U2FtcGxlQnVmZmVyKCkgZmluYWw7CiAgICAgYm9vbCBjYW5SZXNpemVWaWRlb0ZyYW1lcygpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KIH07CiAKK2NsYXNzIE1vY2tEaXNwbGF5Q2FwdHVy
ZVNvdXJjZUdTdHJlYW1lciBmaW5hbCA6IHB1YmxpYyBSZWFsdGltZU1lZGlhU291cmNlIHsKK3B1
YmxpYzoKKyAgICBzdGF0aWMgQ2FwdHVyZVNvdXJjZU9yRXJyb3IgY3JlYXRlKGNvbnN0IENhcHR1
cmVEZXZpY2UmLCBjb25zdCBNZWRpYUNvbnN0cmFpbnRzKik7CisKKyAgICBNb2NrRGlzcGxheUNh
cHR1cmVTb3VyY2VHU3RyZWFtZXIoUmVmUHRyPE1vY2tSZWFsdGltZVZpZGVvU291cmNlR1N0cmVh
bWVyPiYmIHNvdXJjZSwgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZSB0eXBlKQorICAgICAgICA6
IFJlYWx0aW1lTWVkaWFTb3VyY2UoVHlwZTo6VmlkZW8sIHNvdXJjZS0+bmFtZSgpLmlzb2xhdGVk
Q29weSgpKQorICAgICAgICAsIG1fc291cmNlKFdURk1vdmUoc291cmNlKSkKKyAgICAgICAgLCBt
X3R5cGUodHlwZSkgeyB9CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIE1vY2tSZWFsdGlt
ZVZpZGVvU291cmNlR1N0cmVhbWVyOworCisgICAgdm9pZCBzdGFydFByb2R1Y2luZ0RhdGEoKSBm
aW5hbCB7IG1fc291cmNlLT5zdGFydCgpOyB9CisgICAgdm9pZCBzdG9wUHJvZHVjaW5nRGF0YSgp
IGZpbmFsIHsgbV9zb3VyY2UtPnN0b3AoKTsgfQorICAgIHZvaWQgc2V0dGluZ3NEaWRDaGFuZ2Uo
T3B0aW9uU2V0PFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RmxhZz4pIGZpbmFsIHsgbV9j
dXJyZW50U2V0dGluZ3MgPSB7IH07IH0KKyAgICBib29sIGlzQ2FwdHVyZVNvdXJjZSgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KKyAgICBjb25zdCBSZWFsdGltZU1lZGlhU291cmNlQ2Fw
YWJpbGl0aWVzJiBjYXBhYmlsaXRpZXMoKSBmaW5hbDsKKyAgICBjb25zdCBSZWFsdGltZU1lZGlh
U291cmNlU2V0dGluZ3MmIHNldHRpbmdzKCkgZmluYWw7CisgICAgQ2FwdHVyZURldmljZTo6RGV2
aWNlVHlwZSBkZXZpY2VUeXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CisKKyNpZiAhUkVM
RUFTRV9MT0dfRElTQUJMRUQKKyAgICBjb25zdCBjaGFyKiBsb2dDbGFzc05hbWUoKSBjb25zdCBm
aW5hbCB7IHJldHVybiAiTW9ja0Rpc3BsYXlDYXB0dXJlU291cmNlR1N0cmVhbWVyIjsgfQorI2Vu
ZGlmCisKKyAgICBSZWZQdHI8TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VHU3RyZWFtZXI+IG1fc291
cmNlOworICAgIENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGUgbV90eXBlOworICAgIHN0ZDo6b3B0
aW9uYWw8UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcz4gbV9jYXBhYmlsaXRpZXM7Cisg
ICAgc3RkOjpvcHRpb25hbDxSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M+IG1fY3VycmVudFNl
dHRpbmdzOworfTsKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxF
KE1FRElBX1NUUkVBTSkgJiYgVVNFKEdTVFJFQU1FUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5j
cHAKaW5kZXggNDAzZmYzOTMyOGZlMmUzNjlkMTQxZmVmYjI5ZTQ5MDFhYjg1MTVjZi4uYTk5ODQx
ZTNkMTZlOTAxYzg2MDdkN2FiNjhkNjgwNTgyY2MwYTNhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNl
bnRlci5jcHAKQEAgLTE2NSw3ICsxNjUsNyBAQCBwdWJsaWM6CiAjaWYgUExBVEZPUk0oTUFDKQog
ICAgICAgICAgICAgcmV0dXJuIERpc3BsYXlDYXB0dXJlU291cmNlQ29jb2E6OmNyZWF0ZShVbmlx
dWVSZWY8RGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6Q2FwdHVyZXI+KG1ha2VVbmlxdWVSZWY8
TW9ja0Rpc3BsYXlDYXB0dXJlcj4oZGV2aWNlKSksIGRldmljZSwgY29uc3RyYWludHMpOwogI2Vs
aWYgVVNFKEdTVFJFQU1FUikKLSAgICAgICAgICAgIHJldHVybiBNb2NrUmVhbHRpbWVWaWRlb1Nv
dXJjZUdTdHJlYW1lcjo6Y3JlYXRlTW9ja0Rpc3BsYXlDYXB0dXJlU291cmNlKFN0cmluZyB7IGRl
dmljZS5wZXJzaXN0ZW50SWQoKSB9LCBTdHJpbmcgeyBkZXZpY2UubGFiZWwoKSB9LCBTdHJpbmcg
eyB9LCBjb25zdHJhaW50cyk7CisgICAgICAgICAgICByZXR1cm4gTW9ja0Rpc3BsYXlDYXB0dXJl
U291cmNlR1N0cmVhbWVyOjpjcmVhdGUoZGV2aWNlLCBjb25zdHJhaW50cyk7CiAjZWxzZQogICAg
ICAgICAgICAgcmV0dXJuIE1vY2tSZWFsdGltZVZpZGVvU291cmNlOjpjcmVhdGUoU3RyaW5nIHsg
ZGV2aWNlLnBlcnNpc3RlbnRJZCgpIH0sIFN0cmluZyB7IGRldmljZS5sYWJlbCgpIH0sIFN0cmlu
ZyB7IH0sIGNvbnN0cmFpbnRzKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmNwcAppbmRleCBlZTBjZmY2
NDA4Y2YwMWRiZmM3Njc2YzE2ZjRjYzhkMWZhZGFlMjc3Li4xMDUxNDM4ZjQ1YTc0NDY2Mzg2YmM4
NDRiOGFiNjU5MDQ4MDNhZTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
b2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmNwcApAQCAtNDMyLDkgKzQzMiw2IEBA
IHZvaWQgTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OmdlbmVyYXRlRnJhbWUoKQogICAgICAgICBt
X2RlbGF5VW50aWwgPSBNb25vdG9uaWNUaW1lKCk7CiAgICAgfQogCi0gICAgaWYgKG1vY2tEaXNw
bGF5KCkgJiYgIW1fZnJhbWVOdW1iZXIpCi0gICAgICAgIGVuc3VyZUludHJpbnNpY1NpemVNYWlu
dGFpbnNBc3BlY3RSYXRpbygpOwotCiAgICAgSW1hZ2VCdWZmZXIqIGJ1ZmZlciA9IGltYWdlQnVm
ZmVyKCk7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA3YWQ4YjU4
MTE4N2ZlYTQ4YTdlYjRmM2UzMzM0MTExZGVjZjhmNzIyLi4wNTY5ODM1NzlkZmM5MDg0NzUwZTFk
Zjk3NmMzNGRiZWM3ZDJkN2FjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysr
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjEtMDgtMTkgIFBo
aWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgorCisgICAgICAgIFJFR1JFU1NJ
T04ocjI4MDczMikgW0dTdHJlYW1lcl0gZmFzdC9tZWRpYXN0cmVhbS9nZXREaXNwbGF5TWVkaWEt
bWF4LWNvbnN0cmFpbnRzMS5odG1sIGFuZCBvdGhlciBhcmUgZmFpbGluZworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI4OTQxCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9nbGliL1Rlc3RF
eHBlY3RhdGlvbnM6IFVuZmxhZyB0ZXN0cyBub3cgcGFzc2luZy4KKwogMjAyMS0wOC0xOSAgRnVq
aWkgSGlyb25vcmkgIDxIaXJvbm9yaS5GdWppaUBzb255LmNvbT4KIAogICAgICAgICBbV2luQ2Fp
cm9dIFVucmV2aWV3ZWQgdGVzdCBnYXJkZW5pbmcKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2dsaWIvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2dsaWIv
VGVzdEV4cGVjdGF0aW9ucwppbmRleCA4Yjg0NTY3YzNlYTE1MjA2ODk4M2MxOTEwMmFjN2VkNGE1
MTc1OGM4Li4yMDU5MjI4NmM3YTA1NDg3OWVlYjExZGM4YTcyZjYwMjBkOTM1YTQ0IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9nbGliL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vZ2xpYi9UZXN0RXhwZWN0YXRpb25zCkBAIC02MjYsOSArNjI2LDYg
QEAgd2Via2l0Lm9yZy9iLzIyNzY2MSBodHRwL3Rlc3RzL21lZGlhL2hscy9obHMtd2VidnR0LXNl
ZWstYmFja3dhcmRzLmh0bWwgWyBUaW1lb3UKIHdlYmtpdC5vcmcvYi8yMjc5MzQgbWVkaWEvbWVk
aWEtc291cmNlL21lZGlhLXdlYm0tdm9yYmlzLXBhcnRpYWwuaHRtbCBbIEZhaWx1cmUgXQogd2Vi
a2l0Lm9yZy9iLzIyNzkzNCBtZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWEtd2VibS1vcHVzLXBhcnRp
YWwuaHRtbCBbIEZhaWx1cmUgXQogCi13ZWJraXQub3JnL2IvMjI4OTQxIGZhc3QvbWVkaWFzdHJl
YW0vZ2V0RGlzcGxheU1lZGlhLW1heC1jb25zdHJhaW50czEuaHRtbCBbIFRpbWVvdXQgRmFpbHVy
ZSBdCi13ZWJraXQub3JnL2IvMjI4OTQxIGZhc3QvbWVkaWFzdHJlYW0vZ2V0RGlzcGxheU1lZGlh
LW1heC1jb25zdHJhaW50czIuaHRtbCBbIFRpbWVvdXQgRmFpbHVyZSBdCi0KICMvLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vCiAjIEVuZCBvZiBHU3RyZWFtZXItcmVsYXRlZCBidWdzCiAj
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwo=
</data>
<flag name="review"
          id="458752"
          type_id="1"
          status="+"
          setter="youennf"
    />
          </attachment>
      

    </bug>

</bugzilla>