<?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>127274</bug_id>
          
          <creation_ts>2014-01-20 02:05:48 -0800</creation_ts>
          <short_desc>Move WebAudio source code to std::unique_ptr</short_desc>
          <delta_ts>2014-01-20 13:31:37 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Zan Dobersek">zan</reporter>
          <assigned_to name="Zan Dobersek">zan</assigned_to>
          <cc>andersca</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>glenn</cc>
    
    <cc>jer.noble</cc>
    
    <cc>pnormand</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>969774</commentid>
    <comment_count>0</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2014-01-20 02:05:48 -0800</bug_when>
    <thetext>Move WebAudio source code to std::unique_ptr</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>969775</commentid>
    <comment_count>1</comment_count>
      <attachid>221637</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2014-01-20 02:07:32 -0800</bug_when>
    <thetext>Created attachment 221637
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>969959</commentid>
    <comment_count>2</comment_count>
      <attachid>221637</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2014-01-20 12:31:55 -0800</bug_when>
    <thetext>Comment on attachment 221637
Patch

Clearing flags on attachment: 221637

Committed r162368: &lt;http://trac.webkit.org/changeset/162368&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>969960</commentid>
    <comment_count>3</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2014-01-20 12:32:05 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>969981</commentid>
    <comment_count>4</comment_count>
      <attachid>221637</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-01-20 13:26:07 -0800</bug_when>
    <thetext>Comment on attachment 221637
Patch

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

&gt; Source/WebCore/Modules/webaudio/AudioNode.cpp:334
&gt; -    ASSERT(m_inputs.contains(input));
&gt; -    if (!m_inputs.contains(input))
&gt; -        return;
&gt; +    for (const std::unique_ptr&lt;AudioNodeInput&gt;&amp; savedInput : m_inputs) {
&gt; +        if (input == savedInput.get()) {
&gt; +            input-&gt;updateInternalBus();
&gt; +            return;
&gt; +        }
&gt; +    }
&gt;  
&gt; -    input-&gt;updateInternalBus();
&gt; +    ASSERT_NOT_REACHED();

The new code seems clearly worse than the old here. Is there something we can do about that? Maybe we can overload the contains function so it can be used with a raw pointer in a case like this?

&gt; Source/WebCore/platform/audio/HRTFDatabaseLoader.cpp:80
&gt; -    m_hrtfDatabase.clear();
&gt; +    m_hrtfDatabase.reset();

Normally we just use

    m_hrtfDatabase = nullptr;

for a case like this.

&gt; Source/WebCore/platform/audio/HRTFKernel.h:60
&gt; +        return adoptRef(new HRTFKernel(std::forward&lt;std::unique_ptr&lt;FFTFrame&gt;&gt;(fftFrame), frameDelay, sampleRate));

I’m really surprised that we needed the template argument for std::forward here. I would expect just std::forward(fftFrame) or std::move(fftFrame) would work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>969985</commentid>
    <comment_count>5</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2014-01-20 13:31:37 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; The new code seems clearly worse than the old here. Is there something we can do about that? Maybe we can overload the contains function so it can be used with a raw pointer in a case like this?

I&apos;d actually like to get rid of Vector::contains since it&apos;s O(n). Forcing users to write out the full loop makes it more obvious that it&apos;s a linear operation.

&gt; 
&gt; &gt; Source/WebCore/platform/audio/HRTFDatabaseLoader.cpp:80
&gt; &gt; -    m_hrtfDatabase.clear();
&gt; &gt; +    m_hrtfDatabase.reset();
&gt; 
&gt; Normally we just use
&gt; 
&gt;     m_hrtfDatabase = nullptr;
&gt; 
&gt; for a case like this.
&gt; 
&gt; &gt; Source/WebCore/platform/audio/HRTFKernel.h:60
&gt; &gt; +        return adoptRef(new HRTFKernel(std::forward&lt;std::unique_ptr&lt;FFTFrame&gt;&gt;(fftFrame), frameDelay, sampleRate));
&gt; 
&gt; I’m really surprised that we needed the template argument for std::forward here. I would expect just std::forward(fftFrame) or std::move(fftFrame) would work.

std::forward should only be used together with template type parameters. This should use move.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>221637</attachid>
            <date>2014-01-20 02:07:32 -0800</date>
            <delta_ts>2014-01-20 13:26:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-127274-20140120020729.patch</filename>
            <type>text/plain</type>
            <size>94174</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYyMzEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWZkZTgxZTZiNDQ5ZDcw
