<?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>228797</bug_id>
          
          <creation_ts>2021-08-04 14:02:29 -0700</creation_ts>
          <short_desc>Add more logging for process assertion in network process</short_desc>
          <delta_ts>2022-05-24 13:17:31 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>INVALID</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="Sihui Liu">sihui_liu</reporter>
          <assigned_to name="Sihui Liu">sihui_liu</assigned_to>
          <cc>cdumez</cc>
    
    <cc>ggaren</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1782035</commentid>
    <comment_count>0</comment_count>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-08-04 14:02:29 -0700</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1782040</commentid>
    <comment_count>1</comment_count>
      <attachid>434932</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-08-04 14:09:01 -0700</bug_when>
    <thetext>Created attachment 434932
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1782045</commentid>
    <comment_count>2</comment_count>
      <attachid>434934</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-08-04 14:25:01 -0700</bug_when>
    <thetext>Created attachment 434934
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1782051</commentid>
    <comment_count>3</comment_count>
      <attachid>434937</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-08-04 14:30:49 -0700</bug_when>
    <thetext>Created attachment 434937
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1782074</commentid>
    <comment_count>4</comment_count>
      <attachid>434943</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-08-04 15:31:19 -0700</bug_when>
    <thetext>Created attachment 434943
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1782238</commentid>
    <comment_count>5</comment_count>
      <attachid>434943</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-08-05 09:39:10 -0700</bug_when>
    <thetext>Comment on attachment 434943
Patch

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

&gt; Source/WebKit/ChangeLog:10
&gt; +        information from UI process to network process and log it.

What&apos;s the purpose? The UIProcess is already doing the logging for these, why do we need the network process to do the exact same logging again?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1782251</commentid>
    <comment_count>6</comment_count>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-08-05 10:06:32 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #5)
&gt; Comment on attachment 434943 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=434943&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/ChangeLog:10
&gt; &gt; +        information from UI process to network process and log it.
&gt; 
&gt; What&apos;s the purpose? The UIProcess is already doing the logging for these,
&gt; why do we need the network process to do the exact same logging again?

The UI process logging does not show up in the network process crash log.
From recent crash logs, we know network process sometimes suspends soon after processDidResume.

