<?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>231105</bug_id>
          
          <creation_ts>2021-10-01 15:02:34 -0700</creation_ts>
          <short_desc>AudioContext stops playing when minimizing or moving the macOS Safari window to the background.</short_desc>
          <delta_ts>2022-03-23 08:03:29 -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>Web Audio</component>
          <version>Safari 15</version>
          <rep_platform>Mac (Apple Silicon)</rep_platform>
          <op_sys>macOS 11</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Major</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Harshit Oberoi">harsho</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>achronop</cc>
    
    <cc>benbullnz</cc>
    
    <cc>cdumez</cc>
    
    <cc>changchc</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>hta</cc>
    
    <cc>jer.noble</cc>
    
    <cc>kevin_neal</cc>
    
    <cc>mattwindwer</cc>
    
    <cc>nicolas.gerlach</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>tommyw</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1799568</commentid>
    <comment_count>0</comment_count>
    <who name="Harshit Oberoi">harsho</who>
    <bug_when>2021-10-01 15:02:34 -0700</bug_when>
    <thetext>AudioContext stops playing when minimizing or moving the macOS Safari window to the background.

Problem:

In the WebRTC-based web applications using the AudioContext API, audio stops playing when you minimize or move the macOS Safari window to the background.


Steps to Reproduce

1. Open any HTTPS website in Safari 14 or 15. In the following example, you will use the MediaDevices API to get your microphone&apos;s media stream.
2. Open the console in Web Inspector.
3. Run the following code to bind your first audio input to an audio element via two AudioNodes.
 (async function () {
      // Get your first audio input
      const devices = await navigator.mediaDevices.enumerateDevices({ audio: true });
      const deviceId = devices[0].deviceId;
      const deviceStream = await navigator.mediaDevices.getUserMedia({
        audio: { deviceId: { exact: deviceId } },
      });
      
      // Your audio input =&gt; MediaStreamAudioSourceNode =&gt; MediaStreamAudioDestinationNode
      const audioContext = new (window.AudioContext || window.webkitAudioContext)();
      const sourceNode = audioContext.createMediaStreamSource(deviceStream);
      const destinationNode = audioContext.createMediaStreamDestination();
      sourceNode.connect(destinationNode);
    
      // MediaStreamAudioDestinationNode =&gt; HTMLAudioElement
      const audio = document.createElement(&apos;audio&apos;);
      document.body.appendChild(audio);
      audio.srcObject = destinationNode.stream;
      audio.play();
    })();
4. Speak into your microphone and ensure that you can hear your voice from the system&apos;s speaker.
5. Minimize the Safari window (⌘ Cmd + M). Or you can activate full-screen mode (⌃ Ctrl + ⌘ Cmd + F) and switch to another window.
6. Speak into your microphone and test if you can hear your voice from the system’s speaker.



Actual Results:

The audio stops as soon as you minimize or move the Safari window to the background.


Expected Results:

The audio should not stop and play continuously. 


Build: 

* macOS Safari Version 15.0 (16612.1.29.41.4, 16612)
* macOS Safari Version 14.1.2 (16611.3.10.1.3)



Additional Information:

Behavior without AudioContext

The following script binds your first audio input with an audio element without using the AudioContext API.  The audio continuously plays when you minimize the Safari window.

(async function () {
  const devices = await navigator.mediaDevices.enumerateDevices({ audio: true });
  const deviceId = devices[0].deviceId;

  const audio = document.createElement(&apos;audio&apos;);
  document.body.appendChild(audio);
  audio.srcObject = await navigator.mediaDevices.getUserMedia({
    audio: { deviceId: { exact: deviceId } },
  });
  audio.play();
})();

Behavior In Other Browsers:

When running the reproduction steps in Chrome and Firefox, audio continuously plays when you minimize or move the Safari window to the background.

*Chrome Version*: *94.0.4606.61*
*FireFox Version*: *91.1.Oser*</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1799577</commentid>
    <comment_count>1</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-10-01 15:15:13 -0700</bug_when>
    <thetext>@Jer / Eric: Is this intentional?

I have noticed this in the past and also found this behavior annoying.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1800084</commentid>
    <comment_count>2</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-10-04 09:14:55 -0700</bug_when>
    <thetext>Seems to be reproducible with this demo site as well: https://downloads.scirra.com/labs/bugs/safaripannerquality/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1800089</commentid>
    <comment_count>3</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-10-04 09:33:30 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #2)
&gt; Seems to be reproducible with this demo site as well:
&gt; https://downloads.scirra.com/labs/bugs/safaripannerquality/

Never mind, that one also happens in Chrome so it may be the site doing it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1800093</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-10-04 09:58:59 -0700</bug_when>
    <thetext>The provided JS gives out an error on my machine after I allow getUserMedia:
&lt; Promise {status: &quot;pending&quot;}
[Error] Failed to create MediaStream audio source: No CoreAudioCaptureSource device
[Error] Unhandled Promise Rejection: NotReadableError: The I/O read operation failed.
	Console Evaluation (Console Evaluation 3:7)
	asyncFunctionResume
	(anonymous function)
	promiseReactionJobWithoutPromise
	promiseReactionJob

Not sure why. I am still trying to find a repro case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1800587</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-10-05 09:28:20 -0700</bug_when>
    <thetext>&lt;rdar://problem/83889697&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1805551</commentid>
    <comment_count>6</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-10-18 06:16:20 -0700</bug_when>
    <thetext>I was able to reproduce.
My understanding is that AudioContext gets interrupted/uninterrupted in case of getting backgrounded.
HTMLMediaElement::shouldOverrideBackgroundPlaybackRestriction has a special behavior to override background interruption in some cases, like when playing an audio track.

We could apply the same rule for AudioContext given there is no way the realtime data could be played again when resuming.

We have a somewhat inconsistent behavior as a track created from AudioContext will allow a media element to keep playing, but the AudioContext being paused, it would play silence.

I would tend to allow AudioContext to override interruptions in case the page is capturing as AudioContext could be used to improve the audio data sent to other participants.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1805559</commentid>
    <comment_count>7</comment_count>
      <attachid>441596</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-10-18 06:42:56 -0700</bug_when>
    <thetext>Created attachment 441596
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1806533</commentid>
    <comment_count>8</comment_count>
      <attachid>441856</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-10-20 01:07:53 -0700</bug_when>
    <thetext>Created attachment 441856
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1806728</commentid>
    <comment_count>9</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2021-10-20 11:30:22 -0700</bug_when>
    <thetext>I think this approach is fine, but I&apos;d tailor it a bit.

I&apos;d put the background playback exemption like this:

If the AudioContext has a MediaStreamAudioDestinationNode, and the destinationNode is connected to a mediaElement, and the AudioContext&apos;s default destination node has no connected nodes, then the AudioContext should be allowed to play in the background.

