<?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>239551</bug_id>
          
          <creation_ts>2022-04-20 10:47:52 -0700</creation_ts>
          <short_desc>HARDENING: Add MESSAGE_CHECK in some Captive Portal cases</short_desc>
          <delta_ts>2022-04-25 17:17:26 -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>WebKit Misc.</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brent Fulgham">bfulgham</reporter>
          <assigned_to name="Brent Fulgham">bfulgham</assigned_to>
          <cc>cdumez</cc>
    
    <cc>darin</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>jer.noble</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1862980</commentid>
    <comment_count>0</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2022-04-20 10:47:52 -0700</bug_when>
    <thetext>Although we prevent access to WebGL and WebAudio APIs in the WebContent Process, we should also add MESSAGE_CHECK protections in the GPU Process to prevent it from accepting messages for prohibited API from a Captive Portal process.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862981</commentid>
    <comment_count>1</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2022-04-20 10:48:10 -0700</bug_when>
    <thetext>&lt;rdar://91478748&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862983</commentid>
    <comment_count>2</comment_count>
      <attachid>457998</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2022-04-20 10:51:54 -0700</bug_when>
    <thetext>Created attachment 457998
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1863000</commentid>
    <comment_count>3</comment_count>
      <attachid>457998</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-20 11:32:49 -0700</bug_when>
    <thetext>Comment on attachment 457998
Patch

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

&gt; Source/WebKit/ChangeLog:10
&gt; +        sent froma Captive Portal process. This change also adds a flag to the GPUProcessConnectionParameters

typo: froma

&gt; Source/WebKit/GPUProcess/GPUConnectionToWebProcess.cpp:161
&gt; +#define MESSAGE_CHECK(assertion) MESSAGE_CHECK_BASE(assertion, (&amp;connection()))

Did you validate that the WebProcess is indeed exiting and relaunching when this happens?

I think this should work in theory since MESSAGE_CHECK_BASE() will mark the message as invalid and then GPUConnectionToWebProcess::didReceiveInvalidMessage() will ask for the WebProcess to be terminated. However, it is good to double check manually that it works.

&gt; Source/WebKit/GPUProcess/media/RemoteAudioDestinationManager.cpp:152
&gt; +    MESSAGE_CHECK(!m_gpuConnectionToWebProcess.isCaptivePortalModeEnabled());

Here it is a little less obvious that the MESSAGE_CHECK() does the right thing, not sure what the handling is when a message gets marked as invalid in the context of a RemoteAudioDestinationManager. Would be good to double check if you haven&apos;t yet.

The main worry is that we&apos;ll just sever the IPC connection and the WebProcess will just reconnect without getting killed. In the UIProcess, severing the IPC connection causes the child process to exit but that&apos;s not the case here since the GPU process is not the parent process.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1863013</commentid>
    <comment_count>4</comment_count>
      <attachid>457998</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2022-04-20 12:01:48 -0700</bug_when>
    <thetext>Comment on attachment 457998
Patch

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

&gt;&gt; Source/WebKit/GPUProcess/media/RemoteAudioDestinationManager.cpp:152
&gt;&gt; +    MESSAGE_CHECK(!m_gpuConnectionToWebProcess.isCaptivePortalModeEnabled());
&gt; 
&gt; Here it is a little less obvious that the MESSAGE_CHECK() does the right thing, not sure what the handling is when a message gets marked as invalid in the context of a RemoteAudioDestinationManager. Would be good to double check if you haven&apos;t yet.
&gt; 
&gt; The main worry is that we&apos;ll just sever the IPC connection and the WebProcess will just reconnect without getting killed. In the UIProcess, severing the IPC connection causes the child process to exit but that&apos;s not the case here since the GPU process is not the parent process.

I patterned this off of the MESSAGE_CHECK in RemoteMediaRecorder, but maybe those are wrong, too?

