<?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>231110</bug_id>
          
          <creation_ts>2021-10-01 16:43:00 -0700</creation_ts>
          <short_desc>Audio over peer connection becomes latent when changing the output</short_desc>
          <delta_ts>2022-02-04 11:18:30 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebRTC</component>
          <version>Safari 15</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Other</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alec Bargas">abargas</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>cxdevteam</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>hta</cc>
    
    <cc>jameshoward</cc>
    
    <cc>jer.noble</cc>
    
    <cc>peng.liu6</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>steve.mieskoski+webkit</cc>
    
    <cc>tommyw</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1799628</commentid>
    <comment_count>0</comment_count>
    <who name="Alec Bargas">abargas</who>
    <bug_when>2021-10-01 16:43:00 -0700</bug_when>
    <thetext>The audio playing over a peer connection becomes more latent when changing the audio output device (e.g. going from speakers to headphones or vice versa). The added latency is around half a second. The expectation is that the audio should not become more latent.

This behavior can be seen on the https://webrtc.github.io/samples/src/content/peerconnection/audio/ sample page.
The steps to reproduce the bug are:
1. Disconnect all audio output devices and turn volume to max.
2. Navigate to page.
3. Click the &quot;Call&quot; button.
4. Observe audio latency (recommend with a sharp sound like a tap or pop).
5. Connect headphones.
6. Observe increased audio latency (BUG).
7. Click &quot;Hang Up&quot;.
8. Click &quot;Call&quot;.
9. Observe normal audio latency.
10. Disconnect headphones.
11. Observe increased audio latency (BUG).

This issue does not repro with audio that is not over a peer connection. This can be seen with the https://webrtc.github.io/samples/src/content/getusermedia/audio/ sample page, following the same steps as above.

Reproduces with:
Version/15.0 Safari/605.1.15 (iOS 15.0)
Version/15.0 Safari/605.1.15 (iPadOS 15.1)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1800122</commentid>
    <comment_count>1</comment_count>
    <who name="James Howard">jameshoward</who>
    <bug_when>2021-10-04 10:47:33 -0700</bug_when>
    <thetext>We&apos;ve learned that creating an AudioContext seems to mitigate this issue somewhat. Looking at mediaserverd logging, we can see that the num samples per callback from CoreAudio changes when an AudioContext is active:

AudioElement only (matches Alec&apos;s repro steps above):

default	12:34:44.814148-0700	mediaserverd	-CMVAEndptMgr- vaemSetDeviceBufferDuration: duration = 0.085, sampleRate = 48000.000, numPCMSamples = 4095, NearestPowerOf2 = 4096, UseQuietBufferSizeProperty = &apos;NO&apos;
default	12:32:42.477241-0700	mediaserverd	-CMVAEndptMgr- vaemConfigurePVMSettings: PVMSetCurrentState [MediaPlayback, Default, Speaker, Speaker, (null), NO]

AudioElement + AudioContext (add an AudioContext playing silence to Alec&apos;s repro steps above):

default	12:27:50.915450-0700	mediaserverd	-CMVAEndptMgr- vaemSetDeviceBufferDuration: duration = 0.003, sampleRate = 48000.000, numPCMSamples = 127, NearestPowerOf2 = 128, UseQuietBufferSizeProperty = &apos;NO&apos;
default	12:27:50.902493-0700	mediaserverd	-CMVAEndptMgr- vaemConfigurePVMSettings: PVMSetCurrentState [MediaPlayback, Default, Speaker, Speaker, (null), NO]


There&apos;s also a third case, which is Audio + Video Element + getUserMedia:
default	12:35:50.823146-0700	mediaserverd	-CMVAEndptMgr- vaemSetDeviceBufferDuration: duration = 0.020, sampleRate = 48000.000, numPCMSamples = 959, NearestPowerOf2 = 1024, UseQuietBufferSizeProperty = &apos;NO&apos;
default	12:35:50.855153-0700	mediaserverd	-CMVAEndptMgr- vaemConfigurePVMSettings: PVMSetCurrentState [PlayAndRecord, VideoChat, SpeakerAndMicrophone, Speaker, (null), NO]

These cases seem to correspond to the code here: https://github.com/WebKit/WebKit/blob/3b96406abb57ffebaa8923a1852637e354fd25ca/Source/WebCore/platform/audio/cocoa/MediaSessionManagerCocoa.mm#L142

I&apos;m not sure I agree with the heuristic in that code where AudioContext =&gt; lowest latency, Mic enabled =&gt; medium latency, and AudioElement only =&gt; highest latency (lowest power). At a minimum, it would seem that if the AudioElement&apos;s srcObject contains remote tracks that WebKit ought to choose a lower latency preferred buffer size.

Further, it seems to be the case that the actual observed latency is some (fixed?) multiple of the preferred buffer size. Even a buffer size of 4096 would probably be OK if it were just that, but it seems like there&apos;s a queue or a buffer somewhere whose size is x * audio buffer size, so where audio buffer size is small then x doesn&apos;t matter so much, but when audio buffer size is large then x really starts to matter.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1802311</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-10-08 16:43:23 -0700</bug_when>
    <thetext>&lt;rdar://problem/84049005&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1806563</commentid>
    <comment_count>3</comment_count>
      <attachid>441863</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-10-20 04:03:50 -0700</bug_when>
    <thetext>Created attachment 441863
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1806617</commentid>
    <comment_count>4</comment_count>
      <attachid>441863</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2021-10-20 08:13:28 -0700</bug_when>
    <thetext>Comment on attachment 441863
Patch

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

r=me once the bots are happy

&gt; Source/WebCore/platform/audio/cocoa/AudioSampleDataSource.h:73
&gt; +    void askToComputeOutputSampleOffer() { m_shouldComputeOutputSampleOffset = true; }

The method name is slightly confusing, maybe `recomputeSampleOffset` instead?

&gt; Source/WebCore/platform/mediastream/cocoa/AudioMediaStreamTrackRendererInternalUnit.cpp:242
&gt; +    if (m_sampleTime &amp;&amp; m_sampleTime + 2 * sampleCount &lt; sampleTime)