Or do you have any idea of what should be logged in this case (to figure out why network process is suspended after processDidResume)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1782263</commentid>
    <comment_count>7</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-08-05 10:21:08 -0700</bug_when>
    <thetext>(In reply to Sihui Liu from comment #6)
&gt; (In reply to Chris Dumez from comment #5)
&gt; &gt; Comment on attachment 434943 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=434943&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit/ChangeLog:10
&gt; &gt; &gt; +        information from UI process to network process and log it.
&gt; &gt; 
&gt; &gt; What&apos;s the purpose? The UIProcess is already doing the logging for these,
&gt; &gt; why do we need the network process to do the exact same logging again?
&gt; 
&gt; The UI process logging does not show up in the network process crash log.
&gt; From recent crash logs, we know network process sometimes suspends soon
&gt; after processDidResume.
&gt; 
&gt; Or do you have any idea of what should be logged in this case (to figure out
&gt; why network process is suspended after processDidResume)?

Why does it matter what assertion the UIProcess is holding? The NetworkProcess should be holding its own assertion if holding locked files (and thus not suspend).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1782270</commentid>
    <comment_count>8</comment_count>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-08-05 10:33:13 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #7)
&gt; (In reply to Sihui Liu from comment #6)
&gt; &gt; (In reply to Chris Dumez from comment #5)
&gt; &gt; &gt; Comment on attachment 434943 [details]
&gt; &gt; &gt; Patch
&gt; &gt; &gt; 
&gt; &gt; &gt; View in context:
&gt; &gt; &gt; https://bugs.webkit.org/attachment.cgi?id=434943&amp;action=review
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Source/WebKit/ChangeLog:10
&gt; &gt; &gt; &gt; +        information from UI process to network process and log it.
&gt; &gt; &gt; 
&gt; &gt; &gt; What&apos;s the purpose? The UIProcess is already doing the logging for these,
&gt; &gt; &gt; why do we need the network process to do the exact same logging again?
&gt; &gt; 
&gt; &gt; The UI process logging does not show up in the network process crash log.
&gt; &gt; From recent crash logs, we know network process sometimes suspends soon
&gt; &gt; after processDidResume.
&gt; &gt; 
&gt; &gt; Or do you have any idea of what should be logged in this case (to figure out
&gt; &gt; why network process is suspended after processDidResume)?
&gt; 
&gt; Why does it matter what assertion the UIProcess is holding? The
&gt; NetworkProcess should be holding its own assertion if holding locked files
&gt; (and thus not suspend).

In some crash, network process assertion is acquired after processDidResume, and process is still suspended. Something like:

com.apple.WebKit.Networking[440] (WebKit): 0x1da2db5c0 - NetworkProcess::processDidResume()
com.apple.WebKit.Networking[440] (RunningBoardServices): Acquiring assertion: &lt;RBSAssertionDescriptor| &quot;Network Process is holding locked files&quot; ID:(null) target:440&gt;
com.apple.WebKit.Networking[440] (WebKit): 0x104618318 - ProcessAssertion: Successfully took RBS assertion &apos;Network Process is holding locked files&apos; for process with PID=440</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1782276</commentid>
    <comment_count>9</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-08-05 10:47:27 -0700</bug_when>
    <thetext>(In reply to Sihui Liu from comment #8)
&gt; (In reply to Chris Dumez from comment #7)
&gt; &gt; (In reply to Sihui Liu from comment #6)
&gt; &gt; &gt; (In reply to Chris Dumez from comment #5)
&gt; &gt; &gt; &gt; Comment on attachment 434943 [details]
&gt; &gt; &gt; &gt; Patch
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; View in context:
&gt; &gt; &gt; &gt; https://bugs.webkit.org/attachment.cgi?id=434943&amp;action=review
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; Source/WebKit/ChangeLog:10
&gt; &gt; &gt; &gt; &gt; +        information from UI process to network process and log it.
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; What&apos;s the purpose? The UIProcess is already doing the logging for these,
&gt; &gt; &gt; &gt; why do we need the network process to do the exact same logging again?
&gt; &gt; &gt; 
&gt; &gt; &gt; The UI process logging does not show up in the network process crash log.
&gt; &gt; &gt; From recent crash logs, we know network process sometimes suspends soon
&gt; &gt; &gt; after processDidResume.
&gt; &gt; &gt; 
&gt; &gt; &gt; Or do you have any idea of what should be logged in this case (to figure out
&gt; &gt; &gt; why network process is suspended after processDidResume)?
&gt; &gt; 
&gt; &gt; Why does it matter what assertion the UIProcess is holding? The
&gt; &gt; NetworkProcess should be holding its own assertion if holding locked files
&gt; &gt; (and thus not suspend).
&gt; 
&gt; In some crash, network process assertion is acquired after processDidResume,
&gt; and process is still suspended. Something like:
&gt; 
&gt; com.apple.WebKit.Networking[440] (WebKit): 0x1da2db5c0 -
&gt; NetworkProcess::processDidResume()
&gt; com.apple.WebKit.Networking[440] (RunningBoardServices): Acquiring
&gt; assertion: &lt;RBSAssertionDescriptor| &quot;Network Process is holding locked
&gt; files&quot; ID:(null) target:440&gt;
&gt; com.apple.WebKit.Networking[440] (WebKit): 0x104618318 - ProcessAssertion:
&gt; Successfully took RBS assertion &apos;Network Process is holding locked files&apos;
&gt; for process with PID=440

Yes, this is likely to happen if:
1. Someone take a background assertion for the network process (from the UIProcess) after the app has been in the background for a while (e.g. ~29 seconds)
2. The UIProcess then tells the network process to resume
3. But RunningBoard expires the assertion almost right away (and may or may not have time to tell us, or we may or may not have time to notify the child process) because we were so close to the 30s timer when we took the assertion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1782279</commentid>
    <comment_count>10</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-08-05 10:49:08 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #9)
&gt; (In reply to Sihui Liu from comment #8)
&gt; &gt; (In reply to Chris Dumez from comment #7)
&gt; &gt; &gt; (In reply to Sihui Liu from comment #6)
&gt; &gt; &gt; &gt; (In reply to Chris Dumez from comment #5)
&gt; &gt; &gt; &gt; &gt; Comment on attachment 434943 [details]
&gt; &gt; &gt; &gt; &gt; Patch
&gt; &gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; View in context:
&gt; &gt; &gt; &gt; &gt; https://bugs.webkit.org/attachment.cgi?id=434943&amp;action=review
&gt; &gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; &gt; Source/WebKit/ChangeLog:10
&gt; &gt; &gt; &gt; &gt; &gt; +        information from UI process to network process and log it.
&gt; &gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; What&apos;s the purpose? The UIProcess is already doing the logging for these,
&gt; &gt; &gt; &gt; &gt; why do we need the network process to do the exact same logging again?
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; The UI process logging does not show up in the network process crash log.
&gt; &gt; &gt; &gt; From recent crash logs, we know network process sometimes suspends soon
&gt; &gt; &gt; &gt; after processDidResume.
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Or do you have any idea of what should be logged in this case (to figure out
&gt; &gt; &gt; &gt; why network process is suspended after processDidResume)?
&gt; &gt; &gt; 
&gt; &gt; &gt; Why does it matter what assertion the UIProcess is holding? The
&gt; &gt; &gt; NetworkProcess should be holding its own assertion if holding locked files
&gt; &gt; &gt; (and thus not suspend).
&gt; &gt; 
&gt; &gt; In some crash, network process assertion is acquired after processDidResume,
&gt; &gt; and process is still suspended. Something like:
&gt; &gt; 
&gt; &gt; com.apple.WebKit.Networking[440] (WebKit): 0x1da2db5c0 -
&gt; &gt; NetworkProcess::processDidResume()
&gt; &gt; com.apple.WebKit.Networking[440] (RunningBoardServices): Acquiring
&gt; &gt; assertion: &lt;RBSAssertionDescriptor| &quot;Network Process is holding locked
&gt; &gt; files&quot; ID:(null) target:440&gt;
&gt; &gt; com.apple.WebKit.Networking[440] (WebKit): 0x104618318 - ProcessAssertion:
&gt; &gt; Successfully took RBS assertion &apos;Network Process is holding locked files&apos;
&gt; &gt; for process with PID=440
&gt; 
&gt; Yes, this is likely to happen if:
&gt; 1. Someone take a background assertion for the network process (from the
&gt; UIProcess) after the app has been in the background for a while (e.g. ~29
&gt; seconds)
&gt; 2. The UIProcess then tells the network process to resume
&gt; 3. But RunningBoard expires the assertion almost right away (and may or may
&gt; not have time to tell us, or we may or may not have time to notify the child
&gt; process) because we were so close to the 30s timer when we took the
&gt; assertion.

FYI, this tells us how much time is left on the RunningBoard timer:
`auto remainingTime = [RBSProcessHandle currentProcess].activeLimitations.runTime;` 

and may return RBSProcessTimeLimitationNone if there is no timer (i.e. app is foreground or allowed to run indefinitely in the background, e.g. due to media playback).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1782319</commentid>
    <comment_count>11</comment_count>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-08-05 13:14:17 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #10)
&gt; (In reply to Chris Dumez from comment #9)
&gt; &gt; (In reply to Sihui Liu from comment #8)
&gt; &gt; &gt; (In reply to Chris Dumez from comment #7)
&gt; &gt; &gt; &gt; (In reply to Sihui Liu from comment #6)
&gt; &gt; &gt; &gt; &gt; (In reply to Chris Dumez from comment #5)
&gt; &gt; &gt; &gt; &gt; &gt; Comment on attachment 434943 [details]
&gt; &gt; &gt; &gt; &gt; &gt; Patch
&gt; &gt; &gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; &gt; View in context:
&gt; &gt; &gt; &gt; &gt; &gt; https://bugs.webkit.org/attachment.cgi?id=434943&amp;action=review
&gt; &gt; &gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; &gt; &gt; Source/WebKit/ChangeLog:10
&gt; &gt; &gt; &gt; &gt; &gt; &gt; +        information from UI process to network process and log it.
&gt; &gt; &gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; &gt; What&apos;s the purpose? The UIProcess is already doing the logging for these,
&gt; &gt; &gt; &gt; &gt; &gt; why do we need the network process to do the exact same logging again?
&gt; &gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; The UI process logging does not show up in the network process crash log.
&gt; &gt; &gt; &gt; &gt; From recent crash logs, we know network process sometimes suspends soon
&gt; &gt; &gt; &gt; &gt; after processDidResume.
&gt; &gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; Or do you have any idea of what should be logged in this case (to figure out
&gt; &gt; &gt; &gt; &gt; why network process is suspended after processDidResume)?
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Why does it matter what assertion the UIProcess is holding? The
&gt; &gt; &gt; &gt; NetworkProcess should be holding its own assertion if holding locked files
&gt; &gt; &gt; &gt; (and thus not suspend).
&gt; &gt; &gt; 
&gt; &gt; &gt; In some crash, network process assertion is acquired after processDidResume,
&gt; &gt; &gt; and process is still suspended. Something like:
&gt; &gt; &gt; 
&gt; &gt; &gt; com.apple.WebKit.Networking[440] (WebKit): 0x1da2db5c0 -
&gt; &gt; &gt; NetworkProcess::processDidResume()
&gt; &gt; &gt; com.apple.WebKit.Networking[440] (RunningBoardServices): Acquiring
&gt; &gt; &gt; assertion: &lt;RBSAssertionDescriptor| &quot;Network Process is holding locked
&gt; &gt; &gt; files&quot; ID:(null) target:440&gt;
&gt; &gt; &gt; com.apple.WebKit.Networking[440] (WebKit): 0x104618318 - ProcessAssertion:
&gt; &gt; &gt; Successfully took RBS assertion &apos;Network Process is holding locked files&apos;
&gt; &gt; &gt; for process with PID=440
&gt; &gt; 
&gt; &gt; Yes, this is likely to happen if:
&gt; &gt; 1. Someone take a background assertion for the network process (from the
&gt; &gt; UIProcess) after the app has been in the background for a while (e.g. ~29
&gt; &gt; seconds)
&gt; &gt; 2. The UIProcess then tells the network process to resume
&gt; &gt; 3. But RunningBoard expires the assertion almost right away (and may or may
&gt; &gt; not have time to tell us, or we may or may not have time to notify the child
&gt; &gt; process) because we were so close to the 30s timer when we took the
&gt; &gt; assertion.
&gt; 
&gt; FYI, this tells us how much time is left on the RunningBoard timer:
&gt; `auto remainingTime = [RBSProcessHandle
&gt; currentProcess].activeLimitations.runTime;` 
&gt; 
&gt; and may return RBSProcessTimeLimitationNone if there is no timer (i.e. app
&gt; is foreground or allowed to run indefinitely in the background, e.g. due to
&gt; media playback).

I see. I didn&apos;t know new assertion can be acquired in UI process when it&apos;s close to timeout. I guess we can add timing information in the logging of processDidResume to check how often that happens and causes crashes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1782346</commentid>
    <comment_count>12</comment_count>
      <attachid>435027</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-08-05 14:55:19 -0700</bug_when>
    <thetext>Created attachment 435027
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1783628</commentid>
    <comment_count>13</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-08-11 14:03:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/81812331&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434932</attachid>
            <date>2021-08-04 14:09:01 -0700</date>
            <delta_ts>2021-08-04 14:34:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228797-20210804140900.patch</filename>
            <type>text/plain</type>
            <size>18483</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwNjExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDY3YTAxYTZkZWFmYTg3NTI5
MDU1MjJlMzEwMTg2MGE1MmI2MWM4ZmMuLjMwMDM0ZjBiNDAwMTNiMjhlMmI3NmQ0MGEzZDQ5NDIx
OTgwNmIyNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDIgQEAKKzIwMjEtMDgtMDQgIFNpaHVpIExp
dSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIG1vcmUgbG9nZ2luZyBmb3Ig
cHJvY2VzcyBhc3NlcnRpb24gaW4gbmV0d29yayBwcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjg3OTcKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBY2NvcmRpbmcgdG8gY3Jhc2ggbG9ncyBpbiBy
ZGFyOi8vNzk3ODcxMjMsIG5ldHdvcmsgcHJvY2VzcyBjYW4gZ2V0IHN1c3BlbmRlZCBzb29uIGFm
dGVyIHJlY2VpdmluZyAKKyAgICAgICAgcHJvY2Vzc0RpZFJlc3VtZSBtZXNzYWdlLiBUbyBiZXR0
ZXIgdW5kZXJzdGFuZCB0aGUgY2F1c2UgaW4gZnV0dXJlIGNyYXNoIGxvZ3MsIHdlIHBhc3MgdGhl
IGFzc2VydGlvbiBzdGF0ZQorICAgICAgICBpbmZvcm1hdGlvbiBmcm9tIFVJIHByb2Nlc3MgdG8g
bmV0d29yayBwcm9jZXNzIGFuZCBsb2cgaXQuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpkaWRB
Y3F1aXJlQXNzZXJ0aW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmRpZElu
dmFsaWRhdGVBc3NlcnRpb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZGlk
UmVsZWFzZUFzc2VydGlvbik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5p
bjoKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlkQWNxdWlyZUFzc2VydGlv
bik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZEludmFsaWRhdGVB
c3NlcnRpb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRSZWxl
YXNlQXNzZXJ0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1Byb2Nlc3NBc3NlcnRpb24uY3BwOgorICAg
ICAgICAoV2ViS2l0OjpQcm9jZXNzQXNzZXJ0aW9uOjphY3F1aXJlQXN5bmMpOgorICAgICAgICAo
V2ViS2l0OjpQcm9jZXNzQXNzZXJ0aW9uOjphY3F1aXJlU3luYyk6CisgICAgICAgICogVUlQcm9j
ZXNzL1Byb2Nlc3NBc3NlcnRpb24uaDoKKyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc0Fzc2VydGlv
bjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc0Fzc2VydGlvbjo6c2V0UmVsZWFz
ZUhhbmRsZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Qcm9jZXNzVGhyb3R0bGVyLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6UHJvY2Vzc1Rocm90dGxlcjo6c2V0QXNzZXJ0aW9uVHlwZSk6CisgICAg
ICAgICogVUlQcm9jZXNzL1Byb2Nlc3NUaHJvdHRsZXJDbGllbnQuaDoKKyAgICAgICAgKFdlYktp
dDo6UHJvY2Vzc1Rocm90dGxlckNsaWVudDo6ZGlkQWNxdWlyZUFzc2VydGlvbik6CisgICAgICAg
IChXZWJLaXQ6OlByb2Nlc3NUaHJvdHRsZXJDbGllbnQ6OmRpZEludmFsaWRhdGVBc3NlcnRpb24p
OgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzVGhyb3R0bGVyQ2xpZW50OjpkaWRSZWxlYXNlQXNz
ZXJ0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1Byb2Nlc3NBc3NlcnRpb25JT1MubW06
CisgICAgICAgIChXZWJLaXQ6OlByb2Nlc3NBc3NlcnRpb246OmFjcXVpcmVBc3luYyk6CisgICAg
ICAgIChXZWJLaXQ6OlByb2Nlc3NBc3NlcnRpb246OmFjcXVpcmVTeW5jKToKKyAgICAgICAgKFdl
YktpdDo6UHJvY2Vzc0Fzc2VydGlvbjo6flByb2Nlc3NBc3NlcnRpb24pOgorCiAyMDIxLTA4LTAz
ICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92
ZSB1bnVzZWQgcHJvY2Vzc0RpZFRyYW5zaXRpb25Ub3tGb3JlZ3JvdW5kLEJhY2tncm91bmR9IElQ
QwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApp
bmRleCBhMzhiMmUyN2YzOTgyMWYwNGIwNzU0ZDE4MGJjZjQ2Y2FjMTk3NTllLi42NDRjMDQzYTll
YmZiMjFjY2M1Nzg4OTQ0YjU1YWVmZDM2N2QyMDkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtMjI2Myw2ICsyMjYzLDIxIEBAIHZv
aWQgTmV0d29ya1Byb2Nlc3M6OnByZXBhcmVUb1N1c3BlbmQoYm9vbCBpc1N1c3BlbnNpb25JbW1p
bmVudCwgQ29tcGxldGlvbkhhbmRsCiAgICAgbV9zdG9yYWdlTWFuYWdlclNldC0+c3VzcGVuZChb
Y2FsbGJhY2tBZ2dyZWdhdG9yXSB7IH0pOwogfQogCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpkaWRB
Y3F1aXJlQXNzZXJ0aW9uKGNvbnN0IFN0cmluZyYgYXNzZXJ0aW9uTmFtZSkKK3sKKyAgICBSRUxF
QVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgIiVwIC0gTmV0d29ya1Byb2Nlc3M6OmRpZEFjcXVp
cmVBc3NlcnRpb24oKSBhc3NlcnRpb25OYW1lPSVzICIsIHRoaXMsIGFzc2VydGlvbk5hbWUudXRm
OCgpLmRhdGEoKSk7Cit9CisKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OmRpZEludmFsaWRhdGVBc3Nl
cnRpb24oY29uc3QgU3RyaW5nJiBhc3NlcnRpb25OYW1lKQoreworICAgIFJFTEVBU0VfTE9HKFBy
b2Nlc3NTdXNwZW5zaW9uLCAiJXAgLSBOZXR3b3JrUHJvY2Vzczo6ZGlkSW52YWxpZGF0ZUFzc2Vy
dGlvbigpIGFzc2VydGlvbk5hbWU9JXMgIiwgdGhpcywgYXNzZXJ0aW9uTmFtZS51dGY4KCkuZGF0
YSgpKTsKK30KKwordm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGlkUmVsZWFzZUFzc2VydGlvbihjb25z
dCBTdHJpbmcmIGFzc2VydGlvbk5hbWUpCit7CisgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3Bl
bnNpb24sICIlcCAtIE5ldHdvcmtQcm9jZXNzOjpkaWRSZWxlYXNlQXNzZXJ0aW9uKCkgYXNzZXJ0
aW9uTmFtZT0lcyAiLCB0aGlzLCBhc3NlcnRpb25OYW1lLnV0ZjgoKS5kYXRhKCkpOworfQorCiB2
b2lkIE5ldHdvcmtQcm9jZXNzOjphcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZCgpCiB7CiAg
ICAgbV9kb3dubG9hZE1hbmFnZXIuYXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmQoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAppbmRleCA4YTcw
ODRiY2FhYzUwYTBiOTI3NTgwMmE4ZjRiNWJlNGRhYjUwNjRiLi40ZmNiODUyZGFkNGU4YWJiZjI3
NGM4OWY2ODg1ODA0ODAzYThkMTU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5oCkBAIC0xODcsNiArMTg3LDkgQEAgcHVibGljOgogICAgIHZvaWQg
cHJlcGFyZVRvU3VzcGVuZChib29sIGlzU3VzcGVuc2lvbkltbWluZW50LCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgcHJvY2Vzc0RpZFJlc3VtZSgpOwogICAgIHZvaWQg
cmVzdW1lKCk7CisgICAgdm9pZCBkaWRBY3F1aXJlQXNzZXJ0aW9uKGNvbnN0IFN0cmluZyYgYXNz
ZXJ0aW9uTmFtZSk7CisgICAgdm9pZCBkaWRJbnZhbGlkYXRlQXNzZXJ0aW9uKGNvbnN0IFN0cmlu
ZyYgYXNzZXJ0aW9uTmFtZSk7CisgICAgdm9pZCBkaWRSZWxlYXNlQXNzZXJ0aW9uKGNvbnN0IFN0
cmluZyYgYXNzZXJ0aW9uTmFtZSk7CiAKICAgICBDYWNoZU1vZGVsIGNhY2hlTW9kZWwoKSBjb25z
dCB7IHJldHVybiBtX2NhY2hlTW9kZWw7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggMmZjNzE5ZTM0
N2ZhMDA1MDY2YWUzOTg3MTMyZmRlODI5Mjc5MmUxYy4uODhmM2YyMmE3NzgyOWQ4NGQ2ZGNjMWIy
NWZlOGRjNTQ5ZGFmZjE5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC03Myw2ICs3Myw5IEBAIG1lc3Nh
Z2VzIC0+IE5ldHdvcmtQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBQcm9jZXNzV2lsbFN1
c3BlbmRJbW1pbmVudGx5Rm9yVGVzdGluZ1N5bmMoKSAtPiAoKSBTeW5jaHJvbm91cwogICAgIFBy
ZXBhcmVUb1N1c3BlbmQoYm9vbCBpc1N1c3BlbnNpb25JbW1pbmVudCkgLT4gKCkgQXN5bmMKICAg
ICBQcm9jZXNzRGlkUmVzdW1lKCkKKyAgICBEaWRBY3F1aXJlQXNzZXJ0aW9uKFN0cmluZyBuYW1l
KTsKKyAgICBEaWRJbnZhbGlkYXRlQXNzZXJ0aW9uKFN0cmluZyBuYW1lKTsKKyAgICBEaWRSZWxl
YXNlQXNzZXJ0aW9uKFN0cmluZyBuYW1lKTsKIAogICAgIFByZWNvbm5lY3RUbyhQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJv
eHlJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgd2ViUGFnZUlELCBVUkwgdXJsLCBTdHJpbmcg
dXNlckFnZW50LCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kg
c3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIGVudW06Ym9vbCBzdGQ6Om9wdGlvbmFsPFdlYktpdDo6
TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4s
IGVudW06Ym9vbCBXZWJLaXQ6Okxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkIGxhc3ROYXZp
Z2F0aW9uV2FzQXBwSW5pdGlhdGVkKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKaW5kZXggMzcxYmJkYTBlNmI0
NjZjMGU2NjI2ZTVkNTA2ZmFjYzdiMjdlZmQ0Yy4uZjM4YmZiNjFlMWI5ZDI4MWJmMjg5YzQ1YzEw
ZTczYzdjYTA0MmQ0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCkBAIC0xMjU1LDYgKzEyNTUsMjQgQEAgdm9p
ZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZW5kUHJvY2Vzc0RpZFJlc3VtZSgpCiAgICAgICAgIHNl
bmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpQcm9jZXNzRGlkUmVzdW1lKCksIDApOwogfQog
Cit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZEFjcXVpcmVBc3NlcnRpb24oY29uc3QgU3Ry
aW5nJiBhc3NlcnRpb25OYW1lKQoreworICAgIGlmIChjYW5TZW5kTWVzc2FnZSgpICYmIChhc3Nl
cnRpb25OYW1lID09ICJGb3JlZ3JvdW5kIiB8fCBhc3NlcnRpb25OYW1lID09ICJCYWNrZ3JvdW5k
IikpCisgICAgICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpEaWRBY3F1aXJlQXNz
ZXJ0aW9uKGFzc2VydGlvbk5hbWUpLCAwKTsKK30KKwordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5
OjpkaWRJbnZhbGlkYXRlQXNzZXJ0aW9uKGNvbnN0IFN0cmluZyYgYXNzZXJ0aW9uTmFtZSkKK3sK
KyAgICBpZiAoY2FuU2VuZE1lc3NhZ2UoKSAmJiAoYXNzZXJ0aW9uTmFtZSA9PSAiRm9yZWdyb3Vu
ZCIgfHwgYXNzZXJ0aW9uTmFtZSA9PSAiQmFja2dyb3VuZCIpKQorICAgICAgICBzZW5kKE1lc3Nh
Z2VzOjpOZXR3b3JrUHJvY2Vzczo6RGlkSW52YWxpZGF0ZUFzc2VydGlvbihhc3NlcnRpb25OYW1l
KSwgMCk7Cit9CisKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlkUmVsZWFzZUFzc2VydGlv
bihjb25zdCBTdHJpbmcmIGFzc2VydGlvbk5hbWUpCit7CisgICAgaWYgKGNhblNlbmRNZXNzYWdl
KCkgJiYgKGFzc2VydGlvbk5hbWUgPT0gIkZvcmVncm91bmQiIHx8IGFzc2VydGlvbk5hbWUgPT0g
IkJhY2tncm91bmQiKSkKKyAgICAgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkRp
ZFJlbGVhc2VBc3NlcnRpb24oYXNzZXJ0aW9uTmFtZSksIDApOworfQorCiB2b2lkIE5ldHdvcmtQ
cm9jZXNzUHJveHk6OmZsdXNoQ29va2llcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBzZW5kV2l0
aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpGbHVzaENvb2tpZXMoc2Vzc2lv
bklEKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAppbmRleCBiNjA5ZjM1
ZjZiNTliYzNlZmYwNDE0MjA0YjYzMzZkMzBjYTE0NjUxLi5mMmFhM2YwYmI2YTQ0MDIyZGMxZDI4
Yjc3MzRmODgyZDY3YjdhYWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaApAQCAtMjI3LDEyICsyMjcsNiBAQCBwdWJs
aWM6CiAgICAgCiAgICAgdm9pZCBjcmVhdGVTeW1MaW5rRm9yRmlsZVVwZ3JhZGUoY29uc3QgU3Ry
aW5nJiBpbmRleGVkRGF0YWJhc2VEaXJlY3RvcnkpOwogCi0gICAgLy8gUHJvY2Vzc1Rocm90dGxl
ckNsaWVudAotICAgIHZvaWQgc2VuZFByb2Nlc3NEaWRSZXN1bWUoKSBmaW5hbDsKLSAgICBBU0NJ
SUxpdGVyYWwgY2xpZW50TmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJOZXR3b3JrUHJvY2Vz
cyJfczsgfQotICAgIAotICAgIHZvaWQgc2VuZFByb2Nlc3NXaWxsU3VzcGVuZEltbWluZW50bHlG
b3JUZXN0aW5nKCk7Ci0KICAgICB2b2lkIHJlZ2lzdGVyU2NoZW1lRm9yTGVnYWN5Q3VzdG9tUHJv
dG9jb2woY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCB1bnJlZ2lzdGVyU2NoZW1lRm9yTGVnYWN5
Q3VzdG9tUHJvdG9jb2woY29uc3QgU3RyaW5nJik7CiAKQEAgLTI1NCw3ICsyNDgsMTUgQEAgcHVi
bGljOgogI2VuZGlmCiAKICAgICAvLyBQcm9jZXNzVGhyb3R0bGVyQ2xpZW50CisgICAgdm9pZCBz
ZW5kUHJvY2Vzc0RpZFJlc3VtZSgpIGZpbmFsOworICAgIEFTQ0lJTGl0ZXJhbCBjbGllbnROYW1l
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gIk5ldHdvcmtQcm9jZXNzIl9zOyB9CiAgICAgdm9pZCBz
ZW5kUHJlcGFyZVRvU3VzcGVuZChJc1N1c3BlbnNpb25JbW1pbmVudCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmKSBmaW5hbDsKKyAgICB2b2lkIGRpZEFjcXVpcmVBc3NlcnRpb24oY29uc3Qg
U3RyaW5nJiBhc3NlcnRpb25OYW1lKSBmaW5hbDsKKyAgICB2b2lkIGRpZEludmFsaWRhdGVBc3Nl
cnRpb24oY29uc3QgU3RyaW5nJiBhc3NlcnRpb25OYW1lKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJl
bGVhc2VBc3NlcnRpb24oY29uc3QgU3RyaW5nJiBhc3NlcnRpb25OYW1lKSBmaW5hbDsKKworICAg
IHZvaWQgc2VuZFByb2Nlc3NXaWxsU3VzcGVuZEltbWluZW50bHlGb3JUZXN0aW5nKCk7CisKICAg
ICB2b2lkIHVwZGF0ZUJ1bmRsZUlkZW50aWZpZXIoY29uc3QgU3RyaW5nJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIGNsZWFyQnVuZGxlSWRlbnRpZmllcihDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Qcm9jZXNzQXNzZXJ0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb2Nl
c3NBc3NlcnRpb24uY3BwCmluZGV4IGQxYjlkZTFhZTVhYTIzYTU2ODFmN2UyYjdjYmNkODA2MTc5
YzA1N2MuLjA1OTMyZjVlYzJlM2M3YWViMDFmNmQyMjJlMzA2ZjI4MjVlMjAzZWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb2Nlc3NBc3NlcnRpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb2Nlc3NBc3NlcnRpb24uY3BwCkBAIC00NywxMyArNDcs
MTMgQEAgYm9vbCBQcm9jZXNzQXNzZXJ0aW9uOjppc1ZhbGlkKCkgY29uc3QKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotdm9pZCBQcm9jZXNzQXNzZXJ0aW9uOjphY3F1aXJlQXN5bmMoQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBQcm9jZXNzQXNzZXJ0
aW9uOjphY3F1aXJlQXN5bmMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKICAgICBpZiAoY29tcGxldGlvbkhhbmRsZXIpCiAgICAgICAgIFJ1bkxv
b3A6Om1haW4oKS5kaXNwYXRjaChXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZv
aWQgUHJvY2Vzc0Fzc2VydGlvbjo6YWNxdWlyZVN5bmMoKQorYm9vbCBQcm9jZXNzQXNzZXJ0aW9u
OjphY3F1aXJlU3luYygpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1Byb2Nlc3NBc3NlcnRpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb2Nlc3NB
c3NlcnRpb24uaAppbmRleCBhOGUxN2U3NmJiNzE5ZmZkZTdiN2JjNzA0ZmM1M2Y2Y2YyZGYyYjE1
Li5jZDA3ZjNjMjA2MmY1ZGFlN2ExYWI0Y2RmODRjZWY2MjBlNTk1YTRjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm9jZXNzQXNzZXJ0aW9uLmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUHJvY2Vzc0Fzc2VydGlvbi5oCkBAIC01OCwxNSArNTgsMTUgQEAgY2xh
c3MgUHJvY2Vzc0Fzc2VydGlvbiA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxQcm9jZXNz
QXNzZXJ0aW9uPiwgcHVibGljIEMKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKICAgICBlbnVtIGNsYXNzIE1vZGUgOiBib29sIHsgU3luYywgQXN5bmMgfTsKLSAgICBzdGF0
aWMgUmVmPFByb2Nlc3NBc3NlcnRpb24+IGNyZWF0ZShQcm9jZXNzSUQgcGlkLCBjb25zdCBTdHJp
bmcmIHJlYXNvbiwgUHJvY2Vzc0Fzc2VydGlvblR5cGUgdHlwZSwgTW9kZSBtb2RlID0gTW9kZTo6
QXN5bmMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBhY3F1aXNpc2lvbkhhbmRsZXIgPSBu
dWxscHRyKQorICAgIHN0YXRpYyBSZWY8UHJvY2Vzc0Fzc2VydGlvbj4gY3JlYXRlKFByb2Nlc3NJ
RCBwaWQsIGNvbnN0IFN0cmluZyYgcmVhc29uLCBQcm9jZXNzQXNzZXJ0aW9uVHlwZSB0eXBlLCBN
b2RlIG1vZGUgPSBNb2RlOjpBc3luYywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBh
Y3F1aXNpc2lvbkhhbmRsZXIgPSBudWxscHRyKQogICAgIHsKICAgICAgICAgYXV0byBhc3NlcnRp
b24gPSBhZG9wdFJlZigqbmV3IFByb2Nlc3NBc3NlcnRpb24ocGlkLCByZWFzb24sIHR5cGUpKTsK
ICAgICAgICAgaWYgKG1vZGUgPT0gTW9kZTo6QXN5bmMpCiAgICAgICAgICAgICBhc3NlcnRpb24t
PmFjcXVpcmVBc3luYyhXVEZNb3ZlKGFjcXVpc2lzaW9uSGFuZGxlcikpOwogICAgICAgICBlbHNl
IHsKLSAgICAgICAgICAgIGFzc2VydGlvbi0+YWNxdWlyZVN5bmMoKTsKKyAgICAgICAgICAgIGJv
b2wgYWNxdWlyZWQgPSBhc3NlcnRpb24tPmFjcXVpcmVTeW5jKCk7CiAgICAgICAgICAgICBpZiAo
YWNxdWlzaXNpb25IYW5kbGVyKQotICAgICAgICAgICAgICAgIGFjcXVpc2lzaW9uSGFuZGxlcigp
OworICAgICAgICAgICAgICAgIGFjcXVpc2lzaW9uSGFuZGxlcihhY3F1aXJlZCk7CiAgICAgICAg
IH0KICAgICAgICAgcmV0dXJuIGFzc2VydGlvbjsKICAgICB9CkBAIC03NCw2ICs3NCw3IEBAIHB1
YmxpYzoKIAogICAgIHZvaWQgc2V0UHJlcGFyZUZvckludmFsaWRhdGlvbkhhbmRsZXIoRnVuY3Rp
b248dm9pZCgpPiYmIGhhbmRsZXIpIHsgbV9wcmVwYXJlRm9ySW52YWxpZGF0aW9uSGFuZGxlciA9
IFdURk1vdmUoaGFuZGxlcik7IH0KICAgICB2b2lkIHNldEludmFsaWRhdGlvbkhhbmRsZXIoRnVu
Y3Rpb248dm9pZCgpPiYmIGhhbmRsZXIpIHsgbV9pbnZhbGlkYXRpb25IYW5kbGVyID0gV1RGTW92
ZShoYW5kbGVyKTsgfQorICAgIHZvaWQgc2V0UmVsZWFzZUhhbmRsZXIoRnVuY3Rpb248dm9pZCgp
PiYmIGhhbmRsZXIpIHsgbV9yZWxlYXNlSGFuZGxlciA9IFdURk1vdmUoaGFuZGxlcik7IH0KIAog
ICAgIFByb2Nlc3NBc3NlcnRpb25UeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX2Fzc2VydGlv
blR5cGU7IH0KICAgICBQcm9jZXNzSUQgcGlkKCkgY29uc3QgeyByZXR1cm4gbV9waWQ7IH0KQEAg
LTgzLDggKzg0LDggQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIFByb2Nlc3NBc3NlcnRpb24o
UHJvY2Vzc0lELCBjb25zdCBTdHJpbmcmIHJlYXNvbiwgUHJvY2Vzc0Fzc2VydGlvblR5cGUpOwog
Ci0gICAgdm9pZCBhY3F1aXJlQXN5bmMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAg
ICB2b2lkIGFjcXVpcmVTeW5jKCk7CisgICAgdm9pZCBhY3F1aXJlQXN5bmMoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4mJik7CisgICAgYm9vbCBhY3F1aXJlU3luYygpOwogCiAjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKICAgICB2b2lkIHByb2Nlc3NBc3NlcnRpb25XaWxsQmVJbnZhbGlk
YXRlZCgpOwpAQCAtMTAyLDE5ICsxMDMsMjAgQEAgcHJpdmF0ZToKICNlbmRpZgogICAgIEZ1bmN0
aW9uPHZvaWQoKT4gbV9wcmVwYXJlRm9ySW52YWxpZGF0aW9uSGFuZGxlcjsKICAgICBGdW5jdGlv
bjx2b2lkKCk+IG1faW52YWxpZGF0aW9uSGFuZGxlcjsKKyAgICBGdW5jdGlvbjx2b2lkKCk+IG1f
cmVsZWFzZUhhbmRsZXI7CiB9OwogCiBjbGFzcyBQcm9jZXNzQW5kVUlBc3NlcnRpb24gZmluYWwg
OiBwdWJsaWMgUHJvY2Vzc0Fzc2VydGlvbiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxQcm9j
ZXNzQW5kVUlBc3NlcnRpb24+IGNyZWF0ZShQcm9jZXNzSUQgcGlkLCBjb25zdCBTdHJpbmcmIHJl
YXNvbiwgUHJvY2Vzc0Fzc2VydGlvblR5cGUgdHlwZSwgTW9kZSBtb2RlID0gTW9kZTo6QXN5bmMs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBhY3F1aXNpc2lvbkhhbmRsZXIgPSBudWxscHRy
KQorICAgIHN0YXRpYyBSZWY8UHJvY2Vzc0FuZFVJQXNzZXJ0aW9uPiBjcmVhdGUoUHJvY2Vzc0lE
IHBpZCwgY29uc3QgU3RyaW5nJiByZWFzb24sIFByb2Nlc3NBc3NlcnRpb25UeXBlIHR5cGUsIE1v
ZGUgbW9kZSA9IE1vZGU6OkFzeW5jLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGFj
cXVpc2lzaW9uSGFuZGxlciA9IG51bGxwdHIpCiAgICAgewogICAgICAgICBhdXRvIGFzc2VydGlv
biA9IGFkb3B0UmVmKCpuZXcgUHJvY2Vzc0FuZFVJQXNzZXJ0aW9uKHBpZCwgcmVhc29uLCB0eXBl
KSk7CiAgICAgICAgIGlmIChtb2RlID09IE1vZGU6OkFzeW5jKQogICAgICAgICAgICAgYXNzZXJ0
aW9uLT5hY3F1aXJlQXN5bmMoV1RGTW92ZShhY3F1aXNpc2lvbkhhbmRsZXIpKTsKICAgICAgICAg
ZWxzZSB7Ci0gICAgICAgICAgICBhc3NlcnRpb24tPmFjcXVpcmVTeW5jKCk7CisgICAgICAgICAg
ICBib29sIGFjcXVpcmVkID0gYXNzZXJ0aW9uLT5hY3F1aXJlU3luYygpOwogICAgICAgICAgICAg
aWYgKGFjcXVpc2lzaW9uSGFuZGxlcikKLSAgICAgICAgICAgICAgICBhY3F1aXNpc2lvbkhhbmRs
ZXIoKTsKKyAgICAgICAgICAgICAgICBhY3F1aXNpc2lvbkhhbmRsZXIoYWNxdWlyZWQpOwogICAg
ICAgICB9CiAgICAgICAgIHJldHVybiBhc3NlcnRpb247CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvY2Vzc1Rocm90dGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Qcm9jZXNzVGhyb3R0bGVyLmNwcAppbmRleCA3MmNlOWVmNzYyZDk5N2M2YTc4
ZDFjNTQ5YmQ4ZGJlNTFjY2IyZDY5Li44Y2IyNWRiMWRlZThjOWE0ZmYwMGFjMDViYWNmNDY2Nzg5
ZTBlOThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm9jZXNzVGhyb3R0
bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm9jZXNzVGhyb3R0bGVyLmNw
cApAQCAtMTMxLDIwICsxMzEsMzggQEAgdm9pZCBQcm9jZXNzVGhyb3R0bGVyOjpzZXRBc3NlcnRp
b25UeXBlKFByb2Nlc3NBc3NlcnRpb25UeXBlIG5ld1R5cGUpCiAKICAgICAvLyBLZWVwIHRoZSBw
cmV2aW91cyBhc3NlcnRpb24gYWN0aXZlIHVudGlsIHRoZSBuZXcgYXNzZXJ0aW9uIGlzIHRha2Vu
IGFzeW5jaHJvbm91c2x5LgogICAgIGF1dG8gcHJldmlvdXNBc3NlcnRpb24gPSBzdGQ6OmV4Y2hh
bmdlKG1fYXNzZXJ0aW9uLCBudWxscHRyKTsKKyAgICBhdXRvIG5hbWUgPSBhc3NlcnRpb25OYW1l
KG5ld1R5cGUpOworICAgIGF1dG8gYWNxdWlzaXRpb25IYW5kbGVyID0gW3RoaXMsIHdlYWtUaGlz
ID0gbWFrZVdlYWtQdHIoKnRoaXMpLCBwcmV2aW91c0Fzc2VydGlvbiA9IFdURk1vdmUocHJldmlv
dXNBc3NlcnRpb24pLCBuYW1lXShib29sIGFjcXVpcmVkKSB7CisgICAgICAgIGlmICghd2Vha1Ro
aXMpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKGFjcXVpcmVkKQorICAgICAg
ICAgICAgbV9wcm9jZXNzLmRpZEFjcXVpcmVBc3NlcnRpb24obmFtZSk7CisgICAgfTsKICAgICBp
ZiAobV9zaG91bGRUYWtlVUlCYWNrZ3JvdW5kQXNzZXJ0aW9uKSB7Ci0gICAgICAgIGF1dG8gYXNz
ZXJ0aW9uID0gUHJvY2Vzc0FuZFVJQXNzZXJ0aW9uOjpjcmVhdGUobV9wcm9jZXNzSWRlbnRpZmll
ciwgYXNzZXJ0aW9uTmFtZShuZXdUeXBlKSwgbmV3VHlwZSwgUHJvY2Vzc0Fzc2VydGlvbjo6TW9k
ZTo6QXN5bmMsIFtwcmV2aW91c0Fzc2VydGlvbiA9IFdURk1vdmUocHJldmlvdXNBc3NlcnRpb24p
XSB7IH0pOworICAgICAgICBhdXRvIGFzc2VydGlvbiA9IFByb2Nlc3NBbmRVSUFzc2VydGlvbjo6
Y3JlYXRlKG1fcHJvY2Vzc0lkZW50aWZpZXIsIG5hbWUsIG5ld1R5cGUsIFByb2Nlc3NBc3NlcnRp
b246Ok1vZGU6OkFzeW5jLCBXVEZNb3ZlKGFjcXVpc2l0aW9uSGFuZGxlcikpOwogICAgICAgICBh
c3NlcnRpb24tPnNldFVJQXNzZXJ0aW9uRXhwaXJhdGlvbkhhbmRsZXIoW3dlYWtUaGlzID0gbWFr
ZVdlYWtQdHIoKnRoaXMpXSB7CiAgICAgICAgICAgICBpZiAod2Vha1RoaXMpCiAgICAgICAgICAg
ICAgICAgd2Vha1RoaXMtPnVpQXNzZXJ0aW9uV2lsbEV4cGlyZUltbWluZW50bHkoKTsKICAgICAg
ICAgfSk7CiAgICAgICAgIG1fYXNzZXJ0aW9uID0gV1RGTW92ZShhc3NlcnRpb24pOwogICAgIH0g
ZWxzZQotICAgICAgICBtX2Fzc2VydGlvbiA9IFByb2Nlc3NBc3NlcnRpb246OmNyZWF0ZShtX3By
b2Nlc3NJZGVudGlmaWVyLCBhc3NlcnRpb25OYW1lKG5ld1R5cGUpLCBuZXdUeXBlLCBQcm9jZXNz
QXNzZXJ0aW9uOjpNb2RlOjpBc3luYywgW3ByZXZpb3VzQXNzZXJ0aW9uID0gV1RGTW92ZShwcmV2
aW91c0Fzc2VydGlvbildIHsgfSk7CisgICAgICAgIG1fYXNzZXJ0aW9uID0gUHJvY2Vzc0Fzc2Vy
dGlvbjo6Y3JlYXRlKG1fcHJvY2Vzc0lkZW50aWZpZXIsIG5hbWUsIG5ld1R5cGUsIFByb2Nlc3NB
c3NlcnRpb246Ok1vZGU6OkFzeW5jLCBXVEZNb3ZlKGFjcXVpc2l0aW9uSGFuZGxlcikpOwogCi0g
ICAgbV9hc3NlcnRpb24tPnNldEludmFsaWRhdGlvbkhhbmRsZXIoW3dlYWtUaGlzID0gbWFrZVdl
YWtQdHIoKnRoaXMpXSB7Ci0gICAgICAgIGlmICh3ZWFrVGhpcykKLSAgICAgICAgICAgIHdlYWtU
aGlzLT5hc3NlcnRpb25XYXNJbnZhbGlkYXRlZCgpOworICAgIG1fYXNzZXJ0aW9uLT5zZXRJbnZh
bGlkYXRpb25IYW5kbGVyKFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgbmFt
ZV0geworICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAKKyAgICAgICAgYXNzZXJ0aW9uV2FzSW52YWxpZGF0ZWQoKTsKKyAgICAgICAgbV9wcm9jZXNz
LmRpZEludmFsaWRhdGVBc3NlcnRpb24obmFtZSk7CiAgICAgfSk7CisgICAgbV9hc3NlcnRpb24t
PnNldFJlbGVhc2VIYW5kbGVyKFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwg
bmFtZV0geworICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgcmV0dXJuOworCisg
ICAgICAgIG1fcHJvY2Vzcy5kaWRSZWxlYXNlQXNzZXJ0aW9uKG5hbWUpOworICAgIH0pOworCiAg
ICAgbV9wcm9jZXNzLmRpZFNldEFzc2VydGlvblR5cGUobmV3VHlwZSk7CiB9CiAgICAgCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm9jZXNzVGhyb3R0bGVyQ2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm9jZXNzVGhyb3R0bGVyQ2xpZW50LmgKaW5kZXgg
MTE4YmYwZGQyMzU4MjI0YzJlYzdkZjliOTY1MWU5ZjEzNzhlNmUwMC4uYTZmYWFiZGZlY2ZiZmU4
OGQ2MDc1N2NlOWNjMzBlNGRmMmY4MjUwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUHJvY2Vzc1Rocm90dGxlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1Byb2Nlc3NUaHJvdHRsZXJDbGllbnQuaApAQCAtNDAsNiArNDAsMTAgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBzZW5kUHJvY2Vzc0RpZFJlc3VtZSgpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgZGlkU2V0QXNzZXJ0aW9uVHlwZShQcm9jZXNzQXNzZXJ0aW9uVHlwZSkgeyB9OwogICAg
IHZpcnR1YWwgQVNDSUlMaXRlcmFsIGNsaWVudE5hbWUoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0
dWFsIHZvaWQgZGlkQWNxdWlyZUFzc2VydGlvbihjb25zdCBTdHJpbmcmKSB7IH07CisgICAgdmly
dHVhbCB2b2lkIGRpZEludmFsaWRhdGVBc3NlcnRpb24oY29uc3QgU3RyaW5nJikgeyB9OworICAg
IHZpcnR1YWwgdm9pZCBkaWRSZWxlYXNlQXNzZXJ0aW9uKGNvbnN0IFN0cmluZyYpIHsgfTsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1Byb2Nlc3NBc3NlcnRpb25JT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvUHJvY2Vzc0Fzc2VydGlvbklPUy5tbQppbmRleCBlMWQ3MWI3YWFkN2FjN2RhNjBiN2Ix
NWJiYjY4Nzg4YzM5MmVhMTMyLi42ZWM3YTgwMjE2ZmJhOThmNzY2Yjk2MDk4ODEwNjU3ODJkODI5
NzBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUHJvY2Vzc0Fzc2Vy
dGlvbklPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUHJvY2Vzc0Fzc2Vy
dGlvbklPUy5tbQpAQCAtMzUzLDE5ICszNTMsMTkgQEAgUHJvY2Vzc0Fzc2VydGlvbjo6UHJvY2Vz
c0Fzc2VydGlvbihwaWRfdCBwaWQsIGNvbnN0IFN0cmluZyYgcmVhc29uLCBQcm9jZXNzQXNzZXIK
ICAgICB9OwogfQogCi12b2lkIFByb2Nlc3NBc3NlcnRpb246OmFjcXVpcmVBc3luYyhDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFByb2Nlc3NBc3Nl
cnRpb246OmFjcXVpcmVBc3luYyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChpc01haW5SdW5Mb29wKCkpOwogICAgIGFzc2Vy
dGlvbnNXb3JrUXVldWUoKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFi
bGUgewotICAgICAgICBwcm90ZWN0ZWRUaGlzLT5hY3F1aXJlU3luYygpOwotICAgICAgICBSdW5M
b29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRo
aXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11
dGFibGUgeworICAgICAgICBib29sIGFjcXVpcmVkID0gcHJvdGVjdGVkVGhpcy0+YWNxdWlyZVN5
bmMoKTsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0g
V1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSwgYWNxdWlyZWRdKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAoY29t
cGxldGlvbkhhbmRsZXIpCi0gICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAg
ICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihhY3F1aXJlZCk7CiAgICAgICAgIH0pOwog
ICAgIH0pOwogfQogCi12b2lkIFByb2Nlc3NBc3NlcnRpb246OmFjcXVpcmVTeW5jKCkKK2Jvb2wg
UHJvY2Vzc0Fzc2VydGlvbjo6YWNxdWlyZVN5bmMoKQogewogICAgIE5TRXJyb3IgKmFjcXVpc2l0
aW9uRXJyb3IgPSBuaWw7CiAgICAgaWYgKCFbbV9yYnNBc3NlcnRpb24gYWNxdWlyZVdpdGhFcnJv
cjomYWNxdWlzaXRpb25FcnJvcl0pIHsKQEAgLTM3NCwyMSArMzc0LDI4IEBAIHZvaWQgUHJvY2Vz
c0Fzc2VydGlvbjo6YWNxdWlyZVN5bmMoKQogICAgICAgICAgICAgaWYgKHdlYWtUaGlzKQogICAg
ICAgICAgICAgICAgIHdlYWtUaGlzLT5wcm9jZXNzQXNzZXJ0aW9uV2FzSW52YWxpZGF0ZWQoKTsK
ICAgICAgICAgfSk7Ci0gICAgfSBlbHNlCi0gICAgICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTdXNw
ZW5zaW9uLCAiJXAgLSBQcm9jZXNzQXNzZXJ0aW9uOiBTdWNjZXNzZnVsbHkgdG9vayBSQlMgYXNz
ZXJ0aW9uICcle3B1YmxpY31zJyBmb3IgcHJvY2VzcyB3aXRoIFBJRD0lZCIsIHRoaXMsIG1fcmVh
c29uLnV0ZjgoKS5kYXRhKCksIG1fcGlkKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
KworICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAgLSBQcm9jZXNzQXNzZXJ0
aW9uOiBTdWNjZXNzZnVsbHkgdG9vayBSQlMgYXNzZXJ0aW9uICcle3B1YmxpY31zJyBmb3IgcHJv
Y2VzcyB3aXRoIFBJRD0lZCIsIHRoaXMsIG1fcmVhc29uLnV0ZjgoKS5kYXRhKCksIG1fcGlkKTsK
KyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogUHJvY2Vzc0Fzc2VydGlvbjo6flByb2Nlc3NBc3NlcnRp
b24oKQogewogICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAgLSB+UHJvY2Vz
c0Fzc2VydGlvbjogUmVsZWFzaW5nIHByb2Nlc3MgYXNzZXJ0aW9uICcle3B1YmxpY31zJyBmb3Ig
cHJvY2VzcyB3aXRoIFBJRD0lZCIsIHRoaXMsIG1fcmVhc29uLnV0ZjgoKS5kYXRhKCksIG1fcGlk
KTsKIAotICAgIGlmIChtX3Jic0Fzc2VydGlvbikgewotICAgICAgICBtX2RlbGVnYXRlLmdldCgp
LmludmFsaWRhdGlvbkNhbGxiYWNrID0gbmlsOwotICAgICAgICBtX2RlbGVnYXRlLmdldCgpLnBy
ZXBhcmVGb3JJbnZhbGlkYXRpb25DYWxsYmFjayA9IG5pbDsKLSAgICAgICAgW21fcmJzQXNzZXJ0
aW9uIHJlbW92ZU9ic2VydmVyOm1fZGVsZWdhdGUuZ2V0KCldOwotICAgICAgICBtX2RlbGVnYXRl
ID0gbmlsOwotICAgICAgICBbbV9yYnNBc3NlcnRpb24gaW52YWxpZGF0ZV07Ci0gICAgfQorICAg
IGlmICghbV9yYnNBc3NlcnRpb24pCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChbbV9yYnNB
c3NlcnRpb24gaXNWYWxpZF0gJiYgbV9yZWxlYXNlSGFuZGxlcikKKyAgICAgICAgbV9yZWxlYXNl
SGFuZGxlcigpOworCisgICAgbV9kZWxlZ2F0ZS5nZXQoKS5pbnZhbGlkYXRpb25DYWxsYmFjayA9
IG5pbDsKKyAgICBtX2RlbGVnYXRlLmdldCgpLnByZXBhcmVGb3JJbnZhbGlkYXRpb25DYWxsYmFj
ayA9IG5pbDsKKyAgICBbbV9yYnNBc3NlcnRpb24gcmVtb3ZlT2JzZXJ2ZXI6bV9kZWxlZ2F0ZS5n
ZXQoKV07CisgICAgbV9kZWxlZ2F0ZSA9IG5pbDsKKyAgICBbbV9yYnNBc3NlcnRpb24gaW52YWxp
ZGF0ZV07CiB9CiAKIHZvaWQgUHJvY2Vzc0Fzc2VydGlvbjo6cHJvY2Vzc0Fzc2VydGlvbldpbGxC
ZUludmFsaWRhdGVkKCkK
</data>
<flag name="commit-queue"
          id="457600"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434934</attachid>
            <date>2021-08-04 14:25:01 -0700</date>
            <delta_ts>2021-08-04 14:31:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228797-20210804142500.patch</filename>
            <type>text/plain</type>
            <size>18624</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwNjU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDljMTU5YzJkNDdiZTE0MjQ5
ODZjNGQ5M2UzN2JkMzM0MTBjZmIzMGUuLmFjZjAyZjZkZjc3NjM5ZTI0N2RlNjUxOTI1ODhlMGM0
N2I2MTUxMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDIgQEAKKzIwMjEtMDgtMDQgIFNpaHVpIExp
dSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIG1vcmUgbG9nZ2luZyBmb3Ig
cHJvY2VzcyBhc3NlcnRpb24gaW4gbmV0d29yayBwcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjg3OTcKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBY2NvcmRpbmcgdG8gY3Jhc2ggbG9ncyBpbiBy
ZGFyOi8vNzk3ODcxMjMsIG5ldHdvcmsgcHJvY2VzcyBjYW4gZ2V0IHN1c3BlbmRlZCBzb29uIGFm
dGVyIHJlY2VpdmluZyAKKyAgICAgICAgcHJvY2Vzc0RpZFJlc3VtZSBtZXNzYWdlLiBUbyBiZXR0
ZXIgdW5kZXJzdGFuZCB0aGUgY2F1c2UgaW4gZnV0dXJlIGNyYXNoIGxvZ3MsIHdlIHBhc3MgdGhl
IGFzc2VydGlvbiBzdGF0ZQorICAgICAgICBpbmZvcm1hdGlvbiBmcm9tIFVJIHByb2Nlc3MgdG8g
bmV0d29yayBwcm9jZXNzIGFuZCBsb2cgaXQuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpkaWRB
Y3F1aXJlQXNzZXJ0aW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmRpZElu
dmFsaWRhdGVBc3NlcnRpb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZGlk
UmVsZWFzZUFzc2VydGlvbik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5p
bjoKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlkQWNxdWlyZUFzc2VydGlv
bik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZEludmFsaWRhdGVB
c3NlcnRpb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRSZWxl
YXNlQXNzZXJ0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1Byb2Nlc3NBc3NlcnRpb24uY3BwOgorICAg
ICAgICAoV2ViS2l0OjpQcm9jZXNzQXNzZXJ0aW9uOjphY3F1aXJlQXN5bmMpOgorICAgICAgICAo
V2ViS2l0OjpQcm9jZXNzQXNzZXJ0aW9uOjphY3F1aXJlU3luYyk6CisgICAgICAgICogVUlQcm9j
ZXNzL1Byb2Nlc3NBc3NlcnRpb24uaDoKKyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc0Fzc2VydGlv
bjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc0Fzc2VydGlvbjo6c2V0UmVsZWFz
ZUhhbmRsZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Qcm9jZXNzVGhyb3R0bGVyLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6UHJvY2Vzc1Rocm90dGxlcjo6c2V0QXNzZXJ0aW9uVHlwZSk6CisgICAg
ICAgICogVUlQcm9jZXNzL1Byb2Nlc3NUaHJvdHRsZXJDbGllbnQuaDoKKyAgICAgICAgKFdlYktp
dDo6UHJvY2Vzc1Rocm90dGxlckNsaWVudDo6ZGlkQWNxdWlyZUFzc2VydGlvbik6CisgICAgICAg
IChXZWJLaXQ6OlByb2Nlc3NUaHJvdHRsZXJDbGllbnQ6OmRpZEludmFsaWRhdGVBc3NlcnRpb24p
OgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzVGhyb3R0bGVyQ2xpZW50OjpkaWRSZWxlYXNlQXNz
ZXJ0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1Byb2Nlc3NBc3NlcnRpb25JT1MubW06
CisgICAgICAgIChXZWJLaXQ6OlByb2Nlc3NBc3NlcnRpb246OmFjcXVpcmVBc3luYyk6CisgICAg
ICAgIChXZWJLaXQ6OlByb2Nlc3NBc3NlcnRpb246OmFjcXVpcmVTeW5jKToKKyAgICAgICAgKFdl
YktpdDo6UHJvY2Vzc0Fzc2VydGlvbjo6flByb2Nlc3NBc3NlcnRpb24pOgorCiAyMDIxLTA4LTA0
ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIENyYXNo
IGluIERpc3BsYXlMaW5rOjpub3RpZnlPYnNlcnZlcnNEaXNwbGF5V2FzUmVmcmVzaGVkKCkgb24g
bWFjT1MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5j
cHAKaW5kZXggYTM4YjJlMjdmMzk4MjFmMDRiMDc1NGQxODBiY2Y0NmNhYzE5NzU5ZS4uNjQ0YzA0
M2E5ZWJmYjIxY2NjNTc4ODk0NGI1NWFlZmQzNjdkMjA5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTIyNjMsNiArMjI2MywyMSBA
QCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpwcmVwYXJlVG9TdXNwZW5kKGJvb2wgaXNTdXNwZW5zaW9u
SW1taW5lbnQsIENvbXBsZXRpb25IYW5kbAogICAgIG1fc3RvcmFnZU1hbmFnZXJTZXQtPnN1c3Bl
bmQoW2NhbGxiYWNrQWdncmVnYXRvcl0geyB9KTsKIH0KIAordm9pZCBOZXR3b3JrUHJvY2Vzczo6
ZGlkQWNxdWlyZUFzc2VydGlvbihjb25zdCBTdHJpbmcmIGFzc2VydGlvbk5hbWUpCit7CisgICAg
UkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICIlcCAtIE5ldHdvcmtQcm9jZXNzOjpkaWRB
Y3F1aXJlQXNzZXJ0aW9uKCkgYXNzZXJ0aW9uTmFtZT0lcyAiLCB0aGlzLCBhc3NlcnRpb25OYW1l
LnV0ZjgoKS5kYXRhKCkpOworfQorCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpkaWRJbnZhbGlkYXRl
QXNzZXJ0aW9uKGNvbnN0IFN0cmluZyYgYXNzZXJ0aW9uTmFtZSkKK3sKKyAgICBSRUxFQVNFX0xP
RyhQcm9jZXNzU3VzcGVuc2lvbiwgIiVwIC0gTmV0d29ya1Byb2Nlc3M6OmRpZEludmFsaWRhdGVB
c3NlcnRpb24oKSBhc3NlcnRpb25OYW1lPSVzICIsIHRoaXMsIGFzc2VydGlvbk5hbWUudXRmOCgp
LmRhdGEoKSk7Cit9CisKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OmRpZFJlbGVhc2VBc3NlcnRpb24o
Y29uc3QgU3RyaW5nJiBhc3NlcnRpb25OYW1lKQoreworICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NT
dXNwZW5zaW9uLCAiJXAgLSBOZXR3b3JrUHJvY2Vzczo6ZGlkUmVsZWFzZUFzc2VydGlvbigpIGFz
c2VydGlvbk5hbWU9JXMgIiwgdGhpcywgYXNzZXJ0aW9uTmFtZS51dGY4KCkuZGF0YSgpKTsKK30K
Kwogdm9pZCBOZXR3b3JrUHJvY2Vzczo6YXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmQoKQog
ewogICAgIG1fZG93bmxvYWRNYW5hZ2VyLmFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKaW5kZXgg
OGE3MDg0YmNhYWM1MGEwYjkyNzU4MDJhOGY0YjViZTRkYWI1MDY0Yi4uNGZjYjg1MmRhZDRlOGFi
YmYyNzRjODlmNjg4NTgwNDgwM2E4ZDE1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MuaApAQCAtMTg3LDYgKzE4Nyw5IEBAIHB1YmxpYzoKICAgICB2
b2lkIHByZXBhcmVUb1N1c3BlbmQoYm9vbCBpc1N1c3BlbnNpb25JbW1pbmVudCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHByb2Nlc3NEaWRSZXN1bWUoKTsKICAgICB2
b2lkIHJlc3VtZSgpOworICAgIHZvaWQgZGlkQWNxdWlyZUFzc2VydGlvbihjb25zdCBTdHJpbmcm
IGFzc2VydGlvbk5hbWUpOworICAgIHZvaWQgZGlkSW52YWxpZGF0ZUFzc2VydGlvbihjb25zdCBT
dHJpbmcmIGFzc2VydGlvbk5hbWUpOworICAgIHZvaWQgZGlkUmVsZWFzZUFzc2VydGlvbihjb25z
dCBTdHJpbmcmIGFzc2VydGlvbk5hbWUpOwogCiAgICAgQ2FjaGVNb2RlbCBjYWNoZU1vZGVsKCkg
Y29uc3QgeyByZXR1cm4gbV9jYWNoZU1vZGVsOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDJmYzcx
OWUzNDdmYTAwNTA2NmFlMzk4NzEzMmZkZTgyOTI3OTJlMWMuLjg4ZjNmMjJhNzc4MjlkODRkNmRj
YzFiMjVmZThkYzU0OWRhZmYxOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtNzMsNiArNzMsOSBAQCBt
ZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgUHJvY2Vzc1dp
bGxTdXNwZW5kSW1taW5lbnRseUZvclRlc3RpbmdTeW5jKCkgLT4gKCkgU3luY2hyb25vdXMKICAg
ICBQcmVwYXJlVG9TdXNwZW5kKGJvb2wgaXNTdXNwZW5zaW9uSW1taW5lbnQpIC0+ICgpIEFzeW5j
CiAgICAgUHJvY2Vzc0RpZFJlc3VtZSgpCisgICAgRGlkQWNxdWlyZUFzc2VydGlvbihTdHJpbmcg
bmFtZSk7CisgICAgRGlkSW52YWxpZGF0ZUFzc2VydGlvbihTdHJpbmcgbmFtZSk7CisgICAgRGlk
UmVsZWFzZUFzc2VydGlvbihTdHJpbmcgbmFtZSk7CiAKICAgICBQcmVjb25uZWN0VG8oUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFn
ZVByb3h5SUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJRCwgVVJMIHVybCwgU3Ry
aW5nIHVzZXJBZ2VudCwgZW51bTp1aW50OF90IFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9s
aWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBlbnVtOmJvb2wgc3RkOjpvcHRpb25hbDxXZWJL
aXQ6Ok5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9t
YWluLCBlbnVtOmJvb2wgV2ViS2l0OjpMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCBsYXN0
TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCmluZGV4IDM3MWJiZGEw
ZTZiNDY2YzBlNjYyNmU1ZDUwNmZhY2M3YjI3ZWZkNGMuLmYzOGJmYjYxZTFiOWQyODFiZjI4OWM0
NWMxMGU3M2M3Y2EwNDJkNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAtMTI1NSw2ICsxMjU1LDI0IEBA
IHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2VuZFByb2Nlc3NEaWRSZXN1bWUoKQogICAgICAg
ICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6UHJvY2Vzc0RpZFJlc3VtZSgpLCAwKTsK
IH0KIAordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRBY3F1aXJlQXNzZXJ0aW9uKGNvbnN0
IFN0cmluZyYgYXNzZXJ0aW9uTmFtZSkKK3sKKyAgICBpZiAoY2FuU2VuZE1lc3NhZ2UoKSAmJiAo
YXNzZXJ0aW9uTmFtZSA9PSAiRm9yZWdyb3VuZCIgfHwgYXNzZXJ0aW9uTmFtZSA9PSAiQmFja2dy
b3VuZCIpKQorICAgICAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6RGlkQWNxdWly
ZUFzc2VydGlvbihhc3NlcnRpb25OYW1lKSwgMCk7Cit9CisKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQ
cm94eTo6ZGlkSW52YWxpZGF0ZUFzc2VydGlvbihjb25zdCBTdHJpbmcmIGFzc2VydGlvbk5hbWUp
Cit7CisgICAgaWYgKGNhblNlbmRNZXNzYWdlKCkgJiYgKGFzc2VydGlvbk5hbWUgPT0gIkZvcmVn
cm91bmQiIHx8IGFzc2VydGlvbk5hbWUgPT0gIkJhY2tncm91bmQiKSkKKyAgICAgICAgc2VuZChN
ZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkRpZEludmFsaWRhdGVBc3NlcnRpb24oYXNzZXJ0aW9u
TmFtZSksIDApOworfQorCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZFJlbGVhc2VBc3Nl
cnRpb24oY29uc3QgU3RyaW5nJiBhc3NlcnRpb25OYW1lKQoreworICAgIGlmIChjYW5TZW5kTWVz
c2FnZSgpICYmIChhc3NlcnRpb25OYW1lID09ICJGb3JlZ3JvdW5kIiB8fCBhc3NlcnRpb25OYW1l
ID09ICJCYWNrZ3JvdW5kIikpCisgICAgICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNz
OjpEaWRSZWxlYXNlQXNzZXJ0aW9uKGFzc2VydGlvbk5hbWUpLCAwKTsKK30KKwogdm9pZCBOZXR3
b3JrUHJvY2Vzc1Byb3h5OjpmbHVzaENvb2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgc2Vu
ZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6Rmx1c2hDb29raWVzKHNl
c3Npb25JRCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKaW5kZXggYjYw
OWYzNWY2YjU5YmMzZWZmMDQxNDIwNGI2MzM2ZDMwY2ExNDY1MS4uZjJhYTNmMGJiNmE0NDAyMmRj
MWQyOGI3NzM0Zjg4MmQ2N2I3YWFjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKQEAgLTIyNywxMiArMjI3LDYgQEAg
cHVibGljOgogICAgIAogICAgIHZvaWQgY3JlYXRlU3ltTGlua0ZvckZpbGVVcGdyYWRlKGNvbnN0
IFN0cmluZyYgaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5KTsKIAotICAgIC8vIFByb2Nlc3NUaHJv
dHRsZXJDbGllbnQKLSAgICB2b2lkIHNlbmRQcm9jZXNzRGlkUmVzdW1lKCkgZmluYWw7Ci0gICAg
QVNDSUlMaXRlcmFsIGNsaWVudE5hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiTmV0d29ya1By
b2Nlc3MiX3M7IH0KLSAgICAKLSAgICB2b2lkIHNlbmRQcm9jZXNzV2lsbFN1c3BlbmRJbW1pbmVu
dGx5Rm9yVGVzdGluZygpOwotCiAgICAgdm9pZCByZWdpc3RlclNjaGVtZUZvckxlZ2FjeUN1c3Rv
bVByb3RvY29sKGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgdW5yZWdpc3RlclNjaGVtZUZvckxl
Z2FjeUN1c3RvbVByb3RvY29sKGNvbnN0IFN0cmluZyYpOwogCkBAIC0yNTQsNyArMjQ4LDE1IEBA
IHB1YmxpYzoKICNlbmRpZgogCiAgICAgLy8gUHJvY2Vzc1Rocm90dGxlckNsaWVudAorICAgIHZv
aWQgc2VuZFByb2Nlc3NEaWRSZXN1bWUoKSBmaW5hbDsKKyAgICBBU0NJSUxpdGVyYWwgY2xpZW50
TmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJOZXR3b3JrUHJvY2VzcyJfczsgfQogICAgIHZv
aWQgc2VuZFByZXBhcmVUb1N1c3BlbmQoSXNTdXNwZW5zaW9uSW1taW5lbnQsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJikgZmluYWw7CisgICAgdm9pZCBkaWRBY3F1aXJlQXNzZXJ0aW9uKGNv
bnN0IFN0cmluZyYgYXNzZXJ0aW9uTmFtZSkgZmluYWw7CisgICAgdm9pZCBkaWRJbnZhbGlkYXRl
QXNzZXJ0aW9uKGNvbnN0IFN0cmluZyYgYXNzZXJ0aW9uTmFtZSkgZmluYWw7CisgICAgdm9pZCBk
aWRSZWxlYXNlQXNzZXJ0aW9uKGNvbnN0IFN0cmluZyYgYXNzZXJ0aW9uTmFtZSkgZmluYWw7CisK
KyAgICB2b2lkIHNlbmRQcm9jZXNzV2lsbFN1c3BlbmRJbW1pbmVudGx5Rm9yVGVzdGluZygpOwor
CiAgICAgdm9pZCB1cGRhdGVCdW5kbGVJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBjbGVhckJ1bmRsZUlkZW50aWZpZXIoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUHJvY2Vzc0Fzc2VydGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Q
cm9jZXNzQXNzZXJ0aW9uLmNwcAppbmRleCBkMWI5ZGUxYWU1YWEyM2E1NjgxZjdlMmI3Y2JjZDgw
NjE3OWMwNTdjLi4wOWJlMGJjNWQzNWNjNDA0NWY3Y2ZkNjEyM2YyOWFkMjc0Yzc0MTEzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm9jZXNzQXNzZXJ0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm9jZXNzQXNzZXJ0aW9uLmNwcApAQCAtNDcsMTQg
KzQ3LDE1IEBAIGJvb2wgUHJvY2Vzc0Fzc2VydGlvbjo6aXNWYWxpZCgpIGNvbnN0CiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLXZvaWQgUHJvY2Vzc0Fzc2VydGlvbjo6YWNxdWlyZUFzeW5jKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgUHJvY2Vzc0Fz
c2VydGlvbjo6YWNxdWlyZUFzeW5jKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKGNvbXBsZXRpb25IYW5kbGVyKQogICAgICAgICBS
dW5Mb29wOjptYWluKCkuZGlzcGF0Y2goV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQog
Ci12b2lkIFByb2Nlc3NBc3NlcnRpb246OmFjcXVpcmVTeW5jKCkKK2Jvb2wgUHJvY2Vzc0Fzc2Vy
dGlvbjo6YWNxdWlyZVN5bmMoKQogeworICAgIHJldHVybiB0cnVlOwogfQogCiBQcm9jZXNzQW5k
VUlBc3NlcnRpb246OlByb2Nlc3NBbmRVSUFzc2VydGlvbihQcm9jZXNzSUQgcGlkLCBjb25zdCBT
dHJpbmcmIHJlYXNvbiwgUHJvY2Vzc0Fzc2VydGlvblR5cGUgYXNzZXJ0aW9uVHlwZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb2Nlc3NBc3NlcnRpb24uaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1Byb2Nlc3NBc3NlcnRpb24uaAppbmRleCBhOGUxN2U3NmJiNzE5
ZmZkZTdiN2JjNzA0ZmM1M2Y2Y2YyZGYyYjE1Li5jZDA3ZjNjMjA2MmY1ZGFlN2ExYWI0Y2RmODRj
ZWY2MjBlNTk1YTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm9jZXNz
QXNzZXJ0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvY2Vzc0Fzc2VydGlv
bi5oCkBAIC01OCwxNSArNTgsMTUgQEAgY2xhc3MgUHJvY2Vzc0Fzc2VydGlvbiA6IHB1YmxpYyBU
aHJlYWRTYWZlUmVmQ291bnRlZDxQcm9jZXNzQXNzZXJ0aW9uPiwgcHVibGljIEMKICAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIE1vZGUgOiBib29s
IHsgU3luYywgQXN5bmMgfTsKLSAgICBzdGF0aWMgUmVmPFByb2Nlc3NBc3NlcnRpb24+IGNyZWF0
ZShQcm9jZXNzSUQgcGlkLCBjb25zdCBTdHJpbmcmIHJlYXNvbiwgUHJvY2Vzc0Fzc2VydGlvblR5
cGUgdHlwZSwgTW9kZSBtb2RlID0gTW9kZTo6QXN5bmMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJiBhY3F1aXNpc2lvbkhhbmRsZXIgPSBudWxscHRyKQorICAgIHN0YXRpYyBSZWY8UHJvY2Vz
c0Fzc2VydGlvbj4gY3JlYXRlKFByb2Nlc3NJRCBwaWQsIGNvbnN0IFN0cmluZyYgcmVhc29uLCBQ
cm9jZXNzQXNzZXJ0aW9uVHlwZSB0eXBlLCBNb2RlIG1vZGUgPSBNb2RlOjpBc3luYywgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBhY3F1aXNpc2lvbkhhbmRsZXIgPSBudWxscHRyKQog
ICAgIHsKICAgICAgICAgYXV0byBhc3NlcnRpb24gPSBhZG9wdFJlZigqbmV3IFByb2Nlc3NBc3Nl
cnRpb24ocGlkLCByZWFzb24sIHR5cGUpKTsKICAgICAgICAgaWYgKG1vZGUgPT0gTW9kZTo6QXN5
bmMpCiAgICAgICAgICAgICBhc3NlcnRpb24tPmFjcXVpcmVBc3luYyhXVEZNb3ZlKGFjcXVpc2lz
aW9uSGFuZGxlcikpOwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGFzc2VydGlvbi0+YWNx
dWlyZVN5bmMoKTsKKyAgICAgICAgICAgIGJvb2wgYWNxdWlyZWQgPSBhc3NlcnRpb24tPmFjcXVp
cmVTeW5jKCk7CiAgICAgICAgICAgICBpZiAoYWNxdWlzaXNpb25IYW5kbGVyKQotICAgICAgICAg
ICAgICAgIGFjcXVpc2lzaW9uSGFuZGxlcigpOworICAgICAgICAgICAgICAgIGFjcXVpc2lzaW9u
SGFuZGxlcihhY3F1aXJlZCk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIGFzc2VydGlvbjsK
ICAgICB9CkBAIC03NCw2ICs3NCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0UHJlcGFyZUZv
ckludmFsaWRhdGlvbkhhbmRsZXIoRnVuY3Rpb248dm9pZCgpPiYmIGhhbmRsZXIpIHsgbV9wcmVw
YXJlRm9ySW52YWxpZGF0aW9uSGFuZGxlciA9IFdURk1vdmUoaGFuZGxlcik7IH0KICAgICB2b2lk
IHNldEludmFsaWRhdGlvbkhhbmRsZXIoRnVuY3Rpb248dm9pZCgpPiYmIGhhbmRsZXIpIHsgbV9p
bnZhbGlkYXRpb25IYW5kbGVyID0gV1RGTW92ZShoYW5kbGVyKTsgfQorICAgIHZvaWQgc2V0UmVs
ZWFzZUhhbmRsZXIoRnVuY3Rpb248dm9pZCgpPiYmIGhhbmRsZXIpIHsgbV9yZWxlYXNlSGFuZGxl
ciA9IFdURk1vdmUoaGFuZGxlcik7IH0KIAogICAgIFByb2Nlc3NBc3NlcnRpb25UeXBlIHR5cGUo
KSBjb25zdCB7IHJldHVybiBtX2Fzc2VydGlvblR5cGU7IH0KICAgICBQcm9jZXNzSUQgcGlkKCkg
Y29uc3QgeyByZXR1cm4gbV9waWQ7IH0KQEAgLTgzLDggKzg0LDggQEAgcHVibGljOgogcHJvdGVj
dGVkOgogICAgIFByb2Nlc3NBc3NlcnRpb24oUHJvY2Vzc0lELCBjb25zdCBTdHJpbmcmIHJlYXNv
biwgUHJvY2Vzc0Fzc2VydGlvblR5cGUpOwogCi0gICAgdm9pZCBhY3F1aXJlQXN5bmMoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAgICB2b2lkIGFjcXVpcmVTeW5jKCk7CisgICAgdm9p
ZCBhY3F1aXJlQXN5bmMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgYm9v
bCBhY3F1aXJlU3luYygpOwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB2b2lkIHBy
b2Nlc3NBc3NlcnRpb25XaWxsQmVJbnZhbGlkYXRlZCgpOwpAQCAtMTAyLDE5ICsxMDMsMjAgQEAg
cHJpdmF0ZToKICNlbmRpZgogICAgIEZ1bmN0aW9uPHZvaWQoKT4gbV9wcmVwYXJlRm9ySW52YWxp
ZGF0aW9uSGFuZGxlcjsKICAgICBGdW5jdGlvbjx2b2lkKCk+IG1faW52YWxpZGF0aW9uSGFuZGxl
cjsKKyAgICBGdW5jdGlvbjx2b2lkKCk+IG1fcmVsZWFzZUhhbmRsZXI7CiB9OwogCiBjbGFzcyBQ
cm9jZXNzQW5kVUlBc3NlcnRpb24gZmluYWwgOiBwdWJsaWMgUHJvY2Vzc0Fzc2VydGlvbiB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFJlZjxQcm9jZXNzQW5kVUlBc3NlcnRpb24+IGNyZWF0ZShQcm9j
ZXNzSUQgcGlkLCBjb25zdCBTdHJpbmcmIHJlYXNvbiwgUHJvY2Vzc0Fzc2VydGlvblR5cGUgdHlw
ZSwgTW9kZSBtb2RlID0gTW9kZTo6QXN5bmMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBh
Y3F1aXNpc2lvbkhhbmRsZXIgPSBudWxscHRyKQorICAgIHN0YXRpYyBSZWY8UHJvY2Vzc0FuZFVJ
QXNzZXJ0aW9uPiBjcmVhdGUoUHJvY2Vzc0lEIHBpZCwgY29uc3QgU3RyaW5nJiByZWFzb24sIFBy
b2Nlc3NBc3NlcnRpb25UeXBlIHR5cGUsIE1vZGUgbW9kZSA9IE1vZGU6OkFzeW5jLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGFjcXVpc2lzaW9uSGFuZGxlciA9IG51bGxwdHIpCiAg
ICAgewogICAgICAgICBhdXRvIGFzc2VydGlvbiA9IGFkb3B0UmVmKCpuZXcgUHJvY2Vzc0FuZFVJ
QXNzZXJ0aW9uKHBpZCwgcmVhc29uLCB0eXBlKSk7CiAgICAgICAgIGlmIChtb2RlID09IE1vZGU6
OkFzeW5jKQogICAgICAgICAgICAgYXNzZXJ0aW9uLT5hY3F1aXJlQXN5bmMoV1RGTW92ZShhY3F1
aXNpc2lvbkhhbmRsZXIpKTsKICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBhc3NlcnRpb24t
PmFjcXVpcmVTeW5jKCk7CisgICAgICAgICAgICBib29sIGFjcXVpcmVkID0gYXNzZXJ0aW9uLT5h
Y3F1aXJlU3luYygpOwogICAgICAgICAgICAgaWYgKGFjcXVpc2lzaW9uSGFuZGxlcikKLSAgICAg
ICAgICAgICAgICBhY3F1aXNpc2lvbkhhbmRsZXIoKTsKKyAgICAgICAgICAgICAgICBhY3F1aXNp
c2lvbkhhbmRsZXIoYWNxdWlyZWQpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBhc3NlcnRp
b247CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvY2Vzc1Ro
cm90dGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm9jZXNzVGhyb3R0bGVyLmNw
cAppbmRleCA3MmNlOWVmNzYyZDk5N2M2YTc4ZDFjNTQ5YmQ4ZGJlNTFjY2IyZDY5Li44Y2IyNWRi
MWRlZThjOWE0ZmYwMGFjMDViYWNmNDY2Nzg5ZTBlOThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Qcm9jZXNzVGhyb3R0bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Qcm9jZXNzVGhyb3R0bGVyLmNwcApAQCAtMTMxLDIwICsxMzEsMzggQEAgdm9pZCBQ
cm9jZXNzVGhyb3R0bGVyOjpzZXRBc3NlcnRpb25UeXBlKFByb2Nlc3NBc3NlcnRpb25UeXBlIG5l
d1R5cGUpCiAKICAgICAvLyBLZWVwIHRoZSBwcmV2aW91cyBhc3NlcnRpb24gYWN0aXZlIHVudGls
IHRoZSBuZXcgYXNzZXJ0aW9uIGlzIHRha2VuIGFzeW5jaHJvbm91c2x5LgogICAgIGF1dG8gcHJl
dmlvdXNBc3NlcnRpb24gPSBzdGQ6OmV4Y2hhbmdlKG1fYXNzZXJ0aW9uLCBudWxscHRyKTsKKyAg
ICBhdXRvIG5hbWUgPSBhc3NlcnRpb25OYW1lKG5ld1R5cGUpOworICAgIGF1dG8gYWNxdWlzaXRp
b25IYW5kbGVyID0gW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCBwcmV2aW91
c0Fzc2VydGlvbiA9IFdURk1vdmUocHJldmlvdXNBc3NlcnRpb24pLCBuYW1lXShib29sIGFjcXVp
cmVkKSB7CisgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICByZXR1cm47CisKKyAg
ICAgICAgaWYgKGFjcXVpcmVkKQorICAgICAgICAgICAgbV9wcm9jZXNzLmRpZEFjcXVpcmVBc3Nl
cnRpb24obmFtZSk7CisgICAgfTsKICAgICBpZiAobV9zaG91bGRUYWtlVUlCYWNrZ3JvdW5kQXNz
ZXJ0aW9uKSB7Ci0gICAgICAgIGF1dG8gYXNzZXJ0aW9uID0gUHJvY2Vzc0FuZFVJQXNzZXJ0aW9u
OjpjcmVhdGUobV9wcm9jZXNzSWRlbnRpZmllciwgYXNzZXJ0aW9uTmFtZShuZXdUeXBlKSwgbmV3
VHlwZSwgUHJvY2Vzc0Fzc2VydGlvbjo6TW9kZTo6QXN5bmMsIFtwcmV2aW91c0Fzc2VydGlvbiA9
IFdURk1vdmUocHJldmlvdXNBc3NlcnRpb24pXSB7IH0pOworICAgICAgICBhdXRvIGFzc2VydGlv
biA9IFByb2Nlc3NBbmRVSUFzc2VydGlvbjo6Y3JlYXRlKG1fcHJvY2Vzc0lkZW50aWZpZXIsIG5h
bWUsIG5ld1R5cGUsIFByb2Nlc3NBc3NlcnRpb246Ok1vZGU6OkFzeW5jLCBXVEZNb3ZlKGFjcXVp
c2l0aW9uSGFuZGxlcikpOwogICAgICAgICBhc3NlcnRpb24tPnNldFVJQXNzZXJ0aW9uRXhwaXJh
dGlvbkhhbmRsZXIoW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXSB7CiAgICAgICAgICAg
ICBpZiAod2Vha1RoaXMpCiAgICAgICAgICAgICAgICAgd2Vha1RoaXMtPnVpQXNzZXJ0aW9uV2ls
bEV4cGlyZUltbWluZW50bHkoKTsKICAgICAgICAgfSk7CiAgICAgICAgIG1fYXNzZXJ0aW9uID0g
V1RGTW92ZShhc3NlcnRpb24pOwogICAgIH0gZWxzZQotICAgICAgICBtX2Fzc2VydGlvbiA9IFBy
b2Nlc3NBc3NlcnRpb246OmNyZWF0ZShtX3Byb2Nlc3NJZGVudGlmaWVyLCBhc3NlcnRpb25OYW1l
KG5ld1R5cGUpLCBuZXdUeXBlLCBQcm9jZXNzQXNzZXJ0aW9uOjpNb2RlOjpBc3luYywgW3ByZXZp
b3VzQXNzZXJ0aW9uID0gV1RGTW92ZShwcmV2aW91c0Fzc2VydGlvbildIHsgfSk7CisgICAgICAg
IG1fYXNzZXJ0aW9uID0gUHJvY2Vzc0Fzc2VydGlvbjo6Y3JlYXRlKG1fcHJvY2Vzc0lkZW50aWZp
ZXIsIG5hbWUsIG5ld1R5cGUsIFByb2Nlc3NBc3NlcnRpb246Ok1vZGU6OkFzeW5jLCBXVEZNb3Zl
KGFjcXVpc2l0aW9uSGFuZGxlcikpOwogCi0gICAgbV9hc3NlcnRpb24tPnNldEludmFsaWRhdGlv
bkhhbmRsZXIoW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXSB7Ci0gICAgICAgIGlmICh3
ZWFrVGhpcykKLSAgICAgICAgICAgIHdlYWtUaGlzLT5hc3NlcnRpb25XYXNJbnZhbGlkYXRlZCgp
OworICAgIG1fYXNzZXJ0aW9uLT5zZXRJbnZhbGlkYXRpb25IYW5kbGVyKFt0aGlzLCB3ZWFrVGhp
cyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgbmFtZV0geworICAgICAgICBpZiAoIXdlYWtUaGlzKQor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAKKyAgICAgICAgYXNzZXJ0aW9uV2FzSW52YWxp
ZGF0ZWQoKTsKKyAgICAgICAgbV9wcm9jZXNzLmRpZEludmFsaWRhdGVBc3NlcnRpb24obmFtZSk7
CiAgICAgfSk7CisgICAgbV9hc3NlcnRpb24tPnNldFJlbGVhc2VIYW5kbGVyKFt0aGlzLCB3ZWFr
VGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgbmFtZV0geworICAgICAgICBpZiAoIXdlYWtUaGlz
KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIG1fcHJvY2Vzcy5kaWRSZWxlYXNlQXNz
ZXJ0aW9uKG5hbWUpOworICAgIH0pOworCiAgICAgbV9wcm9jZXNzLmRpZFNldEFzc2VydGlvblR5
cGUobmV3VHlwZSk7CiB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Qcm9jZXNzVGhyb3R0bGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm9j
ZXNzVGhyb3R0bGVyQ2xpZW50LmgKaW5kZXggMTE4YmYwZGQyMzU4MjI0YzJlYzdkZjliOTY1MWU5
ZjEzNzhlNmUwMC4uYTZmYWFiZGZlY2ZiZmU4OGQ2MDc1N2NlOWNjMzBlNGRmMmY4MjUwOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvY2Vzc1Rocm90dGxlckNsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb2Nlc3NUaHJvdHRsZXJDbGllbnQuaApA
QCAtNDAsNiArNDAsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZW5kUHJvY2Vzc0Rp
ZFJlc3VtZSgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkU2V0QXNzZXJ0aW9uVHlwZShQcm9j
ZXNzQXNzZXJ0aW9uVHlwZSkgeyB9OwogICAgIHZpcnR1YWwgQVNDSUlMaXRlcmFsIGNsaWVudE5h
bWUoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQWNxdWlyZUFzc2VydGlvbihj
b25zdCBTdHJpbmcmKSB7IH07CisgICAgdmlydHVhbCB2b2lkIGRpZEludmFsaWRhdGVBc3NlcnRp
b24oY29uc3QgU3RyaW5nJikgeyB9OworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWxlYXNlQXNzZXJ0
aW9uKGNvbnN0IFN0cmluZyYpIHsgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1Byb2Nlc3NBc3NlcnRpb25JT1Mu
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUHJvY2Vzc0Fzc2VydGlvbklPUy5tbQpp
bmRleCBlMWQ3MWI3YWFkN2FjN2RhNjBiN2IxNWJiYjY4Nzg4YzM5MmVhMTMyLi42ZWM3YTgwMjE2
ZmJhOThmNzY2Yjk2MDk4ODEwNjU3ODJkODI5NzBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvUHJvY2Vzc0Fzc2VydGlvbklPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvUHJvY2Vzc0Fzc2VydGlvbklPUy5tbQpAQCAtMzUzLDE5ICszNTMsMTkg
QEAgUHJvY2Vzc0Fzc2VydGlvbjo6UHJvY2Vzc0Fzc2VydGlvbihwaWRfdCBwaWQsIGNvbnN0IFN0
cmluZyYgcmVhc29uLCBQcm9jZXNzQXNzZXIKICAgICB9OwogfQogCi12b2lkIFByb2Nlc3NBc3Nl
cnRpb246OmFjcXVpcmVBc3luYyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCit2b2lkIFByb2Nlc3NBc3NlcnRpb246OmFjcXVpcmVBc3luYyhDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChp
c01haW5SdW5Mb29wKCkpOwogICAgIGFzc2VydGlvbnNXb3JrUXVldWUoKS5kaXNwYXRjaChbcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewotICAgICAgICBwcm90ZWN0ZWRUaGlzLT5h
Y3F1aXJlU3luYygpOwotICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3Rl
ZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgICAgICBib29sIGFjcXVpcmVk
ID0gcHJvdGVjdGVkVGhpcy0+YWNxdWlyZVN5bmMoKTsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigp
LmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgYWNxdWlyZWRdKCkgbXV0
YWJsZSB7CiAgICAgICAgICAgICBpZiAoY29tcGxldGlvbkhhbmRsZXIpCi0gICAgICAgICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihhY3F1aXJlZCk7CiAgICAgICAgIH0pOwogICAgIH0pOwogfQogCi12b2lkIFByb2Nlc3NBc3Nl
cnRpb246OmFjcXVpcmVTeW5jKCkKK2Jvb2wgUHJvY2Vzc0Fzc2VydGlvbjo6YWNxdWlyZVN5bmMo
KQogewogICAgIE5TRXJyb3IgKmFjcXVpc2l0aW9uRXJyb3IgPSBuaWw7CiAgICAgaWYgKCFbbV9y
YnNBc3NlcnRpb24gYWNxdWlyZVdpdGhFcnJvcjomYWNxdWlzaXRpb25FcnJvcl0pIHsKQEAgLTM3
NCwyMSArMzc0LDI4IEBAIHZvaWQgUHJvY2Vzc0Fzc2VydGlvbjo6YWNxdWlyZVN5bmMoKQogICAg
ICAgICAgICAgaWYgKHdlYWtUaGlzKQogICAgICAgICAgICAgICAgIHdlYWtUaGlzLT5wcm9jZXNz
QXNzZXJ0aW9uV2FzSW52YWxpZGF0ZWQoKTsKICAgICAgICAgfSk7Ci0gICAgfSBlbHNlCi0gICAg
ICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAgLSBQcm9jZXNzQXNzZXJ0aW9u
OiBTdWNjZXNzZnVsbHkgdG9vayBSQlMgYXNzZXJ0aW9uICcle3B1YmxpY31zJyBmb3IgcHJvY2Vz
cyB3aXRoIFBJRD0lZCIsIHRoaXMsIG1fcmVhc29uLnV0ZjgoKS5kYXRhKCksIG1fcGlkKTsKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTdXNw
ZW5zaW9uLCAiJXAgLSBQcm9jZXNzQXNzZXJ0aW9uOiBTdWNjZXNzZnVsbHkgdG9vayBSQlMgYXNz
ZXJ0aW9uICcle3B1YmxpY31zJyBmb3IgcHJvY2VzcyB3aXRoIFBJRD0lZCIsIHRoaXMsIG1fcmVh
c29uLnV0ZjgoKS5kYXRhKCksIG1fcGlkKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogUHJvY2Vz
c0Fzc2VydGlvbjo6flByb2Nlc3NBc3NlcnRpb24oKQogewogICAgIFJFTEVBU0VfTE9HKFByb2Nl
c3NTdXNwZW5zaW9uLCAiJXAgLSB+UHJvY2Vzc0Fzc2VydGlvbjogUmVsZWFzaW5nIHByb2Nlc3Mg
YXNzZXJ0aW9uICcle3B1YmxpY31zJyBmb3IgcHJvY2VzcyB3aXRoIFBJRD0lZCIsIHRoaXMsIG1f
cmVhc29uLnV0ZjgoKS5kYXRhKCksIG1fcGlkKTsKIAotICAgIGlmIChtX3Jic0Fzc2VydGlvbikg
ewotICAgICAgICBtX2RlbGVnYXRlLmdldCgpLmludmFsaWRhdGlvbkNhbGxiYWNrID0gbmlsOwot
ICAgICAgICBtX2RlbGVnYXRlLmdldCgpLnByZXBhcmVGb3JJbnZhbGlkYXRpb25DYWxsYmFjayA9
IG5pbDsKLSAgICAgICAgW21fcmJzQXNzZXJ0aW9uIHJlbW92ZU9ic2VydmVyOm1fZGVsZWdhdGUu
Z2V0KCldOwotICAgICAgICBtX2RlbGVnYXRlID0gbmlsOwotICAgICAgICBbbV9yYnNBc3NlcnRp
b24gaW52YWxpZGF0ZV07Ci0gICAgfQorICAgIGlmICghbV9yYnNBc3NlcnRpb24pCisgICAgICAg
IHJldHVybjsKKworICAgIGlmIChbbV9yYnNBc3NlcnRpb24gaXNWYWxpZF0gJiYgbV9yZWxlYXNl
SGFuZGxlcikKKyAgICAgICAgbV9yZWxlYXNlSGFuZGxlcigpOworCisgICAgbV9kZWxlZ2F0ZS5n
ZXQoKS5pbnZhbGlkYXRpb25DYWxsYmFjayA9IG5pbDsKKyAgICBtX2RlbGVnYXRlLmdldCgpLnBy
ZXBhcmVGb3JJbnZhbGlkYXRpb25DYWxsYmFjayA9IG5pbDsKKyAgICBbbV9yYnNBc3NlcnRpb24g
cmVtb3ZlT2JzZXJ2ZXI6bV9kZWxlZ2F0ZS5nZXQoKV07CisgICAgbV9kZWxlZ2F0ZSA9IG5pbDsK
KyAgICBbbV9yYnNBc3NlcnRpb24gaW52YWxpZGF0ZV07CiB9CiAKIHZvaWQgUHJvY2Vzc0Fzc2Vy
dGlvbjo6cHJvY2Vzc0Fzc2VydGlvbldpbGxCZUludmFsaWRhdGVkKCkK
</data>
<flag name="commit-queue"
          id="457599"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434937</attachid>
            <date>2021-08-04 14:30:49 -0700</date>
            <delta_ts>2021-08-04 15:31:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228797-20210804143048.patch</filename>
            <type>text/plain</type>
            <size>18760</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwNjU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDljMTU5YzJkNDdiZTE0MjQ5
ODZjNGQ5M2UzN2JkMzM0MTBjZmIzMGUuLmFjZjAyZjZkZjc3NjM5ZTI0N2RlNjUxOTI1ODhlMGM0
N2I2MTUxMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDIgQEAKKzIwMjEtMDgtMDQgIFNpaHVpIExp
dSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIG1vcmUgbG9nZ2luZyBmb3Ig
cHJvY2VzcyBhc3NlcnRpb24gaW4gbmV0d29yayBwcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjg3OTcKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBY2NvcmRpbmcgdG8gY3Jhc2ggbG9ncyBpbiBy
ZGFyOi8vNzk3ODcxMjMsIG5ldHdvcmsgcHJvY2VzcyBjYW4gZ2V0IHN1c3BlbmRlZCBzb29uIGFm
dGVyIHJlY2VpdmluZyAKKyAgICAgICAgcHJvY2Vzc0RpZFJlc3VtZSBtZXNzYWdlLiBUbyBiZXR0
ZXIgdW5kZXJzdGFuZCB0aGUgY2F1c2UgaW4gZnV0dXJlIGNyYXNoIGxvZ3MsIHdlIHBhc3MgdGhl
IGFzc2VydGlvbiBzdGF0ZQorICAgICAgICBpbmZvcm1hdGlvbiBmcm9tIFVJIHByb2Nlc3MgdG8g
bmV0d29yayBwcm9jZXNzIGFuZCBsb2cgaXQuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpkaWRB
Y3F1aXJlQXNzZXJ0aW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmRpZElu
dmFsaWRhdGVBc3NlcnRpb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZGlk
UmVsZWFzZUFzc2VydGlvbik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5p
bjoKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlkQWNxdWlyZUFzc2VydGlv
bik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZEludmFsaWRhdGVB
c3NlcnRpb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRSZWxl
YXNlQXNzZXJ0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1Byb2Nlc3NBc3NlcnRpb24uY3BwOgorICAg
ICAgICAoV2ViS2l0OjpQcm9jZXNzQXNzZXJ0aW9uOjphY3F1aXJlQXN5bmMpOgorICAgICAgICAo
V2ViS2l0OjpQcm9jZXNzQXNzZXJ0aW9uOjphY3F1aXJlU3luYyk6CisgICAgICAgICogVUlQcm9j
ZXNzL1Byb2Nlc3NBc3NlcnRpb24uaDoKKyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc0Fzc2VydGlv
bjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc0Fzc2VydGlvbjo6c2V0UmVsZWFz
ZUhhbmRsZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Qcm9jZXNzVGhyb3R0bGVyLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6UHJvY2Vzc1Rocm90dGxlcjo6c2V0QXNzZXJ0aW9uVHlwZSk6CisgICAg
ICAgICogVUlQcm9jZXNzL1Byb2Nlc3NUaHJvdHRsZXJDbGllbnQuaDoKKyAgICAgICAgKFdlYktp
dDo6UHJvY2Vzc1Rocm90dGxlckNsaWVudDo6ZGlkQWNxdWlyZUFzc2VydGlvbik6CisgICAgICAg
IChXZWJLaXQ6OlByb2Nlc3NUaHJvdHRsZXJDbGllbnQ6OmRpZEludmFsaWRhdGVBc3NlcnRpb24p
OgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzVGhyb3R0bGVyQ2xpZW50OjpkaWRSZWxlYXNlQXNz
ZXJ0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1Byb2Nlc3NBc3NlcnRpb25JT1MubW06
CisgICAgICAgIChXZWJLaXQ6OlByb2Nlc3NBc3NlcnRpb246OmFjcXVpcmVBc3luYyk6CisgICAg
ICAgIChXZWJLaXQ6OlByb2Nlc3NBc3NlcnRpb246OmFjcXVpcmVTeW5jKToKKyAgICAgICAgKFdl
YktpdDo6UHJvY2Vzc0Fzc2VydGlvbjo6flByb2Nlc3NBc3NlcnRpb24pOgorCiAyMDIxLTA4LTA0
ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIENyYXNo
IGluIERpc3BsYXlMaW5rOjpub3RpZnlPYnNlcnZlcnNEaXNwbGF5V2FzUmVmcmVzaGVkKCkgb24g
bWFjT1MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5j
cHAKaW5kZXggYTM4YjJlMjdmMzk4MjFmMDRiMDc1NGQxODBiY2Y0NmNhYzE5NzU5ZS4uNjQ0YzA0
M2E5ZWJmYjIxY2NjNTc4ODk0NGI1NWFlZmQzNjdkMjA5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTIyNjMsNiArMjI2MywyMSBA
QCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpwcmVwYXJlVG9TdXNwZW5kKGJvb2wgaXNTdXNwZW5zaW9u
SW1taW5lbnQsIENvbXBsZXRpb25IYW5kbAogICAgIG1fc3RvcmFnZU1hbmFnZXJTZXQtPnN1c3Bl
bmQoW2NhbGxiYWNrQWdncmVnYXRvcl0geyB9KTsKIH0KIAordm9pZCBOZXR3b3JrUHJvY2Vzczo6
ZGlkQWNxdWlyZUFzc2VydGlvbihjb25zdCBTdHJpbmcmIGFzc2VydGlvbk5hbWUpCit7CisgICAg
UkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICIlcCAtIE5ldHdvcmtQcm9jZXNzOjpkaWRB
Y3F1aXJlQXNzZXJ0aW9uKCkgYXNzZXJ0aW9uTmFtZT0lcyAiLCB0aGlzLCBhc3NlcnRpb25OYW1l
LnV0ZjgoKS5kYXRhKCkpOworfQorCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpkaWRJbnZhbGlkYXRl
QXNzZXJ0aW9uKGNvbnN0IFN0cmluZyYgYXNzZXJ0aW9uTmFtZSkKK3sKKyAgICBSRUxFQVNFX0xP
RyhQcm9jZXNzU3VzcGVuc2lvbiwgIiVwIC0gTmV0d29ya1Byb2Nlc3M6OmRpZEludmFsaWRhdGVB
c3NlcnRpb24oKSBhc3NlcnRpb25OYW1lPSVzICIsIHRoaXMsIGFzc2VydGlvbk5hbWUudXRmOCgp
LmRhdGEoKSk7Cit9CisKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OmRpZFJlbGVhc2VBc3NlcnRpb24o
Y29uc3QgU3RyaW5nJiBhc3NlcnRpb25OYW1lKQoreworICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NT
dXNwZW5zaW9uLCAiJXAgLSBOZXR3b3JrUHJvY2Vzczo6ZGlkUmVsZWFzZUFzc2VydGlvbigpIGFz
c2VydGlvbk5hbWU9JXMgIiwgdGhpcywgYXNzZXJ0aW9uTmFtZS51dGY4KCkuZGF0YSgpKTsKK30K
Kwogdm9pZCBOZXR3b3JrUHJvY2Vzczo6YXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmQoKQog
ewogICAgIG1fZG93bmxvYWRNYW5hZ2VyLmFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKaW5kZXgg
OGE3MDg0YmNhYWM1MGEwYjkyNzU4MDJhOGY0YjViZTRkYWI1MDY0Yi4uNGZjYjg1MmRhZDRlOGFi
YmYyNzRjODlmNjg4NTgwNDgwM2E4ZDE1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MuaApAQCAtMTg3LDYgKzE4Nyw5IEBAIHB1YmxpYzoKICAgICB2
b2lkIHByZXBhcmVUb1N1c3BlbmQoYm9vbCBpc1N1c3BlbnNpb25JbW1pbmVudCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHByb2Nlc3NEaWRSZXN1bWUoKTsKICAgICB2
b2lkIHJlc3VtZSgpOworICAgIHZvaWQgZGlkQWNxdWlyZUFzc2VydGlvbihjb25zdCBTdHJpbmcm
IGFzc2VydGlvbk5hbWUpOworICAgIHZvaWQgZGlkSW52YWxpZGF0ZUFzc2VydGlvbihjb25zdCBT
dHJpbmcmIGFzc2VydGlvbk5hbWUpOworICAgIHZvaWQgZGlkUmVsZWFzZUFzc2VydGlvbihjb25z
dCBTdHJpbmcmIGFzc2VydGlvbk5hbWUpOwogCiAgICAgQ2FjaGVNb2RlbCBjYWNoZU1vZGVsKCkg
Y29uc3QgeyByZXR1cm4gbV9jYWNoZU1vZGVsOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDJmYzcx
OWUzNDdmYTAwNTA2NmFlMzk4NzEzMmZkZTgyOTI3OTJlMWMuLjg4ZjNmMjJhNzc4MjlkODRkNmRj
YzFiMjVmZThkYzU0OWRhZmYxOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtNzMsNiArNzMsOSBAQCBt
ZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgUHJvY2Vzc1dp
bGxTdXNwZW5kSW1taW5lbnRseUZvclRlc3RpbmdTeW5jKCkgLT4gKCkgU3luY2hyb25vdXMKICAg
ICBQcmVwYXJlVG9TdXNwZW5kKGJvb2wgaXNTdXNwZW5zaW9uSW1taW5lbnQpIC0+ICgpIEFzeW5j
CiAgICAgUHJvY2Vzc0RpZFJlc3VtZSgpCisgICAgRGlkQWNxdWlyZUFzc2VydGlvbihTdHJpbmcg
bmFtZSk7CisgICAgRGlkSW52YWxpZGF0ZUFzc2VydGlvbihTdHJpbmcgbmFtZSk7CisgICAgRGlk
UmVsZWFzZUFzc2VydGlvbihTdHJpbmcgbmFtZSk7CiAKICAgICBQcmVjb25uZWN0VG8oUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFn
ZVByb3h5SUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJRCwgVVJMIHVybCwgU3Ry
aW5nIHVzZXJBZ2VudCwgZW51bTp1aW50OF90IFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9s
aWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBlbnVtOmJvb2wgc3RkOjpvcHRpb25hbDxXZWJL
aXQ6Ok5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9t
YWluLCBlbnVtOmJvb2wgV2ViS2l0OjpMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCBsYXN0
TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCmluZGV4IDM3MWJiZGEw
ZTZiNDY2YzBlNjYyNmU1ZDUwNmZhY2M3YjI3ZWZkNGMuLmYzOGJmYjYxZTFiOWQyODFiZjI4OWM0
NWMxMGU3M2M3Y2EwNDJkNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAtMTI1NSw2ICsxMjU1LDI0IEBA
IHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2VuZFByb2Nlc3NEaWRSZXN1bWUoKQogICAgICAg
ICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6UHJvY2Vzc0RpZFJlc3VtZSgpLCAwKTsK
IH0KIAordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRBY3F1aXJlQXNzZXJ0aW9uKGNvbnN0
IFN0cmluZyYgYXNzZXJ0aW9uTmFtZSkKK3sKKyAgICBpZiAoY2FuU2VuZE1lc3NhZ2UoKSAmJiAo
YXNzZXJ0aW9uTmFtZSA9PSAiRm9yZWdyb3VuZCIgfHwgYXNzZXJ0aW9uTmFtZSA9PSAiQmFja2dy
b3VuZCIpKQorICAgICAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6RGlkQWNxdWly
ZUFzc2VydGlvbihhc3NlcnRpb25OYW1lKSwgMCk7Cit9CisKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQ
cm94eTo6ZGlkSW52YWxpZGF0ZUFzc2VydGlvbihjb25zdCBTdHJpbmcmIGFzc2VydGlvbk5hbWUp
Cit7CisgICAgaWYgKGNhblNlbmRNZXNzYWdlKCkgJiYgKGFzc2VydGlvbk5hbWUgPT0gIkZvcmVn
cm91bmQiIHx8IGFzc2VydGlvbk5hbWUgPT0gIkJhY2tncm91bmQiKSkKKyAgICAgICAgc2VuZChN
ZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkRpZEludmFsaWRhdGVBc3NlcnRpb24oYXNzZXJ0aW9u
TmFtZSksIDApOworfQorCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZFJlbGVhc2VBc3Nl
cnRpb24oY29uc3QgU3RyaW5nJiBhc3NlcnRpb25OYW1lKQoreworICAgIGlmIChjYW5TZW5kTWVz
c2FnZSgpICYmIChhc3NlcnRpb25OYW1lID09ICJGb3JlZ3JvdW5kIiB8fCBhc3NlcnRpb25OYW1l
ID09ICJCYWNrZ3JvdW5kIikpCisgICAgICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNz
OjpEaWRSZWxlYXNlQXNzZXJ0aW9uKGFzc2VydGlvbk5hbWUpLCAwKTsKK30KKwogdm9pZCBOZXR3
b3JrUHJvY2Vzc1Byb3h5OjpmbHVzaENvb2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgc2Vu
ZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6Rmx1c2hDb29raWVzKHNl
c3Npb25JRCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKaW5kZXggYjYw
OWYzNWY2YjU5YmMzZWZmMDQxNDIwNGI2MzM2ZDMwY2ExNDY1MS4uZjJhYTNmMGJiNmE0NDAyMmRj
MWQyOGI3NzM0Zjg4MmQ2N2I3YWFjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKQEAgLTIyNywxMiArMjI3LDYgQEAg
cHVibGljOgogICAgIAogICAgIHZvaWQgY3JlYXRlU3ltTGlua0ZvckZpbGVVcGdyYWRlKGNvbnN0
IFN0cmluZyYgaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5KTsKIAotICAgIC8vIFByb2Nlc3NUaHJv
dHRsZXJDbGllbnQKLSAgICB2b2lkIHNlbmRQcm9jZXNzRGlkUmVzdW1lKCkgZmluYWw7Ci0gICAg
QVNDSUlMaXRlcmFsIGNsaWVudE5hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiTmV0d29ya1By
b2Nlc3MiX3M7IH0KLSAgICAKLSAgICB2b2lkIHNlbmRQcm9jZXNzV2lsbFN1c3BlbmRJbW1pbmVu
dGx5Rm9yVGVzdGluZygpOwotCiAgICAgdm9pZCByZWdpc3RlclNjaGVtZUZvckxlZ2FjeUN1c3Rv
bVByb3RvY29sKGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgdW5yZWdpc3RlclNjaGVtZUZvckxl
Z2FjeUN1c3RvbVByb3RvY29sKGNvbnN0IFN0cmluZyYpOwogCkBAIC0yNTQsNyArMjQ4LDE1IEBA
IHB1YmxpYzoKICNlbmRpZgogCiAgICAgLy8gUHJvY2Vzc1Rocm90dGxlckNsaWVudAorICAgIHZv
aWQgc2VuZFByb2Nlc3NEaWRSZXN1bWUoKSBmaW5hbDsKKyAgICBBU0NJSUxpdGVyYWwgY2xpZW50
TmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJOZXR3b3JrUHJvY2VzcyJfczsgfQogICAgIHZv
aWQgc2VuZFByZXBhcmVUb1N1c3BlbmQoSXNTdXNwZW5zaW9uSW1taW5lbnQsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJikgZmluYWw7CisgICAgdm9pZCBkaWRBY3F1aXJlQXNzZXJ0aW9uKGNv
bnN0IFN0cmluZyYgYXNzZXJ0aW9uTmFtZSkgZmluYWw7CisgICAgdm9pZCBkaWRJbnZhbGlkYXRl
QXNzZXJ0aW9uKGNvbnN0IFN0cmluZyYgYXNzZXJ0aW9uTmFtZSkgZmluYWw7CisgICAgdm9pZCBk
aWRSZWxlYXNlQXNzZXJ0aW9uKGNvbnN0IFN0cmluZyYgYXNzZXJ0aW9uTmFtZSkgZmluYWw7CisK
KyAgICB2b2lkIHNlbmRQcm9jZXNzV2lsbFN1c3BlbmRJbW1pbmVudGx5Rm9yVGVzdGluZygpOwor
CiAgICAgdm9pZCB1cGRhdGVCdW5kbGVJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBjbGVhckJ1bmRsZUlkZW50aWZpZXIoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUHJvY2Vzc0Fzc2VydGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Q
cm9jZXNzQXNzZXJ0aW9uLmNwcAppbmRleCBkMWI5ZGUxYWU1YWEyM2E1NjgxZjdlMmI3Y2JjZDgw
NjE3OWMwNTdjLi44YjM4NDRiM2ZlOTY2YjgxNTA1NTViMTYzZDY2MmVkNzg1YmMzYzBiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm9jZXNzQXNzZXJ0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm9jZXNzQXNzZXJ0aW9uLmNwcApAQCAtNDcsMTQg
KzQ3LDE3IEBAIGJvb2wgUHJvY2Vzc0Fzc2VydGlvbjo6aXNWYWxpZCgpIGNvbnN0CiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLXZvaWQgUHJvY2Vzc0Fzc2VydGlvbjo6YWNxdWlyZUFzeW5jKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgUHJvY2Vzc0Fz
c2VydGlvbjo6YWNxdWlyZUFzeW5jKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKGNvbXBsZXRpb25IYW5kbGVyKQotICAgICAgICBS
dW5Mb29wOjptYWluKCkuZGlzcGF0Y2goV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAg
ICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcildIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHRy
dWUpOworICAgICAgICB9KTsKIH0KIAotdm9pZCBQcm9jZXNzQXNzZXJ0aW9uOjphY3F1aXJlU3lu
YygpCitib29sIFByb2Nlc3NBc3NlcnRpb246OmFjcXVpcmVTeW5jKCkKIHsKKyAgICByZXR1cm4g
dHJ1ZTsKIH0KIAogUHJvY2Vzc0FuZFVJQXNzZXJ0aW9uOjpQcm9jZXNzQW5kVUlBc3NlcnRpb24o
UHJvY2Vzc0lEIHBpZCwgY29uc3QgU3RyaW5nJiByZWFzb24sIFByb2Nlc3NBc3NlcnRpb25UeXBl
IGFzc2VydGlvblR5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm9j
ZXNzQXNzZXJ0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm9jZXNzQXNzZXJ0aW9u
LmgKaW5kZXggYThlMTdlNzZiYjcxOWZmZGU3YjdiYzcwNGZjNTNmNmNmMmRmMmIxNS4uY2QwN2Yz
YzIwNjJmNWRhZTdhMWFiNGNkZjg0Y2VmNjIwZTU5NWE0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUHJvY2Vzc0Fzc2VydGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1Byb2Nlc3NBc3NlcnRpb24uaApAQCAtNTgsMTUgKzU4LDE1IEBAIGNsYXNzIFByb2Nl
c3NBc3NlcnRpb24gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8UHJvY2Vzc0Fzc2VydGlv
bj4sIHB1YmxpYyBDCiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAg
ZW51bSBjbGFzcyBNb2RlIDogYm9vbCB7IFN5bmMsIEFzeW5jIH07Ci0gICAgc3RhdGljIFJlZjxQ
cm9jZXNzQXNzZXJ0aW9uPiBjcmVhdGUoUHJvY2Vzc0lEIHBpZCwgY29uc3QgU3RyaW5nJiByZWFz
b24sIFByb2Nlc3NBc3NlcnRpb25UeXBlIHR5cGUsIE1vZGUgbW9kZSA9IE1vZGU6OkFzeW5jLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgYWNxdWlzaXNpb25IYW5kbGVyID0gbnVsbHB0cikK
KyAgICBzdGF0aWMgUmVmPFByb2Nlc3NBc3NlcnRpb24+IGNyZWF0ZShQcm9jZXNzSUQgcGlkLCBj
b25zdCBTdHJpbmcmIHJlYXNvbiwgUHJvY2Vzc0Fzc2VydGlvblR5cGUgdHlwZSwgTW9kZSBtb2Rl
ID0gTW9kZTo6QXN5bmMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgYWNxdWlzaXNp
b25IYW5kbGVyID0gbnVsbHB0cikKICAgICB7CiAgICAgICAgIGF1dG8gYXNzZXJ0aW9uID0gYWRv
cHRSZWYoKm5ldyBQcm9jZXNzQXNzZXJ0aW9uKHBpZCwgcmVhc29uLCB0eXBlKSk7CiAgICAgICAg
IGlmIChtb2RlID09IE1vZGU6OkFzeW5jKQogICAgICAgICAgICAgYXNzZXJ0aW9uLT5hY3F1aXJl
QXN5bmMoV1RGTW92ZShhY3F1aXNpc2lvbkhhbmRsZXIpKTsKICAgICAgICAgZWxzZSB7Ci0gICAg
ICAgICAgICBhc3NlcnRpb24tPmFjcXVpcmVTeW5jKCk7CisgICAgICAgICAgICBib29sIGFjcXVp
cmVkID0gYXNzZXJ0aW9uLT5hY3F1aXJlU3luYygpOwogICAgICAgICAgICAgaWYgKGFjcXVpc2lz
aW9uSGFuZGxlcikKLSAgICAgICAgICAgICAgICBhY3F1aXNpc2lvbkhhbmRsZXIoKTsKKyAgICAg
ICAgICAgICAgICBhY3F1aXNpc2lvbkhhbmRsZXIoYWNxdWlyZWQpOwogICAgICAgICB9CiAgICAg
ICAgIHJldHVybiBhc3NlcnRpb247CiAgICAgfQpAQCAtNzQsNiArNzQsNyBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIHNldFByZXBhcmVGb3JJbnZhbGlkYXRpb25IYW5kbGVyKEZ1bmN0aW9uPHZvaWQo
KT4mJiBoYW5kbGVyKSB7IG1fcHJlcGFyZUZvckludmFsaWRhdGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGhhbmRsZXIpOyB9CiAgICAgdm9pZCBzZXRJbnZhbGlkYXRpb25IYW5kbGVyKEZ1bmN0aW9uPHZv
aWQoKT4mJiBoYW5kbGVyKSB7IG1faW52YWxpZGF0aW9uSGFuZGxlciA9IFdURk1vdmUoaGFuZGxl
cik7IH0KKyAgICB2b2lkIHNldFJlbGVhc2VIYW5kbGVyKEZ1bmN0aW9uPHZvaWQoKT4mJiBoYW5k
bGVyKSB7IG1fcmVsZWFzZUhhbmRsZXIgPSBXVEZNb3ZlKGhhbmRsZXIpOyB9CiAKICAgICBQcm9j
ZXNzQXNzZXJ0aW9uVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV9hc3NlcnRpb25UeXBlOyB9
CiAgICAgUHJvY2Vzc0lEIHBpZCgpIGNvbnN0IHsgcmV0dXJuIG1fcGlkOyB9CkBAIC04Myw4ICs4
NCw4IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBQcm9jZXNzQXNzZXJ0aW9uKFByb2Nlc3NJ
RCwgY29uc3QgU3RyaW5nJiByZWFzb24sIFByb2Nlc3NBc3NlcnRpb25UeXBlKTsKIAotICAgIHZv
aWQgYWNxdWlyZUFzeW5jKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCBh
Y3F1aXJlU3luYygpOworICAgIHZvaWQgYWNxdWlyZUFzeW5jKENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCk+JiYpOworICAgIGJvb2wgYWNxdWlyZVN5bmMoKTsKIAogI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCiAgICAgdm9pZCBwcm9jZXNzQXNzZXJ0aW9uV2lsbEJlSW52YWxpZGF0ZWQoKTsK
QEAgLTEwMiwxOSArMTAzLDIwIEBAIHByaXZhdGU6CiAjZW5kaWYKICAgICBGdW5jdGlvbjx2b2lk
KCk+IG1fcHJlcGFyZUZvckludmFsaWRhdGlvbkhhbmRsZXI7CiAgICAgRnVuY3Rpb248dm9pZCgp
PiBtX2ludmFsaWRhdGlvbkhhbmRsZXI7CisgICAgRnVuY3Rpb248dm9pZCgpPiBtX3JlbGVhc2VI
YW5kbGVyOwogfTsKIAogY2xhc3MgUHJvY2Vzc0FuZFVJQXNzZXJ0aW9uIGZpbmFsIDogcHVibGlj
IFByb2Nlc3NBc3NlcnRpb24gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8UHJvY2Vzc0FuZFVJ
QXNzZXJ0aW9uPiBjcmVhdGUoUHJvY2Vzc0lEIHBpZCwgY29uc3QgU3RyaW5nJiByZWFzb24sIFBy
b2Nlc3NBc3NlcnRpb25UeXBlIHR5cGUsIE1vZGUgbW9kZSA9IE1vZGU6OkFzeW5jLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYgYWNxdWlzaXNpb25IYW5kbGVyID0gbnVsbHB0cikKKyAgICBz
dGF0aWMgUmVmPFByb2Nlc3NBbmRVSUFzc2VydGlvbj4gY3JlYXRlKFByb2Nlc3NJRCBwaWQsIGNv
bnN0IFN0cmluZyYgcmVhc29uLCBQcm9jZXNzQXNzZXJ0aW9uVHlwZSB0eXBlLCBNb2RlIG1vZGUg
PSBNb2RlOjpBc3luYywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBhY3F1aXNpc2lv
bkhhbmRsZXIgPSBudWxscHRyKQogICAgIHsKICAgICAgICAgYXV0byBhc3NlcnRpb24gPSBhZG9w
dFJlZigqbmV3IFByb2Nlc3NBbmRVSUFzc2VydGlvbihwaWQsIHJlYXNvbiwgdHlwZSkpOwogICAg
ICAgICBpZiAobW9kZSA9PSBNb2RlOjpBc3luYykKICAgICAgICAgICAgIGFzc2VydGlvbi0+YWNx
dWlyZUFzeW5jKFdURk1vdmUoYWNxdWlzaXNpb25IYW5kbGVyKSk7CiAgICAgICAgIGVsc2Ugewot
ICAgICAgICAgICAgYXNzZXJ0aW9uLT5hY3F1aXJlU3luYygpOworICAgICAgICAgICAgYm9vbCBh
Y3F1aXJlZCA9IGFzc2VydGlvbi0+YWNxdWlyZVN5bmMoKTsKICAgICAgICAgICAgIGlmIChhY3F1
aXNpc2lvbkhhbmRsZXIpCi0gICAgICAgICAgICAgICAgYWNxdWlzaXNpb25IYW5kbGVyKCk7Cisg
ICAgICAgICAgICAgICAgYWNxdWlzaXNpb25IYW5kbGVyKGFjcXVpcmVkKTsKICAgICAgICAgfQog
ICAgICAgICByZXR1cm4gYXNzZXJ0aW9uOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1Byb2Nlc3NUaHJvdHRsZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvUHJvY2Vzc1Rocm90dGxlci5jcHAKaW5kZXggNzJjZTllZjc2MmQ5OTdjNmE3OGQxYzU0OWJk
OGRiZTUxY2NiMmQ2OS4uOGNiMjVkYjFkZWU4YzlhNGZmMDBhYzA1YmFjZjQ2Njc4OWUwZTk4YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvY2Vzc1Rocm90dGxlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvY2Vzc1Rocm90dGxlci5jcHAKQEAgLTEz
MSwyMCArMTMxLDM4IEBAIHZvaWQgUHJvY2Vzc1Rocm90dGxlcjo6c2V0QXNzZXJ0aW9uVHlwZShQ
cm9jZXNzQXNzZXJ0aW9uVHlwZSBuZXdUeXBlKQogCiAgICAgLy8gS2VlcCB0aGUgcHJldmlvdXMg
YXNzZXJ0aW9uIGFjdGl2ZSB1bnRpbCB0aGUgbmV3IGFzc2VydGlvbiBpcyB0YWtlbiBhc3luY2hy
b25vdXNseS4KICAgICBhdXRvIHByZXZpb3VzQXNzZXJ0aW9uID0gc3RkOjpleGNoYW5nZShtX2Fz
c2VydGlvbiwgbnVsbHB0cik7CisgICAgYXV0byBuYW1lID0gYXNzZXJ0aW9uTmFtZShuZXdUeXBl
KTsKKyAgICBhdXRvIGFjcXVpc2l0aW9uSGFuZGxlciA9IFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VX
ZWFrUHRyKCp0aGlzKSwgcHJldmlvdXNBc3NlcnRpb24gPSBXVEZNb3ZlKHByZXZpb3VzQXNzZXJ0
aW9uKSwgbmFtZV0oYm9vbCBhY3F1aXJlZCkgeworICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAg
ICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlmIChhY3F1aXJlZCkKKyAgICAgICAgICAgIG1f
cHJvY2Vzcy5kaWRBY3F1aXJlQXNzZXJ0aW9uKG5hbWUpOworICAgIH07CiAgICAgaWYgKG1fc2hv
dWxkVGFrZVVJQmFja2dyb3VuZEFzc2VydGlvbikgewotICAgICAgICBhdXRvIGFzc2VydGlvbiA9
IFByb2Nlc3NBbmRVSUFzc2VydGlvbjo6Y3JlYXRlKG1fcHJvY2Vzc0lkZW50aWZpZXIsIGFzc2Vy
dGlvbk5hbWUobmV3VHlwZSksIG5ld1R5cGUsIFByb2Nlc3NBc3NlcnRpb246Ok1vZGU6OkFzeW5j
LCBbcHJldmlvdXNBc3NlcnRpb24gPSBXVEZNb3ZlKHByZXZpb3VzQXNzZXJ0aW9uKV0geyB9KTsK
KyAgICAgICAgYXV0byBhc3NlcnRpb24gPSBQcm9jZXNzQW5kVUlBc3NlcnRpb246OmNyZWF0ZSht
X3Byb2Nlc3NJZGVudGlmaWVyLCBuYW1lLCBuZXdUeXBlLCBQcm9jZXNzQXNzZXJ0aW9uOjpNb2Rl
OjpBc3luYywgV1RGTW92ZShhY3F1aXNpdGlvbkhhbmRsZXIpKTsKICAgICAgICAgYXNzZXJ0aW9u
LT5zZXRVSUFzc2VydGlvbkV4cGlyYXRpb25IYW5kbGVyKFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRy
KCp0aGlzKV0gewogICAgICAgICAgICAgaWYgKHdlYWtUaGlzKQogICAgICAgICAgICAgICAgIHdl
YWtUaGlzLT51aUFzc2VydGlvbldpbGxFeHBpcmVJbW1pbmVudGx5KCk7CiAgICAgICAgIH0pOwog
ICAgICAgICBtX2Fzc2VydGlvbiA9IFdURk1vdmUoYXNzZXJ0aW9uKTsKICAgICB9IGVsc2UKLSAg
ICAgICAgbV9hc3NlcnRpb24gPSBQcm9jZXNzQXNzZXJ0aW9uOjpjcmVhdGUobV9wcm9jZXNzSWRl
bnRpZmllciwgYXNzZXJ0aW9uTmFtZShuZXdUeXBlKSwgbmV3VHlwZSwgUHJvY2Vzc0Fzc2VydGlv
bjo6TW9kZTo6QXN5bmMsIFtwcmV2aW91c0Fzc2VydGlvbiA9IFdURk1vdmUocHJldmlvdXNBc3Nl
cnRpb24pXSB7IH0pOworICAgICAgICBtX2Fzc2VydGlvbiA9IFByb2Nlc3NBc3NlcnRpb246OmNy
ZWF0ZShtX3Byb2Nlc3NJZGVudGlmaWVyLCBuYW1lLCBuZXdUeXBlLCBQcm9jZXNzQXNzZXJ0aW9u
OjpNb2RlOjpBc3luYywgV1RGTW92ZShhY3F1aXNpdGlvbkhhbmRsZXIpKTsKIAotICAgIG1fYXNz
ZXJ0aW9uLT5zZXRJbnZhbGlkYXRpb25IYW5kbGVyKFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0
aGlzKV0gewotICAgICAgICBpZiAod2Vha1RoaXMpCi0gICAgICAgICAgICB3ZWFrVGhpcy0+YXNz
ZXJ0aW9uV2FzSW52YWxpZGF0ZWQoKTsKKyAgICBtX2Fzc2VydGlvbi0+c2V0SW52YWxpZGF0aW9u
SGFuZGxlcihbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIG5hbWVdIHsKKyAg
ICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgCisgICAg
ICAgIGFzc2VydGlvbldhc0ludmFsaWRhdGVkKCk7CisgICAgICAgIG1fcHJvY2Vzcy5kaWRJbnZh
bGlkYXRlQXNzZXJ0aW9uKG5hbWUpOwogICAgIH0pOworICAgIG1fYXNzZXJ0aW9uLT5zZXRSZWxl
YXNlSGFuZGxlcihbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIG5hbWVdIHsK
KyAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBt
X3Byb2Nlc3MuZGlkUmVsZWFzZUFzc2VydGlvbihuYW1lKTsKKyAgICB9KTsKKwogICAgIG1fcHJv
Y2Vzcy5kaWRTZXRBc3NlcnRpb25UeXBlKG5ld1R5cGUpOwogfQogICAgIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvY2Vzc1Rocm90dGxlckNsaWVudC5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvUHJvY2Vzc1Rocm90dGxlckNsaWVudC5oCmluZGV4IDExOGJmMGRk
MjM1ODIyNGMyZWM3ZGY5Yjk2NTFlOWYxMzc4ZTZlMDAuLmE2ZmFhYmRmZWNmYmZlODhkNjA3NTdj
ZTljYzMwZTRkZjJmODI1MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1By
b2Nlc3NUaHJvdHRsZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm9j
ZXNzVGhyb3R0bGVyQ2xpZW50LmgKQEAgLTQwLDYgKzQwLDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgc2VuZFByb2Nlc3NEaWRSZXN1bWUoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRp
ZFNldEFzc2VydGlvblR5cGUoUHJvY2Vzc0Fzc2VydGlvblR5cGUpIHsgfTsKICAgICB2aXJ0dWFs
IEFTQ0lJTGl0ZXJhbCBjbGllbnROYW1lKCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCB2b2lk
IGRpZEFjcXVpcmVBc3NlcnRpb24oY29uc3QgU3RyaW5nJikgeyB9OworICAgIHZpcnR1YWwgdm9p
ZCBkaWRJbnZhbGlkYXRlQXNzZXJ0aW9uKGNvbnN0IFN0cmluZyYpIHsgfTsKKyAgICB2aXJ0dWFs
IHZvaWQgZGlkUmVsZWFzZUFzc2VydGlvbihjb25zdCBTdHJpbmcmKSB7IH07CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9Qcm9jZXNzQXNzZXJ0aW9uSU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1By
b2Nlc3NBc3NlcnRpb25JT1MubW0KaW5kZXggZTFkNzFiN2FhZDdhYzdkYTYwYjdiMTViYmI2ODc4
OGMzOTJlYTEzMi4uNmVjN2E4MDIxNmZiYTk4Zjc2NmI5NjA5ODgxMDY1NzgyZDgyOTcwZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1Byb2Nlc3NBc3NlcnRpb25JT1Mu
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1Byb2Nlc3NBc3NlcnRpb25JT1Mu
bW0KQEAgLTM1MywxOSArMzUzLDE5IEBAIFByb2Nlc3NBc3NlcnRpb246OlByb2Nlc3NBc3NlcnRp
b24ocGlkX3QgcGlkLCBjb25zdCBTdHJpbmcmIHJlYXNvbiwgUHJvY2Vzc0Fzc2VyCiAgICAgfTsK
IH0KIAotdm9pZCBQcm9jZXNzQXNzZXJ0aW9uOjphY3F1aXJlQXN5bmMoQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBQcm9jZXNzQXNzZXJ0aW9uOjph
Y3F1aXJlQXN5bmMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKIHsKICAgICBBU1NFUlQoaXNNYWluUnVuTG9vcCgpKTsKICAgICBhc3NlcnRpb25zV29y
a1F1ZXVlKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKLSAg
ICAgICAgcHJvdGVjdGVkVGhpcy0+YWNxdWlyZVN5bmMoKTsKLSAgICAgICAgUnVuTG9vcDo6bWFp
bigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgY29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsK
KyAgICAgICAgYm9vbCBhY3F1aXJlZCA9IHByb3RlY3RlZFRoaXMtPmFjcXVpcmVTeW5jKCk7Cisg
ICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUo
cHJvdGVjdGVkVGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlciksIGFjcXVpcmVkXSgpIG11dGFibGUgewogICAgICAgICAgICAgaWYgKGNvbXBsZXRpb25I
YW5kbGVyKQotICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgICAgICAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoYWNxdWlyZWQpOwogICAgICAgICB9KTsKICAgICB9KTsK
IH0KIAotdm9pZCBQcm9jZXNzQXNzZXJ0aW9uOjphY3F1aXJlU3luYygpCitib29sIFByb2Nlc3NB
c3NlcnRpb246OmFjcXVpcmVTeW5jKCkKIHsKICAgICBOU0Vycm9yICphY3F1aXNpdGlvbkVycm9y
ID0gbmlsOwogICAgIGlmICghW21fcmJzQXNzZXJ0aW9uIGFjcXVpcmVXaXRoRXJyb3I6JmFjcXVp
c2l0aW9uRXJyb3JdKSB7CkBAIC0zNzQsMjEgKzM3NCwyOCBAQCB2b2lkIFByb2Nlc3NBc3NlcnRp
b246OmFjcXVpcmVTeW5jKCkKICAgICAgICAgICAgIGlmICh3ZWFrVGhpcykKICAgICAgICAgICAg
ICAgICB3ZWFrVGhpcy0+cHJvY2Vzc0Fzc2VydGlvbldhc0ludmFsaWRhdGVkKCk7CiAgICAgICAg
IH0pOwotICAgIH0gZWxzZQotICAgICAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwg
IiVwIC0gUHJvY2Vzc0Fzc2VydGlvbjogU3VjY2Vzc2Z1bGx5IHRvb2sgUkJTIGFzc2VydGlvbiAn
JXtwdWJsaWN9cycgZm9yIHByb2Nlc3Mgd2l0aCBQSUQ9JWQiLCB0aGlzLCBtX3JlYXNvbi51dGY4
KCkuZGF0YSgpLCBtX3BpZCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBS
RUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgIiVwIC0gUHJvY2Vzc0Fzc2VydGlvbjogU3Vj
Y2Vzc2Z1bGx5IHRvb2sgUkJTIGFzc2VydGlvbiAnJXtwdWJsaWN9cycgZm9yIHByb2Nlc3Mgd2l0
aCBQSUQ9JWQiLCB0aGlzLCBtX3JlYXNvbi51dGY4KCkuZGF0YSgpLCBtX3BpZCk7CisgICAgcmV0
dXJuIHRydWU7CiB9CiAKIFByb2Nlc3NBc3NlcnRpb246On5Qcm9jZXNzQXNzZXJ0aW9uKCkKIHsK
ICAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgIiVwIC0gflByb2Nlc3NBc3NlcnRp
b246IFJlbGVhc2luZyBwcm9jZXNzIGFzc2VydGlvbiAnJXtwdWJsaWN9cycgZm9yIHByb2Nlc3Mg
d2l0aCBQSUQ9JWQiLCB0aGlzLCBtX3JlYXNvbi51dGY4KCkuZGF0YSgpLCBtX3BpZCk7CiAKLSAg
ICBpZiAobV9yYnNBc3NlcnRpb24pIHsKLSAgICAgICAgbV9kZWxlZ2F0ZS5nZXQoKS5pbnZhbGlk
YXRpb25DYWxsYmFjayA9IG5pbDsKLSAgICAgICAgbV9kZWxlZ2F0ZS5nZXQoKS5wcmVwYXJlRm9y
SW52YWxpZGF0aW9uQ2FsbGJhY2sgPSBuaWw7Ci0gICAgICAgIFttX3Jic0Fzc2VydGlvbiByZW1v
dmVPYnNlcnZlcjptX2RlbGVnYXRlLmdldCgpXTsKLSAgICAgICAgbV9kZWxlZ2F0ZSA9IG5pbDsK
LSAgICAgICAgW21fcmJzQXNzZXJ0aW9uIGludmFsaWRhdGVdOwotICAgIH0KKyAgICBpZiAoIW1f
cmJzQXNzZXJ0aW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoW21fcmJzQXNzZXJ0aW9u
IGlzVmFsaWRdICYmIG1fcmVsZWFzZUhhbmRsZXIpCisgICAgICAgIG1fcmVsZWFzZUhhbmRsZXIo
KTsKKworICAgIG1fZGVsZWdhdGUuZ2V0KCkuaW52YWxpZGF0aW9uQ2FsbGJhY2sgPSBuaWw7Cisg
ICAgbV9kZWxlZ2F0ZS5nZXQoKS5wcmVwYXJlRm9ySW52YWxpZGF0aW9uQ2FsbGJhY2sgPSBuaWw7
CisgICAgW21fcmJzQXNzZXJ0aW9uIHJlbW92ZU9ic2VydmVyOm1fZGVsZWdhdGUuZ2V0KCldOwor
ICAgIG1fZGVsZWdhdGUgPSBuaWw7CisgICAgW21fcmJzQXNzZXJ0aW9uIGludmFsaWRhdGVdOwog
fQogCiB2b2lkIFByb2Nlc3NBc3NlcnRpb246OnByb2Nlc3NBc3NlcnRpb25XaWxsQmVJbnZhbGlk
YXRlZCgpCg==
</data>
<flag name="commit-queue"
          id="457606"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434943</attachid>
            <date>2021-08-04 15:31:19 -0700</date>
            <delta_ts>2021-08-05 13:14:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228797-20210804153107.patch</filename>
            <type>text/plain</type>
            <size>18771</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwNjY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGU3NjhkNWEyNDBjNDRhOTY2
Nzc0YTUwZDA0ZTk3NTY4OTFjMWE4ODAuLjMzMjFiNGMzNGVmNWQ4ODIxYzRlMWI2MTM4YmE3ZTY5
NjczODM5ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDIgQEAKKzIwMjEtMDgtMDQgIFNpaHVpIExp
dSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIG1vcmUgbG9nZ2luZyBmb3Ig
cHJvY2VzcyBhc3NlcnRpb24gaW4gbmV0d29yayBwcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjg3OTcKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBY2NvcmRpbmcgdG8gY3Jhc2ggbG9ncyBpbiBy
ZGFyOi8vNzk3ODcxMjMsIG5ldHdvcmsgcHJvY2VzcyBjYW4gZ2V0IHN1c3BlbmRlZCBzb29uIGFm
dGVyIHJlY2VpdmluZyAKKyAgICAgICAgcHJvY2Vzc0RpZFJlc3VtZSBtZXNzYWdlLiBUbyBiZXR0
ZXIgdW5kZXJzdGFuZCB0aGUgY2F1c2UgaW4gZnV0dXJlIGNyYXNoIGxvZ3MsIHdlIHBhc3MgdGhl
IGFzc2VydGlvbiBzdGF0ZQorICAgICAgICBpbmZvcm1hdGlvbiBmcm9tIFVJIHByb2Nlc3MgdG8g
bmV0d29yayBwcm9jZXNzIGFuZCBsb2cgaXQuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpkaWRB
Y3F1aXJlQXNzZXJ0aW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmRpZElu
dmFsaWRhdGVBc3NlcnRpb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZGlk
UmVsZWFzZUFzc2VydGlvbik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5p
bjoKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlkQWNxdWlyZUFzc2VydGlv
bik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZEludmFsaWRhdGVB
c3NlcnRpb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRSZWxl
YXNlQXNzZXJ0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1Byb2Nlc3NBc3NlcnRpb24uY3BwOgorICAg
ICAgICAoV2ViS2l0OjpQcm9jZXNzQXNzZXJ0aW9uOjphY3F1aXJlQXN5bmMpOgorICAgICAgICAo
V2ViS2l0OjpQcm9jZXNzQXNzZXJ0aW9uOjphY3F1aXJlU3luYyk6CisgICAgICAgICogVUlQcm9j
ZXNzL1Byb2Nlc3NBc3NlcnRpb24uaDoKKyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc0Fzc2VydGlv
bjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc0Fzc2VydGlvbjo6c2V0UmVsZWFz
ZUhhbmRsZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Qcm9jZXNzVGhyb3R0bGVyLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6UHJvY2Vzc1Rocm90dGxlcjo6c2V0QXNzZXJ0aW9uVHlwZSk6CisgICAg
ICAgICogVUlQcm9jZXNzL1Byb2Nlc3NUaHJvdHRsZXJDbGllbnQuaDoKKyAgICAgICAgKFdlYktp
dDo6UHJvY2Vzc1Rocm90dGxlckNsaWVudDo6ZGlkQWNxdWlyZUFzc2VydGlvbik6CisgICAgICAg
IChXZWJLaXQ6OlByb2Nlc3NUaHJvdHRsZXJDbGllbnQ6OmRpZEludmFsaWRhdGVBc3NlcnRpb24p
OgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzVGhyb3R0bGVyQ2xpZW50OjpkaWRSZWxlYXNlQXNz
ZXJ0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1Byb2Nlc3NBc3NlcnRpb25JT1MubW06
CisgICAgICAgIChXZWJLaXQ6OlByb2Nlc3NBc3NlcnRpb246OmFjcXVpcmVBc3luYyk6CisgICAg
ICAgIChXZWJLaXQ6OlByb2Nlc3NBc3NlcnRpb246OmFjcXVpcmVTeW5jKToKKyAgICAgICAgKFdl
YktpdDo6UHJvY2Vzc0Fzc2VydGlvbjo6flByb2Nlc3NBc3NlcnRpb24pOgorCiAyMDIxLTA4LTA0
ICBQZW5nIExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CiAKICAgICAgICAgW0NhdGFsaW5hXVtH
UFVQXSBTb21lIEFQSSB0ZXN0cyBmYWlsIGFmdGVyIEdQVSBQcm9jZXNzIGZlYXR1cmVzIGFyZSBl
bmFibGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
Y3BwCmluZGV4IGEzOGIyZTI3ZjM5ODIxZjA0YjA3NTRkMTgwYmNmNDZjYWMxOTc1OWUuLjY0NGMw
NDNhOWViZmIyMWNjYzU3ODg5NDRiNTVhZWZkMzY3ZDIwOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC0yMjYzLDYgKzIyNjMsMjEg
QEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cHJlcGFyZVRvU3VzcGVuZChib29sIGlzU3VzcGVuc2lv
bkltbWluZW50LCBDb21wbGV0aW9uSGFuZGwKICAgICBtX3N0b3JhZ2VNYW5hZ2VyU2V0LT5zdXNw
ZW5kKFtjYWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSk7CiB9CiAKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6
OmRpZEFjcXVpcmVBc3NlcnRpb24oY29uc3QgU3RyaW5nJiBhc3NlcnRpb25OYW1lKQoreworICAg
IFJFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAgLSBOZXR3b3JrUHJvY2Vzczo6ZGlk
QWNxdWlyZUFzc2VydGlvbigpIGFzc2VydGlvbk5hbWU9JXMgIiwgdGhpcywgYXNzZXJ0aW9uTmFt
ZS51dGY4KCkuZGF0YSgpKTsKK30KKwordm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGlkSW52YWxpZGF0
ZUFzc2VydGlvbihjb25zdCBTdHJpbmcmIGFzc2VydGlvbk5hbWUpCit7CisgICAgUkVMRUFTRV9M
T0coUHJvY2Vzc1N1c3BlbnNpb24sICIlcCAtIE5ldHdvcmtQcm9jZXNzOjpkaWRJbnZhbGlkYXRl
QXNzZXJ0aW9uKCkgYXNzZXJ0aW9uTmFtZT0lcyAiLCB0aGlzLCBhc3NlcnRpb25OYW1lLnV0Zjgo
KS5kYXRhKCkpOworfQorCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpkaWRSZWxlYXNlQXNzZXJ0aW9u
KGNvbnN0IFN0cmluZyYgYXNzZXJ0aW9uTmFtZSkKK3sKKyAgICBSRUxFQVNFX0xPRyhQcm9jZXNz
U3VzcGVuc2lvbiwgIiVwIC0gTmV0d29ya1Byb2Nlc3M6OmRpZFJlbGVhc2VBc3NlcnRpb24oKSBh
c3NlcnRpb25OYW1lPSVzICIsIHRoaXMsIGFzc2VydGlvbk5hbWUudXRmOCgpLmRhdGEoKSk7Cit9
CisKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKCkK
IHsKICAgICBtX2Rvd25sb2FkTWFuYWdlci5hcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCmluZGV4
IDhhNzA4NGJjYWFjNTBhMGI5Mjc1ODAyYThmNGI1YmU0ZGFiNTA2NGIuLjRmY2I4NTJkYWQ0ZThh
YmJmMjc0Yzg5ZjY4ODU4MDQ4MDNhOGQxNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTE4Nyw2ICsxODcsOSBAQCBwdWJsaWM6CiAgICAg
dm9pZCBwcmVwYXJlVG9TdXNwZW5kKGJvb2wgaXNTdXNwZW5zaW9uSW1taW5lbnQsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBwcm9jZXNzRGlkUmVzdW1lKCk7CiAgICAg
dm9pZCByZXN1bWUoKTsKKyAgICB2b2lkIGRpZEFjcXVpcmVBc3NlcnRpb24oY29uc3QgU3RyaW5n
JiBhc3NlcnRpb25OYW1lKTsKKyAgICB2b2lkIGRpZEludmFsaWRhdGVBc3NlcnRpb24oY29uc3Qg
U3RyaW5nJiBhc3NlcnRpb25OYW1lKTsKKyAgICB2b2lkIGRpZFJlbGVhc2VBc3NlcnRpb24oY29u
c3QgU3RyaW5nJiBhc3NlcnRpb25OYW1lKTsKIAogICAgIENhY2hlTW9kZWwgY2FjaGVNb2RlbCgp
IGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVNb2RlbDsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCAyZmM3
MTllMzQ3ZmEwMDUwNjZhZTM5ODcxMzJmZGU4MjkyNzkyZTFjLi44OGYzZjIyYTc3ODI5ZDg0ZDZk
Y2MxYjI1ZmU4ZGM1NDlkYWZmMTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTczLDYgKzczLDkgQEAg
bWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIFByb2Nlc3NX
aWxsU3VzcGVuZEltbWluZW50bHlGb3JUZXN0aW5nU3luYygpIC0+ICgpIFN5bmNocm9ub3VzCiAg
ICAgUHJlcGFyZVRvU3VzcGVuZChib29sIGlzU3VzcGVuc2lvbkltbWluZW50KSAtPiAoKSBBc3lu
YwogICAgIFByb2Nlc3NEaWRSZXN1bWUoKQorICAgIERpZEFjcXVpcmVBc3NlcnRpb24oU3RyaW5n
IG5hbWUpOworICAgIERpZEludmFsaWRhdGVBc3NlcnRpb24oU3RyaW5nIG5hbWUpOworICAgIERp
ZFJlbGVhc2VBc3NlcnRpb24oU3RyaW5nIG5hbWUpOwogCiAgICAgUHJlY29ubmVjdFRvKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViS2l0OjpXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBh
Z2VQcm94eUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciB3ZWJQYWdlSUQsIFVSTCB1cmwsIFN0
cmluZyB1c2VyQWdlbnQsIGVudW06dWludDhfdCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1Bv
bGljeSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgZW51bTpib29sIHN0ZDo6b3B0aW9uYWw8V2Vi
S2l0OjpOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERv
bWFpbiwgZW51bTpib29sIFdlYktpdDo6TGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQgbGFz
dE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAppbmRleCAzNzFiYmRh
MGU2YjQ2NmMwZTY2MjZlNWQ1MDZmYWNjN2IyN2VmZDRjLi5mMzhiZmI2MWUxYjlkMjgxYmYyODlj
NDVjMTBlNzNjN2NhMDQyZDQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKQEAgLTEyNTUsNiArMTI1NSwyNCBA
QCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnNlbmRQcm9jZXNzRGlkUmVzdW1lKCkKICAgICAg
ICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlByb2Nlc3NEaWRSZXN1bWUoKSwgMCk7
CiB9CiAKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlkQWNxdWlyZUFzc2VydGlvbihjb25z
dCBTdHJpbmcmIGFzc2VydGlvbk5hbWUpCit7CisgICAgaWYgKGNhblNlbmRNZXNzYWdlKCkgJiYg
KGFzc2VydGlvbk5hbWUgPT0gIkZvcmVncm91bmQiIHx8IGFzc2VydGlvbk5hbWUgPT0gIkJhY2tn
cm91bmQiKSkKKyAgICAgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkRpZEFjcXVp
cmVBc3NlcnRpb24oYXNzZXJ0aW9uTmFtZSksIDApOworfQorCit2b2lkIE5ldHdvcmtQcm9jZXNz
UHJveHk6OmRpZEludmFsaWRhdGVBc3NlcnRpb24oY29uc3QgU3RyaW5nJiBhc3NlcnRpb25OYW1l
KQoreworICAgIGlmIChjYW5TZW5kTWVzc2FnZSgpICYmIChhc3NlcnRpb25OYW1lID09ICJGb3Jl
Z3JvdW5kIiB8fCBhc3NlcnRpb25OYW1lID09ICJCYWNrZ3JvdW5kIikpCisgICAgICAgIHNlbmQo
TWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpEaWRJbnZhbGlkYXRlQXNzZXJ0aW9uKGFzc2VydGlv
bk5hbWUpLCAwKTsKK30KKwordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRSZWxlYXNlQXNz
ZXJ0aW9uKGNvbnN0IFN0cmluZyYgYXNzZXJ0aW9uTmFtZSkKK3sKKyAgICBpZiAoY2FuU2VuZE1l
c3NhZ2UoKSAmJiAoYXNzZXJ0aW9uTmFtZSA9PSAiRm9yZWdyb3VuZCIgfHwgYXNzZXJ0aW9uTmFt
ZSA9PSAiQmFja2dyb3VuZCIpKQorICAgICAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vz
czo6RGlkUmVsZWFzZUFzc2VydGlvbihhc3NlcnRpb25OYW1lKSwgMCk7Cit9CisKIHZvaWQgTmV0
d29ya1Byb2Nlc3NQcm94eTo6Zmx1c2hDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIHNl
bmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkZsdXNoQ29va2llcyhz
ZXNzaW9uSUQpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCmluZGV4IGI2
MDlmMzVmNmI1OWJjM2VmZjA0MTQyMDRiNjMzNmQzMGNhMTQ2NTEuLmYyYWEzZjBiYjZhNDQwMjJk
YzFkMjhiNzczNGY4ODJkNjdiN2FhY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCkBAIC0yMjcsMTIgKzIyNyw2IEBA
IHB1YmxpYzoKICAgICAKICAgICB2b2lkIGNyZWF0ZVN5bUxpbmtGb3JGaWxlVXBncmFkZShjb25z
dCBTdHJpbmcmIGluZGV4ZWREYXRhYmFzZURpcmVjdG9yeSk7CiAKLSAgICAvLyBQcm9jZXNzVGhy
b3R0bGVyQ2xpZW50Ci0gICAgdm9pZCBzZW5kUHJvY2Vzc0RpZFJlc3VtZSgpIGZpbmFsOwotICAg
IEFTQ0lJTGl0ZXJhbCBjbGllbnROYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIk5ldHdvcmtQ
cm9jZXNzIl9zOyB9Ci0gICAgCi0gICAgdm9pZCBzZW5kUHJvY2Vzc1dpbGxTdXNwZW5kSW1taW5l
bnRseUZvclRlc3RpbmcoKTsKLQogICAgIHZvaWQgcmVnaXN0ZXJTY2hlbWVGb3JMZWdhY3lDdXN0
b21Qcm90b2NvbChjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIHVucmVnaXN0ZXJTY2hlbWVGb3JM
ZWdhY3lDdXN0b21Qcm90b2NvbChjb25zdCBTdHJpbmcmKTsKIApAQCAtMjU0LDcgKzI0OCwxNSBA
QCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIC8vIFByb2Nlc3NUaHJvdHRsZXJDbGllbnQKKyAgICB2
b2lkIHNlbmRQcm9jZXNzRGlkUmVzdW1lKCkgZmluYWw7CisgICAgQVNDSUlMaXRlcmFsIGNsaWVu
dE5hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiTmV0d29ya1Byb2Nlc3MiX3M7IH0KICAgICB2
b2lkIHNlbmRQcmVwYXJlVG9TdXNwZW5kKElzU3VzcGVuc2lvbkltbWluZW50LCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYpIGZpbmFsOworICAgIHZvaWQgZGlkQWNxdWlyZUFzc2VydGlvbihj
b25zdCBTdHJpbmcmIGFzc2VydGlvbk5hbWUpIGZpbmFsOworICAgIHZvaWQgZGlkSW52YWxpZGF0
ZUFzc2VydGlvbihjb25zdCBTdHJpbmcmIGFzc2VydGlvbk5hbWUpIGZpbmFsOworICAgIHZvaWQg
ZGlkUmVsZWFzZUFzc2VydGlvbihjb25zdCBTdHJpbmcmIGFzc2VydGlvbk5hbWUpIGZpbmFsOwor
CisgICAgdm9pZCBzZW5kUHJvY2Vzc1dpbGxTdXNwZW5kSW1taW5lbnRseUZvclRlc3RpbmcoKTsK
KwogICAgIHZvaWQgdXBkYXRlQnVuZGxlSWRlbnRpZmllcihjb25zdCBTdHJpbmcmLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgY2xlYXJCdW5kbGVJZGVudGlmaWVyKENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1Byb2Nlc3NBc3NlcnRpb24uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
UHJvY2Vzc0Fzc2VydGlvbi5jcHAKaW5kZXggZDFiOWRlMWFlNWFhMjNhNTY4MWY3ZTJiN2NiY2Q4
MDYxNzljMDU3Yy4uNGY2NDUwMzZlYTk0MTJjMDc4YzY3ZGQwOTIxODAzYjg0Njk3OGUzMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvY2Vzc0Fzc2VydGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvY2Vzc0Fzc2VydGlvbi5jcHAKQEAgLTQ3LDE0
ICs0NywxNyBAQCBib29sIFByb2Nlc3NBc3NlcnRpb246OmlzVmFsaWQoKSBjb25zdAogICAgIHJl
dHVybiB0cnVlOwogfQogCi12b2lkIFByb2Nlc3NBc3NlcnRpb246OmFjcXVpcmVBc3luYyhDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFByb2Nlc3NB
c3NlcnRpb246OmFjcXVpcmVBc3luYyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmIChjb21wbGV0aW9uSGFuZGxlcikKLSAgICAgICAg
UnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAg
ICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIodHJ1ZSk7CisgICAgICAgIH0pOwogfQogCi12b2lkIFByb2Nlc3NBc3NlcnRpb246
OmFjcXVpcmVTeW5jKCkKK2Jvb2wgUHJvY2Vzc0Fzc2VydGlvbjo6YWNxdWlyZVN5bmMoKQogewor
ICAgIHJldHVybiB0cnVlOwogfQogCiBQcm9jZXNzQW5kVUlBc3NlcnRpb246OlByb2Nlc3NBbmRV
SUFzc2VydGlvbihQcm9jZXNzSUQgcGlkLCBjb25zdCBTdHJpbmcmIHJlYXNvbiwgUHJvY2Vzc0Fz
c2VydGlvblR5cGUgYXNzZXJ0aW9uVHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1Byb2Nlc3NBc3NlcnRpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb2Nl
c3NBc3NlcnRpb24uaAppbmRleCBhOGUxN2U3NmJiNzE5ZmZkZTdiN2JjNzA0ZmM1M2Y2Y2YyZGYy
YjE1Li5jZDA3ZjNjMjA2MmY1ZGFlN2ExYWI0Y2RmODRjZWY2MjBlNTk1YTRjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm9jZXNzQXNzZXJ0aW9uLmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvUHJvY2Vzc0Fzc2VydGlvbi5oCkBAIC01OCwxNSArNTgsMTUgQEAg
Y2xhc3MgUHJvY2Vzc0Fzc2VydGlvbiA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxQcm9j
ZXNzQXNzZXJ0aW9uPiwgcHVibGljIEMKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKICAgICBlbnVtIGNsYXNzIE1vZGUgOiBib29sIHsgU3luYywgQXN5bmMgfTsKLSAgICBz
dGF0aWMgUmVmPFByb2Nlc3NBc3NlcnRpb24+IGNyZWF0ZShQcm9jZXNzSUQgcGlkLCBjb25zdCBT
dHJpbmcmIHJlYXNvbiwgUHJvY2Vzc0Fzc2VydGlvblR5cGUgdHlwZSwgTW9kZSBtb2RlID0gTW9k
ZTo6QXN5bmMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBhY3F1aXNpc2lvbkhhbmRsZXIg
PSBudWxscHRyKQorICAgIHN0YXRpYyBSZWY8UHJvY2Vzc0Fzc2VydGlvbj4gY3JlYXRlKFByb2Nl
c3NJRCBwaWQsIGNvbnN0IFN0cmluZyYgcmVhc29uLCBQcm9jZXNzQXNzZXJ0aW9uVHlwZSB0eXBl
LCBNb2RlIG1vZGUgPSBNb2RlOjpBc3luYywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4m
JiBhY3F1aXNpc2lvbkhhbmRsZXIgPSBudWxscHRyKQogICAgIHsKICAgICAgICAgYXV0byBhc3Nl
cnRpb24gPSBhZG9wdFJlZigqbmV3IFByb2Nlc3NBc3NlcnRpb24ocGlkLCByZWFzb24sIHR5cGUp
KTsKICAgICAgICAgaWYgKG1vZGUgPT0gTW9kZTo6QXN5bmMpCiAgICAgICAgICAgICBhc3NlcnRp
b24tPmFjcXVpcmVBc3luYyhXVEZNb3ZlKGFjcXVpc2lzaW9uSGFuZGxlcikpOwogICAgICAgICBl
bHNlIHsKLSAgICAgICAgICAgIGFzc2VydGlvbi0+YWNxdWlyZVN5bmMoKTsKKyAgICAgICAgICAg
IGJvb2wgYWNxdWlyZWQgPSBhc3NlcnRpb24tPmFjcXVpcmVTeW5jKCk7CiAgICAgICAgICAgICBp
ZiAoYWNxdWlzaXNpb25IYW5kbGVyKQotICAgICAgICAgICAgICAgIGFjcXVpc2lzaW9uSGFuZGxl
cigpOworICAgICAgICAgICAgICAgIGFjcXVpc2lzaW9uSGFuZGxlcihhY3F1aXJlZCk7CiAgICAg
ICAgIH0KICAgICAgICAgcmV0dXJuIGFzc2VydGlvbjsKICAgICB9CkBAIC03NCw2ICs3NCw3IEBA
IHB1YmxpYzoKIAogICAgIHZvaWQgc2V0UHJlcGFyZUZvckludmFsaWRhdGlvbkhhbmRsZXIoRnVu
Y3Rpb248dm9pZCgpPiYmIGhhbmRsZXIpIHsgbV9wcmVwYXJlRm9ySW52YWxpZGF0aW9uSGFuZGxl
ciA9IFdURk1vdmUoaGFuZGxlcik7IH0KICAgICB2b2lkIHNldEludmFsaWRhdGlvbkhhbmRsZXIo
RnVuY3Rpb248dm9pZCgpPiYmIGhhbmRsZXIpIHsgbV9pbnZhbGlkYXRpb25IYW5kbGVyID0gV1RG
TW92ZShoYW5kbGVyKTsgfQorICAgIHZvaWQgc2V0UmVsZWFzZUhhbmRsZXIoRnVuY3Rpb248dm9p
ZCgpPiYmIGhhbmRsZXIpIHsgbV9yZWxlYXNlSGFuZGxlciA9IFdURk1vdmUoaGFuZGxlcik7IH0K
IAogICAgIFByb2Nlc3NBc3NlcnRpb25UeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX2Fzc2Vy
dGlvblR5cGU7IH0KICAgICBQcm9jZXNzSUQgcGlkKCkgY29uc3QgeyByZXR1cm4gbV9waWQ7IH0K
QEAgLTgzLDggKzg0LDggQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIFByb2Nlc3NBc3NlcnRp
b24oUHJvY2Vzc0lELCBjb25zdCBTdHJpbmcmIHJlYXNvbiwgUHJvY2Vzc0Fzc2VydGlvblR5cGUp
OwogCi0gICAgdm9pZCBhY3F1aXJlQXN5bmMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsK
LSAgICB2b2lkIGFjcXVpcmVTeW5jKCk7CisgICAgdm9pZCBhY3F1aXJlQXN5bmMoQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgYm9vbCBhY3F1aXJlU3luYygpOwogCiAjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB2b2lkIHByb2Nlc3NBc3NlcnRpb25XaWxsQmVJbnZh
bGlkYXRlZCgpOwpAQCAtMTAyLDE5ICsxMDMsMjAgQEAgcHJpdmF0ZToKICNlbmRpZgogICAgIEZ1
bmN0aW9uPHZvaWQoKT4gbV9wcmVwYXJlRm9ySW52YWxpZGF0aW9uSGFuZGxlcjsKICAgICBGdW5j
dGlvbjx2b2lkKCk+IG1faW52YWxpZGF0aW9uSGFuZGxlcjsKKyAgICBGdW5jdGlvbjx2b2lkKCk+
IG1fcmVsZWFzZUhhbmRsZXI7CiB9OwogCiBjbGFzcyBQcm9jZXNzQW5kVUlBc3NlcnRpb24gZmlu
YWwgOiBwdWJsaWMgUHJvY2Vzc0Fzc2VydGlvbiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxQ
cm9jZXNzQW5kVUlBc3NlcnRpb24+IGNyZWF0ZShQcm9jZXNzSUQgcGlkLCBjb25zdCBTdHJpbmcm
IHJlYXNvbiwgUHJvY2Vzc0Fzc2VydGlvblR5cGUgdHlwZSwgTW9kZSBtb2RlID0gTW9kZTo6QXN5
bmMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBhY3F1aXNpc2lvbkhhbmRsZXIgPSBudWxs
cHRyKQorICAgIHN0YXRpYyBSZWY8UHJvY2Vzc0FuZFVJQXNzZXJ0aW9uPiBjcmVhdGUoUHJvY2Vz
c0lEIHBpZCwgY29uc3QgU3RyaW5nJiByZWFzb24sIFByb2Nlc3NBc3NlcnRpb25UeXBlIHR5cGUs
IE1vZGUgbW9kZSA9IE1vZGU6OkFzeW5jLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYm
IGFjcXVpc2lzaW9uSGFuZGxlciA9IG51bGxwdHIpCiAgICAgewogICAgICAgICBhdXRvIGFzc2Vy
dGlvbiA9IGFkb3B0UmVmKCpuZXcgUHJvY2Vzc0FuZFVJQXNzZXJ0aW9uKHBpZCwgcmVhc29uLCB0
eXBlKSk7CiAgICAgICAgIGlmIChtb2RlID09IE1vZGU6OkFzeW5jKQogICAgICAgICAgICAgYXNz
ZXJ0aW9uLT5hY3F1aXJlQXN5bmMoV1RGTW92ZShhY3F1aXNpc2lvbkhhbmRsZXIpKTsKICAgICAg
ICAgZWxzZSB7Ci0gICAgICAgICAgICBhc3NlcnRpb24tPmFjcXVpcmVTeW5jKCk7CisgICAgICAg
ICAgICBib29sIGFjcXVpcmVkID0gYXNzZXJ0aW9uLT5hY3F1aXJlU3luYygpOwogICAgICAgICAg
ICAgaWYgKGFjcXVpc2lzaW9uSGFuZGxlcikKLSAgICAgICAgICAgICAgICBhY3F1aXNpc2lvbkhh
bmRsZXIoKTsKKyAgICAgICAgICAgICAgICBhY3F1aXNpc2lvbkhhbmRsZXIoYWNxdWlyZWQpOwog
ICAgICAgICB9CiAgICAgICAgIHJldHVybiBhc3NlcnRpb247CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvY2Vzc1Rocm90dGxlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Qcm9jZXNzVGhyb3R0bGVyLmNwcAppbmRleCA3MmNlOWVmNzYyZDk5N2M2
YTc4ZDFjNTQ5YmQ4ZGJlNTFjY2IyZDY5Li44Y2IyNWRiMWRlZThjOWE0ZmYwMGFjMDViYWNmNDY2
Nzg5ZTBlOThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm9jZXNzVGhy
b3R0bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm9jZXNzVGhyb3R0bGVy
LmNwcApAQCAtMTMxLDIwICsxMzEsMzggQEAgdm9pZCBQcm9jZXNzVGhyb3R0bGVyOjpzZXRBc3Nl
cnRpb25UeXBlKFByb2Nlc3NBc3NlcnRpb25UeXBlIG5ld1R5cGUpCiAKICAgICAvLyBLZWVwIHRo
ZSBwcmV2aW91cyBhc3NlcnRpb24gYWN0aXZlIHVudGlsIHRoZSBuZXcgYXNzZXJ0aW9uIGlzIHRh
a2VuIGFzeW5jaHJvbm91c2x5LgogICAgIGF1dG8gcHJldmlvdXNBc3NlcnRpb24gPSBzdGQ6OmV4
Y2hhbmdlKG1fYXNzZXJ0aW9uLCBudWxscHRyKTsKKyAgICBhdXRvIG5hbWUgPSBhc3NlcnRpb25O
YW1lKG5ld1R5cGUpOworICAgIGF1dG8gYWNxdWlzaXRpb25IYW5kbGVyID0gW3RoaXMsIHdlYWtU
aGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCBwcmV2aW91c0Fzc2VydGlvbiA9IFdURk1vdmUocHJl
dmlvdXNBc3NlcnRpb24pLCBuYW1lXShib29sIGFjcXVpcmVkKSB7CisgICAgICAgIGlmICghd2Vh
a1RoaXMpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKGFjcXVpcmVkKQorICAg
ICAgICAgICAgbV9wcm9jZXNzLmRpZEFjcXVpcmVBc3NlcnRpb24obmFtZSk7CisgICAgfTsKICAg
ICBpZiAobV9zaG91bGRUYWtlVUlCYWNrZ3JvdW5kQXNzZXJ0aW9uKSB7Ci0gICAgICAgIGF1dG8g
YXNzZXJ0aW9uID0gUHJvY2Vzc0FuZFVJQXNzZXJ0aW9uOjpjcmVhdGUobV9wcm9jZXNzSWRlbnRp
ZmllciwgYXNzZXJ0aW9uTmFtZShuZXdUeXBlKSwgbmV3VHlwZSwgUHJvY2Vzc0Fzc2VydGlvbjo6
TW9kZTo6QXN5bmMsIFtwcmV2aW91c0Fzc2VydGlvbiA9IFdURk1vdmUocHJldmlvdXNBc3NlcnRp
b24pXSB7IH0pOworICAgICAgICBhdXRvIGFzc2VydGlvbiA9IFByb2Nlc3NBbmRVSUFzc2VydGlv
bjo6Y3JlYXRlKG1fcHJvY2Vzc0lkZW50aWZpZXIsIG5hbWUsIG5ld1R5cGUsIFByb2Nlc3NBc3Nl
cnRpb246Ok1vZGU6OkFzeW5jLCBXVEZNb3ZlKGFjcXVpc2l0aW9uSGFuZGxlcikpOwogICAgICAg
ICBhc3NlcnRpb24tPnNldFVJQXNzZXJ0aW9uRXhwaXJhdGlvbkhhbmRsZXIoW3dlYWtUaGlzID0g
bWFrZVdlYWtQdHIoKnRoaXMpXSB7CiAgICAgICAgICAgICBpZiAod2Vha1RoaXMpCiAgICAgICAg
ICAgICAgICAgd2Vha1RoaXMtPnVpQXNzZXJ0aW9uV2lsbEV4cGlyZUltbWluZW50bHkoKTsKICAg
ICAgICAgfSk7CiAgICAgICAgIG1fYXNzZXJ0aW9uID0gV1RGTW92ZShhc3NlcnRpb24pOwogICAg
IH0gZWxzZQotICAgICAgICBtX2Fzc2VydGlvbiA9IFByb2Nlc3NBc3NlcnRpb246OmNyZWF0ZSht
X3Byb2Nlc3NJZGVudGlmaWVyLCBhc3NlcnRpb25OYW1lKG5ld1R5cGUpLCBuZXdUeXBlLCBQcm9j
ZXNzQXNzZXJ0aW9uOjpNb2RlOjpBc3luYywgW3ByZXZpb3VzQXNzZXJ0aW9uID0gV1RGTW92ZShw
cmV2aW91c0Fzc2VydGlvbildIHsgfSk7CisgICAgICAgIG1fYXNzZXJ0aW9uID0gUHJvY2Vzc0Fz
c2VydGlvbjo6Y3JlYXRlKG1fcHJvY2Vzc0lkZW50aWZpZXIsIG5hbWUsIG5ld1R5cGUsIFByb2Nl
c3NBc3NlcnRpb246Ok1vZGU6OkFzeW5jLCBXVEZNb3ZlKGFjcXVpc2l0aW9uSGFuZGxlcikpOwog
Ci0gICAgbV9hc3NlcnRpb24tPnNldEludmFsaWRhdGlvbkhhbmRsZXIoW3dlYWtUaGlzID0gbWFr
ZVdlYWtQdHIoKnRoaXMpXSB7Ci0gICAgICAgIGlmICh3ZWFrVGhpcykKLSAgICAgICAgICAgIHdl
YWtUaGlzLT5hc3NlcnRpb25XYXNJbnZhbGlkYXRlZCgpOworICAgIG1fYXNzZXJ0aW9uLT5zZXRJ
bnZhbGlkYXRpb25IYW5kbGVyKFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwg
bmFtZV0geworICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAKKyAgICAgICAgYXNzZXJ0aW9uV2FzSW52YWxpZGF0ZWQoKTsKKyAgICAgICAgbV9wcm9j
ZXNzLmRpZEludmFsaWRhdGVBc3NlcnRpb24obmFtZSk7CiAgICAgfSk7CisgICAgbV9hc3NlcnRp
b24tPnNldFJlbGVhc2VIYW5kbGVyKFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlz
KSwgbmFtZV0geworICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgcmV0dXJuOwor
CisgICAgICAgIG1fcHJvY2Vzcy5kaWRSZWxlYXNlQXNzZXJ0aW9uKG5hbWUpOworICAgIH0pOwor
CiAgICAgbV9wcm9jZXNzLmRpZFNldEFzc2VydGlvblR5cGUobmV3VHlwZSk7CiB9CiAgICAgCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm9jZXNzVGhyb3R0bGVyQ2xpZW50
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm9jZXNzVGhyb3R0bGVyQ2xpZW50LmgKaW5k
ZXggMTE4YmYwZGQyMzU4MjI0YzJlYzdkZjliOTY1MWU5ZjEzNzhlNmUwMC4uYTZmYWFiZGZlY2Zi
ZmU4OGQ2MDc1N2NlOWNjMzBlNGRmMmY4MjUwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUHJvY2Vzc1Rocm90dGxlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1Byb2Nlc3NUaHJvdHRsZXJDbGllbnQuaApAQCAtNDAsNiArNDAsMTAgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBzZW5kUHJvY2Vzc0RpZFJlc3VtZSgpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgZGlkU2V0QXNzZXJ0aW9uVHlwZShQcm9jZXNzQXNzZXJ0aW9uVHlwZSkgeyB9Owog
ICAgIHZpcnR1YWwgQVNDSUlMaXRlcmFsIGNsaWVudE5hbWUoKSBjb25zdCA9IDA7CisKKyAgICB2
aXJ0dWFsIHZvaWQgZGlkQWNxdWlyZUFzc2VydGlvbihjb25zdCBTdHJpbmcmKSB7IH07CisgICAg
dmlydHVhbCB2b2lkIGRpZEludmFsaWRhdGVBc3NlcnRpb24oY29uc3QgU3RyaW5nJikgeyB9Owor
ICAgIHZpcnR1YWwgdm9pZCBkaWRSZWxlYXNlQXNzZXJ0aW9uKGNvbnN0IFN0cmluZyYpIHsgfTsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1Byb2Nlc3NBc3NlcnRpb25JT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvUHJvY2Vzc0Fzc2VydGlvbklPUy5tbQppbmRleCBlMWQ3MWI3YWFkN2FjN2RhNjBi
N2IxNWJiYjY4Nzg4YzM5MmVhMTMyLi42ZWM3YTgwMjE2ZmJhOThmNzY2Yjk2MDk4ODEwNjU3ODJk
ODI5NzBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUHJvY2Vzc0Fz
c2VydGlvbklPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUHJvY2Vzc0Fz
c2VydGlvbklPUy5tbQpAQCAtMzUzLDE5ICszNTMsMTkgQEAgUHJvY2Vzc0Fzc2VydGlvbjo6UHJv
Y2Vzc0Fzc2VydGlvbihwaWRfdCBwaWQsIGNvbnN0IFN0cmluZyYgcmVhc29uLCBQcm9jZXNzQXNz
ZXIKICAgICB9OwogfQogCi12b2lkIFByb2Nlc3NBc3NlcnRpb246OmFjcXVpcmVBc3luYyhDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFByb2Nlc3NB
c3NlcnRpb246OmFjcXVpcmVBc3luYyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChpc01haW5SdW5Mb29wKCkpOwogICAgIGFz
c2VydGlvbnNXb3JrUXVldWUoKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRo
aXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11
dGFibGUgewotICAgICAgICBwcm90ZWN0ZWRUaGlzLT5hY3F1aXJlU3luYygpOwotICAgICAgICBS
dW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3Rl
ZFRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgp
IG11dGFibGUgeworICAgICAgICBib29sIGFjcXVpcmVkID0gcHJvdGVjdGVkVGhpcy0+YWNxdWly
ZVN5bmMoKTsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlz
ID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSwgYWNxdWlyZWRdKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAo
Y29tcGxldGlvbkhhbmRsZXIpCi0gICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsK
KyAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihhY3F1aXJlZCk7CiAgICAgICAgIH0p
OwogICAgIH0pOwogfQogCi12b2lkIFByb2Nlc3NBc3NlcnRpb246OmFjcXVpcmVTeW5jKCkKK2Jv
b2wgUHJvY2Vzc0Fzc2VydGlvbjo6YWNxdWlyZVN5bmMoKQogewogICAgIE5TRXJyb3IgKmFjcXVp
c2l0aW9uRXJyb3IgPSBuaWw7CiAgICAgaWYgKCFbbV9yYnNBc3NlcnRpb24gYWNxdWlyZVdpdGhF
cnJvcjomYWNxdWlzaXRpb25FcnJvcl0pIHsKQEAgLTM3NCwyMSArMzc0LDI4IEBAIHZvaWQgUHJv
Y2Vzc0Fzc2VydGlvbjo6YWNxdWlyZVN5bmMoKQogICAgICAgICAgICAgaWYgKHdlYWtUaGlzKQog
ICAgICAgICAgICAgICAgIHdlYWtUaGlzLT5wcm9jZXNzQXNzZXJ0aW9uV2FzSW52YWxpZGF0ZWQo
KTsKICAgICAgICAgfSk7Ci0gICAgfSBlbHNlCi0gICAgICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NT
dXNwZW5zaW9uLCAiJXAgLSBQcm9jZXNzQXNzZXJ0aW9uOiBTdWNjZXNzZnVsbHkgdG9vayBSQlMg
YXNzZXJ0aW9uICcle3B1YmxpY31zJyBmb3IgcHJvY2VzcyB3aXRoIFBJRD0lZCIsIHRoaXMsIG1f
cmVhc29uLnV0ZjgoKS5kYXRhKCksIG1fcGlkKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KKworICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAgLSBQcm9jZXNzQXNz
ZXJ0aW9uOiBTdWNjZXNzZnVsbHkgdG9vayBSQlMgYXNzZXJ0aW9uICcle3B1YmxpY31zJyBmb3Ig
cHJvY2VzcyB3aXRoIFBJRD0lZCIsIHRoaXMsIG1fcmVhc29uLnV0ZjgoKS5kYXRhKCksIG1fcGlk
KTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogUHJvY2Vzc0Fzc2VydGlvbjo6flByb2Nlc3NBc3Nl
cnRpb24oKQogewogICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAgLSB+UHJv
Y2Vzc0Fzc2VydGlvbjogUmVsZWFzaW5nIHByb2Nlc3MgYXNzZXJ0aW9uICcle3B1YmxpY31zJyBm
b3IgcHJvY2VzcyB3aXRoIFBJRD0lZCIsIHRoaXMsIG1fcmVhc29uLnV0ZjgoKS5kYXRhKCksIG1f
cGlkKTsKIAotICAgIGlmIChtX3Jic0Fzc2VydGlvbikgewotICAgICAgICBtX2RlbGVnYXRlLmdl
dCgpLmludmFsaWRhdGlvbkNhbGxiYWNrID0gbmlsOwotICAgICAgICBtX2RlbGVnYXRlLmdldCgp
LnByZXBhcmVGb3JJbnZhbGlkYXRpb25DYWxsYmFjayA9IG5pbDsKLSAgICAgICAgW21fcmJzQXNz
ZXJ0aW9uIHJlbW92ZU9ic2VydmVyOm1fZGVsZWdhdGUuZ2V0KCldOwotICAgICAgICBtX2RlbGVn
YXRlID0gbmlsOwotICAgICAgICBbbV9yYnNBc3NlcnRpb24gaW52YWxpZGF0ZV07Ci0gICAgfQor
ICAgIGlmICghbV9yYnNBc3NlcnRpb24pCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChbbV9y
YnNBc3NlcnRpb24gaXNWYWxpZF0gJiYgbV9yZWxlYXNlSGFuZGxlcikKKyAgICAgICAgbV9yZWxl
YXNlSGFuZGxlcigpOworCisgICAgbV9kZWxlZ2F0ZS5nZXQoKS5pbnZhbGlkYXRpb25DYWxsYmFj
ayA9IG5pbDsKKyAgICBtX2RlbGVnYXRlLmdldCgpLnByZXBhcmVGb3JJbnZhbGlkYXRpb25DYWxs
YmFjayA9IG5pbDsKKyAgICBbbV9yYnNBc3NlcnRpb24gcmVtb3ZlT2JzZXJ2ZXI6bV9kZWxlZ2F0
ZS5nZXQoKV07CisgICAgbV9kZWxlZ2F0ZSA9IG5pbDsKKyAgICBbbV9yYnNBc3NlcnRpb24gaW52
YWxpZGF0ZV07CiB9CiAKIHZvaWQgUHJvY2Vzc0Fzc2VydGlvbjo6cHJvY2Vzc0Fzc2VydGlvbldp
bGxCZUludmFsaWRhdGVkKCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>435027</attachid>
            <date>2021-08-05 14:55:19 -0700</date>
            <delta_ts>2022-05-24 13:15:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228797-20210805145519.patch</filename>
            <type>text/plain</type>
            <size>3758</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwNzAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDE2YzE2NjdiZDU5ZjNhY2E4
ZDYwYzMwMDVmYjY3ZjU3MWJmOWMzN2YuLmUxNDQwODFlYWUwYjE5MGUzYWJhZjIyZGM0OWJlMDI5
OWE3ZTRlOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMjEtMDgtMDUgIFNpaHVpIExp
dSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIG1vcmUgbG9nZ2luZyBmb3Ig
cHJvY2VzcyBhc3NlcnRpb24gaW4gbmV0d29yayBwcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjg3OTcKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBY2NvcmRpbmcgdG8gY3Jhc2ggbG9ncyBpbiBy
ZGFyOi8vNzk3ODcxMjMsIG5ldHdvcmsgcHJvY2VzcyBjYW4gZ2V0IHN1c3BlbmRlZCBzb29uIGFm
dGVyIGFjcXVpcmluZyBhc3NlcnRpb25zLiAKKyAgICAgICAgSXQgbWlnaHQgYmUgY2F1c2VkIGJ5
IHRoYXQgYXNzZXJ0aW9uIGZvciBuZXR3b3JrIHByb2Nlc3MgaXMgYWNxdWlyZWQgYXQgd2hlbiBw
cm9jZXNzIGlzIGFib3V0IHRvIGJlIHN1c3BlbmRlZCAKKyAgICAgICAgc29vbiBkdWUgdG8gdGlt
ZW91dC4gVG8gdmVyaWZ5IG91ciBndWVzcyBhbmQgdG8ga25vdyBob3cgb2Z0ZW4gdGhpcyBjYW4g
aGFwcGVuIGZyb20gZnV0dXJlIGNyYXNoIGxvZ3MsIAorICAgICAgICB3ZSBzaG91bGQgbG9nIHJl
bWFpbmluZyBhY3RpdmUgdGltZSB3aGVuIG5ldHdvcmsgcHJvY2VzcyByZWNlaXZlcyBQcm9jZXNz
RGlkUmVzdW1lIG1lc3NhZ2UgKCBVSSBwcm9jZXNzIAorICAgICAgICB0YWtlcyBhc3NlcnRpb24g
Zm9yIG5ldHdvcmsgcHJvY2VzcykgYW5kIHdoZW4gbmV0d29yayBwcm9jZXNzIHRha2VzIGl0cyBv
d24gYXNzZXJ0aW9uIGZvciBob2xkaW5nIGxvY2tlZCBmaWxlcy4KKworICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1By
b2Nlc3M6OnJlc3VtZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
aDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9pb3MvTmV0d29ya1Byb2Nlc3NJT1MubW06Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpzZXRJc0hvbGRpbmdMb2NrZWRGaWxlcyk6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpsb2dBc3NlcnRpb25JbmZvcm1hdGlv
bik6CisKIDIwMjEtMDgtMDUgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAg
ICAgICAgIEdQVVByb2Nlc3NQcm94eSBzaG91bGQgc2VuZCB0Y2NkIG1hY2ggbG9va3VwIHNhbmRi
b3ggZXh0ZW5zaW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuY3BwCmluZGV4IGEzOGIyZTI3ZjM5ODIxZjA0YjA3NTRkMTgwYmNmNDZjYWMxOTc1OWUu
LjE1MjQ2ODFlZTFmMDAzYjZkNDk4NmNjMmIzYzAxYWI0NTk4NDhlY2MgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC0yMjk5LDYgKzIy
OTksMTAgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVzdW1lKCkKICNlbmRpZgogCiAgICAgbV9z
dG9yYWdlTWFuYWdlclNldC0+cmVzdW1lKCk7CisKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQor
ICAgIGxvZ0Fzc2VydGlvbkluZm9ybWF0aW9uKCk7CisjZW5kaWYKIH0KIAogdm9pZCBOZXR3b3Jr
UHJvY2Vzczo6cHJlZmV0Y2hETlMoY29uc3QgU3RyaW5nJiBob3N0bmFtZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAppbmRleCA4YTcwODRiY2FhYzUw
YTBiOTI3NTgwMmE4ZjRiNWJlNGRhYjUwNjRiLi4xMDA0OGRmYzAzODRlYWVjMWFhZWQ0OTMxNmE3
N2FiNGM4ODM2YzhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5oCkBAIC00OTgsNiArNDk4LDcgQEAgcHJpdmF0ZToKIAogI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCiAgICAgdm9pZCBzZXRJc0hvbGRpbmdMb2NrZWRGaWxlcyhib29sKTsKKyAgICB2
b2lkIGxvZ0Fzc2VydGlvbkluZm9ybWF0aW9uKCk7CiAjZW5kaWYKIAogICAgIHZvaWQgZmlyZVBy
aXZhdGVDbGlja01lYXN1cmVtZW50VGltZXJJbW1lZGlhdGVseShQQUw6OlNlc3Npb25JRCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2lvcy9OZXR3b3JrUHJvY2Vz
c0lPUy5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvaW9zL05ldHdvcmtQcm9jZXNz
SU9TLm1tCmluZGV4IGExZTA5MTQyYjhiM2EzNGEyNzBmM2JmNTBmOTYwYTE2ZGU3MTU3OWMuLjAy
ODFjM2NhMDUwODQzOWJmY2EzNmEwMDQ3OWEyOGNjODQ2OGFlMjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvaW9zL05ldHdvcmtQcm9jZXNzSU9TLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvaW9zL05ldHdvcmtQcm9jZXNzSU9TLm1tCkBAIC0z
MSw2ICszMSw3IEBACiAjaW1wb3J0ICJOZXR3b3JrQ2FjaGUuaCIKICNpbXBvcnQgIk5ldHdvcmtQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCiAjaW1wb3J0ICJQcm9jZXNzQXNzZXJ0aW9uLmgi
CisjaW1wb3J0ICJSdW5uaW5nQm9hcmRTZXJ2aWNlc1NQSS5oIgogI2ltcG9ydCAiU2FuZGJveElu
aXRpYWxpemF0aW9uUGFyYW1ldGVycy5oIgogI2ltcG9ydCAiU2VjSXRlbVNoaW0uaCIKICNpbXBv
cnQgPFdlYkNvcmUvQ2VydGlmaWNhdGVJbmZvLmg+CkBAIC0xMjQsNiArMTI1LDE1IEBAIHZvaWQg
TmV0d29ya1Byb2Nlc3M6OnNldElzSG9sZGluZ0xvY2tlZEZpbGVzKGJvb2wgaXNIb2xkaW5nTG9j
a2VkRmlsZXMpCiAgICAgICAgIGZvciAoYXV0byYgc2VydmVyIDogbV93ZWJJREJTZXJ2ZXJzLnZh
bHVlcygpKQogICAgICAgICAgICAgc2VydmVyLT5zdXNwZW5kKCk7CiAgICAgfSk7CisKKyAgICBs
b2dBc3NlcnRpb25JbmZvcm1hdGlvbigpOworfQorCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpsb2dB
c3NlcnRpb25JbmZvcm1hdGlvbigpCit7CisgICAgYXV0byByZW1haW5pbmdBY3RpdmVUaW1lID0g
W1JCU1Byb2Nlc3NIYW5kbGUgY3VycmVudFByb2Nlc3NdLmFjdGl2ZUxpbWl0YXRpb25zLnJ1blRp
bWU7CisgICAgaWYgKHJlbWFpbmluZ0FjdGl2ZVRpbWUgIT0gUkJTUHJvY2Vzc1RpbWVMaW1pdGF0
aW9uTm9uZSkKKyAgICAgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICJOZXR3b3Jr
UHJvY2Vzczo6bG9nQXNzZXJ0aW9uSW5mb3JtYXRpb24oKSByZW1haW5pbmdBY3RpdmVUaW1lPSVn
IiwgcmVtYWluaW5nQWN0aXZlVGltZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAo=
</data>
<flag name="commit-queue"
          id="457732"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>