<?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>168027</bug_id>
          
          <creation_ts>2017-02-08 16:40:23 -0800</creation_ts>
          <short_desc>Configure MockRealtimeAudioSourceMac to generate stereo audio</short_desc>
          <delta_ts>2022-10-26 03:44:33 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</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>
          
          <blocked>168051</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Jer Noble">jer.noble</reporter>
          <assigned_to name="Jer Noble">jer.noble</assigned_to>
          <cc>ahmad.saleem792</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1274637</commentid>
    <comment_count>0</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2017-02-08 16:40:23 -0800</bug_when>
    <thetext>Configure MockRealtimeAudioSourceMac to generate stereo audio</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1274684</commentid>
    <comment_count>1</comment_count>
      <attachid>300992</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2017-02-08 17:54:02 -0800</bug_when>
    <thetext>Created attachment 300992
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1274685</commentid>
    <comment_count>2</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2017-02-08 17:56:15 -0800</bug_when>
    <thetext>rdar://problem/30401723</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1274697</commentid>
    <comment_count>3</comment_count>
      <attachid>300992</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2017-02-08 18:25:42 -0800</bug_when>
    <thetext>Comment on attachment 300992
Patch

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

&gt; Source/WebCore/platform/audio/mac/AudioSampleBufferList.cpp:53
&gt; +    m_bufferList = std::make_unique&lt;WebAudioBufferList&gt;(format, m_maxBufferSizePerChannel);

This is unnecessary, te call to reset() below will do it.

&gt; Source/WebCore/platform/mediastream/mac/AVAudioCaptureSource.mm:207
&gt; +    OSStatus err = CMSampleBufferGetAudioBufferListWithRetainedBlockBuffer(sampleBuffer, nullptr, m_list-&gt;list(), m_listBufferSize, kCFAllocatorSystemDefault, kCFAllocatorSystemDefault, kCMSampleBufferFlag_AudioBufferList_Assure16ByteAlignment, &amp;buffer);

Isn&apos;t this already done by the call to WebAudioBufferList:: WebAudioBufferList(const CAAudioStreamDescription&amp;, CMSampleBufferRef)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1274747</commentid>
    <comment_count>4</comment_count>
      <attachid>300992</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2017-02-08 21:27:39 -0800</bug_when>
    <thetext>Comment on attachment 300992
Patch

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

&gt;&gt; Source/WebCore/platform/audio/mac/AudioSampleBufferList.cpp:53
&gt;&gt; +    m_bufferList = std::make_unique&lt;WebAudioBufferList&gt;(format, m_maxBufferSizePerChannel);
&gt; 
&gt; This is unnecessary, te call to reset() below will do it.

Indeed!

&gt;&gt; Source/WebCore/platform/mediastream/mac/AVAudioCaptureSource.mm:207
&gt;&gt; +    OSStatus err = CMSampleBufferGetAudioBufferListWithRetainedBlockBuffer(sampleBuffer, nullptr, m_list-&gt;list(), m_listBufferSize, kCFAllocatorSystemDefault, kCFAllocatorSystemDefault, kCMSampleBufferFlag_AudioBufferList_Assure16ByteAlignment, &amp;buffer);
&gt; 
&gt; Isn&apos;t this already done by the call to WebAudioBufferList:: WebAudioBufferList(const CAAudioStreamDescription&amp;, CMSampleBufferRef)?

You&apos;re right!

&gt; Source/WebCore/platform/mediastream/mac/MockRealtimeAudioSourceMac.mm:143
&gt;      m_streamFormat.mSampleRate = m_sampleRate;
&gt;      m_streamFormat.mFormatID = kAudioFormatLinearPCM;
&gt; -    m_streamFormat.mFormatFlags = kAudioFormatFlagsNativeFloatPacked;
&gt; -    m_streamFormat.mBytesPerPacket = bytesPerFloat * channelCount;
&gt; +    m_streamFormat.mFormatFlags = kAudioFormatFlagsNativeFloatPacked | kAudioFormatFlagIsNonInterleaved;
&gt; +    m_streamFormat.mBytesPerPacket = bytesPerFloat;
&gt;      m_streamFormat.mFramesPerPacket = 1;
&gt; -    m_streamFormat.mBytesPerFrame = bytesPerFloat * channelCount;
&gt; +    m_streamFormat.mBytesPerFrame = bytesPerFloat;
&gt;      m_streamFormat.mChannelsPerFrame = channelCount;
&gt;      m_streamFormat.mBitsPerChannel = bitsPerByte * bytesPerFloat;

It also looks like this can all be replaced by a call to FillOutASBDForLPCM(). Will change before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1274751</commentid>
    <comment_count>5</comment_count>
      <attachid>301014</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2017-02-08 21:36:06 -0800</bug_when>
    <thetext>Created attachment 301014
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1274754</commentid>
    <comment_count>6</comment_count>
      <attachid>301016</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2017-02-08 21:38:40 -0800</bug_when>
    <thetext>Created attachment 301016
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1274842</commentid>
    <comment_count>7</comment_count>
      <attachid>301016</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-02-09 07:59:25 -0800</bug_when>
    <thetext>Comment on attachment 301016
Patch for landing

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

&gt; Source/WebCore/platform/mediastream/RealtimeMediaSource.h:113
&gt; +    void audioSamplesAvailable(const MediaTime&amp;, PlatformAudioData&amp;, const AudioStreamDescription&amp;, size_t);

It is not very clear to me why this takes a PlatformAudioData&amp;.
I would expect either a const PlatformAudioData&amp; or a PlatformAudioData&amp;&amp; as parameter.

Also, is the numberOfFrames a parameter on its own, or should it be part of PlatformAudioData?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1274866</commentid>
    <comment_count>8</comment_count>
      <attachid>301016</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-02-09 08:34:39 -0800</bug_when>
    <thetext>Comment on attachment 301016
Patch for landing

Clearing flags on attachment: 301016

Committed r211959: &lt;http://trac.webkit.org/changeset/211959&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1274868</commentid>
    <comment_count>9</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2017-02-09 08:39:04 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; Comment on attachment 301016 [details]
&gt; Patch for landing
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=301016&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/mediastream/RealtimeMediaSource.h:113
&gt; &gt; +    void audioSamplesAvailable(const MediaTime&amp;, PlatformAudioData&amp;, const AudioStreamDescription&amp;, size_t);
&gt; 
&gt; It is not very clear to me why this takes a PlatformAudioData&amp;.
&gt; I would expect either a const PlatformAudioData&amp; or a PlatformAudioData&amp;&amp; as
&gt; parameter.

It&apos;s not a &amp;&amp; because the calling class retains ownership of the object. It&apos;s not const because we&apos;d have to cast away the constness when accessing the wrapped ABL.

&gt; Also, is the numberOfFrames a parameter on its own, or should it be part of
&gt; PlatformAudioData?

The PlatformAudioData has a capacity, but not a numberOfFrames.  I don&apos;t think we want to tie together the concept of &quot;please copy this number of frames out of this audio data&quot; with the audio data structure itself.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1274872</commentid>
    <comment_count>10</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2017-02-09 08:49:50 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; It&apos;s not const because we&apos;d have to cast away the constness when accessing
&gt; the wrapped ABL.

So it looks like you can make this entire path const-correct, but it&apos;s a significant code change, deserving of its own patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1274880</commentid>
    <comment_count>11</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2017-02-09 09:05:12 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; (In reply to comment #9)
&gt; &gt; It&apos;s not const because we&apos;d have to cast away the constness when accessing
&gt; &gt; the wrapped ABL.
&gt; 
&gt; So it looks like you can make this entire path const-correct, but it&apos;s a
&gt; significant code change, deserving of its own patch.

See &lt;https://bugs.webkit.org/show_bug.cgi?id=168051&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1908372</commentid>
    <comment_count>12</comment_count>
    <who name="Ahmad Saleem">ahmad.saleem792</who>
    <bug_when>2022-10-26 03:44:33 -0700</bug_when>
    <thetext>It seems this landed:

https://github.com/WebKit/WebKit/commit/c71329a506449e928ab40cc4a0496260f6881336

and didn&apos;t backed out and follow-up bug also corrected the other bits.

Marking this as &quot;RESOLVED FIXED&quot;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>300992</attachid>
            <date>2017-02-08 17:54:02 -0800</date>
            <delta_ts>2017-02-08 18:25:42 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-168027-20170208175136.patch</filename>
            <type>text/plain</type>
            <size>51243</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjExODkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODEzOTY1MWE1OTFjZDQ3
OGVhMDY4NjlkYjBiY2M4Y2U5ZDZiMDM4MC4uM2Q0ZmE2MTFmZDkwMjMwYWRjYjk4ZGU2MWFiM2M1
OGQxNjI5MTQ4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY5IEBACisyMDE3LTAyLTA4ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIENvbmZpZ3VyZSBNb2NrUmVh
bHRpbWVBdWRpb1NvdXJjZU1hYyB0byBnZW5lcmF0ZSBzdGVyZW8gYXVkaW8KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2ODAyNworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBNb2NrUmVhbHRpbWVB
dWRpb1NvdXJjZU1hYyB0byBnZW5lcmF0ZSBzdGVyZW8gYXVkaW8uCisKKyAgICAgICAgRmlyc3Qs
IGJlY2F1c2UgdGhlIHBhdHRlcm4gb2YgY3JlYXRpbmcgYSBBdWRpb0J1ZmZlckxpc3Qgc3RydWN0
dXJlICh3aXRoIGFsbCBpdCdzIHF1aXJrcyBhbmQKKyAgICAgICAgd2VpcmQgcmVxdWlyZW1lbnRz
KSB3YXMgcmVwZWF0ZWQgbXVsdGlwbGUgcGxhY2VzLCBhZGQgYSBuZXcgd3JhcHBlciBhcm91bmQg
QUJMIGNhbGxlZAorICAgICAgICBXZWJBdWRpb0J1ZmZlckxpc3Qgd2hpY2ggdGFrZXMgY2FyZSBv
ZiBjb3JyZWN0bHkgaW5pdGlhbGl6aW5nIHRoZSBBQkwgc3RydWN0dXJlIGFuZCBtYW5hZ2VzCisg
ICAgICAgIHRoZSBsaWZldGltZSBvZiBpdHMgZGF0YSBtZW1iZXJzLgorCisgICAgICAgICogV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlv
L1BsYXRmb3JtQXVkaW9EYXRhLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1B
dWRpb0RhdGE6OmtpbmQpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1dlYkF1ZGlvQnVmZmVy
TGlzdC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V2ViQXVkaW9CdWZmZXJMaXN0OjpX
ZWJBdWRpb0J1ZmZlckxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQXVkaW9CdWZmZXJMaXN0
OjpidWZmZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkF1ZGlvQnVmZmVyTGlzdDo6YnVmZmVy
Q291bnQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQXVkaW9CdWZmZXJMaXN0OjpidWZmZXIpOgor
ICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1dlYkF1ZGlvQnVmZmVyTGlzdC5oOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OldlYkF1ZGlvQnVmZmVyTGlzdDo6bGlzdCk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJBdWRpb0J1ZmZlckxpc3Q6Om9wZXJhdG9yIEF1ZGlvQnVmZmVyTGlzdCYpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViQXVkaW9CdWZmZXJMaXN0OjpraW5kKToKKyAgICAgICAgKGlzVHlw
ZSk6CisKKyAgICAgICAgVGhlbiB1cGRhdGUgZXhpc3RpbmcgY29kZSB0byB3b3JrIGluIHRlcm1z
IG9mIFdlYkF1ZGlvQnVmZmVyTGlzdDoKKworICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL21hYy9B
dWRpb1NhbXBsZUJ1ZmZlckxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TYW1wbGVC
dWZmZXJMaXN0OjpBdWRpb1NhbXBsZUJ1ZmZlckxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9TYW1wbGVCdWZmZXJMaXN0OjptaXhGcm9tKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Ft
cGxlQnVmZmVyTGlzdDo6Y29weUZyb20pOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TYW1wbGVC
dWZmZXJMaXN0Ojpjb3B5VG8pOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TYW1wbGVCdWZmZXJM
aXN0OjpyZXNldCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1NhbXBsZUJ1ZmZlckxpc3Q6OmNv
bmZpZ3VyZUJ1ZmZlckxpc3RGb3JTdHJlYW0pOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3Jt
L2F1ZGlvL21hYy9BdWRpb1NhbXBsZUJ1ZmZlckxpc3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OkF1
ZGlvU2FtcGxlQnVmZmVyTGlzdDo6YnVmZmVyTGlzdCk6CisgICAgICAgICogcGxhdGZvcm0vYXVk
aW8vbWFjL0F1ZGlvU2FtcGxlRGF0YVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRp
b1NhbXBsZURhdGFTb3VyY2U6OnB1c2hTYW1wbGVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRp
by9tYWMvQXVkaW9TYW1wbGVEYXRhU291cmNlLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFz
dHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGlt
ZU1lZGlhU291cmNlOjphdWRpb1NhbXBsZXNBdmFpbGFibGUpOgorICAgICAgICAqIHBsYXRmb3Jt
L21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
YWx0aW1lTWVkaWFTb3VyY2U6Ok9ic2VydmVyOjphdWRpb1NhbXBsZXNBdmFpbGFibGUpOgorICAg
ICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkF1ZGlvQ2FwdHVyZVNvdXJjZS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkF1ZGlvQ2FwdHVyZVNvdXJjZS5t
bToKKyAgICAgICAgKFdlYkNvcmU6OkFWQXVkaW9DYXB0dXJlU291cmNlOjpjYXB0dXJlT3V0cHV0
RGlkT3V0cHV0U2FtcGxlQnVmZmVyRnJvbUNvbm5lY3Rpb24pOgorICAgICAgICAqIHBsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hOjphdWRp
b1NhbXBsZXNBdmFpbGFibGUpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9B
dWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6YXVkaW9TYW1wbGVzQXZhaWxh
YmxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2lu
Z0F1ZGlvU291cmNlLmg6CisKKyAgICAgICAgRmluYWxseSwgYWN0dWFsbHkgdXBkYXRlIE1vY2tS
ZWFsdGltZUF1ZGlvU291cmNlIHRvIGVtaXQgc3RlcmVvIHNhbXBsZXMuIEltcG9ydGFudGx5LCBz
ZXQKKyAgICAgICAgdGhlIGNvcnJlY3QgdmFsdWVzIGZvciB0aGUgbV9zdHJlYW1Gb3JtYXQ7IG1C
eXRlc1BlckZyYW1lIGFuZCBtQnl0ZXNQZXJQYWNrZXQgYXJlIG5vdAorICAgICAgICBtdWx0aXBs
aWVkIGJ5IHRoZSBjaGFubmVsQ291bnQuIFdoZW4gZ2VuZXJhdGluZyBhdWRpbywgd3JpdGUgdG8g
Ym90aCBjaGFubmVscyBvZiBkYXRhLgorCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bWFjL01vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFjLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFjLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWM6OmVtaXRTYW1wbGVCdWZmZXJzKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFjOjpyZWNvbmZpZ3VyZSk6
CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1hYzo6cmVuZGVyKToK
KwogMjAxNy0wMi0wOCAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFNw
bGl0IEpTRE9NQ29uc3RydWN0b3IuaC9jcHAgdXAgYnkgY2xhc3MKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA5MzY0ZTAxYjFmOGVm
MGEwMjFmMjhjYzM0ODMyZDI1Y2FkNGIzNTA0Li5iN2RkOTIzNTBiOTM1MGI1MGMxM2Q5ZDBjMjEz
ZTc1YjUwYzM3NmRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC01OTcxLDYgKzU5NzEsOCBAQAogCQlDREU1OTU5NTFCRjE2REYz
MDBBMUNCRTggLyogQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24ubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREU1OTU5MzFCRjE2NkFEMDBBMUNC
RTggLyogQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24ubW0gKi87IH07CiAJCUNERTU5NTk3
MUJGMjZFMjEwMEExQ0JFOCAvKiBDRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREU1OTU5NjFCRjI2RTIx
MDBBMUNCRTggLyogQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQy5oICovOyB9OwogCQlDREU1
OTU5RDFCRjI3NTcxMDBBMUNCRTggLyogQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQy5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERTU5NTlDMUJG
Mjc1NzEwMEExQ0JFOCAvKiBDRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDLm1tICovOyB9Owor
CQlDREU2NjdBNDFFNEJCRjE1MDBFODE1NEEgLyogV2ViQXVkaW9CdWZmZXJMaXN0LmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERTY2N0EyMUU0QkJG
MTUwMEU4MTU0QSAvKiBXZWJBdWRpb0J1ZmZlckxpc3QuY3BwICovOyB9OworCQlDREU2NjdBNTFF
NEJCRjE1MDBFODE1NEEgLyogV2ViQXVkaW9CdWZmZXJMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREU2NjdBMzFFNEJCRjE1MDBFODE1NEEgLyog
V2ViQXVkaW9CdWZmZXJMaXN0LmggKi87IH07CiAJCUNERTdGQzQ0MTgxOTA0QjEwMDJCQkI3NyAv
KiBPcmRlckl0ZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IENERTdGQzQyMTgxOTA0QjEwMDJCQkI3NyAvKiBPcmRlckl0ZXJhdG9yLmNwcCAq
LzsgfTsKIAkJQ0RFN0ZDNDUxODE5MDRCMTAwMkJCQjc3IC8qIE9yZGVySXRlcmF0b3IuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERTdGQzQzMTgxOTA0
QjEwMDJCQkI3NyAvKiBPcmRlckl0ZXJhdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0RFODNEQjExODNDNDQwNjAwMzFFQUEzIC8qIFZpZGVv
UGxheWJhY2tRdWFsaXR5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IENERTgzREFGMTgzQzQ0MDYwMDMxRUFBMyAvKiBWaWRlb1BsYXliYWNrUXVhbGl0
eS5jcHAgKi87IH07CkBAIC0xNDA4Nyw2ICsxNDA4OSw5IEBACiAJCUNERTU5NTk2MUJGMjZFMjEw
MEExQ0JFOCAvKiBDRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IENETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RFNTk1OUMxQkYyNzU3MTAwQTFDQkU4IC8qIENETVNl
c3Npb25NZWRpYVNvdXJjZUFWRk9iakMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBDRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlDREU2NTYwRTE3Q0E2RTc2MDA1MjZCQTcgLyogbWVkaWFDb250cm9s
c0FwcGxlLmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0gbWVkaWFDb250cm9sc0FwcGxlLmpzOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREU2NjdBMTFFNEJCQTREMDBFODE1NEEgLyog
UGxhdGZvcm1BdWRpb0RhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGxh
dGZvcm1BdWRpb0RhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RFNjY3QTIx
RTRCQkYxNTAwRTgxNTRBIC8qIFdlYkF1ZGlvQnVmZmVyTGlzdC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJBdWRpb0J1ZmZlckxpc3QuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlDREU2NjdBMzFFNEJCRjE1MDBFODE1NEEgLyogV2ViQXVkaW9C
dWZmZXJMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkF1ZGlvQnVm
ZmVyTGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREU3RkM0MjE4MTkwNEIx
MDAyQkJCNzcgLyogT3JkZXJJdGVyYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBPcmRlckl0ZXJhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQ0RFN0ZDNDMxODE5MDRCMTAwMkJCQjc3IC8qIE9yZGVySXRlcmF0b3IuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gT3JkZXJJdGVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlDREU4M0RBRjE4M0M0NDA2MDAzMUVBQTMgLyogVmlkZW9QbGF5YmFja1F1
YWxpdHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVmlkZW9QbGF5
YmFja1F1YWxpdHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjMxMzksNiAr
MjMxNDQsOCBAQAogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQlDRDY2
OUQ2NjFEMjMyREZGMDA0RDE4NjYgLyogTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLmNwcCAqLywK
KwkJCQlDREU2NjdBMjFFNEJCRjE1MDBFODE1NEEgLyogV2ViQXVkaW9CdWZmZXJMaXN0LmNwcCAq
LywKKwkJCQlDREU2NjdBMzFFNEJCRjE1MDBFODE1NEEgLyogV2ViQXVkaW9CdWZmZXJMaXN0Lmgg
Ki8sCiAJCQkpOwogCQkJbmFtZSA9IGNvY29hOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsK
QEAgLTI1MDY3LDYgKzI1MDc0LDcgQEAKIAkJCQlGREIxNzAwNDE0QTJCQUIyMDBBMkI1RDkgLyog
TXVsdGlDaGFubmVsUmVzYW1wbGVyLmggKi8sCiAJCQkJRkQzMTYwNkMxMkIwMjZGNzAwQzFBMzU5
IC8qIFBhbm5lci5jcHAgKi8sCiAJCQkJRkQzMTYwNkQxMkIwMjZGNzAwQzFBMzU5IC8qIFBhbm5l
ci5oICovLAorCQkJCUNERTY2N0ExMUU0QkJBNEQwMEU4MTU0QSAvKiBQbGF0Zm9ybUF1ZGlvRGF0
YS5oICovLAogCQkJCTA3MEUwOTFBMTg3NUVGNzEwMDNBMUQzQyAvKiBQbGF0Zm9ybU1lZGlhU2Vz
c2lvbi5jcHAgKi8sCiAJCQkJMDcwRTA5MTgxODc1RUQ5MzAwM0ExRDNDIC8qIFBsYXRmb3JtTWVk
aWFTZXNzaW9uLmggKi8sCiAJCQkJQ0RBRThDMDcxNzQ2Qjk1NzAwNTMyRDc4IC8qIFBsYXRmb3Jt
TWVkaWFTZXNzaW9uTWFuYWdlci5jcHAgKi8sCkBAIC0yNzA2OCw2ICsyNzA3Niw3IEBACiAJCQkJ
RTE3QjQ5MjExNkE5QjhGRjAwMUM4ODM5IC8qIEpTVHJhbnNpdGlvbkV2ZW50LmggaW4gSGVhZGVy
cyAqLywKIAkJCQkxQTc1MEQ1RDBBOTBERUUxMDAwRkYyMTUgLyogSlNUcmVlV2Fsa2VyLmggaW4g
SGVhZGVycyAqLywKIAkJCQlBODY2MjlDRjA5REEyQjQ3MDA5NjMzQTUgLyogSlNVSUV2ZW50Lmgg
aW4gSGVhZGVycyAqLywKKwkJCQlDREU2NjdBNTFFNEJCRjE1MDBFODE1NEEgLyogV2ViQXVkaW9C
dWZmZXJMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk0NjUzMDdEMDFEQjZFRTQ4MDBFNDEzN0Mg
LyogSlNVSUV2ZW50SW5pdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0M3M0ZCMTIxOTFFRjZGNDAw
N0RFMDYxIC8qIEpTVXNlck1lc3NhZ2VIYW5kbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk3Qzcz
RkIwRDE5MUVGNUE4MDA3REUwNjEgLyogSlNVc2VyTWVzc2FnZUhhbmRsZXJzTmFtZXNwYWNlLmgg
aW4gSGVhZGVycyAqLywKQEAgLTMwNDI1LDYgKzMwNDM0LDcgQEAKIAkJCQlCQzY5MzI3MzBEN0Uy
OTM5MDBBRTQ0RDEgLyogSlNET01XaW5kb3dCYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJD
RDlDMjYyMEMxN0FBNjcwMDVDOTBBMiAvKiBKU0RPTVdpbmRvd0N1c3RvbS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk0NjBDQkYzNTFENEJDRDBFMDA5MkU4OEUgLyogSlNET01XaW5kb3dQcm9wZXJ0
aWVzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUNERTY2N0E0MUU0QkJGMTUwMEU4MTU0QSAvKiBX
ZWJBdWRpb0J1ZmZlckxpc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNCRkI1M0MwRENEMjlD
RjAwMTlCM0U1IC8qIEpTRE9NV2luZG93U2hlbGwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTFD
QzExNjQxRTQ5M0QwMTAwRUZBNjlDIC8qIEZpbGVTeXN0ZW1NYWMubW0gaW4gU291cmNlcyAqLywK
IAkJCQk0MTcwQTJFQTFEOEMwQ0NBMDAzMTg0NTIgLyogSlNET01XcmFwcGVyLmNwcCBpbiBTb3Vy
Y2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZv
cm1BdWRpb0RhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtQXVk
aW9EYXRhLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZTQ1NDRmNjMyNTRhODc4NzZkOTlkOGMzMDYxMjAzYWE4MTY3
OWQ5OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1Bs
YXRmb3JtQXVkaW9EYXRhLmgKQEAgLTAsMCArMSw0NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFBsYXRmb3JtQXVkaW9EYXRhIHsK
K3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5QbGF0Zm9ybUF1ZGlvRGF0YSgpID0gZGVmYXVsdDsKKwor
ICAgIGVudW0gY2xhc3MgS2luZCB7CisgICAgICAgIE5vbmUsCisgICAgICAgIFdlYkF1ZGlvQnVm
ZmVyTGlzdCwKKyAgICB9OworCisgICAgdmlydHVhbCBLaW5kIGtpbmQoKSBjb25zdCB7IHJldHVy
biBLaW5kOjpOb25lOyB9CisKK3Byb3RlY3RlZDoKKyAgICBQbGF0Zm9ybUF1ZGlvRGF0YSgpID0g
ZGVmYXVsdDsKK307CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL1dlYkF1ZGlvQnVmZmVyTGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9XZWJBdWRpb0J1ZmZlckxpc3QuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA5MzY5OGMzOWJjOWE1YjY2NjVk
ZTY5N2QyOTExODIyODFhOGNiYzAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9XZWJBdWRpb0J1ZmZlckxpc3QuY3BwCkBAIC0wLDAgKzEsMTAwIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYkF1ZGlvQnVmZmVy
TGlzdC5oIgorCisjaW5jbHVkZSAiQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uLmgiCisjaW5jbHVk
ZSAiQ29yZU1lZGlhU29mdExpbmsuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitXZWJBdWRp
b0J1ZmZlckxpc3Q6OldlYkF1ZGlvQnVmZmVyTGlzdChjb25zdCBDQUF1ZGlvU3RyZWFtRGVzY3Jp
cHRpb24mIGZvcm1hdCkKK3sKKyAgICAvLyBBdWRpb0J1ZmZlckxpc3QgaXMgYSB2YXJpYWJsZS1s
ZW5ndGggc3RydWN0LCBzbyBjcmVhdGUgb24gdGhlIGhlYXAgd2l0aCBhIGdlbmVyaWMgbmV3KCkg
b3BlcmF0b3IKKyAgICAvLyB3aXRoIGEgY3VzdG9tIHNpemUsIGFuZCBpbml0aWFsaXplIHRoZSBz
dHJ1Y3QgbWFudWFsbHkuCisgICAgdWludDMyX3QgYnVmZmVyQ291bnQgPSBmb3JtYXQubnVtYmVy
T2ZDaGFubmVsU3RyZWFtcygpOworICAgIHVpbnQzMl90IGNoYW5uZWxDb3VudCA9IGZvcm1hdC5u
dW1iZXJPZkludGVybGVhdmVkQ2hhbm5lbHMoKTsKKworICAgIHVpbnQ2NF90IGJ1ZmZlckxpc3RT
aXplID0gb2Zmc2V0b2YoQXVkaW9CdWZmZXJMaXN0LCBtQnVmZmVycykgKyAoc2l6ZW9mKEF1ZGlv
QnVmZmVyKSAqIHN0ZDo6bWF4KDFVLCBidWZmZXJDb3VudCkpOworICAgIEFTU0VSVChidWZmZXJM
aXN0U2l6ZSA8PSBTSVpFX01BWCk7CisKKyAgICBtX2xpc3RCdWZmZXJTaXplID0gc3RhdGljX2Nh
c3Q8c2l6ZV90PihidWZmZXJMaXN0U2l6ZSk7CisgICAgbV9saXN0ID0gc3RkOjp1bmlxdWVfcHRy
PEF1ZGlvQnVmZmVyTGlzdD4oc3RhdGljX2Nhc3Q8QXVkaW9CdWZmZXJMaXN0Kj4oOjpvcGVyYXRv
ciBuZXcgKG1fbGlzdEJ1ZmZlclNpemUpKSk7CisgICAgbWVtc2V0KG1fbGlzdC5nZXQoKSwgMCwg
bV9saXN0QnVmZmVyU2l6ZSk7CisgICAgbV9saXN0LT5tTnVtYmVyQnVmZmVycyA9IGJ1ZmZlckNv
dW50OworICAgIGZvciAodWludDMyX3QgYnVmZmVyID0gMDsgYnVmZmVyIDwgYnVmZmVyQ291bnQ7
ICsrYnVmZmVyKQorICAgICAgICBtX2xpc3QtPm1CdWZmZXJzW2J1ZmZlcl0ubU51bWJlckNoYW5u
ZWxzID0gY2hhbm5lbENvdW50OworfQorCitXZWJBdWRpb0J1ZmZlckxpc3Q6OldlYkF1ZGlvQnVm
ZmVyTGlzdChjb25zdCBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIGZvcm1hdCwgdWludDMyX3Qg
c2FtcGxlQ291bnQpCisgICAgOiBXZWJBdWRpb0J1ZmZlckxpc3QoZm9ybWF0KQoreworICAgIGlm
ICghc2FtcGxlQ291bnQpCisgICAgICAgIHJldHVybjsKKworICAgIHVpbnQzMl90IGJ1ZmZlckNv
dW50ID0gZm9ybWF0Lm51bWJlck9mQ2hhbm5lbFN0cmVhbXMoKTsKKyAgICB1aW50MzJfdCBjaGFu
bmVsQ291bnQgPSBmb3JtYXQubnVtYmVyT2ZJbnRlcmxlYXZlZENoYW5uZWxzKCk7CisKKyAgICBz
aXplX3QgYnl0ZXNQZXJCdWZmZXIgPSBzYW1wbGVDb3VudCAqIGNoYW5uZWxDb3VudCAqIGZvcm1h
dC5ieXRlc1BlckZyYW1lKCk7CisgICAgbV9mbGF0QnVmZmVyLnJlc2VydmVJbml0aWFsQ2FwYWNp
dHkoYnVmZmVyQ291bnQgKiBieXRlc1BlckJ1ZmZlcik7CisgICAgYXV0byBkYXRhID0gbV9mbGF0
QnVmZmVyLmRhdGEoKTsKKworICAgIGZvciAodWludDMyX3QgYnVmZmVyID0gMDsgYnVmZmVyIDwg
bV9saXN0LT5tTnVtYmVyQnVmZmVyczsgKytidWZmZXIpIHsKKyAgICAgICAgbV9saXN0LT5tQnVm
ZmVyc1tidWZmZXJdLm1EYXRhID0gZGF0YTsKKyAgICAgICAgZGF0YSArPSBieXRlc1BlckJ1ZmZl
cjsKKyAgICB9Cit9CisKK1dlYkF1ZGlvQnVmZmVyTGlzdDo6V2ViQXVkaW9CdWZmZXJMaXN0KGNv
bnN0IENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYgZm9ybWF0LCBDTVNhbXBsZUJ1ZmZlclJlZiBz
YW1wbGVCdWZmZXIpCisgICAgOiBXZWJBdWRpb0J1ZmZlckxpc3QoZm9ybWF0KQoreworICAgIGlm
ICghc2FtcGxlQnVmZmVyKQorICAgICAgICByZXR1cm47CisKKyAgICBDTUJsb2NrQnVmZmVyUmVm
IGJ1ZmZlciA9IG51bGxwdHI7CisgICAgaWYgKG5vRXJyID09IENNU2FtcGxlQnVmZmVyR2V0QXVk
aW9CdWZmZXJMaXN0V2l0aFJldGFpbmVkQmxvY2tCdWZmZXIoc2FtcGxlQnVmZmVyLCBudWxscHRy
LCBtX2xpc3QuZ2V0KCksIG1fbGlzdEJ1ZmZlclNpemUsIGtDRkFsbG9jYXRvclN5c3RlbURlZmF1
bHQsIGtDRkFsbG9jYXRvclN5c3RlbURlZmF1bHQsIGtDTVNhbXBsZUJ1ZmZlckZsYWdfQXVkaW9C
dWZmZXJMaXN0X0Fzc3VyZTE2Qnl0ZUFsaWdubWVudCwgJmJ1ZmZlcikpCisgICAgICAgIG1fYmxv
Y2tCdWZmZXIgPSBhZG9wdENGKGJ1ZmZlcik7Cit9CisKK1dURjo6SXRlcmF0b3JSYW5nZTxBdWRp
b0J1ZmZlcio+IFdlYkF1ZGlvQnVmZmVyTGlzdDo6YnVmZmVycygpIGNvbnN0Cit7CisgICAgcmV0
dXJuIFdURjo6bWFrZUl0ZXJhdG9yUmFuZ2UoJm1fbGlzdC0+bUJ1ZmZlcnNbMF0sICZtX2xpc3Qt
Pm1CdWZmZXJzW21fbGlzdC0+bU51bWJlckJ1ZmZlcnNdKTsKK30KKwordWludDMyX3QgV2ViQXVk
aW9CdWZmZXJMaXN0OjpidWZmZXJDb3VudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fbGlzdC0+
bU51bWJlckJ1ZmZlcnM7Cit9CisKK0F1ZGlvQnVmZmVyKiBXZWJBdWRpb0J1ZmZlckxpc3Q6OmJ1
ZmZlcih1aW50MzJfdCBpbmRleCkgY29uc3QKK3sKKyAgICBBU1NFUlQoaW5kZXggPCBtX2xpc3Qt
Pm1OdW1iZXJCdWZmZXJzKTsKKyAgICBpZiAoaW5kZXggPCBtX2xpc3QtPm1OdW1iZXJCdWZmZXJz
KQorICAgICAgICByZXR1cm4gJm1fbGlzdC0+bUJ1ZmZlcnNbaW5kZXhdOworICAgIHJldHVybiBu
dWxscHRyOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9XZWJBdWRpb0J1ZmZlckxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1dl
YkF1ZGlvQnVmZmVyTGlzdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJiZjNjMTM5YjYyNWU3YjRjNzlhZjg0MjQx
MzhiNTA0MDczMTg1YTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9XZWJBdWRpb0J1ZmZlckxpc3QuaApAQCAtMCwwICsxLDY4IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJQbGF0Zm9ybUF1ZGlvRGF0YS5oIgorI2luY2x1
ZGUgPHd0Zi9JdGVyYXRvclJhbmdlLmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworc3RydWN0IEF1ZGlvQnVmZmVyOworc3RydWN0IEF1ZGlv
QnVmZmVyTGlzdDsKK3R5cGVkZWYgc3RydWN0IE9wYXF1ZUNNQmxvY2tCdWZmZXIgKkNNQmxvY2tC
dWZmZXJSZWY7Cit0eXBlZGVmIHN0cnVjdCBvcGFxdWVDTVNhbXBsZUJ1ZmZlciAqQ01TYW1wbGVC
dWZmZXJSZWY7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ0FBdWRpb1N0cmVhbURl
c2NyaXB0aW9uOworCitjbGFzcyBXZWJBdWRpb0J1ZmZlckxpc3QgOiBwdWJsaWMgUGxhdGZvcm1B
dWRpb0RhdGEgeworcHVibGljOgorICAgIFdlYkF1ZGlvQnVmZmVyTGlzdChjb25zdCBDQUF1ZGlv
U3RyZWFtRGVzY3JpcHRpb24mKTsKKyAgICBXZWJBdWRpb0J1ZmZlckxpc3QoY29uc3QgQ0FBdWRp
b1N0cmVhbURlc2NyaXB0aW9uJiwgdWludDMyX3Qgc2FtcGxlQ291bnQpOworICAgIFdlYkF1ZGlv
QnVmZmVyTGlzdChjb25zdCBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mLCBDTVNhbXBsZUJ1ZmZl
clJlZik7CisKKyAgICBBdWRpb0J1ZmZlckxpc3QqIGxpc3QoKSBjb25zdCB7IHJldHVybiBtX2xp
c3QuZ2V0KCk7IH0KKyAgICBvcGVyYXRvciBBdWRpb0J1ZmZlckxpc3QmKCkgY29uc3QgeyByZXR1
cm4gKm1fbGlzdDsgfQorCisgICAgdWludDMyX3QgYnVmZmVyQ291bnQoKSBjb25zdDsKKyAgICBB
dWRpb0J1ZmZlciogYnVmZmVyKHVpbnQzMl90IGluZGV4KSBjb25zdDsKKyAgICBXVEY6Okl0ZXJh
dG9yUmFuZ2U8QXVkaW9CdWZmZXIqPiBidWZmZXJzKCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAg
S2luZCBraW5kKCkgY29uc3QgeyByZXR1cm4gS2luZDo6V2ViQXVkaW9CdWZmZXJMaXN0OyB9CisK
KyAgICBzaXplX3QgbV9saXN0QnVmZmVyU2l6ZSB7IDAgfTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
QXVkaW9CdWZmZXJMaXN0PiBtX2xpc3Q7CisgICAgUmV0YWluUHRyPENNQmxvY2tCdWZmZXJSZWY+
IG1fYmxvY2tCdWZmZXI7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IG1fZmxhdEJ1ZmZlcjsKK307CisK
K30KKworU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpXZWJBdWRpb0J1ZmZl
ckxpc3QpCitzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6UGxhdGZvcm1BdWRpb0Rh
dGEmIGRhdGEpIHsgcmV0dXJuIGRhdGEua2luZCgpID09IFdlYkNvcmU6OlBsYXRmb3JtQXVkaW9E
YXRhOjpLaW5kOjpXZWJBdWRpb0J1ZmZlckxpc3Q7IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNf
RU5EKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRp
b1NhbXBsZUJ1ZmZlckxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFj
L0F1ZGlvU2FtcGxlQnVmZmVyTGlzdC5jcHAKaW5kZXggYWZjNzE0ZGYzOGJmMTM1MjY4MTlkNTE1
ZTkxOTEyNDcwMmU2MGYyOC4uODlhOTQ5ODQ4NWJhZTE2ZGE5ODc4NDViOThkMDMzZDA1ZWM5N2Ux
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2Ft
cGxlQnVmZmVyTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFj
L0F1ZGlvU2FtcGxlQnVmZmVyTGlzdC5jcHAKQEAgLTUwLDIxICs1MCw4IEBAIEF1ZGlvU2FtcGxl
QnVmZmVyTGlzdDo6QXVkaW9TYW1wbGVCdWZmZXJMaXN0KGNvbnN0IENBQXVkaW9TdHJlYW1EZXNj
cmlwdGlvbiYgZm9yCiAgICAgbV9zYW1wbGVDb3VudCA9IDA7CiAgICAgbV9tYXhCdWZmZXJTaXpl
UGVyQ2hhbm5lbCA9IG1heGltdW1TYW1wbGVDb3VudCAqIGZvcm1hdC5ieXRlc1BlckZyYW1lKCkg
LyBmb3JtYXQubnVtYmVyT2ZDaGFubmVsU3RyZWFtcygpOwogCisgICAgbV9idWZmZXJMaXN0ID0g
c3RkOjptYWtlX3VuaXF1ZTxXZWJBdWRpb0J1ZmZlckxpc3Q+KGZvcm1hdCwgbV9tYXhCdWZmZXJT
aXplUGVyQ2hhbm5lbCk7CiAgICAgQVNTRVJUKGZvcm1hdC5zYW1wbGVSYXRlKCkgPj0gMCk7Ci0K
LSAgICBzaXplX3QgYnVmZmVyU2l6ZSA9IGZvcm1hdC5udW1iZXJPZkNoYW5uZWxTdHJlYW1zKCkg
KiBtX21heEJ1ZmZlclNpemVQZXJDaGFubmVsOwotICAgIEFTU0VSVChidWZmZXJTaXplIDw9IFNJ
WkVfTUFYKTsKLSAgICBpZiAoYnVmZmVyU2l6ZSA+IFNJWkVfTUFYKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBtX2J1ZmZlckxpc3RCYXNlU2l6ZSA9IGF1ZGlvQnVmZmVyTGlzdFNpemVGb3JTdHJl
YW0oZm9ybWF0KTsKLSAgICBBU1NFUlQobV9idWZmZXJMaXN0QmFzZVNpemUgPD0gU0laRV9NQVgp
OwotICAgIGlmIChtX2J1ZmZlckxpc3RCYXNlU2l6ZSA+IFNJWkVfTUFYKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBzaXplX3QgYWxsb2NTaXplID0gbV9idWZmZXJMaXN0QmFzZVNpemUgKyBidWZm
ZXJTaXplOwotICAgIG1fYnVmZmVyTGlzdCA9IHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0J1ZmZlckxp
c3Q+KHN0YXRpY19jYXN0PEF1ZGlvQnVmZmVyTGlzdCo+KDo6b3BlcmF0b3IgbmV3IChhbGxvY1Np
emUpKSk7Ci0KICAgICByZXNldCgpOwogfQogCkBAIC0xMzgsMjkgKzEyNSwyOSBAQCBPU1N0YXR1
cyBBdWRpb1NhbXBsZUJ1ZmZlckxpc3Q6Om1peEZyb20oY29uc3QgQXVkaW9TYW1wbGVCdWZmZXJM
aXN0JiBzb3VyY2UsIHNpegogCiAgICAgbV9zYW1wbGVDb3VudCA9IGZyYW1lQ291bnQ7CiAKLSAg
ICBBdWRpb0J1ZmZlckxpc3QmIHNvdXJjZUJ1ZmZlciA9IHNvdXJjZS5idWZmZXJMaXN0KCk7Ci0g
ICAgZm9yICh1aW50MzJfdCBpID0gMDsgaSA8IG1fYnVmZmVyTGlzdC0+bU51bWJlckJ1ZmZlcnM7
IGkrKykgeworICAgIFdlYkF1ZGlvQnVmZmVyTGlzdCYgc291cmNlQnVmZmVyID0gc291cmNlLmJ1
ZmZlckxpc3QoKTsKKyAgICBmb3IgKHVpbnQzMl90IGkgPSAwOyBpIDwgbV9idWZmZXJMaXN0LT5i
dWZmZXJDb3VudCgpOyBpKyspIHsKICAgICAgICAgc3dpdGNoIChtX2ludGVybmFsRm9ybWF0LT5m
b3JtYXQoKSkgewogICAgICAgICBjYXNlIEF1ZGlvU3RyZWFtRGVzY3JpcHRpb246OkludDE2OiB7
Ci0gICAgICAgICAgICBpbnQxNl90KiBkZXN0aW5hdGlvbiA9IHN0YXRpY19jYXN0PGludDE2X3Qq
PihtX2J1ZmZlckxpc3QtPm1CdWZmZXJzW2ldLm1EYXRhKTsKLSAgICAgICAgICAgIGludDE2X3Qq
IHNvdXJjZSA9IHN0YXRpY19jYXN0PGludDE2X3QqPihzb3VyY2VCdWZmZXIubUJ1ZmZlcnNbaV0u
bURhdGEpOworICAgICAgICAgICAgaW50MTZfdCogZGVzdGluYXRpb24gPSBzdGF0aWNfY2FzdDxp
bnQxNl90Kj4obV9idWZmZXJMaXN0LT5idWZmZXIoaSktPm1EYXRhKTsKKyAgICAgICAgICAgIGlu
dDE2X3QqIHNvdXJjZSA9IHN0YXRpY19jYXN0PGludDE2X3QqPihzb3VyY2VCdWZmZXIuYnVmZmVy
KGkpLT5tRGF0YSk7CiAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZyYW1lQ291
bnQ7IGkrKykKICAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbltpXSArPSBzb3VyY2VbaV07CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIEF1ZGlvU3RyZWFtRGVz
Y3JpcHRpb246OkludDMyOiB7Ci0gICAgICAgICAgICBpbnQzMl90KiBkZXN0aW5hdGlvbiA9IHN0
YXRpY19jYXN0PGludDMyX3QqPihtX2J1ZmZlckxpc3QtPm1CdWZmZXJzW2ldLm1EYXRhKTsKLSAg
ICAgICAgICAgIHZEU1BfdmFkZGkoZGVzdGluYXRpb24sIDEsIHJlaW50ZXJwcmV0X2Nhc3Q8aW50
MzJfdCo+KHNvdXJjZUJ1ZmZlci5tQnVmZmVyc1tpXS5tRGF0YSksIDEsIGRlc3RpbmF0aW9uLCAx
LCBmcmFtZUNvdW50KTsKKyAgICAgICAgICAgIGludDMyX3QqIGRlc3RpbmF0aW9uID0gc3RhdGlj
X2Nhc3Q8aW50MzJfdCo+KG1fYnVmZmVyTGlzdC0+YnVmZmVyKGkpLT5tRGF0YSk7CisgICAgICAg
ICAgICB2RFNQX3ZhZGRpKGRlc3RpbmF0aW9uLCAxLCByZWludGVycHJldF9jYXN0PGludDMyX3Qq
Pihzb3VyY2VCdWZmZXIuYnVmZmVyKGkpLT5tRGF0YSksIDEsIGRlc3RpbmF0aW9uLCAxLCBmcmFt
ZUNvdW50KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQXVk
aW9TdHJlYW1EZXNjcmlwdGlvbjo6RmxvYXQzMjogewotICAgICAgICAgICAgZmxvYXQqIGRlc3Rp
bmF0aW9uID0gc3RhdGljX2Nhc3Q8ZmxvYXQqPihtX2J1ZmZlckxpc3QtPm1CdWZmZXJzW2ldLm1E
YXRhKTsKLSAgICAgICAgICAgIHZEU1BfdmFkZChkZXN0aW5hdGlvbiwgMSwgcmVpbnRlcnByZXRf
Y2FzdDxmbG9hdCo+KHNvdXJjZUJ1ZmZlci5tQnVmZmVyc1tpXS5tRGF0YSksIDEsIGRlc3RpbmF0
aW9uLCAxLCBmcmFtZUNvdW50KTsKKyAgICAgICAgICAgIGZsb2F0KiBkZXN0aW5hdGlvbiA9IHN0
YXRpY19jYXN0PGZsb2F0Kj4obV9idWZmZXJMaXN0LT5idWZmZXIoaSktPm1EYXRhKTsKKyAgICAg
ICAgICAgIHZEU1BfdmFkZChkZXN0aW5hdGlvbiwgMSwgcmVpbnRlcnByZXRfY2FzdDxmbG9hdCo+
KHNvdXJjZUJ1ZmZlci5idWZmZXIoaSktPm1EYXRhKSwgMSwgZGVzdGluYXRpb24sIDEsIGZyYW1l
Q291bnQpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBBdWRp
b1N0cmVhbURlc2NyaXB0aW9uOjpGbG9hdDY0OiB7Ci0gICAgICAgICAgICBkb3VibGUqIGRlc3Rp
bmF0aW9uID0gc3RhdGljX2Nhc3Q8ZG91YmxlKj4obV9idWZmZXJMaXN0LT5tQnVmZmVyc1tpXS5t
RGF0YSk7Ci0gICAgICAgICAgICB2RFNQX3ZhZGREKGRlc3RpbmF0aW9uLCAxLCByZWludGVycHJl
dF9jYXN0PGRvdWJsZSo+KHNvdXJjZUJ1ZmZlci5tQnVmZmVyc1tpXS5tRGF0YSksIDEsIGRlc3Rp
bmF0aW9uLCAxLCBmcmFtZUNvdW50KTsKKyAgICAgICAgICAgIGRvdWJsZSogZGVzdGluYXRpb24g
PSBzdGF0aWNfY2FzdDxkb3VibGUqPihtX2J1ZmZlckxpc3QtPmJ1ZmZlcihpKS0+bURhdGEpOwor
ICAgICAgICAgICAgdkRTUF92YWRkRChkZXN0aW5hdGlvbiwgMSwgcmVpbnRlcnByZXRfY2FzdDxk
b3VibGUqPihzb3VyY2VCdWZmZXIuYnVmZmVyKGkpLT5tRGF0YSksIDEsIGRlc3RpbmF0aW9uLCAx
LCBmcmFtZUNvdW50KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNh
c2UgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbjo6Tm9uZToKQEAgLTE4Nyw5ICsxNzQsOSBAQCBPU1N0
YXR1cyBBdWRpb1NhbXBsZUJ1ZmZlckxpc3Q6OmNvcHlGcm9tKGNvbnN0IEF1ZGlvU2FtcGxlQnVm
ZmVyTGlzdCYgc291cmNlLCBzaQogCiAgICAgbV9zYW1wbGVDb3VudCA9IGZyYW1lQ291bnQ7CiAK
LSAgICBmb3IgKHVpbnQzMl90IGkgPSAwOyBpIDwgbV9idWZmZXJMaXN0LT5tTnVtYmVyQnVmZmVy
czsgaSsrKSB7Ci0gICAgICAgIHVpbnQ4X3QqIHNvdXJjZURhdGEgPSBzdGF0aWNfY2FzdDx1aW50
OF90Kj4oc291cmNlLmJ1ZmZlckxpc3QoKS5tQnVmZmVyc1tpXS5tRGF0YSk7Ci0gICAgICAgIHVp
bnQ4X3QqIGRlc3RpbmF0aW9uID0gc3RhdGljX2Nhc3Q8dWludDhfdCo+KG1fYnVmZmVyTGlzdC0+
bUJ1ZmZlcnNbaV0ubURhdGEpOworICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkgPCBtX2J1ZmZl
ckxpc3QtPmJ1ZmZlckNvdW50KCk7IGkrKykgeworICAgICAgICB1aW50OF90KiBzb3VyY2VEYXRh
ID0gc3RhdGljX2Nhc3Q8dWludDhfdCo+KHNvdXJjZS5idWZmZXJMaXN0KCkuYnVmZmVyKGkpLT5t
RGF0YSk7CisgICAgICAgIHVpbnQ4X3QqIGRlc3RpbmF0aW9uID0gc3RhdGljX2Nhc3Q8dWludDhf
dCo+KG1fYnVmZmVyTGlzdC0+YnVmZmVyKGkpLT5tRGF0YSk7CiAgICAgICAgIG1lbWNweShkZXN0
aW5hdGlvbiwgc291cmNlRGF0YSwgZnJhbWVDb3VudCAqIG1faW50ZXJuYWxGb3JtYXQtPmJ5dGVz
UGVyUGFja2V0KCkpOwogICAgIH0KIApAQCAtMjAwLDExICsxODcsMTEgQEAgT1NTdGF0dXMgQXVk
aW9TYW1wbGVCdWZmZXJMaXN0Ojpjb3B5VG8oQXVkaW9CdWZmZXJMaXN0JiBidWZmZXIsIHNpemVf
dCBmcmFtZUNvdW4KIHsKICAgICBpZiAoZnJhbWVDb3VudCA+IG1fc2FtcGxlQ291bnQpCiAgICAg
ICAgIHJldHVybiBrQXVkaW9fUGFyYW1FcnJvcjsKLSAgICBpZiAoYnVmZmVyLm1OdW1iZXJCdWZm
ZXJzID4gbV9idWZmZXJMaXN0LT5tTnVtYmVyQnVmZmVycykKKyAgICBpZiAoYnVmZmVyLm1OdW1i
ZXJCdWZmZXJzID4gbV9idWZmZXJMaXN0LT5idWZmZXJDb3VudCgpKQogICAgICAgICByZXR1cm4g
a0F1ZGlvX1BhcmFtRXJyb3I7CiAKICAgICBmb3IgKHVpbnQzMl90IGkgPSAwOyBpIDwgYnVmZmVy
Lm1OdW1iZXJCdWZmZXJzOyBpKyspIHsKLSAgICAgICAgdWludDhfdCogc291cmNlRGF0YSA9IHN0
YXRpY19jYXN0PHVpbnQ4X3QqPihtX2J1ZmZlckxpc3QtPm1CdWZmZXJzW2ldLm1EYXRhKTsKKyAg
ICAgICAgdWludDhfdCogc291cmNlRGF0YSA9IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihtX2J1ZmZl
ckxpc3QtPmJ1ZmZlcihpKS0+bURhdGEpOwogICAgICAgICB1aW50OF90KiBkZXN0aW5hdGlvbiA9
IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihidWZmZXIubUJ1ZmZlcnNbaV0ubURhdGEpOwogICAgICAg
ICBtZW1jcHkoZGVzdGluYXRpb24sIHNvdXJjZURhdGEsIGZyYW1lQ291bnQgKiBtX2ludGVybmFs
Rm9ybWF0LT5ieXRlc1BlclBhY2tldCgpKTsKICAgICB9CkBAIC0yMTgsMTUgKzIwNSw3IEBAIHZv
aWQgQXVkaW9TYW1wbGVCdWZmZXJMaXN0OjpyZXNldCgpCiAgICAgbV90aW1lc3RhbXAgPSAwOwog
ICAgIG1faG9zdFRpbWUgPSAtMTsKIAotICAgIHVpbnQ4X3QqIGRhdGEgPSByZWludGVycHJldF9j
YXN0PHVpbnQ4X3QqPihtX2J1ZmZlckxpc3QuZ2V0KCkpICsgbV9idWZmZXJMaXN0QmFzZVNpemU7
Ci0gICAgbV9idWZmZXJMaXN0LT5tTnVtYmVyQnVmZmVycyA9IG1faW50ZXJuYWxGb3JtYXQtPm51
bWJlck9mQ2hhbm5lbFN0cmVhbXMoKTsKLSAgICBmb3IgKHVpbnQzMl90IGkgPSAwOyBpIDwgbV9i
dWZmZXJMaXN0LT5tTnVtYmVyQnVmZmVyczsgKytpKSB7Ci0gICAgICAgIGF1dG8mIGJ1ZmZlciA9
IG1fYnVmZmVyTGlzdC0+bUJ1ZmZlcnNbaV07Ci0gICAgICAgIGJ1ZmZlci5tRGF0YSA9IGRhdGE7
Ci0gICAgICAgIGJ1ZmZlci5tRGF0YUJ5dGVTaXplID0gbV9tYXhCdWZmZXJTaXplUGVyQ2hhbm5l
bDsKLSAgICAgICAgYnVmZmVyLm1OdW1iZXJDaGFubmVscyA9IG1faW50ZXJuYWxGb3JtYXQtPm51
bWJlck9mSW50ZXJsZWF2ZWRDaGFubmVscygpOwotICAgICAgICBkYXRhID0gZGF0YSArIG1fbWF4
QnVmZmVyU2l6ZVBlckNoYW5uZWw7Ci0gICAgfQorICAgIG1fYnVmZmVyTGlzdCA9IHN0ZDo6bWFr
ZV91bmlxdWU8V2ViQXVkaW9CdWZmZXJMaXN0PigqbV9pbnRlcm5hbEZvcm1hdCwgbV9tYXhCdWZm
ZXJTaXplUGVyQ2hhbm5lbCk7CiB9CiAKIHZvaWQgQXVkaW9TYW1wbGVCdWZmZXJMaXN0Ojp6ZXJv
KCkKQEAgLTI3NywyMiArMjU2LDIwIEBAIE9TU3RhdHVzIEF1ZGlvU2FtcGxlQnVmZmVyTGlzdDo6
Y29weUZyb20oQXVkaW9CdWZmZXJMaXN0JiBzb3VyY2UsIEF1ZGlvQ29udmVydGVyCiAgICAgbV9j
b252ZXJ0ZXJJbnB1dEJ5dGVzUGVyUGFja2V0ID0gaW5wdXRGb3JtYXQubUJ5dGVzUGVyUGFja2V0
OwogICAgIG1fY29udmVydGVySW5wdXRCdWZmZXIgPSAmc291cmNlOwogCi0gICAgYXV0byogb3V0
cHV0RGF0YSA9IG1fYnVmZmVyTGlzdC5nZXQoKTsKLQogI2lmICFMT0dfRElTQUJMRUQKICAgICBB
dWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24gb3V0cHV0Rm9ybWF0OwogICAgIHByb3BlcnR5RGF0
YVNpemUgPSBzaXplb2Yob3V0cHV0Rm9ybWF0KTsKICAgICBBdWRpb0NvbnZlcnRlckdldFByb3Bl
cnR5KGNvbnZlcnRlciwga0F1ZGlvQ29udmVydGVyQ3VycmVudE91dHB1dFN0cmVhbURlc2NyaXB0
aW9uLCAmcHJvcGVydHlEYXRhU2l6ZSwgJm91dHB1dEZvcm1hdCk7CiAKLSAgICBBU1NFUlQob3V0
cHV0Rm9ybWF0Lm1DaGFubmVsc1BlckZyYW1lID09IG91dHB1dERhdGEtPm1OdW1iZXJCdWZmZXJz
KTsKLSAgICBmb3IgKHVpbnQzMl90IGkgPSAwOyBpIDwgb3V0cHV0RGF0YS0+bU51bWJlckJ1ZmZl
cnM7ICsraSkgewotICAgICAgICBBU1NFUlQob3V0cHV0RGF0YS0+bUJ1ZmZlcnNbaV0ubURhdGEp
OwotICAgICAgICBBU1NFUlQob3V0cHV0RGF0YS0+bUJ1ZmZlcnNbaV0ubURhdGFCeXRlU2l6ZSk7
CisgICAgQVNTRVJUKG91dHB1dEZvcm1hdC5tQ2hhbm5lbHNQZXJGcmFtZSA9PSBtX2J1ZmZlckxp
c3QtPmJ1ZmZlckNvdW50KCkpOworICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkgPCBtX2J1ZmZl
ckxpc3QtPmJ1ZmZlckNvdW50KCk7ICsraSkgeworICAgICAgICBBU1NFUlQobV9idWZmZXJMaXN0
LT5idWZmZXIoaSktPm1EYXRhKTsKKyAgICAgICAgQVNTRVJUKG1fYnVmZmVyTGlzdC0+YnVmZmVy
KGkpLT5tRGF0YUJ5dGVTaXplKTsKICAgICB9CiAjZW5kaWYKIAogICAgIFVJbnQzMiBzYW1wbGVz
Q29udmVydGVkID0gc3RhdGljX2Nhc3Q8VUludDMyPihtX3NhbXBsZUNhcGFjaXR5KTsKLSAgICBP
U1N0YXR1cyBlcnIgPSBBdWRpb0NvbnZlcnRlckZpbGxDb21wbGV4QnVmZmVyKGNvbnZlcnRlciwg
YXVkaW9Db252ZXJ0ZXJDYWxsYmFjaywgdGhpcywgJnNhbXBsZXNDb252ZXJ0ZWQsIG91dHB1dERh
dGEsIG51bGxwdHIpOworICAgIE9TU3RhdHVzIGVyciA9IEF1ZGlvQ29udmVydGVyRmlsbENvbXBs
ZXhCdWZmZXIoY29udmVydGVyLCBhdWRpb0NvbnZlcnRlckNhbGxiYWNrLCB0aGlzLCAmc2FtcGxl
c0NvbnZlcnRlZCwgbV9idWZmZXJMaXN0LT5saXN0KCksIG51bGxwdHIpOwogICAgIGlmIChlcnIp
IHsKICAgICAgICAgTE9HX0VSUk9SKCJBdWRpb1NhbXBsZUJ1ZmZlckxpc3Q6OmNvcHlGcm9tKCVw
KSBBdWRpb0NvbnZlcnRlckZpbGxDb21wbGV4QnVmZmVyIHJldHVybmVkIGVycm9yICVkICglLjRz
KSIsIHRoaXMsIChpbnQpZXJyLCAoY2hhciopJmVycik7CiAgICAgICAgIG1fc2FtcGxlQ291bnQg
PSBzdGQ6Om1pbihtX3NhbXBsZUNhcGFjaXR5LCBzdGF0aWNfY2FzdDxzaXplX3Q+KHNhbXBsZXND
b252ZXJ0ZWQpKTsKQEAgLTMxMiwyOSArMjg5LDEzIEBAIE9TU3RhdHVzIEF1ZGlvU2FtcGxlQnVm
ZmVyTGlzdDo6Y29weUZyb20oQXVkaW9TYW1wbGVCdWZmZXJMaXN0JiBzb3VyY2UsIEF1ZGlvQ29u
CiBPU1N0YXR1cyBBdWRpb1NhbXBsZUJ1ZmZlckxpc3Q6OmNvcHlGcm9tKENBUmluZ0J1ZmZlciYg
cmluZ0J1ZmZlciwgc2l6ZV90IHNhbXBsZUNvdW50LCB1aW50NjRfdCBzdGFydEZyYW1lLCBDQVJp
bmdCdWZmZXI6OkZldGNoTW9kZSBtb2RlKQogewogICAgIHJlc2V0KCk7Ci0gICAgaWYgKHJpbmdC
dWZmZXIuZmV0Y2goJmJ1ZmZlckxpc3QoKSwgc2FtcGxlQ291bnQsIHN0YXJ0RnJhbWUsIG1vZGUp
ICE9IENBUmluZ0J1ZmZlcjo6T2spCisgICAgaWYgKHJpbmdCdWZmZXIuZmV0Y2goYnVmZmVyTGlz
dCgpLmxpc3QoKSwgc2FtcGxlQ291bnQsIHN0YXJ0RnJhbWUsIG1vZGUpICE9IENBUmluZ0J1ZmZl
cjo6T2spCiAgICAgICAgIHJldHVybiBrQXVkaW9fUGFyYW1FcnJvcjsKIAogICAgIG1fc2FtcGxl
Q291bnQgPSBzYW1wbGVDb3VudDsKICAgICByZXR1cm4gMDsKIH0KIAotdm9pZCBBdWRpb1NhbXBs
ZUJ1ZmZlckxpc3Q6OmNvbmZpZ3VyZUJ1ZmZlckxpc3RGb3JTdHJlYW0oQXVkaW9CdWZmZXJMaXN0
JiBidWZmZXJMaXN0LCBjb25zdCBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIGZvcm1hdCwgdWlu
dDhfdCogYnVmZmVyRGF0YSwgc2l6ZV90IHNhbXBsZUNvdW50KQotewotICAgIHNpemVfdCBidWZm
ZXJDb3VudCA9IGZvcm1hdC5udW1iZXJPZkNoYW5uZWxTdHJlYW1zKCk7Ci0gICAgc2l6ZV90IGNo
YW5uZWxDb3VudCA9IGZvcm1hdC5udW1iZXJPZkludGVybGVhdmVkQ2hhbm5lbHMoKTsKLSAgICBz
aXplX3QgYnl0ZXNQZXJDaGFubmVsID0gc2FtcGxlQ291bnQgKiBmb3JtYXQuYnl0ZXNQZXJGcmFt
ZSgpOwotCi0gICAgYnVmZmVyTGlzdC5tTnVtYmVyQnVmZmVycyA9IGJ1ZmZlckNvdW50OwotICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBidWZmZXJDb3VudDsgKytpKSB7Ci0gICAgICAgIGJ1
ZmZlckxpc3QubUJ1ZmZlcnNbaV0ubU51bWJlckNoYW5uZWxzID0gY2hhbm5lbENvdW50OwotICAg
ICAgICBidWZmZXJMaXN0Lm1CdWZmZXJzW2ldLm1EYXRhQnl0ZVNpemUgPSBieXRlc1BlckNoYW5u
ZWw7Ci0gICAgICAgIGJ1ZmZlckxpc3QubUJ1ZmZlcnNbaV0ubURhdGEgPSBidWZmZXJEYXRhOwot
ICAgICAgICBpZiAoYnVmZmVyRGF0YSkKLSAgICAgICAgICAgIGJ1ZmZlckRhdGEgPSBidWZmZXJE
YXRhICsgYnl0ZXNQZXJDaGFubmVsOwotICAgIH0KLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQogCiAjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb1NhbXBsZUJ1ZmZlckxpc3QuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb1NhbXBsZUJ1ZmZlckxpc3QuaAppbmRl
eCAwZThlMjRjMjMyMDE1NmE4M2E3NTk0Y2Y1ZmJjNTE5YWE4YmNhMmI0Li5jOTllZTlhZTBkMmY0
ZTIxMjVlMDIzMDAxMzAwY2M2NWZkN2I3NDk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9TYW1wbGVCdWZmZXJMaXN0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2FtcGxlQnVmZmVyTGlzdC5oCkBAIC0yOCw2
ICsyOCw3IEBACiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKIAogI2luY2x1ZGUgIkNBUmluZ0J1
ZmZlci5oIgorI2luY2x1ZGUgIldlYkF1ZGlvQnVmZmVyTGlzdC5oIgogI2luY2x1ZGUgPENvcmVB
dWRpby9Db3JlQXVkaW9UeXBlcy5oPgogI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8
d3RmL1JlZkNvdW50ZWQuaD4KQEAgLTQ0LDcgKzQ1LDYgQEAgcHVibGljOgogCiAgICAgfkF1ZGlv
U2FtcGxlQnVmZmVyTGlzdCgpOwogCi0gICAgc3RhdGljIHZvaWQgY29uZmlndXJlQnVmZmVyTGlz
dEZvclN0cmVhbShBdWRpb0J1ZmZlckxpc3QmLCBjb25zdCBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRp
b24mLCB1aW50OF90Kiwgc2l6ZV90KTsKICAgICBzdGF0aWMgaW5saW5lIHNpemVfdCBhdWRpb0J1
ZmZlckxpc3RTaXplRm9yU3RyZWFtKGNvbnN0IENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYpOwog
CiAgICAgc3RhdGljIHZvaWQgYXBwbHlHYWluKEF1ZGlvQnVmZmVyTGlzdCYsIGZsb2F0LCBBdWRp
b1N0cmVhbURlc2NyaXB0aW9uOjpQQ01Gb3JtYXQpOwpAQCAtNjAsNyArNjAsNyBAQCBwdWJsaWM6
CiAgICAgT1NTdGF0dXMgY29weVRvKEF1ZGlvQnVmZmVyTGlzdCYsIHNpemVfdCBjb3VudCA9IFNJ
WkVfTUFYKTsKIAogICAgIGNvbnN0IEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiYgc3RyZWFt
RGVzY3JpcHRpb24oKSBjb25zdCB7IHJldHVybiBtX2ludGVybmFsRm9ybWF0LT5zdHJlYW1EZXNj
cmlwdGlvbigpOyB9Ci0gICAgQXVkaW9CdWZmZXJMaXN0JiBidWZmZXJMaXN0KCkgY29uc3QgeyBy
ZXR1cm4gKm1fYnVmZmVyTGlzdC5nZXQoKTsgfQorICAgIFdlYkF1ZGlvQnVmZmVyTGlzdCYgYnVm
ZmVyTGlzdCgpIGNvbnN0IHsgcmV0dXJuICptX2J1ZmZlckxpc3Q7IH0KIAogICAgIHVpbnQzMl90
IHNhbXBsZUNhcGFjaXR5KCkgY29uc3QgeyByZXR1cm4gbV9zYW1wbGVDYXBhY2l0eTsgfQogICAg
IHVpbnQzMl90IHNhbXBsZUNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9zYW1wbGVDb3VudDsgfQpA
QCAtOTMsNyArOTMsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgc2l6ZV90IG1fc2FtcGxlQ2FwYWNpdHkg
eyAwIH07CiAgICAgc2l6ZV90IG1fbWF4QnVmZmVyU2l6ZVBlckNoYW5uZWwgeyAwIH07CiAgICAg
c2l6ZV90IG1fYnVmZmVyTGlzdEJhc2VTaXplIHsgMCB9OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxB
dWRpb0J1ZmZlckxpc3Q+IG1fYnVmZmVyTGlzdDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQXVk
aW9CdWZmZXJMaXN0PiBtX2J1ZmZlckxpc3Q7CiB9OwogCiBpbmxpbmUgc2l6ZV90IEF1ZGlvU2Ft
cGxlQnVmZmVyTGlzdDo6YXVkaW9CdWZmZXJMaXN0U2l6ZUZvclN0cmVhbShjb25zdCBDQUF1ZGlv
U3RyZWFtRGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2FtcGxlRGF0YVNvdXJjZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9TYW1wbGVEYXRhU291cmNlLmNwcAppbmRl
eCA3YjYzOTFiYzc4M2Y5ZTg4ZWQ3YTEwOWMyOTcyNmRlMGJiNTA3YmE2Li45ZjE2MzUyMjRlZmM4
MWJjY2UyNTJlYjI4OTIxZDc1ZTM5YzgxNWE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9TYW1wbGVEYXRhU291cmNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9TYW1wbGVEYXRhU291cmNlLmNwcApAQCAt
MTUyLDcgKzE1Miw3IEBAIHZvaWQgQXVkaW9TYW1wbGVEYXRhU291cmNlOjpwdXNoU2FtcGxlc0lu
dGVybmFsKEF1ZGlvQnVmZmVyTGlzdCYgYnVmZmVyTGlzdCwgY29uCiAgICAgICAgIGlmIChlcnIp
CiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgc2FtcGxlQnVmZmVyTGlzdCA9ICZtX3Nj
cmF0Y2hCdWZmZXItPmJ1ZmZlckxpc3QoKTsKKyAgICAgICAgc2FtcGxlQnVmZmVyTGlzdCA9IG1f
c2NyYXRjaEJ1ZmZlci0+YnVmZmVyTGlzdCgpLmxpc3QoKTsKICAgICB9IGVsc2UKICAgICAgICAg
c2FtcGxlQnVmZmVyTGlzdCA9ICZidWZmZXJMaXN0OwogCkBAIC0xOTIsMzQgKzE5MiwxNiBAQCB2
b2lkIEF1ZGlvU2FtcGxlRGF0YVNvdXJjZTo6cHVzaFNhbXBsZXMoY29uc3QgQXVkaW9TdHJlYW1C
YXNpY0Rlc2NyaXB0aW9uJiBzYW1wbAogCiAgICAgQVNTRVJUX1VOVVNFRChzYW1wbGVEZXNjcmlw
dGlvbiwgKm1faW5wdXREZXNjcmlwdGlvbiA9PSBzYW1wbGVEZXNjcmlwdGlvbik7CiAgICAgQVNT
RVJUKG1fcmluZ0J1ZmZlcik7Ci0KLSAgICBzaXplX3QgYnVmZmVyU2l6ZSA9IEF1ZGlvU2FtcGxl
QnVmZmVyTGlzdDo6YXVkaW9CdWZmZXJMaXN0U2l6ZUZvclN0cmVhbSgqbV9pbnB1dERlc2NyaXB0
aW9uLmdldCgpKTsKLSAgICB1aW50OF90IGJ1ZmZlckRhdGFbYnVmZmVyU2l6ZV07Ci0gICAgQXVk
aW9CdWZmZXJMaXN0KiBidWZmZXJMaXN0ID0gcmVpbnRlcnByZXRfY2FzdDxBdWRpb0J1ZmZlckxp
c3QqPihidWZmZXJEYXRhKTsKLSAgICBidWZmZXJMaXN0LT5tTnVtYmVyQnVmZmVycyA9IG1faW5w
dXREZXNjcmlwdGlvbi0+bnVtYmVyT2ZJbnRlcmxlYXZlZENoYW5uZWxzKCk7Ci0KLSAgICBDTUJs
b2NrQnVmZmVyUmVmIGJ1ZmZlciA9IG51bGxwdHI7Ci0gICAgT1NTdGF0dXMgZXJyID0gQ01TYW1w
bGVCdWZmZXJHZXRBdWRpb0J1ZmZlckxpc3RXaXRoUmV0YWluZWRCbG9ja0J1ZmZlcihzYW1wbGVC
dWZmZXIsIG51bGxwdHIsIGJ1ZmZlckxpc3QsIGJ1ZmZlclNpemUsIGtDRkFsbG9jYXRvclN5c3Rl
bURlZmF1bHQsIGtDRkFsbG9jYXRvclN5c3RlbURlZmF1bHQsIGtDTVNhbXBsZUJ1ZmZlckZsYWdf
QXVkaW9CdWZmZXJMaXN0X0Fzc3VyZTE2Qnl0ZUFsaWdubWVudCwgJmJ1ZmZlcik7Ci0gICAgaWYg
KGVycikgewotICAgICAgICBMT0dfRVJST1IoIkF1ZGlvU2FtcGxlRGF0YVNvdXJjZTo6cHVzaFNh
bXBsZXMoJXApIC0gQ01TYW1wbGVCdWZmZXJHZXRBdWRpb0J1ZmZlckxpc3RXaXRoUmV0YWluZWRC
bG9ja0J1ZmZlciByZXR1cm5lZCBlcnJvciAlZCAoJS40cykiLCB0aGlzLCAoaW50KWVyciwgKGNo
YXIqKSZlcnIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgcHVzaFNhbXBsZXNJbnRl
cm5hbCgqYnVmZmVyTGlzdCwgdG9NZWRpYVRpbWUoQ01TYW1wbGVCdWZmZXJHZXRQcmVzZW50YXRp
b25UaW1lU3RhbXAoc2FtcGxlQnVmZmVyKSksIENNU2FtcGxlQnVmZmVyR2V0TnVtU2FtcGxlcyhz
YW1wbGVCdWZmZXIpKTsKKyAgICAKKyAgICBXZWJBdWRpb0J1ZmZlckxpc3QgbGlzdCgqbV9pbnB1
dERlc2NyaXB0aW9uLCBzYW1wbGVCdWZmZXIpOworICAgIHB1c2hTYW1wbGVzSW50ZXJuYWwobGlz
dCwgdG9NZWRpYVRpbWUoQ01TYW1wbGVCdWZmZXJHZXRQcmVzZW50YXRpb25UaW1lU3RhbXAoc2Ft
cGxlQnVmZmVyKSksIENNU2FtcGxlQnVmZmVyR2V0TnVtU2FtcGxlcyhzYW1wbGVCdWZmZXIpKTsK
IH0KIAotdm9pZCBBdWRpb1NhbXBsZURhdGFTb3VyY2U6OnB1c2hTYW1wbGVzKGNvbnN0IEF1ZGlv
U3RyZWFtQmFzaWNEZXNjcmlwdGlvbiYgc2FtcGxlRGVzY3JpcHRpb24sIGNvbnN0IE1lZGlhVGlt
ZSYgc2FtcGxlVGltZSwgdm9pZCogYXVkaW9EYXRhLCBzaXplX3Qgc2FtcGxlQ291bnQpCit2b2lk
IEF1ZGlvU2FtcGxlRGF0YVNvdXJjZTo6cHVzaFNhbXBsZXMoY29uc3QgTWVkaWFUaW1lJiBzYW1w
bGVUaW1lLCBQbGF0Zm9ybUF1ZGlvRGF0YSYgYXVkaW9EYXRhLCBzaXplX3Qgc2FtcGxlQ291bnQp
CiB7CiAgICAgc3RkOjp1bmlxdWVfbG9jazxMb2NrPiBsb2NrKG1fbG9jaywgc3RkOjp0cnlfdG9f
bG9jayk7Ci0gICAgQVNTRVJUKCptX2lucHV0RGVzY3JpcHRpb24gPT0gc2FtcGxlRGVzY3JpcHRp
b24pOwotCi0gICAgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uIGRlc2NyaXB0aW9uKHNhbXBsZURl
c2NyaXB0aW9uKTsKLSAgICBzaXplX3QgYnVmZmVyU2l6ZSA9IEF1ZGlvU2FtcGxlQnVmZmVyTGlz
dDo6YXVkaW9CdWZmZXJMaXN0U2l6ZUZvclN0cmVhbShkZXNjcmlwdGlvbik7Ci0gICAgdWludDhf
dCBidWZmZXJEYXRhW2J1ZmZlclNpemVdOwotICAgIEF1ZGlvQnVmZmVyTGlzdCogYnVmZmVyTGlz
dCA9IHJlaW50ZXJwcmV0X2Nhc3Q8QXVkaW9CdWZmZXJMaXN0Kj4oYnVmZmVyRGF0YSk7Ci0KLSAg
ICBBdWRpb1NhbXBsZUJ1ZmZlckxpc3Q6OmNvbmZpZ3VyZUJ1ZmZlckxpc3RGb3JTdHJlYW0oKmJ1
ZmZlckxpc3QsIGRlc2NyaXB0aW9uLCByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihhdWRpb0Rh
dGEpLCBzYW1wbGVDb3VudCk7Ci0gICAgcHVzaFNhbXBsZXNJbnRlcm5hbCgqYnVmZmVyTGlzdCwg
c2FtcGxlVGltZSwgc2FtcGxlQ291bnQpOworICAgIEFTU0VSVChpczxXZWJBdWRpb0J1ZmZlckxp
c3Q+KGF1ZGlvRGF0YSkpOworICAgIHB1c2hTYW1wbGVzSW50ZXJuYWwoZG93bmNhc3Q8V2ViQXVk
aW9CdWZmZXJMaXN0PihhdWRpb0RhdGEpLCBzYW1wbGVUaW1lLCBzYW1wbGVDb3VudCk7CiB9CiAK
IGJvb2wgQXVkaW9TYW1wbGVEYXRhU291cmNlOjpwdWxsU2FtcGxlc0ludGVybmFsKEF1ZGlvQnVm
ZmVyTGlzdCYgYnVmZmVyLCBzaXplX3QmIHNhbXBsZUNvdW50LCB1aW50NjRfdCB0aW1lU3RhbXAs
IGRvdWJsZSAvKmhvc3RUaW1lKi8sIFB1bGxNb2RlIG1vZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9TYW1wbGVEYXRhU291cmNlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9TYW1wbGVEYXRhU291cmNlLmgKaW5k
ZXggZGVjZGVlZWZlMmY3MjkzOTMxMjQ4MDJkODU2MWE3OTdhYjYyMDYzMS4uOWFjMzE0NmQyZmM5
YTE3NjNiYTM3ZDUxNGI0YmY1MTZhNWE5ZjM5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2FtcGxlRGF0YVNvdXJjZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb1NhbXBsZURhdGFTb3VyY2UuaApAQCAtNTIs
NyArNTIsNyBAQCBwdWJsaWM6CiAgICAgT1NTdGF0dXMgc2V0SW5wdXRGb3JtYXQoY29uc3QgQ0FB
dWRpb1N0cmVhbURlc2NyaXB0aW9uJik7CiAgICAgT1NTdGF0dXMgc2V0T3V0cHV0Rm9ybWF0KGNv
bnN0IENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYpOwogCi0gICAgdm9pZCBwdXNoU2FtcGxlcyhj
b25zdCBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24mLCBjb25zdCBNZWRpYVRpbWUmLCB2b2lk
Kiwgc2l6ZV90KTsKKyAgICB2b2lkIHB1c2hTYW1wbGVzKGNvbnN0IE1lZGlhVGltZSYsIFBsYXRm
b3JtQXVkaW9EYXRhJiwgc2l6ZV90KTsKICAgICB2b2lkIHB1c2hTYW1wbGVzKGNvbnN0IEF1ZGlv
U3RyZWFtQmFzaWNEZXNjcmlwdGlvbiYsIENNU2FtcGxlQnVmZmVyUmVmKTsKIAogICAgIGVudW0g
UHVsbE1vZGUgeyBDb3B5LCBNaXggfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAKaW5kZXggZWJkYWQy
NTNiMjI3ZjBlNzBkNzAzNzcyOTFjZjA5NzI4MTY4ZDFlYS4uN2E4ZDc0MDg1MDI5YjVjMTU0NzYx
NzA0MDRiZjBkMjQyN2UxNzQzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAKQEAgLTExOSw3ICsx
MTksNyBAQCB2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OnZpZGVvU2FtcGxlQXZhaWxhYmxlKE1l
ZGlhU2FtcGxlJiBtZWRpYVNhbXBsZSkKICAgICAgICAgb2JzZXJ2ZXItPnZpZGVvU2FtcGxlQXZh
aWxhYmxlKG1lZGlhU2FtcGxlKTsKIH0KIAotdm9pZCBSZWFsdGltZU1lZGlhU291cmNlOjphdWRp
b1NhbXBsZXNBdmFpbGFibGUoY29uc3QgTWVkaWFUaW1lJiB0aW1lLCB2b2lkKiBhdWRpb0RhdGEs
IGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uLCBzaXplX3QgbnVtYmVy
T2ZGcmFtZXMpCit2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OmF1ZGlvU2FtcGxlc0F2YWlsYWJs
ZShjb25zdCBNZWRpYVRpbWUmIHRpbWUsIFBsYXRmb3JtQXVkaW9EYXRhJiBhdWRpb0RhdGEsIGNv
bnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uLCBzaXplX3QgbnVtYmVyT2ZG
cmFtZXMpCiB7CiAgICAgZm9yIChjb25zdCBhdXRvJiBvYnNlcnZlciA6IG1fb2JzZXJ2ZXJzKQog
ICAgICAgICBvYnNlcnZlci0+YXVkaW9TYW1wbGVzQXZhaWxhYmxlKHRpbWUsIGF1ZGlvRGF0YSwg
ZGVzY3JpcHRpb24sIG51bWJlck9mRnJhbWVzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuaAppbmRleCA4ZmJl
Njk0NjFlNWRmZDEzOWIxMTMzN2JmZjVlZWNmMzVlYmEwYjVkLi4xNTRmODI4ZGY5YzFmZDg4MTc2
ZjA2M2M1N2ZjM2E4NmFlZjNjNzIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5oCkBAIC01Nyw2ICs1Nyw3
IEBAIGNsYXNzIEF1ZGlvU3RyZWFtRGVzY3JpcHRpb247CiBjbGFzcyBGbG9hdFJlY3Q7CiBjbGFz
cyBHcmFwaGljc0NvbnRleHQ7CiBjbGFzcyBNZWRpYVN0cmVhbVByaXZhdGU7CitjbGFzcyBQbGF0
Zm9ybUF1ZGlvRGF0YTsKIGNsYXNzIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczsKIAogY2xh
c3MgUmVhbHRpbWVNZWRpYVNvdXJjZSA6IHB1YmxpYyBSZWZDb3VudGVkPFJlYWx0aW1lTWVkaWFT
b3VyY2U+IHsKQEAgLTc3LDcgKzc4LDcgQEAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIHZvaWQg
dmlkZW9TYW1wbGVBdmFpbGFibGUoTWVkaWFTYW1wbGUmKSB7IH0KIAogICAgICAgICAvLyBNYXkg
YmUgY2FsbGVkIG9uIGEgYmFja2dyb3VuZCB0aHJlYWQuCi0gICAgICAgIHZpcnR1YWwgdm9pZCBh
dWRpb1NhbXBsZXNBdmFpbGFibGUoY29uc3QgTWVkaWFUaW1lJiwgdm9pZCogLyphdWRpb0RhdGEq
LywgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYsIHNpemVfdCAvKm51bWJlck9mRnJhbWVz
Ki8pIHsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgYXVkaW9TYW1wbGVzQXZhaWxhYmxlKGNvbnN0
IE1lZGlhVGltZSYsIFBsYXRmb3JtQXVkaW9EYXRhJiwgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlw
dGlvbiYsIHNpemVfdCAvKm51bWJlck9mRnJhbWVzKi8pIHsgfQogICAgIH07CiAKICAgICB2aXJ0
dWFsIH5SZWFsdGltZU1lZGlhU291cmNlKCkgeyB9CkBAIC0xMDksNyArMTEwLDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBzZXR0aW5nc0RpZENoYW5nZSgpOwogCiAgICAgdm9pZCB2aWRl
b1NhbXBsZUF2YWlsYWJsZShNZWRpYVNhbXBsZSYpOwotICAgIHZvaWQgYXVkaW9TYW1wbGVzQXZh
aWxhYmxlKGNvbnN0IE1lZGlhVGltZSYsIHZvaWQqLCBjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0
aW9uJiwgc2l6ZV90KTsKKyAgICB2b2lkIGF1ZGlvU2FtcGxlc0F2YWlsYWJsZShjb25zdCBNZWRp
YVRpbWUmLCBQbGF0Zm9ybUF1ZGlvRGF0YSYsIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24m
LCBzaXplX3QpOwogICAgIAogICAgIGJvb2wgc3RvcHBlZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3Rv
cHBlZDsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9tYWMvQVZBdWRpb0NhcHR1cmVTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9BVkF1ZGlvQ2FwdHVyZVNvdXJjZS5oCmluZGV4IDZiOWU4NGU0ZmU1ZmY1
Njc3NzNjOWQ1ZGViMDg4NzcyODVlYmMwZDAuLjlkZTQxZDI4OTRhOTUwNDM3ZDUwOTg3NzJlOGIw
NjFmNzRlZWQ1MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL21hYy9BVkF1ZGlvQ2FwdHVyZVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9BVkF1ZGlvQ2FwdHVyZVNvdXJjZS5oCkBAIC0zOSw2ICszOSw3
IEBAIHR5cGVkZWYgY29uc3Qgc3RydWN0IG9wYXF1ZUNNRm9ybWF0RGVzY3JpcHRpb24gKkNNRm9y
bWF0RGVzY3JpcHRpb25SZWY7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgV2ViQXVk
aW9CdWZmZXJMaXN0OwogY2xhc3MgV2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakM7CiAKIGNs
YXNzIEFWQXVkaW9DYXB0dXJlU291cmNlIDogcHVibGljIEFWTWVkaWFDYXB0dXJlU291cmNlLCBw
dWJsaWMgQXVkaW9DYXB0dXJlU291cmNlUHJvdmlkZXJPYmpDIHsKQEAgLTY3LDcgKzY4LDcgQEAg
cHJpdmF0ZToKIAogICAgIFJldGFpblB0cjxBVkNhcHR1cmVDb25uZWN0aW9uPiBtX2F1ZGlvQ29u
bmVjdGlvbjsKICAgICBzaXplX3QgbV9saXN0QnVmZmVyU2l6ZSB7IDAgfTsKLSAgICBzdGQ6OnVu
aXF1ZV9wdHI8QXVkaW9CdWZmZXJMaXN0PiBtX2xpc3Q7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdl
YkF1ZGlvQnVmZmVyTGlzdD4gbV9saXN0OwogCiAgICAgUmVmUHRyPFdlYkF1ZGlvU291cmNlUHJv
dmlkZXJBVkZPYmpDPiBtX2F1ZGlvU291cmNlUHJvdmlkZXI7CiAgICAgc3RkOjp1bmlxdWVfcHRy
PENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbj4gbV9pbnB1dERlc2NyaXB0aW9uOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQXVkaW9DYXB0dXJl
U291cmNlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQXVk
aW9DYXB0dXJlU291cmNlLm1tCmluZGV4IDAyMGYyODA4NmE5NjNiYTU0NjViYzJiYzU3N2I2NDAw
N2IwNTUyYzUuLjQ3MTdlNTk1NDY0NTg1MGVkZDkyMTQyMjhkYjc3MTJmNzFlYzE1ODAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkF1ZGlvQ2Fw
dHVyZVNvdXJjZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvQVZBdWRpb0NhcHR1cmVTb3VyY2UubW0KQEAgLTE5MywxMCArMTkzLDYgQEAgdm9pZCBBVkF1
ZGlvQ2FwdHVyZVNvdXJjZTo6Y2FwdHVyZU91dHB1dERpZE91dHB1dFNhbXBsZUJ1ZmZlckZyb21D
b25uZWN0aW9uKEFWQ2EKICAgICBjb25zdCBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24qIHN0
cmVhbURlc2NyaXB0aW9uID0gQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uR2V0U3RyZWFtQmFzaWNE
ZXNjcmlwdGlvbihmb3JtYXREZXNjcmlwdGlvbik7CiAgICAgaWYgKCFtX2lucHV0RGVzY3JpcHRp
b24gfHwgKm1faW5wdXREZXNjcmlwdGlvbiAhPSAqc3RyZWFtRGVzY3JpcHRpb24pIHsKICAgICAg
ICAgbV9pbnB1dERlc2NyaXB0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxDQUF1ZGlvU3RyZWFtRGVz
Y3JpcHRpb24+KCpzdHJlYW1EZXNjcmlwdGlvbik7Ci0gICAgICAgIG1fbGlzdEJ1ZmZlclNpemUg
PSBBdWRpb1NhbXBsZUJ1ZmZlckxpc3Q6OmF1ZGlvQnVmZmVyTGlzdFNpemVGb3JTdHJlYW0oKm1f
aW5wdXREZXNjcmlwdGlvbi5nZXQoKSk7Ci0gICAgICAgIG1fbGlzdCA9IHN0ZDo6dW5pcXVlX3B0
cjxBdWRpb0J1ZmZlckxpc3Q+KHN0YXRpY19jYXN0PEF1ZGlvQnVmZmVyTGlzdCo+KDo6b3BlcmF0
b3IgbmV3IChtX2xpc3RCdWZmZXJTaXplKSkpOwotICAgICAgICBtZW1zZXQobV9saXN0LmdldCgp
LCAwLCBtX2xpc3RCdWZmZXJTaXplKTsKLSAgICAgICAgbV9saXN0LT5tTnVtYmVyQnVmZmVycyA9
IG1faW5wdXREZXNjcmlwdGlvbi0+bnVtYmVyT2ZDaGFubmVsU3RyZWFtcygpOwogCiAgICAgICAg
IGlmICghbV9vYnNlcnZlcnMuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBmb3IgKGF1dG8mIG9i
c2VydmVyIDogbV9vYnNlcnZlcnMpCkBAIC0yMDYsOSArMjAyLDExIEBAIHZvaWQgQVZBdWRpb0Nh
cHR1cmVTb3VyY2U6OmNhcHR1cmVPdXRwdXREaWRPdXRwdXRTYW1wbGVCdWZmZXJGcm9tQ29ubmVj
dGlvbihBVkNhCiAKICAgICBDTUl0ZW1Db3VudCBmcmFtZUNvdW50ID0gQ01TYW1wbGVCdWZmZXJH
ZXROdW1TYW1wbGVzKHNhbXBsZUJ1ZmZlcik7CiAgICAgQ01CbG9ja0J1ZmZlclJlZiBidWZmZXIg
PSBuaWw7Ci0gICAgT1NTdGF0dXMgZXJyID0gQ01TYW1wbGVCdWZmZXJHZXRBdWRpb0J1ZmZlckxp
c3RXaXRoUmV0YWluZWRCbG9ja0J1ZmZlcihzYW1wbGVCdWZmZXIsIG51bGxwdHIsIG1fbGlzdC5n
ZXQoKSwgbV9saXN0QnVmZmVyU2l6ZSwga0NGQWxsb2NhdG9yU3lzdGVtRGVmYXVsdCwga0NGQWxs
b2NhdG9yU3lzdGVtRGVmYXVsdCwga0NNU2FtcGxlQnVmZmVyRmxhZ19BdWRpb0J1ZmZlckxpc3Rf
QXNzdXJlMTZCeXRlQWxpZ25tZW50LCAmYnVmZmVyKTsKKyAgICBtX2xpc3QgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFdlYkF1ZGlvQnVmZmVyTGlzdD4oKm1faW5wdXREZXNjcmlwdGlvbiwgc2FtcGxlQnVm
ZmVyKTsKKworICAgIE9TU3RhdHVzIGVyciA9IENNU2FtcGxlQnVmZmVyR2V0QXVkaW9CdWZmZXJM
aXN0V2l0aFJldGFpbmVkQmxvY2tCdWZmZXIoc2FtcGxlQnVmZmVyLCBudWxscHRyLCBtX2xpc3Qt
Pmxpc3QoKSwgbV9saXN0QnVmZmVyU2l6ZSwga0NGQWxsb2NhdG9yU3lzdGVtRGVmYXVsdCwga0NG
QWxsb2NhdG9yU3lzdGVtRGVmYXVsdCwga0NNU2FtcGxlQnVmZmVyRmxhZ19BdWRpb0J1ZmZlckxp
c3RfQXNzdXJlMTZCeXRlQWxpZ25tZW50LCAmYnVmZmVyKTsKICAgICBpZiAoIWVycikKLSAgICAg
ICAgYXVkaW9TYW1wbGVzQXZhaWxhYmxlKHRvTWVkaWFUaW1lKENNU2FtcGxlQnVmZmVyR2V0UHJl
c2VudGF0aW9uVGltZVN0YW1wKHNhbXBsZUJ1ZmZlcikpLCBtX2xpc3QtPm1CdWZmZXJzWzBdLm1E
YXRhLCBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24oKnN0cmVhbURlc2NyaXB0aW9uKSwgZnJhbWVD
b3VudCk7CisgICAgICAgIGF1ZGlvU2FtcGxlc0F2YWlsYWJsZSh0b01lZGlhVGltZShDTVNhbXBs
ZUJ1ZmZlckdldFByZXNlbnRhdGlvblRpbWVTdGFtcChzYW1wbGVCdWZmZXIpKSwgKm1fbGlzdCwg
Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uKCpzdHJlYW1EZXNjcmlwdGlvbiksIGZyYW1lQ291bnQp
OwogICAgIGVsc2UKICAgICAgICAgTE9HX0VSUk9SKCJBVkF1ZGlvQ2FwdHVyZVNvdXJjZTo6Y2Fw
dHVyZU91dHB1dERpZE91dHB1dFNhbXBsZUJ1ZmZlckZyb21Db25uZWN0aW9uKCVwKSAtIENNU2Ft
cGxlQnVmZmVyR2V0QXVkaW9CdWZmZXJMaXN0V2l0aFJldGFpbmVkQmxvY2tCdWZmZXIgcmV0dXJu
ZWQgZXJyb3IgJWQgKCUuNHMpIiwgdGhpcywgKGludCllcnIsIChjaGFyKikmZXJyKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0F1ZGlvVHJh
Y2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hLmNwcAppbmRl
eCA2ZDYzYjdlYzQwNTk0NGU2ZjQyYTBjMTM2NWNmMmFjZjM1MDA5OTNjLi5jODA0Y2YwMTZkNTQ4
OTIyNDA2MzIwNmYxNWYzYWIxYzg0NGUxNzc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29h
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQXVkaW9U
cmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hLmNwcApAQCAtMTc4LDcgKzE3OCw3IEBAIE9TU3Rh
dHVzIEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYTo6c2V0dXBBdWRpb1VuaXQoKQog
ICAgIHJldHVybiBlcnI7CiB9CiAKLXZvaWQgQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNv
Y29hOjphdWRpb1NhbXBsZXNBdmFpbGFibGUoY29uc3QgTWVkaWFUaW1lJiBzYW1wbGVUaW1lLCB2
b2lkKiBhdWRpb0RhdGEsIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIGRlc2NyaXB0aW9u
LCBzaXplX3Qgc2FtcGxlQ291bnQpCit2b2lkIEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1D
b2NvYTo6YXVkaW9TYW1wbGVzQXZhaWxhYmxlKGNvbnN0IE1lZGlhVGltZSYgc2FtcGxlVGltZSwg
UGxhdGZvcm1BdWRpb0RhdGEmIGF1ZGlvRGF0YSwgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlv
biYgZGVzY3JpcHRpb24sIHNpemVfdCBzYW1wbGVDb3VudCkKIHsKICAgICBBU1NFUlQoZGVzY3Jp
cHRpb24ucGxhdGZvcm1EZXNjcmlwdGlvbigpLnR5cGUgPT0gUGxhdGZvcm1EZXNjcmlwdGlvbjo6
Q0FBdWRpb1N0cmVhbUJhc2ljVHlwZSk7CiAKQEAgLTIxNSw3ICsyMTUsNyBAQCB2b2lkIEF1ZGlv
VHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYTo6YXVkaW9TYW1wbGVzQXZhaWxhYmxlKGNvbnN0
IE1lZGlhVGltZSYgcwogICAgICAgICBtX2RhdGFTb3VyY2UtPnNldFZvbHVtZShtX3ZvbHVtZSk7
CiAgICAgfQogCi0gICAgbV9kYXRhU291cmNlLT5wdXNoU2FtcGxlcyhtX2lucHV0RGVzY3JpcHRp
b24tPnN0cmVhbURlc2NyaXB0aW9uKCksIHNhbXBsZVRpbWUsIGF1ZGlvRGF0YSwgc2FtcGxlQ291
bnQpOworICAgIG1fZGF0YVNvdXJjZS0+cHVzaFNhbXBsZXMoc2FtcGxlVGltZSwgYXVkaW9EYXRh
LCBzYW1wbGVDb3VudCk7CiAKICAgICBpZiAobV9hdXRvUGxheSkKICAgICAgICAgcGxheUludGVy
bmFsKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29h
LmgKaW5kZXggMjdmOTlkYTkzZTU4ODFmMmIzYTM1NGFhMWZmM2ViOWQ4ZDFjMTg0Ny4uYjZlN2Y0
MTYxZWFmYzkwOTNhZjEzNTEwNjA1OTgyYzFmMzU5MzFkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJl
YW1Db2NvYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9B
dWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EuaApAQCAtNjYsNyArNjYsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgc291cmNlTXV0ZWRDaGFuZ2VkKCkgIGZpbmFsIHsgfQogICAgIHZvaWQg
c291cmNlU2V0dGluZ3NDaGFuZ2VkKCkgZmluYWwgeyB9CiAgICAgYm9vbCBwcmV2ZW50U291cmNl
RnJvbVN0b3BwaW5nKCkgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2b2lkIGF1ZGlvU2Ft
cGxlc0F2YWlsYWJsZShjb25zdCBNZWRpYVRpbWUmLCB2b2lkKiwgY29uc3QgQXVkaW9TdHJlYW1E
ZXNjcmlwdGlvbiYsIHNpemVfdCkgZmluYWw7CisgICAgdm9pZCBhdWRpb1NhbXBsZXNBdmFpbGFi
bGUoY29uc3QgTWVkaWFUaW1lJiwgUGxhdGZvcm1BdWRpb0RhdGEmLCBjb25zdCBBdWRpb1N0cmVh
bURlc2NyaXB0aW9uJiwgc2l6ZV90KSBmaW5hbDsKIAogICAgIHN0YXRpYyBPU1N0YXR1cyBpbnB1
dFByb2Modm9pZCosIEF1ZGlvVW5pdFJlbmRlckFjdGlvbkZsYWdzKiwgY29uc3QgQXVkaW9UaW1l
U3RhbXAqLCBVSW50MzIgaW5CdXNOdW1iZXIsIFVJbnQzMiBudW1iZXJPZkZyYW1lcywgQXVkaW9C
dWZmZXJMaXN0Kik7CiAgICAgT1NTdGF0dXMgcmVuZGVyKFVJbnQzMiBzYW1wbGVDb3VudCwgQXVk
aW9CdWZmZXJMaXN0JiwgVUludDMyIGluQnVzTnVtYmVyLCBjb25zdCBBdWRpb1RpbWVTdGFtcCYs
IEF1ZGlvVW5pdFJlbmRlckFjdGlvbkZsYWdzJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWMuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVBdWRp
b1NvdXJjZU1hYy5oCmluZGV4IDE0MzNkN2QyMzE3N2I2YTUyOGQ2NjBmOWY3NWNkNjM5NGMxNzI5
NTIuLjkxNWNlNWY0MGY0NTRlYmVlNjJlZGExNjI5YWY2MzI2NTk2ODFkNWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVBdWRp
b1NvdXJjZU1hYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1hYy5oCkBAIC0zOCwxMiArMzgsMTIgQEAKICNpbmNs
dWRlIDxDb3JlQXVkaW8vQ29yZUF1ZGlvVHlwZXMuaD4KIAogT0JKQ19DTEFTUyBBVkF1ZGlvUENN
QnVmZmVyOwotdHlwZWRlZiBzdHJ1Y3QgQXVkaW9CdWZmZXJMaXN0IEF1ZGlvQnVmZmVyTGlzdDsK
IHR5cGVkZWYgc3RydWN0IE9wYXF1ZUNNQ2xvY2sqIENNQ2xvY2tSZWY7CiB0eXBlZGVmIGNvbnN0
IHN0cnVjdCBvcGFxdWVDTUZvcm1hdERlc2NyaXB0aW9uKiBDTUZvcm1hdERlc2NyaXB0aW9uUmVm
OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIFdlYkF1ZGlvQnVmZmVyTGlzdDsKIGNs
YXNzIFdlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDOwogCiBjbGFzcyBNb2NrUmVhbHRpbWVB
dWRpb1NvdXJjZU1hYyBmaW5hbCA6IHB1YmxpYyBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZSwgcHVi
bGljIEF1ZGlvQ2FwdHVyZVNvdXJjZVByb3ZpZGVyT2JqQyB7CkBAIC02OCw3ICs2OCw3IEBAIHBy
aXZhdGU6CiAgICAgQXVkaW9Tb3VyY2VQcm92aWRlciogYXVkaW9Tb3VyY2VQcm92aWRlcigpIGZp
bmFsOwogCiAgICAgc2l6ZV90IG1fYXVkaW9CdWZmZXJMaXN0QnVmZmVyU2l6ZSB7IDAgfTsKLSAg
ICBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9CdWZmZXJMaXN0PiBtX2F1ZGlvQnVmZmVyTGlzdDsKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQXVkaW9CdWZmZXJMaXN0PiBtX2F1ZGlvQnVmZmVyTGlzdDsK
IAogICAgIHVpbnQzMl90IG1fbWF4aW1pdW1GcmFtZUNvdW50OwogICAgIHVpbnQzMl90IG1fc2Ft
cGxlUmF0ZSB7IDQ0MTAwIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWMubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWMu
bW0KaW5kZXggYjRmODc0NTM1MjEzNDhkMGY1ZTUyMTBhNjNkMWNhNTE4OTg3ZjA0My4uMmZhZTc1
NmQ5YzUwZGY5OTkxZmMwMjY4MDIxNTZhNzAzOWVlNjdlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFj
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVh
bHRpbWVBdWRpb1NvdXJjZU1hYy5tbQpAQCAtMzgsNiArMzgsNyBAQAogI2ltcG9ydCAiTWVkaWFT
YW1wbGVBVkZPYmpDLmgiCiAjaW1wb3J0ICJOb3RJbXBsZW1lbnRlZC5oIgogI2ltcG9ydCAiUmVh
bHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzLmgiCisjaW1wb3J0ICJXZWJBdWRpb0J1ZmZlckxpc3Qu
aCIKICNpbXBvcnQgIldlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLmgiCiAjaW1wb3J0IDxB
VkZvdW5kYXRpb24vQVZBdWRpb0J1ZmZlci5oPgogI2ltcG9ydCA8QXVkaW9Ub29sYm94L0F1ZGlv
Q29udmVydGVyLmg+CkBAIC0xMDIsNyArMTAzLDcgQEAgdm9pZCBNb2NrUmVhbHRpbWVBdWRpb1Nv
dXJjZU1hYzo6ZW1pdFNhbXBsZUJ1ZmZlcnModWludDMyX3QgZnJhbWVDb3VudCkKICAgICBDTVRp
bWUgc3RhcnRUaW1lID0gQ01UaW1lTWFrZShtX2J5dGVzRW1pdHRlZCwgbV9zYW1wbGVSYXRlKTsK
ICAgICBtX2J5dGVzRW1pdHRlZCArPSBmcmFtZUNvdW50OwogCi0gICAgYXVkaW9TYW1wbGVzQXZh
aWxhYmxlKHRvTWVkaWFUaW1lKHN0YXJ0VGltZSksIG1fYXVkaW9CdWZmZXJMaXN0LT5tQnVmZmVy
c1swXS5tRGF0YSwgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uKG1fc3RyZWFtRm9ybWF0KSwgZnJh
bWVDb3VudCk7CisgICAgYXVkaW9TYW1wbGVzQXZhaWxhYmxlKHRvTWVkaWFUaW1lKHN0YXJ0VGlt
ZSksICptX2F1ZGlvQnVmZmVyTGlzdCwgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uKG1fc3RyZWFt
Rm9ybWF0KSwgZnJhbWVDb3VudCk7CiAKICAgICBDTVNhbXBsZUJ1ZmZlclJlZiBzYW1wbGVCdWZm
ZXI7CiAgICAgT1NTdGF0dXMgcmVzdWx0ID0gQ01BdWRpb1NhbXBsZUJ1ZmZlckNyZWF0ZVdpdGhQ
YWNrZXREZXNjcmlwdGlvbnMobnVsbHB0ciwgbnVsbHB0ciwgdHJ1ZSwgbnVsbHB0ciwgbnVsbHB0
ciwgbV9mb3JtYXREZXNjcmlwdGlvbi5nZXQoKSwgZnJhbWVDb3VudCwgc3RhcnRUaW1lLCBudWxs
cHRyLCAmc2FtcGxlQnVmZmVyKTsKQEAgLTExMyw3ICsxMTQsNyBAQCB2b2lkIE1vY2tSZWFsdGlt
ZUF1ZGlvU291cmNlTWFjOjplbWl0U2FtcGxlQnVmZmVycyh1aW50MzJfdCBmcmFtZUNvdW50KQog
ICAgICAgICByZXR1cm47CiAKICAgICBhdXRvIGJ1ZmZlciA9IGFkb3B0Q0Yoc2FtcGxlQnVmZmVy
KTsKLSAgICByZXN1bHQgPSBDTVNhbXBsZUJ1ZmZlclNldERhdGFCdWZmZXJGcm9tQXVkaW9CdWZm
ZXJMaXN0KHNhbXBsZUJ1ZmZlciwga0NGQWxsb2NhdG9yRGVmYXVsdCwga0NGQWxsb2NhdG9yRGVm
YXVsdCwgMCwgbV9hdWRpb0J1ZmZlckxpc3QuZ2V0KCkpOworICAgIHJlc3VsdCA9IENNU2FtcGxl
QnVmZmVyU2V0RGF0YUJ1ZmZlckZyb21BdWRpb0J1ZmZlckxpc3Qoc2FtcGxlQnVmZmVyLCBrQ0ZB
bGxvY2F0b3JEZWZhdWx0LCBrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwLCBtX2F1ZGlvQnVmZmVyTGlz
dC0+bGlzdCgpKTsKICAgICBBU1NFUlQoIXJlc3VsdCk7CiAKICAgICByZXN1bHQgPSBDTVNhbXBs
ZUJ1ZmZlclNldERhdGFSZWFkeShzYW1wbGVCdWZmZXIpOwpAQCAtMTMwLDE0ICsxMzEsMTQgQEAg
dm9pZCBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1hYzo6cmVjb25maWd1cmUoKQogCiAgICAgY29u
c3QgaW50IGJ5dGVzUGVyRmxvYXQgPSBzaXplb2YoRmxvYXQzMik7CiAgICAgY29uc3QgaW50IGJp
dHNQZXJCeXRlID0gODsKLSAgICBpbnQgY2hhbm5lbENvdW50ID0gMTsKKyAgICBpbnQgY2hhbm5l
bENvdW50ID0gMjsKICAgICBtX3N0cmVhbUZvcm1hdCA9IHsgfTsKICAgICBtX3N0cmVhbUZvcm1h
dC5tU2FtcGxlUmF0ZSA9IG1fc2FtcGxlUmF0ZTsKICAgICBtX3N0cmVhbUZvcm1hdC5tRm9ybWF0
SUQgPSBrQXVkaW9Gb3JtYXRMaW5lYXJQQ007Ci0gICAgbV9zdHJlYW1Gb3JtYXQubUZvcm1hdEZs
YWdzID0ga0F1ZGlvRm9ybWF0RmxhZ3NOYXRpdmVGbG9hdFBhY2tlZDsKLSAgICBtX3N0cmVhbUZv
cm1hdC5tQnl0ZXNQZXJQYWNrZXQgPSBieXRlc1BlckZsb2F0ICogY2hhbm5lbENvdW50OworICAg
IG1fc3RyZWFtRm9ybWF0Lm1Gb3JtYXRGbGFncyA9IGtBdWRpb0Zvcm1hdEZsYWdzTmF0aXZlRmxv
YXRQYWNrZWQgfCBrQXVkaW9Gb3JtYXRGbGFnSXNOb25JbnRlcmxlYXZlZDsKKyAgICBtX3N0cmVh
bUZvcm1hdC5tQnl0ZXNQZXJQYWNrZXQgPSBieXRlc1BlckZsb2F0OwogICAgIG1fc3RyZWFtRm9y
bWF0Lm1GcmFtZXNQZXJQYWNrZXQgPSAxOwotICAgIG1fc3RyZWFtRm9ybWF0Lm1CeXRlc1BlckZy
YW1lID0gYnl0ZXNQZXJGbG9hdCAqIGNoYW5uZWxDb3VudDsKKyAgICBtX3N0cmVhbUZvcm1hdC5t
Qnl0ZXNQZXJGcmFtZSA9IGJ5dGVzUGVyRmxvYXQ7CiAgICAgbV9zdHJlYW1Gb3JtYXQubUNoYW5u
ZWxzUGVyRnJhbWUgPSBjaGFubmVsQ291bnQ7CiAgICAgbV9zdHJlYW1Gb3JtYXQubUJpdHNQZXJD
aGFubmVsID0gYml0c1BlckJ5dGUgKiBieXRlc1BlckZsb2F0OwogCkBAIC0xNTEsMTIgKzE1Miw3
IEBAIHZvaWQgTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWM6OnJlY29uZmlndXJlKCkKICAgICBp
ZiAoYnVmZmVyTGlzdFNpemUgPiBTSVpFX01BWCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9h
dWRpb0J1ZmZlckxpc3RCdWZmZXJTaXplID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihidWZmZXJMaXN0
U2l6ZSk7Ci0gICAgbV9hdWRpb0J1ZmZlckxpc3QgPSBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9CdWZm
ZXJMaXN0PihzdGF0aWNfY2FzdDxBdWRpb0J1ZmZlckxpc3QqPig6Om9wZXJhdG9yIG5ldyAobV9h
dWRpb0J1ZmZlckxpc3RCdWZmZXJTaXplKSkpOwotICAgIG1lbXNldChtX2F1ZGlvQnVmZmVyTGlz
dC5nZXQoKSwgMCwgbV9hdWRpb0J1ZmZlckxpc3RCdWZmZXJTaXplKTsKLQotICAgIHVpbnQ4X3Qq
IGJ1ZmZlckRhdGEgPSByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihtX2F1ZGlvQnVmZmVyTGlz
dC5nZXQoKSkgKyBiYXNlU2l6ZTsKLSAgICBBdWRpb1NhbXBsZUJ1ZmZlckxpc3Q6OmNvbmZpZ3Vy
ZUJ1ZmZlckxpc3RGb3JTdHJlYW0oKm1fYXVkaW9CdWZmZXJMaXN0LmdldCgpLCBtX3N0cmVhbUZv
cm1hdCwgYnVmZmVyRGF0YSwgYnVmZmVyRGF0YVNpemUpOworICAgIG1fYXVkaW9CdWZmZXJMaXN0
ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJBdWRpb0J1ZmZlckxpc3Q+KG1fc3RyZWFtRm9ybWF0LCBt
X3N0cmVhbUZvcm1hdC5tQnl0ZXNQZXJGcmFtZSAqIG1fbWF4aW1pdW1GcmFtZUNvdW50KTsKIAog
ICAgIENNRm9ybWF0RGVzY3JpcHRpb25SZWYgZm9ybWF0RGVzY3JpcHRpb247CiAgICAgQ01BdWRp
b0Zvcm1hdERlc2NyaXB0aW9uQ3JlYXRlKE5VTEwsICZtX3N0cmVhbUZvcm1hdCwgMCwgTlVMTCwg
MCwgTlVMTCwgTlVMTCwgJmZvcm1hdERlc2NyaXB0aW9uKTsKQEAgLTE3OCw0MCArMTc0LDQyIEBA
IHZvaWQgTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWM6OnJlbmRlcihkb3VibGUgZGVsdGEpCiAg
ICAgdWludDMyX3QgdG90YWxGcmFtZUNvdW50ID0gYWxpZ25UbzE2Qnl0ZXMoZGVsdGEgKiBtX3Nh
bXBsZVJhdGUpOwogICAgIHVpbnQzMl90IGZyYW1lQ291bnQgPSBzdGQ6Om1pbih0b3RhbEZyYW1l
Q291bnQsIG1fbWF4aW1pdW1GcmFtZUNvdW50KTsKICAgICBkb3VibGUgZWxhcHNlZCA9IGVsYXBz
ZWRUaW1lKCk7Ci0gICAgd2hpbGUgKGZyYW1lQ291bnQpIHsKLSAgICAgICAgZmxvYXQgKmJ1ZmZl
ciA9IHN0YXRpY19jYXN0PGZsb2F0ICo+KG1fYXVkaW9CdWZmZXJMaXN0LT5tQnVmZmVyc1swXS5t
RGF0YSk7Ci0gICAgICAgIGZvciAodWludDMyX3QgZnJhbWUgPSAwOyBmcmFtZSA8IGZyYW1lQ291
bnQ7ICsrZnJhbWUpIHsKLSAgICAgICAgICAgIGludCBwaGFzZSA9IGZtb2QoZWxhcHNlZCwgMikg
KiAxNTsKLSAgICAgICAgICAgIGRvdWJsZSBpbmNyZW1lbnQgPSAwOwotICAgICAgICAgICAgYm9v
bCBzaWxlbnQgPSB0cnVlOwotCi0gICAgICAgICAgICBzd2l0Y2ggKHBoYXNlKSB7Ci0gICAgICAg
ICAgICBjYXNlIDA6Ci0gICAgICAgICAgICBjYXNlIDE0OiB7Ci0gICAgICAgICAgICAgICAgaW50
IGluZGV4ID0gZm1vZChlbGFwc2VkLCAxKSAqIDI7Ci0gICAgICAgICAgICAgICAgaW5jcmVtZW50
ID0gdGF1ICogZnJlcXVlbmNpZXNbaW5kZXhdIC8gbV9zYW1wbGVSYXRlOwotICAgICAgICAgICAg
ICAgIHNpbGVudCA9IGZhbHNlOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
fQotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgIH0KIAotICAgICAgICAgICAgaWYgKHNpbGVudCkgewotICAgICAgICAgICAgICAgIGJ1ZmZl
cltmcmFtZV0gPSAwOwotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgfQot
Ci0gICAgICAgICAgICBmbG9hdCB0b25lID0gc2luKHRoZXRhKSAqIDAuMjU7Ci0gICAgICAgICAg
ICBidWZmZXJbZnJhbWVdID0gdG9uZTsKKyAgICB3aGlsZSAoZnJhbWVDb3VudCkgeworICAgICAg
ICBmb3IgKGF1dG8mIGF1ZGlvQnVmZmVyIDogbV9hdWRpb0J1ZmZlckxpc3QtPmJ1ZmZlcnMoKSkg
eworICAgICAgICAgICAgYXVkaW9CdWZmZXIubURhdGFCeXRlU2l6ZSA9IGZyYW1lQ291bnQgKiBt
X3N0cmVhbUZvcm1hdC5tQnl0ZXNQZXJGcmFtZTsKKyAgICAgICAgICAgIGZsb2F0ICpidWZmZXIg
PSBzdGF0aWNfY2FzdDxmbG9hdCAqPihhdWRpb0J1ZmZlci5tRGF0YSk7CisgICAgICAgICAgICBm
b3IgKHVpbnQzMl90IGZyYW1lID0gMDsgZnJhbWUgPCBmcmFtZUNvdW50OyArK2ZyYW1lKSB7Cisg
ICAgICAgICAgICAgICAgaW50IHBoYXNlID0gZm1vZChlbGFwc2VkLCAyKSAqIDE1OworICAgICAg
ICAgICAgICAgIGRvdWJsZSBpbmNyZW1lbnQgPSAwOworICAgICAgICAgICAgICAgIGJvb2wgc2ls
ZW50ID0gdHJ1ZTsKKworICAgICAgICAgICAgICAgIHN3aXRjaCAocGhhc2UpIHsKKyAgICAgICAg
ICAgICAgICBjYXNlIDA6CisgICAgICAgICAgICAgICAgY2FzZSAxNDogeworICAgICAgICAgICAg
ICAgICAgICBpbnQgaW5kZXggPSBmbW9kKGVsYXBzZWQsIDEpICogMjsKKyAgICAgICAgICAgICAg
ICAgICAgaW5jcmVtZW50ID0gdGF1ICogZnJlcXVlbmNpZXNbaW5kZXhdIC8gbV9zYW1wbGVSYXRl
OworICAgICAgICAgICAgICAgICAgICBzaWxlbnQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgICAgIGlmIChzaWxlbnQpIHsKKyAgICAgICAgICAgICAgICAgICAgYnVmZmVyW2ZyYW1lXSA9
IDA7CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgICAgIGZsb2F0IHRvbmUgPSBzaW4odGhldGEpICogMC4yNTsKKyAgICAgICAg
ICAgICAgICBidWZmZXJbZnJhbWVdID0gdG9uZTsKIAogICAgICAgICAgICAgICAgIHRoZXRhICs9
IGluY3JlbWVudDsKLSAgICAgICAgICAgIGlmICh0aGV0YSA+IHRhdSkKLSAgICAgICAgICAgICAg
ICB0aGV0YSAtPSB0YXU7Ci0gICAgICAgICAgICBlbGFwc2VkICs9IDEgLyBtX3NhbXBsZVJhdGU7
CisgICAgICAgICAgICAgICAgaWYgKHRoZXRhID4gdGF1KQorICAgICAgICAgICAgICAgICAgICB0
aGV0YSAtPSB0YXU7CisgICAgICAgICAgICAgICAgZWxhcHNlZCArPSAxIC8gbV9zYW1wbGVSYXRl
OworICAgICAgICAgICAgfQogICAgICAgICB9Ci0KLSAgICAgICAgbV9hdWRpb0J1ZmZlckxpc3Qt
Pm1CdWZmZXJzWzBdLm1EYXRhQnl0ZVNpemUgPSBmcmFtZUNvdW50ICogc2l6ZW9mKGZsb2F0KTsK
ICAgICAgICAgZW1pdFNhbXBsZUJ1ZmZlcnMoZnJhbWVDb3VudCk7CiAgICAgICAgIHRvdGFsRnJh
bWVDb3VudCAtPSBmcmFtZUNvdW50OwogICAgICAgICBmcmFtZUNvdW50ID0gc3RkOjptaW4odG90
YWxGcmFtZUNvdW50LCBtX21heGltaXVtRnJhbWVDb3VudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291
cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGlt
ZU91dGdvaW5nQXVkaW9Tb3VyY2UuY3BwCmluZGV4IDNlYmFjMmRmM2Q0ZGU0NDZiMDI0MWNjZTMz
Y2Y0ZTUzMjBjYmQzMmIuLmYxZTllOTljMGE1ZWI0M2NjNGM1NTk2OWZmY2ZjNzRmNzk1M2JlZDkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFs
dGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuY3BwCkBAIC0zNSw3
ICszNSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBSZWFsdGltZU91dGdvaW5n
QXVkaW9Tb3VyY2U6OmF1ZGlvU2FtcGxlc0F2YWlsYWJsZShjb25zdCBNZWRpYVRpbWUmLCB2b2lk
KiwgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYsIHNpemVfdCkKK3ZvaWQgUmVhbHRpbWVP
dXRnb2luZ0F1ZGlvU291cmNlOjphdWRpb1NhbXBsZXNBdmFpbGFibGUoY29uc3QgTWVkaWFUaW1l
JiwgUGxhdGZvcm1BdWRpb0RhdGEmLCBjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiwgc2l6
ZV90KQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRn
b2luZ0F1ZGlvU291cmNlLmgKaW5kZXggNGM0ZTkxOGE4Njg0ZDcxMDQ2YzJhMjJiNzMyYzJlZDhl
YWZjMzNlOC4uZmUxNDEwYzc2ZjZmNjAxYzA2MmVmNzdjZWQ1OTI5OTE4ZjI5YWJmMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0
Z29pbmdBdWRpb1NvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL21hYy9SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuaApAQCAtNjYsNyArNjYsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgc291cmNlTXV0ZWRDaGFuZ2VkKCkgZmluYWwgeyB9CiAgICAgdm9p
ZCBzb3VyY2VTZXR0aW5nc0NoYW5nZWQoKSBmaW5hbCB7IH0KICAgICBib29sIHByZXZlbnRTb3Vy
Y2VGcm9tU3RvcHBpbmcoKSBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZvaWQgYXVkaW9T
YW1wbGVzQXZhaWxhYmxlKGNvbnN0IE1lZGlhVGltZSYsIHZvaWQqLCBjb25zdCBBdWRpb1N0cmVh
bURlc2NyaXB0aW9uJiwgc2l6ZV90KSBmaW5hbDsKKyAgICB2b2lkIGF1ZGlvU2FtcGxlc0F2YWls
YWJsZShjb25zdCBNZWRpYVRpbWUmLCBQbGF0Zm9ybUF1ZGlvRGF0YSYsIGNvbnN0IEF1ZGlvU3Ry
ZWFtRGVzY3JpcHRpb24mLCBzaXplX3QpIGZpbmFsOwogCiAgICAgdm9pZCBjb252ZXJ0QW5kU2Vu
ZE1vbm9TYW1wbGVzKCk7CiAgICAgdm9pZCBjb252ZXJ0QW5kU2VuZFN0ZXJlb1NhbXBsZXMoKTsK
</data>
<flag name="review"
          id="322849"
          type_id="1"
          status="+"
          setter="eric.carlson"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>301014</attachid>
            <date>2017-02-08 21:36:06 -0800</date>
            <delta_ts>2017-02-08 21:38:26 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-168027-20170208213340.patch</filename>
            <type>text/plain</type>
            <size>51405</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjExODkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODEzOTY1MWE1OTFjZDQ3
OGVhMDY4NjlkYjBiY2M4Y2U5ZDZiMDM4MC4uYmExZjRhOTg3NzdiODg4MTMzZTliOWY0MDU3Mzdl
YmE3NzU1ZDZjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY5IEBACisyMDE3LTAyLTA4ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIENvbmZpZ3VyZSBNb2NrUmVh
bHRpbWVBdWRpb1NvdXJjZU1hYyB0byBnZW5lcmF0ZSBzdGVyZW8gYXVkaW8KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2ODAyNworCisgICAgICAgIFJl
dmlld2VkIGJ5IEVyaWMgQ2FybHNvbi4KKworICAgICAgICBVcGRhdGUgTW9ja1JlYWx0aW1lQXVk
aW9Tb3VyY2VNYWMgdG8gZ2VuZXJhdGUgc3RlcmVvIGF1ZGlvLgorCisgICAgICAgIEZpcnN0LCBi
ZWNhdXNlIHRoZSBwYXR0ZXJuIG9mIGNyZWF0aW5nIGEgQXVkaW9CdWZmZXJMaXN0IHN0cnVjdHVy
ZSAod2l0aCBhbGwgaXQncyBxdWlya3MgYW5kCisgICAgICAgIHdlaXJkIHJlcXVpcmVtZW50cykg
d2FzIHJlcGVhdGVkIG11bHRpcGxlIHBsYWNlcywgYWRkIGEgbmV3IHdyYXBwZXIgYXJvdW5kIEFC
TCBjYWxsZWQKKyAgICAgICAgV2ViQXVkaW9CdWZmZXJMaXN0IHdoaWNoIHRha2VzIGNhcmUgb2Yg
Y29ycmVjdGx5IGluaXRpYWxpemluZyB0aGUgQUJMIHN0cnVjdHVyZSBhbmQgbWFuYWdlcworICAg
ICAgICB0aGUgbGlmZXRpbWUgb2YgaXRzIGRhdGEgbWVtYmVycy4KKworICAgICAgICAqIFdlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9Q
bGF0Zm9ybUF1ZGlvRGF0YS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQXVk
aW9EYXRhOjpraW5kKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9XZWJBdWRpb0J1ZmZlckxp
c3QuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldlYkF1ZGlvQnVmZmVyTGlzdDo6V2Vi
QXVkaW9CdWZmZXJMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkF1ZGlvQnVmZmVyTGlzdDo6
YnVmZmVycyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJBdWRpb0J1ZmZlckxpc3Q6OmJ1ZmZlckNv
dW50KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkF1ZGlvQnVmZmVyTGlzdDo6YnVmZmVyKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9hdWRpby9XZWJBdWRpb0J1ZmZlckxpc3QuaDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjpXZWJBdWRpb0J1ZmZlckxpc3Q6Omxpc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViQXVkaW9CdWZmZXJMaXN0OjpvcGVyYXRvciBBdWRpb0J1ZmZlckxpc3QmKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkF1ZGlvQnVmZmVyTGlzdDo6a2luZCk6CisgICAgICAgIChpc1R5cGUp
OgorCisgICAgICAgIFRoZW4gdXBkYXRlIGV4aXN0aW5nIGNvZGUgdG8gd29yayBpbiB0ZXJtcyBv
ZiBXZWJBdWRpb0J1ZmZlckxpc3Q6CisKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9tYWMvQXVk
aW9TYW1wbGVCdWZmZXJMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2FtcGxlQnVm
ZmVyTGlzdDo6QXVkaW9TYW1wbGVCdWZmZXJMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
U2FtcGxlQnVmZmVyTGlzdDo6bWl4RnJvbSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1NhbXBs
ZUJ1ZmZlckxpc3Q6OmNvcHlGcm9tKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2FtcGxlQnVm
ZmVyTGlzdDo6Y29weVRvKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2FtcGxlQnVmZmVyTGlz
dDo6cmVzZXQpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TYW1wbGVCdWZmZXJMaXN0Ojpjb25m
aWd1cmVCdWZmZXJMaXN0Rm9yU3RyZWFtKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9h
dWRpby9tYWMvQXVkaW9TYW1wbGVCdWZmZXJMaXN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpBdWRp
b1NhbXBsZUJ1ZmZlckxpc3Q6OmJ1ZmZlckxpc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlv
L21hYy9BdWRpb1NhbXBsZURhdGFTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9T
YW1wbGVEYXRhU291cmNlOjpwdXNoU2FtcGxlcyk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8v
bWFjL0F1ZGlvU2FtcGxlRGF0YVNvdXJjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3Ry
ZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVN
ZWRpYVNvdXJjZTo6YXVkaW9TYW1wbGVzQXZhaWxhYmxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpSZWFs
dGltZU1lZGlhU291cmNlOjpPYnNlcnZlcjo6YXVkaW9TYW1wbGVzQXZhaWxhYmxlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZBdWRpb0NhcHR1cmVTb3VyY2UuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZBdWRpb0NhcHR1cmVTb3VyY2UubW06
CisgICAgICAgIChXZWJDb3JlOjpBVkF1ZGlvQ2FwdHVyZVNvdXJjZTo6Y2FwdHVyZU91dHB1dERp
ZE91dHB1dFNhbXBsZUJ1ZmZlckZyb21Db25uZWN0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYTo6YXVkaW9T
YW1wbGVzQXZhaWxhYmxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQXVk
aW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6OmF1ZGlvU2FtcGxlc0F2YWlsYWJs
ZSk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdB
dWRpb1NvdXJjZS5oOgorCisgICAgICAgIEZpbmFsbHksIGFjdHVhbGx5IHVwZGF0ZSBNb2NrUmVh
bHRpbWVBdWRpb1NvdXJjZSB0byBlbWl0IHN0ZXJlbyBzYW1wbGVzLiBJbXBvcnRhbnRseSwgc2V0
CisgICAgICAgIHRoZSBjb3JyZWN0IHZhbHVlcyBmb3IgdGhlIG1fc3RyZWFtRm9ybWF0OyBtQnl0
ZXNQZXJGcmFtZSBhbmQgbUJ5dGVzUGVyUGFja2V0IGFyZSBub3QKKyAgICAgICAgbXVsdGlwbGll
ZCBieSB0aGUgY2hhbm5lbENvdW50LiBXaGVuIGdlbmVyYXRpbmcgYXVkaW8sIHdyaXRlIHRvIGJv
dGggY2hhbm5lbHMgb2YgZGF0YS4KKworICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1hYy5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1hYy5tbToKKyAgICAgICAgKFdlYkNv
cmU6Ok1vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFjOjplbWl0U2FtcGxlQnVmZmVycyk6CisgICAg
ICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1hYzo6cmVjb25maWd1cmUpOgor
ICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWM6OnJlbmRlcik6CisK
IDIwMTctMDItMDggIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBTcGxp
dCBKU0RPTUNvbnN0cnVjdG9yLmgvY3BwIHVwIGJ5IGNsYXNzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggOTM2NGUwMWIxZjhlZjBh
MDIxZjI4Y2MzNDgzMmQyNWNhZDRiMzUwNC4uYjdkZDkyMzUwYjkzNTBiNTBjMTNkOWQwYzIxM2U3
NWI1MGMzNzZkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtNTk3MSw2ICs1OTcxLDggQEAKIAkJQ0RFNTk1OTUxQkYxNkRGMzAw
QTFDQkU4IC8qIENETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFNTk1OTMxQkYxNjZBRDAwQTFDQkU4
IC8qIENETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uLm1tICovOyB9OwogCQlDREU1OTU5NzFC
RjI2RTIxMDBBMUNCRTggLyogQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFNTk1OTYxQkYyNkUyMTAw
QTFDQkU4IC8qIENETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakMuaCAqLzsgfTsKIAkJQ0RFNTk1
OUQxQkYyNzU3MTAwQTFDQkU4IC8qIENETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakMubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREU1OTU5QzFCRjI3
NTcxMDBBMUNCRTggLyogQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQy5tbSAqLzsgfTsKKwkJ
Q0RFNjY3QTQxRTRCQkYxNTAwRTgxNTRBIC8qIFdlYkF1ZGlvQnVmZmVyTGlzdC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREU2NjdBMjFFNEJCRjE1
MDBFODE1NEEgLyogV2ViQXVkaW9CdWZmZXJMaXN0LmNwcCAqLzsgfTsKKwkJQ0RFNjY3QTUxRTRC
QkYxNTAwRTgxNTRBIC8qIFdlYkF1ZGlvQnVmZmVyTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFNjY3QTMxRTRCQkYxNTAwRTgxNTRBIC8qIFdl
YkF1ZGlvQnVmZmVyTGlzdC5oICovOyB9OwogCQlDREU3RkM0NDE4MTkwNEIxMDAyQkJCNzcgLyog
T3JkZXJJdGVyYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDREU3RkM0MjE4MTkwNEIxMDAyQkJCNzcgLyogT3JkZXJJdGVyYXRvci5jcHAgKi87
IH07CiAJCUNERTdGQzQ1MTgxOTA0QjEwMDJCQkI3NyAvKiBPcmRlckl0ZXJhdG9yLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREU3RkM0MzE4MTkwNEIx
MDAyQkJCNzcgLyogT3JkZXJJdGVyYXRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCUNERTgzREIxMTgzQzQ0MDYwMDMxRUFBMyAvKiBWaWRlb1Bs
YXliYWNrUXVhbGl0eS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDREU4M0RBRjE4M0M0NDA2MDAzMUVBQTMgLyogVmlkZW9QbGF5YmFja1F1YWxpdHku
Y3BwICovOyB9OwpAQCAtMTQwODcsNiArMTQwODksOSBAQAogCQlDREU1OTU5NjFCRjI2RTIxMDBB
MUNCRTggLyogQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBDRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNERTU5NTlDMUJGMjc1NzEwMEExQ0JFOCAvKiBDRE1TZXNz
aW9uTWVkaWFTb3VyY2VBVkZPYmpDLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQy5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQ0RFNjU2MEUxN0NBNkU3NjAwNTI2QkE3IC8qIG1lZGlhQ29udHJvbHNB
cHBsZS5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IG1lZGlhQ29udHJvbHNBcHBsZS5qczsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RFNjY3QTExRTRCQkE0RDAwRTgxNTRBIC8qIFBs
YXRmb3JtQXVkaW9EYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRm
b3JtQXVkaW9EYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNERTY2N0EyMUU0
QkJGMTUwMEU4MTU0QSAvKiBXZWJBdWRpb0J1ZmZlckxpc3QuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gV2ViQXVkaW9CdWZmZXJMaXN0LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQ0RFNjY3QTMxRTRCQkYxNTAwRTgxNTRBIC8qIFdlYkF1ZGlvQnVm
ZmVyTGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJBdWRpb0J1ZmZl
ckxpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RFN0ZDNDIxODE5MDRCMTAw
MkJCQjc3IC8qIE9yZGVySXRlcmF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gT3JkZXJJdGVyYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUNERTdGQzQzMTgxOTA0QjEwMDJCQkI3NyAvKiBPcmRlckl0ZXJhdG9yLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE9yZGVySXRlcmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQ0RFODNEQUYxODNDNDQwNjAwMzFFQUEzIC8qIFZpZGVvUGxheWJhY2tRdWFs
aXR5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFZpZGVvUGxheWJh
Y2tRdWFsaXR5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIzMTM5LDYgKzIz
MTQ0LDggQEAKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCiAJCQkJQ0Q2NjlE
NjYxRDIzMkRGRjAwNEQxODY2IC8qIE1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5jcHAgKi8sCisJ
CQkJQ0RFNjY3QTIxRTRCQkYxNTAwRTgxNTRBIC8qIFdlYkF1ZGlvQnVmZmVyTGlzdC5jcHAgKi8s
CisJCQkJQ0RFNjY3QTMxRTRCQkYxNTAwRTgxNTRBIC8qIFdlYkF1ZGlvQnVmZmVyTGlzdC5oICov
LAogCQkJKTsKIAkJCW5hbWUgPSBjb2NvYTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBA
IC0yNTA2Nyw2ICsyNTA3NCw3IEBACiAJCQkJRkRCMTcwMDQxNEEyQkFCMjAwQTJCNUQ5IC8qIE11
bHRpQ2hhbm5lbFJlc2FtcGxlci5oICovLAogCQkJCUZEMzE2MDZDMTJCMDI2RjcwMEMxQTM1OSAv
KiBQYW5uZXIuY3BwICovLAogCQkJCUZEMzE2MDZEMTJCMDI2RjcwMEMxQTM1OSAvKiBQYW5uZXIu
aCAqLywKKwkJCQlDREU2NjdBMTFFNEJCQTREMDBFODE1NEEgLyogUGxhdGZvcm1BdWRpb0RhdGEu
aCAqLywKIAkJCQkwNzBFMDkxQTE4NzVFRjcxMDAzQTFEM0MgLyogUGxhdGZvcm1NZWRpYVNlc3Np
b24uY3BwICovLAogCQkJCTA3MEUwOTE4MTg3NUVEOTMwMDNBMUQzQyAvKiBQbGF0Zm9ybU1lZGlh
U2Vzc2lvbi5oICovLAogCQkJCUNEQUU4QzA3MTc0NkI5NTcwMDUzMkQ3OCAvKiBQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbk1hbmFnZXIuY3BwICovLApAQCAtMjcwNjgsNiArMjcwNzYsNyBAQAogCQkJCUUx
N0I0OTIxMTZBOUI4RkYwMDFDODgzOSAvKiBKU1RyYW5zaXRpb25FdmVudC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMUE3NTBENUQwQTkwREVFMTAwMEZGMjE1IC8qIEpTVHJlZVdhbGtlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQTg2NjI5Q0YwOURBMkI0NzAwOTYzM0E1IC8qIEpTVUlFdmVudC5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJQ0RFNjY3QTUxRTRCQkYxNTAwRTgxNTRBIC8qIFdlYkF1ZGlvQnVm
ZmVyTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDY1MzA3RDAxREI2RUU0ODAwRTQxMzdDIC8q
IEpTVUlFdmVudEluaXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDNzNGQjEyMTkxRUY2RjQwMDdE
RTA2MSAvKiBKU1VzZXJNZXNzYWdlSGFuZGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0M3M0ZC
MEQxOTFFRjVBODAwN0RFMDYxIC8qIEpTVXNlck1lc3NhZ2VIYW5kbGVyc05hbWVzcGFjZS5oIGlu
IEhlYWRlcnMgKi8sCkBAIC0zMDQyNSw2ICszMDQzNCw3IEBACiAJCQkJQkM2OTMyNzMwRDdFMjkz
OTAwQUU0NEQxIC8qIEpTRE9NV2luZG93QmFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0Q5
QzI2MjBDMTdBQTY3MDA1QzkwQTIgLyogSlNET01XaW5kb3dDdXN0b20uY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNDYwQ0JGMzUxRDRCQ0QwRTAwOTJFODhFIC8qIEpTRE9NV2luZG93UHJvcGVydGll
cy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDREU2NjdBNDFFNEJCRjE1MDBFODE1NEEgLyogV2Vi
QXVkaW9CdWZmZXJMaXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDQkZCNTNDMERDRDI5Q0Yw
MDE5QjNFNSAvKiBKU0RPTVdpbmRvd1NoZWxsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUExQ0Mx
MTY0MUU0OTNEMDEwMEVGQTY5QyAvKiBGaWxlU3lzdGVtTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNDE3MEEyRUExRDhDMENDQTAwMzE4NDUyIC8qIEpTRE9NV3JhcHBlci5jcHAgaW4gU291cmNl
cyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3Jt
QXVkaW9EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybUF1ZGlv
RGF0YS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmU0NTQ0ZjYzMjU0YTg3ODc2ZDk5ZDhjMzA2MTIwM2FhODE2Nzlk
OTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0
Zm9ybUF1ZGlvRGF0YS5oCkBAIC0wLDAgKzEsNDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBQbGF0Zm9ybUF1ZGlvRGF0YSB7Citw
dWJsaWM6CisgICAgdmlydHVhbCB+UGxhdGZvcm1BdWRpb0RhdGEoKSA9IGRlZmF1bHQ7CisKKyAg
ICBlbnVtIGNsYXNzIEtpbmQgeworICAgICAgICBOb25lLAorICAgICAgICBXZWJBdWRpb0J1ZmZl
ckxpc3QsCisgICAgfTsKKworICAgIHZpcnR1YWwgS2luZCBraW5kKCkgY29uc3QgeyByZXR1cm4g
S2luZDo6Tm9uZTsgfQorCitwcm90ZWN0ZWQ6CisgICAgUGxhdGZvcm1BdWRpb0RhdGEoKSA9IGRl
ZmF1bHQ7Cit9OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9XZWJBdWRpb0J1ZmZlckxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
V2ViQXVkaW9CdWZmZXJMaXN0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wOTM2OThjMzliYzlhNWI2NjY1ZGU2
OTdkMjkxMTgyMjgxYThjYmMwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vV2ViQXVkaW9CdWZmZXJMaXN0LmNwcApAQCAtMCwwICsxLDEwMCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJBdWRpb0J1ZmZlckxp
c3QuaCIKKworI2luY2x1ZGUgIkNBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbi5oIgorI2luY2x1ZGUg
IkNvcmVNZWRpYVNvZnRMaW5rLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworV2ViQXVkaW9C
dWZmZXJMaXN0OjpXZWJBdWRpb0J1ZmZlckxpc3QoY29uc3QgQ0FBdWRpb1N0cmVhbURlc2NyaXB0
aW9uJiBmb3JtYXQpCit7CisgICAgLy8gQXVkaW9CdWZmZXJMaXN0IGlzIGEgdmFyaWFibGUtbGVu
Z3RoIHN0cnVjdCwgc28gY3JlYXRlIG9uIHRoZSBoZWFwIHdpdGggYSBnZW5lcmljIG5ldygpIG9w
ZXJhdG9yCisgICAgLy8gd2l0aCBhIGN1c3RvbSBzaXplLCBhbmQgaW5pdGlhbGl6ZSB0aGUgc3Ry
dWN0IG1hbnVhbGx5LgorICAgIHVpbnQzMl90IGJ1ZmZlckNvdW50ID0gZm9ybWF0Lm51bWJlck9m
Q2hhbm5lbFN0cmVhbXMoKTsKKyAgICB1aW50MzJfdCBjaGFubmVsQ291bnQgPSBmb3JtYXQubnVt
YmVyT2ZJbnRlcmxlYXZlZENoYW5uZWxzKCk7CisKKyAgICB1aW50NjRfdCBidWZmZXJMaXN0U2l6
ZSA9IG9mZnNldG9mKEF1ZGlvQnVmZmVyTGlzdCwgbUJ1ZmZlcnMpICsgKHNpemVvZihBdWRpb0J1
ZmZlcikgKiBzdGQ6Om1heCgxVSwgYnVmZmVyQ291bnQpKTsKKyAgICBBU1NFUlQoYnVmZmVyTGlz
dFNpemUgPD0gU0laRV9NQVgpOworCisgICAgbV9saXN0QnVmZmVyU2l6ZSA9IHN0YXRpY19jYXN0
PHNpemVfdD4oYnVmZmVyTGlzdFNpemUpOworICAgIG1fbGlzdCA9IHN0ZDo6dW5pcXVlX3B0cjxB
dWRpb0J1ZmZlckxpc3Q+KHN0YXRpY19jYXN0PEF1ZGlvQnVmZmVyTGlzdCo+KDo6b3BlcmF0b3Ig
bmV3IChtX2xpc3RCdWZmZXJTaXplKSkpOworICAgIG1lbXNldChtX2xpc3QuZ2V0KCksIDAsIG1f
bGlzdEJ1ZmZlclNpemUpOworICAgIG1fbGlzdC0+bU51bWJlckJ1ZmZlcnMgPSBidWZmZXJDb3Vu
dDsKKyAgICBmb3IgKHVpbnQzMl90IGJ1ZmZlciA9IDA7IGJ1ZmZlciA8IGJ1ZmZlckNvdW50OyAr
K2J1ZmZlcikKKyAgICAgICAgbV9saXN0LT5tQnVmZmVyc1tidWZmZXJdLm1OdW1iZXJDaGFubmVs
cyA9IGNoYW5uZWxDb3VudDsKK30KKworV2ViQXVkaW9CdWZmZXJMaXN0OjpXZWJBdWRpb0J1ZmZl
ckxpc3QoY29uc3QgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiBmb3JtYXQsIHVpbnQzMl90IHNh
bXBsZUNvdW50KQorICAgIDogV2ViQXVkaW9CdWZmZXJMaXN0KGZvcm1hdCkKK3sKKyAgICBpZiAo
IXNhbXBsZUNvdW50KQorICAgICAgICByZXR1cm47CisKKyAgICB1aW50MzJfdCBidWZmZXJDb3Vu
dCA9IGZvcm1hdC5udW1iZXJPZkNoYW5uZWxTdHJlYW1zKCk7CisgICAgdWludDMyX3QgY2hhbm5l
bENvdW50ID0gZm9ybWF0Lm51bWJlck9mSW50ZXJsZWF2ZWRDaGFubmVscygpOworCisgICAgc2l6
ZV90IGJ5dGVzUGVyQnVmZmVyID0gc2FtcGxlQ291bnQgKiBjaGFubmVsQ291bnQgKiBmb3JtYXQu
Ynl0ZXNQZXJGcmFtZSgpOworICAgIG1fZmxhdEJ1ZmZlci5yZXNlcnZlSW5pdGlhbENhcGFjaXR5
KGJ1ZmZlckNvdW50ICogYnl0ZXNQZXJCdWZmZXIpOworICAgIGF1dG8gZGF0YSA9IG1fZmxhdEJ1
ZmZlci5kYXRhKCk7CisKKyAgICBmb3IgKHVpbnQzMl90IGJ1ZmZlciA9IDA7IGJ1ZmZlciA8IG1f
bGlzdC0+bU51bWJlckJ1ZmZlcnM7ICsrYnVmZmVyKSB7CisgICAgICAgIG1fbGlzdC0+bUJ1ZmZl
cnNbYnVmZmVyXS5tRGF0YSA9IGRhdGE7CisgICAgICAgIGRhdGEgKz0gYnl0ZXNQZXJCdWZmZXI7
CisgICAgfQorfQorCitXZWJBdWRpb0J1ZmZlckxpc3Q6OldlYkF1ZGlvQnVmZmVyTGlzdChjb25z
dCBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIGZvcm1hdCwgQ01TYW1wbGVCdWZmZXJSZWYgc2Ft
cGxlQnVmZmVyKQorICAgIDogV2ViQXVkaW9CdWZmZXJMaXN0KGZvcm1hdCkKK3sKKyAgICBpZiAo
IXNhbXBsZUJ1ZmZlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgQ01CbG9ja0J1ZmZlclJlZiBi
dWZmZXIgPSBudWxscHRyOworICAgIGlmIChub0VyciA9PSBDTVNhbXBsZUJ1ZmZlckdldEF1ZGlv
QnVmZmVyTGlzdFdpdGhSZXRhaW5lZEJsb2NrQnVmZmVyKHNhbXBsZUJ1ZmZlciwgbnVsbHB0ciwg
bV9saXN0LmdldCgpLCBtX2xpc3RCdWZmZXJTaXplLCBrQ0ZBbGxvY2F0b3JTeXN0ZW1EZWZhdWx0
LCBrQ0ZBbGxvY2F0b3JTeXN0ZW1EZWZhdWx0LCBrQ01TYW1wbGVCdWZmZXJGbGFnX0F1ZGlvQnVm
ZmVyTGlzdF9Bc3N1cmUxNkJ5dGVBbGlnbm1lbnQsICZidWZmZXIpKQorICAgICAgICBtX2Jsb2Nr
QnVmZmVyID0gYWRvcHRDRihidWZmZXIpOworfQorCitXVEY6Okl0ZXJhdG9yUmFuZ2U8QXVkaW9C
dWZmZXIqPiBXZWJBdWRpb0J1ZmZlckxpc3Q6OmJ1ZmZlcnMoKSBjb25zdAoreworICAgIHJldHVy
biBXVEY6Om1ha2VJdGVyYXRvclJhbmdlKCZtX2xpc3QtPm1CdWZmZXJzWzBdLCAmbV9saXN0LT5t
QnVmZmVyc1ttX2xpc3QtPm1OdW1iZXJCdWZmZXJzXSk7Cit9CisKK3VpbnQzMl90IFdlYkF1ZGlv
QnVmZmVyTGlzdDo6YnVmZmVyQ291bnQoKSBjb25zdAoreworICAgIHJldHVybiBtX2xpc3QtPm1O
dW1iZXJCdWZmZXJzOworfQorCitBdWRpb0J1ZmZlciogV2ViQXVkaW9CdWZmZXJMaXN0OjpidWZm
ZXIodWludDMyX3QgaW5kZXgpIGNvbnN0Cit7CisgICAgQVNTRVJUKGluZGV4IDwgbV9saXN0LT5t
TnVtYmVyQnVmZmVycyk7CisgICAgaWYgKGluZGV4IDwgbV9saXN0LT5tTnVtYmVyQnVmZmVycykK
KyAgICAgICAgcmV0dXJuICZtX2xpc3QtPm1CdWZmZXJzW2luZGV4XTsKKyAgICByZXR1cm4gbnVs
bHB0cjsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
V2ViQXVkaW9CdWZmZXJMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9XZWJB
dWRpb0J1ZmZlckxpc3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYmYzYzEzOWI2MjVlN2I0Yzc5YWY4NDI0MTM4
YjUwNDA3MzE4NWE4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vV2ViQXVkaW9CdWZmZXJMaXN0LmgKQEAgLTAsMCArMSw2OCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiUGxhdGZvcm1BdWRpb0RhdGEuaCIKKyNpbmNsdWRl
IDx3dGYvSXRlcmF0b3JSYW5nZS5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CisKK3N0cnVjdCBBdWRpb0J1ZmZlcjsKK3N0cnVjdCBBdWRpb0J1
ZmZlckxpc3Q7Cit0eXBlZGVmIHN0cnVjdCBPcGFxdWVDTUJsb2NrQnVmZmVyICpDTUJsb2NrQnVm
ZmVyUmVmOwordHlwZWRlZiBzdHJ1Y3Qgb3BhcXVlQ01TYW1wbGVCdWZmZXIgKkNNU2FtcGxlQnVm
ZmVyUmVmOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENBQXVkaW9TdHJlYW1EZXNj
cmlwdGlvbjsKKworY2xhc3MgV2ViQXVkaW9CdWZmZXJMaXN0IDogcHVibGljIFBsYXRmb3JtQXVk
aW9EYXRhIHsKK3B1YmxpYzoKKyAgICBXZWJBdWRpb0J1ZmZlckxpc3QoY29uc3QgQ0FBdWRpb1N0
cmVhbURlc2NyaXB0aW9uJik7CisgICAgV2ViQXVkaW9CdWZmZXJMaXN0KGNvbnN0IENBQXVkaW9T
dHJlYW1EZXNjcmlwdGlvbiYsIHVpbnQzMl90IHNhbXBsZUNvdW50KTsKKyAgICBXZWJBdWRpb0J1
ZmZlckxpc3QoY29uc3QgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiwgQ01TYW1wbGVCdWZmZXJS
ZWYpOworCisgICAgQXVkaW9CdWZmZXJMaXN0KiBsaXN0KCkgY29uc3QgeyByZXR1cm4gbV9saXN0
LmdldCgpOyB9CisgICAgb3BlcmF0b3IgQXVkaW9CdWZmZXJMaXN0JigpIGNvbnN0IHsgcmV0dXJu
ICptX2xpc3Q7IH0KKworICAgIHVpbnQzMl90IGJ1ZmZlckNvdW50KCkgY29uc3Q7CisgICAgQXVk
aW9CdWZmZXIqIGJ1ZmZlcih1aW50MzJfdCBpbmRleCkgY29uc3Q7CisgICAgV1RGOjpJdGVyYXRv
clJhbmdlPEF1ZGlvQnVmZmVyKj4gYnVmZmVycygpIGNvbnN0OworCitwcml2YXRlOgorICAgIEtp
bmQga2luZCgpIGNvbnN0IHsgcmV0dXJuIEtpbmQ6OldlYkF1ZGlvQnVmZmVyTGlzdDsgfQorCisg
ICAgc2l6ZV90IG1fbGlzdEJ1ZmZlclNpemUgeyAwIH07CisgICAgc3RkOjp1bmlxdWVfcHRyPEF1
ZGlvQnVmZmVyTGlzdD4gbV9saXN0OworICAgIFJldGFpblB0cjxDTUJsb2NrQnVmZmVyUmVmPiBt
X2Jsb2NrQnVmZmVyOworICAgIFZlY3Rvcjx1aW50OF90PiBtX2ZsYXRCdWZmZXI7Cit9OworCit9
CisKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6V2ViQXVkaW9CdWZmZXJM
aXN0KQorc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OlBsYXRmb3JtQXVkaW9EYXRh
JiBkYXRhKSB7IHJldHVybiBkYXRhLmtpbmQoKSA9PSBXZWJDb3JlOjpQbGF0Zm9ybUF1ZGlvRGF0
YTo6S2luZDo6V2ViQXVkaW9CdWZmZXJMaXN0OyB9CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VO
RCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9T
YW1wbGVCdWZmZXJMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9B
dWRpb1NhbXBsZUJ1ZmZlckxpc3QuY3BwCmluZGV4IGFmYzcxNGRmMzhiZjEzNTI2ODE5ZDUxNWU5
MTkxMjQ3MDJlNjBmMjguLjBiNTNhMzNkMzk5M2NkMTA1N2E0NzBlMGRjZjMzZThhYzhkMDFiZWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb1NhbXBs
ZUJ1ZmZlckxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9B
dWRpb1NhbXBsZUJ1ZmZlckxpc3QuY3BwCkBAIC00NywyNCArNDcsOSBAQCBBdWRpb1NhbXBsZUJ1
ZmZlckxpc3Q6OkF1ZGlvU2FtcGxlQnVmZmVyTGlzdChjb25zdCBDQUF1ZGlvU3RyZWFtRGVzY3Jp
cHRpb24mIGZvcgogICAgIG1faW50ZXJuYWxGb3JtYXQgPSBzdGQ6Om1ha2VfdW5pcXVlPENBQXVk
aW9TdHJlYW1EZXNjcmlwdGlvbj4oZm9ybWF0KTsKIAogICAgIG1fc2FtcGxlQ2FwYWNpdHkgPSBt
YXhpbXVtU2FtcGxlQ291bnQ7Ci0gICAgbV9zYW1wbGVDb3VudCA9IDA7CiAgICAgbV9tYXhCdWZm
ZXJTaXplUGVyQ2hhbm5lbCA9IG1heGltdW1TYW1wbGVDb3VudCAqIGZvcm1hdC5ieXRlc1BlckZy
YW1lKCkgLyBmb3JtYXQubnVtYmVyT2ZDaGFubmVsU3RyZWFtcygpOwogCiAgICAgQVNTRVJUKGZv
cm1hdC5zYW1wbGVSYXRlKCkgPj0gMCk7Ci0KLSAgICBzaXplX3QgYnVmZmVyU2l6ZSA9IGZvcm1h
dC5udW1iZXJPZkNoYW5uZWxTdHJlYW1zKCkgKiBtX21heEJ1ZmZlclNpemVQZXJDaGFubmVsOwot
ICAgIEFTU0VSVChidWZmZXJTaXplIDw9IFNJWkVfTUFYKTsKLSAgICBpZiAoYnVmZmVyU2l6ZSA+
IFNJWkVfTUFYKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX2J1ZmZlckxpc3RCYXNlU2l6ZSA9
IGF1ZGlvQnVmZmVyTGlzdFNpemVGb3JTdHJlYW0oZm9ybWF0KTsKLSAgICBBU1NFUlQobV9idWZm
ZXJMaXN0QmFzZVNpemUgPD0gU0laRV9NQVgpOwotICAgIGlmIChtX2J1ZmZlckxpc3RCYXNlU2l6
ZSA+IFNJWkVfTUFYKQotICAgICAgICByZXR1cm47Ci0KLSAgICBzaXplX3QgYWxsb2NTaXplID0g
bV9idWZmZXJMaXN0QmFzZVNpemUgKyBidWZmZXJTaXplOwotICAgIG1fYnVmZmVyTGlzdCA9IHN0
ZDo6dW5pcXVlX3B0cjxBdWRpb0J1ZmZlckxpc3Q+KHN0YXRpY19jYXN0PEF1ZGlvQnVmZmVyTGlz
dCo+KDo6b3BlcmF0b3IgbmV3IChhbGxvY1NpemUpKSk7Ci0KICAgICByZXNldCgpOwogfQogCkBA
IC0xMzgsMjkgKzEyMywyOSBAQCBPU1N0YXR1cyBBdWRpb1NhbXBsZUJ1ZmZlckxpc3Q6Om1peEZy
b20oY29uc3QgQXVkaW9TYW1wbGVCdWZmZXJMaXN0JiBzb3VyY2UsIHNpegogCiAgICAgbV9zYW1w
bGVDb3VudCA9IGZyYW1lQ291bnQ7CiAKLSAgICBBdWRpb0J1ZmZlckxpc3QmIHNvdXJjZUJ1ZmZl
ciA9IHNvdXJjZS5idWZmZXJMaXN0KCk7Ci0gICAgZm9yICh1aW50MzJfdCBpID0gMDsgaSA8IG1f
YnVmZmVyTGlzdC0+bU51bWJlckJ1ZmZlcnM7IGkrKykgeworICAgIFdlYkF1ZGlvQnVmZmVyTGlz
dCYgc291cmNlQnVmZmVyID0gc291cmNlLmJ1ZmZlckxpc3QoKTsKKyAgICBmb3IgKHVpbnQzMl90
IGkgPSAwOyBpIDwgbV9idWZmZXJMaXN0LT5idWZmZXJDb3VudCgpOyBpKyspIHsKICAgICAgICAg
c3dpdGNoIChtX2ludGVybmFsRm9ybWF0LT5mb3JtYXQoKSkgewogICAgICAgICBjYXNlIEF1ZGlv
U3RyZWFtRGVzY3JpcHRpb246OkludDE2OiB7Ci0gICAgICAgICAgICBpbnQxNl90KiBkZXN0aW5h
dGlvbiA9IHN0YXRpY19jYXN0PGludDE2X3QqPihtX2J1ZmZlckxpc3QtPm1CdWZmZXJzW2ldLm1E
YXRhKTsKLSAgICAgICAgICAgIGludDE2X3QqIHNvdXJjZSA9IHN0YXRpY19jYXN0PGludDE2X3Qq
Pihzb3VyY2VCdWZmZXIubUJ1ZmZlcnNbaV0ubURhdGEpOworICAgICAgICAgICAgaW50MTZfdCog
ZGVzdGluYXRpb24gPSBzdGF0aWNfY2FzdDxpbnQxNl90Kj4obV9idWZmZXJMaXN0LT5idWZmZXIo
aSktPm1EYXRhKTsKKyAgICAgICAgICAgIGludDE2X3QqIHNvdXJjZSA9IHN0YXRpY19jYXN0PGlu
dDE2X3QqPihzb3VyY2VCdWZmZXIuYnVmZmVyKGkpLT5tRGF0YSk7CiAgICAgICAgICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGZyYW1lQ291bnQ7IGkrKykKICAgICAgICAgICAgICAgICBkZXN0
aW5hdGlvbltpXSArPSBzb3VyY2VbaV07CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQog
ICAgICAgICBjYXNlIEF1ZGlvU3RyZWFtRGVzY3JpcHRpb246OkludDMyOiB7Ci0gICAgICAgICAg
ICBpbnQzMl90KiBkZXN0aW5hdGlvbiA9IHN0YXRpY19jYXN0PGludDMyX3QqPihtX2J1ZmZlckxp
c3QtPm1CdWZmZXJzW2ldLm1EYXRhKTsKLSAgICAgICAgICAgIHZEU1BfdmFkZGkoZGVzdGluYXRp
b24sIDEsIHJlaW50ZXJwcmV0X2Nhc3Q8aW50MzJfdCo+KHNvdXJjZUJ1ZmZlci5tQnVmZmVyc1tp
XS5tRGF0YSksIDEsIGRlc3RpbmF0aW9uLCAxLCBmcmFtZUNvdW50KTsKKyAgICAgICAgICAgIGlu
dDMyX3QqIGRlc3RpbmF0aW9uID0gc3RhdGljX2Nhc3Q8aW50MzJfdCo+KG1fYnVmZmVyTGlzdC0+
YnVmZmVyKGkpLT5tRGF0YSk7CisgICAgICAgICAgICB2RFNQX3ZhZGRpKGRlc3RpbmF0aW9uLCAx
LCByZWludGVycHJldF9jYXN0PGludDMyX3QqPihzb3VyY2VCdWZmZXIuYnVmZmVyKGkpLT5tRGF0
YSksIDEsIGRlc3RpbmF0aW9uLCAxLCBmcmFtZUNvdW50KTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAgICAgICAgIGNhc2UgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbjo6RmxvYXQzMjog
ewotICAgICAgICAgICAgZmxvYXQqIGRlc3RpbmF0aW9uID0gc3RhdGljX2Nhc3Q8ZmxvYXQqPiht
X2J1ZmZlckxpc3QtPm1CdWZmZXJzW2ldLm1EYXRhKTsKLSAgICAgICAgICAgIHZEU1BfdmFkZChk
ZXN0aW5hdGlvbiwgMSwgcmVpbnRlcnByZXRfY2FzdDxmbG9hdCo+KHNvdXJjZUJ1ZmZlci5tQnVm
ZmVyc1tpXS5tRGF0YSksIDEsIGRlc3RpbmF0aW9uLCAxLCBmcmFtZUNvdW50KTsKKyAgICAgICAg
ICAgIGZsb2F0KiBkZXN0aW5hdGlvbiA9IHN0YXRpY19jYXN0PGZsb2F0Kj4obV9idWZmZXJMaXN0
LT5idWZmZXIoaSktPm1EYXRhKTsKKyAgICAgICAgICAgIHZEU1BfdmFkZChkZXN0aW5hdGlvbiwg
MSwgcmVpbnRlcnByZXRfY2FzdDxmbG9hdCo+KHNvdXJjZUJ1ZmZlci5idWZmZXIoaSktPm1EYXRh
KSwgMSwgZGVzdGluYXRpb24sIDEsIGZyYW1lQ291bnQpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KICAgICAgICAgY2FzZSBBdWRpb1N0cmVhbURlc2NyaXB0aW9uOjpGbG9hdDY0OiB7
Ci0gICAgICAgICAgICBkb3VibGUqIGRlc3RpbmF0aW9uID0gc3RhdGljX2Nhc3Q8ZG91YmxlKj4o
bV9idWZmZXJMaXN0LT5tQnVmZmVyc1tpXS5tRGF0YSk7Ci0gICAgICAgICAgICB2RFNQX3ZhZGRE
KGRlc3RpbmF0aW9uLCAxLCByZWludGVycHJldF9jYXN0PGRvdWJsZSo+KHNvdXJjZUJ1ZmZlci5t
QnVmZmVyc1tpXS5tRGF0YSksIDEsIGRlc3RpbmF0aW9uLCAxLCBmcmFtZUNvdW50KTsKKyAgICAg
ICAgICAgIGRvdWJsZSogZGVzdGluYXRpb24gPSBzdGF0aWNfY2FzdDxkb3VibGUqPihtX2J1ZmZl
ckxpc3QtPmJ1ZmZlcihpKS0+bURhdGEpOworICAgICAgICAgICAgdkRTUF92YWRkRChkZXN0aW5h
dGlvbiwgMSwgcmVpbnRlcnByZXRfY2FzdDxkb3VibGUqPihzb3VyY2VCdWZmZXIuYnVmZmVyKGkp
LT5tRGF0YSksIDEsIGRlc3RpbmF0aW9uLCAxLCBmcmFtZUNvdW50KTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbjo6Tm9u
ZToKQEAgLTE4Nyw5ICsxNzIsOSBAQCBPU1N0YXR1cyBBdWRpb1NhbXBsZUJ1ZmZlckxpc3Q6OmNv
cHlGcm9tKGNvbnN0IEF1ZGlvU2FtcGxlQnVmZmVyTGlzdCYgc291cmNlLCBzaQogCiAgICAgbV9z
YW1wbGVDb3VudCA9IGZyYW1lQ291bnQ7CiAKLSAgICBmb3IgKHVpbnQzMl90IGkgPSAwOyBpIDwg
bV9idWZmZXJMaXN0LT5tTnVtYmVyQnVmZmVyczsgaSsrKSB7Ci0gICAgICAgIHVpbnQ4X3QqIHNv
dXJjZURhdGEgPSBzdGF0aWNfY2FzdDx1aW50OF90Kj4oc291cmNlLmJ1ZmZlckxpc3QoKS5tQnVm
ZmVyc1tpXS5tRGF0YSk7Ci0gICAgICAgIHVpbnQ4X3QqIGRlc3RpbmF0aW9uID0gc3RhdGljX2Nh
c3Q8dWludDhfdCo+KG1fYnVmZmVyTGlzdC0+bUJ1ZmZlcnNbaV0ubURhdGEpOworICAgIGZvciAo
dWludDMyX3QgaSA9IDA7IGkgPCBtX2J1ZmZlckxpc3QtPmJ1ZmZlckNvdW50KCk7IGkrKykgewor
ICAgICAgICB1aW50OF90KiBzb3VyY2VEYXRhID0gc3RhdGljX2Nhc3Q8dWludDhfdCo+KHNvdXJj
ZS5idWZmZXJMaXN0KCkuYnVmZmVyKGkpLT5tRGF0YSk7CisgICAgICAgIHVpbnQ4X3QqIGRlc3Rp
bmF0aW9uID0gc3RhdGljX2Nhc3Q8dWludDhfdCo+KG1fYnVmZmVyTGlzdC0+YnVmZmVyKGkpLT5t
RGF0YSk7CiAgICAgICAgIG1lbWNweShkZXN0aW5hdGlvbiwgc291cmNlRGF0YSwgZnJhbWVDb3Vu
dCAqIG1faW50ZXJuYWxGb3JtYXQtPmJ5dGVzUGVyUGFja2V0KCkpOwogICAgIH0KIApAQCAtMjAw
LDExICsxODUsMTEgQEAgT1NTdGF0dXMgQXVkaW9TYW1wbGVCdWZmZXJMaXN0Ojpjb3B5VG8oQXVk
aW9CdWZmZXJMaXN0JiBidWZmZXIsIHNpemVfdCBmcmFtZUNvdW4KIHsKICAgICBpZiAoZnJhbWVD
b3VudCA+IG1fc2FtcGxlQ291bnQpCiAgICAgICAgIHJldHVybiBrQXVkaW9fUGFyYW1FcnJvcjsK
LSAgICBpZiAoYnVmZmVyLm1OdW1iZXJCdWZmZXJzID4gbV9idWZmZXJMaXN0LT5tTnVtYmVyQnVm
ZmVycykKKyAgICBpZiAoYnVmZmVyLm1OdW1iZXJCdWZmZXJzID4gbV9idWZmZXJMaXN0LT5idWZm
ZXJDb3VudCgpKQogICAgICAgICByZXR1cm4ga0F1ZGlvX1BhcmFtRXJyb3I7CiAKICAgICBmb3Ig
KHVpbnQzMl90IGkgPSAwOyBpIDwgYnVmZmVyLm1OdW1iZXJCdWZmZXJzOyBpKyspIHsKLSAgICAg
ICAgdWludDhfdCogc291cmNlRGF0YSA9IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihtX2J1ZmZlckxp
c3QtPm1CdWZmZXJzW2ldLm1EYXRhKTsKKyAgICAgICAgdWludDhfdCogc291cmNlRGF0YSA9IHN0
YXRpY19jYXN0PHVpbnQ4X3QqPihtX2J1ZmZlckxpc3QtPmJ1ZmZlcihpKS0+bURhdGEpOwogICAg
ICAgICB1aW50OF90KiBkZXN0aW5hdGlvbiA9IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihidWZmZXIu
bUJ1ZmZlcnNbaV0ubURhdGEpOwogICAgICAgICBtZW1jcHkoZGVzdGluYXRpb24sIHNvdXJjZURh
dGEsIGZyYW1lQ291bnQgKiBtX2ludGVybmFsRm9ybWF0LT5ieXRlc1BlclBhY2tldCgpKTsKICAg
ICB9CkBAIC0yMTgsMTUgKzIwMyw3IEBAIHZvaWQgQXVkaW9TYW1wbGVCdWZmZXJMaXN0OjpyZXNl
dCgpCiAgICAgbV90aW1lc3RhbXAgPSAwOwogICAgIG1faG9zdFRpbWUgPSAtMTsKIAotICAgIHVp
bnQ4X3QqIGRhdGEgPSByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihtX2J1ZmZlckxpc3QuZ2V0
KCkpICsgbV9idWZmZXJMaXN0QmFzZVNpemU7Ci0gICAgbV9idWZmZXJMaXN0LT5tTnVtYmVyQnVm
ZmVycyA9IG1faW50ZXJuYWxGb3JtYXQtPm51bWJlck9mQ2hhbm5lbFN0cmVhbXMoKTsKLSAgICBm
b3IgKHVpbnQzMl90IGkgPSAwOyBpIDwgbV9idWZmZXJMaXN0LT5tTnVtYmVyQnVmZmVyczsgKytp
KSB7Ci0gICAgICAgIGF1dG8mIGJ1ZmZlciA9IG1fYnVmZmVyTGlzdC0+bUJ1ZmZlcnNbaV07Ci0g
ICAgICAgIGJ1ZmZlci5tRGF0YSA9IGRhdGE7Ci0gICAgICAgIGJ1ZmZlci5tRGF0YUJ5dGVTaXpl
ID0gbV9tYXhCdWZmZXJTaXplUGVyQ2hhbm5lbDsKLSAgICAgICAgYnVmZmVyLm1OdW1iZXJDaGFu
bmVscyA9IG1faW50ZXJuYWxGb3JtYXQtPm51bWJlck9mSW50ZXJsZWF2ZWRDaGFubmVscygpOwot
ICAgICAgICBkYXRhID0gZGF0YSArIG1fbWF4QnVmZmVyU2l6ZVBlckNoYW5uZWw7Ci0gICAgfQor
ICAgIG1fYnVmZmVyTGlzdCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQXVkaW9CdWZmZXJMaXN0Pigq
bV9pbnRlcm5hbEZvcm1hdCwgbV9tYXhCdWZmZXJTaXplUGVyQ2hhbm5lbCk7CiB9CiAKIHZvaWQg
QXVkaW9TYW1wbGVCdWZmZXJMaXN0Ojp6ZXJvKCkKQEAgLTI3NywyMiArMjU0LDIwIEBAIE9TU3Rh
dHVzIEF1ZGlvU2FtcGxlQnVmZmVyTGlzdDo6Y29weUZyb20oQXVkaW9CdWZmZXJMaXN0JiBzb3Vy
Y2UsIEF1ZGlvQ29udmVydGVyCiAgICAgbV9jb252ZXJ0ZXJJbnB1dEJ5dGVzUGVyUGFja2V0ID0g
aW5wdXRGb3JtYXQubUJ5dGVzUGVyUGFja2V0OwogICAgIG1fY29udmVydGVySW5wdXRCdWZmZXIg
PSAmc291cmNlOwogCi0gICAgYXV0byogb3V0cHV0RGF0YSA9IG1fYnVmZmVyTGlzdC5nZXQoKTsK
LQogI2lmICFMT0dfRElTQUJMRUQKICAgICBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24gb3V0
cHV0Rm9ybWF0OwogICAgIHByb3BlcnR5RGF0YVNpemUgPSBzaXplb2Yob3V0cHV0Rm9ybWF0KTsK
ICAgICBBdWRpb0NvbnZlcnRlckdldFByb3BlcnR5KGNvbnZlcnRlciwga0F1ZGlvQ29udmVydGVy
Q3VycmVudE91dHB1dFN0cmVhbURlc2NyaXB0aW9uLCAmcHJvcGVydHlEYXRhU2l6ZSwgJm91dHB1
dEZvcm1hdCk7CiAKLSAgICBBU1NFUlQob3V0cHV0Rm9ybWF0Lm1DaGFubmVsc1BlckZyYW1lID09
IG91dHB1dERhdGEtPm1OdW1iZXJCdWZmZXJzKTsKLSAgICBmb3IgKHVpbnQzMl90IGkgPSAwOyBp
IDwgb3V0cHV0RGF0YS0+bU51bWJlckJ1ZmZlcnM7ICsraSkgewotICAgICAgICBBU1NFUlQob3V0
cHV0RGF0YS0+bUJ1ZmZlcnNbaV0ubURhdGEpOwotICAgICAgICBBU1NFUlQob3V0cHV0RGF0YS0+
bUJ1ZmZlcnNbaV0ubURhdGFCeXRlU2l6ZSk7CisgICAgQVNTRVJUKG91dHB1dEZvcm1hdC5tQ2hh
bm5lbHNQZXJGcmFtZSA9PSBtX2J1ZmZlckxpc3QtPmJ1ZmZlckNvdW50KCkpOworICAgIGZvciAo
dWludDMyX3QgaSA9IDA7IGkgPCBtX2J1ZmZlckxpc3QtPmJ1ZmZlckNvdW50KCk7ICsraSkgewor
ICAgICAgICBBU1NFUlQobV9idWZmZXJMaXN0LT5idWZmZXIoaSktPm1EYXRhKTsKKyAgICAgICAg
QVNTRVJUKG1fYnVmZmVyTGlzdC0+YnVmZmVyKGkpLT5tRGF0YUJ5dGVTaXplKTsKICAgICB9CiAj
ZW5kaWYKIAogICAgIFVJbnQzMiBzYW1wbGVzQ29udmVydGVkID0gc3RhdGljX2Nhc3Q8VUludDMy
PihtX3NhbXBsZUNhcGFjaXR5KTsKLSAgICBPU1N0YXR1cyBlcnIgPSBBdWRpb0NvbnZlcnRlckZp
bGxDb21wbGV4QnVmZmVyKGNvbnZlcnRlciwgYXVkaW9Db252ZXJ0ZXJDYWxsYmFjaywgdGhpcywg
JnNhbXBsZXNDb252ZXJ0ZWQsIG91dHB1dERhdGEsIG51bGxwdHIpOworICAgIE9TU3RhdHVzIGVy
ciA9IEF1ZGlvQ29udmVydGVyRmlsbENvbXBsZXhCdWZmZXIoY29udmVydGVyLCBhdWRpb0NvbnZl
cnRlckNhbGxiYWNrLCB0aGlzLCAmc2FtcGxlc0NvbnZlcnRlZCwgbV9idWZmZXJMaXN0LT5saXN0
KCksIG51bGxwdHIpOwogICAgIGlmIChlcnIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJBdWRpb1Nh
bXBsZUJ1ZmZlckxpc3Q6OmNvcHlGcm9tKCVwKSBBdWRpb0NvbnZlcnRlckZpbGxDb21wbGV4QnVm
ZmVyIHJldHVybmVkIGVycm9yICVkICglLjRzKSIsIHRoaXMsIChpbnQpZXJyLCAoY2hhciopJmVy
cik7CiAgICAgICAgIG1fc2FtcGxlQ291bnQgPSBzdGQ6Om1pbihtX3NhbXBsZUNhcGFjaXR5LCBz
dGF0aWNfY2FzdDxzaXplX3Q+KHNhbXBsZXNDb252ZXJ0ZWQpKTsKQEAgLTMxMiwyOSArMjg3LDEz
IEBAIE9TU3RhdHVzIEF1ZGlvU2FtcGxlQnVmZmVyTGlzdDo6Y29weUZyb20oQXVkaW9TYW1wbGVC
dWZmZXJMaXN0JiBzb3VyY2UsIEF1ZGlvQ29uCiBPU1N0YXR1cyBBdWRpb1NhbXBsZUJ1ZmZlckxp
c3Q6OmNvcHlGcm9tKENBUmluZ0J1ZmZlciYgcmluZ0J1ZmZlciwgc2l6ZV90IHNhbXBsZUNvdW50
LCB1aW50NjRfdCBzdGFydEZyYW1lLCBDQVJpbmdCdWZmZXI6OkZldGNoTW9kZSBtb2RlKQogewog
ICAgIHJlc2V0KCk7Ci0gICAgaWYgKHJpbmdCdWZmZXIuZmV0Y2goJmJ1ZmZlckxpc3QoKSwgc2Ft
cGxlQ291bnQsIHN0YXJ0RnJhbWUsIG1vZGUpICE9IENBUmluZ0J1ZmZlcjo6T2spCisgICAgaWYg
KHJpbmdCdWZmZXIuZmV0Y2goYnVmZmVyTGlzdCgpLmxpc3QoKSwgc2FtcGxlQ291bnQsIHN0YXJ0
RnJhbWUsIG1vZGUpICE9IENBUmluZ0J1ZmZlcjo6T2spCiAgICAgICAgIHJldHVybiBrQXVkaW9f
UGFyYW1FcnJvcjsKIAogICAgIG1fc2FtcGxlQ291bnQgPSBzYW1wbGVDb3VudDsKICAgICByZXR1
cm4gMDsKIH0KIAotdm9pZCBBdWRpb1NhbXBsZUJ1ZmZlckxpc3Q6OmNvbmZpZ3VyZUJ1ZmZlckxp
c3RGb3JTdHJlYW0oQXVkaW9CdWZmZXJMaXN0JiBidWZmZXJMaXN0LCBjb25zdCBDQUF1ZGlvU3Ry
ZWFtRGVzY3JpcHRpb24mIGZvcm1hdCwgdWludDhfdCogYnVmZmVyRGF0YSwgc2l6ZV90IHNhbXBs
ZUNvdW50KQotewotICAgIHNpemVfdCBidWZmZXJDb3VudCA9IGZvcm1hdC5udW1iZXJPZkNoYW5u
ZWxTdHJlYW1zKCk7Ci0gICAgc2l6ZV90IGNoYW5uZWxDb3VudCA9IGZvcm1hdC5udW1iZXJPZklu
dGVybGVhdmVkQ2hhbm5lbHMoKTsKLSAgICBzaXplX3QgYnl0ZXNQZXJDaGFubmVsID0gc2FtcGxl
Q291bnQgKiBmb3JtYXQuYnl0ZXNQZXJGcmFtZSgpOwotCi0gICAgYnVmZmVyTGlzdC5tTnVtYmVy
QnVmZmVycyA9IGJ1ZmZlckNvdW50OwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBidWZm
ZXJDb3VudDsgKytpKSB7Ci0gICAgICAgIGJ1ZmZlckxpc3QubUJ1ZmZlcnNbaV0ubU51bWJlckNo
YW5uZWxzID0gY2hhbm5lbENvdW50OwotICAgICAgICBidWZmZXJMaXN0Lm1CdWZmZXJzW2ldLm1E
YXRhQnl0ZVNpemUgPSBieXRlc1BlckNoYW5uZWw7Ci0gICAgICAgIGJ1ZmZlckxpc3QubUJ1ZmZl
cnNbaV0ubURhdGEgPSBidWZmZXJEYXRhOwotICAgICAgICBpZiAoYnVmZmVyRGF0YSkKLSAgICAg
ICAgICAgIGJ1ZmZlckRhdGEgPSBidWZmZXJEYXRhICsgYnl0ZXNQZXJDaGFubmVsOwotICAgIH0K
LX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NU
UkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRp
b1NhbXBsZUJ1ZmZlckxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9B
dWRpb1NhbXBsZUJ1ZmZlckxpc3QuaAppbmRleCAwZThlMjRjMjMyMDE1NmE4M2E3NTk0Y2Y1ZmJj
NTE5YWE4YmNhMmI0Li5jOTllZTlhZTBkMmY0ZTIxMjVlMDIzMDAxMzAwY2M2NWZkN2I3NDk3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9TYW1wbGVC
dWZmZXJMaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlv
U2FtcGxlQnVmZmVyTGlzdC5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgRU5BQkxFKE1FRElBX1NU
UkVBTSkKIAogI2luY2x1ZGUgIkNBUmluZ0J1ZmZlci5oIgorI2luY2x1ZGUgIldlYkF1ZGlvQnVm
ZmVyTGlzdC5oIgogI2luY2x1ZGUgPENvcmVBdWRpby9Db3JlQXVkaW9UeXBlcy5oPgogI2luY2x1
ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KQEAgLTQ0LDcgKzQ1
LDYgQEAgcHVibGljOgogCiAgICAgfkF1ZGlvU2FtcGxlQnVmZmVyTGlzdCgpOwogCi0gICAgc3Rh
dGljIHZvaWQgY29uZmlndXJlQnVmZmVyTGlzdEZvclN0cmVhbShBdWRpb0J1ZmZlckxpc3QmLCBj
b25zdCBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mLCB1aW50OF90Kiwgc2l6ZV90KTsKICAgICBz
dGF0aWMgaW5saW5lIHNpemVfdCBhdWRpb0J1ZmZlckxpc3RTaXplRm9yU3RyZWFtKGNvbnN0IENB
QXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYpOwogCiAgICAgc3RhdGljIHZvaWQgYXBwbHlHYWluKEF1
ZGlvQnVmZmVyTGlzdCYsIGZsb2F0LCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uOjpQQ01Gb3JtYXQp
OwpAQCAtNjAsNyArNjAsNyBAQCBwdWJsaWM6CiAgICAgT1NTdGF0dXMgY29weVRvKEF1ZGlvQnVm
ZmVyTGlzdCYsIHNpemVfdCBjb3VudCA9IFNJWkVfTUFYKTsKIAogICAgIGNvbnN0IEF1ZGlvU3Ry
ZWFtQmFzaWNEZXNjcmlwdGlvbiYgc3RyZWFtRGVzY3JpcHRpb24oKSBjb25zdCB7IHJldHVybiBt
X2ludGVybmFsRm9ybWF0LT5zdHJlYW1EZXNjcmlwdGlvbigpOyB9Ci0gICAgQXVkaW9CdWZmZXJM
aXN0JiBidWZmZXJMaXN0KCkgY29uc3QgeyByZXR1cm4gKm1fYnVmZmVyTGlzdC5nZXQoKTsgfQor
ICAgIFdlYkF1ZGlvQnVmZmVyTGlzdCYgYnVmZmVyTGlzdCgpIGNvbnN0IHsgcmV0dXJuICptX2J1
ZmZlckxpc3Q7IH0KIAogICAgIHVpbnQzMl90IHNhbXBsZUNhcGFjaXR5KCkgY29uc3QgeyByZXR1
cm4gbV9zYW1wbGVDYXBhY2l0eTsgfQogICAgIHVpbnQzMl90IHNhbXBsZUNvdW50KCkgY29uc3Qg
eyByZXR1cm4gbV9zYW1wbGVDb3VudDsgfQpAQCAtOTMsNyArOTMsNyBAQCBwcm90ZWN0ZWQ6CiAg
ICAgc2l6ZV90IG1fc2FtcGxlQ2FwYWNpdHkgeyAwIH07CiAgICAgc2l6ZV90IG1fbWF4QnVmZmVy
U2l6ZVBlckNoYW5uZWwgeyAwIH07CiAgICAgc2l6ZV90IG1fYnVmZmVyTGlzdEJhc2VTaXplIHsg
MCB9OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0J1ZmZlckxpc3Q+IG1fYnVmZmVyTGlzdDsK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQXVkaW9CdWZmZXJMaXN0PiBtX2J1ZmZlckxpc3Q7CiB9
OwogCiBpbmxpbmUgc2l6ZV90IEF1ZGlvU2FtcGxlQnVmZmVyTGlzdDo6YXVkaW9CdWZmZXJMaXN0
U2l6ZUZvclN0cmVhbShjb25zdCBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIGRlc2NyaXB0aW9u
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2Ft
cGxlRGF0YVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVk
aW9TYW1wbGVEYXRhU291cmNlLmNwcAppbmRleCA3YjYzOTFiYzc4M2Y5ZTg4ZWQ3YTEwOWMyOTcy
NmRlMGJiNTA3YmE2Li45ZjE2MzUyMjRlZmM4MWJjY2UyNTJlYjI4OTIxZDc1ZTM5YzgxNWE1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9TYW1wbGVE
YXRhU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVk
aW9TYW1wbGVEYXRhU291cmNlLmNwcApAQCAtMTUyLDcgKzE1Miw3IEBAIHZvaWQgQXVkaW9TYW1w
bGVEYXRhU291cmNlOjpwdXNoU2FtcGxlc0ludGVybmFsKEF1ZGlvQnVmZmVyTGlzdCYgYnVmZmVy
TGlzdCwgY29uCiAgICAgICAgIGlmIChlcnIpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAg
ICAgc2FtcGxlQnVmZmVyTGlzdCA9ICZtX3NjcmF0Y2hCdWZmZXItPmJ1ZmZlckxpc3QoKTsKKyAg
ICAgICAgc2FtcGxlQnVmZmVyTGlzdCA9IG1fc2NyYXRjaEJ1ZmZlci0+YnVmZmVyTGlzdCgpLmxp
c3QoKTsKICAgICB9IGVsc2UKICAgICAgICAgc2FtcGxlQnVmZmVyTGlzdCA9ICZidWZmZXJMaXN0
OwogCkBAIC0xOTIsMzQgKzE5MiwxNiBAQCB2b2lkIEF1ZGlvU2FtcGxlRGF0YVNvdXJjZTo6cHVz
aFNhbXBsZXMoY29uc3QgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uJiBzYW1wbAogCiAgICAg
QVNTRVJUX1VOVVNFRChzYW1wbGVEZXNjcmlwdGlvbiwgKm1faW5wdXREZXNjcmlwdGlvbiA9PSBz
YW1wbGVEZXNjcmlwdGlvbik7CiAgICAgQVNTRVJUKG1fcmluZ0J1ZmZlcik7Ci0KLSAgICBzaXpl
X3QgYnVmZmVyU2l6ZSA9IEF1ZGlvU2FtcGxlQnVmZmVyTGlzdDo6YXVkaW9CdWZmZXJMaXN0U2l6
ZUZvclN0cmVhbSgqbV9pbnB1dERlc2NyaXB0aW9uLmdldCgpKTsKLSAgICB1aW50OF90IGJ1ZmZl
ckRhdGFbYnVmZmVyU2l6ZV07Ci0gICAgQXVkaW9CdWZmZXJMaXN0KiBidWZmZXJMaXN0ID0gcmVp
bnRlcnByZXRfY2FzdDxBdWRpb0J1ZmZlckxpc3QqPihidWZmZXJEYXRhKTsKLSAgICBidWZmZXJM
aXN0LT5tTnVtYmVyQnVmZmVycyA9IG1faW5wdXREZXNjcmlwdGlvbi0+bnVtYmVyT2ZJbnRlcmxl
YXZlZENoYW5uZWxzKCk7Ci0KLSAgICBDTUJsb2NrQnVmZmVyUmVmIGJ1ZmZlciA9IG51bGxwdHI7
Ci0gICAgT1NTdGF0dXMgZXJyID0gQ01TYW1wbGVCdWZmZXJHZXRBdWRpb0J1ZmZlckxpc3RXaXRo
UmV0YWluZWRCbG9ja0J1ZmZlcihzYW1wbGVCdWZmZXIsIG51bGxwdHIsIGJ1ZmZlckxpc3QsIGJ1
ZmZlclNpemUsIGtDRkFsbG9jYXRvclN5c3RlbURlZmF1bHQsIGtDRkFsbG9jYXRvclN5c3RlbURl
ZmF1bHQsIGtDTVNhbXBsZUJ1ZmZlckZsYWdfQXVkaW9CdWZmZXJMaXN0X0Fzc3VyZTE2Qnl0ZUFs
aWdubWVudCwgJmJ1ZmZlcik7Ci0gICAgaWYgKGVycikgewotICAgICAgICBMT0dfRVJST1IoIkF1
ZGlvU2FtcGxlRGF0YVNvdXJjZTo6cHVzaFNhbXBsZXMoJXApIC0gQ01TYW1wbGVCdWZmZXJHZXRB
dWRpb0J1ZmZlckxpc3RXaXRoUmV0YWluZWRCbG9ja0J1ZmZlciByZXR1cm5lZCBlcnJvciAlZCAo
JS40cykiLCB0aGlzLCAoaW50KWVyciwgKGNoYXIqKSZlcnIpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotCi0gICAgcHVzaFNhbXBsZXNJbnRlcm5hbCgqYnVmZmVyTGlzdCwgdG9NZWRpYVRpbWUo
Q01TYW1wbGVCdWZmZXJHZXRQcmVzZW50YXRpb25UaW1lU3RhbXAoc2FtcGxlQnVmZmVyKSksIENN
U2FtcGxlQnVmZmVyR2V0TnVtU2FtcGxlcyhzYW1wbGVCdWZmZXIpKTsKKyAgICAKKyAgICBXZWJB
dWRpb0J1ZmZlckxpc3QgbGlzdCgqbV9pbnB1dERlc2NyaXB0aW9uLCBzYW1wbGVCdWZmZXIpOwor
ICAgIHB1c2hTYW1wbGVzSW50ZXJuYWwobGlzdCwgdG9NZWRpYVRpbWUoQ01TYW1wbGVCdWZmZXJH
ZXRQcmVzZW50YXRpb25UaW1lU3RhbXAoc2FtcGxlQnVmZmVyKSksIENNU2FtcGxlQnVmZmVyR2V0
TnVtU2FtcGxlcyhzYW1wbGVCdWZmZXIpKTsKIH0KIAotdm9pZCBBdWRpb1NhbXBsZURhdGFTb3Vy
Y2U6OnB1c2hTYW1wbGVzKGNvbnN0IEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiYgc2FtcGxl
RGVzY3JpcHRpb24sIGNvbnN0IE1lZGlhVGltZSYgc2FtcGxlVGltZSwgdm9pZCogYXVkaW9EYXRh
LCBzaXplX3Qgc2FtcGxlQ291bnQpCit2b2lkIEF1ZGlvU2FtcGxlRGF0YVNvdXJjZTo6cHVzaFNh
bXBsZXMoY29uc3QgTWVkaWFUaW1lJiBzYW1wbGVUaW1lLCBQbGF0Zm9ybUF1ZGlvRGF0YSYgYXVk
aW9EYXRhLCBzaXplX3Qgc2FtcGxlQ291bnQpCiB7CiAgICAgc3RkOjp1bmlxdWVfbG9jazxMb2Nr
PiBsb2NrKG1fbG9jaywgc3RkOjp0cnlfdG9fbG9jayk7Ci0gICAgQVNTRVJUKCptX2lucHV0RGVz
Y3JpcHRpb24gPT0gc2FtcGxlRGVzY3JpcHRpb24pOwotCi0gICAgQ0FBdWRpb1N0cmVhbURlc2Ny
aXB0aW9uIGRlc2NyaXB0aW9uKHNhbXBsZURlc2NyaXB0aW9uKTsKLSAgICBzaXplX3QgYnVmZmVy
U2l6ZSA9IEF1ZGlvU2FtcGxlQnVmZmVyTGlzdDo6YXVkaW9CdWZmZXJMaXN0U2l6ZUZvclN0cmVh
bShkZXNjcmlwdGlvbik7Ci0gICAgdWludDhfdCBidWZmZXJEYXRhW2J1ZmZlclNpemVdOwotICAg
IEF1ZGlvQnVmZmVyTGlzdCogYnVmZmVyTGlzdCA9IHJlaW50ZXJwcmV0X2Nhc3Q8QXVkaW9CdWZm
ZXJMaXN0Kj4oYnVmZmVyRGF0YSk7Ci0KLSAgICBBdWRpb1NhbXBsZUJ1ZmZlckxpc3Q6OmNvbmZp
Z3VyZUJ1ZmZlckxpc3RGb3JTdHJlYW0oKmJ1ZmZlckxpc3QsIGRlc2NyaXB0aW9uLCByZWludGVy
cHJldF9jYXN0PHVpbnQ4X3QqPihhdWRpb0RhdGEpLCBzYW1wbGVDb3VudCk7Ci0gICAgcHVzaFNh
bXBsZXNJbnRlcm5hbCgqYnVmZmVyTGlzdCwgc2FtcGxlVGltZSwgc2FtcGxlQ291bnQpOworICAg
IEFTU0VSVChpczxXZWJBdWRpb0J1ZmZlckxpc3Q+KGF1ZGlvRGF0YSkpOworICAgIHB1c2hTYW1w
bGVzSW50ZXJuYWwoZG93bmNhc3Q8V2ViQXVkaW9CdWZmZXJMaXN0PihhdWRpb0RhdGEpLCBzYW1w
bGVUaW1lLCBzYW1wbGVDb3VudCk7CiB9CiAKIGJvb2wgQXVkaW9TYW1wbGVEYXRhU291cmNlOjpw
dWxsU2FtcGxlc0ludGVybmFsKEF1ZGlvQnVmZmVyTGlzdCYgYnVmZmVyLCBzaXplX3QmIHNhbXBs
ZUNvdW50LCB1aW50NjRfdCB0aW1lU3RhbXAsIGRvdWJsZSAvKmhvc3RUaW1lKi8sIFB1bGxNb2Rl
IG1vZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVk
aW9TYW1wbGVEYXRhU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMv
QXVkaW9TYW1wbGVEYXRhU291cmNlLmgKaW5kZXggZGVjZGVlZWZlMmY3MjkzOTMxMjQ4MDJkODU2
MWE3OTdhYjYyMDYzMS4uOWFjMzE0NmQyZmM5YTE3NjNiYTM3ZDUxNGI0YmY1MTZhNWE5ZjM5NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2FtcGxl
RGF0YVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRp
b1NhbXBsZURhdGFTb3VyY2UuaApAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgT1NTdGF0
dXMgc2V0SW5wdXRGb3JtYXQoY29uc3QgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uJik7CiAgICAg
T1NTdGF0dXMgc2V0T3V0cHV0Rm9ybWF0KGNvbnN0IENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYp
OwogCi0gICAgdm9pZCBwdXNoU2FtcGxlcyhjb25zdCBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRp
b24mLCBjb25zdCBNZWRpYVRpbWUmLCB2b2lkKiwgc2l6ZV90KTsKKyAgICB2b2lkIHB1c2hTYW1w
bGVzKGNvbnN0IE1lZGlhVGltZSYsIFBsYXRmb3JtQXVkaW9EYXRhJiwgc2l6ZV90KTsKICAgICB2
b2lkIHB1c2hTYW1wbGVzKGNvbnN0IEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiYsIENNU2Ft
cGxlQnVmZmVyUmVmKTsKIAogICAgIGVudW0gUHVsbE1vZGUgeyBDb3B5LCBNaXggfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFT
b3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVN
ZWRpYVNvdXJjZS5jcHAKaW5kZXggZWJkYWQyNTNiMjI3ZjBlNzBkNzAzNzcyOTFjZjA5NzI4MTY4
ZDFlYS4uN2E4ZDc0MDg1MDI5YjVjMTU0NzYxNzA0MDRiZjBkMjQyN2UxNzQzMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJj
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVN
ZWRpYVNvdXJjZS5jcHAKQEAgLTExOSw3ICsxMTksNyBAQCB2b2lkIFJlYWx0aW1lTWVkaWFTb3Vy
Y2U6OnZpZGVvU2FtcGxlQXZhaWxhYmxlKE1lZGlhU2FtcGxlJiBtZWRpYVNhbXBsZSkKICAgICAg
ICAgb2JzZXJ2ZXItPnZpZGVvU2FtcGxlQXZhaWxhYmxlKG1lZGlhU2FtcGxlKTsKIH0KIAotdm9p
ZCBSZWFsdGltZU1lZGlhU291cmNlOjphdWRpb1NhbXBsZXNBdmFpbGFibGUoY29uc3QgTWVkaWFU
aW1lJiB0aW1lLCB2b2lkKiBhdWRpb0RhdGEsIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24m
IGRlc2NyaXB0aW9uLCBzaXplX3QgbnVtYmVyT2ZGcmFtZXMpCit2b2lkIFJlYWx0aW1lTWVkaWFT
b3VyY2U6OmF1ZGlvU2FtcGxlc0F2YWlsYWJsZShjb25zdCBNZWRpYVRpbWUmIHRpbWUsIFBsYXRm
b3JtQXVkaW9EYXRhJiBhdWRpb0RhdGEsIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIGRl
c2NyaXB0aW9uLCBzaXplX3QgbnVtYmVyT2ZGcmFtZXMpCiB7CiAgICAgZm9yIChjb25zdCBhdXRv
JiBvYnNlcnZlciA6IG1fb2JzZXJ2ZXJzKQogICAgICAgICBvYnNlcnZlci0+YXVkaW9TYW1wbGVz
QXZhaWxhYmxlKHRpbWUsIGF1ZGlvRGF0YSwgZGVzY3JpcHRpb24sIG51bWJlck9mRnJhbWVzKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1l
TWVkaWFTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0
aW1lTWVkaWFTb3VyY2UuaAppbmRleCA4ZmJlNjk0NjFlNWRmZDEzOWIxMTMzN2JmZjVlZWNmMzVl
YmEwYjVkLi4xNTRmODI4ZGY5YzFmZDg4MTc2ZjA2M2M1N2ZjM2E4NmFlZjNjNzIwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291
cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVN
ZWRpYVNvdXJjZS5oCkBAIC01Nyw2ICs1Nyw3IEBAIGNsYXNzIEF1ZGlvU3RyZWFtRGVzY3JpcHRp
b247CiBjbGFzcyBGbG9hdFJlY3Q7CiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CiBjbGFzcyBNZWRp
YVN0cmVhbVByaXZhdGU7CitjbGFzcyBQbGF0Zm9ybUF1ZGlvRGF0YTsKIGNsYXNzIFJlYWx0aW1l
TWVkaWFTb3VyY2VTZXR0aW5nczsKIAogY2xhc3MgUmVhbHRpbWVNZWRpYVNvdXJjZSA6IHB1Ymxp
YyBSZWZDb3VudGVkPFJlYWx0aW1lTWVkaWFTb3VyY2U+IHsKQEAgLTc3LDcgKzc4LDcgQEAgcHVi
bGljOgogICAgICAgICB2aXJ0dWFsIHZvaWQgdmlkZW9TYW1wbGVBdmFpbGFibGUoTWVkaWFTYW1w
bGUmKSB7IH0KIAogICAgICAgICAvLyBNYXkgYmUgY2FsbGVkIG9uIGEgYmFja2dyb3VuZCB0aHJl
YWQuCi0gICAgICAgIHZpcnR1YWwgdm9pZCBhdWRpb1NhbXBsZXNBdmFpbGFibGUoY29uc3QgTWVk
aWFUaW1lJiwgdm9pZCogLyphdWRpb0RhdGEqLywgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlv
biYsIHNpemVfdCAvKm51bWJlck9mRnJhbWVzKi8pIHsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQg
YXVkaW9TYW1wbGVzQXZhaWxhYmxlKGNvbnN0IE1lZGlhVGltZSYsIFBsYXRmb3JtQXVkaW9EYXRh
JiwgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYsIHNpemVfdCAvKm51bWJlck9mRnJhbWVz
Ki8pIHsgfQogICAgIH07CiAKICAgICB2aXJ0dWFsIH5SZWFsdGltZU1lZGlhU291cmNlKCkgeyB9
CkBAIC0xMDksNyArMTEwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXR0aW5nc0Rp
ZENoYW5nZSgpOwogCiAgICAgdm9pZCB2aWRlb1NhbXBsZUF2YWlsYWJsZShNZWRpYVNhbXBsZSYp
OwotICAgIHZvaWQgYXVkaW9TYW1wbGVzQXZhaWxhYmxlKGNvbnN0IE1lZGlhVGltZSYsIHZvaWQq
LCBjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiwgc2l6ZV90KTsKKyAgICB2b2lkIGF1ZGlv
U2FtcGxlc0F2YWlsYWJsZShjb25zdCBNZWRpYVRpbWUmLCBQbGF0Zm9ybUF1ZGlvRGF0YSYsIGNv
bnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mLCBzaXplX3QpOwogICAgIAogICAgIGJvb2wgc3Rv
cHBlZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RvcHBlZDsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZBdWRpb0NhcHR1cmVTb3VyY2UuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkF1ZGlvQ2FwdHVyZVNv
dXJjZS5oCmluZGV4IDZiOWU4NGU0ZmU1ZmY1Njc3NzNjOWQ1ZGViMDg4NzcyODVlYmMwZDAuLjll
NWM4NTY5MTI0NDYxNmZkYzI4MGQwMGU4MTE4YTE2MjdmNDk2NTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkF1ZGlvQ2FwdHVyZVNvdXJjZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkF1ZGlvQ2Fw
dHVyZVNvdXJjZS5oCkBAIC0zOSw2ICszOSw3IEBAIHR5cGVkZWYgY29uc3Qgc3RydWN0IG9wYXF1
ZUNNRm9ybWF0RGVzY3JpcHRpb24gKkNNRm9ybWF0RGVzY3JpcHRpb25SZWY7CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAorY2xhc3MgV2ViQXVkaW9CdWZmZXJMaXN0OwogY2xhc3MgV2ViQXVkaW9T
b3VyY2VQcm92aWRlckFWRk9iakM7CiAKIGNsYXNzIEFWQXVkaW9DYXB0dXJlU291cmNlIDogcHVi
bGljIEFWTWVkaWFDYXB0dXJlU291cmNlLCBwdWJsaWMgQXVkaW9DYXB0dXJlU291cmNlUHJvdmlk
ZXJPYmpDIHsKQEAgLTY2LDggKzY3LDcgQEAgcHJpdmF0ZToKICAgICBBdWRpb1NvdXJjZVByb3Zp
ZGVyKiBhdWRpb1NvdXJjZVByb3ZpZGVyKCkgb3ZlcnJpZGU7CiAKICAgICBSZXRhaW5QdHI8QVZD
YXB0dXJlQ29ubmVjdGlvbj4gbV9hdWRpb0Nvbm5lY3Rpb247Ci0gICAgc2l6ZV90IG1fbGlzdEJ1
ZmZlclNpemUgeyAwIH07Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEF1ZGlvQnVmZmVyTGlzdD4gbV9s
aXN0OworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJBdWRpb0J1ZmZlckxpc3Q+IG1fbGlzdDsKIAog
ICAgIFJlZlB0cjxXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQz4gbV9hdWRpb1NvdXJjZVBy
b3ZpZGVyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24+IG1f
aW5wdXREZXNjcmlwdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9BVkF1ZGlvQ2FwdHVyZVNvdXJjZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkF1ZGlvQ2FwdHVyZVNvdXJjZS5tbQppbmRleCAwMjBm
MjgwODZhOTYzYmE1NDY1YmMyYmM1NzdiNjQwMDdiMDU1MmM1Li4zYTYxM2IwZDY4ZDVhMGQ1NmE1
NDkxMDhlNGE5MDE2NTQxNjI1NDA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9tYWMvQVZBdWRpb0NhcHR1cmVTb3VyY2UubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQXVkaW9DYXB0dXJlU291cmNlLm1tCkBA
IC0xOTMsMTAgKzE5Myw2IEBAIHZvaWQgQVZBdWRpb0NhcHR1cmVTb3VyY2U6OmNhcHR1cmVPdXRw
dXREaWRPdXRwdXRTYW1wbGVCdWZmZXJGcm9tQ29ubmVjdGlvbihBVkNhCiAgICAgY29uc3QgQXVk
aW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uKiBzdHJlYW1EZXNjcmlwdGlvbiA9IENNQXVkaW9Gb3Jt
YXREZXNjcmlwdGlvbkdldFN0cmVhbUJhc2ljRGVzY3JpcHRpb24oZm9ybWF0RGVzY3JpcHRpb24p
OwogICAgIGlmICghbV9pbnB1dERlc2NyaXB0aW9uIHx8ICptX2lucHV0RGVzY3JpcHRpb24gIT0g
KnN0cmVhbURlc2NyaXB0aW9uKSB7CiAgICAgICAgIG1faW5wdXREZXNjcmlwdGlvbiA9IHN0ZDo6
bWFrZV91bmlxdWU8Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uPigqc3RyZWFtRGVzY3JpcHRpb24p
OwotICAgICAgICBtX2xpc3RCdWZmZXJTaXplID0gQXVkaW9TYW1wbGVCdWZmZXJMaXN0OjphdWRp
b0J1ZmZlckxpc3RTaXplRm9yU3RyZWFtKCptX2lucHV0RGVzY3JpcHRpb24uZ2V0KCkpOwotICAg
ICAgICBtX2xpc3QgPSBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9CdWZmZXJMaXN0PihzdGF0aWNfY2Fz
dDxBdWRpb0J1ZmZlckxpc3QqPig6Om9wZXJhdG9yIG5ldyAobV9saXN0QnVmZmVyU2l6ZSkpKTsK
LSAgICAgICAgbWVtc2V0KG1fbGlzdC5nZXQoKSwgMCwgbV9saXN0QnVmZmVyU2l6ZSk7Ci0gICAg
ICAgIG1fbGlzdC0+bU51bWJlckJ1ZmZlcnMgPSBtX2lucHV0RGVzY3JpcHRpb24tPm51bWJlck9m
Q2hhbm5lbFN0cmVhbXMoKTsKIAogICAgICAgICBpZiAoIW1fb2JzZXJ2ZXJzLmlzRW1wdHkoKSkg
ewogICAgICAgICAgICAgZm9yIChhdXRvJiBvYnNlcnZlciA6IG1fb2JzZXJ2ZXJzKQpAQCAtMjA0
LDEzICsyMDAsOCBAQCB2b2lkIEFWQXVkaW9DYXB0dXJlU291cmNlOjpjYXB0dXJlT3V0cHV0RGlk
T3V0cHV0U2FtcGxlQnVmZmVyRnJvbUNvbm5lY3Rpb24oQVZDYQogICAgICAgICB9CiAgICAgfQog
Ci0gICAgQ01JdGVtQ291bnQgZnJhbWVDb3VudCA9IENNU2FtcGxlQnVmZmVyR2V0TnVtU2FtcGxl
cyhzYW1wbGVCdWZmZXIpOwotICAgIENNQmxvY2tCdWZmZXJSZWYgYnVmZmVyID0gbmlsOwotICAg
IE9TU3RhdHVzIGVyciA9IENNU2FtcGxlQnVmZmVyR2V0QXVkaW9CdWZmZXJMaXN0V2l0aFJldGFp
bmVkQmxvY2tCdWZmZXIoc2FtcGxlQnVmZmVyLCBudWxscHRyLCBtX2xpc3QuZ2V0KCksIG1fbGlz
dEJ1ZmZlclNpemUsIGtDRkFsbG9jYXRvclN5c3RlbURlZmF1bHQsIGtDRkFsbG9jYXRvclN5c3Rl
bURlZmF1bHQsIGtDTVNhbXBsZUJ1ZmZlckZsYWdfQXVkaW9CdWZmZXJMaXN0X0Fzc3VyZTE2Qnl0
ZUFsaWdubWVudCwgJmJ1ZmZlcik7Ci0gICAgaWYgKCFlcnIpCi0gICAgICAgIGF1ZGlvU2FtcGxl
c0F2YWlsYWJsZSh0b01lZGlhVGltZShDTVNhbXBsZUJ1ZmZlckdldFByZXNlbnRhdGlvblRpbWVT
dGFtcChzYW1wbGVCdWZmZXIpKSwgbV9saXN0LT5tQnVmZmVyc1swXS5tRGF0YSwgQ0FBdWRpb1N0
cmVhbURlc2NyaXB0aW9uKCpzdHJlYW1EZXNjcmlwdGlvbiksIGZyYW1lQ291bnQpOwotICAgIGVs
c2UKLSAgICAgICAgTE9HX0VSUk9SKCJBVkF1ZGlvQ2FwdHVyZVNvdXJjZTo6Y2FwdHVyZU91dHB1
dERpZE91dHB1dFNhbXBsZUJ1ZmZlckZyb21Db25uZWN0aW9uKCVwKSAtIENNU2FtcGxlQnVmZmVy
R2V0QXVkaW9CdWZmZXJMaXN0V2l0aFJldGFpbmVkQmxvY2tCdWZmZXIgcmV0dXJuZWQgZXJyb3Ig
JWQgKCUuNHMpIiwgdGhpcywgKGludCllcnIsIChjaGFyKikmZXJyKTsKKyAgICBtX2xpc3QgPSBz
dGQ6Om1ha2VfdW5pcXVlPFdlYkF1ZGlvQnVmZmVyTGlzdD4oKm1faW5wdXREZXNjcmlwdGlvbiwg
c2FtcGxlQnVmZmVyKTsKKyAgICBhdWRpb1NhbXBsZXNBdmFpbGFibGUodG9NZWRpYVRpbWUoQ01T
YW1wbGVCdWZmZXJHZXRQcmVzZW50YXRpb25UaW1lU3RhbXAoc2FtcGxlQnVmZmVyKSksICptX2xp
c3QsIENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbigqc3RyZWFtRGVzY3JpcHRpb24pLCBDTVNhbXBs
ZUJ1ZmZlckdldE51bVNhbXBsZXMoc2FtcGxlQnVmZmVyKSk7CiAKICAgICBpZiAobV9vYnNlcnZl
cnMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNv
Y29hLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BdWRpb1Ry
YWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EuY3BwCmluZGV4IDZkNjNiN2VjNDA1OTQ0ZTZmNDJh
MGMxMzY1Y2YyYWNmMzUwMDk5M2MuLmM4MDRjZjAxNmQ1NDg5MjI0MDYzMjA2ZjE1ZjNhYjFjODQ0
ZTE3NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFt
Q29jb2EuY3BwCkBAIC0xNzgsNyArMTc4LDcgQEAgT1NTdGF0dXMgQXVkaW9UcmFja1ByaXZhdGVN
ZWRpYVN0cmVhbUNvY29hOjpzZXR1cEF1ZGlvVW5pdCgpCiAgICAgcmV0dXJuIGVycjsKIH0KIAot
dm9pZCBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2E6OmF1ZGlvU2FtcGxlc0F2YWls
YWJsZShjb25zdCBNZWRpYVRpbWUmIHNhbXBsZVRpbWUsIHZvaWQqIGF1ZGlvRGF0YSwgY29uc3Qg
QXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24sIHNpemVfdCBzYW1wbGVDb3VudCkK
K3ZvaWQgQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hOjphdWRpb1NhbXBsZXNBdmFp
bGFibGUoY29uc3QgTWVkaWFUaW1lJiBzYW1wbGVUaW1lLCBQbGF0Zm9ybUF1ZGlvRGF0YSYgYXVk
aW9EYXRhLCBjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbiwgc2l6ZV90
IHNhbXBsZUNvdW50KQogewogICAgIEFTU0VSVChkZXNjcmlwdGlvbi5wbGF0Zm9ybURlc2NyaXB0
aW9uKCkudHlwZSA9PSBQbGF0Zm9ybURlc2NyaXB0aW9uOjpDQUF1ZGlvU3RyZWFtQmFzaWNUeXBl
KTsKIApAQCAtMjE1LDcgKzIxNSw3IEBAIHZvaWQgQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVh
bUNvY29hOjphdWRpb1NhbXBsZXNBdmFpbGFibGUoY29uc3QgTWVkaWFUaW1lJiBzCiAgICAgICAg
IG1fZGF0YVNvdXJjZS0+c2V0Vm9sdW1lKG1fdm9sdW1lKTsKICAgICB9CiAKLSAgICBtX2RhdGFT
b3VyY2UtPnB1c2hTYW1wbGVzKG1faW5wdXREZXNjcmlwdGlvbi0+c3RyZWFtRGVzY3JpcHRpb24o
KSwgc2FtcGxlVGltZSwgYXVkaW9EYXRhLCBzYW1wbGVDb3VudCk7CisgICAgbV9kYXRhU291cmNl
LT5wdXNoU2FtcGxlcyhzYW1wbGVUaW1lLCBhdWRpb0RhdGEsIHNhbXBsZUNvdW50KTsKIAogICAg
IGlmIChtX2F1dG9QbGF5KQogICAgICAgICBwbGF5SW50ZXJuYWwoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BdWRpb1RyYWNrUHJpdmF0ZU1l
ZGlhU3RyZWFtQ29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EuaAppbmRleCAyN2Y5OWRhOTNlNTg4
MWYyYjNhMzU0YWExZmYzZWI5ZDhkMWMxODQ3Li5iNmU3ZjQxNjFlYWZjOTA5M2FmMTM1MTA2MDU5
ODJjMWYzNTkzMWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFT
dHJlYW1Db2NvYS5oCkBAIC02Niw3ICs2Niw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzb3VyY2VN
dXRlZENoYW5nZWQoKSAgZmluYWwgeyB9CiAgICAgdm9pZCBzb3VyY2VTZXR0aW5nc0NoYW5nZWQo
KSBmaW5hbCB7IH0KICAgICBib29sIHByZXZlbnRTb3VyY2VGcm9tU3RvcHBpbmcoKSBmaW5hbCB7
IHJldHVybiBmYWxzZTsgfQotICAgIHZvaWQgYXVkaW9TYW1wbGVzQXZhaWxhYmxlKGNvbnN0IE1l
ZGlhVGltZSYsIHZvaWQqLCBjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiwgc2l6ZV90KSBm
aW5hbDsKKyAgICB2b2lkIGF1ZGlvU2FtcGxlc0F2YWlsYWJsZShjb25zdCBNZWRpYVRpbWUmLCBQ
bGF0Zm9ybUF1ZGlvRGF0YSYsIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mLCBzaXplX3Qp
IGZpbmFsOwogCiAgICAgc3RhdGljIE9TU3RhdHVzIGlucHV0UHJvYyh2b2lkKiwgQXVkaW9Vbml0
UmVuZGVyQWN0aW9uRmxhZ3MqLCBjb25zdCBBdWRpb1RpbWVTdGFtcCosIFVJbnQzMiBpbkJ1c051
bWJlciwgVUludDMyIG51bWJlck9mRnJhbWVzLCBBdWRpb0J1ZmZlckxpc3QqKTsKICAgICBPU1N0
YXR1cyByZW5kZXIoVUludDMyIHNhbXBsZUNvdW50LCBBdWRpb0J1ZmZlckxpc3QmLCBVSW50MzIg
aW5CdXNOdW1iZXIsIGNvbnN0IEF1ZGlvVGltZVN0YW1wJiwgQXVkaW9Vbml0UmVuZGVyQWN0aW9u
RmxhZ3MmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L21hYy9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1hYy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFjLmgKaW5kZXggMTQz
M2Q3ZDIzMTc3YjZhNTI4ZDY2MGY5Zjc1Y2Q2Mzk0YzE3Mjk1Mi4uOTE1Y2U1ZjQwZjQ1NGViZWU2
MmVkYTE2MjlhZjYzMjY1OTY4MWQ1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFjLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZUF1ZGlvU291
cmNlTWFjLmgKQEAgLTM4LDEyICszOCwxMiBAQAogI2luY2x1ZGUgPENvcmVBdWRpby9Db3JlQXVk
aW9UeXBlcy5oPgogCiBPQkpDX0NMQVNTIEFWQXVkaW9QQ01CdWZmZXI7Ci10eXBlZGVmIHN0cnVj
dCBBdWRpb0J1ZmZlckxpc3QgQXVkaW9CdWZmZXJMaXN0OwogdHlwZWRlZiBzdHJ1Y3QgT3BhcXVl
Q01DbG9jayogQ01DbG9ja1JlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IG9wYXF1ZUNNRm9ybWF0
RGVzY3JpcHRpb24qIENNRm9ybWF0RGVzY3JpcHRpb25SZWY7CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAorY2xhc3MgV2ViQXVkaW9CdWZmZXJMaXN0OwogY2xhc3MgV2ViQXVkaW9Tb3VyY2VQcm92
aWRlckFWRk9iakM7CiAKIGNsYXNzIE1vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFjIGZpbmFsIDog
cHVibGljIE1vY2tSZWFsdGltZUF1ZGlvU291cmNlLCBwdWJsaWMgQXVkaW9DYXB0dXJlU291cmNl
UHJvdmlkZXJPYmpDIHsKQEAgLTY4LDcgKzY4LDcgQEAgcHJpdmF0ZToKICAgICBBdWRpb1NvdXJj
ZVByb3ZpZGVyKiBhdWRpb1NvdXJjZVByb3ZpZGVyKCkgZmluYWw7CiAKICAgICBzaXplX3QgbV9h
dWRpb0J1ZmZlckxpc3RCdWZmZXJTaXplIHsgMCB9OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxBdWRp
b0J1ZmZlckxpc3Q+IG1fYXVkaW9CdWZmZXJMaXN0OworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJB
dWRpb0J1ZmZlckxpc3Q+IG1fYXVkaW9CdWZmZXJMaXN0OwogCiAgICAgdWludDMyX3QgbV9tYXhp
bWl1bUZyYW1lQ291bnQ7CiAgICAgdWludDMyX3QgbV9zYW1wbGVSYXRlIHsgNDQxMDAgfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVh
bHRpbWVBdWRpb1NvdXJjZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL21hYy9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1hYy5tbQppbmRleCBiNGY4NzQ1MzUyMTM0
OGQwZjVlNTIxMGE2M2QxY2E1MTg5ODdmMDQzLi44MmFkYTk0ODJhZDM5OWJmOGI1NjgwNTJkNDFi
OWJlYzE4MTcyMTgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWMubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFjLm1t
CkBAIC0zOCw2ICszOCw3IEBACiAjaW1wb3J0ICJNZWRpYVNhbXBsZUFWRk9iakMuaCIKICNpbXBv
cnQgIk5vdEltcGxlbWVudGVkLmgiCiAjaW1wb3J0ICJSZWFsdGltZU1lZGlhU291cmNlU2V0dGlu
Z3MuaCIKKyNpbXBvcnQgIldlYkF1ZGlvQnVmZmVyTGlzdC5oIgogI2ltcG9ydCAiV2ViQXVkaW9T
b3VyY2VQcm92aWRlckFWRk9iakMuaCIKICNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVkF1ZGlvQnVm
ZmVyLmg+CiAjaW1wb3J0IDxBdWRpb1Rvb2xib3gvQXVkaW9Db252ZXJ0ZXIuaD4KQEAgLTEwMiw3
ICsxMDMsNyBAQCB2b2lkIE1vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFjOjplbWl0U2FtcGxlQnVm
ZmVycyh1aW50MzJfdCBmcmFtZUNvdW50KQogICAgIENNVGltZSBzdGFydFRpbWUgPSBDTVRpbWVN
YWtlKG1fYnl0ZXNFbWl0dGVkLCBtX3NhbXBsZVJhdGUpOwogICAgIG1fYnl0ZXNFbWl0dGVkICs9
IGZyYW1lQ291bnQ7CiAKLSAgICBhdWRpb1NhbXBsZXNBdmFpbGFibGUodG9NZWRpYVRpbWUoc3Rh
cnRUaW1lKSwgbV9hdWRpb0J1ZmZlckxpc3QtPm1CdWZmZXJzWzBdLm1EYXRhLCBDQUF1ZGlvU3Ry
ZWFtRGVzY3JpcHRpb24obV9zdHJlYW1Gb3JtYXQpLCBmcmFtZUNvdW50KTsKKyAgICBhdWRpb1Nh
bXBsZXNBdmFpbGFibGUodG9NZWRpYVRpbWUoc3RhcnRUaW1lKSwgKm1fYXVkaW9CdWZmZXJMaXN0
LCBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24obV9zdHJlYW1Gb3JtYXQpLCBmcmFtZUNvdW50KTsK
IAogICAgIENNU2FtcGxlQnVmZmVyUmVmIHNhbXBsZUJ1ZmZlcjsKICAgICBPU1N0YXR1cyByZXN1
bHQgPSBDTUF1ZGlvU2FtcGxlQnVmZmVyQ3JlYXRlV2l0aFBhY2tldERlc2NyaXB0aW9ucyhudWxs
cHRyLCBudWxscHRyLCB0cnVlLCBudWxscHRyLCBudWxscHRyLCBtX2Zvcm1hdERlc2NyaXB0aW9u
LmdldCgpLCBmcmFtZUNvdW50LCBzdGFydFRpbWUsIG51bGxwdHIsICZzYW1wbGVCdWZmZXIpOwpA
QCAtMTEzLDcgKzExNCw3IEBAIHZvaWQgTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWM6OmVtaXRT
YW1wbGVCdWZmZXJzKHVpbnQzMl90IGZyYW1lQ291bnQpCiAgICAgICAgIHJldHVybjsKIAogICAg
IGF1dG8gYnVmZmVyID0gYWRvcHRDRihzYW1wbGVCdWZmZXIpOwotICAgIHJlc3VsdCA9IENNU2Ft
cGxlQnVmZmVyU2V0RGF0YUJ1ZmZlckZyb21BdWRpb0J1ZmZlckxpc3Qoc2FtcGxlQnVmZmVyLCBr
Q0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwLCBtX2F1ZGlvQnVmZmVy
TGlzdC5nZXQoKSk7CisgICAgcmVzdWx0ID0gQ01TYW1wbGVCdWZmZXJTZXREYXRhQnVmZmVyRnJv
bUF1ZGlvQnVmZmVyTGlzdChzYW1wbGVCdWZmZXIsIGtDRkFsbG9jYXRvckRlZmF1bHQsIGtDRkFs
bG9jYXRvckRlZmF1bHQsIDAsIG1fYXVkaW9CdWZmZXJMaXN0LT5saXN0KCkpOwogICAgIEFTU0VS
VCghcmVzdWx0KTsKIAogICAgIHJlc3VsdCA9IENNU2FtcGxlQnVmZmVyU2V0RGF0YVJlYWR5KHNh
bXBsZUJ1ZmZlcik7CkBAIC0xMzAsMTYgKzEzMSwxMSBAQCB2b2lkIE1vY2tSZWFsdGltZUF1ZGlv
U291cmNlTWFjOjpyZWNvbmZpZ3VyZSgpCiAKICAgICBjb25zdCBpbnQgYnl0ZXNQZXJGbG9hdCA9
IHNpemVvZihGbG9hdDMyKTsKICAgICBjb25zdCBpbnQgYml0c1BlckJ5dGUgPSA4OwotICAgIGlu
dCBjaGFubmVsQ291bnQgPSAxOwotICAgIG1fc3RyZWFtRm9ybWF0ID0geyB9OwotICAgIG1fc3Ry
ZWFtRm9ybWF0Lm1TYW1wbGVSYXRlID0gbV9zYW1wbGVSYXRlOwotICAgIG1fc3RyZWFtRm9ybWF0
Lm1Gb3JtYXRJRCA9IGtBdWRpb0Zvcm1hdExpbmVhclBDTTsKLSAgICBtX3N0cmVhbUZvcm1hdC5t
Rm9ybWF0RmxhZ3MgPSBrQXVkaW9Gb3JtYXRGbGFnc05hdGl2ZUZsb2F0UGFja2VkOwotICAgIG1f
c3RyZWFtRm9ybWF0Lm1CeXRlc1BlclBhY2tldCA9IGJ5dGVzUGVyRmxvYXQgKiBjaGFubmVsQ291
bnQ7Ci0gICAgbV9zdHJlYW1Gb3JtYXQubUZyYW1lc1BlclBhY2tldCA9IDE7Ci0gICAgbV9zdHJl
YW1Gb3JtYXQubUJ5dGVzUGVyRnJhbWUgPSBieXRlc1BlckZsb2F0ICogY2hhbm5lbENvdW50Owot
ICAgIG1fc3RyZWFtRm9ybWF0Lm1DaGFubmVsc1BlckZyYW1lID0gY2hhbm5lbENvdW50OwotICAg
IG1fc3RyZWFtRm9ybWF0Lm1CaXRzUGVyQ2hhbm5lbCA9IGJpdHNQZXJCeXRlICogYnl0ZXNQZXJG
bG9hdDsKKyAgICBjb25zdCBpbnQgY2hhbm5lbENvdW50ID0gMjsKKyAgICBjb25zdCBib29sIGlz
RmxvYXQgPSB0cnVlOworICAgIGNvbnN0IGJvb2wgaXNCaWdFbmRpYW4gPSBmYWxzZTsKKyAgICBj
b25zdCBib29sIGlzTm9uSW50ZXJsZWF2ZWQgPSB0cnVlOworICAgIEZpbGxPdXRBU0JERm9yTFBD
TShtX3N0cmVhbUZvcm1hdCwgbV9zYW1wbGVSYXRlLCBjaGFubmVsQ291bnQsIGJpdHNQZXJCeXRl
ICogYnl0ZXNQZXJGbG9hdCwgYml0c1BlckJ5dGUgKiBieXRlc1BlckZsb2F0LCBpc0Zsb2F0LCBp
c0JpZ0VuZGlhbiwgaXNOb25JbnRlcmxlYXZlZCk7CiAKICAgICAvLyBBdWRpb0J1ZmZlckxpc3Qg
aXMgYSB2YXJpYWJsZS1sZW5ndGggc3RydWN0LCBzbyBjcmVhdGUgb24gdGhlIGhlYXAgd2l0aCBh
IGdlbmVyaWMgbmV3KCkgb3BlcmF0b3IKICAgICAvLyB3aXRoIGEgY3VzdG9tIHNpemUsIGFuZCBp
bml0aWFsaXplIHRoZSBzdHJ1Y3QgbWFudWFsbHkuCkBAIC0xNTEsMTIgKzE0Nyw3IEBAIHZvaWQg
TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWM6OnJlY29uZmlndXJlKCkKICAgICBpZiAoYnVmZmVy
TGlzdFNpemUgPiBTSVpFX01BWCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9hdWRpb0J1ZmZl
ckxpc3RCdWZmZXJTaXplID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihidWZmZXJMaXN0U2l6ZSk7Ci0g
ICAgbV9hdWRpb0J1ZmZlckxpc3QgPSBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9CdWZmZXJMaXN0Pihz
dGF0aWNfY2FzdDxBdWRpb0J1ZmZlckxpc3QqPig6Om9wZXJhdG9yIG5ldyAobV9hdWRpb0J1ZmZl
ckxpc3RCdWZmZXJTaXplKSkpOwotICAgIG1lbXNldChtX2F1ZGlvQnVmZmVyTGlzdC5nZXQoKSwg
MCwgbV9hdWRpb0J1ZmZlckxpc3RCdWZmZXJTaXplKTsKLQotICAgIHVpbnQ4X3QqIGJ1ZmZlckRh
dGEgPSByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihtX2F1ZGlvQnVmZmVyTGlzdC5nZXQoKSkg
KyBiYXNlU2l6ZTsKLSAgICBBdWRpb1NhbXBsZUJ1ZmZlckxpc3Q6OmNvbmZpZ3VyZUJ1ZmZlckxp
c3RGb3JTdHJlYW0oKm1fYXVkaW9CdWZmZXJMaXN0LmdldCgpLCBtX3N0cmVhbUZvcm1hdCwgYnVm
ZmVyRGF0YSwgYnVmZmVyRGF0YVNpemUpOworICAgIG1fYXVkaW9CdWZmZXJMaXN0ID0gc3RkOjpt
YWtlX3VuaXF1ZTxXZWJBdWRpb0J1ZmZlckxpc3Q+KG1fc3RyZWFtRm9ybWF0LCBtX3N0cmVhbUZv
cm1hdC5tQnl0ZXNQZXJGcmFtZSAqIG1fbWF4aW1pdW1GcmFtZUNvdW50KTsKIAogICAgIENNRm9y
bWF0RGVzY3JpcHRpb25SZWYgZm9ybWF0RGVzY3JpcHRpb247CiAgICAgQ01BdWRpb0Zvcm1hdERl
c2NyaXB0aW9uQ3JlYXRlKE5VTEwsICZtX3N0cmVhbUZvcm1hdCwgMCwgTlVMTCwgMCwgTlVMTCwg
TlVMTCwgJmZvcm1hdERlc2NyaXB0aW9uKTsKQEAgLTE3OCw0MCArMTY5LDQyIEBAIHZvaWQgTW9j
a1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWM6OnJlbmRlcihkb3VibGUgZGVsdGEpCiAgICAgdWludDMy
X3QgdG90YWxGcmFtZUNvdW50ID0gYWxpZ25UbzE2Qnl0ZXMoZGVsdGEgKiBtX3NhbXBsZVJhdGUp
OwogICAgIHVpbnQzMl90IGZyYW1lQ291bnQgPSBzdGQ6Om1pbih0b3RhbEZyYW1lQ291bnQsIG1f
bWF4aW1pdW1GcmFtZUNvdW50KTsKICAgICBkb3VibGUgZWxhcHNlZCA9IGVsYXBzZWRUaW1lKCk7
Ci0gICAgd2hpbGUgKGZyYW1lQ291bnQpIHsKLSAgICAgICAgZmxvYXQgKmJ1ZmZlciA9IHN0YXRp
Y19jYXN0PGZsb2F0ICo+KG1fYXVkaW9CdWZmZXJMaXN0LT5tQnVmZmVyc1swXS5tRGF0YSk7Ci0g
ICAgICAgIGZvciAodWludDMyX3QgZnJhbWUgPSAwOyBmcmFtZSA8IGZyYW1lQ291bnQ7ICsrZnJh
bWUpIHsKLSAgICAgICAgICAgIGludCBwaGFzZSA9IGZtb2QoZWxhcHNlZCwgMikgKiAxNTsKLSAg
ICAgICAgICAgIGRvdWJsZSBpbmNyZW1lbnQgPSAwOwotICAgICAgICAgICAgYm9vbCBzaWxlbnQg
PSB0cnVlOwotCi0gICAgICAgICAgICBzd2l0Y2ggKHBoYXNlKSB7Ci0gICAgICAgICAgICBjYXNl
IDA6Ci0gICAgICAgICAgICBjYXNlIDE0OiB7Ci0gICAgICAgICAgICAgICAgaW50IGluZGV4ID0g
Zm1vZChlbGFwc2VkLCAxKSAqIDI7Ci0gICAgICAgICAgICAgICAgaW5jcmVtZW50ID0gdGF1ICog
ZnJlcXVlbmNpZXNbaW5kZXhdIC8gbV9zYW1wbGVSYXRlOwotICAgICAgICAgICAgICAgIHNpbGVu
dCA9IGZhbHNlOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAg
ICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KIAot
ICAgICAgICAgICAgaWYgKHNpbGVudCkgewotICAgICAgICAgICAgICAgIGJ1ZmZlcltmcmFtZV0g
PSAwOwotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgfQotCi0gICAgICAg
ICAgICBmbG9hdCB0b25lID0gc2luKHRoZXRhKSAqIDAuMjU7Ci0gICAgICAgICAgICBidWZmZXJb
ZnJhbWVdID0gdG9uZTsKKyAgICB3aGlsZSAoZnJhbWVDb3VudCkgeworICAgICAgICBmb3IgKGF1
dG8mIGF1ZGlvQnVmZmVyIDogbV9hdWRpb0J1ZmZlckxpc3QtPmJ1ZmZlcnMoKSkgeworICAgICAg
ICAgICAgYXVkaW9CdWZmZXIubURhdGFCeXRlU2l6ZSA9IGZyYW1lQ291bnQgKiBtX3N0cmVhbUZv
cm1hdC5tQnl0ZXNQZXJGcmFtZTsKKyAgICAgICAgICAgIGZsb2F0ICpidWZmZXIgPSBzdGF0aWNf
Y2FzdDxmbG9hdCAqPihhdWRpb0J1ZmZlci5tRGF0YSk7CisgICAgICAgICAgICBmb3IgKHVpbnQz
Ml90IGZyYW1lID0gMDsgZnJhbWUgPCBmcmFtZUNvdW50OyArK2ZyYW1lKSB7CisgICAgICAgICAg
ICAgICAgaW50IHBoYXNlID0gZm1vZChlbGFwc2VkLCAyKSAqIDE1OworICAgICAgICAgICAgICAg
IGRvdWJsZSBpbmNyZW1lbnQgPSAwOworICAgICAgICAgICAgICAgIGJvb2wgc2lsZW50ID0gdHJ1
ZTsKKworICAgICAgICAgICAgICAgIHN3aXRjaCAocGhhc2UpIHsKKyAgICAgICAgICAgICAgICBj
YXNlIDA6CisgICAgICAgICAgICAgICAgY2FzZSAxNDogeworICAgICAgICAgICAgICAgICAgICBp
bnQgaW5kZXggPSBmbW9kKGVsYXBzZWQsIDEpICogMjsKKyAgICAgICAgICAgICAgICAgICAgaW5j
cmVtZW50ID0gdGF1ICogZnJlcXVlbmNpZXNbaW5kZXhdIC8gbV9zYW1wbGVSYXRlOworICAgICAg
ICAgICAgICAgICAgICBzaWxlbnQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlm
IChzaWxlbnQpIHsKKyAgICAgICAgICAgICAgICAgICAgYnVmZmVyW2ZyYW1lXSA9IDA7CisgICAg
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgICAgIGZsb2F0IHRvbmUgPSBzaW4odGhldGEpICogMC4yNTsKKyAgICAgICAgICAgICAgICBi
dWZmZXJbZnJhbWVdID0gdG9uZTsKIAogICAgICAgICAgICAgICAgIHRoZXRhICs9IGluY3JlbWVu
dDsKLSAgICAgICAgICAgIGlmICh0aGV0YSA+IHRhdSkKLSAgICAgICAgICAgICAgICB0aGV0YSAt
PSB0YXU7Ci0gICAgICAgICAgICBlbGFwc2VkICs9IDEgLyBtX3NhbXBsZVJhdGU7CisgICAgICAg
ICAgICAgICAgaWYgKHRoZXRhID4gdGF1KQorICAgICAgICAgICAgICAgICAgICB0aGV0YSAtPSB0
YXU7CisgICAgICAgICAgICAgICAgZWxhcHNlZCArPSAxIC8gbV9zYW1wbGVSYXRlOworICAgICAg
ICAgICAgfQogICAgICAgICB9Ci0KLSAgICAgICAgbV9hdWRpb0J1ZmZlckxpc3QtPm1CdWZmZXJz
WzBdLm1EYXRhQnl0ZVNpemUgPSBmcmFtZUNvdW50ICogc2l6ZW9mKGZsb2F0KTsKICAgICAgICAg
ZW1pdFNhbXBsZUJ1ZmZlcnMoZnJhbWVDb3VudCk7CiAgICAgICAgIHRvdGFsRnJhbWVDb3VudCAt
PSBmcmFtZUNvdW50OwogICAgICAgICBmcmFtZUNvdW50ID0gc3RkOjptaW4odG90YWxGcmFtZUNv
dW50LCBtX21heGltaXVtRnJhbWVDb3VudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5n
QXVkaW9Tb3VyY2UuY3BwCmluZGV4IDNlYmFjMmRmM2Q0ZGU0NDZiMDI0MWNjZTMzY2Y0ZTUzMjBj
YmQzMmIuLmYxZTllOTljMGE1ZWI0M2NjNGM1NTk2OWZmY2ZjNzRmNzk1M2JlZDkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdv
aW5nQXVkaW9Tb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL21hYy9SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuY3BwCkBAIC0zNSw3ICszNSw3IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3Vy
Y2U6OmF1ZGlvU2FtcGxlc0F2YWlsYWJsZShjb25zdCBNZWRpYVRpbWUmLCB2b2lkKiwgY29uc3Qg
QXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYsIHNpemVfdCkKK3ZvaWQgUmVhbHRpbWVPdXRnb2luZ0F1
ZGlvU291cmNlOjphdWRpb1NhbXBsZXNBdmFpbGFibGUoY29uc3QgTWVkaWFUaW1lJiwgUGxhdGZv
cm1BdWRpb0RhdGEmLCBjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiwgc2l6ZV90KQogewog
ICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ0F1ZGlv
U291cmNlLmgKaW5kZXggNGM0ZTkxOGE4Njg0ZDcxMDQ2YzJhMjJiNzMyYzJlZDhlYWZjMzNlOC4u
ZmUxNDEwYzc2ZjZmNjAxYzA2MmVmNzdjZWQ1OTI5OTE4ZjI5YWJmMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdBdWRp
b1NvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9S
ZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuaApAQCAtNjYsNyArNjYsNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgc291cmNlTXV0ZWRDaGFuZ2VkKCkgZmluYWwgeyB9CiAgICAgdm9pZCBzb3VyY2VT
ZXR0aW5nc0NoYW5nZWQoKSBmaW5hbCB7IH0KICAgICBib29sIHByZXZlbnRTb3VyY2VGcm9tU3Rv
cHBpbmcoKSBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZvaWQgYXVkaW9TYW1wbGVzQXZh
aWxhYmxlKGNvbnN0IE1lZGlhVGltZSYsIHZvaWQqLCBjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0
aW9uJiwgc2l6ZV90KSBmaW5hbDsKKyAgICB2b2lkIGF1ZGlvU2FtcGxlc0F2YWlsYWJsZShjb25z
dCBNZWRpYVRpbWUmLCBQbGF0Zm9ybUF1ZGlvRGF0YSYsIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3Jp
cHRpb24mLCBzaXplX3QpIGZpbmFsOwogCiAgICAgdm9pZCBjb252ZXJ0QW5kU2VuZE1vbm9TYW1w
bGVzKCk7CiAgICAgdm9pZCBjb252ZXJ0QW5kU2VuZFN0ZXJlb1NhbXBsZXMoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>301016</attachid>
            <date>2017-02-08 21:38:40 -0800</date>
            <delta_ts>2017-02-09 08:34:39 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-168027-20170208213614.patch</filename>
            <type>text/plain</type>
            <size>51617</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjExODkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODEzOTY1MWE1OTFjZDQ3
OGVhMDY4NjlkYjBiY2M4Y2U5ZDZiMDM4MC4uYmExZjRhOTg3NzdiODg4MTMzZTliOWY0MDU3Mzdl
YmE3NzU1ZDZjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY5IEBACisyMDE3LTAyLTA4ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIENvbmZpZ3VyZSBNb2NrUmVh
bHRpbWVBdWRpb1NvdXJjZU1hYyB0byBnZW5lcmF0ZSBzdGVyZW8gYXVkaW8KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2ODAyNworCisgICAgICAgIFJl
dmlld2VkIGJ5IEVyaWMgQ2FybHNvbi4KKworICAgICAgICBVcGRhdGUgTW9ja1JlYWx0aW1lQXVk
aW9Tb3VyY2VNYWMgdG8gZ2VuZXJhdGUgc3RlcmVvIGF1ZGlvLgorCisgICAgICAgIEZpcnN0LCBi
ZWNhdXNlIHRoZSBwYXR0ZXJuIG9mIGNyZWF0aW5nIGEgQXVkaW9CdWZmZXJMaXN0IHN0cnVjdHVy
ZSAod2l0aCBhbGwgaXQncyBxdWlya3MgYW5kCisgICAgICAgIHdlaXJkIHJlcXVpcmVtZW50cykg
d2FzIHJlcGVhdGVkIG11bHRpcGxlIHBsYWNlcywgYWRkIGEgbmV3IHdyYXBwZXIgYXJvdW5kIEFC
TCBjYWxsZWQKKyAgICAgICAgV2ViQXVkaW9CdWZmZXJMaXN0IHdoaWNoIHRha2VzIGNhcmUgb2Yg
Y29ycmVjdGx5IGluaXRpYWxpemluZyB0aGUgQUJMIHN0cnVjdHVyZSBhbmQgbWFuYWdlcworICAg
ICAgICB0aGUgbGlmZXRpbWUgb2YgaXRzIGRhdGEgbWVtYmVycy4KKworICAgICAgICAqIFdlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9Q
bGF0Zm9ybUF1ZGlvRGF0YS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQXVk
aW9EYXRhOjpraW5kKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9XZWJBdWRpb0J1ZmZlckxp
c3QuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldlYkF1ZGlvQnVmZmVyTGlzdDo6V2Vi
QXVkaW9CdWZmZXJMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkF1ZGlvQnVmZmVyTGlzdDo6
YnVmZmVycyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJBdWRpb0J1ZmZlckxpc3Q6OmJ1ZmZlckNv
dW50KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkF1ZGlvQnVmZmVyTGlzdDo6YnVmZmVyKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9hdWRpby9XZWJBdWRpb0J1ZmZlckxpc3QuaDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjpXZWJBdWRpb0J1ZmZlckxpc3Q6Omxpc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViQXVkaW9CdWZmZXJMaXN0OjpvcGVyYXRvciBBdWRpb0J1ZmZlckxpc3QmKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkF1ZGlvQnVmZmVyTGlzdDo6a2luZCk6CisgICAgICAgIChpc1R5cGUp
OgorCisgICAgICAgIFRoZW4gdXBkYXRlIGV4aXN0aW5nIGNvZGUgdG8gd29yayBpbiB0ZXJtcyBv
ZiBXZWJBdWRpb0J1ZmZlckxpc3Q6CisKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9tYWMvQXVk
aW9TYW1wbGVCdWZmZXJMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2FtcGxlQnVm
ZmVyTGlzdDo6QXVkaW9TYW1wbGVCdWZmZXJMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
U2FtcGxlQnVmZmVyTGlzdDo6bWl4RnJvbSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1NhbXBs
ZUJ1ZmZlckxpc3Q6OmNvcHlGcm9tKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2FtcGxlQnVm
ZmVyTGlzdDo6Y29weVRvKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2FtcGxlQnVmZmVyTGlz
dDo6cmVzZXQpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TYW1wbGVCdWZmZXJMaXN0Ojpjb25m
aWd1cmVCdWZmZXJMaXN0Rm9yU3RyZWFtKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9h
dWRpby9tYWMvQXVkaW9TYW1wbGVCdWZmZXJMaXN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpBdWRp
b1NhbXBsZUJ1ZmZlckxpc3Q6OmJ1ZmZlckxpc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlv
L21hYy9BdWRpb1NhbXBsZURhdGFTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9T
YW1wbGVEYXRhU291cmNlOjpwdXNoU2FtcGxlcyk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8v
bWFjL0F1ZGlvU2FtcGxlRGF0YVNvdXJjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3Ry
ZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVN
ZWRpYVNvdXJjZTo6YXVkaW9TYW1wbGVzQXZhaWxhYmxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpSZWFs
dGltZU1lZGlhU291cmNlOjpPYnNlcnZlcjo6YXVkaW9TYW1wbGVzQXZhaWxhYmxlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZBdWRpb0NhcHR1cmVTb3VyY2UuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZBdWRpb0NhcHR1cmVTb3VyY2UubW06
CisgICAgICAgIChXZWJDb3JlOjpBVkF1ZGlvQ2FwdHVyZVNvdXJjZTo6Y2FwdHVyZU91dHB1dERp
ZE91dHB1dFNhbXBsZUJ1ZmZlckZyb21Db25uZWN0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYTo6YXVkaW9T
YW1wbGVzQXZhaWxhYmxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQXVk
aW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6OmF1ZGlvU2FtcGxlc0F2YWlsYWJs
ZSk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdB
dWRpb1NvdXJjZS5oOgorCisgICAgICAgIEZpbmFsbHksIGFjdHVhbGx5IHVwZGF0ZSBNb2NrUmVh
bHRpbWVBdWRpb1NvdXJjZSB0byBlbWl0IHN0ZXJlbyBzYW1wbGVzLiBJbXBvcnRhbnRseSwgc2V0
CisgICAgICAgIHRoZSBjb3JyZWN0IHZhbHVlcyBmb3IgdGhlIG1fc3RyZWFtRm9ybWF0OyBtQnl0
ZXNQZXJGcmFtZSBhbmQgbUJ5dGVzUGVyUGFja2V0IGFyZSBub3QKKyAgICAgICAgbXVsdGlwbGll
ZCBieSB0aGUgY2hhbm5lbENvdW50LiBXaGVuIGdlbmVyYXRpbmcgYXVkaW8sIHdyaXRlIHRvIGJv
dGggY2hhbm5lbHMgb2YgZGF0YS4KKworICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1hYy5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1hYy5tbToKKyAgICAgICAgKFdlYkNv
cmU6Ok1vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFjOjplbWl0U2FtcGxlQnVmZmVycyk6CisgICAg
ICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1hYzo6cmVjb25maWd1cmUpOgor
ICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWM6OnJlbmRlcik6CisK
IDIwMTctMDItMDggIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBTcGxp
dCBKU0RPTUNvbnN0cnVjdG9yLmgvY3BwIHVwIGJ5IGNsYXNzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggOTM2NGUwMWIxZjhlZjBh
MDIxZjI4Y2MzNDgzMmQyNWNhZDRiMzUwNC4uYjdkZDkyMzUwYjkzNTBiNTBjMTNkOWQwYzIxM2U3
NWI1MGMzNzZkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtNTk3MSw2ICs1OTcxLDggQEAKIAkJQ0RFNTk1OTUxQkYxNkRGMzAw
QTFDQkU4IC8qIENETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFNTk1OTMxQkYxNjZBRDAwQTFDQkU4
IC8qIENETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uLm1tICovOyB9OwogCQlDREU1OTU5NzFC
RjI2RTIxMDBBMUNCRTggLyogQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFNTk1OTYxQkYyNkUyMTAw
QTFDQkU4IC8qIENETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakMuaCAqLzsgfTsKIAkJQ0RFNTk1
OUQxQkYyNzU3MTAwQTFDQkU4IC8qIENETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakMubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREU1OTU5QzFCRjI3
NTcxMDBBMUNCRTggLyogQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQy5tbSAqLzsgfTsKKwkJ
Q0RFNjY3QTQxRTRCQkYxNTAwRTgxNTRBIC8qIFdlYkF1ZGlvQnVmZmVyTGlzdC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREU2NjdBMjFFNEJCRjE1
MDBFODE1NEEgLyogV2ViQXVkaW9CdWZmZXJMaXN0LmNwcCAqLzsgfTsKKwkJQ0RFNjY3QTUxRTRC
QkYxNTAwRTgxNTRBIC8qIFdlYkF1ZGlvQnVmZmVyTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFNjY3QTMxRTRCQkYxNTAwRTgxNTRBIC8qIFdl
YkF1ZGlvQnVmZmVyTGlzdC5oICovOyB9OwogCQlDREU3RkM0NDE4MTkwNEIxMDAyQkJCNzcgLyog
T3JkZXJJdGVyYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDREU3RkM0MjE4MTkwNEIxMDAyQkJCNzcgLyogT3JkZXJJdGVyYXRvci5jcHAgKi87
IH07CiAJCUNERTdGQzQ1MTgxOTA0QjEwMDJCQkI3NyAvKiBPcmRlckl0ZXJhdG9yLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREU3RkM0MzE4MTkwNEIx
MDAyQkJCNzcgLyogT3JkZXJJdGVyYXRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCUNERTgzREIxMTgzQzQ0MDYwMDMxRUFBMyAvKiBWaWRlb1Bs
YXliYWNrUXVhbGl0eS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDREU4M0RBRjE4M0M0NDA2MDAzMUVBQTMgLyogVmlkZW9QbGF5YmFja1F1YWxpdHku
Y3BwICovOyB9OwpAQCAtMTQwODcsNiArMTQwODksOSBAQAogCQlDREU1OTU5NjFCRjI2RTIxMDBB
MUNCRTggLyogQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBDRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNERTU5NTlDMUJGMjc1NzEwMEExQ0JFOCAvKiBDRE1TZXNz
aW9uTWVkaWFTb3VyY2VBVkZPYmpDLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQy5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQ0RFNjU2MEUxN0NBNkU3NjAwNTI2QkE3IC8qIG1lZGlhQ29udHJvbHNB
cHBsZS5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IG1lZGlhQ29udHJvbHNBcHBsZS5qczsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RFNjY3QTExRTRCQkE0RDAwRTgxNTRBIC8qIFBs
YXRmb3JtQXVkaW9EYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRm
b3JtQXVkaW9EYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNERTY2N0EyMUU0
QkJGMTUwMEU4MTU0QSAvKiBXZWJBdWRpb0J1ZmZlckxpc3QuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gV2ViQXVkaW9CdWZmZXJMaXN0LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQ0RFNjY3QTMxRTRCQkYxNTAwRTgxNTRBIC8qIFdlYkF1ZGlvQnVm
ZmVyTGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJBdWRpb0J1ZmZl
ckxpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RFN0ZDNDIxODE5MDRCMTAw
MkJCQjc3IC8qIE9yZGVySXRlcmF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gT3JkZXJJdGVyYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUNERTdGQzQzMTgxOTA0QjEwMDJCQkI3NyAvKiBPcmRlckl0ZXJhdG9yLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE9yZGVySXRlcmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQ0RFODNEQUYxODNDNDQwNjAwMzFFQUEzIC8qIFZpZGVvUGxheWJhY2tRdWFs
aXR5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFZpZGVvUGxheWJh
Y2tRdWFsaXR5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIzMTM5LDYgKzIz
MTQ0LDggQEAKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCiAJCQkJQ0Q2NjlE
NjYxRDIzMkRGRjAwNEQxODY2IC8qIE1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5jcHAgKi8sCisJ
CQkJQ0RFNjY3QTIxRTRCQkYxNTAwRTgxNTRBIC8qIFdlYkF1ZGlvQnVmZmVyTGlzdC5jcHAgKi8s
CisJCQkJQ0RFNjY3QTMxRTRCQkYxNTAwRTgxNTRBIC8qIFdlYkF1ZGlvQnVmZmVyTGlzdC5oICov
LAogCQkJKTsKIAkJCW5hbWUgPSBjb2NvYTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBA
IC0yNTA2Nyw2ICsyNTA3NCw3IEBACiAJCQkJRkRCMTcwMDQxNEEyQkFCMjAwQTJCNUQ5IC8qIE11
bHRpQ2hhbm5lbFJlc2FtcGxlci5oICovLAogCQkJCUZEMzE2MDZDMTJCMDI2RjcwMEMxQTM1OSAv
KiBQYW5uZXIuY3BwICovLAogCQkJCUZEMzE2MDZEMTJCMDI2RjcwMEMxQTM1OSAvKiBQYW5uZXIu
aCAqLywKKwkJCQlDREU2NjdBMTFFNEJCQTREMDBFODE1NEEgLyogUGxhdGZvcm1BdWRpb0RhdGEu
aCAqLywKIAkJCQkwNzBFMDkxQTE4NzVFRjcxMDAzQTFEM0MgLyogUGxhdGZvcm1NZWRpYVNlc3Np
b24uY3BwICovLAogCQkJCTA3MEUwOTE4MTg3NUVEOTMwMDNBMUQzQyAvKiBQbGF0Zm9ybU1lZGlh
U2Vzc2lvbi5oICovLAogCQkJCUNEQUU4QzA3MTc0NkI5NTcwMDUzMkQ3OCAvKiBQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbk1hbmFnZXIuY3BwICovLApAQCAtMjcwNjgsNiArMjcwNzYsNyBAQAogCQkJCUUx
N0I0OTIxMTZBOUI4RkYwMDFDODgzOSAvKiBKU1RyYW5zaXRpb25FdmVudC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMUE3NTBENUQwQTkwREVFMTAwMEZGMjE1IC8qIEpTVHJlZVdhbGtlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQTg2NjI5Q0YwOURBMkI0NzAwOTYzM0E1IC8qIEpTVUlFdmVudC5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJQ0RFNjY3QTUxRTRCQkYxNTAwRTgxNTRBIC8qIFdlYkF1ZGlvQnVm
ZmVyTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDY1MzA3RDAxREI2RUU0ODAwRTQxMzdDIC8q
IEpTVUlFdmVudEluaXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDNzNGQjEyMTkxRUY2RjQwMDdE
RTA2MSAvKiBKU1VzZXJNZXNzYWdlSGFuZGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0M3M0ZC
MEQxOTFFRjVBODAwN0RFMDYxIC8qIEpTVXNlck1lc3NhZ2VIYW5kbGVyc05hbWVzcGFjZS5oIGlu
IEhlYWRlcnMgKi8sCkBAIC0zMDQyNSw2ICszMDQzNCw3IEBACiAJCQkJQkM2OTMyNzMwRDdFMjkz
OTAwQUU0NEQxIC8qIEpTRE9NV2luZG93QmFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0Q5
QzI2MjBDMTdBQTY3MDA1QzkwQTIgLyogSlNET01XaW5kb3dDdXN0b20uY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNDYwQ0JGMzUxRDRCQ0QwRTAwOTJFODhFIC8qIEpTRE9NV2luZG93UHJvcGVydGll
cy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDREU2NjdBNDFFNEJCRjE1MDBFODE1NEEgLyogV2Vi
QXVkaW9CdWZmZXJMaXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDQkZCNTNDMERDRDI5Q0Yw
MDE5QjNFNSAvKiBKU0RPTVdpbmRvd1NoZWxsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUExQ0Mx
MTY0MUU0OTNEMDEwMEVGQTY5QyAvKiBGaWxlU3lzdGVtTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNDE3MEEyRUExRDhDMENDQTAwMzE4NDUyIC8qIEpTRE9NV3JhcHBlci5jcHAgaW4gU291cmNl
cyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3Jt
QXVkaW9EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybUF1ZGlv
RGF0YS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmU0NTQ0ZjYzMjU0YTg3ODc2ZDk5ZDhjMzA2MTIwM2FhODE2Nzlk
OTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0
Zm9ybUF1ZGlvRGF0YS5oCkBAIC0wLDAgKzEsNDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBQbGF0Zm9ybUF1ZGlvRGF0YSB7Citw
dWJsaWM6CisgICAgdmlydHVhbCB+UGxhdGZvcm1BdWRpb0RhdGEoKSA9IGRlZmF1bHQ7CisKKyAg
ICBlbnVtIGNsYXNzIEtpbmQgeworICAgICAgICBOb25lLAorICAgICAgICBXZWJBdWRpb0J1ZmZl
ckxpc3QsCisgICAgfTsKKworICAgIHZpcnR1YWwgS2luZCBraW5kKCkgY29uc3QgeyByZXR1cm4g
S2luZDo6Tm9uZTsgfQorCitwcm90ZWN0ZWQ6CisgICAgUGxhdGZvcm1BdWRpb0RhdGEoKSA9IGRl
ZmF1bHQ7Cit9OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9XZWJBdWRpb0J1ZmZlckxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
V2ViQXVkaW9CdWZmZXJMaXN0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wOTM2OThjMzliYzlhNWI2NjY1ZGU2
OTdkMjkxMTgyMjgxYThjYmMwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vV2ViQXVkaW9CdWZmZXJMaXN0LmNwcApAQCAtMCwwICsxLDEwMCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJBdWRpb0J1ZmZlckxp
c3QuaCIKKworI2luY2x1ZGUgIkNBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbi5oIgorI2luY2x1ZGUg
IkNvcmVNZWRpYVNvZnRMaW5rLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworV2ViQXVkaW9C
dWZmZXJMaXN0OjpXZWJBdWRpb0J1ZmZlckxpc3QoY29uc3QgQ0FBdWRpb1N0cmVhbURlc2NyaXB0
aW9uJiBmb3JtYXQpCit7CisgICAgLy8gQXVkaW9CdWZmZXJMaXN0IGlzIGEgdmFyaWFibGUtbGVu
Z3RoIHN0cnVjdCwgc28gY3JlYXRlIG9uIHRoZSBoZWFwIHdpdGggYSBnZW5lcmljIG5ldygpIG9w
ZXJhdG9yCisgICAgLy8gd2l0aCBhIGN1c3RvbSBzaXplLCBhbmQgaW5pdGlhbGl6ZSB0aGUgc3Ry
dWN0IG1hbnVhbGx5LgorICAgIHVpbnQzMl90IGJ1ZmZlckNvdW50ID0gZm9ybWF0Lm51bWJlck9m
Q2hhbm5lbFN0cmVhbXMoKTsKKyAgICB1aW50MzJfdCBjaGFubmVsQ291bnQgPSBmb3JtYXQubnVt
YmVyT2ZJbnRlcmxlYXZlZENoYW5uZWxzKCk7CisKKyAgICB1aW50NjRfdCBidWZmZXJMaXN0U2l6
ZSA9IG9mZnNldG9mKEF1ZGlvQnVmZmVyTGlzdCwgbUJ1ZmZlcnMpICsgKHNpemVvZihBdWRpb0J1
ZmZlcikgKiBzdGQ6Om1heCgxVSwgYnVmZmVyQ291bnQpKTsKKyAgICBBU1NFUlQoYnVmZmVyTGlz
dFNpemUgPD0gU0laRV9NQVgpOworCisgICAgbV9saXN0QnVmZmVyU2l6ZSA9IHN0YXRpY19jYXN0
PHNpemVfdD4oYnVmZmVyTGlzdFNpemUpOworICAgIG1fbGlzdCA9IHN0ZDo6dW5pcXVlX3B0cjxB
dWRpb0J1ZmZlckxpc3Q+KHN0YXRpY19jYXN0PEF1ZGlvQnVmZmVyTGlzdCo+KDo6b3BlcmF0b3Ig
bmV3IChtX2xpc3RCdWZmZXJTaXplKSkpOworICAgIG1lbXNldChtX2xpc3QuZ2V0KCksIDAsIG1f
bGlzdEJ1ZmZlclNpemUpOworICAgIG1fbGlzdC0+bU51bWJlckJ1ZmZlcnMgPSBidWZmZXJDb3Vu
dDsKKyAgICBmb3IgKHVpbnQzMl90IGJ1ZmZlciA9IDA7IGJ1ZmZlciA8IGJ1ZmZlckNvdW50OyAr
K2J1ZmZlcikKKyAgICAgICAgbV9saXN0LT5tQnVmZmVyc1tidWZmZXJdLm1OdW1iZXJDaGFubmVs
cyA9IGNoYW5uZWxDb3VudDsKK30KKworV2ViQXVkaW9CdWZmZXJMaXN0OjpXZWJBdWRpb0J1ZmZl
ckxpc3QoY29uc3QgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiBmb3JtYXQsIHVpbnQzMl90IHNh
bXBsZUNvdW50KQorICAgIDogV2ViQXVkaW9CdWZmZXJMaXN0KGZvcm1hdCkKK3sKKyAgICBpZiAo
IXNhbXBsZUNvdW50KQorICAgICAgICByZXR1cm47CisKKyAgICB1aW50MzJfdCBidWZmZXJDb3Vu
dCA9IGZvcm1hdC5udW1iZXJPZkNoYW5uZWxTdHJlYW1zKCk7CisgICAgdWludDMyX3QgY2hhbm5l
bENvdW50ID0gZm9ybWF0Lm51bWJlck9mSW50ZXJsZWF2ZWRDaGFubmVscygpOworCisgICAgc2l6
ZV90IGJ5dGVzUGVyQnVmZmVyID0gc2FtcGxlQ291bnQgKiBjaGFubmVsQ291bnQgKiBmb3JtYXQu
Ynl0ZXNQZXJGcmFtZSgpOworICAgIG1fZmxhdEJ1ZmZlci5yZXNlcnZlSW5pdGlhbENhcGFjaXR5
KGJ1ZmZlckNvdW50ICogYnl0ZXNQZXJCdWZmZXIpOworICAgIGF1dG8gZGF0YSA9IG1fZmxhdEJ1
ZmZlci5kYXRhKCk7CisKKyAgICBmb3IgKHVpbnQzMl90IGJ1ZmZlciA9IDA7IGJ1ZmZlciA8IG1f
bGlzdC0+bU51bWJlckJ1ZmZlcnM7ICsrYnVmZmVyKSB7CisgICAgICAgIG1fbGlzdC0+bUJ1ZmZl
cnNbYnVmZmVyXS5tRGF0YSA9IGRhdGE7CisgICAgICAgIGRhdGEgKz0gYnl0ZXNQZXJCdWZmZXI7
CisgICAgfQorfQorCitXZWJBdWRpb0J1ZmZlckxpc3Q6OldlYkF1ZGlvQnVmZmVyTGlzdChjb25z
dCBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIGZvcm1hdCwgQ01TYW1wbGVCdWZmZXJSZWYgc2Ft
cGxlQnVmZmVyKQorICAgIDogV2ViQXVkaW9CdWZmZXJMaXN0KGZvcm1hdCkKK3sKKyAgICBpZiAo
IXNhbXBsZUJ1ZmZlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgQ01CbG9ja0J1ZmZlclJlZiBi
dWZmZXIgPSBudWxscHRyOworICAgIGlmIChub0VyciA9PSBDTVNhbXBsZUJ1ZmZlckdldEF1ZGlv
QnVmZmVyTGlzdFdpdGhSZXRhaW5lZEJsb2NrQnVmZmVyKHNhbXBsZUJ1ZmZlciwgbnVsbHB0ciwg
bV9saXN0LmdldCgpLCBtX2xpc3RCdWZmZXJTaXplLCBrQ0ZBbGxvY2F0b3JTeXN0ZW1EZWZhdWx0
LCBrQ0ZBbGxvY2F0b3JTeXN0ZW1EZWZhdWx0LCBrQ01TYW1wbGVCdWZmZXJGbGFnX0F1ZGlvQnVm
ZmVyTGlzdF9Bc3N1cmUxNkJ5dGVBbGlnbm1lbnQsICZidWZmZXIpKQorICAgICAgICBtX2Jsb2Nr
QnVmZmVyID0gYWRvcHRDRihidWZmZXIpOworfQorCitXVEY6Okl0ZXJhdG9yUmFuZ2U8QXVkaW9C
dWZmZXIqPiBXZWJBdWRpb0J1ZmZlckxpc3Q6OmJ1ZmZlcnMoKSBjb25zdAoreworICAgIHJldHVy
biBXVEY6Om1ha2VJdGVyYXRvclJhbmdlKCZtX2xpc3QtPm1CdWZmZXJzWzBdLCAmbV9saXN0LT5t
QnVmZmVyc1ttX2xpc3QtPm1OdW1iZXJCdWZmZXJzXSk7Cit9CisKK3VpbnQzMl90IFdlYkF1ZGlv
QnVmZmVyTGlzdDo6YnVmZmVyQ291bnQoKSBjb25zdAoreworICAgIHJldHVybiBtX2xpc3QtPm1O
dW1iZXJCdWZmZXJzOworfQorCitBdWRpb0J1ZmZlciogV2ViQXVkaW9CdWZmZXJMaXN0OjpidWZm
ZXIodWludDMyX3QgaW5kZXgpIGNvbnN0Cit7CisgICAgQVNTRVJUKGluZGV4IDwgbV9saXN0LT5t
TnVtYmVyQnVmZmVycyk7CisgICAgaWYgKGluZGV4IDwgbV9saXN0LT5tTnVtYmVyQnVmZmVycykK
KyAgICAgICAgcmV0dXJuICZtX2xpc3QtPm1CdWZmZXJzW2luZGV4XTsKKyAgICByZXR1cm4gbnVs
bHB0cjsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
V2ViQXVkaW9CdWZmZXJMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9XZWJB
dWRpb0J1ZmZlckxpc3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYmYzYzEzOWI2MjVlN2I0Yzc5YWY4NDI0MTM4
YjUwNDA3MzE4NWE4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vV2ViQXVkaW9CdWZmZXJMaXN0LmgKQEAgLTAsMCArMSw2OCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiUGxhdGZvcm1BdWRpb0RhdGEuaCIKKyNpbmNsdWRl
IDx3dGYvSXRlcmF0b3JSYW5nZS5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CisKK3N0cnVjdCBBdWRpb0J1ZmZlcjsKK3N0cnVjdCBBdWRpb0J1
ZmZlckxpc3Q7Cit0eXBlZGVmIHN0cnVjdCBPcGFxdWVDTUJsb2NrQnVmZmVyICpDTUJsb2NrQnVm
ZmVyUmVmOwordHlwZWRlZiBzdHJ1Y3Qgb3BhcXVlQ01TYW1wbGVCdWZmZXIgKkNNU2FtcGxlQnVm
ZmVyUmVmOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENBQXVkaW9TdHJlYW1EZXNj
cmlwdGlvbjsKKworY2xhc3MgV2ViQXVkaW9CdWZmZXJMaXN0IDogcHVibGljIFBsYXRmb3JtQXVk
aW9EYXRhIHsKK3B1YmxpYzoKKyAgICBXZWJBdWRpb0J1ZmZlckxpc3QoY29uc3QgQ0FBdWRpb1N0
cmVhbURlc2NyaXB0aW9uJik7CisgICAgV2ViQXVkaW9CdWZmZXJMaXN0KGNvbnN0IENBQXVkaW9T
dHJlYW1EZXNjcmlwdGlvbiYsIHVpbnQzMl90IHNhbXBsZUNvdW50KTsKKyAgICBXZWJBdWRpb0J1
ZmZlckxpc3QoY29uc3QgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiwgQ01TYW1wbGVCdWZmZXJS
ZWYpOworCisgICAgQXVkaW9CdWZmZXJMaXN0KiBsaXN0KCkgY29uc3QgeyByZXR1cm4gbV9saXN0
LmdldCgpOyB9CisgICAgb3BlcmF0b3IgQXVkaW9CdWZmZXJMaXN0JigpIGNvbnN0IHsgcmV0dXJu
ICptX2xpc3Q7IH0KKworICAgIHVpbnQzMl90IGJ1ZmZlckNvdW50KCkgY29uc3Q7CisgICAgQXVk
aW9CdWZmZXIqIGJ1ZmZlcih1aW50MzJfdCBpbmRleCkgY29uc3Q7CisgICAgV1RGOjpJdGVyYXRv
clJhbmdlPEF1ZGlvQnVmZmVyKj4gYnVmZmVycygpIGNvbnN0OworCitwcml2YXRlOgorICAgIEtp
bmQga2luZCgpIGNvbnN0IHsgcmV0dXJuIEtpbmQ6OldlYkF1ZGlvQnVmZmVyTGlzdDsgfQorCisg
ICAgc2l6ZV90IG1fbGlzdEJ1ZmZlclNpemUgeyAwIH07CisgICAgc3RkOjp1bmlxdWVfcHRyPEF1
ZGlvQnVmZmVyTGlzdD4gbV9saXN0OworICAgIFJldGFpblB0cjxDTUJsb2NrQnVmZmVyUmVmPiBt
X2Jsb2NrQnVmZmVyOworICAgIFZlY3Rvcjx1aW50OF90PiBtX2ZsYXRCdWZmZXI7Cit9OworCit9
CisKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6V2ViQXVkaW9CdWZmZXJM
aXN0KQorc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OlBsYXRmb3JtQXVkaW9EYXRh
JiBkYXRhKSB7IHJldHVybiBkYXRhLmtpbmQoKSA9PSBXZWJDb3JlOjpQbGF0Zm9ybUF1ZGlvRGF0
YTo6S2luZDo6V2ViQXVkaW9CdWZmZXJMaXN0OyB9CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VO
RCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9T
YW1wbGVCdWZmZXJMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9B
dWRpb1NhbXBsZUJ1ZmZlckxpc3QuY3BwCmluZGV4IGFmYzcxNGRmMzhiZjEzNTI2ODE5ZDUxNWU5
MTkxMjQ3MDJlNjBmMjguLjBiNTNhMzNkMzk5M2NkMTA1N2E0NzBlMGRjZjMzZThhYzhkMDFiZWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb1NhbXBs
ZUJ1ZmZlckxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9B
dWRpb1NhbXBsZUJ1ZmZlckxpc3QuY3BwCkBAIC00NywyNCArNDcsOSBAQCBBdWRpb1NhbXBsZUJ1
ZmZlckxpc3Q6OkF1ZGlvU2FtcGxlQnVmZmVyTGlzdChjb25zdCBDQUF1ZGlvU3RyZWFtRGVzY3Jp
cHRpb24mIGZvcgogICAgIG1faW50ZXJuYWxGb3JtYXQgPSBzdGQ6Om1ha2VfdW5pcXVlPENBQXVk
aW9TdHJlYW1EZXNjcmlwdGlvbj4oZm9ybWF0KTsKIAogICAgIG1fc2FtcGxlQ2FwYWNpdHkgPSBt
YXhpbXVtU2FtcGxlQ291bnQ7Ci0gICAgbV9zYW1wbGVDb3VudCA9IDA7CiAgICAgbV9tYXhCdWZm
ZXJTaXplUGVyQ2hhbm5lbCA9IG1heGltdW1TYW1wbGVDb3VudCAqIGZvcm1hdC5ieXRlc1BlckZy
YW1lKCkgLyBmb3JtYXQubnVtYmVyT2ZDaGFubmVsU3RyZWFtcygpOwogCiAgICAgQVNTRVJUKGZv
cm1hdC5zYW1wbGVSYXRlKCkgPj0gMCk7Ci0KLSAgICBzaXplX3QgYnVmZmVyU2l6ZSA9IGZvcm1h
dC5udW1iZXJPZkNoYW5uZWxTdHJlYW1zKCkgKiBtX21heEJ1ZmZlclNpemVQZXJDaGFubmVsOwot
ICAgIEFTU0VSVChidWZmZXJTaXplIDw9IFNJWkVfTUFYKTsKLSAgICBpZiAoYnVmZmVyU2l6ZSA+
IFNJWkVfTUFYKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX2J1ZmZlckxpc3RCYXNlU2l6ZSA9
IGF1ZGlvQnVmZmVyTGlzdFNpemVGb3JTdHJlYW0oZm9ybWF0KTsKLSAgICBBU1NFUlQobV9idWZm
ZXJMaXN0QmFzZVNpemUgPD0gU0laRV9NQVgpOwotICAgIGlmIChtX2J1ZmZlckxpc3RCYXNlU2l6
ZSA+IFNJWkVfTUFYKQotICAgICAgICByZXR1cm47Ci0KLSAgICBzaXplX3QgYWxsb2NTaXplID0g
bV9idWZmZXJMaXN0QmFzZVNpemUgKyBidWZmZXJTaXplOwotICAgIG1fYnVmZmVyTGlzdCA9IHN0
ZDo6dW5pcXVlX3B0cjxBdWRpb0J1ZmZlckxpc3Q+KHN0YXRpY19jYXN0PEF1ZGlvQnVmZmVyTGlz
dCo+KDo6b3BlcmF0b3IgbmV3IChhbGxvY1NpemUpKSk7Ci0KICAgICByZXNldCgpOwogfQogCkBA
IC0xMzgsMjkgKzEyMywyOSBAQCBPU1N0YXR1cyBBdWRpb1NhbXBsZUJ1ZmZlckxpc3Q6Om1peEZy
b20oY29uc3QgQXVkaW9TYW1wbGVCdWZmZXJMaXN0JiBzb3VyY2UsIHNpegogCiAgICAgbV9zYW1w
bGVDb3VudCA9IGZyYW1lQ291bnQ7CiAKLSAgICBBdWRpb0J1ZmZlckxpc3QmIHNvdXJjZUJ1ZmZl
ciA9IHNvdXJjZS5idWZmZXJMaXN0KCk7Ci0gICAgZm9yICh1aW50MzJfdCBpID0gMDsgaSA8IG1f
YnVmZmVyTGlzdC0+bU51bWJlckJ1ZmZlcnM7IGkrKykgeworICAgIFdlYkF1ZGlvQnVmZmVyTGlz
dCYgc291cmNlQnVmZmVyID0gc291cmNlLmJ1ZmZlckxpc3QoKTsKKyAgICBmb3IgKHVpbnQzMl90
IGkgPSAwOyBpIDwgbV9idWZmZXJMaXN0LT5idWZmZXJDb3VudCgpOyBpKyspIHsKICAgICAgICAg
c3dpdGNoIChtX2ludGVybmFsRm9ybWF0LT5mb3JtYXQoKSkgewogICAgICAgICBjYXNlIEF1ZGlv
U3RyZWFtRGVzY3JpcHRpb246OkludDE2OiB7Ci0gICAgICAgICAgICBpbnQxNl90KiBkZXN0aW5h
dGlvbiA9IHN0YXRpY19jYXN0PGludDE2X3QqPihtX2J1ZmZlckxpc3QtPm1CdWZmZXJzW2ldLm1E
YXRhKTsKLSAgICAgICAgICAgIGludDE2X3QqIHNvdXJjZSA9IHN0YXRpY19jYXN0PGludDE2X3Qq
Pihzb3VyY2VCdWZmZXIubUJ1ZmZlcnNbaV0ubURhdGEpOworICAgICAgICAgICAgaW50MTZfdCog
ZGVzdGluYXRpb24gPSBzdGF0aWNfY2FzdDxpbnQxNl90Kj4obV9idWZmZXJMaXN0LT5idWZmZXIo
aSktPm1EYXRhKTsKKyAgICAgICAgICAgIGludDE2X3QqIHNvdXJjZSA9IHN0YXRpY19jYXN0PGlu
dDE2X3QqPihzb3VyY2VCdWZmZXIuYnVmZmVyKGkpLT5tRGF0YSk7CiAgICAgICAgICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGZyYW1lQ291bnQ7IGkrKykKICAgICAgICAgICAgICAgICBkZXN0
aW5hdGlvbltpXSArPSBzb3VyY2VbaV07CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQog
ICAgICAgICBjYXNlIEF1ZGlvU3RyZWFtRGVzY3JpcHRpb246OkludDMyOiB7Ci0gICAgICAgICAg
ICBpbnQzMl90KiBkZXN0aW5hdGlvbiA9IHN0YXRpY19jYXN0PGludDMyX3QqPihtX2J1ZmZlckxp
c3QtPm1CdWZmZXJzW2ldLm1EYXRhKTsKLSAgICAgICAgICAgIHZEU1BfdmFkZGkoZGVzdGluYXRp
b24sIDEsIHJlaW50ZXJwcmV0X2Nhc3Q8aW50MzJfdCo+KHNvdXJjZUJ1ZmZlci5tQnVmZmVyc1tp
XS5tRGF0YSksIDEsIGRlc3RpbmF0aW9uLCAxLCBmcmFtZUNvdW50KTsKKyAgICAgICAgICAgIGlu
dDMyX3QqIGRlc3RpbmF0aW9uID0gc3RhdGljX2Nhc3Q8aW50MzJfdCo+KG1fYnVmZmVyTGlzdC0+
YnVmZmVyKGkpLT5tRGF0YSk7CisgICAgICAgICAgICB2RFNQX3ZhZGRpKGRlc3RpbmF0aW9uLCAx
LCByZWludGVycHJldF9jYXN0PGludDMyX3QqPihzb3VyY2VCdWZmZXIuYnVmZmVyKGkpLT5tRGF0
YSksIDEsIGRlc3RpbmF0aW9uLCAxLCBmcmFtZUNvdW50KTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAgICAgICAgIGNhc2UgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbjo6RmxvYXQzMjog
ewotICAgICAgICAgICAgZmxvYXQqIGRlc3RpbmF0aW9uID0gc3RhdGljX2Nhc3Q8ZmxvYXQqPiht
X2J1ZmZlckxpc3QtPm1CdWZmZXJzW2ldLm1EYXRhKTsKLSAgICAgICAgICAgIHZEU1BfdmFkZChk
ZXN0aW5hdGlvbiwgMSwgcmVpbnRlcnByZXRfY2FzdDxmbG9hdCo+KHNvdXJjZUJ1ZmZlci5tQnVm
ZmVyc1tpXS5tRGF0YSksIDEsIGRlc3RpbmF0aW9uLCAxLCBmcmFtZUNvdW50KTsKKyAgICAgICAg
ICAgIGZsb2F0KiBkZXN0aW5hdGlvbiA9IHN0YXRpY19jYXN0PGZsb2F0Kj4obV9idWZmZXJMaXN0
LT5idWZmZXIoaSktPm1EYXRhKTsKKyAgICAgICAgICAgIHZEU1BfdmFkZChkZXN0aW5hdGlvbiwg
MSwgcmVpbnRlcnByZXRfY2FzdDxmbG9hdCo+KHNvdXJjZUJ1ZmZlci5idWZmZXIoaSktPm1EYXRh
KSwgMSwgZGVzdGluYXRpb24sIDEsIGZyYW1lQ291bnQpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KICAgICAgICAgY2FzZSBBdWRpb1N0cmVhbURlc2NyaXB0aW9uOjpGbG9hdDY0OiB7
Ci0gICAgICAgICAgICBkb3VibGUqIGRlc3RpbmF0aW9uID0gc3RhdGljX2Nhc3Q8ZG91YmxlKj4o
bV9idWZmZXJMaXN0LT5tQnVmZmVyc1tpXS5tRGF0YSk7Ci0gICAgICAgICAgICB2RFNQX3ZhZGRE
KGRlc3RpbmF0aW9uLCAxLCByZWludGVycHJldF9jYXN0PGRvdWJsZSo+KHNvdXJjZUJ1ZmZlci5t
QnVmZmVyc1tpXS5tRGF0YSksIDEsIGRlc3RpbmF0aW9uLCAxLCBmcmFtZUNvdW50KTsKKyAgICAg
ICAgICAgIGRvdWJsZSogZGVzdGluYXRpb24gPSBzdGF0aWNfY2FzdDxkb3VibGUqPihtX2J1ZmZl
ckxpc3QtPmJ1ZmZlcihpKS0+bURhdGEpOworICAgICAgICAgICAgdkRTUF92YWRkRChkZXN0aW5h
dGlvbiwgMSwgcmVpbnRlcnByZXRfY2FzdDxkb3VibGUqPihzb3VyY2VCdWZmZXIuYnVmZmVyKGkp
LT5tRGF0YSksIDEsIGRlc3RpbmF0aW9uLCAxLCBmcmFtZUNvdW50KTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbjo6Tm9u
ZToKQEAgLTE4Nyw5ICsxNzIsOSBAQCBPU1N0YXR1cyBBdWRpb1NhbXBsZUJ1ZmZlckxpc3Q6OmNv
cHlGcm9tKGNvbnN0IEF1ZGlvU2FtcGxlQnVmZmVyTGlzdCYgc291cmNlLCBzaQogCiAgICAgbV9z
YW1wbGVDb3VudCA9IGZyYW1lQ291bnQ7CiAKLSAgICBmb3IgKHVpbnQzMl90IGkgPSAwOyBpIDwg
bV9idWZmZXJMaXN0LT5tTnVtYmVyQnVmZmVyczsgaSsrKSB7Ci0gICAgICAgIHVpbnQ4X3QqIHNv
dXJjZURhdGEgPSBzdGF0aWNfY2FzdDx1aW50OF90Kj4oc291cmNlLmJ1ZmZlckxpc3QoKS5tQnVm
ZmVyc1tpXS5tRGF0YSk7Ci0gICAgICAgIHVpbnQ4X3QqIGRlc3RpbmF0aW9uID0gc3RhdGljX2Nh
c3Q8dWludDhfdCo+KG1fYnVmZmVyTGlzdC0+bUJ1ZmZlcnNbaV0ubURhdGEpOworICAgIGZvciAo
dWludDMyX3QgaSA9IDA7IGkgPCBtX2J1ZmZlckxpc3QtPmJ1ZmZlckNvdW50KCk7IGkrKykgewor
ICAgICAgICB1aW50OF90KiBzb3VyY2VEYXRhID0gc3RhdGljX2Nhc3Q8dWludDhfdCo+KHNvdXJj
ZS5idWZmZXJMaXN0KCkuYnVmZmVyKGkpLT5tRGF0YSk7CisgICAgICAgIHVpbnQ4X3QqIGRlc3Rp
bmF0aW9uID0gc3RhdGljX2Nhc3Q8dWludDhfdCo+KG1fYnVmZmVyTGlzdC0+YnVmZmVyKGkpLT5t
RGF0YSk7CiAgICAgICAgIG1lbWNweShkZXN0aW5hdGlvbiwgc291cmNlRGF0YSwgZnJhbWVDb3Vu
dCAqIG1faW50ZXJuYWxGb3JtYXQtPmJ5dGVzUGVyUGFja2V0KCkpOwogICAgIH0KIApAQCAtMjAw
LDExICsxODUsMTEgQEAgT1NTdGF0dXMgQXVkaW9TYW1wbGVCdWZmZXJMaXN0Ojpjb3B5VG8oQXVk
aW9CdWZmZXJMaXN0JiBidWZmZXIsIHNpemVfdCBmcmFtZUNvdW4KIHsKICAgICBpZiAoZnJhbWVD
b3VudCA+IG1fc2FtcGxlQ291bnQpCiAgICAgICAgIHJldHVybiBrQXVkaW9fUGFyYW1FcnJvcjsK
LSAgICBpZiAoYnVmZmVyLm1OdW1iZXJCdWZmZXJzID4gbV9idWZmZXJMaXN0LT5tTnVtYmVyQnVm
ZmVycykKKyAgICBpZiAoYnVmZmVyLm1OdW1iZXJCdWZmZXJzID4gbV9idWZmZXJMaXN0LT5idWZm
ZXJDb3VudCgpKQogICAgICAgICByZXR1cm4ga0F1ZGlvX1BhcmFtRXJyb3I7CiAKICAgICBmb3Ig
KHVpbnQzMl90IGkgPSAwOyBpIDwgYnVmZmVyLm1OdW1iZXJCdWZmZXJzOyBpKyspIHsKLSAgICAg
ICAgdWludDhfdCogc291cmNlRGF0YSA9IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihtX2J1ZmZlckxp
c3QtPm1CdWZmZXJzW2ldLm1EYXRhKTsKKyAgICAgICAgdWludDhfdCogc291cmNlRGF0YSA9IHN0
YXRpY19jYXN0PHVpbnQ4X3QqPihtX2J1ZmZlckxpc3QtPmJ1ZmZlcihpKS0+bURhdGEpOwogICAg
ICAgICB1aW50OF90KiBkZXN0aW5hdGlvbiA9IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihidWZmZXIu
bUJ1ZmZlcnNbaV0ubURhdGEpOwogICAgICAgICBtZW1jcHkoZGVzdGluYXRpb24sIHNvdXJjZURh
dGEsIGZyYW1lQ291bnQgKiBtX2ludGVybmFsRm9ybWF0LT5ieXRlc1BlclBhY2tldCgpKTsKICAg
ICB9CkBAIC0yMTgsMTUgKzIwMyw3IEBAIHZvaWQgQXVkaW9TYW1wbGVCdWZmZXJMaXN0OjpyZXNl
dCgpCiAgICAgbV90aW1lc3RhbXAgPSAwOwogICAgIG1faG9zdFRpbWUgPSAtMTsKIAotICAgIHVp
bnQ4X3QqIGRhdGEgPSByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihtX2J1ZmZlckxpc3QuZ2V0
KCkpICsgbV9idWZmZXJMaXN0QmFzZVNpemU7Ci0gICAgbV9idWZmZXJMaXN0LT5tTnVtYmVyQnVm
ZmVycyA9IG1faW50ZXJuYWxGb3JtYXQtPm51bWJlck9mQ2hhbm5lbFN0cmVhbXMoKTsKLSAgICBm
b3IgKHVpbnQzMl90IGkgPSAwOyBpIDwgbV9idWZmZXJMaXN0LT5tTnVtYmVyQnVmZmVyczsgKytp
KSB7Ci0gICAgICAgIGF1dG8mIGJ1ZmZlciA9IG1fYnVmZmVyTGlzdC0+bUJ1ZmZlcnNbaV07Ci0g
ICAgICAgIGJ1ZmZlci5tRGF0YSA9IGRhdGE7Ci0gICAgICAgIGJ1ZmZlci5tRGF0YUJ5dGVTaXpl
ID0gbV9tYXhCdWZmZXJTaXplUGVyQ2hhbm5lbDsKLSAgICAgICAgYnVmZmVyLm1OdW1iZXJDaGFu
bmVscyA9IG1faW50ZXJuYWxGb3JtYXQtPm51bWJlck9mSW50ZXJsZWF2ZWRDaGFubmVscygpOwot
ICAgICAgICBkYXRhID0gZGF0YSArIG1fbWF4QnVmZmVyU2l6ZVBlckNoYW5uZWw7Ci0gICAgfQor
ICAgIG1fYnVmZmVyTGlzdCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQXVkaW9CdWZmZXJMaXN0Pigq
bV9pbnRlcm5hbEZvcm1hdCwgbV9tYXhCdWZmZXJTaXplUGVyQ2hhbm5lbCk7CiB9CiAKIHZvaWQg
QXVkaW9TYW1wbGVCdWZmZXJMaXN0Ojp6ZXJvKCkKQEAgLTI3NywyMiArMjU0LDIwIEBAIE9TU3Rh
dHVzIEF1ZGlvU2FtcGxlQnVmZmVyTGlzdDo6Y29weUZyb20oQXVkaW9CdWZmZXJMaXN0JiBzb3Vy
Y2UsIEF1ZGlvQ29udmVydGVyCiAgICAgbV9jb252ZXJ0ZXJJbnB1dEJ5dGVzUGVyUGFja2V0ID0g
aW5wdXRGb3JtYXQubUJ5dGVzUGVyUGFja2V0OwogICAgIG1fY29udmVydGVySW5wdXRCdWZmZXIg
PSAmc291cmNlOwogCi0gICAgYXV0byogb3V0cHV0RGF0YSA9IG1fYnVmZmVyTGlzdC5nZXQoKTsK
LQogI2lmICFMT0dfRElTQUJMRUQKICAgICBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24gb3V0
cHV0Rm9ybWF0OwogICAgIHByb3BlcnR5RGF0YVNpemUgPSBzaXplb2Yob3V0cHV0Rm9ybWF0KTsK
ICAgICBBdWRpb0NvbnZlcnRlckdldFByb3BlcnR5KGNvbnZlcnRlciwga0F1ZGlvQ29udmVydGVy
Q3VycmVudE91dHB1dFN0cmVhbURlc2NyaXB0aW9uLCAmcHJvcGVydHlEYXRhU2l6ZSwgJm91dHB1
dEZvcm1hdCk7CiAKLSAgICBBU1NFUlQob3V0cHV0Rm9ybWF0Lm1DaGFubmVsc1BlckZyYW1lID09
IG91dHB1dERhdGEtPm1OdW1iZXJCdWZmZXJzKTsKLSAgICBmb3IgKHVpbnQzMl90IGkgPSAwOyBp
IDwgb3V0cHV0RGF0YS0+bU51bWJlckJ1ZmZlcnM7ICsraSkgewotICAgICAgICBBU1NFUlQob3V0
cHV0RGF0YS0+bUJ1ZmZlcnNbaV0ubURhdGEpOwotICAgICAgICBBU1NFUlQob3V0cHV0RGF0YS0+
bUJ1ZmZlcnNbaV0ubURhdGFCeXRlU2l6ZSk7CisgICAgQVNTRVJUKG91dHB1dEZvcm1hdC5tQ2hh
bm5lbHNQZXJGcmFtZSA9PSBtX2J1ZmZlckxpc3QtPmJ1ZmZlckNvdW50KCkpOworICAgIGZvciAo
dWludDMyX3QgaSA9IDA7IGkgPCBtX2J1ZmZlckxpc3QtPmJ1ZmZlckNvdW50KCk7ICsraSkgewor
ICAgICAgICBBU1NFUlQobV9idWZmZXJMaXN0LT5idWZmZXIoaSktPm1EYXRhKTsKKyAgICAgICAg
QVNTRVJUKG1fYnVmZmVyTGlzdC0+YnVmZmVyKGkpLT5tRGF0YUJ5dGVTaXplKTsKICAgICB9CiAj
ZW5kaWYKIAogICAgIFVJbnQzMiBzYW1wbGVzQ29udmVydGVkID0gc3RhdGljX2Nhc3Q8VUludDMy
PihtX3NhbXBsZUNhcGFjaXR5KTsKLSAgICBPU1N0YXR1cyBlcnIgPSBBdWRpb0NvbnZlcnRlckZp
bGxDb21wbGV4QnVmZmVyKGNvbnZlcnRlciwgYXVkaW9Db252ZXJ0ZXJDYWxsYmFjaywgdGhpcywg
JnNhbXBsZXNDb252ZXJ0ZWQsIG91dHB1dERhdGEsIG51bGxwdHIpOworICAgIE9TU3RhdHVzIGVy
ciA9IEF1ZGlvQ29udmVydGVyRmlsbENvbXBsZXhCdWZmZXIoY29udmVydGVyLCBhdWRpb0NvbnZl
cnRlckNhbGxiYWNrLCB0aGlzLCAmc2FtcGxlc0NvbnZlcnRlZCwgbV9idWZmZXJMaXN0LT5saXN0
KCksIG51bGxwdHIpOwogICAgIGlmIChlcnIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJBdWRpb1Nh
bXBsZUJ1ZmZlckxpc3Q6OmNvcHlGcm9tKCVwKSBBdWRpb0NvbnZlcnRlckZpbGxDb21wbGV4QnVm
ZmVyIHJldHVybmVkIGVycm9yICVkICglLjRzKSIsIHRoaXMsIChpbnQpZXJyLCAoY2hhciopJmVy
cik7CiAgICAgICAgIG1fc2FtcGxlQ291bnQgPSBzdGQ6Om1pbihtX3NhbXBsZUNhcGFjaXR5LCBz
dGF0aWNfY2FzdDxzaXplX3Q+KHNhbXBsZXNDb252ZXJ0ZWQpKTsKQEAgLTMxMiwyOSArMjg3LDEz
IEBAIE9TU3RhdHVzIEF1ZGlvU2FtcGxlQnVmZmVyTGlzdDo6Y29weUZyb20oQXVkaW9TYW1wbGVC
dWZmZXJMaXN0JiBzb3VyY2UsIEF1ZGlvQ29uCiBPU1N0YXR1cyBBdWRpb1NhbXBsZUJ1ZmZlckxp
c3Q6OmNvcHlGcm9tKENBUmluZ0J1ZmZlciYgcmluZ0J1ZmZlciwgc2l6ZV90IHNhbXBsZUNvdW50
LCB1aW50NjRfdCBzdGFydEZyYW1lLCBDQVJpbmdCdWZmZXI6OkZldGNoTW9kZSBtb2RlKQogewog
ICAgIHJlc2V0KCk7Ci0gICAgaWYgKHJpbmdCdWZmZXIuZmV0Y2goJmJ1ZmZlckxpc3QoKSwgc2Ft
cGxlQ291bnQsIHN0YXJ0RnJhbWUsIG1vZGUpICE9IENBUmluZ0J1ZmZlcjo6T2spCisgICAgaWYg
KHJpbmdCdWZmZXIuZmV0Y2goYnVmZmVyTGlzdCgpLmxpc3QoKSwgc2FtcGxlQ291bnQsIHN0YXJ0
RnJhbWUsIG1vZGUpICE9IENBUmluZ0J1ZmZlcjo6T2spCiAgICAgICAgIHJldHVybiBrQXVkaW9f
UGFyYW1FcnJvcjsKIAogICAgIG1fc2FtcGxlQ291bnQgPSBzYW1wbGVDb3VudDsKICAgICByZXR1
cm4gMDsKIH0KIAotdm9pZCBBdWRpb1NhbXBsZUJ1ZmZlckxpc3Q6OmNvbmZpZ3VyZUJ1ZmZlckxp
c3RGb3JTdHJlYW0oQXVkaW9CdWZmZXJMaXN0JiBidWZmZXJMaXN0LCBjb25zdCBDQUF1ZGlvU3Ry
ZWFtRGVzY3JpcHRpb24mIGZvcm1hdCwgdWludDhfdCogYnVmZmVyRGF0YSwgc2l6ZV90IHNhbXBs
ZUNvdW50KQotewotICAgIHNpemVfdCBidWZmZXJDb3VudCA9IGZvcm1hdC5udW1iZXJPZkNoYW5u
ZWxTdHJlYW1zKCk7Ci0gICAgc2l6ZV90IGNoYW5uZWxDb3VudCA9IGZvcm1hdC5udW1iZXJPZklu
dGVybGVhdmVkQ2hhbm5lbHMoKTsKLSAgICBzaXplX3QgYnl0ZXNQZXJDaGFubmVsID0gc2FtcGxl
Q291bnQgKiBmb3JtYXQuYnl0ZXNQZXJGcmFtZSgpOwotCi0gICAgYnVmZmVyTGlzdC5tTnVtYmVy
QnVmZmVycyA9IGJ1ZmZlckNvdW50OwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBidWZm
ZXJDb3VudDsgKytpKSB7Ci0gICAgICAgIGJ1ZmZlckxpc3QubUJ1ZmZlcnNbaV0ubU51bWJlckNo
YW5uZWxzID0gY2hhbm5lbENvdW50OwotICAgICAgICBidWZmZXJMaXN0Lm1CdWZmZXJzW2ldLm1E
YXRhQnl0ZVNpemUgPSBieXRlc1BlckNoYW5uZWw7Ci0gICAgICAgIGJ1ZmZlckxpc3QubUJ1ZmZl
cnNbaV0ubURhdGEgPSBidWZmZXJEYXRhOwotICAgICAgICBpZiAoYnVmZmVyRGF0YSkKLSAgICAg
ICAgICAgIGJ1ZmZlckRhdGEgPSBidWZmZXJEYXRhICsgYnl0ZXNQZXJDaGFubmVsOwotICAgIH0K
LX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NU
UkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRp
b1NhbXBsZUJ1ZmZlckxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9B
dWRpb1NhbXBsZUJ1ZmZlckxpc3QuaAppbmRleCAwZThlMjRjMjMyMDE1NmE4M2E3NTk0Y2Y1ZmJj
NTE5YWE4YmNhMmI0Li5jOTllZTlhZTBkMmY0ZTIxMjVlMDIzMDAxMzAwY2M2NWZkN2I3NDk3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9TYW1wbGVC
dWZmZXJMaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlv
U2FtcGxlQnVmZmVyTGlzdC5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgRU5BQkxFKE1FRElBX1NU
UkVBTSkKIAogI2luY2x1ZGUgIkNBUmluZ0J1ZmZlci5oIgorI2luY2x1ZGUgIldlYkF1ZGlvQnVm
ZmVyTGlzdC5oIgogI2luY2x1ZGUgPENvcmVBdWRpby9Db3JlQXVkaW9UeXBlcy5oPgogI2luY2x1
ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KQEAgLTQ0LDcgKzQ1
LDYgQEAgcHVibGljOgogCiAgICAgfkF1ZGlvU2FtcGxlQnVmZmVyTGlzdCgpOwogCi0gICAgc3Rh
dGljIHZvaWQgY29uZmlndXJlQnVmZmVyTGlzdEZvclN0cmVhbShBdWRpb0J1ZmZlckxpc3QmLCBj
b25zdCBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mLCB1aW50OF90Kiwgc2l6ZV90KTsKICAgICBz
dGF0aWMgaW5saW5lIHNpemVfdCBhdWRpb0J1ZmZlckxpc3RTaXplRm9yU3RyZWFtKGNvbnN0IENB
QXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYpOwogCiAgICAgc3RhdGljIHZvaWQgYXBwbHlHYWluKEF1
ZGlvQnVmZmVyTGlzdCYsIGZsb2F0LCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uOjpQQ01Gb3JtYXQp
OwpAQCAtNjAsNyArNjAsNyBAQCBwdWJsaWM6CiAgICAgT1NTdGF0dXMgY29weVRvKEF1ZGlvQnVm
ZmVyTGlzdCYsIHNpemVfdCBjb3VudCA9IFNJWkVfTUFYKTsKIAogICAgIGNvbnN0IEF1ZGlvU3Ry
ZWFtQmFzaWNEZXNjcmlwdGlvbiYgc3RyZWFtRGVzY3JpcHRpb24oKSBjb25zdCB7IHJldHVybiBt
X2ludGVybmFsRm9ybWF0LT5zdHJlYW1EZXNjcmlwdGlvbigpOyB9Ci0gICAgQXVkaW9CdWZmZXJM
aXN0JiBidWZmZXJMaXN0KCkgY29uc3QgeyByZXR1cm4gKm1fYnVmZmVyTGlzdC5nZXQoKTsgfQor
ICAgIFdlYkF1ZGlvQnVmZmVyTGlzdCYgYnVmZmVyTGlzdCgpIGNvbnN0IHsgcmV0dXJuICptX2J1
ZmZlckxpc3Q7IH0KIAogICAgIHVpbnQzMl90IHNhbXBsZUNhcGFjaXR5KCkgY29uc3QgeyByZXR1
cm4gbV9zYW1wbGVDYXBhY2l0eTsgfQogICAgIHVpbnQzMl90IHNhbXBsZUNvdW50KCkgY29uc3Qg
eyByZXR1cm4gbV9zYW1wbGVDb3VudDsgfQpAQCAtOTMsNyArOTMsNyBAQCBwcm90ZWN0ZWQ6CiAg
ICAgc2l6ZV90IG1fc2FtcGxlQ2FwYWNpdHkgeyAwIH07CiAgICAgc2l6ZV90IG1fbWF4QnVmZmVy
U2l6ZVBlckNoYW5uZWwgeyAwIH07CiAgICAgc2l6ZV90IG1fYnVmZmVyTGlzdEJhc2VTaXplIHsg
MCB9OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0J1ZmZlckxpc3Q+IG1fYnVmZmVyTGlzdDsK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQXVkaW9CdWZmZXJMaXN0PiBtX2J1ZmZlckxpc3Q7CiB9
OwogCiBpbmxpbmUgc2l6ZV90IEF1ZGlvU2FtcGxlQnVmZmVyTGlzdDo6YXVkaW9CdWZmZXJMaXN0
U2l6ZUZvclN0cmVhbShjb25zdCBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIGRlc2NyaXB0aW9u
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2Ft
cGxlRGF0YVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVk
aW9TYW1wbGVEYXRhU291cmNlLmNwcAppbmRleCA3YjYzOTFiYzc4M2Y5ZTg4ZWQ3YTEwOWMyOTcy
NmRlMGJiNTA3YmE2Li45ZjE2MzUyMjRlZmM4MWJjY2UyNTJlYjI4OTIxZDc1ZTM5YzgxNWE1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9TYW1wbGVE
YXRhU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVk
aW9TYW1wbGVEYXRhU291cmNlLmNwcApAQCAtMTUyLDcgKzE1Miw3IEBAIHZvaWQgQXVkaW9TYW1w
bGVEYXRhU291cmNlOjpwdXNoU2FtcGxlc0ludGVybmFsKEF1ZGlvQnVmZmVyTGlzdCYgYnVmZmVy
TGlzdCwgY29uCiAgICAgICAgIGlmIChlcnIpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAg
ICAgc2FtcGxlQnVmZmVyTGlzdCA9ICZtX3NjcmF0Y2hCdWZmZXItPmJ1ZmZlckxpc3QoKTsKKyAg
ICAgICAgc2FtcGxlQnVmZmVyTGlzdCA9IG1fc2NyYXRjaEJ1ZmZlci0+YnVmZmVyTGlzdCgpLmxp
c3QoKTsKICAgICB9IGVsc2UKICAgICAgICAgc2FtcGxlQnVmZmVyTGlzdCA9ICZidWZmZXJMaXN0
OwogCkBAIC0xOTIsMzQgKzE5MiwxNiBAQCB2b2lkIEF1ZGlvU2FtcGxlRGF0YVNvdXJjZTo6cHVz
aFNhbXBsZXMoY29uc3QgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uJiBzYW1wbAogCiAgICAg
QVNTRVJUX1VOVVNFRChzYW1wbGVEZXNjcmlwdGlvbiwgKm1faW5wdXREZXNjcmlwdGlvbiA9PSBz
YW1wbGVEZXNjcmlwdGlvbik7CiAgICAgQVNTRVJUKG1fcmluZ0J1ZmZlcik7Ci0KLSAgICBzaXpl
X3QgYnVmZmVyU2l6ZSA9IEF1ZGlvU2FtcGxlQnVmZmVyTGlzdDo6YXVkaW9CdWZmZXJMaXN0U2l6
ZUZvclN0cmVhbSgqbV9pbnB1dERlc2NyaXB0aW9uLmdldCgpKTsKLSAgICB1aW50OF90IGJ1ZmZl
ckRhdGFbYnVmZmVyU2l6ZV07Ci0gICAgQXVkaW9CdWZmZXJMaXN0KiBidWZmZXJMaXN0ID0gcmVp
bnRlcnByZXRfY2FzdDxBdWRpb0J1ZmZlckxpc3QqPihidWZmZXJEYXRhKTsKLSAgICBidWZmZXJM
aXN0LT5tTnVtYmVyQnVmZmVycyA9IG1faW5wdXREZXNjcmlwdGlvbi0+bnVtYmVyT2ZJbnRlcmxl
YXZlZENoYW5uZWxzKCk7Ci0KLSAgICBDTUJsb2NrQnVmZmVyUmVmIGJ1ZmZlciA9IG51bGxwdHI7
Ci0gICAgT1NTdGF0dXMgZXJyID0gQ01TYW1wbGVCdWZmZXJHZXRBdWRpb0J1ZmZlckxpc3RXaXRo
UmV0YWluZWRCbG9ja0J1ZmZlcihzYW1wbGVCdWZmZXIsIG51bGxwdHIsIGJ1ZmZlckxpc3QsIGJ1
ZmZlclNpemUsIGtDRkFsbG9jYXRvclN5c3RlbURlZmF1bHQsIGtDRkFsbG9jYXRvclN5c3RlbURl
ZmF1bHQsIGtDTVNhbXBsZUJ1ZmZlckZsYWdfQXVkaW9CdWZmZXJMaXN0X0Fzc3VyZTE2Qnl0ZUFs
aWdubWVudCwgJmJ1ZmZlcik7Ci0gICAgaWYgKGVycikgewotICAgICAgICBMT0dfRVJST1IoIkF1
ZGlvU2FtcGxlRGF0YVNvdXJjZTo6cHVzaFNhbXBsZXMoJXApIC0gQ01TYW1wbGVCdWZmZXJHZXRB
dWRpb0J1ZmZlckxpc3RXaXRoUmV0YWluZWRCbG9ja0J1ZmZlciByZXR1cm5lZCBlcnJvciAlZCAo
JS40cykiLCB0aGlzLCAoaW50KWVyciwgKGNoYXIqKSZlcnIpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotCi0gICAgcHVzaFNhbXBsZXNJbnRlcm5hbCgqYnVmZmVyTGlzdCwgdG9NZWRpYVRpbWUo
Q01TYW1wbGVCdWZmZXJHZXRQcmVzZW50YXRpb25UaW1lU3RhbXAoc2FtcGxlQnVmZmVyKSksIENN
U2FtcGxlQnVmZmVyR2V0TnVtU2FtcGxlcyhzYW1wbGVCdWZmZXIpKTsKKyAgICAKKyAgICBXZWJB
dWRpb0J1ZmZlckxpc3QgbGlzdCgqbV9pbnB1dERlc2NyaXB0aW9uLCBzYW1wbGVCdWZmZXIpOwor
ICAgIHB1c2hTYW1wbGVzSW50ZXJuYWwobGlzdCwgdG9NZWRpYVRpbWUoQ01TYW1wbGVCdWZmZXJH
ZXRQcmVzZW50YXRpb25UaW1lU3RhbXAoc2FtcGxlQnVmZmVyKSksIENNU2FtcGxlQnVmZmVyR2V0
TnVtU2FtcGxlcyhzYW1wbGVCdWZmZXIpKTsKIH0KIAotdm9pZCBBdWRpb1NhbXBsZURhdGFTb3Vy
Y2U6OnB1c2hTYW1wbGVzKGNvbnN0IEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiYgc2FtcGxl
RGVzY3JpcHRpb24sIGNvbnN0IE1lZGlhVGltZSYgc2FtcGxlVGltZSwgdm9pZCogYXVkaW9EYXRh
LCBzaXplX3Qgc2FtcGxlQ291bnQpCit2b2lkIEF1ZGlvU2FtcGxlRGF0YVNvdXJjZTo6cHVzaFNh
bXBsZXMoY29uc3QgTWVkaWFUaW1lJiBzYW1wbGVUaW1lLCBQbGF0Zm9ybUF1ZGlvRGF0YSYgYXVk
aW9EYXRhLCBzaXplX3Qgc2FtcGxlQ291bnQpCiB7CiAgICAgc3RkOjp1bmlxdWVfbG9jazxMb2Nr
PiBsb2NrKG1fbG9jaywgc3RkOjp0cnlfdG9fbG9jayk7Ci0gICAgQVNTRVJUKCptX2lucHV0RGVz
Y3JpcHRpb24gPT0gc2FtcGxlRGVzY3JpcHRpb24pOwotCi0gICAgQ0FBdWRpb1N0cmVhbURlc2Ny
aXB0aW9uIGRlc2NyaXB0aW9uKHNhbXBsZURlc2NyaXB0aW9uKTsKLSAgICBzaXplX3QgYnVmZmVy
U2l6ZSA9IEF1ZGlvU2FtcGxlQnVmZmVyTGlzdDo6YXVkaW9CdWZmZXJMaXN0U2l6ZUZvclN0cmVh
bShkZXNjcmlwdGlvbik7Ci0gICAgdWludDhfdCBidWZmZXJEYXRhW2J1ZmZlclNpemVdOwotICAg
IEF1ZGlvQnVmZmVyTGlzdCogYnVmZmVyTGlzdCA9IHJlaW50ZXJwcmV0X2Nhc3Q8QXVkaW9CdWZm
ZXJMaXN0Kj4oYnVmZmVyRGF0YSk7Ci0KLSAgICBBdWRpb1NhbXBsZUJ1ZmZlckxpc3Q6OmNvbmZp
Z3VyZUJ1ZmZlckxpc3RGb3JTdHJlYW0oKmJ1ZmZlckxpc3QsIGRlc2NyaXB0aW9uLCByZWludGVy
cHJldF9jYXN0PHVpbnQ4X3QqPihhdWRpb0RhdGEpLCBzYW1wbGVDb3VudCk7Ci0gICAgcHVzaFNh
bXBsZXNJbnRlcm5hbCgqYnVmZmVyTGlzdCwgc2FtcGxlVGltZSwgc2FtcGxlQ291bnQpOworICAg
IEFTU0VSVChpczxXZWJBdWRpb0J1ZmZlckxpc3Q+KGF1ZGlvRGF0YSkpOworICAgIHB1c2hTYW1w
bGVzSW50ZXJuYWwoZG93bmNhc3Q8V2ViQXVkaW9CdWZmZXJMaXN0PihhdWRpb0RhdGEpLCBzYW1w
bGVUaW1lLCBzYW1wbGVDb3VudCk7CiB9CiAKIGJvb2wgQXVkaW9TYW1wbGVEYXRhU291cmNlOjpw
dWxsU2FtcGxlc0ludGVybmFsKEF1ZGlvQnVmZmVyTGlzdCYgYnVmZmVyLCBzaXplX3QmIHNhbXBs
ZUNvdW50LCB1aW50NjRfdCB0aW1lU3RhbXAsIGRvdWJsZSAvKmhvc3RUaW1lKi8sIFB1bGxNb2Rl
IG1vZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVk
aW9TYW1wbGVEYXRhU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMv
QXVkaW9TYW1wbGVEYXRhU291cmNlLmgKaW5kZXggZGVjZGVlZWZlMmY3MjkzOTMxMjQ4MDJkODU2
MWE3OTdhYjYyMDYzMS4uOWFjMzE0NmQyZmM5YTE3NjNiYTM3ZDUxNGI0YmY1MTZhNWE5ZjM5NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2FtcGxl
RGF0YVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRp
b1NhbXBsZURhdGFTb3VyY2UuaApAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgT1NTdGF0
dXMgc2V0SW5wdXRGb3JtYXQoY29uc3QgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uJik7CiAgICAg
T1NTdGF0dXMgc2V0T3V0cHV0Rm9ybWF0KGNvbnN0IENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYp
OwogCi0gICAgdm9pZCBwdXNoU2FtcGxlcyhjb25zdCBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRp
b24mLCBjb25zdCBNZWRpYVRpbWUmLCB2b2lkKiwgc2l6ZV90KTsKKyAgICB2b2lkIHB1c2hTYW1w
bGVzKGNvbnN0IE1lZGlhVGltZSYsIFBsYXRmb3JtQXVkaW9EYXRhJiwgc2l6ZV90KTsKICAgICB2
b2lkIHB1c2hTYW1wbGVzKGNvbnN0IEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiYsIENNU2Ft
cGxlQnVmZmVyUmVmKTsKIAogICAgIGVudW0gUHVsbE1vZGUgeyBDb3B5LCBNaXggfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFT
b3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVN
ZWRpYVNvdXJjZS5jcHAKaW5kZXggZWJkYWQyNTNiMjI3ZjBlNzBkNzAzNzcyOTFjZjA5NzI4MTY4
ZDFlYS4uN2E4ZDc0MDg1MDI5YjVjMTU0NzYxNzA0MDRiZjBkMjQyN2UxNzQzMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJj
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVN
ZWRpYVNvdXJjZS5jcHAKQEAgLTExOSw3ICsxMTksNyBAQCB2b2lkIFJlYWx0aW1lTWVkaWFTb3Vy
Y2U6OnZpZGVvU2FtcGxlQXZhaWxhYmxlKE1lZGlhU2FtcGxlJiBtZWRpYVNhbXBsZSkKICAgICAg
ICAgb2JzZXJ2ZXItPnZpZGVvU2FtcGxlQXZhaWxhYmxlKG1lZGlhU2FtcGxlKTsKIH0KIAotdm9p
ZCBSZWFsdGltZU1lZGlhU291cmNlOjphdWRpb1NhbXBsZXNBdmFpbGFibGUoY29uc3QgTWVkaWFU
aW1lJiB0aW1lLCB2b2lkKiBhdWRpb0RhdGEsIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24m
IGRlc2NyaXB0aW9uLCBzaXplX3QgbnVtYmVyT2ZGcmFtZXMpCit2b2lkIFJlYWx0aW1lTWVkaWFT
b3VyY2U6OmF1ZGlvU2FtcGxlc0F2YWlsYWJsZShjb25zdCBNZWRpYVRpbWUmIHRpbWUsIFBsYXRm
b3JtQXVkaW9EYXRhJiBhdWRpb0RhdGEsIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIGRl
c2NyaXB0aW9uLCBzaXplX3QgbnVtYmVyT2ZGcmFtZXMpCiB7CiAgICAgZm9yIChjb25zdCBhdXRv
JiBvYnNlcnZlciA6IG1fb2JzZXJ2ZXJzKQogICAgICAgICBvYnNlcnZlci0+YXVkaW9TYW1wbGVz
QXZhaWxhYmxlKHRpbWUsIGF1ZGlvRGF0YSwgZGVzY3JpcHRpb24sIG51bWJlck9mRnJhbWVzKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1l
TWVkaWFTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0
aW1lTWVkaWFTb3VyY2UuaAppbmRleCA4ZmJlNjk0NjFlNWRmZDEzOWIxMTMzN2JmZjVlZWNmMzVl
YmEwYjVkLi4xNTRmODI4ZGY5YzFmZDg4MTc2ZjA2M2M1N2ZjM2E4NmFlZjNjNzIwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291
cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVN
ZWRpYVNvdXJjZS5oCkBAIC01Nyw2ICs1Nyw3IEBAIGNsYXNzIEF1ZGlvU3RyZWFtRGVzY3JpcHRp
b247CiBjbGFzcyBGbG9hdFJlY3Q7CiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CiBjbGFzcyBNZWRp
YVN0cmVhbVByaXZhdGU7CitjbGFzcyBQbGF0Zm9ybUF1ZGlvRGF0YTsKIGNsYXNzIFJlYWx0aW1l
TWVkaWFTb3VyY2VTZXR0aW5nczsKIAogY2xhc3MgUmVhbHRpbWVNZWRpYVNvdXJjZSA6IHB1Ymxp
YyBSZWZDb3VudGVkPFJlYWx0aW1lTWVkaWFTb3VyY2U+IHsKQEAgLTc3LDcgKzc4LDcgQEAgcHVi
bGljOgogICAgICAgICB2aXJ0dWFsIHZvaWQgdmlkZW9TYW1wbGVBdmFpbGFibGUoTWVkaWFTYW1w
bGUmKSB7IH0KIAogICAgICAgICAvLyBNYXkgYmUgY2FsbGVkIG9uIGEgYmFja2dyb3VuZCB0aHJl
YWQuCi0gICAgICAgIHZpcnR1YWwgdm9pZCBhdWRpb1NhbXBsZXNBdmFpbGFibGUoY29uc3QgTWVk
aWFUaW1lJiwgdm9pZCogLyphdWRpb0RhdGEqLywgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlv
biYsIHNpemVfdCAvKm51bWJlck9mRnJhbWVzKi8pIHsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQg
YXVkaW9TYW1wbGVzQXZhaWxhYmxlKGNvbnN0IE1lZGlhVGltZSYsIFBsYXRmb3JtQXVkaW9EYXRh
JiwgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYsIHNpemVfdCAvKm51bWJlck9mRnJhbWVz
Ki8pIHsgfQogICAgIH07CiAKICAgICB2aXJ0dWFsIH5SZWFsdGltZU1lZGlhU291cmNlKCkgeyB9
CkBAIC0xMDksNyArMTEwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXR0aW5nc0Rp
ZENoYW5nZSgpOwogCiAgICAgdm9pZCB2aWRlb1NhbXBsZUF2YWlsYWJsZShNZWRpYVNhbXBsZSYp
OwotICAgIHZvaWQgYXVkaW9TYW1wbGVzQXZhaWxhYmxlKGNvbnN0IE1lZGlhVGltZSYsIHZvaWQq
LCBjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiwgc2l6ZV90KTsKKyAgICB2b2lkIGF1ZGlv
U2FtcGxlc0F2YWlsYWJsZShjb25zdCBNZWRpYVRpbWUmLCBQbGF0Zm9ybUF1ZGlvRGF0YSYsIGNv
bnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mLCBzaXplX3QpOwogICAgIAogICAgIGJvb2wgc3Rv
cHBlZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RvcHBlZDsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZBdWRpb0NhcHR1cmVTb3VyY2UuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkF1ZGlvQ2FwdHVyZVNv
dXJjZS5oCmluZGV4IDZiOWU4NGU0ZmU1ZmY1Njc3NzNjOWQ1ZGViMDg4NzcyODVlYmMwZDAuLjll
NWM4NTY5MTI0NDYxNmZkYzI4MGQwMGU4MTE4YTE2MjdmNDk2NTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkF1ZGlvQ2FwdHVyZVNvdXJjZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkF1ZGlvQ2Fw
dHVyZVNvdXJjZS5oCkBAIC0zOSw2ICszOSw3IEBAIHR5cGVkZWYgY29uc3Qgc3RydWN0IG9wYXF1
ZUNNRm9ybWF0RGVzY3JpcHRpb24gKkNNRm9ybWF0RGVzY3JpcHRpb25SZWY7CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAorY2xhc3MgV2ViQXVkaW9CdWZmZXJMaXN0OwogY2xhc3MgV2ViQXVkaW9T
b3VyY2VQcm92aWRlckFWRk9iakM7CiAKIGNsYXNzIEFWQXVkaW9DYXB0dXJlU291cmNlIDogcHVi
bGljIEFWTWVkaWFDYXB0dXJlU291cmNlLCBwdWJsaWMgQXVkaW9DYXB0dXJlU291cmNlUHJvdmlk
ZXJPYmpDIHsKQEAgLTY2LDggKzY3LDcgQEAgcHJpdmF0ZToKICAgICBBdWRpb1NvdXJjZVByb3Zp
ZGVyKiBhdWRpb1NvdXJjZVByb3ZpZGVyKCkgb3ZlcnJpZGU7CiAKICAgICBSZXRhaW5QdHI8QVZD
YXB0dXJlQ29ubmVjdGlvbj4gbV9hdWRpb0Nvbm5lY3Rpb247Ci0gICAgc2l6ZV90IG1fbGlzdEJ1
ZmZlclNpemUgeyAwIH07Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEF1ZGlvQnVmZmVyTGlzdD4gbV9s
aXN0OworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJBdWRpb0J1ZmZlckxpc3Q+IG1fbGlzdDsKIAog
ICAgIFJlZlB0cjxXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQz4gbV9hdWRpb1NvdXJjZVBy
b3ZpZGVyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24+IG1f
aW5wdXREZXNjcmlwdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9BVkF1ZGlvQ2FwdHVyZVNvdXJjZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkF1ZGlvQ2FwdHVyZVNvdXJjZS5tbQppbmRleCAwMjBm
MjgwODZhOTYzYmE1NDY1YmMyYmM1NzdiNjQwMDdiMDU1MmM1Li4zYTYxM2IwZDY4ZDVhMGQ1NmE1
NDkxMDhlNGE5MDE2NTQxNjI1NDA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9tYWMvQVZBdWRpb0NhcHR1cmVTb3VyY2UubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQXVkaW9DYXB0dXJlU291cmNlLm1tCkBA
IC0xOTMsMTAgKzE5Myw2IEBAIHZvaWQgQVZBdWRpb0NhcHR1cmVTb3VyY2U6OmNhcHR1cmVPdXRw
dXREaWRPdXRwdXRTYW1wbGVCdWZmZXJGcm9tQ29ubmVjdGlvbihBVkNhCiAgICAgY29uc3QgQXVk
aW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uKiBzdHJlYW1EZXNjcmlwdGlvbiA9IENNQXVkaW9Gb3Jt
YXREZXNjcmlwdGlvbkdldFN0cmVhbUJhc2ljRGVzY3JpcHRpb24oZm9ybWF0RGVzY3JpcHRpb24p
OwogICAgIGlmICghbV9pbnB1dERlc2NyaXB0aW9uIHx8ICptX2lucHV0RGVzY3JpcHRpb24gIT0g
KnN0cmVhbURlc2NyaXB0aW9uKSB7CiAgICAgICAgIG1faW5wdXREZXNjcmlwdGlvbiA9IHN0ZDo6
bWFrZV91bmlxdWU8Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uPigqc3RyZWFtRGVzY3JpcHRpb24p
OwotICAgICAgICBtX2xpc3RCdWZmZXJTaXplID0gQXVkaW9TYW1wbGVCdWZmZXJMaXN0OjphdWRp
b0J1ZmZlckxpc3RTaXplRm9yU3RyZWFtKCptX2lucHV0RGVzY3JpcHRpb24uZ2V0KCkpOwotICAg
ICAgICBtX2xpc3QgPSBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9CdWZmZXJMaXN0PihzdGF0aWNfY2Fz
dDxBdWRpb0J1ZmZlckxpc3QqPig6Om9wZXJhdG9yIG5ldyAobV9saXN0QnVmZmVyU2l6ZSkpKTsK
LSAgICAgICAgbWVtc2V0KG1fbGlzdC5nZXQoKSwgMCwgbV9saXN0QnVmZmVyU2l6ZSk7Ci0gICAg
ICAgIG1fbGlzdC0+bU51bWJlckJ1ZmZlcnMgPSBtX2lucHV0RGVzY3JpcHRpb24tPm51bWJlck9m
Q2hhbm5lbFN0cmVhbXMoKTsKIAogICAgICAgICBpZiAoIW1fb2JzZXJ2ZXJzLmlzRW1wdHkoKSkg
ewogICAgICAgICAgICAgZm9yIChhdXRvJiBvYnNlcnZlciA6IG1fb2JzZXJ2ZXJzKQpAQCAtMjA0
LDEzICsyMDAsOCBAQCB2b2lkIEFWQXVkaW9DYXB0dXJlU291cmNlOjpjYXB0dXJlT3V0cHV0RGlk
T3V0cHV0U2FtcGxlQnVmZmVyRnJvbUNvbm5lY3Rpb24oQVZDYQogICAgICAgICB9CiAgICAgfQog
Ci0gICAgQ01JdGVtQ291bnQgZnJhbWVDb3VudCA9IENNU2FtcGxlQnVmZmVyR2V0TnVtU2FtcGxl
cyhzYW1wbGVCdWZmZXIpOwotICAgIENNQmxvY2tCdWZmZXJSZWYgYnVmZmVyID0gbmlsOwotICAg
IE9TU3RhdHVzIGVyciA9IENNU2FtcGxlQnVmZmVyR2V0QXVkaW9CdWZmZXJMaXN0V2l0aFJldGFp
bmVkQmxvY2tCdWZmZXIoc2FtcGxlQnVmZmVyLCBudWxscHRyLCBtX2xpc3QuZ2V0KCksIG1fbGlz
dEJ1ZmZlclNpemUsIGtDRkFsbG9jYXRvclN5c3RlbURlZmF1bHQsIGtDRkFsbG9jYXRvclN5c3Rl
bURlZmF1bHQsIGtDTVNhbXBsZUJ1ZmZlckZsYWdfQXVkaW9CdWZmZXJMaXN0X0Fzc3VyZTE2Qnl0
ZUFsaWdubWVudCwgJmJ1ZmZlcik7Ci0gICAgaWYgKCFlcnIpCi0gICAgICAgIGF1ZGlvU2FtcGxl
c0F2YWlsYWJsZSh0b01lZGlhVGltZShDTVNhbXBsZUJ1ZmZlckdldFByZXNlbnRhdGlvblRpbWVT
dGFtcChzYW1wbGVCdWZmZXIpKSwgbV9saXN0LT5tQnVmZmVyc1swXS5tRGF0YSwgQ0FBdWRpb1N0
cmVhbURlc2NyaXB0aW9uKCpzdHJlYW1EZXNjcmlwdGlvbiksIGZyYW1lQ291bnQpOwotICAgIGVs
c2UKLSAgICAgICAgTE9HX0VSUk9SKCJBVkF1ZGlvQ2FwdHVyZVNvdXJjZTo6Y2FwdHVyZU91dHB1
dERpZE91dHB1dFNhbXBsZUJ1ZmZlckZyb21Db25uZWN0aW9uKCVwKSAtIENNU2FtcGxlQnVmZmVy
R2V0QXVkaW9CdWZmZXJMaXN0V2l0aFJldGFpbmVkQmxvY2tCdWZmZXIgcmV0dXJuZWQgZXJyb3Ig
JWQgKCUuNHMpIiwgdGhpcywgKGludCllcnIsIChjaGFyKikmZXJyKTsKKyAgICBtX2xpc3QgPSBz
dGQ6Om1ha2VfdW5pcXVlPFdlYkF1ZGlvQnVmZmVyTGlzdD4oKm1faW5wdXREZXNjcmlwdGlvbiwg
c2FtcGxlQnVmZmVyKTsKKyAgICBhdWRpb1NhbXBsZXNBdmFpbGFibGUodG9NZWRpYVRpbWUoQ01T
YW1wbGVCdWZmZXJHZXRQcmVzZW50YXRpb25UaW1lU3RhbXAoc2FtcGxlQnVmZmVyKSksICptX2xp
c3QsIENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbigqc3RyZWFtRGVzY3JpcHRpb24pLCBDTVNhbXBs
ZUJ1ZmZlckdldE51bVNhbXBsZXMoc2FtcGxlQnVmZmVyKSk7CiAKICAgICBpZiAobV9vYnNlcnZl
cnMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNv
Y29hLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BdWRpb1Ry
YWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EuY3BwCmluZGV4IDZkNjNiN2VjNDA1OTQ0ZTZmNDJh
MGMxMzY1Y2YyYWNmMzUwMDk5M2MuLmM4MDRjZjAxNmQ1NDg5MjI0MDYzMjA2ZjE1ZjNhYjFjODQ0
ZTE3NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFt
Q29jb2EuY3BwCkBAIC0xNzgsNyArMTc4LDcgQEAgT1NTdGF0dXMgQXVkaW9UcmFja1ByaXZhdGVN
ZWRpYVN0cmVhbUNvY29hOjpzZXR1cEF1ZGlvVW5pdCgpCiAgICAgcmV0dXJuIGVycjsKIH0KIAot
dm9pZCBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2E6OmF1ZGlvU2FtcGxlc0F2YWls
YWJsZShjb25zdCBNZWRpYVRpbWUmIHNhbXBsZVRpbWUsIHZvaWQqIGF1ZGlvRGF0YSwgY29uc3Qg
QXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24sIHNpemVfdCBzYW1wbGVDb3VudCkK
K3ZvaWQgQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hOjphdWRpb1NhbXBsZXNBdmFp
bGFibGUoY29uc3QgTWVkaWFUaW1lJiBzYW1wbGVUaW1lLCBQbGF0Zm9ybUF1ZGlvRGF0YSYgYXVk
aW9EYXRhLCBjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbiwgc2l6ZV90
IHNhbXBsZUNvdW50KQogewogICAgIEFTU0VSVChkZXNjcmlwdGlvbi5wbGF0Zm9ybURlc2NyaXB0
aW9uKCkudHlwZSA9PSBQbGF0Zm9ybURlc2NyaXB0aW9uOjpDQUF1ZGlvU3RyZWFtQmFzaWNUeXBl
KTsKIApAQCAtMjE1LDcgKzIxNSw3IEBAIHZvaWQgQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVh
bUNvY29hOjphdWRpb1NhbXBsZXNBdmFpbGFibGUoY29uc3QgTWVkaWFUaW1lJiBzCiAgICAgICAg
IG1fZGF0YVNvdXJjZS0+c2V0Vm9sdW1lKG1fdm9sdW1lKTsKICAgICB9CiAKLSAgICBtX2RhdGFT
b3VyY2UtPnB1c2hTYW1wbGVzKG1faW5wdXREZXNjcmlwdGlvbi0+c3RyZWFtRGVzY3JpcHRpb24o
KSwgc2FtcGxlVGltZSwgYXVkaW9EYXRhLCBzYW1wbGVDb3VudCk7CisgICAgbV9kYXRhU291cmNl
LT5wdXNoU2FtcGxlcyhzYW1wbGVUaW1lLCBhdWRpb0RhdGEsIHNhbXBsZUNvdW50KTsKIAogICAg
IGlmIChtX2F1dG9QbGF5KQogICAgICAgICBwbGF5SW50ZXJuYWwoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BdWRpb1RyYWNrUHJpdmF0ZU1l
ZGlhU3RyZWFtQ29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EuaAppbmRleCAyN2Y5OWRhOTNlNTg4
MWYyYjNhMzU0YWExZmYzZWI5ZDhkMWMxODQ3Li5iNmU3ZjQxNjFlYWZjOTA5M2FmMTM1MTA2MDU5
ODJjMWYzNTkzMWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFT
dHJlYW1Db2NvYS5oCkBAIC02Niw3ICs2Niw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzb3VyY2VN
dXRlZENoYW5nZWQoKSAgZmluYWwgeyB9CiAgICAgdm9pZCBzb3VyY2VTZXR0aW5nc0NoYW5nZWQo
KSBmaW5hbCB7IH0KICAgICBib29sIHByZXZlbnRTb3VyY2VGcm9tU3RvcHBpbmcoKSBmaW5hbCB7
IHJldHVybiBmYWxzZTsgfQotICAgIHZvaWQgYXVkaW9TYW1wbGVzQXZhaWxhYmxlKGNvbnN0IE1l
ZGlhVGltZSYsIHZvaWQqLCBjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiwgc2l6ZV90KSBm
aW5hbDsKKyAgICB2b2lkIGF1ZGlvU2FtcGxlc0F2YWlsYWJsZShjb25zdCBNZWRpYVRpbWUmLCBQ
bGF0Zm9ybUF1ZGlvRGF0YSYsIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mLCBzaXplX3Qp
IGZpbmFsOwogCiAgICAgc3RhdGljIE9TU3RhdHVzIGlucHV0UHJvYyh2b2lkKiwgQXVkaW9Vbml0
UmVuZGVyQWN0aW9uRmxhZ3MqLCBjb25zdCBBdWRpb1RpbWVTdGFtcCosIFVJbnQzMiBpbkJ1c051
bWJlciwgVUludDMyIG51bWJlck9mRnJhbWVzLCBBdWRpb0J1ZmZlckxpc3QqKTsKICAgICBPU1N0
YXR1cyByZW5kZXIoVUludDMyIHNhbXBsZUNvdW50LCBBdWRpb0J1ZmZlckxpc3QmLCBVSW50MzIg
aW5CdXNOdW1iZXIsIGNvbnN0IEF1ZGlvVGltZVN0YW1wJiwgQXVkaW9Vbml0UmVuZGVyQWN0aW9u
RmxhZ3MmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L21hYy9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1hYy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFjLmgKaW5kZXggMTQz
M2Q3ZDIzMTc3YjZhNTI4ZDY2MGY5Zjc1Y2Q2Mzk0YzE3Mjk1Mi4uOTE1Y2U1ZjQwZjQ1NGViZWU2
MmVkYTE2MjlhZjYzMjY1OTY4MWQ1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFjLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZUF1ZGlvU291
cmNlTWFjLmgKQEAgLTM4LDEyICszOCwxMiBAQAogI2luY2x1ZGUgPENvcmVBdWRpby9Db3JlQXVk
aW9UeXBlcy5oPgogCiBPQkpDX0NMQVNTIEFWQXVkaW9QQ01CdWZmZXI7Ci10eXBlZGVmIHN0cnVj
dCBBdWRpb0J1ZmZlckxpc3QgQXVkaW9CdWZmZXJMaXN0OwogdHlwZWRlZiBzdHJ1Y3QgT3BhcXVl
Q01DbG9jayogQ01DbG9ja1JlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IG9wYXF1ZUNNRm9ybWF0
RGVzY3JpcHRpb24qIENNRm9ybWF0RGVzY3JpcHRpb25SZWY7CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAorY2xhc3MgV2ViQXVkaW9CdWZmZXJMaXN0OwogY2xhc3MgV2ViQXVkaW9Tb3VyY2VQcm92
aWRlckFWRk9iakM7CiAKIGNsYXNzIE1vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFjIGZpbmFsIDog
cHVibGljIE1vY2tSZWFsdGltZUF1ZGlvU291cmNlLCBwdWJsaWMgQXVkaW9DYXB0dXJlU291cmNl
UHJvdmlkZXJPYmpDIHsKQEAgLTY4LDcgKzY4LDcgQEAgcHJpdmF0ZToKICAgICBBdWRpb1NvdXJj
ZVByb3ZpZGVyKiBhdWRpb1NvdXJjZVByb3ZpZGVyKCkgZmluYWw7CiAKICAgICBzaXplX3QgbV9h
dWRpb0J1ZmZlckxpc3RCdWZmZXJTaXplIHsgMCB9OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxBdWRp
b0J1ZmZlckxpc3Q+IG1fYXVkaW9CdWZmZXJMaXN0OworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJB
dWRpb0J1ZmZlckxpc3Q+IG1fYXVkaW9CdWZmZXJMaXN0OwogCiAgICAgdWludDMyX3QgbV9tYXhp
bWl1bUZyYW1lQ291bnQ7CiAgICAgdWludDMyX3QgbV9zYW1wbGVSYXRlIHsgNDQxMDAgfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVh
bHRpbWVBdWRpb1NvdXJjZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL21hYy9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1hYy5tbQppbmRleCBiNGY4NzQ1MzUyMTM0
OGQwZjVlNTIxMGE2M2QxY2E1MTg5ODdmMDQzLi4wOWRjMjAzYWUyZWE1YTRjNGIzM2JlMzIwNmFi
ZWRkNGM4ODc5ZDRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWMubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFjLm1t
CkBAIC0zOCw2ICszOCw3IEBACiAjaW1wb3J0ICJNZWRpYVNhbXBsZUFWRk9iakMuaCIKICNpbXBv
cnQgIk5vdEltcGxlbWVudGVkLmgiCiAjaW1wb3J0ICJSZWFsdGltZU1lZGlhU291cmNlU2V0dGlu
Z3MuaCIKKyNpbXBvcnQgIldlYkF1ZGlvQnVmZmVyTGlzdC5oIgogI2ltcG9ydCAiV2ViQXVkaW9T
b3VyY2VQcm92aWRlckFWRk9iakMuaCIKICNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVkF1ZGlvQnVm
ZmVyLmg+CiAjaW1wb3J0IDxBdWRpb1Rvb2xib3gvQXVkaW9Db252ZXJ0ZXIuaD4KQEAgLTEwMiw3
ICsxMDMsNyBAQCB2b2lkIE1vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFjOjplbWl0U2FtcGxlQnVm
ZmVycyh1aW50MzJfdCBmcmFtZUNvdW50KQogICAgIENNVGltZSBzdGFydFRpbWUgPSBDTVRpbWVN
YWtlKG1fYnl0ZXNFbWl0dGVkLCBtX3NhbXBsZVJhdGUpOwogICAgIG1fYnl0ZXNFbWl0dGVkICs9
IGZyYW1lQ291bnQ7CiAKLSAgICBhdWRpb1NhbXBsZXNBdmFpbGFibGUodG9NZWRpYVRpbWUoc3Rh
cnRUaW1lKSwgbV9hdWRpb0J1ZmZlckxpc3QtPm1CdWZmZXJzWzBdLm1EYXRhLCBDQUF1ZGlvU3Ry
ZWFtRGVzY3JpcHRpb24obV9zdHJlYW1Gb3JtYXQpLCBmcmFtZUNvdW50KTsKKyAgICBhdWRpb1Nh
bXBsZXNBdmFpbGFibGUodG9NZWRpYVRpbWUoc3RhcnRUaW1lKSwgKm1fYXVkaW9CdWZmZXJMaXN0
LCBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24obV9zdHJlYW1Gb3JtYXQpLCBmcmFtZUNvdW50KTsK
IAogICAgIENNU2FtcGxlQnVmZmVyUmVmIHNhbXBsZUJ1ZmZlcjsKICAgICBPU1N0YXR1cyByZXN1
bHQgPSBDTUF1ZGlvU2FtcGxlQnVmZmVyQ3JlYXRlV2l0aFBhY2tldERlc2NyaXB0aW9ucyhudWxs
cHRyLCBudWxscHRyLCB0cnVlLCBudWxscHRyLCBudWxscHRyLCBtX2Zvcm1hdERlc2NyaXB0aW9u
LmdldCgpLCBmcmFtZUNvdW50LCBzdGFydFRpbWUsIG51bGxwdHIsICZzYW1wbGVCdWZmZXIpOwpA
QCAtMTEzLDcgKzExNCw3IEBAIHZvaWQgTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWM6OmVtaXRT
YW1wbGVCdWZmZXJzKHVpbnQzMl90IGZyYW1lQ291bnQpCiAgICAgICAgIHJldHVybjsKIAogICAg
IGF1dG8gYnVmZmVyID0gYWRvcHRDRihzYW1wbGVCdWZmZXIpOwotICAgIHJlc3VsdCA9IENNU2Ft
cGxlQnVmZmVyU2V0RGF0YUJ1ZmZlckZyb21BdWRpb0J1ZmZlckxpc3Qoc2FtcGxlQnVmZmVyLCBr
Q0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwLCBtX2F1ZGlvQnVmZmVy
TGlzdC5nZXQoKSk7CisgICAgcmVzdWx0ID0gQ01TYW1wbGVCdWZmZXJTZXREYXRhQnVmZmVyRnJv
bUF1ZGlvQnVmZmVyTGlzdChzYW1wbGVCdWZmZXIsIGtDRkFsbG9jYXRvckRlZmF1bHQsIGtDRkFs
bG9jYXRvckRlZmF1bHQsIDAsIG1fYXVkaW9CdWZmZXJMaXN0LT5saXN0KCkpOwogICAgIEFTU0VS
VCghcmVzdWx0KTsKIAogICAgIHJlc3VsdCA9IENNU2FtcGxlQnVmZmVyU2V0RGF0YVJlYWR5KHNh
bXBsZUJ1ZmZlcik7CkBAIC0xMzAsMzMgKzEzMSwxMyBAQCB2b2lkIE1vY2tSZWFsdGltZUF1ZGlv
U291cmNlTWFjOjpyZWNvbmZpZ3VyZSgpCiAKICAgICBjb25zdCBpbnQgYnl0ZXNQZXJGbG9hdCA9
IHNpemVvZihGbG9hdDMyKTsKICAgICBjb25zdCBpbnQgYml0c1BlckJ5dGUgPSA4OwotICAgIGlu
dCBjaGFubmVsQ291bnQgPSAxOwotICAgIG1fc3RyZWFtRm9ybWF0ID0geyB9OwotICAgIG1fc3Ry
ZWFtRm9ybWF0Lm1TYW1wbGVSYXRlID0gbV9zYW1wbGVSYXRlOwotICAgIG1fc3RyZWFtRm9ybWF0
Lm1Gb3JtYXRJRCA9IGtBdWRpb0Zvcm1hdExpbmVhclBDTTsKLSAgICBtX3N0cmVhbUZvcm1hdC5t
Rm9ybWF0RmxhZ3MgPSBrQXVkaW9Gb3JtYXRGbGFnc05hdGl2ZUZsb2F0UGFja2VkOwotICAgIG1f
c3RyZWFtRm9ybWF0Lm1CeXRlc1BlclBhY2tldCA9IGJ5dGVzUGVyRmxvYXQgKiBjaGFubmVsQ291
bnQ7Ci0gICAgbV9zdHJlYW1Gb3JtYXQubUZyYW1lc1BlclBhY2tldCA9IDE7Ci0gICAgbV9zdHJl
YW1Gb3JtYXQubUJ5dGVzUGVyRnJhbWUgPSBieXRlc1BlckZsb2F0ICogY2hhbm5lbENvdW50Owot
ICAgIG1fc3RyZWFtRm9ybWF0Lm1DaGFubmVsc1BlckZyYW1lID0gY2hhbm5lbENvdW50OwotICAg
IG1fc3RyZWFtRm9ybWF0Lm1CaXRzUGVyQ2hhbm5lbCA9IGJpdHNQZXJCeXRlICogYnl0ZXNQZXJG
bG9hdDsKLQotICAgIC8vIEF1ZGlvQnVmZmVyTGlzdCBpcyBhIHZhcmlhYmxlLWxlbmd0aCBzdHJ1
Y3QsIHNvIGNyZWF0ZSBvbiB0aGUgaGVhcCB3aXRoIGEgZ2VuZXJpYyBuZXcoKSBvcGVyYXRvcgot
ICAgIC8vIHdpdGggYSBjdXN0b20gc2l6ZSwgYW5kIGluaXRpYWxpemUgdGhlIHN0cnVjdCBtYW51
YWxseS4KLSAgICB1aW50MzJfdCBidWZmZXJEYXRhU2l6ZSA9IG1fc3RyZWFtRm9ybWF0Lm1CeXRl
c1BlckZyYW1lICogbV9tYXhpbWl1bUZyYW1lQ291bnQ7Ci0gICAgdWludDMyX3QgYmFzZVNpemUg
PSBBdWRpb1NhbXBsZUJ1ZmZlckxpc3Q6OmF1ZGlvQnVmZmVyTGlzdFNpemVGb3JTdHJlYW0obV9z
dHJlYW1Gb3JtYXQpOwotCi0gICAgdWludDY0X3QgYnVmZmVyTGlzdFNpemUgPSBiYXNlU2l6ZSAr
IGJ1ZmZlckRhdGFTaXplOwotICAgIEFTU0VSVChidWZmZXJMaXN0U2l6ZSA8PSBTSVpFX01BWCk7
Ci0gICAgaWYgKGJ1ZmZlckxpc3RTaXplID4gU0laRV9NQVgpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIG1fYXVkaW9CdWZmZXJMaXN0QnVmZmVyU2l6ZSA9IHN0YXRpY19jYXN0PHNpemVfdD4oYnVm
ZmVyTGlzdFNpemUpOwotICAgIG1fYXVkaW9CdWZmZXJMaXN0ID0gc3RkOjp1bmlxdWVfcHRyPEF1
ZGlvQnVmZmVyTGlzdD4oc3RhdGljX2Nhc3Q8QXVkaW9CdWZmZXJMaXN0Kj4oOjpvcGVyYXRvciBu
ZXcgKG1fYXVkaW9CdWZmZXJMaXN0QnVmZmVyU2l6ZSkpKTsKLSAgICBtZW1zZXQobV9hdWRpb0J1
ZmZlckxpc3QuZ2V0KCksIDAsIG1fYXVkaW9CdWZmZXJMaXN0QnVmZmVyU2l6ZSk7CisgICAgY29u
c3QgaW50IGNoYW5uZWxDb3VudCA9IDI7CisgICAgY29uc3QgYm9vbCBpc0Zsb2F0ID0gdHJ1ZTsK
KyAgICBjb25zdCBib29sIGlzQmlnRW5kaWFuID0gZmFsc2U7CisgICAgY29uc3QgYm9vbCBpc05v
bkludGVybGVhdmVkID0gdHJ1ZTsKKyAgICBGaWxsT3V0QVNCREZvckxQQ00obV9zdHJlYW1Gb3Jt
YXQsIG1fc2FtcGxlUmF0ZSwgY2hhbm5lbENvdW50LCBiaXRzUGVyQnl0ZSAqIGJ5dGVzUGVyRmxv
YXQsIGJpdHNQZXJCeXRlICogYnl0ZXNQZXJGbG9hdCwgaXNGbG9hdCwgaXNCaWdFbmRpYW4sIGlz
Tm9uSW50ZXJsZWF2ZWQpOwogCi0gICAgdWludDhfdCogYnVmZmVyRGF0YSA9IHJlaW50ZXJwcmV0
X2Nhc3Q8dWludDhfdCo+KG1fYXVkaW9CdWZmZXJMaXN0LmdldCgpKSArIGJhc2VTaXplOwotICAg
IEF1ZGlvU2FtcGxlQnVmZmVyTGlzdDo6Y29uZmlndXJlQnVmZmVyTGlzdEZvclN0cmVhbSgqbV9h
dWRpb0J1ZmZlckxpc3QuZ2V0KCksIG1fc3RyZWFtRm9ybWF0LCBidWZmZXJEYXRhLCBidWZmZXJE
YXRhU2l6ZSk7CisgICAgbV9hdWRpb0J1ZmZlckxpc3QgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkF1
ZGlvQnVmZmVyTGlzdD4obV9zdHJlYW1Gb3JtYXQsIG1fc3RyZWFtRm9ybWF0Lm1CeXRlc1BlckZy
YW1lICogbV9tYXhpbWl1bUZyYW1lQ291bnQpOwogCiAgICAgQ01Gb3JtYXREZXNjcmlwdGlvblJl
ZiBmb3JtYXREZXNjcmlwdGlvbjsKICAgICBDTUF1ZGlvRm9ybWF0RGVzY3JpcHRpb25DcmVhdGUo
TlVMTCwgJm1fc3RyZWFtRm9ybWF0LCAwLCBOVUxMLCAwLCBOVUxMLCBOVUxMLCAmZm9ybWF0RGVz
Y3JpcHRpb24pOwpAQCAtMTc4LDQwICsxNTksNDIgQEAgdm9pZCBNb2NrUmVhbHRpbWVBdWRpb1Nv
dXJjZU1hYzo6cmVuZGVyKGRvdWJsZSBkZWx0YSkKICAgICB1aW50MzJfdCB0b3RhbEZyYW1lQ291
bnQgPSBhbGlnblRvMTZCeXRlcyhkZWx0YSAqIG1fc2FtcGxlUmF0ZSk7CiAgICAgdWludDMyX3Qg
ZnJhbWVDb3VudCA9IHN0ZDo6bWluKHRvdGFsRnJhbWVDb3VudCwgbV9tYXhpbWl1bUZyYW1lQ291
bnQpOwogICAgIGRvdWJsZSBlbGFwc2VkID0gZWxhcHNlZFRpbWUoKTsKLSAgICB3aGlsZSAoZnJh
bWVDb3VudCkgewotICAgICAgICBmbG9hdCAqYnVmZmVyID0gc3RhdGljX2Nhc3Q8ZmxvYXQgKj4o
bV9hdWRpb0J1ZmZlckxpc3QtPm1CdWZmZXJzWzBdLm1EYXRhKTsKLSAgICAgICAgZm9yICh1aW50
MzJfdCBmcmFtZSA9IDA7IGZyYW1lIDwgZnJhbWVDb3VudDsgKytmcmFtZSkgewotICAgICAgICAg
ICAgaW50IHBoYXNlID0gZm1vZChlbGFwc2VkLCAyKSAqIDE1OwotICAgICAgICAgICAgZG91Ymxl
IGluY3JlbWVudCA9IDA7Ci0gICAgICAgICAgICBib29sIHNpbGVudCA9IHRydWU7Ci0KLSAgICAg
ICAgICAgIHN3aXRjaCAocGhhc2UpIHsKLSAgICAgICAgICAgIGNhc2UgMDoKLSAgICAgICAgICAg
IGNhc2UgMTQ6IHsKLSAgICAgICAgICAgICAgICBpbnQgaW5kZXggPSBmbW9kKGVsYXBzZWQsIDEp
ICogMjsKLSAgICAgICAgICAgICAgICBpbmNyZW1lbnQgPSB0YXUgKiBmcmVxdWVuY2llc1tpbmRl
eF0gLyBtX3NhbXBsZVJhdGU7Ci0gICAgICAgICAgICAgICAgc2lsZW50ID0gZmFsc2U7Ci0gICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBkZWZhdWx0Ogot
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBpZiAo
c2lsZW50KSB7Ci0gICAgICAgICAgICAgICAgYnVmZmVyW2ZyYW1lXSA9IDA7Ci0gICAgICAgICAg
ICAgICAgY29udGludWU7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGZsb2F0IHRvbmUg
PSBzaW4odGhldGEpICogMC4yNTsKLSAgICAgICAgICAgIGJ1ZmZlcltmcmFtZV0gPSB0b25lOwor
ICAgIHdoaWxlIChmcmFtZUNvdW50KSB7CisgICAgICAgIGZvciAoYXV0byYgYXVkaW9CdWZmZXIg
OiBtX2F1ZGlvQnVmZmVyTGlzdC0+YnVmZmVycygpKSB7CisgICAgICAgICAgICBhdWRpb0J1ZmZl
ci5tRGF0YUJ5dGVTaXplID0gZnJhbWVDb3VudCAqIG1fc3RyZWFtRm9ybWF0Lm1CeXRlc1BlckZy
YW1lOworICAgICAgICAgICAgZmxvYXQgKmJ1ZmZlciA9IHN0YXRpY19jYXN0PGZsb2F0ICo+KGF1
ZGlvQnVmZmVyLm1EYXRhKTsKKyAgICAgICAgICAgIGZvciAodWludDMyX3QgZnJhbWUgPSAwOyBm
cmFtZSA8IGZyYW1lQ291bnQ7ICsrZnJhbWUpIHsKKyAgICAgICAgICAgICAgICBpbnQgcGhhc2Ug
PSBmbW9kKGVsYXBzZWQsIDIpICogMTU7CisgICAgICAgICAgICAgICAgZG91YmxlIGluY3JlbWVu
dCA9IDA7CisgICAgICAgICAgICAgICAgYm9vbCBzaWxlbnQgPSB0cnVlOworCisgICAgICAgICAg
ICAgICAgc3dpdGNoIChwaGFzZSkgeworICAgICAgICAgICAgICAgIGNhc2UgMDoKKyAgICAgICAg
ICAgICAgICBjYXNlIDE0OiB7CisgICAgICAgICAgICAgICAgICAgIGludCBpbmRleCA9IGZtb2Qo
ZWxhcHNlZCwgMSkgKiAyOworICAgICAgICAgICAgICAgICAgICBpbmNyZW1lbnQgPSB0YXUgKiBm
cmVxdWVuY2llc1tpbmRleF0gLyBtX3NhbXBsZVJhdGU7CisgICAgICAgICAgICAgICAgICAgIHNp
bGVudCA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYgKHNpbGVudCkgeworICAg
ICAgICAgICAgICAgICAgICBidWZmZXJbZnJhbWVdID0gMDsKKyAgICAgICAgICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgZmxvYXQgdG9u
ZSA9IHNpbih0aGV0YSkgKiAwLjI1OworICAgICAgICAgICAgICAgIGJ1ZmZlcltmcmFtZV0gPSB0
b25lOwogCiAgICAgICAgICAgICAgICAgdGhldGEgKz0gaW5jcmVtZW50OwotICAgICAgICAgICAg
aWYgKHRoZXRhID4gdGF1KQotICAgICAgICAgICAgICAgIHRoZXRhIC09IHRhdTsKLSAgICAgICAg
ICAgIGVsYXBzZWQgKz0gMSAvIG1fc2FtcGxlUmF0ZTsKKyAgICAgICAgICAgICAgICBpZiAodGhl
dGEgPiB0YXUpCisgICAgICAgICAgICAgICAgICAgIHRoZXRhIC09IHRhdTsKKyAgICAgICAgICAg
ICAgICBlbGFwc2VkICs9IDEgLyBtX3NhbXBsZVJhdGU7CisgICAgICAgICAgICB9CiAgICAgICAg
IH0KLQotICAgICAgICBtX2F1ZGlvQnVmZmVyTGlzdC0+bUJ1ZmZlcnNbMF0ubURhdGFCeXRlU2l6
ZSA9IGZyYW1lQ291bnQgKiBzaXplb2YoZmxvYXQpOwogICAgICAgICBlbWl0U2FtcGxlQnVmZmVy
cyhmcmFtZUNvdW50KTsKICAgICAgICAgdG90YWxGcmFtZUNvdW50IC09IGZyYW1lQ291bnQ7CiAg
ICAgICAgIGZyYW1lQ291bnQgPSBzdGQ6Om1pbih0b3RhbEZyYW1lQ291bnQsIG1fbWF4aW1pdW1G
cmFtZUNvdW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL21hYy9SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5jcHAK
aW5kZXggM2ViYWMyZGYzZDRkZTQ0NmIwMjQxY2NlMzNjZjRlNTMyMGNiZDMyYi4uZjFlOWU5OWMw
YTVlYjQzY2M0YzU1OTY5ZmZjZmM3NGY3OTUzYmVkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1l
T3V0Z29pbmdBdWRpb1NvdXJjZS5jcHAKQEAgLTM1LDcgKzM1LDcgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi12b2lkIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6YXVkaW9TYW1wbGVz
QXZhaWxhYmxlKGNvbnN0IE1lZGlhVGltZSYsIHZvaWQqLCBjb25zdCBBdWRpb1N0cmVhbURlc2Ny
aXB0aW9uJiwgc2l6ZV90KQordm9pZCBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6OmF1ZGlv
U2FtcGxlc0F2YWlsYWJsZShjb25zdCBNZWRpYVRpbWUmLCBQbGF0Zm9ybUF1ZGlvRGF0YSYsIGNv
bnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mLCBzaXplX3QpCiB7CiAgICAgbm90SW1wbGVtZW50
ZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L21hYy9SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuaAppbmRleCA0
YzRlOTE4YTg2ODRkNzEwNDZjMmEyMmI3MzJjMmVkOGVhZmMzM2U4Li5mZTE0MTBjNzZmNmY2MDFj
MDYyZWY3N2NlZDU5Mjk5MThmMjlhYmYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdB
dWRpb1NvdXJjZS5oCkBAIC02Niw3ICs2Niw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzb3VyY2VN
dXRlZENoYW5nZWQoKSBmaW5hbCB7IH0KICAgICB2b2lkIHNvdXJjZVNldHRpbmdzQ2hhbmdlZCgp
IGZpbmFsIHsgfQogICAgIGJvb2wgcHJldmVudFNvdXJjZUZyb21TdG9wcGluZygpIGZpbmFsIHsg
cmV0dXJuIGZhbHNlOyB9Ci0gICAgdm9pZCBhdWRpb1NhbXBsZXNBdmFpbGFibGUoY29uc3QgTWVk
aWFUaW1lJiwgdm9pZCosIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mLCBzaXplX3QpIGZp
bmFsOworICAgIHZvaWQgYXVkaW9TYW1wbGVzQXZhaWxhYmxlKGNvbnN0IE1lZGlhVGltZSYsIFBs
YXRmb3JtQXVkaW9EYXRhJiwgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYsIHNpemVfdCkg
ZmluYWw7CiAKICAgICB2b2lkIGNvbnZlcnRBbmRTZW5kTW9ub1NhbXBsZXMoKTsKICAgICB2b2lk
IGNvbnZlcnRBbmRTZW5kU3RlcmVvU2FtcGxlcygpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>