Should we reset if the sample time is too far ahead of *or* behind what we expect?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1806652</commentid>
    <comment_count>5</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-10-20 09:10:19 -0700</bug_when>
    <thetext>(In reply to Eric Carlson from comment #4)
&gt; Comment on attachment 441863 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=441863&amp;action=review
&gt; 
&gt; r=me once the bots are happy
&gt; 
&gt; &gt; Source/WebCore/platform/audio/cocoa/AudioSampleDataSource.h:73
&gt; &gt; +    void askToComputeOutputSampleOffer() { m_shouldComputeOutputSampleOffset = true; }
&gt; 
&gt; The method name is slightly confusing, maybe `recomputeSampleOffset` instead?

OK

&gt; &gt; Source/WebCore/platform/mediastream/cocoa/AudioMediaStreamTrackRendererInternalUnit.cpp:242
&gt; &gt; +    if (m_sampleTime &amp;&amp; m_sampleTime + 2 * sampleCount &lt; sampleTime)
&gt; 
&gt; Should we reset if the sample time is too far ahead of *or* behind what we
&gt; expect?

Oh right, good point, will fix it!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1807057</commentid>
    <comment_count>6</comment_count>
      <attachid>442000</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-10-21 02:29:37 -0700</bug_when>
    <thetext>Created attachment 442000
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1807588</commentid>
    <comment_count>7</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-10-22 01:45:06 -0700</bug_when>
    <thetext>Committed r284674 (243394@main): &lt;https://commits.webkit.org/243394@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 442000.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1812536</commentid>
    <comment_count>8</comment_count>
    <who name="cxdevteam@outlook.com">cxdevteam</who>
    <bug_when>2021-11-07 21:14:57 -0800</bug_when>
    <thetext>which version will include this fix?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1837516</commentid>
    <comment_count>9</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2022-02-04 11:18:30 -0800</bug_when>
    <thetext>This change should be present in STP 139, iOS 15.4 Beta, and macOS 12.3 Beta.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>441863</attachid>
            <date>2021-10-20 04:03:50 -0700</date>
            <delta_ts>2021-10-21 02:29:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231110-20211020130349.patch</filename>
            <type>text/plain</type>
            <size>31142</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0NTIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjBlN2E2NDVkODg4OTg5
Mzk5NzE2ZWVkNTk2ZmMxZWIwZWRmYmJiZC4uYjY3YjAzYjI4ZjVmZWI2ODM5OTVmNzIwZjQwNDU2
OTljZTUyOTgzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDIxLTEwLTIwICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBBdWRpbyBvdmVyIHBlZXIg
Y29ubmVjdGlvbiBiZWNvbWVzIGxhdGVudCB3aGVuIGNoYW5naW5nIHRoZSBvdXRwdXQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTExMAorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vODQwNDkwMDU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIGRldGVjdGluZyBjaGFuZ2Ugb2Yg
dGltZWxpbmUgYnkgbG9va2luZyBhdCBzYW1wbGUgdGltZXMuIFRoaXMgaGFwcGVucyB3aGVuIGNo
YW5naW5nIGF1ZGlvIG91dHB1dC4KKyAgICAgICAgTWFrZSBBdWRpb01lZGlhU3RyZWFtVHJhY2tS
ZW5kZXJlckludGVybmFsVW5pdCBjYWxsIGEgY2FsbGJhY2sgdG8gbGV0IHRoZSB1bml0IGRlYWwg
d2l0aCBpdC4KKyAgICAgICAgV2hlbiBzd2l0Y2hpbmcgb3V0cHV0LCBhdWRpbyBkYXRhIGlzIGtl
cHQgZ3Jvd2luZyBidXQgaXMgbm90IHJlYWQgZm9yIHNvbWUgdGltZSBieSB0aGUgcmVtb3RlIHVu
aXQsIGV2ZW4gdGhvdWdoIHRoZSByZW1vdGUgdW5pdCBpcyBydW5uaW5nLgorICAgICAgICBUaGUg
dW5pdCBjYW4gYXNrIGl0cyBzb3VyY2VzIHRvIHVwZGF0ZSB0aGVpciBvZmZzZXQgdG8gbm90IGtl
ZXAgZXh0cmEgYnVmZmVyZWQgZGF0YS4KKworICAgICAgICBNYW51YWxseSB0ZXN0ZWQuCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb1NhbXBsZURhdGFTb3VyY2UuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9jb2NvYS9BdWRpb01lZGlhU3RyZWFtVHJhY2tS
ZW5kZXJlckNvY29hLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9jb2NvYS9B
dWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckNvY29hLmg6CisgICAgICAgICogcGxhdGZvcm0v
bWVkaWFzdHJlYW0vY29jb2EvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVu
aXQuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2NvY29hL0F1ZGlvTWVkaWFT
dHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0Lmg6CisgICAgICAgICogcGxhdGZvcm0vbWVk
aWFzdHJlYW0vY29jb2EvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0LmNwcDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9jb2NvYS9BdWRpb01lZGlhU3RyZWFtVHJhY2tS
ZW5kZXJlclVuaXQuaDoKKwogMjAyMS0xMC0xOSAgQW50b2luZSBRdWludCAgPGdyYW91dHNAd2Vi
a2l0Lm9yZz4KIAogICAgICAgICBTdXBwb3J0IG1vcmUgQ1NTIHByb3BlcnRpZXMgZm9yIDo6bWFy
a2VyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCmluZGV4IDFiODFkNGIxMzhjNjFlYjQ4MTYwZmViOTJhMmY1ODFjZjFlNjQwNWMu
LjA2YmY1N2ExYTI5ZWQxZDE0MDVhNGVmZDdjN2EwZGM2YTZmM2ZlMmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjMgQEAKKzIwMjEtMTAtMjAgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29t
PgorCisgICAgICAgIEF1ZGlvIG92ZXIgcGVlciBjb25uZWN0aW9uIGJlY29tZXMgbGF0ZW50IHdo
ZW4gY2hhbmdpbmcgdGhlIG91dHB1dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjMxMTEwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84NDA0OTAwNT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXaGVuIGRl
dGVjdGluZyBhbiBhdWRpbyB0aW1lbGluZSBjaGFuZ2UsIHNlbmQgaXQgZnJvbSBHUFVQcm9jZXNz
IHRvIFdlYlByb2Nlc3MuCisgICAgICAgIExldCB0aGUgV2ViUHJvY2VzcyByZXNldCB0aGUgc291
cmNlcyB0byBwcm9wZXJseSByZXN0YXJ0LgorCisgICAgICAgICogR1BVUHJvY2Vzcy93ZWJydGMv
UmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyLmNw
cDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5jcHA6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5pbjoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJ
bnRlcm5hbFVuaXRNYW5hZ2VyLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJydGMv
QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyLmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL2Nv
Y29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmNwcDoKKwogMjAyMS0xMC0xOSAgQmVuIE5oYW0g
IDxuaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgTmV0d29ya1Byb2Nlc3Mgc3R1YnMgZm9y
IHB1c2ggc3Vic2NyaXB0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vY29jb2EvQXVkaW9TYW1wbGVEYXRhU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9jb2NvYS9BdWRpb1NhbXBsZURhdGFTb3VyY2UuaAppbmRleCA2YWUzYjVjZDFm
MmVmZDYyMzlmYjM0ZDAxM2E1ODc3NmY0MThjNmY1Li43OThjMWUwNDZhODU1NjA1YTNkMjg1NGFl
OWFjNjBkNjhlMjFjYjJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9jb2NvYS9BdWRpb1NhbXBsZURhdGFTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9jb2NvYS9BdWRpb1NhbXBsZURhdGFTb3VyY2UuaApAQCAtNzAsNiArNzAsOCBA
QCBwdWJsaWM6CiAKICAgICBjb25zdCBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24qIGlucHV0RGVz
Y3JpcHRpb24oKSBjb25zdCB7IHJldHVybiBtX2lucHV0RGVzY3JpcHRpb24gPyAmbV9pbnB1dERl
c2NyaXB0aW9uLnZhbHVlKCkgOiBudWxscHRyOyB9CiAKKyAgICB2b2lkIGFza1RvQ29tcHV0ZU91
dHB1dFNhbXBsZU9mZmVyKCkgeyBtX3Nob3VsZENvbXB1dGVPdXRwdXRTYW1wbGVPZmZzZXQgPSB0
cnVlOyB9CisKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICBjb25zdCBMb2dnZXImIGxv
Z2dlcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fbG9nZ2VyOyB9CiAgICAgY29uc3Qgdm9pZCog
bG9nSWRlbnRpZmllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fbG9nSWRlbnRpZmllcjsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9TYW1w
bGVEYXRhU291cmNlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVk
aW9TYW1wbGVEYXRhU291cmNlLm1tCmluZGV4IDAyYjE1ODM0OWQzODgwODUwMzBlMTE0MGNiMzI2
ZjdhN2E4MTkxNTQuLjNkMTVmNTM1MWE4YzQ2ZDAyMWI1NDVjMDcwMmQyNGQ1ZDBkYmJmN2MgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvU2FtcGxl
RGF0YVNvdXJjZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9B
dWRpb1NhbXBsZURhdGFTb3VyY2UubW0KQEAgLTIzNCw3ICsyMzQsOCBAQCBib29sIEF1ZGlvU2Ft
cGxlRGF0YVNvdXJjZTo6cHVsbFNhbXBsZXNJbnRlcm5hbChBdWRpb0J1ZmZlckxpc3QmIGJ1ZmZl
ciwgc2l6ZV90CiAgICAgaWYgKG1fc2hvdWxkQ29tcHV0ZU91dHB1dFNhbXBsZU9mZnNldCkgewog
ICAgICAgICB1aW50NjRfdCBidWZmZXJlZCA9IGVuZEZyYW1lIC0gc3RhcnRGcmFtZTsKICAgICAg
ICAgaWYgKG1faXNGaXJzdFB1bGwpIHsKLSAgICAgICAgICAgIGlmIChidWZmZXJlZCA+PSBtX3dh
aXRUb1N0YXJ0Rm9yUHVzaENvdW50ICogbV9sYXN0UHVzaGVkU2FtcGxlQ291bnQpIHsKKyAgICAg
ICAgICAgIGF1dG8gbWluaW11bUJ1ZmZlciA9IG1fd2FpdFRvU3RhcnRGb3JQdXNoQ291bnQgKiBt
X2xhc3RQdXNoZWRTYW1wbGVDb3VudDsKKyAgICAgICAgICAgIGlmIChidWZmZXJlZCA+PSBtaW5p
bXVtQnVmZmVyKSB7CiAgICAgICAgICAgICAgICAgbV9vdXRwdXRTYW1wbGVPZmZzZXQgPSBzdGFy
dEZyYW1lIC0gdGltZVN0YW1wOwogICAgICAgICAgICAgICAgIG1fc2hvdWxkQ29tcHV0ZU91dHB1
dFNhbXBsZU9mZnNldCA9IGZhbHNlOwogICAgICAgICAgICAgICAgIG1fZW5kRnJhbWVXaGVuTm90
RW5vdWdoRGF0YSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9jb2NvYS9BdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckNvY29hLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2NvY29hL0F1ZGlvTWVkaWFTdHJlYW1U
cmFja1JlbmRlcmVyQ29jb2EuY3BwCmluZGV4IDA2MDk1YTI3ZDk5N2ZmOGY5YjNhOWU3OWYxYmUw
ZGI1MGYwMzgyYWEuLjRlYWM1ZmEyMWQwZjAwMTYwNjNmYjFiMDcyMWY4NGI4MzY0YjhlN2YgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2NvY29hL0F1ZGlv
TWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyQ29jb2EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL2NvY29hL0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyQ29j
b2EuY3BwCkBAIC0zNiw3ICszNiwxMCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUF1ZGlv
TWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyQ29jb2E6OkF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRl
cmVyQ29jb2EoKSA9IGRlZmF1bHQ7CitBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckNvY29h
OjpBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckNvY29hKCkKKyAgICA6IG1fcmVzZXRPYnNl
cnZlcihbdGhpc10geyByZXNldCgpOyB9KQoreworfQogCiBBdWRpb01lZGlhU3RyZWFtVHJhY2tS
ZW5kZXJlckNvY29hOjp+QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJDb2NvYSgpID0gZGVm
YXVsdDsKIApAQCAtNzIsMTEgKzc1LDE3IEBAIHZvaWQgQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVu
ZGVyZXJDb2NvYTo6c2V0Vm9sdW1lKGZsb2F0IHZvbHVtZSkKICAgICAgICAgbV9kYXRhU291cmNl
LT5zZXRWb2x1bWUodm9sdW1lKTsKIH0KIAordm9pZCBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5k
ZXJlckNvY29hOjpyZXNldCgpCit7CisgICAgaWYgKG1fZGF0YVNvdXJjZSkKKyAgICAgICAgbV9k
YXRhU291cmNlLT5hc2tUb0NvbXB1dGVPdXRwdXRTYW1wbGVPZmZlcigpOworfQorCiB2b2lkIEF1
ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyQ29jb2E6OnNldEF1ZGlvT3V0cHV0RGV2aWNlKGNv
bnN0IFN0cmluZyYgZGV2aWNlSWQpCiB7CiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBjcmVhdGUg
YSB1bml0IGZvciBvdXJzZWx2ZXMgaGVyZSBvciB1c2UgdGhlIGRlZmF1bHQgdW5pdCBpZiBkZXZp
Y2VJZCBpcyBtYXRjaGluZy4KICAgICBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQ6
OnNpbmdsZXRvbigpLnNldEF1ZGlvT3V0cHV0RGV2aWNlKGRldmljZUlkKTsKLSAgICBtX3Nob3Vs
ZFJlc2V0ID0gdHJ1ZTsKKyAgICBtX3Nob3VsZFJlY3JlYXRlRGF0YVNvdXJjZSA9IHRydWU7CiB9
CiAKIHN0YXRpYyB1bnNpZ25lZCBwb2xsU2FtcGxlc0NvdW50KCkKQEAgLTkyLDcgKzEwMSw3IEBA
IHZvaWQgQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJDb2NvYTo6cHVzaFNhbXBsZXMoY29u
c3QgTWVkaWFUaW1lJiBzYW1wbGVUaW1lCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7
CiAgICAgQVNTRVJUKGRlc2NyaXB0aW9uLnBsYXRmb3JtRGVzY3JpcHRpb24oKS50eXBlID09IFBs
YXRmb3JtRGVzY3JpcHRpb246OkNBQXVkaW9TdHJlYW1CYXNpY1R5cGUpOwotICAgIGlmICghbV9k
YXRhU291cmNlIHx8IG1fc2hvdWxkUmVzZXQgfHwgIW1fZGF0YVNvdXJjZS0+aW5wdXREZXNjcmlw
dGlvbigpIHx8ICptX2RhdGFTb3VyY2UtPmlucHV0RGVzY3JpcHRpb24oKSAhPSBkZXNjcmlwdGlv
bikgeworICAgIGlmICghbV9kYXRhU291cmNlIHx8IG1fc2hvdWxkUmVjcmVhdGVEYXRhU291cmNl
IHx8ICFtX2RhdGFTb3VyY2UtPmlucHV0RGVzY3JpcHRpb24oKSB8fCAqbV9kYXRhU291cmNlLT5p
bnB1dERlc2NyaXB0aW9uKCkgIT0gZGVzY3JpcHRpb24pIHsKICAgICAgICAgRGlzYWJsZU1hbGxv
Y1Jlc3RyaWN0aW9uc0ZvckN1cnJlbnRUaHJlYWRTY29wZSBzY29wZTsKIAogICAgICAgICAvLyBG
SVhNRTogRm9yIG5vbiBsaWJ3ZWJydGMgc291cmNlcywgd2UgY2FuIHByb2JhYmx5IHJlZHVjZSBw
b2xsIHNhbXBsZXMgY291bnQgdG8gMi4KQEAgLTEyMCwxMCArMTI5LDExIEBAIHZvaWQgQXVkaW9N
ZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJDb2NvYTo6cHVzaFNhbXBsZXMoY29uc3QgTWVkaWFUaW1l
JiBzYW1wbGVUaW1lCiAgICAgICAgICAgICAgICAgQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVy
ZXJVbml0OjpzaW5nbGV0b24oKS5yZW1vdmVTb3VyY2UoKm9sZFNvdXJjZSk7CiAKICAgICAgICAg
ICAgIG5ld1NvdXJjZS0+c2V0Vm9sdW1lKHZvbHVtZSgpKTsKKyAgICAgICAgICAgIEF1ZGlvTWVk
aWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdDo6c2luZ2xldG9uKCkuYWRkUmVzZXRPYnNlcnZlciht
X3Jlc2V0T2JzZXJ2ZXIpOwogICAgICAgICAgICAgQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVy
ZXJVbml0OjpzaW5nbGV0b24oKS5hZGRTb3VyY2UoV1RGTW92ZShuZXdTb3VyY2UpKTsKICAgICAg
ICAgfSk7CiAgICAgICAgIG1fZGF0YVNvdXJjZSA9IFdURk1vdmUoZGF0YVNvdXJjZSk7Ci0gICAg
ICAgIG1fc2hvdWxkUmVzZXQgPSBmYWxzZTsKKyAgICAgICAgbV9zaG91bGRSZWNyZWF0ZURhdGFT
b3VyY2UgPSBmYWxzZTsKICAgICB9CiAKICAgICBtX2RhdGFTb3VyY2UtPnB1c2hTYW1wbGVzKHNh
bXBsZVRpbWUsIGF1ZGlvRGF0YSwgc2FtcGxlQ291bnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vY29jb2EvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVu
ZGVyZXJDb2NvYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vY29jb2Ev
QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJDb2NvYS5oCmluZGV4IDU0M2U0NTEyNmEwZmQw
YmFhZmE5OWJmNjU2MTEyYzQ5ZDYwMjNjOWUuLjNhN2IzZGM5MTMyZTZmNDEyMTRlYTg0NzVhY2Vl
M2MwMTFlMmNlM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL2NvY29hL0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyQ29jb2EuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9jb2NvYS9BdWRpb01lZGlhU3RyZWFtVHJh
Y2tSZW5kZXJlckNvY29hLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpZiBFTkFCTEUoTUVESUFfU1RS
RUFNKQogCiAjaW5jbHVkZSAiQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIuaCIKKyNpbmNs
dWRlICJBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQuaCIKICNpbmNsdWRlICJMb2dn
aW5nLmgiCiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIApAQCAtNTUsOSArNTYsMTIgQEAgcHJp
dmF0ZToKICAgICB2b2lkIHNldFZvbHVtZShmbG9hdCkgZmluYWw7CiAgICAgdm9pZCBzZXRBdWRp
b091dHB1dERldmljZShjb25zdCBTdHJpbmcmKSBmaW5hbDsKIAorICAgIHZvaWQgcmVzZXQoKTsK
KwogICAgIHN0ZDo6dW5pcXVlX3B0cjxDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24+IG1fb3V0cHV0
RGVzY3JpcHRpb247CiAgICAgUmVmUHRyPEF1ZGlvU2FtcGxlRGF0YVNvdXJjZT4gbV9kYXRhU291
cmNlOwotICAgIGJvb2wgbV9zaG91bGRSZXNldCB7IGZhbHNlIH07CisgICAgYm9vbCBtX3Nob3Vs
ZFJlY3JlYXRlRGF0YVNvdXJjZSB7IGZhbHNlIH07CisgICAgV2ViQ29yZTo6QXVkaW9NZWRpYVN0
cmVhbVRyYWNrUmVuZGVyZXJVbml0OjpSZXNldE9ic2VydmVyIG1fcmVzZXRPYnNlcnZlcjsKIH07
CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2Nv
Y29hL0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2NvY29hL0F1ZGlvTWVkaWFTdHJlYW1UcmFj
a1JlbmRlcmVySW50ZXJuYWxVbml0LmNwcAppbmRleCA0OWE0ZTBjYjllODJmMzdjZmZkMWY0MTM5
NzZhZTdhNjQ1Yzc0YTA0Li5hZDViYjE0YTc2YzBjM2U4MDBmMzk0ZjZlYTI1ODlmZTdhNjdiYzA0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9jb2NvYS9B
dWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vY29jb2EvQXVkaW9NZWRpYVN0cmVhbVRyYWNr
UmVuZGVyZXJJbnRlcm5hbFVuaXQuY3BwCkBAIC01MCw3ICs1MCw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIGNsYXNzIExvY2FsQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVu
aXQgZmluYWwgOiBwdWJsaWMgQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVu
aXQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIGV4cGxpY2l0
IExvY2FsQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXQoUmVuZGVyQ2Fs
bGJhY2smJik7CisgICAgTG9jYWxBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFs
VW5pdChSZW5kZXJDYWxsYmFjayYmLCBSZXNldENhbGxiYWNrJiYpOwogCiBwcml2YXRlOgogICAg
IHZvaWQgY3JlYXRlQXVkaW9Vbml0SWZOZWVkZWQoKTsKQEAgLTYxLDI0ICs2MSwyOCBAQCBwcml2
YXRlOgogICAgIHZvaWQgcmV0cmlldmVGb3JtYXREZXNjcmlwdGlvbihDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGNvbnN0IENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiopPiYmKSBmaW5hbDsKICAgICB2
b2lkIHNldEF1ZGlvT3V0cHV0RGV2aWNlKGNvbnN0IFN0cmluZyYpIGZpbmFsOwogCisgICAgT1NT
dGF0dXMgcmVuZGVyKEF1ZGlvVW5pdFJlbmRlckFjdGlvbkZsYWdzKiwgY29uc3QgQXVkaW9UaW1l
U3RhbXAqLCBVSW50MzIgc2FtcGxlQ291bnQsIEF1ZGlvQnVmZmVyTGlzdCopOwogICAgIHN0YXRp
YyBPU1N0YXR1cyByZW5kZXJpbmdDYWxsYmFjayh2b2lkKiwgQXVkaW9Vbml0UmVuZGVyQWN0aW9u
RmxhZ3MqLCBjb25zdCBBdWRpb1RpbWVTdGFtcCosIFVJbnQzMiBpbkJ1c051bWJlciwgVUludDMy
IHNhbXBsZUNvdW50LCBBdWRpb0J1ZmZlckxpc3QqKTsKIAogICAgIFJlbmRlckNhbGxiYWNrIG1f
cmVuZGVyQ2FsbGJhY2s7CisgICAgUmVzZXRDYWxsYmFjayBtX3Jlc2V0Q2FsbGJhY2s7CiAgICAg
c3RkOjp1bmlxdWVfcHRyPENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbj4gbV9vdXRwdXREZXNjcmlw
dGlvbjsKICAgICBBdWRpb0NvbXBvbmVudEluc3RhbmNlIG1fcmVtb3RlSU9Vbml0IHsgbnVsbHB0
ciB9OwogICAgIGJvb2wgbV9pc1N0YXJ0ZWQgeyBmYWxzZSB9OworICAgIHVpbnQ2NF90IG1fc2Ft
cGxlVGltZSB7IDAgfTsKICNpZiBQTEFURk9STShNQUMpCiAgICAgdWludDMyX3QgbV9kZXZpY2VJ
RCB7IDAgfTsKICNlbmRpZgogfTsKIAotVW5pcXVlUmVmPEF1ZGlvTWVkaWFTdHJlYW1UcmFja1Jl
bmRlcmVySW50ZXJuYWxVbml0PiBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFs
VW5pdDo6Y3JlYXRlTG9jYWxJbnRlcm5hbFVuaXQoUmVuZGVyQ2FsbGJhY2smJiByZW5kZXJDYWxs
YmFjaykKK1VuaXF1ZVJlZjxBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5p
dD4gQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXQ6OmNyZWF0ZUxvY2Fs
SW50ZXJuYWxVbml0KFJlbmRlckNhbGxiYWNrJiYgcmVuZGVyQ2FsbGJhY2ssIFJlc2V0Q2FsbGJh
Y2smJiByZXNldENhbGxiYWNrKQogewotICAgIHJldHVybiBtYWtlVW5pcXVlUmVmPExvY2FsQXVk
aW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXQ+KFdURk1vdmUocmVuZGVyQ2Fs
bGJhY2spKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZVJlZjxMb2NhbEF1ZGlvTWVkaWFTdHJlYW1U
cmFja1JlbmRlcmVySW50ZXJuYWxVbml0PihXVEZNb3ZlKHJlbmRlckNhbGxiYWNrKSwgV1RGTW92
ZShyZXNldENhbGxiYWNrKSk7CiB9CiAKLUxvY2FsQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVy
ZXJJbnRlcm5hbFVuaXQ6OkxvY2FsQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5h
bFVuaXQoUmVuZGVyQ2FsbGJhY2smJiByZW5kZXJDYWxsYmFjaykKK0xvY2FsQXVkaW9NZWRpYVN0
cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXQ6OkxvY2FsQXVkaW9NZWRpYVN0cmVhbVRyYWNr
UmVuZGVyZXJJbnRlcm5hbFVuaXQoUmVuZGVyQ2FsbGJhY2smJiByZW5kZXJDYWxsYmFjaywgUmVz
ZXRDYWxsYmFjayYmIHJlc2V0Q2FsbGJhY2spCiAgICAgOiBtX3JlbmRlckNhbGxiYWNrKFdURk1v
dmUocmVuZGVyQ2FsbGJhY2spKQorICAgICwgbV9yZXNldENhbGxiYWNrKFdURk1vdmUocmVzZXRD
YWxsYmFjaykpCiB7CiB9CiAKQEAgLTEyNSw2ICsxMjksNyBAQCB2b2lkIExvY2FsQXVkaW9NZWRp
YVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXQ6OnN0YXJ0KCkKICAgICBpZiAoIW1fcmVt
b3RlSU9Vbml0KQogICAgICAgICByZXR1cm47CiAKKyAgICBtX3NhbXBsZVRpbWUgPSAwOwogICAg
IGlmIChhdXRvIGVycm9yID0gUEFMOjpBdWRpb091dHB1dFVuaXRTdGFydChtX3JlbW90ZUlPVW5p
dCkpIHsKICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoV2ViUlRDLCAiQXVkaW9NZWRpYVN0cmVh
bVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXQ6OnN0YXJ0IEF1ZGlvT3V0cHV0VW5pdFN0YXJ0IGZh
aWxlZCwgZXJyb3IgPSAlZCIsIGVycm9yKTsKICAgICAgICAgUEFMOjpBdWRpb0NvbXBvbmVudElu
c3RhbmNlRGlzcG9zZShtX3JlbW90ZUlPVW5pdCk7CkBAIC0yMzAsOSArMjM1LDIwIEBAIHZvaWQg
TG9jYWxBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdDo6Y3JlYXRlQXVk
aW9Vbml0SWZOZWVkZWQoKQogICAgIG1fcmVtb3RlSU9Vbml0ID0gcmVtb3RlSU9Vbml0OwogfQog
CitPU1N0YXR1cyBMb2NhbEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0
OjpyZW5kZXIoQXVkaW9Vbml0UmVuZGVyQWN0aW9uRmxhZ3MqIGFjdGlvbkZsYWdzLCBjb25zdCBB
dWRpb1RpbWVTdGFtcCogdGltZVN0YW1wLCBVSW50MzIgc2FtcGxlQ291bnQsIEF1ZGlvQnVmZmVy
TGlzdCogaW9EYXRhKQoreworICAgIGF1dG8gc2FtcGxlVGltZSA9IHRpbWVTdGFtcC0+bVNhbXBs
ZVRpbWU7CisgICAgLy8gSWYgd2Ugb2JzZXJ2ZSBhbiBpcnJlZ3VsYXJpdHkgaW4gdGhlIHRpbWVs
aW5lLCB3ZSB0cmlnZ2VyIGEgcmVzZXQuCisgICAgaWYgKG1fc2FtcGxlVGltZSAmJiBtX3NhbXBs
ZVRpbWUgKyAyICogc2FtcGxlQ291bnQgPCBzYW1wbGVUaW1lKQorICAgICAgICBtX3Jlc2V0Q2Fs
bGJhY2soKTsKKyAgICBtX3NhbXBsZVRpbWUgPSBzYW1wbGVUaW1lOworCisgICAgcmV0dXJuIG1f
cmVuZGVyQ2FsbGJhY2soc2FtcGxlQ291bnQsICppb0RhdGEsIHNhbXBsZVRpbWUsIHRpbWVTdGFt
cC0+bUhvc3RUaW1lLCAqYWN0aW9uRmxhZ3MpOworfQorCiBPU1N0YXR1cyBMb2NhbEF1ZGlvTWVk
aWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0OjpyZW5kZXJpbmdDYWxsYmFjayh2b2lk
KiBwcm9jZXNzb3IsIEF1ZGlvVW5pdFJlbmRlckFjdGlvbkZsYWdzKiBhY3Rpb25GbGFncywgY29u
c3QgQXVkaW9UaW1lU3RhbXAqIHRpbWVTdGFtcCwgVUludDMyLCBVSW50MzIgc2FtcGxlQ291bnQs
IEF1ZGlvQnVmZmVyTGlzdCogaW9EYXRhKQogewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxMb2Nh
bEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0Kj4ocHJvY2Vzc29yKS0+
bV9yZW5kZXJDYWxsYmFjayhzYW1wbGVDb3VudCwgKmlvRGF0YSwgdGltZVN0YW1wLT5tU2FtcGxl
VGltZSwgdGltZVN0YW1wLT5tSG9zdFRpbWUsICphY3Rpb25GbGFncyk7CisgICAgcmV0dXJuIHN0
YXRpY19jYXN0PExvY2FsQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXQq
Pihwcm9jZXNzb3IpLT5yZW5kZXIoYWN0aW9uRmxhZ3MsIHRpbWVTdGFtcCwgc2FtcGxlQ291bnQs
IGlvRGF0YSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2NvY29hL0F1ZGlvTWVkaWFTdHJlYW1UcmFj
a1JlbmRlcmVySW50ZXJuYWxVbml0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9jb2NvYS9BdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdC5oCmlu
ZGV4IDFhYjVmMTczODBmYzE2MDhhYWIyMjA1MWNlNDljMjgwMjU5ZjhjNjguLjRkOWJmYjFhM2E2
MGFjMDc0NTNhZjZhY2M3NTBlOTRmZDc3YTZkM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL2NvY29hL0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVy
SW50ZXJuYWxVbml0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
Y29jb2EvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXQuaApAQCAtNDAs
NyArNDAsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVu
ZGVyZXJJbnRlcm5hbFVuaXQoKSA9IGRlZmF1bHQ7CiAKICAgICB1c2luZyBSZW5kZXJDYWxsYmFj
ayA9IEZ1bmN0aW9uPE9TU3RhdHVzKHNpemVfdCBzYW1wbGVDb3VudCwgQXVkaW9CdWZmZXJMaXN0
JiwgdWludDY0X3Qgc2FtcGxlVGltZSwgZG91YmxlIGhvc3RUaW1lLCBBdWRpb1VuaXRSZW5kZXJB
Y3Rpb25GbGFncyYpPjsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgVW5pcXVlUmVmPEF1ZGlv
TWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0PiBjcmVhdGVMb2NhbEludGVybmFs
VW5pdChSZW5kZXJDYWxsYmFjayYmKTsKKyAgICB1c2luZyBSZXNldENhbGxiYWNrID0gRnVuY3Rp
b248dm9pZCgpPjsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgVW5pcXVlUmVmPEF1ZGlvTWVk
aWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0PiBjcmVhdGVMb2NhbEludGVybmFsVW5p
dChSZW5kZXJDYWxsYmFjayYmLCBSZXNldENhbGxiYWNrJiYpOwogCiAgICAgdmlydHVhbCB2b2lk
IHN0YXJ0KCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzdG9wKCkgPSAwOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vY29jb2EvQXVkaW9NZWRpYVN0cmVh
bVRyYWNrUmVuZGVyZXJVbml0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL2NvY29hL0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdC5jcHAKaW5kZXggYzcx
ODc0NjQ3MTk2MjE5YTliNmFmZjA1Y2M2OGM2M2QxNzc0YTI5Mi4uZWIyYjIwODBlNDg4YmZlMmJi
OWFlOWZmYjQ1Nzc5YTY4NjIwNzBlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vY29jb2EvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9jb2NvYS9BdWRpb01l
ZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQuY3BwCkBAIC00NiwxNiArNDYsMTcgQEAgdm9pZCBB
dWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQ6OnNldENyZWF0ZUludGVybmFsVW5pdEZ1
bmN0aW9uKENyZWF0ZUludGUKIAogc3RhdGljIFVuaXF1ZVJlZjxBdWRpb01lZGlhU3RyZWFtVHJh
Y2tSZW5kZXJlckludGVybmFsVW5pdD4gY3JlYXRlSW50ZXJuYWxVbml0KEF1ZGlvTWVkaWFTdHJl
YW1UcmFja1JlbmRlcmVyVW5pdCYgdW5pdCkKIHsKLSAgICBBdWRpb01lZGlhU3RyZWFtVHJhY2tS
ZW5kZXJlckludGVybmFsVW5pdDo6UmVuZGVyQ2FsbGJhY2sgY2FsbGJhY2sgPSBbJnVuaXRdKGF1
dG8gc2FtcGxlQ291bnQsIGF1dG8mIGxpc3QsIGF1dG8gc2FtcGxlVGltZSwgYXV0byBob3N0VGlt
ZSwgYXV0byYgZmxhZ3MpIHsKKyAgICBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVy
bmFsVW5pdDo6UmVuZGVyQ2FsbGJhY2sgcmVuZGVyQ2FsbGJhY2sgPSBbJnVuaXRdKGF1dG8gc2Ft
cGxlQ291bnQsIGF1dG8mIGxpc3QsIGF1dG8gc2FtcGxlVGltZSwgYXV0byBob3N0VGltZSwgYXV0
byYgZmxhZ3MpIHsKICAgICAgICAgdW5pdC5yZW5kZXIoc2FtcGxlQ291bnQsIGxpc3QsIHNhbXBs
ZVRpbWUsIGhvc3RUaW1lLCBmbGFncyk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH07CisgICAg
QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXQ6OlJlc2V0Q2FsbGJhY2sg
c3RhcnRDYWxsYmFjayA9IFsmdW5pdF0oKSB7IHVuaXQucmVzZXQoKTsgfTsKIAogICAgIGF1dG8m
IGZ1bmN0aW9uID0gZ2V0Q3JlYXRlSW50ZXJuYWxVbml0RnVuY3Rpb24oKTsKICAgICBpZiAoZnVu
Y3Rpb24pCi0gICAgICAgIHJldHVybiBmdW5jdGlvbihXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAg
ICAgIHJldHVybiBmdW5jdGlvbihXVEZNb3ZlKHJlbmRlckNhbGxiYWNrKSwgV1RGTW92ZShzdGFy
dENhbGxiYWNrKSk7CiAKLSAgICByZXR1cm4gQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJ
bnRlcm5hbFVuaXQ6OmNyZWF0ZUxvY2FsSW50ZXJuYWxVbml0KFdURk1vdmUoY2FsbGJhY2spKTsK
KyAgICByZXR1cm4gQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXQ6OmNy
ZWF0ZUxvY2FsSW50ZXJuYWxVbml0KFdURk1vdmUocmVuZGVyQ2FsbGJhY2spLCBXVEZNb3ZlKHN0
YXJ0Q2FsbGJhY2spKTsKIH0KIAogQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0JiBB
dWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQ6OnNpbmdsZXRvbigpCkBAIC0xMzcsNiAr
MTM4LDE2IEBAIHZvaWQgQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0OjpzdG9wKCkK
ICAgICBtX2ludGVybmFsVW5pdC0+c3RvcCgpOwogfQogCit2b2lkIEF1ZGlvTWVkaWFTdHJlYW1U
cmFja1JlbmRlcmVyVW5pdDo6cmVzZXQoKQoreworICAgIFJFTEVBU0VfTE9HKFdlYlJUQywgIkF1
ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdDo6cmVzZXQiKTsKKyAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOworCisgICAgbV9yZXNldE9ic2VydmVycy5mb3JFYWNoKFtdKGF1dG8mIG9i
c2VydmVyKSB7CisgICAgICAgIG9ic2VydmVyKCk7CisgICAgfSk7Cit9CisKIHZvaWQgQXVkaW9N
ZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0OjpyZXRyaWV2ZUZvcm1hdERlc2NyaXB0aW9uKENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uKik+JiYg
Y2FsbGJhY2spCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2NvY29hL0F1ZGlvTWVkaWFTdHJlYW1U
cmFja1JlbmRlcmVyVW5pdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
Y29jb2EvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0LmgKaW5kZXggM2I3N2M5ZDUz
ZTU3MGE3MzgyMGJlMzg5ZTAyMzc2YjIxZTVjMjFiYy4uNWYzMGI5YmQ0NjJhZDIzYjY3MDEzMjk5
NGU0OGQ2ZmY5NWI3MDRkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vY29jb2EvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vY29jb2EvQXVkaW9NZWRpYVN0cmVh
bVRyYWNrUmVuZGVyZXJVbml0LmgKQEAgLTMxLDggKzMxLDEwIEBACiAjaW5jbHVkZSA8d3RmL0Zv
cndhcmQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+
CisjaW5jbHVkZSA8d3RmL09ic2VydmVyLmg+CiAjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgog
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha0hhc2hTZXQuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00OCwxNiArNTAsMTkgQEAgcHVibGljOgogICAgIEF1
ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdCgpOwogICAgIH5BdWRpb01lZGlhU3RyZWFt
VHJhY2tSZW5kZXJlclVuaXQoKTsKIAotICAgIHVzaW5nIENyZWF0ZUludGVybmFsVW5pdEZ1bmN0
aW9uID0gRnVuY3Rpb248VW5pcXVlUmVmPEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50
ZXJuYWxVbml0PihBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdDo6UmVu
ZGVyQ2FsbGJhY2smJik+OworICAgIHVzaW5nIENyZWF0ZUludGVybmFsVW5pdEZ1bmN0aW9uID0g
RnVuY3Rpb248VW5pcXVlUmVmPEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxV
bml0PihBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdDo6UmVuZGVyQ2Fs
bGJhY2smJiwgQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXQ6OlJlc2V0
Q2FsbGJhY2smJik+OwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIHNldENyZWF0ZUlu
dGVybmFsVW5pdEZ1bmN0aW9uKENyZWF0ZUludGVybmFsVW5pdEZ1bmN0aW9uJiYpOwogCiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCByZW5kZXIoc2l6ZV90IHNhbXBsZUNvdW50LCBBdWRpb0J1ZmZl
ckxpc3QmLCB1aW50NjRfdCBzYW1wbGVUaW1lLCBkb3VibGUgaG9zdFRpbWUsIEF1ZGlvVW5pdFJl
bmRlckFjdGlvbkZsYWdzJik7CisgICAgdm9pZCByZXNldCgpOwogCiAgICAgdm9pZCBzZXRBdWRp
b091dHB1dERldmljZShjb25zdCBTdHJpbmcmKTsKIAogICAgIHZvaWQgYWRkU291cmNlKFJlZjxB
dWRpb1NhbXBsZURhdGFTb3VyY2U+JiYpOwogICAgIHZvaWQgcmVtb3ZlU291cmNlKEF1ZGlvU2Ft
cGxlRGF0YVNvdXJjZSYpOwogCisgICAgdXNpbmcgUmVzZXRPYnNlcnZlciA9IE9ic2VydmVyPHZv
aWQoKT47CisgICAgdm9pZCBhZGRSZXNldE9ic2VydmVyKFJlc2V0T2JzZXJ2ZXImIG9ic2VydmVy
KSB7IG1fcmVzZXRPYnNlcnZlcnMuYWRkKG9ic2VydmVyKTsgfQogICAgIHZvaWQgcmV0cmlldmVG
b3JtYXREZXNjcmlwdGlvbihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IENBQXVkaW9TdHJl
YW1EZXNjcmlwdGlvbiopPiYmKTsKIAogcHJpdmF0ZToKQEAgLTczLDYgKzc4LDcgQEAgcHJpdmF0
ZToKICAgICBib29sIG1faGFzUGVuZGluZ1JlbmRlclNvdXJjZXMgV1RGX0dVQVJERURfQllfTE9D
SyhtX3BlbmRpbmdSZW5kZXJTb3VyY2VzTG9jaykgeyBmYWxzZSB9OwogICAgIExvY2sgbV9wZW5k
aW5nUmVuZGVyU291cmNlc0xvY2s7CiAgICAgVW5pcXVlUmVmPEF1ZGlvTWVkaWFTdHJlYW1UcmFj
a1JlbmRlcmVySW50ZXJuYWxVbml0PiBtX2ludGVybmFsVW5pdDsKKyAgICBXZWFrSGFzaFNldDxS
ZXNldE9ic2VydmVyPiBtX3Jlc2V0T2JzZXJ2ZXJzOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tS
ZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L3dlYnJ0Yy9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1h
bmFnZXIuY3BwCmluZGV4IDFmOTkzYWE3NjgxOTVlZjU4ODE0OGZiNDM4ZGI3NTQ4YTE2MmVlMzgu
LmIyODljN2FiYTI4MTcwNzUxNjZiOWNjMjk3ZWJjMmY1MzU4MWU3NDMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNr
UmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3Mvd2VicnRjL1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxV
bml0TWFuYWdlci5jcHAKQEAgLTU3LDYgKzU3LDcgQEAgcHVibGljOgogICAgIHZvaWQgc3RvcCgp
OwogICAgIHZvaWQgc2V0QXVkaW9PdXRwdXREZXZpY2UoY29uc3QgU3RyaW5nJik7CiAgICAgT1NT
dGF0dXMgcmVuZGVyKHNpemVfdCBzYW1wbGVDb3VudCwgQXVkaW9CdWZmZXJMaXN0JiwgdWludDY0
X3Qgc2FtcGxlVGltZSwgZG91YmxlIGhvc3RUaW1lLCBBdWRpb1VuaXRSZW5kZXJBY3Rpb25GbGFn
cyYpOworICAgIHZvaWQgbm90aWZ5UmVzZXQoKTsKIAogcHJpdmF0ZToKICAgICB2b2lkIHN0b3Jh
Z2VDaGFuZ2VkKFNoYXJlZE1lbW9yeSosIGNvbnN0IFdlYkNvcmU6OkNBQXVkaW9TdHJlYW1EZXNj
cmlwdGlvbiYsIHNpemVfdCk7CkBAIC0xMjMsMTAgKzEyNCwxNyBAQCBzdGF0aWMgV2ViQ29yZTo6
QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXQ6OlJlbmRlckNhbGxiYWNr
IHJlbmRlcgogICAgIH07CiB9CiAKK3N0YXRpYyBXZWJDb3JlOjpBdWRpb01lZGlhU3RyZWFtVHJh
Y2tSZW5kZXJlckludGVybmFsVW5pdDo6UmVzZXRDYWxsYmFjayByZXNldENhbGxiYWNrKFJlbW90
ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6VW5pdCYg
dW5pdCkKK3sKKyAgICByZXR1cm4gWyZ1bml0XSgpIHsKKyAgICAgICAgcmV0dXJuIHVuaXQubm90
aWZ5UmVzZXQoKTsKKyAgICB9OworfQorCiBSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5k
ZXJlckludGVybmFsVW5pdE1hbmFnZXI6OlVuaXQ6OlVuaXQoQXVkaW9NZWRpYVN0cmVhbVRyYWNr
UmVuZGVyZXJJbnRlcm5hbFVuaXRJZGVudGlmaWVyIGlkZW50aWZpZXIsIFJlZjxJUEM6OkNvbm5l
Y3Rpb24+JiYgY29ubmVjdGlvbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJDb3Jl
OjpDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mLCBzaXplX3QpPiYmIGNhbGxiYWNrKQogICAgIDog
bV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCiAgICAgLCBtX2Nvbm5lY3Rpb24oV1RGTW92ZShjb25u
ZWN0aW9uKSkKLSAgICAsIG1fbG9jYWxVbml0KFdlYkNvcmU6OkF1ZGlvTWVkaWFTdHJlYW1UcmFj
a1JlbmRlcmVySW50ZXJuYWxVbml0OjpjcmVhdGVMb2NhbEludGVybmFsVW5pdChyZW5kZXJDYWxs
YmFjaygqdGhpcykpKQorICAgICwgbV9sb2NhbFVuaXQoV2ViQ29yZTo6QXVkaW9NZWRpYVN0cmVh
bVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXQ6OmNyZWF0ZUxvY2FsSW50ZXJuYWxVbml0KHJlbmRl
ckNhbGxiYWNrKCp0aGlzKSwgcmVzZXRDYWxsYmFjaygqdGhpcykpKQogewogICAgIG1fbG9jYWxV
bml0LT5yZXRyaWV2ZUZvcm1hdERlc2NyaXB0aW9uKFt3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhp
cyB9LCB0aGlzLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShhdXRvJiYgZGVzY3JpcHRp
b24pIG11dGFibGUgewogICAgICAgICBpZiAoIXdlYWtUaGlzIHx8ICFkZXNjcmlwdGlvbikgewpA
QCAtMTQ0LDYgKzE1MiwxMSBAQCBSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcklu
dGVybmFsVW5pdE1hbmFnZXI6OlVuaXQ6On5Vbml0KCkKICAgICBzdG9wKCk7CiB9CiAKK3ZvaWQg
UmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyOjpV
bml0Ojpub3RpZnlSZXNldCgpCit7CisgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpH
UFVQcm9jZXNzQ29ubmVjdGlvbjo6UmVzZXRBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcklu
dGVybmFsVW5pdCB7IG1faWRlbnRpZmllciB9LCAwKTsKK30KKwogdm9pZCBSZW1vdGVBdWRpb01l
ZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6OlVuaXQ6OnN0YXJ0KGNv
bnN0IFNoYXJlZE1lbW9yeTo6SGFuZGxlJiBoYW5kbGUsIGNvbnN0IFdlYkNvcmU6OkNBQXVkaW9T
dHJlYW1EZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24sIHVpbnQ2NF90IG51bWJlck9mRnJhbWVzLCBJ
UEM6OlNlbWFwaG9yZSYmIHNlbWFwaG9yZSkKIHsKICAgICBpZiAobV9pc1BsYXlpbmcpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9u
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24u
Y3BwCmluZGV4IDAxZjlhODllMGRkMDQwYjc3ZGQ2NGU1YTE4Y2RkZGQwODUxMWNjOWIuLmU0OTQ1
NDQ4NWVkN2MwZDk1MDUxNzM5ZDE4YWEwMTliMDFmMTI2ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCkBAIC0yOCw2
ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKKyNpbmNsdWRlICJBdWRpb01l
ZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXIuaCIKICNpbmNsdWRlICJE
YXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzc01lc3Nh
Z2VzLmgiCiAjaW5jbHVkZSAiR1BVUHJvY2Vzc0Nvbm5lY3Rpb25Jbml0aWFsaXphdGlvblBhcmFt
ZXRlcnMuaCIKQEAgLTE1Miw2ICsxNTMsMTEgQEAgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFu
YWdlciYgR1BVUHJvY2Vzc0Nvbm5lY3Rpb246OnNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck0KICAg
ICAgICAgbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyID0gbWFrZVVuaXF1ZTxTYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyPigpOwogICAgIHJldHVybiAqbV9zYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyOwogfQorCit2b2lkIEdQVVByb2Nlc3NDb25uZWN0aW9uOjpy
ZXNldEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0KEF1ZGlvTWVkaWFT
dHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0SWRlbnRpZmllciBpZGVudGlmaWVyKQorewor
ICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVy
SW50ZXJuYWxVbml0TWFuYWdlcigpLnJlc2V0KGlkZW50aWZpZXIpOworfQogI2VuZGlmCiAKIFJl
bW90ZU1lZGlhUGxheWVyTWFuYWdlciYgR1BVUHJvY2Vzc0Nvbm5lY3Rpb246Om1lZGlhUGxheWVy
TWFuYWdlcigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVBy
b2Nlc3NDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nl
c3NDb25uZWN0aW9uLmgKaW5kZXggMDUxZWE4Njc1MzMyYjQ4OTc3Y2YzODI4ZGUyNDI3NWVhMzY3
NmIyYy4uMmU5MGQ5YzExMDA4MjdlY2JkMGFlOThjYmZhNDVjODk1MjA1ZjFjMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaApA
QCAtNzQsNiArNzQsNyBAQCBwdWJsaWM6CiAjZW5kaWYKICNpZiBQTEFURk9STShDT0NPQSkgJiYg
RU5BQkxFKE1FRElBX1NUUkVBTSkKICAgICBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2Vy
JiBzYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyKCk7CisgICAgdm9pZCByZXNldEF1ZGlv
TWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0KEF1ZGlvTWVkaWFTdHJlYW1UcmFj
a1JlbmRlcmVySW50ZXJuYWxVbml0SWRlbnRpZmllcik7CiAjZW5kaWYKIAogICAgIFJlbW90ZU1l
ZGlhUGxheWVyTWFuYWdlciYgbWVkaWFQbGF5ZXJNYW5hZ2VyKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2VzLmlu
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5tZXNz
YWdlcy5pbgppbmRleCAzZGEwZTYxZjBjOGFjYTdiNTdiZTEwNmFiNWE5NmQ3ODFlYTQ4NjY2Li5i
YTAzZGQyNWRlNDBmMzE0MTNiNDNlY2IyOWEwZWVmZDAwZWJkZTk3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2VzLmlu
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24u
bWVzc2FnZXMuaW4KQEAgLTI5LDYgKzI5LDkgQEAgbWVzc2FnZXMgLT4gR1BVUHJvY2Vzc0Nvbm5l
Y3Rpb24gV2FudHNEaXNwYXRjaE1lc3NhZ2UgewogICAgIEJlZ2luUm91dGluZ0FyYml0cmF0aW9u
V2l0aENhdGVnb3J5KGVudW06dWludDhfdCBXZWJDb3JlOjpBdWRpb1Nlc3Npb246OkNhdGVnb3J5
VHlwZSBjYXRlZ29yeSkgLT4gKGVudW06dWludDhfdCBXZWJLaXQ6OkF1ZGlvU2Vzc2lvblJvdXRp
bmdBcmJpdHJhdG9yUHJveHk6OlJvdXRpbmdBcmJpdHJhdGlvbkVycm9yIGVycm9yLCBlbnVtOmJv
b2wgV2ViS2l0OjpBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvclByb3h5OjpEZWZhdWx0Um91
dGVDaGFuZ2VkIGRlZmF1bHRSb3V0ZUNoYW5nZWQpIEFzeW5jCiAgICAgRW5kUm91dGluZ0FyYml0
cmF0aW9uKCk7CiAjZW5kaWYKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBQTEFURk9STShD
T0NPQSkKKyAgICBSZXNldEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0
KFdlYktpdDo6QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRJZGVudGlm
aWVyIGlkZW50aWZpZXIpCisjZW5kaWYKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VT
UykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0F1ZGlv
TWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9BdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJl
ckludGVybmFsVW5pdE1hbmFnZXIuY3BwCmluZGV4IDY4NTFkMWE5NDQ5NzA2MjkxNTVmNmYyYzk2
YTQ3YTEyOTg3MjUwZjUuLjIwOWRkNDdkNzQyZTE0NjRmMjdkYjVjYzQ2NjM2OThiNzg3Y2MwZjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0F1ZGlvTWVk
aWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlci5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVy
ZXJJbnRlcm5hbFVuaXRNYW5hZ2VyLmNwcApAQCAtNDUsMTIgKzQ1LDEzIEBAIG5hbWVzcGFjZSBX
ZWJLaXQgewogY2xhc3MgQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRN
YW5hZ2VyOjpQcm94eSBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpBdWRpb01lZGlhU3RyZWFtVHJh
Y2tSZW5kZXJlckludGVybmFsVW5pdCwgcHVibGljIENhbk1ha2VXZWFrUHRyPFByb3h5PiB7CiAg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgUHJveHko
V2ViQ29yZTo6QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXQ6OlJlbmRl
ckNhbGxiYWNrJiYpOworICAgIFByb3h5KFdlYkNvcmU6OkF1ZGlvTWVkaWFTdHJlYW1UcmFja1Jl
bmRlcmVySW50ZXJuYWxVbml0OjpSZW5kZXJDYWxsYmFjayYmLCBXZWJDb3JlOjpBdWRpb01lZGlh
U3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdDo6UmVzZXRDYWxsYmFjayYmKTsKICAgICB+
UHJveHkoKTsKIAogICAgIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0
SWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CiAK
LSAgICB2b2lkIHJlc3RhcnRJZk5lZWRlZCgpOworICAgIGVudW0gY2xhc3MgSXNDbG9zZWQgeyBO
bywgWWVzIH07CisgICAgdm9pZCByZXNldChJc0Nsb3NlZCk7CiAKIHByaXZhdGU6CiAgICAgLy8g
QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0OjpJbnRlcm5hbFVuaXQgQVBJLgpAQCAt
NjcsNiArNjgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY3JlYXRlUmVtb3RlVW5pdCgpOwogCiAg
ICAgV2ViQ29yZTo6QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXQ6OlJl
bmRlckNhbGxiYWNrIG1fcmVuZGVyQ2FsbGJhY2s7CisgICAgV2ViQ29yZTo6QXVkaW9NZWRpYVN0
cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXQ6OlJlc2V0Q2FsbGJhY2sgbV9yZXNldENhbGxi
YWNrOwogICAgIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0SWRlbnRp
ZmllciBtX2lkZW50aWZpZXI7CiAKICAgICBEZXF1ZTxDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNv
bnN0IFdlYkNvcmU6OkNBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiopPj4gbV9kZXNjcmlwdGlvbkNh
bGxiYWNrczsKQEAgLTk3LDE5ICs5OSwyNyBAQCB2b2lkIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1Jl
bmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6cmVtb3ZlKFByb3h5JiBwcm94eSkKICAgICBtX3By
b3hpZXMucmVtb3ZlKHByb3h5LmlkZW50aWZpZXIoKSk7CiB9CiAKLVVuaXF1ZVJlZjxXZWJDb3Jl
OjpBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdD4gQXVkaW9NZWRpYVN0
cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyOjpjcmVhdGVSZW1vdGVJbnRlcm5h
bFVuaXQoV2ViQ29yZTo6QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXQ6
OlJlbmRlckNhbGxiYWNrJiYgY2FsbGJhY2spCitVbmlxdWVSZWY8V2ViQ29yZTo6QXVkaW9NZWRp
YVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXQ+IEF1ZGlvTWVkaWFTdHJlYW1UcmFja1Jl
bmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6Y3JlYXRlUmVtb3RlSW50ZXJuYWxVbml0KFdlYkNv
cmU6OkF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0OjpSZW5kZXJDYWxs
YmFjayYmIHJlbmRlckNhbGxiYWNrLCBXZWJDb3JlOjpBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5k
ZXJlckludGVybmFsVW5pdDo6UmVzZXRDYWxsYmFjayYmIHJlc2V0Q2FsbGJhY2spCiB7Ci0gICAg
cmV0dXJuIG1ha2VVbmlxdWVSZWY8QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5h
bFVuaXRNYW5hZ2VyOjpQcm94eT4oV1RGTW92ZShjYWxsYmFjaykpOworICAgIHJldHVybiBtYWtl
VW5pcXVlUmVmPEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdl
cjo6UHJveHk+KFdURk1vdmUocmVuZGVyQ2FsbGJhY2spLCBXVEZNb3ZlKHJlc2V0Q2FsbGJhY2sp
KTsKIH0KIAotdm9pZCBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1h
bmFnZXI6OmdwdVByb2Nlc3NDb25uZWN0aW9uQ2xvc2VkKCkKK3ZvaWQgQXVkaW9NZWRpYVN0cmVh
bVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyOjpyZXNldChBdWRpb01lZGlhU3RyZWFt
VHJhY2tSZW5kZXJlckludGVybmFsVW5pdElkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKLSAgICBm
b3IgKGF1dG8gcHJveHkgOiBtX3Byb3hpZXMudmFsdWVzKCkpCi0gICAgICAgIHByb3h5LT5yZXN0
YXJ0SWZOZWVkZWQoKTsKKyAgICBpZiAoYXV0byBwcm94eSA9IG1fcHJveGllcy5nZXQoaWRlbnRp
ZmllcikpCisgICAgICAgIHByb3h5LT5yZXNldChQcm94eTo6SXNDbG9zZWQ6Ok5vKTsKIH0KIAot
QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyOjpQcm94eTo6
UHJveHkoV2ViQ29yZTo6QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXQ6
OlJlbmRlckNhbGxiYWNrJiYgcmVuZGVyQ2FsbGJhY2spCit2b2lkIEF1ZGlvTWVkaWFTdHJlYW1U
cmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6cmVzdGFydEFsbFVuaXRzKCkKK3sKKyAg
ICBhdXRvIHByb3hpZXMgPSBzdGQ6OmV4Y2hhbmdlKG1fcHJveGllcywgeyB9KTsKKyAgICBmb3Ig
KGF1dG8gcHJveHkgOiBwcm94aWVzLnZhbHVlcygpKQorICAgICAgICBwcm94eS0+cmVzZXQoUHJv
eHk6OklzQ2xvc2VkOjpZZXMpOworfQorCitBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcklu
dGVybmFsVW5pdE1hbmFnZXI6OlByb3h5OjpQcm94eShXZWJDb3JlOjpBdWRpb01lZGlhU3RyZWFt
VHJhY2tSZW5kZXJlckludGVybmFsVW5pdDo6UmVuZGVyQ2FsbGJhY2smJiByZW5kZXJDYWxsYmFj
aywgV2ViQ29yZTo6QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXQ6OlJl
c2V0Q2FsbGJhY2smJiByZXNldENhbGxiYWNrKQogICAgIDogbV9yZW5kZXJDYWxsYmFjayhXVEZN
b3ZlKHJlbmRlckNhbGxiYWNrKSkKKyAgICAsIG1fcmVzZXRDYWxsYmFjayhXVEZNb3ZlKHJlc2V0
Q2FsbGJhY2spKQogICAgICwgbV9pZGVudGlmaWVyKEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRl
cmVySW50ZXJuYWxVbml0SWRlbnRpZmllcjo6Z2VuZXJhdGUoKSkKIHsKICAgICBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS5hdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1h
bmFnZXIoKS5hZGQoKnRoaXMpOwpAQCAtMjU4LDEwICsyNjgsMTEgQEAgdm9pZCBBdWRpb01lZGlh
U3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6OlByb3h5OjpzdGFydFRocmVh
ZCgpCiAgICAgbV90aHJlYWQgPSBUaHJlYWQ6OmNyZWF0ZSgiQXVkaW9NZWRpYVN0cmVhbVRyYWNr
UmVuZGVyZXJJbnRlcm5hbFVuaXQgdGhyZWFkIiwgV1RGTW92ZSh0aHJlYWRMb29wKSwgVGhyZWFk
VHlwZTo6QXVkaW8sIFRocmVhZDo6UU9TOjpVc2VySW50ZXJhY3RpdmUpOwogfQogCi12b2lkIEF1
ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6UHJveHk6OnJl
c3RhcnRJZk5lZWRlZCgpCit2b2lkIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJu
YWxVbml0TWFuYWdlcjo6UHJveHk6OnJlc2V0KElzQ2xvc2VkIGlzQ2xvc2VkKQogewogICAgIHN0
b3BUaHJlYWQoKTsKLSAgICBtX2RpZENsb3NlID0gdHJ1ZTsKKyAgICBtX2RpZENsb3NlID0gaXND
bG9zZWQgPT0gSXNDbG9zZWQ6OlllczsKKyAgICBtX3Jlc2V0Q2FsbGJhY2soKTsKICAgICBpZiAo
bV9pc1BsYXlpbmcpCiAgICAgICAgIHN0YXJ0KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9BdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcklu
dGVybmFsVW5pdE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRj
L0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlci5oCmluZGV4
IGJkMGZhNmRlZTcwOTRkNzVhMjQ5ZTJjNjBiNzIwMDBhNzYyNDQwN2MuLjBiYTU2MzYwOGUwNmI3
YjZkZjU5NGU3NGI5MzM0NTc1NTMyZjUyMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvd2VicnRjL0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxV
bml0TWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0F1
ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlci5oCkBAIC00Nywx
MyArNDcsMTQgQEAgY2xhc3MgQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVu
aXRNYW5hZ2VyIHsKIHB1YmxpYzoKICAgICBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcklu
dGVybmFsVW5pdE1hbmFnZXIoKSA9IGRlZmF1bHQ7CiAKLSAgICBVbmlxdWVSZWY8V2ViQ29yZTo6
QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXQ+IGNyZWF0ZVJlbW90ZUlu
dGVybmFsVW5pdChXZWJDb3JlOjpBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFs
VW5pdDo6UmVuZGVyQ2FsbGJhY2smJik7CisgICAgVW5pcXVlUmVmPFdlYkNvcmU6OkF1ZGlvTWVk
aWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0PiBjcmVhdGVSZW1vdGVJbnRlcm5hbFVu
aXQoV2ViQ29yZTo6QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXQ6OlJl
bmRlckNhbGxiYWNrJiYsIFdlYkNvcmU6OkF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50
ZXJuYWxVbml0OjpSZXNldENhbGxiYWNrJiYpOwogCiAgICAgY2xhc3MgUHJveHk7CiAgICAgdm9p
ZCBhZGQoUHJveHkmKTsKICAgICB2b2lkIHJlbW92ZShQcm94eSYpOwogCi0gICAgdm9pZCBncHVQ
cm9jZXNzQ29ubmVjdGlvbkNsb3NlZCgpOworICAgIHZvaWQgcmVzZXQoQXVkaW9NZWRpYVN0cmVh
bVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRJZGVudGlmaWVyKTsKKyAgICB2b2lkIHJlc3RhcnRB
bGxVbml0cygpOwogCiBwcml2YXRlOgogICAgIEhhc2hNYXA8QXVkaW9NZWRpYVN0cmVhbVRyYWNr
UmVuZGVyZXJJbnRlcm5hbFVuaXRJZGVudGlmaWVyLCBXZWFrUHRyPFByb3h5Pj4gbV9wcm94aWVz
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IGY4NWNhMzYzZjRl
ZjI1ZjI5MjFkYTU4NWZkMWI2NGMxM2U5OTM2NDQuLjAyNmFhM2UxOTEzMGU4YTI2MTIwNmU2YTMz
NTZmODY2OTRhMzQxNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAK
QEAgLTEzMDAsNyArMTMwMCw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6Z3B1UHJvY2Vzc0Nvbm5lY3Rp
b25DbG9zZWQoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCiAKICNpZiBFTkFCTEUo
TUVESUFfU1RSRUFNKSAmJiBQTEFURk9STShDT0NPQSkKICAgICBpZiAobV9hdWRpb01lZGlhU3Ry
ZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXIpCi0gICAgICAgIG1fYXVkaW9NZWRp
YVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyLT5ncHVQcm9jZXNzQ29ubmVj
dGlvbkNsb3NlZCgpOworICAgICAgICBtX2F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50
ZXJuYWxVbml0TWFuYWdlci0+cmVzdGFydEFsbFVuaXRzKCk7CiAjZW5kaWYKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5h
Z2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJl
TWFuYWdlci5jcHAKaW5kZXggMGYzNDk1MzQyNjA4MGI5ODQ5ZTgxZTVkYTQ2NzE1ZmIzN2NkNGVl
MC4uYjA4OGU5ZWU1MTgzYzU2M2E4OTcxNDlkYzVjMzVjYzAyM2E1ZjY5NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1h
bmFnZXIuY3BwCkBAIC04MSw4ICs4MSw4IEBAIHZvaWQgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXI6
OnNldHVwQ2FwdHVyZVByb2Nlc3Nlcyhib29sIHNob3VsZENhcHR1cmVBdWRpb0luVUlQCiAgICAg
bV92aWRlb0ZhY3Rvcnkuc2V0U2hvdWxkQ2FwdHVyZUluR1BVUHJvY2VzcyhzaG91bGRDYXB0dXJl
VmlkZW9JbkdQVVByb2Nlc3MpOwogCiAgICAgaWYgKHNob3VsZENhcHR1cmVBdWRpb0luR1BVUHJv
Y2VzcykgewotICAgICAgICBXZWJDb3JlOjpBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVu
aXQ6OnNldENyZWF0ZUludGVybmFsVW5pdEZ1bmN0aW9uKFtdKGF1dG8mJiByZW5kZXJDYWxsYmFj
aykgewotICAgICAgICAgICAgcmV0dXJuIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmF1ZGlvTWVk
aWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcigpLmNyZWF0ZVJlbW90ZUlu
dGVybmFsVW5pdChXVEZNb3ZlKHJlbmRlckNhbGxiYWNrKSk7CisgICAgICAgIFdlYkNvcmU6OkF1
ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdDo6c2V0Q3JlYXRlSW50ZXJuYWxVbml0RnVu
Y3Rpb24oW10oYXV0byYmIHJlbmRlckNhbGxiYWNrLCBhdXRvJiYgcmVzZXRDYWxsYmFjaykgewor
ICAgICAgICAgICAgcmV0dXJuIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmF1ZGlvTWVkaWFTdHJl
YW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcigpLmNyZWF0ZVJlbW90ZUludGVybmFs
VW5pdChXVEZNb3ZlKHJlbmRlckNhbGxiYWNrKSwgV1RGTW92ZShyZXNldENhbGxiYWNrKSk7CiAg
ICAgICAgIH0pOwogICAgIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>442000</attachid>
            <date>2021-10-21 02:29:37 -0700</date>
            <delta_ts>2021-10-22 01:45:08 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-231110-20211021112933.patch</filename>
            <type>text/plain</type>
            <size>31259</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0NTkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTVkMjU5MTZlZTYwNjY3
ZmI5NjBjOWMxNmQ4YjQ1NzYxYzIyNWY3Zi4uNmZhZmIwY2JiZjViNjYzOTBlM2YxZDIwMzQ1ZjUy
YmY0NzM3YTExMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDIxLTEwLTIxICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBBdWRpbyBvdmVyIHBlZXIg
Y29ubmVjdGlvbiBiZWNvbWVzIGxhdGVudCB3aGVuIGNoYW5naW5nIHRoZSBvdXRwdXQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTExMAorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vODQwNDkwMDU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBD
YXJsc29uLgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBkZXRlY3RpbmcgY2hhbmdlIG9mIHRp
bWVsaW5lIGJ5IGxvb2tpbmcgYXQgc2FtcGxlIHRpbWVzLiBUaGlzIGhhcHBlbnMgd2hlbiBjaGFu
Z2luZyBhdWRpbyBvdXRwdXQuCisgICAgICAgIE1ha2UgQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVu
ZGVyZXJJbnRlcm5hbFVuaXQgY2FsbCBhIGNhbGxiYWNrIHRvIGxldCB0aGUgdW5pdCBkZWFsIHdp
dGggaXQuCisgICAgICAgIFdoZW4gc3dpdGNoaW5nIG91dHB1dCwgYXVkaW8gZGF0YSBpcyBrZXB0
IGdyb3dpbmcgYnV0IGlzIG5vdCByZWFkIGZvciBzb21lIHRpbWUgYnkgdGhlIHJlbW90ZSB1bml0
LCBldmVuIHRob3VnaCB0aGUgcmVtb3RlIHVuaXQgaXMgcnVubmluZy4KKyAgICAgICAgVGhlIHVu
aXQgY2FuIGFzayBpdHMgc291cmNlcyB0byB1cGRhdGUgdGhlaXIgb2Zmc2V0IHRvIG5vdCBrZWVw
IGV4dHJhIGJ1ZmZlcmVkIGRhdGEuCisKKyAgICAgICAgTWFudWFsbHkgdGVzdGVkLgorCisgICAg
ICAgICogcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9TYW1wbGVEYXRhU291cmNlLmg6CisgICAg
ICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vY29jb2EvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVu
ZGVyZXJDb2NvYS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vY29jb2EvQXVk
aW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJDb2NvYS5oOgorICAgICAgICAqIHBsYXRmb3JtL21l
ZGlhc3RyZWFtL2NvY29hL0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0
LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9jb2NvYS9BdWRpb01lZGlhU3Ry
ZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdC5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlh
c3RyZWFtL2NvY29hL0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdC5jcHA6CisgICAg
ICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vY29jb2EvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVu
ZGVyZXJVbml0Lmg6CisKIDIwMjEtMTAtMjAgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUu
Y29tPgogCiAgICAgICAgIFdlYktpdCBNYW5hZ2VkIE5vdGlmaWNhdGlvbnM6IFNrZWxldG9uIE5v
dGlmaWNhdGlvblByb3ZpZGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDQxNWVmMjdlYTRlODQyNTFkMjczOGNhNjVi
MGJlNDgyNTE4MGE4MWQuLmJkOTIwOTk4NmFkN2YzOTVkZjZiYmVjMmYyZDA2NDNmMjdkOTU1NzYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMjEtMTAtMjEgIFlvdWVubiBGYWJsZXQgIDx5
b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIEF1ZGlvIG92ZXIgcGVlciBjb25uZWN0aW9uIGJl
Y29tZXMgbGF0ZW50IHdoZW4gY2hhbmdpbmcgdGhlIG91dHB1dAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMxMTEwCisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS84NDA0OTAwNT4KKworICAgICAgICBSZXZpZXdlZCBieSBFcmljIENhcmxzb24uCisKKyAg
ICAgICAgV2hlbiBkZXRlY3RpbmcgYW4gYXVkaW8gdGltZWxpbmUgY2hhbmdlLCBzZW5kIGl0IGZy
b20gR1BVUHJvY2VzcyB0byBXZWJQcm9jZXNzLgorICAgICAgICBMZXQgdGhlIFdlYlByb2Nlc3Mg
cmVzZXQgdGhlIHNvdXJjZXMgdG8gcHJvcGVybHkgcmVzdGFydC4KKworICAgICAgICAqIEdQVVBy
b2Nlc3Mvd2VicnRjL1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxV
bml0TWFuYWdlci5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5l
Y3Rpb24uY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9u
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2Fn
ZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0F1ZGlvTWVkaWFTdHJlYW1U
cmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlci5jcHA6CisgICAgICAgICogV2ViUHJvY2Vz
cy9HUFUvd2VicnRjL0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFu
YWdlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgICog
V2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5jcHA6CisKIDIwMjEtMTAt
MjAgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYktpdCBN
YW5hZ2VkIE5vdGlmaWNhdGlvbnM6IFNrZWxldG9uIE5vdGlmaWNhdGlvblByb3ZpZGVyCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb1NhbXBsZURh
dGFTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvU2Ft
cGxlRGF0YVNvdXJjZS5oCmluZGV4IDZhZTNiNWNkMWYyZWZkNjIzOWZiMzRkMDEzYTU4Nzc2ZjQx
OGM2ZjUuLmFlYTIxNjQ2NTU1OWQ4Y2VlNTYwMTkxMWZmZTQ0YWY4NjAyMjc3YmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvU2FtcGxlRGF0YVNv
dXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvU2Ft
cGxlRGF0YVNvdXJjZS5oCkBAIC03MCw2ICs3MCw4IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IENB
QXVkaW9TdHJlYW1EZXNjcmlwdGlvbiogaW5wdXREZXNjcmlwdGlvbigpIGNvbnN0IHsgcmV0dXJu
IG1faW5wdXREZXNjcmlwdGlvbiA/ICZtX2lucHV0RGVzY3JpcHRpb24udmFsdWUoKSA6IG51bGxw
dHI7IH0KIAorICAgIHZvaWQgcmVjb21wdXRlU2FtcGxlT2Zmc2V0KCkgeyBtX3Nob3VsZENvbXB1
dGVPdXRwdXRTYW1wbGVPZmZzZXQgPSB0cnVlOyB9CisKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJM
RUQKICAgICBjb25zdCBMb2dnZXImIGxvZ2dlcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fbG9n
Z2VyOyB9CiAgICAgY29uc3Qgdm9pZCogbG9nSWRlbnRpZmllcigpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIG1fbG9nSWRlbnRpZmllcjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vY29jb2EvQXVkaW9TYW1wbGVEYXRhU291cmNlLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9TYW1wbGVEYXRhU291cmNlLm1tCmluZGV4IDAyYjE1
ODM0OWQzODgwODUwMzBlMTE0MGNiMzI2ZjdhN2E4MTkxNTQuLjNkMTVmNTM1MWE4YzQ2ZDAyMWI1
NDVjMDcwMmQyNGQ1ZDBkYmJmN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL2NvY29hL0F1ZGlvU2FtcGxlRGF0YVNvdXJjZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb1NhbXBsZURhdGFTb3VyY2UubW0KQEAgLTIzNCw3
ICsyMzQsOCBAQCBib29sIEF1ZGlvU2FtcGxlRGF0YVNvdXJjZTo6cHVsbFNhbXBsZXNJbnRlcm5h
bChBdWRpb0J1ZmZlckxpc3QmIGJ1ZmZlciwgc2l6ZV90CiAgICAgaWYgKG1fc2hvdWxkQ29tcHV0
ZU91dHB1dFNhbXBsZU9mZnNldCkgewogICAgICAgICB1aW50NjRfdCBidWZmZXJlZCA9IGVuZEZy
YW1lIC0gc3RhcnRGcmFtZTsKICAgICAgICAgaWYgKG1faXNGaXJzdFB1bGwpIHsKLSAgICAgICAg
ICAgIGlmIChidWZmZXJlZCA+PSBtX3dhaXRUb1N0YXJ0Rm9yUHVzaENvdW50ICogbV9sYXN0UHVz
aGVkU2FtcGxlQ291bnQpIHsKKyAgICAgICAgICAgIGF1dG8gbWluaW11bUJ1ZmZlciA9IG1fd2Fp
dFRvU3RhcnRGb3JQdXNoQ291bnQgKiBtX2xhc3RQdXNoZWRTYW1wbGVDb3VudDsKKyAgICAgICAg
ICAgIGlmIChidWZmZXJlZCA+PSBtaW5pbXVtQnVmZmVyKSB7CiAgICAgICAgICAgICAgICAgbV9v
dXRwdXRTYW1wbGVPZmZzZXQgPSBzdGFydEZyYW1lIC0gdGltZVN0YW1wOwogICAgICAgICAgICAg
ICAgIG1fc2hvdWxkQ29tcHV0ZU91dHB1dFNhbXBsZU9mZnNldCA9IGZhbHNlOwogICAgICAgICAg
ICAgICAgIG1fZW5kRnJhbWVXaGVuTm90RW5vdWdoRGF0YSA9IDA7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9jb2NvYS9BdWRpb01lZGlhU3RyZWFtVHJh
Y2tSZW5kZXJlckNvY29hLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L2NvY29hL0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyQ29jb2EuY3BwCmluZGV4IDA2MDk1
YTI3ZDk5N2ZmOGY5YjNhOWU3OWYxYmUwZGI1MGYwMzgyYWEuLmIyMDUzMzRkODM3MDlhZjlmNzY3
ZWJjMDBlMmMyMTgyZmEyY2E1ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL2NvY29hL0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyQ29jb2EuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2NvY29hL0F1ZGlvTWVk
aWFTdHJlYW1UcmFja1JlbmRlcmVyQ29jb2EuY3BwCkBAIC0zNiw3ICszNiwxMCBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyQ29jb2E6OkF1
ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyQ29jb2EoKSA9IGRlZmF1bHQ7CitBdWRpb01lZGlh
U3RyZWFtVHJhY2tSZW5kZXJlckNvY29hOjpBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckNv
Y29hKCkKKyAgICA6IG1fcmVzZXRPYnNlcnZlcihbdGhpc10geyByZXNldCgpOyB9KQoreworfQog
CiBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckNvY29hOjp+QXVkaW9NZWRpYVN0cmVhbVRy
YWNrUmVuZGVyZXJDb2NvYSgpID0gZGVmYXVsdDsKIApAQCAtNzIsMTEgKzc1LDE3IEBAIHZvaWQg
QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJDb2NvYTo6c2V0Vm9sdW1lKGZsb2F0IHZvbHVt
ZSkKICAgICAgICAgbV9kYXRhU291cmNlLT5zZXRWb2x1bWUodm9sdW1lKTsKIH0KIAordm9pZCBB
dWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckNvY29hOjpyZXNldCgpCit7CisgICAgaWYgKG1f
ZGF0YVNvdXJjZSkKKyAgICAgICAgbV9kYXRhU291cmNlLT5yZWNvbXB1dGVTYW1wbGVPZmZzZXQo
KTsKK30KKwogdm9pZCBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckNvY29hOjpzZXRBdWRp
b091dHB1dERldmljZShjb25zdCBTdHJpbmcmIGRldmljZUlkKQogewogICAgIC8vIEZJWE1FOiBX
ZSBzaG91bGQgY3JlYXRlIGEgdW5pdCBmb3Igb3Vyc2VsdmVzIGhlcmUgb3IgdXNlIHRoZSBkZWZh
dWx0IHVuaXQgaWYgZGV2aWNlSWQgaXMgbWF0Y2hpbmcuCiAgICAgQXVkaW9NZWRpYVN0cmVhbVRy
YWNrUmVuZGVyZXJVbml0OjpzaW5nbGV0b24oKS5zZXRBdWRpb091dHB1dERldmljZShkZXZpY2VJ
ZCk7Ci0gICAgbV9zaG91bGRSZXNldCA9IHRydWU7CisgICAgbV9zaG91bGRSZWNyZWF0ZURhdGFT
b3VyY2UgPSB0cnVlOwogfQogCiBzdGF0aWMgdW5zaWduZWQgcG9sbFNhbXBsZXNDb3VudCgpCkBA
IC05Miw3ICsxMDEsNyBAQCB2b2lkIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyQ29jb2E6
OnB1c2hTYW1wbGVzKGNvbnN0IE1lZGlhVGltZSYgc2FtcGxlVGltZQogewogICAgIEFTU0VSVCgh
aXNNYWluVGhyZWFkKCkpOwogICAgIEFTU0VSVChkZXNjcmlwdGlvbi5wbGF0Zm9ybURlc2NyaXB0
aW9uKCkudHlwZSA9PSBQbGF0Zm9ybURlc2NyaXB0aW9uOjpDQUF1ZGlvU3RyZWFtQmFzaWNUeXBl
KTsKLSAgICBpZiAoIW1fZGF0YVNvdXJjZSB8fCBtX3Nob3VsZFJlc2V0IHx8ICFtX2RhdGFTb3Vy
Y2UtPmlucHV0RGVzY3JpcHRpb24oKSB8fCAqbV9kYXRhU291cmNlLT5pbnB1dERlc2NyaXB0aW9u
KCkgIT0gZGVzY3JpcHRpb24pIHsKKyAgICBpZiAoIW1fZGF0YVNvdXJjZSB8fCBtX3Nob3VsZFJl
Y3JlYXRlRGF0YVNvdXJjZSB8fCAhbV9kYXRhU291cmNlLT5pbnB1dERlc2NyaXB0aW9uKCkgfHwg
Km1fZGF0YVNvdXJjZS0+aW5wdXREZXNjcmlwdGlvbigpICE9IGRlc2NyaXB0aW9uKSB7CiAgICAg
ICAgIERpc2FibGVNYWxsb2NSZXN0cmljdGlvbnNGb3JDdXJyZW50VGhyZWFkU2NvcGUgc2NvcGU7
CiAKICAgICAgICAgLy8gRklYTUU6IEZvciBub24gbGlid2VicnRjIHNvdXJjZXMsIHdlIGNhbiBw
cm9iYWJseSByZWR1Y2UgcG9sbCBzYW1wbGVzIGNvdW50IHRvIDIuCkBAIC0xMjAsMTAgKzEyOSwx
MSBAQCB2b2lkIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyQ29jb2E6OnB1c2hTYW1wbGVz
KGNvbnN0IE1lZGlhVGltZSYgc2FtcGxlVGltZQogICAgICAgICAgICAgICAgIEF1ZGlvTWVkaWFT
dHJlYW1UcmFja1JlbmRlcmVyVW5pdDo6c2luZ2xldG9uKCkucmVtb3ZlU291cmNlKCpvbGRTb3Vy
Y2UpOwogCiAgICAgICAgICAgICBuZXdTb3VyY2UtPnNldFZvbHVtZSh2b2x1bWUoKSk7CisgICAg
ICAgICAgICBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQ6OnNpbmdsZXRvbigpLmFk
ZFJlc2V0T2JzZXJ2ZXIobV9yZXNldE9ic2VydmVyKTsKICAgICAgICAgICAgIEF1ZGlvTWVkaWFT
dHJlYW1UcmFja1JlbmRlcmVyVW5pdDo6c2luZ2xldG9uKCkuYWRkU291cmNlKFdURk1vdmUobmV3
U291cmNlKSk7CiAgICAgICAgIH0pOwogICAgICAgICBtX2RhdGFTb3VyY2UgPSBXVEZNb3ZlKGRh
dGFTb3VyY2UpOwotICAgICAgICBtX3Nob3VsZFJlc2V0ID0gZmFsc2U7CisgICAgICAgIG1fc2hv
dWxkUmVjcmVhdGVEYXRhU291cmNlID0gZmFsc2U7CiAgICAgfQogCiAgICAgbV9kYXRhU291cmNl
LT5wdXNoU2FtcGxlcyhzYW1wbGVUaW1lLCBhdWRpb0RhdGEsIHNhbXBsZUNvdW50KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2NvY29hL0F1ZGlvTWVk
aWFTdHJlYW1UcmFja1JlbmRlcmVyQ29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL2NvY29hL0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyQ29jb2EuaAppbmRl
eCA1NDNlNDUxMjZhMGZkMGJhYWZhOTliZjY1NjExMmM0OWQ2MDIzYzllLi4zYTdiM2RjOTEzMmU2
ZjQxMjE0ZWE4NDc1YWNlZTNjMDExZTJjZTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9jb2NvYS9BdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckNv
Y29hLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vY29jb2EvQXVk
aW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJDb2NvYS5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYg
RU5BQkxFKE1FRElBX1NUUkVBTSkKIAogI2luY2x1ZGUgIkF1ZGlvTWVkaWFTdHJlYW1UcmFja1Jl
bmRlcmVyLmgiCisjaW5jbHVkZSAiQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0Lmgi
CiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKQEAgLTU1
LDkgKzU2LDEyIEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRWb2x1bWUoZmxvYXQpIGZpbmFsOwog
ICAgIHZvaWQgc2V0QXVkaW9PdXRwdXREZXZpY2UoY29uc3QgU3RyaW5nJikgZmluYWw7CiAKKyAg
ICB2b2lkIHJlc2V0KCk7CisKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q0FBdWRpb1N0cmVhbURlc2Ny
aXB0aW9uPiBtX291dHB1dERlc2NyaXB0aW9uOwogICAgIFJlZlB0cjxBdWRpb1NhbXBsZURhdGFT
b3VyY2U+IG1fZGF0YVNvdXJjZTsKLSAgICBib29sIG1fc2hvdWxkUmVzZXQgeyBmYWxzZSB9Owor
ICAgIGJvb2wgbV9zaG91bGRSZWNyZWF0ZURhdGFTb3VyY2UgeyBmYWxzZSB9OworICAgIFdlYkNv
cmU6OkF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdDo6UmVzZXRPYnNlcnZlciBtX3Jl
c2V0T2JzZXJ2ZXI7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9jb2NvYS9BdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFs
VW5pdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9jb2NvYS9BdWRp
b01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdC5jcHAKaW5kZXggNDlhNGUwY2I5
ZTgyZjM3Y2ZmZDFmNDEzOTc2YWU3YTY0NWM3NGEwNC4uN2FkYzgwMTcxOGQzODg5NDVjYmZiOGU2
ZDUxZjhjZjExZThlNDY5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vY29jb2EvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2NvY29hL0F1ZGlv
TWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0LmNwcApAQCAtNTAsNyArNTAsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBMb2NhbEF1ZGlvTWVkaWFTdHJlYW1UcmFja1Jl
bmRlcmVySW50ZXJuYWxVbml0IGZpbmFsIDogcHVibGljIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1Jl
bmRlcmVySW50ZXJuYWxVbml0IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKLSAgICBleHBsaWNpdCBMb2NhbEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJu
YWxVbml0KFJlbmRlckNhbGxiYWNrJiYpOworICAgIExvY2FsQXVkaW9NZWRpYVN0cmVhbVRyYWNr
UmVuZGVyZXJJbnRlcm5hbFVuaXQoUmVuZGVyQ2FsbGJhY2smJiwgUmVzZXRDYWxsYmFjayYmKTsK
IAogcHJpdmF0ZToKICAgICB2b2lkIGNyZWF0ZUF1ZGlvVW5pdElmTmVlZGVkKCk7CkBAIC02MSwy
NCArNjEsMjggQEAgcHJpdmF0ZToKICAgICB2b2lkIHJldHJpZXZlRm9ybWF0RGVzY3JpcHRpb24o
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24qKT4m
JikgZmluYWw7CiAgICAgdm9pZCBzZXRBdWRpb091dHB1dERldmljZShjb25zdCBTdHJpbmcmKSBm
aW5hbDsKIAorICAgIE9TU3RhdHVzIHJlbmRlcihBdWRpb1VuaXRSZW5kZXJBY3Rpb25GbGFncyos
IGNvbnN0IEF1ZGlvVGltZVN0YW1wKiwgVUludDMyIHNhbXBsZUNvdW50LCBBdWRpb0J1ZmZlckxp
c3QqKTsKICAgICBzdGF0aWMgT1NTdGF0dXMgcmVuZGVyaW5nQ2FsbGJhY2sodm9pZCosIEF1ZGlv
VW5pdFJlbmRlckFjdGlvbkZsYWdzKiwgY29uc3QgQXVkaW9UaW1lU3RhbXAqLCBVSW50MzIgaW5C
dXNOdW1iZXIsIFVJbnQzMiBzYW1wbGVDb3VudCwgQXVkaW9CdWZmZXJMaXN0Kik7CiAKICAgICBS
ZW5kZXJDYWxsYmFjayBtX3JlbmRlckNhbGxiYWNrOworICAgIFJlc2V0Q2FsbGJhY2sgbV9yZXNl
dENhbGxiYWNrOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24+
IG1fb3V0cHV0RGVzY3JpcHRpb247CiAgICAgQXVkaW9Db21wb25lbnRJbnN0YW5jZSBtX3JlbW90
ZUlPVW5pdCB7IG51bGxwdHIgfTsKICAgICBib29sIG1faXNTdGFydGVkIHsgZmFsc2UgfTsKKyAg
ICB1aW50NjRfdCBtX3NhbXBsZVRpbWUgeyAwIH07CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIHVp
bnQzMl90IG1fZGV2aWNlSUQgeyAwIH07CiAjZW5kaWYKIH07CiAKLVVuaXF1ZVJlZjxBdWRpb01l
ZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdD4gQXVkaW9NZWRpYVN0cmVhbVRyYWNr
UmVuZGVyZXJJbnRlcm5hbFVuaXQ6OmNyZWF0ZUxvY2FsSW50ZXJuYWxVbml0KFJlbmRlckNhbGxi
YWNrJiYgcmVuZGVyQ2FsbGJhY2spCitVbmlxdWVSZWY8QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVu
ZGVyZXJJbnRlcm5hbFVuaXQ+IEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxV
bml0OjpjcmVhdGVMb2NhbEludGVybmFsVW5pdChSZW5kZXJDYWxsYmFjayYmIHJlbmRlckNhbGxi
YWNrLCBSZXNldENhbGxiYWNrJiYgcmVzZXRDYWxsYmFjaykKIHsKLSAgICByZXR1cm4gbWFrZVVu
aXF1ZVJlZjxMb2NhbEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0PihX
VEZNb3ZlKHJlbmRlckNhbGxiYWNrKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWVSZWY8TG9jYWxB
dWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdD4oV1RGTW92ZShyZW5kZXJD
YWxsYmFjayksIFdURk1vdmUocmVzZXRDYWxsYmFjaykpOwogfQogCi1Mb2NhbEF1ZGlvTWVkaWFT
dHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0OjpMb2NhbEF1ZGlvTWVkaWFTdHJlYW1UcmFj
a1JlbmRlcmVySW50ZXJuYWxVbml0KFJlbmRlckNhbGxiYWNrJiYgcmVuZGVyQ2FsbGJhY2spCitM
b2NhbEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0OjpMb2NhbEF1ZGlv
TWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0KFJlbmRlckNhbGxiYWNrJiYgcmVu
ZGVyQ2FsbGJhY2ssIFJlc2V0Q2FsbGJhY2smJiByZXNldENhbGxiYWNrKQogICAgIDogbV9yZW5k
ZXJDYWxsYmFjayhXVEZNb3ZlKHJlbmRlckNhbGxiYWNrKSkKKyAgICAsIG1fcmVzZXRDYWxsYmFj
ayhXVEZNb3ZlKHJlc2V0Q2FsbGJhY2spKQogewogfQogCkBAIC0xMjUsNiArMTI5LDcgQEAgdm9p
ZCBMb2NhbEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0OjpzdGFydCgp
CiAgICAgaWYgKCFtX3JlbW90ZUlPVW5pdCkKICAgICAgICAgcmV0dXJuOwogCisgICAgbV9zYW1w
bGVUaW1lID0gMDsKICAgICBpZiAoYXV0byBlcnJvciA9IFBBTDo6QXVkaW9PdXRwdXRVbml0U3Rh
cnQobV9yZW1vdGVJT1VuaXQpKSB7CiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFdlYlJUQywg
IkF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0OjpzdGFydCBBdWRpb091
dHB1dFVuaXRTdGFydCBmYWlsZWQsIGVycm9yID0gJWQiLCBlcnJvcik7CiAgICAgICAgIFBBTDo6
QXVkaW9Db21wb25lbnRJbnN0YW5jZURpc3Bvc2UobV9yZW1vdGVJT1VuaXQpOwpAQCAtMjMwLDkg
KzIzNSwyMCBAQCB2b2lkIExvY2FsQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5h
bFVuaXQ6OmNyZWF0ZUF1ZGlvVW5pdElmTmVlZGVkKCkKICAgICBtX3JlbW90ZUlPVW5pdCA9IHJl
bW90ZUlPVW5pdDsKIH0KIAorT1NTdGF0dXMgTG9jYWxBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5k
ZXJlckludGVybmFsVW5pdDo6cmVuZGVyKEF1ZGlvVW5pdFJlbmRlckFjdGlvbkZsYWdzKiBhY3Rp
b25GbGFncywgY29uc3QgQXVkaW9UaW1lU3RhbXAqIHRpbWVTdGFtcCwgVUludDMyIHNhbXBsZUNv
dW50LCBBdWRpb0J1ZmZlckxpc3QqIGlvRGF0YSkKK3sKKyAgICBhdXRvIHNhbXBsZVRpbWUgPSB0
aW1lU3RhbXAtPm1TYW1wbGVUaW1lOworICAgIC8vIElmIHdlIG9ic2VydmUgYW4gaXJyZWd1bGFy
aXR5IGluIHRoZSB0aW1lbGluZSwgd2UgdHJpZ2dlciBhIHJlc2V0LgorICAgIGlmIChtX3NhbXBs
ZVRpbWUgJiYgKG1fc2FtcGxlVGltZSArIDIgKiBzYW1wbGVDb3VudCA8IHNhbXBsZVRpbWUgfHwg
c2FtcGxlVGltZSA8PSBtX3NhbXBsZVRpbWUpKQorICAgICAgICBtX3Jlc2V0Q2FsbGJhY2soKTsK
KyAgICBtX3NhbXBsZVRpbWUgPSBzYW1wbGVUaW1lIDwgc3RkOjpudW1lcmljX2xpbWl0czxGbG9h
dDY0Pjo6bWF4KCkgLSBzYW1wbGVDb3VudCA/IHNhbXBsZVRpbWUgOiAwOworCisgICAgcmV0dXJu
IG1fcmVuZGVyQ2FsbGJhY2soc2FtcGxlQ291bnQsICppb0RhdGEsIHNhbXBsZVRpbWUsIHRpbWVT
dGFtcC0+bUhvc3RUaW1lLCAqYWN0aW9uRmxhZ3MpOworfQorCiBPU1N0YXR1cyBMb2NhbEF1ZGlv
TWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0OjpyZW5kZXJpbmdDYWxsYmFjayh2
b2lkKiBwcm9jZXNzb3IsIEF1ZGlvVW5pdFJlbmRlckFjdGlvbkZsYWdzKiBhY3Rpb25GbGFncywg
Y29uc3QgQXVkaW9UaW1lU3RhbXAqIHRpbWVTdGFtcCwgVUludDMyLCBVSW50MzIgc2FtcGxlQ291
bnQsIEF1ZGlvQnVmZmVyTGlzdCogaW9EYXRhKQogewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxM
b2NhbEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0Kj4ocHJvY2Vzc29y
KS0+bV9yZW5kZXJDYWxsYmFjayhzYW1wbGVDb3VudCwgKmlvRGF0YSwgdGltZVN0YW1wLT5tU2Ft
cGxlVGltZSwgdGltZVN0YW1wLT5tSG9zdFRpbWUsICphY3Rpb25GbGFncyk7CisgICAgcmV0dXJu
IHN0YXRpY19jYXN0PExvY2FsQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVu
aXQqPihwcm9jZXNzb3IpLT5yZW5kZXIoYWN0aW9uRmxhZ3MsIHRpbWVTdGFtcCwgc2FtcGxlQ291
bnQsIGlvRGF0YSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2NvY29hL0F1ZGlvTWVkaWFTdHJlYW1U
cmFja1JlbmRlcmVySW50ZXJuYWxVbml0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9jb2NvYS9BdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdC5o
CmluZGV4IDFhYjVmMTczODBmYzE2MDhhYWIyMjA1MWNlNDljMjgwMjU5ZjhjNjguLjRkOWJmYjFh
M2E2MGFjMDc0NTNhZjZhY2M3NTBlOTRmZDc3YTZkM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2NvY29hL0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRl
cmVySW50ZXJuYWxVbml0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vY29jb2EvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXQuaApAQCAt
NDAsNyArNDAsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+QXVkaW9NZWRpYVN0cmVhbVRyYWNr
UmVuZGVyZXJJbnRlcm5hbFVuaXQoKSA9IGRlZmF1bHQ7CiAKICAgICB1c2luZyBSZW5kZXJDYWxs
YmFjayA9IEZ1bmN0aW9uPE9TU3RhdHVzKHNpemVfdCBzYW1wbGVDb3VudCwgQXVkaW9CdWZmZXJM
aXN0JiwgdWludDY0X3Qgc2FtcGxlVGltZSwgZG91YmxlIGhvc3RUaW1lLCBBdWRpb1VuaXRSZW5k
ZXJBY3Rpb25GbGFncyYpPjsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgVW5pcXVlUmVmPEF1
ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0PiBjcmVhdGVMb2NhbEludGVy
bmFsVW5pdChSZW5kZXJDYWxsYmFjayYmKTsKKyAgICB1c2luZyBSZXNldENhbGxiYWNrID0gRnVu
Y3Rpb248dm9pZCgpPjsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgVW5pcXVlUmVmPEF1ZGlv
TWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0PiBjcmVhdGVMb2NhbEludGVybmFs
VW5pdChSZW5kZXJDYWxsYmFjayYmLCBSZXNldENhbGxiYWNrJiYpOwogCiAgICAgdmlydHVhbCB2
b2lkIHN0YXJ0KCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzdG9wKCkgPSAwOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vY29jb2EvQXVkaW9NZWRpYVN0
cmVhbVRyYWNrUmVuZGVyZXJVbml0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL2NvY29hL0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdC5jcHAKaW5kZXgg
YzcxODc0NjQ3MTk2MjE5YTliNmFmZjA1Y2M2OGM2M2QxNzc0YTI5Mi4uZWIyYjIwODBlNDg4YmZl
MmJiOWFlOWZmYjQ1Nzc5YTY4NjIwNzBlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vY29jb2EvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9jb2NvYS9BdWRp
b01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQuY3BwCkBAIC00NiwxNiArNDYsMTcgQEAgdm9p
ZCBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQ6OnNldENyZWF0ZUludGVybmFsVW5p
dEZ1bmN0aW9uKENyZWF0ZUludGUKIAogc3RhdGljIFVuaXF1ZVJlZjxBdWRpb01lZGlhU3RyZWFt
VHJhY2tSZW5kZXJlckludGVybmFsVW5pdD4gY3JlYXRlSW50ZXJuYWxVbml0KEF1ZGlvTWVkaWFT
dHJlYW1UcmFja1JlbmRlcmVyVW5pdCYgdW5pdCkKIHsKLSAgICBBdWRpb01lZGlhU3RyZWFtVHJh
Y2tSZW5kZXJlckludGVybmFsVW5pdDo6UmVuZGVyQ2FsbGJhY2sgY2FsbGJhY2sgPSBbJnVuaXRd
KGF1dG8gc2FtcGxlQ291bnQsIGF1dG8mIGxpc3QsIGF1dG8gc2FtcGxlVGltZSwgYXV0byBob3N0
VGltZSwgYXV0byYgZmxhZ3MpIHsKKyAgICBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcklu
dGVybmFsVW5pdDo6UmVuZGVyQ2FsbGJhY2sgcmVuZGVyQ2FsbGJhY2sgPSBbJnVuaXRdKGF1dG8g
c2FtcGxlQ291bnQsIGF1dG8mIGxpc3QsIGF1dG8gc2FtcGxlVGltZSwgYXV0byBob3N0VGltZSwg
YXV0byYgZmxhZ3MpIHsKICAgICAgICAgdW5pdC5yZW5kZXIoc2FtcGxlQ291bnQsIGxpc3QsIHNh
bXBsZVRpbWUsIGhvc3RUaW1lLCBmbGFncyk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH07Cisg
ICAgQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXQ6OlJlc2V0Q2FsbGJh
Y2sgc3RhcnRDYWxsYmFjayA9IFsmdW5pdF0oKSB7IHVuaXQucmVzZXQoKTsgfTsKIAogICAgIGF1
dG8mIGZ1bmN0aW9uID0gZ2V0Q3JlYXRlSW50ZXJuYWxVbml0RnVuY3Rpb24oKTsKICAgICBpZiAo
ZnVuY3Rpb24pCi0gICAgICAgIHJldHVybiBmdW5jdGlvbihXVEZNb3ZlKGNhbGxiYWNrKSk7Cisg
ICAgICAgIHJldHVybiBmdW5jdGlvbihXVEZNb3ZlKHJlbmRlckNhbGxiYWNrKSwgV1RGTW92ZShz
dGFydENhbGxiYWNrKSk7CiAKLSAgICByZXR1cm4gQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVy
ZXJJbnRlcm5hbFVuaXQ6OmNyZWF0ZUxvY2FsSW50ZXJuYWxVbml0KFdURk1vdmUoY2FsbGJhY2sp
KTsKKyAgICByZXR1cm4gQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXQ6
OmNyZWF0ZUxvY2FsSW50ZXJuYWxVbml0KFdURk1vdmUocmVuZGVyQ2FsbGJhY2spLCBXVEZNb3Zl
KHN0YXJ0Q2FsbGJhY2spKTsKIH0KIAogQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0
JiBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQ6OnNpbmdsZXRvbigpCkBAIC0xMzcs
NiArMTM4LDE2IEBAIHZvaWQgQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0OjpzdG9w
KCkKICAgICBtX2ludGVybmFsVW5pdC0+c3RvcCgpOwogfQogCit2b2lkIEF1ZGlvTWVkaWFTdHJl
YW1UcmFja1JlbmRlcmVyVW5pdDo6cmVzZXQoKQoreworICAgIFJFTEVBU0VfTE9HKFdlYlJUQywg
IkF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdDo6cmVzZXQiKTsKKyAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOworCisgICAgbV9yZXNldE9ic2VydmVycy5mb3JFYWNoKFtdKGF1dG8m
IG9ic2VydmVyKSB7CisgICAgICAgIG9ic2VydmVyKCk7CisgICAgfSk7Cit9CisKIHZvaWQgQXVk
aW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0OjpyZXRyaWV2ZUZvcm1hdERlc2NyaXB0aW9u
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uKik+
JiYgY2FsbGJhY2spCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2NvY29hL0F1ZGlvTWVkaWFTdHJl
YW1UcmFja1JlbmRlcmVyVW5pdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vY29jb2EvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0LmgKaW5kZXggM2I3N2M5
ZDUzZTU3MGE3MzgyMGJlMzg5ZTAyMzc2YjIxZTVjMjFiYy4uNWYzMGI5YmQ0NjJhZDIzYjY3MDEz
Mjk5NGU0OGQ2ZmY5NWI3MDRkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vY29jb2EvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vY29jb2EvQXVkaW9NZWRpYVN0
cmVhbVRyYWNrUmVuZGVyZXJVbml0LmgKQEAgLTMxLDggKzMxLDEwIEBACiAjaW5jbHVkZSA8d3Rm
L0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9Mb2Nr
Lmg+CisjaW5jbHVkZSA8d3RmL09ic2VydmVyLmg+CiAjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5o
PgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha0hhc2hTZXQuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00OCwxNiArNTAsMTkgQEAgcHVibGljOgogICAg
IEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdCgpOwogICAgIH5BdWRpb01lZGlhU3Ry
ZWFtVHJhY2tSZW5kZXJlclVuaXQoKTsKIAotICAgIHVzaW5nIENyZWF0ZUludGVybmFsVW5pdEZ1
bmN0aW9uID0gRnVuY3Rpb248VW5pcXVlUmVmPEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVy
SW50ZXJuYWxVbml0PihBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdDo6
UmVuZGVyQ2FsbGJhY2smJik+OworICAgIHVzaW5nIENyZWF0ZUludGVybmFsVW5pdEZ1bmN0aW9u
ID0gRnVuY3Rpb248VW5pcXVlUmVmPEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJu
YWxVbml0PihBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdDo6UmVuZGVy
Q2FsbGJhY2smJiwgQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXQ6OlJl
c2V0Q2FsbGJhY2smJik+OwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIHNldENyZWF0
ZUludGVybmFsVW5pdEZ1bmN0aW9uKENyZWF0ZUludGVybmFsVW5pdEZ1bmN0aW9uJiYpOwogCiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZW5kZXIoc2l6ZV90IHNhbXBsZUNvdW50LCBBdWRpb0J1
ZmZlckxpc3QmLCB1aW50NjRfdCBzYW1wbGVUaW1lLCBkb3VibGUgaG9zdFRpbWUsIEF1ZGlvVW5p
dFJlbmRlckFjdGlvbkZsYWdzJik7CisgICAgdm9pZCByZXNldCgpOwogCiAgICAgdm9pZCBzZXRB
dWRpb091dHB1dERldmljZShjb25zdCBTdHJpbmcmKTsKIAogICAgIHZvaWQgYWRkU291cmNlKFJl
ZjxBdWRpb1NhbXBsZURhdGFTb3VyY2U+JiYpOwogICAgIHZvaWQgcmVtb3ZlU291cmNlKEF1ZGlv
U2FtcGxlRGF0YVNvdXJjZSYpOwogCisgICAgdXNpbmcgUmVzZXRPYnNlcnZlciA9IE9ic2VydmVy
PHZvaWQoKT47CisgICAgdm9pZCBhZGRSZXNldE9ic2VydmVyKFJlc2V0T2JzZXJ2ZXImIG9ic2Vy
dmVyKSB7IG1fcmVzZXRPYnNlcnZlcnMuYWRkKG9ic2VydmVyKTsgfQogICAgIHZvaWQgcmV0cmll
dmVGb3JtYXREZXNjcmlwdGlvbihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IENBQXVkaW9T
dHJlYW1EZXNjcmlwdGlvbiopPiYmKTsKIAogcHJpdmF0ZToKQEAgLTczLDYgKzc4LDcgQEAgcHJp
dmF0ZToKICAgICBib29sIG1faGFzUGVuZGluZ1JlbmRlclNvdXJjZXMgV1RGX0dVQVJERURfQllf
TE9DSyhtX3BlbmRpbmdSZW5kZXJTb3VyY2VzTG9jaykgeyBmYWxzZSB9OwogICAgIExvY2sgbV9w
ZW5kaW5nUmVuZGVyU291cmNlc0xvY2s7CiAgICAgVW5pcXVlUmVmPEF1ZGlvTWVkaWFTdHJlYW1U
cmFja1JlbmRlcmVySW50ZXJuYWxVbml0PiBtX2ludGVybmFsVW5pdDsKKyAgICBXZWFrSGFzaFNl
dDxSZXNldE9ic2VydmVyPiBtX3Jlc2V0T2JzZXJ2ZXJzOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJh
Y2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL3dlYnJ0Yy9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5p
dE1hbmFnZXIuY3BwCmluZGV4IDFmOTkzYWE3NjgxOTVlZjU4ODE0OGZiNDM4ZGI3NTQ4YTE2MmVl
MzguLmIyODljN2FiYTI4MTcwNzUxNjZiOWNjMjk3ZWJjMmY1MzU4MWU3NDMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRy
YWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3Mvd2VicnRjL1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJu
YWxVbml0TWFuYWdlci5jcHAKQEAgLTU3LDYgKzU3LDcgQEAgcHVibGljOgogICAgIHZvaWQgc3Rv
cCgpOwogICAgIHZvaWQgc2V0QXVkaW9PdXRwdXREZXZpY2UoY29uc3QgU3RyaW5nJik7CiAgICAg
T1NTdGF0dXMgcmVuZGVyKHNpemVfdCBzYW1wbGVDb3VudCwgQXVkaW9CdWZmZXJMaXN0JiwgdWlu
dDY0X3Qgc2FtcGxlVGltZSwgZG91YmxlIGhvc3RUaW1lLCBBdWRpb1VuaXRSZW5kZXJBY3Rpb25G
bGFncyYpOworICAgIHZvaWQgbm90aWZ5UmVzZXQoKTsKIAogcHJpdmF0ZToKICAgICB2b2lkIHN0
b3JhZ2VDaGFuZ2VkKFNoYXJlZE1lbW9yeSosIGNvbnN0IFdlYkNvcmU6OkNBQXVkaW9TdHJlYW1E
ZXNjcmlwdGlvbiYsIHNpemVfdCk7CkBAIC0xMjMsMTAgKzEyNCwxNyBAQCBzdGF0aWMgV2ViQ29y
ZTo6QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXQ6OlJlbmRlckNhbGxi
YWNrIHJlbmRlcgogICAgIH07CiB9CiAKK3N0YXRpYyBXZWJDb3JlOjpBdWRpb01lZGlhU3RyZWFt
VHJhY2tSZW5kZXJlckludGVybmFsVW5pdDo6UmVzZXRDYWxsYmFjayByZXNldENhbGxiYWNrKFJl
bW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6VW5p
dCYgdW5pdCkKK3sKKyAgICByZXR1cm4gWyZ1bml0XSgpIHsKKyAgICAgICAgcmV0dXJuIHVuaXQu
bm90aWZ5UmVzZXQoKTsKKyAgICB9OworfQorCiBSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tS
ZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6OlVuaXQ6OlVuaXQoQXVkaW9NZWRpYVN0cmVhbVRy
YWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRJZGVudGlmaWVyIGlkZW50aWZpZXIsIFJlZjxJUEM6OkNv
bm5lY3Rpb24+JiYgY29ubmVjdGlvbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJD
b3JlOjpDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mLCBzaXplX3QpPiYmIGNhbGxiYWNrKQogICAg
IDogbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCiAgICAgLCBtX2Nvbm5lY3Rpb24oV1RGTW92ZShj
b25uZWN0aW9uKSkKLSAgICAsIG1fbG9jYWxVbml0KFdlYkNvcmU6OkF1ZGlvTWVkaWFTdHJlYW1U
cmFja1JlbmRlcmVySW50ZXJuYWxVbml0OjpjcmVhdGVMb2NhbEludGVybmFsVW5pdChyZW5kZXJD
YWxsYmFjaygqdGhpcykpKQorICAgICwgbV9sb2NhbFVuaXQoV2ViQ29yZTo6QXVkaW9NZWRpYVN0
cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXQ6OmNyZWF0ZUxvY2FsSW50ZXJuYWxVbml0KHJl
bmRlckNhbGxiYWNrKCp0aGlzKSwgcmVzZXRDYWxsYmFjaygqdGhpcykpKQogewogICAgIG1fbG9j
YWxVbml0LT5yZXRyaWV2ZUZvcm1hdERlc2NyaXB0aW9uKFt3ZWFrVGhpcyA9IFdlYWtQdHIgeyAq
dGhpcyB9LCB0aGlzLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShhdXRvJiYgZGVzY3Jp
cHRpb24pIG11dGFibGUgewogICAgICAgICBpZiAoIXdlYWtUaGlzIHx8ICFkZXNjcmlwdGlvbikg
ewpAQCAtMTQ0LDYgKzE1MiwxMSBAQCBSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJl
ckludGVybmFsVW5pdE1hbmFnZXI6OlVuaXQ6On5Vbml0KCkKICAgICBzdG9wKCk7CiB9CiAKK3Zv
aWQgUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2Vy
OjpVbml0Ojpub3RpZnlSZXNldCgpCit7CisgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2Vz
OjpHUFVQcm9jZXNzQ29ubmVjdGlvbjo6UmVzZXRBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJl
ckludGVybmFsVW5pdCB7IG1faWRlbnRpZmllciB9LCAwKTsKK30KKwogdm9pZCBSZW1vdGVBdWRp
b01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6OlVuaXQ6OnN0YXJ0
KGNvbnN0IFNoYXJlZE1lbW9yeTo6SGFuZGxlJiBoYW5kbGUsIGNvbnN0IFdlYkNvcmU6OkNBQXVk
aW9TdHJlYW1EZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24sIHVpbnQ2NF90IG51bWJlck9mRnJhbWVz
LCBJUEM6OlNlbWFwaG9yZSYmIHNlbWFwaG9yZSkKIHsKICAgICBpZiAobV9pc1BsYXlpbmcpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0
aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rp
b24uY3BwCmluZGV4IDAxZjlhODllMGRkMDQwYjc3ZGQ2NGU1YTE4Y2RkZGQwODUxMWNjOWIuLmU0
OTQ1NDQ4NWVkN2MwZDk1MDUxNzM5ZDE4YWEwMTliMDFmMTI2ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCkBAIC0y
OCw2ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKKyNpbmNsdWRlICJBdWRp
b01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXIuaCIKICNpbmNsdWRl
ICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzc01l
c3NhZ2VzLmgiCiAjaW5jbHVkZSAiR1BVUHJvY2Vzc0Nvbm5lY3Rpb25Jbml0aWFsaXphdGlvblBh
cmFtZXRlcnMuaCIKQEAgLTE1Miw2ICsxNTMsMTEgQEAgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
TWFuYWdlciYgR1BVUHJvY2Vzc0Nvbm5lY3Rpb246OnNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck0K
ICAgICAgICAgbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyID0gbWFrZVVuaXF1ZTxT
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyPigpOwogICAgIHJldHVybiAqbV9zYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyOwogfQorCit2b2lkIEdQVVByb2Nlc3NDb25uZWN0aW9u
OjpyZXNldEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0KEF1ZGlvTWVk
aWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0SWRlbnRpZmllciBpZGVudGlmaWVyKQor
eworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRl
cmVySW50ZXJuYWxVbml0TWFuYWdlcigpLnJlc2V0KGlkZW50aWZpZXIpOworfQogI2VuZGlmCiAK
IFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlciYgR1BVUHJvY2Vzc0Nvbm5lY3Rpb246Om1lZGlhUGxh
eWVyTWFuYWdlcigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQ
VVByb2Nlc3NDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVBy
b2Nlc3NDb25uZWN0aW9uLmgKaW5kZXggMDUxZWE4Njc1MzMyYjQ4OTc3Y2YzODI4ZGUyNDI3NWVh
MzY3NmIyYy4uMmU5MGQ5YzExMDA4MjdlY2JkMGFlOThjYmZhNDVjODk1MjA1ZjFjMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24u
aApAQCAtNzQsNiArNzQsNyBAQCBwdWJsaWM6CiAjZW5kaWYKICNpZiBQTEFURk9STShDT0NPQSkg
JiYgRU5BQkxFKE1FRElBX1NUUkVBTSkKICAgICBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5h
Z2VyJiBzYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyKCk7CisgICAgdm9pZCByZXNldEF1
ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0KEF1ZGlvTWVkaWFTdHJlYW1U
cmFja1JlbmRlcmVySW50ZXJuYWxVbml0SWRlbnRpZmllcik7CiAjZW5kaWYKIAogICAgIFJlbW90
ZU1lZGlhUGxheWVyTWFuYWdlciYgbWVkaWFQbGF5ZXJNYW5hZ2VyKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2Vz
LmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5t
ZXNzYWdlcy5pbgppbmRleCAzZGEwZTYxZjBjOGFjYTdiNTdiZTEwNmFiNWE5NmQ3ODFlYTQ4NjY2
Li5iYTAzZGQyNWRlNDBmMzE0MTNiNDNlY2IyOWEwZWVmZDAwZWJkZTk3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2Vz
LmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rp
b24ubWVzc2FnZXMuaW4KQEAgLTI5LDYgKzI5LDkgQEAgbWVzc2FnZXMgLT4gR1BVUHJvY2Vzc0Nv
bm5lY3Rpb24gV2FudHNEaXNwYXRjaE1lc3NhZ2UgewogICAgIEJlZ2luUm91dGluZ0FyYml0cmF0
aW9uV2l0aENhdGVnb3J5KGVudW06dWludDhfdCBXZWJDb3JlOjpBdWRpb1Nlc3Npb246OkNhdGVn
b3J5VHlwZSBjYXRlZ29yeSkgLT4gKGVudW06dWludDhfdCBXZWJLaXQ6OkF1ZGlvU2Vzc2lvblJv
dXRpbmdBcmJpdHJhdG9yUHJveHk6OlJvdXRpbmdBcmJpdHJhdGlvbkVycm9yIGVycm9yLCBlbnVt
OmJvb2wgV2ViS2l0OjpBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvclByb3h5OjpEZWZhdWx0
Um91dGVDaGFuZ2VkIGRlZmF1bHRSb3V0ZUNoYW5nZWQpIEFzeW5jCiAgICAgRW5kUm91dGluZ0Fy
Yml0cmF0aW9uKCk7CiAjZW5kaWYKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBQTEFURk9S
TShDT0NPQSkKKyAgICBSZXNldEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxV
bml0KFdlYktpdDo6QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRJZGVu
dGlmaWVyIGlkZW50aWZpZXIpCisjZW5kaWYKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJP
Q0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0F1
ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9BdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5k
ZXJlckludGVybmFsVW5pdE1hbmFnZXIuY3BwCmluZGV4IDY4NTFkMWE5NDQ5NzA2MjkxNTVmNmYy
Yzk2YTQ3YTEyOTg3MjUwZjUuLjIwOWRkNDdkNzQyZTE0NjRmMjdkYjVjYzQ2NjM2OThiNzg3Y2Mw
ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0F1ZGlv
TWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlci5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVu
ZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyLmNwcApAQCAtNDUsMTIgKzQ1LDEzIEBAIG5hbWVzcGFj
ZSBXZWJLaXQgewogY2xhc3MgQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVu
aXRNYW5hZ2VyOjpQcm94eSBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpBdWRpb01lZGlhU3RyZWFt
VHJhY2tSZW5kZXJlckludGVybmFsVW5pdCwgcHVibGljIENhbk1ha2VXZWFrUHRyPFByb3h5PiB7
CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgUHJv
eHkoV2ViQ29yZTo6QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXQ6OlJl
bmRlckNhbGxiYWNrJiYpOworICAgIFByb3h5KFdlYkNvcmU6OkF1ZGlvTWVkaWFTdHJlYW1UcmFj
a1JlbmRlcmVySW50ZXJuYWxVbml0OjpSZW5kZXJDYWxsYmFjayYmLCBXZWJDb3JlOjpBdWRpb01l
ZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdDo6UmVzZXRDYWxsYmFjayYmKTsKICAg
ICB+UHJveHkoKTsKIAogICAgIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxV
bml0SWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9
CiAKLSAgICB2b2lkIHJlc3RhcnRJZk5lZWRlZCgpOworICAgIGVudW0gY2xhc3MgSXNDbG9zZWQg
eyBObywgWWVzIH07CisgICAgdm9pZCByZXNldChJc0Nsb3NlZCk7CiAKIHByaXZhdGU6CiAgICAg
Ly8gQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0OjpJbnRlcm5hbFVuaXQgQVBJLgpA
QCAtNjcsNiArNjgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY3JlYXRlUmVtb3RlVW5pdCgpOwog
CiAgICAgV2ViQ29yZTo6QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXQ6
OlJlbmRlckNhbGxiYWNrIG1fcmVuZGVyQ2FsbGJhY2s7CisgICAgV2ViQ29yZTo6QXVkaW9NZWRp
YVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXQ6OlJlc2V0Q2FsbGJhY2sgbV9yZXNldENh
bGxiYWNrOwogICAgIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0SWRl
bnRpZmllciBtX2lkZW50aWZpZXI7CiAKICAgICBEZXF1ZTxDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGNvbnN0IFdlYkNvcmU6OkNBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiopPj4gbV9kZXNjcmlwdGlv
bkNhbGxiYWNrczsKQEAgLTk3LDE5ICs5OSwyNyBAQCB2b2lkIEF1ZGlvTWVkaWFTdHJlYW1UcmFj
a1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6cmVtb3ZlKFByb3h5JiBwcm94eSkKICAgICBt
X3Byb3hpZXMucmVtb3ZlKHByb3h5LmlkZW50aWZpZXIoKSk7CiB9CiAKLVVuaXF1ZVJlZjxXZWJD
b3JlOjpBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdD4gQXVkaW9NZWRp
YVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyOjpjcmVhdGVSZW1vdGVJbnRl
cm5hbFVuaXQoV2ViQ29yZTo6QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVu
aXQ6OlJlbmRlckNhbGxiYWNrJiYgY2FsbGJhY2spCitVbmlxdWVSZWY8V2ViQ29yZTo6QXVkaW9N
ZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXQ+IEF1ZGlvTWVkaWFTdHJlYW1UcmFj
a1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6Y3JlYXRlUmVtb3RlSW50ZXJuYWxVbml0KFdl
YkNvcmU6OkF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0OjpSZW5kZXJD
YWxsYmFjayYmIHJlbmRlckNhbGxiYWNrLCBXZWJDb3JlOjpBdWRpb01lZGlhU3RyZWFtVHJhY2tS
ZW5kZXJlckludGVybmFsVW5pdDo6UmVzZXRDYWxsYmFjayYmIHJlc2V0Q2FsbGJhY2spCiB7Ci0g
ICAgcmV0dXJuIG1ha2VVbmlxdWVSZWY8QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRl
cm5hbFVuaXRNYW5hZ2VyOjpQcm94eT4oV1RGTW92ZShjYWxsYmFjaykpOworICAgIHJldHVybiBt
YWtlVW5pcXVlUmVmPEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFu
YWdlcjo6UHJveHk+KFdURk1vdmUocmVuZGVyQ2FsbGJhY2spLCBXVEZNb3ZlKHJlc2V0Q2FsbGJh
Y2spKTsKIH0KIAotdm9pZCBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5p
dE1hbmFnZXI6OmdwdVByb2Nlc3NDb25uZWN0aW9uQ2xvc2VkKCkKK3ZvaWQgQXVkaW9NZWRpYVN0
cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyOjpyZXNldChBdWRpb01lZGlhU3Ry
ZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdElkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKLSAg
ICBmb3IgKGF1dG8gcHJveHkgOiBtX3Byb3hpZXMudmFsdWVzKCkpCi0gICAgICAgIHByb3h5LT5y
ZXN0YXJ0SWZOZWVkZWQoKTsKKyAgICBpZiAoYXV0byBwcm94eSA9IG1fcHJveGllcy5nZXQoaWRl
bnRpZmllcikpCisgICAgICAgIHByb3h5LT5yZXNldChQcm94eTo6SXNDbG9zZWQ6Ok5vKTsKIH0K
IAotQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyOjpQcm94
eTo6UHJveHkoV2ViQ29yZTo6QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVu
aXQ6OlJlbmRlckNhbGxiYWNrJiYgcmVuZGVyQ2FsbGJhY2spCit2b2lkIEF1ZGlvTWVkaWFTdHJl
YW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6cmVzdGFydEFsbFVuaXRzKCkKK3sK
KyAgICBhdXRvIHByb3hpZXMgPSBzdGQ6OmV4Y2hhbmdlKG1fcHJveGllcywgeyB9KTsKKyAgICBm
b3IgKGF1dG8gcHJveHkgOiBwcm94aWVzLnZhbHVlcygpKQorICAgICAgICBwcm94eS0+cmVzZXQo
UHJveHk6OklzQ2xvc2VkOjpZZXMpOworfQorCitBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJl
ckludGVybmFsVW5pdE1hbmFnZXI6OlByb3h5OjpQcm94eShXZWJDb3JlOjpBdWRpb01lZGlhU3Ry
ZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdDo6UmVuZGVyQ2FsbGJhY2smJiByZW5kZXJDYWxs
YmFjaywgV2ViQ29yZTo6QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXQ6
OlJlc2V0Q2FsbGJhY2smJiByZXNldENhbGxiYWNrKQogICAgIDogbV9yZW5kZXJDYWxsYmFjayhX
VEZNb3ZlKHJlbmRlckNhbGxiYWNrKSkKKyAgICAsIG1fcmVzZXRDYWxsYmFjayhXVEZNb3ZlKHJl
c2V0Q2FsbGJhY2spKQogICAgICwgbV9pZGVudGlmaWVyKEF1ZGlvTWVkaWFTdHJlYW1UcmFja1Jl
bmRlcmVySW50ZXJuYWxVbml0SWRlbnRpZmllcjo6Z2VuZXJhdGUoKSkKIHsKICAgICBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5hdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5p
dE1hbmFnZXIoKS5hZGQoKnRoaXMpOwpAQCAtMjU4LDEwICsyNjgsMTEgQEAgdm9pZCBBdWRpb01l
ZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXI6OlByb3h5OjpzdGFydFRo
cmVhZCgpCiAgICAgbV90aHJlYWQgPSBUaHJlYWQ6OmNyZWF0ZSgiQXVkaW9NZWRpYVN0cmVhbVRy
YWNrUmVuZGVyZXJJbnRlcm5hbFVuaXQgdGhyZWFkIiwgV1RGTW92ZSh0aHJlYWRMb29wKSwgVGhy
ZWFkVHlwZTo6QXVkaW8sIFRocmVhZDo6UU9TOjpVc2VySW50ZXJhY3RpdmUpOwogfQogCi12b2lk
IEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcjo6UHJveHk6
OnJlc3RhcnRJZk5lZWRlZCgpCit2b2lkIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50
ZXJuYWxVbml0TWFuYWdlcjo6UHJveHk6OnJlc2V0KElzQ2xvc2VkIGlzQ2xvc2VkKQogewogICAg
IHN0b3BUaHJlYWQoKTsKLSAgICBtX2RpZENsb3NlID0gdHJ1ZTsKKyAgICBtX2RpZENsb3NlID0g
aXNDbG9zZWQgPT0gSXNDbG9zZWQ6OlllczsKKyAgICBtX3Jlc2V0Q2FsbGJhY2soKTsKICAgICBp
ZiAobV9pc1BsYXlpbmcpCiAgICAgICAgIHN0YXJ0KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9BdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJl
ckludGVybmFsVW5pdE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2Vi
cnRjL0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlci5oCmlu
ZGV4IGJkMGZhNmRlZTcwOTRkNzVhMjQ5ZTJjNjBiNzIwMDBhNzYyNDQwN2MuLjBiYTU2MzYwOGUw
NmI3YjZkZjU5NGU3NGI5MzM0NTc1NTMyZjUyMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvd2VicnRjL0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJu
YWxVbml0TWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRj
L0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlci5oCkBAIC00
NywxMyArNDcsMTQgQEAgY2xhc3MgQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5h
bFVuaXRNYW5hZ2VyIHsKIHB1YmxpYzoKICAgICBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJl
ckludGVybmFsVW5pdE1hbmFnZXIoKSA9IGRlZmF1bHQ7CiAKLSAgICBVbmlxdWVSZWY8V2ViQ29y
ZTo6QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXQ+IGNyZWF0ZVJlbW90
ZUludGVybmFsVW5pdChXZWJDb3JlOjpBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVy
bmFsVW5pdDo6UmVuZGVyQ2FsbGJhY2smJik7CisgICAgVW5pcXVlUmVmPFdlYkNvcmU6OkF1ZGlv
TWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0PiBjcmVhdGVSZW1vdGVJbnRlcm5h
bFVuaXQoV2ViQ29yZTo6QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXQ6
OlJlbmRlckNhbGxiYWNrJiYsIFdlYkNvcmU6OkF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVy
SW50ZXJuYWxVbml0OjpSZXNldENhbGxiYWNrJiYpOwogCiAgICAgY2xhc3MgUHJveHk7CiAgICAg
dm9pZCBhZGQoUHJveHkmKTsKICAgICB2b2lkIHJlbW92ZShQcm94eSYpOwogCi0gICAgdm9pZCBn
cHVQcm9jZXNzQ29ubmVjdGlvbkNsb3NlZCgpOworICAgIHZvaWQgcmVzZXQoQXVkaW9NZWRpYVN0
cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRJZGVudGlmaWVyKTsKKyAgICB2b2lkIHJlc3Rh
cnRBbGxVbml0cygpOwogCiBwcml2YXRlOgogICAgIEhhc2hNYXA8QXVkaW9NZWRpYVN0cmVhbVRy
YWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRJZGVudGlmaWVyLCBXZWFrUHRyPFByb3h5Pj4gbV9wcm94
aWVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IDQ2MmMzYzI3
ODE0YTEyOTZjZDNkM2E4ZDRkY2MyOWUyMGQwMWZkYmMuLjZmY2JiOGNlNTY1NDViZjViZDcxYmJk
ZDI1OTE3ZWE1ZGM4ODQ2MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5j
cHAKQEAgLTEzMTAsNyArMTMxMCw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6Z3B1UHJvY2Vzc0Nvbm5l
Y3Rpb25DbG9zZWQoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCiAKICNpZiBFTkFC
TEUoTUVESUFfU1RSRUFNKSAmJiBQTEFURk9STShDT0NPQSkKICAgICBpZiAobV9hdWRpb01lZGlh
U3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdE1hbmFnZXIpCi0gICAgICAgIG1fYXVkaW9N
ZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5hZ2VyLT5ncHVQcm9jZXNzQ29u
bmVjdGlvbkNsb3NlZCgpOworICAgICAgICBtX2F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVy
SW50ZXJuYWxVbml0TWFuYWdlci0+cmVzdGFydEFsbFVuaXRzKCk7CiAjZW5kaWYKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVN
YW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0
dXJlTWFuYWdlci5jcHAKaW5kZXggMGYzNDk1MzQyNjA4MGI5ODQ5ZTgxZTVkYTQ2NzE1ZmIzN2Nk
NGVlMC4uYjA4OGU5ZWU1MTgzYzU2M2E4OTcxNDlkYzVjMzVjYzAyM2E1ZjY5NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2Vy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVXNlck1lZGlhQ2FwdHVy
ZU1hbmFnZXIuY3BwCkBAIC04MSw4ICs4MSw4IEBAIHZvaWQgVXNlck1lZGlhQ2FwdHVyZU1hbmFn
ZXI6OnNldHVwQ2FwdHVyZVByb2Nlc3Nlcyhib29sIHNob3VsZENhcHR1cmVBdWRpb0luVUlQCiAg
ICAgbV92aWRlb0ZhY3Rvcnkuc2V0U2hvdWxkQ2FwdHVyZUluR1BVUHJvY2VzcyhzaG91bGRDYXB0
dXJlVmlkZW9JbkdQVVByb2Nlc3MpOwogCiAgICAgaWYgKHNob3VsZENhcHR1cmVBdWRpb0luR1BV
UHJvY2VzcykgewotICAgICAgICBXZWJDb3JlOjpBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJl
clVuaXQ6OnNldENyZWF0ZUludGVybmFsVW5pdEZ1bmN0aW9uKFtdKGF1dG8mJiByZW5kZXJDYWxs
YmFjaykgewotICAgICAgICAgICAgcmV0dXJuIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmF1ZGlv
TWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcigpLmNyZWF0ZVJlbW90
ZUludGVybmFsVW5pdChXVEZNb3ZlKHJlbmRlckNhbGxiYWNrKSk7CisgICAgICAgIFdlYkNvcmU6
OkF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdDo6c2V0Q3JlYXRlSW50ZXJuYWxVbml0
RnVuY3Rpb24oW10oYXV0byYmIHJlbmRlckNhbGxiYWNrLCBhdXRvJiYgcmVzZXRDYWxsYmFjaykg
eworICAgICAgICAgICAgcmV0dXJuIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmF1ZGlvTWVkaWFT
dHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdlcigpLmNyZWF0ZVJlbW90ZUludGVy
bmFsVW5pdChXVEZNb3ZlKHJlbmRlckNhbGxiYWNrKSwgV1RGTW92ZShyZXNldENhbGxiYWNrKSk7
CiAgICAgICAgIH0pOwogICAgIH0KIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>