NDIxYTc5NTA3YjVhZTgzYzc5MDA1ZTRiNy4uMWEzNjRjNjc3ZTY5OWEyYzY1NmM1YzdmZjJhMTQ5
OThlYWQ1MmQ4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2MSBAQAorMjAxNC0wMS0yMCAgWmFu
IERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CisKKyAgICAgICAgTW92ZSBXZWJBdWRp
byBzb3VyY2UgY29kZSB0byBzdGQ6OnVuaXF1ZV9wdHIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNzI3NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmUgZnJvbSB1c2luZyBPd25QdHIgYW5kIFBhc3NP
d25QdHIgdG8gdXNpbmcgc3RkOjp1bmlxdWVfcHRyIGFuZCBtb3ZlIHNlbWFudGljcworICAgICAg
ICBpbiB0aGUgV2ViQXVkaW8gbW9kdWxlIGFuZCB0aGUgV2ViQXVkaW8gY29kZSBpbiB0aGUgcGxh
dGZvcm0gbGF5ZXIuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0FzeW5jQXVkaW9EZWNv
ZGVyLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0FzeW5jQXVkaW9EZWNvZGVyLmg6
CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZTo6QXVkaW9CYXNpY0lu
c3BlY3Rvck5vZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNpY1Byb2Nl
c3Nvck5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGU6
OkF1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvQmFzaWNQcm9jZXNzb3JOb2RlLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRp
b0J1ZmZlclNvdXJjZU5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdWZmZXJTb3Vy
Y2VOb2RlOjpBdWRpb0J1ZmZlclNvdXJjZU5vZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVk
aW8vQXVkaW9Db250ZXh0LmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29u
dGV4dC5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9EZXN0aW5hdGlvbk5vZGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbk5vZGU6OkF1ZGlvRGVzdGlu
YXRpb25Ob2RlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpBdWRpb05vZGU6OmFkZElucHV0KToKKyAgICAgICAgKFdlYkNvcmU6
OkF1ZGlvTm9kZTo6YWRkT3V0cHV0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvTm9kZTo6Y2hl
Y2tOdW1iZXJPZkNoYW5uZWxzRm9ySW5wdXQpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8v
QXVkaW9Ob2RlLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9CaXF1YWRGaWx0ZXJOb2Rl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpcXVhZEZpbHRlck5vZGU6OkJpcXVhZEZpbHRlck5v
ZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQmlxdWFkUHJvY2Vzc29yLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkJpcXVhZFByb2Nlc3Nvcjo6Y3JlYXRlS2VybmVsKToKKyAgICAgICAg
KFdlYkNvcmU6OkJpcXVhZFByb2Nlc3Nvcjo6Z2V0RnJlcXVlbmN5UmVzcG9uc2UpOgorICAgICAg
ICAqIE1vZHVsZXMvd2ViYXVkaW8vQmlxdWFkUHJvY2Vzc29yLmg6CisgICAgICAgICogTW9kdWxl
cy93ZWJhdWRpby9DaGFubmVsTWVyZ2VyTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDaGFu
bmVsTWVyZ2VyTm9kZTo6Q2hhbm5lbE1lcmdlck5vZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
YXVkaW8vQ2hhbm5lbFNwbGl0dGVyTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDaGFubmVs
U3BsaXR0ZXJOb2RlOjpDaGFubmVsU3BsaXR0ZXJOb2RlKToKKyAgICAgICAgKiBNb2R1bGVzL3dl
YmF1ZGlvL0NvbnZvbHZlck5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udm9sdmVyTm9k
ZTo6Q29udm9sdmVyTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpDb252b2x2ZXJOb2RlOjp1bmlu
aXRpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6Q29udm9sdmVyTm9kZTo6c2V0QnVmZmVyKToK
KyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0NvbnZvbHZlck5vZGUuaDoKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmF1ZGlvL0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oOgorICAgICAgICAq
IE1vZHVsZXMvd2ViYXVkaW8vRGVsYXlOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRlbGF5
Tm9kZTo6RGVsYXlOb2RlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0RlbGF5UHJvY2Vz
c29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRlbGF5UHJvY2Vzc29yOjpjcmVhdGVLZXJuZWwp
OgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vRGVsYXlQcm9jZXNzb3IuaDoKKyAgICAgICAg
KiBNb2R1bGVzL3dlYmF1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvck5vZGUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RHluYW1pY3NDb21wcmVzc29yTm9kZTo6RHluYW1pY3NDb21wcmVzc29yTm9kZSk6
CisgICAgICAgIChXZWJDb3JlOjpEeW5hbWljc0NvbXByZXNzb3JOb2RlOjppbml0aWFsaXplKToK
KyAgICAgICAgKFdlYkNvcmU6OkR5bmFtaWNzQ29tcHJlc3Nvck5vZGU6OnVuaW5pdGlhbGl6ZSk6
CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9EeW5hbWljc0NvbXByZXNzb3JOb2RlLmg6Cisg
ICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9HYWluTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpHYWluTm9kZTo6R2Fpbk5vZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vTWVkaWFF
bGVtZW50QXVkaW9Tb3VyY2VOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRWxlbWVu
dEF1ZGlvU291cmNlTm9kZTo6TWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZTo6c2V0Rm9ybWF0KToKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmF1ZGlvL01lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZS5oOgorICAg
ICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZS5o
OgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZS5jcHA6
CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZTo6TWVkaWFT
dHJlYW1BdWRpb1NvdXJjZU5vZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vTWVkaWFT
dHJlYW1BdWRpb1NvdXJjZU5vZGUuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL09zY2ls
bGF0b3JOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok9zY2lsbGF0b3JOb2RlOjpPc2NpbGxh
dG9yTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBhbm5lck5vZGU6OlBhbm5lck5vZGUpOgorICAgICAgICAoV2ViQ29y
ZTo6UGFubmVyTm9kZTo6dW5pbml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlBhbm5lck5v
ZGU6OnNldFBhbm5pbmdNb2RlbCk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJO
b2RlLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9QZXJpb2RpY1dhdmUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UGVyaW9kaWNXYXZlOjpjcmVhdGVCYW5kTGltaXRlZFRhYmxlcyk6Cisg
ICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9QZXJpb2RpY1dhdmUuaDoKKyAgICAgICAgKiBNb2R1
bGVzL3dlYmF1ZGlvL1JlYWx0aW1lQW5hbHlzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVh
bHRpbWVBbmFseXNlcjo6UmVhbHRpbWVBbmFseXNlcik6CisgICAgICAgIChXZWJDb3JlOjpSZWFs
dGltZUFuYWx5c2VyOjpzZXRGZnRTaXplKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL1Jl
YWx0aW1lQW5hbHlzZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nl
c3Nvck5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0UHJvY2Vzc29yTm9kZTo6U2Ny
aXB0UHJvY2Vzc29yTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVy
RFNQS2VybmVsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldhdmVTaGFwZXJEU1BLZXJuZWw6Omxh
enlJbml0aWFsaXplT3ZlcnNhbXBsaW5nKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL1dh
dmVTaGFwZXJEU1BLZXJuZWwuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFw
ZXJOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldhdmVTaGFwZXJOb2RlOjpXYXZlU2hhcGVy
Tm9kZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyUHJvY2Vzc29yLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OldhdmVTaGFwZXJQcm9jZXNzb3I6OmNyZWF0ZUtlcm5lbCk6
CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyUHJvY2Vzc29yLmg6CisgICAg
ICAgICogcGxhdGZvcm0vYXVkaW8vQXVkaW9CdXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9CdXM6OkF1ZGlvQnVzKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQnVzOjpjb3B5V2l0aEdh
aW5Gcm9tKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9BdWRpb0J1cy5oOgorICAgICAgICAq
IHBsYXRmb3JtL2F1ZGlvL0F1ZGlvQ2hhbm5lbC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vYXVk
aW8vQXVkaW9DaGFubmVsLmg6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NoYW5uZWw6OkF1ZGlv
Q2hhbm5lbCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NoYW5uZWw6OnNldCk6CisgICAgICAg
ICogcGxhdGZvcm0vYXVkaW8vQXVkaW9EU1BLZXJuZWxQcm9jZXNzb3IuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9hdWRpby9BdWRpb0Rlc3RpbmF0aW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vYXVk
aW8vQXVkaW9SZXNhbXBsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9SZXNhbXBsZXI6
OkF1ZGlvUmVzYW1wbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvUmVzYW1wbGVyOjpjb25m
aWd1cmVDaGFubmVscyk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vQXVkaW9SZXNhbXBsZXIu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RHluYW1pY3NDb21wcmVzc29yOjpzZXROdW1iZXJPZkNoYW5uZWxzKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3IuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRp
by9EeW5hbWljc0NvbXByZXNzb3JLZXJuZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHluYW1p
Y3NDb21wcmVzc29yS2VybmVsOjpzZXROdW1iZXJPZkNoYW5uZWxzKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3JLZXJuZWwuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9hdWRpby9GRlRGcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRlRGcmFtZTo6Y3JlYXRl
SW50ZXJwb2xhdGVkRnJhbWUpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0ZGVEZyYW1lLmg6
CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vSFJURkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkhSVEZEYXRhYmFzZTo6SFJURkRhdGFiYXNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9h
dWRpby9IUlRGRGF0YWJhc2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9IUlRGRGF0YWJh
c2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFJURkRhdGFiYXNlTG9hZGVyOjp+SFJU
RkRhdGFiYXNlTG9hZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkhSVEZEYXRhYmFzZUxvYWRlcjo6
bG9hZCk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vSFJURkRhdGFiYXNlTG9hZGVyLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vYXVkaW8vSFJURkVsZXZhdGlvbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIUlRGRWxldmF0aW9uOjpjcmVhdGVGb3JTdWJqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkhSVEZFbGV2YXRpb246OmNyZWF0ZUJ5SW50ZXJwb2xhdGluZ1NsaWNlcyk6CisgICAgICAgICog
cGxhdGZvcm0vYXVkaW8vSFJURkVsZXZhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6SFJURkVs
ZXZhdGlvbjo6SFJURkVsZXZhdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vSFJURktl
cm5lbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIUlRGS2VybmVsOjpIUlRGS2VybmVsKToKKyAg
ICAgICAgKFdlYkNvcmU6OkhSVEZLZXJuZWw6OmNyZWF0ZUltcHVsc2VSZXNwb25zZSk6CisgICAg
ICAgIChXZWJDb3JlOjpIUlRGS2VybmVsOjpjcmVhdGVJbnRlcnBvbGF0ZWRLZXJuZWwpOgorICAg
ICAgICAqIHBsYXRmb3JtL2F1ZGlvL0hSVEZLZXJuZWwuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhS
VEZLZXJuZWw6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIUlRGS2VybmVsOjpIUlRGS2Vy
bmVsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9NdWx0aUNoYW5uZWxSZXNhbXBsZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TXVsdGlDaGFubmVsUmVzYW1wbGVyOjpNdWx0aUNoYW5uZWxS
ZXNhbXBsZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL011bHRpQ2hhbm5lbFJlc2FtcGxl
ci5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1Bhbm5lci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpQYW5uZXI6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vUGFubmVyLmg6
CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vUmV2ZXJiLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJldmVyYjo6aW5pdGlhbGl6ZSk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vUmV2ZXJiLmg6
CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyLmg6CisgICAgICAgICog
cGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyU3RhZ2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmV2ZXJiQ29udm9sdmVyU3RhZ2U6OlJldmVyYkNvbnZvbHZlclN0YWdlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXJTdGFnZS5oOgorICAgICAgICAqIHBsYXRm
b3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb246OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZv
cm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRmlsZVJlYWRlckdTdHJlYW1lci5jcHA6CisgICAgICAg
ICogcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvRGVzdGluYXRpb25JT1MuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9h
dWRpby9pb3MvQXVkaW9TZXNzaW9uSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNz
aW9uOjpBdWRpb1Nlc3Npb24pOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rl
c3RpbmF0aW9uTWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb246OmNy
ZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvRGVzdGluYXRpb25NYWMu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9TZXNzaW9uTWFjLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbjo6QXVkaW9TZXNzaW9uKToKKwogMjAxNC0wMS0y
MCAgTW9ydGVuIFN0ZW5zaG9ybmUgIDxtc3RlbnNob0BvcGVyYS5jb20+CiAKICAgICAgICAgUmVn
aW9uIGJhc2VkIG11bHRpY29sOiB0YWxsIGxpbmUgY2F1c2VzIHRhbGxlciBtdWx0aWNvbCBjb250
YWluZXIgdGhhbiBuZWNlc3NhcnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQXN5bmNBdWRpb0RlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9Bc3luY0F1ZGlvRGVjb2Rlci5jcHAKaW5kZXggNjM1YjJiOGU2MDM2OTY3YjFhMTg4
YjVkYzhhNjM4ZmJjZGE1ODZhNi4uMzY5OGJmNWVmNjk0Y2E5N2RmZGMzNTgwMjAzODY3ZTQ5NTE3
YjI2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Bc3luY0F1
ZGlvRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Bc3lu
Y0F1ZGlvRGVjb2Rlci5jcHAKQEAgLTMyLDggKzMyLDYgQEAKICNpbmNsdWRlICJBdWRpb0J1ZmZl
ckNhbGxiYWNrLmgiCiAjaW5jbHVkZSA8cnVudGltZS9BcnJheUJ1ZmZlci5oPgogI2luY2x1ZGUg
PHd0Zi9NYWluVGhyZWFkLmg+Ci0jaW5jbHVkZSA8d3RmL093blB0ci5oPgotI2luY2x1ZGUgPHd0
Zi9QYXNzT3duUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Bc3luY0F1ZGlvRGVjb2Rlci5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Bc3luY0F1ZGlvRGVjb2Rlci5oCmluZGV4IDk3MTM2
ODc0M2E2ZDU4ZTA4MTIyNGFhOWNjZGVhYzc3MGI2MDc0NDAuLmZmMDk2ZWNhZjljNDg4YjZmMGE2
ZTY3YjQ2YjM0NGQwZDY2YThkZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQXN5bmNBdWRpb0RlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0FzeW5jQXVkaW9EZWNvZGVyLmgKQEAgLTI1LDkgKzI1LDkgQEAKICNpZm5kZWYg
QXN5bmNBdWRpb0RlY29kZXJfaAogI2RlZmluZSBBc3luY0F1ZGlvRGVjb2Rlcl9oCiAKKyNpbmNs
dWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvTWVz
c2FnZVF1ZXVlLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYv
UGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvVGhy
ZWFkaW5nLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvQmFzaWNJbnNwZWN0b3JOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9CYXNpY0luc3BlY3Rvck5vZGUuY3BwCmluZGV4IDNhZTBkZDQxMWFlZWMxNWVhN2Jh
OGU0ZTAwMWJkYzNmY2UyMmFmY2IuLjU4ZmQ5YjJhYjkzYjgzOTFkZTA1M2I5MTBmZjkzNzgwZjgy
YWFiZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9C
YXNpY0luc3BlY3Rvck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9CYXNpY0luc3BlY3Rvck5vZGUuY3BwCkBAIC0zOCw4ICszOCw4IEBAIEF1ZGlvQmFz
aWNJbnNwZWN0b3JOb2RlOjpBdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZShBdWRpb0NvbnRleHQqIGNv
bnRleHQsIGZsb2F0IHNhCiAgICAgOiBBdWRpb05vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkKICAg
ICAsIG1fbmVlZEF1dG9tYXRpY1B1bGwoZmFsc2UpCiB7Ci0gICAgYWRkSW5wdXQoYWRvcHRQdHIo
bmV3IEF1ZGlvTm9kZUlucHV0KHRoaXMpKSk7Ci0gICAgYWRkT3V0cHV0KGFkb3B0UHRyKG5ldyBB
dWRpb05vZGVPdXRwdXQodGhpcywgb3V0cHV0Q2hhbm5lbENvdW50KSkpOworICAgIGFkZElucHV0
KHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9Ob2RlSW5wdXQ+KHRoaXMpKTsKKyAgICBhZGRPdXRwdXQo
c3RkOjptYWtlX3VuaXF1ZTxBdWRpb05vZGVPdXRwdXQ+KHRoaXMsIG91dHB1dENoYW5uZWxDb3Vu
dCkpOwogfQogCiAvLyBXZSBvdmVycmlkZSBwdWxsSW5wdXRzKCkgYXMgYW4gb3B0aW1pemF0aW9u
IGFsbG93aW5nIHRoaXMgbm9kZSB0byB0YWtlIGFkdmFudGFnZSBvZiBpbi1wbGFjZSBwcm9jZXNz
aW5nLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jh
c2ljUHJvY2Vzc29yTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvQmFzaWNQcm9jZXNzb3JOb2RlLmNwcAppbmRleCBlMDc2ZDQ1NWFiY2EwMDdiYzVjNGNmMTM5
YWFlYmVlNjhjZmM5ZDA0Li5hZmE2N2E5YWQxZWU5MDVmNGJlYjhlMWIxYThjMTlhYmM1MDVkZmYx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNQ
cm9jZXNzb3JOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvQmFzaWNQcm9jZXNzb3JOb2RlLmNwcApAQCAtMzksOCArMzksOCBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiBBdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZTo6QXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUo
QXVkaW9Db250ZXh0KiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQogICAgIDogQXVkaW9Ob2Rl
KGNvbnRleHQsIHNhbXBsZVJhdGUpCiB7Ci0gICAgYWRkSW5wdXQoYWRvcHRQdHIobmV3IEF1ZGlv
Tm9kZUlucHV0KHRoaXMpKSk7Ci0gICAgYWRkT3V0cHV0KGFkb3B0UHRyKG5ldyBBdWRpb05vZGVP
dXRwdXQodGhpcywgMSkpKTsKKyAgICBhZGRJbnB1dChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvTm9k
ZUlucHV0Pih0aGlzKSk7CisgICAgYWRkT3V0cHV0KHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9Ob2Rl
T3V0cHV0Pih0aGlzLCAxKSk7CiAKICAgICAvLyBUaGUgc3ViY2xhc3MgbXVzdCBjcmVhdGUgbV9w
cm9jZXNzb3IuCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlLmgKaW5kZXggNzU0OWExYjc3NWM4MWYwNDJiNmVi
YmNhMGE0ZjkzMWE5YmRjZWNkYS4uZDg5NDZlMWM5NTJmODZhMjZlZGFkZjJlNjk4NGRkN2Y4MDM1
MDRkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jh
c2ljUHJvY2Vzc29yTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUuaApAQCAtMjYsNiArMjYsNyBAQAogI2RlZmluZSBBdWRp
b0Jhc2ljUHJvY2Vzc29yTm9kZV9oCiAKICNpbmNsdWRlICJBdWRpb05vZGUuaCIKKyNpbmNsdWRl
IDxtZW1vcnk+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KQEAgLTU5LDcgKzYwLDcgQEAg
cHJvdGVjdGVkOgogICAgIHZpcnR1YWwgZG91YmxlIGxhdGVuY3lUaW1lKCkgY29uc3Qgb3ZlcnJp
ZGU7CiAKICAgICBBdWRpb1Byb2Nlc3NvciogcHJvY2Vzc29yKCkgeyByZXR1cm4gbV9wcm9jZXNz
b3IuZ2V0KCk7IH0KLSAgICBPd25QdHI8QXVkaW9Qcm9jZXNzb3I+IG1fcHJvY2Vzc29yOworICAg
IHN0ZDo6dW5pcXVlX3B0cjxBdWRpb1Byb2Nlc3Nvcj4gbV9wcm9jZXNzb3I7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5jcHAKaW5kZXggOTdkODEzMzIxYTMwZDIy
YjRhZmU3NzljYmY0NTliNWYwOTk0YWM4MS4uOGVlNmQ2MWI5ZGQ3MDg2MjQ4OGQ4ZGRkZmY0OWI4
YzliYjlmZmQ1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9B
dWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNwcApAQCAtNzMsNyArNzMsNyBAQCBBdWRpb0J1
ZmZlclNvdXJjZU5vZGU6OkF1ZGlvQnVmZmVyU291cmNlTm9kZShBdWRpb0NvbnRleHQqIGNvbnRl
eHQsIGZsb2F0IHNhbXBsZQogICAgIG1fcGxheWJhY2tSYXRlID0gQXVkaW9QYXJhbTo6Y3JlYXRl
KGNvbnRleHQsICJwbGF5YmFja1JhdGUiLCAxLjAsIDAuMCwgTWF4UmF0ZSk7CiAKICAgICAvLyBE
ZWZhdWx0IHRvIG1vbm8uICBBIGNhbGwgdG8gc2V0QnVmZmVyKCkgd2lsbCBzZXQgdGhlIG51bWJl
ciBvZiBvdXRwdXQgY2hhbm5lbHMgdG8gdGhhdCBvZiB0aGUgYnVmZmVyLgotICAgIGFkZE91dHB1
dChhZG9wdFB0cihuZXcgQXVkaW9Ob2RlT3V0cHV0KHRoaXMsIDEpKSk7CisgICAgYWRkT3V0cHV0
KHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9Ob2RlT3V0cHV0Pih0aGlzLCAxKSk7CiAKICAgICBpbml0
aWFsaXplKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
Q29udGV4dC5jcHAKaW5kZXggNDdhMWVhZDA0ZGEyOGQ4NWYzNjRjNmIxMDQwYTY5MzcyYjljMzM5
YS4uNzZmZDRmMWRmOTgzOTc0MDEyZDdiZWRiZmJjYTU4Y2Y2NzNlNmZhMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcApAQCAtODgsOCAr
ODgsNiBAQAogI2luY2x1ZGUgPHJ1bnRpbWUvQXJyYXlCdWZmZXIuaD4KICNpbmNsdWRlIDx3dGYv
QXRvbWljcy5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+Ci0jaW5jbHVkZSA8d3RmL093
blB0ci5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZi5o
PgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
Q29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQu
aAppbmRleCAyMGZjODJlMDc0MmM5MjgyZGM5YWVjNzcwYTM2YzA4YjYyY2Q2MDg1Li5lZTBlMGRm
NWZhMDc0ZWEyMjk2NWI3MzMyMmQ4MjFlY2Y5ZjQ2NTdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmgKQEAgLTM0LDcgKzM0LDYgQEAKICNpbmNs
dWRlICJNZWRpYUNhblN0YXJ0TGlzdGVuZXIuaCIKICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgog
I2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+Ci0jaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNp
bmNsdWRlIDx3dGYvUmVmUHRyLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCmluZGV4IDdlZGZhZDU5ZmM1ZTIw
NDg2ZmZlOTM3ZTA3YmI2M2I1ODJkNzZiZWYuLmNiZTg5YTlhODRjMzVmNDMwYjViYTNlYWEzOTQ2
ZWI4ZTM5MWFiZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCkBAIC00MCw3ICs0MCw3IEBAIEF1ZGlvRGVz
dGluYXRpb25Ob2RlOjpBdWRpb0Rlc3RpbmF0aW9uTm9kZShBdWRpb0NvbnRleHQqIGNvbnRleHQs
IGZsb2F0IHNhbXBsZVJhCiAgICAgOiBBdWRpb05vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkKICAg
ICAsIG1fY3VycmVudFNhbXBsZUZyYW1lKDApCiB7Ci0gICAgYWRkSW5wdXQoYWRvcHRQdHIobmV3
IEF1ZGlvTm9kZUlucHV0KHRoaXMpKSk7CisgICAgYWRkSW5wdXQoc3RkOjptYWtlX3VuaXF1ZTxB
dWRpb05vZGVJbnB1dD4odGhpcykpOwogICAgIAogICAgIHNldE5vZGVUeXBlKE5vZGVUeXBlRGVz
dGluYXRpb24pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05v
ZGUuY3BwCmluZGV4IDk5NjQxNDE2OThjMGE3OGNjNmFkZjBkZWY2YjNiNDA4M2Q5ZGJlNTcuLjMw
NWVkYTUxZmZjNTY5ZmExZTJhZWFjMWFkY2Y2ZDMzNWExMmQyYzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5jcHAKQEAgLTk4LDE0ICs5OCwxNCBAQCB2
b2lkIEF1ZGlvTm9kZTo6bGF6eUluaXRpYWxpemUoKQogICAgICAgICBpbml0aWFsaXplKCk7CiB9
CiAKLXZvaWQgQXVkaW9Ob2RlOjphZGRJbnB1dChQYXNzT3duUHRyPEF1ZGlvTm9kZUlucHV0PiBp
bnB1dCkKK3ZvaWQgQXVkaW9Ob2RlOjphZGRJbnB1dChzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9Ob2Rl
SW5wdXQ+IGlucHV0KQogewotICAgIG1faW5wdXRzLmFwcGVuZChpbnB1dCk7CisgICAgbV9pbnB1
dHMuYXBwZW5kKHN0ZDo6bW92ZShpbnB1dCkpOwogfQogCi12b2lkIEF1ZGlvTm9kZTo6YWRkT3V0
cHV0KFBhc3NPd25QdHI8QXVkaW9Ob2RlT3V0cHV0PiBvdXRwdXQpCit2b2lkIEF1ZGlvTm9kZTo6
YWRkT3V0cHV0KHN0ZDo6dW5pcXVlX3B0cjxBdWRpb05vZGVPdXRwdXQ+IG91dHB1dCkKIHsKLSAg
ICBtX291dHB1dHMuYXBwZW5kKG91dHB1dCk7CisgICAgbV9vdXRwdXRzLmFwcGVuZChzdGQ6Om1v
dmUob3V0cHV0KSk7CiB9CiAKIEF1ZGlvTm9kZUlucHV0KiBBdWRpb05vZGU6OmlucHV0KHVuc2ln
bmVkIGkpCkBAIC0zMjQsMTEgKzMyNCwxNCBAQCB2b2lkIEF1ZGlvTm9kZTo6Y2hlY2tOdW1iZXJP
ZkNoYW5uZWxzRm9ySW5wdXQoQXVkaW9Ob2RlSW5wdXQqIGlucHV0KQogewogICAgIEFTU0VSVChj
b250ZXh0KCktPmlzQXVkaW9UaHJlYWQoKSAmJiBjb250ZXh0KCktPmlzR3JhcGhPd25lcigpKTsK
IAotICAgIEFTU0VSVChtX2lucHV0cy5jb250YWlucyhpbnB1dCkpOwotICAgIGlmICghbV9pbnB1
dHMuY29udGFpbnMoaW5wdXQpKQotICAgICAgICByZXR1cm47CisgICAgZm9yIChjb25zdCBzdGQ6
OnVuaXF1ZV9wdHI8QXVkaW9Ob2RlSW5wdXQ+JiBzYXZlZElucHV0IDogbV9pbnB1dHMpIHsKKyAg
ICAgICAgaWYgKGlucHV0ID09IHNhdmVkSW5wdXQuZ2V0KCkpIHsKKyAgICAgICAgICAgIGlucHV0
LT51cGRhdGVJbnRlcm5hbEJ1cygpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9Cisg
ICAgfQogCi0gICAgaW5wdXQtPnVwZGF0ZUludGVybmFsQnVzKCk7CisgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiB9CiAKIGJvb2wgQXVkaW9Ob2RlOjpwcm9wYWdhdGVzU2lsZW5jZSgpIGNvbnN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGUuaAppbmRleCA1ZjE1
M2FlZGUxYTMwYWZhM2YxODYzNzEwYzMyYzk3MDBjMGQ2NzJkLi5jOTMwNDkzOWNlODI2Y2FiZDk1
MjAxYjljNTIwMzNkY2M4NzE2M2NkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9Ob2RlLmgKQEAgLTI3LDkgKzI3LDggQEAKIAogI2luY2x1ZGUgIkF1ZGlvQnVzLmgi
CiAjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKKyNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8
d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRlIDx3dGYvT3duUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1Bh
c3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgogCkBAIC0xODUsOCArMTg0LDggQEAgcHVibGljOgogCiBwcm90ZWN0ZWQ6CiAgICAgLy8g
SW5wdXRzIGFuZCBvdXRwdXRzIG11c3QgYmUgY3JlYXRlZCBiZWZvcmUgdGhlIEF1ZGlvTm9kZSBp
cyBpbml0aWFsaXplZC4KLSAgICB2b2lkIGFkZElucHV0KFBhc3NPd25QdHI8QXVkaW9Ob2RlSW5w
dXQ+KTsKLSAgICB2b2lkIGFkZE91dHB1dChQYXNzT3duUHRyPEF1ZGlvTm9kZU91dHB1dD4pOwor
ICAgIHZvaWQgYWRkSW5wdXQoc3RkOjp1bmlxdWVfcHRyPEF1ZGlvTm9kZUlucHV0Pik7CisgICAg
dm9pZCBhZGRPdXRwdXQoc3RkOjp1bmlxdWVfcHRyPEF1ZGlvTm9kZU91dHB1dD4pOwogICAgIAog
ICAgIC8vIENhbGxlZCBieSBwcm9jZXNzSWZOZWNlc3NhcnkoKSB0byBjYXVzZSBhbGwgcGFydHMg
b2YgdGhlIHJlbmRlcmluZyBncmFwaCBjb25uZWN0ZWQgdG8gdXMgdG8gcHJvY2Vzcy4KICAgICAv
LyBFYWNoIHJlbmRlcmluZyBxdWFudHVtLCB0aGUgYXVkaW8gZGF0YSBmb3IgZWFjaCBvZiB0aGUg
QXVkaW9Ob2RlJ3MgaW5wdXRzIHdpbGwgYmUgYXZhaWxhYmxlIGFmdGVyIHRoaXMgbWV0aG9kIGlz
IGNhbGxlZC4KQEAgLTIwMSw4ICsyMDAsOCBAQCBwcml2YXRlOgogICAgIE5vZGVUeXBlIG1fbm9k
ZVR5cGU7CiAgICAgUmVmUHRyPEF1ZGlvQ29udGV4dD4gbV9jb250ZXh0OwogICAgIGZsb2F0IG1f
c2FtcGxlUmF0ZTsKLSAgICBWZWN0b3I8T3duUHRyPEF1ZGlvTm9kZUlucHV0Pj4gbV9pbnB1dHM7
Ci0gICAgVmVjdG9yPE93blB0cjxBdWRpb05vZGVPdXRwdXQ+PiBtX291dHB1dHM7CisgICAgVmVj
dG9yPHN0ZDo6dW5pcXVlX3B0cjxBdWRpb05vZGVJbnB1dD4+IG1faW5wdXRzOworICAgIFZlY3Rv
cjxzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9Ob2RlT3V0cHV0Pj4gbV9vdXRwdXRzOwogCiAgICAgZG91
YmxlIG1fbGFzdFByb2Nlc3NpbmdUaW1lOwogICAgIGRvdWJsZSBtX2xhc3ROb25TaWxlbnRUaW1l
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CaXF1YWRGaWx0
ZXJOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkRmlsdGVy
Tm9kZS5jcHAKaW5kZXggMmY1MWE0ODI5M2I2MWYyNzMxMDVkZGFlNjQ5YzkzNmNlMTg3MGY3OS4u
YjA1YjE0NDVjMzc5OTk3MWJjNzBmZDc5NTc1NDZlOTc3ZTg5ZDQ0ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CaXF1YWRGaWx0ZXJOb2RlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZEZpbHRlck5vZGUuY3BwCkBAIC0z
Niw3ICszNiw3IEBAIEJpcXVhZEZpbHRlck5vZGU6OkJpcXVhZEZpbHRlck5vZGUoQXVkaW9Db250
ZXh0KiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQogICAgIDogQXVkaW9CYXNpY1Byb2Nlc3Nv
ck5vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkKIHsKICAgICAvLyBJbml0aWFsbHkgc2V0dXAgYXMg
bG93cGFzcyBmaWx0ZXIuCi0gICAgbV9wcm9jZXNzb3IgPSBhZG9wdFB0cihuZXcgQmlxdWFkUHJv
Y2Vzc29yKGNvbnRleHQsIHNhbXBsZVJhdGUsIDEsIGZhbHNlKSk7CisgICAgbV9wcm9jZXNzb3Ig
PSBzdGQ6Om1ha2VfdW5pcXVlPEJpcXVhZFByb2Nlc3Nvcj4oY29udGV4dCwgc2FtcGxlUmF0ZSwg
MSwgZmFsc2UpOwogICAgIHNldE5vZGVUeXBlKE5vZGVUeXBlQmlxdWFkRmlsdGVyKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CaXF1YWRQcm9jZXNz
b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CaXF1YWRQcm9jZXNzb3Iu
Y3BwCmluZGV4IGM0NDIzNmJjZmQ3NmU1N2RjNTcyMjUxMjc5YzVjZjRhNjU2NmZiNTYuLjljOThl
M2RkNTEzZWQ0MGJjMjY1N2Q5NzY3ODc1MjU3MmRhMDU3ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkUHJvY2Vzc29yLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZFByb2Nlc3Nvci5jcHAKQEAgLTYwLDkgKzYw
LDkgQEAgQmlxdWFkUHJvY2Vzc29yOjp+QmlxdWFkUHJvY2Vzc29yKCkKICAgICAgICAgdW5pbml0
aWFsaXplKCk7CiB9CiAKLVBhc3NPd25QdHI8QXVkaW9EU1BLZXJuZWw+IEJpcXVhZFByb2Nlc3Nv
cjo6Y3JlYXRlS2VybmVsKCkKK3N0ZDo6dW5pcXVlX3B0cjxBdWRpb0RTUEtlcm5lbD4gQmlxdWFk
UHJvY2Vzc29yOjpjcmVhdGVLZXJuZWwoKQogewotICAgIHJldHVybiBhZG9wdFB0cihuZXcgQmlx
dWFkRFNQS2VybmVsKHRoaXMpKTsKKyAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxCaXF1YWRE
U1BLZXJuZWw+KHRoaXMpOwogfQogCiB2b2lkIEJpcXVhZFByb2Nlc3Nvcjo6Y2hlY2tGb3JEaXJ0
eUNvZWZmaWNpZW50cygpCkBAIC0xMjgsNyArMTI4LDcgQEAgdm9pZCBCaXF1YWRQcm9jZXNzb3I6
OmdldEZyZXF1ZW5jeVJlc3BvbnNlKGludCBuRnJlcXVlbmNpZXMsCiAgICAgLy8gdG8gYXZvaWQg
aW50ZXJmZXJpbmcgd2l0aCB0aGUgcHJvY2Vzc2luZyBydW5uaW5nIGluIHRoZSBhdWRpbwogICAg
IC8vIHRocmVhZCBvbiB0aGUgbWFpbiBrZXJuZWxzLgogICAgIAotICAgIE93blB0cjxCaXF1YWRE
U1BLZXJuZWw+IHJlc3BvbnNlS2VybmVsID0gYWRvcHRQdHIobmV3IEJpcXVhZERTUEtlcm5lbCh0
aGlzKSk7CisgICAgYXV0byByZXNwb25zZUtlcm5lbCA9IHN0ZDo6bWFrZV91bmlxdWU8QmlxdWFk
RFNQS2VybmVsPih0aGlzKTsKIAogICAgIHJlc3BvbnNlS2VybmVsLT5nZXRGcmVxdWVuY3lSZXNw
b25zZShuRnJlcXVlbmNpZXMsIGZyZXF1ZW5jeUh6LCBtYWdSZXNwb25zZSwgcGhhc2VSZXNwb25z
ZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0JpcXVh
ZFByb2Nlc3Nvci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CaXF1YWRQcm9j
ZXNzb3IuaAppbmRleCAwYWE2MjZjYTZlNmIwMTk5ZDc3YjVlM2MyMDgyMmVjNDMzNDFlNjA0Li5k
YjZkZTNlMWE3MDU0MWM5M2Y4MzE0NmJiOWNiOWYwNTdhOTE4ZjJjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZFByb2Nlc3Nvci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkUHJvY2Vzc29yLmgKQEAgLTMwLDYgKzMw
LDcgQEAKICNpbmNsdWRlICJBdWRpb05vZGUuaCIKICNpbmNsdWRlICJBdWRpb1BhcmFtLmgiCiAj
aW5jbHVkZSAiQmlxdWFkLmgiCisjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9SZWZQ
dHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTMsNyArNTQsNyBAQCBwdWJsaWM6CiAK
ICAgICB2aXJ0dWFsIH5CaXF1YWRQcm9jZXNzb3IoKTsKICAgICAKLSAgICB2aXJ0dWFsIFBhc3NP
d25QdHI8QXVkaW9EU1BLZXJuZWw+IGNyZWF0ZUtlcm5lbCgpIG92ZXJyaWRlOworICAgIHZpcnR1
YWwgc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRFNQS2VybmVsPiBjcmVhdGVLZXJuZWwoKSBvdmVycmlk
ZTsKICAgICAgICAgCiAgICAgdmlydHVhbCB2b2lkIHByb2Nlc3MoY29uc3QgQXVkaW9CdXMqIHNv
dXJjZSwgQXVkaW9CdXMqIGRlc3RpbmF0aW9uLCBzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKSBvdmVy
cmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9DaGFu
bmVsTWVyZ2VyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NoYW5u
ZWxNZXJnZXJOb2RlLmNwcAppbmRleCA4ODY2Y2E1NDUzOTU3MjRlMDJjYjE1ZjMyNWI2Nzk2Mzdj
MDM1NzNlLi45ZjE5ODlhOTI5NzYyYmQyNmE1YTBiNDRkY2YyMjE0M2Y3YmFlZjMzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxNZXJnZXJOb2RlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxNZXJnZXJOb2Rl
LmNwcApAQCAtNTQsOSArNTQsOSBAQCBDaGFubmVsTWVyZ2VyTm9kZTo6Q2hhbm5lbE1lcmdlck5v
ZGUoQXVkaW9Db250ZXh0KiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlLCB1bgogewogICAgIC8v
IENyZWF0ZSB0aGUgcmVxdWVzdGVkIG51bWJlciBvZiBpbnB1dHMuCiAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IG51bWJlck9mSW5wdXRzOyArK2kpCi0gICAgICAgIGFkZElucHV0KGFkb3B0
UHRyKG5ldyBBdWRpb05vZGVJbnB1dCh0aGlzKSkpOworICAgICAgICBhZGRJbnB1dChzdGQ6Om1h
a2VfdW5pcXVlPEF1ZGlvTm9kZUlucHV0Pih0aGlzKSk7CiAKLSAgICBhZGRPdXRwdXQoYWRvcHRQ
dHIobmV3IEF1ZGlvTm9kZU91dHB1dCh0aGlzLCAxKSkpOworICAgIGFkZE91dHB1dChzdGQ6Om1h
a2VfdW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywgMSkpOwogICAgIAogICAgIHNldE5vZGVU
eXBlKE5vZGVUeXBlQ2hhbm5lbE1lcmdlcik7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxTcGxpdHRlck5vZGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9DaGFubmVsU3BsaXR0ZXJOb2RlLmNwcAppbmRleCA2MTUz
MjNmNTFmYmM2ODc1ZjZiM2FiMDgwNDcxYmUwNmQ1MjM3OGYwLi44OGVkMjlkNmNjZWEwYjY3ZmI1
NGQxNGY2NTc5YmE5YjM2ODQzMjZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0NoYW5uZWxTcGxpdHRlck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbFNwbGl0dGVyTm9kZS5jcHAKQEAgLTQ1LDExICs0NSwxMSBA
QCBQYXNzUmVmUHRyPENoYW5uZWxTcGxpdHRlck5vZGU+IENoYW5uZWxTcGxpdHRlck5vZGU6OmNy
ZWF0ZShBdWRpb0NvbnRleHQqIGNvbnRleAogQ2hhbm5lbFNwbGl0dGVyTm9kZTo6Q2hhbm5lbFNw
bGl0dGVyTm9kZShBdWRpb0NvbnRleHQqIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUsIHVuc2ln
bmVkIG51bWJlck9mT3V0cHV0cykKICAgICA6IEF1ZGlvTm9kZShjb250ZXh0LCBzYW1wbGVSYXRl
KQogewotICAgIGFkZElucHV0KGFkb3B0UHRyKG5ldyBBdWRpb05vZGVJbnB1dCh0aGlzKSkpOwor
ICAgIGFkZElucHV0KHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9Ob2RlSW5wdXQ+KHRoaXMpKTsKIAog
ICAgIC8vIENyZWF0ZSBhIGZpeGVkIG51bWJlciBvZiBvdXRwdXRzIChhYmxlIHRvIGhhbmRsZSB0
aGUgbWF4aW11bSBudW1iZXIgb2YgY2hhbm5lbHMgZmVkIHRvIGFuIGlucHV0KS4KICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZPdXRwdXRzOyArK2kpCi0gICAgICAgIGFkZE91
dHB1dChhZG9wdFB0cihuZXcgQXVkaW9Ob2RlT3V0cHV0KHRoaXMsIDEpKSk7CisgICAgICAgIGFk
ZE91dHB1dChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywgMSkpOwogICAg
IAogICAgIHNldE5vZGVUeXBlKE5vZGVUeXBlQ2hhbm5lbFNwbGl0dGVyKTsKICAgICAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ29udm9sdmVyTm9kZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NvbnZvbHZlck5vZGUuY3BwCmluZGV4
IDVlYWYwNzdmM2VmYjFjYzhkNDVjMjY4YjgzOGM2NGFkY2Y0NDU5MmYuLmFjNzVlYTc4MjBjZmQ4
NzhlODZiZmQ5NzFmYWU3Y2NkZGNkY2E2YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQ29udm9sdmVyTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9Db252b2x2ZXJOb2RlLmNwcApAQCAtNDksOCArNDksOCBAQCBDb252b2x2
ZXJOb2RlOjpDb252b2x2ZXJOb2RlKEF1ZGlvQ29udGV4dCogY29udGV4dCwgZmxvYXQgc2FtcGxl
UmF0ZSkKICAgICA6IEF1ZGlvTm9kZShjb250ZXh0LCBzYW1wbGVSYXRlKQogICAgICwgbV9ub3Jt
YWxpemUodHJ1ZSkKIHsKLSAgICBhZGRJbnB1dChhZG9wdFB0cihuZXcgQXVkaW9Ob2RlSW5wdXQo
dGhpcykpKTsKLSAgICBhZGRPdXRwdXQoYWRvcHRQdHIobmV3IEF1ZGlvTm9kZU91dHB1dCh0aGlz
LCAyKSkpOworICAgIGFkZElucHV0KHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9Ob2RlSW5wdXQ+KHRo
aXMpKTsKKyAgICBhZGRPdXRwdXQoc3RkOjptYWtlX3VuaXF1ZTxBdWRpb05vZGVPdXRwdXQ+KHRo
aXMsIDIpKTsKIAogICAgIC8vIE5vZGUtc3BlY2lmaWMgZGVmYXVsdCBtaXhpbmcgcnVsZXMuCiAg
ICAgbV9jaGFubmVsQ291bnQgPSAyOwpAQCAtMTExLDcgKzExMSw3IEBAIHZvaWQgQ29udm9sdmVy
Tm9kZTo6dW5pbml0aWFsaXplKCkKICAgICBpZiAoIWlzSW5pdGlhbGl6ZWQoKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgbV9yZXZlcmIuY2xlYXIoKTsKKyAgICBtX3JldmVyYi5yZXNldCgpOwog
ICAgIEF1ZGlvTm9kZTo6dW5pbml0aWFsaXplKCk7CiB9CiAKQEAgLTE0MSwxMiArMTQxLDEyIEBA
IHZvaWQgQ29udm9sdmVyTm9kZTo6c2V0QnVmZmVyKEF1ZGlvQnVmZmVyKiBidWZmZXIpCiAKICAg
ICAvLyBDcmVhdGUgdGhlIHJldmVyYiB3aXRoIHRoZSBnaXZlbiBpbXB1bHNlIHJlc3BvbnNlLgog
ICAgIGJvb2wgdXNlQmFja2dyb3VuZFRocmVhZHMgPSAhY29udGV4dCgpLT5pc09mZmxpbmVDb250
ZXh0KCk7Ci0gICAgT3duUHRyPFJldmVyYj4gcmV2ZXJiID0gYWRvcHRQdHIobmV3IFJldmVyYihi
dWZmZXJCdXMuZ2V0KCksIEF1ZGlvTm9kZTo6UHJvY2Vzc2luZ1NpemVJbkZyYW1lcywgTWF4RkZU
U2l6ZSwgMiwgdXNlQmFja2dyb3VuZFRocmVhZHMsIG1fbm9ybWFsaXplKSk7CisgICAgYXV0byBy
ZXZlcmIgPSBzdGQ6Om1ha2VfdW5pcXVlPFJldmVyYj4oYnVmZmVyQnVzLmdldCgpLCBBdWRpb05v
ZGU6OlByb2Nlc3NpbmdTaXplSW5GcmFtZXMsIE1heEZGVFNpemUsIDIsIHVzZUJhY2tncm91bmRU
aHJlYWRzLCBtX25vcm1hbGl6ZSk7CiAKICAgICB7CiAgICAgICAgIC8vIFN5bmNocm9uaXplIHdp
dGggcHJvY2VzcygpLgogICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8c3RkOjptdXRleD4gbG9jayht
X3Byb2Nlc3NNdXRleCk7Ci0gICAgICAgIG1fcmV2ZXJiID0gcmV2ZXJiLnJlbGVhc2UoKTsKKyAg
ICAgICAgbV9yZXZlcmIgPSBzdGQ6Om1vdmUocmV2ZXJiKTsKICAgICAgICAgbV9idWZmZXIgPSBi
dWZmZXI7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9Db252b2x2ZXJOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0Nv
bnZvbHZlck5vZGUuaAppbmRleCBjZDNmMDUwZGVmNzI1ZDMyNjg3NjhlMDFiMTkwODI3NTY1ZTJj
MzM1Li40NDE3YTAxMjFmMWMyZmM5NDUzODk5MjA2NzllZmI5Yzc5ZTMxMTliIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NvbnZvbHZlck5vZGUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NvbnZvbHZlck5vZGUuaApAQCAtMjYsOCAr
MjYsOCBAQAogI2RlZmluZSBDb252b2x2ZXJOb2RlX2gKIAogI2luY2x1ZGUgIkF1ZGlvTm9kZS5o
IgorI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDxtdXRleD4KLSNpbmNsdWRlIDx3dGYvT3du
UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBA
IC02Myw3ICs2Myw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBkb3VibGUgdGFpbFRpbWUoKSBj
b25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGRvdWJsZSBsYXRlbmN5VGltZSgpIGNvbnN0IG92
ZXJyaWRlOwogCi0gICAgT3duUHRyPFJldmVyYj4gbV9yZXZlcmI7CisgICAgc3RkOjp1bmlxdWVf
cHRyPFJldmVyYj4gbV9yZXZlcmI7CiAgICAgUmVmUHRyPEF1ZGlvQnVmZmVyPiBtX2J1ZmZlcjsK
IAogICAgIC8vIFRoaXMgc3luY2hyb25pemVzIGR5bmFtaWMgY2hhbmdlcyB0byB0aGUgY29udm9s
dXRpb24gaW1wdWxzZSByZXNwb25zZSB3aXRoIHByb2Nlc3MoKS4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9u
Tm9kZS5oCmluZGV4IDg3MjkxM2MwYmRiZDRmMjA5YTM2YmYwMmNiMjQzNTNiZWRjMDY1NGQuLjU3
NGZlZDIyMjk1M2U5NTExYzE2YjI1MTNiYWQ3NWMwOTIwZmJjNGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWZhdWx0QXVkaW9EZXN0aW5h
dGlvbk5vZGUuaApAQCAtMjcsNyArMjcsNyBAQAogCiAjaW5jbHVkZSAiQXVkaW9EZXN0aW5hdGlv
bi5oIgogI2luY2x1ZGUgIkF1ZGlvRGVzdGluYXRpb25Ob2RlLmgiCi0jaW5jbHVkZSA8d3RmL093
blB0ci5oPgorI2luY2x1ZGUgPG1lbW9yeT4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01
Niw3ICs1Niw3IEBAIHByaXZhdGU6CiAgICAgZXhwbGljaXQgRGVmYXVsdEF1ZGlvRGVzdGluYXRp
b25Ob2RlKEF1ZGlvQ29udGV4dCopOwogICAgIHZvaWQgY3JlYXRlRGVzdGluYXRpb24oKTsKIAot
ICAgIE93blB0cjxBdWRpb0Rlc3RpbmF0aW9uPiBtX2Rlc3RpbmF0aW9uOworICAgIHN0ZDo6dW5p
cXVlX3B0cjxBdWRpb0Rlc3RpbmF0aW9uPiBtX2Rlc3RpbmF0aW9uOwogICAgIFN0cmluZyBtX2lu
cHV0RGV2aWNlSWQ7CiAgICAgdW5zaWduZWQgbV9udW1iZXJPZklucHV0Q2hhbm5lbHM7CiB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWxheU5vZGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWxheU5vZGUuY3BwCmluZGV4IDVm
YjQ2ZTgwZmI2OTljYTQwOTVkN2FhZDE0MGFjZTZjNjAzM2Y3M2MuLjBiMDQ1MmNlYjNjY2FkMWM3
NTcwZTQ0N2ZlYzEyMTYwYmU5MWM3NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vRGVsYXlOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0RlbGF5Tm9kZS5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgRGVsYXlOb2RlOjpEZWxheU5v
ZGUoQXVkaW9Db250ZXh0KiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlLCBkb3VibGUgbWF4RGVs
YXlUaW0KICAgICAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KLSAgICBtX3Byb2Nlc3NvciA9IGFkb3B0UHRyKG5ldyBEZWxheVByb2Nlc3Nvcihjb250
ZXh0LCBzYW1wbGVSYXRlLCAxLCBtYXhEZWxheVRpbWUpKTsKKyAgICBtX3Byb2Nlc3NvciA9IHN0
ZDo6bWFrZV91bmlxdWU8RGVsYXlQcm9jZXNzb3I+KGNvbnRleHQsIHNhbXBsZVJhdGUsIDEsIG1h
eERlbGF5VGltZSk7CiAgICAgc2V0Tm9kZVR5cGUoTm9kZVR5cGVEZWxheSk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVsYXlQcm9jZXNzb3IuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWxheVByb2Nlc3Nvci5jcHAKaW5k
ZXggNGVhZmI3MTM5MjQ5MmVhYzk2OTZmNmI0OTg4NmZjMGRjNzExNDk0YS4uYTVjYzc3NTU5MmU4
MmU4YjI2ZmZjOWI5MzU1NmEzN2I1NmVmODJhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9EZWxheVByb2Nlc3Nvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9EZWxheVByb2Nlc3Nvci5jcHAKQEAgLTQ1LDkgKzQ1LDkgQEAgRGVs
YXlQcm9jZXNzb3I6On5EZWxheVByb2Nlc3NvcigpCiAgICAgICAgIHVuaW5pdGlhbGl6ZSgpOwog
fQogCi1QYXNzT3duUHRyPEF1ZGlvRFNQS2VybmVsPiBEZWxheVByb2Nlc3Nvcjo6Y3JlYXRlS2Vy
bmVsKCkKK3N0ZDo6dW5pcXVlX3B0cjxBdWRpb0RTUEtlcm5lbD4gRGVsYXlQcm9jZXNzb3I6OmNy
ZWF0ZUtlcm5lbCgpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBEZWxheURTUEtlcm5lbCh0
aGlzKSk7CisgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RGVsYXlEU1BLZXJuZWw+KHRoaXMp
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlbGF5UHJvY2Vzc29yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0RlbGF5UHJvY2Vzc29yLmgKaW5kZXggM2UzMmNkNDhlODA1NGIzZjZmMjQ3
MjU2MjFkODFiYTg4NmM5MjBiMS4uMDQyMzk1ODY5OWYyNzNiN2EyNzg1NmY0MDIzNTg2MjkxMTc0
YjYyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWxheVBy
b2Nlc3Nvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVsYXlQcm9j
ZXNzb3IuaApAQCAtMjcsOCArMjcsNyBAQAogCiAjaW5jbHVkZSAiQXVkaW9EU1BLZXJuZWxQcm9j
ZXNzb3IuaCIKICNpbmNsdWRlICJBdWRpb1BhcmFtLmgiCi0KLSNpbmNsdWRlIDx3dGYvUGFzc093
blB0ci5oPgorI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQwLDcgKzM5LDcgQEAgcHVibGljOgogICAgIERlbGF5UHJv
Y2Vzc29yKEF1ZGlvQ29udGV4dCosIGZsb2F0IHNhbXBsZVJhdGUsIHVuc2lnbmVkIG51bWJlck9m
Q2hhbm5lbHMsIGRvdWJsZSBtYXhEZWxheVRpbWUpOwogICAgIHZpcnR1YWwgfkRlbGF5UHJvY2Vz
c29yKCk7CiAgICAgCi0gICAgdmlydHVhbCBQYXNzT3duUHRyPEF1ZGlvRFNQS2VybmVsPiBjcmVh
dGVLZXJuZWwoKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0RT
UEtlcm5lbD4gY3JlYXRlS2VybmVsKCkgb3ZlcnJpZGU7CiAgICAgICAgIAogICAgIEF1ZGlvUGFy
YW0qIGRlbGF5VGltZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVsYXlUaW1lLmdldCgpOyB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRHluYW1pY3NDb21wcmVz
c29yTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0R5bmFtaWNzQ29t
cHJlc3Nvck5vZGUuY3BwCmluZGV4IGQ0Y2YzYjc3MjNjYzBkNzA2YzNhZGY3NTQ3YWQ0MjVmNWEw
ZWI2YjguLjFkNWExYjhlMWVkYTM5NmY4YjlhOWNkYzViNTgwOTIwYmZlYzM4YzUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRHluYW1pY3NDb21wcmVzc29yTm9k
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EeW5hbWljc0NvbXBy
ZXNzb3JOb2RlLmNwcApAQCAtNDEsOCArNDEsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBEeW5h
bWljc0NvbXByZXNzb3JOb2RlOjpEeW5hbWljc0NvbXByZXNzb3JOb2RlKEF1ZGlvQ29udGV4dCog
Y29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKICAgICA6IEF1ZGlvTm9kZShjb250ZXh0LCBzYW1w
bGVSYXRlKQogewotICAgIGFkZElucHV0KGFkb3B0UHRyKG5ldyBBdWRpb05vZGVJbnB1dCh0aGlz
KSkpOwotICAgIGFkZE91dHB1dChhZG9wdFB0cihuZXcgQXVkaW9Ob2RlT3V0cHV0KHRoaXMsIGRl
ZmF1bHROdW1iZXJPZk91dHB1dENoYW5uZWxzKSkpOworICAgIGFkZElucHV0KHN0ZDo6bWFrZV91
bmlxdWU8QXVkaW9Ob2RlSW5wdXQ+KHRoaXMpKTsKKyAgICBhZGRPdXRwdXQoc3RkOjptYWtlX3Vu
aXF1ZTxBdWRpb05vZGVPdXRwdXQ+KHRoaXMsIGRlZmF1bHROdW1iZXJPZk91dHB1dENoYW5uZWxz
KSk7CiAKICAgICBzZXROb2RlVHlwZShOb2RlVHlwZUR5bmFtaWNzQ29tcHJlc3Nvcik7CiAKQEAg
LTk1LDcgKzk1LDcgQEAgdm9pZCBEeW5hbWljc0NvbXByZXNzb3JOb2RlOjppbml0aWFsaXplKCkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgQXVkaW9Ob2RlOjppbml0aWFsaXplKCk7ICAgIAotICAg
IG1fZHluYW1pY3NDb21wcmVzc29yID0gYWRvcHRQdHIobmV3IER5bmFtaWNzQ29tcHJlc3Nvcihz
YW1wbGVSYXRlKCksIGRlZmF1bHROdW1iZXJPZk91dHB1dENoYW5uZWxzKSk7CisgICAgbV9keW5h
bWljc0NvbXByZXNzb3IgPSBzdGQ6Om1ha2VfdW5pcXVlPER5bmFtaWNzQ29tcHJlc3Nvcj4oc2Ft
cGxlUmF0ZSgpLCBkZWZhdWx0TnVtYmVyT2ZPdXRwdXRDaGFubmVscyk7CiB9CiAKIHZvaWQgRHlu
YW1pY3NDb21wcmVzc29yTm9kZTo6dW5pbml0aWFsaXplKCkKQEAgLTEwMyw3ICsxMDMsNyBAQCB2
b2lkIER5bmFtaWNzQ29tcHJlc3Nvck5vZGU6OnVuaW5pdGlhbGl6ZSgpCiAgICAgaWYgKCFpc0lu
aXRpYWxpemVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fZHluYW1pY3NDb21wcmVzc29y
LmNsZWFyKCk7CisgICAgbV9keW5hbWljc0NvbXByZXNzb3IucmVzZXQoKTsKICAgICBBdWRpb05v
ZGU6OnVuaW5pdGlhbGl6ZSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvck5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vRHluYW1pY3NDb21wcmVzc29yTm9kZS5oCmluZGV4IDI3YWViMWFhY2Zi
OGEwMThjMmQzYzViZGMwZjdlMDRlYTU2ZGFiYTcuLjEyM2MwY2E5MjdjMDk5NWQyMWEzNTRlNjhj
MWMzNDNiM2FlYzNkMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vRHluYW1pY3NDb21wcmVzc29yTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vRHluYW1pY3NDb21wcmVzc29yTm9kZS5oCkBAIC0yNyw3ICsyNyw3IEBACiAKICNp
bmNsdWRlICJBdWRpb05vZGUuaCIKICNpbmNsdWRlICJBdWRpb1BhcmFtLmgiCi0jaW5jbHVkZSA8
d3RmL093blB0ci5oPgorI2luY2x1ZGUgPG1lbW9yeT4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CkBAIC02NCw3ICs2NCw3IEBAIHByaXZhdGU6CiAKICAgICBEeW5hbWljc0NvbXByZXNzb3JOb2Rl
KEF1ZGlvQ29udGV4dCosIGZsb2F0IHNhbXBsZVJhdGUpOwogCi0gICAgT3duUHRyPER5bmFtaWNz
Q29tcHJlc3Nvcj4gbV9keW5hbWljc0NvbXByZXNzb3I7CisgICAgc3RkOjp1bmlxdWVfcHRyPER5
bmFtaWNzQ29tcHJlc3Nvcj4gbV9keW5hbWljc0NvbXByZXNzb3I7CiAgICAgUmVmUHRyPEF1ZGlv
UGFyYW0+IG1fdGhyZXNob2xkOwogICAgIFJlZlB0cjxBdWRpb1BhcmFtPiBtX2tuZWU7CiAgICAg
UmVmUHRyPEF1ZGlvUGFyYW0+IG1fcmF0aW87CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0dhaW5Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vR2Fpbk5vZGUuY3BwCmluZGV4IDIyNTY4MTBmZmM5Mjc0Y2IxYzkzNzM4MjA1NTk3NjBh
YzFjNzc1MTkuLmQzMjJjMTMzYTdiY2NjNTlmMjY0ZTEzOGU1ZTQyZDAwZjMyODI2YjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vR2Fpbk5vZGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vR2Fpbk5vZGUuY3BwCkBAIC00MSw4ICs0
MSw4IEBAIEdhaW5Ob2RlOjpHYWluTm9kZShBdWRpb0NvbnRleHQqIGNvbnRleHQsIGZsb2F0IHNh
bXBsZVJhdGUpCiB7CiAgICAgbV9nYWluID0gQXVkaW9QYXJhbTo6Y3JlYXRlKGNvbnRleHQsICJn
YWluIiwgMS4wLCAwLjAsIDEuMCk7CiAKLSAgICBhZGRJbnB1dChhZG9wdFB0cihuZXcgQXVkaW9O
b2RlSW5wdXQodGhpcykpKTsKLSAgICBhZGRPdXRwdXQoYWRvcHRQdHIobmV3IEF1ZGlvTm9kZU91
dHB1dCh0aGlzLCAxKSkpOworICAgIGFkZElucHV0KHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9Ob2Rl
SW5wdXQ+KHRoaXMpKTsKKyAgICBhZGRPdXRwdXQoc3RkOjptYWtlX3VuaXF1ZTxBdWRpb05vZGVP
dXRwdXQ+KHRoaXMsIDEpKTsKIAogICAgIHNldE5vZGVUeXBlKE5vZGVUeXBlR2Fpbik7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFFbGVtZW50QXVk
aW9Tb3VyY2VOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFF
bGVtZW50QXVkaW9Tb3VyY2VOb2RlLmNwcAppbmRleCAwYjgxMWZkMzQ2ZjQ1ODNjNzg0NzgxM2Q3
ZWExZmNiNmVkM2MwOTc3Li5hMTZiNWM0Mzk0NDc3M2UzNDlmYjE3NGRkOTMwODBiMDgwYTJjYzYz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhRWxlbWVu
dEF1ZGlvU291cmNlTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9NZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUuY3BwCkBAIC01Miw3ICs1Miw3IEBAIE1lZGlh
RWxlbWVudEF1ZGlvU291cmNlTm9kZTo6TWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlKEF1ZGlv
Q29udGV4dCogY29udGV4dCwKICAgICAsIG1fc291cmNlU2FtcGxlUmF0ZSgwKQogewogICAgIC8v
IERlZmF1bHQgdG8gc3RlcmVvLiBUaGlzIGNvdWxkIGNoYW5nZSBkZXBlbmRpbmcgb24gd2hhdCB0
aGUgbWVkaWEgZWxlbWVudCAuc3JjIGlzIHNldCB0by4KLSAgICBhZGRPdXRwdXQoYWRvcHRQdHIo
bmV3IEF1ZGlvTm9kZU91dHB1dCh0aGlzLCAyKSkpOworICAgIGFkZE91dHB1dChzdGQ6Om1ha2Vf
dW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywgMikpOwogCiAgICAgc2V0Tm9kZVR5cGUoTm9k
ZVR5cGVNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZSk7CiAKQEAgLTg0LDEwICs4NCwxMCBAQCB2b2lk
IE1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZTo6c2V0Rm9ybWF0KHNpemVfdCBudW1iZXJPZkNo
YW5uZWxzLCBmbG9hdCBzb3VyYwogCiAgICAgICAgIGlmIChzb3VyY2VTYW1wbGVSYXRlICE9IHNh
bXBsZVJhdGUoKSkgewogICAgICAgICAgICAgZG91YmxlIHNjYWxlRmFjdG9yID0gc291cmNlU2Ft
cGxlUmF0ZSAvIHNhbXBsZVJhdGUoKTsKLSAgICAgICAgICAgIG1fbXVsdGlDaGFubmVsUmVzYW1w
bGVyID0gYWRvcHRQdHIobmV3IE11bHRpQ2hhbm5lbFJlc2FtcGxlcihzY2FsZUZhY3RvciwgbnVt
YmVyT2ZDaGFubmVscykpOworICAgICAgICAgICAgbV9tdWx0aUNoYW5uZWxSZXNhbXBsZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPE11bHRpQ2hhbm5lbFJlc2FtcGxlcj4oc2NhbGVGYWN0b3IsIG51bWJl
ck9mQ2hhbm5lbHMpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgLy8gQnlwYXNzIHJl
c2FtcGxpbmcuCi0gICAgICAgICAgICBtX211bHRpQ2hhbm5lbFJlc2FtcGxlci5jbGVhcigpOwor
ICAgICAgICAgICAgbV9tdWx0aUNoYW5uZWxSZXNhbXBsZXIucmVzZXQoKTsKICAgICAgICAgfQog
CiAgICAgICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
TWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL01lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZS5oCmluZGV4IDY5MGYyYzAwOTI2ZTg3
N2RiZDE3MTdlZDEyOGMyNDQ5NjFiZTZkYTkuLjdmNThhZTdiMmNkOWYzNmU3MmM2OWU0MzU4NGRl
OTc3YzI5ZDVhNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
TWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9NZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUuaApAQCAtMzEsOCArMzEsOCBA
QAogI2luY2x1ZGUgIkF1ZGlvU291cmNlUHJvdmlkZXJDbGllbnQuaCIKICNpbmNsdWRlICJIVE1M
TWVkaWFFbGVtZW50LmgiCiAjaW5jbHVkZSAiTXVsdGlDaGFubmVsUmVzYW1wbGVyLmgiCisjaW5j
bHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPG11dGV4PgotI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4K
ICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC03
Miw3ICs3Miw3IEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9zb3VyY2VOdW1iZXJPZkNoYW5u
ZWxzOwogICAgIGRvdWJsZSBtX3NvdXJjZVNhbXBsZVJhdGU7CiAKLSAgICBPd25QdHI8TXVsdGlD
aGFubmVsUmVzYW1wbGVyPiBtX211bHRpQ2hhbm5lbFJlc2FtcGxlcjsKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8TXVsdGlDaGFubmVsUmVzYW1wbGVyPiBtX211bHRpQ2hhbm5lbFJlc2FtcGxlcjsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZS5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2Rl
LmgKaW5kZXggZjdmYzU0ZWNmZWZiOGQ1MjhlYmRkOGRjMTE2NzcxMzYzZjYzYWQwZi4uN2YzMDAw
NzZmNTRmMjJlNjNjY2NmNzYyZWVlNzVhNDlkMTZjNTFkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvRGVz
dGluYXRpb25Ob2RlLmgKQEAgLTMwLDcgKzMwLDYgQEAKICNpbmNsdWRlICJBdWRpb0Jhc2ljSW5z
cGVjdG9yTm9kZS5oIgogI2luY2x1ZGUgIkF1ZGlvQnVzLmgiCiAjaW5jbHVkZSAiTWVkaWFTdHJl
YW0uaCIKLSNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZS5jcHAKaW5kZXggYTZmNWI3
YmVkMDBlMTliOGI0MGIzZTNkM2EyODkzNDlmNDZiZGM5Zi4uZmZhYmQ1ZWQyZWIxZDlhMmZkOTNl
ZTA2MzczMTIxZWRiM2JiOTMxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9Tb3VyY2UuY3BwCkBAIC0zMSw3ICszMSw2
IEBACiAKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlVVSUQuaCIKLSNp
bmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb1Nv
dXJjZU5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVh
bUF1ZGlvU291cmNlTm9kZS5jcHAKaW5kZXggZmJhMzRkMGUxYWI2MjBmNzRkODM2YTdmODUxODIw
ZjBjNTM5NzFiNi4uODY3MjEyZTUxZmIwZmY2ZDJhYmQyNmZmMDRlYjQyMWI0NzA1MGUxNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlv
U291cmNlTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRp
YVN0cmVhbUF1ZGlvU291cmNlTm9kZS5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAgTWVkaWFTdHJlYW1B
dWRpb1NvdXJjZU5vZGU6Ok1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlKEF1ZGlvQ29udGV4dCog
Y29udGV4dCwgTWUKICAgICAsIG1fc291cmNlTnVtYmVyT2ZDaGFubmVscygwKQogewogICAgIC8v
IERlZmF1bHQgdG8gc3RlcmVvLiBUaGlzIGNvdWxkIGNoYW5nZSBkZXBlbmRpbmcgb24gdGhlIGZv
cm1hdCBvZiB0aGUgTWVkaWFTdHJlYW0ncyBhdWRpbyB0cmFjay4KLSAgICBhZGRPdXRwdXQoYWRv
cHRQdHIobmV3IEF1ZGlvTm9kZU91dHB1dCh0aGlzLCAyKSkpOworICAgIGFkZE91dHB1dChzdGQ6
Om1ha2VfdW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywgMikpOwogCiAgICAgc2V0Tm9kZVR5
cGUoTm9kZVR5cGVNZWRpYVN0cmVhbUF1ZGlvU291cmNlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZS5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9k
ZS5oCmluZGV4IGVhMzU1YmM5ZjI4NTg4NWE2OTgwYTc0NTJlOTM1YWI4NzI1M2U5NWEuLjdmZjk1
YWRmZTU5NWVkMDYwOWEzNDZjYzY5MzRhODNiODkyY2RhOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9Tb3VyY2VO
b2RlLmgKQEAgLTMyLDcgKzMyLDYgQEAKICNpbmNsdWRlICJBdWRpb1NvdXJjZVByb3ZpZGVyQ2xp
ZW50LmgiCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW0uaCIKICNpbmNsdWRlIDxtdXRleD4KLSNpbmNs
dWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9Pc2NpbGxhdG9yTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09z
Y2lsbGF0b3JOb2RlLmNwcAppbmRleCA2YTk5NGEwZWEzM2RlNzE2OTIyMmExY2RlZDY2NjM4MTQy
MzMyZjZjLi4wNzBkYzllMWZiMDUxNzMzMTBhNTQ0YTY1NzYzMTRkNjQwMmE0N2MxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09zY2lsbGF0b3JOb2RlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09zY2lsbGF0b3JOb2RlLmNwcApA
QCAtNzAsNyArNzAsNyBAQCBPc2NpbGxhdG9yTm9kZTo6T3NjaWxsYXRvck5vZGUoQXVkaW9Db250
ZXh0KiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQogICAgIHNldFR5cGUobV90eXBlKTsKIAog
ICAgIC8vIEFuIG9zY2lsbGF0b3IgaXMgYWx3YXlzIG1vbm8uCi0gICAgYWRkT3V0cHV0KGFkb3B0
UHRyKG5ldyBBdWRpb05vZGVPdXRwdXQodGhpcywgMSkpKTsKKyAgICBhZGRPdXRwdXQoc3RkOjpt
YWtlX3VuaXF1ZTxBdWRpb05vZGVPdXRwdXQ+KHRoaXMsIDEpKTsKIAogICAgIGluaXRpYWxpemUo
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGFubmVy
Tm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Bhbm5lck5vZGUuY3Bw
CmluZGV4IGQ1NDU3NWFlZDA1MWM1NmI0NjJjODdmNDk3ZGEwYzdlODZmNDM3ZmYuLjBjZGUyZDNk
YTI2OWEyODg1YTAzYTgxZjk1YzYwNjZkNDRmMjBlZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmNwcApAQCAtNTIsOCArNTIsOCBAQCBQYW5uZXJO
b2RlOjpQYW5uZXJOb2RlKEF1ZGlvQ29udGV4dCogY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkK
ICAgICAsIG1fbGFzdEdhaW4oLTEuMCkKICAgICAsIG1fY29ubmVjdGlvbkNvdW50KDApCiB7Ci0g
ICAgYWRkSW5wdXQoYWRvcHRQdHIobmV3IEF1ZGlvTm9kZUlucHV0KHRoaXMpKSk7Ci0gICAgYWRk
T3V0cHV0KGFkb3B0UHRyKG5ldyBBdWRpb05vZGVPdXRwdXQodGhpcywgMikpKTsKKyAgICBhZGRJ
bnB1dChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvTm9kZUlucHV0Pih0aGlzKSk7CisgICAgYWRkT3V0
cHV0KHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9Ob2RlT3V0cHV0Pih0aGlzLCAyKSk7CiAKICAgICAv
LyBOb2RlLXNwZWNpZmljIGRlZmF1bHQgbWl4aW5nIHJ1bGVzLgogICAgIG1fY2hhbm5lbENvdW50
ID0gMjsKQEAgLTE1NCw3ICsxNTQsNyBAQCB2b2lkIFBhbm5lck5vZGU6OnVuaW5pdGlhbGl6ZSgp
CiAgICAgaWYgKCFpc0luaXRpYWxpemVkKCkpCiAgICAgICAgIHJldHVybjsKICAgICAgICAgCi0g
ICAgbV9wYW5uZXIuY2xlYXIoKTsKKyAgICBtX3Bhbm5lci5yZXNldCgpOwogICAgIEF1ZGlvTm9k
ZTo6dW5pbml0aWFsaXplKCk7CiB9CiAKQEAgLTE5OSw4ICsxOTksNyBAQCBib29sIFBhbm5lck5v
ZGU6OnNldFBhbm5pbmdNb2RlbCh1bnNpZ25lZCBtb2RlbCkKICAgICAgICAgICAgIC8vIFRoaXMg
c3luY2hyb25pemVzIHdpdGggcHJvY2VzcygpLgogICAgICAgICAgICAgc3RkOjpsb2NrX2d1YXJk
PHN0ZDo6bXV0ZXg+IGxvY2sobV9wYW5uZXJNdXRleCk7CiAKLSAgICAgICAgICAgIE93blB0cjxQ
YW5uZXI+IG5ld1Bhbm5lciA9IFBhbm5lcjo6Y3JlYXRlKG1vZGVsLCBzYW1wbGVSYXRlKCksIGNv
bnRleHQoKS0+aHJ0ZkRhdGFiYXNlTG9hZGVyKCkpOwotICAgICAgICAgICAgbV9wYW5uZXIgPSBu
ZXdQYW5uZXIucmVsZWFzZSgpOworICAgICAgICAgICAgbV9wYW5uZXIgPSBQYW5uZXI6OmNyZWF0
ZShtb2RlbCwgc2FtcGxlUmF0ZSgpLCBjb250ZXh0KCktPmhydGZEYXRhYmFzZUxvYWRlcigpKTsK
ICAgICAgICAgICAgIG1fcGFubmluZ01vZGVsID0gbW9kZWw7CiAgICAgICAgIH0KICAgICAgICAg
YnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Bhbm5l
ck5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5oCmlu
ZGV4IDY3YTQxZmIzZDA0MDU1OGI5ZGFhNjY3YzAwYmRhN2E2ODllNThiZjIuLjE5MGViNzlkNTlm
NWQwNzZmNjlmMmYwZGVlMzliN2M5YjZlZTYxMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5oCkBAIC0zMyw4ICszMyw4IEBACiAjaW5jbHVkZSAiRGlz
dGFuY2UuaCIKICNpbmNsdWRlICJGbG9hdFBvaW50M0QuaCIKICNpbmNsdWRlICJQYW5uZXIuaCIK
KyNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8bXV0ZXg+Ci0jaW5jbHVkZSA8d3RmL093blB0
ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTE0MCw3ICsxNDAsNyBAQCBwcml2YXRl
OgogICAgIC8vIFRoaXMgaXMgaW4gb3JkZXIgdG8gaGFuZGxlIHRoZSBwaXRjaCBjaGFuZ2UgbmVj
ZXNzYXJ5IGZvciB0aGUgZG9wcGxlciBzaGlmdC4KICAgICB2b2lkIG5vdGlmeUF1ZGlvU291cmNl
c0Nvbm5lY3RlZFRvTm9kZShBdWRpb05vZGUqKTsKIAotICAgIE93blB0cjxQYW5uZXI+IG1fcGFu
bmVyOworICAgIHN0ZDo6dW5pcXVlX3B0cjxQYW5uZXI+IG1fcGFubmVyOwogICAgIHVuc2lnbmVk
IG1fcGFubmluZ01vZGVsOwogCiAgICAgRmxvYXRQb2ludDNEIG1fcG9zaXRpb247CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1BlcmlvZGljV2F2ZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1BlcmlvZGljV2F2ZS5jcHAKaW5kZXggNjhh
YmFhYTI4MGQ4Y2M3YjY3MDU2YjAzYzkzYjQxYzkxNGJiMGI3YS4uMzA0NGMyMWMxZmVkOWQ1YTZi
ZjFjMjdkZTA5ZWRlZjcyY2Q1M2Q3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9QZXJpb2RpY1dhdmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vUGVyaW9kaWNXYXZlLmNwcApAQCAtMzYsNyArMzYsNiBAQAogI2luY2x1ZGUgIk9z
Y2lsbGF0b3JOb2RlLmgiCiAjaW5jbHVkZSAiVmVjdG9yTWF0aC5oIgogI2luY2x1ZGUgPGFsZ29y
aXRobT4KLSNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAKIGNvbnN0IHVuc2lnbmVkIFBlcmlvZGlj
V2F2ZVNpemUgPSA0MDk2OyAvLyBUaGlzIG11c3QgYmUgYSBwb3dlciBvZiB0d28uCiBjb25zdCB1
bnNpZ25lZCBOdW1iZXJPZlJhbmdlcyA9IDM2OyAvLyBUaGVyZSBzaG91bGQgYmUgMyAqIGxvZzIo
UGVyaW9kaWNXYXZlU2l6ZSkgMS8zIG9jdGF2ZSByYW5nZXMuCkBAIC0xOTgsOCArMTk3LDcgQEAg
dm9pZCBQZXJpb2RpY1dhdmU6OmNyZWF0ZUJhbmRMaW1pdGVkVGFibGVzKGNvbnN0IGZsb2F0KiBy
ZWFsRGF0YSwgY29uc3QgZmxvYXQqIGkKICAgICAgICAgcmVhbFBbMF0gPSAwOwogCiAgICAgICAg
IC8vIENyZWF0ZSB0aGUgYmFuZC1saW1pdGVkIHRhYmxlLgotICAgICAgICBPd25QdHI8QXVkaW9G
bG9hdEFycmF5PiB0YWJsZSA9IGFkb3B0UHRyKG5ldyBBdWRpb0Zsb2F0QXJyYXkobV9wZXJpb2Rp
Y1dhdmVTaXplKSk7Ci0gICAgICAgIG1fYmFuZExpbWl0ZWRUYWJsZXMuYXBwZW5kKHRhYmxlLnJl
bGVhc2UoKSk7CisgICAgICAgIG1fYmFuZExpbWl0ZWRUYWJsZXMuYXBwZW5kKHN0ZDo6bWFrZV91
bmlxdWU8QXVkaW9GbG9hdEFycmF5PihtX3BlcmlvZGljV2F2ZVNpemUpKTsKIAogICAgICAgICAv
LyBBcHBseSBhbiBpbnZlcnNlIEZGVCB0byBnZW5lcmF0ZSB0aGUgdGltZS1kb21haW4gdGFibGUg
ZGF0YS4KICAgICAgICAgZmxvYXQqIGRhdGEgPSBtX2JhbmRMaW1pdGVkVGFibGVzW3JhbmdlSW5k
ZXhdLT5kYXRhKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L1BlcmlvZGljV2F2ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QZXJpb2Rp
Y1dhdmUuaAppbmRleCBlNDQ4NTA2YTdkNjk5OTk4M2YzOGQ5NWQwYWJmYmE0MjFhZjZkMzIyLi43
OWEwOThjNTU2MjJhMTVjYzM5M2JmMDlkYWY5MTU4YTExMjYwZmYyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1BlcmlvZGljV2F2ZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGVyaW9kaWNXYXZlLmgKQEAgLTMwLDggKzMwLDggQEAK
ICNkZWZpbmUgUGVyaW9kaWNXYXZlX2gKIAogI2luY2x1ZGUgIkF1ZGlvQXJyYXkuaCIKKyNpbmNs
dWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8cnVudGltZS9GbG9hdDMyQXJyYXkuaD4KLSNpbmNsdWRl
IDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTg5LDcgKzg5LDcg
QEAgcHJpdmF0ZToKIAogICAgIC8vIENyZWF0ZXMgdGFibGVzIGJhc2VkIG9uIG51bWJlck9mQ29t
cG9uZW50cyBGb3VyaWVyIGNvZWZmaWNpZW50cy4KICAgICB2b2lkIGNyZWF0ZUJhbmRMaW1pdGVk
VGFibGVzKGNvbnN0IGZsb2F0KiByZWFsLCBjb25zdCBmbG9hdCogaW1hZywgdW5zaWduZWQgbnVt
YmVyT2ZDb21wb25lbnRzKTsKLSAgICBWZWN0b3I8T3duUHRyPEF1ZGlvRmxvYXRBcnJheT4+IG1f
YmFuZExpbWl0ZWRUYWJsZXM7CisgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0Zsb2F0
QXJyYXk+PiBtX2JhbmRMaW1pdGVkVGFibGVzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9SZWFsdGltZUFu
YWx5c2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUmVhbHRpbWVBbmFs
eXNlci5jcHAKaW5kZXggNjRhM2NmM2I5NDk3MzEwM2NlMDhiYTBiOTFkYTI3YjJiNjFkZjFkNS4u
ZjRmZjcwOGE3ZmM3MTY4MzMzOTdhZWQ1ZWFiZjQwNzg3YWQzMjU1YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9SZWFsdGltZUFuYWx5c2VyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1JlYWx0aW1lQW5hbHlzZXIuY3BwCkBAIC02
MCw3ICs2MCw3IEBAIFJlYWx0aW1lQW5hbHlzZXI6OlJlYWx0aW1lQW5hbHlzZXIoKQogICAgICwg
bV9taW5EZWNpYmVscyhEZWZhdWx0TWluRGVjaWJlbHMpCiAgICAgLCBtX21heERlY2liZWxzKERl
ZmF1bHRNYXhEZWNpYmVscykKIHsKLSAgICBtX2FuYWx5c2lzRnJhbWUgPSBhZG9wdFB0cihuZXcg
RkZURnJhbWUoRGVmYXVsdEZGVFNpemUpKTsKKyAgICBtX2FuYWx5c2lzRnJhbWUgPSBzdGQ6Om1h
a2VfdW5pcXVlPEZGVEZyYW1lPihEZWZhdWx0RkZUU2l6ZSk7CiB9CiAKIFJlYWx0aW1lQW5hbHlz
ZXI6On5SZWFsdGltZUFuYWx5c2VyKCkKQEAgLTg2LDcgKzg2LDcgQEAgYm9vbCBSZWFsdGltZUFu
YWx5c2VyOjpzZXRGZnRTaXplKHNpemVfdCBzaXplKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ICAgICBpZiAobV9mZnRTaXplICE9IHNpemUpIHsKLSAgICAgICAgbV9hbmFseXNpc0ZyYW1lID0g
YWRvcHRQdHIobmV3IEZGVEZyYW1lKHNpemUpKTsKKyAgICAgICAgbV9hbmFseXNpc0ZyYW1lID0g
c3RkOjptYWtlX3VuaXF1ZTxGRlRGcmFtZT4oc2l6ZSk7CiAgICAgICAgIC8vIG1fbWFnbml0dWRl
QnVmZmVyIGhhcyBzaXplID0gZmZ0U2l6ZSAvIDIgYmVjYXVzZSBpdCBjb250YWlucyBmbG9hdHMg
cmVkdWNlZCBmcm9tIGNvbXBsZXggdmFsdWVzIGluIG1fYW5hbHlzaXNGcmFtZS4KICAgICAgICAg
bV9tYWduaXR1ZGVCdWZmZXIuYWxsb2NhdGUoc2l6ZSAvIDIpOwogICAgICAgICBtX2ZmdFNpemUg
PSBzaXplOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9SZWFs
dGltZUFuYWx5c2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1JlYWx0aW1l
QW5hbHlzZXIuaAppbmRleCA4MGM2ODY4YjdkMjNhZTE3MzE1ZmY0ZjkwM2Y3ZjE2NDFiYzczYjI1
Li5hYTBmODc3YWMyNmE4YTkyZTNlMDZmODQyZDIwZDhkYjBjMzExNTQ4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1JlYWx0aW1lQW5hbHlzZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1JlYWx0aW1lQW5hbHlzZXIuaApAQCAtMjYs
MTEgKzI2LDExIEBACiAjZGVmaW5lIFJlYWx0aW1lQW5hbHlzZXJfaAogCiAjaW5jbHVkZSAiQXVk
aW9BcnJheS5oIgorI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDxydW50aW1lL0Zsb2F0MzJB
cnJheS5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvVWludDhBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9G
b3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0jaW5jbHVkZSA8d3RmL093
blB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTgxLDcgKzgxLDcgQEAgcHJpdmF0
ZToKICAgICB1bnNpZ25lZCBtX3dyaXRlSW5kZXg7CiAgICAgCiAgICAgc2l6ZV90IG1fZmZ0U2l6
ZTsKLSAgICBPd25QdHI8RkZURnJhbWU+IG1fYW5hbHlzaXNGcmFtZTsKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8RkZURnJhbWU+IG1fYW5hbHlzaXNGcmFtZTsKICAgICB2b2lkIGRvRkZUQW5hbHlzaXMo
KTsKICAgICAKICAgICAvLyBkb0ZGVEFuYWx5c2lzKCkgc3RvcmVzIHRoZSBmbG9hdGluZy1wb2lu
dCBtYWduaXR1ZGUgYW5hbHlzaXMgZGF0YSBoZXJlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5jcHAKaW5kZXggNjg4OTY5
ZWE2YWM4ZTQ2NjA2OGY2N2QwNDVmMjVmNmZhNTgxZDgyOS4uY2IzMjk3YmQ0MGFkNGEwMDc4NjUw
NWU2NTgxZTM5OWM4Y2ViYmJmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuY3BwCkBAIC04Niw4ICs4Niw4IEBAIFNj
cmlwdFByb2Nlc3Nvck5vZGU6OlNjcmlwdFByb2Nlc3Nvck5vZGUoQXVkaW9Db250ZXh0KiBjb250
ZXh0LCBmbG9hdCBzYW1wbGVSYXRlCiAKICAgICBBU1NFUlQobnVtYmVyT2ZJbnB1dENoYW5uZWxz
IDw9IEF1ZGlvQ29udGV4dDo6bWF4TnVtYmVyT2ZDaGFubmVscygpKTsKIAotICAgIGFkZElucHV0
KGFkb3B0UHRyKG5ldyBBdWRpb05vZGVJbnB1dCh0aGlzKSkpOwotICAgIGFkZE91dHB1dChhZG9w
dFB0cihuZXcgQXVkaW9Ob2RlT3V0cHV0KHRoaXMsIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMpKSk7
CisgICAgYWRkSW5wdXQoc3RkOjptYWtlX3VuaXF1ZTxBdWRpb05vZGVJbnB1dD4odGhpcykpOwor
ICAgIGFkZE91dHB1dChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywgbnVt
YmVyT2ZPdXRwdXRDaGFubmVscykpOwogCiAgICAgc2V0Tm9kZVR5cGUoTm9kZVR5cGVKYXZhU2Ny
aXB0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XYXZl
U2hhcGVyRFNQS2VybmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2F2
ZVNoYXBlckRTUEtlcm5lbC5jcHAKaW5kZXggZTU4YWQxYjIyNTU2OWFkZDkxOGQ0NWJjMWQ1MGM1
Y2NiYzNiOGU2Yi4uNDEwZDFkYWY1Yzg5NTQwMDlmZjA2MzZhODI5MDBiZjk0YWY0ZjhmMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyRFNQS2Vy
bmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJE
U1BLZXJuZWwuY3BwCkBAIC00OSwxMiArNDksMTIgQEAgdm9pZCBXYXZlU2hhcGVyRFNQS2VybmVs
OjpsYXp5SW5pdGlhbGl6ZU92ZXJzYW1wbGluZygpCiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKIAogICAgIGlmICghbV90ZW1wQnVmZmVyKSB7Ci0gICAgICAgIG1fdGVtcEJ1ZmZlciA9IGFk
b3B0UHRyKG5ldyBBdWRpb0Zsb2F0QXJyYXkoUmVuZGVyaW5nUXVhbnR1bSAqIDIpKTsKLSAgICAg
ICAgbV90ZW1wQnVmZmVyMiA9IGFkb3B0UHRyKG5ldyBBdWRpb0Zsb2F0QXJyYXkoUmVuZGVyaW5n
UXVhbnR1bSAqIDQpKTsKLSAgICAgICAgbV91cFNhbXBsZXIgPSBhZG9wdFB0cihuZXcgVXBTYW1w
bGVyKFJlbmRlcmluZ1F1YW50dW0pKTsKLSAgICAgICAgbV9kb3duU2FtcGxlciA9IGFkb3B0UHRy
KG5ldyBEb3duU2FtcGxlcihSZW5kZXJpbmdRdWFudHVtICogMikpOwotICAgICAgICBtX3VwU2Ft
cGxlcjIgPSBhZG9wdFB0cihuZXcgVXBTYW1wbGVyKFJlbmRlcmluZ1F1YW50dW0gKiAyKSk7Ci0g
ICAgICAgIG1fZG93blNhbXBsZXIyID0gYWRvcHRQdHIobmV3IERvd25TYW1wbGVyKFJlbmRlcmlu
Z1F1YW50dW0gKiA0KSk7CisgICAgICAgIG1fdGVtcEJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8
QXVkaW9GbG9hdEFycmF5PihSZW5kZXJpbmdRdWFudHVtICogMik7CisgICAgICAgIG1fdGVtcEJ1
ZmZlcjIgPSBzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvRmxvYXRBcnJheT4oUmVuZGVyaW5nUXVhbnR1
bSAqIDQpOworICAgICAgICBtX3VwU2FtcGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8VXBTYW1wbGVy
PihSZW5kZXJpbmdRdWFudHVtKTsKKyAgICAgICAgbV9kb3duU2FtcGxlciA9IHN0ZDo6bWFrZV91
bmlxdWU8RG93blNhbXBsZXI+KFJlbmRlcmluZ1F1YW50dW0gKiAyKTsKKyAgICAgICAgbV91cFNh
bXBsZXIyID0gc3RkOjptYWtlX3VuaXF1ZTxVcFNhbXBsZXI+KFJlbmRlcmluZ1F1YW50dW0gKiAy
KTsKKyAgICAgICAgbV9kb3duU2FtcGxlcjIgPSBzdGQ6Om1ha2VfdW5pcXVlPERvd25TYW1wbGVy
PihSZW5kZXJpbmdRdWFudHVtICogNCk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJEU1BLZXJuZWwuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlckRTUEtlcm5lbC5oCmluZGV4IGE3ZGZl
ZDIwNzNkOTg2YWJjNmIyMjRjOTkyMTJjYTExYjk5NTVhMjMuLjdmNTMzNWE0OTkzOTc2OWRjOGU2
MjY5YzY5ZjdhMDE5ODYxMjQ4M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vV2F2ZVNoYXBlckRTUEtlcm5lbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vV2F2ZVNoYXBlckRTUEtlcm5lbC5oCkBAIC0zMCw3ICszMCw3IEBACiAjaW5j
bHVkZSAiRG93blNhbXBsZXIuaCIKICNpbmNsdWRlICJVcFNhbXBsZXIuaCIKICNpbmNsdWRlICJX
YXZlU2hhcGVyUHJvY2Vzc29yLmgiCi0jaW5jbHVkZSA8d3RmL093blB0ci5oPgorI2luY2x1ZGUg
PG1lbW9yeT4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC02MiwxMiArNjIsMTIgQEAgcHJv
dGVjdGVkOgogICAgIFdhdmVTaGFwZXJQcm9jZXNzb3IqIHdhdmVTaGFwZXJQcm9jZXNzb3IoKSB7
IHJldHVybiBzdGF0aWNfY2FzdDxXYXZlU2hhcGVyUHJvY2Vzc29yKj4ocHJvY2Vzc29yKCkpOyB9
CiAKICAgICAvLyBPdmVyc2FtcGxpbmcuCi0gICAgT3duUHRyPEF1ZGlvRmxvYXRBcnJheT4gbV90
ZW1wQnVmZmVyOwotICAgIE93blB0cjxBdWRpb0Zsb2F0QXJyYXk+IG1fdGVtcEJ1ZmZlcjI7Ci0g
ICAgT3duUHRyPFVwU2FtcGxlcj4gbV91cFNhbXBsZXI7Ci0gICAgT3duUHRyPERvd25TYW1wbGVy
PiBtX2Rvd25TYW1wbGVyOwotICAgIE93blB0cjxVcFNhbXBsZXI+IG1fdXBTYW1wbGVyMjsKLSAg
ICBPd25QdHI8RG93blNhbXBsZXI+IG1fZG93blNhbXBsZXIyOworICAgIHN0ZDo6dW5pcXVlX3B0
cjxBdWRpb0Zsb2F0QXJyYXk+IG1fdGVtcEJ1ZmZlcjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8QXVk
aW9GbG9hdEFycmF5PiBtX3RlbXBCdWZmZXIyOworICAgIHN0ZDo6dW5pcXVlX3B0cjxVcFNhbXBs
ZXI+IG1fdXBTYW1wbGVyOworICAgIHN0ZDo6dW5pcXVlX3B0cjxEb3duU2FtcGxlcj4gbV9kb3du
U2FtcGxlcjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VXBTYW1wbGVyPiBtX3VwU2FtcGxlcjI7Cisg
ICAgc3RkOjp1bmlxdWVfcHRyPERvd25TYW1wbGVyPiBtX2Rvd25TYW1wbGVyMjsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vV2F2ZVNoYXBlck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9XYXZlU2hhcGVyTm9kZS5jcHAKaW5kZXggOTI2Mjk0MjRmMzU5ODg1MWI3Y2YyMDZlYTFi
NzJjNjNiODdjMGQ5NC4uNjllYzI3YTJjOGU2MzliZWM5NDNlYTNlZGFmMDA0ZjgyNjk1NjYwOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyTm9k
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyTm9k
ZS5jcHAKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogV2F2ZVNoYXBlck5v
ZGU6OldhdmVTaGFwZXJOb2RlKEF1ZGlvQ29udGV4dCogY29udGV4dCkKICAgICA6IEF1ZGlvQmFz
aWNQcm9jZXNzb3JOb2RlKGNvbnRleHQsIGNvbnRleHQtPnNhbXBsZVJhdGUoKSkKIHsKLSAgICBt
X3Byb2Nlc3NvciA9IGFkb3B0UHRyKG5ldyBXYXZlU2hhcGVyUHJvY2Vzc29yKGNvbnRleHQtPnNh
bXBsZVJhdGUoKSwgMSkpOworICAgIG1fcHJvY2Vzc29yID0gc3RkOjptYWtlX3VuaXF1ZTxXYXZl
U2hhcGVyUHJvY2Vzc29yPihjb250ZXh0LT5zYW1wbGVSYXRlKCksIDEpOwogICAgIHNldE5vZGVU
eXBlKE5vZGVUeXBlV2F2ZVNoYXBlcik7CiAKICAgICBpbml0aWFsaXplKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJQcm9jZXNzb3IuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyUHJvY2Vzc29yLmNw
cAppbmRleCBkYTY1NGFlZDE5ZTljYjM2ZWRjZjI2YTZlMWU4MmZiMDIyNTExZjNkLi5jMmQ2ZGUw
YWY5MWNlNjQ2OGZlYmYzZDI3M2MzMzVmN2ZjOTRiYTU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJQcm9jZXNzb3IuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlclByb2Nlc3Nvci5jcHAKQEAgLTQ0
LDkgKzQ0LDkgQEAgV2F2ZVNoYXBlclByb2Nlc3Nvcjo6fldhdmVTaGFwZXJQcm9jZXNzb3IoKQog
ICAgICAgICB1bmluaXRpYWxpemUoKTsKIH0KIAotUGFzc093blB0cjxBdWRpb0RTUEtlcm5lbD4g
V2F2ZVNoYXBlclByb2Nlc3Nvcjo6Y3JlYXRlS2VybmVsKCkKK3N0ZDo6dW5pcXVlX3B0cjxBdWRp
b0RTUEtlcm5lbD4gV2F2ZVNoYXBlclByb2Nlc3Nvcjo6Y3JlYXRlS2VybmVsKCkKIHsKLSAgICBy
ZXR1cm4gYWRvcHRQdHIobmV3IFdhdmVTaGFwZXJEU1BLZXJuZWwodGhpcykpOworICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPFdhdmVTaGFwZXJEU1BLZXJuZWw+KHRoaXMpOwogfQogCiB2b2lk
IFdhdmVTaGFwZXJQcm9jZXNzb3I6OnNldEN1cnZlKEZsb2F0MzJBcnJheSogY3VydmUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJQcm9jZXNz
b3IuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlclByb2Nlc3Nv
ci5oCmluZGV4IDI1YjdkYjQ2YTIxOGU5NDVjOWUzZGM1OTk0MDA1ZTM4MDFmODQ2NWIuLjdiZGEz
MWRhN2QxMDZkOGFhMzU4ZWFiNjcyNzY5NGFlMzAwNWYzMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlclByb2Nlc3Nvci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlclByb2Nlc3Nvci5oCkBAIC0yOCw2
ICsyOCw3IEBACiAjaW5jbHVkZSAiQXVkaW9EU1BLZXJuZWwuaCIKICNpbmNsdWRlICJBdWRpb0RT
UEtlcm5lbFByb2Nlc3Nvci5oIgogI2luY2x1ZGUgIkF1ZGlvTm9kZS5oIgorI2luY2x1ZGUgPG1l
bW9yeT4KICNpbmNsdWRlIDxtdXRleD4KICNpbmNsdWRlIDxydW50aW1lL0Zsb2F0MzJBcnJheS5o
PgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTQ4LDcgKzQ5LDcgQEAgcHVibGljOgogCiAg
ICAgdmlydHVhbCB+V2F2ZVNoYXBlclByb2Nlc3NvcigpOwogCi0gICAgdmlydHVhbCBQYXNzT3du
UHRyPEF1ZGlvRFNQS2VybmVsPiBjcmVhdGVLZXJuZWwoKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFs
IHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0RTUEtlcm5lbD4gY3JlYXRlS2VybmVsKCkgb3ZlcnJpZGU7
CiAKICAgICB2aXJ0dWFsIHZvaWQgcHJvY2Vzcyhjb25zdCBBdWRpb0J1cyogc291cmNlLCBBdWRp
b0J1cyogZGVzdGluYXRpb24sIHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpIG92ZXJyaWRlOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0J1cy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0J1cy5jcHAKaW5kZXggMjM1ODk2NjA3
YjA1MWNlM2U5ZWI1OThmOTIwNjhmNzk0MTFlYzRlYy4uMDc3ZTFmODU1NjRlOWM5YmNlODZmMTYx
NjdmYjBlMTUxODI2MGU1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vQXVkaW9CdXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlv
QnVzLmNwcApAQCAtMzksOCArMzksNiBAQAogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRl
IDxhc3NlcnQuaD4KICNpbmNsdWRlIDxtYXRoLmg+Ci0jaW5jbHVkZSA8d3RmL093blB0ci5oPgot
I2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAt
NjYsOCArNjQsOCBAQCBBdWRpb0J1czo6QXVkaW9CdXModW5zaWduZWQgbnVtYmVyT2ZDaGFubmVs
cywgc2l6ZV90IGxlbmd0aCwgYm9vbCBhbGxvY2F0ZSkKICAgICBtX2NoYW5uZWxzLnJlc2VydmVJ
bml0aWFsQ2FwYWNpdHkobnVtYmVyT2ZDaGFubmVscyk7CiAKICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgbnVtYmVyT2ZDaGFubmVsczsgKytpKSB7Ci0gICAgICAgIFBhc3NPd25QdHI8QXVk
aW9DaGFubmVsPiBjaGFubmVsID0gYWxsb2NhdGUgPyBhZG9wdFB0cihuZXcgQXVkaW9DaGFubmVs
KGxlbmd0aCkpIDogYWRvcHRQdHIobmV3IEF1ZGlvQ2hhbm5lbCgwLCBsZW5ndGgpKTsKLSAgICAg
ICAgbV9jaGFubmVscy5hcHBlbmQoY2hhbm5lbCk7CisgICAgICAgIGF1dG8gY2hhbm5lbCA9IGFs
bG9jYXRlID8gc3RkOjptYWtlX3VuaXF1ZTxBdWRpb0NoYW5uZWw+KGxlbmd0aCkgOiBzdGQ6Om1h
a2VfdW5pcXVlPEF1ZGlvQ2hhbm5lbD4obnVsbHB0ciwgbGVuZ3RoKTsKKyAgICAgICAgbV9jaGFu
bmVscy5hcHBlbmQoc3RkOjptb3ZlKGNoYW5uZWwpKTsKICAgICB9CiAKICAgICBtX2xheW91dCA9
IExheW91dENhbm9uaWNhbDsgLy8gZm9yIG5vdyB0aGlzIGlzIHRoZSBvbmx5IGxheW91dCB3ZSBk
ZWZpbmUKQEAgLTQ2NCw3ICs0NjIsNyBAQCB2b2lkIEF1ZGlvQnVzOjpjb3B5V2l0aEdhaW5Gcm9t
KGNvbnN0IEF1ZGlvQnVzICZzb3VyY2VCdXMsIGZsb2F0KiBsYXN0TWl4R2FpbiwgZgogCiAgICAg
aWYgKGZyYW1lc1RvRGV6aXBwZXIpIHsKICAgICAgICAgaWYgKCFtX2RlemlwcGVyR2FpblZhbHVl
cy5nZXQoKSB8fCBtX2RlemlwcGVyR2FpblZhbHVlcy0+c2l6ZSgpIDwgZnJhbWVzVG9EZXppcHBl
cikKLSAgICAgICAgICAgIG1fZGV6aXBwZXJHYWluVmFsdWVzID0gYWRvcHRQdHIobmV3IEF1ZGlv
RmxvYXRBcnJheShmcmFtZXNUb0RlemlwcGVyKSk7CisgICAgICAgICAgICBtX2RlemlwcGVyR2Fp
blZhbHVlcyA9IHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9GbG9hdEFycmF5PihmcmFtZXNUb0Rlemlw
cGVyKTsKIAogICAgICAgICBmbG9hdCogZ2FpblZhbHVlcyA9IG1fZGV6aXBwZXJHYWluVmFsdWVz
LT5kYXRhKCk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBmcmFtZXNUb0Rlemlw
cGVyOyArK2kpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1
ZGlvQnVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0J1cy5oCmluZGV4
IDFlMWMwNGY4YWZhYWIxZDJlOTMyZGJmNDUyNmYyNGQyYmQ1NTMxYzAuLjE5Y2I2OTUwMTc1Yzk0
ZjJiNTdlM2M3YzZkODgzOTgxOThlMDg4ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL0F1ZGlvQnVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vQXVkaW9CdXMuaApAQCAtMzAsOCArMzAsOCBAQAogI2RlZmluZSBBdWRpb0J1c19oCiAKICNp
bmNsdWRlICJBdWRpb0NoYW5uZWwuaCIKKyNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8d3Rm
L05vbmNvcHlhYmxlLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3
dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKQEAg
LTE1OCwxMCArMTU4LDEwIEBAIHByb3RlY3RlZDoKICAgICB2b2lkIHNwZWFrZXJzU3VtRnJvbTVf
MV9Ub01vbm8oY29uc3QgQXVkaW9CdXMmKTsKIAogICAgIHNpemVfdCBtX2xlbmd0aDsKLSAgICBW
ZWN0b3I8T3duUHRyPEF1ZGlvQ2hhbm5lbD4+IG1fY2hhbm5lbHM7CisgICAgVmVjdG9yPHN0ZDo6
dW5pcXVlX3B0cjxBdWRpb0NoYW5uZWw+PiBtX2NoYW5uZWxzOwogICAgIGludCBtX2xheW91dDsK
ICAgICBmbG9hdCBtX2J1c0dhaW47Ci0gICAgT3duUHRyPEF1ZGlvRmxvYXRBcnJheT4gbV9kZXpp
cHBlckdhaW5WYWx1ZXM7CisgICAgc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRmxvYXRBcnJheT4gbV9k
ZXppcHBlckdhaW5WYWx1ZXM7CiAgICAgYm9vbCBtX2lzRmlyc3RUaW1lOwogICAgIGZsb2F0IG1f
c2FtcGxlUmF0ZTsgLy8gMC4wIGlmIHVua25vd24gb3IgTi9BCiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9DaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvQ2hhbm5lbC5jcHAKaW5kZXggMDlmNjM4ZmJkYjY0YmE0
MmYzY2M3OTNlZDNkMjQ0MzIyNWEwNzVlMC4uZGNlN2EzMzE0Njg1MWY4NTNjOTg2MWYzMjQ3MWE4
NTE3ZDdiYTA3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVk
aW9DaGFubmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0No
YW5uZWwuY3BwCkBAIC0zNSw3ICszNSw2IEBACiAjaW5jbHVkZSAiVmVjdG9yTWF0aC5oIgogI2lu
Y2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDxtYXRoLmg+Ci0jaW5jbHVkZSA8d3RmL093blB0
ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL0F1ZGlvQ2hhbm5lbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vQXVkaW9DaGFubmVsLmgKaW5kZXggMjY2ZTdkYThmN2RkZjk4YjRiOWU4MDdhZmU5Yjkw
ZTA2NmI5NjM5OC4uZDBjYzVkMzJiOTMyMmY3OGY0YzU3OGFmNDk4MDZkMTE1Mjk4MWY3YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9DaGFubmVsLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9DaGFubmVsLmgKQEAgLTMwLDcg
KzMwLDcgQEAKICNkZWZpbmUgQXVkaW9DaGFubmVsX2gKIAogI2luY2x1ZGUgIkF1ZGlvQXJyYXku
aCIKLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorI2luY2x1ZGUgPG1lbW9yeT4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKICAgICAvLyBNZW1v
cnkgY2FuIGJlIGV4dGVybmFsbHkgcmVmZXJlbmNlZCwgb3IgY2FuIGJlIGludGVybmFsbHkgYWxs
b2NhdGVkIHdpdGggYW4gQXVkaW9GbG9hdEFycmF5LgogCiAgICAgLy8gUmVmZXJlbmNlIGFuIGV4
dGVybmFsIGJ1ZmZlci4KLSAgICBBdWRpb0NoYW5uZWwoZmxvYXQqIHN0b3JhZ2UsIHNpemVfdCBs
ZW5ndGgpCisgICAgZXhwbGljaXQgQXVkaW9DaGFubmVsKGZsb2F0KiBzdG9yYWdlLCBzaXplX3Qg
bGVuZ3RoKQogICAgICAgICA6IG1fbGVuZ3RoKGxlbmd0aCkKICAgICAgICAgLCBtX3Jhd1BvaW50
ZXIoc3RvcmFnZSkKICAgICAgICAgLCBtX3NpbGVudChmYWxzZSkKQEAgLTU1LDcgKzU1LDcgQEAg
cHVibGljOgogICAgICAgICAsIG1fcmF3UG9pbnRlcigwKQogICAgICAgICAsIG1fc2lsZW50KHRy
dWUpCiAgICAgewotICAgICAgICBtX21lbUJ1ZmZlciA9IGFkb3B0UHRyKG5ldyBBdWRpb0Zsb2F0
QXJyYXkobGVuZ3RoKSk7CisgICAgICAgIG1fbWVtQnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxB
dWRpb0Zsb2F0QXJyYXk+KGxlbmd0aCk7CiAgICAgfQogCiAgICAgLy8gQSAiYmxhbmsiIGF1ZGlv
IGNoYW5uZWwgLS0gbXVzdCBjYWxsIHNldCgpIGJlZm9yZSBpdCdzIHVzZWZ1bC4uLgpAQCAtNzAs
NyArNzAsNyBAQCBwdWJsaWM6CiAgICAgLy8gc3RvcmFnZSByZXByZXNlbnRzIGV4dGVybmFsIG1l
bW9yeSBub3QgbWFuYWdlZCBieSB0aGlzIG9iamVjdC4KICAgICB2b2lkIHNldChmbG9hdCogc3Rv
cmFnZSwgc2l6ZV90IGxlbmd0aCkKICAgICB7Ci0gICAgICAgIG1fbWVtQnVmZmVyLmNsZWFyKCk7
IC8vIGNsZWFudXAgbWFuYWdlZCBzdG9yYWdlCisgICAgICAgIG1fbWVtQnVmZmVyLnJlc2V0KCk7
IC8vIGNsZWFudXAgbWFuYWdlZCBzdG9yYWdlCiAgICAgICAgIG1fcmF3UG9pbnRlciA9IHN0b3Jh
Z2U7CiAgICAgICAgIG1fbGVuZ3RoID0gbGVuZ3RoOwogICAgICAgICBtX3NpbGVudCA9IGZhbHNl
OwpAQCAtMTMwLDcgKzEzMCw3IEBAIHByaXZhdGU6CiAgICAgc2l6ZV90IG1fbGVuZ3RoOwogCiAg
ICAgZmxvYXQqIG1fcmF3UG9pbnRlcjsKLSAgICBPd25QdHI8QXVkaW9GbG9hdEFycmF5PiBtX21l
bUJ1ZmZlcjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9GbG9hdEFycmF5PiBtX21lbUJ1ZmZl
cjsKICAgICBib29sIG1fc2lsZW50OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vQXVkaW9EU1BLZXJuZWxQcm9jZXNzb3IuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL0F1ZGlvRFNQS2VybmVsUHJvY2Vzc29yLmgKaW5kZXggOTgzMGU0Y2E3
MDg4OTE0OGJhZTYwMjMxN2QzOGZjYjBiMjg4ODRkZi4uOGI2OWNmM2ZkNzUxYTg4OWYyODQ0ODI0
YjRmOTg2ZWVjMWU3ODZlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vQXVkaW9EU1BLZXJuZWxQcm9jZXNzb3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9BdWRpb0RTUEtlcm5lbFByb2Nlc3Nvci5oCkBAIC0zMyw4ICszMyw2IEBACiAKICNp
bmNsdWRlICJBdWRpb0J1cy5oIgogI2luY2x1ZGUgIkF1ZGlvUHJvY2Vzc29yLmgiCi0jaW5jbHVk
ZSA8d3RmL093blB0ci5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01NCw3ICs1Miw3IEBAIHB1
YmxpYzoKIAogICAgIC8vIFN1YmNsYXNzZXMgY3JlYXRlIHRoZSBhcHByb3ByaWF0ZSB0eXBlIG9m
IHByb2Nlc3Npbmcga2VybmVsIGhlcmUuCiAgICAgLy8gV2UnbGwgY2FsbCB0aGlzIHRvIGNyZWF0
ZSBhIGtlcm5lbCBmb3IgZWFjaCBjaGFubmVsLgotICAgIHZpcnR1YWwgUGFzc093blB0cjxBdWRp
b0RTUEtlcm5lbD4gY3JlYXRlS2VybmVsKCkgPSAwOworICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVf
cHRyPEF1ZGlvRFNQS2VybmVsPiBjcmVhdGVLZXJuZWwoKSA9IDA7CiAKICAgICAvLyBBdWRpb1By
b2Nlc3NvciBtZXRob2RzCiAgICAgdmlydHVhbCB2b2lkIGluaXRpYWxpemUoKSBvdmVycmlkZTsK
QEAgLTY4LDcgKzY2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgZG91YmxlIGxhdGVuY3lUaW1l
KCkgY29uc3Qgb3ZlcnJpZGU7CiAKIHByb3RlY3RlZDoKLSAgICBWZWN0b3I8T3duUHRyPEF1ZGlv
RFNQS2VybmVsPj4gbV9rZXJuZWxzOworICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9E
U1BLZXJuZWw+PiBtX2tlcm5lbHM7CiAgICAgYm9vbCBtX2hhc0p1c3RSZXNldDsKIH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvRGVzdGluYXRpb24u
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvRGVzdGluYXRpb24uaAppbmRl
eCAxNzY2ZWU1YmU1Nzc1MDI5MTA2ZGFkZmQxODdlNTBiNzViYTQ5M2RmLi42MTMyZDhlZGFlMzc3
MmUzMTVmNzYwNzFmNjlhMTA2OGQ4ZWE1MmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9BdWRpb0Rlc3RpbmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vQXVkaW9EZXN0aW5hdGlvbi5oCkBAIC0yOSw4ICsyOSw3IEBACiAjaWZuZGVm
IEF1ZGlvRGVzdGluYXRpb25faAogI2RlZmluZSBBdWRpb0Rlc3RpbmF0aW9uX2gKIAotI2luY2x1
ZGUgPHd0Zi9Pd25QdHIuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorI2luY2x1ZGUg
PG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpAQCAtNDUsNyArNDQsNyBAQCBjbGFzcyBBdWRpb0Rlc3RpbmF0aW9uIHsKIHB1Ymxp
YzoKICAgICAvLyBQYXNzIGluIChudW1iZXJPZklucHV0Q2hhbm5lbHMgPiAwKSBpZiBsaXZlL2xv
Y2FsIGF1ZGlvIGlucHV0IGlzIGRlc2lyZWQuCiAgICAgLy8gUG9ydC1zcGVjaWZpYyBkZXZpY2Ug
aWRlbnRpZmljYXRpb24gaW5mb3JtYXRpb24gZm9yIGxpdmUvbG9jYWwgaW5wdXQgc3RyZWFtcyBj
YW4gYmUgcGFzc2VkIGluIHRoZSBpbnB1dERldmljZUlkLgotICAgIHN0YXRpYyBQYXNzT3duUHRy
PEF1ZGlvRGVzdGluYXRpb24+IGNyZWF0ZShBdWRpb0lPQ2FsbGJhY2smLCBjb25zdCBTdHJpbmcm
IGlucHV0RGV2aWNlSWQsIHVuc2lnbmVkIG51bWJlck9mSW5wdXRDaGFubmVscywgdW5zaWduZWQg
bnVtYmVyT2ZPdXRwdXRDaGFubmVscywgZmxvYXQgc2FtcGxlUmF0ZSk7CisgICAgc3RhdGljIHN0
ZDo6dW5pcXVlX3B0cjxBdWRpb0Rlc3RpbmF0aW9uPiBjcmVhdGUoQXVkaW9JT0NhbGxiYWNrJiwg
Y29uc3QgU3RyaW5nJiBpbnB1dERldmljZUlkLCB1bnNpZ25lZCBudW1iZXJPZklucHV0Q2hhbm5l
bHMsIHVuc2lnbmVkIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUpOwog
CiAgICAgdmlydHVhbCB+QXVkaW9EZXN0aW5hdGlvbigpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Jlc2FtcGxlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Jlc2FtcGxlci5jcHAKaW5kZXggNTlmMmIzNzU0ZmJl
ODA3MzA3OTIwNDU2MDI2ZDNiMjQzMjRlMTQyZi4uODY5MDZiYTUxMjQ3NTg2OTJjNjgzZTJiYzkw
MzgzNTAxZWFiOGZkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
QXVkaW9SZXNhbXBsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1
ZGlvUmVzYW1wbGVyLmNwcApAQCAtMzksNyArMzksNyBAQCBjb25zdCBkb3VibGUgQXVkaW9SZXNh
bXBsZXI6Ok1heFJhdGUgPSA4LjA7CiBBdWRpb1Jlc2FtcGxlcjo6QXVkaW9SZXNhbXBsZXIoKQog
ICAgIDogbV9yYXRlKDEuMCkKIHsKLSAgICBtX2tlcm5lbHMuYXBwZW5kKGFkb3B0UHRyKG5ldyBB
dWRpb1Jlc2FtcGxlcktlcm5lbCh0aGlzKSkpOworICAgIG1fa2VybmVscy5hcHBlbmQoc3RkOjpt
YWtlX3VuaXF1ZTxBdWRpb1Jlc2FtcGxlcktlcm5lbD4odGhpcykpOwogICAgIG1fc291cmNlQnVz
ID0gQXVkaW9CdXM6OmNyZWF0ZSgxLCAwLCBmYWxzZSk7CiB9CiAKQEAgLTQ3LDcgKzQ3LDcgQEAg
QXVkaW9SZXNhbXBsZXI6OkF1ZGlvUmVzYW1wbGVyKHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMp
CiAgICAgOiBtX3JhdGUoMS4wKQogewogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1i
ZXJPZkNoYW5uZWxzOyArK2kpCi0gICAgICAgIG1fa2VybmVscy5hcHBlbmQoYWRvcHRQdHIobmV3
IEF1ZGlvUmVzYW1wbGVyS2VybmVsKHRoaXMpKSk7CisgICAgICAgIG1fa2VybmVscy5hcHBlbmQo
c3RkOjptYWtlX3VuaXF1ZTxBdWRpb1Jlc2FtcGxlcktlcm5lbD4odGhpcykpOwogCiAgICAgbV9z
b3VyY2VCdXMgPSBBdWRpb0J1czo6Y3JlYXRlKG51bWJlck9mQ2hhbm5lbHMsIDAsIGZhbHNlKTsK
IH0KQEAgLTYxLDcgKzYxLDcgQEAgdm9pZCBBdWRpb1Jlc2FtcGxlcjo6Y29uZmlndXJlQ2hhbm5l
bHModW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscykKICAgICAvLyBGaXJzdCBkZWFsIHdpdGggYWRk
aW5nIG9yIHJlbW92aW5nIGtlcm5lbHMuCiAgICAgaWYgKG51bWJlck9mQ2hhbm5lbHMgPiBjdXJy
ZW50U2l6ZSkgewogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBjdXJyZW50U2l6ZTsgaSA8IG51
bWJlck9mQ2hhbm5lbHM7ICsraSkKLSAgICAgICAgICAgIG1fa2VybmVscy5hcHBlbmQoYWRvcHRQ
dHIobmV3IEF1ZGlvUmVzYW1wbGVyS2VybmVsKHRoaXMpKSk7CisgICAgICAgICAgICBtX2tlcm5l
bHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9SZXNhbXBsZXJLZXJuZWw+KHRoaXMpKTsK
ICAgICB9IGVsc2UKICAgICAgICAgbV9rZXJuZWxzLnJlc2l6ZShudW1iZXJPZkNoYW5uZWxzKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9SZXNhbXBs
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvUmVzYW1wbGVyLmgKaW5k
ZXggMGYzMzJhZTA2NjY1NGY1ZjRhZWY3MjJlZGQxNGExMDk0NWYxOWU0OS4uMjZlOGNjNzY2Mzg5
YzE5Y2MxOWExOThhOTc5MTdjM2E0YzRiYWViZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vQXVkaW9SZXNhbXBsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9BdWRpb1Jlc2FtcGxlci5oCkBAIC0yOCw3ICsyOCw3IEBACiAjaW5jbHVkZSAi
QXVkaW9CdXMuaCIKICNpbmNsdWRlICJBdWRpb1Jlc2FtcGxlcktlcm5lbC5oIgogI2luY2x1ZGUg
IkF1ZGlvU291cmNlUHJvdmlkZXIuaCIKLSNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisjaW5jbHVk
ZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewpAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgZG91YmxlIG1fcmF0
ZTsKLSAgICBWZWN0b3I8T3duUHRyPEF1ZGlvUmVzYW1wbGVyS2VybmVsPj4gbV9rZXJuZWxzOwor
ICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9SZXNhbXBsZXJLZXJuZWw+PiBtX2tlcm5l
bHM7CiAgICAgUmVmUHRyPEF1ZGlvQnVzPiBtX3NvdXJjZUJ1czsKIH07CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbi5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uLmgKaW5kZXggMGVhNjY0YzE4MWI1MDVj
MGI3M2FiNTQxNmViYmNkNWUxMzg0MGJlZS4uZWIxMjc3M2NiYTY1ZWM5ZWVjMzg3MWQwZGI2Yzlh
NjRmNTA5YTU5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVk
aW9TZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNz
aW9uLmgKQEAgLTI4LDggKzI4LDggQEAKIAogI2lmIFVTRShBVURJT19TRVNTSU9OKQogCisjaW5j
bHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL093
blB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTc0LDcgKzc0LDcgQEAgcHJpdmF0
ZToKICAgICBBdWRpb1Nlc3Npb24oKTsKICAgICB+QXVkaW9TZXNzaW9uKCk7CiAKLSAgICBPd25Q
dHI8QXVkaW9TZXNzaW9uUHJpdmF0ZT4gbV9wcml2YXRlOworICAgIHN0ZDo6dW5pcXVlX3B0cjxB
dWRpb1Nlc3Npb25Qcml2YXRlPiBtX3ByaXZhdGU7CiAgICAgSGFzaFNldDxBdWRpb1Nlc3Npb25M
aXN0ZW5lcio+IG1fbGlzdGVuZXJzOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvci5jcHAKaW5kZXggZTNjZWNjMDYwNTcwYTVj
OWM0MmVhZGNmZTBiNGU4Yzk5NGVjZDU0OC4uODk0MmIzMTI1NzkzN2VhNDNiOTAzNmJmN2JhZTE3
ZmJmZGRjNDIwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHlu
YW1pY3NDb21wcmVzc29yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9E
eW5hbWljc0NvbXByZXNzb3IuY3BwCkBAIC0yNzEsOCArMjcxLDggQEAgdm9pZCBEeW5hbWljc0Nv
bXByZXNzb3I6OnNldE51bWJlck9mQ2hhbm5lbHModW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscykK
ICAgICBtX3ByZUZpbHRlclBhY2tzLmNsZWFyKCk7CiAgICAgbV9wb3N0RmlsdGVyUGFja3MuY2xl
YXIoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZDaGFubmVsczsgKytp
KSB7Ci0gICAgICAgIG1fcHJlRmlsdGVyUGFja3MuYXBwZW5kKGFkb3B0UHRyKG5ldyBaZXJvUG9s
ZUZpbHRlclBhY2s0KCkpKTsKLSAgICAgICAgbV9wb3N0RmlsdGVyUGFja3MuYXBwZW5kKGFkb3B0
UHRyKG5ldyBaZXJvUG9sZUZpbHRlclBhY2s0KCkpKTsKKyAgICAgICAgbV9wcmVGaWx0ZXJQYWNr
cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxaZXJvUG9sZUZpbHRlclBhY2s0PigpKTsKKyAgICAg
ICAgbV9wb3N0RmlsdGVyUGFja3MuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8WmVyb1BvbGVGaWx0
ZXJQYWNrND4oKSk7CiAgICAgfQogCiAgICAgbV9zb3VyY2VDaGFubmVscyA9IHN0ZDo6bWFrZV91
bmlxdWU8Y29uc3QgZmxvYXQqW10+KG51bWJlck9mQ2hhbm5lbHMpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3IuaAppbmRleCA4M2MyZGQz
ZTYzZTI3MWFmYjllYjQ5NTk4NDMzZjgxYWVjOGNjYzA2Li5mMzJkNmQwNGVlYjI3ZTQxZTYzMDNh
NTAzNDliODAzMzFlZjI4YmI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9EeW5hbWljc0NvbXByZXNzb3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9EeW5hbWljc0NvbXByZXNzb3IuaApAQCAtOTksOCArOTksOCBAQCBwcm90ZWN0ZWQ6CiAg
ICAgfSBaZXJvUG9sZUZpbHRlclBhY2s0OwogCiAgICAgLy8gUGVyLWNoYW5uZWwgZW1waGFzaXMg
ZmlsdGVycy4KLSAgICBWZWN0b3I8T3duUHRyPFplcm9Qb2xlRmlsdGVyUGFjazQ+PiBtX3ByZUZp
bHRlclBhY2tzOwotICAgIFZlY3RvcjxPd25QdHI8WmVyb1BvbGVGaWx0ZXJQYWNrND4+IG1fcG9z
dEZpbHRlclBhY2tzOworICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8WmVyb1BvbGVGaWx0ZXJQ
YWNrND4+IG1fcHJlRmlsdGVyUGFja3M7CisgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxaZXJv
UG9sZUZpbHRlclBhY2s0Pj4gbV9wb3N0RmlsdGVyUGFja3M7CiAKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8Y29uc3QgZmxvYXQqW10+IG1fc291cmNlQ2hhbm5lbHM7CiAgICAgc3RkOjp1bmlxdWVfcHRy
PGZsb2F0KltdPiBtX2Rlc3RpbmF0aW9uQ2hhbm5lbHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3JLZXJuZWwuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yS2VybmVsLmNwcAppbmRl
eCBiNTdlNzFmYjkzODA0MWZiMDdlM2YwMmMwNjMyNzNiZTRkYzc3YmQxLi4zZDk5Mjk0NTI0NWEx
MWEyMWQ5NDk5MmJhNTFmOGFlMjljNDVjYmYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3JLZXJuZWwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbC5jcHAKQEAgLTc2
LDcgKzc2LDcgQEAgdm9pZCBEeW5hbWljc0NvbXByZXNzb3JLZXJuZWw6OnNldE51bWJlck9mQ2hh
bm5lbHModW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscykKIAogICAgIG1fcHJlRGVsYXlCdWZmZXJz
LmNsZWFyKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9mQ2hhbm5lbHM7
ICsraSkKLSAgICAgICAgbV9wcmVEZWxheUJ1ZmZlcnMuYXBwZW5kKGFkb3B0UHRyKG5ldyBBdWRp
b0Zsb2F0QXJyYXkoTWF4UHJlRGVsYXlGcmFtZXMpKSk7CisgICAgICAgIG1fcHJlRGVsYXlCdWZm
ZXJzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvRmxvYXRBcnJheT4oTWF4UHJlRGVsYXlG
cmFtZXMpKTsKIH0KIAogdm9pZCBEeW5hbWljc0NvbXByZXNzb3JLZXJuZWw6OnNldFByZURlbGF5
VGltZShmbG9hdCBwcmVEZWxheVRpbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3JLZXJuZWwuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbC5oCmluZGV4IGZmYTU2MzA4ODQ2
MjgyNTkxZjkyYmJjNGNhNzI5ZmZlODQzMjg2NjMuLjE4ODM0YWZkOWFhMTM1Yjg4ZDM5NDA4MDM0
ZWUzZWZhOGRjMWMwYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L0R5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbC5oCkBAIC0zMCw5ICszMCw3IEBACiAjZGVm
aW5lIER5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbF9oCiAKICNpbmNsdWRlICJBdWRpb0FycmF5Lmgi
Ci0KLSNpbmNsdWRlIDx3dGYvT3duUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4K
KyNpbmNsdWRlIDxtZW1vcnk+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtODgsNyArODYs
NyBAQCBwcm90ZWN0ZWQ6CiAgICAgdW5zaWduZWQgbV9sYXN0UHJlRGVsYXlGcmFtZXM7CiAgICAg
dm9pZCBzZXRQcmVEZWxheVRpbWUoZmxvYXQpOwogCi0gICAgVmVjdG9yPE93blB0cjxBdWRpb0Zs
b2F0QXJyYXk+PiBtX3ByZURlbGF5QnVmZmVyczsKKyAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRy
PEF1ZGlvRmxvYXRBcnJheT4+IG1fcHJlRGVsYXlCdWZmZXJzOwogICAgIGludCBtX3ByZURlbGF5
UmVhZEluZGV4OwogICAgIGludCBtX3ByZURlbGF5V3JpdGVJbmRleDsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRkZURnJhbWUuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vRkZURnJhbWUuY3BwCmluZGV4IGM2Mjg1MTQzYzMzZDJlMTdiYzQ3
N2RmYzBiZmRkMjU3ZDVlY2M3ODUuLjMyNDdiMmIzYjg0MzExNGYxZTc0ODk1Y2Y0OTVlOWFhZDQy
ODhjZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0ZGVEZyYW1l
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9GRlRGcmFtZS5jcHAKQEAg
LTM1LDcgKzM1LDYgQEAKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSA8Y29tcGxleD4K
ICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgotI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KIAog
I2lmbmRlZiBOREVCVUcKICNpbmNsdWRlIDxzdGRpby5oPgpAQCAtNTMsOSArNTIsOSBAQCB2b2lk
IEZGVEZyYW1lOjpkb1BhZGRlZEZGVChjb25zdCBmbG9hdCogZGF0YSwgc2l6ZV90IGRhdGFTaXpl
KQogICAgIGRvRkZUKHBhZGRlZFJlc3BvbnNlLmRhdGEoKSk7CiB9CiAKLVBhc3NPd25QdHI8RkZU
RnJhbWU+IEZGVEZyYW1lOjpjcmVhdGVJbnRlcnBvbGF0ZWRGcmFtZShjb25zdCBGRlRGcmFtZSYg
ZnJhbWUxLCBjb25zdCBGRlRGcmFtZSYgZnJhbWUyLCBkb3VibGUgeCkKK3N0ZDo6dW5pcXVlX3B0
cjxGRlRGcmFtZT4gRkZURnJhbWU6OmNyZWF0ZUludGVycG9sYXRlZEZyYW1lKGNvbnN0IEZGVEZy
YW1lJiBmcmFtZTEsIGNvbnN0IEZGVEZyYW1lJiBmcmFtZTIsIGRvdWJsZSB4KQogewotICAgIE93
blB0cjxGRlRGcmFtZT4gbmV3RnJhbWUgPSBhZG9wdFB0cihuZXcgRkZURnJhbWUoZnJhbWUxLmZm
dFNpemUoKSkpOworICAgIGF1dG8gbmV3RnJhbWUgPSBzdGQ6Om1ha2VfdW5pcXVlPEZGVEZyYW1l
PihmcmFtZTEuZmZ0U2l6ZSgpKTsKIAogICAgIG5ld0ZyYW1lLT5pbnRlcnBvbGF0ZUZyZXF1ZW5j
eUNvbXBvbmVudHMoZnJhbWUxLCBmcmFtZTIsIHgpOwogCkBAIC02OCw3ICs2Nyw3IEBAIFBhc3NP
d25QdHI8RkZURnJhbWU+IEZGVEZyYW1lOjpjcmVhdGVJbnRlcnBvbGF0ZWRGcmFtZShjb25zdCBG
RlRGcmFtZSYgZnJhbWUxLCBjCiAgICAgLy8gUHV0IGJhY2sgaW50byBmcmVxdWVuY3kgZG9tYWlu
LgogICAgIG5ld0ZyYW1lLT5kb0ZGVChidWZmZXIuZGF0YSgpKTsKIAotICAgIHJldHVybiBuZXdG
cmFtZS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIG5ld0ZyYW1lOwogfQogCiB2b2lkIEZGVEZyYW1l
OjppbnRlcnBvbGF0ZUZyZXF1ZW5jeUNvbXBvbmVudHMoY29uc3QgRkZURnJhbWUmIGZyYW1lMSwg
Y29uc3QgRkZURnJhbWUmIGZyYW1lMiwgZG91YmxlIGludGVycCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0ZGVEZyYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9GRlRGcmFtZS5oCmluZGV4IDkyNGQ0NzQ5YTUyMDhmNjQwOWM2MDkxNjkzMWFi
ZjM5YzZiMDUwY2QuLjAxYWUxYTRhYjA1ZjE2MTFiYzBmZDY3ZDhiNjM2MmM3YjAxZWFiYmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0ZGVEZyYW1lLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRkZURnJhbWUuaApAQCAtNDksNyArNDksNiBA
QAogCiAjaWYgVVNFKFdFQkFVRElPX0dTVFJFQU1FUikKICNpbmNsdWRlIDxnbGliLmg+Ci0jaW5j
bHVkZSA8bWVtb3J5PgogR19CRUdJTl9ERUNMUwogI2luY2x1ZGUgPGdzdC9mZnQvZ3N0ZmZ0ZjMy
Lmg+CiBHX0VORF9ERUNMUwpAQCAtNzIsOCArNzEsOCBAQCBzdHJ1Y3QgUkRGVENvbnRleHQ7CiAj
aW5jbHVkZSA8cHVibGljL0ZGVEZyYW1lLmg+CiAjZW5kaWYKIAorI2luY2x1ZGUgPG1lbW9yeT4K
ICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAj
aW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xMDUs
NyArMTA0LDcgQEAgcHVibGljOgogICAgIC8vIFRoZSByZW1haW5pbmcgcHVibGljIG1ldGhvZHMg
aGF2ZSBjcm9zcy1wbGF0Zm9ybSBpbXBsZW1lbnRhdGlvbnM6CiAKICAgICAvLyBJbnRlcnBvbGF0
ZXMgZnJvbSBmcmFtZTEgLT4gZnJhbWUyIGFzIHggZ29lcyBmcm9tIDAuMCAtPiAxLjAKLSAgICBz
dGF0aWMgUGFzc093blB0cjxGRlRGcmFtZT4gY3JlYXRlSW50ZXJwb2xhdGVkRnJhbWUoY29uc3Qg
RkZURnJhbWUmIGZyYW1lMSwgY29uc3QgRkZURnJhbWUmIGZyYW1lMiwgZG91YmxlIHgpOworICAg
IHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8RkZURnJhbWU+IGNyZWF0ZUludGVycG9sYXRlZEZyYW1l
KGNvbnN0IEZGVEZyYW1lJiBmcmFtZTEsIGNvbnN0IEZGVEZyYW1lJiBmcmFtZTIsIGRvdWJsZSB4
KTsKIAogICAgIHZvaWQgZG9QYWRkZWRGRlQoY29uc3QgZmxvYXQqIGRhdGEsIHNpemVfdCBkYXRh
U2l6ZSk7IC8vIHplcm8tcGFkZGluZyB3aXRoIGRhdGFTaXplIDw9IGZmdFNpemUKICAgICBkb3Vi
bGUgZXh0cmFjdEF2ZXJhZ2VHcm91cERlbGF5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9IUlRGRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vSFJURkRhdGFiYXNlLmNwcAppbmRleCA5ZDEyNDUyYTNiZTFlMDZhZjc3ZTZjNTRl
ZDQxNWMxZjY5ZDQ2YzcxLi42Njk1YjViZDY5ZjA1ZTAyYzU5ZmE1NTk5YjFjZDZhN2E3ZjQzMzVh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRGF0YWJhc2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZEYXRhYmFzZS5jcHAK
QEAgLTQzLDI0ICs0MywxOCBAQCBjb25zdCB1bnNpZ25lZCBIUlRGRGF0YWJhc2U6Ok51bWJlck9m
UmF3RWxldmF0aW9ucyA9IDEwOyAvLyAtNDUgLT4gKzkwIChlYWNoIDE1CiBjb25zdCB1bnNpZ25l
ZCBIUlRGRGF0YWJhc2U6OkludGVycG9sYXRpb25GYWN0b3IgPSAxOwogY29uc3QgdW5zaWduZWQg
SFJURkRhdGFiYXNlOjpOdW1iZXJPZlRvdGFsRWxldmF0aW9ucyA9IE51bWJlck9mUmF3RWxldmF0
aW9ucyAqIEludGVycG9sYXRpb25GYWN0b3I7CiAKLVBhc3NPd25QdHI8SFJURkRhdGFiYXNlPiBI
UlRGRGF0YWJhc2U6OmNyZWF0ZShmbG9hdCBzYW1wbGVSYXRlKQotewotICAgIE93blB0cjxIUlRG
RGF0YWJhc2U+IGhydGZEYXRhYmFzZSA9IGFkb3B0UHRyKG5ldyBIUlRGRGF0YWJhc2Uoc2FtcGxl
UmF0ZSkpOwotICAgIHJldHVybiBocnRmRGF0YWJhc2UucmVsZWFzZSgpOwotfQotCiBIUlRGRGF0
YWJhc2U6OkhSVEZEYXRhYmFzZShmbG9hdCBzYW1wbGVSYXRlKQogICAgIDogbV9lbGV2YXRpb25z
KE51bWJlck9mVG90YWxFbGV2YXRpb25zKQogICAgICwgbV9zYW1wbGVSYXRlKHNhbXBsZVJhdGUp
CiB7CiAgICAgdW5zaWduZWQgZWxldmF0aW9uSW5kZXggPSAwOwogICAgIGZvciAoaW50IGVsZXZh
dGlvbiA9IE1pbkVsZXZhdGlvbjsgZWxldmF0aW9uIDw9IE1heEVsZXZhdGlvbjsgZWxldmF0aW9u
ICs9IFJhd0VsZXZhdGlvbkFuZ2xlU3BhY2luZykgewotICAgICAgICBPd25QdHI8SFJURkVsZXZh
dGlvbj4gaHJ0ZkVsZXZhdGlvbiA9IEhSVEZFbGV2YXRpb246OmNyZWF0ZUZvclN1YmplY3QoIkNv
bXBvc2l0ZSIsIGVsZXZhdGlvbiwgc2FtcGxlUmF0ZSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0
cjxIUlRGRWxldmF0aW9uPiBocnRmRWxldmF0aW9uID0gSFJURkVsZXZhdGlvbjo6Y3JlYXRlRm9y
U3ViamVjdCgiQ29tcG9zaXRlIiwgZWxldmF0aW9uLCBzYW1wbGVSYXRlKTsKICAgICAgICAgQVNT
RVJUKGhydGZFbGV2YXRpb24uZ2V0KCkpOwogICAgICAgICBpZiAoIWhydGZFbGV2YXRpb24uZ2V0
KCkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIAotICAgICAgICBtX2VsZXZhdGlvbnNb
ZWxldmF0aW9uSW5kZXhdID0gaHJ0ZkVsZXZhdGlvbi5yZWxlYXNlKCk7CisgICAgICAgIG1fZWxl
dmF0aW9uc1tlbGV2YXRpb25JbmRleF0gPSBzdGQ6Om1vdmUoaHJ0ZkVsZXZhdGlvbik7CiAgICAg
ICAgIGVsZXZhdGlvbkluZGV4ICs9IEludGVycG9sYXRpb25GYWN0b3I7CiAgICAgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRGF0YWJhc2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZEYXRhYmFzZS5oCmluZGV4IDkxNWFkNmQ2
NDEzN2EwNzcxYmRiMjI5NWQzNWQ1OGY0MzU4MzVmODAuLjkzYmQ4ZjM4NTFkNjg1YmM0YmVkMDZm
Y2ZmNmJiMWY2YTI4NWMxMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL0hSVEZEYXRhYmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hS
VEZEYXRhYmFzZS5oCkBAIC0zMCw5ICszMCw5IEBACiAjZGVmaW5lIEhSVEZEYXRhYmFzZV9oCiAK
ICNpbmNsdWRlICJIUlRGRWxldmF0aW9uLmgiCisjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUg
PHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0jaW5jbHVkZSA8
d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgogCkBAIC00Myw3ICs0Myw3IEBAIGNsYXNzIEhSVEZLZXJuZWw7CiBjbGFzcyBI
UlRGRGF0YWJhc2UgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEhSVEZEYXRhYmFzZSk7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8SFJURkRhdGFiYXNlPiBjcmVhdGUoZmxvYXQg
c2FtcGxlUmF0ZSk7CisgICAgZXhwbGljaXQgSFJURkRhdGFiYXNlKGZsb2F0IHNhbXBsZVJhdGUp
OwogCiAgICAgLy8gZ2V0S2VybmVsc0Zyb21BemltdXRoRWxldmF0aW9uKCkgcmV0dXJucyBhIGxl
ZnQgYW5kIHJpZ2h0IGVhciBrZXJuZWwsIGFuZCBhbiBpbnRlcnBvbGF0ZWQgbGVmdCBhbmQgcmln
aHQgZnJhbWUgZGVsYXkgZm9yIHRoZSBnaXZlbiBhemltdXRoIGFuZCBlbGV2YXRpb24uCiAgICAg
Ly8gYXppbXV0aEJsZW5kIG11c3QgYmUgaW4gdGhlIHJhbmdlIDAgLT4gMS4KQEAgLTYwLDggKzYw
LDYgQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBOdW1iZXJPZlJhd0VsZXZh
dGlvbnM7CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgSFJURkRhdGFiYXNlKGZsb2F0IHNhbXBs
ZVJhdGUpOwotCiAgICAgLy8gTWluaW11bSBhbmQgbWF4aW11bSBlbGV2YXRpb24gYW5nbGVzIChp
bmNsdXNpdmUpIGZvciBhIEhSVEZEYXRhYmFzZS4KICAgICBzdGF0aWMgY29uc3QgaW50IE1pbkVs
ZXZhdGlvbjsKICAgICBzdGF0aWMgY29uc3QgaW50IE1heEVsZXZhdGlvbjsKQEAgLTc2LDcgKzc0
LDcgQEAgcHJpdmF0ZToKICAgICAvLyBSZXR1cm5zIHRoZSBpbmRleCBmb3IgdGhlIGNvcnJlY3Qg
SFJURkVsZXZhdGlvbiBnaXZlbiB0aGUgZWxldmF0aW9uIGFuZ2xlLgogICAgIHN0YXRpYyB1bnNp
Z25lZCBpbmRleEZyb21FbGV2YXRpb25BbmdsZShkb3VibGUpOwogCi0gICAgVmVjdG9yPE93blB0
cjxIUlRGRWxldmF0aW9uPj4gbV9lbGV2YXRpb25zOyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgCisgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxIUlRGRWxldmF0
aW9uPj4gbV9lbGV2YXRpb25zOwogICAgIGZsb2F0IG1fc2FtcGxlUmF0ZTsKIH07CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZEYXRhYmFzZUxvYWRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRGF0YWJhc2VMb2FkZXIuY3Bw
CmluZGV4IDU1NTVlOTEwOTI0ZTFlOTI1NDkzNTg0MDM2ZWE2MjE1ZGI1N2I4MTIuLmExNzc1ZGZk
MGNhY2JlOGI4MGI2YmQzOTU0NmY4YzRkYmM1MjM0MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZEYXRhYmFzZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkRhdGFiYXNlTG9hZGVyLmNwcApAQCAtNzcsNyArNzcs
NyBAQCBIUlRGRGF0YWJhc2VMb2FkZXI6On5IUlRGRGF0YWJhc2VMb2FkZXIoKQogICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CiAKICAgICB3YWl0Rm9yTG9hZGVyVGhyZWFkQ29tcGxldGlvbigp
OwotICAgIG1faHJ0ZkRhdGFiYXNlLmNsZWFyKCk7CisgICAgbV9ocnRmRGF0YWJhc2UucmVzZXQo
KTsKIAogICAgIC8vIFJlbW92ZSBvdXJzZWxmIGZyb20gdGhlIG1hcC4KICAgICBsb2FkZXJNYXAo
KS5yZW1vdmUobV9kYXRhYmFzZVNhbXBsZVJhdGUpOwpAQCAtOTYsNyArOTYsNyBAQCB2b2lkIEhS
VEZEYXRhYmFzZUxvYWRlcjo6bG9hZCgpCiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAg
ICAgaWYgKCFtX2hydGZEYXRhYmFzZS5nZXQoKSkgewogICAgICAgICAvLyBMb2FkIHRoZSBkZWZh
dWx0IEhSVEYgZGF0YWJhc2UuCi0gICAgICAgIG1faHJ0ZkRhdGFiYXNlID0gSFJURkRhdGFiYXNl
OjpjcmVhdGUobV9kYXRhYmFzZVNhbXBsZVJhdGUpOworICAgICAgICBtX2hydGZEYXRhYmFzZSA9
IHN0ZDo6bWFrZV91bmlxdWU8SFJURkRhdGFiYXNlPihtX2RhdGFiYXNlU2FtcGxlUmF0ZSk7CiAg
ICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRG
RGF0YWJhc2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZEYXRh
YmFzZUxvYWRlci5oCmluZGV4IGRkOThlNTUxMmM5N2MzNjU5ODNlNzk4Y2M0NzBkNDkyZjBjNzIz
MTguLjI3NDA1YzI5MGI1ZmNlYTU4N2Y1ZWQ4NmI3ZmJmZDIwOTRhZThhNTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZEYXRhYmFzZUxvYWRlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZEYXRhYmFzZUxvYWRlci5oCkBAIC0z
MCw2ICszMCw3IEBACiAjZGVmaW5lIEhSVEZEYXRhYmFzZUxvYWRlcl9oCiAKICNpbmNsdWRlICJI
UlRGRGF0YWJhc2UuaCIKKyNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+CkBAIC03Miw3ICs3Myw3IEBAIHByaXZhdGU6CiAgICAgLy8gVGhpcyBtdXN0IGJlIGNhbGxl
ZCBmcm9tIHRoZSBtYWluIHRocmVhZC4KICAgICB2b2lkIGxvYWRBc3luY2hyb25vdXNseSgpOwog
Ci0gICAgT3duUHRyPEhSVEZEYXRhYmFzZT4gbV9ocnRmRGF0YWJhc2U7CisgICAgc3RkOjp1bmlx
dWVfcHRyPEhSVEZEYXRhYmFzZT4gbV9ocnRmRGF0YWJhc2U7CiAKICAgICAvLyBIb2xkaW5nIGEg
bV90aHJlYWRMb2NrIGlzIHJlcXVpcmVkIHdoZW4gYWNjZXNzaW5nIG1fZGF0YWJhc2VMb2FkZXJU
aHJlYWQuCiAgICAgTXV0ZXggbV90aHJlYWRMb2NrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vSFJURkVsZXZhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9IUlRGRWxldmF0aW9uLmNwcAppbmRleCAzOGMxZDE2YWE0MTdkZmFkZmIyZTY1
ZjFmYWY5ZWMzZTIyZTgxZjNjLi42MDhjZWQ0ZDhiYTNhNDRmMDJlZjM2ZjIwN2VkZGU4OTIyZmNl
YTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRWxldmF0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRWxldmF0aW9u
LmNwcApAQCAtNDAsOCArNDAsNiBAQAogI2luY2x1ZGUgIkhSVEZQYW5uZXIuaCIKICNpbmNsdWRl
IDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8bWF0aC5oPgotI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4K
LQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTIzOCwxNSArMjM2LDE1IEBAIHN0YXRpYyBp
bnQgbWF4RWxldmF0aW9uc1tdID0gewogICAgIDQ1IC8vICAzNDUgCiB9OwogCi1QYXNzT3duUHRy
PEhSVEZFbGV2YXRpb24+IEhSVEZFbGV2YXRpb246OmNyZWF0ZUZvclN1YmplY3QoY29uc3QgU3Ry
aW5nJiBzdWJqZWN0TmFtZSwgaW50IGVsZXZhdGlvbiwgZmxvYXQgc2FtcGxlUmF0ZSkKK3N0ZDo6
dW5pcXVlX3B0cjxIUlRGRWxldmF0aW9uPiBIUlRGRWxldmF0aW9uOjpjcmVhdGVGb3JTdWJqZWN0
KGNvbnN0IFN0cmluZyYgc3ViamVjdE5hbWUsIGludCBlbGV2YXRpb24sIGZsb2F0IHNhbXBsZVJh
dGUpCiB7CiAgICAgYm9vbCBpc0VsZXZhdGlvbkdvb2QgPSBlbGV2YXRpb24gPj0gLTQ1ICYmIGVs
ZXZhdGlvbiA8PSA5MCAmJiAoZWxldmF0aW9uIC8gMTUpICogMTUgPT0gZWxldmF0aW9uOwogICAg
IEFTU0VSVChpc0VsZXZhdGlvbkdvb2QpOwogICAgIGlmICghaXNFbGV2YXRpb25Hb29kKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgCi0gICAgT3duUHRyPEhSVEZLZXJuZWxMaXN0
PiBrZXJuZWxMaXN0TCA9IGFkb3B0UHRyKG5ldyBIUlRGS2VybmVsTGlzdChOdW1iZXJPZlRvdGFs
QXppbXV0aHMpKTsKLSAgICBPd25QdHI8SFJURktlcm5lbExpc3Q+IGtlcm5lbExpc3RSID0gYWRv
cHRQdHIobmV3IEhSVEZLZXJuZWxMaXN0KE51bWJlck9mVG90YWxBemltdXRocykpOworICAgIGF1
dG8ga2VybmVsTGlzdEwgPSBzdGQ6Om1ha2VfdW5pcXVlPEhSVEZLZXJuZWxMaXN0PihOdW1iZXJP
ZlRvdGFsQXppbXV0aHMpOworICAgIGF1dG8ga2VybmVsTGlzdFIgPSBzdGQ6Om1ha2VfdW5pcXVl
PEhSVEZLZXJuZWxMaXN0PihOdW1iZXJPZlRvdGFsQXppbXV0aHMpOwogCiAgICAgLy8gTG9hZCBj
b252b2x1dGlvbiBrZXJuZWxzIGZyb20gSFJURiBmaWxlcy4KICAgICBpbnQgaW50ZXJwb2xhdGVk
SW5kZXggPSAwOwpAQCAtMjc1LDExICsyNzMsMTAgQEAgUGFzc093blB0cjxIUlRGRWxldmF0aW9u
PiBIUlRGRWxldmF0aW9uOjpjcmVhdGVGb3JTdWJqZWN0KGNvbnN0IFN0cmluZyYgc3ViamVjdE4K
ICAgICAgICAgfQogICAgIH0KICAgICAKLSAgICBPd25QdHI8SFJURkVsZXZhdGlvbj4gaHJ0ZkVs
ZXZhdGlvbiA9IGFkb3B0UHRyKG5ldyBIUlRGRWxldmF0aW9uKGtlcm5lbExpc3RMLnJlbGVhc2Uo
KSwga2VybmVsTGlzdFIucmVsZWFzZSgpLCBlbGV2YXRpb24sIHNhbXBsZVJhdGUpKTsKLSAgICBy
ZXR1cm4gaHJ0ZkVsZXZhdGlvbi5yZWxlYXNlKCk7CisgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8SFJURkVsZXZhdGlvbj4oc3RkOjptb3ZlKGtlcm5lbExpc3RMKSwgc3RkOjptb3ZlKGtlcm5l
bExpc3RSKSwgZWxldmF0aW9uLCBzYW1wbGVSYXRlKTsKIH0KIAotUGFzc093blB0cjxIUlRGRWxl
dmF0aW9uPiBIUlRGRWxldmF0aW9uOjpjcmVhdGVCeUludGVycG9sYXRpbmdTbGljZXMoSFJURkVs
ZXZhdGlvbiogaHJ0ZkVsZXZhdGlvbjEsIEhSVEZFbGV2YXRpb24qIGhydGZFbGV2YXRpb24yLCBm
bG9hdCB4LCBmbG9hdCBzYW1wbGVSYXRlKQorc3RkOjp1bmlxdWVfcHRyPEhSVEZFbGV2YXRpb24+
IEhSVEZFbGV2YXRpb246OmNyZWF0ZUJ5SW50ZXJwb2xhdGluZ1NsaWNlcyhIUlRGRWxldmF0aW9u
KiBocnRmRWxldmF0aW9uMSwgSFJURkVsZXZhdGlvbiogaHJ0ZkVsZXZhdGlvbjIsIGZsb2F0IHgs
IGZsb2F0IHNhbXBsZVJhdGUpCiB7CiAgICAgQVNTRVJUKGhydGZFbGV2YXRpb24xICYmIGhydGZF
bGV2YXRpb24yKTsKICAgICBpZiAoIWhydGZFbGV2YXRpb24xIHx8ICFocnRmRWxldmF0aW9uMikK
QEAgLTI4Nyw4ICsyODQsOCBAQCBQYXNzT3duUHRyPEhSVEZFbGV2YXRpb24+IEhSVEZFbGV2YXRp
b246OmNyZWF0ZUJ5SW50ZXJwb2xhdGluZ1NsaWNlcyhIUlRGRWxldmF0aQogICAgICAgICAKICAg
ICBBU1NFUlQoeCA+PSAwLjAgJiYgeCA8IDEuMCk7CiAgICAgCi0gICAgT3duUHRyPEhSVEZLZXJu
ZWxMaXN0PiBrZXJuZWxMaXN0TCA9IGFkb3B0UHRyKG5ldyBIUlRGS2VybmVsTGlzdChOdW1iZXJP
ZlRvdGFsQXppbXV0aHMpKTsKLSAgICBPd25QdHI8SFJURktlcm5lbExpc3Q+IGtlcm5lbExpc3RS
ID0gYWRvcHRQdHIobmV3IEhSVEZLZXJuZWxMaXN0KE51bWJlck9mVG90YWxBemltdXRocykpOwor
ICAgIGF1dG8ga2VybmVsTGlzdEwgPSBzdGQ6Om1ha2VfdW5pcXVlPEhSVEZLZXJuZWxMaXN0PihO
dW1iZXJPZlRvdGFsQXppbXV0aHMpOworICAgIGF1dG8ga2VybmVsTGlzdFIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEhSVEZLZXJuZWxMaXN0PihOdW1iZXJPZlRvdGFsQXppbXV0aHMpOwogCiAgICAgSFJU
Rktlcm5lbExpc3QqIGtlcm5lbExpc3RMMSA9IGhydGZFbGV2YXRpb24xLT5rZXJuZWxMaXN0TCgp
OwogICAgIEhSVEZLZXJuZWxMaXN0KiBrZXJuZWxMaXN0UjEgPSBocnRmRWxldmF0aW9uMS0+a2Vy
bmVsTGlzdFIoKTsKQEAgLTMwNCw4ICszMDEsNyBAQCBQYXNzT3duUHRyPEhSVEZFbGV2YXRpb24+
IEhSVEZFbGV2YXRpb246OmNyZWF0ZUJ5SW50ZXJwb2xhdGluZ1NsaWNlcyhIUlRGRWxldmF0aQog
ICAgIC8vIEludGVycG9sYXRlIGVsZXZhdGlvbiBhbmdsZS4KICAgICBkb3VibGUgYW5nbGUgPSAo
MS4wIC0geCkgKiBocnRmRWxldmF0aW9uMS0+ZWxldmF0aW9uQW5nbGUoKSArIHggKiBocnRmRWxl
dmF0aW9uMi0+ZWxldmF0aW9uQW5nbGUoKTsKICAgICAKLSAgICBPd25QdHI8SFJURkVsZXZhdGlv
bj4gaHJ0ZkVsZXZhdGlvbiA9IGFkb3B0UHRyKG5ldyBIUlRGRWxldmF0aW9uKGtlcm5lbExpc3RM
LnJlbGVhc2UoKSwga2VybmVsTGlzdFIucmVsZWFzZSgpLCBzdGF0aWNfY2FzdDxpbnQ+KGFuZ2xl
KSwgc2FtcGxlUmF0ZSkpOwotICAgIHJldHVybiBocnRmRWxldmF0aW9uLnJlbGVhc2UoKTsgIAor
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEhSVEZFbGV2YXRpb24+KHN0ZDo6bW92ZShrZXJu
ZWxMaXN0TCksIHN0ZDo6bW92ZShrZXJuZWxMaXN0UiksIHN0YXRpY19jYXN0PGludD4oYW5nbGUp
LCBzYW1wbGVSYXRlKTsKIH0KIAogdm9pZCBIUlRGRWxldmF0aW9uOjpnZXRLZXJuZWxzRnJvbUF6
aW11dGgoZG91YmxlIGF6aW11dGhCbGVuZCwgdW5zaWduZWQgYXppbXV0aEluZGV4LCBIUlRGS2Vy
bmVsKiAma2VybmVsTCwgSFJURktlcm5lbCogJmtlcm5lbFIsIGRvdWJsZSYgZnJhbWVEZWxheUws
IGRvdWJsZSYgZnJhbWVEZWxheVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9IUlRGRWxldmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9I
UlRGRWxldmF0aW9uLmgKaW5kZXggMzEzMmMwZmJmZGVkOWNmMzZlZmI0NmRkMTM0NGI3MGUxYzgx
MjRjMy4uMThkYzgyNjA0MDNhYWRkYmQ0NGQzNTg0ZWQyMzRhNTQ3YzI4MWY2NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkVsZXZhdGlvbi5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZFbGV2YXRpb24uaApAQCAtMzAsOSArMzAs
OCBAQAogI2RlZmluZSBIUlRGRWxldmF0aW9uX2gKIAogI2luY2x1ZGUgIkhSVEZLZXJuZWwuaCIK
KyNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0jaW5jbHVk
ZSA8d3RmL093blB0ci5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8
d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUg
PHd0Zi9SZWZQdHIuaD4KQEAgLTQ2LDE0ICs0NSwyMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBj
bGFzcyBIUlRGRWxldmF0aW9uIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShIUlRGRWxldmF0
aW9uKTsKIHB1YmxpYzoKKyAgICBIUlRGRWxldmF0aW9uKHN0ZDo6dW5pcXVlX3B0cjxIUlRGS2Vy
bmVsTGlzdD4ga2VybmVsTGlzdEwsIHN0ZDo6dW5pcXVlX3B0cjxIUlRGS2VybmVsTGlzdD4ga2Vy
bmVsTGlzdFIsIGludCBlbGV2YXRpb24sIGZsb2F0IHNhbXBsZVJhdGUpCisgICAgICAgIDogbV9r
ZXJuZWxMaXN0TChzdGQ6Om1vdmUoa2VybmVsTGlzdEwpKQorICAgICAgICAsIG1fa2VybmVsTGlz
dFIoc3RkOjptb3ZlKGtlcm5lbExpc3RSKSkKKyAgICAgICAgLCBtX2VsZXZhdGlvbkFuZ2xlKGVs
ZXZhdGlvbikKKyAgICAgICAgLCBtX3NhbXBsZVJhdGUoc2FtcGxlUmF0ZSkKKyAgICB7CisgICAg
fQorCiAgICAgLy8gTG9hZHMgYW5kIHJldHVybnMgYW4gSFJURkVsZXZhdGlvbiB3aXRoIHRoZSBn
aXZlbiBIUlRGIGRhdGFiYXNlIHN1YmplY3QgbmFtZSBhbmQgZWxldmF0aW9uIGZyb20gYnJvd3Nl
ciAob3IgV2ViS2l0LmZyYW1ld29yaykgcmVzb3VyY2VzLgogICAgIC8vIE5vcm1hbGx5LCB0aGVy
ZSB3aWxsIG9ubHkgYmUgYSBzaW5nbGUgSFJURiBkYXRhYmFzZSBzZXQsIGJ1dCB0aGlzIEFQSSBz
dXBwb3J0cyB0aGUgcG9zc2liaWxpdHkgb2YgbXVsdGlwbGUgb25lcyB3aXRoIGRpZmZlcmVudCBu
YW1lcy4KICAgICAvLyBJbnRlcnBvbGF0ZWQgYXppbXV0aHMgd2lsbCBiZSBnZW5lcmF0ZWQgYmFz
ZWQgb24gSW50ZXJwb2xhdGlvbkZhY3Rvci4KICAgICAvLyBWYWxpZCB2YWx1ZXMgZm9yIGVsZXZh
dGlvbiBhcmUgLTQ1IC0+ICs5MCBpbiAxNSBkZWdyZWUgaW5jcmVtZW50cy4KLSAgICBzdGF0aWMg
UGFzc093blB0cjxIUlRGRWxldmF0aW9uPiBjcmVhdGVGb3JTdWJqZWN0KGNvbnN0IFN0cmluZyYg
c3ViamVjdE5hbWUsIGludCBlbGV2YXRpb24sIGZsb2F0IHNhbXBsZVJhdGUpOworICAgIHN0YXRp
YyBzdGQ6OnVuaXF1ZV9wdHI8SFJURkVsZXZhdGlvbj4gY3JlYXRlRm9yU3ViamVjdChjb25zdCBT
dHJpbmcmIHN1YmplY3ROYW1lLCBpbnQgZWxldmF0aW9uLCBmbG9hdCBzYW1wbGVSYXRlKTsKIAog
ICAgIC8vIEdpdmVuIHR3byBIUlRGRWxldmF0aW9ucywgYW5kIGFuIGludGVycG9sYXRpb24gZmFj
dG9yIHg6IDAgLT4gMSwgcmV0dXJucyBhbiBpbnRlcnBvbGF0ZWQgSFJURkVsZXZhdGlvbi4KLSAg
ICBzdGF0aWMgUGFzc093blB0cjxIUlRGRWxldmF0aW9uPiBjcmVhdGVCeUludGVycG9sYXRpbmdT
bGljZXMoSFJURkVsZXZhdGlvbiogaHJ0ZkVsZXZhdGlvbjEsIEhSVEZFbGV2YXRpb24qIGhydGZF
bGV2YXRpb24yLCBmbG9hdCB4LCBmbG9hdCBzYW1wbGVSYXRlKTsKKyAgICBzdGF0aWMgc3RkOjp1
bmlxdWVfcHRyPEhSVEZFbGV2YXRpb24+IGNyZWF0ZUJ5SW50ZXJwb2xhdGluZ1NsaWNlcyhIUlRG
RWxldmF0aW9uKiBocnRmRWxldmF0aW9uMSwgSFJURkVsZXZhdGlvbiogaHJ0ZkVsZXZhdGlvbjIs
IGZsb2F0IHgsIGZsb2F0IHNhbXBsZVJhdGUpOwogCiAgICAgLy8gUmV0dXJucyB0aGUgbGlzdCBv
ZiBsZWZ0IG9yIHJpZ2h0IGVhciBIUlRGS2VybmVscyBmb3IgYWxsIHRoZSBhemltdXRocyBnb2lu
ZyBmcm9tIDAgdG8gMzYwIGRlZ3JlZXMuCiAgICAgSFJURktlcm5lbExpc3QqIGtlcm5lbExpc3RM
KCkgeyByZXR1cm4gbV9rZXJuZWxMaXN0TC5nZXQoKTsgfQpAQCAtOTMsMTYgKzEwMCw4IEBAIHB1
YmxpYzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBSZWZQdHI8SFJURktlcm5lbD4mIGtlcm5lbEwsIFJlZlB0cjxIUlRGS2VybmVs
PiYga2VybmVsUik7CiAKIHByaXZhdGU6Ci0gICAgSFJURkVsZXZhdGlvbihQYXNzT3duUHRyPEhS
VEZLZXJuZWxMaXN0PiBrZXJuZWxMaXN0TCwgUGFzc093blB0cjxIUlRGS2VybmVsTGlzdD4ga2Vy
bmVsTGlzdFIsIGludCBlbGV2YXRpb24sIGZsb2F0IHNhbXBsZVJhdGUpCi0gICAgICAgIDogbV9r
ZXJuZWxMaXN0TChrZXJuZWxMaXN0TCkKLSAgICAgICAgLCBtX2tlcm5lbExpc3RSKGtlcm5lbExp
c3RSKQotICAgICAgICAsIG1fZWxldmF0aW9uQW5nbGUoZWxldmF0aW9uKQotICAgICAgICAsIG1f
c2FtcGxlUmF0ZShzYW1wbGVSYXRlKQotICAgIHsKLSAgICB9Ci0KLSAgICBPd25QdHI8SFJURktl
cm5lbExpc3Q+IG1fa2VybmVsTGlzdEw7Ci0gICAgT3duUHRyPEhSVEZLZXJuZWxMaXN0PiBtX2tl
cm5lbExpc3RSOworICAgIHN0ZDo6dW5pcXVlX3B0cjxIUlRGS2VybmVsTGlzdD4gbV9rZXJuZWxM
aXN0TDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SFJURktlcm5lbExpc3Q+IG1fa2VybmVsTGlzdFI7
CiAgICAgZG91YmxlIG1fZWxldmF0aW9uQW5nbGU7CiAgICAgZmxvYXQgbV9zYW1wbGVSYXRlOwog
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZLZXJuZWwu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURktlcm5lbC5jcHAKaW5kZXgg
OGViYzAwYTlhMDljNjg5ZDM0MjM1ZDk5MzM5YjRiY2Q4M2M1MWM1Ny4uNTRhNTE3ZDFhMWM0ZTVm
NDIwZmY3MjQzNjQ5ZmQ2OTk3NTllM2MzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vSFJURktlcm5lbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vSFJURktlcm5lbC5jcHAKQEAgLTkyLDcgKzkyLDcgQEAgSFJURktlcm5lbDo6SFJURktl
cm5lbChBdWRpb0NoYW5uZWwqIGNoYW5uZWwsIHNpemVfdCBmZnRTaXplLCBmbG9hdCBzYW1wbGVS
YXRlKQogICAgICAgICB9CiAgICAgfQogCi0gICAgbV9mZnRGcmFtZSA9IGFkb3B0UHRyKG5ldyBG
RlRGcmFtZShmZnRTaXplKSk7CisgICAgbV9mZnRGcmFtZSA9IHN0ZDo6bWFrZV91bmlxdWU8RkZU
RnJhbWU+KGZmdFNpemUpOwogICAgIG1fZmZ0RnJhbWUtPmRvUGFkZGVkRkZUKGltcHVsc2VSZXNw
b25zZSwgdHJ1bmNhdGVkUmVzcG9uc2VMZW5ndGgpOwogfQogCkBAIC0xMDEsMTYgKzEwMSwxNiBA
QCBzaXplX3QgSFJURktlcm5lbDo6ZmZ0U2l6ZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fZmZ0RnJh
bWUtPmZmdFNpemUoKTsKIH0KIAotUGFzc093blB0cjxBdWRpb0NoYW5uZWw+IEhSVEZLZXJuZWw6
OmNyZWF0ZUltcHVsc2VSZXNwb25zZSgpCitzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9DaGFubmVsPiBI
UlRGS2VybmVsOjpjcmVhdGVJbXB1bHNlUmVzcG9uc2UoKQogewotICAgIE93blB0cjxBdWRpb0No
YW5uZWw+IGNoYW5uZWwgPSBhZG9wdFB0cihuZXcgQXVkaW9DaGFubmVsKGZmdFNpemUoKSkpOwor
ICAgIGF1dG8gY2hhbm5lbCA9IHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9DaGFubmVsPihmZnRTaXpl
KCkpOwogICAgIEZGVEZyYW1lIGZmdEZyYW1lKCptX2ZmdEZyYW1lKTsKIAogICAgIC8vIEFkZCBs
ZWFkaW5nIGRlbGF5IGJhY2sgaW4uCiAgICAgZmZ0RnJhbWUuYWRkQ29uc3RhbnRHcm91cERlbGF5
KG1fZnJhbWVEZWxheSk7CiAgICAgZmZ0RnJhbWUuZG9JbnZlcnNlRkZUKGNoYW5uZWwtPm11dGFi
bGVEYXRhKCkpOwogCi0gICAgcmV0dXJuIGNoYW5uZWwucmVsZWFzZSgpOworICAgIHJldHVybiBj
aGFubmVsOwogfQogCiAvLyBJbnRlcnBvbGF0ZXMgdHdvIGtlcm5lbHMgd2l0aCB4OiAwIC0+IDEg
YW5kIHJldHVybnMgdGhlIHJlc3VsdC4KQEAgLTEzMSw4ICsxMzEsOCBAQCBQYXNzUmVmUHRyPEhS
VEZLZXJuZWw+IEhSVEZLZXJuZWw6OmNyZWF0ZUludGVycG9sYXRlZEtlcm5lbChIUlRGS2VybmVs
KiBrZXJuZWwxLAogICAgIAogICAgIGZsb2F0IGZyYW1lRGVsYXkgPSAoMSAtIHgpICoga2VybmVs
MS0+ZnJhbWVEZWxheSgpICsgeCAqIGtlcm5lbDItPmZyYW1lRGVsYXkoKTsKICAgICAKLSAgICBP
d25QdHI8RkZURnJhbWU+IGludGVycG9sYXRlZEZyYW1lID0gRkZURnJhbWU6OmNyZWF0ZUludGVy
cG9sYXRlZEZyYW1lKCprZXJuZWwxLT5mZnRGcmFtZSgpLCAqa2VybmVsMi0+ZmZ0RnJhbWUoKSwg
eCk7Ci0gICAgcmV0dXJuIEhSVEZLZXJuZWw6OmNyZWF0ZShpbnRlcnBvbGF0ZWRGcmFtZS5yZWxl
YXNlKCksIGZyYW1lRGVsYXksIHNhbXBsZVJhdGUxKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RkZU
RnJhbWU+IGludGVycG9sYXRlZEZyYW1lID0gRkZURnJhbWU6OmNyZWF0ZUludGVycG9sYXRlZEZy
YW1lKCprZXJuZWwxLT5mZnRGcmFtZSgpLCAqa2VybmVsMi0+ZmZ0RnJhbWUoKSwgeCk7CisgICAg
cmV0dXJuIEhSVEZLZXJuZWw6OmNyZWF0ZShzdGQ6Om1vdmUoaW50ZXJwb2xhdGVkRnJhbWUpLCBm
cmFtZURlbGF5LCBzYW1wbGVSYXRlMSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZLZXJuZWwuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZLZXJuZWwuaAppbmRleCBlMTM1ZWEyYzA2
ODcwOTkxYTlkYTQ0YWNjMDNlNDc2MTQ5OWQ3NWE5Li43NjhiMWNiOGEwYjZkZWRkNDU0ZTZkNWQ5
OTFhMGMzYTM5MTg5M2JhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9IUlRGS2VybmVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURktl
cm5lbC5oCkBAIC0zMCw4ICszMCw3IEBACiAjZGVmaW5lIEhSVEZLZXJuZWxfaAogCiAjaW5jbHVk
ZSAiRkZURnJhbWUuaCIKLSNpbmNsdWRlIDx3dGYvT3duUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1Bh
c3NPd25QdHIuaD4KKyNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIu
aD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4K
QEAgLTU2LDkgKzU1LDkgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhS
VEZLZXJuZWwoY2hhbm5lbCwgZmZ0U2l6ZSwgc2FtcGxlUmF0ZSkpOwogICAgIH0KIAotICAgIHN0
YXRpYyBQYXNzUmVmUHRyPEhSVEZLZXJuZWw+IGNyZWF0ZShQYXNzT3duUHRyPEZGVEZyYW1lPiBm
ZnRGcmFtZSwgZmxvYXQgZnJhbWVEZWxheSwgZmxvYXQgc2FtcGxlUmF0ZSkKKyAgICBzdGF0aWMg
UGFzc1JlZlB0cjxIUlRGS2VybmVsPiBjcmVhdGUoc3RkOjp1bmlxdWVfcHRyPEZGVEZyYW1lPiBm
ZnRGcmFtZSwgZmxvYXQgZnJhbWVEZWxheSwgZmxvYXQgc2FtcGxlUmF0ZSkKICAgICB7Ci0gICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFJURktlcm5lbChmZnRGcmFtZSwgZnJhbWVEZWxheSwg
c2FtcGxlUmF0ZSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhSVEZLZXJuZWwoc3Rk
Ojpmb3J3YXJkPHN0ZDo6dW5pcXVlX3B0cjxGRlRGcmFtZT4+KGZmdEZyYW1lKSwgZnJhbWVEZWxh
eSwgc2FtcGxlUmF0ZSkpOwogICAgIH0KIAogICAgIC8vIEdpdmVuIHR3byBIUlRGS2VybmVscywg
YW5kIGFuIGludGVycG9sYXRpb24gZmFjdG9yIHg6IDAgLT4gMSwgcmV0dXJucyBhbiBpbnRlcnBv
bGF0ZWQgSFJURktlcm5lbC4KQEAgLTczLDIwICs3MiwyMCBAQCBwdWJsaWM6CiAgICAgZG91Ymxl
IG55cXVpc3QoKSBjb25zdCB7IHJldHVybiAwLjUgKiBzYW1wbGVSYXRlKCk7IH0KIAogICAgIC8v
IENvbnZlcnRzIGJhY2sgaW50byBpbXB1bHNlLXJlc3BvbnNlIGZvcm0uCi0gICAgUGFzc093blB0
cjxBdWRpb0NoYW5uZWw+IGNyZWF0ZUltcHVsc2VSZXNwb25zZSgpOworICAgIHN0ZDo6dW5pcXVl
X3B0cjxBdWRpb0NoYW5uZWw+IGNyZWF0ZUltcHVsc2VSZXNwb25zZSgpOwogCiBwcml2YXRlOgog
ICAgIC8vIE5vdGU6IHRoaXMgaXMgZGVzdHJ1Y3RpdmUgb24gdGhlIHBhc3NlZCBpbiBBdWRpb0No
YW5uZWwuCiAgICAgSFJURktlcm5lbChBdWRpb0NoYW5uZWwqLCBzaXplX3QgZmZ0U2l6ZSwgZmxv
YXQgc2FtcGxlUmF0ZSk7CiAgICAgCi0gICAgSFJURktlcm5lbChQYXNzT3duUHRyPEZGVEZyYW1l
PiBmZnRGcmFtZSwgZmxvYXQgZnJhbWVEZWxheSwgZmxvYXQgc2FtcGxlUmF0ZSkKLSAgICAgICAg
OiBtX2ZmdEZyYW1lKGZmdEZyYW1lKQorICAgIEhSVEZLZXJuZWwoc3RkOjp1bmlxdWVfcHRyPEZG
VEZyYW1lPiBmZnRGcmFtZSwgZmxvYXQgZnJhbWVEZWxheSwgZmxvYXQgc2FtcGxlUmF0ZSkKKyAg
ICAgICAgOiBtX2ZmdEZyYW1lKHN0ZDo6bW92ZShmZnRGcmFtZSkpCiAgICAgICAgICwgbV9mcmFt
ZURlbGF5KGZyYW1lRGVsYXkpCiAgICAgICAgICwgbV9zYW1wbGVSYXRlKHNhbXBsZVJhdGUpCiAg
ICAgewogICAgIH0KICAgICAKLSAgICBPd25QdHI8RkZURnJhbWU+IG1fZmZ0RnJhbWU7CisgICAg
c3RkOjp1bmlxdWVfcHRyPEZGVEZyYW1lPiBtX2ZmdEZyYW1lOwogICAgIGZsb2F0IG1fZnJhbWVE
ZWxheTsKICAgICBmbG9hdCBtX3NhbXBsZVJhdGU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vTXVsdGlDaGFubmVsUmVzYW1wbGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL011bHRpQ2hhbm5lbFJlc2FtcGxlci5jcHAKaW5kZXggY2Y0
NmQ4ZTk5OWU0ZTVlZTgyMDAzZGQ0MmUyNTAxNjI4ODM5M2ViNi4uZTkzYjg2MWNkNzFiZTAwN2I5
Y2I2ZjQyMzQzYTdlYmJlMjVhM2YwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vTXVsdGlDaGFubmVsUmVzYW1wbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9NdWx0aUNoYW5uZWxSZXNhbXBsZXIuY3BwCkBAIC05Nyw3ICs5Nyw3IEBA
IE11bHRpQ2hhbm5lbFJlc2FtcGxlcjo6TXVsdGlDaGFubmVsUmVzYW1wbGVyKGRvdWJsZSBzY2Fs
ZUZhY3RvciwgdW5zaWduZWQgbnVtYmVyCiB7CiAgICAgLy8gQ3JlYXRlIGVhY2ggY2hhbm5lbCdz
IHJlc2FtcGxlci4KICAgICBmb3IgKHVuc2lnbmVkIGNoYW5uZWxJbmRleCA9IDA7IGNoYW5uZWxJ
bmRleCA8IG51bWJlck9mQ2hhbm5lbHM7ICsrY2hhbm5lbEluZGV4KQotICAgICAgICBtX2tlcm5l
bHMuYXBwZW5kKGFkb3B0UHRyKG5ldyBTaW5jUmVzYW1wbGVyKHNjYWxlRmFjdG9yKSkpOworICAg
ICAgICBtX2tlcm5lbHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8U2luY1Jlc2FtcGxlcj4oc2Nh
bGVGYWN0b3IpKTsKIH0KIAogdm9pZCBNdWx0aUNoYW5uZWxSZXNhbXBsZXI6OnByb2Nlc3MoQXVk
aW9Tb3VyY2VQcm92aWRlciogcHJvdmlkZXIsIEF1ZGlvQnVzKiBkZXN0aW5hdGlvbiwgc2l6ZV90
IGZyYW1lc1RvUHJvY2VzcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL011bHRpQ2hhbm5lbFJlc2FtcGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vTXVsdGlDaGFubmVsUmVzYW1wbGVyLmgKaW5kZXggMDQ0NzhhMjkyNTEyZGUwZTU3MDNkNDBm
MjQ3ZmQxZjJkMTdmYzRlMC4uZTIwNTdkOTc4Y2JiY2U4MzIyNWQ4ZTlkOWZiYTIwNDFmYzdhMWIx
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTXVsdGlDaGFubmVs
UmVzYW1wbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTXVsdGlDaGFu
bmVsUmVzYW1wbGVyLmgKQEAgLTMwLDcgKzMwLDcgQEAKICNkZWZpbmUgTXVsdGlDaGFubmVsUmVz
YW1wbGVyX2gKIAogI2luY2x1ZGUgIlNpbmNSZXNhbXBsZXIuaCIKLSNpbmNsdWRlIDx3dGYvT3du
UHRyLmg+CisjaW5jbHVkZSA8bWVtb3J5PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ5
LDcgKzQ5LDcgQEAgcHJpdmF0ZToKICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NzUxMTgKICAgICAKICAgICAvLyBFYWNoIGNoYW5uZWwgd2lsbCBiZSByZXNh
bXBsZWQgdXNpbmcgYSBoaWdoLXF1YWxpdHkgU2luY1Jlc2FtcGxlci4KLSAgICBWZWN0b3I8T3du
UHRyPFNpbmNSZXNhbXBsZXI+PiBtX2tlcm5lbHM7CisgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0
cjxTaW5jUmVzYW1wbGVyPj4gbV9rZXJuZWxzOwogICAgIAogICAgIHVuc2lnbmVkIG1fbnVtYmVy
T2ZDaGFubmVsczsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9QYW5uZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGFubmVyLmNwcApp
bmRleCAyZTRjNTg3OGU1YzM3NWM2Mzk3ZWIwODJkYmEwODA1OWZkOWM1MWM2Li45Yzk5ODc1NjBk
OWY0MzAyYTAxN2IyMWE3MGZlMDllMGQ1ODEzNTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9QYW5uZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL1Bhbm5lci5jcHAKQEAgLTM0LDIxICszNCwyMCBAQAogCiAjaW5jbHVkZSAiRXF1YWxQ
b3dlclBhbm5lci5oIgogI2luY2x1ZGUgIkhSVEZQYW5uZXIuaCIKLSNpbmNsdWRlIDx3dGYvT3du
UHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc093blB0cjxQYW5uZXI+IFBhbm5l
cjo6Y3JlYXRlKFBhbm5pbmdNb2RlbCBtb2RlbCwgZmxvYXQgc2FtcGxlUmF0ZSwgSFJURkRhdGFi
YXNlTG9hZGVyKiBkYXRhYmFzZUxvYWRlcikKK3N0ZDo6dW5pcXVlX3B0cjxQYW5uZXI+IFBhbm5l
cjo6Y3JlYXRlKFBhbm5pbmdNb2RlbCBtb2RlbCwgZmxvYXQgc2FtcGxlUmF0ZSwgSFJURkRhdGFi
YXNlTG9hZGVyKiBkYXRhYmFzZUxvYWRlcikKIHsKLSAgICBPd25QdHI8UGFubmVyPiBwYW5uZXI7
CisgICAgc3RkOjp1bmlxdWVfcHRyPFBhbm5lcj4gcGFubmVyOwogCiAgICAgc3dpdGNoIChtb2Rl
bCkgewogICAgIGNhc2UgUGFubmluZ01vZGVsRXF1YWxQb3dlcjoKLSAgICAgICAgcGFubmVyID0g
YWRvcHRQdHIobmV3IEVxdWFsUG93ZXJQYW5uZXIoc2FtcGxlUmF0ZSkpOworICAgICAgICBwYW5u
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEVxdWFsUG93ZXJQYW5uZXI+KHNhbXBsZVJhdGUpOwogICAg
ICAgICBicmVhazsKIAogICAgIGNhc2UgUGFubmluZ01vZGVsSFJURjoKLSAgICAgICAgcGFubmVy
ID0gYWRvcHRQdHIobmV3IEhSVEZQYW5uZXIoc2FtcGxlUmF0ZSwgZGF0YWJhc2VMb2FkZXIpKTsK
KyAgICAgICAgcGFubmVyID0gc3RkOjptYWtlX3VuaXF1ZTxIUlRGUGFubmVyPihzYW1wbGVSYXRl
LCBkYXRhYmFzZUxvYWRlcik7CiAgICAgICAgIGJyZWFrOwogCiAgICAgLy8gRklYTUU6IHNvdW5k
IGZpZWxkIHBhbm5pbmcgaXMgbm90IHlldCBpbXBsZW1lbnRlZC4uLgpAQCAtNTgsNyArNTcsNyBA
QCBQYXNzT3duUHRyPFBhbm5lcj4gUGFubmVyOjpjcmVhdGUoUGFubmluZ01vZGVsIG1vZGVsLCBm
bG9hdCBzYW1wbGVSYXRlLCBIUlRGRGF0YQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9
CiAKLSAgICByZXR1cm4gcGFubmVyLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gcGFubmVyOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9QYW5uZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1Bhbm5l
ci5oCmluZGV4IGVmZDc2ZDhlZjQ2MzQ4ZWE4YTRiYTk2MmY3MGM5NDhmODZlODZmZWIuLmZlMjk4
Y2NiYTc0MzFiMTIwZjEyYTRhN2UwMzg5ZGYwYjI5NmM5NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1Bhbm5lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL1Bhbm5lci5oCkBAIC0yOSw3ICsyOSw3IEBACiAjaWZuZGVmIFBhbm5lcl9oCiAj
ZGVmaW5lIFBhbm5lcl9oCiAKLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorI2luY2x1ZGUg
PG1lbW9yeT4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00OCw3ICs0OCw3IEBAIHB1Ymxp
YzoKICAgICAKICAgICB0eXBlZGVmIHVuc2lnbmVkIFBhbm5pbmdNb2RlbDsKIAotICAgIHN0YXRp
YyBQYXNzT3duUHRyPFBhbm5lcj4gY3JlYXRlKFBhbm5pbmdNb2RlbCwgZmxvYXQgc2FtcGxlUmF0
ZSwgSFJURkRhdGFiYXNlTG9hZGVyKik7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxQYW5u
ZXI+IGNyZWF0ZShQYW5uaW5nTW9kZWwsIGZsb2F0IHNhbXBsZVJhdGUsIEhSVEZEYXRhYmFzZUxv
YWRlciopOwogCiAgICAgdmlydHVhbCB+UGFubmVyKCkgeyB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vUmV2ZXJiLmNwcAppbmRleCAzMmRkNmZmYTRlNjRlMzJmMjc3OGNiM2VmMmUy
ZTNmYWE1ZjIzYjA5Li44N2E3ZmJkMjljZTIzYTQ0OGVkN2Y0NjdmOTI5ZmQ4Njg3N2NkZWUyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYi5jcHAKQEAgLTM4LDggKzM4LDYg
QEAKICNpbmNsdWRlICJWZWN0b3JNYXRoLmgiCiAjaW5jbHVkZSA8bWF0aC5oPgogI2luY2x1ZGUg
PHd0Zi9NYXRoRXh0cmFzLmg+Ci0jaW5jbHVkZSA8d3RmL093blB0ci5oPgotI2luY2x1ZGUgPHd0
Zi9QYXNzT3duUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTE5LDggKzExNyw3
IEBAIHZvaWQgUmV2ZXJiOjppbml0aWFsaXplKEF1ZGlvQnVzKiBpbXB1bHNlUmVzcG9uc2VCdWZm
ZXIsIHNpemVfdCByZW5kZXJTbGljZVNpemUsCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBu
dW1SZXNwb25zZUNoYW5uZWxzOyArK2kpIHsKICAgICAgICAgQXVkaW9DaGFubmVsKiBjaGFubmVs
ID0gaW1wdWxzZVJlc3BvbnNlQnVmZmVyLT5jaGFubmVsKGkpOwogCi0gICAgICAgIE93blB0cjxS
ZXZlcmJDb252b2x2ZXI+IGNvbnZvbHZlciA9IGFkb3B0UHRyKG5ldyBSZXZlcmJDb252b2x2ZXIo
Y2hhbm5lbCwgcmVuZGVyU2xpY2VTaXplLCBtYXhGRlRTaXplLCBjb252b2x2ZXJSZW5kZXJQaGFz
ZSwgdXNlQmFja2dyb3VuZFRocmVhZHMpKTsKLSAgICAgICAgbV9jb252b2x2ZXJzLmFwcGVuZChj
b252b2x2ZXIucmVsZWFzZSgpKTsKKyAgICAgICAgbV9jb252b2x2ZXJzLmFwcGVuZChzdGQ6Om1h
a2VfdW5pcXVlPFJldmVyYkNvbnZvbHZlcj4oY2hhbm5lbCwgcmVuZGVyU2xpY2VTaXplLCBtYXhG
RlRTaXplLCBjb252b2x2ZXJSZW5kZXJQaGFzZSwgdXNlQmFja2dyb3VuZFRocmVhZHMpKTsKIAog
ICAgICAgICBjb252b2x2ZXJSZW5kZXJQaGFzZSArPSByZW5kZXJTbGljZVNpemU7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmIuaAppbmRleCBlNWIzMTA2ZDEyMWFjMTgx
ODY3YjRiNDc2ZDQ5OTc3NWYxZDA3MGNhLi4zMWU3MGY1ZWUwYzNjYTdiYzEwNDE5ODA3NTI3ZjBm
MDNjZDM1NTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZl
cmIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmIuaApAQCAtNTYs
NyArNTYsNyBAQCBwcml2YXRlOgogCiAgICAgc2l6ZV90IG1faW1wdWxzZVJlc3BvbnNlTGVuZ3Ro
OwogCi0gICAgVmVjdG9yPE93blB0cjxSZXZlcmJDb252b2x2ZXI+PiBtX2NvbnZvbHZlcnM7Cisg
ICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxSZXZlcmJDb252b2x2ZXI+PiBtX2NvbnZvbHZlcnM7
CiAKICAgICAvLyBGb3IgIlRydWUiIHN0ZXJlbyBwcm9jZXNzaW5nCiAgICAgUmVmUHRyPEF1ZGlv
QnVzPiBtX3RlbXBCdWZmZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9SZXZlcmJDb252b2x2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1Jl
dmVyYkNvbnZvbHZlci5oCmluZGV4IDFkMzgxOWRiYTdkMmM3NjMxZjQ3OTMzMWZjYjFjOGUzMjJj
ZTUyOGEuLjIxODk3YjhmNmZlNGQzNDA3OGMxNzQwZjUwZjQ3YzYyOTFiNmFhM2EgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlci5oCkBAIC0zNiw2
ICszNiw3IEBACiAjaW5jbHVkZSAiUmV2ZXJiQ29udm9sdmVyU3RhZ2UuaCIKICNpbmNsdWRlICJS
ZXZlcmJJbnB1dEJ1ZmZlci5oIgogI2luY2x1ZGUgPGNvbmRpdGlvbl92YXJpYWJsZT4KKyNpbmNs
dWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8bXV0ZXg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQu
aD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXJTdGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXJTdGFnZS5jcHAKaW5kZXggN2Q4NWRhMmQ1
MjEyNjM1NDU3MjcwY2U4ZDM2ZTYzYTllMzY4YzhhMy4uMTgzMmVhNTM5ZTRkNGQzOTU5Njc1MjZj
YWFlNzY4ZDhmNjhmNjhiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vUmV2ZXJiQ29udm9sdmVyU3RhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL1JldmVyYkNvbnZvbHZlclN0YWdlLmNwcApAQCAtMzcsOCArMzcsNiBAQAogI2luY2x1
ZGUgIlJldmVyYkFjY3VtdWxhdGlvbkJ1ZmZlci5oIgogI2luY2x1ZGUgIlJldmVyYkNvbnZvbHZl
ci5oIgogI2luY2x1ZGUgIlJldmVyYklucHV0QnVmZmVyLmgiCi0jaW5jbHVkZSA8d3RmL093blB0
ci5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IApAQCAtNTUsMTMgKzUzLDEzIEBAIFJldmVyYkNvbnZvbHZlclN0YWdlOjpSZXZlcmJDb252b2x2
ZXJTdGFnZShjb25zdCBmbG9hdCogaW1wdWxzZVJlc3BvbnNlLCBzaXplX3QsCiAgICAgQVNTRVJU
KGFjY3VtdWxhdGlvbkJ1ZmZlcik7CiAKICAgICBpZiAoIW1fZGlyZWN0TW9kZSkgewotICAgICAg
ICBtX2ZmdEtlcm5lbCA9IGFkb3B0UHRyKG5ldyBGRlRGcmFtZShmZnRTaXplKSk7CisgICAgICAg
IG1fZmZ0S2VybmVsID0gc3RkOjptYWtlX3VuaXF1ZTxGRlRGcmFtZT4oZmZ0U2l6ZSk7CiAgICAg
ICAgIG1fZmZ0S2VybmVsLT5kb1BhZGRlZEZGVChpbXB1bHNlUmVzcG9uc2UgKyBzdGFnZU9mZnNl
dCwgc3RhZ2VMZW5ndGgpOwotICAgICAgICBtX2ZmdENvbnZvbHZlciA9IGFkb3B0UHRyKG5ldyBG
RlRDb252b2x2ZXIoZmZ0U2l6ZSkpOworICAgICAgICBtX2ZmdENvbnZvbHZlciA9IHN0ZDo6bWFr
ZV91bmlxdWU8RkZUQ29udm9sdmVyPihmZnRTaXplKTsKICAgICB9IGVsc2UgewotICAgICAgICBt
X2RpcmVjdEtlcm5lbCA9IGFkb3B0UHRyKG5ldyBBdWRpb0Zsb2F0QXJyYXkoZmZ0U2l6ZSAvIDIp
KTsKKyAgICAgICAgbV9kaXJlY3RLZXJuZWwgPSBzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvRmxvYXRB
cnJheT4oZmZ0U2l6ZSAvIDIpOwogICAgICAgICBtX2RpcmVjdEtlcm5lbC0+Y29weVRvUmFuZ2Uo
aW1wdWxzZVJlc3BvbnNlICsgc3RhZ2VPZmZzZXQsIDAsIGZmdFNpemUgLyAyKTsKLSAgICAgICAg
bV9kaXJlY3RDb252b2x2ZXIgPSBhZG9wdFB0cihuZXcgRGlyZWN0Q29udm9sdmVyKHJlbmRlclNs
aWNlU2l6ZSkpOworICAgICAgICBtX2RpcmVjdENvbnZvbHZlciA9IHN0ZDo6bWFrZV91bmlxdWU8
RGlyZWN0Q29udm9sdmVyPihyZW5kZXJTbGljZVNpemUpOwogICAgIH0KICAgICBtX3RlbXBvcmFy
eUJ1ZmZlci5hbGxvY2F0ZShyZW5kZXJTbGljZVNpemUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXJTdGFnZS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyU3RhZ2UuaAppbmRleCBjOGU2OGY2
Mjc5YjNkNTIwMGM4NDdjNTYxYTJiZTE5NDk1NzliNWVjLi4zMzE1MjhiYTdhOGVhMjUwN2FjNmEz
YWU4NTEyYzVjMzhlZmViMjRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9SZXZlcmJDb252b2x2ZXJTdGFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL1JldmVyYkNvbnZvbHZlclN0YWdlLmgKQEAgLTMwLDcgKzMwLDcgQEAKICNkZWZpbmUg
UmV2ZXJiQ29udm9sdmVyU3RhZ2VfaAogCiAjaW5jbHVkZSAiQXVkaW9BcnJheS5oIgotI2luY2x1
ZGUgPHd0Zi9Pd25QdHIuaD4KKyNpbmNsdWRlIDxtZW1vcnk+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIApAQCAtNjAsOCArNjAsOCBAQCBwdWJsaWM6CiAgICAgaW50IGlucHV0UmVhZEluZGV4KCkg
Y29uc3QgeyByZXR1cm4gbV9pbnB1dFJlYWRJbmRleDsgfQogCiBwcml2YXRlOgotICAgIE93blB0
cjxGRlRGcmFtZT4gbV9mZnRLZXJuZWw7Ci0gICAgT3duUHRyPEZGVENvbnZvbHZlcj4gbV9mZnRD
b252b2x2ZXI7CisgICAgc3RkOjp1bmlxdWVfcHRyPEZGVEZyYW1lPiBtX2ZmdEtlcm5lbDsKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8RkZUQ29udm9sdmVyPiBtX2ZmdENvbnZvbHZlcjsKIAogICAgIEF1
ZGlvRmxvYXRBcnJheSBtX3ByZURlbGF5QnVmZmVyOwogCkBAIC03Nyw4ICs3Nyw4IEBAIHByaXZh
dGU6CiAgICAgQXVkaW9GbG9hdEFycmF5IG1fdGVtcG9yYXJ5QnVmZmVyOwogCiAgICAgYm9vbCBt
X2RpcmVjdE1vZGU7Ci0gICAgT3duUHRyPEF1ZGlvRmxvYXRBcnJheT4gbV9kaXJlY3RLZXJuZWw7
Ci0gICAgT3duUHRyPERpcmVjdENvbnZvbHZlcj4gbV9kaXJlY3RDb252b2x2ZXI7CisgICAgc3Rk
Ojp1bmlxdWVfcHRyPEF1ZGlvRmxvYXRBcnJheT4gbV9kaXJlY3RLZXJuZWw7CisgICAgc3RkOjp1
bmlxdWVfcHRyPERpcmVjdENvbnZvbHZlcj4gbV9kaXJlY3RDb252b2x2ZXI7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5j
cHAKaW5kZXggZGQyNDRiYTE2OTFlMTZkN2M0NDE2YTkxNzUxOTYzOGEyZmFmYjQzNi4uODE2MjQ5
NGFiN2M4MWU0NjcxNWQ2MzFjZjI4YmY3MzI5NWQwMGM3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rl
c3RpbmF0aW9uR1N0cmVhbWVyLmNwcApAQCAtNDIsNyArNDIsNyBAQCBnYm9vbGVhbiBtZXNzYWdl
Q2FsbGJhY2soR3N0QnVzKiwgR3N0TWVzc2FnZSogbWVzc2FnZSwgQXVkaW9EZXN0aW5hdGlvbkdT
dHJlYW1lcgogICAgIHJldHVybiBkZXN0aW5hdGlvbi0+aGFuZGxlTWVzc2FnZShtZXNzYWdlKTsK
IH0KIAotUGFzc093blB0cjxBdWRpb0Rlc3RpbmF0aW9uPiBBdWRpb0Rlc3RpbmF0aW9uOjpjcmVh
dGUoQXVkaW9JT0NhbGxiYWNrJiBjYWxsYmFjaywgY29uc3QgU3RyaW5nJiwgdW5zaWduZWQgbnVt
YmVyT2ZJbnB1dENoYW5uZWxzLCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBmbG9h
dCBzYW1wbGVSYXRlKQorc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRGVzdGluYXRpb24+IEF1ZGlvRGVz
dGluYXRpb246OmNyZWF0ZShBdWRpb0lPQ2FsbGJhY2smIGNhbGxiYWNrLCBjb25zdCBTdHJpbmcm
LCB1bnNpZ25lZCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVuc2lnbmVkIG51bWJlck9mT3V0cHV0
Q2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUpCiB7CiAgICAgLy8gRklYTUU6IG1ha2UgdXNlIG9m
IGlucHV0RGV2aWNlSWQgYXMgYXBwcm9wcmlhdGUuCiAKQEAgLTU0LDcgKzU0LDcgQEAgUGFzc093
blB0cjxBdWRpb0Rlc3RpbmF0aW9uPiBBdWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUoQXVkaW9JT0Nh
bGxiYWNrJiBjYWxsYmFjaywKICAgICBpZiAobnVtYmVyT2ZPdXRwdXRDaGFubmVscyAhPSAyKQog
ICAgICAgICBMT0coTWVkaWEsICJBdWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUoJXUsICV1LCAlZikg
LSB1bmhhbmRsZWQgb3V0cHV0IGNoYW5uZWxzIiwgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCBudW1i
ZXJPZk91dHB1dENoYW5uZWxzLCBzYW1wbGVSYXRlKTsKIAotICAgIHJldHVybiBhZG9wdFB0cihu
ZXcgQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lcihjYWxsYmFjaywgc2FtcGxlUmF0ZSkpOworICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXI+KGNhbGxi
YWNrLCBzYW1wbGVSYXRlKTsKIH0KIAogZmxvYXQgQXVkaW9EZXN0aW5hdGlvbjo6aGFyZHdhcmVT
YW1wbGVSYXRlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dz
dHJlYW1lci9BdWRpb0ZpbGVSZWFkZXJHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRmlsZVJlYWRlckdTdHJlYW1lci5jcHAKaW5kZXgg
NjcyYWVjMWFlMDlkN2JhODUzYWE1MjQ1YTg5ODIwMTIyYzFjOWZmZi4uOGUxNGQzMWI4Y2RhOThj
ODI5ZDVhZDc2MmYwNGVjYmJiMDlkMGNlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRmlsZVJlYWRlckdTdHJlYW1lci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRmlsZVJlYWRlckdT
dHJlYW1lci5jcHAKQEAgLTMwLDcgKzMwLDYgQEAKICNpbmNsdWRlIDxnc3QvZ3N0Lmg+CiAjaW5j
bHVkZSA8Z3N0L3BidXRpbHMvcGJ1dGlscy5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5o
PgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL2dvYmplY3QvR093
blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQdHIuaD4KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvRGVzdGluYXRpb25JT1MuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvRGVzdGluYXRpb25JT1Mu
Y3BwCmluZGV4IGJlZGY4OGYwMDAzODdjOGIwZTE3ZjI4ZTA5Y2IxMmU5YjdhYjIxYWUuLmQ3MTBj
YmY0MGE2NGUxMjUyMzczNjc5MzYyYzZhMTMxN2FmY2UyM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb0Rlc3RpbmF0aW9uSU9TLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9EZXN0aW5hdGlvbklPUy5jcHAK
QEAgLTY3LDcgKzY3LDcgQEAgc3RhdGljIEF1ZGlvRGVzdGluYXRpb25TZXQmIGF1ZGlvRGVzdGlu
YXRpb25zKCkKIH0KIAogLy8gRmFjdG9yeSBtZXRob2Q6IGlPUy1pbXBsZW1lbnRhdGlvbgotUGFz
c093blB0cjxBdWRpb0Rlc3RpbmF0aW9uPiBBdWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUoQXVkaW9J
T0NhbGxiYWNrJiBjYWxsYmFjaywgY29uc3QgU3RyaW5nJiwgdW5zaWduZWQgbnVtYmVyT2ZJbnB1
dENoYW5uZWxzLCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVS
YXRlKQorc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRGVzdGluYXRpb24+IEF1ZGlvRGVzdGluYXRpb246
OmNyZWF0ZShBdWRpb0lPQ2FsbGJhY2smIGNhbGxiYWNrLCBjb25zdCBTdHJpbmcmLCB1bnNpZ25l
ZCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVuc2lnbmVkIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMs
IGZsb2F0IHNhbXBsZVJhdGUpCiB7CiAgICAgLy8gRklYTUU6IG1ha2UgdXNlIG9mIGlucHV0RGV2
aWNlSWQgYXMgYXBwcm9wcmlhdGUuCiAKQEAgLTc5LDcgKzc5LDcgQEAgUGFzc093blB0cjxBdWRp
b0Rlc3RpbmF0aW9uPiBBdWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUoQXVkaW9JT0NhbGxiYWNrJiBj
YWxsYmFjaywKICAgICBpZiAobnVtYmVyT2ZPdXRwdXRDaGFubmVscyAhPSAyKQogICAgICAgICBM
T0coTWVkaWEsICJBdWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUoJXUsICV1LCAlZikgLSB1bmhhbmRs
ZWQgb3V0cHV0IGNoYW5uZWxzIiwgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCBudW1iZXJPZk91dHB1
dENoYW5uZWxzLCBzYW1wbGVSYXRlKTsKIAotICAgIHJldHVybiBhZG9wdFB0cihuZXcgQXVkaW9E
ZXN0aW5hdGlvbklPUyhjYWxsYmFjaywgc2FtcGxlUmF0ZSkpOworICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPEF1ZGlvRGVzdGluYXRpb25JT1M+KGNhbGxiYWNrLCBzYW1wbGVSYXRlKTsKIH0K
IAogZmxvYXQgQXVkaW9EZXN0aW5hdGlvbjo6aGFyZHdhcmVTYW1wbGVSYXRlKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb1Nlc3Npb25JT1MubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9TZXNzaW9uSU9TLm1tCmlu
ZGV4IGZmNzAxMjM0ZTU1NmMyNGVjNjQyZDhkOGFjNTNmYTlkN2E4NTZjYjQuLmJjODMzNzA2ZmU5
ZjkxMWNhNTg2NjBmNDg0NzNlYmM1ZmJkNmY2MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb1Nlc3Npb25JT1MubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvU2Vzc2lvbklPUy5tbQpAQCAtMzEsNyArMzEsNiBA
QAogI2ltcG9ydCAiU29mdExpbmtpbmcuaCIKICNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVkF1ZGlv
U2Vzc2lvbi5oPgogI2ltcG9ydCA8b2JqYy9ydW50aW1lLmg+Ci0jaW1wb3J0IDx3dGYvUGFzc093
blB0ci5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCiBTT0ZUX0xJTktfRlJBTUVXT1JL
KEFWRm91bmRhdGlvbikKQEAgLTExOSw3ICsxMTgsNyBAQCBBdWRpb1Nlc3Npb25Qcml2YXRlOjpB
dWRpb1Nlc3Npb25Qcml2YXRlKEF1ZGlvU2Vzc2lvbiogc2Vzc2lvbikKIH0KIAogQXVkaW9TZXNz
aW9uOjpBdWRpb1Nlc3Npb24oKQotICAgIDogbV9wcml2YXRlKGFkb3B0UHRyKG5ldyBBdWRpb1Nl
c3Npb25Qcml2YXRlKHRoaXMpKSkKKyAgICA6IG1fcHJpdmF0ZShzdGQ6Om1ha2VfdW5pcXVlPEF1
ZGlvU2Vzc2lvblByaXZhdGU+KHRoaXMpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9EZXN0aW5hdGlvbk1hYy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9EZXN0aW5hdGlvbk1hYy5jcHAKaW5kZXgg
M2M3NmNmNTM0ZTk2MjVkM2EwOWUxZDY1NGMwZTMwYmI2ZjkxZmQ3NS4uOWU3YTljMTk0MDk4ZjMw
MDBiY2NkNDU1NjU4NTY1NjE1MTUzMzQ3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vbWFjL0F1ZGlvRGVzdGluYXRpb25NYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0aW9uTWFjLmNwcApAQCAtNDksNyAr
NDksNyBAQCBjb25zdCBmbG9hdCBrTG93VGhyZXNob2xkID0gLTE7CiBjb25zdCBmbG9hdCBrSGln
aFRocmVzaG9sZCA9IDE7CiAKIC8vIEZhY3RvcnkgbWV0aG9kOiBNYWMtaW1wbGVtZW50YXRpb24K
LVBhc3NPd25QdHI8QXVkaW9EZXN0aW5hdGlvbj4gQXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKEF1
ZGlvSU9DYWxsYmFjayYgY2FsbGJhY2ssIGNvbnN0IFN0cmluZyYsIHVuc2lnbmVkIG51bWJlck9m
SW5wdXRDaGFubmVscywgdW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgZmxvYXQgc2Ft
cGxlUmF0ZSkKK3N0ZDo6dW5pcXVlX3B0cjxBdWRpb0Rlc3RpbmF0aW9uPiBBdWRpb0Rlc3RpbmF0
aW9uOjpjcmVhdGUoQXVkaW9JT0NhbGxiYWNrJiBjYWxsYmFjaywgY29uc3QgU3RyaW5nJiwgdW5z
aWduZWQgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dENoYW5u
ZWxzLCBmbG9hdCBzYW1wbGVSYXRlKQogewogICAgIC8vIEZJWE1FOiBtYWtlIHVzZSBvZiBpbnB1
dERldmljZUlkIGFzIGFwcHJvcHJpYXRlLgogCkBAIC02MSw3ICs2MSw3IEBAIFBhc3NPd25QdHI8
QXVkaW9EZXN0aW5hdGlvbj4gQXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKEF1ZGlvSU9DYWxsYmFj
ayYgY2FsbGJhY2ssCiAgICAgaWYgKG51bWJlck9mT3V0cHV0Q2hhbm5lbHMgIT0gMikKICAgICAg
ICAgTE9HKE1lZGlhLCAiQXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKCV1LCAldSwgJWYpIC0gdW5o
YW5kbGVkIG91dHB1dCBjaGFubmVscyIsIG51bWJlck9mSW5wdXRDaGFubmVscywgbnVtYmVyT2ZP
dXRwdXRDaGFubmVscywgc2FtcGxlUmF0ZSk7CiAKLSAgICByZXR1cm4gYWRvcHRQdHIobmV3IEF1
ZGlvRGVzdGluYXRpb25NYWMoY2FsbGJhY2ssIHNhbXBsZVJhdGUpKTsKKyAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxBdWRpb0Rlc3RpbmF0aW9uTWFjPihjYWxsYmFjaywgc2FtcGxlUmF0ZSk7
CiB9CiAKIGZsb2F0IEF1ZGlvRGVzdGluYXRpb246OmhhcmR3YXJlU2FtcGxlUmF0ZSgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9EZXN0aW5hdGlv
bk1hYy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvRGVzdGluYXRp
b25NYWMuaAppbmRleCBlMWY0MGU3YzYzY2I3NGMyZTc0MWRiZTBiOWYzYWU5MmIxMzhjZWQyLi44
Y2ZlNGViMGUzZGJjMWI1OTUwYWY4ZTY2ZTBmZjEyNzc0NGQyZTE1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9EZXN0aW5hdGlvbk1hYy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0aW9uTWFjLmgK
QEAgLTMzLDcgKzMzLDYgQEAKICNpbmNsdWRlICJBdWRpb0Rlc3RpbmF0aW9uLmgiCiAjaW5jbHVk
ZSAiTWVkaWFTZXNzaW9uLmgiCiAjaW5jbHVkZSA8QXVkaW9Vbml0L0F1ZGlvVW5pdC5oPgotI2lu
Y2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21h
Yy9BdWRpb1Nlc3Npb25NYWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFj
L0F1ZGlvU2Vzc2lvbk1hYy5jcHAKaW5kZXggMzVlMjhhYjE4ZjU5M2Y4NjlmMTY5ODhhN2I3MDBh
YWY3MWRmZDEyOC4uYTRlNWUyOTRmZGQwNmEyOGNjYzc1M2E3NjA5MWFlZTZmMzgyYmZmZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2Vzc2lvbk1h
Yy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2Vzc2lv
bk1hYy5jcHAKQEAgLTMyLDcgKzMyLDYgQEAKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVk
ZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlIDxDb3JlQXVkaW8vQXVkaW9IYXJkd2FyZS5o
PgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApA
QCAtNTYsNyArNTUsNyBAQCBwdWJsaWM6CiB9OwogCiBBdWRpb1Nlc3Npb246OkF1ZGlvU2Vzc2lv
bigpCi0gICAgOiBtX3ByaXZhdGUoYWRvcHRQdHIobmV3IEF1ZGlvU2Vzc2lvblByaXZhdGUoKSkp
CisgICAgOiBtX3ByaXZhdGUoc3RkOjptYWtlX3VuaXF1ZTxBdWRpb1Nlc3Npb25Qcml2YXRlPigp
KQogewogfQogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>