<?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>213143</bug_id>
          
          <creation_ts>2020-06-12 13:18:23 -0700</creation_ts>
          <short_desc>Add artificial delay to WebSocket connections to mitigate port scanning attacks</short_desc>
          <delta_ts>2020-07-13 22:39:07 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=214293</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Kate Cheney">katherine_cheney</reporter>
          <assigned_to name="Kate Cheney">katherine_cheney</assigned_to>
          <cc>achristensen</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>jonlee</cc>
    
    <cc>mjs</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>toyoshim</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wilander</cc>
    
    <cc>youennf</cc>
    
    <cc>yutak</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1662113</commentid>
    <comment_count>0</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-06-12 13:18:23 -0700</bug_when>
    <thetext>WebSocket connections can potentially be used to determine if specific ports are open using timing attacks. We should make this more difficult by adding some sort of delay or noise to the reporting of WebSocket state.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1662114</commentid>
    <comment_count>1</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-06-12 13:18:39 -0700</bug_when>
    <thetext>rdar://problem/64308927</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1662127</commentid>
    <comment_count>2</comment_count>
      <attachid>401773</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-06-12 13:38:46 -0700</bug_when>
    <thetext>Created attachment 401773
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1662131</commentid>
    <comment_count>3</comment_count>
      <attachid>401773</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-06-12 13:44:26 -0700</bug_when>
    <thetext>Comment on attachment 401773
Patch

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

&gt; Source/WebCore/Modules/websockets/WebSocket.cpp:613
&gt;      dispatchOrQueueErrorEvent();

You&apos;re still firing the JS event right away here so I don&apos;t think you are achieving anything. Also, you are violating the HTML specification now which says to *first* set readyState to CLOSED and *then* fire the error event:
https://html.spec.whatwg.org/multipage/web-sockets.html#feedback-from-the-protocol:concept-websocket-closed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1662135</commentid>
    <comment_count>4</comment_count>
      <attachid>401773</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-06-12 13:52:09 -0700</bug_when>
    <thetext>Comment on attachment 401773
Patch

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

&gt;&gt; Source/WebCore/Modules/websockets/WebSocket.cpp:613
&gt;&gt;      dispatchOrQueueErrorEvent();
&gt; 
&gt; You&apos;re still firing the JS event right away here so I don&apos;t think you are achieving anything. Also, you are violating the HTML specification now which says to *first* set readyState to CLOSED and *then* fire the error event:
&gt; https://html.spec.whatwg.org/multipage/web-sockets.html#feedback-from-the-protocol:concept-websocket-closed

The JS attack checks ws.readyState to determine the interval, which I think calls into WebSocket::readyState(). So by delaying setting m_state, it should be applicable to this specific method. But maybe I&apos;m missing something?