Ideally, sites would be able to create a &quot;processing only AudioContext&quot; that would be completely exempt from these background restrictions. We should try to float that idea with the Audio WG.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1806733</commentid>
    <comment_count>10</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2021-10-20 11:33:43 -0700</bug_when>
    <thetext>(In reply to Jer Noble from comment #9)
&gt; I&apos;d put the background playback exemption like this:
&gt; 
&gt; If the AudioContext has a MediaStreamAudioDestinationNode, and the
&gt; destinationNode is connected to a mediaElement, and the AudioContext&apos;s
&gt; default destination node has no connected nodes, then the AudioContext
&gt; should be allowed to play in the background.

Actually thinking more about this, it should be enough to allow an exemption when a context has a MediaStreamAudioDestinationNode and no nodes connected to it&apos;s default destination node.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1807036</commentid>
    <comment_count>11</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-10-21 01:14:42 -0700</bug_when>
    <thetext>(In reply to Jer Noble from comment #9)
&gt; I think this approach is fine, but I&apos;d tailor it a bit.
&gt; 
&gt; I&apos;d put the background playback exemption like this:
&gt; 
&gt; If the AudioContext has a MediaStreamAudioDestinationNode, and the
&gt; destinationNode is connected to a mediaElement, and the AudioContext&apos;s
&gt; default destination node has no connected nodes, then the AudioContext
&gt; should be allowed to play in the background.
&gt; 
&gt; Ideally, sites would be able to create a &quot;processing only AudioContext&quot; that
&gt; would be completely exempt from these background restrictions. We should try
&gt; to float that idea with the Audio WG.

I filed https://github.com/WebAudio/web-audio-api/issues/1551 some time ago.
I guess we can try to resurrect it if web audio is still active.

&gt; &gt; If the AudioContext has a MediaStreamAudioDestinationNode, and the
&gt; &gt; destinationNode is connected to a mediaElement, and the AudioContext&apos;s
&gt; &gt; default destination node has no connected nodes, then the AudioContext
&gt; &gt; should be allowed to play in the background.
&gt; 
&gt; Actually thinking more about this, it should be enough to allow an exemption
&gt; when a context has a MediaStreamAudioDestinationNode and no nodes connected
&gt; to it&apos;s default destination node.

I am not sure what this heuristic is trying to achieve, can you precise it?
Is it legacy content that might continue to play while it should not?
Given this is restricted to media capture being on, I am not sure this is a real issue.

Web Audio can be used for speech recognition in VC to spend text transcript to remote participants. In that case, there is no MediaStreamAudioDestinationNode, no destination. It would be sad to continue sending audio but not text when backgrounded.

Web Audio can also be used to do spatial effects on multiple RTCPeerConnection tracks. It makes sense to continue audio rendering in that case, just like what happens for regular MediaStreamTrack rendering through media elements.
In that case, destination is connected but MediaStreamAudioDestinationNode is not needed: going through a MediaStreamAudioDestinationNode adds quite a bit of extra work by UA plus additional buffering/latency.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1807296</commentid>
    <comment_count>12</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2021-10-21 12:03:05 -0700</bug_when>
    <thetext>(In reply to youenn fablet from comment #11)
&gt; (In reply to Jer Noble from comment #9)
&gt; &gt; I think this approach is fine, but I&apos;d tailor it a bit.
&gt; &gt; 
&gt; &gt; I&apos;d put the background playback exemption like this:
&gt; &gt; 
&gt; &gt; If the AudioContext has a MediaStreamAudioDestinationNode, and the
&gt; &gt; destinationNode is connected to a mediaElement, and the AudioContext&apos;s
&gt; &gt; default destination node has no connected nodes, then the AudioContext
&gt; &gt; should be allowed to play in the background.
&gt; &gt; 
&gt; &gt; Ideally, sites would be able to create a &quot;processing only AudioContext&quot; that
&gt; &gt; would be completely exempt from these background restrictions. We should try
&gt; &gt; to float that idea with the Audio WG.
&gt; 
&gt; I filed https://github.com/WebAudio/web-audio-api/issues/1551 some time ago.
&gt; I guess we can try to resurrect it if web audio is still active.

Yeah, I don&apos;t understand Paul&apos;s comment w.r.t. the Autoplay API; that API is simply about detection. I would suggest we re-open or file a new bug.

&gt; &gt; &gt; If the AudioContext has a MediaStreamAudioDestinationNode, and the
&gt; &gt; &gt; destinationNode is connected to a mediaElement, and the AudioContext&apos;s
&gt; &gt; &gt; default destination node has no connected nodes, then the AudioContext
&gt; &gt; &gt; should be allowed to play in the background.
&gt; &gt; 
&gt; &gt; Actually thinking more about this, it should be enough to allow an exemption
&gt; &gt; when a context has a MediaStreamAudioDestinationNode and no nodes connected
&gt; &gt; to it&apos;s default destination node.
&gt; 
&gt; I am not sure what this heuristic is trying to achieve, can you precise it?
&gt; Is it legacy content that might continue to play while it should not?
&gt; Given this is restricted to media capture being on, I am not sure this is a
&gt; real issue.

An AudioContext which is not outputting to the default destinationNode isn&apos;t generating audible sound, and thus shouldn&apos;t (hypothetically speaking) be affected by our autoplay or rules. (This is tricky of course, since the node graph can be changed at any time by script, but in effect, this is no different than allowing silent &lt;video&gt; elements to play and &quot;interrupting&quot; them once they are unmuted/have audio.)

&gt; Web Audio can be used for speech recognition in VC to spend text transcript
&gt; to remote participants. In that case, there is no
&gt; MediaStreamAudioDestinationNode, no destination. It would be sad to continue
&gt; sending audio but not text when backgrounded.

Okay, then maybe the heuristic should be whether _any_ nodes are connected to the destinationNode. That would cover this case and the originator&apos;s.

&gt; Web Audio can also be used to do spatial effects on multiple
&gt; RTCPeerConnection tracks. It makes sense to continue audio rendering in that
&gt; case, just like what happens for regular MediaStreamTrack rendering through
&gt; media elements.
&gt; In that case, destination is connected but MediaStreamAudioDestinationNode
&gt; is not needed: going through a MediaStreamAudioDestinationNode adds quite a
&gt; bit of extra work by UA plus additional buffering/latency.

IMO, this is scope creep. Poking holes in our autoplay rules whenever there is capture happening is not good design and it&apos;s not sustainable. If we want WebAudio to behave like an &lt;audio&gt; element, that needs to be a deliberate choice and preferably be backed by API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1807319</commentid>
    <comment_count>13</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-10-21 12:58:28 -0700</bug_when>
    <thetext>&gt; IMO, this is scope creep. Poking holes in our autoplay rules whenever there
&gt; is capture happening is not good design and it&apos;s not sustainable. If we want
&gt; WebAudio to behave like an &lt;audio&gt; element, that needs to be a deliberate
&gt; choice and preferably be backed by API.

I am not sure what you mean by &apos;that needs to be a deliberate choice and preferably be backed by API.&apos;. This seems to indicate the proposed change of behavior would break existing web sites, which I doubt.

Aligning Web Audio and media element heuristics seems good to me, they are both audio rendering API (although they may do more).
I do not see sufficient differences between the two APIs that would warrant one to continue generating audio in the background while disallowing the other (except the break existing content argument).

Your idea to align no-destination WebAudio behavior with muted media element goes int the same direction: apply the same heuristics to both APIs, I&apos;ll take a stab at it.

One thing that I see as different is the audio category (ambient vs. media playback) but in the case we are talking, the audio category will be play and record whatever the use of audio rendering API.

In the future, it might be good to be able to set the audio category by the web page (we are having the issue that audio rendering starts with category set to media playback and switches later on to play and record). If we do that, it seems to me Web Audio and audio element might become even closer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1808036</commentid>
    <comment_count>14</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2021-10-22 22:15:07 -0700</bug_when>
    <thetext>(In reply to youenn fablet from comment #13)
&gt; &gt; IMO, this is scope creep. Poking holes in our autoplay rules whenever there
&gt; &gt; is capture happening is not good design and it&apos;s not sustainable. If we want
&gt; &gt; WebAudio to behave like an &lt;audio&gt; element, that needs to be a deliberate
&gt; &gt; choice and preferably be backed by API.
&gt; 
&gt; I am not sure what you mean by &apos;that needs to be a deliberate choice and
&gt; preferably be backed by API.&apos;. This seems to indicate the proposed change of
&gt; behavior would break existing web sites, which I doubt.

I&apos;m not really worried about breaking existing sites; I&apos;m worried about unexpected audio playback and violated user expectations.

&gt; One thing that I see as different is the audio category (ambient vs. media
&gt; playback) but in the case we are talking, the audio category will be play
&gt; and record whatever the use of audio rendering API.

Currently that&apos;s true, only because we currently use a global AVAudioSession for all generated audio, which itself causes a ton of problems, including system audio being interrupted by silent &lt;video&gt; playback. If we switch to a model which uses multiple AVAudioSessions, then WebAudio won&apos;t get a &quot;free ride&quot; on the PlayAndRecord behavior, and will be interrupted upon backgrounding.

&gt; Your idea to align no-destination WebAudio behavior with muted media element
&gt; goes int the same direction: apply the same heuristics to both APIs, I&apos;ll
&gt; take a stab at it.

When you&apos;re experimenting here, perhaps you could experiment with changing the category of a WebAudio context that has an MediaElementSourceNode; perhaps such an AudioContext should be treated exactly the same as the media element that&apos;s providing the audio.

&gt; In the future, it might be good to be able to set the audio category by the
&gt; web page (we are having the issue that audio rendering starts with category
&gt; set to media playback and switches later on to play and record). If we do
&gt; that, it seems to me Web Audio and audio element might become even closer.

Yes, this was the idea behind the Audio Focus API; that the page could request a certain &quot;mode&quot; of audio playback. If we implemented such a web API, it might make sense to override and unify all the audio generating APIs into a single mode. And that&apos;s what I meant by &quot;backed by API&quot;. Pages generally know what they&apos;re doing better than we do, and an explicit signal (e.g., &quot;everything on the page is doing video conferencing&quot;) would let us make good decisions without risking unexpected behavior.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1813963</commentid>
    <comment_count>15</comment_count>
    <who name="Alex Chronopoulos">achronop</who>
    <bug_when>2021-11-11 02:25:49 -0800</bug_when>
    <thetext>Writing a quick comment to mention that the same problem appears when we switch tab. As a side effect, when we return back to the first tab the audio is distorted. The following fiddle exposes that behavior. There are steps in it.

https://jsfiddle.net/achronop/f8ujeom4/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1814437</commentid>
    <comment_count>16</comment_count>
    <who name="">changchc</who>
    <bug_when>2021-11-12 07:56:21 -0800</bug_when>
    <thetext>Hi Youenn, 

I was wondering when the patch would be released?

Thanks,</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1814872</commentid>
    <comment_count>17</comment_count>
    <who name="Matthew Windwer">mattwindwer</who>
    <bug_when>2021-11-14 10:54:17 -0800</bug_when>
    <thetext>We noticed starting iOS 15 with web audio in Safari the audio stops playing after the device is locked, or in some cases when Safari is backgrounded and resumed or an incoming call/notification comes in. Sometimes manually resuming the audio context fixes it, but not always. Is this the bug that is filed for that issue?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1818470</commentid>
    <comment_count>18</comment_count>
    <who name="Ben">benbullnz</who>
    <bug_when>2021-11-29 14:06:17 -0800</bug_when>
    <thetext>I am seeing the same issue on iOS 15.1.1 as Matt Windwer (Safari and Chrome).

WebAudio destination is either killed or muted when the screen falls to background. 

I attempted to output webAudio to a HTML audio element using MediaStreamDesinationNode with the hope that this would resolve the bug by using the audio element as the destination. Unfortunately this bug seems to kill off the WebAudio part of the pipeline regardless of the fact that it is ultimately being served through audio element/tag. 

Interestingly as soon as the screen is woken and unlocked; audio resumes immediately which suggests that this bug isn&apos;t killing off the entire process. 

Regarding your discussions above, please also consider audio only and receive only applications through WebRTC. I am effectively using WebRTC for live radio/communications application where WebAudio features (volume/pan) and background audio is essential and intended. 

Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1822660</commentid>
    <comment_count>19</comment_count>
      <attachid>446715</attachid>
    <who name="Alex Chronopoulos">achronop</who>
    <bug_when>2021-12-10 05:52:04 -0800</bug_when>
    <thetext>Created attachment 446715
Check if the destination is not connected

This is a patch on the top of the existing one that addresses the case that AudioContext is running on the background only when destination is not used. I think this is the most open approach in terms of giving the opportunity to many use cases to take advantage of it. However, I know this is one of the cases you are discussing in this bug. I was hoping that we can restart that conversation and the effort to address this issue. It is blocking a very important use case and we receive many complaints about it. By the way, if you have decided on the approach I would be happy to work on that direction.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1825080</commentid>
    <comment_count>20</comment_count>
      <attachid>447455</attachid>
    <who name="Alex Chronopoulos">achronop</who>
    <bug_when>2021-12-17 07:35:53 -0800</bug_when>
    <thetext>Created attachment 447455
Combined diff to run the tests

The patch I added above is incremental on the top of youennf&apos;s one. Combined both in this diff to execute the tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1850470</commentid>
    <comment_count>21</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-03-11 06:05:53 -0800</bug_when>
    <thetext>I looked again at the source code and noticed the following things:
- On MacOS, AudioContext only gets suspended in case of visibility change only if it is not producing audio. Given we want to let continue AudioContext that are not producing audio, we should probably stop listening to visibility changes.
- On iOS, AudioContext gets suspended when going in the background, whether playing audio or not. In that case, AudioContext can be restarted by calling resume. This works if the AudioContext can autoplay, which is the case when page is capturing audio.

Given all of this, I see a few possibilities:
Option 1:
Remove interruption management done in visibility state monitoring in AudioContext.
This would fix MacOS.
For iOS, to keep the current behavior of stopping web audio in the background, we could mute the audio destination instead of stopping the audio context.

Option 2:
Remove visibility state change handling in AudioContext (fixes MacOS).
Skip interruptions in case AudioContext can autoplay.
This fixes the capturing page case on iOS.
I would think the user expectation in that case is that audio continues flowing, given audio capture is clearly continuing as the user can see with the green pill/red banner that Safari shows when capturing in the background.

Given this bug is specifically about macOS, we can start with removing the visibility state change management for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1850504</commentid>
    <comment_count>22</comment_count>
      <attachid>454484</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-03-11 07:46:21 -0800</bug_when>
    <thetext>Created attachment 454484
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1851179</commentid>
    <comment_count>23</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-03-15 00:09:51 -0700</bug_when>
    <thetext>Filed https://bugs.webkit.org/show_bug.cgi?id=237878 for iOS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1851182</commentid>
    <comment_count>24</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-03-15 00:20:18 -0700</bug_when>
    <thetext>Committed r291267 (248416@main): &lt;https://commits.webkit.org/248416@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 454484.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>441596</attachid>
            <date>2021-10-18 06:42:56 -0700</date>
            <delta_ts>2021-10-20 01:07:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231105-20211018154254.patch</filename>
            <type>text/plain</type>
            <size>6521</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0MjQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzRiZjUxMmQ3NDkwZWFh
MDg5NDA4NDVmNzFmYTA4ODZiNWE5ZWJjZS4uMTE2MmJhNzgwMjI1NmM2ZGQyMDI5ZmM5N2Q2NzMw
ZWFlZjFkYmEzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDIxLTEwLTE4ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBBdWRpb0NvbnRleHQgc3Rv
cHMgcGxheWluZyB3aGVuIG1pbmltaXppbmcgb3IgbW92aW5nIHRoZSBtYWNPUyBTYWZhcmkgd2lu
ZG93IHRvIHRoZSBiYWNrZ3JvdW5kLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjMxMTA1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84Mzg4OTY5Nz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbiBjYXNl
IHBhZ2UgaXMgY2FwdHVyaW5nIGF1ZGlvLCBpdCBpcyB1c2VmdWwgdG8gbm90IHN1c3BlbmQgYW4g
YXVkaW8gY29udGV4dCwgd2hpY2ggY2FuIGJlIHVzZWQgZm9yIHZhcmlvdXMgdGhpbmdzIHN1Y2gg
YXM6CisgICAgICAgIC0gcHJlcHJvY2Vzc2luZyBiZWZvcmUgcmVuZGVyaW5nL3RyYW5zbWl0dGlu
ZyBhdWRpbyBkYXRhLgorICAgICAgICAtIHZhcmlvdXMgYXVkaW8gZmVlZGJhY2sgaW4gY2FzZSBv
ZiBWQyAobmV3IHBhcnRpY2lwYW50Li4uKS4KKyAgICAgICAgVGVzdDogd2ViYXVkaW8vYXVkaW9j
b250ZXh0LXN0YXRlLWludGVycnVwdGlvbi13aXRoLWd1bS5odG1sCisKKyAgICAgICAgKiBNb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHA6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0NvbnRleHQuaDoKKwogMjAyMS0xMC0xOCAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBh
cHBsZS5jb20+CiAKICAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHJlcXVlc3RWaWRlb0ZyYW1lQ2Fs
bGJhY2sgQVBJIGFuZCBNZWRpYVN0cmVhbVRyYWNrLWJhc2VkIGJhY2tlbmQgc3VwcG9ydApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCmluZGV4
IGFkNzI4YzM2OTUyYjMwZDA1NzRlNzE4Zjg5ZDM0Y2RhODYzMmRmMTMuLmUyNDI4MjdhZjU5NjQw
MTRhY2E0ZjJlMjRiZTdmYjlkYWQzYjM5YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAKQEAgLTQ4MCw2ICs0ODAsMjEgQEAgTWVkaWFT
ZXNzaW9uR3JvdXBJZGVudGlmaWVyIEF1ZGlvQ29udGV4dDo6bWVkaWFTZXNzaW9uR3JvdXBJZGVu
dGlmaWVyKCkgY29uc3QKICAgICByZXR1cm4gZG9jdW1lbnQgJiYgZG9jdW1lbnQtPnBhZ2UoKSA/
IGRvY3VtZW50LT5wYWdlKCktPm1lZGlhU2Vzc2lvbkdyb3VwSWRlbnRpZmllcigpIDogTWVkaWFT
ZXNzaW9uR3JvdXBJZGVudGlmaWVyIHsgfTsKIH0KIAorYm9vbCBBdWRpb0NvbnRleHQ6OnNob3Vs
ZE92ZXJyaWRlQmFja2dyb3VuZFBsYXliYWNrUmVzdHJpY3Rpb24oUGxhdGZvcm1NZWRpYVNlc3Np
b246OkludGVycnVwdGlvblR5cGUgdHlwZSkgY29uc3QKK3sKKyAgICBpZiAodHlwZSAhPSBQbGF0
Zm9ybU1lZGlhU2Vzc2lvbjo6RW50ZXJpbmdCYWNrZ3JvdW5kKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorICAgIGlmIChkb2N1bWVudCgpICYmIGRv
Y3VtZW50KCktPm1lZGlhU3RhdGUoKS5jb250YWluc0FueShNZWRpYVByb2R1Y2VyTWVkaWFTdGF0
ZTo6SGFzQWN0aXZlQXVkaW9DYXB0dXJlRGV2aWNlKSkgeworICAgICAgICBJTkZPX0xPRyhMT0dJ
REVOVElGSUVSLCAicmV0dXJuaW5nIHRydWUgYmVjYXVzZSBkb2N1bWVudCBpcyBjYXB0dXJpbmcg
YXVkaW8iKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorI2VuZGlmCisKKyAgICByZXR1
cm4gZmFsc2U7Cit9CisKIGJvb2wgQXVkaW9Db250ZXh0Ojppc1N1c3BlbmRlZCgpIGNvbnN0CiB7
CiAgICAgcmV0dXJuICFkb2N1bWVudCgpIHx8IGRvY3VtZW50KCktPmFjdGl2ZURPTU9iamVjdHNB
cmVTdXNwZW5kZWQoKSB8fCBkb2N1bWVudCgpLT5hY3RpdmVET01PYmplY3RzQXJlU3RvcHBlZCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRl
eHQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmgKaW5k
ZXggMTJiNjU0MTI1ZTFmMzk5YjFiMGUyNmNmODRlNTg5OWZiODg2ZDdiOC4uOTM5ZDAyOGQyNjA3
OTJhN2RiZDY3OTAzMzk5MWRjMDA3NWE3MjlkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5oCkBAIC0xMjcsNyArMTI3LDcgQEAgcHJpdmF0ZToK
ICAgICBib29sIGNhblJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZHMoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBmYWxzZTsgfQogICAgIHZvaWQgZGlkUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5k
KFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUsIGNvbnN0IFBs
YXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb21tYW5kQXJndW1lbnQmKSBmaW5hbCB7IH0KICAg
ICBib29sIHN1cHBvcnRzU2Vla2luZygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9Ci0g
ICAgYm9vbCBzaG91bGRPdmVycmlkZUJhY2tncm91bmRQbGF5YmFja1Jlc3RyaWN0aW9uKFBsYXRm
b3JtTWVkaWFTZXNzaW9uOjpJbnRlcnJ1cHRpb25UeXBlKSBjb25zdCBmaW5hbCB7IHJldHVybiBm
YWxzZTsgfQorICAgIGJvb2wgc2hvdWxkT3ZlcnJpZGVCYWNrZ3JvdW5kUGxheWJhY2tSZXN0cmlj
dGlvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6SW50ZXJydXB0aW9uVHlwZSkgY29uc3QgZmluYWw7
CiAgICAgYm9vbCBjYW5Qcm9kdWNlQXVkaW8oKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9
CiAgICAgYm9vbCBpc1N1c3BlbmRlZCgpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgaXNQbGF5aW5n
KCkgY29uc3QgZmluYWw7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYzg1MjZmNzBmYjU4YzcyYmUxMWEwNWQ4MTFjN2JhYjZj
ZTU0ZmE1OC4uZGU2ZWEzY2Q3ZDAzYzg2M2QzNTA4OGEzNGUxNzAxMjk3OTE2ZDk5MSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE0IEBACisyMDIxLTEwLTE4ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxl
LmNvbT4KKworICAgICAgICBBdWRpb0NvbnRleHQgc3RvcHMgcGxheWluZyB3aGVuIG1pbmltaXpp
bmcgb3IgbW92aW5nIHRoZSBtYWNPUyBTYWZhcmkgd2luZG93IHRvIHRoZSBiYWNrZ3JvdW5kLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMxMTA1Cisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS84Mzg4OTY5Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHdlYmF1ZGlvL2F1ZGlvY29udGV4dC1zdGF0ZS1p
bnRlcnJ1cHRpb24td2l0aC1ndW0tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB3ZWJh
dWRpby9hdWRpb2NvbnRleHQtc3RhdGUtaW50ZXJydXB0aW9uLXdpdGgtZ3VtLmh0bWw6IEFkZGVk
LgorCiAyMDIxLTEwLTE4ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAg
ICAgICBBZGQgc3VwcG9ydCBmb3IgcmVxdWVzdFZpZGVvRnJhbWVDYWxsYmFjayBBUEkgYW5kIE1l
ZGlhU3RyZWFtVHJhY2stYmFzZWQgYmFja2VuZCBzdXBwb3J0CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJhdWRpby9hdWRpb2NvbnRleHQtc3RhdGUtaW50ZXJydXB0aW9uLXdpdGgtZ3VtLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmF1ZGlvL2F1ZGlvY29udGV4dC1zdGF0ZS1pbnRl
cnJ1cHRpb24td2l0aC1ndW0tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFhZGI5ODM2MGUwNWVj
MWEwNDJjMWE2NjYxMTU1ODRkNGZmYmI4NWEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy93ZWJhdWRpby9hdWRpb2NvbnRleHQtc3RhdGUtaW50ZXJydXB0aW9uLXdpdGgtZ3VtLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDMgQEAKKworUEFTUyBEbyBub3QgaW50ZXJydXB0IGlmIGF1ZGlv
IGNhcHR1cmUgaXMgb25nb2luZworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJhdWRpby9h
dWRpb2NvbnRleHQtc3RhdGUtaW50ZXJydXB0aW9uLXdpdGgtZ3VtLmh0bWwgYi9MYXlvdXRUZXN0
cy93ZWJhdWRpby9hdWRpb2NvbnRleHQtc3RhdGUtaW50ZXJydXB0aW9uLXdpdGgtZ3VtLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMTM0MWJmZTU3NDNlMWVmZTA5ZDRkNTAzNGI2ZDk3YmEyMmMxNjA4MQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmF1ZGlvL2F1ZGlvY29udGV4dC1zdGF0ZS1p
bnRlcnJ1cHRpb24td2l0aC1ndW0uaHRtbApAQCAtMCwwICsxLDQ4IEBACis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNz
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBv
cnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0icmVz
b3VyY2VzL2F1ZGlvLXRlc3RpbmcuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2Ny
aXB0PgorcHJvbWlzZV90ZXN0KGFzeW5jICh0KSA9PiB7CisgICAgaWYgKCF3aW5kb3cuaW50ZXJu
YWxzKQorICAgICAgICByZXR1cm47CisKKyAgICBjb25zdCBjb250ZXh0ID0gbmV3IEF1ZGlvQ29u
dGV4dCgpOworCisgICAgbGV0IHByb21pc2UgPSBuZXcgUHJvbWlzZShyZXNvbHZlID0+IGNvbnRl
eHQub25zdGF0ZWNoYW5nZSA9IHJlc29sdmUpOworCisgICAgY29uc3Qgbm9kZSA9IGNvbnRleHQu
Y3JlYXRlQnVmZmVyU291cmNlKCk7CisgICAgbm9kZS5jb25uZWN0KGNvbnRleHQuZGVzdGluYXRp
b24pOworCisgICAgYXdhaXQgcHJvbWlzZTsKKworICAgIHByb21pc2UgPSBuZXcgUHJvbWlzZShy
ZXNvbHZlID0+IGNvbnRleHQub25zdGF0ZWNoYW5nZSA9IHJlc29sdmUpOworICAgIGludGVybmFs
cy5iZWdpbk1lZGlhU2Vzc2lvbkludGVycnVwdGlvbigiZW50ZXJpbmdiYWNrZ3JvdW5kIik7Cisg
ICAgYXdhaXQgcHJvbWlzZTsKKyAgICBhc3NlcnRfZXF1YWxzKGNvbnRleHQuc3RhdGUsICJpbnRl
cnJ1cHRlZCIpOworCisgICAgcHJvbWlzZSA9IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gY29udGV4
dC5vbnN0YXRlY2hhbmdlID0gcmVzb2x2ZSk7CisgICAgaW50ZXJuYWxzLmVuZE1lZGlhU2Vzc2lv
bkludGVycnVwdGlvbigibWF5cmVzdW1lcGxheWluZyIpOworICAgIGF3YWl0IHByb21pc2U7Cisg
ICAgYXNzZXJ0X2VxdWFscyhjb250ZXh0LnN0YXRlLCAicnVubmluZyIpOworCisgICAgY29uc3Qg
c3RyZWFtID0gYXdhaXQgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoeyBhdWRp
bzogdHJ1ZSB9KTsKKworICAgIGludGVybmFscy5iZWdpbk1lZGlhU2Vzc2lvbkludGVycnVwdGlv
bigiZW50ZXJpbmdiYWNrZ3JvdW5kIik7CisgICAgYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9
PiBzZXRUaW1lb3V0KHJlc29sdmUsIDUwKSk7CisgICAgYXNzZXJ0X2VxdWFscyhjb250ZXh0LnN0
YXRlLCAicnVubmluZyIpOworCisgICAgaW50ZXJuYWxzLmVuZE1lZGlhU2Vzc2lvbkludGVycnVw
dGlvbigibWF5cmVzdW1lcGxheWluZyIpOworCisgICAgcHJvbWlzZSA9IG5ldyBQcm9taXNlKHJl
c29sdmUgPT4gY29udGV4dC5vbnN0YXRlY2hhbmdlID0gcmVzb2x2ZSk7CisgICAgaW50ZXJuYWxz
LmJlZ2luTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uKCJzeXN0ZW0iKTsKKyAgICBhd2FpdCBwcm9t
aXNlOworICAgIGFzc2VydF9lcXVhbHMoY29udGV4dC5zdGF0ZSwgImludGVycnVwdGVkIik7Cit9
LCAiRG8gbm90IGludGVycnVwdCBpZiBhdWRpbyBjYXB0dXJlIGlzIG9uZ29pbmciKTsKKzwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>441856</attachid>
            <date>2021-10-20 01:07:53 -0700</date>
            <delta_ts>2022-03-11 07:46:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231105-20211020100751.patch</filename>
            <type>text/plain</type>
            <size>6590</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0NTIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjBlN2E2NDVkODg4OTg5
Mzk5NzE2ZWVkNTk2ZmMxZWIwZWRmYmJiZC4uNzA1NjdjNGNiYjEyMzY1MjUyNTYxNzA5YzA5OWQ4
OTM4NDY3OGMzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDIxLTEwLTIwICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBBdWRpb0NvbnRleHQgc3Rv
cHMgcGxheWluZyB3aGVuIG1pbmltaXppbmcgb3IgbW92aW5nIHRoZSBtYWNPUyBTYWZhcmkgd2lu
ZG93IHRvIHRoZSBiYWNrZ3JvdW5kLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjMxMTA1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84Mzg4OTY5Nz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbiBjYXNl
IHBhZ2UgaXMgY2FwdHVyaW5nIGF1ZGlvLCBpdCBpcyB1c2VmdWwgdG8gbm90IHN1c3BlbmQgYW4g
YXVkaW8gY29udGV4dCwgd2hpY2ggY2FuIGJlIHVzZWQgZm9yIHZhcmlvdXMgdGhpbmdzIHN1Y2gg
YXM6CisgICAgICAgIC0gcHJlcHJvY2Vzc2luZyBiZWZvcmUgcmVuZGVyaW5nL3RyYW5zbWl0dGlu
ZyBhdWRpbyBkYXRhLgorICAgICAgICAtIHZhcmlvdXMgYXVkaW8gZmVlZGJhY2sgaW4gY2FzZSBv
ZiBWQyAobmV3IHBhcnRpY2lwYW50Li4uKS4KKyAgICAgICAgVGVzdDogd2ViYXVkaW8vYXVkaW9j
b250ZXh0LXN0YXRlLWludGVycnVwdGlvbi13aXRoLWd1bS5odG1sCisKKyAgICAgICAgKiBNb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHA6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0NvbnRleHQuaDoKKwogMjAyMS0xMC0xOSAgQW50b2luZSBRdWludCAgPGdyYW91dHNA
d2Via2l0Lm9yZz4KIAogICAgICAgICBTdXBwb3J0IG1vcmUgQ1NTIHByb3BlcnRpZXMgZm9yIDo6
bWFya2VyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
Q29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4
dC5jcHAKaW5kZXggYWQ3MjhjMzY5NTJiMzBkMDU3NGU3MThmODlkMzRjZGE4NjMyZGYxMy4uZTI0
MjgyN2FmNTk2NDAxNGFjYTRmMmUyNGJlN2ZiOWRhZDNiMzliMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcApAQCAtNDgwLDYgKzQ4MCwy
MSBAQCBNZWRpYVNlc3Npb25Hcm91cElkZW50aWZpZXIgQXVkaW9Db250ZXh0OjptZWRpYVNlc3Np
b25Hcm91cElkZW50aWZpZXIoKSBjb25zdAogICAgIHJldHVybiBkb2N1bWVudCAmJiBkb2N1bWVu
dC0+cGFnZSgpID8gZG9jdW1lbnQtPnBhZ2UoKS0+bWVkaWFTZXNzaW9uR3JvdXBJZGVudGlmaWVy
KCkgOiBNZWRpYVNlc3Npb25Hcm91cElkZW50aWZpZXIgeyB9OwogfQogCitib29sIEF1ZGlvQ29u
dGV4dDo6c2hvdWxkT3ZlcnJpZGVCYWNrZ3JvdW5kUGxheWJhY2tSZXN0cmljdGlvbihQbGF0Zm9y
bU1lZGlhU2Vzc2lvbjo6SW50ZXJydXB0aW9uVHlwZSB0eXBlKSBjb25zdAoreworICAgIGlmICh0
eXBlICE9IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpFbnRlcmluZ0JhY2tncm91bmQpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgaWYgKGRvY3Vt
ZW50KCkgJiYgZG9jdW1lbnQoKS0+bWVkaWFTdGF0ZSgpLmNvbnRhaW5zQW55KE1lZGlhUHJvZHVj
ZXJNZWRpYVN0YXRlOjpIYXNBY3RpdmVBdWRpb0NhcHR1cmVEZXZpY2UpKSB7CisgICAgICAgIElO
Rk9fTE9HKExPR0lERU5USUZJRVIsICJyZXR1cm5pbmcgdHJ1ZSBiZWNhdXNlIGRvY3VtZW50IGlz
IGNhcHR1cmluZyBhdWRpbyIpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisjZW5kaWYK
KworICAgIHJldHVybiBmYWxzZTsKK30KKwogYm9vbCBBdWRpb0NvbnRleHQ6OmlzU3VzcGVuZGVk
KCkgY29uc3QKIHsKICAgICByZXR1cm4gIWRvY3VtZW50KCkgfHwgZG9jdW1lbnQoKS0+YWN0aXZl
RE9NT2JqZWN0c0FyZVN1c3BlbmRlZCgpIHx8IGRvY3VtZW50KCktPmFjdGl2ZURPTU9iamVjdHNB
cmVTdG9wcGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Nv
bnRleHQuaAppbmRleCAxMmI2NTQxMjVlMWYzOTliMWIwZTI2Y2Y4NGU1ODk5ZmI4ODZkN2I4Li45
MzlkMDI4ZDI2MDc5MmE3ZGJkNjc5MDMzOTkxZGMwMDc1YTcyOWQ5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmgKQEAgLTEyNyw3ICsxMjcsNyBA
QCBwcml2YXRlOgogICAgIGJvb2wgY2FuUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5kcygpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVtb3RlQ29u
dHJvbENvbW1hbmQoUGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlw
ZSwgY29uc3QgUGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbW1hbmRBcmd1bWVudCYpIGZp
bmFsIHsgfQogICAgIGJvb2wgc3VwcG9ydHNTZWVraW5nKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
ZmFsc2U7IH0KLSAgICBib29sIHNob3VsZE92ZXJyaWRlQmFja2dyb3VuZFBsYXliYWNrUmVzdHJp
Y3Rpb24oUGxhdGZvcm1NZWRpYVNlc3Npb246OkludGVycnVwdGlvblR5cGUpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBzaG91bGRPdmVycmlkZUJhY2tncm91bmRQbGF5
YmFja1Jlc3RyaWN0aW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpJbnRlcnJ1cHRpb25UeXBlKSBj
b25zdCBmaW5hbDsKICAgICBib29sIGNhblByb2R1Y2VBdWRpbygpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIHRydWU7IH0KICAgICBib29sIGlzU3VzcGVuZGVkKCkgY29uc3QgZmluYWw7CiAgICAgYm9v
bCBpc1BsYXlpbmcoKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAxYmYzMjBhYjAzNjVmNDNkZTMwOWNj
NzIzOTRhN2IzNmE5NDRjYTU1Li41NGEyMTdkY2E0YTE0NmJkNmNmMTA0OTZkMDNhNDIwOTczNDU5
Mjc4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjEtMTAtMjAgIFlvdWVubiBGYWJsZXQgIDx5
b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIEF1ZGlvQ29udGV4dCBzdG9wcyBwbGF5aW5nIHdo
ZW4gbWluaW1pemluZyBvciBtb3ZpbmcgdGhlIG1hY09TIFNhZmFyaSB3aW5kb3cgdG8gdGhlIGJh
Y2tncm91bmQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzExMDUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzgzODg5Njk3PgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9tZWRpYXN0cmVhbS9h
dWRpb2NvbnRleHQtc3RhdGUtaW50ZXJydXB0aW9uLXdpdGgtZ3VtLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9tZWRpYXN0cmVhbS9hdWRpb2NvbnRleHQtc3RhdGUtaW50ZXJy
dXB0aW9uLXdpdGgtZ3VtLmh0bWw6IEFkZGVkLgorCiAyMDIxLTEwLTE5ICBCZW4gTmhhbSAgPG5o
YW1AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBOZXR3b3JrUHJvY2VzcyBzdHVicyBmb3IgcHVz
aCBzdWJzY3JpcHRpb25zCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFt
L2F1ZGlvY29udGV4dC1zdGF0ZS1pbnRlcnJ1cHRpb24td2l0aC1ndW0tZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9hdWRpb2NvbnRleHQtc3RhdGUtaW50ZXJydXB0
aW9uLXdpdGgtZ3VtLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xYWRiOTgzNjBlMDVlYzFhMDQy
YzFhNjY2MTE1NTg0ZDRmZmJiODVhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9tZWRpYXN0cmVhbS9hdWRpb2NvbnRleHQtc3RhdGUtaW50ZXJydXB0aW9uLXdpdGgtZ3VtLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAKKworUEFTUyBEbyBub3QgaW50ZXJydXB0IGlmIGF1
ZGlvIGNhcHR1cmUgaXMgb25nb2luZworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L21l
ZGlhc3RyZWFtL2F1ZGlvY29udGV4dC1zdGF0ZS1pbnRlcnJ1cHRpb24td2l0aC1ndW0uaHRtbCBi
L0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vYXVkaW9jb250ZXh0LXN0YXRlLWludGVycnVw
dGlvbi13aXRoLWd1bS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ1YzA3ODIyZjNjODI2YmU1NzZmYTQ5Yzk2
MjMyNzI1ZjY1NGZlY2YKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlh
c3RyZWFtL2F1ZGlvY29udGV4dC1zdGF0ZS1pbnRlcnJ1cHRpb24td2l0aC1ndW0uaHRtbApAQCAt
MCwwICsxLDUxIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0icmVzb3VyY2VzL2F1ZGlvLXRlc3RpbmcuanMi
Pjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0PgorcHJvbWlzZV90ZXN0KGFzeW5j
ICh0KSA9PiB7CisgICAgaWYgKCF3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICByZXR1cm47CisK
KyAgICBjb25zdCBjb250ZXh0ID0gbmV3IEF1ZGlvQ29udGV4dCgpOworCisgICAgbGV0IHByb21p
c2UgPSBuZXcgUHJvbWlzZShyZXNvbHZlID0+IGNvbnRleHQub25zdGF0ZWNoYW5nZSA9IHJlc29s
dmUpOworCisgICAgY29uc3Qgbm9kZSA9IGNvbnRleHQuY3JlYXRlQnVmZmVyU291cmNlKCk7Cisg
ICAgbm9kZS5jb25uZWN0KGNvbnRleHQuZGVzdGluYXRpb24pOworCisgICAgYXdhaXQgcHJvbWlz
ZTsKKworICAgIHByb21pc2UgPSBuZXcgUHJvbWlzZShyZXNvbHZlID0+IGNvbnRleHQub25zdGF0
ZWNoYW5nZSA9IHJlc29sdmUpOworICAgIGludGVybmFscy5iZWdpbk1lZGlhU2Vzc2lvbkludGVy
cnVwdGlvbigiZW50ZXJpbmdiYWNrZ3JvdW5kIik7CisgICAgYXdhaXQgcHJvbWlzZTsKKyAgICBh
c3NlcnRfZXF1YWxzKGNvbnRleHQuc3RhdGUsICJpbnRlcnJ1cHRlZCIpOworCisgICAgcHJvbWlz
ZSA9IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gY29udGV4dC5vbnN0YXRlY2hhbmdlID0gcmVzb2x2
ZSk7CisgICAgaW50ZXJuYWxzLmVuZE1lZGlhU2Vzc2lvbkludGVycnVwdGlvbigibWF5cmVzdW1l
cGxheWluZyIpOworICAgIGF3YWl0IHByb21pc2U7CisgICAgYXNzZXJ0X2VxdWFscyhjb250ZXh0
LnN0YXRlLCAicnVubmluZyIpOworCisgICAgaWYgKCFuYXZpZ2F0b3IubWVkaWFEZXZpY2VzIHx8
ICFuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgY29uc3Qgc3RyZWFtID0gYXdhaXQgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2Vy
TWVkaWEoeyBhdWRpbzogdHJ1ZSB9KTsKKworICAgIGludGVybmFscy5iZWdpbk1lZGlhU2Vzc2lv
bkludGVycnVwdGlvbigiZW50ZXJpbmdiYWNrZ3JvdW5kIik7CisgICAgYXdhaXQgbmV3IFByb21p
c2UocmVzb2x2ZSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIDUwKSk7CisgICAgYXNzZXJ0X2VxdWFs
cyhjb250ZXh0LnN0YXRlLCAicnVubmluZyIpOworCisgICAgaW50ZXJuYWxzLmVuZE1lZGlhU2Vz
c2lvbkludGVycnVwdGlvbigibWF5cmVzdW1lcGxheWluZyIpOworCisgICAgcHJvbWlzZSA9IG5l
dyBQcm9taXNlKHJlc29sdmUgPT4gY29udGV4dC5vbnN0YXRlY2hhbmdlID0gcmVzb2x2ZSk7Cisg
ICAgaW50ZXJuYWxzLmJlZ2luTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uKCJzeXN0ZW0iKTsKKyAg
ICBhd2FpdCBwcm9taXNlOworICAgIGFzc2VydF9lcXVhbHMoY29udGV4dC5zdGF0ZSwgImludGVy
cnVwdGVkIik7Cit9LCAiRG8gbm90IGludGVycnVwdCBpZiBhdWRpbyBjYXB0dXJlIGlzIG9uZ29p
bmciKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446715</attachid>
            <date>2021-12-10 05:52:04 -0800</date>
            <delta_ts>2022-03-11 07:46:10 -0800</delta_ts>
            <desc>Check if the destination is not connected</desc>
            <filename>check-destination-is-not-connected.patch</filename>
            <type>text/plain</type>
            <size>5325</size>
            <attacher name="Alex Chronopoulos">achronop</attacher>
            
              <data encoding="base64">Y29tbWl0IGVjNDJhNzgxNzNhYzZjOGE3NzczNGQ0N2QyM2E3ODk3MDkzYjAxNWEKQXV0aG9yOiBB
bGV4IENocm9ub3BvdWxvcyA8YWNocm9ub3BAZ21haWwuY29tPgpEYXRlOiAgIFR1ZSBEZWMgNyAx
NjoxMToyNSAyMDIxICswMTAwCgogICAgQWRkIGNoZWNrIGlmIHRoZSBkZXN0aW5hdGlvbiBpcyBu
b3QgY29ubmVjdGVkIGluIG9yZGVyIHRvIGFsbG93IHJ1bm5pbmcgaW4gdGhlIGJhY2tncm91bmQu
CiAgICAKICAgIFBlciBwcmV2aW91cyBwYXRjaCBBdWRpb0NvbnRleHQgd2lsbCBub3Qgc3RvcCBy
dW5uaW5nIHdoZW4gbWVkaWEgY2FwdHVyZSBpcyBvbi4KICAgIEFjY29yZGluZyB0byB0aGUgZGlz
Y3Vzc2lvbiBpbiB0aGUgYnVnIGEgYmV0dGVyIGJlaGF2aW9yIHdvdWxkIGJlIHRvIGNoZWNrIGlm
CiAgICBhbHNvIHRoZSBkZXN0aW5hdGlvbiBpcyBub3QgY29ubmVjdGVkIGluIG9yZGVyIHRvIGFs
bG93IG92ZXJpZGRpbmcgdGhlIHJ1bm5pbmcKICAgIG9uIGJhY2tncm91bmQgcnVsZSAuCgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9hdWRpb2NvbnRleHQtc3RhdGUt
aW50ZXJydXB0aW9uLXdpdGgtZ3VtLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFt
L2F1ZGlvY29udGV4dC1zdGF0ZS1pbnRlcnJ1cHRpb24td2l0aC1ndW0uaHRtbAppbmRleCBkNWMw
NzgyMmYzYzguLmJiZjdiNzI5MzQ2MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRp
YXN0cmVhbS9hdWRpb2NvbnRleHQtc3RhdGUtaW50ZXJydXB0aW9uLXdpdGgtZ3VtLmh0bWwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9hdWRpb2NvbnRleHQtc3RhdGUtaW50ZXJy
dXB0aW9uLXdpdGgtZ3VtLmh0bWwKQEAgLTE2LDEwICsxNiwxMSBAQCBwcm9taXNlX3Rlc3QoYXN5
bmMgKHQpID0+IHsKICAgICBsZXQgcHJvbWlzZSA9IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gY29u
dGV4dC5vbnN0YXRlY2hhbmdlID0gcmVzb2x2ZSk7CiAKICAgICBjb25zdCBub2RlID0gY29udGV4
dC5jcmVhdGVCdWZmZXJTb3VyY2UoKTsKLSAgICBub2RlLmNvbm5lY3QoY29udGV4dC5kZXN0aW5h
dGlvbik7CiAKICAgICBhd2FpdCBwcm9taXNlOwogCisgICAgLy8gQ2hlY2sgZW50ZXJpbmcgYmFj
a2dyb3VuZCB3aGVuIGF1ZGlvIGNhcHR1cmUgaXMgb2ZmIGFuZCBkZXN0aW5hdGlvbgorICAgIC8v
IGlzIG5vdCBjb25uZWN0ZWQuCiAgICAgcHJvbWlzZSA9IG5ldyBQcm9taXNlKHJlc29sdmUgPT4g
Y29udGV4dC5vbnN0YXRlY2hhbmdlID0gcmVzb2x2ZSk7CiAgICAgaW50ZXJuYWxzLmJlZ2luTWVk
aWFTZXNzaW9uSW50ZXJydXB0aW9uKCJlbnRlcmluZ2JhY2tncm91bmQiKTsKICAgICBhd2FpdCBw
cm9taXNlOwpAQCAtMzAsNiArMzEsOCBAQCBwcm9taXNlX3Rlc3QoYXN5bmMgKHQpID0+IHsKICAg
ICBhd2FpdCBwcm9taXNlOwogICAgIGFzc2VydF9lcXVhbHMoY29udGV4dC5zdGF0ZSwgInJ1bm5p
bmciKTsKIAorICAgIC8vIENoZWNrIGVudGVyaW5nIGJhY2tncm91bmQgd2hlbiBhdWRpbyBjYXB0
dXJlIGlzIG9uIGFuZCBkZXN0aW5hdGlvbgorICAgIC8vIGlzIG5vdCBjb25uZWN0ZWQuCiAgICAg
aWYgKCFuYXZpZ2F0b3IubWVkaWFEZXZpY2VzIHx8ICFuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdl
dFVzZXJNZWRpYSkKICAgICAgICAgcmV0dXJuOwogCkBAIC00MCw2ICs0MywzNyBAQCBwcm9taXNl
X3Rlc3QoYXN5bmMgKHQpID0+IHsKICAgICBhc3NlcnRfZXF1YWxzKGNvbnRleHQuc3RhdGUsICJy
dW5uaW5nIik7CiAKICAgICBpbnRlcm5hbHMuZW5kTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uKCJt
YXlyZXN1bWVwbGF5aW5nIik7CisgICAgYXNzZXJ0X2VxdWFscyhjb250ZXh0LnN0YXRlLCAicnVu
bmluZyIpOworCisgICAgLy8gQ2hlY2sgZW50ZXJpbmcgYmFja2dyb3VuZCB3aGVuIGF1ZGlvIGNh
cHR1cmUgaXMgb24gYW5kIGRlc3RpbmF0aW9uCisgICAgLy8gaXMgY29ubmVjdGVkLgorICAgIG5v
ZGUuY29ubmVjdChjb250ZXh0LmRlc3RpbmF0aW9uKTsKKyAgICBhd2FpdCBuZXcgUHJvbWlzZShy
ZXNvbHZlID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgNTApKTsKKworICAgIHByb21pc2UgPSBuZXcg
UHJvbWlzZShyZXNvbHZlID0+IGNvbnRleHQub25zdGF0ZWNoYW5nZSA9IHJlc29sdmUpOworICAg
IGludGVybmFscy5iZWdpbk1lZGlhU2Vzc2lvbkludGVycnVwdGlvbigiZW50ZXJpbmdiYWNrZ3Jv
dW5kIik7CisgICAgYXdhaXQgcHJvbWlzZTsKKyAgICBhc3NlcnRfZXF1YWxzKGNvbnRleHQuc3Rh
dGUsICJpbnRlcnJ1cHRlZCIpOworCisgICAgcHJvbWlzZSA9IG5ldyBQcm9taXNlKHJlc29sdmUg
PT4gY29udGV4dC5vbnN0YXRlY2hhbmdlID0gcmVzb2x2ZSk7CisgICAgaW50ZXJuYWxzLmVuZE1l
ZGlhU2Vzc2lvbkludGVycnVwdGlvbigibWF5cmVzdW1lcGxheWluZyIpOworICAgIGF3YWl0IHBy
b21pc2U7CisgICAgYXNzZXJ0X2VxdWFscyhjb250ZXh0LnN0YXRlLCAicnVubmluZyIpOworCisg
ICAgLy8gQ2hlY2sgZW50ZXJpbmcgYmFja2dyb3VuZCB3aGVuIGF1ZGlvIGNhcHR1cmUgaXMgb2Zm
IGFuZCBkZXN0aW5hdGlvbgorICAgIC8vIGlzIGNvbm5lY3RlZC4KKyAgICBzdHJlYW0uZ2V0QXVk
aW9UcmFja3MoKVswXS5zdG9wKCk7CisgICAgYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiBz
ZXRUaW1lb3V0KHJlc29sdmUsIDUwKSk7CisKKyAgICBwcm9taXNlID0gbmV3IFByb21pc2UocmVz
b2x2ZSA9PiBjb250ZXh0Lm9uc3RhdGVjaGFuZ2UgPSByZXNvbHZlKTsKKyAgICBpbnRlcm5hbHMu
YmVnaW5NZWRpYVNlc3Npb25JbnRlcnJ1cHRpb24oImVudGVyaW5nYmFja2dyb3VuZCIpOworICAg
IGF3YWl0IHByb21pc2U7CisgICAgYXNzZXJ0X2VxdWFscyhjb250ZXh0LnN0YXRlLCAiaW50ZXJy
dXB0ZWQiKTsKKworICAgIHByb21pc2UgPSBuZXcgUHJvbWlzZShyZXNvbHZlID0+IGNvbnRleHQu
b25zdGF0ZWNoYW5nZSA9IHJlc29sdmUpOworICAgIGludGVybmFscy5lbmRNZWRpYVNlc3Npb25J
bnRlcnJ1cHRpb24oIm1heXJlc3VtZXBsYXlpbmciKTsKKyAgICBhd2FpdCBwcm9taXNlOworICAg
IGFzc2VydF9lcXVhbHMoY29udGV4dC5zdGF0ZSwgInJ1bm5pbmciKTsKIAogICAgIHByb21pc2Ug
PSBuZXcgUHJvbWlzZShyZXNvbHZlID0+IGNvbnRleHQub25zdGF0ZWNoYW5nZSA9IHJlc29sdmUp
OwogICAgIGludGVybmFscy5iZWdpbk1lZGlhU2Vzc2lvbkludGVycnVwdGlvbigic3lzdGVtIik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAK
aW5kZXggZTI0MjgyN2FmNTk2Li45NWYwODRlNGY0OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAKQEAgLTQ4Nyw4ICs0ODcsMTEgQEAg
Ym9vbCBBdWRpb0NvbnRleHQ6OnNob3VsZE92ZXJyaWRlQmFja2dyb3VuZFBsYXliYWNrUmVzdHJp
Y3Rpb24oUGxhdGZvcm1NZWRpYVNlc3MKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAgICAg
aWYgKGRvY3VtZW50KCkgJiYgZG9jdW1lbnQoKS0+bWVkaWFTdGF0ZSgpLmNvbnRhaW5zQW55KE1l
ZGlhUHJvZHVjZXJNZWRpYVN0YXRlOjpIYXNBY3RpdmVBdWRpb0NhcHR1cmVEZXZpY2UpKSB7Ci0g
ICAgICAgIElORk9fTE9HKExPR0lERU5USUZJRVIsICJyZXR1cm5pbmcgdHJ1ZSBiZWNhdXNlIGRv
Y3VtZW50IGlzIGNhcHR1cmluZyBhdWRpbyIpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg
ICAgQVNTRVJUKG1fZGVzdGluYXRpb25Ob2RlLT5udW1iZXJPZklucHV0cygpID09IDEpOworICAg
ICAgICBpZiAoIW1fZGVzdGluYXRpb25Ob2RlLT5pbnB1dCgwKS0+aXNDb25uZWN0ZWQoKSkgewor
ICAgICAgICAgICAgSU5GT19MT0coTE9HSURFTlRJRklFUiwgInJldHVybmluZyB0cnVlIGJlY2F1
c2UgZG9jdW1lbnQgaXMgY2FwdHVyaW5nIGF1ZGlvIGFuZCBkZXN0IGlzIG5vdCB1c2VkIik7Cisg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQogICAgIH0KICNlbmRpZgogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5jcHAKaW5kZXggM2FlZTQ2
NjAzMTdkLi45ZmFhZGU5ZDVhMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQXVkaW9Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvTm9kZS5jcHAKQEAgLTE2NCw3ICsxNjQsNyBAQCB2b2lkIEF1ZGlvTm9kZTo6YWRk
T3V0cHV0KHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMpCiAgICAgbV9vdXRwdXRzLmFwcGVuZCht
YWtlVW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywgbnVtYmVyT2ZDaGFubmVscykpOwogfQog
Ci1BdWRpb05vZGVJbnB1dCogQXVkaW9Ob2RlOjppbnB1dCh1bnNpZ25lZCBpKQorQXVkaW9Ob2Rl
SW5wdXQqIEF1ZGlvTm9kZTo6aW5wdXQodW5zaWduZWQgaSkgY29uc3QKIHsKICAgICBpZiAoaSA8
IG1faW5wdXRzLnNpemUoKSkKICAgICAgICAgcmV0dXJuIG1faW5wdXRzW2ldLmdldCgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmgKaW5kZXggZWJiM2RjMGFm
YzU5Li44M2EyZDIxNjc2NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9B
dWRpb05vZGUuaApAQCAtMTIwLDcgKzEyMCw3IEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCBudW1i
ZXJPZklucHV0cygpIGNvbnN0IHsgcmV0dXJuIG1faW5wdXRzLnNpemUoKTsgfQogICAgIHVuc2ln
bmVkIG51bWJlck9mT3V0cHV0cygpIGNvbnN0IHsgcmV0dXJuIG1fb3V0cHV0cy5zaXplKCk7IH0K
IAotICAgIEF1ZGlvTm9kZUlucHV0KiBpbnB1dCh1bnNpZ25lZCk7CisgICAgQXVkaW9Ob2RlSW5w
dXQqIGlucHV0KHVuc2lnbmVkKSBjb25zdDsKICAgICBBdWRpb05vZGVPdXRwdXQqIG91dHB1dCh1
bnNpZ25lZCk7CiAKICAgICAvLyBDYWxsZWQgZnJvbSBtYWluIHRocmVhZCBieSBjb3JyZXNwb25k
aW5nIEphdmFTY3JpcHQgbWV0aG9kcy4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447455</attachid>
            <date>2021-12-17 07:35:53 -0800</date>
            <delta_ts>2022-03-11 07:46:15 -0800</delta_ts>
            <desc>Combined diff to run the tests</desc>
            <filename>combined-diff.patch</filename>
            <type>text/plain</type>
            <size>9330</size>
            <attacher name="Alex Chronopoulos">achronop</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBhMWFhZmNjZmVlNDMuLmNhZWY1YzU3ZDY5YyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtNzY5MCw2ICs3Njkw
LDE3IEBACiAgICAgICAgICogZmFzdC9jYW52YXMvY3JlYXRlSW1hZ2VCaXRtYXAtaW52YWxpZC1p
bWFnZS1ibG9iLWNyYXNoLWV4cGVjdGVkLnR4dDogQWRkZWQuCiAgICAgICAgICogZmFzdC9jYW52
YXMvY3JlYXRlSW1hZ2VCaXRtYXAtaW52YWxpZC1pbWFnZS1ibG9iLWNyYXNoLmh0bWw6IEFkZGVk
LgogCisyMDIxLTEwLTIwICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAg
ICAgICBBdWRpb0NvbnRleHQgc3RvcHMgcGxheWluZyB3aGVuIG1pbmltaXppbmcgb3IgbW92aW5n
IHRoZSBtYWNPUyBTYWZhcmkgd2luZG93IHRvIHRoZSBiYWNrZ3JvdW5kLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMxMTA1CisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS84Mzg4OTY5Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIGZhc3QvbWVkaWFzdHJlYW0vYXVkaW9jb250ZXh0LXN0YXRlLWludGVy
cnVwdGlvbi13aXRoLWd1bS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvbWVk
aWFzdHJlYW0vYXVkaW9jb250ZXh0LXN0YXRlLWludGVycnVwdGlvbi13aXRoLWd1bS5odG1sOiBB
ZGRlZC4KKwogMjAyMS0xMC0xOSAgQmVuIE5oYW0gIDxuaGFtQGFwcGxlLmNvbT4KIAogICAgICAg
ICBBZGQgTmV0d29ya1Byb2Nlc3Mgc3R1YnMgZm9yIHB1c2ggc3Vic2NyaXB0aW9ucwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9hdWRpb2NvbnRleHQtc3RhdGUtaW50
ZXJydXB0aW9uLXdpdGgtZ3VtLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFz
dHJlYW0vYXVkaW9jb250ZXh0LXN0YXRlLWludGVycnVwdGlvbi13aXRoLWd1bS1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4xYWRiOTgzNjBlMDUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL2F1ZGlvY29u
dGV4dC1zdGF0ZS1pbnRlcnJ1cHRpb24td2l0aC1ndW0tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
MyBAQAorCitQQVNTIERvIG5vdCBpbnRlcnJ1cHQgaWYgYXVkaW8gY2FwdHVyZSBpcyBvbmdvaW5n
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vYXVkaW9jb250ZXh0
LXN0YXRlLWludGVycnVwdGlvbi13aXRoLWd1bS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRp
YXN0cmVhbS9hdWRpb2NvbnRleHQtc3RhdGUtaW50ZXJydXB0aW9uLXdpdGgtZ3VtLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5iYmY3YjcyOTM0NjAKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL2F1ZGlvY29udGV4dC1z
dGF0ZS1pbnRlcnJ1cHRpb24td2l0aC1ndW0uaHRtbApAQCAtMCwwICsxLDg1IEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rl
c3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVz
dGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3Jp
cHQiIHNyYz0icmVzb3VyY2VzL2F1ZGlvLXRlc3RpbmcuanMiPjwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+Cis8c2NyaXB0PgorcHJvbWlzZV90ZXN0KGFzeW5jICh0KSA9PiB7CisgICAgaWYgKCF3
aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICByZXR1cm47CisKKyAgICBjb25zdCBjb250ZXh0ID0g
bmV3IEF1ZGlvQ29udGV4dCgpOworCisgICAgbGV0IHByb21pc2UgPSBuZXcgUHJvbWlzZShyZXNv
bHZlID0+IGNvbnRleHQub25zdGF0ZWNoYW5nZSA9IHJlc29sdmUpOworCisgICAgY29uc3Qgbm9k
ZSA9IGNvbnRleHQuY3JlYXRlQnVmZmVyU291cmNlKCk7CisKKyAgICBhd2FpdCBwcm9taXNlOwor
CisgICAgLy8gQ2hlY2sgZW50ZXJpbmcgYmFja2dyb3VuZCB3aGVuIGF1ZGlvIGNhcHR1cmUgaXMg
b2ZmIGFuZCBkZXN0aW5hdGlvbgorICAgIC8vIGlzIG5vdCBjb25uZWN0ZWQuCisgICAgcHJvbWlz
ZSA9IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gY29udGV4dC5vbnN0YXRlY2hhbmdlID0gcmVzb2x2
ZSk7CisgICAgaW50ZXJuYWxzLmJlZ2luTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uKCJlbnRlcmlu
Z2JhY2tncm91bmQiKTsKKyAgICBhd2FpdCBwcm9taXNlOworICAgIGFzc2VydF9lcXVhbHMoY29u
dGV4dC5zdGF0ZSwgImludGVycnVwdGVkIik7CisKKyAgICBwcm9taXNlID0gbmV3IFByb21pc2Uo
cmVzb2x2ZSA9PiBjb250ZXh0Lm9uc3RhdGVjaGFuZ2UgPSByZXNvbHZlKTsKKyAgICBpbnRlcm5h
bHMuZW5kTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uKCJtYXlyZXN1bWVwbGF5aW5nIik7CisgICAg
YXdhaXQgcHJvbWlzZTsKKyAgICBhc3NlcnRfZXF1YWxzKGNvbnRleHQuc3RhdGUsICJydW5uaW5n
Iik7CisKKyAgICAvLyBDaGVjayBlbnRlcmluZyBiYWNrZ3JvdW5kIHdoZW4gYXVkaW8gY2FwdHVy
ZSBpcyBvbiBhbmQgZGVzdGluYXRpb24KKyAgICAvLyBpcyBub3QgY29ubmVjdGVkLgorICAgIGlm
ICghbmF2aWdhdG9yLm1lZGlhRGV2aWNlcyB8fCAhbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRV
c2VyTWVkaWEpCisgICAgICAgIHJldHVybjsKKworICAgIGNvbnN0IHN0cmVhbSA9IGF3YWl0IG5h
dmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHsgYXVkaW86IHRydWUgfSk7CisKKyAg
ICBpbnRlcm5hbHMuYmVnaW5NZWRpYVNlc3Npb25JbnRlcnJ1cHRpb24oImVudGVyaW5nYmFja2dy
b3VuZCIpOworICAgIGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gc2V0VGltZW91dChyZXNv
bHZlLCA1MCkpOworICAgIGFzc2VydF9lcXVhbHMoY29udGV4dC5zdGF0ZSwgInJ1bm5pbmciKTsK
KworICAgIGludGVybmFscy5lbmRNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb24oIm1heXJlc3VtZXBs
YXlpbmciKTsKKyAgICBhc3NlcnRfZXF1YWxzKGNvbnRleHQuc3RhdGUsICJydW5uaW5nIik7CisK
KyAgICAvLyBDaGVjayBlbnRlcmluZyBiYWNrZ3JvdW5kIHdoZW4gYXVkaW8gY2FwdHVyZSBpcyBv
biBhbmQgZGVzdGluYXRpb24KKyAgICAvLyBpcyBjb25uZWN0ZWQuCisgICAgbm9kZS5jb25uZWN0
KGNvbnRleHQuZGVzdGluYXRpb24pOworICAgIGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4g
c2V0VGltZW91dChyZXNvbHZlLCA1MCkpOworCisgICAgcHJvbWlzZSA9IG5ldyBQcm9taXNlKHJl
c29sdmUgPT4gY29udGV4dC5vbnN0YXRlY2hhbmdlID0gcmVzb2x2ZSk7CisgICAgaW50ZXJuYWxz
LmJlZ2luTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uKCJlbnRlcmluZ2JhY2tncm91bmQiKTsKKyAg
ICBhd2FpdCBwcm9taXNlOworICAgIGFzc2VydF9lcXVhbHMoY29udGV4dC5zdGF0ZSwgImludGVy
cnVwdGVkIik7CisKKyAgICBwcm9taXNlID0gbmV3IFByb21pc2UocmVzb2x2ZSA9PiBjb250ZXh0
Lm9uc3RhdGVjaGFuZ2UgPSByZXNvbHZlKTsKKyAgICBpbnRlcm5hbHMuZW5kTWVkaWFTZXNzaW9u
SW50ZXJydXB0aW9uKCJtYXlyZXN1bWVwbGF5aW5nIik7CisgICAgYXdhaXQgcHJvbWlzZTsKKyAg
ICBhc3NlcnRfZXF1YWxzKGNvbnRleHQuc3RhdGUsICJydW5uaW5nIik7CisKKyAgICAvLyBDaGVj
ayBlbnRlcmluZyBiYWNrZ3JvdW5kIHdoZW4gYXVkaW8gY2FwdHVyZSBpcyBvZmYgYW5kIGRlc3Rp
bmF0aW9uCisgICAgLy8gaXMgY29ubmVjdGVkLgorICAgIHN0cmVhbS5nZXRBdWRpb1RyYWNrcygp
WzBdLnN0b3AoKTsKKyAgICBhd2FpdCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHNldFRpbWVvdXQo
cmVzb2x2ZSwgNTApKTsKKworICAgIHByb21pc2UgPSBuZXcgUHJvbWlzZShyZXNvbHZlID0+IGNv
bnRleHQub25zdGF0ZWNoYW5nZSA9IHJlc29sdmUpOworICAgIGludGVybmFscy5iZWdpbk1lZGlh
U2Vzc2lvbkludGVycnVwdGlvbigiZW50ZXJpbmdiYWNrZ3JvdW5kIik7CisgICAgYXdhaXQgcHJv
bWlzZTsKKyAgICBhc3NlcnRfZXF1YWxzKGNvbnRleHQuc3RhdGUsICJpbnRlcnJ1cHRlZCIpOwor
CisgICAgcHJvbWlzZSA9IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gY29udGV4dC5vbnN0YXRlY2hh
bmdlID0gcmVzb2x2ZSk7CisgICAgaW50ZXJuYWxzLmVuZE1lZGlhU2Vzc2lvbkludGVycnVwdGlv
bigibWF5cmVzdW1lcGxheWluZyIpOworICAgIGF3YWl0IHByb21pc2U7CisgICAgYXNzZXJ0X2Vx
dWFscyhjb250ZXh0LnN0YXRlLCAicnVubmluZyIpOworCisgICAgcHJvbWlzZSA9IG5ldyBQcm9t
aXNlKHJlc29sdmUgPT4gY29udGV4dC5vbnN0YXRlY2hhbmdlID0gcmVzb2x2ZSk7CisgICAgaW50
ZXJuYWxzLmJlZ2luTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uKCJzeXN0ZW0iKTsKKyAgICBhd2Fp
dCBwcm9taXNlOworICAgIGFzc2VydF9lcXVhbHMoY29udGV4dC5zdGF0ZSwgImludGVycnVwdGVk
Iik7Cit9LCAiRG8gbm90IGludGVycnVwdCBpZiBhdWRpbyBjYXB0dXJlIGlzIG9uZ29pbmciKTsK
Kzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDY4Y2ZiYjYzNzIyMS4u
ZDQxNjkwNmZlNzZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0zMzY1Nyw2ICszMzY1NywyMiBAQAogICAgICAg
ICAoV2ViQ29yZTo6cGFpbnRBdHRhY2htZW50VGl0bGVCYWNrZ3JvdW5kKTogVXNlIGNvbG9yRnJv
bUNvY29hQ29sb3IgaW5zdGVhZCBvZgogICAgICAgICBjb2xvckZyb21OU0NvbG9yLgogCisyMDIx
LTEwLTIwICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBBdWRp
b0NvbnRleHQgc3RvcHMgcGxheWluZyB3aGVuIG1pbmltaXppbmcgb3IgbW92aW5nIHRoZSBtYWNP
UyBTYWZhcmkgd2luZG93IHRvIHRoZSBiYWNrZ3JvdW5kLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMxMTA1CisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS84Mzg4OTY5Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBJbiBjYXNlIHBhZ2UgaXMgY2FwdHVyaW5nIGF1ZGlvLCBpdCBpcyB1c2VmdWwgdG8gbm90
IHN1c3BlbmQgYW4gYXVkaW8gY29udGV4dCwgd2hpY2ggY2FuIGJlIHVzZWQgZm9yIHZhcmlvdXMg
dGhpbmdzIHN1Y2ggYXM6CisgICAgICAgIC0gcHJlcHJvY2Vzc2luZyBiZWZvcmUgcmVuZGVyaW5n
L3RyYW5zbWl0dGluZyBhdWRpbyBkYXRhLgorICAgICAgICAtIHZhcmlvdXMgYXVkaW8gZmVlZGJh
Y2sgaW4gY2FzZSBvZiBWQyAobmV3IHBhcnRpY2lwYW50Li4uKS4KKyAgICAgICAgVGVzdDogd2Vi
YXVkaW8vYXVkaW9jb250ZXh0LXN0YXRlLWludGVycnVwdGlvbi13aXRoLWd1bS5odG1sCisKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHA6CisgICAgICAgICogTW9k
dWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaDoKKwogMjAyMS0xMC0yMSAgRGV2aW4gUm91c3Nv
ICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAgW2Nzcy12YWx1ZXMtNF0gU3VwcG9ydCBz
bWFsbCAoc3YqKSwgbGFyZ2UgKGx2KikgYW5kIGR5bmFtaWMgKGR2Kikgdmlld3BvcnQgdW5pdHMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcApp
bmRleCBhMzczNDg1OGU5Y2YuLmNmODZiMWFjNDJmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcApAQCAtNDgwLDYgKzQ4MCwyNCBAQCBN
ZWRpYVNlc3Npb25Hcm91cElkZW50aWZpZXIgQXVkaW9Db250ZXh0OjptZWRpYVNlc3Npb25Hcm91
cElkZW50aWZpZXIoKSBjb25zdAogICAgIHJldHVybiBkb2N1bWVudCAmJiBkb2N1bWVudC0+cGFn
ZSgpID8gZG9jdW1lbnQtPnBhZ2UoKS0+bWVkaWFTZXNzaW9uR3JvdXBJZGVudGlmaWVyKCkgOiBN
ZWRpYVNlc3Npb25Hcm91cElkZW50aWZpZXIgeyB9OwogfQogCitib29sIEF1ZGlvQ29udGV4dDo6
c2hvdWxkT3ZlcnJpZGVCYWNrZ3JvdW5kUGxheWJhY2tSZXN0cmljdGlvbihQbGF0Zm9ybU1lZGlh
U2Vzc2lvbjo6SW50ZXJydXB0aW9uVHlwZSB0eXBlKSBjb25zdAoreworICAgIGlmICh0eXBlICE9
IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpFbnRlcmluZ0JhY2tncm91bmQpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgaWYgKGRvY3VtZW50KCkg
JiYgZG9jdW1lbnQoKS0+bWVkaWFTdGF0ZSgpLmNvbnRhaW5zQW55KE1lZGlhUHJvZHVjZXJNZWRp
YVN0YXRlOjpIYXNBY3RpdmVBdWRpb0NhcHR1cmVEZXZpY2UpKSB7CisgICAgICAgIEFTU0VSVCht
X2Rlc3RpbmF0aW9uTm9kZS0+bnVtYmVyT2ZJbnB1dHMoKSA9PSAxKTsKKyAgICAgICAgaWYgKCFt
X2Rlc3RpbmF0aW9uTm9kZS0+aW5wdXQoMCktPmlzQ29ubmVjdGVkKCkpIHsKKyAgICAgICAgICAg
IElORk9fTE9HKExPR0lERU5USUZJRVIsICJyZXR1cm5pbmcgdHJ1ZSBiZWNhdXNlIGRvY3VtZW50
IGlzIGNhcHR1cmluZyBhdWRpbyBhbmQgZGVzdCBpcyBub3QgdXNlZCIpOworICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9CisjZW5kaWYKKworICAgIHJldHVybiBmYWxz
ZTsKK30KKwogYm9vbCBBdWRpb0NvbnRleHQ6OmlzU3VzcGVuZGVkKCkgY29uc3QKIHsKICAgICBy
ZXR1cm4gIWRvY3VtZW50KCkgfHwgZG9jdW1lbnQoKS0+YWN0aXZlRE9NT2JqZWN0c0FyZVN1c3Bl
bmRlZCgpIHx8IGRvY3VtZW50KCktPmFjdGl2ZURPTU9iamVjdHNBcmVTdG9wcGVkKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaAppbmRleCAxMmI2
NTQxMjVlMWYuLjkzOWQwMjhkMjYwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvQ29udGV4dC5oCkBAIC0xMjcsNyArMTI3LDcgQEAgcHJpdmF0ZToKICAgICBi
b29sIGNhblJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZHMoKSBjb25zdCBmaW5hbCB7IHJldHVy
biBmYWxzZTsgfQogICAgIHZvaWQgZGlkUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5kKFBsYXRm
b3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUsIGNvbnN0IFBsYXRmb3Jt
TWVkaWFTZXNzaW9uOjpSZW1vdGVDb21tYW5kQXJndW1lbnQmKSBmaW5hbCB7IH0KICAgICBib29s
IHN1cHBvcnRzU2Vla2luZygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgYm9v
bCBzaG91bGRPdmVycmlkZUJhY2tncm91bmRQbGF5YmFja1Jlc3RyaWN0aW9uKFBsYXRmb3JtTWVk
aWFTZXNzaW9uOjpJbnRlcnJ1cHRpb25UeXBlKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsg
fQorICAgIGJvb2wgc2hvdWxkT3ZlcnJpZGVCYWNrZ3JvdW5kUGxheWJhY2tSZXN0cmljdGlvbihQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbjo6SW50ZXJydXB0aW9uVHlwZSkgY29uc3QgZmluYWw7CiAgICAg
Ym9vbCBjYW5Qcm9kdWNlQXVkaW8oKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAgICAg
Ym9vbCBpc1N1c3BlbmRlZCgpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgaXNQbGF5aW5nKCkgY29u
c3QgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5j
cHAKaW5kZXggM2FlZTQ2NjAzMTdkLi45ZmFhZGU5ZDVhMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5jcHAKQEAgLTE2NCw3ICsxNjQsNyBAQCB2b2lk
IEF1ZGlvTm9kZTo6YWRkT3V0cHV0KHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMpCiAgICAgbV9v
dXRwdXRzLmFwcGVuZChtYWtlVW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywgbnVtYmVyT2ZD
aGFubmVscykpOwogfQogCi1BdWRpb05vZGVJbnB1dCogQXVkaW9Ob2RlOjppbnB1dCh1bnNpZ25l
ZCBpKQorQXVkaW9Ob2RlSW5wdXQqIEF1ZGlvTm9kZTo6aW5wdXQodW5zaWduZWQgaSkgY29uc3QK
IHsKICAgICBpZiAoaSA8IG1faW5wdXRzLnNpemUoKSkKICAgICAgICAgcmV0dXJuIG1faW5wdXRz
W2ldLmdldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9B
dWRpb05vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmgK
aW5kZXggZWJiM2RjMGFmYzU5Li44M2EyZDIxNjc2NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9BdWRpb05vZGUuaApAQCAtMTIwLDcgKzEyMCw3IEBAIHB1YmxpYzoKICAg
ICB1bnNpZ25lZCBudW1iZXJPZklucHV0cygpIGNvbnN0IHsgcmV0dXJuIG1faW5wdXRzLnNpemUo
KTsgfQogICAgIHVuc2lnbmVkIG51bWJlck9mT3V0cHV0cygpIGNvbnN0IHsgcmV0dXJuIG1fb3V0
cHV0cy5zaXplKCk7IH0KIAotICAgIEF1ZGlvTm9kZUlucHV0KiBpbnB1dCh1bnNpZ25lZCk7Cisg
ICAgQXVkaW9Ob2RlSW5wdXQqIGlucHV0KHVuc2lnbmVkKSBjb25zdDsKICAgICBBdWRpb05vZGVP
dXRwdXQqIG91dHB1dCh1bnNpZ25lZCk7CiAKICAgICAvLyBDYWxsZWQgZnJvbSBtYWluIHRocmVh
ZCBieSBjb3JyZXNwb25kaW5nIEphdmFTY3JpcHQgbWV0aG9kcy4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>454484</attachid>
            <date>2022-03-11 07:46:21 -0800</date>
            <delta_ts>2022-03-15 00:20:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231105-20220311164619.patch</filename>
            <type>text/plain</type>
            <size>9360</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxMTUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjkwNmM2NjM4OTYxNGJh
MzE4YmY0ZTE0MDVlY2JhMjk5ZGY3MjIzOC4uY2JjNmU3ZDQxNjNjMmMyZjRiMjIxNmE1NmYxY2Ni
ZWNjMjUxNWY2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDIyLTAzLTExICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBBdWRpb0NvbnRleHQgc3Rv
cHMgcGxheWluZyB3aGVuIG1pbmltaXppbmcgb3IgbW92aW5nIHRoZSBtYWNPUyBTYWZhcmkgd2lu
ZG93IHRvIHRoZSBiYWNrZ3JvdW5kLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjMxMTA1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84Mzg4OTY5Nz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBdWRpb0Nv
bnRleHQgd2FzIHN0b3BwZWQgd2hlbiBtaW5pbWl6aW5nIHdpbmRvd3MgaWYgbm90IHBsYXlpbmcg
YXVkaW8gYXMgYSB3YXkgdG8gcmVkdWNlIENQVSB1c2FnZS4KKyAgICAgICAgQnV0IHRoaXMgaXMg
dmlzaWJsZSB0byB1c2VycyAoaWYgQXVkaW9Db250ZXh0IHByb2R1Y2VzIGF1ZGlvIHRocm91Z2gg
YSB0cmFjaykgb3IgdG8gd2ViIHBhZ2VzICh1c2Ugb2YgYXVkaW8gd29ya2xldCBvciBzY3JpcHQg
cHJvY2Vzc29yIG5vZGUpLgorICAgICAgICBSZW1vdmUgdGhhdCBjb2RlLgorICAgICAgICBTbWFs
bCByZWZhY3RvcmluZyB0byByZW1vdmUgaXNPZmZsaW5lQ29udGV4dCBjaGVja3MgdGhhdCBjYW4g
b25seSBiZSBmYWxzZSBpbiBBdWRpb0NvbnRleHQuCisKKyAgICAgICAgQ292ZXJlZCBieSBleGlz
dGluZyB0ZXN0cy4KKworICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNw
cDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5oOgorCiAyMDIyLTAz
LTExICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBNYWtlIHN1
cmUgdG8gZW5kIGFueSBwZW5kaW5nIEF1ZGlvU2Vzc2lvbiBpbnRlcnJ1cHRpb24gd2hlbiBhY3Rp
dmF0aW5nIGl0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29u
dGV4dC5jcHAKaW5kZXggYTM3MzQ4NThlOWNmM2VmNDgzYzIwNjE4NmE1NGQzMzY5MTZmNGM2OS4u
MjQwYjllYzY4MjYyZTEyMzE5NDZjNmNmNmU2Yjg4NTUwZTM0MTFlOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcApAQCAtMTIyLDcgKzEy
Miw2IEBAIEF1ZGlvQ29udGV4dDo6QXVkaW9Db250ZXh0KERvY3VtZW50JiBkb2N1bWVudCwgY29u
c3QgQXVkaW9Db250ZXh0T3B0aW9ucyYgY29udGV4CiAgICAgcGFnZU11dGVkU3RhdGVEaWRDaGFu
Z2UoKTsKIAogICAgIGRvY3VtZW50LmFkZEF1ZGlvUHJvZHVjZXIoKnRoaXMpOwotICAgIGRvY3Vt
ZW50LnJlZ2lzdGVyRm9yVmlzaWJpbGl0eVN0YXRlQ2hhbmdlZENhbGxiYWNrcygqdGhpcyk7CiAK
ICAgICAvLyBVbmxpa2UgT2ZmbGluZUF1ZGlvQ29udGV4dCwgQXVkaW9Db250ZXh0IGRvZXMgbm90
IHJlcXVpcmUgY2FsbGluZyByZXN1bWUoKSB0byBzdGFydCByZW5kZXJpbmcuCiAgICAgLy8gTGF6
eSBpbml0aWFsaXphdGlvbiBzdGFydHMgcmVuZGVyaW5nIHNvIHdlIHNjaGVkdWxlIGEgdGFzayBo
ZXJlIHRvIG1ha2Ugc3VyZSBsYXp5IGluaXRpYWxpemF0aW9uCkBAIC0xNDgsMTAgKzE0Nyw4IEBA
IHZvaWQgQXVkaW9Db250ZXh0Ojpjb25zdHJ1Y3RDb21tb24oKQogCiBBdWRpb0NvbnRleHQ6On5B
dWRpb0NvbnRleHQoKQogewotICAgIGlmICghaXNPZmZsaW5lQ29udGV4dCgpICYmIHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSkgewotICAgICAgICBkb2N1bWVudCgpLT5yZW1vdmVBdWRpb1Byb2R1
Y2VyKCp0aGlzKTsKLSAgICAgICAgZG9jdW1lbnQoKS0+dW5yZWdpc3RlckZvclZpc2liaWxpdHlT
dGF0ZUNoYW5nZWRDYWxsYmFja3MoKnRoaXMpOwotICAgIH0KKyAgICBpZiAoYXV0byogZG9jdW1l
bnQgPSB0aGlzLT5kb2N1bWVudCgpKQorICAgICAgICBkb2N1bWVudC0+cmVtb3ZlQXVkaW9Qcm9k
dWNlcigqdGhpcyk7CiB9CiAKIHZvaWQgQXVkaW9Db250ZXh0Ojp1bmluaXRpYWxpemUoKQpAQCAt
MTkzLDcgKzE5MCw3IEBAIEF1ZGlvVGltZXN0YW1wIEF1ZGlvQ29udGV4dDo6Z2V0T3V0cHV0VGlt
ZXN0YW1wKCkKIAogdm9pZCBBdWRpb0NvbnRleHQ6OmNsb3NlKERPTVByb21pc2VEZWZlcnJlZDx2
b2lkPiYmIHByb21pc2UpCiB7Ci0gICAgaWYgKGlzT2ZmbGluZUNvbnRleHQoKSB8fCBpc1N0b3Bw
ZWQoKSkgeworICAgIGlmIChpc1N0b3BwZWQoKSkgewogICAgICAgICBwcm9taXNlLnJlamVjdChJ
bnZhbGlkU3RhdGVFcnJvcik7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0yMTYsMTEgKzIx
Myw2IEBAIHZvaWQgQXVkaW9Db250ZXh0OjpjbG9zZShET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4m
JiBwcm9taXNlKQogCiB2b2lkIEF1ZGlvQ29udGV4dDo6c3VzcGVuZFJlbmRlcmluZyhET01Qcm9t
aXNlRGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNlKQogewotICAgIGlmIChpc09mZmxpbmVDb250ZXh0
KCkpIHsKLSAgICAgICAgcHJvbWlzZS5yZWplY3QoRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJy
b3IsICJDYW5ub3QgY2FsbCBzdXNwZW5kKCkgb24gYW4gT2ZmbGluZUF1ZGlvQ29udGV4dCJfcyB9
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQogICAgIGlmIChpc1N0b3BwZWQoKSB8fCBzdGF0
ZSgpID09IFN0YXRlOjpDbG9zZWQpIHsKICAgICAgICAgcHJvbWlzZS5yZWplY3QoRXhjZXB0aW9u
IHsgSW52YWxpZFN0YXRlRXJyb3IsICJDb250ZXh0IGlzIGNsb3NlZCJfcyB9KTsKICAgICAgICAg
cmV0dXJuOwpAQCAtMjQ3LDExICsyMzksNiBAQCB2b2lkIEF1ZGlvQ29udGV4dDo6c3VzcGVuZFJl
bmRlcmluZyhET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNlKQogCiB2b2lkIEF1ZGlv
Q29udGV4dDo6cmVzdW1lUmVuZGVyaW5nKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21p
c2UpCiB7Ci0gICAgaWYgKGlzT2ZmbGluZUNvbnRleHQoKSkgewotICAgICAgICBwcm9taXNlLnJl
amVjdChFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgIkNhbm5vdCBjYWxsIHJlc3VtZSgp
IG9uIGFuIE9mZmxpbmVBdWRpb0NvbnRleHQiX3MgfSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KICAgICBpZiAoaXNTdG9wcGVkKCkgfHwgc3RhdGUoKSA9PSBTdGF0ZTo6Q2xvc2VkKSB7CiAg
ICAgICAgIHByb21pc2UucmVqZWN0KEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCAiQ29u
dGV4dCBpcyBjbG9zZWQiX3MgfSk7CiAgICAgICAgIHJldHVybjsKQEAgLTQxNiwyNSArNDAzLDYg
QEAgYm9vbCBBdWRpb0NvbnRleHQ6OndpbGxCZWdpblBsYXliYWNrKCkKICAgICByZXR1cm4gd2ls
bEJlZ2luOwogfQogCi12b2lkIEF1ZGlvQ29udGV4dDo6dmlzaWJpbGl0eVN0YXRlQ2hhbmdlZCgp
Ci17Ci0gICAgLy8gRG8gbm90IHN1c3BlbmQgaWYgYXVkaW8gaXMgYXVkaWJsZS4KLSAgICBpZiAo
IWRvY3VtZW50KCkgfHwgbWVkaWFTdGF0ZSgpID09IE1lZGlhUHJvZHVjZXJNZWRpYVN0YXRlOjpJ
c1BsYXlpbmdBdWRpbyB8fCBpc1N0b3BwZWQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYg
KGRvY3VtZW50KCktPmhpZGRlbigpKSB7Ci0gICAgICAgIGlmIChzdGF0ZSgpID09IFN0YXRlOjpS
dW5uaW5nKSB7Ci0gICAgICAgICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJTdXNwZW5k
aW5nIHBsYXliYWNrIGFmdGVyIGdvaW5nIHRvIHRoZSBiYWNrZ3JvdW5kIik7Ci0gICAgICAgICAg
ICBtX21lZGlhU2Vzc2lvbi0+YmVnaW5JbnRlcnJ1cHRpb24oUGxhdGZvcm1NZWRpYVNlc3Npb246
OkVudGVyaW5nQmFja2dyb3VuZCk7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgewotICAgICAgICBp
ZiAoc3RhdGUoKSA9PSBTdGF0ZTo6SW50ZXJydXB0ZWQpIHsKLSAgICAgICAgICAgIEFMV0FZU19M
T0coTE9HSURFTlRJRklFUiwgIlJlc3VtaW5nIHBsYXliYWNrIGFmdGVyIGVudGVyaW5nIGZvcmVn
cm91bmQiKTsKLSAgICAgICAgICAgIG1fbWVkaWFTZXNzaW9uLT5lbmRJbnRlcnJ1cHRpb24oUGxh
dGZvcm1NZWRpYVNlc3Npb246Ok1heVJlc3VtZVBsYXlpbmcpOwotICAgICAgICB9Ci0gICAgfQot
fQotCiB2b2lkIEF1ZGlvQ29udGV4dDo6c3VzcGVuZChSZWFzb25Gb3JTdXNwZW5zaW9uKQogewog
ICAgIGlmIChpc0Nsb3NlZCgpIHx8IG1fd2FzU3VzcGVuZGVkQnlTY3JpcHQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaAppbmRleCAxMmI2NTQxMjVl
MWYzOTliMWIwZTI2Y2Y4NGU1ODk5ZmI4ODZkN2I4Li5mYWQ0OGYyZGFiNzc1NzA0YjJmMzUxNWNk
ZTIwZGRjY2U5NjExODJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXVkaW9Db250ZXh0LmgKQEAgLTMwLDcgKzMwLDYgQEAKICNpbmNsdWRlICJNZWRpYUNhblN0YXJ0
TGlzdGVuZXIuaCIKICNpbmNsdWRlICJNZWRpYVByb2R1Y2VyLmgiCiAjaW5jbHVkZSAiUGxhdGZv
cm1NZWRpYVNlc3Npb24uaCIKLSNpbmNsdWRlICJWaXNpYmlsaXR5Q2hhbmdlQ2xpZW50LmgiCiAj
aW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00OCw4
ICs0Nyw3IEBAIGNsYXNzIEF1ZGlvQ29udGV4dCBmaW5hbAogICAgIDogcHVibGljIEJhc2VBdWRp
b0NvbnRleHQKICAgICAsIHB1YmxpYyBNZWRpYVByb2R1Y2VyCiAgICAgLCBwdWJsaWMgTWVkaWFD
YW5TdGFydExpc3RlbmVyCi0gICAgLCBwcml2YXRlIFBsYXRmb3JtTWVkaWFTZXNzaW9uQ2xpZW50
Ci0gICAgLCBwcml2YXRlIFZpc2liaWxpdHlDaGFuZ2VDbGllbnQgeworICAgICwgcHJpdmF0ZSBQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbkNsaWVudCB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChB
dWRpb0NvbnRleHQpOwogcHVibGljOgogICAgIC8vIENyZWF0ZSBhbiBBdWRpb0NvbnRleHQgZm9y
IHJlbmRlcmluZyB0byB0aGUgYXVkaW8gaGFyZHdhcmUuCkBAIC0xMzYsOSArMTM0LDYgQEAgcHJp
dmF0ZToKICAgICAvLyBNZWRpYUNhblN0YXJ0TGlzdGVuZXIuCiAgICAgdm9pZCBtZWRpYUNhblN0
YXJ0KERvY3VtZW50JikgZmluYWw7CiAKLSAgICAvLyBWaXNpYmlsaXR5Q2hhbmdlQ2xpZW50Ci0g
ICAgdm9pZCB2aXNpYmlsaXR5U3RhdGVDaGFuZ2VkKCkgZmluYWw7Ci0KICAgICAvLyBBY3RpdmVE
T01PYmplY3QKICAgICBjb25zdCBjaGFyKiBhY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QgZmlu
YWw7CiAgICAgdm9pZCBzdXNwZW5kKFJlYXNvbkZvclN1c3BlbnNpb24pIGZpbmFsOwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4
IDM3NmEwODM0YmE0M2IwODFkMTRiM2QyZjYxZjBiZjVkOGQwMTQ2NDkuLjk0Y2QwMDM1MWVkYWUz
ZTkzOWNhNmM0ZjIwNTE4ODNmOGY4ZWFiZGIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAyMi0w
My0xMSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgQXVkaW9D
b250ZXh0IHN0b3BzIHBsYXlpbmcgd2hlbiBtaW5pbWl6aW5nIG9yIG1vdmluZyB0aGUgbWFjT1Mg
U2FmYXJpIHdpbmRvdyB0byB0aGUgYmFja2dyb3VuZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTEwNQorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
ODM4ODk2OTc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVXNlIGludGVybmFscyBBUEkgdG8gYmUgd29ya2luZyBvbiBpT1MgYXMgd2VsbCAodGhpcyBk
b2VzIG5vdCB0cmlnZ2VyIGVudGVyQmFja2dyb3VuZCBjb2RlIHBhdGgpLgorCisgICAgICAgICog
d2ViYXVkaW8vc2lsZW50LWF1ZGlvLWludGVycnVwdGVkLWluLWJhY2tncm91bmQtZXhwZWN0ZWQu
dHh0OgorICAgICAgICAqIHdlYmF1ZGlvL3NpbGVudC1hdWRpby1pbnRlcnJ1cHRlZC1pbi1iYWNr
Z3JvdW5kLmh0bWw6CisKIDIwMjItMDMtMTEgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUu
Y29tPgogCiAgICAgICAgIHJlZGlyZWN0Q291bnQgcmV0dXJucyAwIHdoZW4gdXNpbmcgYSBTZXJ2
aWNlIFdvcmtlcgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViYXVkaW8vc2lsZW50LWF1ZGlv
LWludGVycnVwdGVkLWluLWJhY2tncm91bmQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2Vi
YXVkaW8vc2lsZW50LWF1ZGlvLWludGVycnVwdGVkLWluLWJhY2tncm91bmQtZXhwZWN0ZWQudHh0
CmluZGV4IGI2ZjQ3ZWUyOTA5ZDU5Nzc2NmEzOGJjMDNmNGU1YWI0NDdiY2VmMTUuLmZhMTIwMWVl
YWYxZjRkNzMzY2U2Mzg0ODFlOWUzZGJkZjdiNmMwOWEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3dlYmF1ZGlvL3NpbGVudC1hdWRpby1pbnRlcnJ1cHRlZC1pbi1iYWNrZ3JvdW5kLWV4cGVjdGVk
LnR4dAorKysgYi9MYXlvdXRUZXN0cy93ZWJhdWRpby9zaWxlbnQtYXVkaW8taW50ZXJydXB0ZWQt
aW4tYmFja2dyb3VuZC1leHBlY3RlZC50eHQKQEAgLTEsMTMgKzEsMTUgQEAKLVRlc3RzIHRoYXQg
c2lsZW50IFdlYkF1ZGlvIHJlbmRlcmluZyBnZXRzIGludGVycnVwdGVkIGluIGhpZGRlbiBwYWdl
cy4KK1Rlc3RzIHNpbGVudCBXZWJBdWRpbyByZW5kZXJpbmcgaW4gaGlkZGVuIHBhZ2VzLgogCiBP
biBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xs
b3dlZCBieSAiVEVTVCBDT01QTEVURSIuCiAKIAogUEFTUyBjb250ZXh0LnN0YXRlIGJlY2FtZSAn
cnVubmluZycKICogU2V0dGluZyBwYWdlIHZpc2liaWxpdHkgdG8gaGlkZGVuCi1QQVNTIGNvbnRl
eHQuc3RhdGUgYmVjYW1lICdpbnRlcnJ1cHRlZCcKK1BBU1MgZG9jdW1lbnQuaGlkZGVuIGlzIHRy
dWUKK1BBU1MgY29udGV4dC5zdGF0ZSBpcyAncnVubmluZycKICogU2V0dGluZyBwYWdlIHZpc2li
aWxpdHkgdG8gdmlzaWJsZQotUEFTUyBjb250ZXh0LnN0YXRlIGJlY2FtZSAncnVubmluZycKK1BB
U1MgZG9jdW1lbnQuaGlkZGVuIGlzIGZhbHNlCitQQVNTIGNvbnRleHQuc3RhdGUgaXMgJ3J1bm5p
bmcnCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmF1ZGlvL3NpbGVudC1hdWRpby1pbnRlcnJ1cHRlZC1p
bi1iYWNrZ3JvdW5kLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJhdWRpby9zaWxlbnQtYXVkaW8taW50
ZXJydXB0ZWQtaW4tYmFja2dyb3VuZC5odG1sCmluZGV4IGI4Mjk3NjY4MmY1YTEwZGY0ZjU4OGQw
MmY5OTZkZGQ5OTBhNDcxNTYuLjkxOTFmZTI0ZmQxOGJkZmQ1YWE2Y2IyM2I4YmYwNTg0MWZmNzdh
NWIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3dlYmF1ZGlvL3NpbGVudC1hdWRpby1pbnRlcnJ1
cHRlZC1pbi1iYWNrZ3JvdW5kLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvd2ViYXVkaW8vc2lsZW50
LWF1ZGlvLWludGVycnVwdGVkLWluLWJhY2tncm91bmQuaHRtbApAQCAtMywyOSArMywzNSBAQAog
PGJvZHk+CiA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KIDxzY3JpcHQ+Ci1kZXNjcmlwdGlvbigiVGVzdHMgdGhhdCBzaWxlbnQgV2ViQXVkaW8gcmVu
ZGVyaW5nIGdldHMgaW50ZXJydXB0ZWQgaW4gaGlkZGVuIHBhZ2VzLiIpOworZGVzY3JpcHRpb24o
IlRlc3RzIHNpbGVudCBXZWJBdWRpbyByZW5kZXJpbmcgaW4gaGlkZGVuIHBhZ2VzLiIpOwoganNU
ZXN0SXNBc3luYyA9IHRydWU7CiAKLWRvY3VtZW50Lm9udmlzaWJpbGl0eWNoYW5nZSA9IGZ1bmN0
aW9uKCkgewotICAgIGlmIChkb2N1bWVudC5oaWRkZW4pIHsKLSAgICAgICAgc2hvdWxkQmVjb21l
RXF1YWwoImNvbnRleHQuc3RhdGUiLCAiJ2ludGVycnVwdGVkJyIsIHNob3dQYWdlKTsKLSAgICB9
IGVsc2UgewotICAgICAgICBzaG91bGRCZWNvbWVFcXVhbCgiY29udGV4dC5zdGF0ZSIsICIncnVu
bmluZyciLCBmaW5pc2hKU1Rlc3QpOworbGV0IGNvdW50ZXIgPSAwOworZG9jdW1lbnQub252aXNp
YmlsaXR5Y2hhbmdlID0gYXN5bmMgZnVuY3Rpb24oKSB7CisgICAgaWYgKCFjb3VudGVyKSB7Cisg
ICAgICAgICBjb3VudGVyID0gMTsKKyAgICAgICAgIHNob3VsZEJlVHJ1ZSgiZG9jdW1lbnQuaGlk
ZGVuIik7CisgICAgICAgICBzaG91bGRCZSgiY29udGV4dC5zdGF0ZSIsICIncnVubmluZyciKTsK
KyAgICAgICAgIHNob3dQYWdlKCk7CisgICAgICAgICByZXR1cm47CiAgICAgfQorICAgIHNob3Vs
ZEJlRmFsc2UoImRvY3VtZW50LmhpZGRlbiIpOworICAgIHNob3VsZEJlKCJjb250ZXh0LnN0YXRl
IiwgIidydW5uaW5nJyIpOworICAgIGZpbmlzaEpTVGVzdCgpOwogfQogCiBmdW5jdGlvbiBzaG93
UGFnZSgpCiB7CiAgICAgZGVidWcoIiogU2V0dGluZyBwYWdlIHZpc2liaWxpdHkgdG8gdmlzaWJs
ZSIpOwotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1bm5lci5zZXRQ
YWdlVmlzaWJpbGl0eSgidmlzaWJsZSIpOworICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAg
ICAgICBpbnRlcm5hbHMuc2V0UGFnZVZpc2liaWxpdHkodHJ1ZSk7CiB9CiAKIGZ1bmN0aW9uIGhp
ZGVQYWdlKCkKIHsKICAgICBkZWJ1ZygiKiBTZXR0aW5nIHBhZ2UgdmlzaWJpbGl0eSB0byBoaWRk
ZW4iKTsKLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgIHRlc3RSdW5uZXIuc2V0
UGFnZVZpc2liaWxpdHkoImhpZGRlbiIpOworICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAg
ICAgICBpbnRlcm5hbHMuc2V0UGFnZVZpc2liaWxpdHkoZmFsc2UpOwogfQogCiBvbmxvYWQgPSBm
dW5jdGlvbigpIHsK
</data>

          </attachment>
      

    </bug>

</bugzilla>