<?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>216925</bug_id>
          
          <creation_ts>2020-09-24 04:58:26 -0700</creation_ts>
          <short_desc>[WebXR] Initial implemention of device initialization/shutdown with OpenXR</short_desc>
          <delta_ts>2021-01-20 13:36:02 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>217752</dependson>
          <blocked>208988</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Sergio Villar Senin">svillar</reporter>
          <assigned_to name="Sergio Villar Senin">svillar</assigned_to>
          <cc>cgarcia</cc>
    
    <cc>darin</cc>
    
    <cc>dino</cc>
    
    <cc>peng.liu6</cc>
    
    <cc>pnormand</cc>
    
    <cc>svillar</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1691471</commentid>
    <comment_count>0</comment_count>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2020-09-24 04:58:26 -0700</bug_when>
    <thetext>[WebXR] Initial implemention of device initialization/shutdown with OpenXR</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1691474</commentid>
    <comment_count>1</comment_count>
      <attachid>409560</attachid>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2020-09-24 05:06:56 -0700</bug_when>
    <thetext>Created attachment 409560
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1691497</commentid>
    <comment_count>2</comment_count>
      <attachid>409560</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-09-24 06:57:09 -0700</bug_when>
    <thetext>Comment on attachment 409560
Patch

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

&gt; Source/WebCore/Modules/webxr/WebXRSession.cpp:62
&gt; +    m_device-&gt;initializeTrackingAndRendering(mode);

This seems like this could be done in device constructor and shutdownTrackingAndRendering in device destructor.
Are we sure there might not be two sessions using the same device at the same time?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1691500</commentid>
    <comment_count>3</comment_count>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2020-09-24 07:11:20 -0700</bug_when>
    <thetext>(In reply to youenn fablet from comment #2)
&gt; Comment on attachment 409560 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=409560&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/Modules/webxr/WebXRSession.cpp:62
&gt; &gt; +    m_device-&gt;initializeTrackingAndRendering(mode);
&gt; 
&gt; This seems like this could be done in device constructor and
&gt; shutdownTrackingAndRendering in device destructor.

The spec mentions the exact points when this should be done. Note that there could be multiple calls to initialize/shutdown if the user enters/leaves XR sessions in a row.

&gt; Are we sure there might not be two sessions using the same device at the
&gt; same time?

There is no device concept in OpenXR API, so our XRDevice is basically an abstraction for a session and some other additional data.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1691503</commentid>
    <comment_count>4</comment_count>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2020-09-24 07:23:47 -0700</bug_when>
    <thetext>(In reply to Sergio Villar Senin from comment #3)
&gt; (In reply to youenn fablet from comment #2)
&gt; &gt; Comment on attachment 409560 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=409560&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/Modules/webxr/WebXRSession.cpp:62
&gt; &gt; &gt; +    m_device-&gt;initializeTrackingAndRendering(mode);
&gt; &gt; 
&gt; &gt; This seems like this could be done in device constructor and
&gt; &gt; shutdownTrackingAndRendering in device destructor.
&gt; 
&gt; The spec mentions the exact points when this should be done. Note that there
&gt; could be multiple calls to initialize/shutdown if the user enters/leaves XR
&gt; sessions in a row.

I noticed the comment lacks some context. Device objects are created in a previous state even before the user requests a session. The author will firstly typically call XRSystem::isSessionSupported() to check whether a particular session (immersive VR, AR, inline) is supported. That call will end up creating the XR devices on demand.

Then, after checking that the session is supported the author might request a XRSession on a particular device. That&apos;s the point were we would need to create the OpenXR session. There is no need to unconditionally create OpenXR sessions for any available device. Also, if no session is ever requested then no OpenXR session should be created even though the devices were there.

Hope this clarifies a bit the implementation decision.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1692007</commentid>
    <comment_count>5</comment_count>
      <attachid>409560</attachid>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2020-09-25 13:23:03 -0700</bug_when>
    <thetext>Comment on attachment 409560
Patch

Removing r?. I&apos;m going first to make the current platform code fully asynchronous and then reupload this patch rebased on top of that work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1693721</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-10-01 04:59:20 -0700</bug_when>
    <thetext>&lt;rdar://problem/69832601&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1701845</commentid>
    <comment_count>7</comment_count>
      <attachid>412416</attachid>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2020-10-27 06:14:08 -0700</bug_when>
    <thetext>Created attachment 412416
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1702510</commentid>
    <comment_count>8</comment_count>
      <attachid>412416</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2020-10-28 15:05:06 -0700</bug_when>
    <thetext>Comment on attachment 412416
Patch

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

&gt; Source/WebCore/platform/xr/openxr/PlatformXROpenXR.cpp:416
&gt; +    };

Nit. Maybe we can write it like:
return (mode == SessionMode::ImmersiveVr) ? XR_VIEW_CONFIGURATION_TYPE_PRIMARY_STEREO : XR_VIEW_CONFIGURATION_TYPE_PRIMARY_MONO;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1702669</commentid>
    <comment_count>9</comment_count>
      <attachid>412416</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-10-29 03:58:22 -0700</bug_when>
    <thetext>Comment on attachment 412416
Patch

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

&gt; Source/WebCore/Modules/webxr/WebXRSession.cpp:339
&gt; +        m_device-&gt;shutdownTrackingAndRendering();

Is there a guarantee shutdown will not be called twice.
Should we ASSERT(!m_ended) at the start of shutdown()? or return early?

&gt; Source/WebCore/platform/xr/openxr/PlatformXROpenXR.cpp:414
&gt; +    default:

Usually we try to not add default and use all explicit values.
Can we change it to: &apos;case SessionMode::ImmersiveAr&apos;?

&gt; Source/WebCore/platform/xr/openxr/PlatformXROpenXR.cpp:431
&gt; +        xrCreateSession(m_instance, &amp;sessionCreateInfo, &amp;m_session);

Other call sites of xrCreateSession do check for the result.
Should we add some logging and/or reset in case the session cannot be created?

&gt; Source/WebCore/platform/xr/openxr/PlatformXROpenXR.cpp:438
&gt; +        xrDestroySession(m_session);

Is it ok to pass  XR_NULL_HANDLE to xrDestroySession?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1712071</commentid>
    <comment_count>10</comment_count>
      <attachid>412416</attachid>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2020-12-04 11:02:56 -0800</bug_when>
    <thetext>Comment on attachment 412416
Patch

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

Thanks for waiting so much for my replies, I had several higher prio tasks to tackle before this.

&gt;&gt; Source/WebCore/Modules/webxr/WebXRSession.cpp:339
&gt;&gt; +        m_device-&gt;shutdownTrackingAndRendering();
&gt; 
&gt; Is there a guarantee shutdown will not be called twice.
&gt; Should we ASSERT(!m_ended) at the start of shutdown()? or return early?

Not really, the caller might invoke session.end() from JS multiple times (although it does not make sense from the functional POV). So shutdown() might be indeed be called multiple times.

The shutdown algorithm from specs seems to assume that the session is !ended so I&apos;ll add the condition to the calling place.

&gt;&gt; Source/WebCore/platform/xr/openxr/PlatformXROpenXR.cpp:414
&gt;&gt; +    default:
&gt; 
&gt; Usually we try to not add default and use all explicit values.
&gt; Can we change it to: &apos;case SessionMode::ImmersiveAr&apos;?

Sure.

&gt;&gt; Source/WebCore/platform/xr/openxr/PlatformXROpenXR.cpp:416
&gt;&gt; +    };
&gt; 
&gt; Nit. Maybe we can write it like:
&gt; return (mode == SessionMode::ImmersiveVr) ? XR_VIEW_CONFIGURATION_TYPE_PRIMARY_STEREO : XR_VIEW_CONFIGURATION_TYPE_PRIMARY_MONO;

Yeah, but I think it&apos;s a good idea to have the switch because this way static analysis tools could easily detect missing handling of some values.

&gt;&gt; Source/WebCore/platform/xr/openxr/PlatformXROpenXR.cpp:431
&gt;&gt; +        xrCreateSession(m_instance, &amp;sessionCreateInfo, &amp;m_session);
&gt; 
&gt; Other call sites of xrCreateSession do check for the result.
&gt; Should we add some logging and/or reset in case the session cannot be created?

The session will be XR_NULL_HANDLE whenever we get a failure, but we can indeed add some logging here.

&gt;&gt; Source/WebCore/platform/xr/openxr/PlatformXROpenXR.cpp:438
&gt;&gt; +        xrDestroySession(m_session);
&gt; 
&gt; Is it ok to pass  XR_NULL_HANDLE to xrDestroySession?

No, the OpenXR runtimes handle it properly but the standard says that it must be a valid session. I&apos;ll change it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1712072</commentid>
    <comment_count>11</comment_count>
      <attachid>412416</attachid>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2020-12-04 11:02:58 -0800</bug_when>
    <thetext>Comment on attachment 412416
Patch

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

Thanks for waiting so much for my replies, I had several higher prio tasks to tackle before this.

&gt;&gt; Source/WebCore/Modules/webxr/WebXRSession.cpp:339
&gt;&gt; +        m_device-&gt;shutdownTrackingAndRendering();
&gt; 
&gt; Is there a guarantee shutdown will not be called twice.
&gt; Should we ASSERT(!m_ended) at the start of shutdown()? or return early?

Not really, the caller might invoke session.end() from JS multiple times (although it does not make sense from the functional POV). So shutdown() might be indeed be called multiple times.

The shutdown algorithm from specs seems to assume that the session is !ended so I&apos;ll add the condition to the calling place.

&gt;&gt; Source/WebCore/platform/xr/openxr/PlatformXROpenXR.cpp:414
&gt;&gt; +    default:
&gt; 
&gt; Usually we try to not add default and use all explicit values.
&gt; Can we change it to: &apos;case SessionMode::ImmersiveAr&apos;?

Sure.

&gt;&gt; Source/WebCore/platform/xr/openxr/PlatformXROpenXR.cpp:416
&gt;&gt; +    };
&gt; 
&gt; Nit. Maybe we can write it like:
&gt; return (mode == SessionMode::ImmersiveVr) ? XR_VIEW_CONFIGURATION_TYPE_PRIMARY_STEREO : XR_VIEW_CONFIGURATION_TYPE_PRIMARY_MONO;

Yeah, but I think it&apos;s a good idea to have the switch because this way static analysis tools could easily detect missing handling of some values.

&gt;&gt; Source/WebCore/platform/xr/openxr/PlatformXROpenXR.cpp:431
&gt;&gt; +        xrCreateSession(m_instance, &amp;sessionCreateInfo, &amp;m_session);
&gt; 
&gt; Other call sites of xrCreateSession do check for the result.
&gt; Should we add some logging and/or reset in case the session cannot be created?

The session will be XR_NULL_HANDLE whenever we get a failure, but we can indeed add some logging here.

&gt;&gt; Source/WebCore/platform/xr/openxr/PlatformXROpenXR.cpp:438
&gt;&gt; +        xrDestroySession(m_session);
&gt; 
&gt; Is it ok to pass  XR_NULL_HANDLE to xrDestroySession?

No, the OpenXR runtimes handle it properly but the standard says that it must be a valid session. I&apos;ll change it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1712085</commentid>
    <comment_count>12</comment_count>
      <attachid>415435</attachid>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2020-12-04 11:23:33 -0800</bug_when>
    <thetext>Created attachment 415435
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1717440</commentid>
    <comment_count>13</comment_count>
      <attachid>415435</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-01-05 12:52:23 -0800</bug_when>
    <thetext>Comment on attachment 415435
Patch

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

&gt; Source/WebCore/Modules/webxr/WebXRSession.cpp:61
&gt; +    // If no other features of the user agent have done so already, perform the necessary platform-specific steps to
&gt;      // initialize the device&apos;s tracking and rendering capabilities, including showing any necessary instructions to the user.

This seems like a comment that should be in the initializeTrackingAndRendering function, not here at the call site.

&gt; Source/WebCore/platform/xr/openxr/PlatformXROpenXR.cpp:37
&gt; -template&lt;typename T, XrStructureType StructureType&gt;
&gt; +template &lt;typename T, XrStructureType StructureType&gt;

Not sure we should make this change. I, for one, prefer the other form.

