<?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>224709</bug_id>
          
          <creation_ts>2021-04-16 20:30:54 -0700</creation_ts>
          <short_desc>GPUConnectionToWebProcess::allowsExitUnderMemoryPressure() should check if libWebRTCCodecsProxy is used</short_desc>
          <delta_ts>2021-04-24 15:06:23 -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>Media</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=224704</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=224556</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=224728</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>
          <dependson>224704</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>darin</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ggaren</cc>
    
    <cc>jer.noble</cc>
    
    <cc>peng.liu6</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1751377</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-04-16 20:30:54 -0700</bug_when>
    <thetext>GPUConnectionToWebProcess::allowsExitUnderMemoryPressure() should check if libWebRTCCodecsProxy is used.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1751378</commentid>
    <comment_count>1</comment_count>
      <attachid>426316</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-04-16 20:34:48 -0700</bug_when>
    <thetext>Created attachment 426316
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1751381</commentid>
    <comment_count>2</comment_count>
      <attachid>426318</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-04-16 20:38:45 -0700</bug_when>
    <thetext>Created attachment 426318
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1751507</commentid>
    <comment_count>3</comment_count>
      <attachid>426318</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-04-17 17:40:47 -0700</bug_when>
    <thetext>Comment on attachment 426318
Patch

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

&gt; Source/WebKit/GPUProcess/webrtc/LibWebRTCCodecsProxy.mm:212
&gt; +    m_hasEncodersOrDecoders = !m_encoders.isEmpty() || !m_decoders.isEmpty();

Why is it good to cache this value in a separate boolean? It’s not expensive to compute isEmpty on two hash tables, and you wouldn’t need so many calls to this update function if you dropped this.

Is the issue that this function is called on an appropriate thread or with an appropriate lock and allowsExitUnderMemoryPressure needs to run on a different thread?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1751508</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-04-17 17:41:55 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #3)
&gt; Comment on attachment 426318 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=426318&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/GPUProcess/webrtc/LibWebRTCCodecsProxy.mm:212
&gt; &gt; +    m_hasEncodersOrDecoders = !m_encoders.isEmpty() || !m_decoders.isEmpty();
&gt; 
&gt; Why is it good to cache this value in a separate boolean? It’s not expensive
&gt; to compute isEmpty on two hash tables, and you wouldn’t need so many calls
&gt; to this update function if you dropped this.
&gt; 
&gt; Is the issue that this function is called on an appropriate thread or with
&gt; an appropriate lock and allowsExitUnderMemoryPressure needs to run on a
&gt; different thread?

Yes, I tried to explain that in the changelog. The issue is that allowsExitUnderMemoryPressure() gets called on the main thread but m_encoders and m_decoders get modified on a background thread. This is also by I am using a std::atomic.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1751514</commentid>
    <comment_count>5</comment_count>
      <attachid>426358</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-04-17 18:35:27 -0700</bug_when>
    <thetext>Created attachment 426358
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1751518</commentid>
    <comment_count>6</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-04-17 19:54:36 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #4)
&gt; Yes, I tried to explain that in the changelog. The issue is that
&gt; allowsExitUnderMemoryPressure() gets called on the main thread but
&gt; m_encoders and m_decoders get modified on a background thread. This is also
&gt; by I am using a std::atomic.

Is there something that prevents a race? What if we are adding entries on a background thread *while* the main thread decides to tell the process to quit?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1751523</commentid>
    <comment_count>7</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-04-17 20:04:14 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #6)
