<?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>312332</bug_id>
          
          <creation_ts>2026-04-14 17:24:17 -0700</creation_ts>
          <short_desc>REGRESSION (Safari 26.3 - 26.4): RTCPeerConnection with iceTransportPolicy &quot;relay&quot; gathers zero ICE candidates</short_desc>
          <delta_ts>2026-04-21 09:55:53 -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>WebRTC</component>
          <version>Safari 26</version>
          <rep_platform>Mac (Apple Silicon)</rep_platform>
          <op_sys>macOS 15</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar, Regression</keywords>
          <priority>P2</priority>
          <bug_severity>Critical</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter>devalevd</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>ahmad.saleem792</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>2200440</commentid>
    <comment_count>0</comment_count>
      <attachid>479076</attachid>
    <who name="">devalevd</who>
    <bug_when>2026-04-14 17:24:17 -0700</bug_when>
    <thetext>Created attachment 479076
ICE gathering issue reproducing sample

# Description

After upgrading to Safari 26.4, `RTCPeerConnection` configured with `iceTransportPolicy: &quot;relay&quot;` and valid TURN server credentials fails to gather any ICE candidates. The `iceGatheringState` transitions to `&quot;gathering&quot;` but never reaches `&quot;complete&quot;`, and zero `icecandidate` events are fired. This worked correctly in Safari 26.3 and earlier.

We suspect this is related to the change in Safari 26.4 (&quot;Fixed RTCConfiguration.iceServers to be a non-optional sequence with an empty array as the default&quot;). The spec compliance fix may have introduced a side effect where TURN relay candidate allocation silently fails.

## Steps to Reproduce

I have also attached a sample HTML file to run. It includes a global TURN server URL as test URL. But apart from it, some code:

1. Create an `RTCPeerConnection` with TURN credentials and relay-only policy:

```javascript
const pc = new RTCPeerConnection({
  iceServers: [{
    urls: [&quot;turns:turn.example.com:443?transport=tcp&quot;],
    username: &quot;&lt;valid-username&gt;&quot;,
    credential: &quot;&lt;valid-password&gt;&quot;
  }],
  iceTransportPolicy: &quot;relay&quot;
});
```

2. Add a media track (audio or video)

3. Create and set a local offer:

```javascript
const offer = await pc.createOffer();
await pc.setLocalDescription(offer);
```

4. Listen for ICE candidates:

```javascript
pc.onicecandidate = (event) =&gt; {
  console.log(&quot;candidate:&quot;, event.candidate);
};
pc.onicegatheringstatechange = () =&gt; {
  console.log(&quot;gathering state:&quot;, pc.iceGatheringState);
};
```

## Expected Results

- `iceGatheringState` transitions: `&quot;new&quot;` → `&quot;gathering&quot;` → `&quot;complete&quot;`
- At least one relay `icecandidate` event fires
- A null candidate event fires indicating gathering is complete

## Actual Results

- `iceGatheringState` transitions to `&quot;gathering&quot;` and stays there indefinitely
- Zero `icecandidate` events fire
- Gathering never completes, causing a timeout

## Regression

- **Safari 26.3:** Works correctly — relay candidates gathered within 1-2 seconds
- **Safari 26.4:** Broken — zero candidates, gathering hangs indefinitely

## Impact