&gt; Source/WebCore/platform/xr/openxr/PlatformXROpenXR.cpp:65
&gt;      WTF_MAKE_FAST_ALLOCATED;
&gt; +
&gt;  public:

Should use WTF_MAKE_STRUCT_FAST_ALLOCATED so we don’t have to explicitly use public here.

&gt; Source/WebCore/platform/xr/openxr/PlatformXROpenXR.cpp:243
&gt; +    , m_session(XR_NULL_HANDLE)

Can we do this in the class definition instead of here in the constructor?

&gt; Source/WebCore/platform/xr/openxr/PlatformXROpenXR.cpp:397
&gt; +    return XR_VIEW_CONFIGURATION_TYPE_MAX_ENUM;

Why this value? I think it would be better to return a valid value in this unreachable case.

&gt; Source/WebCore/platform/xr/openxr/PlatformXROpenXR.h:59
&gt; +    void shutdownTrackingAndRendering() final;

The verb &quot;shut down&quot; is two words, so normally we’d want the &quot;d&quot; in &quot;shutDown&quot; here to be capitalized.

The word &quot;shutdown&quot; is a noun or adjective.

&gt; Source/WebCore/platform/xr/openxr/PlatformXROpenXR.h:74
&gt; +    XrViewConfigurationType m_currentViewConfiguration;

Not sure a &quot;type&quot; should be named &quot;configuration&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1718248</commentid>
    <comment_count>14</comment_count>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2021-01-08 01:59:34 -0800</bug_when>
    <thetext>Committed r271288: &lt;https://trac.webkit.org/changeset/271288&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1720982</commentid>
    <comment_count>15</comment_count>
      <attachid>415435</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2021-01-20 13:36:02 -0800</bug_when>
    <thetext>Comment on attachment 415435
Patch

What happens if the device disconnects or shuts down the session itself? Does that go through ::end()?

Also, I&apos;m not sure we should fire the &quot;end&quot; event until we&apos;ve really shutdown the device, which might not be immediate.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>409560</attachid>
            <date>2020-09-24 05:06:56 -0700</date>
            <delta_ts>2020-10-27 06:13:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216925-20200924140654.patch</filename>
            <type>text/plain</type>
            <size>9711</size>
            <attacher name="Sergio Villar Senin">svillar</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY3NTI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjg1NWY3YjgyZTIyZWYw