&gt; (In reply to Chris Dumez from comment #4)
&gt; &gt; Yes, I tried to explain that in the changelog. The issue is that
&gt; &gt; allowsExitUnderMemoryPressure() gets called on the main thread but
&gt; &gt; m_encoders and m_decoders get modified on a background thread. This is also
&gt; &gt; by I am using a std::atomic.
&gt; 
&gt; Is there something that prevents a race? What if we are adding entries on a
&gt; background thread *while* the main thread decides to tell the process to
&gt; quit?

I don&apos;t think there is a way to do this GPUProcess idle-exit without races. The GPUProcess could be deciding to exit on the main thread while there is new IPC getting received on the IPC thread. This seems unavoidable.

I thought about setting the m_hasEncodersOrDecoders flag to true *before* adding the encoder/decoder to the map instead of after. Maybe this is what you meant. I could do the and it would decrease a little bit the chance of bad idle exit (though not by a lot). Let me know if you&apos;d like me to do that or have a better proposal.

If we&apos;re unlucky and the GPUProcess exits just as we&apos;re starting or about to do work, then the WebProcess will be notified of that the connection was severed and it is the WebProcess&apos;s responsibility to re-schedule the work.

Note that we only IDLE exit on memory pressure so this frequency of idle-exits and it is similar to a jetsam (that we force because we are currently idle).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1751527</commentid>
    <comment_count>8</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-04-17 20:09:51 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #7)
&gt; (In reply to Darin Adler from comment #6)
&gt; &gt; (In reply to Chris Dumez from comment #4)
&gt; &gt; &gt; Yes, I tried to explain that in the changelog. The issue is that
&gt; &gt; &gt; allowsExitUnderMemoryPressure() gets called on the main thread but
&gt; &gt; &gt; m_encoders and m_decoders get modified on a background thread. This is also
&gt; &gt; &gt; by I am using a std::atomic.
&gt; &gt; 
&gt; &gt; Is there something that prevents a race? What if we are adding entries on a
&gt; &gt; background thread *while* the main thread decides to tell the process to
&gt; &gt; quit?
&gt; 
&gt; I don&apos;t think there is a way to do this GPUProcess idle-exit without races.
&gt; The GPUProcess could be deciding to exit on the main thread while there is
&gt; new IPC getting received on the IPC thread. This seems unavoidable.
&gt; 
&gt; I thought about setting the m_hasEncodersOrDecoders flag to true *before*
&gt; adding the encoder/decoder to the map instead of after. Maybe this is what
&gt; you meant. I could do the and it would decrease a little bit the chance of
&gt; bad idle exit (though not by a lot). Let me know if you&apos;d like me to do that
&gt; or have a better proposal.
&gt; 
&gt; If we&apos;re unlucky and the GPUProcess exits just as we&apos;re starting or about to
&gt; do work, then the WebProcess will be notified of that the connection was
&gt; severed and it is the WebProcess&apos;s responsibility to re-schedule the work.
&gt; 
&gt; Note that we only IDLE exit on memory pressure so this frequency of
&gt; idle-exits and it is similar to a jetsam (that we force because we are
&gt; currently idle).

so this *decreases the* frequency of idle-exits</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1751556</commentid>
    <comment_count>9</comment_count>
      <attachid>426358</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-04-17 21:32:51 -0700</bug_when>
    <thetext>Comment on attachment 426358
Patch

Landing as is for now since we are currently potentially exiting when not idle. I will follow up if needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1751557</commentid>
    <comment_count>10</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-04-17 21:34:26 -0700</bug_when>
    <thetext>Yes, I didn’t intend my comments to slow you down landing this patch. I was trying to reflect further on whether this can be simplified at all.

By the way, I am pretty sure that std::atomic is overkill for something set on one thread and read on another thread, with no guarantees about races. Pretty sure a plain old bool would do fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1751559</commentid>
    <comment_count>11</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-04-17 21:41:45 -0700</bug_when>
    <thetext>commit-queue failed to commit attachment 426358 to WebKit repository. To retry, please set cq+ flag again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1751567</commentid>
    <comment_count>12</comment_count>
      <attachid>426358</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-04-17 22:23:10 -0700</bug_when>
    <thetext>Comment on attachment 426358
Patch

Clearing flags on attachment: 426358

Committed r276222 (236704@main): &lt;https://commits.webkit.org/236704@main&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1751568</commentid>
    <comment_count>13</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-04-17 22:23:13 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1751575</commentid>
    <comment_count>14</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-04-17 22:56:42 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #10)
&gt; Yes, I didn’t intend my comments to slow you down landing this patch. I was
&gt; trying to reflect further on whether this can be simplified at all.
&gt; 
&gt; By the way, I am pretty sure that std::atomic is overkill for something set
&gt; on one thread and read on another thread, with no guarantees about races.
&gt; Pretty sure a plain old bool would do fine.

I implemented an alternative proposal at Bug 224728. Please let me know what you think.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1753920</commentid>
    <comment_count>15</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-04-24 15:06:23 -0700</bug_when>
    <thetext>&lt;rdar://problem/77110075&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>426316</attachid>
            <date>2021-04-16 20:34:48 -0700</date>
            <delta_ts>2021-04-16 20:51:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224709-20210416203447.patch</filename>
            <type>text/plain</type>
            <size>12148</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc2MTgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGM5Nzg5OTFjNWI4MGRjNTAy
OTI4MTFiNTNmODQwOWY0NzYzOTQwN2MuLmEyMTcwNTU0YjliOWQwYzUwNTQzZDljMDdkNjU3MjAx
MDE0ZTNjNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMjEtMDQtMTYgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBHUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjphbGxvd3NFeGl0VW5kZXJNZW1vcnlQcmVzc3VyZSgpIHNob3VsZCBjaGVjayBpZiBsaWJX
ZWJSVENDb2RlY3NQcm94eSBpcyB1c2VkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMjQ3MDkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBJZiB0aGUgbGliV2ViUlRDQ29kZWNzUHJveHkgaGFzIGVpdGhlciBl
bmNvZGVycyBvciBkZWNvZGVycyB0aGVuIHRoZSBHUFVQcm9jZXNzIHNob3VsZCBub3QKKyAgICAg
ICAgZXhpdCB1bmRlciBtZW1vcnkgcHJlc3N1cmUsIHNpbmNlIGl0IGlzIG5vdCBpZGxlLgorCisg
ICAgICAgICogR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6YWxsb3dzRXhpdFVuZGVyTWVt
b3J5UHJlc3N1cmUgY29uc3QpOgorICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJU
Q0NvZGVjc1Byb3h5Lmg6CisgICAgICAgICogR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29k
ZWNzUHJveHkubW06CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ0NvZGVjc1Byb3h5OjpjcmVh
dGVIMjY0RGVjb2Rlcik6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ0NvZGVjc1Byb3h5Ojpj
cmVhdGVIMjY1RGVjb2Rlcik6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ0NvZGVjc1Byb3h5
OjpjcmVhdGVWUDlEZWNvZGVyKToKKyAgICAgICAgKFdlYktpdDo6TGliV2ViUlRDQ29kZWNzUHJv
eHk6OnJlbGVhc2VEZWNvZGVyKToKKyAgICAgICAgKFdlYktpdDo6TGliV2ViUlRDQ29kZWNzUHJv
eHk6OmNyZWF0ZUVuY29kZXIpOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENDb2RlY3NQcm94
eTo6cmVsZWFzZUVuY29kZXIpOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENDb2RlY3NQcm94
eTo6dXBkYXRlSGFzRW5jb2RlcnNPckRlY29kZXJzKToKKyAgICAgICAgKFdlYktpdDo6TGliV2Vi
UlRDQ29kZWNzUHJveHk6OmFsbG93c0V4aXRVbmRlck1lbW9yeVByZXNzdXJlIGNvbnN0KToKKyAg
ICAgICAgVXNlIGEgc3RkOjphdG9taWM8Ym9vbD4gdG8gZGV0ZXJtaW5lIGlmIHRoZSBMaWJXZWJS
VENDb2RlY3NQcm94eSBoYXMgZW5jb2RlcnMvZGVjb2RlcnMgc2luY2UKKyAgICAgICAgYWxsb3dz
RXhpdFVuZGVyTWVtb3J5UHJlc3N1cmUoKSBnZXRzIGNhbGxlZCBvbiB0aGUgbWFpbiB0aHJlYWQg
YnV0IG1fZW5jb2RlcnMgLyBtX2RlY29kZXJzCisgICAgICAgIGdldCB1cGRhdGVkIG9uIGEgYmFj
a2dyb3VuZCB0aHJlYWQuCisKIDIwMjEtMDQtMTYgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxl
LmNvbT4KIAogICAgICAgICBMaWJXZWJSVENDb2RlY3MgZWFnZXJseSBsYXVuY2hlcyB0aGUgR1BV
UHJvY2VzcyBhbmQgYWx3YXlzIHJlbGF1bmNoZXMgaXQgb24gZXhpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4
IGIxMTI5ZjMyODQ4MTExMGU5ODgzMDc1M2U4NzRlYTAzZTUwMGExNTkuLjg4MjFlZjFiMGQ5Yjlm
ZDQwNDRlOGE1OGUyMWMyOTI4ZDExMzVjNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKQEAgLTMwNiw2ICszMDYs
MTAgQEAgYm9vbCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjphbGxvd3NFeGl0VW5kZXJNZW1v
cnlQcmVzc3VyZSgpIGNvbnN0CiAjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCiAg
ICAgaWYgKG1fbGVnYWN5Q2RtRmFjdG9yeVByb3h5ICYmICFtX2xlZ2FjeUNkbUZhY3RvcnlQcm94
eS0+YWxsb3dzRXhpdFVuZGVyTWVtb3J5UHJlc3N1cmUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OworI2VuZGlmCisjaWYgUExBVEZPUk0oQ09DT0EpICYmIFVTRShMSUJXRUJSVEMpCisgICAgaWYg
KCFtX2xpYldlYlJUQ0NvZGVjc1Byb3h5LT5hbGxvd3NFeGl0VW5kZXJNZW1vcnlQcmVzc3VyZSgp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKICAgICByZXR1cm4gdHJ1ZTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNz
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNz
UHJveHkuaAppbmRleCBkNjI2YTNjMTJkZmRiN2MwYjM3MjM1Mjk1NDNmZThhNDE0MTczNzM0Li41
NDY2NzRkOTRmNjE4NzY0YjA5Njk3ZmQwMWUwYmRlYjBhMDk1MGJjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5LmgKKysrIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5oCkBA
IC01OSw2ICs1OSw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY2xvc2UoKTsKIAorICAgIGJvb2wg
YWxsb3dzRXhpdFVuZGVyTWVtb3J5UHJlc3N1cmUoKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBl
eHBsaWNpdCBMaWJXZWJSVENDb2RlY3NQcm94eShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJik7
CiAKQEAgLTgwLDExICs4MiwxNCBAQCBwcml2YXRlOgogICAgIHZvaWQgZW5jb2RlRnJhbWUoUlRD
RW5jb2RlcklkZW50aWZpZXIsIFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxlJiYsIHVpbnQzMl90
IHRpbWVTdGFtcCwgYm9vbCBzaG91bGRFbmNvZGVBc0tleUZyYW1lKTsKICAgICB2b2lkIHNldEVu
Y29kZVJhdGVzKFJUQ0VuY29kZXJJZGVudGlmaWVyLCB1aW50MzJfdCBiaXRSYXRlLCB1aW50MzJf
dCBmcmFtZVJhdGUpOwogCisgICAgdm9pZCB1cGRhdGVIYXNFbmNvZGVyc09yRGVjb2RlcnMoKTsK
KwogICAgIENGRGljdGlvbmFyeVJlZiBpb1N1cmZhY2VQaXhlbEJ1ZmZlckNyZWF0aW9uT3B0aW9u
cyhJT1N1cmZhY2VSZWYpOwogCiAgICAgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgbV9ncHVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOwogICAgIEhhc2hNYXA8UlRDRGVjb2RlcklkZW50aWZpZXIs
IHdlYnJ0Yzo6TG9jYWxEZWNvZGVyPiBtX2RlY29kZXJzOwogICAgIEhhc2hNYXA8UlRDRW5jb2Rl
cklkZW50aWZpZXIsIHdlYnJ0Yzo6TG9jYWxFbmNvZGVyPiBtX2VuY29kZXJzOworICAgIHN0ZDo6
YXRvbWljPGJvb2w+IG1faGFzRW5jb2RlcnNPckRlY29kZXJzOwogCiAgICAgUmVmPFdvcmtRdWV1
ZT4gbV9xdWV1ZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SW1hZ2VUcmFuc2ZlclNl
c3Npb25WVD4gbV9pbWFnZVRyYW5zZmVyU2Vzc2lvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkubW0gYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5Lm1tCmluZGV4IGIwMmVj
ZjA2YzJiY2Y5OWRjMWIzMWQyY2Q4MjU4NmQyYjJmYmJlMzkuLmQyNGFhOThmNGIxZmNjZWNiNzVj
MDI5N2YzNTA5ZmNjNzY1YjhjMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkubW0KKysrIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5tbQpAQCAtNzgsNiArNzgsNyBAQCB2
b2lkIExpYldlYlJUQ0NvZGVjc1Byb3h5OjpjcmVhdGVIMjY0RGVjb2RlcihSVENEZWNvZGVySWRl
bnRpZmllciBpZGVudGlmaWVyKQogICAgICAgICBpZiAoYXV0byBzYW1wbGUgPSBXZWJDb3JlOjpS
ZW1vdGVWaWRlb1NhbXBsZTo6Y3JlYXRlKHBpeGVsQnVmZmVyLCBNZWRpYVRpbWUodGltZVN0YW1w
TnMsIDEpKSkKICAgICAgICAgICAgIGNvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OkxpYldlYlJU
Q0NvZGVjczo6Q29tcGxldGVkRGVjb2RpbmcgeyBpZGVudGlmaWVyLCB0aW1lU3RhbXAsICpzYW1w
bGUgfSwgMCk7CiAgICAgfSkuZ2V0KCkpKTsKKyAgICB1cGRhdGVIYXNFbmNvZGVyc09yRGVjb2Rl
cnMoKTsKIH0KIAogdm9pZCBMaWJXZWJSVENDb2RlY3NQcm94eTo6Y3JlYXRlSDI2NURlY29kZXIo
UlRDRGVjb2RlcklkZW50aWZpZXIgaWRlbnRpZmllcikKQEAgLTg3LDYgKzg4LDcgQEAgdm9pZCBM
aWJXZWJSVENDb2RlY3NQcm94eTo6Y3JlYXRlSDI2NURlY29kZXIoUlRDRGVjb2RlcklkZW50aWZp
ZXIgaWRlbnRpZmllcikKICAgICAgICAgaWYgKGF1dG8gc2FtcGxlID0gV2ViQ29yZTo6UmVtb3Rl
VmlkZW9TYW1wbGU6OmNyZWF0ZShwaXhlbEJ1ZmZlciwgTWVkaWFUaW1lKHRpbWVTdGFtcE5zLCAx
KSkpCiAgICAgICAgICAgICBjb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpMaWJXZWJSVENDb2Rl
Y3M6OkNvbXBsZXRlZERlY29kaW5nIHsgaWRlbnRpZmllciwgdGltZVN0YW1wLCAqc2FtcGxlIH0s
IDApOwogICAgIH0pLmdldCgpKSk7CisgICAgdXBkYXRlSGFzRW5jb2RlcnNPckRlY29kZXJzKCk7
CiB9CiAKIHZvaWQgTGliV2ViUlRDQ29kZWNzUHJveHk6OmNyZWF0ZVZQOURlY29kZXIoUlRDRGVj
b2RlcklkZW50aWZpZXIgaWRlbnRpZmllcikKQEAgLTk2LDEzICs5OCwxNiBAQCB2b2lkIExpYldl
YlJUQ0NvZGVjc1Byb3h5OjpjcmVhdGVWUDlEZWNvZGVyKFJUQ0RlY29kZXJJZGVudGlmaWVyIGlk
ZW50aWZpZXIpCiAgICAgICAgIGlmIChhdXRvIHNhbXBsZSA9IFdlYkNvcmU6OlJlbW90ZVZpZGVv
U2FtcGxlOjpjcmVhdGUocGl4ZWxCdWZmZXIsIE1lZGlhVGltZSh0aW1lU3RhbXBOcywgMSkpKQog
ICAgICAgICAgICAgY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6TGliV2ViUlRDQ29kZWNzOjpD
b21wbGV0ZWREZWNvZGluZyB7IGlkZW50aWZpZXIsIHRpbWVTdGFtcCwgKnNhbXBsZSB9LCAwKTsK
ICAgICB9KS5nZXQoKSkpOworICAgIHVwZGF0ZUhhc0VuY29kZXJzT3JEZWNvZGVycygpOwogfQog
CiB2b2lkIExpYldlYlJUQ0NvZGVjc1Byb3h5OjpyZWxlYXNlRGVjb2RlcihSVENEZWNvZGVySWRl
bnRpZmllciBpZGVudGlmaWVyKQogewogICAgIEFTU0VSVChtX2RlY29kZXJzLmNvbnRhaW5zKGlk
ZW50aWZpZXIpKTsKLSAgICBpZiAoYXV0byBkZWNvZGVyID0gbV9kZWNvZGVycy50YWtlKGlkZW50
aWZpZXIpKQorICAgIGlmIChhdXRvIGRlY29kZXIgPSBtX2RlY29kZXJzLnRha2UoaWRlbnRpZmll
cikpIHsKICAgICAgICAgd2VicnRjOjpyZWxlYXNlTG9jYWxEZWNvZGVyKGRlY29kZXIpOworICAg
ICAgICB1cGRhdGVIYXNFbmNvZGVyc09yRGVjb2RlcnMoKTsKKyAgICB9CiB9CiAKIHZvaWQgTGli
V2ViUlRDQ29kZWNzUHJveHk6OmRlY29kZUZyYW1lKFJUQ0RlY29kZXJJZGVudGlmaWVyIGlkZW50
aWZpZXIsIHVpbnQzMl90IHRpbWVTdGFtcCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRh
KQpAQCAtMTM5LDEzICsxNDQsMTYgQEAgdm9pZCBMaWJXZWJSVENDb2RlY3NQcm94eTo6Y3JlYXRl
RW5jb2RlcihSVENFbmNvZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdAogICAgIH0pLmdl
dCgpKTsKICAgICB3ZWJydGM6OnNldExvY2FsRW5jb2Rlckxvd0xhdGVuY3koZW5jb2RlciwgdXNl
TG93TGF0ZW5jeSk7CiAgICAgbV9lbmNvZGVycy5hZGQoaWRlbnRpZmllciwgZW5jb2Rlcik7Cisg
ICAgdXBkYXRlSGFzRW5jb2RlcnNPckRlY29kZXJzKCk7CiB9CiAKIHZvaWQgTGliV2ViUlRDQ29k
ZWNzUHJveHk6OnJlbGVhc2VFbmNvZGVyKFJUQ0VuY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIp
CiB7CiAgICAgQVNTRVJUKG1fZW5jb2RlcnMuY29udGFpbnMoaWRlbnRpZmllcikpOwotICAgIGlm
IChhdXRvIGVuY29kZXIgPSBtX2VuY29kZXJzLnRha2UoaWRlbnRpZmllcikpCisgICAgaWYgKGF1
dG8gZW5jb2RlciA9IG1fZW5jb2RlcnMudGFrZShpZGVudGlmaWVyKSkgewogICAgICAgICB3ZWJy
dGM6OnJlbGVhc2VMb2NhbEVuY29kZXIoZW5jb2Rlcik7CisgICAgICAgIHVwZGF0ZUhhc0VuY29k
ZXJzT3JEZWNvZGVycygpOworICAgIH0KIH0KIAogdm9pZCBMaWJXZWJSVENDb2RlY3NQcm94eTo6
aW5pdGlhbGl6ZUVuY29kZXIoUlRDRW5jb2RlcklkZW50aWZpZXIgaWRlbnRpZmllciwgdWludDE2
X3Qgd2lkdGgsIHVpbnQxNl90IGhlaWdodCwgdW5zaWduZWQgc3RhcnRCaXRyYXRlLCB1bnNpZ25l
ZCBtYXhCaXRyYXRlLCB1bnNpZ25lZCBtaW5CaXRyYXRlLCB1aW50MzJfdCBtYXhGcmFtZXJhdGUp
CkBAIC0xOTksNiArMjA3LDE2IEBAIHZvaWQgTGliV2ViUlRDQ29kZWNzUHJveHk6OnNldEVuY29k
ZVJhdGVzKFJUQ0VuY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIHVpbnQzCiAgICAgd2VicnRj
OjpzZXRMb2NhbEVuY29kZXJSYXRlcyhlbmNvZGVyLCBiaXRSYXRlLCBmcmFtZVJhdGUpOwogfQog
Cit2b2lkIExpYldlYlJUQ0NvZGVjc1Byb3h5Ojp1cGRhdGVIYXNFbmNvZGVyc09yRGVjb2RlcnMo
KQoreworICAgIG1faGFzRW5jb2RlcnNPckRlY29kZXJzID0gIW1fZW5jb2RlcnMuaXNFbXB0eSgp
IHx8ICFtX2RlY29kZXJzLmlzRW1wdHkoKTsKK30KKworYm9vbCBMaWJXZWJSVENDb2RlY3NQcm94
eTo6YWxsb3dzRXhpdFVuZGVyTWVtb3J5UHJlc3N1cmUoKSBjb25zdAoreworICAgIHJldHVybiAh
bV9oYXNFbmNvZGVyc09yRGVjb2RlcnM7Cit9CisKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9U
b29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNTE5MmY4MWU4MGU4ODNmNzgz
YTRmNWY5OGY3ZDJhZjRiYmNhYTYyNy4uZDM3NzRhYzcyNTg0Y2I2YTg4OGNjN2NmMDljMGM3ODY0
YjJhNDBjZCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE3IEBACisyMDIxLTA0LTE2ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBs
ZS5jb20+CisKKyAgICAgICAgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6YWxsb3dzRXhpdFVu
ZGVyTWVtb3J5UHJlc3N1cmUoKSBzaG91bGQgY2hlY2sgaWYgbGliV2ViUlRDQ29kZWNzUHJveHkg
aXMgdXNlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjI0NzA5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkIEFQSSB0ZXN0IGNvdmVyYWdlLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9HUFVQcm9jZXNzLm1tOgorICAgICAgICAocnVuTWVtb3J5UHJlc3N1cmVFeGl0
VGVzdCk6CisgICAgICAgICh3YWl0VW50aWxDYXB0dXJlU3RhdGUpOgorICAgICAgICAoVEVTVCk6
CisKIDIwMjEtMDQtMTYgIEthdGUgQ2hlbmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+
CiAKICAgICAgICAgRGlzYWJsZSBhcHAtYm91bmQgcmVxdWVzdCBBUEkgdGVzdHMgb24gc3BlY2lm
aWMgT1MgdmVyc2lvbnMKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvR1BVUHJvY2Vzcy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvR1BVUHJvY2Vzcy5tbQppbmRleCBhYjVkOWE1NDkyMzZkYzg4YjEwYTdlODE1ODgzN2Rm
M2RhMTQzZDU2Li4wOGVmMmYwMTNiMzFmMDA1YWE5Y2ZlNGU2ZGFjNGNiMDQyZjMzOGUwIDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0dQVVByb2Nlc3Mu
bW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9HUFVQcm9jZXNz
Lm1tCkBAIC0yOCwxMSArMjgsMTMgQEAKICNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCiAj
aW1wb3J0ICJUZXN0TmF2aWdhdGlvbkRlbGVnYXRlLmgiCiAjaW1wb3J0ICJUZXN0V0tXZWJWaWV3
LmgiCisjaW1wb3J0ICJVc2VyTWVkaWFDYXB0dXJlVUlEZWxlZ2F0ZS5oIgogI2ltcG9ydCA8V2Vi
S2l0L1dLUHJlZmVyZW5jZXNQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tQcmVmZXJlbmNl
c1JlZlByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oPgog
I2ltcG9ydCA8V2ViS2l0L1dLU3RyaW5nLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3Q29u
ZmlndXJhdGlvbi5oPgorI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2
YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3UHJpdmF0ZS5oPgogI2ltcG9ydCA8bm90
aWZ5Lmg+CiAjaW1wb3J0IDx3dGYvRnVuY3Rpb24uaD4KQEAgLTQ5MywxNCArNDk1LDE5IEBAIFRF
U1QoR1BVUHJvY2VzcywgQ2FudmFzQmFzaWNDcmFzaEhhbmRsaW5nKQogICAgIFRlc3RXZWJLaXRB
UEk6OlV0aWw6OnJ1bigmZG9uZSk7CiB9CiAKLXN0YXRpYyB2b2lkIHJ1bk1lbW9yeVByZXNzdXJl
RXhpdFRlc3QoRnVuY3Rpb248dm9pZChXS1dlYlZpZXcgKik+JiYgbG9hZFRlc3RQYWdlU3luY2hy
b25vdXNseSkKK3N0YXRpYyB2b2lkIHJ1bk1lbW9yeVByZXNzdXJlRXhpdFRlc3QoRnVuY3Rpb248
dm9pZChXS1dlYlZpZXcgKik+JiYgbG9hZFRlc3RQYWdlU3luY2hyb25vdXNseSwgRnVuY3Rpb248
dm9pZChXS1dlYlZpZXdDb25maWd1cmF0aW9uICopPiYmIHVwZGF0ZUNvbmZpZ3VyYXRpb24gPSBb
XShXS1dlYlZpZXdDb25maWd1cmF0aW9uICopIHsgfSkKIHsKICAgICBhdXRvIGNvbmZpZ3VyYXRp
b24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwogICAg
IFdLUHJlZmVyZW5jZXNTZXRCb29sVmFsdWVGb3JLZXlGb3JUZXN0aW5nKChfX2JyaWRnZSBXS1By
ZWZlcmVuY2VzUmVmKVtjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXSwgdHJ1ZSwgV0tTdHJpbmdD
cmVhdGVXaXRoVVRGOENTdHJpbmcoIlVzZUdQVVByb2Nlc3NGb3JNZWRpYUVuYWJsZWQiKSk7CiAg
ICAgV0tQcmVmZXJlbmNlc1NldEJvb2xWYWx1ZUZvcktleUZvclRlc3RpbmcoKF9fYnJpZGdlIFdL
UHJlZmVyZW5jZXNSZWYpW2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNdLCB0cnVlLCBXS1N0cmlu
Z0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiQ2FwdHVyZVZpZGVvSW5HUFVQcm9jZXNzRW5hYmxlZCIp
KTsKKyAgICBXS1ByZWZlcmVuY2VzU2V0Qm9vbFZhbHVlRm9yS2V5Rm9yVGVzdGluZygoX19icmlk
Z2UgV0tQcmVmZXJlbmNlc1JlZilbY29uZmlndXJhdGlvbiBwcmVmZXJlbmNlc10sIHRydWUsIFdL
U3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJDYXB0dXJlQXVkaW9JbkdQVVByb2Nlc3NFbmFi
bGVkIikpOworICAgIFdLUHJlZmVyZW5jZXNTZXRCb29sVmFsdWVGb3JLZXlGb3JUZXN0aW5nKChf
X2JyaWRnZSBXS1ByZWZlcmVuY2VzUmVmKVtjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXSwgdHJ1
ZSwgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIldlYlJUQ1BsYXRmb3JtQ29kZWNzSW5H
UFVQcm9jZXNzRW5hYmxlZCIpKTsKKyAgICBXS1ByZWZlcmVuY2VzU2V0Qm9vbFZhbHVlRm9yS2V5
Rm9yVGVzdGluZygoX19icmlkZ2UgV0tQcmVmZXJlbmNlc1JlZilbY29uZmlndXJhdGlvbiBwcmVm
ZXJlbmNlc10sIGZhbHNlLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiQ2FwdHVyZUF1
ZGlvSW5VSVByb2Nlc3NFbmFibGVkIikpOwogICAgIFdLUHJlZmVyZW5jZXNTZXRCb29sVmFsdWVG
b3JLZXlGb3JUZXN0aW5nKChfX2JyaWRnZSBXS1ByZWZlcmVuY2VzUmVmKVtjb25maWd1cmF0aW9u
IHByZWZlcmVuY2VzXSwgdHJ1ZSwgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlVzZUdQ
VVByb2Nlc3NGb3JDYW52YXNSZW5kZXJpbmdFbmFibGVkIikpOwogICAgIFdLUHJlZmVyZW5jZXNT
ZXRCb29sVmFsdWVGb3JLZXlGb3JUZXN0aW5nKChfX2JyaWRnZSBXS1ByZWZlcmVuY2VzUmVmKVtj
b25maWd1cmF0aW9uIHByZWZlcmVuY2VzXSwgZmFsc2UsIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhD
U3RyaW5nKCJVc2VHUFVQcm9jZXNzRm9yRE9NUmVuZGVyaW5nRW5hYmxlZCIpKTsKIAorICAgIHVw
ZGF0ZUNvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbi5nZXQoKSk7CisKICAgICBhdXRvIHdlYlZp
ZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RN
YWtlKDAsIDAsIDQwMCwgNDAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsK
ICAgICBsb2FkVGVzdFBhZ2VTeW5jaHJvbm91c2x5KHdlYlZpZXcuZ2V0KCkpOwogCkBAIC01NjUs
NiArNTcyLDQwIEBAIFRFU1QoR1BVUHJvY2VzcywgRXhpdHNVbmRlck1lbW9yeVByZXNzdXJlVmlk
ZW9DYXNlKQogICAgIH0pOwogfQogCitzdGF0aWMgYm9vbCB3YWl0VW50aWxDYXB0dXJlU3RhdGUo
V0tXZWJWaWV3ICp3ZWJWaWV3LCBfV0tNZWRpYUNhcHR1cmVTdGF0ZURlcHJlY2F0ZWQgZXhwZWN0
ZWRTdGF0ZSkKK3sKKyAgICBOU1RpbWVJbnRlcnZhbCBlbmQgPSBbW05TRGF0ZSBkYXRlXSB0aW1l
SW50ZXJ2YWxTaW5jZVJlZmVyZW5jZURhdGVdICsgMTA7CisgICAgZG8geworICAgICAgICBpZiAo
W3dlYlZpZXcgX21lZGlhQ2FwdHVyZVN0YXRlXSA9PSBleHBlY3RlZFN0YXRlKQorICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6c3BpblJ1bkxv
b3AoMSk7CisKKyAgICAgICAgaWYgKFtbTlNEYXRlIGRhdGVdIHRpbWVJbnRlcnZhbFNpbmNlUmVm
ZXJlbmNlRGF0ZV0gPiBlbmQpCisgICAgICAgICAgICBicmVhazsKKyAgICB9IHdoaWxlICh0cnVl
KTsKKworICAgIHJldHVybiBmYWxzZTsKK30KKworVEVTVChHUFVQcm9jZXNzLCBFeGl0c1VuZGVy
TWVtb3J5UHJlc3N1cmVXZWJSVENDYXNlKQoreworICAgIHJ1bk1lbW9yeVByZXNzdXJlRXhpdFRl
c3QoW10oV0tXZWJWaWV3ICp3ZWJWaWV3KSB7CisgICAgICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9w
dE5TKFtbVXNlck1lZGlhQ2FwdHVyZVVJRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKKyAgICAgICAg
d2ViVmlldy5VSURlbGVnYXRlID0gZGVsZWdhdGUuZ2V0KCk7CisKKyAgICAgICAgW3dlYlZpZXcg
bG9hZFRlc3RQYWdlTmFtZWQ6QCJnZXRVc2VyTWVkaWEiXTsKKyAgICAgICAgRVhQRUNUX1RSVUUo
d2FpdFVudGlsQ2FwdHVyZVN0YXRlKHdlYlZpZXcsIF9XS01lZGlhQ2FwdHVyZVN0YXRlRGVwcmVj
YXRlZEFjdGl2ZUNhbWVyYSkpOworICAgICAgICBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdK
YXZhU2NyaXB0OkAiY2FwdHVyZUF1ZGlvQW5kVmlkZW8odHJ1ZSkiXTsKKyAgICAgICAgW3dlYlZp
ZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImNyZWF0ZUNvbm5lY3Rpb24oKSJdOwor
ICAgIH0sIFtdKFdLV2ViVmlld0NvbmZpZ3VyYXRpb24qIGNvbmZpZ3VyYXRpb24pIHsKKyAgICAg
ICAgYXV0byBwcmVmZXJlbmNlcyA9IGNvbmZpZ3VyYXRpb24ucHJlZmVyZW5jZXM7CisgICAgICAg
IHByZWZlcmVuY2VzLl9tZWRpYUNhcHR1cmVSZXF1aXJlc1NlY3VyZUNvbm5lY3Rpb24gPSBOTzsK
KyAgICAgICAgY29uZmlndXJhdGlvbi5fbWVkaWFDYXB0dXJlRW5hYmxlZCA9IFlFUzsKKyAgICAg
ICAgcHJlZmVyZW5jZXMuX21vY2tDYXB0dXJlRGV2aWNlc0VuYWJsZWQgPSBZRVM7CisgICAgfSk7
Cit9CisKIFRFU1QoR1BVUHJvY2VzcywgRXhpdHNVbmRlck1lbW9yeVByZXNzdXJlV2ViQXVkaW9D
YXNlKQogewogICAgIHJ1bk1lbW9yeVByZXNzdXJlRXhpdFRlc3QoW10oV0tXZWJWaWV3ICp3ZWJW
aWV3KSB7Cg==
</data>
<flag name="commit-queue"
          id="446565"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>426318</attachid>
            <date>2021-04-16 20:38:45 -0700</date>
            <delta_ts>2021-04-17 18:35:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224709-20210416203844.patch</filename>
            <type>text/plain</type>
            <size>12206</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc2MTgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGM5Nzg5OTFjNWI4MGRjNTAy
OTI4MTFiNTNmODQwOWY0NzYzOTQwN2MuLmEyMTcwNTU0YjliOWQwYzUwNTQzZDljMDdkNjU3MjAx
MDE0ZTNjNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMjEtMDQtMTYgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBHUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjphbGxvd3NFeGl0VW5kZXJNZW1vcnlQcmVzc3VyZSgpIHNob3VsZCBjaGVjayBpZiBsaWJX
ZWJSVENDb2RlY3NQcm94eSBpcyB1c2VkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMjQ3MDkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBJZiB0aGUgbGliV2ViUlRDQ29kZWNzUHJveHkgaGFzIGVpdGhlciBl
bmNvZGVycyBvciBkZWNvZGVycyB0aGVuIHRoZSBHUFVQcm9jZXNzIHNob3VsZCBub3QKKyAgICAg
ICAgZXhpdCB1bmRlciBtZW1vcnkgcHJlc3N1cmUsIHNpbmNlIGl0IGlzIG5vdCBpZGxlLgorCisg
ICAgICAgICogR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6YWxsb3dzRXhpdFVuZGVyTWVt
b3J5UHJlc3N1cmUgY29uc3QpOgorICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJU
Q0NvZGVjc1Byb3h5Lmg6CisgICAgICAgICogR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29k
ZWNzUHJveHkubW06CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ0NvZGVjc1Byb3h5OjpjcmVh
dGVIMjY0RGVjb2Rlcik6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ0NvZGVjc1Byb3h5Ojpj
cmVhdGVIMjY1RGVjb2Rlcik6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ0NvZGVjc1Byb3h5
OjpjcmVhdGVWUDlEZWNvZGVyKToKKyAgICAgICAgKFdlYktpdDo6TGliV2ViUlRDQ29kZWNzUHJv
eHk6OnJlbGVhc2VEZWNvZGVyKToKKyAgICAgICAgKFdlYktpdDo6TGliV2ViUlRDQ29kZWNzUHJv
eHk6OmNyZWF0ZUVuY29kZXIpOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENDb2RlY3NQcm94
eTo6cmVsZWFzZUVuY29kZXIpOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENDb2RlY3NQcm94
eTo6dXBkYXRlSGFzRW5jb2RlcnNPckRlY29kZXJzKToKKyAgICAgICAgKFdlYktpdDo6TGliV2Vi
UlRDQ29kZWNzUHJveHk6OmFsbG93c0V4aXRVbmRlck1lbW9yeVByZXNzdXJlIGNvbnN0KToKKyAg
ICAgICAgVXNlIGEgc3RkOjphdG9taWM8Ym9vbD4gdG8gZGV0ZXJtaW5lIGlmIHRoZSBMaWJXZWJS
VENDb2RlY3NQcm94eSBoYXMgZW5jb2RlcnMvZGVjb2RlcnMgc2luY2UKKyAgICAgICAgYWxsb3dz
RXhpdFVuZGVyTWVtb3J5UHJlc3N1cmUoKSBnZXRzIGNhbGxlZCBvbiB0aGUgbWFpbiB0aHJlYWQg
YnV0IG1fZW5jb2RlcnMgLyBtX2RlY29kZXJzCisgICAgICAgIGdldCB1cGRhdGVkIG9uIGEgYmFj
a2dyb3VuZCB0aHJlYWQuCisKIDIwMjEtMDQtMTYgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxl
LmNvbT4KIAogICAgICAgICBMaWJXZWJSVENDb2RlY3MgZWFnZXJseSBsYXVuY2hlcyB0aGUgR1BV
UHJvY2VzcyBhbmQgYWx3YXlzIHJlbGF1bmNoZXMgaXQgb24gZXhpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4
IGIxMTI5ZjMyODQ4MTExMGU5ODgzMDc1M2U4NzRlYTAzZTUwMGExNTkuLjg4MjFlZjFiMGQ5Yjlm
ZDQwNDRlOGE1OGUyMWMyOTI4ZDExMzVjNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKQEAgLTMwNiw2ICszMDYs
MTAgQEAgYm9vbCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjphbGxvd3NFeGl0VW5kZXJNZW1v
cnlQcmVzc3VyZSgpIGNvbnN0CiAjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCiAg
ICAgaWYgKG1fbGVnYWN5Q2RtRmFjdG9yeVByb3h5ICYmICFtX2xlZ2FjeUNkbUZhY3RvcnlQcm94
eS0+YWxsb3dzRXhpdFVuZGVyTWVtb3J5UHJlc3N1cmUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OworI2VuZGlmCisjaWYgUExBVEZPUk0oQ09DT0EpICYmIFVTRShMSUJXRUJSVEMpCisgICAgaWYg
KCFtX2xpYldlYlJUQ0NvZGVjc1Byb3h5LT5hbGxvd3NFeGl0VW5kZXJNZW1vcnlQcmVzc3VyZSgp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKICAgICByZXR1cm4gdHJ1ZTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNz
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNz
UHJveHkuaAppbmRleCBkNjI2YTNjMTJkZmRiN2MwYjM3MjM1Mjk1NDNmZThhNDE0MTczNzM0Li41
NDY2NzRkOTRmNjE4NzY0YjA5Njk3ZmQwMWUwYmRlYjBhMDk1MGJjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5LmgKKysrIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5oCkBA
IC01OSw2ICs1OSw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY2xvc2UoKTsKIAorICAgIGJvb2wg
YWxsb3dzRXhpdFVuZGVyTWVtb3J5UHJlc3N1cmUoKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBl
eHBsaWNpdCBMaWJXZWJSVENDb2RlY3NQcm94eShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJik7
CiAKQEAgLTgwLDExICs4MiwxNCBAQCBwcml2YXRlOgogICAgIHZvaWQgZW5jb2RlRnJhbWUoUlRD
RW5jb2RlcklkZW50aWZpZXIsIFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxlJiYsIHVpbnQzMl90
IHRpbWVTdGFtcCwgYm9vbCBzaG91bGRFbmNvZGVBc0tleUZyYW1lKTsKICAgICB2b2lkIHNldEVu
Y29kZVJhdGVzKFJUQ0VuY29kZXJJZGVudGlmaWVyLCB1aW50MzJfdCBiaXRSYXRlLCB1aW50MzJf
dCBmcmFtZVJhdGUpOwogCisgICAgdm9pZCB1cGRhdGVIYXNFbmNvZGVyc09yRGVjb2RlcnMoKTsK
KwogICAgIENGRGljdGlvbmFyeVJlZiBpb1N1cmZhY2VQaXhlbEJ1ZmZlckNyZWF0aW9uT3B0aW9u
cyhJT1N1cmZhY2VSZWYpOwogCiAgICAgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgbV9ncHVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOwogICAgIEhhc2hNYXA8UlRDRGVjb2RlcklkZW50aWZpZXIs
IHdlYnJ0Yzo6TG9jYWxEZWNvZGVyPiBtX2RlY29kZXJzOwogICAgIEhhc2hNYXA8UlRDRW5jb2Rl
cklkZW50aWZpZXIsIHdlYnJ0Yzo6TG9jYWxFbmNvZGVyPiBtX2VuY29kZXJzOworICAgIHN0ZDo6
YXRvbWljPGJvb2w+IG1faGFzRW5jb2RlcnNPckRlY29kZXJzOwogCiAgICAgUmVmPFdvcmtRdWV1
ZT4gbV9xdWV1ZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SW1hZ2VUcmFuc2ZlclNl
c3Npb25WVD4gbV9pbWFnZVRyYW5zZmVyU2Vzc2lvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkubW0gYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5Lm1tCmluZGV4IGIwMmVj
ZjA2YzJiY2Y5OWRjMWIzMWQyY2Q4MjU4NmQyYjJmYmJlMzkuLmQyNGFhOThmNGIxZmNjZWNiNzVj
MDI5N2YzNTA5ZmNjNzY1YjhjMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkubW0KKysrIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5tbQpAQCAtNzgsNiArNzgsNyBAQCB2
b2lkIExpYldlYlJUQ0NvZGVjc1Byb3h5OjpjcmVhdGVIMjY0RGVjb2RlcihSVENEZWNvZGVySWRl
bnRpZmllciBpZGVudGlmaWVyKQogICAgICAgICBpZiAoYXV0byBzYW1wbGUgPSBXZWJDb3JlOjpS
ZW1vdGVWaWRlb1NhbXBsZTo6Y3JlYXRlKHBpeGVsQnVmZmVyLCBNZWRpYVRpbWUodGltZVN0YW1w
TnMsIDEpKSkKICAgICAgICAgICAgIGNvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OkxpYldlYlJU
Q0NvZGVjczo6Q29tcGxldGVkRGVjb2RpbmcgeyBpZGVudGlmaWVyLCB0aW1lU3RhbXAsICpzYW1w
bGUgfSwgMCk7CiAgICAgfSkuZ2V0KCkpKTsKKyAgICB1cGRhdGVIYXNFbmNvZGVyc09yRGVjb2Rl
cnMoKTsKIH0KIAogdm9pZCBMaWJXZWJSVENDb2RlY3NQcm94eTo6Y3JlYXRlSDI2NURlY29kZXIo
UlRDRGVjb2RlcklkZW50aWZpZXIgaWRlbnRpZmllcikKQEAgLTg3LDYgKzg4LDcgQEAgdm9pZCBM
aWJXZWJSVENDb2RlY3NQcm94eTo6Y3JlYXRlSDI2NURlY29kZXIoUlRDRGVjb2RlcklkZW50aWZp
ZXIgaWRlbnRpZmllcikKICAgICAgICAgaWYgKGF1dG8gc2FtcGxlID0gV2ViQ29yZTo6UmVtb3Rl
VmlkZW9TYW1wbGU6OmNyZWF0ZShwaXhlbEJ1ZmZlciwgTWVkaWFUaW1lKHRpbWVTdGFtcE5zLCAx
KSkpCiAgICAgICAgICAgICBjb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpMaWJXZWJSVENDb2Rl
Y3M6OkNvbXBsZXRlZERlY29kaW5nIHsgaWRlbnRpZmllciwgdGltZVN0YW1wLCAqc2FtcGxlIH0s
IDApOwogICAgIH0pLmdldCgpKSk7CisgICAgdXBkYXRlSGFzRW5jb2RlcnNPckRlY29kZXJzKCk7
CiB9CiAKIHZvaWQgTGliV2ViUlRDQ29kZWNzUHJveHk6OmNyZWF0ZVZQOURlY29kZXIoUlRDRGVj
b2RlcklkZW50aWZpZXIgaWRlbnRpZmllcikKQEAgLTk2LDEzICs5OCwxNiBAQCB2b2lkIExpYldl
YlJUQ0NvZGVjc1Byb3h5OjpjcmVhdGVWUDlEZWNvZGVyKFJUQ0RlY29kZXJJZGVudGlmaWVyIGlk
ZW50aWZpZXIpCiAgICAgICAgIGlmIChhdXRvIHNhbXBsZSA9IFdlYkNvcmU6OlJlbW90ZVZpZGVv
U2FtcGxlOjpjcmVhdGUocGl4ZWxCdWZmZXIsIE1lZGlhVGltZSh0aW1lU3RhbXBOcywgMSkpKQog
ICAgICAgICAgICAgY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6TGliV2ViUlRDQ29kZWNzOjpD
b21wbGV0ZWREZWNvZGluZyB7IGlkZW50aWZpZXIsIHRpbWVTdGFtcCwgKnNhbXBsZSB9LCAwKTsK
ICAgICB9KS5nZXQoKSkpOworICAgIHVwZGF0ZUhhc0VuY29kZXJzT3JEZWNvZGVycygpOwogfQog
CiB2b2lkIExpYldlYlJUQ0NvZGVjc1Byb3h5OjpyZWxlYXNlRGVjb2RlcihSVENEZWNvZGVySWRl
bnRpZmllciBpZGVudGlmaWVyKQogewogICAgIEFTU0VSVChtX2RlY29kZXJzLmNvbnRhaW5zKGlk
ZW50aWZpZXIpKTsKLSAgICBpZiAoYXV0byBkZWNvZGVyID0gbV9kZWNvZGVycy50YWtlKGlkZW50
aWZpZXIpKQorICAgIGlmIChhdXRvIGRlY29kZXIgPSBtX2RlY29kZXJzLnRha2UoaWRlbnRpZmll
cikpIHsKICAgICAgICAgd2VicnRjOjpyZWxlYXNlTG9jYWxEZWNvZGVyKGRlY29kZXIpOworICAg
ICAgICB1cGRhdGVIYXNFbmNvZGVyc09yRGVjb2RlcnMoKTsKKyAgICB9CiB9CiAKIHZvaWQgTGli
V2ViUlRDQ29kZWNzUHJveHk6OmRlY29kZUZyYW1lKFJUQ0RlY29kZXJJZGVudGlmaWVyIGlkZW50
aWZpZXIsIHVpbnQzMl90IHRpbWVTdGFtcCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRh
KQpAQCAtMTM5LDEzICsxNDQsMTYgQEAgdm9pZCBMaWJXZWJSVENDb2RlY3NQcm94eTo6Y3JlYXRl
RW5jb2RlcihSVENFbmNvZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdAogICAgIH0pLmdl
dCgpKTsKICAgICB3ZWJydGM6OnNldExvY2FsRW5jb2Rlckxvd0xhdGVuY3koZW5jb2RlciwgdXNl
TG93TGF0ZW5jeSk7CiAgICAgbV9lbmNvZGVycy5hZGQoaWRlbnRpZmllciwgZW5jb2Rlcik7Cisg
ICAgdXBkYXRlSGFzRW5jb2RlcnNPckRlY29kZXJzKCk7CiB9CiAKIHZvaWQgTGliV2ViUlRDQ29k
ZWNzUHJveHk6OnJlbGVhc2VFbmNvZGVyKFJUQ0VuY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIp
CiB7CiAgICAgQVNTRVJUKG1fZW5jb2RlcnMuY29udGFpbnMoaWRlbnRpZmllcikpOwotICAgIGlm
IChhdXRvIGVuY29kZXIgPSBtX2VuY29kZXJzLnRha2UoaWRlbnRpZmllcikpCisgICAgaWYgKGF1
dG8gZW5jb2RlciA9IG1fZW5jb2RlcnMudGFrZShpZGVudGlmaWVyKSkgewogICAgICAgICB3ZWJy
dGM6OnJlbGVhc2VMb2NhbEVuY29kZXIoZW5jb2Rlcik7CisgICAgICAgIHVwZGF0ZUhhc0VuY29k
ZXJzT3JEZWNvZGVycygpOworICAgIH0KIH0KIAogdm9pZCBMaWJXZWJSVENDb2RlY3NQcm94eTo6
aW5pdGlhbGl6ZUVuY29kZXIoUlRDRW5jb2RlcklkZW50aWZpZXIgaWRlbnRpZmllciwgdWludDE2
X3Qgd2lkdGgsIHVpbnQxNl90IGhlaWdodCwgdW5zaWduZWQgc3RhcnRCaXRyYXRlLCB1bnNpZ25l
ZCBtYXhCaXRyYXRlLCB1bnNpZ25lZCBtaW5CaXRyYXRlLCB1aW50MzJfdCBtYXhGcmFtZXJhdGUp
CkBAIC0xOTksNiArMjA3LDE2IEBAIHZvaWQgTGliV2ViUlRDQ29kZWNzUHJveHk6OnNldEVuY29k
ZVJhdGVzKFJUQ0VuY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIHVpbnQzCiAgICAgd2VicnRj
OjpzZXRMb2NhbEVuY29kZXJSYXRlcyhlbmNvZGVyLCBiaXRSYXRlLCBmcmFtZVJhdGUpOwogfQog
Cit2b2lkIExpYldlYlJUQ0NvZGVjc1Byb3h5Ojp1cGRhdGVIYXNFbmNvZGVyc09yRGVjb2RlcnMo
KQoreworICAgIG1faGFzRW5jb2RlcnNPckRlY29kZXJzID0gIW1fZW5jb2RlcnMuaXNFbXB0eSgp
IHx8ICFtX2RlY29kZXJzLmlzRW1wdHkoKTsKK30KKworYm9vbCBMaWJXZWJSVENDb2RlY3NQcm94
eTo6YWxsb3dzRXhpdFVuZGVyTWVtb3J5UHJlc3N1cmUoKSBjb25zdAoreworICAgIHJldHVybiAh
bV9oYXNFbmNvZGVyc09yRGVjb2RlcnM7Cit9CisKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9U
b29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNTE5MmY4MWU4MGU4ODNmNzgz
YTRmNWY5OGY3ZDJhZjRiYmNhYTYyNy4uZDM3NzRhYzcyNTg0Y2I2YTg4OGNjN2NmMDljMGM3ODY0
YjJhNDBjZCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE3IEBACisyMDIxLTA0LTE2ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBs
ZS5jb20+CisKKyAgICAgICAgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6YWxsb3dzRXhpdFVu
ZGVyTWVtb3J5UHJlc3N1cmUoKSBzaG91bGQgY2hlY2sgaWYgbGliV2ViUlRDQ29kZWNzUHJveHkg
aXMgdXNlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjI0NzA5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkIEFQSSB0ZXN0IGNvdmVyYWdlLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9HUFVQcm9jZXNzLm1tOgorICAgICAgICAocnVuTWVtb3J5UHJlc3N1cmVFeGl0
VGVzdCk6CisgICAgICAgICh3YWl0VW50aWxDYXB0dXJlU3RhdGUpOgorICAgICAgICAoVEVTVCk6
CisKIDIwMjEtMDQtMTYgIEthdGUgQ2hlbmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+
CiAKICAgICAgICAgRGlzYWJsZSBhcHAtYm91bmQgcmVxdWVzdCBBUEkgdGVzdHMgb24gc3BlY2lm
aWMgT1MgdmVyc2lvbnMKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvR1BVUHJvY2Vzcy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvR1BVUHJvY2Vzcy5tbQppbmRleCBhYjVkOWE1NDkyMzZkYzg4YjEwYTdlODE1ODgzN2Rm
M2RhMTQzZDU2Li43NjFlNWFiZjVjMDhjNTI1ZGQ3ZTI2MGNjNmNmMzZhMzI3MWNlNzg1IDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0dQVVByb2Nlc3Mu
bW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9HUFVQcm9jZXNz
Lm1tCkBAIC0yOCwxMSArMjgsMTMgQEAKICNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCiAj
aW1wb3J0ICJUZXN0TmF2aWdhdGlvbkRlbGVnYXRlLmgiCiAjaW1wb3J0ICJUZXN0V0tXZWJWaWV3
LmgiCisjaW1wb3J0ICJVc2VyTWVkaWFDYXB0dXJlVUlEZWxlZ2F0ZS5oIgogI2ltcG9ydCA8V2Vi
S2l0L1dLUHJlZmVyZW5jZXNQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tQcmVmZXJlbmNl
c1JlZlByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oPgog
I2ltcG9ydCA8V2ViS2l0L1dLU3RyaW5nLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3Q29u
ZmlndXJhdGlvbi5oPgorI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2
YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3UHJpdmF0ZS5oPgogI2ltcG9ydCA8bm90
aWZ5Lmg+CiAjaW1wb3J0IDx3dGYvRnVuY3Rpb24uaD4KQEAgLTQ5MywxNCArNDk1LDE5IEBAIFRF
U1QoR1BVUHJvY2VzcywgQ2FudmFzQmFzaWNDcmFzaEhhbmRsaW5nKQogICAgIFRlc3RXZWJLaXRB
UEk6OlV0aWw6OnJ1bigmZG9uZSk7CiB9CiAKLXN0YXRpYyB2b2lkIHJ1bk1lbW9yeVByZXNzdXJl
RXhpdFRlc3QoRnVuY3Rpb248dm9pZChXS1dlYlZpZXcgKik+JiYgbG9hZFRlc3RQYWdlU3luY2hy
b25vdXNseSkKK3N0YXRpYyB2b2lkIHJ1bk1lbW9yeVByZXNzdXJlRXhpdFRlc3QoRnVuY3Rpb248
dm9pZChXS1dlYlZpZXcgKik+JiYgbG9hZFRlc3RQYWdlU3luY2hyb25vdXNseSwgRnVuY3Rpb248
dm9pZChXS1dlYlZpZXdDb25maWd1cmF0aW9uICopPiYmIHVwZGF0ZUNvbmZpZ3VyYXRpb24gPSBb
XShXS1dlYlZpZXdDb25maWd1cmF0aW9uICopIHsgfSkKIHsKICAgICBhdXRvIGNvbmZpZ3VyYXRp
b24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwogICAg
IFdLUHJlZmVyZW5jZXNTZXRCb29sVmFsdWVGb3JLZXlGb3JUZXN0aW5nKChfX2JyaWRnZSBXS1By
ZWZlcmVuY2VzUmVmKVtjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXSwgdHJ1ZSwgV0tTdHJpbmdD
cmVhdGVXaXRoVVRGOENTdHJpbmcoIlVzZUdQVVByb2Nlc3NGb3JNZWRpYUVuYWJsZWQiKSk7CiAg
ICAgV0tQcmVmZXJlbmNlc1NldEJvb2xWYWx1ZUZvcktleUZvclRlc3RpbmcoKF9fYnJpZGdlIFdL
UHJlZmVyZW5jZXNSZWYpW2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNdLCB0cnVlLCBXS1N0cmlu
Z0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiQ2FwdHVyZVZpZGVvSW5HUFVQcm9jZXNzRW5hYmxlZCIp
KTsKKyAgICBXS1ByZWZlcmVuY2VzU2V0Qm9vbFZhbHVlRm9yS2V5Rm9yVGVzdGluZygoX19icmlk
Z2UgV0tQcmVmZXJlbmNlc1JlZilbY29uZmlndXJhdGlvbiBwcmVmZXJlbmNlc10sIHRydWUsIFdL
U3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJDYXB0dXJlQXVkaW9JbkdQVVByb2Nlc3NFbmFi
bGVkIikpOworICAgIFdLUHJlZmVyZW5jZXNTZXRCb29sVmFsdWVGb3JLZXlGb3JUZXN0aW5nKChf
X2JyaWRnZSBXS1ByZWZlcmVuY2VzUmVmKVtjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXSwgdHJ1
ZSwgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIldlYlJUQ1BsYXRmb3JtQ29kZWNzSW5H
UFVQcm9jZXNzRW5hYmxlZCIpKTsKKyAgICBXS1ByZWZlcmVuY2VzU2V0Qm9vbFZhbHVlRm9yS2V5
Rm9yVGVzdGluZygoX19icmlkZ2UgV0tQcmVmZXJlbmNlc1JlZilbY29uZmlndXJhdGlvbiBwcmVm
ZXJlbmNlc10sIGZhbHNlLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiQ2FwdHVyZUF1
ZGlvSW5VSVByb2Nlc3NFbmFibGVkIikpOwogICAgIFdLUHJlZmVyZW5jZXNTZXRCb29sVmFsdWVG
b3JLZXlGb3JUZXN0aW5nKChfX2JyaWRnZSBXS1ByZWZlcmVuY2VzUmVmKVtjb25maWd1cmF0aW9u
IHByZWZlcmVuY2VzXSwgdHJ1ZSwgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlVzZUdQ
VVByb2Nlc3NGb3JDYW52YXNSZW5kZXJpbmdFbmFibGVkIikpOwogICAgIFdLUHJlZmVyZW5jZXNT
ZXRCb29sVmFsdWVGb3JLZXlGb3JUZXN0aW5nKChfX2JyaWRnZSBXS1ByZWZlcmVuY2VzUmVmKVtj
b25maWd1cmF0aW9uIHByZWZlcmVuY2VzXSwgZmFsc2UsIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhD
U3RyaW5nKCJVc2VHUFVQcm9jZXNzRm9yRE9NUmVuZGVyaW5nRW5hYmxlZCIpKTsKIAorICAgIHVw
ZGF0ZUNvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbi5nZXQoKSk7CisKICAgICBhdXRvIHdlYlZp
ZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RN
YWtlKDAsIDAsIDQwMCwgNDAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsK
ICAgICBsb2FkVGVzdFBhZ2VTeW5jaHJvbm91c2x5KHdlYlZpZXcuZ2V0KCkpOwogCkBAIC01NjUs
NiArNTcyLDQyIEBAIFRFU1QoR1BVUHJvY2VzcywgRXhpdHNVbmRlck1lbW9yeVByZXNzdXJlVmlk
ZW9DYXNlKQogICAgIH0pOwogfQogCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKK3N0YXRpYyBi
b29sIHdhaXRVbnRpbENhcHR1cmVTdGF0ZShXS1dlYlZpZXcgKndlYlZpZXcsIF9XS01lZGlhQ2Fw
dHVyZVN0YXRlRGVwcmVjYXRlZCBleHBlY3RlZFN0YXRlKQoreworICAgIE5TVGltZUludGVydmFs
IGVuZCA9IFtbTlNEYXRlIGRhdGVdIHRpbWVJbnRlcnZhbFNpbmNlUmVmZXJlbmNlRGF0ZV0gKyAx
MDsKKyAgICBkbyB7CisgICAgICAgIGlmIChbd2ViVmlldyBfbWVkaWFDYXB0dXJlU3RhdGVdID09
IGV4cGVjdGVkU3RhdGUpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAgICBUZXN0
V2ViS2l0QVBJOjpVdGlsOjpzcGluUnVuTG9vcCgxKTsKKworICAgICAgICBpZiAoW1tOU0RhdGUg
ZGF0ZV0gdGltZUludGVydmFsU2luY2VSZWZlcmVuY2VEYXRlXSA+IGVuZCkKKyAgICAgICAgICAg
IGJyZWFrOworICAgIH0gd2hpbGUgKHRydWUpOworCisgICAgcmV0dXJuIGZhbHNlOworfQorCitU
RVNUKEdQVVByb2Nlc3MsIEV4aXRzVW5kZXJNZW1vcnlQcmVzc3VyZVdlYlJUQ0Nhc2UpCit7Cisg
ICAgcnVuTWVtb3J5UHJlc3N1cmVFeGl0VGVzdChbXShXS1dlYlZpZXcgKndlYlZpZXcpIHsKKyAg
ICAgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tVc2VyTWVkaWFDYXB0dXJlVUlEZWxlZ2F0
ZSBhbGxvY10gaW5pdF0pOworICAgICAgICB3ZWJWaWV3LlVJRGVsZWdhdGUgPSBkZWxlZ2F0ZS5n
ZXQoKTsKKworICAgICAgICBbd2ViVmlldyBsb2FkVGVzdFBhZ2VOYW1lZDpAImdldFVzZXJNZWRp
YSJdOworICAgICAgICBFWFBFQ1RfVFJVRSh3YWl0VW50aWxDYXB0dXJlU3RhdGUod2ViVmlldywg
X1dLTWVkaWFDYXB0dXJlU3RhdGVEZXByZWNhdGVkQWN0aXZlQ2FtZXJhKSk7CisgICAgICAgIFt3
ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJjYXB0dXJlQXVkaW9BbmRWaWRl
byh0cnVlKSJdOworICAgICAgICBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0
OkAiY3JlYXRlQ29ubmVjdGlvbigpIl07CisgICAgfSwgW10oV0tXZWJWaWV3Q29uZmlndXJhdGlv
biogY29uZmlndXJhdGlvbikgeworICAgICAgICBhdXRvIHByZWZlcmVuY2VzID0gY29uZmlndXJh
dGlvbi5wcmVmZXJlbmNlczsKKyAgICAgICAgcHJlZmVyZW5jZXMuX21lZGlhQ2FwdHVyZVJlcXVp
cmVzU2VjdXJlQ29ubmVjdGlvbiA9IE5POworICAgICAgICBjb25maWd1cmF0aW9uLl9tZWRpYUNh
cHR1cmVFbmFibGVkID0gWUVTOworICAgICAgICBwcmVmZXJlbmNlcy5fbW9ja0NhcHR1cmVEZXZp
Y2VzRW5hYmxlZCA9IFlFUzsKKyAgICB9KTsKK30KKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RS
RUFNKQorCiBURVNUKEdQVVByb2Nlc3MsIEV4aXRzVW5kZXJNZW1vcnlQcmVzc3VyZVdlYkF1ZGlv
Q2FzZSkKIHsKICAgICBydW5NZW1vcnlQcmVzc3VyZUV4aXRUZXN0KFtdKFdLV2ViVmlldyAqd2Vi
Vmlldykgewo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>426358</attachid>
            <date>2021-04-17 18:35:27 -0700</date>
            <delta_ts>2021-04-17 22:23:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224709-20210417183526.patch</filename>
            <type>text/plain</type>
            <size>12201</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc2MjE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDUwYTU3YmRhYWY4ODI0ZDZj
ZDFjMWM3ODM0NmEyOWUzOWRhYzRiNGQuLmUwMDgxZWY4ODMzMGMxYjk2MzkwOTNkZjVjZDE1ODI2
YzM4YzMxZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMjEtMDQtMTcgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBHUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjphbGxvd3NFeGl0VW5kZXJNZW1vcnlQcmVzc3VyZSgpIHNob3VsZCBjaGVjayBpZiBsaWJX
ZWJSVENDb2RlY3NQcm94eSBpcyB1c2VkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMjQ3MDkKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxl
ci4KKworICAgICAgICBJZiB0aGUgbGliV2ViUlRDQ29kZWNzUHJveHkgaGFzIGVpdGhlciBlbmNv
ZGVycyBvciBkZWNvZGVycyB0aGVuIHRoZSBHUFVQcm9jZXNzIHNob3VsZCBub3QKKyAgICAgICAg
ZXhpdCB1bmRlciBtZW1vcnkgcHJlc3N1cmUsIHNpbmNlIGl0IGlzIG5vdCBpZGxlLgorCisgICAg
ICAgICogR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6YWxsb3dzRXhpdFVuZGVyTWVtb3J5
UHJlc3N1cmUgY29uc3QpOgorICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0Nv
ZGVjc1Byb3h5Lmg6CisgICAgICAgICogR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNz
UHJveHkubW06CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ0NvZGVjc1Byb3h5OjpjcmVhdGVI
MjY0RGVjb2Rlcik6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ0NvZGVjc1Byb3h5OjpjcmVh
dGVIMjY1RGVjb2Rlcik6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ0NvZGVjc1Byb3h5Ojpj
cmVhdGVWUDlEZWNvZGVyKToKKyAgICAgICAgKFdlYktpdDo6TGliV2ViUlRDQ29kZWNzUHJveHk6
OnJlbGVhc2VEZWNvZGVyKToKKyAgICAgICAgKFdlYktpdDo6TGliV2ViUlRDQ29kZWNzUHJveHk6
OmNyZWF0ZUVuY29kZXIpOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENDb2RlY3NQcm94eTo6
cmVsZWFzZUVuY29kZXIpOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENDb2RlY3NQcm94eTo6
dXBkYXRlSGFzRW5jb2RlcnNPckRlY29kZXJzKToKKyAgICAgICAgKFdlYktpdDo6TGliV2ViUlRD
Q29kZWNzUHJveHk6OmFsbG93c0V4aXRVbmRlck1lbW9yeVByZXNzdXJlIGNvbnN0KToKKyAgICAg
ICAgVXNlIGEgc3RkOjphdG9taWM8Ym9vbD4gdG8gZGV0ZXJtaW5lIGlmIHRoZSBMaWJXZWJSVEND
b2RlY3NQcm94eSBoYXMgZW5jb2RlcnMvZGVjb2RlcnMgc2luY2UKKyAgICAgICAgYWxsb3dzRXhp
dFVuZGVyTWVtb3J5UHJlc3N1cmUoKSBnZXRzIGNhbGxlZCBvbiB0aGUgbWFpbiB0aHJlYWQgYnV0
IG1fZW5jb2RlcnMgLyBtX2RlY29kZXJzCisgICAgICAgIGdldCB1cGRhdGVkIG9uIGEgYmFja2dy
b3VuZCB0aHJlYWQuCisKIDIwMjEtMDQtMTcgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNv
bT4KIAogICAgICAgICBMaWJXZWJSVENDb2RlY3MgZWFnZXJseSBsYXVuY2hlcyB0aGUgR1BVUHJv
Y2VzcyBhbmQgYWx3YXlzIHJlbGF1bmNoZXMgaXQgb24gZXhpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IGIx
MTI5ZjMyODQ4MTExMGU5ODgzMDc1M2U4NzRlYTAzZTUwMGExNTkuLjg4MjFlZjFiMGQ5YjlmZDQw
NDRlOGE1OGUyMWMyOTI4ZDExMzVjNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKQEAgLTMwNiw2ICszMDYsMTAg
QEAgYm9vbCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjphbGxvd3NFeGl0VW5kZXJNZW1vcnlQ
cmVzc3VyZSgpIGNvbnN0CiAjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCiAgICAg
aWYgKG1fbGVnYWN5Q2RtRmFjdG9yeVByb3h5ICYmICFtX2xlZ2FjeUNkbUZhY3RvcnlQcm94eS0+
YWxsb3dzRXhpdFVuZGVyTWVtb3J5UHJlc3N1cmUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwor
I2VuZGlmCisjaWYgUExBVEZPUk0oQ09DT0EpICYmIFVTRShMSUJXRUJSVEMpCisgICAgaWYgKCFt
X2xpYldlYlJUQ0NvZGVjc1Byb3h5LT5hbGxvd3NFeGl0VW5kZXJNZW1vcnlQcmVzc3VyZSgpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKICAgICByZXR1cm4gdHJ1ZTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJv
eHkuaAppbmRleCBkNjI2YTNjMTJkZmRiN2MwYjM3MjM1Mjk1NDNmZThhNDE0MTczNzM0Li41NDY2
NzRkOTRmNjE4NzY0YjA5Njk3ZmQwMWUwYmRlYjBhMDk1MGJjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5LmgKKysrIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5oCkBAIC01
OSw2ICs1OSw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY2xvc2UoKTsKIAorICAgIGJvb2wgYWxs
b3dzRXhpdFVuZGVyTWVtb3J5UHJlc3N1cmUoKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBleHBs
aWNpdCBMaWJXZWJSVENDb2RlY3NQcm94eShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJik7CiAK
QEAgLTgwLDExICs4MiwxNCBAQCBwcml2YXRlOgogICAgIHZvaWQgZW5jb2RlRnJhbWUoUlRDRW5j
b2RlcklkZW50aWZpZXIsIFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxlJiYsIHVpbnQzMl90IHRp
bWVTdGFtcCwgYm9vbCBzaG91bGRFbmNvZGVBc0tleUZyYW1lKTsKICAgICB2b2lkIHNldEVuY29k
ZVJhdGVzKFJUQ0VuY29kZXJJZGVudGlmaWVyLCB1aW50MzJfdCBiaXRSYXRlLCB1aW50MzJfdCBm
cmFtZVJhdGUpOwogCisgICAgdm9pZCB1cGRhdGVIYXNFbmNvZGVyc09yRGVjb2RlcnMoKTsKKwog
ICAgIENGRGljdGlvbmFyeVJlZiBpb1N1cmZhY2VQaXhlbEJ1ZmZlckNyZWF0aW9uT3B0aW9ucyhJ
T1N1cmZhY2VSZWYpOwogCiAgICAgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgbV9ncHVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOwogICAgIEhhc2hNYXA8UlRDRGVjb2RlcklkZW50aWZpZXIsIHdl
YnJ0Yzo6TG9jYWxEZWNvZGVyPiBtX2RlY29kZXJzOwogICAgIEhhc2hNYXA8UlRDRW5jb2Rlcklk
ZW50aWZpZXIsIHdlYnJ0Yzo6TG9jYWxFbmNvZGVyPiBtX2VuY29kZXJzOworICAgIHN0ZDo6YXRv
bWljPGJvb2w+IG1faGFzRW5jb2RlcnNPckRlY29kZXJzOwogCiAgICAgUmVmPFdvcmtRdWV1ZT4g
bV9xdWV1ZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SW1hZ2VUcmFuc2ZlclNlc3Np
b25WVD4gbV9pbWFnZVRyYW5zZmVyU2Vzc2lvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5Lm1tCmluZGV4IGIwMmVjZjA2
YzJiY2Y5OWRjMWIzMWQyY2Q4MjU4NmQyYjJmYmJlMzkuLmQyNGFhOThmNGIxZmNjZWNiNzVjMDI5
N2YzNTA5ZmNjNzY1YjhjMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93
ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkubW0KKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5tbQpAQCAtNzgsNiArNzgsNyBAQCB2b2lk
IExpYldlYlJUQ0NvZGVjc1Byb3h5OjpjcmVhdGVIMjY0RGVjb2RlcihSVENEZWNvZGVySWRlbnRp
ZmllciBpZGVudGlmaWVyKQogICAgICAgICBpZiAoYXV0byBzYW1wbGUgPSBXZWJDb3JlOjpSZW1v
dGVWaWRlb1NhbXBsZTo6Y3JlYXRlKHBpeGVsQnVmZmVyLCBNZWRpYVRpbWUodGltZVN0YW1wTnMs
IDEpKSkKICAgICAgICAgICAgIGNvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OkxpYldlYlJUQ0Nv
ZGVjczo6Q29tcGxldGVkRGVjb2RpbmcgeyBpZGVudGlmaWVyLCB0aW1lU3RhbXAsICpzYW1wbGUg
fSwgMCk7CiAgICAgfSkuZ2V0KCkpKTsKKyAgICB1cGRhdGVIYXNFbmNvZGVyc09yRGVjb2RlcnMo
KTsKIH0KIAogdm9pZCBMaWJXZWJSVENDb2RlY3NQcm94eTo6Y3JlYXRlSDI2NURlY29kZXIoUlRD
RGVjb2RlcklkZW50aWZpZXIgaWRlbnRpZmllcikKQEAgLTg3LDYgKzg4LDcgQEAgdm9pZCBMaWJX
ZWJSVENDb2RlY3NQcm94eTo6Y3JlYXRlSDI2NURlY29kZXIoUlRDRGVjb2RlcklkZW50aWZpZXIg
aWRlbnRpZmllcikKICAgICAgICAgaWYgKGF1dG8gc2FtcGxlID0gV2ViQ29yZTo6UmVtb3RlVmlk
ZW9TYW1wbGU6OmNyZWF0ZShwaXhlbEJ1ZmZlciwgTWVkaWFUaW1lKHRpbWVTdGFtcE5zLCAxKSkp
CiAgICAgICAgICAgICBjb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpMaWJXZWJSVENDb2RlY3M6
OkNvbXBsZXRlZERlY29kaW5nIHsgaWRlbnRpZmllciwgdGltZVN0YW1wLCAqc2FtcGxlIH0sIDAp
OwogICAgIH0pLmdldCgpKSk7CisgICAgdXBkYXRlSGFzRW5jb2RlcnNPckRlY29kZXJzKCk7CiB9
CiAKIHZvaWQgTGliV2ViUlRDQ29kZWNzUHJveHk6OmNyZWF0ZVZQOURlY29kZXIoUlRDRGVjb2Rl
cklkZW50aWZpZXIgaWRlbnRpZmllcikKQEAgLTk2LDEzICs5OCwxNiBAQCB2b2lkIExpYldlYlJU
Q0NvZGVjc1Byb3h5OjpjcmVhdGVWUDlEZWNvZGVyKFJUQ0RlY29kZXJJZGVudGlmaWVyIGlkZW50
aWZpZXIpCiAgICAgICAgIGlmIChhdXRvIHNhbXBsZSA9IFdlYkNvcmU6OlJlbW90ZVZpZGVvU2Ft
cGxlOjpjcmVhdGUocGl4ZWxCdWZmZXIsIE1lZGlhVGltZSh0aW1lU3RhbXBOcywgMSkpKQogICAg
ICAgICAgICAgY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6TGliV2ViUlRDQ29kZWNzOjpDb21w
bGV0ZWREZWNvZGluZyB7IGlkZW50aWZpZXIsIHRpbWVTdGFtcCwgKnNhbXBsZSB9LCAwKTsKICAg
ICB9KS5nZXQoKSkpOworICAgIHVwZGF0ZUhhc0VuY29kZXJzT3JEZWNvZGVycygpOwogfQogCiB2
b2lkIExpYldlYlJUQ0NvZGVjc1Byb3h5OjpyZWxlYXNlRGVjb2RlcihSVENEZWNvZGVySWRlbnRp
ZmllciBpZGVudGlmaWVyKQogewogICAgIEFTU0VSVChtX2RlY29kZXJzLmNvbnRhaW5zKGlkZW50
aWZpZXIpKTsKLSAgICBpZiAoYXV0byBkZWNvZGVyID0gbV9kZWNvZGVycy50YWtlKGlkZW50aWZp
ZXIpKQorICAgIGlmIChhdXRvIGRlY29kZXIgPSBtX2RlY29kZXJzLnRha2UoaWRlbnRpZmllcikp
IHsKICAgICAgICAgd2VicnRjOjpyZWxlYXNlTG9jYWxEZWNvZGVyKGRlY29kZXIpOworICAgICAg
ICB1cGRhdGVIYXNFbmNvZGVyc09yRGVjb2RlcnMoKTsKKyAgICB9CiB9CiAKIHZvaWQgTGliV2Vi
UlRDQ29kZWNzUHJveHk6OmRlY29kZUZyYW1lKFJUQ0RlY29kZXJJZGVudGlmaWVyIGlkZW50aWZp
ZXIsIHVpbnQzMl90IHRpbWVTdGFtcCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhKQpA
QCAtMTM5LDEzICsxNDQsMTYgQEAgdm9pZCBMaWJXZWJSVENDb2RlY3NQcm94eTo6Y3JlYXRlRW5j
b2RlcihSVENFbmNvZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdAogICAgIH0pLmdldCgp
KTsKICAgICB3ZWJydGM6OnNldExvY2FsRW5jb2Rlckxvd0xhdGVuY3koZW5jb2RlciwgdXNlTG93
TGF0ZW5jeSk7CiAgICAgbV9lbmNvZGVycy5hZGQoaWRlbnRpZmllciwgZW5jb2Rlcik7CisgICAg
dXBkYXRlSGFzRW5jb2RlcnNPckRlY29kZXJzKCk7CiB9CiAKIHZvaWQgTGliV2ViUlRDQ29kZWNz
UHJveHk6OnJlbGVhc2VFbmNvZGVyKFJUQ0VuY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7
CiAgICAgQVNTRVJUKG1fZW5jb2RlcnMuY29udGFpbnMoaWRlbnRpZmllcikpOwotICAgIGlmIChh
dXRvIGVuY29kZXIgPSBtX2VuY29kZXJzLnRha2UoaWRlbnRpZmllcikpCisgICAgaWYgKGF1dG8g
ZW5jb2RlciA9IG1fZW5jb2RlcnMudGFrZShpZGVudGlmaWVyKSkgewogICAgICAgICB3ZWJydGM6
OnJlbGVhc2VMb2NhbEVuY29kZXIoZW5jb2Rlcik7CisgICAgICAgIHVwZGF0ZUhhc0VuY29kZXJz
T3JEZWNvZGVycygpOworICAgIH0KIH0KIAogdm9pZCBMaWJXZWJSVENDb2RlY3NQcm94eTo6aW5p
dGlhbGl6ZUVuY29kZXIoUlRDRW5jb2RlcklkZW50aWZpZXIgaWRlbnRpZmllciwgdWludDE2X3Qg
d2lkdGgsIHVpbnQxNl90IGhlaWdodCwgdW5zaWduZWQgc3RhcnRCaXRyYXRlLCB1bnNpZ25lZCBt
YXhCaXRyYXRlLCB1bnNpZ25lZCBtaW5CaXRyYXRlLCB1aW50MzJfdCBtYXhGcmFtZXJhdGUpCkBA
IC0xOTksNiArMjA3LDE2IEBAIHZvaWQgTGliV2ViUlRDQ29kZWNzUHJveHk6OnNldEVuY29kZVJh
dGVzKFJUQ0VuY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIHVpbnQzCiAgICAgd2VicnRjOjpz
ZXRMb2NhbEVuY29kZXJSYXRlcyhlbmNvZGVyLCBiaXRSYXRlLCBmcmFtZVJhdGUpOwogfQogCit2
b2lkIExpYldlYlJUQ0NvZGVjc1Byb3h5Ojp1cGRhdGVIYXNFbmNvZGVyc09yRGVjb2RlcnMoKQor
eworICAgIG1faGFzRW5jb2RlcnNPckRlY29kZXJzID0gIW1fZW5jb2RlcnMuaXNFbXB0eSgpIHx8
ICFtX2RlY29kZXJzLmlzRW1wdHkoKTsKK30KKworYm9vbCBMaWJXZWJSVENDb2RlY3NQcm94eTo6
YWxsb3dzRXhpdFVuZGVyTWVtb3J5UHJlc3N1cmUoKSBjb25zdAoreworICAgIHJldHVybiAhbV9o
YXNFbmNvZGVyc09yRGVjb2RlcnM7Cit9CisKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Ub29s
cy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZjM2YTY1NzNjNDVkMzg0ODI0MGQz
ZmNjMGNjNDMzMDdkNTBlMGIzNy4uOTliMTgyMWM2MzY1ZjBjY2M3Y2VkNDA5MWUxMTgwZjkzMDU4
NjY1ZiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE3IEBACisyMDIxLTA0LTE3ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5j
b20+CisKKyAgICAgICAgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6YWxsb3dzRXhpdFVuZGVy
TWVtb3J5UHJlc3N1cmUoKSBzaG91bGQgY2hlY2sgaWYgbGliV2ViUlRDQ29kZWNzUHJveHkgaXMg
dXNlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI0
NzA5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgQWRkIEFQ
SSB0ZXN0IGNvdmVyYWdlLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9HUFVQcm9jZXNzLm1tOgorICAgICAgICAocnVuTWVtb3J5UHJlc3N1cmVFeGl0VGVzdCk6
CisgICAgICAgICh3YWl0VW50aWxDYXB0dXJlU3RhdGUpOgorICAgICAgICAoVEVTVCk6CisKIDIw
MjEtMDQtMTcgIEFha2FzaCBKYWluICA8YWFrYXNoX2phaW5AYXBwbGUuY29tPgogCiAgICAgICAg
IERvIG5vdCBjb25maWd1cmUgSmFuaXRvciB0byBkZWxldGUgb2xkIGxvZ3MgaW4gbG9jYWwgdGVz
dGluZyBtb2RlCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL0dQVVByb2Nlc3MubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L0dQVVByb2Nlc3MubW0KaW5kZXggMjgxNDAwN2Q0NzlmNDk4NWIwYTgzMDE0YmU2ZWM5ZGI2OTAx
MDRlZi4uZjIwMDRjODg3ZGMwMWYwNjExMGQxMjY5NzE4MWU1NTIwODA4ZGZmZCAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9HUFVQcm9jZXNzLm1tCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvR1BVUHJvY2Vzcy5tbQpA
QCAtMjgsMTEgKzI4LDEzIEBACiAjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgogI2ltcG9y
dCAiVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5oIgogI2ltcG9ydCAiVGVzdFdLV2ViVmlldy5oIgor
I2ltcG9ydCAiVXNlck1lZGlhQ2FwdHVyZVVJRGVsZWdhdGUuaCIKICNpbXBvcnQgPFdlYktpdC9X
S1ByZWZlcmVuY2VzUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLUHJlZmVyZW5jZXNSZWZQ
cml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tQcm9jZXNzUG9vbFByaXZhdGUuaD4KICNpbXBv
cnQgPFdlYktpdC9XS1N0cmluZy5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld0NvbmZpZ3Vy
YXRpb24uaD4KKyNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5o
PgogI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld1ByaXZhdGUuaD4KICNpbXBvcnQgPG5vdGlmeS5o
PgogI2ltcG9ydCA8d3RmL0Z1bmN0aW9uLmg+CkBAIC00OTMsMTQgKzQ5NSwxOSBAQCBURVNUKEdQ
VVByb2Nlc3MsIENhbnZhc0Jhc2ljQ3Jhc2hIYW5kbGluZykKICAgICBUZXN0V2ViS2l0QVBJOjpV
dGlsOjpydW4oJmRvbmUpOwogfQogCi1zdGF0aWMgdm9pZCBydW5NZW1vcnlQcmVzc3VyZUV4aXRU
ZXN0KEZ1bmN0aW9uPHZvaWQoV0tXZWJWaWV3ICopPiYmIGxvYWRUZXN0UGFnZVN5bmNocm9ub3Vz
bHkpCitzdGF0aWMgdm9pZCBydW5NZW1vcnlQcmVzc3VyZUV4aXRUZXN0KEZ1bmN0aW9uPHZvaWQo
V0tXZWJWaWV3ICopPiYmIGxvYWRUZXN0UGFnZVN5bmNocm9ub3VzbHksIEZ1bmN0aW9uPHZvaWQo
V0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqKT4mJiB1cGRhdGVDb25maWd1cmF0aW9uID0gW10oV0tX
ZWJWaWV3Q29uZmlndXJhdGlvbiAqKSB7IH0pCiB7CiAgICAgYXV0byBjb25maWd1cmF0aW9uID0g
YWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKICAgICBXS1By
ZWZlcmVuY2VzU2V0Qm9vbFZhbHVlRm9yS2V5Rm9yVGVzdGluZygoX19icmlkZ2UgV0tQcmVmZXJl
bmNlc1JlZilbY29uZmlndXJhdGlvbiBwcmVmZXJlbmNlc10sIHRydWUsIFdLU3RyaW5nQ3JlYXRl
V2l0aFVURjhDU3RyaW5nKCJVc2VHUFVQcm9jZXNzRm9yTWVkaWFFbmFibGVkIikpOwogICAgIFdL
UHJlZmVyZW5jZXNTZXRCb29sVmFsdWVGb3JLZXlGb3JUZXN0aW5nKChfX2JyaWRnZSBXS1ByZWZl
cmVuY2VzUmVmKVtjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXSwgdHJ1ZSwgV0tTdHJpbmdDcmVh
dGVXaXRoVVRGOENTdHJpbmcoIkNhcHR1cmVWaWRlb0luR1BVUHJvY2Vzc0VuYWJsZWQiKSk7Cisg
ICAgV0tQcmVmZXJlbmNlc1NldEJvb2xWYWx1ZUZvcktleUZvclRlc3RpbmcoKF9fYnJpZGdlIFdL
UHJlZmVyZW5jZXNSZWYpW2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNdLCB0cnVlLCBXS1N0cmlu
Z0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiQ2FwdHVyZUF1ZGlvSW5HUFVQcm9jZXNzRW5hYmxlZCIp
KTsKKyAgICBXS1ByZWZlcmVuY2VzU2V0Qm9vbFZhbHVlRm9yS2V5Rm9yVGVzdGluZygoX19icmlk
Z2UgV0tQcmVmZXJlbmNlc1JlZilbY29uZmlndXJhdGlvbiBwcmVmZXJlbmNlc10sIHRydWUsIFdL
U3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJXZWJSVENQbGF0Zm9ybUNvZGVjc0luR1BVUHJv
Y2Vzc0VuYWJsZWQiKSk7CisgICAgV0tQcmVmZXJlbmNlc1NldEJvb2xWYWx1ZUZvcktleUZvclRl
c3RpbmcoKF9fYnJpZGdlIFdLUHJlZmVyZW5jZXNSZWYpW2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5j
ZXNdLCBmYWxzZSwgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkNhcHR1cmVBdWRpb0lu
VUlQcm9jZXNzRW5hYmxlZCIpKTsKICAgICBXS1ByZWZlcmVuY2VzU2V0Qm9vbFZhbHVlRm9yS2V5
Rm9yVGVzdGluZygoX19icmlkZ2UgV0tQcmVmZXJlbmNlc1JlZilbY29uZmlndXJhdGlvbiBwcmVm
ZXJlbmNlc10sIHRydWUsIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJVc2VHUFVQcm9j
ZXNzRm9yQ2FudmFzUmVuZGVyaW5nRW5hYmxlZCIpKTsKICAgICBXS1ByZWZlcmVuY2VzU2V0Qm9v
bFZhbHVlRm9yS2V5Rm9yVGVzdGluZygoX19icmlkZ2UgV0tQcmVmZXJlbmNlc1JlZilbY29uZmln
dXJhdGlvbiBwcmVmZXJlbmNlc10sIGZhbHNlLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmlu
ZygiVXNlR1BVUHJvY2Vzc0ZvckRPTVJlbmRlcmluZ0VuYWJsZWQiKSk7CiAKKyAgICB1cGRhdGVD
b25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb24uZ2V0KCkpOworCiAgICAgYXV0byB3ZWJWaWV3ID0g
YWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgw
LCAwLCA0MDAsIDQwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CiAgICAg
bG9hZFRlc3RQYWdlU3luY2hyb25vdXNseSh3ZWJWaWV3LmdldCgpKTsKIApAQCAtNTY1LDYgKzU3
Miw0MiBAQCBURVNUKEdQVVByb2Nlc3MsIEV4aXRzVW5kZXJNZW1vcnlQcmVzc3VyZVZpZGVvQ2Fz
ZSkKICAgICB9KTsKIH0KIAorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCitzdGF0aWMgYm9vbCB3
YWl0VW50aWxDYXB0dXJlU3RhdGUoV0tXZWJWaWV3ICp3ZWJWaWV3LCBfV0tNZWRpYUNhcHR1cmVT
dGF0ZURlcHJlY2F0ZWQgZXhwZWN0ZWRTdGF0ZSkKK3sKKyAgICBOU1RpbWVJbnRlcnZhbCBlbmQg
PSBbW05TRGF0ZSBkYXRlXSB0aW1lSW50ZXJ2YWxTaW5jZVJlZmVyZW5jZURhdGVdICsgMTA7Cisg
ICAgZG8geworICAgICAgICBpZiAoW3dlYlZpZXcgX21lZGlhQ2FwdHVyZVN0YXRlXSA9PSBleHBl
Y3RlZFN0YXRlKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAgVGVzdFdlYktp
dEFQSTo6VXRpbDo6c3BpblJ1bkxvb3AoMSk7CisKKyAgICAgICAgaWYgKFtbTlNEYXRlIGRhdGVd
IHRpbWVJbnRlcnZhbFNpbmNlUmVmZXJlbmNlRGF0ZV0gPiBlbmQpCisgICAgICAgICAgICBicmVh
azsKKyAgICB9IHdoaWxlICh0cnVlKTsKKworICAgIHJldHVybiBmYWxzZTsKK30KKworVEVTVChH
UFVQcm9jZXNzLCBFeGl0c1VuZGVyTWVtb3J5UHJlc3N1cmVXZWJSVENDYXNlKQoreworICAgIHJ1
bk1lbW9yeVByZXNzdXJlRXhpdFRlc3QoW10oV0tXZWJWaWV3ICp3ZWJWaWV3KSB7CisgICAgICAg
IGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbVXNlck1lZGlhQ2FwdHVyZVVJRGVsZWdhdGUgYWxs
b2NdIGluaXRdKTsKKyAgICAgICAgd2ViVmlldy5VSURlbGVnYXRlID0gZGVsZWdhdGUuZ2V0KCk7
CisKKyAgICAgICAgW3dlYlZpZXcgbG9hZFRlc3RQYWdlTmFtZWQ6QCJnZXRVc2VyTWVkaWEiXTsK
KyAgICAgICAgRVhQRUNUX1RSVUUod2FpdFVudGlsQ2FwdHVyZVN0YXRlKHdlYlZpZXcsIF9XS01l
ZGlhQ2FwdHVyZVN0YXRlRGVwcmVjYXRlZEFjdGl2ZUNhbWVyYSkpOworICAgICAgICBbd2ViVmll
dyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiY2FwdHVyZUF1ZGlvQW5kVmlkZW8odHJ1
ZSkiXTsKKyAgICAgICAgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImNy
ZWF0ZUNvbm5lY3Rpb24oKSJdOworICAgIH0sIFtdKFdLV2ViVmlld0NvbmZpZ3VyYXRpb24qIGNv
bmZpZ3VyYXRpb24pIHsKKyAgICAgICAgYXV0byBwcmVmZXJlbmNlcyA9IGNvbmZpZ3VyYXRpb24u
cHJlZmVyZW5jZXM7CisgICAgICAgIHByZWZlcmVuY2VzLl9tZWRpYUNhcHR1cmVSZXF1aXJlc1Nl
Y3VyZUNvbm5lY3Rpb24gPSBOTzsKKyAgICAgICAgY29uZmlndXJhdGlvbi5fbWVkaWFDYXB0dXJl
RW5hYmxlZCA9IFlFUzsKKyAgICAgICAgcHJlZmVyZW5jZXMuX21vY2tDYXB0dXJlRGV2aWNlc0Vu
YWJsZWQgPSBZRVM7CisgICAgfSk7Cit9CisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkK
KwogVEVTVChHUFVQcm9jZXNzLCBFeGl0c1VuZGVyTWVtb3J5UHJlc3N1cmVXZWJBdWRpb0Nhc2Up
CiB7CiAgICAgcnVuTWVtb3J5UHJlc3N1cmVFeGl0VGVzdChbXShXS1dlYlZpZXcgKndlYlZpZXcp
IHsK
</data>

          </attachment>
      

    </bug>

</bugzilla>