This is a critical regression affecting production WebRTC applications. We have confirmed this across multiple users on Safari 26.4 / macOS 15.7.5 using the Amazon Chime SDK for JavaScript (v3.30.0) (https://github.com/aws/amazon-chime-sdk-js). Meeting connections fail 100% of the time on Safari 26.4 with a 30-second timeout, directly impacting users session joins.

## Additional Testing

We also reproduced this using the official WebRTC sample at https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/ — when configured with valid TURN servers, Safari 26.4 gathers zero relay candidates. The same TURN servers produce relay candidates on Safari 26.3, Chrome, Edge, and Firefox.

This confirms the issue is in Safari&apos;s WebRTC stack and not specific to any particular application or SDK.

## Environment

- Safari 26.4 on macOS 15.7.5
- Tested on stable Wi-Fi, no VPN, no corporate firewall
- Works on Chrome, Edge, Firefox on the same machine
- Works on Safari 26.3 and earlier</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2200465</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2026-04-14 18:54:52 -0700</bug_when>
    <thetext>&lt;rdar://problem/174794660&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2200758</commentid>
    <comment_count>2</comment_count>
    <who name="">devalevd</who>
    <bug_when>2026-04-15 12:11:31 -0700</bug_when>
    <thetext>You can also use the HTML sample reproduction I have attached or follow below browse console steps.

# Reproduction steps in browser console

## Prerequisites

- Obtain fresh TURN credentials (TTL is 300s, so run steps promptly)
- Open Safari DevTools Console (⌘⌥C)

## Step 1 — Create PeerConnection with relay policy

```javascript
const pc = new RTCPeerConnection({
  iceServers: [{
    urls: [
      &quot;turn:ice.m1.uw2.app.chime.aws:3478?transport=udp&quot;,
      &quot;turns:ice.m1.uw2.app.chime.aws:443?transport=tcp&quot;
    ],
    username: &quot;1776279934:61b1cc80-38fd-11f1-b2b7-02260fc92e3f&quot;,
    credential: &quot;UrxjkNiC6UCE7Lb63k5JqvjfXTk=&quot;
  }],
  iceTransportPolicy: &quot;relay&quot;
});
```

## Step 2 — Attach event listeners

```javascript
const start = performance.now();
const elapsed = () =&gt; ((performance.now() - start) / 1000).toFixed(2) + &quot;s&quot;;

pc.onicecandidate = e =&gt; {
  if (e.candidate) {
    console.log(`[${elapsed()}] CANDIDATE: ${e.candidate.type} ${e.candidate.protocol} ${e.candidate.address}:${e.candidate.port}`);
  } else {
    console.log(`[${elapsed()}] Gathering complete (null candidate)`);
  }
};

pc.onicecandidateerror = e =&gt; {
  console.warn(`[${elapsed()}] ICE error: code=${e.errorCode} &quot;${e.errorText}&quot; url=${e.url}`);
};

pc.onicegatheringstatechange = () =&gt; {
  console.log(`[${elapsed()}] iceGatheringState → ${pc.iceGatheringState}`);
};

// Timeout watchdog
setTimeout(() =&gt; {
  console.error(`[${elapsed()}] ⏰ FULL TIMEOUT REACHED — iceGatheringState: ${pc.iceGatheringState}`);
  pc.close();
}, 30000);
```

## Step 3 — Add transceiver, create offer, start gathering

```javascript
pc.addTransceiver(&quot;audio&quot;, { direction: &quot;sendrecv&quot; });
pc.createOffer().then(offer =&gt; {
  console.log(`[${elapsed()}] Offer created (ufrag=${offer.sdp.match(/a=ice-ufrag:(\S+)/)?.[1]})`);
  return pc.setLocalDescription(offer);
}).then(() =&gt; {
  console.log(`[${elapsed()}] 🚀 setLocalDescription done — iceGatheringState: ${pc.iceGatheringState}`);
});
```

## Expected Output

### MacOS 26 Safari 26.4 / Chrome / Firefox (working)

```
[0.01s] Offer created (ufrag=...)
[0.01s] setLocalDescription done — iceGatheringState: gathering
[0.02s] iceGatheringState → gathering
[0.50s] CANDIDATE: relay udp &lt;ip&gt;:port
[0.80s] CANDIDATE: relay tcp &lt;ip&gt;:port
[0.81s] Gathering complete (null candidate)
[0.81s] iceGatheringState → complete
```

### MacOS 15 ( Safari 26.4 (broken)

```
...
[30.00s] ⏰ TIMEOUT — iceGatheringState: gathering
```

So ICE gathering never moves to complete state.

Issue is with Safari 26.4 and so far consistently reproducible with Chime SDK TURN servers with relay with below macOS version:
MacOS 15.7.5, 15.7.3 and 15.7.1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2201016</commentid>
    <comment_count>3</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2026-04-16 04:55:43 -0700</bug_when>
    <thetext>Pull request: https://github.com/WebKit/WebKit/pull/62891</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2201406</commentid>
    <comment_count>4</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2026-04-17 00:11:16 -0700</bug_when>
    <thetext>Committed 311432@main (da04f8d6cf5c): &lt;https://commits.webkit.org/311432@main&gt;

Reviewed commits have been landed. Closing PR #62891 and removing active labels.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2201661</commentid>
    <comment_count>5</comment_count>
    <who name="">devalevd</who>
    <bug_when>2026-04-17 14:50:52 -0700</bug_when>
    <thetext>Thanks for the quick turnaround on the fix.

We have customer reported high severity tickets and our metrics show that pretty much users using Mac OS 15.7.X (or 15.X) + Safari 26.4+ cannot join a WebRTC meeting through their application built on-top-of our JS SDK.  The only workaround is to suggest them to use either a different browser, different Safari version &lt; 26.4 if on MacOS 15 or upgrade the MacOS to v26 itself.

Could you help us prioritizing this fix? Awaiting which version the fix would be in to test and accordingly to update our customers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2202568</commentid>
    <comment_count>6</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2026-04-20 22:23:34 -0700</bug_when>
    <thetext>Committed 305413.698@safari-7624-branch (cbfb4c491ddf): &lt;https://commits.webkit.org/305413.698@safari-7624-branch&gt;

Reviewed commits have been landed. Closing PR #5007 and removing active labels.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2202790</commentid>
    <comment_count>7</comment_count>
    <who name="">devalevd</who>
    <bug_when>2026-04-21 09:55:53 -0700</bug_when>
    <thetext>Hi Team,

Thanks for the fix. Any update on which Safari version we could test this out on?</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>479076</attachid>
            <date>2026-04-14 17:24:17 -0700</date>
            <delta_ts>2026-04-14 17:24:17 -0700</delta_ts>
            <desc>ICE gathering issue reproducing sample</desc>
            <filename>ice-gathering-issue.html</filename>
            <type>text/html</type>
            <size>10352</size>
            <attacher>devalevd</attacher>
            
              <data encoding="base64">PCFkb2N0eXBlIGh0bWw+CjxodG1sPgogIDxoZWFkPgogICAgPHRpdGxlPklDRSBHYXRoZXJpbmcg
RGlhZ25vc3RpYzwvdGl0bGU+CiAgICA8c3R5bGU+CiAgICAgICogewogICAgICAgIGJveC1zaXpp
bmc6IGJvcmRlci1ib3g7CiAgICAgICAgbWFyZ2luOiAwOwogICAgICAgIHBhZGRpbmc6IDA7CiAg
ICAgIH0KICAgICAgYm9keSB7CiAgICAgICAgZm9udC1mYW1pbHk6IC1hcHBsZS1zeXN0ZW0sIHN5
c3RlbS11aSwgc2Fucy1zZXJpZjsKICAgICAgICBiYWNrZ3JvdW5kOiAjMWExYTJlOwogICAgICAg
IGNvbG9yOiAjZTBlMGUwOwogICAgICAgIHBhZGRpbmc6IDIwcHg7CiAgICAgIH0KICAgICAgaDEg
ewogICAgICAgIGZvbnQtc2l6ZTogMThweDsKICAgICAgICBjb2xvcjogIzdmZGJjYTsKICAgICAg
ICBtYXJnaW4tYm90dG9tOiAxMnB4OwogICAgICB9CiAgICAgIC5jb250cm9scyB7CiAgICAgICAg
YmFja2dyb3VuZDogIzE2MjEzZTsKICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7CiAgICAgICAg
cGFkZGluZzogMTZweDsKICAgICAgICBtYXJnaW4tYm90dG9tOiAxNnB4OwogICAgICB9CiAgICAg
IC5yb3cgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZ2FwOiAxMnB4OwogICAgICAg
IGZsZXgtd3JhcDogd3JhcDsKICAgICAgICBhbGlnbi1pdGVtczogZW5kOwogICAgICAgIG1hcmdp
bi1ib3R0b206IDEwcHg7CiAgICAgIH0KICAgICAgbGFiZWwgewogICAgICAgIGRpc3BsYXk6IGJs
b2NrOwogICAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgICBjb2xvcjogIzk5OTsKICAgICAg
ICBtYXJnaW4tYm90dG9tOiAzcHg7CiAgICAgIH0KICAgICAgaW5wdXQgewogICAgICAgIGJhY2tn
cm91bmQ6ICMwZDFiMmE7CiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgIzMzNDsKICAgICAgICBj
b2xvcjogI2UwZTBlMDsKICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICAgICAgcGFkZGlu
ZzogNnB4IDhweDsKICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgICAgZm9udC1mYW1pbHk6
IG1vbm9zcGFjZTsKICAgICAgfQogICAgICBpbnB1dFt0eXBlPSd0ZXh0J10gewogICAgICAgIHdp
ZHRoOiAzNDBweDsKICAgICAgfQogICAgICBpbnB1dFt0eXBlPSdudW1iZXInXSB7CiAgICAgICAg
d2lkdGg6IDgwcHg7CiAgICAgIH0KICAgICAgYnV0dG9uIHsKICAgICAgICBiYWNrZ3JvdW5kOiAj
N2ZkYmNhOwogICAgICAgIGNvbG9yOiAjMWExYTJlOwogICAgICAgIGJvcmRlcjogbm9uZTsKICAg
ICAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICAgICAgcGFkZGluZzogOHB4IDE2cHg7CiAgICAg
ICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgZm9u
dC1zaXplOiAxM3B4OwogICAgICB9CiAgICAgIGJ1dHRvbjpob3ZlciB7CiAgICAgICAgYmFja2dy
b3VuZDogIzY0ZmZkYTsKICAgICAgfQogICAgICBidXR0b24uc3RvcCB7CiAgICAgICAgYmFja2dy
b3VuZDogI2ZmNTM3MDsKICAgICAgICBjb2xvcjogI2ZmZjsKICAgICAgfQogICAgICAudGVzdHMg
ewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC13cmFwOiB3cmFwOwogICAgICAg
IGdhcDogMTJweDsKICAgICAgfQogICAgICAudGVzdC1wYW5lbCB7CiAgICAgICAgYmFja2dyb3Vu
ZDogIzE2MjEzZTsKICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7CiAgICAgICAgcGFkZGluZzog
MTJweDsKICAgICAgICBmbGV4OiAxOwogICAgICAgIG1pbi13aWR0aDogMzgwcHg7CiAgICAgICAg
bWF4LXdpZHRoOiA2MDBweDsKICAgICAgfQogICAgICAudGVzdC1wYW5lbCBoMyB7CiAgICAgICAg
Zm9udC1zaXplOiAxM3B4OwogICAgICAgIGNvbG9yOiAjYzc5MmVhOwogICAgICAgIG1hcmdpbi1i
b3R0b206IDRweDsKICAgICAgfQogICAgICAudGVzdC1wYW5lbCAuY29uZmlnIHsKICAgICAgICBm
b250LXNpemU6IDExcHg7CiAgICAgICAgY29sb3I6ICM2NjY7CiAgICAgICAgbWFyZ2luLWJvdHRv
bTogNnB4OwogICAgICAgIGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7CiAgICAgICAgd29yZC1icmVh
azogYnJlYWstYWxsOwogICAgICB9CiAgICAgIC5zdGF0dXMgewogICAgICAgIGZvbnQtc2l6ZTog
MTJweDsKICAgICAgICBwYWRkaW5nOiA0cHggOHB4OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDNw
eDsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgICAgbWFyZ2luLWJvdHRvbTog
NnB4OwogICAgICB9CiAgICAgIC5zdGF0dXMucnVubmluZyB7CiAgICAgICAgYmFja2dyb3VuZDog
IzFiM2E0YjsKICAgICAgICBjb2xvcjogIzgyYWFmZjsKICAgICAgfQogICAgICAuc3RhdHVzLmNv
bXBsZXRlIHsKICAgICAgICBiYWNrZ3JvdW5kOiAjMWIzYTJhOwogICAgICAgIGNvbG9yOiAjN2Zk
YmNhOwogICAgICB9CiAgICAgIC5zdGF0dXMudGltZW91dCB7CiAgICAgICAgYmFja2dyb3VuZDog
IzNhMWIxYjsKICAgICAgICBjb2xvcjogI2ZmNTM3MDsKICAgICAgfQogICAgICAubG9nLWJveCB7
CiAgICAgICAgYmFja2dyb3VuZDogIzBkMWIyYTsKICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7
CiAgICAgICAgcGFkZGluZzogOHB4OwogICAgICAgIGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7CiAg
ICAgICAgZm9udC1zaXplOiAxMXB4OwogICAgICAgIG1heC1oZWlnaHQ6IDIwMHB4OwogICAgICAg
IG92ZXJmbG93LXk6IGF1dG87CiAgICAgICAgd2hpdGUtc3BhY2U6IHByZS13cmFwOwogICAgICAg
IGxpbmUtaGVpZ2h0OiAxLjU7CiAgICAgIH0KICAgICAgLmxvZy1ib3ggLnRzIHsKICAgICAgICBj
b2xvcjogIzU0NmU3YTsKICAgICAgfQogICAgICAubG9nLWJveCAuY2FuZGlkYXRlIHsKICAgICAg
ICBjb2xvcjogI2MzZTg4ZDsKICAgICAgfQogICAgICAubG9nLWJveCAuZXJyb3IgewogICAgICAg
IGNvbG9yOiAjZmY1MzcwOwogICAgICB9CiAgICAgIC5sb2ctYm94IC5zdGF0ZSB7CiAgICAgICAg
Y29sb3I6ICM4MmFhZmY7CiAgICAgIH0KICAgICAgLmxvZy1ib3ggLmluZm8gewogICAgICAgIGNv
bG9yOiAjZmZjYjZiOwogICAgICB9CiAgICAgIC5sb2ctYm94IC5kb25lIHsKICAgICAgICBjb2xv
cjogIzdmZGJjYTsKICAgICAgICBmb250LXdlaWdodDogYm9sZDsKICAgICAgfQogICAgICAuc3Vt
bWFyeSB7CiAgICAgICAgYmFja2dyb3VuZDogIzE2MjEzZTsKICAgICAgICBib3JkZXItcmFkaXVz
OiA4cHg7CiAgICAgICAgcGFkZGluZzogMTJweDsKICAgICAgICBtYXJnaW4tdG9wOiAxMnB4Owog
ICAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgICBmb250LWZhbWlseTogbW9ub3NwYWNlOwog
ICAgICB9CiAgICAgIC5zdW1tYXJ5IGgyIHsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAg
ICAgY29sb3I6ICM4MmFhZmY7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogOHB4OwogICAgICB9CiAg
ICAgIC5zdW1tYXJ5IHRhYmxlIHsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBib3JkZXIt
Y29sbGFwc2U6IGNvbGxhcHNlOwogICAgICB9CiAgICAgIC5zdW1tYXJ5IHRoLAogICAgICAuc3Vt
bWFyeSB0ZCB7CiAgICAgICAgdGV4dC1hbGlnbjogbGVmdDsKICAgICAgICBwYWRkaW5nOiA0cHgg
OHB4OwogICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjMjIyOwogICAgICB9CiAgICAg
IC5zdW1tYXJ5IHRoIHsKICAgICAgICBjb2xvcjogIzk5OTsKICAgICAgICBmb250LXdlaWdodDog
bm9ybWFsOwogICAgICB9CiAgICA8L3N0eWxlPgogIDwvaGVhZD4KICA8Ym9keT4KICAgIDxoMT7w
n6eKIElDRSBHYXRoZXJpbmcgRGlhZ25vc3RpYzwvaDE+CiAgICA8ZGl2IGNsYXNzPSJjb250cm9s
cyI+CiAgICAgIDxkaXYgY2xhc3M9InJvdyI+CiAgICAgICAgPGRpdj4KICAgICAgICAgIDxsYWJl
bD5UVVJOIFVSSSAoVURQKTwvbGFiZWwKICAgICAgICAgID48aW5wdXQgdHlwZT0idGV4dCIgaWQ9
InVyaTEiIHZhbHVlPSJ0dXJuOmdsb2JhbC5yZWxheS5tZXRlcmVkLmNhOjgwP3RyYW5zcG9ydD11
ZHAiIC8+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdj4KICAgICAgICAgIDxsYWJlbD5UVVJO
IFVSSSAoVENQKTwvbGFiZWwKICAgICAgICAgID48aW5wdXQgdHlwZT0idGV4dCIgaWQ9InVyaTIi
IHZhbHVlPSJ0dXJuczpnbG9iYWwucmVsYXkubWV0ZXJlZC5jYTo0NDM/dHJhbnNwb3J0PXRjcCIg
Lz4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9InJvdyI+CiAg
ICAgICAgPGRpdj48bGFiZWw+VXNlcm5hbWU8L2xhYmVsPjxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0i
dXNlcm5hbWUiIHZhbHVlPSIiIC8+PC9kaXY+CiAgICAgICAgPGRpdj48bGFiZWw+Q3JlZGVudGlh
bDwvbGFiZWw+PGlucHV0IHR5cGU9InRleHQiIGlkPSJjcmVkZW50aWFsIiB2YWx1ZT0iIiAvPjwv
ZGl2PgogICAgICAgIDxkaXY+PGxhYmVsPlRpbWVvdXQ8L2xhYmVsPjxpbnB1dCB0eXBlPSJudW1i
ZXIiIGlkPSJ0aW1lb3V0IiB2YWx1ZT0iMjAiIC8+PC9kaXY+CiAgICAgIDwvZGl2PgogICAgICA8
ZGl2IGNsYXNzPSJyb3ciIHN0eWxlPSJtYXJnaW4tdG9wOiA4cHgiPgogICAgICAgIDxidXR0b24g
b25jbGljaz0icnVuQWxsKCkiPuKWtiBSdW4gQWxsIDQ8L2J1dHRvbj4KICAgICAgICA8YnV0dG9u
IG9uY2xpY2s9InJ1blNpbmdsZSgndWRwJykiPlVEUCBvbmx5PC9idXR0b24+CiAgICAgICAgPGJ1
dHRvbiBvbmNsaWNrPSJydW5TaW5nbGUoJ3RjcCcpIj5UQ1Agb25seTwvYnV0dG9uPgogICAgICAg
IDxidXR0b24gb25jbGljaz0icnVuU2luZ2xlKCdub25lJykiPk5vIHNlcnZlcnM8L2J1dHRvbj4K
ICAgICAgICA8YnV0dG9uIGNsYXNzPSJzdG9wIiBvbmNsaWNrPSJzdG9wQWxsKCkiPuKPuSBTdG9w
PC9idXR0b24+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJ0ZXN0cyIg
aWQ9InRlc3RzIj48L2Rpdj4KICAgIDxkaXYgY2xhc3M9InN1bW1hcnkiIGlkPSJzdW1tYXJ5IiBz
dHlsZT0iZGlzcGxheTogbm9uZSI+CiAgICAgIDxoMj5TdW1tYXJ5PC9oMj4KICAgICAgPHRhYmxl
IGlkPSJzdW1tYXJ5LXRhYmxlIj4KICAgICAgICA8dGhlYWQ+CiAgICAgICAgICA8dHI+CiAgICAg
ICAgICAgIDx0aD5UZXN0PC90aD4KICAgICAgICAgICAgPHRoPlN0YXRlPC90aD4KICAgICAgICAg
ICAgPHRoPkNhbmRpZGF0ZXM8L3RoPgogICAgICAgICAgICA8dGg+RXJyb3JzPC90aD4KICAgICAg
ICAgICAgPHRoPlRpbWU8L3RoPgogICAgICAgICAgICA8dGg+VHlwZXM8L3RoPgogICAgICAgICAg
PC90cj4KICAgICAgICA8L3RoZWFkPgogICAgICAgIDx0Ym9keT48L3Rib2R5PgogICAgICA8L3Rh
YmxlPgogICAgPC9kaXY+CiAgICA8c2NyaXB0PgogICAgICBsZXQgYWN0aXZlVGVzdHMgPSBbXSwK
ICAgICAgICB0ZXN0SWQgPSAwOwoKICAgICAgZnVuY3Rpb24gc3RvcEFsbCgpIHsKICAgICAgICBh
Y3RpdmVUZXN0cy5mb3JFYWNoKHQgPT4gewogICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgdC5w
Yy5jbG9zZSgpOwogICAgICAgICAgfSBjYXRjaCB7fQogICAgICAgICAgY2xlYXJUaW1lb3V0KHQu
dGltZXIpOwogICAgICAgIH0pOwogICAgICAgIGFjdGl2ZVRlc3RzID0gW107CiAgICAgIH0KCiAg
ICAgIGZ1bmN0aW9uIHJ1bkFsbCgpIHsKICAgICAgICBzdG9wQWxsKCk7CiAgICAgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ3Rlc3RzJykuaW5uZXJIVE1MID0gJyc7CiAgICAgICAgWyd1ZHAn
LCAndGNwJywgJ2JvdGgnLCAnbm9uZSddLmZvckVhY2goayA9PiBydW5UZXN0KGspKTsKICAgICAg
fQoKICAgICAgZnVuY3Rpb24gcnVuU2luZ2xlKGspIHsKICAgICAgICBzdG9wQWxsKCk7CiAgICAg
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rlc3RzJykuaW5uZXJIVE1MID0gJyc7CiAgICAg
ICAgcnVuVGVzdChrKTsKICAgICAgfQoKICAgICAgZnVuY3Rpb24gcnVuVGVzdChrZXkpIHsKICAg
ICAgICBjb25zdCBpZCA9ICsrdGVzdElkOwogICAgICAgIGNvbnN0IHUgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgndXNlcm5hbWUnKS52YWx1ZTsKICAgICAgICBjb25zdCBwID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ2NyZWRlbnRpYWwnKS52YWx1ZTsKICAgICAgICBjb25zdCB1cmkxID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3VyaTEnKS52YWx1ZTsKICAgICAgICBjb25zdCB1cmky
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3VyaTInKS52YWx1ZTsKICAgICAgICBjb25zdCB0
aW1lb3V0U2VjID0gcGFyc2VJbnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RpbWVvdXQnKS52
YWx1ZSkgfHwgMjA7CgogICAgICAgIGxldCBsYWJlbCwgaWNlU2VydmVycywgcG9saWN5OwogICAg
ICAgIGlmIChrZXkgPT09ICd1ZHAnKSB7CiAgICAgICAgICBsYWJlbCA9ICdUVVJOIFVEUCBvbmx5
JzsKICAgICAgICAgIHBvbGljeSA9ICdyZWxheSc7CiAgICAgICAgICBpY2VTZXJ2ZXJzID0gW3sg
dXJsczogdXJpMSwgdXNlcm5hbWU6IHUsIGNyZWRlbnRpYWw6IHAgfV07CiAgICAgICAgfSBlbHNl
IGlmIChrZXkgPT09ICd0Y3AnKSB7CiAgICAgICAgICBsYWJlbCA9ICdUVVJOIFRDUCBvbmx5JzsK
ICAgICAgICAgIHBvbGljeSA9ICdyZWxheSc7CiAgICAgICAgICBpY2VTZXJ2ZXJzID0gW3sgdXJs
czogdXJpMiwgdXNlcm5hbWU6IHUsIGNyZWRlbnRpYWw6IHAgfV07CiAgICAgICAgfSBlbHNlIGlm
IChrZXkgPT09ICdib3RoJykgewogICAgICAgICAgbGFiZWwgPSAnVFVSTiBVRFArVENQJzsKICAg
ICAgICAgIHBvbGljeSA9ICdyZWxheSc7CiAgICAgICAgICBpY2VTZXJ2ZXJzID0gW3sgdXJsczog
W3VyaTEsIHVyaTJdLCB1c2VybmFtZTogdSwgY3JlZGVudGlhbDogcCB9XTsKICAgICAgICB9IGVs
c2UgewogICAgICAgICAgbGFiZWwgPSAnTm8gc2VydmVycyc7CiAgICAgICAgICBwb2xpY3kgPSAn
YWxsJzsKICAgICAgICAgIGljZVNlcnZlcnMgPSBbXTsKICAgICAgICB9CgogICAgICAgIGNvbnN0
IHBhbmVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAgICAgICAgcGFuZWwuY2xh
c3NOYW1lID0gJ3Rlc3QtcGFuZWwnOwogICAgICAgIGNvbnN0IHNlcnZlclN0ciA9IGljZVNlcnZl
cnMubGVuZ3RoCiAgICAgICAgICA/IEpTT04uc3RyaW5naWZ5KGljZVNlcnZlcnMubWFwKHMgPT4g
KHsgdXJsczogcy51cmxzIH0pKSkKICAgICAgICAgIDogJ25vbmUnOwogICAgICAgIHBhbmVsLmlu
bmVySFRNTCA9IGA8aDM+JHtsYWJlbH08L2gzPjxkaXYgY2xhc3M9ImNvbmZpZyI+cG9saWN5PSR7
cG9saWN5fSAke3NlcnZlclN0cn08L2Rpdj4KICAgIDxkaXYgY2xhc3M9InN0YXR1cyBydW5uaW5n
IiBpZD0ic3RhdHVzLSR7aWR9Ij7ij7MgcnVubmluZzwvZGl2PjxkaXYgY2xhc3M9ImxvZy1ib3gi
IGlkPSJsb2ctJHtpZH0iPjwvZGl2PmA7CiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J3Rlc3RzJykuYXBwZW5kQ2hpbGQocGFuZWwpOwoKICAgICAgICBjb25zdCBsb2dFbCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKGBsb2ctJHtpZH1gKSwKICAgICAgICAgIHN0YXR1c0VsID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoYHN0YXR1cy0ke2lkfWApOwogICAgICAgIGNvbnN0IHN0YXJ0
ID0gcGVyZm9ybWFuY2Uubm93KCk7CiAgICAgICAgbGV0IGNhbmRpZGF0ZUNvdW50ID0gMCwKICAg
ICAgICAgIGVycm9yQ291bnQgPSAwOwogICAgICAgIGNvbnN0IGNhbmRpZGF0ZVR5cGVzID0gbmV3
IFNldCgpOwoKICAgICAgICBjb25zdCBsb2cgPSAoY2xzLCBtc2cpID0+IHsKICAgICAgICAgIGxv
Z0VsLmlubmVySFRNTCArPSBgPHNwYW4gY2xhc3M9InRzIj5bJHsoKHBlcmZvcm1hbmNlLm5vdygp
IC0gc3RhcnQpIC8gMTAwMCkudG9GaXhlZCgyKX1zXTwvc3Bhbj4gPHNwYW4gY2xhc3M9IiR7Y2xz
fSI+JHttc2d9PC9zcGFuPlxuYDsKICAgICAgICAgIGxvZ0VsLnNjcm9sbFRvcCA9IGxvZ0VsLnNj
cm9sbEhlaWdodDsKICAgICAgICB9OwogICAgICAgIGNvbnN0IGZpbmlzaCA9IHN0YXRlID0+IHsK
ICAgICAgICAgIHN0YXR1c0VsLnRleHRDb250ZW50ID0gc3RhdGUgPT09ICdjb21wbGV0ZScgPyAn
4pyFIGNvbXBsZXRlJyA6ICfij7AgdGltZW91dCc7CiAgICAgICAgICBzdGF0dXNFbC5jbGFzc05h
bWUgPSBgc3RhdHVzICR7c3RhdGUgPT09ICdjb21wbGV0ZScgPyAnY29tcGxldGUnIDogJ3RpbWVv
dXQnfWA7CiAgICAgICAgICBjb25zdCB0Ym9keSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNz
dW1tYXJ5LXRhYmxlIHRib2R5Jyk7CiAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
c3VtbWFyeScpLnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snOwogICAgICAgICAgY29uc3QgdHIgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwogICAgICAgICAgY29uc3QgYyA9IHN0YXRlID09
PSAnY29tcGxldGUnID8gJyM3ZmRiY2EnIDogJyNmZjUzNzAnOwogICAgICAgICAgdHIuaW5uZXJI
VE1MID0gYDx0ZD4ke2xhYmVsfTwvdGQ+PHRkIHN0eWxlPSJjb2xvcjoke2N9Ij4ke3N0YXRlfTwv
dGQ+PHRkPiR7Y2FuZGlkYXRlQ291bnR9PC90ZD48dGQ+JHtlcnJvckNvdW50fTwvdGQ+PHRkPiR7
KChwZXJmb3JtYW5jZS5ub3coKSAtIHN0YXJ0KSAvIDEwMDApLnRvRml4ZWQoMil9czwvdGQ+PHRk
PiR7Wy4uLmNhbmRpZGF0ZVR5cGVzXS5qb2luKCcsICcpIHx8ICfigJQnfTwvdGQ+YDsKICAgICAg
ICAgIHRib2R5LmFwcGVuZENoaWxkKHRyKTsKICAgICAgICB9OwoKICAgICAgICBjb25zdCBwYyA9
IG5ldyBSVENQZWVyQ29ubmVjdGlvbih7IGljZVNlcnZlcnMsIGljZVRyYW5zcG9ydFBvbGljeTog
cG9saWN5IH0pOwogICAgICAgIGNvbnN0IHRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7CiAgICAg
ICAgICBsb2coJ2Vycm9yJywgYFRJTUVPVVQg4oCUIGljZUdhdGhlcmluZ1N0YXRlOiAke3BjLmlj
ZUdhdGhlcmluZ1N0YXRlfWApOwogICAgICAgICAgZmluaXNoKCd0aW1lb3V0Jyk7CiAgICAgICAg
ICB0cnkgewogICAgICAgICAgICBwYy5jbG9zZSgpOwogICAgICAgICAgfSBjYXRjaCB7fQogICAg
ICAgIH0sIHRpbWVvdXRTZWMgKiAxMDAwKTsKICAgICAgICBhY3RpdmVUZXN0cy5wdXNoKHsgcGMs
IHRpbWVyIH0pOwoKICAgICAgICBwYy5vbmljZWNhbmRpZGF0ZSA9IGUgPT4gewogICAgICAgICAg
aWYgKGUuY2FuZGlkYXRlKSB7CiAgICAgICAgICAgIGNhbmRpZGF0ZUNvdW50Kys7CiAgICAgICAg
ICAgIGNhbmRpZGF0ZVR5cGVzLmFkZChlLmNhbmRpZGF0ZS50eXBlIHx8ICd1bmtub3duJyk7CiAg
ICAgICAgICAgIGxvZygKICAgICAgICAgICAgICAnY2FuZGlkYXRlJywKICAgICAgICAgICAgICBg
IyR7Y2FuZGlkYXRlQ291bnR9ICR7ZS5jYW5kaWRhdGUudHlwZX0gJHtlLmNhbmRpZGF0ZS5wcm90
b2NvbH0gJHtlLmNhbmRpZGF0ZS5hZGRyZXNzIHx8ICcnfToke2UuY2FuZGlkYXRlLnBvcnR9YAog
ICAgICAgICAgICApOwogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgbG9nKCdkb25lJywg
YENvbXBsZXRlIOKAlCAke2NhbmRpZGF0ZUNvdW50fSBjYW5kaWRhdGUocylgKTsKICAgICAgICAg
ICAgY2xlYXJUaW1lb3V0KHRpbWVyKTsKICAgICAgICAgICAgZmluaXNoKCdjb21wbGV0ZScpOwog
ICAgICAgICAgfQogICAgICAgIH07CiAgICAgICAgcGMub25pY2VjYW5kaWRhdGVlcnJvciA9IGUg
PT4gewogICAgICAgICAgZXJyb3JDb3VudCsrOwogICAgICAgICAgbG9nKAogICAgICAgICAgICAn
ZXJyb3InLAogICAgICAgICAgICBgSUNFIGVycm9yICMke2Vycm9yQ291bnR9OiBjb2RlPSR7ZS5l
cnJvckNvZGV9ICIke2UuZXJyb3JUZXh0fSIgdXJsPSR7ZS51cmx9YAogICAgICAgICAgKTsKICAg
ICAgICB9OwogICAgICAgIHBjLm9uaWNlZ2F0aGVyaW5nc3RhdGVjaGFuZ2UgPSAoKSA9PgogICAg
ICAgICAgbG9nKCdzdGF0ZScsIGBpY2VHYXRoZXJpbmdTdGF0ZSDihpIgJHtwYy5pY2VHYXRoZXJp
bmdTdGF0ZX1gKTsKCiAgICAgICAgcGMuYWRkVHJhbnNjZWl2ZXIoJ2F1ZGlvJywgeyBkaXJlY3Rp
b246ICdzZW5kcmVjdicgfSk7CiAgICAgICAgKGFzeW5jICgpID0+IHsKICAgICAgICAgIGNvbnN0
IG9mZmVyID0gYXdhaXQgcGMuY3JlYXRlT2ZmZXIoKTsKICAgICAgICAgIGxvZygnaW5mbycsIGBD
cmVhdGVkIG9mZmVyICh1ZnJhZz0ke29mZmVyLnNkcC5tYXRjaCgvYT1pY2UtdWZyYWc6KFxTKykv
KT8uWzFdfSlgKTsKICAgICAgICAgIGF3YWl0IHBjLnNldExvY2FsRGVzY3JpcHRpb24ob2ZmZXIp
OwogICAgICAgICAgbG9nKCdpbmZvJywgYHNldExvY2FsRGVzY3JpcHRpb24g4oCUIGljZUdhdGhl
cmluZ1N0YXRlOiAke3BjLmljZUdhdGhlcmluZ1N0YXRlfWApOwogICAgICAgIH0pKCk7CiAgICAg
IH0KICAgIDwvc2NyaXB0PgogIDwvYm9keT4KPC9odG1sPgo=
</data>
<flag name="review"
          id="500503"
          type_id="1"
          status="?"
          setter="devalevd"
    />
          </attachment>
      

    </bug>

</bugzilla>