NjA5ODBmZmVkYzRjZGFkZTRhYzBkODQ5MS4uY2JkY2M2MjE4YzBjNjUzNmU3Nzc3Nzg1YzBiYmJi
YjIwZjZjNmU2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDIwLTA5LTI0ICBTZXJn
aW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgorCisgICAgICAgIFtXZWJYUl0g
SW5pdGlhbCBpbXBsZW1lbnRpb24gb2YgZGV2aWNlIGluaXRpYWxpemF0aW9uL3NodXRkb3duIHdp
dGggT3BlblhSCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMTY5MjUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBZGRlZCBhIHZlcnkgYmFzaWMgaW5pdGlhbGl6YXRpb24gYW5kIHNodXRkb3duIHByb2Nlc3Nl
cyBvZiBYUiBkZXZpY2VzIHVzaW5nIE9wZW5YUi4gU28gZmFyIHdlJ3JlIGp1c3QgY3JlYXRpbmcg
YW5kIGRlc3Ryb3lpbmcKKyAgICAgICAgdGhlIFhSIHNlc3Npb24uIEZvbGxvdyB1cCBwYXRjaGVz
IHdpbGwgYWRkIHRoZSByZXF1aXJlZCBtYWNoaW5lcnkgdG8gZ2V0IGZyYW1lIGRhdGEgZnJvbSBP
cGVuWFIuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSU2Vzc2lvbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJYUlNlc3Npb246OldlYlhSU2Vzc2lvbik6IENhbGwgaW5pdGlhbGl6
ZVRyYWNraW5nQW5kUmVuZGVyaW5nKCkuCisgICAgICAgIChXZWJDb3JlOjpXZWJYUlNlc3Npb246
On5XZWJYUlNlc3Npb24pOiBDYWxsIHNodXRkb3duVHJhY2tpbmdBbmRSZW5kZXJpbmcoKS4KKyAg
ICAgICAgKFdlYkNvcmU6OldlYlhSU2Vzc2lvbjo6c2h1dGRvd24pOiBEaXR0by4KKyAgICAgICAg
KiBNb2R1bGVzL3dlYnhyL1dlYlhSU3lzdGVtLmg6CisgICAgICAgICogcGxhdGZvcm0veHIvUGxh
dGZvcm1YUi5oOiBOZXcgdmlydHVhbCBtZXRob2RzIHRvIGluaXRpYWxpemUvc2h1dGRvd24gZGV2
aWNlcy4KKyAgICAgICAgKiBwbGF0Zm9ybS94ci9vcGVueHIvUGxhdGZvcm1YUk9wZW5YUi5jcHA6
CisgICAgICAgIChQbGF0Zm9ybVhSOjpPcGVuWFJEZXZpY2U6Ok9wZW5YUkRldmljZSk6IEluaXRp
YWxpemUgbV9zZXNzaW9uLgorICAgICAgICAoUGxhdGZvcm1YUjo6T3BlblhSRGV2aWNlOjp+T3Bl
blhSRGV2aWNlKTogQ2FsbCBzaHV0ZG93blRyYWNraW5nQW5kUmVuZGVyaW5nKCkuCisgICAgICAg
IChQbGF0Zm9ybVhSOjp0b1hyVmlld0NvbmZpZ3VyYXRpb25UeXBlKTogTmV3IG1ldGhvZC4gVHJh
bnNsYXRlcyBmcm9tIFNlc3Npb25Nb2RlIHRvIFhyVmlld0NvbmZpZ3VyYXRpb25UeXBlLgorICAg
ICAgICAoUGxhdGZvcm1YUjo6T3BlblhSRGV2aWNlOjppbml0aWFsaXplVHJhY2tpbmdBbmRSZW5k
ZXJpbmcpOiBOZXcgbWV0aG9kLiBDcmVhdGVzIGEgc2Vzc2lvbiB3aXRoIGEgZ2l2ZW4gbW9kZS4K
KyAgICAgICAgKFBsYXRmb3JtWFI6Ok9wZW5YUkRldmljZTo6cmVzZXRTZXNzaW9uKTogRGVzdHJv
eXMgc2Vzc2lvbi4KKyAgICAgICAgKFBsYXRmb3JtWFI6Ok9wZW5YUkRldmljZTo6c2h1dGRvd25U
cmFja2luZ0FuZFJlbmRlcmluZyk6CisgICAgICAgICogcGxhdGZvcm0veHIvb3BlbnhyL1BsYXRm
b3JtWFJPcGVuWFIuaDoKKyAgICAgICAgKiB0ZXN0aW5nL1dlYkZha2VYUkRldmljZS5oOiBBZGRl
ZCBlbXB0eSBpbXBsZW1lbnRhdGlvbnMgZm9yIHRoZSBuZXcgdmlydHVhbCBtZXRob2RzLgorCiAy
MDIwLTA5LTI0ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBS
RUdSRVNTSU9OIChpT1MvU2FmYXJpIDE0KTogTWVkaWFSZWNvcmRlciBwcm9kdWNlcyBpbnZhbGlk
IHZpZGVvIGZpbGVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dl
YlhSU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU2Vzc2lv
bi5jcHAKaW5kZXggNWY1MDBhMTkzMWZmZWQ0ODc1MjQ0Nzg4YWYzZTdmYjZmMjE3MzA4Mi4uM2U5
MmUxNGE2YjUwM2U0YzUxMzg4MmIzZTU4NzFmMmRmYjFmM2E1MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2VieHIvV2ViWFJTZXNzaW9uLmNwcApAQCAtNTcsMTIgKzU3LDE4IEBAIFdl
YlhSU2Vzc2lvbjo6V2ViWFJTZXNzaW9uKERvY3VtZW50JiBkb2N1bWVudCwgV2ViWFJTeXN0ZW0m
IHN5c3RlbSwgWFJTZXNzaW9uTW9kCiAgICAgLCBtX2FjdGl2ZVJlbmRlclN0YXRlKFdlYlhSUmVu
ZGVyU3RhdGU6OmNyZWF0ZShtb2RlKSkKICAgICAsIG1fYW5pbWF0aW9uVGltZXIoKnRoaXMsICZX
ZWJYUlNlc3Npb246OmFuaW1hdGlvblRpbWVyRmlyZWQpCiB7Ci0gICAgLy8gRklYTUU6IElmIG5v
IG90aGVyIGZlYXR1cmVzIG9mIHRoZSB1c2VyIGFnZW50IGhhdmUgZG9uZSBzbyBhbHJlYWR5LCBw
ZXJmb3JtIHRoZSBuZWNlc3NhcnkgcGxhdGZvcm0tc3BlY2lmaWMgc3RlcHMgdG8KKyAgICAvLyBJ
ZiBubyBvdGhlciBmZWF0dXJlcyBvZiB0aGUgdXNlciBhZ2VudCBoYXZlIGRvbmUgc28gYWxyZWFk
eSwgcGVyZm9ybSB0aGUgbmVjZXNzYXJ5IHBsYXRmb3JtLXNwZWNpZmljIHN0ZXBzIHRvCiAgICAg
Ly8gaW5pdGlhbGl6ZSB0aGUgZGV2aWNlJ3MgdHJhY2tpbmcgYW5kIHJlbmRlcmluZyBjYXBhYmls
aXRpZXMsIGluY2x1ZGluZyBzaG93aW5nIGFueSBuZWNlc3NhcnkgaW5zdHJ1Y3Rpb25zIHRvIHRo
ZSB1c2VyLgorICAgIG1fZGV2aWNlLT5pbml0aWFsaXplVHJhY2tpbmdBbmRSZW5kZXJpbmcobW9k
ZSk7CisKICAgICBzdXNwZW5kSWZOZWVkZWQoKTsKIH0KIAotV2ViWFJTZXNzaW9uOjp+V2ViWFJT
ZXNzaW9uKCkgPSBkZWZhdWx0OworV2ViWFJTZXNzaW9uOjp+V2ViWFJTZXNzaW9uKCkKK3sKKyAg
ICBpZiAoIW1fZW5kZWQgJiYgbV9kZXZpY2UpCisgICAgICAgIG1fZGV2aWNlLT5zaHV0ZG93blRy
YWNraW5nQW5kUmVuZGVyaW5nKCk7Cit9CiAKIFhSRW52aXJvbm1lbnRCbGVuZE1vZGUgV2ViWFJT
ZXNzaW9uOjplbnZpcm9ubWVudEJsZW5kTW9kZSgpIGNvbnN0CiB7CkBAIC0zMjksNiArMzM1LDkg
QEAgdm9pZCBXZWJYUlNlc3Npb246OnNodXRkb3duKCkKICAgICAvLyAgNi4xLiBSZWxlYXNpbmcg
ZXhjbHVzaXZlIGFjY2VzcyB0byB0aGUgWFIgZGV2aWNlIGlmIHNlc3Npb24gaXMgYW4gaW1tZXJz
aXZlIHNlc3Npb24uCiAgICAgLy8gIDYuMi4gRGVhbGxvY2F0aW5nIGFueSBncmFwaGljcyByZXNv
dXJjZXMgYWNxdWlyZWQgYnkgc2Vzc2lvbiBmb3IgcHJlc2VudGF0aW9uIHRvIHRoZSBYUiBkZXZp
Y2UuCiAgICAgLy8gIDYuMy4gUHV0dGluZyB0aGUgWFIgZGV2aWNlIGluIGEgc3RhdGUgc3VjaCB0
aGF0IGEgZGlmZmVyZW50IHNvdXJjZSBtYXkgYmUgYWJsZSB0byBpbml0aWF0ZSBhIHNlc3Npb24g
d2l0aCB0aGUgc2FtZSBkZXZpY2UgaWYgc2Vzc2lvbiBpcyBhbiBpbW1lcnNpdmUgc2Vzc2lvbi4K
KyAgICBpZiAobV9kZXZpY2UpCisgICAgICAgIG1fZGV2aWNlLT5zaHV0ZG93blRyYWNraW5nQW5k
UmVuZGVyaW5nKCk7CisKICAgICAvLyA3LiBRdWV1ZSBhIHRhc2sgdGhhdCBmaXJlcyBhbiBYUlNl
c3Npb25FdmVudCBuYW1lZCBlbmQgb24gc2Vzc2lvbi4KICAgICBhdXRvIGV2ZW50ID0gWFJTZXNz
aW9uRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZW5kRXZlbnQsIHsgbWFrZVJlZlB0cigqdGhp
cykgfSk7CiAgICAgcXVldWVUYXNrVG9EaXNwYXRjaEV2ZW50KCp0aGlzLCBUYXNrU291cmNlOjpX
ZWJYUiwgV1RGTW92ZShldmVudCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJ4ci9XZWJYUlN5c3RlbS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJY
UlN5c3RlbS5oCmluZGV4IDlhYWQxMjhiNTZlNmJmYzk3ZDNiNGZkMjA2MDk3MDdmMjVkMjZhNWUu
Ljk2OTJlMDkyYjA0MjUzYzEyZjdiNDg5OGI4NDExYTExMzliOTU1MzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTeXN0ZW0uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU3lzdGVtLmgKQEAgLTEwNyw2ICsxMDcsMTAgQEAgcHJp
dmF0ZToKICAgICBjbGFzcyBEdW1teUlubGluZURldmljZSBmaW5hbCA6IHB1YmxpYyBQbGF0Zm9y
bVhSOjpEZXZpY2UgewogICAgIHB1YmxpYzoKICAgICAgICAgRHVtbXlJbmxpbmVEZXZpY2UoKTsK
KworICAgIHByaXZhdGU6CisgICAgICAgIHZvaWQgaW5pdGlhbGl6ZVRyYWNraW5nQW5kUmVuZGVy
aW5nKFBsYXRmb3JtWFI6OlNlc3Npb25Nb2RlKSBmaW5hbCB7IH0KKyAgICAgICAgdm9pZCBzaHV0
ZG93blRyYWNraW5nQW5kUmVuZGVyaW5nKCkgZmluYWwgeyB9CiAgICAgfTsKICAgICBEdW1teUlu
bGluZURldmljZSBtX2RlZmF1bHRJbmxpbmVEZXZpY2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3hyL1BsYXRmb3JtWFIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3hyL1BsYXRmb3JtWFIuaAppbmRleCBlM2M1YjUyZmE5NjAzNjEyZWI0YTQ0Nzg1ZDQ5NGQ4NTVi
NjNhMWExLi44MzEwMDFkZmMyNGI5MTk3MGZkMTkzMWU3ZDBmMmJhMTY1NDhiODdlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9QbGF0Zm9ybVhSLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0veHIvUGxhdGZvcm1YUi5oCkBAIC01OCw2ICs1OCw5IEBAIHB1Ymxp
YzoKIAogICAgIGJvb2wgc3VwcG9ydHNPcmllbnRhdGlvblRyYWNraW5nKCkgY29uc3QgeyByZXR1
cm4gbV9zdXBwb3J0c09yaWVudGF0aW9uVHJhY2tpbmc7IH0KIAorICAgIHZpcnR1YWwgdm9pZCBp
bml0aWFsaXplVHJhY2tpbmdBbmRSZW5kZXJpbmcoU2Vzc2lvbk1vZGUpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgc2h1dGRvd25UcmFja2luZ0FuZFJlbmRlcmluZygpID0gMDsKKwogcHJvdGVjdGVk
OgogICAgIERldmljZSgpID0gZGVmYXVsdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0veHIvb3BlbnhyL1BsYXRmb3JtWFJPcGVuWFIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0veHIvb3BlbnhyL1BsYXRmb3JtWFJPcGVuWFIuY3BwCmluZGV4IDRiMmNlMTBhZjlm
YjhhODZlZjA0Zjg2NTIwYzYwODYyOWRlZjA1NTQuLmU4ZjdhOTUyMDkyM2RlMzg5MWM2ZmVhZWVj
MWE5N2E1MTliYjA3MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL29w
ZW54ci9QbGF0Zm9ybVhST3BlblhSLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94
ci9vcGVueHIvUGxhdGZvcm1YUk9wZW5YUi5jcHAKQEAgLTI0MCw2ICsyNDAsNyBAQCB2b2lkIElu
c3RhbmNlOjplbnVtZXJhdGVJbW1lcnNpdmVYUkRldmljZXMoKQogT3BlblhSRGV2aWNlOjpPcGVu
WFJEZXZpY2UoWHJTeXN0ZW1JZCBpZCwgWHJJbnN0YW5jZSBpbnN0YW5jZSkKICAgICA6IG1fc3lz
dGVtSWQoaWQpCiAgICAgLCBtX2luc3RhbmNlKGluc3RhbmNlKQorICAgICwgbV9zZXNzaW9uKFhS
X05VTExfSEFORExFKQogewogICAgIGF1dG8gc3lzdGVtUHJvcGVydGllcyA9IGNyZWF0ZVN0cnVj
dHVyZTxYclN5c3RlbVByb3BlcnRpZXMsIFhSX1RZUEVfU1lTVEVNX1BST1BFUlRJRVM+KCk7CiAg
ICAgWHJSZXN1bHQgcmVzdWx0ID0geHJHZXRTeXN0ZW1Qcm9wZXJ0aWVzKGluc3RhbmNlLCBtX3N5
c3RlbUlkLCAmc3lzdGVtUHJvcGVydGllcyk7CkBAIC0yNTIsNiArMjUzLDExIEBAIE9wZW5YUkRl
dmljZTo6T3BlblhSRGV2aWNlKFhyU3lzdGVtSWQgaWQsIFhySW5zdGFuY2UgaW5zdGFuY2UpCiAg
ICAgY29sbGVjdENvbmZpZ3VyYXRpb25WaWV3cygpOwogfQogCitPcGVuWFJEZXZpY2U6On5PcGVu
WFJEZXZpY2UoKQoreworICAgIHNodXRkb3duVHJhY2tpbmdBbmRSZW5kZXJpbmcoKTsKK30KKwog
RGV2aWNlOjpMaXN0T2ZFbmFibGVkRmVhdHVyZXMgT3BlblhSRGV2aWNlOjplbnVtZXJhdGVSZWZl
cmVuY2VTcGFjZXMoWHJTZXNzaW9uJiBzZXNzaW9uKSBjb25zdAogewogICAgIHVpbnQzMl90IHJl
ZmVyZW5jZVNwYWNlc0NvdW50OwpAQCAtMzY3LDYgKzM3Myw0MiBAQCBXZWJDb3JlOjpJbnRTaXpl
IE9wZW5YUkRldmljZTo6cmVjb21tZW5kZWRSZXNvbHV0aW9uKFNlc3Npb25Nb2RlIG1vZGUpCiAg
ICAgcmV0dXJuIERldmljZTo6cmVjb21tZW5kZWRSZXNvbHV0aW9uKG1vZGUpOwogfQogCitYclZp
ZXdDb25maWd1cmF0aW9uVHlwZSB0b1hyVmlld0NvbmZpZ3VyYXRpb25UeXBlKFNlc3Npb25Nb2Rl
IG1vZGUpCit7CisgICAgc3dpdGNoIChtb2RlKSB7CisgICAgY2FzZSBTZXNzaW9uTW9kZTo6SW1t
ZXJzaXZlVnI6CisgICAgICAgIHJldHVybiBYUl9WSUVXX0NPTkZJR1VSQVRJT05fVFlQRV9QUklN
QVJZX1NURVJFTzsKKyAgICBjYXNlIFNlc3Npb25Nb2RlOjpJbmxpbmU6CisgICAgZGVmYXVsdDoK
KyAgICAgICAgcmV0dXJuIFhSX1ZJRVdfQ09ORklHVVJBVElPTl9UWVBFX1BSSU1BUllfTU9OTzsK
KyAgICB9OworfQorCit2b2lkIE9wZW5YUkRldmljZTo6aW5pdGlhbGl6ZVRyYWNraW5nQW5kUmVu
ZGVyaW5nKFNlc3Npb25Nb2RlIG1vZGUpCit7CisgICAgQVNTRVJUKG1faW5zdGFuY2UgIT0gWFJf
TlVMTF9IQU5ETEUpOworICAgIEFTU0VSVChtX3Nlc3Npb24gPT0gWFJfTlVMTF9IQU5ETEUpOwor
CisgICAgbV9jdXJyZW50Vmlld0NvbmZpZ3VyYXRpb24gPSB0b1hyVmlld0NvbmZpZ3VyYXRpb25U
eXBlKG1vZGUpOworICAgIEFTU0VSVChtX2NvbmZpZ3VyYXRpb25WaWV3cy5jb250YWlucyhtX2N1
cnJlbnRWaWV3Q29uZmlndXJhdGlvbikpOworCisgICAgLy8gQ3JlYXRlIHRoZSBzZXNzaW9uLgor
ICAgIGF1dG8gc2Vzc2lvbkNyZWF0ZUluZm8gPSBjcmVhdGVTdHJ1Y3R1cmU8WHJTZXNzaW9uQ3Jl
YXRlSW5mbywgWFJfVFlQRV9TRVNTSU9OX0NSRUFURV9JTkZPPigpOworICAgIHNlc3Npb25DcmVh
dGVJbmZvLnN5c3RlbUlkID0gbV9zeXN0ZW1JZDsKKyAgICB4ckNyZWF0ZVNlc3Npb24obV9pbnN0
YW5jZSwgJnNlc3Npb25DcmVhdGVJbmZvLCAmbV9zZXNzaW9uKTsKK30KKwordm9pZCBPcGVuWFJE
ZXZpY2U6OnJlc2V0U2Vzc2lvbigpCit7CisgICAgeHJEZXN0cm95U2Vzc2lvbihtX3Nlc3Npb24p
OworICAgIG1fc2Vzc2lvbiA9IFhSX05VTExfSEFORExFOworfQorCit2b2lkIE9wZW5YUkRldmlj
ZTo6c2h1dGRvd25UcmFja2luZ0FuZFJlbmRlcmluZygpCit7CisgICAgcmVzZXRTZXNzaW9uKCk7
Cit9CisKICNlbmRpZiAvLyBVU0VfT1BFTlhSCiAKIH0gLy8gbmFtZXNwYWNlIFBsYXRmb3JtWFIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL29wZW54ci9QbGF0Zm9ybVhS
T3BlblhSLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvUGxhdGZvcm1YUk9w
ZW5YUi5oCmluZGV4IGMyODE1MDIzYTI3MmEzNDJmZjJhOWFjNDgyNTY5ZDUwMzYxNTgzN2IuLjJk
NmFhZmM2OTk5NzJjYmUzMjlhN2NiN2ExNTI1ZjExZWU1NzRiZjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3hyL29wZW54ci9QbGF0Zm9ybVhST3BlblhSLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL1BsYXRmb3JtWFJPcGVuWFIuaApAQCAtNDQs
NiArNDQsNyBAQCBuYW1lc3BhY2UgUGxhdGZvcm1YUiB7CiBjbGFzcyBPcGVuWFJEZXZpY2UgZmlu
YWwgOiBwdWJsaWMgRGV2aWNlIHsKIHB1YmxpYzoKICAgICBPcGVuWFJEZXZpY2UoWHJTeXN0ZW1J
ZCwgWHJJbnN0YW5jZSk7CisgICAgfk9wZW5YUkRldmljZSgpOwogICAgIFhyU3lzdGVtSWQgeHJT
eXN0ZW1JZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3lzdGVtSWQ7IH0KIHByaXZhdGU6CiAgICAgdm9p
ZCBjb2xsZWN0U3VwcG9ydGVkU2Vzc2lvbk1vZGVzKCk7CkBAIC01Myw2ICs1NCwxMSBAQCBwcml2
YXRlOgogCiAgICAgV2ViQ29yZTo6SW50U2l6ZSByZWNvbW1lbmRlZFJlc29sdXRpb24oU2Vzc2lv
bk1vZGUpIGZpbmFsOwogCisgICAgdm9pZCBpbml0aWFsaXplVHJhY2tpbmdBbmRSZW5kZXJpbmco
U2Vzc2lvbk1vZGUpIGZpbmFsOworICAgIHZvaWQgc2h1dGRvd25UcmFja2luZ0FuZFJlbmRlcmlu
ZygpIGZpbmFsOworCisgICAgdm9pZCByZXNldFNlc3Npb24oKTsKKwogICAgIHVzaW5nIFZpZXdD
b25maWd1cmF0aW9uUHJvcGVydGllc01hcCA9IEhhc2hNYXA8WHJWaWV3Q29uZmlndXJhdGlvblR5
cGUsIFhyVmlld0NvbmZpZ3VyYXRpb25Qcm9wZXJ0aWVzLCBJbnRIYXNoPFhyVmlld0NvbmZpZ3Vy
YXRpb25UeXBlPiwgV1RGOjpTdHJvbmdFbnVtSGFzaFRyYWl0czxYclZpZXdDb25maWd1cmF0aW9u
VHlwZT4+OwogICAgIFZpZXdDb25maWd1cmF0aW9uUHJvcGVydGllc01hcCBtX3ZpZXdDb25maWd1
cmF0aW9uUHJvcGVydGllczsKICAgICB1c2luZyBWaWV3Q29uZmlndXJhdGlvblZpZXdzTWFwID0g
SGFzaE1hcDxYclZpZXdDb25maWd1cmF0aW9uVHlwZSwgVmVjdG9yPFhyVmlld0NvbmZpZ3VyYXRp
b25WaWV3PiwgSW50SGFzaDxYclZpZXdDb25maWd1cmF0aW9uVHlwZT4sIFdURjo6U3Ryb25nRW51
bUhhc2hUcmFpdHM8WHJWaWV3Q29uZmlndXJhdGlvblR5cGU+PjsKQEAgLTYxLDYgKzY3LDggQEAg
cHJpdmF0ZToKICAgICBYclN5c3RlbUlkIG1fc3lzdGVtSWQ7CiAgICAgWHJJbnN0YW5jZSBtX2lu
c3RhbmNlOwogICAgIFhyU2Vzc2lvbiBtX3Nlc3Npb247CisKKyAgICBYclZpZXdDb25maWd1cmF0
aW9uVHlwZSBtX2N1cnJlbnRWaWV3Q29uZmlndXJhdGlvbjsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFBsYXRmb3JtWFIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2ViRmFrZVhS
RGV2aWNlLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYkZha2VYUkRldmljZS5oCmluZGV4
IDM2MDQ1Y2E1ZGJiYzcxYjY3MDc0NGRhNzhiYTg4MmVlZGVjZWI4OWMuLmJmOTEwMDhlY2NlNWY0
N2QxMjhlOTM0Njk3ZDc5ZDRlNDk0YjI3MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvV2ViRmFrZVhSRGV2aWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9XZWJG
YWtlWFJEZXZpY2UuaApAQCAtNzAsNiArNzAsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRFbXVs
YXRlZFBvc2l0aW9uKGJvb2wgZW11bGF0ZWQpIHsgbV9lbXVsYXRlZFBvc2l0aW9uID0gZW11bGF0
ZWQ7IH0KICAgICBWZWN0b3I8UmVmPEZha2VYUlZpZXc+PiYgdmlld3MoKSB7IHJldHVybiBtX3Zp
ZXdzOyB9CiBwcml2YXRlOgorICAgIHZvaWQgaW5pdGlhbGl6ZVRyYWNraW5nQW5kUmVuZGVyaW5n
KFBsYXRmb3JtWFI6OlNlc3Npb25Nb2RlKSBmaW5hbCB7IH0KKyAgICB2b2lkIHNodXRkb3duVHJh
Y2tpbmdBbmRSZW5kZXJpbmcoKSBmaW5hbCB7IH0KICAgICBPcHRpb25hbDxWZWN0b3I8RmFrZVhS
Qm91bmRzUG9pbnQ+PiBtX25hdGl2ZUJvdW5kc0dlb21ldHJ5OwogICAgIFJlZlB0cjxXZWJYUlJp
Z2lkVHJhbnNmb3JtPiBtX3ZpZXdlck9yaWdpbjsKICAgICBSZWZQdHI8V2ViWFJSaWdpZFRyYW5z
Zm9ybT4gbV9mbG9vck9yaWdpbjsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>412416</attachid>
            <date>2020-10-27 06:14:08 -0700</date>
            <delta_ts>2020-12-04 11:23:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216925-20201027141407.patch</filename>
            <type>text/plain</type>
            <size>9750</size>
            <attacher name="Sergio Villar Senin">svillar</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5MDMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjJjZDU0YmJkMmM0Yjlh