Good point about the spec. I can potentially add the error event to the timer execution to happen after changing the state.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1662145</commentid>
    <comment_count>5</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-06-12 14:03:25 -0700</bug_when>
    <thetext>(In reply to katherine_cheney from comment #4)
&gt; Comment on attachment 401773 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=401773&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/Modules/websockets/WebSocket.cpp:613
&gt; &gt;&gt;      dispatchOrQueueErrorEvent();
&gt; &gt; 
&gt; &gt; You&apos;re still firing the JS event right away here so I don&apos;t think you are achieving anything. Also, you are violating the HTML specification now which says to *first* set readyState to CLOSED and *then* fire the error event:
&gt; &gt; https://html.spec.whatwg.org/multipage/web-sockets.html#feedback-from-the-protocol:concept-websocket-closed
&gt; 
&gt; The JS attack checks ws.readyState to determine the interval, which I think
&gt; calls into WebSocket::readyState(). So by delaying setting m_state, it
&gt; should be applicable to this specific method. But maybe I&apos;m missing
&gt; something?

My point is that you can assume that if you got the error event, the readyState is closed, since that&apos;s the spec. Also, you can time how long it takes to get the error event...

&gt; 
&gt; Good point about the spec. I can potentially add the error event to the
&gt; timer execution to happen after changing the state.

A SuspendableTimer then otherwise you are going to fire events while in the back/forward cache potentially.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1662162</commentid>
    <comment_count>6</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-06-12 14:30:10 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #5)
&gt; (In reply to katherine_cheney from comment #4)
&gt; &gt; Comment on attachment 401773 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=401773&amp;action=review
&gt; &gt; 
&gt; &gt; &gt;&gt; Source/WebCore/Modules/websockets/WebSocket.cpp:613
&gt; &gt; &gt;&gt;      dispatchOrQueueErrorEvent();
&gt; &gt; &gt; 
&gt; &gt; &gt; You&apos;re still firing the JS event right away here so I don&apos;t think you are achieving anything. Also, you are violating the HTML specification now which says to *first* set readyState to CLOSED and *then* fire the error event:
&gt; &gt; &gt; https://html.spec.whatwg.org/multipage/web-sockets.html#feedback-from-the-protocol:concept-websocket-closed
&gt; &gt; 
&gt; &gt; The JS attack checks ws.readyState to determine the interval, which I think
&gt; &gt; calls into WebSocket::readyState(). So by delaying setting m_state, it
&gt; &gt; should be applicable to this specific method. But maybe I&apos;m missing
&gt; &gt; something?
&gt; 
&gt; My point is that you can assume that if you got the error event, the
&gt; readyState is closed, since that&apos;s the spec. Also, you can time how long it
&gt; takes to get the error event...
&gt; 

I see, adding the error event to the timer should fix this.

&gt; &gt; 
&gt; &gt; Good point about the spec. I can potentially add the error event to the
&gt; &gt; timer execution to happen after changing the state.
&gt; 
&gt; A SuspendableTimer then otherwise you are going to fire events while in the
&gt; back/forward cache potentially.

Noted, good call!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1662206</commentid>
    <comment_count>7</comment_count>
      <attachid>401796</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-06-12 15:47:10 -0700</bug_when>
    <thetext>Created attachment 401796
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1662210</commentid>
    <comment_count>8</comment_count>
      <attachid>401796</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-06-12 16:00:36 -0700</bug_when>
    <thetext>Comment on attachment 401796
Patch

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

&gt; Source/WebCore/Modules/websockets/WebSocket.cpp:612
&gt; +    auto closeDelay = Seconds((10.0 + static_cast&lt;double&gt;(cryptographicallyRandomNumber() % 50)) / 1000);

I think this deserves a comment to explain why we&apos;re doing this.

&gt; Source/WebCore/Modules/websockets/WebSocket.h:150
&gt; +    SuspendableTimer m_closingTimer;

Looks like I was wrong about needing a SuspendableTimer, sorry. A simple timer should suffice because WebSocket::dispatchOrQueueEvent() takes care of queueing events while suspended.

&gt; LayoutTests/http/tests/websocket/tests/hybi/port-scan.html:1
&gt; +&lt;!DOCTYPE HTML PUBLIC &quot;-//IETF//DTD HTML//EN&quot;&gt;

&lt;!DOCTYPE html&gt;

&gt; LayoutTests/http/tests/websocket/tests/hybi/port-scan.html:4
&gt; +&lt;script src=&quot;../../../../js-test-resources/js-test-pre.js&quot;&gt;&lt;/script&gt;

&lt;script src=&quot;/js-test-resources/js-test.js&quot;&gt;&lt;/script&gt;

&gt; LayoutTests/http/tests/websocket/tests/hybi/port-scan.html:7
&gt; +&lt;div id=&quot;description&quot;&gt;&lt;/div&gt;

Not needed.

&gt; LayoutTests/http/tests/websocket/tests/hybi/port-scan.html:8
&gt; +&lt;div id=&quot;console&quot;&gt;&lt;/div&gt;

Not needed.

&gt; LayoutTests/http/tests/websocket/tests/hybi/port-scan.html:9
&gt; +&lt;script type=&quot;text/javascript&quot;&gt;

type=&quot;text/javascript&quot; is not needed.

&gt; LayoutTests/http/tests/websocket/tests/hybi/port-scan.html:10
&gt; +

Would be nice if this test had a call to description(&quot;blablabla&quot;) to set a description.

&gt; LayoutTests/http/tests/websocket/tests/hybi/port-scan.html:11
&gt; +window.jsTestIsAsync = true;

window. is not needed.

&gt; LayoutTests/http/tests/websocket/tests/hybi/port-scan.html:13
&gt; +function endTest()

What&apos;s the function of this function? Why not call finishJSTest directly?

&gt; LayoutTests/http/tests/websocket/tests/hybi/port-scan.html:89
&gt; +&lt;script src=&quot;../../../../js-test-resources/js-test-post.js&quot;&gt;&lt;/script&gt;

We don&apos;t use pre / post version in new tests anymore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1662227</commentid>
    <comment_count>9</comment_count>
      <attachid>401802</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-06-12 16:37:48 -0700</bug_when>
    <thetext>Created attachment 401802
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1662242</commentid>
    <comment_count>10</comment_count>
      <attachid>401802</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-06-12 16:59:17 -0700</bug_when>
    <thetext>Comment on attachment 401802
Patch

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

Patch seems correct. It would be good if a security person could take a look too before landing to make sure it properly mitigates the attacks.

&gt; Source/WebCore/Modules/websockets/WebSocket.cpp:612
&gt; +    auto closeDelay = Seconds((10.0 + static_cast&lt;double&gt;(cryptographicallyRandomNumber() % 50)) / 1000);

Maybe use Seconds::fromMilliseconds() to avoid / 1000.

&gt; LayoutTests/http/tests/websocket/tests/hybi/port-scan.html:1
&gt; +&lt;!DOCTYPE HTML&gt;

We usually don&apos;t uppercase it but it works.

&gt; LayoutTests/http/tests/websocket/tests/hybi/port-scan.html:4
&gt; +&lt;script src=&quot;/js-test-resources/js-test.js&quot;&gt;&lt;/script&gt;&lt;/head&gt;

I think the &lt;/head&gt; should be on the next line for consistency.

&gt; LayoutTests/http/tests/websocket/tests/hybi/port-scan.html:8
&gt; +jsTestIsAsync = true;

This test is still missing a description().

&gt; LayoutTests/http/tests/websocket/tests/hybi/port-scan.html:34
&gt; +        if (ws.readyState === 0) // CONNECTING

WebSocket.CONNECTING then you don&apos;t need a comment.

&gt; LayoutTests/http/tests/websocket/tests/hybi/port-scan.html:38
&gt; +        if (ws.readyState === 1) // OPEN

ditto.

&gt; LayoutTests/http/tests/websocket/tests/hybi/port-scan.html:42
&gt; +        if (ws.readyState === 2) // CLOSING

ditto.

&gt; LayoutTests/http/tests/websocket/tests/hybi/port-scan.html:46
&gt; +        if (ws.readyState === 3) // CLOSE

ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1662261</commentid>
    <comment_count>11</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-06-12 17:28:37 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #10)
&gt; Comment on attachment 401802 [details]
&gt; Patch

Thanks for the comments!

&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=401802&amp;action=review
&gt; 
&gt; Patch seems correct. It would be good if a security person could take a look
&gt; too before landing to make sure it properly mitigates the attacks.
&gt; 

Sounds good, I&apos;ll ask someone to look. Looks like EWS might be unhappy too. 

&gt; &gt; Source/WebCore/Modules/websockets/WebSocket.cpp:612
&gt; &gt; +    auto closeDelay = Seconds((10.0 + static_cast&lt;double&gt;(cryptographicallyRandomNumber() % 50)) / 1000);
&gt; 
&gt; Maybe use Seconds::fromMilliseconds() to avoid / 1000.
&gt; 
&gt; &gt; LayoutTests/http/tests/websocket/tests/hybi/port-scan.html:1
&gt; &gt; +&lt;!DOCTYPE HTML&gt;
&gt; 
&gt; We usually don&apos;t uppercase it but it works.
&gt; 
&gt; &gt; LayoutTests/http/tests/websocket/tests/hybi/port-scan.html:4
&gt; &gt; +&lt;script src=&quot;/js-test-resources/js-test.js&quot;&gt;&lt;/script&gt;&lt;/head&gt;
&gt; 
&gt; I think the &lt;/head&gt; should be on the next line for consistency.
&gt; 
&gt; &gt; LayoutTests/http/tests/websocket/tests/hybi/port-scan.html:8
&gt; &gt; +jsTestIsAsync = true;
&gt; 
&gt; This test is still missing a description().
&gt; 
&gt; &gt; LayoutTests/http/tests/websocket/tests/hybi/port-scan.html:34
&gt; &gt; +        if (ws.readyState === 0) // CONNECTING
&gt; 
&gt; WebSocket.CONNECTING then you don&apos;t need a comment.
&gt; 
&gt; &gt; LayoutTests/http/tests/websocket/tests/hybi/port-scan.html:38
&gt; &gt; +        if (ws.readyState === 1) // OPEN
&gt; 
&gt; ditto.
&gt; 
&gt; &gt; LayoutTests/http/tests/websocket/tests/hybi/port-scan.html:42
&gt; &gt; +        if (ws.readyState === 2) // CLOSING
&gt; 
&gt; ditto.
&gt; 
&gt; &gt; LayoutTests/http/tests/websocket/tests/hybi/port-scan.html:46
&gt; &gt; +        if (ws.readyState === 3) // CLOSE
&gt; 
&gt; ditto.

I will fix these.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1662270</commentid>
    <comment_count>12</comment_count>
      <attachid>401802</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-06-12 17:41:09 -0700</bug_when>
    <thetext>Comment on attachment 401802
Patch

Reverting r+ due to web-platform-tests failures</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1662668</commentid>
    <comment_count>13</comment_count>
      <attachid>401802</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-06-15 08:59:22 -0700</bug_when>
    <thetext>Comment on attachment 401802
Patch

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

&gt; Source/WebCore/ChangeLog:11
&gt; +        10 and 60 ms before reporting the closed state of a WebSocket

Where did these two numbers come from?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1662669</commentid>
    <comment_count>14</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-06-15 09:11:33 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #13)
&gt; Comment on attachment 401802 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=401802&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:11
&gt; &gt; +        10 and 60 ms before reporting the closed state of a WebSocket
&gt; 
&gt; Where did these two numbers come from?

Guessing and logging in the test case, mostly. They can be changed if someone has an argument for a better number.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1662723</commentid>
    <comment_count>15</comment_count>
      <attachid>401802</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-06-15 11:22:44 -0700</bug_when>
    <thetext>Comment on attachment 401802
Patch

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

&gt;&gt;&gt; Source/WebCore/Modules/websockets/WebSocket.cpp:612
&gt;&gt;&gt; +    auto closeDelay = Seconds((10.0 + static_cast&lt;double&gt;(cryptographicallyRandomNumber() % 50)) / 1000);
&gt;&gt; 
&gt;&gt; Maybe use Seconds::fromMilliseconds() to avoid / 1000.
&gt; 
&gt; I will fix these.

I am not sure it is a good idea to delay m_state = CLOSED.
It might be better to just delay the event dispatching.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1662724</commentid>
    <comment_count>16</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-06-15 11:25:56 -0700</bug_when>
    <thetext>(In reply to youenn fablet from comment #15)
&gt; Comment on attachment 401802 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=401802&amp;action=review
&gt; 
&gt; &gt;&gt;&gt; Source/WebCore/Modules/websockets/WebSocket.cpp:612
&gt; &gt;&gt;&gt; +    auto closeDelay = Seconds((10.0 + static_cast&lt;double&gt;(cryptographicallyRandomNumber() % 50)) / 1000);
&gt; &gt;&gt; 
&gt; &gt;&gt; Maybe use Seconds::fromMilliseconds() to avoid / 1000.
&gt; &gt; 
&gt; &gt; I will fix these.
&gt; 
&gt; I am not sure it is a good idea to delay m_state = CLOSED.

Could you share what makes you think it&apos;s not a good idea? Are you thinking hangs?

&gt; It might be better to just delay the event dispatching.

I worry that some internal logic that hangs off of m_state == CLOSED will expose the state prematurely in a side channel.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1662726</commentid>
    <comment_count>17</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-06-15 11:28:28 -0700</bug_when>
    <thetext>Ah, not possible m_state is actually exposed as readyState.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1662731</commentid>
    <comment_count>18</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-06-15 11:35:03 -0700</bug_when>
    <thetext>I am able to fix all but 2 failing WPT tests. 

imported/w3c/web-platform-tests/websockets/interfaces/WebSocket/readyState/003.html calls ws.close() then deletes ws.readyState and checks the value. This is not compatible with delaying updating the readyState because there is no onclose() function.

and

imported/w3c/web-platform-tests/websockets/interfaces/WebSocket/close/close-nested.html also expects the readyState to be closed immediately after calling ws.close().

These may need other workarounds if we want to go forward with this method.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1662739</commentid>
    <comment_count>19</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-06-15 11:44:30 -0700</bug_when>
    <thetext>We might have a SocketStreamHandle which is closed but not its channel, which is probably a weird state.

We could emulate delaying the IPC message going from network process to web process at WebProcess reception time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1662776</commentid>
    <comment_count>20</comment_count>
      <attachid>401927</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-06-15 13:05:47 -0700</bug_when>
    <thetext>Created attachment 401927
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1662781</commentid>
    <comment_count>21</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-06-15 13:10:17 -0700</bug_when>
    <thetext>(In reply to youenn fablet from comment #19)
&gt; We might have a SocketStreamHandle which is closed but not its channel,
&gt; which is probably a weird state.
&gt; 

I moved the delay to be set in WebSocketChannel::fail(), which might solve this problem. It calls disconnect() on the SocketStreamHandle with the same delay that it changes the state with. Let me know what you think.


I am still not sure what to do to with the two wpt tests which rely on checking the closed state immediately after calling ws.close(). It is my understanding that we don&apos;t change these tests because they are imported.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1662783</commentid>
    <comment_count>22</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-06-15 13:13:21 -0700</bug_when>
    <thetext>(In reply to katherine_cheney from comment #21)
&gt; (In reply to youenn fablet from comment #19)
&gt; &gt; We might have a SocketStreamHandle which is closed but not its channel,
&gt; &gt; which is probably a weird state.
&gt; &gt; 
&gt; 
&gt; I moved the delay to be set in WebSocketChannel::fail(), which might solve
&gt; this problem. It calls disconnect() on the SocketStreamHandle with the same
&gt; delay that it changes the state with. Let me know what you think.
&gt; 
&gt; 
&gt; I am still not sure what to do to with the two wpt tests which rely on
&gt; checking the closed state immediately after calling ws.close(). It is my
&gt; understanding that we don&apos;t change these tests because they are imported.

Those tests are correct and match the spec:
https://html.spec.whatwg.org/multipage/web-sockets.html#dom-websocket-close

There is no reason/need for your &quot;fix&quot; to impact the case where the JS is calling &quot;close()&quot; on the WebSocket as far as I can tell. So let&apos;s not.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1662784</commentid>
    <comment_count>23</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-06-15 13:16:35 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #22)
&gt; (In reply to katherine_cheney from comment #21)
&gt; &gt; (In reply to youenn fablet from comment #19)
&gt; &gt; &gt; We might have a SocketStreamHandle which is closed but not its channel,
&gt; &gt; &gt; which is probably a weird state.
&gt; &gt; &gt; 
&gt; &gt; 
&gt; &gt; I moved the delay to be set in WebSocketChannel::fail(), which might solve
&gt; &gt; this problem. It calls disconnect() on the SocketStreamHandle with the same
&gt; &gt; delay that it changes the state with. Let me know what you think.
&gt; &gt; 
&gt; &gt; 
&gt; &gt; I am still not sure what to do to with the two wpt tests which rely on
&gt; &gt; checking the closed state immediately after calling ws.close(). It is my
&gt; &gt; understanding that we don&apos;t change these tests because they are imported.
&gt; 
&gt; Those tests are correct and match the spec:
&gt; https://html.spec.whatwg.org/multipage/web-sockets.html#dom-websocket-close
&gt; 
&gt; There is no reason/need for your &quot;fix&quot; to impact the case where the JS is
&gt; calling &quot;close()&quot; on the WebSocket as far as I can tell. So let&apos;s not.

Currently our expectations for these tests both have FAIL messages in them, so they already don&apos;t seem to work as expected with the spec.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1662788</commentid>
    <comment_count>24</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-06-15 13:21:51 -0700</bug_when>
    <thetext>(In reply to katherine_cheney from comment #23)
&gt; (In reply to Chris Dumez from comment #22)
&gt; &gt; (In reply to katherine_cheney from comment #21)
&gt; &gt; &gt; (In reply to youenn fablet from comment #19)
&gt; &gt; &gt; &gt; We might have a SocketStreamHandle which is closed but not its channel,
&gt; &gt; &gt; &gt; which is probably a weird state.
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; 
&gt; &gt; &gt; I moved the delay to be set in WebSocketChannel::fail(), which might solve
&gt; &gt; &gt; this problem. It calls disconnect() on the SocketStreamHandle with the same
&gt; &gt; &gt; delay that it changes the state with. Let me know what you think.
&gt; &gt; &gt; 
&gt; &gt; &gt; 
&gt; &gt; &gt; I am still not sure what to do to with the two wpt tests which rely on
&gt; &gt; &gt; checking the closed state immediately after calling ws.close(). It is my
&gt; &gt; &gt; understanding that we don&apos;t change these tests because they are imported.
&gt; &gt; 
&gt; &gt; Those tests are correct and match the spec:
&gt; &gt; https://html.spec.whatwg.org/multipage/web-sockets.html#dom-websocket-close
&gt; &gt; 
&gt; &gt; There is no reason/need for your &quot;fix&quot; to impact the case where the JS is
&gt; &gt; calling &quot;close()&quot; on the WebSocket as far as I can tell. So let&apos;s not.
&gt; 
&gt; Currently our expectations for these tests both have FAIL messages in them,
&gt; so they already don&apos;t seem to work as expected with the spec.

With the delay, the expectations return PASS messages. That being said, the intention of this patch was obviously not to fix these tests, and adding a random delay to make a test work seems very wrong. I am trying to understand why we have the expectations for the tests set this way in the first place.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1662828</commentid>
    <comment_count>25</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-06-15 14:31:48 -0700</bug_when>
    <thetext>(In reply to katherine_cheney from comment #24)
&gt; (In reply to katherine_cheney from comment #23)
&gt; &gt; (In reply to Chris Dumez from comment #22)
&gt; &gt; &gt; (In reply to katherine_cheney from comment #21)
&gt; &gt; &gt; &gt; (In reply to youenn fablet from comment #19)
&gt; &gt; &gt; &gt; &gt; We might have a SocketStreamHandle which is closed but not its channel,
&gt; &gt; &gt; &gt; &gt; which is probably a weird state.
&gt; &gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; I moved the delay to be set in WebSocketChannel::fail(), which might solve
&gt; &gt; &gt; &gt; this problem. It calls disconnect() on the SocketStreamHandle with the same
&gt; &gt; &gt; &gt; delay that it changes the state with. Let me know what you think.
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; I am still not sure what to do to with the two wpt tests which rely on
&gt; &gt; &gt; &gt; checking the closed state immediately after calling ws.close(). It is my
&gt; &gt; &gt; &gt; understanding that we don&apos;t change these tests because they are imported.
&gt; &gt; &gt; 
&gt; &gt; &gt; Those tests are correct and match the spec:
&gt; &gt; &gt; https://html.spec.whatwg.org/multipage/web-sockets.html#dom-websocket-close
&gt; &gt; &gt; 
&gt; &gt; &gt; There is no reason/need for your &quot;fix&quot; to impact the case where the JS is
&gt; &gt; &gt; calling &quot;close()&quot; on the WebSocket as far as I can tell. So let&apos;s not.
&gt; &gt; 
&gt; &gt; Currently our expectations for these tests both have FAIL messages in them,
&gt; &gt; so they already don&apos;t seem to work as expected with the spec.
&gt; 
&gt; With the delay, the expectations return PASS messages. That being said, the
&gt; intention of this patch was obviously not to fix these tests, and adding a
&gt; random delay to make a test work seems very wrong. I am trying to understand
&gt; why we have the expectations for the tests set this way in the first place.

When we import tests from W3C, we commit them with whatever result they produce. This means that a lot of their expected results contain fail lines. This helps us notice when somebody fixes a bug because these FAIL lines turn into PASS lines.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1662845</commentid>
    <comment_count>26</comment_count>
      <attachid>401927</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-06-15 14:58:49 -0700</bug_when>
    <thetext>Comment on attachment 401927
Patch

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

&gt; Source/WebCore/Modules/websockets/WebSocketChannel.cpp:242
&gt; +    m_failCloseTimer.startOneShot(closeDelay);

Isn&apos;t it WebSocketChannel::didFailSocketStream that gets notification that a port is blocked?

I am also wondering whether random timer noise cannot be filtered out by doing repetitive WebSocket loads and averaging the results.
Maybe a fixed value of no less than XX (100 ms maybe) between the time WebSocketChannel::connect is executed and the time the error is surfacing to JS would be good?

&gt; LayoutTests/http/tests/websocket/tests/hybi/port-scan.html:20
&gt; +    setTimeout(scan_port(1234), 10);

We potentially run tests for 8080 and 1234 in parallel.
It is usually best to run them sequentially for stability and debuggability.
If scan_port returns a promise, then we could write: await scan_port(8080); await scan_port(1234);
Should we use testharness.js we could use promise_test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1662871</commentid>
    <comment_count>27</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-06-15 15:45:32 -0700</bug_when>
    <thetext>(In reply to youenn fablet from comment #26)
&gt; Comment on attachment 401927 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=401927&amp;action=review
&gt; 
Thanks for the comments Youenn! It seems like this might need some refactoring to add a floor value to avoid the averaging tactic. 

&gt; &gt; Source/WebCore/Modules/websockets/WebSocketChannel.cpp:242
&gt; &gt; +    m_failCloseTimer.startOneShot(closeDelay);
&gt; 
&gt; Isn&apos;t it WebSocketChannel::didFailSocketStream that gets notification that a
&gt; port is blocked?
&gt; 
Yes good point, WebSocketChannel::didFailSocketStream() gets called when a port is closed. WebSocketChannel::fail() gets called when a port is open but the connection fails. 

I think we need a delay or floor value in both places to make sure they aren&apos;t distinguishable.

&gt; I am also wondering whether random timer noise cannot be filtered out by
&gt; doing repetitive WebSocket loads and averaging the results.
&gt; Maybe a fixed value of no less than XX (100 ms maybe) between the time
&gt; WebSocketChannel::connect is executed and the time the error is surfacing to
&gt; JS would be good?
&gt; 
Yes, this might be good. Tricky because it seems like we need to also delay disconnecting the handle, otherwise that could be an indicator of port status. This happens in WebSocketChannel.cpp I think.

&gt; &gt; LayoutTests/http/tests/websocket/tests/hybi/port-scan.html:20
&gt; &gt; +    setTimeout(scan_port(1234), 10);
&gt; 
&gt; We potentially run tests for 8080 and 1234 in parallel.
&gt; It is usually best to run them sequentially for stability and debuggability.
&gt; If scan_port returns a promise, then we could write: await scan_port(8080);
&gt; await scan_port(1234);
&gt; Should we use testharness.js we could use promise_test.

Thanks for pointing this out, I&apos;ll make this change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1669525</commentid>
    <comment_count>28</comment_count>
      <attachid>403724</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-07-07 14:13:04 -0700</bug_when>
    <thetext>Created attachment 403724
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1669527</commentid>
    <comment_count>29</comment_count>
      <attachid>403725</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-07-07 14:16:21 -0700</bug_when>
    <thetext>Created attachment 403725
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1669554</commentid>
    <comment_count>30</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-07-07 15:11:47 -0700</bug_when>
    <thetext>Waiting for EWS before setting the review flag.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1669638</commentid>
    <comment_count>31</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-07-07 19:22:46 -0700</bug_when>
    <thetext>It would be great if someone familiar with the WebSocketChannel code could take a look at this patch, specifically at WebSocketChannel::didFailSocketStream() -- in what situation will this be called with a handle different from m_handle, if ever? Other places in the code seem to assume handle == m_handle, but I wanted to check, because this case will not have a delay according to this patch.


I changed expectations for web-platform-tests now that there is a delay setting the state to closed. Since the tests are checking ws.readyState immediately after calling ws.close (the same method used in a port-scanning attack), I can’t think of a way to avoid updating expectations to account for the delay.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1669828</commentid>
    <comment_count>32</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2020-07-08 11:32:08 -0700</bug_when>
    <thetext>I think Youenn is our best WebSocket expert; he&apos;s on vacation for two weeks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1669845</commentid>
    <comment_count>33</comment_count>
      <attachid>403725</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-07-08 12:25:44 -0700</bug_when>
    <thetext>Comment on attachment 403725
Patch

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

This patch seems to add a lot of complexity and I have trouble believing it is all needed.

&gt; Source/WebCore/Modules/websockets/WebSocketChannel.cpp:207
&gt; +Seconds WebSocketChannel::delayTime()

Why isn&apos;t this const?

&gt; Source/WebCore/Modules/websockets/WebSocketChannel.cpp:210
&gt; +    if (timeSinceConnection.milliseconds() &lt; 100)

if (timeSinceConnection &lt; 100_ms)

&gt; Source/WebCore/Modules/websockets/WebSocketChannel.cpp:211
&gt; +        return Seconds::fromMilliseconds(100) - timeSinceConnection;

100_ms - timeSinceConnection

&gt; Source/WebCore/Modules/websockets/WebSocketChannel.cpp:213
&gt; +    return Seconds(0);

return { };

&gt; Source/WebCore/Modules/websockets/WebSocketChannel.cpp:226
&gt;  void WebSocketChannel::fail(const String&amp; reason)

Can you clarify why we cannot delay the whole call to WebSocketChannel::fail() when there is a networking error? Seems very weird that we would need 2 timers for this.

&gt; Source/WebCore/Modules/websockets/WebSocketChannel.cpp:337
&gt; +        m_closeDelayTimer.startOneShot(Seconds::fromMilliseconds(100));

100_ms</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1669864</commentid>
    <comment_count>34</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-07-08 13:07:06 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #33)
&gt; Comment on attachment 403725 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=403725&amp;action=review
&gt; 
&gt; This patch seems to add a lot of complexity and I have trouble believing it
&gt; is all needed.
&gt; 

Thanks for the comments, I agree it ended up being more complex than I originally thought it would be. I had to make changes to fix failing tests, see inline comment for explanation.

&gt; &gt; Source/WebCore/Modules/websockets/WebSocketChannel.cpp:207
&gt; &gt; +Seconds WebSocketChannel::delayTime()
&gt; 
&gt; Why isn&apos;t this const?
&gt; 

Mistake, will change.

&gt; &gt; Source/WebCore/Modules/websockets/WebSocketChannel.cpp:210
&gt; &gt; +    if (timeSinceConnection.milliseconds() &lt; 100)
&gt; 
&gt; if (timeSinceConnection &lt; 100_ms)

Will fix.

&gt; 
&gt; &gt; Source/WebCore/Modules/websockets/WebSocketChannel.cpp:211
&gt; &gt; +        return Seconds::fromMilliseconds(100) - timeSinceConnection;
&gt; 
&gt; 100_ms - timeSinceConnection
&gt; 

Ditto.

&gt; &gt; Source/WebCore/Modules/websockets/WebSocketChannel.cpp:213
&gt; &gt; +    return Seconds(0);
&gt; 
&gt; return { };

Ditto. 

&gt; 
&gt; &gt; Source/WebCore/Modules/websockets/WebSocketChannel.cpp:226
&gt; &gt;  void WebSocketChannel::fail(const String&amp; reason)
&gt; 
&gt; Can you clarify why we cannot delay the whole call to
&gt; WebSocketChannel::fail() when there is a networking error? Seems very weird
&gt; that we would need 2 timers for this.
&gt; 

This seems to be bringing up 2 different points. 

1) Do you mean delaying WebSocketChannel::fail() at its call-site? Or moving the entire function into the Timer? I didn&apos;t put the entire function in a Timer because some of it relies on the &apos;reason&apos; parameter, which isn&apos;t known when the Timer is initialized.

2) I added the second timer because I was hitting failing tests -- the web socket error was being delayed in WebSocketChannel::fail(), but WebSocketChannel::didCloseSocketStream() was being called immediately when the stream reached the end of its data, without delay (usually before the error was reported). From the specs, we know an error should always be reported first, before close. So I added a timer to delay the call to close the socket stream if an error is pending. Maybe there&apos;s a simpler way?

&gt; &gt; Source/WebCore/Modules/websockets/WebSocketChannel.cpp:337
&gt; &gt; +        m_closeDelayTimer.startOneShot(Seconds::fromMilliseconds(100));
&gt; 
&gt; 100_ms

Will change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1669865</commentid>
    <comment_count>35</comment_count>
      <attachid>403725</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-07-08 13:09:14 -0700</bug_when>
    <thetext>Comment on attachment 403725
Patch

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

&gt;&gt;&gt; Source/WebCore/Modules/websockets/WebSocketChannel.cpp:226
&gt;&gt;&gt;  void WebSocketChannel::fail(const String&amp; reason)
&gt;&gt; 
&gt;&gt; Can you clarify why we cannot delay the whole call to WebSocketChannel::fail() when there is a networking error? Seems very weird that we would need 2 timers for this.
&gt; 
&gt; This seems to be bringing up 2 different points. 
&gt; 
&gt; 1) Do you mean delaying WebSocketChannel::fail() at its call-site? Or moving the entire function into the Timer? I didn&apos;t put the entire function in a Timer because some of it relies on the &apos;reason&apos; parameter, which isn&apos;t known when the Timer is initialized.
&gt; 
&gt; 2) I added the second timer because I was hitting failing tests -- the web socket error was being delayed in WebSocketChannel::fail(), but WebSocketChannel::didCloseSocketStream() was being called immediately when the stream reached the end of its data, without delay (usually before the error was reported). From the specs, we know an error should always be reported first, before close. So I added a timer to delay the call to close the socket stream if an error is pending. Maybe there&apos;s a simpler way?

I meant at the call site. Note that there may be call sites that we may not want to delay (e.g. maybe when WebSocket::close() is called by JS, which is not truly a network error).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1669896</commentid>
    <comment_count>36</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-07-08 14:35:37 -0700</bug_when>
    <thetext>Could we only add logic to WebSocketChannel::didFailSocketStream() which adds a random delay before running its whole implementation?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1669903</commentid>
    <comment_count>37</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-07-08 14:50:58 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #36)
&gt; Could we only add logic to WebSocketChannel::didFailSocketStream() which
&gt; adds a random delay before running its whole implementation?

I agree this is probably the simplest right now. Though I am not sure of the right range for a random delay to make sure we prevent distinguishing open and closed ports. If the delay for closed ports is consistently too high or too low, I think someone could average results of multiple scans, even with randomness. e.g. if we choose a range of 0-10ms for a delay, and the real difference ends up being ~100ms. Even with randomness, it is easy to tell the difference.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1669967</commentid>
    <comment_count>38</comment_count>
      <attachid>403828</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-07-08 17:42:38 -0700</bug_when>
    <thetext>Created attachment 403828
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1669968</commentid>
    <comment_count>39</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-07-08 17:43:56 -0700</bug_when>
    <thetext>(In reply to katherine_cheney from comment #38)
&gt; Created attachment 403828 [details]
&gt; Patch

This is a simpler patch with only a delay for closed ports, as Chris suggested. The random delay range can be adjusted. I am still investigating the windows failure so I am waiting to set the r flag.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670181</commentid>
    <comment_count>40</comment_count>
      <attachid>403891</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-07-09 11:00:46 -0700</bug_when>
    <thetext>Created attachment 403891
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1671089</commentid>
    <comment_count>41</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-07-13 10:58:03 -0700</bug_when>
    <thetext>Committed r264306: &lt;https://trac.webkit.org/changeset/264306&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 403891.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1671101</commentid>
    <comment_count>42</comment_count>
      <attachid>403891</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-07-13 11:46:54 -0700</bug_when>
    <thetext>Comment on attachment 403891
Patch

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

&gt; Source/WebKit/NetworkProcess/NetworkSocketStream.cpp:106
&gt; +static const auto delayMaxMilliseconds = 100;
&gt; +static const double delayMinMilliseconds = 10;

It would be nice to use Seconds for these; you can write 100_ms.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1671102</commentid>
    <comment_count>43</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-07-13 11:47:45 -0700</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #42)
&gt; Comment on attachment 403891 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=403891&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/NetworkSocketStream.cpp:106
&gt; &gt; +static const auto delayMaxMilliseconds = 100;
&gt; &gt; +static const double delayMinMilliseconds = 10;
&gt; 
&gt; It would be nice to use Seconds for these; you can write 100_ms.

Right, I made similar suggestions in my earlier review of this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1671121</commentid>
    <comment_count>44</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-07-13 12:50:25 -0700</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1671123</commentid>
    <comment_count>45</comment_count>
      <attachid>404165</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-07-13 12:50:26 -0700</bug_when>
    <thetext>Created attachment 404165
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1671124</commentid>
    <comment_count>46</comment_count>
      <attachid>404165</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-07-13 12:56:05 -0700</bug_when>
    <thetext>Comment on attachment 404165
Patch

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

&gt; Source/WebKit/NetworkProcess/NetworkSocketStream.cpp:107
&gt; -static const auto delayMaxMilliseconds = 100;
&gt; -static const double delayMinMilliseconds = 10;
&gt; +static const auto delayMax = 100_ms;
&gt; +static const auto delayMin = 10_ms;
&gt;  static const auto closedPortErrorCode = 61;

Should be using constexpr instead of const for new things like this these days.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1671125</commentid>
    <comment_count>47</comment_count>
      <attachid>404166</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-07-13 12:58:28 -0700</bug_when>
    <thetext>Created attachment 404166
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1671145</commentid>
    <comment_count>48</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-07-13 14:08:01 -0700</bug_when>
    <thetext>Committed r264316: &lt;https://trac.webkit.org/changeset/264316&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 404166.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>401773</attachid>
            <date>2020-06-12 13:38:46 -0700</date>
            <delta_ts>2020-06-12 15:47:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213143-20200612133845.patch</filename>
            <type>text/plain</type>
            <size>8269</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyODQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjNhYjhmNTgyZmNlZjNk
MDgwYTI5ZDI0ZWNlOTUwMjQ4N2MzY2U0ZS4uMDhlODNhYzg1NGQ3MTg1ZjUzODFiYTY4MWU4NThh
YmVlZjkzMjc2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDIwLTA2LTEyICBLYXRl
IENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBhcnRp
ZmljaWFsIGRlbGF5IHRvIFdlYlNvY2tldCBjb25uZWN0aW9ucyB0byBtaXRpZ2F0ZSBwb3J0IHNj
YW5uaW5nIGF0dGFja3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIxMzE0MworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjQzMDg5Mjc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViU29ja2V0IGNvbm5l
Y3Rpb25zIGNhbiBwb3RlbnRpYWxseSBiZSB1c2VkIHRvIGRldGVybWluZSBpZiBzcGVjaWZpYwor
ICAgICAgICBwb3J0cyBhcmUgb3BlbiB1c2luZyB0aW1pbmcgYXR0YWNrcy4gVGhpcyBwYXRjaCBh
ZGRzIGEgZGVsYXkgYmV0d2VlbgorICAgICAgICAxMCBhbmQgNjAgbXMgYmVmb3JlIHJlcG9ydGlu
ZyB0aGUgY2xvc2VkIHN0YXRlIG9mIGEgV2ViU29ja2V0CisgICAgICAgIGNvbm5lY3Rpb24gdG8g
bWFrZSBpdCBtb3JlIGRpZmZpY3VsdCB0byBkZXRlcm1pbmUgaWYgYSBUTFMgaGFuZHNoYWtlCisg
ICAgICAgIGhhcyBvY2N1cnJlZCAoaW5kaWNhdGluZyB0aGUgcG9ydCBpcyBvcGVuKS4KKworICAg
ICAgICBUZXN0OiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3BvcnQtc2Nhbi5odG1s
CisKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OldlYlNvY2tldDo6V2ViU29ja2V0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNv
Y2tldDo6ZGlkUmVjZWl2ZU1lc3NhZ2VFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2Nr
ZXQ6OnNldFN0YXRlVG9DbG9zZWQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0OjpkaWRD
bG9zZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5oOgorCiAyMDIw
LTA2LTEwICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBCYXNl
QXVkaW9TaGFyZWRVbml0IGRvZXMgbm90IG5lZWQgdG8gcmVzdGFydCBpdHMgYXVkaW8gdW5pdCBh
dCByZXN1bWUgdGltZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29j
a2V0cy9XZWJTb2NrZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dl
YlNvY2tldC5jcHAKaW5kZXggYTEwOTUwZDBlNDFkNzJjZGE0MjUyODRlZTg1ZDhiNzE4M2UyNjNi
My4uM2NjYjNhM2Y1Y2YzZTI3NDdjYTgwZDk2YWU3NTY4ZmM2MjRjODc1MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAKQEAgLTE0NCw2ICsx
NDQsNyBAQCBXZWJTb2NrZXQ6OldlYlNvY2tldChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250
ZXh0KQogICAgICwgbV9zdWJwcm90b2NvbChlbXB0eVN0cmluZygpKQogICAgICwgbV9leHRlbnNp
b25zKGVtcHR5U3RyaW5nKCkpCiAgICAgLCBtX3Jlc3VtZVRpbWVyKCp0aGlzLCAmV2ViU29ja2V0
OjpyZXN1bWVUaW1lckZpcmVkKQorICAgICwgbV9jbG9zaW5nVGltZXIoKnRoaXMsICZXZWJTb2Nr
ZXQ6OnNldFN0YXRlVG9DbG9zZWQpCiB7CiAgICAgTG9ja0hvbGRlciBsb2NrKGFsbEFjdGl2ZVdl
YlNvY2tldHNNdXRleCgpKTsKIApAQCAtNjA2LDcgKzYwNyw4IEBAIHZvaWQgV2ViU29ja2V0Ojpk
aWRSZWNlaXZlQmluYXJ5RGF0YShWZWN0b3I8dWludDhfdD4mJiBiaW5hcnlEYXRhKQogdm9pZCBX
ZWJTb2NrZXQ6OmRpZFJlY2VpdmVNZXNzYWdlRXJyb3IoKQogewogICAgIExPRyhOZXR3b3JrLCAi
V2ViU29ja2V0ICVwIGRpZFJlY2VpdmVFcnJvck1lc3NhZ2UoKSIsIHRoaXMpOwotICAgIG1fc3Rh
dGUgPSBDTE9TRUQ7CisgICAgYXV0byBjbG9zZURlbGF5ID0gU2Vjb25kcygoMTAuMCArIHN0YXRp
Y19jYXN0PGRvdWJsZT4oY3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIoKSAlIDUwKSkgLyAx
MDAwKTsKKyAgICBtX2Nsb3NpbmdUaW1lci5zdGFydE9uZVNob3QoY2xvc2VEZWxheSk7CiAgICAg
QVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgZGlzcGF0Y2hPclF1ZXVlRXJy
b3JFdmVudCgpOwogfQpAQCAtNjI1LDEzICs2MjcsMTkgQEAgdm9pZCBXZWJTb2NrZXQ6OmRpZFN0
YXJ0Q2xvc2luZ0hhbmRzaGFrZSgpCiAgICAgbV9zdGF0ZSA9IENMT1NJTkc7CiB9CiAKK3ZvaWQg
V2ViU29ja2V0OjpzZXRTdGF0ZVRvQ2xvc2VkKCkKK3sKKyAgICBtX3N0YXRlID0gQ0xPU0VEOwor
fQorCiB2b2lkIFdlYlNvY2tldDo6ZGlkQ2xvc2UodW5zaWduZWQgdW5oYW5kbGVkQnVmZmVyZWRB
bW91bnQsIENsb3NpbmdIYW5kc2hha2VDb21wbGV0aW9uU3RhdHVzIGNsb3NpbmdIYW5kc2hha2VD
b21wbGV0aW9uLCB1bnNpZ25lZCBzaG9ydCBjb2RlLCBjb25zdCBTdHJpbmcmIHJlYXNvbikKIHsK
ICAgICBMT0coTmV0d29yaywgIldlYlNvY2tldCAlcCBkaWRDbG9zZSgpIiwgdGhpcyk7CiAgICAg
aWYgKCFtX2NoYW5uZWwpCiAgICAgICAgIHJldHVybjsKICAgICBib29sIHdhc0NsZWFuID0gbV9z
dGF0ZSA9PSBDTE9TSU5HICYmICF1bmhhbmRsZWRCdWZmZXJlZEFtb3VudCAmJiBjbG9zaW5nSGFu
ZHNoYWtlQ29tcGxldGlvbiA9PSBDbG9zaW5nSGFuZHNoYWtlQ29tcGxldGUgJiYgY29kZSAhPSBX
ZWJTb2NrZXRDaGFubmVsOjpDbG9zZUV2ZW50Q29kZUFibm9ybWFsQ2xvc3VyZTsKLSAgICBtX3N0
YXRlID0gQ0xPU0VEOworICAgIGF1dG8gY2xvc2VEZWxheSA9IFNlY29uZHMoKDEwLjAgKyBzdGF0
aWNfY2FzdDxkb3VibGU+KGNyeXB0b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVyKCkgJSA1MCkpIC8g
MTAwMCk7CisgICAgbV9jbG9zaW5nVGltZXIuc3RhcnRPbmVTaG90KGNsb3NlRGVsYXkpOwogICAg
IG1fYnVmZmVyZWRBbW91bnQgPSB1bmhhbmRsZWRCdWZmZXJlZEFtb3VudDsKICAgICBBU1NFUlQo
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJzb2NrZXRzL1dlYlNvY2tldC5oCmluZGV4IGFiZDIyNWJlNThmYzk4ZDI2MjlkNjY5N2NiZGQ4
ZGFlZjg1NmYzYjMuLmIwMjUxMGJjOWRmYjdiOGI4YjgxYWE1YTI3YmMwMjZhYjY1NDY1MDcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmgKQEAgLTEw
MSw2ICsxMDEsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFdlYlNvY2tldChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0Jik7CiAKKyAgICB2b2lkIHNldFN0YXRlVG9DbG9zZWQoKTsK
ICAgICB2b2lkIHJlc3VtZVRpbWVyRmlyZWQoKTsKICAgICB2b2lkIGRpc3BhdGNoT3JRdWV1ZUVy
cm9yRXZlbnQoKTsKICAgICB2b2lkIGRpc3BhdGNoT3JRdWV1ZUV2ZW50KFJlZjxFdmVudD4mJik7
CkBAIC0xNDYsNiArMTQ3LDcgQEAgcHJpdmF0ZToKICAgICBEZXF1ZTxSZWY8RXZlbnQ+PiBtX3Bl
bmRpbmdFdmVudHM7CiAgICAgYm9vbCBtX2Rpc3BhdGNoZWRFcnJvckV2ZW50IHsgZmFsc2UgfTsK
ICAgICBSZWZQdHI8UGVuZGluZ0FjdGl2aXR5PFdlYlNvY2tldD4+IG1fcGVuZGluZ0FjdGl2aXR5
OworICAgIFRpbWVyIG1fY2xvc2luZ1RpbWVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCmluZGV4IGQzMjhmNThjZjY5MThjM2VjMzc0ZjY3YjhhMTA5YTlmMzJlOGM0MGIuLjIyMzcz
NGY4OTAyOTc0MzZjM2E2MzUxOTE1MjVkMmQ3Y2ZiMDM4ZmUgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBA
QAorMjAyMC0wNi0xMiAgS2F0ZSBDaGVuZXkgIDxrYXRoZXJpbmVfY2hlbmV5QGFwcGxlLmNvbT4K
KworICAgICAgICBBZGQgYXJ0aWZpY2lhbCBkZWxheSB0byBXZWJTb2NrZXQgY29ubmVjdGlvbnMg
dG8gbWl0aWdhdGUgcG9ydCBzY2FubmluZyBhdHRhY2tzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTMxNDMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzY0MzA4OTI3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEFkZCB0ZXN0aW5nIHdoaWNoIGNoZWNrcyB0aGUgc3RhdGUgb2YgYSBXZWJTb2NrZXQgY29u
bmVjdGlvbiBldmVyeSAxbXMgdW50aWwKKyAgICAgICAgaXQgaGFzIGJlZW4gcmVwb3J0ZWQgYXMg
Y2xvc2VkIHRvIG1ha2Ugc3VyZSB0aGUgZGVsYXkgaXMgd29ya2luZworICAgICAgICBjb3JyZWN0
bHkuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3BvcnQtc2Nh
bi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rl
c3RzL2h5YmkvcG9ydC1zY2FuLmh0bWw6IEFkZGVkLgorCiAyMDIwLTA2LTEwICBEZXZpbiBSb3Vz
c28gIDxkcm91c3NvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBYSFIgcmVx
dWVzdCB3aXRoIHNhbWUgVVJMIGFzIG1haW4gcmVzb3VyY2Ugd2lsbCBoaWRlIHRoZSBtYWluIHJl
c291cmNlIHJlcXVlc3QKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29j
a2V0L3Rlc3RzL2h5YmkvcG9ydC1zY2FuLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvcG9ydC1zY2FuLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi41YzdlYThkMzBkZjJlM2Y1YjEyYzdlMjcyNDkyODRkNDRmMmFlMGE3Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9wb3J0
LXNjYW4tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOCBAQAorQ09OU09MRSBNRVNTQUdFOiBXZWJT
b2NrZXQgbmV0d29yayBlcnJvcjogVGhlIG9wZXJhdGlvbiBjb3VsZG7igJl0IGJlIGNvbXBsZXRl
ZC4gQ29ubmVjdGlvbiByZWZ1c2VkCitDT05TT0xFIE1FU1NBR0U6IFdlYlNvY2tldCBuZXR3b3Jr
IGVycm9yOiBUaGUgb3BlcmF0aW9uIGNvdWxkbuKAmXQgYmUgY29tcGxldGVkLiBDb25uZWN0aW9u
IHJlZnVzZWQKK0NPTlNPTEUgTUVTU0FHRTogV2ViU29ja2V0IGNvbm5lY3Rpb24gdG8gJ3dzOi8v
bG9jYWxob3N0OjgwODAvJyBmYWlsZWQ6IFVuZXhwZWN0ZWQgcmVzcG9uc2UgY29kZTogMjAwCitU
ZXN0IHBhc3NlZAorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBM
RVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3Rz
L2h5YmkvcG9ydC1zY2FuLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90
ZXN0cy9oeWJpL3BvcnQtc2Nhbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM0MTdjZDUyZDA0YWNiMmE5MjM5
NmZjMmJhNGM0NzE5ZTZiNjJhMjUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3BvcnQtc2Nhbi5odG1sCkBAIC0wLDAgKzEsOTEg
QEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1s
PgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMtdGVzdC1yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlw
dGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgdHlwZT0idGV4
dC9qYXZhc2NyaXB0Ij4KKword2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCitmdW5jdGlv
biBlbmRUZXN0KCkKK3sKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKwordmFyIGNvdW50UmVjZWl2
ZWRNZXNzYWdlID0gMDsKKworZnVuY3Rpb24gc2Nhbl9wb3J0cygpCit7CisgICAgLy8gT3BlbiBw
b3J0LgorICAgIHNjYW5fcG9ydCg4MDgwKTsKKworICAgIC8vIENsb3NlZCBwb3J0LgorICAgIHNl
dFRpbWVvdXQoc2Nhbl9wb3J0KDEyMzQpLCAxMCk7Cit9CisKKy8vIFRlc3QgYmFzZWQgb2ZmIG9m
IEJlRUYgcG9ydCBzY2FubmluZyBhdHRhY2sgdGVjaG5pcXVlIChodHRwczovL2dpdGh1Yi5jb20v
YmVlZnByb2plY3QvYmVlZi9ibG9iL21hc3Rlci9tb2R1bGVzL25ldHdvcmsvcG9ydF9zY2FubmVy
L2NvbW1hbmQuanMpCitmdW5jdGlvbiBzY2FuX3BvcnQocG9ydCkKK3sKKyAgICB2YXIgdXJsID0g
IndzOi8vbG9jYWxob3N0OiIgKyBwb3J0OworICAgIHZhciB3cyA9IG5ldyBXZWJTb2NrZXQodXJs
KTsKKyAgICB2YXIgc3RhcnRUaW1lID0gKG5ldyBEYXRlKS5nZXRUaW1lKCk7CisgICAgdmFyIHRp
bWVvdXQgPSAzMDAwOworCisgICAgY2xlYXJJbnRlcnZhbElEID0gc2V0SW50ZXJ2YWwoCisgICAg
ZnVuY3Rpb24gKCkKKyAgICB7CisgICAgICAgIHZhciBpbnRlcnZhbCA9IChuZXcgRGF0ZSkuZ2V0
VGltZSgpIC0gc3RhcnRUaW1lOworCisgICAgICAgIGlmICh3cy5yZWFkeVN0YXRlID09PSAwKSAv
LyBDT05ORUNUSU5HCisgICAgICAgIHsKKyAgICAgICAgfQorCisgICAgICAgIGlmICh3cy5yZWFk
eVN0YXRlID09PSAxKSAvLyBPUEVOCisgICAgICAgIHsKKyAgICAgICAgfQorCisgICAgICAgIGlm
ICh3cy5yZWFkeVN0YXRlID09PSAyKSAvLyBDTE9TSU5HCisgICAgICAgIHsKKyAgICAgICAgfQor
CisgICAgICAgIGlmICh3cy5yZWFkeVN0YXRlID09PSAzKSAvLyBDTE9TRQorICAgICAgICB7Cisg
ICAgICAgICAgICBjbGVhckludGVydmFsKGNsZWFySW50ZXJ2YWxJRCk7CisgICAgICAgICAgICB3
cy5jbG9zZSgpOworICAgICAgICAgICAgY291bnRSZWNlaXZlZE1lc3NhZ2UrKzsKKworICAgICAg
ICAgICAgLy8gTG93ZXN0IHBvc3NpYmxlIGRlbGF5IHRpbWUgaXMgMTEgbXMuIFRoaXMgYXNzdW1l
cworICAgICAgICAgICAgLy8gcmVwb3J0aW5nIG9mIGEgV2ViU29ja2V0IHN0YXRlIHdpdGhvdXQg
ZGVsYXkgdGFrZXMgbm8gbGVzcworICAgICAgICAgICAgLy8gdGhhbiA0IG1zLgorICAgICAgICAg
ICAgaWYgKGludGVydmFsIDwgMTUpIHsKKyAgICAgICAgICAgICAgICBkZWJ1ZygiVGltZXIgZmFp
bGVkIHRvIGRlbGF5IHJlcG9ydCBvZiBjbG9zZWQgc3RhdGUiKTsKKyAgICAgICAgICAgICAgICBl
bmRUZXN0KCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChjb3VudFJlY2VpdmVk
TWVzc2FnZSA+PSAyKSB7CisgICAgICAgICAgICAgICAgZGVidWcoIlRlc3QgcGFzc2VkIik7Cisg
ICAgICAgICAgICAgICAgZW5kVGVzdCgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAg
ICAgICAgaWYgKGludGVydmFsID49IHRpbWVvdXQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNs
ZWFySW50ZXJ2YWwoY2xlYXJJbnRlcnZhbElEKTsKKyAgICAgICAgICAgIGRlYnVnKCJDb25uZWN0
aW9uIHRpbWVvdXQiKTsKKyAgICAgICAgICAgIHdzLmNsb3NlKCk7CisgICAgICAgICAgICBlbmRU
ZXN0KCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAsIDEpOworfQor
CitzY2FuX3BvcnRzKCk7CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pz
LXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>401796</attachid>
            <date>2020-06-12 15:47:10 -0700</date>
            <delta_ts>2020-06-12 16:37:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213143-20200612154709.patch</filename>
            <type>text/plain</type>
            <size>8047</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyODQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjNhYjhmNTgyZmNlZjNk
MDgwYTI5ZDI0ZWNlOTUwMjQ4N2MzY2U0ZS4uYjlkYTQyYjA2NDZkYmE2NmEzMjEyZDIzYmEyMmRh
NWFhMDg3YzY1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDIwLTA2LTEyICBLYXRl
IENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBhcnRp
ZmljaWFsIGRlbGF5IHRvIFdlYlNvY2tldCBjb25uZWN0aW9ucyB0byBtaXRpZ2F0ZSBwb3J0IHNj
YW5uaW5nIGF0dGFja3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIxMzE0MworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjQzMDg5Mjc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViU29ja2V0IGNvbm5l
Y3Rpb25zIGNhbiBwb3RlbnRpYWxseSBiZSB1c2VkIHRvIGRldGVybWluZSBpZiBzcGVjaWZpYwor
ICAgICAgICBwb3J0cyBhcmUgb3BlbiB1c2luZyB0aW1pbmcgYXR0YWNrcy4gVGhpcyBwYXRjaCBh
ZGRzIGEgZGVsYXkgYmV0d2VlbgorICAgICAgICAxMCBhbmQgNjAgbXMgYmVmb3JlIHJlcG9ydGlu
ZyB0aGUgY2xvc2VkIHN0YXRlIG9mIGEgV2ViU29ja2V0CisgICAgICAgIGNvbm5lY3Rpb24gdG8g
bWFrZSBpdCBtb3JlIGRpZmZpY3VsdCB0byBkZXRlcm1pbmUgaWYgYSBUTFMgaGFuZHNoYWtlCisg
ICAgICAgIGhhcyBvY2N1cnJlZCAoaW5kaWNhdGluZyB0aGUgcG9ydCBpcyBvcGVuKS4KKworICAg
ICAgICBUZXN0OiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3BvcnQtc2Nhbi5odG1s
CisKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OldlYlNvY2tldDo6V2ViU29ja2V0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNv
Y2tldDo6ZGlkUmVjZWl2ZU1lc3NhZ2VFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2Nr
ZXQ6OnNldFN0YXRlVG9DbG9zZWRXaXRoRXJyb3IpOgorICAgICAgICAqIE1vZHVsZXMvd2Vic29j
a2V0cy9XZWJTb2NrZXQuaDoKKwogMjAyMC0wNi0xMCAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBh
cHBsZS5jb20+CiAKICAgICAgICAgQmFzZUF1ZGlvU2hhcmVkVW5pdCBkb2VzIG5vdCBuZWVkIHRv
IHJlc3RhcnQgaXRzIGF1ZGlvIHVuaXQgYXQgcmVzdW1lIHRpbWUuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCmluZGV4IGExMDk1MGQwZTQxZDcy
Y2RhNDI1Mjg0ZWU4NWQ4YjcxODNlMjYzYjMuLjNmMjQxMjRkN2Y4YTg5YTk1MTNkYjg5NjdjMzZm
N2E3MGY5MDAxNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0
cy9XZWJTb2NrZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9X
ZWJTb2NrZXQuY3BwCkBAIC0xNDQsNyArMTQ0LDEwIEBAIFdlYlNvY2tldDo6V2ViU29ja2V0KFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCiAgICAgLCBtX3N1YnByb3RvY29sKGVtcHR5
U3RyaW5nKCkpCiAgICAgLCBtX2V4dGVuc2lvbnMoZW1wdHlTdHJpbmcoKSkKICAgICAsIG1fcmVz
dW1lVGltZXIoKnRoaXMsICZXZWJTb2NrZXQ6OnJlc3VtZVRpbWVyRmlyZWQpCisgICAgLCBtX2Ns
b3NpbmdUaW1lcihzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksICp0aGlzLCAmV2ViU29ja2V0Ojpz
ZXRTdGF0ZVRvQ2xvc2VkV2l0aEVycm9yKQogeworICAgIG1fY2xvc2luZ1RpbWVyLnN1c3BlbmRJ
Zk5lZWRlZCgpOworCiAgICAgTG9ja0hvbGRlciBsb2NrKGFsbEFjdGl2ZVdlYlNvY2tldHNNdXRl
eCgpKTsKIAogICAgIGFsbEFjdGl2ZVdlYlNvY2tldHMobG9jaykuYWRkKHRoaXMpOwpAQCAtNjA2
LDkgKzYwOSw4IEBAIHZvaWQgV2ViU29ja2V0OjpkaWRSZWNlaXZlQmluYXJ5RGF0YShWZWN0b3I8
dWludDhfdD4mJiBiaW5hcnlEYXRhKQogdm9pZCBXZWJTb2NrZXQ6OmRpZFJlY2VpdmVNZXNzYWdl
RXJyb3IoKQogewogICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0ICVwIGRpZFJlY2VpdmVFcnJv
ck1lc3NhZ2UoKSIsIHRoaXMpOwotICAgIG1fc3RhdGUgPSBDTE9TRUQ7Ci0gICAgQVNTRVJUKHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7Ci0gICAgZGlzcGF0Y2hPclF1ZXVlRXJyb3JFdmVudCgp
OworICAgIGF1dG8gY2xvc2VEZWxheSA9IFNlY29uZHMoKDEwLjAgKyBzdGF0aWNfY2FzdDxkb3Vi
bGU+KGNyeXB0b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVyKCkgJSA1MCkpIC8gMTAwMCk7CisgICAg
bV9jbG9zaW5nVGltZXIuc3RhcnRPbmVTaG90KGNsb3NlRGVsYXkpOwogfQogCiB2b2lkIFdlYlNv
Y2tldDo6ZGlkVXBkYXRlQnVmZmVyZWRBbW91bnQodW5zaWduZWQgYnVmZmVyZWRBbW91bnQpCkBA
IC02MjUsNiArNjI3LDEzIEBAIHZvaWQgV2ViU29ja2V0OjpkaWRTdGFydENsb3NpbmdIYW5kc2hh
a2UoKQogICAgIG1fc3RhdGUgPSBDTE9TSU5HOwogfQogCit2b2lkIFdlYlNvY2tldDo6c2V0U3Rh
dGVUb0Nsb3NlZFdpdGhFcnJvcigpCit7CisgICAgbV9zdGF0ZSA9IENMT1NFRDsKKyAgICBBU1NF
UlQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKyAgICBkaXNwYXRjaE9yUXVldWVFcnJvckV2
ZW50KCk7Cit9CisKIHZvaWQgV2ViU29ja2V0OjpkaWRDbG9zZSh1bnNpZ25lZCB1bmhhbmRsZWRC
dWZmZXJlZEFtb3VudCwgQ2xvc2luZ0hhbmRzaGFrZUNvbXBsZXRpb25TdGF0dXMgY2xvc2luZ0hh
bmRzaGFrZUNvbXBsZXRpb24sIHVuc2lnbmVkIHNob3J0IGNvZGUsIGNvbnN0IFN0cmluZyYgcmVh
c29uKQogewogICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0ICVwIGRpZENsb3NlKCkiLCB0aGlz
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2Nr
ZXQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuaAppbmRl
eCBhYmQyMjViZTU4ZmM5OGQyNjI5ZDY2OTdjYmRkOGRhZWY4NTZmM2IzLi5lMmRhOGE4OGIxNjZh
ZTZhMTNmNzZmYTY0MWI2OTliNzcyOWM1ZDgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJzb2NrZXRzL1dlYlNvY2tldC5oCkBAIC0xMDEsNiArMTAxLDcgQEAgcHVibGljOgogcHJp
dmF0ZToKICAgICBleHBsaWNpdCBXZWJTb2NrZXQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpOwog
CisgICAgdm9pZCBzZXRTdGF0ZVRvQ2xvc2VkV2l0aEVycm9yKCk7CiAgICAgdm9pZCByZXN1bWVU
aW1lckZpcmVkKCk7CiAgICAgdm9pZCBkaXNwYXRjaE9yUXVldWVFcnJvckV2ZW50KCk7CiAgICAg
dm9pZCBkaXNwYXRjaE9yUXVldWVFdmVudChSZWY8RXZlbnQ+JiYpOwpAQCAtMTQ2LDYgKzE0Nyw3
IEBAIHByaXZhdGU6CiAgICAgRGVxdWU8UmVmPEV2ZW50Pj4gbV9wZW5kaW5nRXZlbnRzOwogICAg
IGJvb2wgbV9kaXNwYXRjaGVkRXJyb3JFdmVudCB7IGZhbHNlIH07CiAgICAgUmVmUHRyPFBlbmRp
bmdBY3Rpdml0eTxXZWJTb2NrZXQ+PiBtX3BlbmRpbmdBY3Rpdml0eTsKKyAgICBTdXNwZW5kYWJs
ZVRpbWVyIG1fY2xvc2luZ1RpbWVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmlu
ZGV4IGQzMjhmNThjZjY5MThjM2VjMzc0ZjY3YjhhMTA5YTlmMzJlOGM0MGIuLjIyMzczNGY4OTAy
OTc0MzZjM2E2MzUxOTE1MjVkMmQ3Y2ZiMDM4ZmUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0No
YW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAy
MC0wNi0xMiAgS2F0ZSBDaGVuZXkgIDxrYXRoZXJpbmVfY2hlbmV5QGFwcGxlLmNvbT4KKworICAg
ICAgICBBZGQgYXJ0aWZpY2lhbCBkZWxheSB0byBXZWJTb2NrZXQgY29ubmVjdGlvbnMgdG8gbWl0
aWdhdGUgcG9ydCBzY2FubmluZyBhdHRhY2tzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTMxNDMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzY0MzA4
OTI3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFk
ZCB0ZXN0aW5nIHdoaWNoIGNoZWNrcyB0aGUgc3RhdGUgb2YgYSBXZWJTb2NrZXQgY29ubmVjdGlv
biBldmVyeSAxbXMgdW50aWwKKyAgICAgICAgaXQgaGFzIGJlZW4gcmVwb3J0ZWQgYXMgY2xvc2Vk
IHRvIG1ha2Ugc3VyZSB0aGUgZGVsYXkgaXMgd29ya2luZworICAgICAgICBjb3JyZWN0bHkuCisK
KyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3BvcnQtc2Nhbi1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5
YmkvcG9ydC1zY2FuLmh0bWw6IEFkZGVkLgorCiAyMDIwLTA2LTEwICBEZXZpbiBSb3Vzc28gIDxk
cm91c3NvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBYSFIgcmVxdWVzdCB3
aXRoIHNhbWUgVVJMIGFzIG1haW4gcmVzb3VyY2Ugd2lsbCBoaWRlIHRoZSBtYWluIHJlc291cmNl
IHJlcXVlc3QKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rl
c3RzL2h5YmkvcG9ydC1zY2FuLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
d2Vic29ja2V0L3Rlc3RzL2h5YmkvcG9ydC1zY2FuLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41
YzdlYThkMzBkZjJlM2Y1YjEyYzdlMjcyNDkyODRkNDRmMmFlMGE3Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9wb3J0LXNjYW4t
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOCBAQAorQ09OU09MRSBNRVNTQUdFOiBXZWJTb2NrZXQg
bmV0d29yayBlcnJvcjogVGhlIG9wZXJhdGlvbiBjb3VsZG7igJl0IGJlIGNvbXBsZXRlZC4gQ29u
bmVjdGlvbiByZWZ1c2VkCitDT05TT0xFIE1FU1NBR0U6IFdlYlNvY2tldCBuZXR3b3JrIGVycm9y
OiBUaGUgb3BlcmF0aW9uIGNvdWxkbuKAmXQgYmUgY29tcGxldGVkLiBDb25uZWN0aW9uIHJlZnVz
ZWQKK0NPTlNPTEUgTUVTU0FHRTogV2ViU29ja2V0IGNvbm5lY3Rpb24gdG8gJ3dzOi8vbG9jYWxo
b3N0OjgwODAvJyBmYWlsZWQ6IFVuZXhwZWN0ZWQgcmVzcG9uc2UgY29kZTogMjAwCitUZXN0IHBh
c3NlZAorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkv
cG9ydC1zY2FuLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9o
eWJpL3BvcnQtc2Nhbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUyNGE3MzdjZDYxOThiZWMxY2Q3MmRlY2U2
NmZhNjMxYTQ4YTI0MTQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3dlYnNvY2tldC90ZXN0cy9oeWJpL3BvcnQtc2Nhbi5odG1sCkBAIC0wLDAgKzEsOTEgQEAKKzwh
RE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhl
YWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+
PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZh
c2NyaXB0Ij4KKword2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCitmdW5jdGlvbiBlbmRU
ZXN0KCkKK3sKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKwordmFyIGNvdW50UmVjZWl2ZWRNZXNz
YWdlID0gMDsKKworZnVuY3Rpb24gc2Nhbl9wb3J0cygpCit7CisgICAgLy8gT3BlbiBwb3J0Lgor
ICAgIHNjYW5fcG9ydCg4MDgwKTsKKworICAgIC8vIENsb3NlZCBwb3J0LgorICAgIHNldFRpbWVv
dXQoc2Nhbl9wb3J0KDEyMzQpLCAxMCk7Cit9CisKKy8vIFRlc3QgYmFzZWQgb2ZmIG9mIEJlRUYg
cG9ydCBzY2FubmluZyBhdHRhY2sgdGVjaG5pcXVlIChodHRwczovL2dpdGh1Yi5jb20vYmVlZnBy
b2plY3QvYmVlZi9ibG9iL21hc3Rlci9tb2R1bGVzL25ldHdvcmsvcG9ydF9zY2FubmVyL2NvbW1h
bmQuanMpCitmdW5jdGlvbiBzY2FuX3BvcnQocG9ydCkKK3sKKyAgICB2YXIgdXJsID0gIndzOi8v
bG9jYWxob3N0OiIgKyBwb3J0OworICAgIHZhciB3cyA9IG5ldyBXZWJTb2NrZXQodXJsKTsKKyAg
ICB2YXIgc3RhcnRUaW1lID0gKG5ldyBEYXRlKS5nZXRUaW1lKCk7CisgICAgdmFyIHRpbWVvdXQg
PSAzMDAwOworCisgICAgY2xlYXJJbnRlcnZhbElEID0gc2V0SW50ZXJ2YWwoCisgICAgZnVuY3Rp
b24gKCkKKyAgICB7CisgICAgICAgIHZhciBpbnRlcnZhbCA9IChuZXcgRGF0ZSkuZ2V0VGltZSgp
IC0gc3RhcnRUaW1lOworCisgICAgICAgIGlmICh3cy5yZWFkeVN0YXRlID09PSAwKSAvLyBDT05O
RUNUSU5HCisgICAgICAgIHsKKyAgICAgICAgfQorCisgICAgICAgIGlmICh3cy5yZWFkeVN0YXRl
ID09PSAxKSAvLyBPUEVOCisgICAgICAgIHsKKyAgICAgICAgfQorCisgICAgICAgIGlmICh3cy5y
ZWFkeVN0YXRlID09PSAyKSAvLyBDTE9TSU5HCisgICAgICAgIHsKKyAgICAgICAgfQorCisgICAg
ICAgIGlmICh3cy5yZWFkeVN0YXRlID09PSAzKSAvLyBDTE9TRQorICAgICAgICB7CisgICAgICAg
ICAgICBjbGVhckludGVydmFsKGNsZWFySW50ZXJ2YWxJRCk7CisgICAgICAgICAgICB3cy5jbG9z
ZSgpOworICAgICAgICAgICAgY291bnRSZWNlaXZlZE1lc3NhZ2UrKzsKKyAgICAgICAgICAgIAor
ICAgICAgICAgICAgLy8gTG93ZXN0IHBvc3NpYmxlIGRlbGF5IHRpbWUgaXMgMTEgbXMuIFRoaXMg
YXNzdW1lcworICAgICAgICAgICAgLy8gcmVwb3J0aW5nIG9mIGEgV2ViU29ja2V0IHN0YXRlIHdp
dGhvdXQgZGVsYXkgdGFrZXMgbm8gbGVzcworICAgICAgICAgICAgLy8gdGhhbiA0IG1zLgorICAg
ICAgICAgICAgaWYgKGludGVydmFsIDwgMTUpIHsKKyAgICAgICAgICAgICAgICBkZWJ1ZygiVGlt
ZXIgZmFpbGVkIHRvIGRlbGF5IHJlcG9ydCBvZiBjbG9zZWQgc3RhdGUiKTsKKyAgICAgICAgICAg
ICAgICBlbmRUZXN0KCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChjb3VudFJl
Y2VpdmVkTWVzc2FnZSA+PSAyKSB7CisgICAgICAgICAgICAgICAgZGVidWcoIlRlc3QgcGFzc2Vk
Iik7CisgICAgICAgICAgICAgICAgZW5kVGVzdCgpOworICAgICAgICAgICAgfQorICAgICAgICB9
CisKKyAgICAgICAgaWYgKGludGVydmFsID49IHRpbWVvdXQpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGNsZWFySW50ZXJ2YWwoY2xlYXJJbnRlcnZhbElEKTsKKyAgICAgICAgICAgIGRlYnVnKCJD
b25uZWN0aW9uIHRpbWVvdXQiKTsKKyAgICAgICAgICAgIHdzLmNsb3NlKCk7CisgICAgICAgICAg
ICBlbmRUZXN0KCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAsIDEp
OworfQorCitzY2FuX3BvcnRzKCk7CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
Ly4uL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>401802</attachid>
            <date>2020-06-12 16:37:48 -0700</date>
            <delta_ts>2020-06-15 13:05:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213143-20200612163747.patch</filename>
            <type>text/plain</type>
            <size>7776</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyODQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjNhYjhmNTgyZmNlZjNk
MDgwYTI5ZDI0ZWNlOTUwMjQ4N2MzY2U0ZS4uYjlkYTQyYjA2NDZkYmE2NmEzMjEyZDIzYmEyMmRh
NWFhMDg3YzY1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDIwLTA2LTEyICBLYXRl
IENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBhcnRp
ZmljaWFsIGRlbGF5IHRvIFdlYlNvY2tldCBjb25uZWN0aW9ucyB0byBtaXRpZ2F0ZSBwb3J0IHNj
YW5uaW5nIGF0dGFja3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIxMzE0MworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjQzMDg5Mjc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViU29ja2V0IGNvbm5l
Y3Rpb25zIGNhbiBwb3RlbnRpYWxseSBiZSB1c2VkIHRvIGRldGVybWluZSBpZiBzcGVjaWZpYwor
ICAgICAgICBwb3J0cyBhcmUgb3BlbiB1c2luZyB0aW1pbmcgYXR0YWNrcy4gVGhpcyBwYXRjaCBh
ZGRzIGEgZGVsYXkgYmV0d2VlbgorICAgICAgICAxMCBhbmQgNjAgbXMgYmVmb3JlIHJlcG9ydGlu
ZyB0aGUgY2xvc2VkIHN0YXRlIG9mIGEgV2ViU29ja2V0CisgICAgICAgIGNvbm5lY3Rpb24gdG8g
bWFrZSBpdCBtb3JlIGRpZmZpY3VsdCB0byBkZXRlcm1pbmUgaWYgYSBUTFMgaGFuZHNoYWtlCisg
ICAgICAgIGhhcyBvY2N1cnJlZCAoaW5kaWNhdGluZyB0aGUgcG9ydCBpcyBvcGVuKS4KKworICAg
ICAgICBUZXN0OiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3BvcnQtc2Nhbi5odG1s
CisKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OldlYlNvY2tldDo6V2ViU29ja2V0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNv
Y2tldDo6ZGlkUmVjZWl2ZU1lc3NhZ2VFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2Nr
ZXQ6OnNldFN0YXRlVG9DbG9zZWRXaXRoRXJyb3IpOgorICAgICAgICAqIE1vZHVsZXMvd2Vic29j
a2V0cy9XZWJTb2NrZXQuaDoKKwogMjAyMC0wNi0xMCAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBh
cHBsZS5jb20+CiAKICAgICAgICAgQmFzZUF1ZGlvU2hhcmVkVW5pdCBkb2VzIG5vdCBuZWVkIHRv
IHJlc3RhcnQgaXRzIGF1ZGlvIHVuaXQgYXQgcmVzdW1lIHRpbWUuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCmluZGV4IGExMDk1MGQwZTQxZDcy
Y2RhNDI1Mjg0ZWU4NWQ4YjcxODNlMjYzYjMuLmE5NDg3MzE2N2NiMTQ4NmE2NTVjMmI0NDI4YjJk
NTE5ZDllNzIxYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0
cy9XZWJTb2NrZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9X
ZWJTb2NrZXQuY3BwCkBAIC0xNDQsNiArMTQ0LDcgQEAgV2ViU29ja2V0OjpXZWJTb2NrZXQoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkKICAgICAsIG1fc3VicHJvdG9jb2woZW1wdHlT
dHJpbmcoKSkKICAgICAsIG1fZXh0ZW5zaW9ucyhlbXB0eVN0cmluZygpKQogICAgICwgbV9yZXN1
bWVUaW1lcigqdGhpcywgJldlYlNvY2tldDo6cmVzdW1lVGltZXJGaXJlZCkKKyAgICAsIG1fY2xv
c2luZ1RpbWVyKCp0aGlzLCAmV2ViU29ja2V0OjpzZXRTdGF0ZVRvQ2xvc2VkV2l0aEVycm9yKQog
ewogICAgIExvY2tIb2xkZXIgbG9jayhhbGxBY3RpdmVXZWJTb2NrZXRzTXV0ZXgoKSk7CiAKQEAg
LTYwNiw5ICs2MDcsMTAgQEAgdm9pZCBXZWJTb2NrZXQ6OmRpZFJlY2VpdmVCaW5hcnlEYXRhKFZl
Y3Rvcjx1aW50OF90PiYmIGJpbmFyeURhdGEpCiB2b2lkIFdlYlNvY2tldDo6ZGlkUmVjZWl2ZU1l
c3NhZ2VFcnJvcigpCiB7CiAgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXQgJXAgZGlkUmVjZWl2
ZUVycm9yTWVzc2FnZSgpIiwgdGhpcyk7Ci0gICAgbV9zdGF0ZSA9IENMT1NFRDsKLSAgICBBU1NF
UlQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKLSAgICBkaXNwYXRjaE9yUXVldWVFcnJvckV2
ZW50KCk7CisgICAgCisgICAgLy8gRGVsYXkgY2xvc2luZyB0aGUgV2ViU29ja2V0IGNvbm5lY3Rp
b24gdG8gbWl0aWdhdGUgcG9ydCBzY2FubmluZyBhdHRhY2tzLgorICAgIGF1dG8gY2xvc2VEZWxh
eSA9IFNlY29uZHMoKDEwLjAgKyBzdGF0aWNfY2FzdDxkb3VibGU+KGNyeXB0b2dyYXBoaWNhbGx5
UmFuZG9tTnVtYmVyKCkgJSA1MCkpIC8gMTAwMCk7CisgICAgbV9jbG9zaW5nVGltZXIuc3RhcnRP
bmVTaG90KGNsb3NlRGVsYXkpOwogfQogCiB2b2lkIFdlYlNvY2tldDo6ZGlkVXBkYXRlQnVmZmVy
ZWRBbW91bnQodW5zaWduZWQgYnVmZmVyZWRBbW91bnQpCkBAIC02MjUsNiArNjI3LDEzIEBAIHZv
aWQgV2ViU29ja2V0OjpkaWRTdGFydENsb3NpbmdIYW5kc2hha2UoKQogICAgIG1fc3RhdGUgPSBD
TE9TSU5HOwogfQogCit2b2lkIFdlYlNvY2tldDo6c2V0U3RhdGVUb0Nsb3NlZFdpdGhFcnJvcigp
Cit7CisgICAgbV9zdGF0ZSA9IENMT1NFRDsKKyAgICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpKTsKKyAgICBkaXNwYXRjaE9yUXVldWVFcnJvckV2ZW50KCk7Cit9CisKIHZvaWQgV2Vi
U29ja2V0OjpkaWRDbG9zZSh1bnNpZ25lZCB1bmhhbmRsZWRCdWZmZXJlZEFtb3VudCwgQ2xvc2lu
Z0hhbmRzaGFrZUNvbXBsZXRpb25TdGF0dXMgY2xvc2luZ0hhbmRzaGFrZUNvbXBsZXRpb24sIHVu
c2lnbmVkIHNob3J0IGNvZGUsIGNvbnN0IFN0cmluZyYgcmVhc29uKQogewogICAgIExPRyhOZXR3
b3JrLCAiV2ViU29ja2V0ICVwIGRpZENsb3NlKCkiLCB0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuaAppbmRleCBhYmQyMjViZTU4ZmM5OGQyNjI5
ZDY2OTdjYmRkOGRhZWY4NTZmM2IzLi5jYWNhNWE2YjFjYzhmMWRhYjQzMGM1MDNiNjU5MWMxMzRk
YTJjYTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2Vi
U29ja2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tl
dC5oCkBAIC0xMDEsNiArMTAxLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBleHBsaWNpdCBX
ZWJTb2NrZXQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpOwogCisgICAgdm9pZCBzZXRTdGF0ZVRv
Q2xvc2VkV2l0aEVycm9yKCk7CiAgICAgdm9pZCByZXN1bWVUaW1lckZpcmVkKCk7CiAgICAgdm9p
ZCBkaXNwYXRjaE9yUXVldWVFcnJvckV2ZW50KCk7CiAgICAgdm9pZCBkaXNwYXRjaE9yUXVldWVF
dmVudChSZWY8RXZlbnQ+JiYpOwpAQCAtMTQ2LDYgKzE0Nyw3IEBAIHByaXZhdGU6CiAgICAgRGVx
dWU8UmVmPEV2ZW50Pj4gbV9wZW5kaW5nRXZlbnRzOwogICAgIGJvb2wgbV9kaXNwYXRjaGVkRXJy
b3JFdmVudCB7IGZhbHNlIH07CiAgICAgUmVmUHRyPFBlbmRpbmdBY3Rpdml0eTxXZWJTb2NrZXQ+
PiBtX3BlbmRpbmdBY3Rpdml0eTsKKyAgICBUaW1lciBtX2Nsb3NpbmdUaW1lcjsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBkMzI4ZjU4Y2Y2OTE4YzNlYzM3NGY2N2I4YTEw
OWE5ZjMyZThjNDBiLi4yMjM3MzRmODkwMjk3NDM2YzNhNjM1MTkxNTI1ZDJkN2NmYjAzOGZlIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjAtMDYtMTIgIEthdGUgQ2hlbmV5ICA8a2F0aGVyaW5l
X2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGFydGlmaWNpYWwgZGVsYXkgdG8gV2Vi
U29ja2V0IGNvbm5lY3Rpb25zIHRvIG1pdGlnYXRlIHBvcnQgc2Nhbm5pbmcgYXR0YWNrcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEzMTQzCisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS82NDMwODkyNz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgdGVzdGluZyB3aGljaCBjaGVja3MgdGhlIHN0YXRl
IG9mIGEgV2ViU29ja2V0IGNvbm5lY3Rpb24gZXZlcnkgMW1zIHVudGlsCisgICAgICAgIGl0IGhh
cyBiZWVuIHJlcG9ydGVkIGFzIGNsb3NlZCB0byBtYWtlIHN1cmUgdGhlIGRlbGF5IGlzIHdvcmtp
bmcKKyAgICAgICAgY29ycmVjdGx5LgorCisgICAgICAgICogaHR0cC90ZXN0cy93ZWJzb2NrZXQv
dGVzdHMvaHliaS9wb3J0LXNjYW4tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRw
L3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3BvcnQtc2Nhbi5odG1sOiBBZGRlZC4KKwogMjAy
MC0wNi0xMCAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2Vi
IEluc3BlY3RvcjogWEhSIHJlcXVlc3Qgd2l0aCBzYW1lIFVSTCBhcyBtYWluIHJlc291cmNlIHdp
bGwgaGlkZSB0aGUgbWFpbiByZXNvdXJjZSByZXF1ZXN0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3BvcnQtc2Nhbi1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3BvcnQtc2Nhbi1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWM3ZWE4ZDMwZGYyZTNmNWIxMmM3ZTI3MjQ5Mjg0ZDQ0
ZjJhZTBhNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29j
a2V0L3Rlc3RzL2h5YmkvcG9ydC1zY2FuLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDggQEAKK0NP
TlNPTEUgTUVTU0FHRTogV2ViU29ja2V0IG5ldHdvcmsgZXJyb3I6IFRoZSBvcGVyYXRpb24gY291
bGRu4oCZdCBiZSBjb21wbGV0ZWQuIENvbm5lY3Rpb24gcmVmdXNlZAorQ09OU09MRSBNRVNTQUdF
OiBXZWJTb2NrZXQgbmV0d29yayBlcnJvcjogVGhlIG9wZXJhdGlvbiBjb3VsZG7igJl0IGJlIGNv
bXBsZXRlZC4gQ29ubmVjdGlvbiByZWZ1c2VkCitDT05TT0xFIE1FU1NBR0U6IFdlYlNvY2tldCBj
b25uZWN0aW9uIHRvICd3czovL2xvY2FsaG9zdDo4MDgwLycgZmFpbGVkOiBVbmV4cGVjdGVkIHJl
c3BvbnNlIGNvZGU6IDIwMAorVGVzdCBwYXNzZWQKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3BvcnQtc2Nhbi5odG1sIGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9wb3J0LXNjYW4uaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
M2M4ZTk5YTJkOTRkYWU0NmI5ZjRmMWJiMWE0YTU3NjY3YTNiODMwCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9wb3J0LXNjYW4u
aHRtbApAQCAtMCwwICsxLDgyIEBACis8IURPQ1RZUEUgSFRNTD4KKzxodG1sPgorPGhlYWQ+Cis8
c2NyaXB0IHNyYz0iL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PjwvaGVh
ZD4KKzxib2R5PgorPHNjcmlwdD4KKworanNUZXN0SXNBc3luYyA9IHRydWU7CisKK3ZhciBjb3Vu
dFJlY2VpdmVkTWVzc2FnZSA9IDA7CisKK2Z1bmN0aW9uIHNjYW5fcG9ydHMoKQoreworICAgIC8v
IE9wZW4gcG9ydC4KKyAgICBzY2FuX3BvcnQoODA4MCk7CisKKyAgICAvLyBDbG9zZWQgcG9ydC4K
KyAgICBzZXRUaW1lb3V0KHNjYW5fcG9ydCgxMjM0KSwgMTApOworfQorCisvLyBUZXN0IGJhc2Vk
IG9mZiBvZiBCZUVGIHBvcnQgc2Nhbm5pbmcgYXR0YWNrIHRlY2huaXF1ZSAoaHR0cHM6Ly9naXRo
dWIuY29tL2JlZWZwcm9qZWN0L2JlZWYvYmxvYi9tYXN0ZXIvbW9kdWxlcy9uZXR3b3JrL3BvcnRf
c2Nhbm5lci9jb21tYW5kLmpzKQorZnVuY3Rpb24gc2Nhbl9wb3J0KHBvcnQpCit7CisgICAgdmFy
IHVybCA9ICJ3czovL2xvY2FsaG9zdDoiICsgcG9ydDsKKyAgICB2YXIgd3MgPSBuZXcgV2ViU29j
a2V0KHVybCk7CisgICAgdmFyIHN0YXJ0VGltZSA9IChuZXcgRGF0ZSkuZ2V0VGltZSgpOworICAg
IHZhciB0aW1lb3V0ID0gMzAwMDsKKworICAgIGNsZWFySW50ZXJ2YWxJRCA9IHNldEludGVydmFs
KAorICAgIGZ1bmN0aW9uICgpCisgICAgeworICAgICAgICB2YXIgaW50ZXJ2YWwgPSAobmV3IERh
dGUpLmdldFRpbWUoKSAtIHN0YXJ0VGltZTsKKworICAgICAgICBpZiAod3MucmVhZHlTdGF0ZSA9
PT0gMCkgLy8gQ09OTkVDVElORworICAgICAgICB7CisgICAgICAgIH0KKworICAgICAgICBpZiAo
d3MucmVhZHlTdGF0ZSA9PT0gMSkgLy8gT1BFTgorICAgICAgICB7CisgICAgICAgIH0KKworICAg
ICAgICBpZiAod3MucmVhZHlTdGF0ZSA9PT0gMikgLy8gQ0xPU0lORworICAgICAgICB7CisgICAg
ICAgIH0KKworICAgICAgICBpZiAod3MucmVhZHlTdGF0ZSA9PT0gMykgLy8gQ0xPU0UKKyAgICAg
ICAgeworICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjbGVhckludGVydmFsSUQpOworICAgICAg
ICAgICAgd3MuY2xvc2UoKTsKKyAgICAgICAgICAgIGNvdW50UmVjZWl2ZWRNZXNzYWdlKys7Cisg
ICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIExvd2VzdCBwb3NzaWJsZSBkZWxheSB0aW1lIGlz
IDExIG1zLiBUaGlzIGFzc3VtZXMKKyAgICAgICAgICAgIC8vIHJlcG9ydGluZyBvZiBhIFdlYlNv
Y2tldCBzdGF0ZSB3aXRob3V0IGRlbGF5IHRha2VzIG5vIGxlc3MKKyAgICAgICAgICAgIC8vIHRo
YW4gNCBtcy4KKyAgICAgICAgICAgIGlmIChpbnRlcnZhbCA8IDE1KSB7CisgICAgICAgICAgICAg
ICAgZGVidWcoIlRpbWVyIGZhaWxlZCB0byBkZWxheSByZXBvcnQgb2YgY2xvc2VkIHN0YXRlIik7
CisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIGlmIChjb3VudFJlY2VpdmVkTWVzc2FnZSA+PSAyKSB7CisgICAgICAgICAgICAgICAg
ZGVidWcoIlRlc3QgcGFzc2VkIik7CisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAoaW50ZXJ2YWwgPj0gdGltZW91
dCkKKyAgICAgICAgeworICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjbGVhckludGVydmFsSUQp
OworICAgICAgICAgICAgZGVidWcoIkNvbm5lY3Rpb24gdGltZW91dCIpOworICAgICAgICAgICAg
d3MuY2xvc2UoKTsKKyAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisgICAgLCAxKTsKK30KKworc2Nhbl9wb3J0cygpOworCis8L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>401927</attachid>
            <date>2020-06-15 13:05:47 -0700</date>
            <delta_ts>2020-07-07 14:13:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213143-20200615130546.patch</filename>
            <type>text/plain</type>
            <size>8420</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyODQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjNhYjhmNTgyZmNlZjNk
MDgwYTI5ZDI0ZWNlOTUwMjQ4N2MzY2U0ZS4uYzZlNzMzYjMwOTY1NmYzNTA2YjU5YTYzODAxOTcy
N2YxNDRhNjkxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDIwLTA2LTE1ICBLYXRl
IENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBhcnRp
ZmljaWFsIGRlbGF5IHRvIFdlYlNvY2tldCBjb25uZWN0aW9ucyB0byBtaXRpZ2F0ZSBwb3J0IHNj
YW5uaW5nIGF0dGFja3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIxMzE0MworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjQzMDg5Mjc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViU29ja2V0IGNvbm5l
Y3Rpb25zIGNhbiBwb3RlbnRpYWxseSBiZSB1c2VkIHRvIGRldGVybWluZSBpZiBzcGVjaWZpYwor
ICAgICAgICBwb3J0cyBhcmUgb3BlbiB1c2luZyB0aW1pbmcgYXR0YWNrcy4gVGhpcyBwYXRjaCBh
ZGRzIGEgZGVsYXkgYmV0d2VlbgorICAgICAgICAxMCBhbmQgNjAgbXMgYmVmb3JlIHJlcG9ydGlu
ZyB0aGUgY2xvc2VkIHN0YXRlIG9mIGEgV2ViU29ja2V0CisgICAgICAgIGNvbm5lY3Rpb24gdG8g
bWFrZSBpdCBtb3JlIGRpZmZpY3VsdCB0byBkZXRlcm1pbmUgaWYgYSBUTFMgaGFuZHNoYWtlCisg
ICAgICAgIGhhcyBvY2N1cnJlZCAoaW5kaWNhdGluZyB0aGUgcG9ydCBpcyBvcGVuKS4KKworICAg
ICAgICBUZXN0OiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3BvcnQtc2Nhbi5odG1s
CisKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjpXZWJTb2NrZXRDaGFubmVsKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OnJlcG9ydEVycm9yQW5kQ2xvc2UpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6ZmFpbCk6CisgICAgICAgICogTW9k
dWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaDoKKwogMjAyMC0wNi0xMCAgWW91ZW5u
IEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgQmFzZUF1ZGlvU2hhcmVkVW5p
dCBkb2VzIG5vdCBuZWVkIHRvIHJlc3RhcnQgaXRzIGF1ZGlvIHVuaXQgYXQgcmVzdW1lIHRpbWUu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0
Q2hhbm5lbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0
Q2hhbm5lbC5jcHAKaW5kZXggNjIzZmUzOTM2OTU2NWZiZjk4ODcxM2FlMTFhOTI2YjE4ZjQwNTgy
NC4uMTQzMmE4MGNjZDU1NGUxMGM5ODY4M2JhMTQ1NGI2ODViYjljMmIxZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNw
cApAQCAtNjksNiArNjksNyBAQCBXZWJTb2NrZXRDaGFubmVsOjpXZWJTb2NrZXRDaGFubmVsKERv
Y3VtZW50JiBkb2N1bWVudCwgV2ViU29ja2V0Q2hhbm5lbENsaWVudCYgYwogICAgICwgbV9yZXN1
bWVUaW1lcigqdGhpcywgJldlYlNvY2tldENoYW5uZWw6OnJlc3VtZVRpbWVyRmlyZWQpCiAgICAg
LCBtX2Nsb3NpbmdUaW1lcigqdGhpcywgJldlYlNvY2tldENoYW5uZWw6OmNsb3NpbmdUaW1lckZp
cmVkKQogICAgICwgbV9zb2NrZXRQcm92aWRlcihwcm92aWRlcikKKyAgICAsIG1fZmFpbENsb3Nl
VGltZXIoKnRoaXMsICZXZWJTb2NrZXRDaGFubmVsOjpyZXBvcnRFcnJvckFuZENsb3NlKQogewog
ICAgIGlmIChQYWdlKiBwYWdlID0gZG9jdW1lbnQucGFnZSgpKQogICAgICAgICBtX2lkZW50aWZp
ZXIgPSBwYWdlLT5wcm9ncmVzcygpLmNyZWF0ZVVuaXF1ZUlkZW50aWZpZXIoKTsKQEAgLTIwMSw2
ICsyMDIsMTUgQEAgdm9pZCBXZWJTb2NrZXRDaGFubmVsOjpjbG9zZShpbnQgY29kZSwgY29uc3Qg
U3RyaW5nJiByZWFzb24pCiAgICAgICAgIG1fY2xvc2luZ1RpbWVyLnN0YXJ0T25lU2hvdChUQ1BN
YXhpbXVtU2VnbWVudExpZmV0aW1lICogMik7CiB9CiAKK3ZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6
cmVwb3J0RXJyb3JBbmRDbG9zZSgpCit7CisgICAgaWYgKG1fY2xpZW50KQorICAgICAgICBtX2Ns
aWVudC0+ZGlkUmVjZWl2ZU1lc3NhZ2VFcnJvcigpOworCisgICAgaWYgKG1faGFuZGxlICYmICFt
X2Nsb3NlZCkKKyAgICAgICAgbV9oYW5kbGUtPmRpc2Nvbm5lY3QoKTsgLy8gV2lsbCBjYWxsIGRp
ZENsb3NlU29ja2V0U3RyZWFtKCkgYnV0IG1heWJlIG5vdCBzeW5jaHJvbm91c2x5LgorfQorCiB2
b2lkIFdlYlNvY2tldENoYW5uZWw6OmZhaWwoY29uc3QgU3RyaW5nJiByZWFzb24pCiB7CiAgICAg
UkVMRUFTRV9MT0coTmV0d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAgZmFpbCgpIHJlYXNvbj0n
JXMnIiwgdGhpcywgcmVhc29uLnV0ZjgoKS5kYXRhKCkpOwpAQCAtMjI2LDExICsyMzYsMTAgQEAg
dm9pZCBXZWJTb2NrZXRDaGFubmVsOjpmYWlsKGNvbnN0IFN0cmluZyYgcmVhc29uKQogICAgIG1f
ZGVmbGF0ZUZyYW1lci5kaWRGYWlsKCk7CiAgICAgbV9oYXNDb250aW51b3VzRnJhbWUgPSBmYWxz
ZTsKICAgICBtX2NvbnRpbnVvdXNGcmFtZURhdGEuY2xlYXIoKTsKLSAgICBpZiAobV9jbGllbnQp
Ci0gICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlTWVzc2FnZUVycm9yKCk7Ci0KLSAgICBpZiAo
bV9oYW5kbGUgJiYgIW1fY2xvc2VkKQotICAgICAgICBtX2hhbmRsZS0+ZGlzY29ubmVjdCgpOyAv
LyBXaWxsIGNhbGwgZGlkQ2xvc2VTb2NrZXRTdHJlYW0oKSBidXQgbWF5YmUgbm90IHN5bmNocm9u
b3VzbHkuCisgICAgCisgICAgLy8gRGVsYXkgY2xvc2luZyB0aGUgV2ViU29ja2V0IGNvbm5lY3Rp
b24gdG8gbWl0aWdhdGUgcG9ydCBzY2FubmluZyBhdHRhY2tzLgorICAgIGF1dG8gY2xvc2VEZWxh
eSA9IFNlY29uZHM6OmZyb21NaWxsaXNlY29uZHMoMTAuMCArIHN0YXRpY19jYXN0PGRvdWJsZT4o
Y3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIoKSAlIDUwKSk7CisgICAgbV9mYWlsQ2xvc2VU
aW1lci5zdGFydE9uZVNob3QoY2xvc2VEZWxheSk7CiB9CiAKIHZvaWQgV2ViU29ja2V0Q2hhbm5l
bDo6ZGlzY29ubmVjdCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNv
Y2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2Nr
ZXRzL1dlYlNvY2tldENoYW5uZWwuaAppbmRleCA5OTYwMWEwNWRiZDYxNGQ5Y2RiYjg0OTQ2NzNi
Mzg3NzBkYWNkODQyLi43ZTM5MjEyMDkxZTcwM2U2OWVmMzQ4N2RhZTdiODZiMzU4YTJkMzY5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hh
bm5lbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRD
aGFubmVsLmgKQEAgLTEyOCw2ICsxMjgsNyBAQCBwdWJsaWM6CiAgICAgCiBwcml2YXRlOgogICAg
IFdFQkNPUkVfRVhQT1JUIFdlYlNvY2tldENoYW5uZWwoRG9jdW1lbnQmLCBXZWJTb2NrZXRDaGFu
bmVsQ2xpZW50JiwgU29ja2V0UHJvdmlkZXImKTsKKyAgICB2b2lkIHJlcG9ydEVycm9yQW5kQ2xv
c2UoKTsKIAogICAgIHZvaWQgcmVmVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwoKSBvdmVycmlk
ZSB7IHJlZigpOyB9CiAgICAgdm9pZCBkZXJlZlRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsKCkg
b3ZlcnJpZGUgeyBkZXJlZigpOyB9CkBAIC0yMjgsNiArMjI5LDggQEAgcHJpdmF0ZToKIAogICAg
IFdlYlNvY2tldERlZmxhdGVGcmFtZXIgbV9kZWZsYXRlRnJhbWVyOwogICAgIFJlZjxTb2NrZXRQ
cm92aWRlcj4gbV9zb2NrZXRQcm92aWRlcjsKKyAgICBUaW1lciBtX2ZhaWxDbG9zZVRpbWVyOwor
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZDMyOGY1OGNmNjkxOGMzZWMz
NzRmNjdiOGExMDlhOWYzMmU4YzQwYi4uYWEwOWU0ZDYxNWU2YTQ3MDI3ZDY3OTI4ZDE4NWNkZGUx
NDkyNDlhMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIwLTA2LTE1ICBLYXRlIENoZW5leSAg
PGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBhcnRpZmljaWFsIGRl
bGF5IHRvIFdlYlNvY2tldCBjb25uZWN0aW9ucyB0byBtaXRpZ2F0ZSBwb3J0IHNjYW5uaW5nIGF0
dGFja3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIx
MzE0MworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjQzMDg5Mjc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHRlc3Rpbmcgd2hpY2ggY2hlY2tz
IHRoZSBzdGF0ZSBvZiBhIFdlYlNvY2tldCBjb25uZWN0aW9uIGV2ZXJ5IDFtcyB1bnRpbAorICAg
ICAgICBpdCBoYXMgYmVlbiByZXBvcnRlZCBhcyBjbG9zZWQgdG8gbWFrZSBzdXJlIHRoZSBkZWxh
eSBpcyB3b3JraW5nCisgICAgICAgIGNvcnJlY3RseS4KKworICAgICAgICAqIGh0dHAvdGVzdHMv
d2Vic29ja2V0L3Rlc3RzL2h5YmkvcG9ydC1zY2FuLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9wb3J0LXNjYW4uaHRtbDogQWRk
ZWQuCisKIDIwMjAtMDYtMTAgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgogCiAg
ICAgICAgIFdlYiBJbnNwZWN0b3I6IFhIUiByZXF1ZXN0IHdpdGggc2FtZSBVUkwgYXMgbWFpbiBy
ZXNvdXJjZSB3aWxsIGhpZGUgdGhlIG1haW4gcmVzb3VyY2UgcmVxdWVzdApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9wb3J0LXNjYW4tZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9w
b3J0LXNjYW4tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1OGE4MGNjMTcwMzkyZWQyMTg2ZDFi
MWVhYjBkNTA4ZDM2YjlmZTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3BvcnQtc2Nhbi1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSwxMyBAQAorQ09OU09MRSBNRVNTQUdFOiBXZWJTb2NrZXQgbmV0d29yayBlcnJvcjogVGhlIG9w
ZXJhdGlvbiBjb3VsZG7igJl0IGJlIGNvbXBsZXRlZC4gQ29ubmVjdGlvbiByZWZ1c2VkCitDT05T
T0xFIE1FU1NBR0U6IFdlYlNvY2tldCBuZXR3b3JrIGVycm9yOiBUaGUgb3BlcmF0aW9uIGNvdWxk
buKAmXQgYmUgY29tcGxldGVkLiBDb25uZWN0aW9uIHJlZnVzZWQKK0NPTlNPTEUgTUVTU0FHRTog
V2ViU29ja2V0IGNvbm5lY3Rpb24gdG8gJ3dzOi8vbG9jYWxob3N0OjgwODAvJyBmYWlsZWQ6IFVu
ZXhwZWN0ZWQgcmVzcG9uc2UgY29kZTogMjAwCitUZXN0cyB0aGF0IFdlYlNvY2tldCBjbG9zZSBy
ZXBvcnQgaXMgZGVsYXllZCB0byBtaXRpZ2F0ZSBwb3J0IHNjYW5uaW5nIGF0dGFja3MuCisKK09u
IHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxv
d2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitUZXN0IHBhc3NlZAorUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvcG9ydC1zY2FuLmh0bWwgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3BvcnQtc2Nhbi5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjJiZWJjZDcxZWM0MTc0NGRmNWM1MjA5YWRiZTVjZmNmYzY3ZDlmNGUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJp
L3BvcnQtc2Nhbi5odG1sCkBAIC0wLDAgKzEsODQgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+
Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGVzdHMgdGhh
dCBXZWJTb2NrZXQgY2xvc2UgcmVwb3J0IGlzIGRlbGF5ZWQgdG8gbWl0aWdhdGUgcG9ydCBzY2Fu
bmluZyBhdHRhY2tzLiIpOworCitqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKwordmFyIGNvdW50UmVj
ZWl2ZWRNZXNzYWdlID0gMDsKKworZnVuY3Rpb24gc2Nhbl9wb3J0cygpCit7CisgICAgLy8gT3Bl
biBwb3J0LgorICAgIHNjYW5fcG9ydCg4MDgwKTsKKworICAgIC8vIENsb3NlZCBwb3J0LgorICAg
IHNldFRpbWVvdXQoc2Nhbl9wb3J0KDEyMzQpLCAxMCk7Cit9CisKKy8vIFRlc3QgYmFzZWQgb2Zm
IG9mIEJlRUYgcG9ydCBzY2FubmluZyBhdHRhY2sgdGVjaG5pcXVlIChodHRwczovL2dpdGh1Yi5j
b20vYmVlZnByb2plY3QvYmVlZi9ibG9iL21hc3Rlci9tb2R1bGVzL25ldHdvcmsvcG9ydF9zY2Fu
bmVyL2NvbW1hbmQuanMpCitmdW5jdGlvbiBzY2FuX3BvcnQocG9ydCkKK3sKKyAgICB2YXIgdXJs
ID0gIndzOi8vbG9jYWxob3N0OiIgKyBwb3J0OworICAgIHZhciB3cyA9IG5ldyBXZWJTb2NrZXQo
dXJsKTsKKyAgICB2YXIgc3RhcnRUaW1lID0gKG5ldyBEYXRlKS5nZXRUaW1lKCk7CisgICAgdmFy
IHRpbWVvdXQgPSAzMDAwOworCisgICAgY2xlYXJJbnRlcnZhbElEID0gc2V0SW50ZXJ2YWwoCisg
ICAgZnVuY3Rpb24gKCkKKyAgICB7CisgICAgICAgIHZhciBpbnRlcnZhbCA9IChuZXcgRGF0ZSku
Z2V0VGltZSgpIC0gc3RhcnRUaW1lOworCisgICAgICAgIGlmICh3cy5yZWFkeVN0YXRlID09PSBX
ZWJTb2NrZXQuQ09OTkVDVElORykKKyAgICAgICAgeworICAgICAgICB9CisKKyAgICAgICAgaWYg
KHdzLnJlYWR5U3RhdGUgPT09IFdlYlNvY2tldC5PUEVOKQorICAgICAgICB7CisgICAgICAgIH0K
KworICAgICAgICBpZiAod3MucmVhZHlTdGF0ZSA9PT0gV2ViU29ja2V0LkNMT1NJTkcpCisgICAg
ICAgIHsKKyAgICAgICAgfQorCisgICAgICAgIGlmICh3cy5yZWFkeVN0YXRlID09PSBXZWJTb2Nr
ZXQuQ0xPU0VEKQorICAgICAgICB7CisgICAgICAgICAgICBjbGVhckludGVydmFsKGNsZWFySW50
ZXJ2YWxJRCk7CisgICAgICAgICAgICB3cy5jbG9zZSgpOworICAgICAgICAgICAgY291bnRSZWNl
aXZlZE1lc3NhZ2UrKzsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gTG93ZXN0IHBvc3Np
YmxlIGRlbGF5IHRpbWUgaXMgMTEgbXMuIFRoaXMgYXNzdW1lcworICAgICAgICAgICAgLy8gcmVw
b3J0aW5nIG9mIGEgV2ViU29ja2V0IHN0YXRlIHdpdGhvdXQgZGVsYXkgdGFrZXMgbm8gbGVzcwor
ICAgICAgICAgICAgLy8gdGhhbiA0IG1zLgorICAgICAgICAgICAgaWYgKGludGVydmFsIDwgMTUp
IHsKKyAgICAgICAgICAgICAgICBkZWJ1ZygiVGltZXIgZmFpbGVkIHRvIGRlbGF5IHJlcG9ydCBv
ZiBjbG9zZWQgc3RhdGUiKTsKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGNvdW50UmVjZWl2ZWRNZXNzYWdlID49IDIpIHsK
KyAgICAgICAgICAgICAgICBkZWJ1ZygiVGVzdCBwYXNzZWQiKTsKKyAgICAgICAgICAgICAgICBm
aW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmIChp
bnRlcnZhbCA+PSB0aW1lb3V0KQorICAgICAgICB7CisgICAgICAgICAgICBjbGVhckludGVydmFs
KGNsZWFySW50ZXJ2YWxJRCk7CisgICAgICAgICAgICBkZWJ1ZygiQ29ubmVjdGlvbiB0aW1lb3V0
Iik7CisgICAgICAgICAgICB3cy5jbG9zZSgpOworICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7
CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAsIDEpOworfQorCitzY2Fu
X3BvcnRzKCk7CisKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403724</attachid>
            <date>2020-07-07 14:13:04 -0700</date>
            <delta_ts>2020-07-07 14:16:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213143-20200707141303.patch</filename>
            <type>text/plain</type>
            <size>20256</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYzOTY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWY3NDYyZTRlNmM5OTYx
YTRjMmI2Y2RhNjhmZGNkNDA3M2ZjOGY5Zi4uNGQyNWVmNzI1NmMyY2E3ZTA5NzlmZjAyYzFlMzE0
N2M4ZjAzNjQ5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDIwLTA3LTA3ICBLYXRl
IENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBhcnRp
ZmljaWFsIGRlbGF5IHRvIFdlYlNvY2tldCBjb25uZWN0aW9ucyB0byBtaXRpZ2F0ZSBwb3J0IHNj
YW5uaW5nIGF0dGFja3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIxMzE0MworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjQzMDg5Mjc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGZsb29yIG9mIDEw
MG1zIHdoZW4gcmVwb3J0aW5nIFdlYlNvY2tldCBjbG9zZSBzdGF0ZS4gVGhlIGRlbGF5IGlzCisg
ICAgICAgIGNhbGN1bGF0ZWQgYnkgc3VidHJhY3RpbmcgdGhlIHRpbWUgc2luY2UgY29ubmVjdGlv
biBmcm9tIDEwMG1zLgorCisgICAgICAgIFRlc3Q6IGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3Rz
L2h5YmkvcG9ydC1zY2FuLmh0bWwKKworICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJT
b2NrZXRDaGFubmVsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6Oldl
YlNvY2tldENoYW5uZWwpOgorICAgICAgICBUd28gdGltZXJzIGFyZSBuZWVkZWQuIE9uZSBmb3Ig
cmVwb3J0aW5nIGFuIGVycm9yIHRoZW4gY2xvc2luZyB0aGUKKyAgICAgICAgY29ubmVjdGlvbiwg
YW5kIG9uZSBmb3IgY2xvc2luZyB0aGUgY29ubmVjdGlvbiB3aGVuIHRoZXJlIGlzIGEgcGVuZGlu
ZworICAgICAgICBlcnJvciBhbmQgd2Ugd2FudCB0byBtYWtlIHN1cmUgdGhlIGNsb3NlIGRvZXMg
bm90IG9jY3VyIGJlZm9yZSB0aGUKKyAgICAgICAgZXJyb3IgaXMgcmVwb3J0ZWQuCisKKyAgICAg
ICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OmNvbm5lY3QpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViU29ja2V0Q2hhbm5lbDo6ZGVsYXlUaW1lKToKKyAgICAgICAgQ2FsY3VsYXRlIHRoZSBk
ZWxheSB0aW1lIHNvIHRoZSB0b3RhbCB0aW1lIHNpbmNlIGNvbm5lY3Rpb24gaXMgYXQKKyAgICAg
ICAgbGVhc3QgMTAwbXMuCisKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OnJl
cG9ydEVycm9yQW5kRGlzY29ubmVjdCk6CisgICAgICAgIFRpbWVyIGZ1bmN0aW9uIHRvIGRlbGF5
IHRoZSBlcnJvciByZXBvcnQgYW5kIGNsb3NlLgorCisgICAgICAgIChXZWJDb3JlOjpXZWJTb2Nr
ZXRDaGFubmVsOjpmYWlsKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OnNl
bmREaWRDbG9zZU1lc3NhZ2VUb0NsaWVudCk6CisgICAgICAgIFRpbWVyIGZ1bmN0aW9uIHRvIGRl
bGF5IHRoZSBsb2dpYyBmcm9tIGRpZENsb3NlU29ja2V0U3RyZWFtKCkgdG8gYXZvaWQKKyAgICAg
ICAgY2xvc2luZyBiZWZvcmUgYW4gZXJyb3IgaGFzIGJlZW4gcmVwb3J0ZWQuCisKKyAgICAgICAg
KFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OmRpZENsb3NlU29ja2V0U3RyZWFtKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OmRpZEZhaWxTb2NrZXRTdHJlYW0pOgorICAg
ICAgICBJZiBtX2hhbmRsZSBpcyBub3QgbnVsbCwgdGhpcyBtZWFucyBtX2hhbmRsZSA9PSBoYW5k
bGUsIHNvIHdlIGNhbgorICAgICAgICB1c2UgdGhlIHRpbWVyIGZ1bmN0aW9uLiBPdGhlcndpc2Us
IGNsb3NlIHdpdGhvdXQgYSBkZWxheSBzaW5jZSBoYW5kbGUKKyAgICAgICAgY2Fubm90IGJlIHVz
ZWQgaW4gYSB0aW1lci4KKworICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRD
aGFubmVsLmg6CisKIDIwMjAtMDctMDYgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29t
PgogCiAgICAgICAgIFVzZSBSZW5kZXJPYmplY3Q6OnBvc2l0aW9uRm9yUG9pbnQgaW5zdGVhZCBv
ZiBoaXQgdGVzdGluZyB0aGUgZW50aXJlIHZpZXcgaW4gY2xvc2VzdEVkaXRhYmxlUG9zaXRpb25J
bkVsZW1lbnRGb3JBYnNvbHV0ZVBvaW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAKaW5kZXggOTY2Yjg2MmU5NTNkZDIw
ZGYyNDY3M2QzZmVhMWUyYWUyN2RmMDVmNS4uN2VlZDc0ZWRkNjk0ZDRkM2VhZjFiYmU5YTMwZWI4
YTcwZDM0ZjMzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRz
L1dlYlNvY2tldENoYW5uZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29j
a2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcApAQCAtNjksNiArNjksOCBAQCBXZWJTb2NrZXRDaGFu
bmVsOjpXZWJTb2NrZXRDaGFubmVsKERvY3VtZW50JiBkb2N1bWVudCwgV2ViU29ja2V0Q2hhbm5l
bENsaWVudCYgYwogICAgICwgbV9yZXN1bWVUaW1lcigqdGhpcywgJldlYlNvY2tldENoYW5uZWw6
OnJlc3VtZVRpbWVyRmlyZWQpCiAgICAgLCBtX2Nsb3NpbmdUaW1lcigqdGhpcywgJldlYlNvY2tl
dENoYW5uZWw6OmNsb3NpbmdUaW1lckZpcmVkKQogICAgICwgbV9zb2NrZXRQcm92aWRlcihwcm92
aWRlcikKKyAgICAsIG1fZXJyb3JEZWxheVRpbWVyKCp0aGlzLCAmV2ViU29ja2V0Q2hhbm5lbDo6
cmVwb3J0RXJyb3JBbmREaXNjb25uZWN0KQorICAgICwgbV9jbG9zZURlbGF5VGltZXIoKnRoaXMs
ICZXZWJTb2NrZXRDaGFubmVsOjpzZW5kRGlkQ2xvc2VNZXNzYWdlVG9DbGllbnQpCiB7CiAgICAg
aWYgKFBhZ2UqIHBhZ2UgPSBkb2N1bWVudC5wYWdlKCkpCiAgICAgICAgIG1faWRlbnRpZmllciA9
IHBhZ2UtPnByb2dyZXNzKCkuY3JlYXRlVW5pcXVlSWRlbnRpZmllcigpOwpAQCAtODQsNiArODYs
NyBAQCBXZWJTb2NrZXRDaGFubmVsOjp+V2ViU29ja2V0Q2hhbm5lbCgpCiBXZWJTb2NrZXRDaGFu
bmVsOjpDb25uZWN0U3RhdHVzIFdlYlNvY2tldENoYW5uZWw6OmNvbm5lY3QoY29uc3QgVVJMJiBy
ZXF1ZXN0ZWRVUkwsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpCiB7CiAgICAgTE9HKE5ldHdvcmss
ICJXZWJTb2NrZXRDaGFubmVsICVwIGNvbm5lY3QoKSIsIHRoaXMpOworICAgIG1fY29ubmVjdGlv
blN0YXJ0VGltZSA9IFdhbGxUaW1lOjpub3coKTsKIAogICAgIGF1dG8gdmFsaWRhdGVkVVJMID0g
dmFsaWRhdGVVUkwoKm1fZG9jdW1lbnQsIHJlcXVlc3RlZFVSTCk7CiAgICAgaWYgKCF2YWxpZGF0
ZWRVUkwpCkBAIC0yMDEsNiArMjA0LDI1IEBAIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6Y2xvc2Uo
aW50IGNvZGUsIGNvbnN0IFN0cmluZyYgcmVhc29uKQogICAgICAgICBtX2Nsb3NpbmdUaW1lci5z
dGFydE9uZVNob3QoVENQTWF4aW11bVNlZ21lbnRMaWZldGltZSAqIDIpOwogfQogCitTZWNvbmRz
IFdlYlNvY2tldENoYW5uZWw6OmRlbGF5VGltZSgpCit7CisgICAgYXV0byB0aW1lU2luY2VDb25u
ZWN0aW9uID0gV2FsbFRpbWU6Om5vdygpIC0gbV9jb25uZWN0aW9uU3RhcnRUaW1lOworICAgIGlm
ICh0aW1lU2luY2VDb25uZWN0aW9uLm1pbGxpc2Vjb25kcygpIDwgMTAwKQorICAgICAgICByZXR1
cm4gU2Vjb25kczo6ZnJvbU1pbGxpc2Vjb25kcygxMDApIC0gdGltZVNpbmNlQ29ubmVjdGlvbjsK
KyAgICAKKyAgICByZXR1cm4gU2Vjb25kcygwKTsKK30KKwordm9pZCBXZWJTb2NrZXRDaGFubmVs
OjpyZXBvcnRFcnJvckFuZERpc2Nvbm5lY3QoKQoreworICAgIG1faGFzUGVuZGluZ0Vycm9yID0g
ZmFsc2U7CisgICAgaWYgKG1fY2xpZW50KQorICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZU1l
c3NhZ2VFcnJvcigpOworCisgICAgaWYgKG1faGFuZGxlICYmICFtX2Nsb3NlZCkKKyAgICAgICAg
bV9oYW5kbGUtPmRpc2Nvbm5lY3QoKTsgLy8gV2lsbCBjYWxsIGRpZENsb3NlU29ja2V0U3RyZWFt
KCkgYnV0IG1heWJlIG5vdCBzeW5jaHJvbm91c2x5LgorfQorCiB2b2lkIFdlYlNvY2tldENoYW5u
ZWw6OmZhaWwoY29uc3QgU3RyaW5nJiByZWFzb24pCiB7CiAgICAgUkVMRUFTRV9MT0coTmV0d29y
aywgIldlYlNvY2tldENoYW5uZWwgJXAgZmFpbCgpIHJlYXNvbj0nJXMnIiwgdGhpcywgcmVhc29u
LnV0ZjgoKS5kYXRhKCkpOwpAQCAtMjI2LDExICsyNDgsOSBAQCB2b2lkIFdlYlNvY2tldENoYW5u
ZWw6OmZhaWwoY29uc3QgU3RyaW5nJiByZWFzb24pCiAgICAgbV9kZWZsYXRlRnJhbWVyLmRpZEZh
aWwoKTsKICAgICBtX2hhc0NvbnRpbnVvdXNGcmFtZSA9IGZhbHNlOwogICAgIG1fY29udGludW91
c0ZyYW1lRGF0YS5jbGVhcigpOwotICAgIGlmIChtX2NsaWVudCkKLSAgICAgICAgbV9jbGllbnQt
PmRpZFJlY2VpdmVNZXNzYWdlRXJyb3IoKTsKIAotICAgIGlmIChtX2hhbmRsZSAmJiAhbV9jbG9z
ZWQpCi0gICAgICAgIG1faGFuZGxlLT5kaXNjb25uZWN0KCk7IC8vIFdpbGwgY2FsbCBkaWRDbG9z
ZVNvY2tldFN0cmVhbSgpIGJ1dCBtYXliZSBub3Qgc3luY2hyb25vdXNseS4KKyAgICBtX2hhc1Bl
bmRpbmdFcnJvciA9IHRydWU7CisgICAgbV9lcnJvckRlbGF5VGltZXIuc3RhcnRPbmVTaG90KGRl
bGF5VGltZSgpKTsKIH0KIAogdm9pZCBXZWJTb2NrZXRDaGFubmVsOjpkaXNjb25uZWN0KCkKQEAg
LTI4MywxMiArMzAzLDExIEBAIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6ZGlkT3BlblNvY2tldFN0
cmVhbShTb2NrZXRTdHJlYW1IYW5kbGUmIGhhbmRsZSkKICAgICB9KTsKIH0KIAotdm9pZCBXZWJT
b2NrZXRDaGFubmVsOjpkaWRDbG9zZVNvY2tldFN0cmVhbShTb2NrZXRTdHJlYW1IYW5kbGUmIGhh
bmRsZSkKK3ZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6c2VuZERpZENsb3NlTWVzc2FnZVRvQ2xpZW50
KCkKIHsKLSAgICBMT0coTmV0d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAgZGlkQ2xvc2VTb2Nr
ZXRTdHJlYW0oKSIsIHRoaXMpOwogICAgIGlmIChtX2lkZW50aWZpZXIgJiYgbV9kb2N1bWVudCkK
ICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDbG9zZVdlYlNvY2tldChtX2Rv
Y3VtZW50LmdldCgpLCBtX2lkZW50aWZpZXIpOwotICAgIEFTU0VSVF9VTlVTRUQoaGFuZGxlLCAm
aGFuZGxlID09IG1faGFuZGxlIHx8ICFtX2hhbmRsZSk7CisKICAgICBtX2Nsb3NlZCA9IHRydWU7
CiAgICAgaWYgKG1fY2xvc2luZ1RpbWVyLmlzQWN0aXZlKCkpCiAgICAgICAgIG1fY2xvc2luZ1Rp
bWVyLnN0b3AoKTsKQEAgLTMwOCw2ICszMjcsMTggQEAgdm9pZCBXZWJTb2NrZXRDaGFubmVsOjpk
aWRDbG9zZVNvY2tldFN0cmVhbShTb2NrZXRTdHJlYW1IYW5kbGUmIGhhbmRsZSkKICAgICBkZXJl
ZigpOwogfQogCit2b2lkIFdlYlNvY2tldENoYW5uZWw6OmRpZENsb3NlU29ja2V0U3RyZWFtKFNv
Y2tldFN0cmVhbUhhbmRsZSYgaGFuZGxlKQoreworICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0
Q2hhbm5lbCAlcCBkaWRDbG9zZVNvY2tldFN0cmVhbSgpIiwgdGhpcyk7CisgICAgQVNTRVJUX1VO
VVNFRChoYW5kbGUsICZoYW5kbGUgPT0gbV9oYW5kbGUgfHwgIW1faGFuZGxlKTsKKworICAgIC8v
IERlbGF5IGNsb3NpbmcgaWYgYW4gZXJyb3IgbWVzc2FnZSBpcyBwZW5kaW5nIHRvIGVuc3VyZSB0
aGUgZXJyb3IgZ2V0cyByZXBvcnRlZCBmaXJzdC4KKyAgICBpZiAobV9oYXNQZW5kaW5nRXJyb3Ip
CisgICAgICAgIG1fY2xvc2VEZWxheVRpbWVyLnN0YXJ0T25lU2hvdChTZWNvbmRzOjpmcm9tTWls
bGlzZWNvbmRzKDEwMCkpOworICAgIGVsc2UKKyAgICAgICAgc2VuZERpZENsb3NlTWVzc2FnZVRv
Q2xpZW50KCk7Cit9CisKIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6ZGlkUmVjZWl2ZVNvY2tldFN0
cmVhbURhdGEoU29ja2V0U3RyZWFtSGFuZGxlJiBoYW5kbGUsIGNvbnN0IGNoYXIqIGRhdGEsIHNp
emVfdCBsZW5ndGgpCiB7CiAgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRDaGFubmVsICVwIGRp
ZFJlY2VpdmVTb2NrZXRTdHJlYW1EYXRhKCkgUmVjZWl2ZWQgJXp1IGJ5dGVzIiwgdGhpcywgbGVu
Z3RoKTsKQEAgLTM2Niw5ICszOTcsMTMgQEAgdm9pZCBXZWJTb2NrZXRDaGFubmVsOjpkaWRGYWls
U29ja2V0U3RyZWFtKFNvY2tldFN0cmVhbUhhbmRsZSYgaGFuZGxlLCBjb25zdCBTb2MKICAgICAg
ICAgTE9HX0VSUk9SKCIlcyIsIG1lc3NhZ2UudXRmOCgpLmRhdGEoKSk7CiAgICAgfQogICAgIG1f
c2hvdWxkRGlzY2FyZFJlY2VpdmVkRGF0YSA9IHRydWU7Ci0gICAgaWYgKG1fY2xpZW50KQotICAg
ICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZU1lc3NhZ2VFcnJvcigpOwotICAgIGhhbmRsZS5kaXNj
b25uZWN0KCk7CisgICAgaWYgKG1faGFuZGxlKQorICAgICAgICBtX2Vycm9yRGVsYXlUaW1lci5z
dGFydE9uZVNob3QoZGVsYXlUaW1lKCkpOworICAgIGVsc2UgeworICAgICAgICBpZiAobV9jbGll
bnQpCisgICAgICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZU1lc3NhZ2VFcnJvcigpOworICAg
ICAgICBoYW5kbGUuZGlzY29ubmVjdCgpOworICAgIH0KIH0KIAogdm9pZCBXZWJTb2NrZXRDaGFu
bmVsOjpkaWRTdGFydExvYWRpbmcoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmgKaW5kZXggZGM1Yjk5YzQyMGI5NTYzMjY0ZGUz
YzIzYTIxNDA1OTY1ZTcyYzc2NS4uODM4MjNjZTJmMmJkYmY4ZGM1MWIyZTdhMjdmNjI3ZTc1Yzhk
NzU4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNv
Y2tldENoYW5uZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2Vi
U29ja2V0Q2hhbm5lbC5oCkBAIC0xMjgsNiArMTI4LDEwIEBAIHB1YmxpYzoKICAgICBEb2N1bWVu
dCogZG9jdW1lbnQoKTsKICAgICAKIHByaXZhdGU6CisgICAgdm9pZCByZXBvcnRFcnJvckFuZERp
c2Nvbm5lY3QoKTsKKyAgICBTZWNvbmRzIGRlbGF5VGltZSgpOworICAgIHZvaWQgc2VuZERpZENs
b3NlTWVzc2FnZVRvQ2xpZW50KCk7CisKICAgICBXRUJDT1JFX0VYUE9SVCBXZWJTb2NrZXRDaGFu
bmVsKERvY3VtZW50JiwgV2ViU29ja2V0Q2hhbm5lbENsaWVudCYsIFNvY2tldFByb3ZpZGVyJik7
CiAKICAgICB2b2lkIHJlZlRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsKCkgb3ZlcnJpZGUgeyBy
ZWYoKTsgfQpAQCAtMjI5LDYgKzIzMywxMCBAQCBwcml2YXRlOgogCiAgICAgV2ViU29ja2V0RGVm
bGF0ZUZyYW1lciBtX2RlZmxhdGVGcmFtZXI7CiAgICAgUmVmPFNvY2tldFByb3ZpZGVyPiBtX3Nv
Y2tldFByb3ZpZGVyOworICAgIFRpbWVyIG1fZXJyb3JEZWxheVRpbWVyOworICAgIFRpbWVyIG1f
Y2xvc2VEZWxheVRpbWVyOworICAgIFdhbGxUaW1lIG1fY29ubmVjdGlvblN0YXJ0VGltZTsKKyAg
ICBib29sIG1faGFzUGVuZGluZ0Vycm9yIHsgZmFsc2UgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwppbmRleCBjMzNhNzMxMGRlYzgzZjA0YTliYzg0NTVjNjU0ZDg1MTk4YTg0NTUw
Li40YjAwM2EwNDMxNTIxN2ZiMmUzNTdhYWFlYWU4OWIyNDY3MjQ0YjdlIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjcgQEAKKzIwMjAtMDctMDcgIEthdGUgQ2hlbmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBs
ZS5jb20+CisKKyAgICAgICAgQWRkIGFydGlmaWNpYWwgZGVsYXkgdG8gV2ViU29ja2V0IGNvbm5l
Y3Rpb25zIHRvIG1pdGlnYXRlIHBvcnQgc2Nhbm5pbmcgYXR0YWNrcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEzMTQzCisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS82NDMwODkyNz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBVcGRhdGVkIGxheW91dCB0ZXN0cyB0byBhY2NvdW50IGZvciBkZWxheSBpbiB3
ZWJzb2NrZXQgY2xvc2luZy4KKworICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3Rz
L2h5YmkvY2xvc2UtY29kZS1hbmQtcmVhc29uLmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0cy93
ZWJzb2NrZXQvdGVzdHMvaHliaS93b3JrZXJzL3Jlc291cmNlcy9jbG9zZS1jb2RlLWFuZC1yZWFz
b24uanM6CisgICAgICAgIEFkZGVkIFByb21pc2VzIHRvIHRoZXNlIHRlc3RzIHRvIG1ha2Ugc3Vy
ZSB0aGUgd2Vic29ja2V0IGNsb3NlIGhhcworICAgICAgICBjb21wbGV0ZWQgYmVmb3JlIG1vdmlu
ZyBvbnRvIHRoZSBuZXh0IHBhcnQgb2YgdGhlIHRlc3QuIAorCisgICAgICAgICogaHR0cC90ZXN0
cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9jb250ZW50ZXh0ZW5zaW9ucy91cGdyYWRlLWV4cGVjdGVk
LnR4dDoKKyAgICAgICAgRXh0cmEgY29uc29sZSBtZXNzYWdlIHRoYXQgd2FzIHByb2JhYmx5IHBy
ZXZpb3VzbHkgbm90IGluY2x1ZGVkCisgICAgICAgIGJlY2F1c2Ugb2YgdGltaW5nLgorCisgICAg
ICAgICogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9wb3J0LXNjYW4tZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3Bv
cnQtc2Nhbi5odG1sOiBBZGRlZC4KKyAgICAgICAgVGVzdCB0aGF0IHRoZSBkZWxheSBmb3IgcmVw
b3J0aW5nIHdlYnNvY2tldCBjbG9zdXJlIGlzIG5vIGxlc3MKKyAgICAgICAgdGhhbiAxMDAgbXMu
CisKIDIwMjAtMDctMDYgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbV2luXSBVbnJldmlld2VkIG1vemlsbGEgdGVzdCBnYXJkZW5pbmcgYWZ0ZXIgcjI2Mzg1NS4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCmluZGV4IDFjNjMyNjBiYjU4MjY5ZjhkYzJiZDMw
MGM3MjdkNGMxYmJiMTAzNmYuLmEyOTkyODZkYzk0YzZiNGE3ODNiOTY2OTI4NDMyNWNiMDBmMWRm
YWYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIw
LTA3LTA3ICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAg
ICAgIEFkZCBhcnRpZmljaWFsIGRlbGF5IHRvIFdlYlNvY2tldCBjb25uZWN0aW9ucyB0byBtaXRp
Z2F0ZSBwb3J0IHNjYW5uaW5nIGF0dGFja3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIxMzE0MworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjQzMDg5
Mjc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm93
IHRoYXQgdGhlcmUgaXMgYSBkZWxheSBiZXR3ZWVuIGNhbGxpbmcgd3MuY2xvc2UgYW5kIGNoYW5n
aW5nIHRoZQorICAgICAgICBzdGF0ZSB0byBDTE9TRUQsIHdlIHNob3VsZCB1cGRhdGUgZXhwZWN0
YXRpb25zIHRvIGV4cGVjdCBzdGF0ZSB0byBiZQorICAgICAgICBDTE9TSU5HIGltbWVkaWF0ZWx5
IGFmdGVyIGNhbGxpbmcgd3MuY2xvc2UuCisKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMv
d2Vic29ja2V0cy9pbnRlcmZhY2VzL1dlYlNvY2tldC9jbG9zZS9jbG9zZS1uZXN0ZWQtZXhwZWN0
ZWQudHh0OgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93ZWJzb2NrZXRzL2ludGVyZmFj
ZXMvV2ViU29ja2V0L3JlYWR5U3RhdGUvMDAzLWV4cGVjdGVkLnR4dDoKKwogMjAyMC0wNy0wMyAg
WW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgTWVkaWFSZWNvcmRl
ciBzaG91bGQgc3VwcG9ydCBwZWVyIGNvbm5lY3Rpb24gcmVtb3RlIHZpZGVvIHRyYWNrcwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9jbG9z
ZS1jb2RlLWFuZC1yZWFzb24uaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0
L3Rlc3RzL2h5YmkvY2xvc2UtY29kZS1hbmQtcmVhc29uLmh0bWwKaW5kZXggNTRjZjYwZmZiOWJh
NzkyZTUyMGUyZGM3MDdlZTA5N2M1YTJhMDIxMi4uYjBjOGI0OTllY2YzOWJiMWFjNmFhNzNmZjJl
ZDUwYjUxYTFkNTg4MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2Nr
ZXQvdGVzdHMvaHliaS9jbG9zZS1jb2RlLWFuZC1yZWFzb24uaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2Nsb3NlLWNvZGUtYW5kLXJlYXNvbi5o
dG1sCkBAIC0xNywyMyArMTcsMzAgQEAgdmFyIGNvZGVOb1N0YXR1c1JjdmQgPSAxMDA1OwogdmFy
IGNvZGVBYm5vcm1hbENsb3N1cmUgPSAxMDA2OwogdmFyIGVtcHR5U3RyaW5nID0gIiI7CiAKLXZh
ciB3cyA9IG5ldyBXZWJTb2NrZXQoIndzOi8vMTI3LjAuMC4xOjg4ODAvd2Vic29ja2V0L3Rlc3Rz
L2h5YmkvZWNobyIpOwotCi13cy5vbm9wZW4gPSBmdW5jdGlvbihldmVudCkKK2Z1bmN0aW9uIGZp
cnN0V2ViU29ja2V0RmluaXNoKCkKIHsKLSAgICB0ZXN0RmFpbGVkKCJ3cy5vbm9wZW4oKSB3YXMg
Y2FsbGVkLiAobWVzc2FnZSA9IFwiIiArIGV2ZW50LmRhdGEgKyAiXCIpIik7Ci19OworICAgIHJl
dHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHsKKyAgICAgICAgdmFy
IHdzID0gbmV3IFdlYlNvY2tldCgid3M6Ly8xMjcuMC4wLjE6ODg4MC93ZWJzb2NrZXQvdGVzdHMv
aHliaS9lY2hvIik7CiAKLXdzLm9uY2xvc2UgPSBmdW5jdGlvbihldmVudCkKLXsKLSAgICBkZWJ1
Zygid3Mub25jbG9zZSgpIHdhcyBjYWxsZWQuIik7Ci0gICAgY2xvc2VFdmVudCA9IGV2ZW50Owot
ICAgIHNob3VsZEJlRmFsc2UoImNsb3NlRXZlbnQud2FzQ2xlYW4iKTsKLSAgICBzaG91bGRCZSgi
Y2xvc2VFdmVudC5jb2RlIiwgImNvZGVBYm5vcm1hbENsb3N1cmUiKTsKLSAgICBzaG91bGRCZSgi
Y2xvc2VFdmVudC5yZWFzb24iLCAiZW1wdHlTdHJpbmciKTsKLX07CisgICAgICAgIHdzLm9ub3Bl
biA9IGZ1bmN0aW9uKGV2ZW50KQorICAgICAgICB7CisgICAgICAgICAgICB0ZXN0RmFpbGVkKCJ3
cy5vbm9wZW4oKSB3YXMgY2FsbGVkLiAobWVzc2FnZSA9IFwiIiArIGV2ZW50LmRhdGEgKyAiXCIp
Iik7CisgICAgICAgIH07CiAKLXdzLmNsb3NlKCk7CisgICAgICAgIHdzLm9uY2xvc2UgPSBmdW5j
dGlvbihldmVudCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIndzLm9uY2xvc2UoKSB3
YXMgY2FsbGVkLiIpOworICAgICAgICAgICAgY2xvc2VFdmVudCA9IGV2ZW50OworICAgICAgICAg
ICAgc2hvdWxkQmVGYWxzZSgiY2xvc2VFdmVudC53YXNDbGVhbiIpOworICAgICAgICAgICAgc2hv
dWxkQmUoImNsb3NlRXZlbnQuY29kZSIsICJjb2RlQWJub3JtYWxDbG9zdXJlIik7CisgICAgICAg
ICAgICBzaG91bGRCZSgiY2xvc2VFdmVudC5yZWFzb24iLCAiZW1wdHlTdHJpbmciKTsKKworICAg
ICAgICAgICAgcmVzb2x2ZSgidGVzdFBhc3NlZCIpOworICAgICAgICB9OworCisgICAgICAgIHdz
LmNsb3NlKCk7CisgICAgfSk7Cit9CiAKIHZhciB0ZXN0SWQgPSAwOwogdmFyIHRlc3ROdW0gPSA3
OwpAQCAtMTEyLDcgKzExOSwxMyBAQCBXZWJTb2NrZXRUZXN0LnByb3RvdHlwZS5vbmNsb3NlID0g
ZnVuY3Rpb24oZXZlbnQpCiAgICAgICAgIGZpbmlzaEpTVGVzdCgpOwogfTsKIAotdmFyIHRlc3Qg
PSBuZXcgV2ViU29ja2V0VGVzdCgpOworYXN5bmMgZnVuY3Rpb24gc3RhcnRfdGVzdCgpCit7Cisg
ICAgYXdhaXQgZmlyc3RXZWJTb2NrZXRGaW5pc2goKTsKKyAgICB2YXIgdGVzdCA9IG5ldyBXZWJT
b2NrZXRUZXN0KCk7Cit9CisKK3N0YXJ0X3Rlc3QoKTsKIAogPC9zY3JpcHQ+CiA8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vLi4vanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Njcmlw
dD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5
YmkvY29udGVudGV4dGVuc2lvbnMvdXBncmFkZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2NvbnRlbnRleHRlbnNpb25zL3VwZ3JhZGUt
ZXhwZWN0ZWQudHh0CmluZGV4IGU0ZThlMTNmZTU3ZWEwM2I2ODE3OTc5NmYzMDc4ZTc4YmUzNzhk
YzIuLjVkM2VjOWUxNTZmMmJhNWNhNzEyMTlhODlkNDhmNzI2N2ZkYTg4NzAgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvY29udGVudGV4dGVu
c2lvbnMvdXBncmFkZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93
ZWJzb2NrZXQvdGVzdHMvaHliaS9jb250ZW50ZXh0ZW5zaW9ucy91cGdyYWRlLWV4cGVjdGVkLnR4
dApAQCAtMSw1ICsxLDYgQEAKIENPTlNPTEUgTUVTU0FHRTogQ29udGVudCBibG9ja2VyIHByb21v
dGVkIFVSTCBmcm9tIHdzOi8vMTI3LjAuMC4xL3dlYnNvY2tldC90ZXN0cy9oeWJpL3NpbXBsZSB0
byB3c3MKIENPTlNPTEUgTUVTU0FHRTogV2ViU29ja2V0IG5ldHdvcmsgZXJyb3I6IFRoZSBvcGVy
YXRpb24gY291bGRu4oCZdCBiZSBjb21wbGV0ZWQuIENvbm5lY3Rpb24gcmVmdXNlZAorQ09OU09M
RSBNRVNTQUdFOiBXZWJTb2NrZXQgbmV0d29yayBlcnJvcjogVGhlIG9wZXJhdGlvbiBjb3VsZG7i
gJl0IGJlIGNvbXBsZXRlZC4gQ29ubmVjdGlvbiByZWZ1c2VkCiBDT05TT0xFIE1FU1NBR0U6IG9u
ZXJyb3IKIENPTlNPTEUgTUVTU0FHRTogbmV3IHVybDogd3NzOi8vMTI3LjAuMC4xL3dlYnNvY2tl
dC90ZXN0cy9oeWJpL3NpbXBsZQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3dlYnNvY2tldC90ZXN0cy9oeWJpL3BvcnQtc2Nhbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3BvcnQtc2Nhbi1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZjEyOTI4NmI2YzNkZWFhMzk4MDBjMDIwODYzODkzYjEwZWFmNjRiNAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5
YmkvcG9ydC1zY2FuLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEzIEBACitDT05TT0xFIE1FU1NB
R0U6IFdlYlNvY2tldCBjb25uZWN0aW9uIHRvICd3czovL2xvY2FsaG9zdDo4MDgwLycgZmFpbGVk
OiBVbmV4cGVjdGVkIHJlc3BvbnNlIGNvZGU6IDIwMAorQ09OU09MRSBNRVNTQUdFOiBXZWJTb2Nr
ZXQgbmV0d29yayBlcnJvcjogVGhlIG9wZXJhdGlvbiBjb3VsZG7igJl0IGJlIGNvbXBsZXRlZC4g
Q29ubmVjdGlvbiByZWZ1c2VkCitDT05TT0xFIE1FU1NBR0U6IFdlYlNvY2tldCBuZXR3b3JrIGVy
cm9yOiBUaGUgb3BlcmF0aW9uIGNvdWxkbuKAmXQgYmUgY29tcGxldGVkLiBDb25uZWN0aW9uIHJl
ZnVzZWQKK1Rlc3RzIHRoYXQgV2ViU29ja2V0IGNsb3NlIHJlcG9ydCBpcyBkZWxheWVkIHRvIG1p
dGlnYXRlIHBvcnQgc2Nhbm5pbmcgYXR0YWNrcy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2Vl
IGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUi
LgorCisKK1BBU1MgU3VjY2Vzc2Z1bGx5IGRlbGF5ZWQgcmVwb3J0aW5nIG9mIGNsb3NlZCBXZWJT
b2NrZXQgY29ubmVjdGlvbgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNU
IENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0
L3Rlc3RzL2h5YmkvcG9ydC1zY2FuLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNv
Y2tldC90ZXN0cy9oeWJpL3BvcnQtc2Nhbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNjZmU3OTMyNmQxZDU1
MDMzMDY4YmU4MzgyYTEzYzZhNGQ0ZjYxNjkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3BvcnQtc2Nhbi5odG1sCkBAIC0wLDAg
KzEsODQgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIv
anMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGVzdHMgdGhhdCBXZWJTb2NrZXQgY2xvc2UgcmVwb3J0
IGlzIGRlbGF5ZWQgdG8gbWl0aWdhdGUgcG9ydCBzY2FubmluZyBhdHRhY2tzLiIpOworCitqc1Rl
c3RJc0FzeW5jID0gdHJ1ZTsKKwordmFyIGNvdW50UmVjZWl2ZWRNZXNzYWdlID0gMDsKKworYXN5
bmMgZnVuY3Rpb24gc2Nhbl9wb3J0cygpCit7CisgICAgLy8gT3BlbiBwb3J0LgorICAgIHZhciBy
ZXN1bHQxID0gYXdhaXQgc2Nhbl9wb3J0KDgwODApOworCisgICAgLy8gQ2xvc2VkIHBvcnQuCisg
ICAgdmFyIHJlc3VsdDIgPSBhd2FpdCBzY2FuX3BvcnQoMTIzNCk7CisgICAgaWYgKHJlc3VsdDIg
PT0gInRlc3RQYXNzZWQiICYmIHJlc3VsdDEgPT0gInRlc3RQYXNzZWQiKSB7CisgICAgICAgIHRl
c3RQYXNzZWQoIlN1Y2Nlc3NmdWxseSBkZWxheWVkIHJlcG9ydGluZyBvZiBjbG9zZWQgV2ViU29j
a2V0IGNvbm5lY3Rpb24iKQorICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICB9IGVsc2Ugewor
ICAgICAgICB0ZXN0RmFpbGVkKCJGYWlsZWQgdG8gZGVsYXkgY2xvc2VkIFdlYlNvY2tldCBjb25u
ZWN0aW9uIik7CisgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgIH0KK30KKworLy8gVGVzdCBi
YXNlZCBvZmYgb2YgQmVFRiBwb3J0IHNjYW5uaW5nIGF0dGFjayB0ZWNobmlxdWUgKGh0dHBzOi8v
Z2l0aHViLmNvbS9iZWVmcHJvamVjdC9iZWVmL2Jsb2IvbWFzdGVyL21vZHVsZXMvbmV0d29yay9w
b3J0X3NjYW5uZXIvY29tbWFuZC5qcykKK2Z1bmN0aW9uIHNjYW5fcG9ydChwb3J0KQoreworICAg
IHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHsKKyAgICAgICAg
dmFyIHVybCA9ICJ3czovL2xvY2FsaG9zdDoiICsgcG9ydDsKKyAgICAgICAgdmFyIHdzID0gbmV3
IFdlYlNvY2tldCh1cmwpOworICAgICAgICB2YXIgc3RhcnRUaW1lID0gKG5ldyBEYXRlKS5nZXRU
aW1lKCk7CisgICAgICAgIHZhciB0aW1lb3V0ID0gMzAwMDsKKworICAgICAgICBjbGVhckludGVy
dmFsSUQgPSBzZXRJbnRlcnZhbCgKKyAgICAgICAgZnVuY3Rpb24gKCkKKyAgICAgICAgeworICAg
ICAgICAgICAgdmFyIGludGVydmFsID0gKG5ldyBEYXRlKS5nZXRUaW1lKCkgLSBzdGFydFRpbWU7
CisKKyAgICAgICAgICAgIGlmICh3cy5yZWFkeVN0YXRlID09PSBXZWJTb2NrZXQuQ09OTkVDVElO
RykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKHdzLnJl
YWR5U3RhdGUgPT09IFdlYlNvY2tldC5PUEVOKQorICAgICAgICAgICAgeworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICBpZiAod3MucmVhZHlTdGF0ZSA9PT0gV2ViU29ja2V0LkNMT1NJTkcp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICh3cy5yZWFk
eVN0YXRlID09PSBXZWJTb2NrZXQuQ0xPU0VEKQorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIGNsZWFySW50ZXJ2YWwoY2xlYXJJbnRlcnZhbElEKTsKKyAgICAgICAgICAgICAgICB3cy5j
bG9zZSgpOworICAgICAgICAgICAgICAgIGNvdW50UmVjZWl2ZWRNZXNzYWdlKys7CisgICAgICAg
ICAgICAgICAgaWYgKGludGVydmFsIDwgMTAwKSB7CisgICAgICAgICAgICAgICAgICAgIGRlYnVn
KCJUaW1lciBmYWlsZWQgdG8gZGVsYXkgcmVwb3J0IG9mIGNsb3NlZCBzdGF0ZSIpOworICAgICAg
ICAgICAgICAgICAgICByZXNvbHZlKCJ0ZXN0RmFpbGVkIik7CisgICAgICAgICAgICAgICAgfSBl
bHNlCisgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoInRlc3RQYXNzZWQiKTsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgaWYgKGludGVydmFsID49IHRpbWVvdXQpCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjbGVhckludGVydmFsSUQpOworICAg
ICAgICAgICAgICAgIGRlYnVnKCJDb25uZWN0aW9uIHRpbWVvdXQiKTsKKyAgICAgICAgICAgICAg
ICB3cy5jbG9zZSgpOworICAgICAgICAgICAgICAgIHJlc29sdmUoInRlc3RGYWlsZWQiKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAsIDEpOworICAgIH0pOworfQorCitzY2Fu
X3BvcnRzKCk7CisKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS93b3JrZXJzL3Jlc291cmNl
cy9jbG9zZS1jb2RlLWFuZC1yZWFzb24uanMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNv
Y2tldC90ZXN0cy9oeWJpL3dvcmtlcnMvcmVzb3VyY2VzL2Nsb3NlLWNvZGUtYW5kLXJlYXNvbi5q
cwppbmRleCA2ZTg5N2M5MzIzNzFhMDg2YWFlYTBiZDY3ODRjNWMzODg5YWYzYjA4Li4xOTQ1Zjc5
Yzg3N2FlNTcwMWFjYjA1YjYxOTljZDNjYTJkMGVlZTliIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3dvcmtlcnMvcmVzb3VyY2VzL2Nsb3Nl
LWNvZGUtYW5kLXJlYXNvbi5qcworKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tl
dC90ZXN0cy9oeWJpL3dvcmtlcnMvcmVzb3VyY2VzL2Nsb3NlLWNvZGUtYW5kLXJlYXNvbi5qcwpA
QCAtMTMsMjIgKzEzLDI5IEBAIGZ1bmN0aW9uIHBvc3RSZXN1bHQocmVzdWx0LCBhY3R1YWwsIGV4
cGVjdGVkKQogICAgIHBvc3RNZXNzYWdlKG1lc3NhZ2UpOwogfQogCi12YXIgd3MgPSBuZXcgV2Vi
U29ja2V0KCJ3czovLzEyNy4wLjAuMTo4ODgwL3dlYnNvY2tldC90ZXN0cy9oeWJpL2VjaG8iKTsK
LQotd3Mub25vcGVuID0gZnVuY3Rpb24oZXZlbnQpCitmdW5jdGlvbiBmaXJzdFdlYlNvY2tldEZp
bmlzaCgpCiB7Ci0gICAgdGVzdEZhaWxlZCgiRkFJTDogd3Mub25vcGVuKCkgd2FzIGNhbGxlZC4g
KG1lc3NhZ2UgPSBcIiIgKyBldmVudC5kYXRhICsgIlwiKSIpOwotfTsKKyAgICByZXR1cm4gbmV3
IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7CisgICAgICAgIHZhciB3cyA9IG5l
dyBXZWJTb2NrZXQoIndzOi8vMTI3LjAuMC4xOjg4ODAvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZWNo
byIpOwogCi13cy5vbmNsb3NlID0gZnVuY3Rpb24oZXZlbnQpCi17Ci0gICAgcG9zdE1lc3NhZ2Uo
IndzLm9uY2xvc2UoKSB3YXMgY2FsbGVkLiIpOwotICAgIHBvc3RSZXN1bHQoIWV2ZW50Lndhc0Ns
ZWFuLCAiZXZlbnQud2FzQ2xlYW4iLCAiZmFsc2UiKTsKLSAgICBwb3N0UmVzdWx0KGV2ZW50LmNv
ZGUgPT0gY29kZUFibm9ybWFsQ2xvc3VyZSwgImV2ZW50LmNvZGUiLCAiY29kZUFibm9ybWFsQ2xv
c3VyZSIpOwotICAgIHBvc3RSZXN1bHQoZXZlbnQucmVhc29uID09IGVtcHR5U3RyaW5nLCAiZXZl
bnQucmVhc29uIiwgImVtcHR5U3RyaW5nIik7Ci19OworICAgICAgICB3cy5vbm9wZW4gPSBmdW5j
dGlvbihldmVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdGVzdEZhaWxlZCgiRkFJTDogd3Mu
b25vcGVuKCkgd2FzIGNhbGxlZC4gKG1lc3NhZ2UgPSBcIiIgKyBldmVudC5kYXRhICsgIlwiKSIp
OworICAgICAgICB9OwogCi13cy5jbG9zZSgpOworICAgICAgICB3cy5vbmNsb3NlID0gZnVuY3Rp
b24oZXZlbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHBvc3RNZXNzYWdlKCJ3cy5vbmNsb3Nl
KCkgd2FzIGNhbGxlZC4iKTsKKyAgICAgICAgICAgIHBvc3RSZXN1bHQoIWV2ZW50Lndhc0NsZWFu
LCAiZXZlbnQud2FzQ2xlYW4iLCAiZmFsc2UiKTsKKyAgICAgICAgICAgIHBvc3RSZXN1bHQoZXZl
bnQuY29kZSA9PSBjb2RlQWJub3JtYWxDbG9zdXJlLCAiZXZlbnQuY29kZSIsICJjb2RlQWJub3Jt
YWxDbG9zdXJlIik7CisgICAgICAgICAgICBwb3N0UmVzdWx0KGV2ZW50LnJlYXNvbiA9PSBlbXB0
eVN0cmluZywgImV2ZW50LnJlYXNvbiIsICJlbXB0eVN0cmluZyIpOworICAgICAgICAgICAgCisg
ICAgICAgICAgICByZXNvbHZlKCJ0ZXN0UGFzc2VkIik7CisgICAgICAgIH07CisgICAgICAgIAor
ICAgICAgICB3cy5jbG9zZSgpOworICAgIH0pOworfQogCiB2YXIgdGVzdElkID0gMDsKIHZhciB0
ZXN0TnVtID0gNzsKQEAgLTEwNiw0ICsxMTMsMTAgQEAgV2ViU29ja2V0VGVzdC5wcm90b3R5cGUu
b25jbG9zZSA9IGZ1bmN0aW9uKGV2ZW50KQogICAgICAgICBwb3N0TWVzc2FnZSgiRE9ORSIpCiB9
OwogCi12YXIgdGVzdCA9IG5ldyBXZWJTb2NrZXRUZXN0KCk7Cithc3luYyBmdW5jdGlvbiBzdGFy
dF90ZXN0KCkKK3sKKyAgICBhd2FpdCBmaXJzdFdlYlNvY2tldEZpbmlzaCgpOworICAgIHZhciB0
ZXN0ID0gbmV3IFdlYlNvY2tldFRlc3QoKTsKK30KKworc3RhcnRfdGVzdCgpOwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJzb2NrZXRz
L2ludGVyZmFjZXMvV2ViU29ja2V0L2Nsb3NlL2Nsb3NlLW5lc3RlZC1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnNvY2tldHMvaW50
ZXJmYWNlcy9XZWJTb2NrZXQvY2xvc2UvY2xvc2UtbmVzdGVkLWV4cGVjdGVkLnR4dAppbmRleCAw
Njk5ZWQwZTUyMjJkM2JlY2I5NGYxYjAxZDViMDY0Mzg3MzVlZTMwLi45MWQ3OGFjNGY5OTRkOTlh
MzZlYjQ0OWUxZWZkN2Q2MTM0YTAwODI3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnNvY2tldHMvaW50ZXJmYWNlcy9XZWJTb2NrZXQv
Y2xvc2UvY2xvc2UtbmVzdGVkLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnNvY2tldHMvaW50ZXJmYWNlcy9XZWJTb2NrZXQv
Y2xvc2UvY2xvc2UtbmVzdGVkLWV4cGVjdGVkLnR4dApAQCAtMSwzICsxLDMgQEAKIAotRkFJTCBX
ZWJTb2NrZXRzOiBjbG9zZSgpIGluIGNsb3NlIGV2ZW50IGhhbmRsZXIgYXNzZXJ0X2VxdWFsczog
ZXhwZWN0ZWQgMiBidXQgZ290IDMKK1BBU1MgV2ViU29ja2V0czogY2xvc2UoKSBpbiBjbG9zZSBl
dmVudCBoYW5kbGVyIAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dlYnNvY2tldHMvaW50ZXJmYWNlcy9XZWJTb2NrZXQvcmVhZHlTdGF0
ZS8wMDMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy93ZWJzb2NrZXRzL2ludGVyZmFjZXMvV2ViU29ja2V0L3JlYWR5U3RhdGUvMDAzLWV4
cGVjdGVkLnR4dAppbmRleCA0YWNmNjY5MDEwZjViNWU2YmYyZjQyYzUxM2EyN2ExN2NjYTAyMTEw
Li43OTQ3N2JkMTM2ZDc3ZmUxM2JlMmUyYmQ4NjkyYzg5Y2IwYjY4MmVkIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnNvY2tldHMvaW50
ZXJmYWNlcy9XZWJTb2NrZXQvcmVhZHlTdGF0ZS8wMDMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2Vic29ja2V0cy9pbnRlcmZh
Y2VzL1dlYlNvY2tldC9yZWFkeVN0YXRlLzAwMy1leHBlY3RlZC50eHQKQEAgLTEsMyArMSwzIEBA
CiAKLUZBSUwgV2ViU29ja2V0czogZGVsZXRlIHJlYWR5U3RhdGUgYXNzZXJ0X2VxdWFsczogZGVs
ZXRlIHdzLnJlYWR5U3RhdGUgZXhwZWN0ZWQgMiBidXQgZ290IDMKK1BBU1MgV2ViU29ja2V0czog
ZGVsZXRlIHJlYWR5U3RhdGUgCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403725</attachid>
            <date>2020-07-07 14:16:21 -0700</date>
            <delta_ts>2020-07-08 17:42:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213143-20200707141620.patch</filename>
            <type>text/plain</type>
            <size>20256</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYzOTY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWY3NDYyZTRlNmM5OTYx
YTRjMmI2Y2RhNjhmZGNkNDA3M2ZjOGY5Zi4uNGQyNWVmNzI1NmMyY2E3ZTA5NzlmZjAyYzFlMzE0
N2M4ZjAzNjQ5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDIwLTA3LTA3ICBLYXRl
IENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBhcnRp
ZmljaWFsIGRlbGF5IHRvIFdlYlNvY2tldCBjb25uZWN0aW9ucyB0byBtaXRpZ2F0ZSBwb3J0IHNj
YW5uaW5nIGF0dGFja3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIxMzE0MworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjQzMDg5Mjc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGZsb29yIG9mIDEw
MG1zIHdoZW4gcmVwb3J0aW5nIFdlYlNvY2tldCBjbG9zZSBzdGF0ZS4gVGhlIGRlbGF5IGlzCisg
ICAgICAgIGNhbGN1bGF0ZWQgYnkgc3VidHJhY3RpbmcgdGhlIHRpbWUgc2luY2UgY29ubmVjdGlv
biBmcm9tIDEwMG1zLgorCisgICAgICAgIFRlc3Q6IGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3Rz
L2h5YmkvcG9ydC1zY2FuLmh0bWwKKworICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJT
b2NrZXRDaGFubmVsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6Oldl
YlNvY2tldENoYW5uZWwpOgorICAgICAgICBUd28gdGltZXJzIGFyZSBuZWVkZWQuIE9uZSBmb3Ig
cmVwb3J0aW5nIGFuIGVycm9yIHRoZW4gY2xvc2luZyB0aGUKKyAgICAgICAgY29ubmVjdGlvbiwg
YW5kIG9uZSBmb3IgY2xvc2luZyB0aGUgY29ubmVjdGlvbiB3aGVuIHRoZXJlIGlzIGEgcGVuZGlu
ZworICAgICAgICBlcnJvciBhbmQgd2Ugd2FudCB0byBtYWtlIHN1cmUgdGhlIGNsb3NlIGRvZXMg
bm90IG9jY3VyIGJlZm9yZSB0aGUKKyAgICAgICAgZXJyb3IgaXMgcmVwb3J0ZWQuCisKKyAgICAg
ICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OmNvbm5lY3QpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViU29ja2V0Q2hhbm5lbDo6ZGVsYXlUaW1lKToKKyAgICAgICAgQ2FsY3VsYXRlIHRoZSBk
ZWxheSB0aW1lIHNvIHRoZSB0b3RhbCB0aW1lIHNpbmNlIGNvbm5lY3Rpb24gaXMgYXQKKyAgICAg
ICAgbGVhc3QgMTAwbXMuCisKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OnJl
cG9ydEVycm9yQW5kRGlzY29ubmVjdCk6CisgICAgICAgIFRpbWVyIGZ1bmN0aW9uIHRvIGRlbGF5
IHRoZSBlcnJvciByZXBvcnQgYW5kIGNsb3NlLgorCisgICAgICAgIChXZWJDb3JlOjpXZWJTb2Nr
ZXRDaGFubmVsOjpmYWlsKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OnNl
bmREaWRDbG9zZU1lc3NhZ2VUb0NsaWVudCk6CisgICAgICAgIFRpbWVyIGZ1bmN0aW9uIHRvIGRl
bGF5IHRoZSBsb2dpYyBmcm9tIGRpZENsb3NlU29ja2V0U3RyZWFtKCkgdG8gYXZvaWQKKyAgICAg
ICAgY2xvc2luZyBiZWZvcmUgYW4gZXJyb3IgaGFzIGJlZW4gcmVwb3J0ZWQuCisKKyAgICAgICAg
KFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OmRpZENsb3NlU29ja2V0U3RyZWFtKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OmRpZEZhaWxTb2NrZXRTdHJlYW0pOgorICAg
ICAgICBJZiBtX2hhbmRsZSBpcyBub3QgbnVsbCwgdGhpcyBtZWFucyBtX2hhbmRsZSA9PSBoYW5k
bGUsIHNvIHdlIGNhbgorICAgICAgICB1c2UgdGhlIHRpbWVyIGZ1bmN0aW9uLiBPdGhlcndpc2Us
IGNsb3NlIHdpdGhvdXQgYSBkZWxheSBzaW5jZSBoYW5kbGUKKyAgICAgICAgY2Fubm90IGJlIHVz
ZWQgaW4gYSB0aW1lci4KKworICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRD
aGFubmVsLmg6CisKIDIwMjAtMDctMDYgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29t
PgogCiAgICAgICAgIFVzZSBSZW5kZXJPYmplY3Q6OnBvc2l0aW9uRm9yUG9pbnQgaW5zdGVhZCBv
ZiBoaXQgdGVzdGluZyB0aGUgZW50aXJlIHZpZXcgaW4gY2xvc2VzdEVkaXRhYmxlUG9zaXRpb25J
bkVsZW1lbnRGb3JBYnNvbHV0ZVBvaW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAKaW5kZXggOTY2Yjg2MmU5NTNkZDIw
ZGYyNDY3M2QzZmVhMWUyYWUyN2RmMDVmNS4uN2VlZDc0ZWRkNjk0ZDRkM2VhZjFiYmU5YTMwZWI4
YTcwZDM0ZjMzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRz
L1dlYlNvY2tldENoYW5uZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29j
a2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcApAQCAtNjksNiArNjksOCBAQCBXZWJTb2NrZXRDaGFu
bmVsOjpXZWJTb2NrZXRDaGFubmVsKERvY3VtZW50JiBkb2N1bWVudCwgV2ViU29ja2V0Q2hhbm5l
bENsaWVudCYgYwogICAgICwgbV9yZXN1bWVUaW1lcigqdGhpcywgJldlYlNvY2tldENoYW5uZWw6
OnJlc3VtZVRpbWVyRmlyZWQpCiAgICAgLCBtX2Nsb3NpbmdUaW1lcigqdGhpcywgJldlYlNvY2tl
dENoYW5uZWw6OmNsb3NpbmdUaW1lckZpcmVkKQogICAgICwgbV9zb2NrZXRQcm92aWRlcihwcm92
aWRlcikKKyAgICAsIG1fZXJyb3JEZWxheVRpbWVyKCp0aGlzLCAmV2ViU29ja2V0Q2hhbm5lbDo6
cmVwb3J0RXJyb3JBbmREaXNjb25uZWN0KQorICAgICwgbV9jbG9zZURlbGF5VGltZXIoKnRoaXMs
ICZXZWJTb2NrZXRDaGFubmVsOjpzZW5kRGlkQ2xvc2VNZXNzYWdlVG9DbGllbnQpCiB7CiAgICAg
aWYgKFBhZ2UqIHBhZ2UgPSBkb2N1bWVudC5wYWdlKCkpCiAgICAgICAgIG1faWRlbnRpZmllciA9
IHBhZ2UtPnByb2dyZXNzKCkuY3JlYXRlVW5pcXVlSWRlbnRpZmllcigpOwpAQCAtODQsNiArODYs
NyBAQCBXZWJTb2NrZXRDaGFubmVsOjp+V2ViU29ja2V0Q2hhbm5lbCgpCiBXZWJTb2NrZXRDaGFu
bmVsOjpDb25uZWN0U3RhdHVzIFdlYlNvY2tldENoYW5uZWw6OmNvbm5lY3QoY29uc3QgVVJMJiBy
ZXF1ZXN0ZWRVUkwsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpCiB7CiAgICAgTE9HKE5ldHdvcmss
ICJXZWJTb2NrZXRDaGFubmVsICVwIGNvbm5lY3QoKSIsIHRoaXMpOworICAgIG1fY29ubmVjdGlv
blN0YXJ0VGltZSA9IFdhbGxUaW1lOjpub3coKTsKIAogICAgIGF1dG8gdmFsaWRhdGVkVVJMID0g
dmFsaWRhdGVVUkwoKm1fZG9jdW1lbnQsIHJlcXVlc3RlZFVSTCk7CiAgICAgaWYgKCF2YWxpZGF0
ZWRVUkwpCkBAIC0yMDEsNiArMjA0LDI1IEBAIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6Y2xvc2Uo
aW50IGNvZGUsIGNvbnN0IFN0cmluZyYgcmVhc29uKQogICAgICAgICBtX2Nsb3NpbmdUaW1lci5z
dGFydE9uZVNob3QoVENQTWF4aW11bVNlZ21lbnRMaWZldGltZSAqIDIpOwogfQogCitTZWNvbmRz
IFdlYlNvY2tldENoYW5uZWw6OmRlbGF5VGltZSgpCit7CisgICAgYXV0byB0aW1lU2luY2VDb25u
ZWN0aW9uID0gV2FsbFRpbWU6Om5vdygpIC0gbV9jb25uZWN0aW9uU3RhcnRUaW1lOworICAgIGlm
ICh0aW1lU2luY2VDb25uZWN0aW9uLm1pbGxpc2Vjb25kcygpIDwgMTAwKQorICAgICAgICByZXR1
cm4gU2Vjb25kczo6ZnJvbU1pbGxpc2Vjb25kcygxMDApIC0gdGltZVNpbmNlQ29ubmVjdGlvbjsK
KyAgICAKKyAgICByZXR1cm4gU2Vjb25kcygwKTsKK30KKwordm9pZCBXZWJTb2NrZXRDaGFubmVs
OjpyZXBvcnRFcnJvckFuZERpc2Nvbm5lY3QoKQoreworICAgIG1faGFzUGVuZGluZ0Vycm9yID0g
ZmFsc2U7CisgICAgaWYgKG1fY2xpZW50KQorICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZU1l
c3NhZ2VFcnJvcigpOworCisgICAgaWYgKG1faGFuZGxlICYmICFtX2Nsb3NlZCkKKyAgICAgICAg
bV9oYW5kbGUtPmRpc2Nvbm5lY3QoKTsgLy8gV2lsbCBjYWxsIGRpZENsb3NlU29ja2V0U3RyZWFt
KCkgYnV0IG1heWJlIG5vdCBzeW5jaHJvbm91c2x5LgorfQorCiB2b2lkIFdlYlNvY2tldENoYW5u
ZWw6OmZhaWwoY29uc3QgU3RyaW5nJiByZWFzb24pCiB7CiAgICAgUkVMRUFTRV9MT0coTmV0d29y
aywgIldlYlNvY2tldENoYW5uZWwgJXAgZmFpbCgpIHJlYXNvbj0nJXMnIiwgdGhpcywgcmVhc29u
LnV0ZjgoKS5kYXRhKCkpOwpAQCAtMjI2LDExICsyNDgsOSBAQCB2b2lkIFdlYlNvY2tldENoYW5u
ZWw6OmZhaWwoY29uc3QgU3RyaW5nJiByZWFzb24pCiAgICAgbV9kZWZsYXRlRnJhbWVyLmRpZEZh
aWwoKTsKICAgICBtX2hhc0NvbnRpbnVvdXNGcmFtZSA9IGZhbHNlOwogICAgIG1fY29udGludW91
c0ZyYW1lRGF0YS5jbGVhcigpOwotICAgIGlmIChtX2NsaWVudCkKLSAgICAgICAgbV9jbGllbnQt
PmRpZFJlY2VpdmVNZXNzYWdlRXJyb3IoKTsKIAotICAgIGlmIChtX2hhbmRsZSAmJiAhbV9jbG9z
ZWQpCi0gICAgICAgIG1faGFuZGxlLT5kaXNjb25uZWN0KCk7IC8vIFdpbGwgY2FsbCBkaWRDbG9z
ZVNvY2tldFN0cmVhbSgpIGJ1dCBtYXliZSBub3Qgc3luY2hyb25vdXNseS4KKyAgICBtX2hhc1Bl
bmRpbmdFcnJvciA9IHRydWU7CisgICAgbV9lcnJvckRlbGF5VGltZXIuc3RhcnRPbmVTaG90KGRl
bGF5VGltZSgpKTsKIH0KIAogdm9pZCBXZWJTb2NrZXRDaGFubmVsOjpkaXNjb25uZWN0KCkKQEAg
LTI4MywxMiArMzAzLDExIEBAIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6ZGlkT3BlblNvY2tldFN0
cmVhbShTb2NrZXRTdHJlYW1IYW5kbGUmIGhhbmRsZSkKICAgICB9KTsKIH0KIAotdm9pZCBXZWJT
b2NrZXRDaGFubmVsOjpkaWRDbG9zZVNvY2tldFN0cmVhbShTb2NrZXRTdHJlYW1IYW5kbGUmIGhh
bmRsZSkKK3ZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6c2VuZERpZENsb3NlTWVzc2FnZVRvQ2xpZW50
KCkKIHsKLSAgICBMT0coTmV0d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAgZGlkQ2xvc2VTb2Nr
ZXRTdHJlYW0oKSIsIHRoaXMpOwogICAgIGlmIChtX2lkZW50aWZpZXIgJiYgbV9kb2N1bWVudCkK
ICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDbG9zZVdlYlNvY2tldChtX2Rv
Y3VtZW50LmdldCgpLCBtX2lkZW50aWZpZXIpOwotICAgIEFTU0VSVF9VTlVTRUQoaGFuZGxlLCAm
aGFuZGxlID09IG1faGFuZGxlIHx8ICFtX2hhbmRsZSk7CisKICAgICBtX2Nsb3NlZCA9IHRydWU7
CiAgICAgaWYgKG1fY2xvc2luZ1RpbWVyLmlzQWN0aXZlKCkpCiAgICAgICAgIG1fY2xvc2luZ1Rp
bWVyLnN0b3AoKTsKQEAgLTMwOCw2ICszMjcsMTggQEAgdm9pZCBXZWJTb2NrZXRDaGFubmVsOjpk
aWRDbG9zZVNvY2tldFN0cmVhbShTb2NrZXRTdHJlYW1IYW5kbGUmIGhhbmRsZSkKICAgICBkZXJl
ZigpOwogfQogCit2b2lkIFdlYlNvY2tldENoYW5uZWw6OmRpZENsb3NlU29ja2V0U3RyZWFtKFNv
Y2tldFN0cmVhbUhhbmRsZSYgaGFuZGxlKQoreworICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0
Q2hhbm5lbCAlcCBkaWRDbG9zZVNvY2tldFN0cmVhbSgpIiwgdGhpcyk7CisgICAgQVNTRVJUX1VO
VVNFRChoYW5kbGUsICZoYW5kbGUgPT0gbV9oYW5kbGUgfHwgIW1faGFuZGxlKTsKKworICAgIC8v
IERlbGF5IGNsb3NpbmcgaWYgYW4gZXJyb3IgbWVzc2FnZSBpcyBwZW5kaW5nIHRvIGVuc3VyZSB0
aGUgZXJyb3IgZ2V0cyByZXBvcnRlZCBmaXJzdC4KKyAgICBpZiAobV9oYXNQZW5kaW5nRXJyb3Ip
CisgICAgICAgIG1fY2xvc2VEZWxheVRpbWVyLnN0YXJ0T25lU2hvdChTZWNvbmRzOjpmcm9tTWls
bGlzZWNvbmRzKDEwMCkpOworICAgIGVsc2UKKyAgICAgICAgc2VuZERpZENsb3NlTWVzc2FnZVRv
Q2xpZW50KCk7Cit9CisKIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6ZGlkUmVjZWl2ZVNvY2tldFN0
cmVhbURhdGEoU29ja2V0U3RyZWFtSGFuZGxlJiBoYW5kbGUsIGNvbnN0IGNoYXIqIGRhdGEsIHNp
emVfdCBsZW5ndGgpCiB7CiAgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRDaGFubmVsICVwIGRp
ZFJlY2VpdmVTb2NrZXRTdHJlYW1EYXRhKCkgUmVjZWl2ZWQgJXp1IGJ5dGVzIiwgdGhpcywgbGVu
Z3RoKTsKQEAgLTM2Niw5ICszOTcsMTMgQEAgdm9pZCBXZWJTb2NrZXRDaGFubmVsOjpkaWRGYWls
U29ja2V0U3RyZWFtKFNvY2tldFN0cmVhbUhhbmRsZSYgaGFuZGxlLCBjb25zdCBTb2MKICAgICAg
ICAgTE9HX0VSUk9SKCIlcyIsIG1lc3NhZ2UudXRmOCgpLmRhdGEoKSk7CiAgICAgfQogICAgIG1f
c2hvdWxkRGlzY2FyZFJlY2VpdmVkRGF0YSA9IHRydWU7Ci0gICAgaWYgKG1fY2xpZW50KQotICAg
ICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZU1lc3NhZ2VFcnJvcigpOwotICAgIGhhbmRsZS5kaXNj
b25uZWN0KCk7CisgICAgaWYgKG1faGFuZGxlKQorICAgICAgICBtX2Vycm9yRGVsYXlUaW1lci5z
dGFydE9uZVNob3QoZGVsYXlUaW1lKCkpOworICAgIGVsc2UgeworICAgICAgICBpZiAobV9jbGll
bnQpCisgICAgICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZU1lc3NhZ2VFcnJvcigpOworICAg
ICAgICBoYW5kbGUuZGlzY29ubmVjdCgpOworICAgIH0KIH0KIAogdm9pZCBXZWJTb2NrZXRDaGFu
bmVsOjpkaWRTdGFydExvYWRpbmcoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmgKaW5kZXggZGM1Yjk5YzQyMGI5NTYzMjY0ZGUz
YzIzYTIxNDA1OTY1ZTcyYzc2NS4uODM4MjNjZTJmMmJkYmY4ZGM1MWIyZTdhMjdmNjI3ZTc1Yzhk
NzU4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNv
Y2tldENoYW5uZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2Vi
U29ja2V0Q2hhbm5lbC5oCkBAIC0xMjgsNiArMTI4LDEwIEBAIHB1YmxpYzoKICAgICBEb2N1bWVu
dCogZG9jdW1lbnQoKTsKICAgICAKIHByaXZhdGU6CisgICAgdm9pZCByZXBvcnRFcnJvckFuZERp
c2Nvbm5lY3QoKTsKKyAgICBTZWNvbmRzIGRlbGF5VGltZSgpOworICAgIHZvaWQgc2VuZERpZENs
b3NlTWVzc2FnZVRvQ2xpZW50KCk7CisKICAgICBXRUJDT1JFX0VYUE9SVCBXZWJTb2NrZXRDaGFu
bmVsKERvY3VtZW50JiwgV2ViU29ja2V0Q2hhbm5lbENsaWVudCYsIFNvY2tldFByb3ZpZGVyJik7
CiAKICAgICB2b2lkIHJlZlRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsKCkgb3ZlcnJpZGUgeyBy
ZWYoKTsgfQpAQCAtMjI5LDYgKzIzMywxMCBAQCBwcml2YXRlOgogCiAgICAgV2ViU29ja2V0RGVm
bGF0ZUZyYW1lciBtX2RlZmxhdGVGcmFtZXI7CiAgICAgUmVmPFNvY2tldFByb3ZpZGVyPiBtX3Nv
Y2tldFByb3ZpZGVyOworICAgIFRpbWVyIG1fZXJyb3JEZWxheVRpbWVyOworICAgIFRpbWVyIG1f
Y2xvc2VEZWxheVRpbWVyOworICAgIFdhbGxUaW1lIG1fY29ubmVjdGlvblN0YXJ0VGltZTsKKyAg
ICBib29sIG1faGFzUGVuZGluZ0Vycm9yIHsgZmFsc2UgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwppbmRleCBjMzNhNzMxMGRlYzgzZjA0YTliYzg0NTVjNjU0ZDg1MTk4YTg0NTUw
Li40YjAwM2EwNDMxNTIxN2ZiMmUzNTdhYWFlYWU4OWIyNDY3MjQ0YjdlIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjcgQEAKKzIwMjAtMDctMDcgIEthdGUgQ2hlbmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBs
ZS5jb20+CisKKyAgICAgICAgQWRkIGFydGlmaWNpYWwgZGVsYXkgdG8gV2ViU29ja2V0IGNvbm5l
Y3Rpb25zIHRvIG1pdGlnYXRlIHBvcnQgc2Nhbm5pbmcgYXR0YWNrcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEzMTQzCisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS82NDMwODkyNz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBVcGRhdGVkIGxheW91dCB0ZXN0cyB0byBhY2NvdW50IGZvciBkZWxheSBpbiB3
ZWJzb2NrZXQgY2xvc2luZy4KKworICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3Rz
L2h5YmkvY2xvc2UtY29kZS1hbmQtcmVhc29uLmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0cy93
ZWJzb2NrZXQvdGVzdHMvaHliaS93b3JrZXJzL3Jlc291cmNlcy9jbG9zZS1jb2RlLWFuZC1yZWFz
b24uanM6CisgICAgICAgIEFkZGVkIFByb21pc2VzIHRvIHRoZXNlIHRlc3RzIHRvIG1ha2Ugc3Vy
ZSB0aGUgd2Vic29ja2V0IGNsb3NlIGhhcworICAgICAgICBjb21wbGV0ZWQgYmVmb3JlIG1vdmlu
ZyBvbnRvIHRoZSBuZXh0IHBhcnQgb2YgdGhlIHRlc3QuIAorCisgICAgICAgICogaHR0cC90ZXN0
cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9jb250ZW50ZXh0ZW5zaW9ucy91cGdyYWRlLWV4cGVjdGVk
LnR4dDoKKyAgICAgICAgRXh0cmEgY29uc29sZSBtZXNzYWdlIHRoYXQgd2FzIHByb2JhYmx5IHBy
ZXZpb3VzbHkgbm90IGluY2x1ZGVkCisgICAgICAgIGJlY2F1c2Ugb2YgdGltaW5nLgorCisgICAg
ICAgICogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9wb3J0LXNjYW4tZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3Bv
cnQtc2Nhbi5odG1sOiBBZGRlZC4KKyAgICAgICAgVGVzdCB0aGF0IHRoZSBkZWxheSBmb3IgcmVw
b3J0aW5nIHdlYnNvY2tldCBjbG9zdXJlIGlzIG5vIGxlc3MKKyAgICAgICAgdGhhbiAxMDAgbXMu
CisKIDIwMjAtMDctMDYgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbV2luXSBVbnJldmlld2VkIG1vemlsbGEgdGVzdCBnYXJkZW5pbmcgYWZ0ZXIgcjI2Mzg1NS4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCmluZGV4IDFjNjMyNjBiYjU4MjY5ZjhkYzJiZDMw
MGM3MjdkNGMxYmJiMTAzNmYuLmEyOTkyODZkYzk0YzZiNGE3ODNiOTY2OTI4NDMyNWNiMDBmMWRm
YWYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIw
LTA3LTA3ICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAg
ICAgIEFkZCBhcnRpZmljaWFsIGRlbGF5IHRvIFdlYlNvY2tldCBjb25uZWN0aW9ucyB0byBtaXRp
Z2F0ZSBwb3J0IHNjYW5uaW5nIGF0dGFja3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIxMzE0MworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjQzMDg5
Mjc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm93
IHRoYXQgdGhlcmUgaXMgYSBkZWxheSBiZXR3ZWVuIGNhbGxpbmcgd3MuY2xvc2UgYW5kIGNoYW5n
aW5nIHRoZQorICAgICAgICBzdGF0ZSB0byBDTE9TRUQsIHdlIHNob3VsZCB1cGRhdGUgZXhwZWN0
YXRpb25zIHRvIGV4cGVjdCBzdGF0ZSB0byBiZQorICAgICAgICBDTE9TSU5HIGltbWVkaWF0ZWx5
IGFmdGVyIGNhbGxpbmcgd3MuY2xvc2UuCisKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMv
d2Vic29ja2V0cy9pbnRlcmZhY2VzL1dlYlNvY2tldC9jbG9zZS9jbG9zZS1uZXN0ZWQtZXhwZWN0
ZWQudHh0OgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93ZWJzb2NrZXRzL2ludGVyZmFj
ZXMvV2ViU29ja2V0L3JlYWR5U3RhdGUvMDAzLWV4cGVjdGVkLnR4dDoKKwogMjAyMC0wNy0wMyAg
WW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgTWVkaWFSZWNvcmRl
ciBzaG91bGQgc3VwcG9ydCBwZWVyIGNvbm5lY3Rpb24gcmVtb3RlIHZpZGVvIHRyYWNrcwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9jbG9z
ZS1jb2RlLWFuZC1yZWFzb24uaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0
L3Rlc3RzL2h5YmkvY2xvc2UtY29kZS1hbmQtcmVhc29uLmh0bWwKaW5kZXggNTRjZjYwZmZiOWJh
NzkyZTUyMGUyZGM3MDdlZTA5N2M1YTJhMDIxMi4uYjBjOGI0OTllY2YzOWJiMWFjNmFhNzNmZjJl
ZDUwYjUxYTFkNTg4MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2Nr
ZXQvdGVzdHMvaHliaS9jbG9zZS1jb2RlLWFuZC1yZWFzb24uaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2Nsb3NlLWNvZGUtYW5kLXJlYXNvbi5o
dG1sCkBAIC0xNywyMyArMTcsMzAgQEAgdmFyIGNvZGVOb1N0YXR1c1JjdmQgPSAxMDA1OwogdmFy
IGNvZGVBYm5vcm1hbENsb3N1cmUgPSAxMDA2OwogdmFyIGVtcHR5U3RyaW5nID0gIiI7CiAKLXZh
ciB3cyA9IG5ldyBXZWJTb2NrZXQoIndzOi8vMTI3LjAuMC4xOjg4ODAvd2Vic29ja2V0L3Rlc3Rz
L2h5YmkvZWNobyIpOwotCi13cy5vbm9wZW4gPSBmdW5jdGlvbihldmVudCkKK2Z1bmN0aW9uIGZp
cnN0V2ViU29ja2V0RmluaXNoKCkKIHsKLSAgICB0ZXN0RmFpbGVkKCJ3cy5vbm9wZW4oKSB3YXMg
Y2FsbGVkLiAobWVzc2FnZSA9IFwiIiArIGV2ZW50LmRhdGEgKyAiXCIpIik7Ci19OworICAgIHJl
dHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHsKKyAgICAgICAgdmFy
IHdzID0gbmV3IFdlYlNvY2tldCgid3M6Ly8xMjcuMC4wLjE6ODg4MC93ZWJzb2NrZXQvdGVzdHMv
aHliaS9lY2hvIik7CiAKLXdzLm9uY2xvc2UgPSBmdW5jdGlvbihldmVudCkKLXsKLSAgICBkZWJ1
Zygid3Mub25jbG9zZSgpIHdhcyBjYWxsZWQuIik7Ci0gICAgY2xvc2VFdmVudCA9IGV2ZW50Owot
ICAgIHNob3VsZEJlRmFsc2UoImNsb3NlRXZlbnQud2FzQ2xlYW4iKTsKLSAgICBzaG91bGRCZSgi
Y2xvc2VFdmVudC5jb2RlIiwgImNvZGVBYm5vcm1hbENsb3N1cmUiKTsKLSAgICBzaG91bGRCZSgi
Y2xvc2VFdmVudC5yZWFzb24iLCAiZW1wdHlTdHJpbmciKTsKLX07CisgICAgICAgIHdzLm9ub3Bl
biA9IGZ1bmN0aW9uKGV2ZW50KQorICAgICAgICB7CisgICAgICAgICAgICB0ZXN0RmFpbGVkKCJ3
cy5vbm9wZW4oKSB3YXMgY2FsbGVkLiAobWVzc2FnZSA9IFwiIiArIGV2ZW50LmRhdGEgKyAiXCIp
Iik7CisgICAgICAgIH07CiAKLXdzLmNsb3NlKCk7CisgICAgICAgIHdzLm9uY2xvc2UgPSBmdW5j
dGlvbihldmVudCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIndzLm9uY2xvc2UoKSB3
YXMgY2FsbGVkLiIpOworICAgICAgICAgICAgY2xvc2VFdmVudCA9IGV2ZW50OworICAgICAgICAg
ICAgc2hvdWxkQmVGYWxzZSgiY2xvc2VFdmVudC53YXNDbGVhbiIpOworICAgICAgICAgICAgc2hv
dWxkQmUoImNsb3NlRXZlbnQuY29kZSIsICJjb2RlQWJub3JtYWxDbG9zdXJlIik7CisgICAgICAg
ICAgICBzaG91bGRCZSgiY2xvc2VFdmVudC5yZWFzb24iLCAiZW1wdHlTdHJpbmciKTsKKworICAg
ICAgICAgICAgcmVzb2x2ZSgidGVzdFBhc3NlZCIpOworICAgICAgICB9OworCisgICAgICAgIHdz
LmNsb3NlKCk7CisgICAgfSk7Cit9CiAKIHZhciB0ZXN0SWQgPSAwOwogdmFyIHRlc3ROdW0gPSA3
OwpAQCAtMTEyLDcgKzExOSwxMyBAQCBXZWJTb2NrZXRUZXN0LnByb3RvdHlwZS5vbmNsb3NlID0g
ZnVuY3Rpb24oZXZlbnQpCiAgICAgICAgIGZpbmlzaEpTVGVzdCgpOwogfTsKIAotdmFyIHRlc3Qg
PSBuZXcgV2ViU29ja2V0VGVzdCgpOworYXN5bmMgZnVuY3Rpb24gc3RhcnRfdGVzdCgpCit7Cisg
ICAgYXdhaXQgZmlyc3RXZWJTb2NrZXRGaW5pc2goKTsKKyAgICB2YXIgdGVzdCA9IG5ldyBXZWJT
b2NrZXRUZXN0KCk7Cit9CisKK3N0YXJ0X3Rlc3QoKTsKIAogPC9zY3JpcHQ+CiA8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vLi4vanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Njcmlw
dD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5
YmkvY29udGVudGV4dGVuc2lvbnMvdXBncmFkZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2NvbnRlbnRleHRlbnNpb25zL3VwZ3JhZGUt
ZXhwZWN0ZWQudHh0CmluZGV4IGU0ZThlMTNmZTU3ZWEwM2I2ODE3OTc5NmYzMDc4ZTc4YmUzNzhk
YzIuLjVkM2VjOWUxNTZmMmJhNWNhNzEyMTlhODlkNDhmNzI2N2ZkYTg4NzAgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvY29udGVudGV4dGVu
c2lvbnMvdXBncmFkZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93
ZWJzb2NrZXQvdGVzdHMvaHliaS9jb250ZW50ZXh0ZW5zaW9ucy91cGdyYWRlLWV4cGVjdGVkLnR4
dApAQCAtMSw1ICsxLDYgQEAKIENPTlNPTEUgTUVTU0FHRTogQ29udGVudCBibG9ja2VyIHByb21v
dGVkIFVSTCBmcm9tIHdzOi8vMTI3LjAuMC4xL3dlYnNvY2tldC90ZXN0cy9oeWJpL3NpbXBsZSB0
byB3c3MKIENPTlNPTEUgTUVTU0FHRTogV2ViU29ja2V0IG5ldHdvcmsgZXJyb3I6IFRoZSBvcGVy
YXRpb24gY291bGRu4oCZdCBiZSBjb21wbGV0ZWQuIENvbm5lY3Rpb24gcmVmdXNlZAorQ09OU09M
RSBNRVNTQUdFOiBXZWJTb2NrZXQgbmV0d29yayBlcnJvcjogVGhlIG9wZXJhdGlvbiBjb3VsZG7i
gJl0IGJlIGNvbXBsZXRlZC4gQ29ubmVjdGlvbiByZWZ1c2VkCiBDT05TT0xFIE1FU1NBR0U6IG9u
ZXJyb3IKIENPTlNPTEUgTUVTU0FHRTogbmV3IHVybDogd3NzOi8vMTI3LjAuMC4xL3dlYnNvY2tl
dC90ZXN0cy9oeWJpL3NpbXBsZQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3dlYnNvY2tldC90ZXN0cy9oeWJpL3BvcnQtc2Nhbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3BvcnQtc2Nhbi1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZjEyOTI4NmI2YzNkZWFhMzk4MDBjMDIwODYzODkzYjEwZWFmNjRiNAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5
YmkvcG9ydC1zY2FuLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEzIEBACitDT05TT0xFIE1FU1NB
R0U6IFdlYlNvY2tldCBjb25uZWN0aW9uIHRvICd3czovL2xvY2FsaG9zdDo4MDgwLycgZmFpbGVk
OiBVbmV4cGVjdGVkIHJlc3BvbnNlIGNvZGU6IDIwMAorQ09OU09MRSBNRVNTQUdFOiBXZWJTb2Nr
ZXQgbmV0d29yayBlcnJvcjogVGhlIG9wZXJhdGlvbiBjb3VsZG7igJl0IGJlIGNvbXBsZXRlZC4g
Q29ubmVjdGlvbiByZWZ1c2VkCitDT05TT0xFIE1FU1NBR0U6IFdlYlNvY2tldCBuZXR3b3JrIGVy
cm9yOiBUaGUgb3BlcmF0aW9uIGNvdWxkbuKAmXQgYmUgY29tcGxldGVkLiBDb25uZWN0aW9uIHJl
ZnVzZWQKK1Rlc3RzIHRoYXQgV2ViU29ja2V0IGNsb3NlIHJlcG9ydCBpcyBkZWxheWVkIHRvIG1p
dGlnYXRlIHBvcnQgc2Nhbm5pbmcgYXR0YWNrcy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2Vl
IGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUi
LgorCisKK1BBU1MgU3VjY2Vzc2Z1bGx5IGRlbGF5ZWQgcmVwb3J0aW5nIG9mIGNsb3NlZCBXZWJT
b2NrZXQgY29ubmVjdGlvbgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNU
IENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0
L3Rlc3RzL2h5YmkvcG9ydC1zY2FuLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNv
Y2tldC90ZXN0cy9oeWJpL3BvcnQtc2Nhbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNjZmU3OTMyNmQxZDU1
MDMzMDY4YmU4MzgyYTEzYzZhNGQ0ZjYxNjkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3BvcnQtc2Nhbi5odG1sCkBAIC0wLDAg
KzEsODQgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIv
anMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGVzdHMgdGhhdCBXZWJTb2NrZXQgY2xvc2UgcmVwb3J0
IGlzIGRlbGF5ZWQgdG8gbWl0aWdhdGUgcG9ydCBzY2FubmluZyBhdHRhY2tzLiIpOworCitqc1Rl
c3RJc0FzeW5jID0gdHJ1ZTsKKwordmFyIGNvdW50UmVjZWl2ZWRNZXNzYWdlID0gMDsKKworYXN5
bmMgZnVuY3Rpb24gc2Nhbl9wb3J0cygpCit7CisgICAgLy8gT3BlbiBwb3J0LgorICAgIHZhciBy
ZXN1bHQxID0gYXdhaXQgc2Nhbl9wb3J0KDgwODApOworCisgICAgLy8gQ2xvc2VkIHBvcnQuCisg
ICAgdmFyIHJlc3VsdDIgPSBhd2FpdCBzY2FuX3BvcnQoMTIzNCk7CisgICAgaWYgKHJlc3VsdDIg
PT0gInRlc3RQYXNzZWQiICYmIHJlc3VsdDEgPT0gInRlc3RQYXNzZWQiKSB7CisgICAgICAgIHRl
c3RQYXNzZWQoIlN1Y2Nlc3NmdWxseSBkZWxheWVkIHJlcG9ydGluZyBvZiBjbG9zZWQgV2ViU29j
a2V0IGNvbm5lY3Rpb24iKQorICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICB9IGVsc2Ugewor
ICAgICAgICB0ZXN0RmFpbGVkKCJGYWlsZWQgdG8gZGVsYXkgY2xvc2VkIFdlYlNvY2tldCBjb25u
ZWN0aW9uIik7CisgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgIH0KK30KKworLy8gVGVzdCBi
YXNlZCBvZmYgb2YgQmVFRiBwb3J0IHNjYW5uaW5nIGF0dGFjayB0ZWNobmlxdWUgKGh0dHBzOi8v
Z2l0aHViLmNvbS9iZWVmcHJvamVjdC9iZWVmL2Jsb2IvbWFzdGVyL21vZHVsZXMvbmV0d29yay9w
b3J0X3NjYW5uZXIvY29tbWFuZC5qcykKK2Z1bmN0aW9uIHNjYW5fcG9ydChwb3J0KQoreworICAg
IHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHsKKyAgICAgICAg
dmFyIHVybCA9ICJ3czovL2xvY2FsaG9zdDoiICsgcG9ydDsKKyAgICAgICAgdmFyIHdzID0gbmV3
IFdlYlNvY2tldCh1cmwpOworICAgICAgICB2YXIgc3RhcnRUaW1lID0gKG5ldyBEYXRlKS5nZXRU
aW1lKCk7CisgICAgICAgIHZhciB0aW1lb3V0ID0gMzAwMDsKKworICAgICAgICBjbGVhckludGVy
dmFsSUQgPSBzZXRJbnRlcnZhbCgKKyAgICAgICAgZnVuY3Rpb24gKCkKKyAgICAgICAgeworICAg
ICAgICAgICAgdmFyIGludGVydmFsID0gKG5ldyBEYXRlKS5nZXRUaW1lKCkgLSBzdGFydFRpbWU7
CisKKyAgICAgICAgICAgIGlmICh3cy5yZWFkeVN0YXRlID09PSBXZWJTb2NrZXQuQ09OTkVDVElO
RykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKHdzLnJl
YWR5U3RhdGUgPT09IFdlYlNvY2tldC5PUEVOKQorICAgICAgICAgICAgeworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICBpZiAod3MucmVhZHlTdGF0ZSA9PT0gV2ViU29ja2V0LkNMT1NJTkcp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICh3cy5yZWFk
eVN0YXRlID09PSBXZWJTb2NrZXQuQ0xPU0VEKQorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIGNsZWFySW50ZXJ2YWwoY2xlYXJJbnRlcnZhbElEKTsKKyAgICAgICAgICAgICAgICB3cy5j
bG9zZSgpOworICAgICAgICAgICAgICAgIGNvdW50UmVjZWl2ZWRNZXNzYWdlKys7CisgICAgICAg
ICAgICAgICAgaWYgKGludGVydmFsIDwgMTAwKSB7CisgICAgICAgICAgICAgICAgICAgIGRlYnVn
KCJUaW1lciBmYWlsZWQgdG8gZGVsYXkgcmVwb3J0IG9mIGNsb3NlZCBzdGF0ZSIpOworICAgICAg
ICAgICAgICAgICAgICByZXNvbHZlKCJ0ZXN0RmFpbGVkIik7CisgICAgICAgICAgICAgICAgfSBl
bHNlCisgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoInRlc3RQYXNzZWQiKTsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgaWYgKGludGVydmFsID49IHRpbWVvdXQpCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjbGVhckludGVydmFsSUQpOworICAg
ICAgICAgICAgICAgIGRlYnVnKCJDb25uZWN0aW9uIHRpbWVvdXQiKTsKKyAgICAgICAgICAgICAg
ICB3cy5jbG9zZSgpOworICAgICAgICAgICAgICAgIHJlc29sdmUoInRlc3RGYWlsZWQiKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAsIDEpOworICAgIH0pOworfQorCitzY2Fu
X3BvcnRzKCk7CisKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS93b3JrZXJzL3Jlc291cmNl
cy9jbG9zZS1jb2RlLWFuZC1yZWFzb24uanMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNv
Y2tldC90ZXN0cy9oeWJpL3dvcmtlcnMvcmVzb3VyY2VzL2Nsb3NlLWNvZGUtYW5kLXJlYXNvbi5q
cwppbmRleCA2ZTg5N2M5MzIzNzFhMDg2YWFlYTBiZDY3ODRjNWMzODg5YWYzYjA4Li4xOTQ1Zjc5
Yzg3N2FlNTcwMWFjYjA1YjYxOTljZDNjYTJkMGVlZTliIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3dvcmtlcnMvcmVzb3VyY2VzL2Nsb3Nl
LWNvZGUtYW5kLXJlYXNvbi5qcworKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tl
dC90ZXN0cy9oeWJpL3dvcmtlcnMvcmVzb3VyY2VzL2Nsb3NlLWNvZGUtYW5kLXJlYXNvbi5qcwpA
QCAtMTMsMjIgKzEzLDI5IEBAIGZ1bmN0aW9uIHBvc3RSZXN1bHQocmVzdWx0LCBhY3R1YWwsIGV4
cGVjdGVkKQogICAgIHBvc3RNZXNzYWdlKG1lc3NhZ2UpOwogfQogCi12YXIgd3MgPSBuZXcgV2Vi
U29ja2V0KCJ3czovLzEyNy4wLjAuMTo4ODgwL3dlYnNvY2tldC90ZXN0cy9oeWJpL2VjaG8iKTsK
LQotd3Mub25vcGVuID0gZnVuY3Rpb24oZXZlbnQpCitmdW5jdGlvbiBmaXJzdFdlYlNvY2tldEZp
bmlzaCgpCiB7Ci0gICAgdGVzdEZhaWxlZCgiRkFJTDogd3Mub25vcGVuKCkgd2FzIGNhbGxlZC4g
KG1lc3NhZ2UgPSBcIiIgKyBldmVudC5kYXRhICsgIlwiKSIpOwotfTsKKyAgICByZXR1cm4gbmV3
IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7CisgICAgICAgIHZhciB3cyA9IG5l
dyBXZWJTb2NrZXQoIndzOi8vMTI3LjAuMC4xOjg4ODAvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZWNo
byIpOwogCi13cy5vbmNsb3NlID0gZnVuY3Rpb24oZXZlbnQpCi17Ci0gICAgcG9zdE1lc3NhZ2Uo
IndzLm9uY2xvc2UoKSB3YXMgY2FsbGVkLiIpOwotICAgIHBvc3RSZXN1bHQoIWV2ZW50Lndhc0Ns
ZWFuLCAiZXZlbnQud2FzQ2xlYW4iLCAiZmFsc2UiKTsKLSAgICBwb3N0UmVzdWx0KGV2ZW50LmNv
ZGUgPT0gY29kZUFibm9ybWFsQ2xvc3VyZSwgImV2ZW50LmNvZGUiLCAiY29kZUFibm9ybWFsQ2xv
c3VyZSIpOwotICAgIHBvc3RSZXN1bHQoZXZlbnQucmVhc29uID09IGVtcHR5U3RyaW5nLCAiZXZl
bnQucmVhc29uIiwgImVtcHR5U3RyaW5nIik7Ci19OworICAgICAgICB3cy5vbm9wZW4gPSBmdW5j
dGlvbihldmVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdGVzdEZhaWxlZCgiRkFJTDogd3Mu
b25vcGVuKCkgd2FzIGNhbGxlZC4gKG1lc3NhZ2UgPSBcIiIgKyBldmVudC5kYXRhICsgIlwiKSIp
OworICAgICAgICB9OwogCi13cy5jbG9zZSgpOworICAgICAgICB3cy5vbmNsb3NlID0gZnVuY3Rp
b24oZXZlbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHBvc3RNZXNzYWdlKCJ3cy5vbmNsb3Nl
KCkgd2FzIGNhbGxlZC4iKTsKKyAgICAgICAgICAgIHBvc3RSZXN1bHQoIWV2ZW50Lndhc0NsZWFu
LCAiZXZlbnQud2FzQ2xlYW4iLCAiZmFsc2UiKTsKKyAgICAgICAgICAgIHBvc3RSZXN1bHQoZXZl
bnQuY29kZSA9PSBjb2RlQWJub3JtYWxDbG9zdXJlLCAiZXZlbnQuY29kZSIsICJjb2RlQWJub3Jt
YWxDbG9zdXJlIik7CisgICAgICAgICAgICBwb3N0UmVzdWx0KGV2ZW50LnJlYXNvbiA9PSBlbXB0
eVN0cmluZywgImV2ZW50LnJlYXNvbiIsICJlbXB0eVN0cmluZyIpOworICAgICAgICAgICAgCisg
ICAgICAgICAgICByZXNvbHZlKCJ0ZXN0UGFzc2VkIik7CisgICAgICAgIH07CisgICAgICAgIAor
ICAgICAgICB3cy5jbG9zZSgpOworICAgIH0pOworfQogCiB2YXIgdGVzdElkID0gMDsKIHZhciB0
ZXN0TnVtID0gNzsKQEAgLTEwNiw0ICsxMTMsMTAgQEAgV2ViU29ja2V0VGVzdC5wcm90b3R5cGUu
b25jbG9zZSA9IGZ1bmN0aW9uKGV2ZW50KQogICAgICAgICBwb3N0TWVzc2FnZSgiRE9ORSIpCiB9
OwogCi12YXIgdGVzdCA9IG5ldyBXZWJTb2NrZXRUZXN0KCk7Cithc3luYyBmdW5jdGlvbiBzdGFy
dF90ZXN0KCkKK3sKKyAgICBhd2FpdCBmaXJzdFdlYlNvY2tldEZpbmlzaCgpOworICAgIHZhciB0
ZXN0ID0gbmV3IFdlYlNvY2tldFRlc3QoKTsKK30KKworc3RhcnRfdGVzdCgpOwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJzb2NrZXRz
L2ludGVyZmFjZXMvV2ViU29ja2V0L2Nsb3NlL2Nsb3NlLW5lc3RlZC1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnNvY2tldHMvaW50
ZXJmYWNlcy9XZWJTb2NrZXQvY2xvc2UvY2xvc2UtbmVzdGVkLWV4cGVjdGVkLnR4dAppbmRleCAw
Njk5ZWQwZTUyMjJkM2JlY2I5NGYxYjAxZDViMDY0Mzg3MzVlZTMwLi45MWQ3OGFjNGY5OTRkOTlh
MzZlYjQ0OWUxZWZkN2Q2MTM0YTAwODI3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnNvY2tldHMvaW50ZXJmYWNlcy9XZWJTb2NrZXQv
Y2xvc2UvY2xvc2UtbmVzdGVkLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnNvY2tldHMvaW50ZXJmYWNlcy9XZWJTb2NrZXQv
Y2xvc2UvY2xvc2UtbmVzdGVkLWV4cGVjdGVkLnR4dApAQCAtMSwzICsxLDMgQEAKIAotRkFJTCBX
ZWJTb2NrZXRzOiBjbG9zZSgpIGluIGNsb3NlIGV2ZW50IGhhbmRsZXIgYXNzZXJ0X2VxdWFsczog
ZXhwZWN0ZWQgMiBidXQgZ290IDMKK1BBU1MgV2ViU29ja2V0czogY2xvc2UoKSBpbiBjbG9zZSBl
dmVudCBoYW5kbGVyIAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dlYnNvY2tldHMvaW50ZXJmYWNlcy9XZWJTb2NrZXQvcmVhZHlTdGF0
ZS8wMDMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy93ZWJzb2NrZXRzL2ludGVyZmFjZXMvV2ViU29ja2V0L3JlYWR5U3RhdGUvMDAzLWV4
cGVjdGVkLnR4dAppbmRleCA0YWNmNjY5MDEwZjViNWU2YmYyZjQyYzUxM2EyN2ExN2NjYTAyMTEw
Li43OTQ3N2JkMTM2ZDc3ZmUxM2JlMmUyYmQ4NjkyYzg5Y2IwYjY4MmVkIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnNvY2tldHMvaW50
ZXJmYWNlcy9XZWJTb2NrZXQvcmVhZHlTdGF0ZS8wMDMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2Vic29ja2V0cy9pbnRlcmZh
Y2VzL1dlYlNvY2tldC9yZWFkeVN0YXRlLzAwMy1leHBlY3RlZC50eHQKQEAgLTEsMyArMSwzIEBA
CiAKLUZBSUwgV2ViU29ja2V0czogZGVsZXRlIHJlYWR5U3RhdGUgYXNzZXJ0X2VxdWFsczogZGVs
ZXRlIHdzLnJlYWR5U3RhdGUgZXhwZWN0ZWQgMiBidXQgZ290IDMKK1BBU1MgV2ViU29ja2V0czog
ZGVsZXRlIHJlYWR5U3RhdGUgCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403828</attachid>
            <date>2020-07-08 17:42:38 -0700</date>
            <delta_ts>2020-07-09 11:00:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213143-20200708174237.patch</filename>
            <type>text/plain</type>
            <size>10317</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYzOTY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDEzNDM5YTMyNmU0ZjgxNGU5
ZTUzMWQ5N2I3NWVmZWMwZDNlMjBhMzYuLjU0YjBjOTYwYmQ0ZDJiYjMxM2IzMmY3Njk2MzNmODgw
NTAyM2NkODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMjAtMDctMDggIEthdGUgQ2hl
bmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGFydGlmaWNp
YWwgZGVsYXkgdG8gV2ViU29ja2V0IGNvbm5lY3Rpb25zIHRvIG1pdGlnYXRlIHBvcnQgc2Nhbm5p
bmcgYXR0YWNrcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjEzMTQzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82NDMwODkyNz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXaGVuIGVzdGFibGlzaGluZyB3
ZWIgc29ja2V0IGNvbm5lY3Rpb25zLCBjbG9zZWQgcG9ydHMgdHlwaWNhbGx5CisgICAgICAgIHJl
dHVybiBhbiBlcnJvciBtb3JlIHF1aWNrbHkgdGhhbiBvcGVuIHBvcnRzIGR1ZSB0byB0aGUgYWRk
aXRpb25hbAorICAgICAgICB0aW1lIGl0IHRha2VzIG9wZW4gcG9ydHMgdG8gcGVyZm9ybSBhIFRM
UyBoYW5kc2hha2UuIFRoaXMgcGF0Y2gKKyAgICAgICAgYWRkcyBhIGRlbGF5IHRvIHRoZSBjbG9z
ZWQtcG9ydCBjYXNlIHRvIHByZXZlbnQgZGlzdGluZ3Vpc2hpbmcgdGhlc2UKKyAgICAgICAgY2Fz
ZXMuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1NvY2tldFN0cmVhbTo6TmV0d29ya1NvY2tldFN0cmVh
bSk6CisgICAgICAgIChXZWJLaXQ6OnJhbmRvbURlbGF5KToKKyAgICAgICAgQWRkIGEgcmFuZG9t
IGRlbGF5IGJldHdlZW4gMTAgYW5kIDEwMG1zIGJlZm9yZSBzZW5kaW5nIElQQy4KKworICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrU29ja2V0U3RyZWFtOjpzZW5kRGVsYXllZEZhaWxNZXNzYWdlKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1NvY2tldFN0cmVhbTo6ZGlkRmFpbFNvY2tldFN0cmVh
bSk6CisgICAgICAgIE9ubHkgZGVsYXkgZm9yIHRoZSBwcm9wZXIgZXJyb3IgY29kZSBpbmRpY2F0
aW5nIHRoZSBjb25uZWN0aW9uCisgICAgICAgIHdhcyByZWZ1c2VkIGZvciBhIGNsb3NlZCBwb3J0
LgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbS5oOgorCiAy
MDIwLTA3LTA2ICBIYWVsd2VubiAobGFub2RhbikgTW9ubmllciAgPGNvbnRhY3RAaGFja3Rpdmlz
Lm1lPgogCiAgICAgICAgIEJ1YmJsZXdyYXBMYXVuY2hlci5jcHA6IEFkZCBwYXRocyByZXF1aXJl
ZCBmb3Igc25kaW8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1NvY2tldFN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtTb2NrZXRTdHJlYW0uY3BwCmluZGV4IGQxZmE0MjdkODI4ODRmYzQzNTY5ZDFiZjBkZjdkNzI4
OTIxNTAyZmMuLjcwYmYyYzA3ZjMwNjM5NzhiZDQzYzQ3YWFlNDRiZGE0ZGZlNTg3MTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFt
LmNwcApAQCAtNDQsNiArNDQsNyBAQCBOZXR3b3JrU29ja2V0U3RyZWFtOjpOZXR3b3JrU29ja2V0
U3RyZWFtKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgVVJMJiYgdQogICAgIDogbV9p
ZGVudGlmaWVyKGlkZW50aWZpZXIpCiAgICAgLCBtX2Nvbm5lY3Rpb24oY29ubmVjdGlvbikKICAg
ICAsIG1faW1wbChTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpjcmVhdGUodXJsLCAqdGhpcywgc2Vz
c2lvbklELCBjcmVkZW50aWFsUGFydGl0aW9uLCBXVEZNb3ZlKGF1ZGl0RGF0YSksIE5ldHdvcmtT
dG9yYWdlU2Vzc2lvblByb3ZpZGVyOjpjcmVhdGUobmV0d29ya1Byb2Nlc3MsIHNlc3Npb25JRCku
cHRyKCkpKQorICAgICwgbV9kZWxheUZhaWxUaW1lcigqdGhpcywgJk5ldHdvcmtTb2NrZXRTdHJl
YW06OnNlbmREZWxheWVkRmFpbE1lc3NhZ2UpCiB7CiB9CiAKQEAgLTEwMSwxMCArMTAyLDI5IEBA
IHZvaWQgTmV0d29ya1NvY2tldFN0cmVhbTo6ZGlkVXBkYXRlQnVmZmVyZWRBbW91bnQoU29ja2V0
U3RyZWFtSGFuZGxlJiBoYW5kbGUsIHNpCiAgICAgc2VuZChNZXNzYWdlczo6V2ViU29ja2V0U3Ry
ZWFtOjpEaWRVcGRhdGVCdWZmZXJlZEFtb3VudChhbW91bnQpKTsKIH0KIAorc3RhdGljIGNvbnN0
IGF1dG8gZGVsYXlNYXhNaWxsaXNlY29uZHMgPSAxMDA7CisKK3N0YXRpYyBTZWNvbmRzIHJhbmRv
bURlbGF5KCkKK3sKKyAgICByZXR1cm4gU2Vjb25kczo6ZnJvbU1pbGxpc2Vjb25kcygxMC4wICsg
c3RhdGljX2Nhc3Q8ZG91YmxlPihjcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlcigpICUgZGVs
YXlNYXhNaWxsaXNlY29uZHMpKTsKK30KKworc3RhdGljIGNvbnN0IGF1dG8gY2xvc2VkUG9ydEVy
cm9yQ29kZSA9IDYxOworCit2b2lkIE5ldHdvcmtTb2NrZXRTdHJlYW06OnNlbmREZWxheWVkRmFp
bE1lc3NhZ2UoKQoreworICAgIHNlbmQoTWVzc2FnZXM6OldlYlNvY2tldFN0cmVhbTo6RGlkRmFp
bFNvY2tldFN0cmVhbShtX2Nsb3NlZFBvcnRFcnJvcikpOworfQorCiB2b2lkIE5ldHdvcmtTb2Nr
ZXRTdHJlYW06OmRpZEZhaWxTb2NrZXRTdHJlYW0oU29ja2V0U3RyZWFtSGFuZGxlJiBoYW5kbGUs
IGNvbnN0IFNvY2tldFN0cmVhbUVycm9yJiBlcnJvcikKIHsKICAgICBBU1NFUlRfVU5VU0VEKGhh
bmRsZSwgJmhhbmRsZSA9PSBtX2ltcGwucHRyKCkpOwotICAgIHNlbmQoTWVzc2FnZXM6OldlYlNv
Y2tldFN0cmVhbTo6RGlkRmFpbFNvY2tldFN0cmVhbShlcnJvcikpOworICAgIAorICAgIGlmIChl
cnJvci5lcnJvckNvZGUoKSA9PSBjbG9zZWRQb3J0RXJyb3JDb2RlKSB7CisgICAgICAgIG1fY2xv
c2VkUG9ydEVycm9yID0gZXJyb3I7CisgICAgICAgIG1fZGVsYXlGYWlsVGltZXIuc3RhcnRPbmVT
aG90KHJhbmRvbURlbGF5KCkpOworICAgIH0gZWxzZQorICAgICAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJTb2NrZXRTdHJlYW06OkRpZEZhaWxTb2NrZXRTdHJlYW0oZXJyb3IpKTsKIH0KIAogSVBDOjpD
b25uZWN0aW9uKiBOZXR3b3JrU29ja2V0U3RyZWFtOjptZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigp
IGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtT
b2NrZXRTdHJlYW0uaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tl
dFN0cmVhbS5oCmluZGV4IGYzM2E5NTBhYWQ1NDE3Zjk1YzVjYWEyYzZmMTZiZmVlNWZjZTY3Yzcu
LmVjNDYwMWNlMThiMjQ2YTkzN2NkYmU5MTMyODZmYWY1NmE1MDMyNzcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbS5oCkBAIC0yOCw4
ICsyOCwxMCBAQAogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIk1lc3Nh
Z2VTZW5kZXIuaCIKICNpbmNsdWRlICJXZWJTb2NrZXRJZGVudGlmaWVyLmgiCisjaW5jbHVkZSA8
V2ViQ29yZS9Tb2NrZXRTdHJlYW1FcnJvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU29ja2V0U3Ry
ZWFtSGFuZGxlQ2xpZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Tb2NrZXRTdHJlYW1IYW5kbGVJ
bXBsLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9UaW1lci5oPgogI2luY2x1ZGUgPHBhbC9TZXNzaW9u
SUQuaD4KIAogbmFtZXNwYWNlIElQQyB7CkBAIC02Miw2ICs2NCw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIGRpZEZhaWxTb2NrZXRTdHJlYW0oV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlJiwgY29u
c3QgV2ViQ29yZTo6U29ja2V0U3RyZWFtRXJyb3ImKSBmaW5hbDsKIAogcHJpdmF0ZToKKyAgICB2
b2lkIHNlbmREZWxheWVkRmFpbE1lc3NhZ2UoKTsKICAgICBJUEM6OkNvbm5lY3Rpb24qIG1lc3Nh
Z2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QgZmluYWw7CiAgICAgdWludDY0X3QgbWVzc2FnZVNl
bmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdCBmaW5hbDsKIApAQCAtNzAsNiArNzMsOCBAQCBwcml2
YXRlOgogICAgIFdlYlNvY2tldElkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogICAgIElQQzo6Q29u
bmVjdGlvbiYgbV9jb25uZWN0aW9uOwogICAgIFJlZjxXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5k
bGVJbXBsPiBtX2ltcGw7CisgICAgV2ViQ29yZTo6VGltZXIgbV9kZWxheUZhaWxUaW1lcjsKKyAg
ICBXZWJDb3JlOjpTb2NrZXRTdHJlYW1FcnJvciBtX2Nsb3NlZFBvcnRFcnJvcjsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGMzM2E3MzEwZGVjODNmMDRhOWJjODQ1NWM2NTRk
ODUxOThhODQ1NTAuLjlkODI2MjhlZGE2ZjAzZGE0ZmFmMjQwZWM1N2Q0NzBkODM3YTM5ZjkgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwyMiBAQAorMjAyMC0wNy0wOCAgS2F0ZSBDaGVuZXkgIDxrYXRoZXJpbmVf
Y2hlbmV5QGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgYXJ0aWZpY2lhbCBkZWxheSB0byBXZWJT
b2NrZXQgY29ubmVjdGlvbnMgdG8gbWl0aWdhdGUgcG9ydCBzY2FubmluZyBhdHRhY2tzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTMxNDMKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzY0MzA4OTI3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIGxheW91dCB0ZXN0IGNvdmVyYWdlLCBtYWtpbmcg
c3VyZSBjbG9zZWQgcG9ydHMgYWx3YXlzIGV4cGVyaWVuY2UKKyAgICAgICAgYSBkZWxheSBvZiBh
dCBsZWFzdCAxMG1zLgorCisgICAgICAgICogaHR0cC90ZXN0cy93ZWJzb2NrZXQvY29ubmVjdGlv
bi1yZWZ1c2FsLWluLWZyYW1lLXJlc291cmNlLWxvYWQtc3RhdGlzdGljcy1leHBlY3RlZC50eHQ6
CisgICAgICAgIFdpdGggdGhlIGFkZGVkIGRlbGF5LCB0aGlzIHRlc3Qgd2lsbCBvbmx5IHJlY2Vp
dmUgb25lIGNvbnNvbGUgbWVzc2FnZS4KKyAgICAgICAgVG8gY29uZmlybSB0aGVyZSB3aWxsIGJl
IG5vIGZsYWtpbmVzcywgSSByYW4gdGhpcyB0ZXN0IGZvciA1MDAKKyAgICAgICAgaXRlcmF0aW9u
cyBhbmQgZW5zdXJlZCB0aGV5IHBhc3NlZC4KKworICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29j
a2V0L3Rlc3RzL2h5YmkvcG9ydC1zY2FuLWV4cGVjdGVkLnR4dDogCisgICAgICAgICogaHR0cC90
ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9wb3J0LXNjYW4uaHRtbDogQWRkZWQuCisKIDIwMjAt
MDctMDYgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2luXSBV
bnJldmlld2VkIG1vemlsbGEgdGVzdCBnYXJkZW5pbmcgYWZ0ZXIgcjI2Mzg1NS4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L2Nvbm5lY3Rpb24tcmVmdXNhbC1p
bi1mcmFtZS1yZXNvdXJjZS1sb2FkLXN0YXRpc3RpY3MtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvY29ubmVjdGlvbi1yZWZ1c2FsLWluLWZyYW1lLXJlc291
cmNlLWxvYWQtc3RhdGlzdGljcy1leHBlY3RlZC50eHQKaW5kZXggNGJlMjY3YWFmZjg1Mjc3MzEz
YTU0Y2JlN2ZhZjA4ZWM2ODhhODZjNS4uZTUxOGE2ZWQwOTUzMThmNGU0ZWE1ZTE3MDE5NDVlZWRh
MjQxOWViNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvY29u
bmVjdGlvbi1yZWZ1c2FsLWluLWZyYW1lLXJlc291cmNlLWxvYWQtc3RhdGlzdGljcy1leHBlY3Rl
ZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvY29ubmVjdGlvbi1y
ZWZ1c2FsLWluLWZyYW1lLXJlc291cmNlLWxvYWQtc3RhdGlzdGljcy1leHBlY3RlZC50eHQKQEAg
LTEsNSArMSw0IEBACiBDT05TT0xFIE1FU1NBR0U6IFdlYlNvY2tldCBuZXR3b3JrIGVycm9yOiBU
aGUgb3BlcmF0aW9uIGNvdWxkbuKAmXQgYmUgY29tcGxldGVkLiBDb25uZWN0aW9uIHJlZnVzZWQK
LUNPTlNPTEUgTUVTU0FHRTogV2ViU29ja2V0IG5ldHdvcmsgZXJyb3I6IFRoZSBvcGVyYXRpb24g
Y291bGRu4oCZdCBiZSBjb21wbGV0ZWQuIENvbm5lY3Rpb24gcmVmdXNlZAogQ29uc3RydWN0IGEg
Y3Jvc3Mtc2l0ZSBXZWJTb2NrZXQgaW4gYSBmcmFtZSB3aXRoIHNlcnZlci1zaWRlIHJlZnVzYWwu
IFRoZSB0ZXN0IHBhc3NlcyBpZiBSZXNvdXJjZSBMb2FkIFN0YXRpc3RpY3MgbG9ncyBpdCBwcm9w
ZXJseS4KIAogT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNz
YWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9wb3J0LXNjYW4tZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9wb3J0LXNjYW4t
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJhYTkxNTQ4YzA3ZDYxMzhkNWYyZjU5NjY0MmM1ZjY0
YWE4NjI4MmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNv
Y2tldC90ZXN0cy9oeWJpL3BvcnQtc2Nhbi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMyBAQAor
Q09OU09MRSBNRVNTQUdFOiBXZWJTb2NrZXQgbmV0d29yayBlcnJvcjogVGhlIG9wZXJhdGlvbiBj
b3VsZG7igJl0IGJlIGNvbXBsZXRlZC4gQ29ubmVjdGlvbiByZWZ1c2VkCitDT05TT0xFIE1FU1NB
R0U6IFdlYlNvY2tldCBuZXR3b3JrIGVycm9yOiBUaGUgb3BlcmF0aW9uIGNvdWxkbuKAmXQgYmUg
Y29tcGxldGVkLiBDb25uZWN0aW9uIHJlZnVzZWQKK0NPTlNPTEUgTUVTU0FHRTogV2ViU29ja2V0
IG5ldHdvcmsgZXJyb3I6IFRoZSBvcGVyYXRpb24gY291bGRu4oCZdCBiZSBjb21wbGV0ZWQuIENv
bm5lY3Rpb24gcmVmdXNlZAorVGVzdHMgdGhhdCBXZWJTb2NrZXQgY2xvc2UgcmVwb3J0IGlzIGRl
bGF5ZWQgdG8gbWl0aWdhdGUgcG9ydCBzY2FubmluZyBhdHRhY2tzLgorCitPbiBzdWNjZXNzLCB5
b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVT
VCBDT01QTEVURSIuCisKKworUEFTUyBTdWNjZXNzZnVsbHkgZGVsYXllZCByZXBvcnRpbmcgb2Yg
Y2xvc2VkIFdlYlNvY2tldCBjb25uZWN0aW9uCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9wb3J0LXNjYW4uaHRtbCBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvcG9ydC1zY2FuLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTc0
OGRlMmMwMTFiOTMxMDU1MmNiMjc0ZjI3OGI3NWIxNjE5N2U3ZgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvcG9ydC1zY2FuLmh0
bWwKQEAgLTAsMCArMSw4MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNj
cmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUZXN0cyB0aGF0IFdlYlNvY2tldCBj
bG9zZSByZXBvcnQgaXMgZGVsYXllZCB0byBtaXRpZ2F0ZSBwb3J0IHNjYW5uaW5nIGF0dGFja3Mu
Iik7CisKK2pzVGVzdElzQXN5bmMgPSB0cnVlOworCit2YXIgY291bnRSZWNlaXZlZE1lc3NhZ2Ug
PSAwOworCithc3luYyBmdW5jdGlvbiBzY2FuX3BvcnRzKCkKK3sKKyAgICAvLyBTY2FuIG11bHRp
cGxlIGNsb3NlZCBwb3J0cy4KKyAgICB2YXIgcmVzdWx0MSA9IGF3YWl0IHNjYW5fcG9ydCg4MTgx
KTsKKyAgICB2YXIgcmVzdWx0MiA9IGF3YWl0IHNjYW5fcG9ydCgxMjM0KTsKKyAgICB2YXIgcmVz
dWx0MyA9IGF3YWl0IHNjYW5fcG9ydCgzMDAxKTsKKyAgICBpZiAocmVzdWx0MyA9PSAidGVzdFBh
c3NlZCIgJiYgcmVzdWx0MiA9PSAidGVzdFBhc3NlZCIgJiYgcmVzdWx0MSA9PSAidGVzdFBhc3Nl
ZCIpIHsKKyAgICAgICAgdGVzdFBhc3NlZCgiU3VjY2Vzc2Z1bGx5IGRlbGF5ZWQgcmVwb3J0aW5n
IG9mIGNsb3NlZCBXZWJTb2NrZXQgY29ubmVjdGlvbiIpCisgICAgICAgIGZpbmlzaEpTVGVzdCgp
OworICAgIH0gZWxzZSB7CisgICAgICAgIHRlc3RGYWlsZWQoIkZhaWxlZCB0byBkZWxheSBjbG9z
ZWQgV2ViU29ja2V0IGNvbm5lY3Rpb24iKTsKKyAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAg
fQorfQorCisvLyBUZXN0IGJhc2VkIG9mZiBvZiBCZUVGIHBvcnQgc2Nhbm5pbmcgYXR0YWNrIHRl
Y2huaXF1ZSAoaHR0cHM6Ly9naXRodWIuY29tL2JlZWZwcm9qZWN0L2JlZWYvYmxvYi9tYXN0ZXIv
bW9kdWxlcy9uZXR3b3JrL3BvcnRfc2Nhbm5lci9jb21tYW5kLmpzKQorZnVuY3Rpb24gc2Nhbl9w
b3J0KHBvcnQpCit7CisgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJl
amVjdCkgeworICAgICAgICB2YXIgdXJsID0gIndzOi8vbG9jYWxob3N0OiIgKyBwb3J0OworICAg
ICAgICB2YXIgd3MgPSBuZXcgV2ViU29ja2V0KHVybCk7CisgICAgICAgIHZhciBzdGFydFRpbWUg
PSAobmV3IERhdGUpLmdldFRpbWUoKTsKKyAgICAgICAgdmFyIHRpbWVvdXQgPSAzMDAwOworCisg
ICAgICAgIGNsZWFySW50ZXJ2YWxJRCA9IHNldEludGVydmFsKAorICAgICAgICBmdW5jdGlvbiAo
KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaW50ZXJ2YWwgPSAobmV3IERhdGUpLmdldFRp
bWUoKSAtIHN0YXJ0VGltZTsKKworICAgICAgICAgICAgaWYgKHdzLnJlYWR5U3RhdGUgPT09IFdl
YlNvY2tldC5DT05ORUNUSU5HKQorICAgICAgICAgICAgeworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBpZiAod3MucmVhZHlTdGF0ZSA9PT0gV2ViU29ja2V0Lk9QRU4pCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICh3cy5yZWFkeVN0YXRlID09PSBX
ZWJTb2NrZXQuQ0xPU0lORykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgaWYgKHdzLnJlYWR5U3RhdGUgPT09IFdlYlNvY2tldC5DTE9TRUQpCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjbGVhckludGVydmFsSUQpOworICAg
ICAgICAgICAgICAgIHdzLmNsb3NlKCk7CisgICAgICAgICAgICAgICAgY291bnRSZWNlaXZlZE1l
c3NhZ2UrKzsKKyAgICAgICAgICAgICAgICBpZiAoaW50ZXJ2YWwgPCAxMCkgeworICAgICAgICAg
ICAgICAgICAgICBkZWJ1ZygiVGltZXIgZmFpbGVkIHRvIGRlbGF5IHJlcG9ydCBvZiBjbG9zZWQg
c3RhdGUiKTsKKyAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgidGVzdEZhaWxlZCIpOworICAg
ICAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCJ0ZXN0UGFz
c2VkIik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChpbnRlcnZhbCA+PSB0aW1l
b3V0KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY2xlYXJJ
bnRlcnZhbElEKTsKKyAgICAgICAgICAgICAgICBkZWJ1ZygiQ29ubmVjdGlvbiB0aW1lb3V0Iik7
CisgICAgICAgICAgICAgICAgd3MuY2xvc2UoKTsKKyAgICAgICAgICAgICAgICByZXNvbHZlKCJ0
ZXN0RmFpbGVkIik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgLCAxKTsKKyAg
ICB9KTsKK30KKworc2Nhbl9wb3J0cygpOworCis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403891</attachid>
            <date>2020-07-09 11:00:46 -0700</date>
            <delta_ts>2020-07-13 12:50:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213143-20200709110045.patch</filename>
            <type>text/plain</type>
            <size>12181</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYzOTY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDEzNDM5YTMyNmU0ZjgxNGU5
ZTUzMWQ5N2I3NWVmZWMwZDNlMjBhMzYuLjFlNGVjNmIwN2U4ZjdjNGRkMzk2NjkzYWFlNmMzZmFl
ZTAyZDk1ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMjAtMDctMDkgIEthdGUgQ2hl
bmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGFydGlmaWNp
YWwgZGVsYXkgdG8gV2ViU29ja2V0IGNvbm5lY3Rpb25zIHRvIG1pdGlnYXRlIHBvcnQgc2Nhbm5p
bmcgYXR0YWNrcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjEzMTQzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82NDMwODkyNz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXaGVuIGVzdGFibGlzaGluZyB3
ZWIgc29ja2V0IGNvbm5lY3Rpb25zLCBjbG9zZWQgcG9ydHMgdHlwaWNhbGx5CisgICAgICAgIHJl
dHVybiBhbiBlcnJvciBtb3JlIHF1aWNrbHkgdGhhbiBvcGVuIHBvcnRzIGR1ZSB0byB0aGUgYWRk
aXRpb25hbAorICAgICAgICB0aW1lIGl0IHRha2VzIG9wZW4gcG9ydHMgdG8gcGVyZm9ybSBhIFRM
UyBoYW5kc2hha2UuIFRoaXMgcGF0Y2gKKyAgICAgICAgYWRkcyBhIGRlbGF5IHRvIHRoZSBjbG9z
ZWQtcG9ydCBjYXNlIHRvIHByZXZlbnQgZGlzdGluZ3Vpc2hpbmcgdGhlc2UKKyAgICAgICAgY2Fz
ZXMuCisKKyAgICAgICAgVGVzdDogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9jbG9z
ZWQtcG9ydC1kZWxheS5odG1sCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29j
a2V0U3RyZWFtLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1NvY2tldFN0cmVhbTo6TmV0
d29ya1NvY2tldFN0cmVhbSk6CisgICAgICAgIChXZWJLaXQ6OnJhbmRvbURlbGF5KToKKyAgICAg
ICAgQWRkIGEgcmFuZG9tIGRlbGF5IGJldHdlZW4gMTAgYW5kIDEwMG1zIGJlZm9yZSBzZW5kaW5n
IElQQy4KKworICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU29ja2V0U3RyZWFtOjpzZW5kRGVsYXll
ZEZhaWxNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1NvY2tldFN0cmVhbTo6ZGlk
RmFpbFNvY2tldFN0cmVhbSk6CisgICAgICAgIE9ubHkgZGVsYXkgZm9yIHRoZSBwcm9wZXIgZXJy
b3IgY29kZSBpbmRpY2F0aW5nIHRoZSBjb25uZWN0aW9uCisgICAgICAgIHdhcyByZWZ1c2VkIGZv
ciBhIGNsb3NlZCBwb3J0LgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tl
dFN0cmVhbS5oOgorCiAyMDIwLTA3LTA2ICBIYWVsd2VubiAobGFub2RhbikgTW9ubmllciAgPGNv
bnRhY3RAaGFja3RpdmlzLm1lPgogCiAgICAgICAgIEJ1YmJsZXdyYXBMYXVuY2hlci5jcHA6IEFk
ZCBwYXRocyByZXF1aXJlZCBmb3Igc25kaW8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtTb2NrZXRTdHJlYW0uY3BwCmluZGV4IGQxZmE0MjdkODI4ODRmYzQz
NTY5ZDFiZjBkZjdkNzI4OTIxNTAyZmMuLmIyMTA1NzgzM2U4N2UwZDVjOTA0ZTNhN2VjZDc1ZGM0
MmJiODc4OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1NvY2tldFN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrU29ja2V0U3RyZWFtLmNwcApAQCAtNDQsNiArNDQsNyBAQCBOZXR3b3JrU29ja2V0U3RyZWFt
OjpOZXR3b3JrU29ja2V0U3RyZWFtKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgVVJM
JiYgdQogICAgIDogbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCiAgICAgLCBtX2Nvbm5lY3Rpb24o
Y29ubmVjdGlvbikKICAgICAsIG1faW1wbChTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpjcmVhdGUo
dXJsLCAqdGhpcywgc2Vzc2lvbklELCBjcmVkZW50aWFsUGFydGl0aW9uLCBXVEZNb3ZlKGF1ZGl0
RGF0YSksIE5ldHdvcmtTdG9yYWdlU2Vzc2lvblByb3ZpZGVyOjpjcmVhdGUobmV0d29ya1Byb2Nl
c3MsIHNlc3Npb25JRCkucHRyKCkpKQorICAgICwgbV9kZWxheUZhaWxUaW1lcigqdGhpcywgJk5l
dHdvcmtTb2NrZXRTdHJlYW06OnNlbmREZWxheWVkRmFpbE1lc3NhZ2UpCiB7CiB9CiAKQEAgLTEw
MSwxMCArMTAyLDI5IEBAIHZvaWQgTmV0d29ya1NvY2tldFN0cmVhbTo6ZGlkVXBkYXRlQnVmZmVy
ZWRBbW91bnQoU29ja2V0U3RyZWFtSGFuZGxlJiBoYW5kbGUsIHNpCiAgICAgc2VuZChNZXNzYWdl
czo6V2ViU29ja2V0U3RyZWFtOjpEaWRVcGRhdGVCdWZmZXJlZEFtb3VudChhbW91bnQpKTsKIH0K
IAorc3RhdGljIGNvbnN0IGF1dG8gZGVsYXlNYXhNaWxsaXNlY29uZHMgPSAxMDA7CitzdGF0aWMg
Y29uc3QgZG91YmxlIGRlbGF5TWluTWlsbGlzZWNvbmRzID0gMTA7CitzdGF0aWMgY29uc3QgYXV0
byBjbG9zZWRQb3J0RXJyb3JDb2RlID0gNjE7CisKK3N0YXRpYyBTZWNvbmRzIHJhbmRvbURlbGF5
KCkKK3sKKyAgICByZXR1cm4gU2Vjb25kczo6ZnJvbU1pbGxpc2Vjb25kcyhkZWxheU1pbk1pbGxp
c2Vjb25kcyArIHN0YXRpY19jYXN0PGRvdWJsZT4oY3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1i
ZXIoKSAlIGRlbGF5TWF4TWlsbGlzZWNvbmRzKSk7Cit9CisKK3ZvaWQgTmV0d29ya1NvY2tldFN0
cmVhbTo6c2VuZERlbGF5ZWRGYWlsTWVzc2FnZSgpCit7CisgICAgc2VuZChNZXNzYWdlczo6V2Vi
U29ja2V0U3RyZWFtOjpEaWRGYWlsU29ja2V0U3RyZWFtKG1fY2xvc2VkUG9ydEVycm9yKSk7Cit9
CisKIHZvaWQgTmV0d29ya1NvY2tldFN0cmVhbTo6ZGlkRmFpbFNvY2tldFN0cmVhbShTb2NrZXRT
dHJlYW1IYW5kbGUmIGhhbmRsZSwgY29uc3QgU29ja2V0U3RyZWFtRXJyb3ImIGVycm9yKQogewog
ICAgIEFTU0VSVF9VTlVTRUQoaGFuZGxlLCAmaGFuZGxlID09IG1faW1wbC5wdHIoKSk7Ci0gICAg
c2VuZChNZXNzYWdlczo6V2ViU29ja2V0U3RyZWFtOjpEaWRGYWlsU29ja2V0U3RyZWFtKGVycm9y
KSk7CisgICAgCisgICAgaWYgKGVycm9yLmVycm9yQ29kZSgpID09IGNsb3NlZFBvcnRFcnJvckNv
ZGUpIHsKKyAgICAgICAgbV9jbG9zZWRQb3J0RXJyb3IgPSBlcnJvcjsKKyAgICAgICAgbV9kZWxh
eUZhaWxUaW1lci5zdGFydE9uZVNob3QocmFuZG9tRGVsYXkoKSk7CisgICAgfSBlbHNlCisgICAg
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlNvY2tldFN0cmVhbTo6RGlkRmFpbFNvY2tldFN0cmVhbShl
cnJvcikpOwogfQogCiBJUEM6OkNvbm5lY3Rpb24qIE5ldHdvcmtTb2NrZXRTdHJlYW06Om1lc3Nh
Z2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtLmgKaW5kZXggZjMzYTk1MGFhZDU0MTdmOTVjNWNh
YTJjNmYxNmJmZWU1ZmNlNjdjNy4uZWM0NjAxY2UxOGIyNDZhOTM3Y2RiZTkxMzI4NmZhZjU2YTUw
MzI3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29j
a2V0U3RyZWFtLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29j
a2V0U3RyZWFtLmgKQEAgLTI4LDggKzI4LDEwIEBACiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVy
LmgiCiAjaW5jbHVkZSAiTWVzc2FnZVNlbmRlci5oIgogI2luY2x1ZGUgIldlYlNvY2tldElkZW50
aWZpZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1NvY2tldFN0cmVhbUVycm9yLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9Tb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1NvY2tldFN0cmVhbUhhbmRsZUltcGwuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1RpbWVyLmg+CiAj
aW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgogCiBuYW1lc3BhY2UgSVBDIHsKQEAgLTYyLDYgKzY0
LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkRmFpbFNvY2tldFN0cmVhbShXZWJDb3JlOjpTb2Nr
ZXRTdHJlYW1IYW5kbGUmLCBjb25zdCBXZWJDb3JlOjpTb2NrZXRTdHJlYW1FcnJvciYpIGZpbmFs
OwogCiBwcml2YXRlOgorICAgIHZvaWQgc2VuZERlbGF5ZWRGYWlsTWVzc2FnZSgpOwogICAgIElQ
Qzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdCBmaW5hbDsKICAg
ICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0IGZpbmFsOwogCkBA
IC03MCw2ICs3Myw4IEBAIHByaXZhdGU6CiAgICAgV2ViU29ja2V0SWRlbnRpZmllciBtX2lkZW50
aWZpZXI7CiAgICAgSVBDOjpDb25uZWN0aW9uJiBtX2Nvbm5lY3Rpb247CiAgICAgUmVmPFdlYkNv
cmU6OlNvY2tldFN0cmVhbUhhbmRsZUltcGw+IG1faW1wbDsKKyAgICBXZWJDb3JlOjpUaW1lciBt
X2RlbGF5RmFpbFRpbWVyOworICAgIFdlYkNvcmU6OlNvY2tldFN0cmVhbUVycm9yIG1fY2xvc2Vk
UG9ydEVycm9yOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYzMzYTczMTBk
ZWM4M2YwNGE5YmM4NDU1YzY1NGQ4NTE5OGE4NDU1MC4uZDlmMTI2Mjg3MTUzZGQ5YzhmYTg3M2M4
NTE1MTY5MmE5YjU1ODlkMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDIwLTA3LTA5ICBLYXRl
IENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBhcnRp
ZmljaWFsIGRlbGF5IHRvIFdlYlNvY2tldCBjb25uZWN0aW9ucyB0byBtaXRpZ2F0ZSBwb3J0IHNj
YW5uaW5nIGF0dGFja3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIxMzE0MworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjQzMDg5Mjc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgbGF5b3V0IHRl
c3QgY292ZXJhZ2UsIG1ha2luZyBzdXJlIGNsb3NlZCBwb3J0cyBhbHdheXMgZXhwZXJpZW5jZQor
ICAgICAgICBhIGRlbGF5IG9mIGF0IGxlYXN0IDEwbXMuCisKKyAgICAgICAgKiBUZXN0RXhwZWN0
YXRpb25zOgorICAgICAgICBUaGUgYWRkZWQgZGVsYXkgY29kZSBpcyBvbmx5IHByZXNlbnQgaW4g
V2ViS2l0LCBub3QgV2ViS2l0TGVnYWN5LgorICAgICAgICBBZGRpdGlvbmFsbHksIHdlYiBzb2Nr
ZXRzIGJlaGF2ZSBkaWZmZXJlbnRseSBvbiBXaW5kb3dzLCBzbyB0aGlzIHRlc3QKKyAgICAgICAg
c2hvdWxkIGJlIHNraXBwZWQgb24gYWxsIHBsYXRmb3JtcyBhbmQgb25seSBlbmFibGVkIGZvciBt
YWMgYW5kIGlvcyB3azIuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC9jb25uZWN0
aW9uLXJlZnVzYWwtaW4tZnJhbWUtcmVzb3VyY2UtbG9hZC1zdGF0aXN0aWNzLWV4cGVjdGVkLnR4
dDoKKyAgICAgICAgV2l0aCB0aGUgYWRkZWQgZGVsYXksIHRoaXMgdGVzdCB3aWxsIG9ubHkgcmVj
ZWl2ZSBvbmUgY29uc29sZSBtZXNzYWdlLgorICAgICAgICBUbyBjb25maXJtIHRoZXJlIHdpbGwg
YmUgbm8gZmxha2luZXNzLCBJIHJhbiB0aGlzIHRlc3QgZm9yIDUwMAorICAgICAgICBpdGVyYXRp
b25zIGFuZCBlbnN1cmVkIHRoZXkgcGFzc2VkLgorICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29j
a2V0L3Rlc3RzL2h5YmkvY2xvc2VkLXBvcnQtZGVsYXktZXhwZWN0ZWQudHh0OiAKKyAgICAgICAg
KiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2Nsb3NlZC1wb3J0LWRlbGF5Lmh0bWw6
IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL3drMi9UZXN0RXhwZWN0YXRpb25zOgorCiAyMDIw
LTA3LTA2ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW1dpbl0g
VW5yZXZpZXdlZCBtb3ppbGxhIHRlc3QgZ2FyZGVuaW5nIGFmdGVyIHIyNjM4NTUuCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVj
dGF0aW9ucwppbmRleCAzMmIzZDg4NmU4MzI2NjQ1Mzc0MDQxYzI5NzMwMTM4YmFjMmE3NzdmLi4w
MDAzNmFmNzI5ZTgyYjgzMDA5MjAwNTc0MGI1ODFhZDU3OTRiNjI0IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlv
bnMKQEAgLTQzMjksMyArNDMyOSw1IEBAIHdlYmtpdC5vcmcvYi8yMTIyNjcgaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvYWxpZ25tZW50L2dyaWQtCiAjIE9ubHkg
Q29jb2EgcG9ydHMgc3VwcG9ydCB0aGUgLWFwcGxlLXN5c3RlbSBmb250IGtleXdvcmRzCiBmYXN0
L3RleHQvdGV4dC1zdHlsZXMvLWFwcGxlLXN5c3RlbSBbIEltYWdlT25seUZhaWx1cmUgXQogCisj
IEFydGlmaWNpYWwgd2ViIHNvY2tldCBkZWxheXMgYXJlIG9ubHkgc3VwcG9ydGVkIG9uIHdrMi4g
CitodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2Nsb3NlZC1wb3J0LWRlbGF5Lmh0bWwg
WyBTa2lwIF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L2Nv
bm5lY3Rpb24tcmVmdXNhbC1pbi1mcmFtZS1yZXNvdXJjZS1sb2FkLXN0YXRpc3RpY3MtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvY29ubmVjdGlvbi1yZWZ1
c2FsLWluLWZyYW1lLXJlc291cmNlLWxvYWQtc3RhdGlzdGljcy1leHBlY3RlZC50eHQKaW5kZXgg
NGJlMjY3YWFmZjg1Mjc3MzEzYTU0Y2JlN2ZhZjA4ZWM2ODhhODZjNS4uZTUxOGE2ZWQwOTUzMThm
NGU0ZWE1ZTE3MDE5NDVlZWRhMjQxOWViNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy93ZWJzb2NrZXQvY29ubmVjdGlvbi1yZWZ1c2FsLWluLWZyYW1lLXJlc291cmNlLWxvYWQt
c3RhdGlzdGljcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJz
b2NrZXQvY29ubmVjdGlvbi1yZWZ1c2FsLWluLWZyYW1lLXJlc291cmNlLWxvYWQtc3RhdGlzdGlj
cy1leHBlY3RlZC50eHQKQEAgLTEsNSArMSw0IEBACiBDT05TT0xFIE1FU1NBR0U6IFdlYlNvY2tl
dCBuZXR3b3JrIGVycm9yOiBUaGUgb3BlcmF0aW9uIGNvdWxkbuKAmXQgYmUgY29tcGxldGVkLiBD
b25uZWN0aW9uIHJlZnVzZWQKLUNPTlNPTEUgTUVTU0FHRTogV2ViU29ja2V0IG5ldHdvcmsgZXJy
b3I6IFRoZSBvcGVyYXRpb24gY291bGRu4oCZdCBiZSBjb21wbGV0ZWQuIENvbm5lY3Rpb24gcmVm
dXNlZAogQ29uc3RydWN0IGEgY3Jvc3Mtc2l0ZSBXZWJTb2NrZXQgaW4gYSBmcmFtZSB3aXRoIHNl
cnZlci1zaWRlIHJlZnVzYWwuIFRoZSB0ZXN0IHBhc3NlcyBpZiBSZXNvdXJjZSBMb2FkIFN0YXRp
c3RpY3MgbG9ncyBpdCBwcm9wZXJseS4KIAogT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2Vy
aWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9jbG9z
ZWQtcG9ydC1kZWxheS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNv
Y2tldC90ZXN0cy9oeWJpL2Nsb3NlZC1wb3J0LWRlbGF5LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5iYWE5MTU0OGMwN2Q2MTM4ZDVmMmY1OTY2NDJjNWY2NGFhODYyODJlCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9jbG9zZWQt
cG9ydC1kZWxheS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMyBAQAorQ09OU09MRSBNRVNTQUdF
OiBXZWJTb2NrZXQgbmV0d29yayBlcnJvcjogVGhlIG9wZXJhdGlvbiBjb3VsZG7igJl0IGJlIGNv
bXBsZXRlZC4gQ29ubmVjdGlvbiByZWZ1c2VkCitDT05TT0xFIE1FU1NBR0U6IFdlYlNvY2tldCBu
ZXR3b3JrIGVycm9yOiBUaGUgb3BlcmF0aW9uIGNvdWxkbuKAmXQgYmUgY29tcGxldGVkLiBDb25u
ZWN0aW9uIHJlZnVzZWQKK0NPTlNPTEUgTUVTU0FHRTogV2ViU29ja2V0IG5ldHdvcmsgZXJyb3I6
IFRoZSBvcGVyYXRpb24gY291bGRu4oCZdCBiZSBjb21wbGV0ZWQuIENvbm5lY3Rpb24gcmVmdXNl
ZAorVGVzdHMgdGhhdCBXZWJTb2NrZXQgY2xvc2UgcmVwb3J0IGlzIGRlbGF5ZWQgdG8gbWl0aWdh
dGUgcG9ydCBzY2FubmluZyBhdHRhY2tzLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBz
ZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisK
KworUEFTUyBTdWNjZXNzZnVsbHkgZGVsYXllZCByZXBvcnRpbmcgb2YgY2xvc2VkIFdlYlNvY2tl
dCBjb25uZWN0aW9uCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09N
UExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVz
dHMvaHliaS9jbG9zZWQtcG9ydC1kZWxheS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93
ZWJzb2NrZXQvdGVzdHMvaHliaS9jbG9zZWQtcG9ydC1kZWxheS5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE3
NDhkZTJjMDExYjkzMTA1NTJjYjI3NGYyNzhiNzViMTYxOTdlN2YKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2Nsb3NlZC1wb3J0
LWRlbGF5Lmh0bWwKQEAgLTAsMCArMSw4MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxo
ZWFkPgorPHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LmpzIj48L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUZXN0cyB0aGF0IFdl
YlNvY2tldCBjbG9zZSByZXBvcnQgaXMgZGVsYXllZCB0byBtaXRpZ2F0ZSBwb3J0IHNjYW5uaW5n
IGF0dGFja3MuIik7CisKK2pzVGVzdElzQXN5bmMgPSB0cnVlOworCit2YXIgY291bnRSZWNlaXZl
ZE1lc3NhZ2UgPSAwOworCithc3luYyBmdW5jdGlvbiBzY2FuX3BvcnRzKCkKK3sKKyAgICAvLyBT
Y2FuIG11bHRpcGxlIGNsb3NlZCBwb3J0cy4KKyAgICB2YXIgcmVzdWx0MSA9IGF3YWl0IHNjYW5f
cG9ydCg4MTgxKTsKKyAgICB2YXIgcmVzdWx0MiA9IGF3YWl0IHNjYW5fcG9ydCgxMjM0KTsKKyAg
ICB2YXIgcmVzdWx0MyA9IGF3YWl0IHNjYW5fcG9ydCgzMDAxKTsKKyAgICBpZiAocmVzdWx0MyA9
PSAidGVzdFBhc3NlZCIgJiYgcmVzdWx0MiA9PSAidGVzdFBhc3NlZCIgJiYgcmVzdWx0MSA9PSAi
dGVzdFBhc3NlZCIpIHsKKyAgICAgICAgdGVzdFBhc3NlZCgiU3VjY2Vzc2Z1bGx5IGRlbGF5ZWQg
cmVwb3J0aW5nIG9mIGNsb3NlZCBXZWJTb2NrZXQgY29ubmVjdGlvbiIpCisgICAgICAgIGZpbmlz
aEpTVGVzdCgpOworICAgIH0gZWxzZSB7CisgICAgICAgIHRlc3RGYWlsZWQoIkZhaWxlZCB0byBk
ZWxheSBjbG9zZWQgV2ViU29ja2V0IGNvbm5lY3Rpb24iKTsKKyAgICAgICAgZmluaXNoSlNUZXN0
KCk7CisgICAgfQorfQorCisvLyBUZXN0IGJhc2VkIG9mZiBvZiBCZUVGIHBvcnQgc2Nhbm5pbmcg
YXR0YWNrIHRlY2huaXF1ZSAoaHR0cHM6Ly9naXRodWIuY29tL2JlZWZwcm9qZWN0L2JlZWYvYmxv
Yi9tYXN0ZXIvbW9kdWxlcy9uZXR3b3JrL3BvcnRfc2Nhbm5lci9jb21tYW5kLmpzKQorZnVuY3Rp
b24gc2Nhbl9wb3J0KHBvcnQpCit7CisgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJl
c29sdmUsIHJlamVjdCkgeworICAgICAgICB2YXIgdXJsID0gIndzOi8vbG9jYWxob3N0OiIgKyBw
b3J0OworICAgICAgICB2YXIgd3MgPSBuZXcgV2ViU29ja2V0KHVybCk7CisgICAgICAgIHZhciBz
dGFydFRpbWUgPSAobmV3IERhdGUpLmdldFRpbWUoKTsKKyAgICAgICAgdmFyIHRpbWVvdXQgPSAz
MDAwOworCisgICAgICAgIGNsZWFySW50ZXJ2YWxJRCA9IHNldEludGVydmFsKAorICAgICAgICBm
dW5jdGlvbiAoKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaW50ZXJ2YWwgPSAobmV3IERh
dGUpLmdldFRpbWUoKSAtIHN0YXJ0VGltZTsKKworICAgICAgICAgICAgaWYgKHdzLnJlYWR5U3Rh
dGUgPT09IFdlYlNvY2tldC5DT05ORUNUSU5HKQorICAgICAgICAgICAgeworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICBpZiAod3MucmVhZHlTdGF0ZSA9PT0gV2ViU29ja2V0Lk9QRU4pCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICh3cy5yZWFkeVN0
YXRlID09PSBXZWJTb2NrZXQuQ0xPU0lORykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgaWYgKHdzLnJlYWR5U3RhdGUgPT09IFdlYlNvY2tldC5DTE9TRUQpCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjbGVhckludGVydmFs
SUQpOworICAgICAgICAgICAgICAgIHdzLmNsb3NlKCk7CisgICAgICAgICAgICAgICAgY291bnRS
ZWNlaXZlZE1lc3NhZ2UrKzsKKyAgICAgICAgICAgICAgICBpZiAoaW50ZXJ2YWwgPCAxMCkgewor
ICAgICAgICAgICAgICAgICAgICBkZWJ1ZygiVGltZXIgZmFpbGVkIHRvIGRlbGF5IHJlcG9ydCBv
ZiBjbG9zZWQgc3RhdGUiKTsKKyAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgidGVzdEZhaWxl
ZCIpOworICAgICAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgICAgICByZXNvbHZl
KCJ0ZXN0UGFzc2VkIik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChpbnRlcnZh
bCA+PSB0aW1lb3V0KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2
YWwoY2xlYXJJbnRlcnZhbElEKTsKKyAgICAgICAgICAgICAgICBkZWJ1ZygiQ29ubmVjdGlvbiB0
aW1lb3V0Iik7CisgICAgICAgICAgICAgICAgd3MuY2xvc2UoKTsKKyAgICAgICAgICAgICAgICBy
ZXNvbHZlKCJ0ZXN0RmFpbGVkIik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAg
LCAxKTsKKyAgICB9KTsKK30KKworc2Nhbl9wb3J0cygpOworCis8L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3drMi9UZXN0RXhwZWN0
YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2syL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXgg
OTU4YWE1NWYxN2RkZGJhOTg2ZWQyOWNhODE3M2NlN2M4NWVjOTU2OC4uMzVhYTc2MTA1MGZmMjdj
YTRkMjFiOGQwNjRjODhhNTY2MTQ3MWI4MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vd2syL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2syL1Rl
c3RFeHBlY3RhdGlvbnMKQEAgLTgwMiwzICs4MDIsNSBAQCB3ZWJraXQub3JnL2IvMTg3NzY2IGh0
dHAvd3B0L3NlcnZpY2Utd29ya2Vycy91cGRhdGUtc2VydmljZS13b3JrZXIuaHR0cHMuaHRtbCBb
CiAjIE5ld2x5IGltcG9ydGVkIHRlc3QgdGhhdCBpcyBmbGFreSBvbiBXZWJLaXQyIG9ubHkuCiBp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvdGhlLXdpbmRvdy1v
YmplY3QvYXBpcy1mb3ItY3JlYXRpbmctYW5kLW5hdmlnYXRpbmctYnJvd3NpbmctY29udGV4dHMt
YnktbmFtZS9ub193aW5kb3dfb3Blbl93aGVuX3Rlcm1fbmVzdGluZ19sZXZlbF9ub256ZXJvLndp
bmRvdy5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIAorIyBDbG9zZWQgcG9ydCB3ZWIgc29ja2V0IGRl
bGF5cyBhcmUgb25seSBzdXBwb3J0ZWQgb24gd2syLgoraHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVz
dHMvaHliaS9jbG9zZWQtcG9ydC1kZWxheS5odG1sIFsgUGFzcyBdCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404165</attachid>
            <date>2020-07-13 12:50:26 -0700</date>
            <delta_ts>2020-07-13 12:58:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213143-20200713125025.patch</filename>
            <type>text/plain</type>
            <size>1947</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY0MzA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDI4NjdlYjE4N2M0OGU3NWIz
ZjFhMzY5ODNiZTY5YWJkYzYxNjU5MWQuLmUzNzIxMjQwM2MxMjc3NzUyZWM5YTNjMTIxY2EzYTNk
NGVkYjQ0MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjAtMDctMTMgIEthdGUgQ2hl
bmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgRm9sbG93dXAgdG8g
YnVnIDIxMzE0MzogQWRkIGFydGlmaWNpYWwgZGVsYXkgdG8gV2ViU29ja2V0IGNvbm5lY3Rpb25z
IHRvIG1pdGlnYXRlIHBvcnQgc2Nhbm5pbmcgYXR0YWNrcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEzMTQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ29udmVydCBtaW4gYW5kIG1heCBtaWxsaXNlY29u
ZCB2YWx1ZXMgZnJvbSBkb3VibGUvaW50IHRvIFNlY29uZHMuCisKKyAgICAgICAgTm8gbmV3IHRl
c3RzLCBiZWhhdmlvciBzaG91bGQgbm90IGNoYW5nZS4KKworICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL05ldHdvcmtTb2NrZXRTdHJlYW0uY3BwOgorICAgICAgICAoV2ViS2l0OjpyYW5kb21EZWxh
eSk6CisKIDIwMjAtMDctMTMgIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgog
CiAgICAgICAgIENyYXNoIHVuZGVyIFdlYktpdDo6TGF1bmNoU2VydmljZXNEYXRhYmFzZU1hbmFn
ZXI6OmRpZENvbm5lY3QoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrU29ja2V0U3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1NvY2tldFN0cmVhbS5jcHAKaW5kZXggYjIxMDU3ODMzZTg3ZTBkNWM5MDRlM2E3ZWNk
NzVkYzQyYmI4Nzg5Ni4uNzQyYWZhOWYwN2E3OThiZWU5ZjA0ODFkMTNlZDI3OTRjZTFlY2RlZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0U3Ry
ZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRT
dHJlYW0uY3BwCkBAIC0xMDIsMTMgKzEwMiwxMyBAQCB2b2lkIE5ldHdvcmtTb2NrZXRTdHJlYW06
OmRpZFVwZGF0ZUJ1ZmZlcmVkQW1vdW50KFNvY2tldFN0cmVhbUhhbmRsZSYgaGFuZGxlLCBzaQog
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlNvY2tldFN0cmVhbTo6RGlkVXBkYXRlQnVmZmVyZWRBbW91
bnQoYW1vdW50KSk7CiB9CiAKLXN0YXRpYyBjb25zdCBhdXRvIGRlbGF5TWF4TWlsbGlzZWNvbmRz
ID0gMTAwOwotc3RhdGljIGNvbnN0IGRvdWJsZSBkZWxheU1pbk1pbGxpc2Vjb25kcyA9IDEwOwor
c3RhdGljIGNvbnN0IGF1dG8gZGVsYXlNYXggPSAxMDBfbXM7CitzdGF0aWMgY29uc3QgYXV0byBk
ZWxheU1pbiA9IDEwX21zOwogc3RhdGljIGNvbnN0IGF1dG8gY2xvc2VkUG9ydEVycm9yQ29kZSA9
IDYxOwogCiBzdGF0aWMgU2Vjb25kcyByYW5kb21EZWxheSgpCiB7Ci0gICAgcmV0dXJuIFNlY29u
ZHM6OmZyb21NaWxsaXNlY29uZHMoZGVsYXlNaW5NaWxsaXNlY29uZHMgKyBzdGF0aWNfY2FzdDxk
b3VibGU+KGNyeXB0b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVyKCkgJSBkZWxheU1heE1pbGxpc2Vj
b25kcykpOworICAgIHJldHVybiBkZWxheU1pbiArIFNlY29uZHM6OmZyb21NaWxsaXNlY29uZHMo
c3RhdGljX2Nhc3Q8ZG91YmxlPihjcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlcigpKSkgJSBk
ZWxheU1heDsKIH0KIAogdm9pZCBOZXR3b3JrU29ja2V0U3RyZWFtOjpzZW5kRGVsYXllZEZhaWxN
ZXNzYWdlKCkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404166</attachid>
            <date>2020-07-13 12:58:28 -0700</date>
            <delta_ts>2020-07-13 14:08:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213143-20200713125827.patch</filename>
            <type>text/plain</type>
            <size>2004</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY0MzA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDI4NjdlYjE4N2M0OGU3NWIz
ZjFhMzY5ODNiZTY5YWJkYzYxNjU5MWQuLmUzNzIxMjQwM2MxMjc3NzUyZWM5YTNjMTIxY2EzYTNk
NGVkYjQ0MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjAtMDctMTMgIEthdGUgQ2hl
bmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgRm9sbG93dXAgdG8g
YnVnIDIxMzE0MzogQWRkIGFydGlmaWNpYWwgZGVsYXkgdG8gV2ViU29ja2V0IGNvbm5lY3Rpb25z
IHRvIG1pdGlnYXRlIHBvcnQgc2Nhbm5pbmcgYXR0YWNrcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEzMTQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ29udmVydCBtaW4gYW5kIG1heCBtaWxsaXNlY29u
ZCB2YWx1ZXMgZnJvbSBkb3VibGUvaW50IHRvIFNlY29uZHMuCisKKyAgICAgICAgTm8gbmV3IHRl
c3RzLCBiZWhhdmlvciBzaG91bGQgbm90IGNoYW5nZS4KKworICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL05ldHdvcmtTb2NrZXRTdHJlYW0uY3BwOgorICAgICAgICAoV2ViS2l0OjpyYW5kb21EZWxh
eSk6CisKIDIwMjAtMDctMTMgIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgog
CiAgICAgICAgIENyYXNoIHVuZGVyIFdlYktpdDo6TGF1bmNoU2VydmljZXNEYXRhYmFzZU1hbmFn
ZXI6OmRpZENvbm5lY3QoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrU29ja2V0U3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1NvY2tldFN0cmVhbS5jcHAKaW5kZXggYjIxMDU3ODMzZTg3ZTBkNWM5MDRlM2E3ZWNk
NzVkYzQyYmI4Nzg5Ni4uMTVlOGU4OGVkZDNhYTdhNDAyOTUyMmFmNTQzZGM0NmMwODYzYzYzMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0U3Ry
ZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRT
dHJlYW0uY3BwCkBAIC0xMDIsMTMgKzEwMiwxMyBAQCB2b2lkIE5ldHdvcmtTb2NrZXRTdHJlYW06
OmRpZFVwZGF0ZUJ1ZmZlcmVkQW1vdW50KFNvY2tldFN0cmVhbUhhbmRsZSYgaGFuZGxlLCBzaQog
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlNvY2tldFN0cmVhbTo6RGlkVXBkYXRlQnVmZmVyZWRBbW91
bnQoYW1vdW50KSk7CiB9CiAKLXN0YXRpYyBjb25zdCBhdXRvIGRlbGF5TWF4TWlsbGlzZWNvbmRz
ID0gMTAwOwotc3RhdGljIGNvbnN0IGRvdWJsZSBkZWxheU1pbk1pbGxpc2Vjb25kcyA9IDEwOwot
c3RhdGljIGNvbnN0IGF1dG8gY2xvc2VkUG9ydEVycm9yQ29kZSA9IDYxOworc3RhdGljIGNvbnN0
ZXhwciBhdXRvIGRlbGF5TWF4ID0gMTAwX21zOworc3RhdGljIGNvbnN0ZXhwciBhdXRvIGRlbGF5
TWluID0gMTBfbXM7CitzdGF0aWMgY29uc3RleHByIGF1dG8gY2xvc2VkUG9ydEVycm9yQ29kZSA9
IDYxOwogCiBzdGF0aWMgU2Vjb25kcyByYW5kb21EZWxheSgpCiB7Ci0gICAgcmV0dXJuIFNlY29u
ZHM6OmZyb21NaWxsaXNlY29uZHMoZGVsYXlNaW5NaWxsaXNlY29uZHMgKyBzdGF0aWNfY2FzdDxk
b3VibGU+KGNyeXB0b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVyKCkgJSBkZWxheU1heE1pbGxpc2Vj
b25kcykpOworICAgIHJldHVybiBkZWxheU1pbiArIFNlY29uZHM6OmZyb21NaWxsaXNlY29uZHMo
c3RhdGljX2Nhc3Q8ZG91YmxlPihjcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlcigpKSkgJSBk
ZWxheU1heDsKIH0KIAogdm9pZCBOZXR3b3JrU29ja2V0U3RyZWFtOjpzZW5kRGVsYXllZEZhaWxN
ZXNzYWdlKCkK
</data>

          </attachment>
      

    </bug>

</bugzilla>