Do you think I should duplicate the TERMINATE_WEB_PROCESS_WITH_MESSAGE logic Wenson added to &apos;RemoteRenderingBackend.cpp&apos;? And if so, should we make the same correction to RemoteMediaRecorder?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1863017</commentid>
    <comment_count>5</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-20 12:13:28 -0700</bug_when>
    <thetext>(In reply to Brent Fulgham from comment #4)
&gt; Comment on attachment 457998 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=457998&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebKit/GPUProcess/media/RemoteAudioDestinationManager.cpp:152
&gt; &gt;&gt; +    MESSAGE_CHECK(!m_gpuConnectionToWebProcess.isCaptivePortalModeEnabled());
&gt; &gt; 
&gt; &gt; Here it is a little less obvious that the MESSAGE_CHECK() does the right thing, not sure what the handling is when a message gets marked as invalid in the context of a RemoteAudioDestinationManager. Would be good to double check if you haven&apos;t yet.
&gt; &gt; 
&gt; &gt; The main worry is that we&apos;ll just sever the IPC connection and the WebProcess will just reconnect without getting killed. In the UIProcess, severing the IPC connection causes the child process to exit but that&apos;s not the case here since the GPU process is not the parent process.
&gt; 
&gt; I patterned this off of the MESSAGE_CHECK in RemoteMediaRecorder, but maybe
&gt; those are wrong, too?
&gt; 
&gt; Do you think I should duplicate the TERMINATE_WEB_PROCESS_WITH_MESSAGE logic
&gt; Wenson added to &apos;RemoteRenderingBackend.cpp&apos;? And if so, should we make the
&gt; same correction to RemoteMediaRecorder?

I think we should validate if your approach is working in practice. I don&apos;t know that the person who added those checks to RemoteMediaRecorder did that.

TERMINATE_WEB_PROCESS_WITH_MESSAGE() was validated if I remember correctly so that should work fine. That said, I&apos;d be fine with your approach if you validate manually that the WebProcess actually gets killed on bad IPC.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1864227</commentid>
    <comment_count>6</comment_count>
      <attachid>458300</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2022-04-25 14:21:43 -0700</bug_when>
    <thetext>Created attachment 458300
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1864230</commentid>
    <comment_count>7</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2022-04-25 14:24:57 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #5)
&gt; (In reply to Brent Fulgham from comment #4)
&gt; &gt; Comment on attachment 457998 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=457998&amp;action=review
&gt; &gt; 
&gt; &gt; &gt;&gt; Source/WebKit/GPUProcess/media/RemoteAudioDestinationManager.cpp:152
&gt; &gt; &gt;&gt; +    MESSAGE_CHECK(!m_gpuConnectionToWebProcess.isCaptivePortalModeEnabled());
&gt; &gt; &gt; 
&gt; &gt; &gt; Here it is a little less obvious that the MESSAGE_CHECK() does the right thing, not sure what the handling is when a message gets marked as invalid in the context of a RemoteAudioDestinationManager. Would be good to double check if you haven&apos;t yet.
&gt; &gt; &gt; 
&gt; &gt; &gt; The main worry is that we&apos;ll just sever the IPC connection and the WebProcess will just reconnect without getting killed. In the UIProcess, severing the IPC connection causes the child process to exit but that&apos;s not the case here since the GPU process is not the parent process.
&gt; &gt; 
&gt; &gt; I patterned this off of the MESSAGE_CHECK in RemoteMediaRecorder, but maybe
&gt; &gt; those are wrong, too?
&gt; &gt; 
&gt; &gt; Do you think I should duplicate the TERMINATE_WEB_PROCESS_WITH_MESSAGE logic
&gt; &gt; Wenson added to &apos;RemoteRenderingBackend.cpp&apos;? And if so, should we make the
&gt; &gt; same correction to RemoteMediaRecorder?
&gt; 
&gt; I think we should validate if your approach is working in practice. I don&apos;t
&gt; know that the person who added those checks to RemoteMediaRecorder did that.
&gt; 
&gt; TERMINATE_WEB_PROCESS_WITH_MESSAGE() was validated if I remember correctly
&gt; so that should work fine. That said, I&apos;d be fine with your approach if you
&gt; validate manually that the WebProcess actually gets killed on bad IPC.

I marked the GPU process connection as being on behalf of a Captive Portal in all cases, and then exercised WebGL and WebAudio samples. In the WebGL case, the MESSAGE_CHECK calls killed the relevant WebProcess, as expected.

The remote audio case killed the GPU process, not the WebContent process. This seems wrong, so I will try Wenson&apos;s approach there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1864238</commentid>
    <comment_count>8</comment_count>
      <attachid>458300</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-04-25 14:52:52 -0700</bug_when>
    <thetext>Comment on attachment 458300
Patch

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

&gt; Source/WebKit/ChangeLog:12
&gt; +        Add MESSAGE_CHECK protections to a set of message handlers for API prohibited when
&gt; +        sent from a Captive Portal process. This change also adds a flag to the GPUProcessConnectionParameters
&gt; +        struct so that GPU Process connections can be marked as being associated with a Captive Portal
&gt; +        process.

What prevents the web process from trying to send these messages in the captive portal case? To state the obvious, we don’t want a MESSAGE_CHECK to ever fire unless the web process is compromised. So presumably we have to have code that prevents trying to send these messages in normal circumstances, along with the MESSAGE_CHECK protection that is where the full security value comes from when the web process has been controlled or attacked.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1864246</commentid>
    <comment_count>9</comment_count>
      <attachid>458300</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2022-04-25 15:05:30 -0700</bug_when>
    <thetext>Comment on attachment 458300
Patch

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

&gt;&gt; Source/WebKit/ChangeLog:12
&gt;&gt; +        process.
&gt; 
&gt; What prevents the web process from trying to send these messages in the captive portal case? To state the obvious, we don’t want a MESSAGE_CHECK to ever fire unless the web process is compromised. So presumably we have to have code that prevents trying to send these messages in normal circumstances, along with the MESSAGE_CHECK protection that is where the full security value comes from when the web process has been controlled or attacked.

Indeed! We block access to these APIs in the captive portal case, so in theory script should not be capable of sending these messages. However, if an attacker did gain control a captive portal process and attempted to send off-limits messages to the GPU process we want to recognize this and kill the misbehaving process. The first part is already true, this patch attempts to solve the second issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1864259</commentid>
    <comment_count>10</comment_count>
      <attachid>458306</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2022-04-25 15:31:10 -0700</bug_when>
    <thetext>Created attachment 458306
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1864303</commentid>
    <comment_count>11</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-04-25 17:17:21 -0700</bug_when>
    <thetext>Committed r293380 (249970@main): &lt;https://commits.webkit.org/249970@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 458306.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>457998</attachid>
            <date>2022-04-20 10:51:54 -0700</date>
            <delta_ts>2022-04-25 14:21:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-239551-20220420105154.patch</filename>
            <type>text/plain</type>
            <size>11437</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzMDQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGFjMWY2ZGRiMDZmOWU3YmI5
M2Y2OGMwMzZhZTY0ZDE4ZGY3OGZlZGQuLjQxNjZlMzJhMjEyOTE3NGVhN2Y5YjM0YTZjMTEzN2Rl
ODFjMjc2MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMgQEAKKzIwMjItMDQtMjAgIEJyZW50IEZ1
bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CisKKyAgICAgICAgSEFSREVOSU5HOiBBZGQgTUVT
U0FHRV9DSEVDSyBpbiBzb21lIENhcHRpdmUgUG9ydGFsIGNhc2VzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzk1NTEKKyAgICAgICAgPHJkYXI6Ly85
MTQ3ODc0OD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBZGQgTUVTU0FHRV9DSEVDSyBwcm90ZWN0aW9ucyB0byBhIHNldCBvZiBtZXNzYWdlIGhhbmRs
ZXJzIGZvciBBUEkgcHJvaGliaXRlZCB3aGVuCisgICAgICAgIHNlbnQgZnJvbWEgQ2FwdGl2ZSBQ
b3J0YWwgcHJvY2Vzcy4gVGhpcyBjaGFuZ2UgYWxzbyBhZGRzIGEgZmxhZyB0byB0aGUgR1BVUHJv
Y2Vzc0Nvbm5lY3Rpb25QYXJhbWV0ZXJzCisgICAgICAgIHN0cnVjdCBzbyB0aGF0IEdQVSBQcm9j
ZXNzIGNvbm5lY3Rpb25zIGNhbiBiZSBtYXJrZWQgYXMgYmVpbmcgYXNzb2NpYXRlZCB3aXRoIGEg
Q2FwdGl2ZSBQb3J0YWwKKyAgICAgICAgcHJvY2Vzcy4KKworICAgICAgICAqIEdQVVByb2Nlc3Mv
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkdQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpOgorICAgICAgICAo
V2ViS2l0OjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGVHcmFwaGljc0NvbnRleHRH
TCk6CisgICAgICAgIChXZWJLaXQ6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlbGVhc2VH
cmFwaGljc0NvbnRleHRHTCk6CisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmg6CisgICAgICAgIChXZWJLaXQ6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OmlzQ2FwdGl2ZVBvcnRhbE1vZGVFbmFibGVkIGNvbnN0KToKKyAgICAgICAgKiBHUFVQcm9jZXNz
L21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OmNyZWF0ZUF1ZGlvRGVzdGluYXRpb24p
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6ZGVsZXRl
QXVkaW9EZXN0aW5hdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRp
b25NYW5hZ2VyOjpzdGFydEF1ZGlvRGVzdGluYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6c3RvcEF1ZGlvRGVzdGluYXRpb24pOgorICAgICAg
ICAqIFNoYXJlZC9HUFVQcm9jZXNzQ29ubmVjdGlvblBhcmFtZXRlcnMuaDoKKyAgICAgICAgKFdl
YktpdDo6R1BVUHJvY2Vzc0Nvbm5lY3Rpb25QYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgorICAg
ICAgICAoV2ViS2l0OjpHUFVQcm9jZXNzQ29ubmVjdGlvblBhcmFtZXRlcnM6OmRlY29kZSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzc1Bvb2w6OmdldEdQVVByb2Nlc3NDb25uZWN0aW9uKToKKwogMjAyMi0wNC0xOSAg
Q2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIElubGluZSBFbGVtZW50
OjpzaGFkb3dSb290KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCBjMDQzMjFjZTVjNDY2NmViOTc1YTBjYzQy
OTg4YzFlNzY3NzA1MjllLi42NTEyYzIzMjE3NWQwYjRlODU3MTg1YTNiZjc2OTU5ZmI1MzRlNzE3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
OS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxOS0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMTU4LDYgKzE1OCw4IEBACiAjaW5jbHVkZSAiUmVtb3RlVmlk
ZW9GcmFtZU9iamVjdEhlYXAuaCIKICNlbmRpZgogCisjZGVmaW5lIE1FU1NBR0VfQ0hFQ0soYXNz
ZXJ0aW9uKSBNRVNTQUdFX0NIRUNLX0JBU0UoYXNzZXJ0aW9uLCAoJmNvbm5lY3Rpb24oKSkpCisK
IG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTI1Nyw2
ICsyNTksNyBAQCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpHUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzKEdQVVByb2Nlc3MmIGdwdVByb2Nlc3MsIFdlYgogI2lmIEhBVkUoQVVESVRfVE9LRU4p
CiAgICAgLCBtX3ByZXNlbnRpbmdBcHBsaWNhdGlvbkF1ZGl0VG9rZW4oV1RGTW92ZShwYXJhbWV0
ZXJzLnByZXNlbnRpbmdBcHBsaWNhdGlvbkF1ZGl0VG9rZW4pKQogI2VuZGlmCisgICAgLCBtX2lz
Q2FwdGl2ZVBvcnRhbE1vZGVFbmFibGVkKHBhcmFtZXRlcnMuaXNDYXB0aXZlUG9ydGFsTW9kZUVu
YWJsZWQpCiAjaWYgRU5BQkxFKFJPVVRJTkdfQVJCSVRSQVRJT04pICYmIEhBVkUoQVZBVURJT19S
T1VUSU5HX0FSQklURVIpCiAgICAgLCBtX3JvdXRpbmdBcmJpdHJhdG9yKExvY2FsQXVkaW9TZXNz
aW9uUm91dGluZ0FyYml0cmF0b3I6OmNyZWF0ZSgqdGhpcykpCiAjZW5kaWYKQEAgLTU0OSw2ICs1
NTIsOCBAQCB2b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlbGVhc2VSZW5kZXJpbmdC
YWNrZW5kKFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaQogI2lmIEVOQUJMRShXRUJHTCkKIHZvaWQg
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0R0woV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMsIEdyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllciBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIFJlbmRlcmluZ0JhY2tl
bmRJZGVudGlmaWVyIHJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLCBJUEM6OlN0cmVhbUNvbm5l
Y3Rpb25CdWZmZXImJiBzdHJlYW0pCiB7CisgICAgTUVTU0FHRV9DSEVDSyghaXNDYXB0aXZlUG9y
dGFsTW9kZUVuYWJsZWQoKSk7CisKICAgICBhdXRvIGl0ID0gbV9yZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kTWFwLmZpbmQocmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOwogICAgIGlmIChpdCA9PSBt
X3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRNYXAuZW5kKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTU2
Miw2ICs1NjcsOCBAQCB2b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZUdyYXBo
aWNzQ29udGV4dEdMKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dAogCiB2b2lkIEdQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OnJlbGVhc2VHcmFwaGljc0NvbnRleHRHTChHcmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIgZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKQogeworICAgIE1FU1NBR0Vf
Q0hFQ0soIWlzQ2FwdGl2ZVBvcnRhbE1vZGVFbmFibGVkKCkpOworCiAgICAgbV9yZW1vdGVHcmFw
aGljc0NvbnRleHRHTE1hcC5yZW1vdmUoZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKICAg
ICBpZiAobV9yZW1vdGVHcmFwaGljc0NvbnRleHRHTE1hcC5pc0VtcHR5KCkpCiAgICAgICAgIGdw
dVByb2Nlc3MoKS50cnlFeGl0SWZVbnVzZWRBbmRVbmRlck1lbW9yeVByZXNzdXJlKCk7CkBAIC05
ODcsNCArOTk0LDYgQEAgdm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjplbmFibGVWUDlE
ZWNvZGVycyhib29sIHNob3VsZEVuYWJsZVZQOERlY29kZXIsIGIKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CiAKKyN1bmRlZiBNRVNTQUdFX0NIRUNLCisKICNlbmRpZiAvLyBFTkFCTEUoR1BVX1BS
T0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuaAppbmRleCBmYjU2YjA2ZGE1OWY2YTNlNzJiMjg4NmRlMzhhY2I2YWY2NWY0
M2Y3Li41ZjM5NzViZjI3ZjdmMGZjMWMyODEzZDFkNTc1ZDg2YjlhZTJkNzExIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE5LTIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE5LTIwMjIgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0xMzUsNiArMTM1LDggQEAgcHVibGljOgogCiAgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklEKCkgY29uc3QgeyByZXR1cm4gbV9zZXNzaW9uSUQ7IH0KIAorICAgIGJvb2wgaXNDYXB0aXZl
UG9ydGFsTW9kZUVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lzQ2FwdGl2ZVBvcnRhbE1vZGVF
bmFibGVkOyB9CisKICAgICBMb2dnZXImIGxvZ2dlcigpOwogCiAgICAgY29uc3QgU3RyaW5nJiBt
ZWRpYUNhY2hlRGlyZWN0b3J5KCkgY29uc3Q7CkBAIC0zNjUsNiArMzY3LDcgQEAgcHJpdmF0ZToK
IAogICAgIFJlZlB0cjxSZW1vdGVSZW1vdGVDb21tYW5kTGlzdGVuZXJQcm94eT4gbV9yZW1vdGVS
ZW1vdGVDb21tYW5kTGlzdGVuZXI7CiAgICAgYm9vbCBtX2lzQWN0aXZlTm93UGxheWluZ1Byb2Nl
c3MgeyBmYWxzZSB9OworICAgIGJvb2wgbV9pc0NhcHRpdmVQb3J0YWxNb2RlRW5hYmxlZCB7IGZh
bHNlIH07CiAKICNpZiBFTkFCTEUoUk9VVElOR19BUkJJVFJBVElPTikgJiYgSEFWRShBVkFVRElP
X1JPVVRJTkdfQVJCSVRFUikKICAgICBVbmlxdWVSZWY8TG9jYWxBdWRpb1Nlc3Npb25Sb3V0aW5n
QXJiaXRyYXRvcj4gbV9yb3V0aW5nQXJiaXRyYXRvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5jcHAgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFn
ZXIuY3BwCmluZGV4IGE5ZjhlMDc3M2U4NzA2YmQxZmYyMDZkYTk4MjVhYTVhZmFmMDY2MDUuLjBi
YjljNGEzMTQ2Mjc3NTVmNTk4MjVhMzZmNzBkNmE3MWZlYzJjYWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGlu
YXRpb25NYW5hZ2VyLmNwcApAQCAtNDEsNiArNDEsOCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvV2Vi
QXVkaW9CdWZmZXJMaXN0Lmg+CiAjZW5kaWYKIAorI2RlZmluZSBNRVNTQUdFX0NIRUNLKGFzc2Vy
dGlvbikgTUVTU0FHRV9DSEVDS19CQVNFKGFzc2VydGlvbiwgKCZtX2dwdUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuY29ubmVjdGlvbigpKSkKKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFJl
bW90ZUF1ZGlvRGVzdGluYXRpb24gZmluYWwKQEAgLTE0Nyw2ICsxNDksOCBAQCBSZW1vdGVBdWRp
b0Rlc3RpbmF0aW9uTWFuYWdlcjo6flJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyKCkgPSBk
ZWZhdWx0OwogCiB2b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpjcmVhdGVBdWRp
b0Rlc3RpbmF0aW9uKGNvbnN0IFN0cmluZyYgaW5wdXREZXZpY2VJZCwgdWludDMyX3QgbnVtYmVy
T2ZJbnB1dENoYW5uZWxzLCB1aW50MzJfdCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBmbG9hdCBz
YW1wbGVSYXRlLCBmbG9hdCBoYXJkd2FyZVNhbXBsZVJhdGUsIElQQzo6U2VtYXBob3JlJiYgcmVu
ZGVyU2VtYXBob3JlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdlYktpdDo6UmVtb3Rl
QXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogeworICAg
IE1FU1NBR0VfQ0hFQ0soIW1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5pc0NhcHRpdmVQb3J0
YWxNb2RlRW5hYmxlZCgpKTsKKwogICAgIGF1dG8gbmV3SUQgPSBSZW1vdGVBdWRpb0Rlc3RpbmF0
aW9uSWRlbnRpZmllcjo6Z2VuZXJhdGVUaHJlYWRTYWZlKCk7CiAgICAgYXV0byBkZXN0aW5hdGlv
biA9IG1ha2VVbmlxdWVSZWY8UmVtb3RlQXVkaW9EZXN0aW5hdGlvbj4obV9ncHVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLCBuZXdJRCwgaW5wdXREZXZpY2VJZCwgbnVtYmVyT2ZJbnB1dENoYW5uZWxz
LCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBzYW1wbGVSYXRlLCBoYXJkd2FyZVNhbXBsZVJhdGUs
IFdURk1vdmUocmVuZGVyU2VtYXBob3JlKSk7CiAgICAgbV9hdWRpb0Rlc3RpbmF0aW9ucy5hZGQo
bmV3SUQsIFdURk1vdmUoZGVzdGluYXRpb24pKTsKQEAgLTE1NSw2ICsxNTksOCBAQCB2b2lkIFJl
bW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpjcmVhdGVBdWRpb0Rlc3RpbmF0aW9uKGNvbnN0
IFN0cmluZyYgaW5wdXREZQogCiB2b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpk
ZWxldGVBdWRpb0Rlc3RpbmF0aW9uKFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyIGlk
ZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
IHsKKyAgICBNRVNTQUdFX0NIRUNLKCFtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaXNDYXB0
aXZlUG9ydGFsTW9kZUVuYWJsZWQoKSk7CisKICAgICBtX2F1ZGlvRGVzdGluYXRpb25zLnJlbW92
ZShpZGVudGlmaWVyKTsKICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogCkBAIC0xNjQsNiArMTcw
LDggQEAgdm9pZCBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6ZGVsZXRlQXVkaW9EZXN0
aW5hdGlvbihSZW1vdGVBdWRpb0Rlc3RpbmF0aW8KIAogdm9pZCBSZW1vdGVBdWRpb0Rlc3RpbmF0
aW9uTWFuYWdlcjo6c3RhcnRBdWRpb0Rlc3RpbmF0aW9uKFJlbW90ZUF1ZGlvRGVzdGluYXRpb25J
ZGVudGlmaWVyIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiB7CisgICAgTUVTU0FHRV9DSEVDSyghbV9ncHVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmlzQ2FwdGl2ZVBvcnRhbE1vZGVFbmFibGVkKCkpOworCiAgICAgYm9vbCBpc1Bs
YXlpbmcgPSBmYWxzZTsKICAgICBpZiAoYXV0byogaXRlbSA9IG1fYXVkaW9EZXN0aW5hdGlvbnMu
Z2V0KGlkZW50aWZpZXIpKSB7CiAgICAgICAgIGl0ZW0tPnN0YXJ0KCk7CkBAIC0xNzQsNiArMTgy
LDggQEAgdm9pZCBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6c3RhcnRBdWRpb0Rlc3Rp
bmF0aW9uKFJlbW90ZUF1ZGlvRGVzdGluYXRpb24KIAogdm9pZCBSZW1vdGVBdWRpb0Rlc3RpbmF0
aW9uTWFuYWdlcjo6c3RvcEF1ZGlvRGVzdGluYXRpb24oUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklk
ZW50aWZpZXIgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKIHsKKyAgICBNRVNTQUdFX0NIRUNLKCFtX2dwdUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuaXNDYXB0aXZlUG9ydGFsTW9kZUVuYWJsZWQoKSk7CisKICAgICBib29sIGlzUGxh
eWluZyA9IGZhbHNlOwogICAgIGlmIChhdXRvKiBpdGVtID0gbV9hdWRpb0Rlc3RpbmF0aW9ucy5n
ZXQoaWRlbnRpZmllcikpIHsKICAgICAgICAgaXRlbS0+c3RvcCgpOwpAQCAtMjAxLDQgKzIxMSw2
IEBAIGJvb2wgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OmFsbG93c0V4aXRVbmRlck1l
bW9yeVByZXNzdXJlKCkgY29uc3QKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKKyN1bmRlZiBN
RVNTQUdFX0NIRUNLCisKICNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShX
RUJfQVVESU8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9HUFVQcm9jZXNzQ29u
bmVjdGlvblBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0dQVVByb2Nlc3NDb25u
ZWN0aW9uUGFyYW1ldGVycy5oCmluZGV4IGVkMzA0OTViMjUyMjg2MWY3NDY0NTJmZTkwOTFiOTY1
NjExMDY3NzAuLjExODllYTllZjVkOGM5YmRlZTU4ZmVlOTdjODJhN2U5NzMwZmE4NzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0dQVVByb2Nlc3NDb25uZWN0aW9uUGFyYW1ldGVy
cy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0dQVVByb2Nlc3NDb25uZWN0aW9uUGFyYW1l
dGVycy5oCkBAIC0zNiw2ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogc3RydWN0IEdQVVBy
b2Nlc3NDb25uZWN0aW9uUGFyYW1ldGVycyB7CiAgICAgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aXR5
IHdlYlByb2Nlc3NJZGVudGl0eTsKICAgICBWZWN0b3I8U3RyaW5nPiBvdmVycmlkZUxhbmd1YWdl
czsKKyAgICBib29sIGlzQ2FwdGl2ZVBvcnRhbE1vZGVFbmFibGVkIHsgZmFsc2UgfTsKICNpZiBF
TkFCTEUoSVBDX1RFU1RJTkdfQVBJKQogICAgIGJvb2wgaWdub3JlSW52YWxpZE1lc3NhZ2VGb3JU
ZXN0aW5nIHsgZmFsc2UgfTsKICNlbmRpZgpAQCAtNDcsNiArNDgsNyBAQCBzdHJ1Y3QgR1BVUHJv
Y2Vzc0Nvbm5lY3Rpb25QYXJhbWV0ZXJzIHsKICAgICB7CiAgICAgICAgIGVuY29kZXIgPDwgd2Vi
UHJvY2Vzc0lkZW50aXR5OwogICAgICAgICBlbmNvZGVyIDw8IG92ZXJyaWRlTGFuZ3VhZ2VzOwor
ICAgICAgICBlbmNvZGVyIDw8IGlzQ2FwdGl2ZVBvcnRhbE1vZGVFbmFibGVkOwogI2lmIEVOQUJM
RShJUENfVEVTVElOR19BUEkpCiAgICAgICAgIGVuY29kZXIgPDwgaWdub3JlSW52YWxpZE1lc3Nh
Z2VGb3JUZXN0aW5nOwogI2VuZGlmCkBAIC02Nyw2ICs2OSwxMSBAQCBzdHJ1Y3QgR1BVUHJvY2Vz
c0Nvbm5lY3Rpb25QYXJhbWV0ZXJzIHsKICAgICAgICAgaWYgKCFvdmVycmlkZUxhbmd1YWdlcykK
ICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKKyAgICAgICAgc3RkOjpvcHRpb25h
bDxib29sPiBpc0NhcHRpdmVQb3J0YWxNb2RlRW5hYmxlZDsKKyAgICAgICAgZGVjb2RlciA+PiBp
c0NhcHRpdmVQb3J0YWxNb2RlRW5hYmxlZDsKKyAgICAgICAgaWYgKCFpc0NhcHRpdmVQb3J0YWxN
b2RlRW5hYmxlZCkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKICNpZiBFTkFC
TEUoSVBDX1RFU1RJTkdfQVBJKQogICAgICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGlnbm9yZUlu
dmFsaWRNZXNzYWdlRm9yVGVzdGluZzsKICAgICAgICAgZGVjb2RlciA+PiBpZ25vcmVJbnZhbGlk
TWVzc2FnZUZvclRlc3Rpbmc7CkBAIC04Myw2ICs5MCw3IEBAIHN0cnVjdCBHUFVQcm9jZXNzQ29u
bmVjdGlvblBhcmFtZXRlcnMgewogICAgICAgICByZXR1cm4gR1BVUHJvY2Vzc0Nvbm5lY3Rpb25Q
YXJhbWV0ZXJzIHsKICAgICAgICAgICAgIFdURk1vdmUoKndlYlByb2Nlc3NJZGVudGl0eSksCiAg
ICAgICAgICAgICBXVEZNb3ZlKCpvdmVycmlkZUxhbmd1YWdlcyksCisgICAgICAgICAgICAqaXND
YXB0aXZlUG9ydGFsTW9kZUVuYWJsZWQsCiAjaWYgRU5BQkxFKElQQ19URVNUSU5HX0FQSSkKICAg
ICAgICAgICAgICppZ25vcmVJbnZhbGlkTWVzc2FnZUZvclRlc3RpbmcsCiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAppbmRleCA5ZWMwZTE1NWJkNTc3
OTVmZjVlZGZiNjQ4MmYwNGI5YzI1ZDg0OTBkLi5hZjNmZjM5ODAxNDNkMGNkNjdkNjAxNTY4MmUy
OGFmMWQyODM5NzdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wu
Y3BwCkBAIC01MTksNiArNTE5LDggQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6Z2V0R1BVUHJvY2Vz
c0Nvbm5lY3Rpb24oV2ViUHJvY2Vzc1Byb3h5JiB3ZWJQcm9jZXNzUHJveHksIEcKICAgICBwYXJh
bWV0ZXJzLnByZXNlbnRpbmdBcHBsaWNhdGlvbkF1ZGl0VG9rZW4gPSBjb25maWd1cmF0aW9uKCku
cHJlc2VudGluZ0FwcGxpY2F0aW9uUHJvY2Vzc1Rva2VuKCk7CiAjZW5kaWYKIAorICAgIHBhcmFt
ZXRlcnMuaXNDYXB0aXZlUG9ydGFsTW9kZUVuYWJsZWQgPSB3ZWJQcm9jZXNzUHJveHkuY2FwdGl2
ZVBvcnRhbE1vZGUoKSA9PSBXZWJQcm9jZXNzUHJveHk6OkNhcHRpdmVQb3J0YWxNb2RlOjpFbmFi
bGVkOworCiAgICAgZW5zdXJlR1BVUHJvY2VzcygpLmdldEdQVVByb2Nlc3NDb25uZWN0aW9uKHdl
YlByb2Nlc3NQcm94eSwgcGFyYW1ldGVycywgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0
aGlzIH0sIHBhcmFtZXRlcnMsIHdlYlByb2Nlc3NQcm94eSA9IFdlYWtQdHIgeyB3ZWJQcm9jZXNz
UHJveHkgfSwgcmVwbHkgPSBXVEZNb3ZlKHJlcGx5KV0gKGF1dG8mIGNvbm5lY3Rpb25JbmZvKSBt
dXRhYmxlIHsKICAgICAgICAgaWYgKFVOTElLRUxZKCFJUEM6OkNvbm5lY3Rpb246OmlkZW50aWZp
ZXJJc1ZhbGlkKGNvbm5lY3Rpb25JbmZvLmlkZW50aWZpZXIoKSkpKSB7CiAgICAgICAgICAgICAv
LyBSZXRyeSBvbiB0aGUgbmV4dCBSdW5Mb29wIGl0ZXJhdGlvbiBiZWNhdXNlIHdlIG1heSBiZSBp
bnNpZGUgdGhlIFdlYlByb2Nlc3NQb29sIGRlc3RydWN0b3IuCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>458300</attachid>
            <date>2022-04-25 14:21:43 -0700</date>
            <delta_ts>2022-04-25 15:31:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-239551-20220425142142.patch</filename>
            <type>text/plain</type>
            <size>11487</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzMzI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDE1OWZkM2VmMGFlZDhhMmY5
MTI5YzVmMjAwNzRkMzUzYmVmODQ4YTYuLmEzZjEwM2VhYWNmMjg3NzRiZTQ2OTA2MjcxZWU4YWQw
YjUzMjcwMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMgQEAKKzIwMjItMDQtMjUgIEJyZW50IEZ1
bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CisKKyAgICAgICAgSEFSREVOSU5HOiBBZGQgTUVT
U0FHRV9DSEVDSyBpbiBzb21lIENhcHRpdmUgUG9ydGFsIGNhc2VzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzk1NTEKKyAgICAgICAgPHJkYXI6Ly85
MTQ3ODc0OD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBZGQgTUVTU0FHRV9DSEVDSyBwcm90ZWN0aW9ucyB0byBhIHNldCBvZiBtZXNzYWdlIGhhbmRs
ZXJzIGZvciBBUEkgcHJvaGliaXRlZCB3aGVuCisgICAgICAgIHNlbnQgZnJvbSBhIENhcHRpdmUg
UG9ydGFsIHByb2Nlc3MuIFRoaXMgY2hhbmdlIGFsc28gYWRkcyBhIGZsYWcgdG8gdGhlIEdQVVBy
b2Nlc3NDb25uZWN0aW9uUGFyYW1ldGVycworICAgICAgICBzdHJ1Y3Qgc28gdGhhdCBHUFUgUHJv
Y2VzcyBjb25uZWN0aW9ucyBjYW4gYmUgbWFya2VkIGFzIGJlaW5nIGFzc29jaWF0ZWQgd2l0aCBh
IENhcHRpdmUgUG9ydGFsCisgICAgICAgIHByb2Nlc3MuCisKKyAgICAgICAgKiBHUFVQcm9jZXNz
L0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpHUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKToKKyAgICAgICAg
KFdlYktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0
R0wpOgorICAgICAgICAoV2ViS2l0OjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWxlYXNl
R3JhcGhpY3NDb250ZXh0R0wpOgorICAgICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5oOgorICAgICAgICAoV2ViS2l0OjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
Ojppc0NhcHRpdmVQb3J0YWxNb2RlRW5hYmxlZCBjb25zdCk6CisgICAgICAgICogR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpjcmVhdGVBdWRpb0Rlc3RpbmF0aW9u
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OmRlbGV0
ZUF1ZGlvRGVzdGluYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3RpbmF0
aW9uTWFuYWdlcjo6c3RhcnRBdWRpb0Rlc3RpbmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OnN0b3BBdWRpb0Rlc3RpbmF0aW9uKToKKyAgICAg
ICAgKiBTaGFyZWQvR1BVUHJvY2Vzc0Nvbm5lY3Rpb25QYXJhbWV0ZXJzLmg6CisgICAgICAgIChX
ZWJLaXQ6OkdQVVByb2Nlc3NDb25uZWN0aW9uUGFyYW1ldGVyczo6ZW5jb2RlIGNvbnN0KToKKyAg
ICAgICAgKFdlYktpdDo6R1BVUHJvY2Vzc0Nvbm5lY3Rpb25QYXJhbWV0ZXJzOjpkZWNvZGUpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3NQb29sOjpnZXRHUFVQcm9jZXNzQ29ubmVjdGlvbik6CisKIDIwMjItMDQtMjUg
IENsYXVkaW8gU2FhdmVkcmEgIDxjc2FhdmVkcmFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR0xJ
Ql0gRGVmYXVsdC1oYW5kbGUgcmVjZW50bHktYWRkZWQgUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29u
IHZhbHVlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IGMwNDMyMWNlNWM0NjY2ZWI5NzVhMGNjNDI5ODhjMWU3
Njc3MDUyOWUuLjY1MTJjMjMyMTc1ZDBiNGU4NTcxODVhM2JmNzY5NTlmYjUzNGU3MTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE5LTIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE5LTIw
MjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0xNTgsNiArMTU4LDggQEAKICNpbmNsdWRlICJSZW1vdGVWaWRlb0ZyYW1l
T2JqZWN0SGVhcC5oIgogI2VuZGlmCiAKKyNkZWZpbmUgTUVTU0FHRV9DSEVDSyhhc3NlcnRpb24p
IE1FU1NBR0VfQ0hFQ0tfQkFTRShhc3NlcnRpb24sICgmY29ubmVjdGlvbigpKSkKKwogbmFtZXNw
YWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtMjU3LDYgKzI1OSw3
IEBAIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mo
R1BVUHJvY2VzcyYgZ3B1UHJvY2VzcywgV2ViCiAjaWYgSEFWRShBVURJVF9UT0tFTikKICAgICAs
IG1fcHJlc2VudGluZ0FwcGxpY2F0aW9uQXVkaXRUb2tlbihXVEZNb3ZlKHBhcmFtZXRlcnMucHJl
c2VudGluZ0FwcGxpY2F0aW9uQXVkaXRUb2tlbikpCiAjZW5kaWYKKyAgICAsIG1faXNDYXB0aXZl
UG9ydGFsTW9kZUVuYWJsZWQocGFyYW1ldGVycy5pc0NhcHRpdmVQb3J0YWxNb2RlRW5hYmxlZCkK
ICNpZiBFTkFCTEUoUk9VVElOR19BUkJJVFJBVElPTikgJiYgSEFWRShBVkFVRElPX1JPVVRJTkdf
QVJCSVRFUikKICAgICAsIG1fcm91dGluZ0FyYml0cmF0b3IoTG9jYWxBdWRpb1Nlc3Npb25Sb3V0
aW5nQXJiaXRyYXRvcjo6Y3JlYXRlKCp0aGlzKSkKICNlbmRpZgpAQCAtNTQ5LDYgKzU1Miw4IEBA
IHZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVsZWFzZVJlbmRlcmluZ0JhY2tlbmQo
UmVuZGVyaW5nQmFja2VuZElkZW50aWZpCiAjaWYgRU5BQkxFKFdFQkdMKQogdm9pZCBHUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGVHcmFwaGljc0NvbnRleHRHTChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cmlidXRlcywgR3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgUmVuZGVyaW5nQmFja2VuZElkZW50
aWZpZXIgcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIsIElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1
ZmZlciYmIHN0cmVhbSkKIHsKKyAgICBNRVNTQUdFX0NIRUNLKCFpc0NhcHRpdmVQb3J0YWxNb2Rl
RW5hYmxlZCgpKTsKKwogICAgIGF1dG8gaXQgPSBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRNYXAu
ZmluZChyZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7CiAgICAgaWYgKGl0ID09IG1fcmVtb3Rl
UmVuZGVyaW5nQmFja2VuZE1hcC5lbmQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNTYyLDYgKzU2
Nyw4IEBAIHZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRlR3JhcGhpY3NDb250
ZXh0R0woV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0CiAKIHZvaWQgR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6cmVsZWFzZUdyYXBoaWNzQ29udGV4dEdMKEdyYXBoaWNzQ29udGV4dEdMSWRlbnRp
ZmllciBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpCiB7CisgICAgTUVTU0FHRV9DSEVDSygh
aXNDYXB0aXZlUG9ydGFsTW9kZUVuYWJsZWQoKSk7CisKICAgICBtX3JlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMTWFwLnJlbW92ZShncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwogICAgIGlmICht
X3JlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWFwLmlzRW1wdHkoKSkKICAgICAgICAgZ3B1UHJvY2Vz
cygpLnRyeUV4aXRJZlVudXNlZEFuZFVuZGVyTWVtb3J5UHJlc3N1cmUoKTsKQEAgLTk4Nyw0ICs5
OTQsNiBAQCB2b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmVuYWJsZVZQOURlY29kZXJz
KGJvb2wgc2hvdWxkRW5hYmxlVlA4RGVjb2RlciwgYgogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
IAorI3VuZGVmIE1FU1NBR0VfQ0hFQ0sKKwogI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5oCmluZGV4IGZiNTZiMDZkYTU5ZjZhM2U3MmIyODg2ZGUzOGFjYjZhZjY1ZjQzZjcuLjVm
Mzk3NWJmMjdmN2YwZmMxYzI4MTNkMWQ1NzVkODZiOWFlMmQ3MTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKKysrIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTktMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTktMjAyMiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEz
NSw2ICsxMzUsOCBAQCBwdWJsaWM6CiAKICAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQoKSBj
b25zdCB7IHJldHVybiBtX3Nlc3Npb25JRDsgfQogCisgICAgYm9vbCBpc0NhcHRpdmVQb3J0YWxN
b2RlRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNDYXB0aXZlUG9ydGFsTW9kZUVuYWJsZWQ7
IH0KKwogICAgIExvZ2dlciYgbG9nZ2VyKCk7CiAKICAgICBjb25zdCBTdHJpbmcmIG1lZGlhQ2Fj
aGVEaXJlY3RvcnkoKSBjb25zdDsKQEAgLTM2NSw2ICszNjcsNyBAQCBwcml2YXRlOgogCiAgICAg
UmVmUHRyPFJlbW90ZVJlbW90ZUNvbW1hbmRMaXN0ZW5lclByb3h5PiBtX3JlbW90ZVJlbW90ZUNv
bW1hbmRMaXN0ZW5lcjsKICAgICBib29sIG1faXNBY3RpdmVOb3dQbGF5aW5nUHJvY2VzcyB7IGZh
bHNlIH07CisgICAgYm9vbCBtX2lzQ2FwdGl2ZVBvcnRhbE1vZGVFbmFibGVkIHsgZmFsc2UgfTsK
IAogI2lmIEVOQUJMRShST1VUSU5HX0FSQklUUkFUSU9OKSAmJiBIQVZFKEFWQVVESU9fUk9VVElO
R19BUkJJVEVSKQogICAgIFVuaXF1ZVJlZjxMb2NhbEF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJh
dG9yPiBtX3JvdXRpbmdBcmJpdHJhdG9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5jcHAK
aW5kZXggYTlmOGUwNzczZTg3MDZiZDFmZjIwNmRhOTgyNWFhNWFmYWYwNjYwNS4uMGJiOWM0YTMx
NDYyNzc1NWY1OTgyNWEzNmY3MGQ2YTcxZmVjMmNhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1h
bmFnZXIuY3BwCkBAIC00MSw2ICs0MSw4IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9XZWJBdWRpb0J1
ZmZlckxpc3QuaD4KICNlbmRpZgogCisjZGVmaW5lIE1FU1NBR0VfQ0hFQ0soYXNzZXJ0aW9uKSBN
RVNTQUdFX0NIRUNLX0JBU0UoYXNzZXJ0aW9uLCAoJm1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5jb25uZWN0aW9uKCkpKQorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgUmVtb3RlQXVk
aW9EZXN0aW5hdGlvbiBmaW5hbApAQCAtMTQ3LDYgKzE0OSw4IEBAIFJlbW90ZUF1ZGlvRGVzdGlu
YXRpb25NYW5hZ2VyOjp+UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIoKSA9IGRlZmF1bHQ7
CiAKIHZvaWQgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OmNyZWF0ZUF1ZGlvRGVzdGlu
YXRpb24oY29uc3QgU3RyaW5nJiBpbnB1dERldmljZUlkLCB1aW50MzJfdCBudW1iZXJPZklucHV0
Q2hhbm5lbHMsIHVpbnQzMl90IG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJh
dGUsIGZsb2F0IGhhcmR3YXJlU2FtcGxlUmF0ZSwgSVBDOjpTZW1hcGhvcmUmJiByZW5kZXJTZW1h
cGhvcmUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV2ViS2l0OjpSZW1vdGVBdWRpb0Rl
c3RpbmF0aW9uSWRlbnRpZmllcik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CisgICAgTUVTU0FH
RV9DSEVDSyghbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmlzQ2FwdGl2ZVBvcnRhbE1vZGVF
bmFibGVkKCkpOworCiAgICAgYXV0byBuZXdJRCA9IFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVu
dGlmaWVyOjpnZW5lcmF0ZVRocmVhZFNhZmUoKTsKICAgICBhdXRvIGRlc3RpbmF0aW9uID0gbWFr
ZVVuaXF1ZVJlZjxSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uPihtX2dwdUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MsIG5ld0lELCBpbnB1dERldmljZUlkLCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIG51bWJl
ck9mT3V0cHV0Q2hhbm5lbHMsIHNhbXBsZVJhdGUsIGhhcmR3YXJlU2FtcGxlUmF0ZSwgV1RGTW92
ZShyZW5kZXJTZW1hcGhvcmUpKTsKICAgICBtX2F1ZGlvRGVzdGluYXRpb25zLmFkZChuZXdJRCwg
V1RGTW92ZShkZXN0aW5hdGlvbikpOwpAQCAtMTU1LDYgKzE1OSw4IEBAIHZvaWQgUmVtb3RlQXVk
aW9EZXN0aW5hdGlvbk1hbmFnZXI6OmNyZWF0ZUF1ZGlvRGVzdGluYXRpb24oY29uc3QgU3RyaW5n
JiBpbnB1dERlCiAKIHZvaWQgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OmRlbGV0ZUF1
ZGlvRGVzdGluYXRpb24oUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIgaWRlbnRpZmll
ciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogeworICAg
IE1FU1NBR0VfQ0hFQ0soIW1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5pc0NhcHRpdmVQb3J0
YWxNb2RlRW5hYmxlZCgpKTsKKwogICAgIG1fYXVkaW9EZXN0aW5hdGlvbnMucmVtb3ZlKGlkZW50
aWZpZXIpOwogICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAKQEAgLTE2NCw2ICsxNzAsOCBAQCB2
b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpkZWxldGVBdWRpb0Rlc3RpbmF0aW9u
KFJlbW90ZUF1ZGlvRGVzdGluYXRpbwogCiB2b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5h
Z2VyOjpzdGFydEF1ZGlvRGVzdGluYXRpb24oUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZp
ZXIgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKIHsKKyAgICBNRVNTQUdFX0NIRUNLKCFtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuaXNDYXB0aXZlUG9ydGFsTW9kZUVuYWJsZWQoKSk7CisKICAgICBib29sIGlzUGxheWluZyA9
IGZhbHNlOwogICAgIGlmIChhdXRvKiBpdGVtID0gbV9hdWRpb0Rlc3RpbmF0aW9ucy5nZXQoaWRl
bnRpZmllcikpIHsKICAgICAgICAgaXRlbS0+c3RhcnQoKTsKQEAgLTE3NCw2ICsxODIsOCBAQCB2
b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpzdGFydEF1ZGlvRGVzdGluYXRpb24o
UmVtb3RlQXVkaW9EZXN0aW5hdGlvbgogCiB2b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5h
Z2VyOjpzdG9wQXVkaW9EZXN0aW5hdGlvbihSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmll
ciBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogeworICAgIE1FU1NBR0VfQ0hFQ0soIW1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5pc0NhcHRpdmVQb3J0YWxNb2RlRW5hYmxlZCgpKTsKKwogICAgIGJvb2wgaXNQbGF5aW5nID0g
ZmFsc2U7CiAgICAgaWYgKGF1dG8qIGl0ZW0gPSBtX2F1ZGlvRGVzdGluYXRpb25zLmdldChpZGVu
dGlmaWVyKSkgewogICAgICAgICBpdGVtLT5zdG9wKCk7CkBAIC0yMDEsNCArMjExLDYgQEAgYm9v
bCBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6YWxsb3dzRXhpdFVuZGVyTWVtb3J5UHJl
c3N1cmUoKSBjb25zdAogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAorI3VuZGVmIE1FU1NBR0Vf
Q0hFQ0sKKwogI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQl9BVURJ
TykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0dQVVByb2Nlc3NDb25uZWN0aW9u
UGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvR1BVUHJvY2Vzc0Nvbm5lY3Rpb25Q
YXJhbWV0ZXJzLmgKaW5kZXggZWQzMDQ5NWIyNTIyODYxZjc0NjQ1MmZlOTA5MWI5NjU2MTEwNjc3
MC4uMTE4OWVhOWVmNWQ4YzliZGVlNThmZWU5N2M4MmE3ZTk3MzBmYTg3OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvR1BVUHJvY2Vzc0Nvbm5lY3Rpb25QYXJhbWV0ZXJzLmgKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvR1BVUHJvY2Vzc0Nvbm5lY3Rpb25QYXJhbWV0ZXJzLmgK
QEAgLTM2LDYgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBzdHJ1Y3QgR1BVUHJvY2Vzc0Nv
bm5lY3Rpb25QYXJhbWV0ZXJzIHsKICAgICBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpdHkgd2ViUHJv
Y2Vzc0lkZW50aXR5OwogICAgIFZlY3RvcjxTdHJpbmc+IG92ZXJyaWRlTGFuZ3VhZ2VzOworICAg
IGJvb2wgaXNDYXB0aXZlUG9ydGFsTW9kZUVuYWJsZWQgeyBmYWxzZSB9OwogI2lmIEVOQUJMRShJ
UENfVEVTVElOR19BUEkpCiAgICAgYm9vbCBpZ25vcmVJbnZhbGlkTWVzc2FnZUZvclRlc3Rpbmcg
eyBmYWxzZSB9OwogI2VuZGlmCkBAIC00Nyw2ICs0OCw3IEBAIHN0cnVjdCBHUFVQcm9jZXNzQ29u
bmVjdGlvblBhcmFtZXRlcnMgewogICAgIHsKICAgICAgICAgZW5jb2RlciA8PCB3ZWJQcm9jZXNz
SWRlbnRpdHk7CiAgICAgICAgIGVuY29kZXIgPDwgb3ZlcnJpZGVMYW5ndWFnZXM7CisgICAgICAg
IGVuY29kZXIgPDwgaXNDYXB0aXZlUG9ydGFsTW9kZUVuYWJsZWQ7CiAjaWYgRU5BQkxFKElQQ19U
RVNUSU5HX0FQSSkKICAgICAgICAgZW5jb2RlciA8PCBpZ25vcmVJbnZhbGlkTWVzc2FnZUZvclRl
c3Rpbmc7CiAjZW5kaWYKQEAgLTY3LDYgKzY5LDExIEBAIHN0cnVjdCBHUFVQcm9jZXNzQ29ubmVj
dGlvblBhcmFtZXRlcnMgewogICAgICAgICBpZiAoIW92ZXJyaWRlTGFuZ3VhZ2VzKQogICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAorICAgICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+
IGlzQ2FwdGl2ZVBvcnRhbE1vZGVFbmFibGVkOworICAgICAgICBkZWNvZGVyID4+IGlzQ2FwdGl2
ZVBvcnRhbE1vZGVFbmFibGVkOworICAgICAgICBpZiAoIWlzQ2FwdGl2ZVBvcnRhbE1vZGVFbmFi
bGVkKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKwogI2lmIEVOQUJMRShJUENf
VEVTVElOR19BUEkpCiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gaWdub3JlSW52YWxpZE1l
c3NhZ2VGb3JUZXN0aW5nOwogICAgICAgICBkZWNvZGVyID4+IGlnbm9yZUludmFsaWRNZXNzYWdl
Rm9yVGVzdGluZzsKQEAgLTgzLDYgKzkwLDcgQEAgc3RydWN0IEdQVVByb2Nlc3NDb25uZWN0aW9u
UGFyYW1ldGVycyB7CiAgICAgICAgIHJldHVybiBHUFVQcm9jZXNzQ29ubmVjdGlvblBhcmFtZXRl
cnMgewogICAgICAgICAgICAgV1RGTW92ZSgqd2ViUHJvY2Vzc0lkZW50aXR5KSwKICAgICAgICAg
ICAgIFdURk1vdmUoKm92ZXJyaWRlTGFuZ3VhZ2VzKSwKKyAgICAgICAgICAgICppc0NhcHRpdmVQ
b3J0YWxNb2RlRW5hYmxlZCwKICNpZiBFTkFCTEUoSVBDX1RFU1RJTkdfQVBJKQogICAgICAgICAg
ICAgKmlnbm9yZUludmFsaWRNZXNzYWdlRm9yVGVzdGluZywKICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4IDlkNTY5MTIzNTMwMDQzZGVkZDA5
ZTJlMGUwNzVkYzhkMGE1OTAxNDMuLjY2MDVmMzQ1MzNjNzJlZjkxODE5MDE3NzQyZjYyMDMxODlj
ZWI2YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29s
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKQEAg
LTUyNCw2ICs1MjQsOCBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpnZXRHUFVQcm9jZXNzQ29ubmVj
dGlvbihXZWJQcm9jZXNzUHJveHkmIHdlYlByb2Nlc3NQcm94eSwgRwogICAgIHBhcmFtZXRlcnMu
cHJlc2VudGluZ0FwcGxpY2F0aW9uQXVkaXRUb2tlbiA9IGNvbmZpZ3VyYXRpb24oKS5wcmVzZW50
aW5nQXBwbGljYXRpb25Qcm9jZXNzVG9rZW4oKTsKICNlbmRpZgogCisgICAgcGFyYW1ldGVycy5p
c0NhcHRpdmVQb3J0YWxNb2RlRW5hYmxlZCA9IHdlYlByb2Nlc3NQcm94eS5jYXB0aXZlUG9ydGFs
TW9kZSgpID09IFdlYlByb2Nlc3NQcm94eTo6Q2FwdGl2ZVBvcnRhbE1vZGU6OkVuYWJsZWQ7CisK
ICAgICBlbnN1cmVHUFVQcm9jZXNzKCkuZ2V0R1BVUHJvY2Vzc0Nvbm5lY3Rpb24od2ViUHJvY2Vz
c1Byb3h5LCBwYXJhbWV0ZXJzLCBbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwg
cGFyYW1ldGVycywgd2ViUHJvY2Vzc1Byb3h5ID0gV2Vha1B0ciB7IHdlYlByb2Nlc3NQcm94eSB9
LCByZXBseSA9IFdURk1vdmUocmVwbHkpXSAoYXV0byYgY29ubmVjdGlvbkluZm8pIG11dGFibGUg
ewogICAgICAgICBpZiAoVU5MSUtFTFkoIUlQQzo6Q29ubmVjdGlvbjo6aWRlbnRpZmllcklzVmFs
aWQoY29ubmVjdGlvbkluZm8uaWRlbnRpZmllcigpKSkpIHsKICAgICAgICAgICAgIC8vIFJldHJ5
IG9uIHRoZSBuZXh0IFJ1bkxvb3AgaXRlcmF0aW9uIGJlY2F1c2Ugd2UgbWF5IGJlIGluc2lkZSB0
aGUgV2ViUHJvY2Vzc1Bvb2wgZGVzdHJ1Y3Rvci4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>458306</attachid>
            <date>2022-04-25 15:31:10 -0700</date>
            <delta_ts>2022-04-25 17:17:23 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-239551-20220425153109.patch</filename>
            <type>text/plain</type>
            <size>12674</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzMzI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDE1OWZkM2VmMGFlZDhhMmY5
MTI5YzVmMjAwNzRkMzUzYmVmODQ4YTYuLjA2NTJiMTQ1NWRiYTE0ZjVlMzk2OGU2MDY1MzYxZDg2
ZTFjNzA5MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMgQEAKKzIwMjItMDQtMjUgIEJyZW50IEZ1
bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CisKKyAgICAgICAgSEFSREVOSU5HOiBBZGQgTUVT
U0FHRV9DSEVDSyBpbiBzb21lIENhcHRpdmUgUG9ydGFsIGNhc2VzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzk1NTEKKyAgICAgICAgPHJkYXI6Ly85
MTQ3ODc0OD4KKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBB
ZGQgTUVTU0FHRV9DSEVDSyBwcm90ZWN0aW9ucyB0byBhIHNldCBvZiBtZXNzYWdlIGhhbmRsZXJz
IGZvciBBUEkgcHJvaGliaXRlZCB3aGVuCisgICAgICAgIHNlbnQgZnJvbSBhIENhcHRpdmUgUG9y
dGFsIHByb2Nlc3MuIFRoaXMgY2hhbmdlIGFsc28gYWRkcyBhIGZsYWcgdG8gdGhlIEdQVVByb2Nl
c3NDb25uZWN0aW9uUGFyYW1ldGVycworICAgICAgICBzdHJ1Y3Qgc28gdGhhdCBHUFUgUHJvY2Vz
cyBjb25uZWN0aW9ucyBjYW4gYmUgbWFya2VkIGFzIGJlaW5nIGFzc29jaWF0ZWQgd2l0aCBhIENh
cHRpdmUgUG9ydGFsCisgICAgICAgIHByb2Nlc3MuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL0dQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpHUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKToKKyAgICAgICAgKFdl
YktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0R0wp
OgorICAgICAgICAoV2ViS2l0OjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWxlYXNlR3Jh
cGhpY3NDb250ZXh0R0wpOgorICAgICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5oOgorICAgICAgICAoV2ViS2l0OjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpp
c0NhcHRpdmVQb3J0YWxNb2RlRW5hYmxlZCBjb25zdCk6CisgICAgICAgICogR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpjcmVhdGVBdWRpb0Rlc3RpbmF0aW9uKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OmRlbGV0ZUF1
ZGlvRGVzdGluYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9u
TWFuYWdlcjo6c3RhcnRBdWRpb0Rlc3RpbmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
QXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OnN0b3BBdWRpb0Rlc3RpbmF0aW9uKToKKyAgICAgICAg
KiBTaGFyZWQvR1BVUHJvY2Vzc0Nvbm5lY3Rpb25QYXJhbWV0ZXJzLmg6CisgICAgICAgIChXZWJL
aXQ6OkdQVVByb2Nlc3NDb25uZWN0aW9uUGFyYW1ldGVyczo6ZW5jb2RlIGNvbnN0KToKKyAgICAg
ICAgKFdlYktpdDo6R1BVUHJvY2Vzc0Nvbm5lY3Rpb25QYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NQb29sOjpnZXRHUFVQcm9jZXNzQ29ubmVjdGlvbik6CisKIDIwMjItMDQtMjUgIENs
YXVkaW8gU2FhdmVkcmEgIDxjc2FhdmVkcmFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR0xJQl0g
RGVmYXVsdC1oYW5kbGUgcmVjZW50bHktYWRkZWQgUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uIHZh
bHVlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuY3BwCmluZGV4IGMwNDMyMWNlNWM0NjY2ZWI5NzVhMGNjNDI5ODhjMWU3Njc3
MDUyOWUuLjY1MTJjMjMyMTc1ZDBiNGU4NTcxODVhM2JmNzY5NTlmYjUzNGU3MTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE5LTIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE5LTIwMjIg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0xNTgsNiArMTU4LDggQEAKICNpbmNsdWRlICJSZW1vdGVWaWRlb0ZyYW1lT2Jq
ZWN0SGVhcC5oIgogI2VuZGlmCiAKKyNkZWZpbmUgTUVTU0FHRV9DSEVDSyhhc3NlcnRpb24pIE1F
U1NBR0VfQ0hFQ0tfQkFTRShhc3NlcnRpb24sICgmY29ubmVjdGlvbigpKSkKKwogbmFtZXNwYWNl
IFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtMjU3LDYgKzI1OSw3IEBA
IEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoR1BV
UHJvY2VzcyYgZ3B1UHJvY2VzcywgV2ViCiAjaWYgSEFWRShBVURJVF9UT0tFTikKICAgICAsIG1f
cHJlc2VudGluZ0FwcGxpY2F0aW9uQXVkaXRUb2tlbihXVEZNb3ZlKHBhcmFtZXRlcnMucHJlc2Vu
dGluZ0FwcGxpY2F0aW9uQXVkaXRUb2tlbikpCiAjZW5kaWYKKyAgICAsIG1faXNDYXB0aXZlUG9y
dGFsTW9kZUVuYWJsZWQocGFyYW1ldGVycy5pc0NhcHRpdmVQb3J0YWxNb2RlRW5hYmxlZCkKICNp
ZiBFTkFCTEUoUk9VVElOR19BUkJJVFJBVElPTikgJiYgSEFWRShBVkFVRElPX1JPVVRJTkdfQVJC
SVRFUikKICAgICAsIG1fcm91dGluZ0FyYml0cmF0b3IoTG9jYWxBdWRpb1Nlc3Npb25Sb3V0aW5n
QXJiaXRyYXRvcjo6Y3JlYXRlKCp0aGlzKSkKICNlbmRpZgpAQCAtNTQ5LDYgKzU1Miw4IEBAIHZv
aWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVsZWFzZVJlbmRlcmluZ0JhY2tlbmQoUmVu
ZGVyaW5nQmFja2VuZElkZW50aWZpCiAjaWYgRU5BQkxFKFdFQkdMKQogdm9pZCBHUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGVHcmFwaGljc0NvbnRleHRHTChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cmlidXRlcywgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgUmVuZGVyaW5nQmFja2VuZElkZW50aWZp
ZXIgcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIsIElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZl
ciYmIHN0cmVhbSkKIHsKKyAgICBNRVNTQUdFX0NIRUNLKCFpc0NhcHRpdmVQb3J0YWxNb2RlRW5h
YmxlZCgpKTsKKwogICAgIGF1dG8gaXQgPSBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRNYXAuZmlu
ZChyZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7CiAgICAgaWYgKGl0ID09IG1fcmVtb3RlUmVu
ZGVyaW5nQmFja2VuZE1hcC5lbmQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNTYyLDYgKzU2Nyw4
IEBAIHZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0
R0woV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0CiAKIHZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6cmVsZWFzZUdyYXBoaWNzQ29udGV4dEdMKEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
ciBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpCiB7CisgICAgTUVTU0FHRV9DSEVDSyghaXND
YXB0aXZlUG9ydGFsTW9kZUVuYWJsZWQoKSk7CisKICAgICBtX3JlbW90ZUdyYXBoaWNzQ29udGV4
dEdMTWFwLnJlbW92ZShncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwogICAgIGlmIChtX3Jl
bW90ZUdyYXBoaWNzQ29udGV4dEdMTWFwLmlzRW1wdHkoKSkKICAgICAgICAgZ3B1UHJvY2Vzcygp
LnRyeUV4aXRJZlVudXNlZEFuZFVuZGVyTWVtb3J5UHJlc3N1cmUoKTsKQEAgLTk4Nyw0ICs5OTQs
NiBAQCB2b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmVuYWJsZVZQOURlY29kZXJzKGJv
b2wgc2hvdWxkRW5hYmxlVlA4RGVjb2RlciwgYgogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAor
I3VuZGVmIE1FU1NBR0VfQ0hFQ0sKKwogI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5oCmluZGV4IGZiNTZiMDZkYTU5ZjZhM2U3MmIyODg2ZGUzOGFjYjZhZjY1ZjQzZjcuLjVmMzk3
NWJmMjdmN2YwZmMxYzI4MTNkMWQ1NzVkODZiOWFlMmQ3MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTktMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTktMjAyMiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEzNSw2
ICsxMzUsOCBAQCBwdWJsaWM6CiAKICAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQoKSBjb25z
dCB7IHJldHVybiBtX3Nlc3Npb25JRDsgfQogCisgICAgYm9vbCBpc0NhcHRpdmVQb3J0YWxNb2Rl
RW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNDYXB0aXZlUG9ydGFsTW9kZUVuYWJsZWQ7IH0K
KwogICAgIExvZ2dlciYgbG9nZ2VyKCk7CiAKICAgICBjb25zdCBTdHJpbmcmIG1lZGlhQ2FjaGVE
aXJlY3RvcnkoKSBjb25zdDsKQEAgLTM2NSw2ICszNjcsNyBAQCBwcml2YXRlOgogCiAgICAgUmVm
UHRyPFJlbW90ZVJlbW90ZUNvbW1hbmRMaXN0ZW5lclByb3h5PiBtX3JlbW90ZVJlbW90ZUNvbW1h
bmRMaXN0ZW5lcjsKICAgICBib29sIG1faXNBY3RpdmVOb3dQbGF5aW5nUHJvY2VzcyB7IGZhbHNl
IH07CisgICAgYm9vbCBtX2lzQ2FwdGl2ZVBvcnRhbE1vZGVFbmFibGVkIHsgZmFsc2UgfTsKIAog
I2lmIEVOQUJMRShST1VUSU5HX0FSQklUUkFUSU9OKSAmJiBIQVZFKEFWQVVESU9fUk9VVElOR19B
UkJJVEVSKQogICAgIFVuaXF1ZVJlZjxMb2NhbEF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9y
PiBtX3JvdXRpbmdBcmJpdHJhdG9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5jcHAKaW5k
ZXggYTlmOGUwNzczZTg3MDZiZDFmZjIwNmRhOTgyNWFhNWFmYWYwNjYwNS4uMGIyMjdkZGM4NDhh
Mzc5NTQwNGNkMjU2YjExZWU3MzBiZmE0MDQ5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFn
ZXIuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJHUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmgiCiAjaW5jbHVkZSAiR1BVUHJvY2Vzcy5oIgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIK
ICNpbmNsdWRlIDxXZWJDb3JlL0F1ZGlvVXRpbGl0aWVzLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVh
ZFNhZmVSZWZDb3VudGVkLmg+CiAKQEAgLTQxLDYgKzQyLDI1IEBACiAjaW5jbHVkZSA8V2ViQ29y
ZS9XZWJBdWRpb0J1ZmZlckxpc3QuaD4KICNlbmRpZgogCisjaWYgRU5BQkxFKElQQ19URVNUSU5H
X0FQSSkKKyNkZWZpbmUgV0VCX1BST0NFU1NfVEVSTUlOQVRFX0NPTkRJVElPTiAhbV9ncHVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmNvbm5lY3Rpb24oKS5pZ25vcmVJbnZhbGlkTWVzc2FnZUZvclRl
c3RpbmcoKQorI2Vsc2UKKyNkZWZpbmUgV0VCX1BST0NFU1NfVEVSTUlOQVRFX0NPTkRJVElPTiB0
cnVlCisjZW5kaWYKKworI2RlZmluZSBURVJNSU5BVEVfV0VCX1BST0NFU1NfV0lUSF9NRVNTQUdF
KG1lc3NhZ2UpIFwKKyAgICBpZiAoV0VCX1BST0NFU1NfVEVSTUlOQVRFX0NPTkRJVElPTikgeyBc
CisgICAgICAgIFJFTEVBU0VfTE9HX0ZBVUxUKElQQywgIlJlcXVlc3RpbmcgdGVybWluYXRpb24g
b2Ygd2ViIHByb2Nlc3MgJSIgUFJJdTY0ICIgZm9yIHJlYXNvbjogJSIgUFVCTElDX0xPR19TVFJJ
TkcsIG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy53ZWJQcm9jZXNzSWRlbnRpZmllcigpLnRv
VUludDY0KCksICNtZXNzYWdlKTsgXAorICAgICAgICBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MudGVybWluYXRlV2ViUHJvY2VzcygpOyBcCisgICAgfQorCisjZGVmaW5lIE1FU1NBR0VfQ0hF
Q0soYXNzZXJ0aW9uLCBtZXNzYWdlKSBkbyB7IFwKKyAgICBpZiAoVU5MSUtFTFkoIShhc3NlcnRp
b24pKSkgeyBcCisgICAgICAgIFRFUk1JTkFURV9XRUJfUFJPQ0VTU19XSVRIX01FU1NBR0UobWVz
c2FnZSk7IFwKKyAgICAgICAgcmV0dXJuOyBcCisgICAgfSBcCit9IHdoaWxlICgwKQorCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbiBmaW5hbApAQCAt
MTQ3LDYgKzE2Nyw4IEBAIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjp+UmVtb3RlQXVk
aW9EZXN0aW5hdGlvbk1hbmFnZXIoKSA9IGRlZmF1bHQ7CiAKIHZvaWQgUmVtb3RlQXVkaW9EZXN0
aW5hdGlvbk1hbmFnZXI6OmNyZWF0ZUF1ZGlvRGVzdGluYXRpb24oY29uc3QgU3RyaW5nJiBpbnB1
dERldmljZUlkLCB1aW50MzJfdCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVpbnQzMl90IG51bWJl
ck9mT3V0cHV0Q2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUsIGZsb2F0IGhhcmR3YXJlU2FtcGxl
UmF0ZSwgSVBDOjpTZW1hcGhvcmUmJiByZW5kZXJTZW1hcGhvcmUsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoY29uc3QgV2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllcik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCiB7CisgICAgTUVTU0FHRV9DSEVDSyghbV9ncHVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmlzQ2FwdGl2ZVBvcnRhbE1vZGVFbmFibGVkKCksICJSZWNlaXZlZCBhIGNy
ZWF0ZUF1ZGlvRGVzdGluYXRpb24oKSBtZXNzYWdlIGZyb20gYSBDYXB0aXZlUG9ydGFsLiIpOwor
CiAgICAgYXV0byBuZXdJRCA9IFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyOjpnZW5l
cmF0ZVRocmVhZFNhZmUoKTsKICAgICBhdXRvIGRlc3RpbmF0aW9uID0gbWFrZVVuaXF1ZVJlZjxS
ZW1vdGVBdWRpb0Rlc3RpbmF0aW9uPihtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIG5ld0lE
LCBpbnB1dERldmljZUlkLCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIG51bWJlck9mT3V0cHV0Q2hh
bm5lbHMsIHNhbXBsZVJhdGUsIGhhcmR3YXJlU2FtcGxlUmF0ZSwgV1RGTW92ZShyZW5kZXJTZW1h
cGhvcmUpKTsKICAgICBtX2F1ZGlvRGVzdGluYXRpb25zLmFkZChuZXdJRCwgV1RGTW92ZShkZXN0
aW5hdGlvbikpOwpAQCAtMTU1LDYgKzE3Nyw4IEBAIHZvaWQgUmVtb3RlQXVkaW9EZXN0aW5hdGlv
bk1hbmFnZXI6OmNyZWF0ZUF1ZGlvRGVzdGluYXRpb24oY29uc3QgU3RyaW5nJiBpbnB1dERlCiAK
IHZvaWQgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OmRlbGV0ZUF1ZGlvRGVzdGluYXRp
b24oUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIgaWRlbnRpZmllciwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogeworICAgIE1FU1NBR0VfQ0hF
Q0soIW1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5pc0NhcHRpdmVQb3J0YWxNb2RlRW5hYmxl
ZCgpLCAiUmVjZWl2ZWQgYSBkZWxldGVBdWRpb0Rlc3RpbmF0aW9uKCkgbWVzc2FnZSBmcm9tIGEg
Q2FwdGl2ZVBvcnRhbC4iKTsKKwogICAgIG1fYXVkaW9EZXN0aW5hdGlvbnMucmVtb3ZlKGlkZW50
aWZpZXIpOwogICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAKQEAgLTE2NCw2ICsxODgsOCBAQCB2
b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpkZWxldGVBdWRpb0Rlc3RpbmF0aW9u
KFJlbW90ZUF1ZGlvRGVzdGluYXRpbwogCiB2b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5h
Z2VyOjpzdGFydEF1ZGlvRGVzdGluYXRpb24oUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZp
ZXIgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKIHsKKyAgICBNRVNTQUdFX0NIRUNLKCFtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuaXNDYXB0aXZlUG9ydGFsTW9kZUVuYWJsZWQoKSwgIlJlY2VpdmVkIGEgc3RhcnRBdWRpb0Rl
c3RpbmF0aW9uKCkgbWVzc2FnZSBmcm9tIGEgQ2FwdGl2ZVBvcnRhbC4iKTsKKwogICAgIGJvb2wg
aXNQbGF5aW5nID0gZmFsc2U7CiAgICAgaWYgKGF1dG8qIGl0ZW0gPSBtX2F1ZGlvRGVzdGluYXRp
b25zLmdldChpZGVudGlmaWVyKSkgewogICAgICAgICBpdGVtLT5zdGFydCgpOwpAQCAtMTc0LDYg
KzIwMCw4IEBAIHZvaWQgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OnN0YXJ0QXVkaW9E
ZXN0aW5hdGlvbihSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uCiAKIHZvaWQgUmVtb3RlQXVkaW9EZXN0
aW5hdGlvbk1hbmFnZXI6OnN0b3BBdWRpb0Rlc3RpbmF0aW9uKFJlbW90ZUF1ZGlvRGVzdGluYXRp
b25JZGVudGlmaWVyIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCiB7CisgICAgTUVTU0FHRV9DSEVDSyghbV9ncHVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmlzQ2FwdGl2ZVBvcnRhbE1vZGVFbmFibGVkKCksICJSZWNlaXZlZCBhIHN0
b3BBdWRpb0Rlc3RpbmF0aW9uKCkgbWVzc2FnZSBmcm9tIGEgQ2FwdGl2ZVBvcnRhbC4iKTsKKwog
ICAgIGJvb2wgaXNQbGF5aW5nID0gZmFsc2U7CiAgICAgaWYgKGF1dG8qIGl0ZW0gPSBtX2F1ZGlv
RGVzdGluYXRpb25zLmdldChpZGVudGlmaWVyKSkgewogICAgICAgICBpdGVtLT5zdG9wKCk7CkBA
IC0yMDEsNCArMjI5LDggQEAgYm9vbCBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6YWxs
b3dzRXhpdFVuZGVyTWVtb3J5UHJlc3N1cmUoKSBjb25zdAogCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKIAorI3VuZGVmIE1FU1NBR0VfQ0hFQ0sKKyN1bmRlZiBURVJNSU5BVEVfV0VCX1BST0NFU1Nf
V0lUSF9NRVNTQUdFCisjdW5kZWYgV0VCX1BST0NFU1NfVEVSTUlOQVRFX0NPTkRJVElPTgorCiAj
ZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VCX0FVRElPKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvR1BVUHJvY2Vzc0Nvbm5lY3Rpb25QYXJhbWV0ZXJz
LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9HUFVQcm9jZXNzQ29ubmVjdGlvblBhcmFtZXRlcnMu
aAppbmRleCBlZDMwNDk1YjI1MjI4NjFmNzQ2NDUyZmU5MDkxYjk2NTYxMTA2NzcwLi4xMTg5ZWE5
ZWY1ZDhjOWJkZWU1OGZlZTk3YzgyYTdlOTczMGZhODc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9HUFVQcm9jZXNzQ29ubmVjdGlvblBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9HUFVQcm9jZXNzQ29ubmVjdGlvblBhcmFtZXRlcnMuaApAQCAtMzYsNiAr
MzYsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIHN0cnVjdCBHUFVQcm9jZXNzQ29ubmVjdGlvblBh
cmFtZXRlcnMgewogICAgIFdlYkNvcmU6OlByb2Nlc3NJZGVudGl0eSB3ZWJQcm9jZXNzSWRlbnRp
dHk7CiAgICAgVmVjdG9yPFN0cmluZz4gb3ZlcnJpZGVMYW5ndWFnZXM7CisgICAgYm9vbCBpc0Nh
cHRpdmVQb3J0YWxNb2RlRW5hYmxlZCB7IGZhbHNlIH07CiAjaWYgRU5BQkxFKElQQ19URVNUSU5H
X0FQSSkKICAgICBib29sIGlnbm9yZUludmFsaWRNZXNzYWdlRm9yVGVzdGluZyB7IGZhbHNlIH07
CiAjZW5kaWYKQEAgLTQ3LDYgKzQ4LDcgQEAgc3RydWN0IEdQVVByb2Nlc3NDb25uZWN0aW9uUGFy
YW1ldGVycyB7CiAgICAgewogICAgICAgICBlbmNvZGVyIDw8IHdlYlByb2Nlc3NJZGVudGl0eTsK
ICAgICAgICAgZW5jb2RlciA8PCBvdmVycmlkZUxhbmd1YWdlczsKKyAgICAgICAgZW5jb2RlciA8
PCBpc0NhcHRpdmVQb3J0YWxNb2RlRW5hYmxlZDsKICNpZiBFTkFCTEUoSVBDX1RFU1RJTkdfQVBJ
KQogICAgICAgICBlbmNvZGVyIDw8IGlnbm9yZUludmFsaWRNZXNzYWdlRm9yVGVzdGluZzsKICNl
bmRpZgpAQCAtNjcsNiArNjksMTEgQEAgc3RydWN0IEdQVVByb2Nlc3NDb25uZWN0aW9uUGFyYW1l
dGVycyB7CiAgICAgICAgIGlmICghb3ZlcnJpZGVMYW5ndWFnZXMpCiAgICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCisgICAgICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gaXNDYXB0aXZl
UG9ydGFsTW9kZUVuYWJsZWQ7CisgICAgICAgIGRlY29kZXIgPj4gaXNDYXB0aXZlUG9ydGFsTW9k
ZUVuYWJsZWQ7CisgICAgICAgIGlmICghaXNDYXB0aXZlUG9ydGFsTW9kZUVuYWJsZWQpCisgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCiAjaWYgRU5BQkxFKElQQ19URVNUSU5HX0FQ
SSkKICAgICAgICAgc3RkOjpvcHRpb25hbDxib29sPiBpZ25vcmVJbnZhbGlkTWVzc2FnZUZvclRl
c3Rpbmc7CiAgICAgICAgIGRlY29kZXIgPj4gaWdub3JlSW52YWxpZE1lc3NhZ2VGb3JUZXN0aW5n
OwpAQCAtODMsNiArOTAsNyBAQCBzdHJ1Y3QgR1BVUHJvY2Vzc0Nvbm5lY3Rpb25QYXJhbWV0ZXJz
IHsKICAgICAgICAgcmV0dXJuIEdQVVByb2Nlc3NDb25uZWN0aW9uUGFyYW1ldGVycyB7CiAgICAg
ICAgICAgICBXVEZNb3ZlKCp3ZWJQcm9jZXNzSWRlbnRpdHkpLAogICAgICAgICAgICAgV1RGTW92
ZSgqb3ZlcnJpZGVMYW5ndWFnZXMpLAorICAgICAgICAgICAgKmlzQ2FwdGl2ZVBvcnRhbE1vZGVF
bmFibGVkLAogI2lmIEVOQUJMRShJUENfVEVTVElOR19BUEkpCiAgICAgICAgICAgICAqaWdub3Jl
SW52YWxpZE1lc3NhZ2VGb3JUZXN0aW5nLAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggOWQ1NjkxMjM1MzAwNDNkZWRkMDllMmUwZTA3NWRj
OGQwYTU5MDE0My4uNjYwNWYzNDUzM2M3MmVmOTE4MTkwMTc3NDJmNjIwMzE4OWNlYjZjMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAtNTI0LDYgKzUy
NCw4IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmdldEdQVVByb2Nlc3NDb25uZWN0aW9uKFdlYlBy
b2Nlc3NQcm94eSYgd2ViUHJvY2Vzc1Byb3h5LCBHCiAgICAgcGFyYW1ldGVycy5wcmVzZW50aW5n
QXBwbGljYXRpb25BdWRpdFRva2VuID0gY29uZmlndXJhdGlvbigpLnByZXNlbnRpbmdBcHBsaWNh
dGlvblByb2Nlc3NUb2tlbigpOwogI2VuZGlmCiAKKyAgICBwYXJhbWV0ZXJzLmlzQ2FwdGl2ZVBv
cnRhbE1vZGVFbmFibGVkID0gd2ViUHJvY2Vzc1Byb3h5LmNhcHRpdmVQb3J0YWxNb2RlKCkgPT0g
V2ViUHJvY2Vzc1Byb3h5OjpDYXB0aXZlUG9ydGFsTW9kZTo6RW5hYmxlZDsKKwogICAgIGVuc3Vy
ZUdQVVByb2Nlc3MoKS5nZXRHUFVQcm9jZXNzQ29ubmVjdGlvbih3ZWJQcm9jZXNzUHJveHksIHBh
cmFtZXRlcnMsIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBwYXJhbWV0ZXJz
LCB3ZWJQcm9jZXNzUHJveHkgPSBXZWFrUHRyIHsgd2ViUHJvY2Vzc1Byb3h5IH0sIHJlcGx5ID0g
V1RGTW92ZShyZXBseSldIChhdXRvJiBjb25uZWN0aW9uSW5mbykgbXV0YWJsZSB7CiAgICAgICAg
IGlmIChVTkxJS0VMWSghSVBDOjpDb25uZWN0aW9uOjppZGVudGlmaWVySXNWYWxpZChjb25uZWN0
aW9uSW5mby5pZGVudGlmaWVyKCkpKSkgewogICAgICAgICAgICAgLy8gUmV0cnkgb24gdGhlIG5l
eHQgUnVuTG9vcCBpdGVyYXRpb24gYmVjYXVzZSB3ZSBtYXkgYmUgaW5zaWRlIHRoZSBXZWJQcm9j
ZXNzUG9vbCBkZXN0cnVjdG9yLgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>