ODA2YWUyMmEyZTkyNzAyMTdmODFiNjE0ZC4uMzY1MmU4ZDY3NjZkOGJlNWNkMDE3MmMxY2JhODA1
NTM0ZTAxMGU1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDIwLTA5LTI0ICBTZXJn
aW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgorCisgICAgICAgIFtXZWJYUl0g
SW5pdGlhbCBpbXBsZW1lbnRpb24gb2YgZGV2aWNlIGluaXRpYWxpemF0aW9uL3NodXRkb3duIHdp
dGggT3BlblhSCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMTY5MjUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBZGRlZCBhIHZlcnkgYmFzaWMgaW5pdGlhbGl6YXRpb24gYW5kIHNodXRkb3duIHByb2Nlc3Nl
cyBvZiBYUiBkZXZpY2VzIHVzaW5nIE9wZW5YUi4gU28gZmFyIHdlJ3JlIGp1c3QgY3JlYXRpbmcg
YW5kIGRlc3Ryb3lpbmcKKyAgICAgICAgdGhlIFhSIHNlc3Npb24uIEZvbGxvdyB1cCBwYXRjaGVz
IHdpbGwgYWRkIHRoZSByZXF1aXJlZCBtYWNoaW5lcnkgdG8gZ2V0IGZyYW1lIGRhdGEgZnJvbSBP
cGVuWFIuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSU2Vzc2lvbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJYUlNlc3Npb246OldlYlhSU2Vzc2lvbik6IENhbGwgaW5pdGlhbGl6
ZVRyYWNraW5nQW5kUmVuZGVyaW5nKCkuCisgICAgICAgIChXZWJDb3JlOjpXZWJYUlNlc3Npb246
On5XZWJYUlNlc3Npb24pOiBDYWxsIHNodXRkb3duVHJhY2tpbmdBbmRSZW5kZXJpbmcoKS4KKyAg
ICAgICAgKFdlYkNvcmU6OldlYlhSU2Vzc2lvbjo6c2h1dGRvd24pOiBEaXR0by4KKyAgICAgICAg
KiBNb2R1bGVzL3dlYnhyL1dlYlhSU3lzdGVtLmg6CisgICAgICAgICogcGxhdGZvcm0veHIvUGxh
dGZvcm1YUi5oOiBOZXcgdmlydHVhbCBtZXRob2RzIHRvIGluaXRpYWxpemUvc2h1dGRvd24gZGV2
aWNlcy4KKyAgICAgICAgKiBwbGF0Zm9ybS94ci9vcGVueHIvUGxhdGZvcm1YUk9wZW5YUi5jcHA6
CisgICAgICAgIChQbGF0Zm9ybVhSOjpPcGVuWFJEZXZpY2U6Ok9wZW5YUkRldmljZSk6IEluaXRp
YWxpemUgbV9zZXNzaW9uLgorICAgICAgICAoUGxhdGZvcm1YUjo6T3BlblhSRGV2aWNlOjp+T3Bl
blhSRGV2aWNlKTogQ2FsbCBzaHV0ZG93blRyYWNraW5nQW5kUmVuZGVyaW5nKCkuCisgICAgICAg
IChQbGF0Zm9ybVhSOjp0b1hyVmlld0NvbmZpZ3VyYXRpb25UeXBlKTogTmV3IG1ldGhvZC4gVHJh
bnNsYXRlcyBmcm9tIFNlc3Npb25Nb2RlIHRvIFhyVmlld0NvbmZpZ3VyYXRpb25UeXBlLgorICAg
ICAgICAoUGxhdGZvcm1YUjo6T3BlblhSRGV2aWNlOjppbml0aWFsaXplVHJhY2tpbmdBbmRSZW5k
ZXJpbmcpOiBOZXcgbWV0aG9kLiBDcmVhdGVzIGEgc2Vzc2lvbiB3aXRoIGEgZ2l2ZW4gbW9kZS4K
KyAgICAgICAgKFBsYXRmb3JtWFI6Ok9wZW5YUkRldmljZTo6cmVzZXRTZXNzaW9uKTogRGVzdHJv
eXMgc2Vzc2lvbi4KKyAgICAgICAgKFBsYXRmb3JtWFI6Ok9wZW5YUkRldmljZTo6c2h1dGRvd25U
cmFja2luZ0FuZFJlbmRlcmluZyk6CisgICAgICAgICogcGxhdGZvcm0veHIvb3BlbnhyL1BsYXRm
b3JtWFJPcGVuWFIuaDoKKyAgICAgICAgKiB0ZXN0aW5nL1dlYkZha2VYUkRldmljZS5oOiBBZGRl
ZCBlbXB0eSBpbXBsZW1lbnRhdGlvbnMgZm9yIHRoZSBuZXcgdmlydHVhbCBtZXRob2RzLgorCiAy
MDIwLTEwLTE1ICBTZXJnaW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgogCiAg
ICAgICAgIFtXZWJYUl0gTW92ZSBPcGVuWFIgY2FsbHMgb2ZmIHRoZSBtYWluIHRocmVhZApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlNlc3Npb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlNlc3Npb24uY3BwCmluZGV4IDVmNTAw
YTE5MzFmZmVkNDg3NTI0NDc4OGFmM2U3ZmI2ZjIxNzMwODIuLjNlOTJlMTRhNmI1MDNlNGM1MTM4
ODJiM2U1ODcxZjJkZmIxZjNhNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2VieHIvV2ViWFJTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhy
L1dlYlhSU2Vzc2lvbi5jcHAKQEAgLTU3LDEyICs1NywxOCBAQCBXZWJYUlNlc3Npb246OldlYlhS
U2Vzc2lvbihEb2N1bWVudCYgZG9jdW1lbnQsIFdlYlhSU3lzdGVtJiBzeXN0ZW0sIFhSU2Vzc2lv
bk1vZAogICAgICwgbV9hY3RpdmVSZW5kZXJTdGF0ZShXZWJYUlJlbmRlclN0YXRlOjpjcmVhdGUo
bW9kZSkpCiAgICAgLCBtX2FuaW1hdGlvblRpbWVyKCp0aGlzLCAmV2ViWFJTZXNzaW9uOjphbmlt
YXRpb25UaW1lckZpcmVkKQogewotICAgIC8vIEZJWE1FOiBJZiBubyBvdGhlciBmZWF0dXJlcyBv
ZiB0aGUgdXNlciBhZ2VudCBoYXZlIGRvbmUgc28gYWxyZWFkeSwgcGVyZm9ybSB0aGUgbmVjZXNz
YXJ5IHBsYXRmb3JtLXNwZWNpZmljIHN0ZXBzIHRvCisgICAgLy8gSWYgbm8gb3RoZXIgZmVhdHVy
ZXMgb2YgdGhlIHVzZXIgYWdlbnQgaGF2ZSBkb25lIHNvIGFscmVhZHksIHBlcmZvcm0gdGhlIG5l
Y2Vzc2FyeSBwbGF0Zm9ybS1zcGVjaWZpYyBzdGVwcyB0bwogICAgIC8vIGluaXRpYWxpemUgdGhl
IGRldmljZSdzIHRyYWNraW5nIGFuZCByZW5kZXJpbmcgY2FwYWJpbGl0aWVzLCBpbmNsdWRpbmcg
c2hvd2luZyBhbnkgbmVjZXNzYXJ5IGluc3RydWN0aW9ucyB0byB0aGUgdXNlci4KKyAgICBtX2Rl
dmljZS0+aW5pdGlhbGl6ZVRyYWNraW5nQW5kUmVuZGVyaW5nKG1vZGUpOworCiAgICAgc3VzcGVu
ZElmTmVlZGVkKCk7CiB9CiAKLVdlYlhSU2Vzc2lvbjo6fldlYlhSU2Vzc2lvbigpID0gZGVmYXVs
dDsKK1dlYlhSU2Vzc2lvbjo6fldlYlhSU2Vzc2lvbigpCit7CisgICAgaWYgKCFtX2VuZGVkICYm
IG1fZGV2aWNlKQorICAgICAgICBtX2RldmljZS0+c2h1dGRvd25UcmFja2luZ0FuZFJlbmRlcmlu
ZygpOworfQogCiBYUkVudmlyb25tZW50QmxlbmRNb2RlIFdlYlhSU2Vzc2lvbjo6ZW52aXJvbm1l
bnRCbGVuZE1vZGUoKSBjb25zdAogewpAQCAtMzI5LDYgKzMzNSw5IEBAIHZvaWQgV2ViWFJTZXNz
aW9uOjpzaHV0ZG93bigpCiAgICAgLy8gIDYuMS4gUmVsZWFzaW5nIGV4Y2x1c2l2ZSBhY2Nlc3Mg
dG8gdGhlIFhSIGRldmljZSBpZiBzZXNzaW9uIGlzIGFuIGltbWVyc2l2ZSBzZXNzaW9uLgogICAg
IC8vICA2LjIuIERlYWxsb2NhdGluZyBhbnkgZ3JhcGhpY3MgcmVzb3VyY2VzIGFjcXVpcmVkIGJ5
IHNlc3Npb24gZm9yIHByZXNlbnRhdGlvbiB0byB0aGUgWFIgZGV2aWNlLgogICAgIC8vICA2LjMu
IFB1dHRpbmcgdGhlIFhSIGRldmljZSBpbiBhIHN0YXRlIHN1Y2ggdGhhdCBhIGRpZmZlcmVudCBz
b3VyY2UgbWF5IGJlIGFibGUgdG8gaW5pdGlhdGUgYSBzZXNzaW9uIHdpdGggdGhlIHNhbWUgZGV2
aWNlIGlmIHNlc3Npb24gaXMgYW4gaW1tZXJzaXZlIHNlc3Npb24uCisgICAgaWYgKG1fZGV2aWNl
KQorICAgICAgICBtX2RldmljZS0+c2h1dGRvd25UcmFja2luZ0FuZFJlbmRlcmluZygpOworCiAg
ICAgLy8gNy4gUXVldWUgYSB0YXNrIHRoYXQgZmlyZXMgYW4gWFJTZXNzaW9uRXZlbnQgbmFtZWQg
ZW5kIG9uIHNlc3Npb24uCiAgICAgYXV0byBldmVudCA9IFhSU2Vzc2lvbkV2ZW50OjpjcmVhdGUo
ZXZlbnROYW1lcygpLmVuZEV2ZW50LCB7IG1ha2VSZWZQdHIoKnRoaXMpIH0pOwogICAgIHF1ZXVl
VGFza1RvRGlzcGF0Y2hFdmVudCgqdGhpcywgVGFza1NvdXJjZTo6V2ViWFIsIFdURk1vdmUoZXZl
bnQpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTeXN0
ZW0uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTeXN0ZW0uaAppbmRleCBh
NjgwNmY3ODc0MDZhMWYwYzIyY2Y1MmY2MjUxN2Q5ZGM5M2E5M2I3Li4wOWQwMDNhZTdiZjdhNTdh
NmJlYWM3ODdmM2UxOGMyZGU2OTdlZmY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnhyL1dlYlhSU3lzdGVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4
ci9XZWJYUlN5c3RlbS5oCkBAIC0xMDcsNiArMTA3LDEwIEBAIHByaXZhdGU6CiAgICAgY2xhc3Mg
RHVtbXlJbmxpbmVEZXZpY2UgZmluYWwgOiBwdWJsaWMgUGxhdGZvcm1YUjo6RGV2aWNlIHsKICAg
ICBwdWJsaWM6CiAgICAgICAgIER1bW15SW5saW5lRGV2aWNlKCk7CisKKyAgICBwcml2YXRlOgor
ICAgICAgICB2b2lkIGluaXRpYWxpemVUcmFja2luZ0FuZFJlbmRlcmluZyhQbGF0Zm9ybVhSOjpT
ZXNzaW9uTW9kZSkgZmluYWwgeyB9CisgICAgICAgIHZvaWQgc2h1dGRvd25UcmFja2luZ0FuZFJl
bmRlcmluZygpIGZpbmFsIHsgfQogICAgIH07CiAgICAgRHVtbXlJbmxpbmVEZXZpY2UgbV9kZWZh
dWx0SW5saW5lRGV2aWNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94
ci9QbGF0Zm9ybVhSLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9QbGF0Zm9ybVhSLmgK
aW5kZXggZTU0ZTI2MjRmMjVjOWI2ODA0YjY3YmNkOTI5ZWQ2ZjljZGFiNzc3OS4uZDkyN2VkZTA1
NTA1ZDk3OTQwYWRjOTZkMTA3MTUxMjg2ZTY0OTcxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0veHIvUGxhdGZvcm1YUi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3hyL1BsYXRmb3JtWFIuaApAQCAtNTksNiArNTksOSBAQCBwdWJsaWM6CiAKICAgICBib29sIHN1
cHBvcnRzT3JpZW50YXRpb25UcmFja2luZygpIGNvbnN0IHsgcmV0dXJuIG1fc3VwcG9ydHNPcmll
bnRhdGlvblRyYWNraW5nOyB9CiAKKyAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZVRyYWNraW5n
QW5kUmVuZGVyaW5nKFNlc3Npb25Nb2RlKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNodXRkb3du
VHJhY2tpbmdBbmRSZW5kZXJpbmcoKSA9IDA7CisKIHByb3RlY3RlZDoKICAgICBEZXZpY2UoKSA9
IGRlZmF1bHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL29wZW54
ci9QbGF0Zm9ybVhST3BlblhSLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL29wZW54
ci9QbGF0Zm9ybVhST3BlblhSLmNwcAppbmRleCAyOTRhZDUzNWVjZDRlMTlmYWYzNGVjYzU1MDM0
YzJiOTM5OGI4ODdkLi5hNjY0YWRkZWNkMjdiZDcxYmYyMWI1ZWVmYmEwYmUxZjJjY2RiMzU4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvUGxhdGZvcm1YUk9w
ZW5YUi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL1BsYXRmb3Jt
WFJPcGVuWFIuY3BwCkBAIC0yNjEsNiArMjYxLDcgQEAgdm9pZCBJbnN0YW5jZTo6ZW51bWVyYXRl
SW1tZXJzaXZlWFJEZXZpY2VzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgRGV2aWNlTGkK
IE9wZW5YUkRldmljZTo6T3BlblhSRGV2aWNlKFhyU3lzdGVtSWQgaWQsIFhySW5zdGFuY2UgaW5z
dGFuY2UsIFdvcmtRdWV1ZSYgcXVldWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjYWxs
YmFjaykKICAgICA6IG1fc3lzdGVtSWQoaWQpCiAgICAgLCBtX2luc3RhbmNlKGluc3RhbmNlKQor
ICAgICwgbV9zZXNzaW9uKFhSX05VTExfSEFORExFKQogICAgICwgbV9xdWV1ZShxdWV1ZSkKIHsK
ICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwpAQCAtMjgyLDYgKzI4MywxMSBAQCBPcGVuWFJE
ZXZpY2U6Ok9wZW5YUkRldmljZShYclN5c3RlbUlkIGlkLCBYckluc3RhbmNlIGluc3RhbmNlLCBX
b3JrUXVldWUmIHF1ZXVlLAogICAgIH0pOwogfQogCitPcGVuWFJEZXZpY2U6On5PcGVuWFJEZXZp
Y2UoKQoreworICAgIHNodXRkb3duVHJhY2tpbmdBbmRSZW5kZXJpbmcoKTsKK30KKwogRGV2aWNl
OjpMaXN0T2ZFbmFibGVkRmVhdHVyZXMgT3BlblhSRGV2aWNlOjplbnVtZXJhdGVSZWZlcmVuY2VT
cGFjZXMoWHJTZXNzaW9uJiBzZXNzaW9uKSBjb25zdAogewogICAgIHVpbnQzMl90IHJlZmVyZW5j
ZVNwYWNlc0NvdW50OwpAQCAtMzk5LDYgKzQwNSw0NiBAQCBXZWJDb3JlOjpJbnRTaXplIE9wZW5Y
UkRldmljZTo6cmVjb21tZW5kZWRSZXNvbHV0aW9uKFNlc3Npb25Nb2RlIG1vZGUpCiAgICAgcmV0
dXJuIERldmljZTo6cmVjb21tZW5kZWRSZXNvbHV0aW9uKG1vZGUpOwogfQogCitYclZpZXdDb25m
aWd1cmF0aW9uVHlwZSB0b1hyVmlld0NvbmZpZ3VyYXRpb25UeXBlKFNlc3Npb25Nb2RlIG1vZGUp
Cit7CisgICAgc3dpdGNoIChtb2RlKSB7CisgICAgY2FzZSBTZXNzaW9uTW9kZTo6SW1tZXJzaXZl
VnI6CisgICAgICAgIHJldHVybiBYUl9WSUVXX0NPTkZJR1VSQVRJT05fVFlQRV9QUklNQVJZX1NU
RVJFTzsKKyAgICBjYXNlIFNlc3Npb25Nb2RlOjpJbmxpbmU6CisgICAgZGVmYXVsdDoKKyAgICAg
ICAgcmV0dXJuIFhSX1ZJRVdfQ09ORklHVVJBVElPTl9UWVBFX1BSSU1BUllfTU9OTzsKKyAgICB9
OworfQorCit2b2lkIE9wZW5YUkRldmljZTo6aW5pdGlhbGl6ZVRyYWNraW5nQW5kUmVuZGVyaW5n
KFNlc3Npb25Nb2RlIG1vZGUpCit7CisgICAgbV9xdWV1ZS5kaXNwYXRjaChbdGhpcywgbW9kZV0o
KSB7CisgICAgICAgIEFTU0VSVChtX2luc3RhbmNlICE9IFhSX05VTExfSEFORExFKTsKKyAgICAg
ICAgQVNTRVJUKG1fc2Vzc2lvbiA9PSBYUl9OVUxMX0hBTkRMRSk7CisKKyAgICAgICAgbV9jdXJy
ZW50Vmlld0NvbmZpZ3VyYXRpb24gPSB0b1hyVmlld0NvbmZpZ3VyYXRpb25UeXBlKG1vZGUpOwor
ICAgICAgICBBU1NFUlQobV9jb25maWd1cmF0aW9uVmlld3MuY29udGFpbnMobV9jdXJyZW50Vmll
d0NvbmZpZ3VyYXRpb24pKTsKKworICAgICAgICAvLyBDcmVhdGUgdGhlIHNlc3Npb24uCisgICAg
ICAgIGF1dG8gc2Vzc2lvbkNyZWF0ZUluZm8gPSBjcmVhdGVTdHJ1Y3R1cmU8WHJTZXNzaW9uQ3Jl
YXRlSW5mbywgWFJfVFlQRV9TRVNTSU9OX0NSRUFURV9JTkZPPigpOworICAgICAgICBzZXNzaW9u
Q3JlYXRlSW5mby5zeXN0ZW1JZCA9IG1fc3lzdGVtSWQ7CisgICAgICAgIHhyQ3JlYXRlU2Vzc2lv
bihtX2luc3RhbmNlLCAmc2Vzc2lvbkNyZWF0ZUluZm8sICZtX3Nlc3Npb24pOworICAgIH0pOwor
fQorCit2b2lkIE9wZW5YUkRldmljZTo6cmVzZXRTZXNzaW9uKCkKK3sKKyAgICBtX3F1ZXVlLmRp
c3BhdGNoKFt0aGlzXSgpIHsKKyAgICAgICAgeHJEZXN0cm95U2Vzc2lvbihtX3Nlc3Npb24pOwor
ICAgICAgICBtX3Nlc3Npb24gPSBYUl9OVUxMX0hBTkRMRTsKKyAgICB9KTsKK30KKwordm9pZCBP
cGVuWFJEZXZpY2U6OnNodXRkb3duVHJhY2tpbmdBbmRSZW5kZXJpbmcoKQoreworICAgIHJlc2V0
U2Vzc2lvbigpOworfQorCiAjZW5kaWYgLy8gVVNFX09QRU5YUgogCiB9IC8vIG5hbWVzcGFjZSBQ
bGF0Zm9ybVhSCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIv
UGxhdGZvcm1YUk9wZW5YUi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL1Bs
YXRmb3JtWFJPcGVuWFIuaAppbmRleCBhMzUwNGVjNTkzM2JjZWNjN2YyMTgzNTFlZDUxZDlkOTRh
YzQ3ZWMxLi45N2M0ODk2NTVkMDJhMmE1MzdiYzg3ZTYyOGJkODhmYjNhNWRkYzdmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvUGxhdGZvcm1YUk9wZW5YUi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL29wZW54ci9QbGF0Zm9ybVhST3BlblhS
LmgKQEAgLTQ1LDYgKzQ1LDcgQEAgbmFtZXNwYWNlIFBsYXRmb3JtWFIgewogY2xhc3MgT3BlblhS
RGV2aWNlIGZpbmFsIDogcHVibGljIERldmljZSB7CiBwdWJsaWM6CiAgICAgT3BlblhSRGV2aWNl
KFhyU3lzdGVtSWQsIFhySW5zdGFuY2UsIFdvcmtRdWV1ZSYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJik7CisgICAgfk9wZW5YUkRldmljZSgpOwogICAgIFhyU3lzdGVtSWQgeHJTeXN0ZW1J
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3lzdGVtSWQ7IH0KIAogcHJpdmF0ZToKQEAgLTU1LDYgKzU2
LDExIEBAIHByaXZhdGU6CiAKICAgICBXZWJDb3JlOjpJbnRTaXplIHJlY29tbWVuZGVkUmVzb2x1
dGlvbihTZXNzaW9uTW9kZSkgZmluYWw7CiAKKyAgICB2b2lkIGluaXRpYWxpemVUcmFja2luZ0Fu
ZFJlbmRlcmluZyhTZXNzaW9uTW9kZSkgZmluYWw7CisgICAgdm9pZCBzaHV0ZG93blRyYWNraW5n
QW5kUmVuZGVyaW5nKCkgZmluYWw7CisKKyAgICB2b2lkIHJlc2V0U2Vzc2lvbigpOworCiAgICAg
dXNpbmcgVmlld0NvbmZpZ3VyYXRpb25Qcm9wZXJ0aWVzTWFwID0gSGFzaE1hcDxYclZpZXdDb25m
aWd1cmF0aW9uVHlwZSwgWHJWaWV3Q29uZmlndXJhdGlvblByb3BlcnRpZXMsIEludEhhc2g8WHJW
aWV3Q29uZmlndXJhdGlvblR5cGU+LCBXVEY6OlN0cm9uZ0VudW1IYXNoVHJhaXRzPFhyVmlld0Nv
bmZpZ3VyYXRpb25UeXBlPj47CiAgICAgVmlld0NvbmZpZ3VyYXRpb25Qcm9wZXJ0aWVzTWFwIG1f
dmlld0NvbmZpZ3VyYXRpb25Qcm9wZXJ0aWVzOwogICAgIHVzaW5nIFZpZXdDb25maWd1cmF0aW9u
Vmlld3NNYXAgPSBIYXNoTWFwPFhyVmlld0NvbmZpZ3VyYXRpb25UeXBlLCBWZWN0b3I8WHJWaWV3
Q29uZmlndXJhdGlvblZpZXc+LCBJbnRIYXNoPFhyVmlld0NvbmZpZ3VyYXRpb25UeXBlPiwgV1RG
OjpTdHJvbmdFbnVtSGFzaFRyYWl0czxYclZpZXdDb25maWd1cmF0aW9uVHlwZT4+OwpAQCAtNjUs
NiArNzEsOCBAQCBwcml2YXRlOgogICAgIFhyU2Vzc2lvbiBtX3Nlc3Npb247CiAKICAgICBXb3Jr
UXVldWUmIG1fcXVldWU7CisKKyAgICBYclZpZXdDb25maWd1cmF0aW9uVHlwZSBtX2N1cnJlbnRW
aWV3Q29uZmlndXJhdGlvbjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFBsYXRmb3JtWFIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2ViRmFrZVhSRGV2aWNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL1dlYkZha2VYUkRldmljZS5oCmluZGV4IDM2MDQ1Y2E1ZGJiYzcxYjY3
MDc0NGRhNzhiYTg4MmVlZGVjZWI4OWMuLmJmOTEwMDhlY2NlNWY0N2QxMjhlOTM0Njk3ZDc5ZDRl
NDk0YjI3MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2ViRmFrZVhSRGV2
aWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9XZWJGYWtlWFJEZXZpY2UuaApAQCAt
NzAsNiArNzAsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRFbXVsYXRlZFBvc2l0aW9uKGJvb2wg
ZW11bGF0ZWQpIHsgbV9lbXVsYXRlZFBvc2l0aW9uID0gZW11bGF0ZWQ7IH0KICAgICBWZWN0b3I8
UmVmPEZha2VYUlZpZXc+PiYgdmlld3MoKSB7IHJldHVybiBtX3ZpZXdzOyB9CiBwcml2YXRlOgor
ICAgIHZvaWQgaW5pdGlhbGl6ZVRyYWNraW5nQW5kUmVuZGVyaW5nKFBsYXRmb3JtWFI6OlNlc3Np
b25Nb2RlKSBmaW5hbCB7IH0KKyAgICB2b2lkIHNodXRkb3duVHJhY2tpbmdBbmRSZW5kZXJpbmco
KSBmaW5hbCB7IH0KICAgICBPcHRpb25hbDxWZWN0b3I8RmFrZVhSQm91bmRzUG9pbnQ+PiBtX25h
dGl2ZUJvdW5kc0dlb21ldHJ5OwogICAgIFJlZlB0cjxXZWJYUlJpZ2lkVHJhbnNmb3JtPiBtX3Zp
ZXdlck9yaWdpbjsKICAgICBSZWZQdHI8V2ViWFJSaWdpZFRyYW5zZm9ybT4gbV9mbG9vck9yaWdp
bjsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415435</attachid>
            <date>2020-12-04 11:23:33 -0800</date>
            <delta_ts>2021-01-05 12:52:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216925-20201204202331.patch</filename>
            <type>text/plain</type>
            <size>12101</size>
            <attacher name="Sergio Villar Senin">svillar</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNDM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2FlMjg5MzBiNzRmYmZk
NzMwMWQ2OGY5YjFiMGJjZjc4YTg2YzlmNy4uYmUzNzVjNzg0ZjQ5NDA0MzU3YTY5MzkxYjRlZDhl
NjA5MjU4ZjM5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDIwLTA5LTI0ICBTZXJn
aW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgorCisgICAgICAgIFtXZWJYUl0g
SW5pdGlhbCBpbXBsZW1lbnRpb24gb2YgZGV2aWNlIGluaXRpYWxpemF0aW9uL3NodXRkb3duIHdp
dGggT3BlblhSCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMTY5MjUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBZGRlZCBhIHZlcnkgYmFzaWMgaW5pdGlhbGl6YXRpb24gYW5kIHNodXRkb3duIHByb2Nlc3Nl
cyBvZiBYUiBkZXZpY2VzIHVzaW5nIE9wZW5YUi4gU28gZmFyIHdlJ3JlIGp1c3QgY3JlYXRpbmcg
YW5kIGRlc3Ryb3lpbmcKKyAgICAgICAgdGhlIFhSIHNlc3Npb24uIEZvbGxvdyB1cCBwYXRjaGVz
IHdpbGwgYWRkIHRoZSByZXF1aXJlZCBtYWNoaW5lcnkgdG8gZ2V0IGZyYW1lIGRhdGEgZnJvbSBP
cGVuWFIuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSU2Vzc2lvbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJYUlNlc3Npb246OldlYlhSU2Vzc2lvbik6IENhbGwgaW5pdGlhbGl6
ZVRyYWNraW5nQW5kUmVuZGVyaW5nKCkuCisgICAgICAgIChXZWJDb3JlOjpXZWJYUlNlc3Npb246
On5XZWJYUlNlc3Npb24pOiBDYWxsIHNodXRkb3duVHJhY2tpbmdBbmRSZW5kZXJpbmcoKS4KKyAg
ICAgICAgKFdlYkNvcmU6OldlYlhSU2Vzc2lvbjo6c2h1dGRvd24pOiBEaXR0by4KKyAgICAgICAg
KiBNb2R1bGVzL3dlYnhyL1dlYlhSU3lzdGVtLmg6CisgICAgICAgICogcGxhdGZvcm0veHIvUGxh
dGZvcm1YUi5oOiBOZXcgdmlydHVhbCBtZXRob2RzIHRvIGluaXRpYWxpemUvc2h1dGRvd24gZGV2
aWNlcy4KKyAgICAgICAgKiBwbGF0Zm9ybS94ci9vcGVueHIvUGxhdGZvcm1YUk9wZW5YUi5jcHA6
CisgICAgICAgIChQbGF0Zm9ybVhSOjpPcGVuWFJEZXZpY2U6Ok9wZW5YUkRldmljZSk6IEluaXRp
YWxpemUgbV9zZXNzaW9uLgorICAgICAgICAoUGxhdGZvcm1YUjo6T3BlblhSRGV2aWNlOjp+T3Bl
blhSRGV2aWNlKTogQ2FsbCBzaHV0ZG93blRyYWNraW5nQW5kUmVuZGVyaW5nKCkuCisgICAgICAg
IChQbGF0Zm9ybVhSOjp0b1hyVmlld0NvbmZpZ3VyYXRpb25UeXBlKTogTmV3IG1ldGhvZC4gVHJh
bnNsYXRlcyBmcm9tIFNlc3Npb25Nb2RlIHRvIFhyVmlld0NvbmZpZ3VyYXRpb25UeXBlLgorICAg
ICAgICAoUGxhdGZvcm1YUjo6T3BlblhSRGV2aWNlOjppbml0aWFsaXplVHJhY2tpbmdBbmRSZW5k
ZXJpbmcpOiBOZXcgbWV0aG9kLiBDcmVhdGVzIGEgc2Vzc2lvbiB3aXRoIGEgZ2l2ZW4gbW9kZS4K
KyAgICAgICAgKFBsYXRmb3JtWFI6Ok9wZW5YUkRldmljZTo6cmVzZXRTZXNzaW9uKTogRGVzdHJv
eXMgc2Vzc2lvbi4KKyAgICAgICAgKFBsYXRmb3JtWFI6Ok9wZW5YUkRldmljZTo6c2h1dGRvd25U
cmFja2luZ0FuZFJlbmRlcmluZyk6CisgICAgICAgICogcGxhdGZvcm0veHIvb3BlbnhyL1BsYXRm
b3JtWFJPcGVuWFIuaDoKKyAgICAgICAgKiB0ZXN0aW5nL1dlYkZha2VYUkRldmljZS5oOiBBZGRl
ZCBlbXB0eSBpbXBsZW1lbnRhdGlvbnMgZm9yIHRoZSBuZXcgdmlydHVhbCBtZXRob2RzLgorCiAy
MDIwLTEyLTA0ICBQZW5nIExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CiAKICAgICAgICAgW01T
RV0gTW92ZSB0cmFjayBidWZmZXIgbWFuYWdlbWVudCBmcm9tIFNvdXJjZUJ1ZmZlciB0byBTb3Vy
Y2VCdWZmZXJQcml2YXRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhy
L1dlYlhSU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU2Vz
c2lvbi5jcHAKaW5kZXggNWY1MDBhMTkzMWZmZWQ0ODc1MjQ0Nzg4YWYzZTdmYjZmMjE3MzA4Mi4u
MDAyNDJmYWFmNDA5YmRiNTBhZmJmY2ZlOTliYTkzYjYwMDFkNDhiMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTZXNzaW9uLmNwcApAQCAtNTcsMTIgKzU3LDE4IEBA
IFdlYlhSU2Vzc2lvbjo6V2ViWFJTZXNzaW9uKERvY3VtZW50JiBkb2N1bWVudCwgV2ViWFJTeXN0
ZW0mIHN5c3RlbSwgWFJTZXNzaW9uTW9kCiAgICAgLCBtX2FjdGl2ZVJlbmRlclN0YXRlKFdlYlhS
UmVuZGVyU3RhdGU6OmNyZWF0ZShtb2RlKSkKICAgICAsIG1fYW5pbWF0aW9uVGltZXIoKnRoaXMs
ICZXZWJYUlNlc3Npb246OmFuaW1hdGlvblRpbWVyRmlyZWQpCiB7Ci0gICAgLy8gRklYTUU6IElm
IG5vIG90aGVyIGZlYXR1cmVzIG9mIHRoZSB1c2VyIGFnZW50IGhhdmUgZG9uZSBzbyBhbHJlYWR5
LCBwZXJmb3JtIHRoZSBuZWNlc3NhcnkgcGxhdGZvcm0tc3BlY2lmaWMgc3RlcHMgdG8KKyAgICAv
LyBJZiBubyBvdGhlciBmZWF0dXJlcyBvZiB0aGUgdXNlciBhZ2VudCBoYXZlIGRvbmUgc28gYWxy
ZWFkeSwgcGVyZm9ybSB0aGUgbmVjZXNzYXJ5IHBsYXRmb3JtLXNwZWNpZmljIHN0ZXBzIHRvCiAg
ICAgLy8gaW5pdGlhbGl6ZSB0aGUgZGV2aWNlJ3MgdHJhY2tpbmcgYW5kIHJlbmRlcmluZyBjYXBh
YmlsaXRpZXMsIGluY2x1ZGluZyBzaG93aW5nIGFueSBuZWNlc3NhcnkgaW5zdHJ1Y3Rpb25zIHRv
IHRoZSB1c2VyLgorICAgIG1fZGV2aWNlLT5pbml0aWFsaXplVHJhY2tpbmdBbmRSZW5kZXJpbmco
bW9kZSk7CisKICAgICBzdXNwZW5kSWZOZWVkZWQoKTsKIH0KIAotV2ViWFJTZXNzaW9uOjp+V2Vi
WFJTZXNzaW9uKCkgPSBkZWZhdWx0OworV2ViWFJTZXNzaW9uOjp+V2ViWFJTZXNzaW9uKCkKK3sK
KyAgICBpZiAoIW1fZW5kZWQgJiYgbV9kZXZpY2UpCisgICAgICAgIG1fZGV2aWNlLT5zaHV0ZG93
blRyYWNraW5nQW5kUmVuZGVyaW5nKCk7Cit9CiAKIFhSRW52aXJvbm1lbnRCbGVuZE1vZGUgV2Vi
WFJTZXNzaW9uOjplbnZpcm9ubWVudEJsZW5kTW9kZSgpIGNvbnN0CiB7CkBAIC0zMjksNiArMzM1
LDkgQEAgdm9pZCBXZWJYUlNlc3Npb246OnNodXRkb3duKCkKICAgICAvLyAgNi4xLiBSZWxlYXNp
bmcgZXhjbHVzaXZlIGFjY2VzcyB0byB0aGUgWFIgZGV2aWNlIGlmIHNlc3Npb24gaXMgYW4gaW1t
ZXJzaXZlIHNlc3Npb24uCiAgICAgLy8gIDYuMi4gRGVhbGxvY2F0aW5nIGFueSBncmFwaGljcyBy
ZXNvdXJjZXMgYWNxdWlyZWQgYnkgc2Vzc2lvbiBmb3IgcHJlc2VudGF0aW9uIHRvIHRoZSBYUiBk
ZXZpY2UuCiAgICAgLy8gIDYuMy4gUHV0dGluZyB0aGUgWFIgZGV2aWNlIGluIGEgc3RhdGUgc3Vj
aCB0aGF0IGEgZGlmZmVyZW50IHNvdXJjZSBtYXkgYmUgYWJsZSB0byBpbml0aWF0ZSBhIHNlc3Np
b24gd2l0aCB0aGUgc2FtZSBkZXZpY2UgaWYgc2Vzc2lvbiBpcyBhbiBpbW1lcnNpdmUgc2Vzc2lv
bi4KKyAgICBpZiAobV9kZXZpY2UpCisgICAgICAgIG1fZGV2aWNlLT5zaHV0ZG93blRyYWNraW5n
QW5kUmVuZGVyaW5nKCk7CisKICAgICAvLyA3LiBRdWV1ZSBhIHRhc2sgdGhhdCBmaXJlcyBhbiBY
UlNlc3Npb25FdmVudCBuYW1lZCBlbmQgb24gc2Vzc2lvbi4KICAgICBhdXRvIGV2ZW50ID0gWFJT
ZXNzaW9uRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZW5kRXZlbnQsIHsgbWFrZVJlZlB0cigq
dGhpcykgfSk7CiAgICAgcXVldWVUYXNrVG9EaXNwYXRjaEV2ZW50KCp0aGlzLCBUYXNrU291cmNl
OjpXZWJYUiwgV1RGTW92ZShldmVudCkpOwpAQCAtMzQyLDcgKzM1MSw4IEBAIHZvaWQgV2ViWFJT
ZXNzaW9uOjplbmQoRW5kUHJvbWlzZSYmIHByb21pc2UpCiAgICAgUmVmPFdlYlhSU2Vzc2lvbj4g
cHJvdGVjdGVkVGhpcygqdGhpcyk7CiAgICAgLy8gMS4gTGV0IHByb21pc2UgYmUgYSBuZXcgUHJv
bWlzZS4KICAgICAvLyAyLiBTaHV0IGRvd24gdGhlIHRhcmdldCBYUlNlc3Npb24gb2JqZWN0Lgot
ICAgIHNodXRkb3duKCk7CisgICAgaWYgKCFtX2VuZGVkKQorICAgICAgICBzaHV0ZG93bigpOwog
CiAgICAgLy8gMy4gUXVldWUgYSB0YXNrIHRvIHBlcmZvcm0gdGhlIGZvbGxvd2luZyBzdGVwczoK
ICAgICBxdWV1ZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6OldlYlhS
LCBbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldICgpIG11dGFibGUgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlN5c3RlbS5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlN5c3RlbS5oCmluZGV4IDczOTQ0NzI4MzAxZjg2M2QzZWIz
NzZmZTU3M2EwZDQ2ZjRhYjI1NDEuLmQyMmZjOGI5YjQ4ZTNkMjI2YWM0MTNhNGNhYjA3MjAzMmFk
M2U0NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTeXN0
ZW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU3lzdGVtLmgKQEAg
LTEwNyw2ICsxMDcsMTAgQEAgcHJpdmF0ZToKICAgICBjbGFzcyBEdW1teUlubGluZURldmljZSBm
aW5hbCA6IHB1YmxpYyBQbGF0Zm9ybVhSOjpEZXZpY2UgewogICAgIHB1YmxpYzoKICAgICAgICAg
RHVtbXlJbmxpbmVEZXZpY2UoKTsKKworICAgIHByaXZhdGU6CisgICAgICAgIHZvaWQgaW5pdGlh
bGl6ZVRyYWNraW5nQW5kUmVuZGVyaW5nKFBsYXRmb3JtWFI6OlNlc3Npb25Nb2RlKSBmaW5hbCB7
IH0KKyAgICAgICAgdm9pZCBzaHV0ZG93blRyYWNraW5nQW5kUmVuZGVyaW5nKCkgZmluYWwgeyB9
CiAgICAgfTsKICAgICBEdW1teUlubGluZURldmljZSBtX2RlZmF1bHRJbmxpbmVEZXZpY2U7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL1BsYXRmb3JtWFIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL1BsYXRmb3JtWFIuaAppbmRleCBlNTRlMjYyNGYyNWM5
YjY4MDRiNjdiY2Q5MjllZDZmOWNkYWI3Nzc5Li5kOTI3ZWRlMDU1MDVkOTc5NDBhZGM5NmQxMDcx
NTEyODZlNjQ5NzFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9QbGF0
Zm9ybVhSLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvUGxhdGZvcm1YUi5oCkBA
IC01OSw2ICs1OSw5IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgc3VwcG9ydHNPcmllbnRhdGlvblRy
YWNraW5nKCkgY29uc3QgeyByZXR1cm4gbV9zdXBwb3J0c09yaWVudGF0aW9uVHJhY2tpbmc7IH0K
IAorICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsaXplVHJhY2tpbmdBbmRSZW5kZXJpbmcoU2Vzc2lv
bk1vZGUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2h1dGRvd25UcmFja2luZ0FuZFJlbmRlcmlu
ZygpID0gMDsKKwogcHJvdGVjdGVkOgogICAgIERldmljZSgpID0gZGVmYXVsdDsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL1BsYXRmb3JtWFJPcGVuWFIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL1BsYXRmb3JtWFJPcGVuWFIu
Y3BwCmluZGV4IDc3NjFkMDBkMjE3MWRlOGI2ODA5OWI2NjM4NjMyODk2YzA4OTJkMTAuLjMyODlh
YWQxYzBlYzhlZTM2MDk1NDYyZjk2NGMxOTYzMzUwZWM3MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3hyL29wZW54ci9QbGF0Zm9ybVhST3BlblhSLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvUGxhdGZvcm1YUk9wZW5YUi5jcHAKQEAgLTI0
LDE3ICsyNCwxNyBAQAogCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgPG9wZW54ci9v
cGVueHJfcGxhdGZvcm0uaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNs
dWRlIDx3dGYvT3B0aW9uYWwuaD4KICNpbmNsdWRlIDx3dGYvU2NvcGUuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZU51bWJlcnMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KLSNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogdXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBQbGF0Zm9ybVhSIHsKIAotdGVtcGxhdGU8dHlw
ZW5hbWUgVCwgWHJTdHJ1Y3R1cmVUeXBlIFN0cnVjdHVyZVR5cGU+Cit0ZW1wbGF0ZSA8dHlwZW5h
bWUgVCwgWHJTdHJ1Y3R1cmVUeXBlIFN0cnVjdHVyZVR5cGU+CiBUIGNyZWF0ZVN0cnVjdHVyZSgp
CiB7CiAgICAgVCBvYmplY3Q7CkBAIC01MywxNCArNTMsMTUgQEAgU3RyaW5nIHJlc3VsdFRvU3Ry
aW5nKFhyUmVzdWx0IHZhbHVlLCBYckluc3RhbmNlIGluc3RhbmNlKQogICAgIHJldHVybiBtYWtl
U3RyaW5nKCI8dW5rbm93biAiLCBpbnQodmFsdWUpLCAiPiIpOwogfQogCi0jZGVmaW5lIFJFVFVS
Tl9JRl9GQUlMRUQocmVzdWx0LCBjYWxsLCBpbnN0YW5jZSwgLi4uKSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGlmIChYUl9GQUlMRUQocmVzdWx0
KSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgTE9HKFhSLCAiJXMgJXM6ICVzXG4iLCBfX2Z1
bmNfXywgY2FsbCwgcmVzdWx0VG9TdHJpbmcocmVzdWx0LCBpbnN0YW5jZSkudXRmOCgpLmRhdGEo
KSk7ICAgICBcCi0gICAgICAgIHJldHVybiBfX1ZBX0FSR1NfXzsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAot
ICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyNkZWZpbmUgUkVU
VVJOX0lGX0ZBSUxFRChyZXN1bHQsIGNhbGwsIGluc3RhbmNlLCAuLi4pICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpZiAoWFJfRkFJTEVEKHJlc3VsdCkp
IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICAgICAgTE9HKFhSLCAiJXMgJXM6ICVzXG4iLCBfX2Z1bmNfXywg
Y2FsbCwgcmVzdWx0VG9TdHJpbmcocmVzdWx0LCBpbnN0YW5jZSkudXRmOCgpLmRhdGEoKSk7IFwK
KyAgICAgICAgcmV0dXJuIF9fVkFfQVJHU19fOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9CiAKIHN0cnVj
dCBJbnN0YW5jZTo6SW1wbCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisKIHB1Ymxp
YzoKICAgICBJbXBsKCk7CiAgICAgfkltcGwoKTsKQEAgLTIzOSw2ICsyNDAsNyBAQCB2b2lkIElu
c3RhbmNlOjplbnVtZXJhdGVJbW1lcnNpdmVYUkRldmljZXMoQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChjb25zdCBEZXZpY2VMaQogT3BlblhSRGV2aWNlOjpPcGVuWFJEZXZpY2UoWHJTeXN0ZW1JZCBp
ZCwgWHJJbnN0YW5jZSBpbnN0YW5jZSwgV29ya1F1ZXVlJiBxdWV1ZSwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmIGNhbGxiYWNrKQogICAgIDogbV9zeXN0ZW1JZChpZCkKICAgICAsIG1faW5z
dGFuY2UoaW5zdGFuY2UpCisgICAgLCBtX3Nlc3Npb24oWFJfTlVMTF9IQU5ETEUpCiAgICAgLCBt
X3F1ZXVlKHF1ZXVlKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CkBAIC0yNjAsNiAr
MjYyLDExIEBAIE9wZW5YUkRldmljZTo6T3BlblhSRGV2aWNlKFhyU3lzdGVtSWQgaWQsIFhySW5z
dGFuY2UgaW5zdGFuY2UsIFdvcmtRdWV1ZSYgcXVldWUsCiAgICAgfSk7CiB9CiAKK09wZW5YUkRl
dmljZTo6fk9wZW5YUkRldmljZSgpCit7CisgICAgc2h1dGRvd25UcmFja2luZ0FuZFJlbmRlcmlu
ZygpOworfQorCiBEZXZpY2U6Okxpc3RPZkVuYWJsZWRGZWF0dXJlcyBPcGVuWFJEZXZpY2U6OmVu
dW1lcmF0ZVJlZmVyZW5jZVNwYWNlcyhYclNlc3Npb24mIHNlc3Npb24pIGNvbnN0CiB7CiAgICAg
dWludDMyX3QgcmVmZXJlbmNlU3BhY2VzQ291bnQ7CkBAIC0zNzcsNiArMzg0LDUxIEBAIFdlYkNv
cmU6OkludFNpemUgT3BlblhSRGV2aWNlOjpyZWNvbW1lbmRlZFJlc29sdXRpb24oU2Vzc2lvbk1v
ZGUgbW9kZSkKICAgICByZXR1cm4gRGV2aWNlOjpyZWNvbW1lbmRlZFJlc29sdXRpb24obW9kZSk7
CiB9CiAKK1hyVmlld0NvbmZpZ3VyYXRpb25UeXBlIHRvWHJWaWV3Q29uZmlndXJhdGlvblR5cGUo
U2Vzc2lvbk1vZGUgbW9kZSkKK3sKKyAgICBzd2l0Y2ggKG1vZGUpIHsKKyAgICBjYXNlIFNlc3Np
b25Nb2RlOjpJbW1lcnNpdmVWcjoKKyAgICAgICAgcmV0dXJuIFhSX1ZJRVdfQ09ORklHVVJBVElP
Tl9UWVBFX1BSSU1BUllfU1RFUkVPOworICAgIGNhc2UgU2Vzc2lvbk1vZGU6OklubGluZToKKyAg
ICBjYXNlIFNlc3Npb25Nb2RlOjpJbW1lcnNpdmVBcjoKKyAgICAgICAgcmV0dXJuIFhSX1ZJRVdf
Q09ORklHVVJBVElPTl9UWVBFX1BSSU1BUllfTU9OTzsKKyAgICB9OworICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgIHJldHVybiBYUl9WSUVXX0NPTkZJR1VSQVRJT05fVFlQRV9NQVhfRU5V
TTsKK30KKwordm9pZCBPcGVuWFJEZXZpY2U6OmluaXRpYWxpemVUcmFja2luZ0FuZFJlbmRlcmlu
ZyhTZXNzaW9uTW9kZSBtb2RlKQoreworICAgIG1fcXVldWUuZGlzcGF0Y2goW3RoaXMsIG1vZGVd
KCkgeworICAgICAgICBBU1NFUlQobV9pbnN0YW5jZSAhPSBYUl9OVUxMX0hBTkRMRSk7CisgICAg
ICAgIEFTU0VSVChtX3Nlc3Npb24gPT0gWFJfTlVMTF9IQU5ETEUpOworCisgICAgICAgIG1fY3Vy
cmVudFZpZXdDb25maWd1cmF0aW9uID0gdG9YclZpZXdDb25maWd1cmF0aW9uVHlwZShtb2RlKTsK
KyAgICAgICAgQVNTRVJUKG1fY29uZmlndXJhdGlvblZpZXdzLmNvbnRhaW5zKG1fY3VycmVudFZp
ZXdDb25maWd1cmF0aW9uKSk7CisKKyAgICAgICAgLy8gQ3JlYXRlIHRoZSBzZXNzaW9uLgorICAg
ICAgICBhdXRvIHNlc3Npb25DcmVhdGVJbmZvID0gY3JlYXRlU3RydWN0dXJlPFhyU2Vzc2lvbkNy
ZWF0ZUluZm8sIFhSX1RZUEVfU0VTU0lPTl9DUkVBVEVfSU5GTz4oKTsKKyAgICAgICAgc2Vzc2lv
bkNyZWF0ZUluZm8uc3lzdGVtSWQgPSBtX3N5c3RlbUlkOworICAgICAgICBhdXRvIHJlc3VsdCA9
IHhyQ3JlYXRlU2Vzc2lvbihtX2luc3RhbmNlLCAmc2Vzc2lvbkNyZWF0ZUluZm8sICZtX3Nlc3Np
b24pOworICAgICAgICBSRVRVUk5fSUZfRkFJTEVEKHJlc3VsdCwgInhyRW51bWVyYXRlSW5zdGFu
Y2VFeHRlbnNpb25Qcm9wZXJ0aWVzIiwgbV9pbnN0YW5jZSk7CisgICAgfSk7Cit9CisKK3ZvaWQg
T3BlblhSRGV2aWNlOjpyZXNldFNlc3Npb24oKQoreworICAgIG1fcXVldWUuZGlzcGF0Y2goW3Ro
aXNdKCkgeworICAgICAgICBpZiAobV9zZXNzaW9uID09IFhSX05VTExfSEFORExFKQorICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB4ckRlc3Ryb3lTZXNzaW9uKG1fc2Vzc2lvbik7CisgICAg
ICAgIG1fc2Vzc2lvbiA9IFhSX05VTExfSEFORExFOworICAgIH0pOworfQorCit2b2lkIE9wZW5Y
UkRldmljZTo6c2h1dGRvd25UcmFja2luZ0FuZFJlbmRlcmluZygpCit7CisgICAgcmVzZXRTZXNz
aW9uKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFBsYXRmb3JtWFIKIAogI2VuZGlmIC8vIEVOQUJM
RShXRUJYUikgJiYgVVNFKE9QRU5YUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3hyL29wZW54ci9QbGF0Zm9ybVhST3BlblhSLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS94ci9vcGVueHIvUGxhdGZvcm1YUk9wZW5YUi5oCmluZGV4IGUzODdjODk2NGYzNDFkYTg5NDA2
NTI4NzYwY2MyYmM5N2I1NGVlNjEuLmQ0MDdmNDMzN2E4OGU3NjMwOGJlNzZhY2I5ODk3ZmMxZmYz
OTg5NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL29wZW54ci9QbGF0
Zm9ybVhST3BlblhSLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL1Bs
YXRmb3JtWFJPcGVuWFIuaApAQCAtNDQsNiArNDQsNyBAQCBuYW1lc3BhY2UgUGxhdGZvcm1YUiB7
CiBjbGFzcyBPcGVuWFJEZXZpY2UgZmluYWwgOiBwdWJsaWMgRGV2aWNlIHsKIHB1YmxpYzoKICAg
ICBPcGVuWFJEZXZpY2UoWHJTeXN0ZW1JZCwgWHJJbnN0YW5jZSwgV29ya1F1ZXVlJiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB+T3BlblhSRGV2aWNlKCk7CiAgICAgWHJTeXN0
ZW1JZCB4clN5c3RlbUlkKCkgY29uc3QgeyByZXR1cm4gbV9zeXN0ZW1JZDsgfQogCiBwcml2YXRl
OgpAQCAtNTQsNiArNTUsMTEgQEAgcHJpdmF0ZToKIAogICAgIFdlYkNvcmU6OkludFNpemUgcmVj
b21tZW5kZWRSZXNvbHV0aW9uKFNlc3Npb25Nb2RlKSBmaW5hbDsKIAorICAgIHZvaWQgaW5pdGlh
bGl6ZVRyYWNraW5nQW5kUmVuZGVyaW5nKFNlc3Npb25Nb2RlKSBmaW5hbDsKKyAgICB2b2lkIHNo
dXRkb3duVHJhY2tpbmdBbmRSZW5kZXJpbmcoKSBmaW5hbDsKKworICAgIHZvaWQgcmVzZXRTZXNz
aW9uKCk7CisKICAgICB1c2luZyBWaWV3Q29uZmlndXJhdGlvblByb3BlcnRpZXNNYXAgPSBIYXNo
TWFwPFhyVmlld0NvbmZpZ3VyYXRpb25UeXBlLCBYclZpZXdDb25maWd1cmF0aW9uUHJvcGVydGll
cywgSW50SGFzaDxYclZpZXdDb25maWd1cmF0aW9uVHlwZT4sIFdURjo6U3Ryb25nRW51bUhhc2hU
cmFpdHM8WHJWaWV3Q29uZmlndXJhdGlvblR5cGU+PjsKICAgICBWaWV3Q29uZmlndXJhdGlvblBy
b3BlcnRpZXNNYXAgbV92aWV3Q29uZmlndXJhdGlvblByb3BlcnRpZXM7CiAgICAgdXNpbmcgVmll
d0NvbmZpZ3VyYXRpb25WaWV3c01hcCA9IEhhc2hNYXA8WHJWaWV3Q29uZmlndXJhdGlvblR5cGUs
IFZlY3RvcjxYclZpZXdDb25maWd1cmF0aW9uVmlldz4sIEludEhhc2g8WHJWaWV3Q29uZmlndXJh
dGlvblR5cGU+LCBXVEY6OlN0cm9uZ0VudW1IYXNoVHJhaXRzPFhyVmlld0NvbmZpZ3VyYXRpb25U
eXBlPj47CkBAIC02NCw2ICs3MCw4IEBAIHByaXZhdGU6CiAgICAgWHJTZXNzaW9uIG1fc2Vzc2lv
bjsKIAogICAgIFdvcmtRdWV1ZSYgbV9xdWV1ZTsKKworICAgIFhyVmlld0NvbmZpZ3VyYXRpb25U
eXBlIG1fY3VycmVudFZpZXdDb25maWd1cmF0aW9uOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgUGxh
dGZvcm1YUgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9XZWJGYWtlWFJEZXZp
Y2UuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2ViRmFrZVhSRGV2aWNlLmgKaW5kZXggMzYw
NDVjYTVkYmJjNzFiNjcwNzQ0ZGE3OGJhODgyZWVkZWNlYjg5Yy4uYmY5MTAwOGVjY2U1ZjQ3ZDEy
OGU5MzQ2OTdkNzlkNGU0OTRiMjczNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9XZWJGYWtlWFJEZXZpY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYkZha2VY
UkRldmljZS5oCkBAIC03MCw2ICs3MCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEVtdWxhdGVk
UG9zaXRpb24oYm9vbCBlbXVsYXRlZCkgeyBtX2VtdWxhdGVkUG9zaXRpb24gPSBlbXVsYXRlZDsg
fQogICAgIFZlY3RvcjxSZWY8RmFrZVhSVmlldz4+JiB2aWV3cygpIHsgcmV0dXJuIG1fdmlld3M7
IH0KIHByaXZhdGU6CisgICAgdm9pZCBpbml0aWFsaXplVHJhY2tpbmdBbmRSZW5kZXJpbmcoUGxh
dGZvcm1YUjo6U2Vzc2lvbk1vZGUpIGZpbmFsIHsgfQorICAgIHZvaWQgc2h1dGRvd25UcmFja2lu
Z0FuZFJlbmRlcmluZygpIGZpbmFsIHsgfQogICAgIE9wdGlvbmFsPFZlY3RvcjxGYWtlWFJCb3Vu
ZHNQb2ludD4+IG1fbmF0aXZlQm91bmRzR2VvbWV0cnk7CiAgICAgUmVmUHRyPFdlYlhSUmlnaWRU
cmFuc2Zvcm0+IG1fdmlld2VyT3JpZ2luOwogICAgIFJlZlB0cjxXZWJYUlJpZ2lkVHJhbnNmb3Jt
PiBtX2Zsb29yT3JpZ2luOwo=
</data>
<flag name="review"
          id="432654"
          type_id="1"
          status="+"
          setter="darin"
    />
    <flag name="commit-queue"
          id="432665"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>