<?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>159549</bug_id>
          
          <creation_ts>2016-07-08 00:26:30 -0700</creation_ts>
          <short_desc>Move CallFrame header info from JSStack.h to CallFrame.h</short_desc>
          <delta_ts>2016-07-08 15:59:33 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Local 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>
          
          <blocked>159545</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>keith_miller</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1208998</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-07-08 00:26:30 -0700</bug_when>
    <thetext>... because CallFrame.h is the more appropriate place for the CallFrameHeader info.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1209005</commentid>
    <comment_count>1</comment_count>
      <attachid>283119</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-07-08 01:08:46 -0700</bug_when>
    <thetext>Created attachment 283119
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1209006</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-07-08 01:09:59 -0700</bug_when>
    <thetext>Attachment 283119 did not pass style-queue:


ERROR: Source/JavaScriptCore/jit/CallFrameShuffler.cpp:43:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 58 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1209100</commentid>
    <comment_count>3</comment_count>
      <attachid>283119</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-07-08 07:23:06 -0700</bug_when>
    <thetext>Comment on attachment 283119
proposed patch.

Let me fix the build error on the debug build first.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1209170</commentid>
    <comment_count>4</comment_count>
      <attachid>283180</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-07-08 10:03:21 -0700</bug_when>
    <thetext>Created attachment 283180
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1209172</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-07-08 10:05:07 -0700</bug_when>
    <thetext>Attachment 283180 did not pass style-queue:


ERROR: Source/JavaScriptCore/jit/CallFrameShuffler.cpp:43:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 59 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1209187</commentid>
    <comment_count>6</comment_count>
      <attachid>283180</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2016-07-08 10:41:29 -0700</bug_when>
    <thetext>Comment on attachment 283180
proposed patch.

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

&gt; Source/JavaScriptCore/interpreter/CallFrame.h:74
&gt; +    struct CallFrameHeader {
&gt; +        enum Entry {

This is odd C++ style.

The idiomatic way to namespace an enum is &quot;enum class&quot;.

The idiomatic equivalent for what you&apos;ve done is &quot;enum class CallFrameHeaderEntry&quot;. I think that&apos;s probably better.

&quot;CallFrameHeaderEntry&quot; a bit long, so maybe just &quot;CallFrameSlot&quot; instead. I&apos;m not sure any clients care that these values form a header, and in fact they&apos;re not quite a header since more data (function arguments) lies beyond them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1209191</commentid>
    <comment_count>7</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-07-08 10:50:02 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; Comment on attachment 283180 [details]
&gt; proposed patch.
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=283180&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/interpreter/CallFrame.h:74
&gt; &gt; +    struct CallFrameHeader {
&gt; &gt; +        enum Entry {
&gt; 
&gt; This is odd C++ style.
&gt; 
&gt; The idiomatic way to namespace an enum is &quot;enum class&quot;.
&gt; 
&gt; The idiomatic equivalent for what you&apos;ve done is &quot;enum class
&gt; CallFrameHeaderEntry&quot;. I think that&apos;s probably better.
&gt; 
&gt; &quot;CallFrameHeaderEntry&quot; a bit long, so maybe just &quot;CallFrameSlot&quot; instead.
&gt; I&apos;m not sure any clients care that these values form a header, and in fact
&gt; they&apos;re not quite a header since more data (function arguments) lies beyond
&gt; them.

I wanted to use an enum class at first, but that resulted in the enum values not being accepted as int values every where they are used.  For example, indexing with [CallFrameHeader::Callee] will yield an error saying that the indexing value, CallFrameHeader::Callee, is not an int.

I have already tried all of these:
    enum class CallFrameEntry { ...
    enum class CallFrameEntry : int { ...
    enum class CallFrameEntry : int {
        CallerFrameAndPCSize = ...
        CodeBlock = CallerFrameAndPCSize,
        Callee = CodeBlock + 1,
        ...

All of them did not resolve the error.  Hence, I fell back on how the pattern which we used previously i.e. an enum inside a class so that the class provides scoping for the enum while the enum values still int type.

As for the name of the class/struct, I&apos;m not that comfortable with CallFrameHeader either given that it is more so a container for CallFrameConstants.  I kept CallFrameHeader to retain the legacy reference to what this values are for, but am open to changing it.

In light of enum class being not a viable solution, what do you propose I do?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1209222</commentid>
    <comment_count>8</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2016-07-08 11:52:16 -0700</bug_when>
    <thetext>&gt; I wanted to use an enum class at first, but that resulted in the enum values
&gt; not being accepted as int values every where they are used.

That&apos;s right. enum class is type-safe, so you need to cast or invoke the int constructor to turn it into an int. Will casting work? I think it will.

It looks like our APIs that currently accept JSStack::CallFrameHeaderEntry are reasonably encapsulated, so they can do the casting for us.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1209275</commentid>
    <comment_count>9</comment_count>
      <attachid>283200</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-07-08 14:57:46 -0700</bug_when>
    <thetext>Created attachment 283200
revised patch with Geoff&apos;s feedback.

After talking with Geoff offline, we decided to go with static const int fields. This has been applied to the revised patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1209276</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-07-08 14:59:22 -0700</bug_when>
    <thetext>Attachment 283200 did not pass style-queue:


ERROR: Source/JavaScriptCore/jit/CallFrameShuffler.cpp:43:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 59 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1209291</commentid>
    <comment_count>11</comment_count>
      <attachid>283208</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-07-08 15:50:41 -0700</bug_when>
    <thetext>Created attachment 283208
Patch for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1209292</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-07-08 15:53:15 -0700</bug_when>
    <thetext>Attachment 283208 did not pass style-queue:


ERROR: Source/JavaScriptCore/jit/CallFrameShuffler.cpp:43:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 59 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1209293</commentid>
    <comment_count>13</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-07-08 15:59:33 -0700</bug_when>
    <thetext>Landed in r203006: &lt;http://trac.webkit.org/r203006&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>283119</attachid>
            <date>2016-07-08 01:08:46 -0700</date>
            <delta_ts>2016-07-08 10:03:21 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-159549.patch</filename>
            <type>text/plain</type>
            <size>135938</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjAyOTcxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0MSBA
QAorMjAxNi0wNy0wOCAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAg
TW92ZSBDYWxsRnJhbWVIZWFkZXIgaW5mbyBmcm9tIEpTU3RhY2suaCB0byBDYWxsRnJhbWUuaAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU5NTQ5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2FsbEZyYW1l
LmggaXMgYSBtdWNoIGJldHRlciBsb2NhdGlvbiBmb3IgQ2FsbEZyYW1lSGVhZGVyIGluZm8uCisg
ICAgICAgIEFsc28gcmVtb3ZlZCBzb21lIHVudXNlZCBjb2RlLgorCisgICAgICAgICogYnl0ZWNv
ZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpnZW5l
cmF0ZUltcGwpOgorICAgICAgICAqIGJ5dGVjb2RlL1ZpcnR1YWxSZWdpc3Rlci5oOgorICAgICAg
ICAoSlNDOjpWaXJ0dWFsUmVnaXN0ZXI6OmlzVmFsaWQpOgorICAgICAgICAoSlNDOjpWaXJ0dWFs
UmVnaXN0ZXI6OmlzTG9jYWwpOgorICAgICAgICAoSlNDOjpWaXJ0dWFsUmVnaXN0ZXI6OmlzQXJn
dW1lbnQpOgorICAgICAgICAoSlNDOjpWaXJ0dWFsUmVnaXN0ZXI6OmlzSGVhZGVyKToKKyAgICAg
ICAgKEpTQzo6VmlydHVhbFJlZ2lzdGVyOjppc0NvbnN0YW50KToKKyAgICAgICAgKEpTQzo6Vmly
dHVhbFJlZ2lzdGVyOjp0b0xvY2FsKToKKyAgICAgICAgKEpTQzo6VmlydHVhbFJlZ2lzdGVyOjp0
b0FyZ3VtZW50KToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3Bw
OgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IpOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENhbGwpOgorICAgICAgICAoSlND
OjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENvbnN0cnVjdCk6CisgICAgICAgICogYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkNhbGxBcmd1bWVudHM6OnRo
aXNSZWdpc3Rlcik6CisgICAgICAgIChKU0M6OkNhbGxBcmd1bWVudHM6OmFyZ3VtZW50UmVnaXN0
ZXIpOgorICAgICAgICAoSlNDOjpDYWxsQXJndW1lbnRzOjpzdGFja09mZnNldCk6CisgICAgICAg
IChKU0M6OkNhbGxBcmd1bWVudHM6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKToKKyAgICAg
ICAgKEpTQzo6Q2FsbEFyZ3VtZW50czo6YXJndW1lbnRzTm9kZSk6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlR2VuZXJhdG9yOjpyZWdpc3RlckZvcik6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05v
ZGVzQ29kZWdlbi5jcHA6CisgICAgICAgIChKU0M6OmVtaXRIb21lT2JqZWN0Rm9yQ2FsbGVlKToK
KyAgICAgICAgKEpTQzo6ZW1pdEdldFN1cGVyRnVuY3Rpb25Gb3JDb25zdHJ1Y3QpOgorICAgICAg
ICAoSlNDOjpDYWxsQXJndW1lbnRzOjpDYWxsQXJndW1lbnRzKToKKyAgICAgICAgKiBkZmcvREZH
QXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR0FyZ3VtZW50
c1V0aWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6YXJndW1lbnRzSW52b2x2ZVN0YWNr
U2xvdCk6CisgICAgICAgIChKU0M6OkRGRzo6ZW1pdENvZGVUb0dldEFyZ3VtZW50c0FycmF5TGVu
Z3RoKToKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlND
OjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpnZXQpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2Rl
UGFyc2VyOjpmaW5kQXJndW1lbnRQb3NpdGlvbkZvckxvY2FsKToKKyAgICAgICAgKEpTQzo6REZH
OjpCeXRlQ29kZVBhcnNlcjo6Zmx1c2gpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFy
c2VyOjphZGRDYWxsV2l0aG91dFNldHRpbmdSZXN1bHQpOgorICAgICAgICAoSlNDOjpERkc6OkJ5
dGVDb2RlUGFyc2VyOjpnZXRBcmd1bWVudENvdW50KToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRl
Q29kZVBhcnNlcjo6aW5saW5lQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJz
ZXI6OmhhbmRsZUlubGluaW5nKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6
aGFuZGxlR2V0QnlJZCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRs
ZVB1dEJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2Nr
KToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6SW5saW5lU3RhY2tFbnRyeTo6
SW5saW5lU3RhY2tFbnRyeSk6CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJpemUuaDoKKyAgICAg
ICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToKKyAgICAgICAgKiBkZmcvREZHR3JhcGguY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjppc0xpdmVJbkJ5dGVjb2RlKToKKyAgICAgICAgKiBk
ZmcvREZHR3JhcGguaDoKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6Zm9yQWxsTG9jYWxzTGl2
ZUluQnl0ZWNvZGUpOgorICAgICAgICAqIGRmZy9ERkdKSVRDb21waWxlci5jcHA6CisgICAgICAg
IChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmNvbXBpbGVFbnRyeSk6CisgICAgICAgIChKU0M6OkRG
Rzo6SklUQ29tcGlsZXI6OmNvbXBpbGVTZXR1cFJlZ2lzdGVyc0ZvckVudHJ5KToKKyAgICAgICAg
KEpTQzo6REZHOjpKSVRDb21waWxlcjo6Y29tcGlsZUZ1bmN0aW9uKToKKyAgICAgICAgKiBkZmcv
REZHSklUQ29tcGlsZXIuaDoKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6ZW1pdFN0
b3JlQ2FsbFNpdGVJbmRleCk6CisgICAgICAgICogZGZnL0RGR09TUkF2YWlsYWJpbGl0eUFuYWx5
c2lzUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkxvY2FsT1NSQXZhaWxhYmlsaXR5Q2Fs
Y3VsYXRvcjo6ZXhlY3V0ZU5vZGUpOgorICAgICAgICAqIGRmZy9ERkdPU1JFbnRyeS5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6cHJlcGFyZU9TUkVudHJ5KToKKyAgICAgICAgKiBkZmcvREZHT1NS
RXhpdENvbXBpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpPU1JFeGl0Q29tcGlsZXI6OmVt
aXRSZXN0b3JlQXJndW1lbnRzKToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdENvbXBpbGVyQ29t
bW9uLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpyZWlmeUlubGluZWRDYWxsRnJhbWVzKToKKyAg
ICAgICAgKiBkZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmg6CisgICAgICAgIChKU0M6OkRG
Rzo6YWRqdXN0RnJhbWVBbmRTdGFja0luT1NSRXhpdENvbXBpbGVyVGh1bmspOgorICAgICAgICAq
IGRmZy9ERkdQcmVjaXNlTG9jYWxDbG9iYmVyaXplLmg6CisgICAgICAgIChKU0M6OkRGRzo6UHJl
Y2lzZUxvY2FsQ2xvYmJlcml6ZUFkYXB0b3I6OnJlYWRUb3ApOgorICAgICAgICAqIGRmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVt
aXRHZXRMZW5ndGgpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0R2V0
Q2FsbGVlKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdEdldEFyZ3Vt
ZW50U3RhcnQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlQ3Jl
YXRlRGlyZWN0QXJndW1lbnRzKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82
NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKToKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZn
L0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjplbWl0Q2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGUpOgorICAgICAgICAqIGRmZy9ERkdTdGFja0xheW91dFBoYXNlLmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpTdGFja0xheW91dFBoYXNlOjpydW4pOgorICAgICAgICAqIGRmZy9ERkdUaHVua3Mu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6Om9zckVudHJ5VGh1bmtHZW5lcmF0b3IpOgorICAgICAg
ICAqIGZ0bC9GVExMaW5rLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpsaW5rKToKKyAgICAgICAg
KiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2Vy
REZHVG9CMzo6bG93ZXIpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpj
b21waWxlR2V0TXlBcmd1bWVudEJ5VmFsKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2Vy
REZHVG9CMzo6Y29tcGlsZUdldENhbGxlZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dl
ckRGR1RvQjM6OmNvbXBpbGVHZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyk6CisgICAgICAg
IChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVHZXRTY29wZSk6CisgICAgICAg
IChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVDYWxsT3JDb25zdHJ1Y3QpOgor
ICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlVGFpbENhbGwpOgor
ICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQ2FsbE9yQ29uc3Ry
dWN0VmFyYXJncyk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBp
bGVMb2dTaGFkb3dDaGlja2VuUHJvbG9ndWUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93
ZXJERkdUb0IzOjpnZXRBcmd1bWVudHNMZW5ndGgpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6
TG93ZXJERkdUb0IzOjpnZXRDdXJyZW50Q2FsbGVlKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6
Okxvd2VyREZHVG9CMzo6Z2V0QXJndW1lbnRzU3RhcnQpOgorICAgICAgICAoSlNDOjpGVEw6OkRG
Rzo6TG93ZXJERkdUb0IzOjpjYWxsUHJlZmxpZ2h0KToKKyAgICAgICAgKiBmdGwvRlRMT1NSRXhp
dENvbXBpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjb21waWxlU3R1Yik6CisgICAgICAg
ICogZnRsL0ZUTFNsb3dQYXRoQ2FsbC5oOgorICAgICAgICAoSlNDOjpGVEw6OmNhbGxPcGVyYXRp
b24pOgorICAgICAgICAqIGludGVycHJldGVyL0NhbGxGcmFtZS5jcHA6CisgICAgICAgIChKU0M6
OkNhbGxGcmFtZTo6Y2FsbFNpdGVBc1Jhd0JpdHMpOgorICAgICAgICAoSlNDOjpDYWxsRnJhbWU6
OnVuc2FmZUNhbGxTaXRlQXNSYXdCaXRzKToKKyAgICAgICAgKEpTQzo6Q2FsbEZyYW1lOjpjYWxs
U2l0ZUluZGV4KToKKyAgICAgICAgKEpTQzo6Q2FsbEZyYW1lOjpzZXRDdXJyZW50VlBDKToKKyAg
ICAgICAgKEpTQzo6Q2FsbEZyYW1lOjpjYWxsU2l0ZUJpdHNBc0J5dGVjb2RlT2Zmc2V0KToKKyAg
ICAgICAgKiBpbnRlcnByZXRlci9DYWxsRnJhbWUuaDoKKyAgICAgICAgKEpTQzo6Q2FsbFNpdGVJ
bmRleDo6Q2FsbFNpdGVJbmRleCk6CisgICAgICAgIChKU0M6OkV4ZWNTdGF0ZTo6Y2FsbGVlQXNW
YWx1ZSk6CisgICAgICAgIChKU0M6OkV4ZWNTdGF0ZTo6Y2FsbGVlKToKKyAgICAgICAgKEpTQzo6
RXhlY1N0YXRlOjp1bnNhZmVDYWxsZWUpOgorICAgICAgICAoSlNDOjpFeGVjU3RhdGU6OmNvZGVC
bG9jayk6CisgICAgICAgIChKU0M6OkV4ZWNTdGF0ZTo6dW5zYWZlQ29kZUJsb2NrKToKKyAgICAg
ICAgKEpTQzo6RXhlY1N0YXRlOjpzY29wZSk6CisgICAgICAgIChKU0M6OkV4ZWNTdGF0ZTo6YXJn
dW1lbnRDb3VudCk6CisgICAgICAgIChKU0M6OkV4ZWNTdGF0ZTo6YXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXMpOgorICAgICAgICAoSlNDOjpFeGVjU3RhdGU6OmFyZ3VtZW50T2Zmc2V0KToKKyAg
ICAgICAgKEpTQzo6RXhlY1N0YXRlOjphcmd1bWVudE9mZnNldEluY2x1ZGluZ1RoaXMpOgorICAg
ICAgICAoSlNDOjpFeGVjU3RhdGU6Om9mZnNldEZvcik6CisgICAgICAgIChKU0M6OkV4ZWNTdGF0
ZTo6bm9DYWxsZXIpOgorICAgICAgICAoSlNDOjpFeGVjU3RhdGU6OnNldEFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzKToKKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjpzZXRDYWxsZWUpOgorICAg
ICAgICAoSlNDOjpFeGVjU3RhdGU6OnNldENvZGVCbG9jayk6CisgICAgICAgIChKU0M6OkV4ZWNT
dGF0ZTo6c2V0UmV0dXJuUEMpOgorICAgICAgICAoSlNDOjpFeGVjU3RhdGU6OmFyZ0luZGV4Rm9y
UmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpFeGVjU3RhdGU6OmNhbGxlckZyYW1lQW5kUEMpOgor
ICAgICAgICAoSlNDOjpFeGVjU3RhdGU6OnVuc2FmZUNhbGxlckZyYW1lQW5kUEMpOgorICAgICAg
ICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0
ZXI6OmR1bXBSZWdpc3RlcnMpOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmg6
CisgICAgICAgIChKU0M6OmNhbGxlZUZyYW1lRm9yVmFyYXJncyk6CisgICAgICAgICogaW50ZXJw
cmV0ZXIvSlNTdGFjay5oOgorICAgICAgICAoSlNDOjpKU1N0YWNrOjpjb250YWluc0FkZHJlc3Mp
OgorICAgICAgICAoSlNDOjpKU1N0YWNrOjpnYXRoZXJDb25zZXJ2YXRpdmVSb290cyk6IERlbGV0
ZWQuCisgICAgICAgIChKU0M6OkpTU3RhY2s6OnNhbml0aXplU3RhY2spOiBEZWxldGVkLgorICAg
ICAgICAqIGppdC9Bc3NlbWJseUhlbHBlcnMuY3BwOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhl
bHBlcnM6OmppdEFzc2VydEFyZ3VtZW50Q291bnRTYW5lKToKKyAgICAgICAgKEpTQzo6QXNzZW1i
bHlIZWxwZXJzOjplbWl0UmFuZG9tVGh1bmspOgorICAgICAgICAqIGppdC9Bc3NlbWJseUhlbHBl
cnMuaDoKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpyZXN0b3JlUmV0dXJuQWRkcmVz
c0JlZm9yZVJldHVybik6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6ZW1pdEdldEZy
b21DYWxsRnJhbWVIZWFkZXJQdHIpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmVt
aXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyMzIpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBl
cnM6OmVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyNjQpOgorICAgICAgICAoSlNDOjpBc3NlbWJs
eUhlbHBlcnM6OmVtaXRQdXRUb0NhbGxGcmFtZUhlYWRlcik6CisgICAgICAgIChKU0M6OkFzc2Vt
Ymx5SGVscGVyczo6ZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVyQmVmb3JlUHJvbG9ndWUpOgorICAg
ICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmVtaXRQdXRQYXlsb2FkVG9DYWxsRnJhbWVIZWFk
ZXJCZWZvcmVQcm9sb2d1ZSk6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6ZW1pdFB1
dFRhZ1RvQ2FsbEZyYW1lSGVhZGVyQmVmb3JlUHJvbG9ndWUpOgorICAgICAgICAoSlNDOjpBc3Nl
bWJseUhlbHBlcnM6OmNhbGxlZUZyYW1lU2xvdCk6CisgICAgICAgICogaml0L0NDYWxsSGVscGVy
cy5jcHA6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6bG9nU2hhZG93Q2hpY2tlblByb2xv
Z3VlUGFja2V0KToKKyAgICAgICAgKiBqaXQvQ0NhbGxIZWxwZXJzLmg6CisgICAgICAgIChKU0M6
OkNDYWxsSGVscGVyczo6cHJlcGFyZUZvclRhaWxDYWxsU2xvdyk6CisgICAgICAgICogaml0L0Nh
bGxGcmFtZVNodWZmbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6Q2FsbEZyYW1lU2h1ZmZsZXI6OkNh
bGxGcmFtZVNodWZmbGVyKToKKyAgICAgICAgKEpTQzo6Q2FsbEZyYW1lU2h1ZmZsZXI6OmR1bXAp
OgorICAgICAgICAoSlNDOjpDYWxsRnJhbWVTaHVmZmxlcjo6ZXh0ZW5kRnJhbWVJZk5lZWRlZCk6
CisgICAgICAgIChKU0M6OkNhbGxGcmFtZVNodWZmbGVyOjpwcmVwYXJlRm9yU2xvd1BhdGgpOgor
ICAgICAgICAoSlNDOjpDYWxsRnJhbWVTaHVmZmxlcjo6cHJlcGFyZUZvclRhaWxDYWxsKToKKyAg
ICAgICAgKEpTQzo6Q2FsbEZyYW1lU2h1ZmZsZXI6OnByZXBhcmVBbnkpOgorICAgICAgICAqIGpp
dC9DYWxsRnJhbWVTaHVmZmxlci5oOgorICAgICAgICAoSlNDOjpDYWxsRnJhbWVTaHVmZmxlcjo6
c25hcHNob3QpOgorICAgICAgICAoSlNDOjpDYWxsRnJhbWVTaHVmZmxlcjo6c2V0Q2FsbGVlSlNW
YWx1ZVJlZ3MpOgorICAgICAgICAoSlNDOjpDYWxsRnJhbWVTaHVmZmxlcjo6YXNzdW1lQ2FsbGVl
SXNDZWxsKToKKyAgICAgICAgKEpTQzo6Q2FsbEZyYW1lU2h1ZmZsZXI6Om51bUxvY2Fscyk6Cisg
ICAgICAgIChKU0M6OkNhbGxGcmFtZVNodWZmbGVyOjpnZXRPbGQpOgorICAgICAgICAoSlNDOjpD
YWxsRnJhbWVTaHVmZmxlcjo6c2V0T2xkKToKKyAgICAgICAgKEpTQzo6Q2FsbEZyYW1lU2h1ZmZs
ZXI6OmZpcnN0T2xkKToKKyAgICAgICAgKEpTQzo6Q2FsbEZyYW1lU2h1ZmZsZXI6Omxhc3RPbGQp
OgorICAgICAgICAoSlNDOjpDYWxsRnJhbWVTaHVmZmxlcjo6aXNWYWxpZE9sZCk6CisgICAgICAg
IChKU0M6OkNhbGxGcmFtZVNodWZmbGVyOjphcmdDb3VudCk6CisgICAgICAgIChKU0M6OkNhbGxG
cmFtZVNodWZmbGVyOjpnZXROZXcpOgorICAgICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAo
SlNDOjpKSVQ6OmNvbXBpbGVXaXRob3V0TGlua2luZyk6CisgICAgICAgICogaml0L0pJVC5oOgor
ICAgICAgICAqIGppdC9KSVRDYWxsLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlU2V0
dXBWYXJhcmdzRnJhbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVDYWxsRXZhbFNsb3dD
YXNlKToKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlT3BDYWxsKToKKyAgICAgICAgKiBqaXQv
SklUQ2FsbDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlU2V0dXBWYXJhcmdz
RnJhbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVDYWxsRXZhbFNsb3dDYXNlKToKKyAg
ICAgICAgKEpTQzo6SklUOjpjb21waWxlT3BDYWxsKToKKyAgICAgICAgKiBqaXQvSklUSW5saW5l
cy5oOgorICAgICAgICAoSlNDOjpKSVQ6OmdldENvbnN0YW50T3BlcmFuZCk6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdFB1dEludFRvQ2FsbEZyYW1lSGVhZGVyKToKKyAgICAgICAgKEpTQzo6SklU
Ojp1cGRhdGVUb3BDYWxsRnJhbWUpOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9zY29wZSk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdF9vcF9hcmd1bWVudF9jb3VudCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRf
cmVzdF9sZW5ndGgpOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzMzJfNjQuY3BwOgorICAgICAg
ICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlQ1RJTmF0aXZlQ2FsbCk6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdF9vcF9nZXRfc2NvcGUpOgorICAgICAgICAqIGppdC9KU0ludGVyZmFjZUpJVC5o
OgorICAgICAgICAoSlNDOjpKU0ludGVyZmFjZUpJVDo6ZW1pdEp1bXBJZk5vdFR5cGUpOgorICAg
ICAgICAoSlNDOjpKU0ludGVyZmFjZUpJVDo6ZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXJQdHIp
OgorICAgICAgICAoSlNDOjpKU0ludGVyZmFjZUpJVDo6ZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVy
KToKKyAgICAgICAgKEpTQzo6SlNJbnRlcmZhY2VKSVQ6OmVtaXRQdXRDZWxsVG9DYWxsRnJhbWVI
ZWFkZXIpOgorICAgICAgICAqIGppdC9TZXR1cFZhcmFyZ3NGcmFtZS5jcHA6CisgICAgICAgIChK
U0M6OmVtaXRTZXRWYXJhcmdzRnJhbWUpOgorICAgICAgICAoSlNDOjplbWl0U2V0dXBWYXJhcmdz
RnJhbWVGYXN0Q2FzZSk6CisgICAgICAgICogaml0L1NwZWNpYWxpemVkVGh1bmtKSVQuaDoKKyAg
ICAgICAgKEpTQzo6U3BlY2lhbGl6ZWRUaHVua0pJVDo6U3BlY2lhbGl6ZWRUaHVua0pJVCk6Cisg
ICAgICAgICogaml0L1RodW5rR2VuZXJhdG9ycy5jcHA6CisgICAgICAgIChKU0M6Om5hdGl2ZUZv
ckdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OmFyaXR5Rml4dXBHZW5lcmF0b3IpOgorICAgICAg
ICAoSlNDOjpib3VuZFRoaXNOb0FyZ3NGdW5jdGlvbkNhbGxHZW5lcmF0b3IpOgorICAgICAgICAq
IGxsaW50L0xMSW50RGF0YS5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpEYXRhOjpwZXJmb3Jt
QXNzZXJ0aW9ucyk6CisgICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwOgorICAgICAg
ICAoSlNDOjpMTEludDo6Z2VuZXJpY0NhbGwpOgorICAgICAgICAoSlNDOjpMTEludDo6dmFyYXJn
c1NldHVwKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OkxMSU5UX1NMT1dfUEFUSF9ERUNMKToKKyAg
ICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5oOgorICAgICAgICAoSlNDOjpDb21tb25T
bG93UGF0aHM6OmFyaXR5Q2hlY2tGb3IpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuaDoKKyAgICAgICAgKiBydW50aW1lL1N0YWNrQWxpZ25tZW50Lmg6CisgICAgICAgIChKU0M6
OnJvdW5kQXJndW1lbnRDb3VudFRvQWxpZ25GcmFtZSk6CisgICAgICAgIChKU0M6OnJvdW5kTG9j
YWxSZWdpc3RlckNvdW50Rm9yRnJhbWVQb2ludGVyT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6bG9n
U3RhY2tBbGlnbm1lbnRSZWdpc3RlcnMpOgorICAgICAgICAqIHdhc20vV0FTTUZ1bmN0aW9uQ29t
cGlsZXIuaDoKKyAgICAgICAgKEpTQzo6V0FTTUZ1bmN0aW9uQ29tcGlsZXI6OnN0YXJ0RnVuY3Rp
b24pOgorICAgICAgICAoSlNDOjpXQVNNRnVuY3Rpb25Db21waWxlcjo6ZW5kRnVuY3Rpb24pOgor
ICAgICAgICAoSlNDOjpXQVNNRnVuY3Rpb25Db21waWxlcjo6Ym94QXJndW1lbnRzQW5kQWRqdXN0
U3RhY2tQb2ludGVyKToKKyAgICAgICAgKEpTQzo6V0FTTUZ1bmN0aW9uQ29tcGlsZXI6OmNhbGxB
bmRVbmJveFJlc3VsdCk6CisgICAgICAgICogd2FzbS9XQVNNRnVuY3Rpb25TeW50YXhDaGVja2Vy
Lmg6CisgICAgICAgIChKU0M6OldBU01GdW5jdGlvblN5bnRheENoZWNrZXI6OnVwZGF0ZVRlbXBT
dGFja0hlaWdodEZvckNhbGwpOgorCiAyMDE2LTA3LTA3ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNv
cmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAgcGFkU3RhcnQvcGFkRW5kIHdpdGggSW5maW5pdHkg
cHJvZHVjZXMgdW5leHBlY3RlZCByZXN1bHQKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcAkocmV2aXNpb24gMjAyOTU0
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtOTQ3LDcgKzk0Nyw3IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2Vu
ZXJhdGVJbXBsKEFjY2Vzc0dlbmUKIAogICAgICAgICBqaXQuc3RvcmUzMigKICAgICAgICAgICAg
IENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKHN0YXRlLmNhbGxTaXRlSW5kZXhGb3JFeGNlcHRp
b25IYW5kbGluZ09yT3JpZ2luYWwoKS5iaXRzKCkpLAotICAgICAgICAgICAgQ0NhbGxIZWxwZXJz
Ojp0YWdGb3Ioc3RhdGljX2Nhc3Q8VmlydHVhbFJlZ2lzdGVyPihKU1N0YWNrOjpBcmd1bWVudENv
dW50KSkpOworICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjp0YWdGb3Ioc3RhdGljX2Nhc3Q8Vmly
dHVhbFJlZ2lzdGVyPihDYWxsRnJhbWVIZWFkZXI6OkFyZ3VtZW50Q291bnQpKSk7CiAKICAgICAg
ICAgaWYgKG1fdHlwZSA9PSBHZXR0ZXIgfHwgbV90eXBlID09IFNldHRlcikgewogICAgICAgICAg
ICAgLy8gQ3JlYXRlIGEgSlMgY2FsbCB1c2luZyBhIEpTIGNhbGwgaW5saW5lIGNhY2hlLiBBc3N1
bWUgdGhhdDoKQEAgLTEwMDIsNyArMTAwMiw3IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVJ
bXBsKEFjY2Vzc0dlbmUKICAgICAgICAgICAgIENDYWxsSGVscGVyczo6SnVtcCByZXR1cm5VbmRl
ZmluZWQgPSBqaXQuYnJhbmNoVGVzdFB0cigKICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6
Olplcm8sIGxvYWRlZFZhbHVlR1BSKTsKIAotICAgICAgICAgICAgdW5zaWduZWQgbnVtYmVyT2ZS
ZWdzRm9yQ2FsbCA9IEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlclNpemUgKyBudW1iZXJPZlBhcmFt
ZXRlcnM7CisgICAgICAgICAgICB1bnNpZ25lZCBudW1iZXJPZlJlZ3NGb3JDYWxsID0gQ2FsbEZy
YW1lSGVhZGVyOjpTaXplICsgbnVtYmVyT2ZQYXJhbWV0ZXJzOwogCiAgICAgICAgICAgICB1bnNp
Z25lZCBudW1iZXJPZkJ5dGVzRm9yQ2FsbCA9CiAgICAgICAgICAgICAgICAgbnVtYmVyT2ZSZWdz
Rm9yQ2FsbCAqIHNpemVvZihSZWdpc3RlcikgLSBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQyk7CkBA
IC0xMDIwLDEwICsxMDIwLDEwIEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKEFjY2Vz
c0dlbmUKIAogICAgICAgICAgICAgaml0LnN0b3JlMzIoCiAgICAgICAgICAgICAgICAgQ0NhbGxI
ZWxwZXJzOjpUcnVzdGVkSW1tMzIobnVtYmVyT2ZQYXJhbWV0ZXJzKSwKLSAgICAgICAgICAgICAg
ICBjYWxsZWVGcmFtZS53aXRoT2Zmc2V0KEpTU3RhY2s6OkFyZ3VtZW50Q291bnQgKiBzaXplb2Yo
UmVnaXN0ZXIpICsgUGF5bG9hZE9mZnNldCkpOworICAgICAgICAgICAgICAgIGNhbGxlZUZyYW1l
LndpdGhPZmZzZXQoQ2FsbEZyYW1lSGVhZGVyOjpBcmd1bWVudENvdW50ICogc2l6ZW9mKFJlZ2lz
dGVyKSArIFBheWxvYWRPZmZzZXQpKTsKIAogICAgICAgICAgICAgaml0LnN0b3JlQ2VsbCgKLSAg
ICAgICAgICAgICAgICBsb2FkZWRWYWx1ZUdQUiwgY2FsbGVlRnJhbWUud2l0aE9mZnNldChKU1N0
YWNrOjpDYWxsZWUgKiBzaXplb2YoUmVnaXN0ZXIpKSk7CisgICAgICAgICAgICAgICAgbG9hZGVk
VmFsdWVHUFIsIGNhbGxlZUZyYW1lLndpdGhPZmZzZXQoQ2FsbEZyYW1lSGVhZGVyOjpDYWxsZWUg
KiBzaXplb2YoUmVnaXN0ZXIpKSk7CiAKICAgICAgICAgICAgIGppdC5zdG9yZUNlbGwoCiAgICAg
ICAgICAgICAgICAgYmFzZUZvckdldEdQUiwKQEAgLTEyNjAsNyArMTI2MCw3IEBAIHZvaWQgQWNj
ZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKEFjY2Vzc0dlbmUKICAgICAgICAgICAgICAgICBqaXQuc3Rv
cmUzMigKICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoCiAg
ICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZS5jYWxsU2l0ZUluZGV4Rm9yRXhjZXB0aW9uSGFu
ZGxpbmdPck9yaWdpbmFsKCkuYml0cygpKSwKLSAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxw
ZXJzOjp0YWdGb3Ioc3RhdGljX2Nhc3Q8VmlydHVhbFJlZ2lzdGVyPihKU1N0YWNrOjpBcmd1bWVu
dENvdW50KSkpOworICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OnRhZ0ZvcihzdGF0
aWNfY2FzdDxWaXJ0dWFsUmVnaXN0ZXI+KENhbGxGcmFtZUhlYWRlcjo6QXJndW1lbnRDb3VudCkp
KTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBqaXQubWFrZVNwYWNlT25TdGFj
a0ZvckNDYWxsKCk7CiAgICAgICAgICAgICAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvVmlydHVhbFJlZ2lzdGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1ZpcnR1YWxSZWdpc3Rlci5oCShyZXZpc2lvbiAyMDI5NTQpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmlydHVhbFJlZ2lzdGVyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDE1
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSwg
MjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1Zh
bGlkKCkgY29uc3QgeyByZXR1cm4gKG1fdmlydHVhbFJlZ2lzdGVyICE9IHNfaW52YWxpZFZpcnR1
YWxSZWdpc3Rlcik7IH0KICAgICBib29sIGlzTG9jYWwoKSBjb25zdCB7IHJldHVybiBvcGVyYW5k
SXNMb2NhbChtX3ZpcnR1YWxSZWdpc3Rlcik7IH0KICAgICBib29sIGlzQXJndW1lbnQoKSBjb25z
dCB7IHJldHVybiBvcGVyYW5kSXNBcmd1bWVudChtX3ZpcnR1YWxSZWdpc3Rlcik7IH0KLSAgICBi
b29sIGlzSGVhZGVyKCkgY29uc3QgeyByZXR1cm4gbV92aXJ0dWFsUmVnaXN0ZXIgPj0gMCAmJiBt
X3ZpcnR1YWxSZWdpc3RlciA8IEpTU3RhY2s6OlRoaXNBcmd1bWVudDsgfQorICAgIGJvb2wgaXNI
ZWFkZXIoKSBjb25zdCB7IHJldHVybiBtX3ZpcnR1YWxSZWdpc3RlciA+PSAwICYmIG1fdmlydHVh
bFJlZ2lzdGVyIDwgQ2FsbEZyYW1lSGVhZGVyOjpUaGlzQXJndW1lbnQ7IH0KICAgICBib29sIGlz
Q29uc3RhbnQoKSBjb25zdCB7IHJldHVybiBtX3ZpcnR1YWxSZWdpc3RlciA+PSBzX2ZpcnN0Q29u
c3RhbnRSZWdpc3RlckluZGV4OyB9CiAgICAgaW50IHRvTG9jYWwoKSBjb25zdCB7IEFTU0VSVChp
c0xvY2FsKCkpOyByZXR1cm4gb3BlcmFuZFRvTG9jYWwobV92aXJ0dWFsUmVnaXN0ZXIpOyB9CiAg
ICAgaW50IHRvQXJndW1lbnQoKSBjb25zdCB7IEFTU0VSVChpc0FyZ3VtZW50KCkpOyByZXR1cm4g
b3BlcmFuZFRvQXJndW1lbnQobV92aXJ0dWFsUmVnaXN0ZXIpOyB9CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmNwcAkocmV2aXNpb24gMjAyOTU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwNiw3ICszMDYs
NyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mCiAKICAgICBhbGxv
Y2F0ZUFuZEVtaXRTY29wZSgpOwogCi0gICAgbV9jYWxsZWVSZWdpc3Rlci5zZXRJbmRleChKU1N0
YWNrOjpDYWxsZWUpOworICAgIG1fY2FsbGVlUmVnaXN0ZXIuc2V0SW5kZXgoQ2FsbEZyYW1lSGVh
ZGVyOjpDYWxsZWUpOwogCiAgICAgaW5pdGlhbGl6ZVBhcmFtZXRlcnMocGFyYW1ldGVycyk7CiAg
ICAgQVNTRVJUKCEoaXNTaW1wbGVQYXJhbWV0ZXJMaXN0ICYmIG1fcmVzdFBhcmFtZXRlcikpOwpA
QCAtNzQyLDcgKzc0Miw3IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihW
TSYKIAogICAgIGFsbG9jYXRlQW5kRW1pdFNjb3BlKCk7CiAKLSAgICBtX2NhbGxlZVJlZ2lzdGVy
LnNldEluZGV4KEpTU3RhY2s6OkNhbGxlZSk7CisgICAgbV9jYWxsZWVSZWdpc3Rlci5zZXRJbmRl
eChDYWxsRnJhbWVIZWFkZXI6OkNhbGxlZSk7CiAKICAgICBtX2NvZGVCbG9jay0+c2V0TnVtUGFy
YW1ldGVycygxKTsgLy8gQWxsb2NhdGUgc3BhY2UgZm9yICJ0aGlzIgogCkBAIC0zMTMwLDggKzMx
MzAsOCBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENhbGwoCiAgICAgfQog
ICAgIAogICAgIC8vIFJlc2VydmUgc3BhY2UgZm9yIGNhbGwgZnJhbWUuCi0gICAgVmVjdG9yPFJl
ZlB0cjxSZWdpc3RlcklEPiwgSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyU2l6ZSwgVW5zYWZlVmVj
dG9yT3ZlcmZsb3c+IGNhbGxGcmFtZTsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IEpTU3RhY2s6
OkNhbGxGcmFtZUhlYWRlclNpemU7ICsraSkKKyAgICBWZWN0b3I8UmVmUHRyPFJlZ2lzdGVySUQ+
LCBDYWxsRnJhbWVIZWFkZXI6OlNpemUsIFVuc2FmZVZlY3Rvck92ZXJmbG93PiBjYWxsRnJhbWU7
CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBDYWxsRnJhbWVIZWFkZXI6OlNpemU7ICsraSkKICAg
ICAgICAgY2FsbEZyYW1lLmFwcGVuZChuZXdUZW1wb3JhcnkoKSk7CiAKICAgICBlbWl0RXhwcmVz
c2lvbkluZm8oZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kKTsKQEAgLTMzMTUsOCArMzMxNSw4
IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q29uc3QKICAgICB9CiAKICAg
ICAvLyBSZXNlcnZlIHNwYWNlIGZvciBjYWxsIGZyYW1lLgotICAgIFZlY3RvcjxSZWZQdHI8UmVn
aXN0ZXJJRD4sIEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlclNpemUsIFVuc2FmZVZlY3Rvck92ZXJm
bG93PiBjYWxsRnJhbWU7Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBKU1N0YWNrOjpDYWxsRnJh
bWVIZWFkZXJTaXplOyArK2kpCisgICAgVmVjdG9yPFJlZlB0cjxSZWdpc3RlcklEPiwgQ2FsbEZy
YW1lSGVhZGVyOjpTaXplLCBVbnNhZmVWZWN0b3JPdmVyZmxvdz4gY2FsbEZyYW1lOworICAgIGZv
ciAoaW50IGkgPSAwOyBpIDwgQ2FsbEZyYW1lSGVhZGVyOjpTaXplOyArK2kpCiAgICAgICAgIGNh
bGxGcmFtZS5hcHBlbmQobmV3VGVtcG9yYXJ5KCkpOwogCiAgICAgZW1pdEV4cHJlc3Npb25JbmZv
KGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCShyZXZpc2lv
biAyMDI5NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTczLDcgKzczLDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAKICAgICAgICAgUmVnaXN0ZXJJRCogdGhpc1JlZ2lzdGVyKCkgeyByZXR1cm4gbV9hcmd2
WzBdLmdldCgpOyB9CiAgICAgICAgIFJlZ2lzdGVySUQqIGFyZ3VtZW50UmVnaXN0ZXIodW5zaWdu
ZWQgaSkgeyByZXR1cm4gbV9hcmd2W2kgKyAxXS5nZXQoKTsgfQotICAgICAgICB1bnNpZ25lZCBz
dGFja09mZnNldCgpIHsgcmV0dXJuIC1tX2FyZ3ZbMF0tPmluZGV4KCkgKyBKU1N0YWNrOjpDYWxs
RnJhbWVIZWFkZXJTaXplOyB9CisgICAgICAgIHVuc2lnbmVkIHN0YWNrT2Zmc2V0KCkgeyByZXR1
cm4gLW1fYXJndlswXS0+aW5kZXgoKSArIENhbGxGcmFtZUhlYWRlcjo6U2l6ZTsgfQogICAgICAg
ICB1bnNpZ25lZCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygpIHsgcmV0dXJuIG1fYXJndi5z
aXplKCkgLSBtX3BhZGRpbmc7IH0KICAgICAgICAgQXJndW1lbnRzTm9kZSogYXJndW1lbnRzTm9k
ZSgpIHsgcmV0dXJuIG1fYXJndW1lbnRzTm9kZTsgfQogCkBAIC04MDksNyArODA5LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBpZiAocmVnLmlzTG9jYWwoKSkKICAgICAgICAgICAg
ICAgICByZXR1cm4gbV9jYWxsZWVMb2NhbHNbcmVnLnRvTG9jYWwoKV07CiAKLSAgICAgICAgICAg
IGlmIChyZWcub2Zmc2V0KCkgPT0gSlNTdGFjazo6Q2FsbGVlKQorICAgICAgICAgICAgaWYgKHJl
Zy5vZmZzZXQoKSA9PSBDYWxsRnJhbWVIZWFkZXI6OkNhbGxlZSkKICAgICAgICAgICAgICAgICBy
ZXR1cm4gbV9jYWxsZWVSZWdpc3RlcjsKIAogICAgICAgICAgICAgQVNTRVJUKG1fcGFyYW1ldGVy
cy5zaXplKCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rl
c0NvZGVnZW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAkocmV2aXNpb24gMjAyOTU0KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xNjUsNyArMTY1LDcgQEAgc3RhdGljIFJlZ2lzdGVySUQqIGVtaXRIb21lT2JqZWN0Rm9yQ2Fs
bAogICAgIH0KIAogICAgIFJlZ2lzdGVySUQgY2FsbGVlOwotICAgIGNhbGxlZS5zZXRJbmRleChK
U1N0YWNrOjpDYWxsZWUpOworICAgIGNhbGxlZS5zZXRJbmRleChDYWxsRnJhbWVIZWFkZXI6OkNh
bGxlZSk7CiAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0R2V0QnlJZChnZW5lcmF0b3IubmV3VGVt
cG9yYXJ5KCksICZjYWxsZWUsIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVz
KCkuaG9tZU9iamVjdFByaXZhdGVOYW1lKCkpOwogfQogCkBAIC0xODEsNyArMTgxLDcgQEAgc3Rh
dGljIFJlZ2lzdGVySUQqIGVtaXRHZXRTdXBlckZ1bmN0aW9uRgogICAgICAgICByZXR1cm4gZ2Vu
ZXJhdG9yLmVtaXRHZXRCeUlkKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgZ2VuZXJhdG9yLmVt
aXRMb2FkRGVyaXZlZENvbnN0cnVjdG9yRnJvbUFycm93RnVuY3Rpb25MZXhpY2FsRW52aXJvbm1l
bnQoKSwgZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS51bmRlcnNjb3JlUHJvdG8pOwogCiAgICAg
UmVnaXN0ZXJJRCBjYWxsZWU7Ci0gICAgY2FsbGVlLnNldEluZGV4KEpTU3RhY2s6OkNhbGxlZSk7
CisgICAgY2FsbGVlLnNldEluZGV4KENhbGxGcmFtZUhlYWRlcjo6Q2FsbGVlKTsKICAgICByZXR1
cm4gZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgJmNhbGxl
ZSwgZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS51bmRlcnNjb3JlUHJvdG8pOwogfQogCkBAIC03
MjQsNyArNzI0LDcgQEAgQ2FsbEFyZ3VtZW50czo6Q2FsbEFyZ3VtZW50cyhCeXRlY29kZUdlbgog
ICAgIH0KIAogICAgIC8vIFdlIG5lZWQgdG8gZW5zdXJlIHRoYXQgdGhlIGZyYW1lIHNpemUgaXMg
c3RhY2stYWxpZ25lZAotICAgIHdoaWxlICgoSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyU2l6ZSAr
IG1fYXJndi5zaXplKCkpICUgc3RhY2tBbGlnbm1lbnRSZWdpc3RlcnMoKSkgeworICAgIHdoaWxl
ICgoQ2FsbEZyYW1lSGVhZGVyOjpTaXplICsgbV9hcmd2LnNpemUoKSkgJSBzdGFja0FsaWdubWVu
dFJlZ2lzdGVycygpKSB7CiAgICAgICAgIG1fYXJndi5pbnNlcnQoMCwgZ2VuZXJhdG9yLm5ld1Rl
bXBvcmFyeSgpKTsKICAgICAgICAgbV9wYWRkaW5nKys7CiAgICAgfQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9u
UGhhc2UuY3BwCShyZXZpc2lvbiAyMDI5NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMDMs
MTIgKzMwMywxMiBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICBpZiAoSW5saW5lQ2Fs
bEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUgPSBjYW5kaWRhdGUtPm9yaWdpbi5zZW1hbnRpYy5pbmxp
bmVDYWxsRnJhbWUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbmxpbmVDYWxsRnJh
bWUtPmlzVmFyYXJncygpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNDbG9iYmVy
ZWRCeUJsb2NrIHw9IGNsb2JiZXJlZEJ5VGhpc0Jsb2NrLm9wZXJhbmQoCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyBKU1N0YWNr
OjpBcmd1bWVudENvdW50KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5saW5l
Q2FsbEZyYW1lLT5zdGFja09mZnNldCArIENhbGxGcmFtZUhlYWRlcjo6QXJndW1lbnRDb3VudCk7
CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAKICAg
ICAgICAgICAgICAgICAgICAgICAgIGlmICghaXNDbG9iYmVyZWRCeUJsb2NrIHx8IGlubGluZUNh
bGxGcmFtZS0+aXNDbG9zdXJlQ2FsbCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlz
Q2xvYmJlcmVkQnlCbG9jayB8PSBjbG9iYmVyZWRCeVRoaXNCbG9jay5vcGVyYW5kKAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsg
SlNTdGFjazo6Q2FsbGVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5saW5l
Q2FsbEZyYW1lLT5zdGFja09mZnNldCArIENhbGxGcmFtZUhlYWRlcjo6Q2FsbGVlKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKCFpc0Nsb2JiZXJlZEJ5QmxvY2spIHsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRzVXRpbGl0aWVzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c1V0aWxpdGllcy5jcHAJKHJl
dmlzaW9uIDIwMjk1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRz
VXRpbGl0aWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsMTEgKzM4LDExIEBAIGJvb2wgYXJn
dW1lbnRzSW52b2x2ZVN0YWNrU2xvdChJbmxpbmVDYWwKICAgICAgICAgcmV0dXJuIChyZWcuaXNB
cmd1bWVudCgpICYmIHJlZy50b0FyZ3VtZW50KCkpIHx8IHJlZy5pc0hlYWRlcigpOwogICAgIAog
ICAgIGlmIChpbmxpbmVDYWxsRnJhbWUtPmlzQ2xvc3VyZUNhbGwKLSAgICAgICAgJiYgcmVnID09
IFZpcnR1YWxSZWdpc3RlcihpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgSlNTdGFjazo6
Q2FsbGVlKSkKKyAgICAgICAgJiYgcmVnID09IFZpcnR1YWxSZWdpc3RlcihpbmxpbmVDYWxsRnJh
bWUtPnN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lSGVhZGVyOjpDYWxsZWUpKQogICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICAKICAgICBpZiAoaW5saW5lQ2FsbEZyYW1lLT5pc1ZhcmFyZ3MoKQotICAg
ICAgICAmJiByZWcgPT0gVmlydHVhbFJlZ2lzdGVyKGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZz
ZXQgKyBKU1N0YWNrOjpBcmd1bWVudENvdW50KSkKKyAgICAgICAgJiYgcmVnID09IFZpcnR1YWxS
ZWdpc3RlcihpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lSGVhZGVyOjpB
cmd1bWVudENvdW50KSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgCiAgICAgdW5zaWduZWQg
bnVtQXJndW1lbnRzID0gaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgpIC0gMTsKQEAg
LTc4LDcgKzc4LDcgQEAgTm9kZSogZW1pdENvZGVUb0dldEFyZ3VtZW50c0FycmF5TGVuZ3RoKAog
ICAgIGlmICghaW5saW5lQ2FsbEZyYW1lKQogICAgICAgICBhcmd1bWVudENvdW50ID0gaW5zZXJ0
aW9uU2V0Lmluc2VydE5vZGUobm9kZUluZGV4LCBTcGVjSW50MzJPbmx5LCBHZXRBcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcywgb3JpZ2luKTsKICAgICBlbHNlIHsKLSAgICAgICAgVmlydHVhbFJl
Z2lzdGVyIGFyZ3VtZW50Q291bnRSZWdpc3RlcihpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0
ICsgSlNTdGFjazo6QXJndW1lbnRDb3VudCk7CisgICAgICAgIFZpcnR1YWxSZWdpc3RlciBhcmd1
bWVudENvdW50UmVnaXN0ZXIoaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCArIENhbGxGcmFt
ZUhlYWRlcjo6QXJndW1lbnRDb3VudCk7CiAgICAgICAgIAogICAgICAgICBhcmd1bWVudENvdW50
ID0gaW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCiAgICAgICAgICAgICBub2RlSW5kZXgsIFNwZWNJ
bnQzMk9ubHksIEdldFN0YWNrLCBvcmlnaW4sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkocmV2aXNpb24gMjAyOTU0KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTMzMSwxMCArMzMxLDEwIEBAIHByaXZhdGU6CiAgICAgICAgIGlmIChpbmxpbmVDYWxs
RnJhbWUoKSkgewogICAgICAgICAgICAgaWYgKCFpbmxpbmVDYWxsRnJhbWUoKS0+aXNDbG9zdXJl
Q2FsbCkgewogICAgICAgICAgICAgICAgIEpTRnVuY3Rpb24qIGNhbGxlZSA9IGlubGluZUNhbGxG
cmFtZSgpLT5jYWxsZWVDb25zdGFudCgpOwotICAgICAgICAgICAgICAgIGlmIChvcGVyYW5kLm9m
ZnNldCgpID09IEpTU3RhY2s6OkNhbGxlZSkKKyAgICAgICAgICAgICAgICBpZiAob3BlcmFuZC5v
ZmZzZXQoKSA9PSBDYWxsRnJhbWVIZWFkZXI6OkNhbGxlZSkKICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHdlYWtKU0NvbnN0YW50KGNhbGxlZSk7CiAgICAgICAgICAgICB9Ci0gICAgICAgIH0g
ZWxzZSBpZiAob3BlcmFuZC5vZmZzZXQoKSA9PSBKU1N0YWNrOjpDYWxsZWUpIHsKKyAgICAgICAg
fSBlbHNlIGlmIChvcGVyYW5kLm9mZnNldCgpID09IENhbGxGcmFtZUhlYWRlcjo6Q2FsbGVlKSB7
CiAgICAgICAgICAgICAvLyBXZSBoYXZlIHRvIGRvIHNvbWUgY29uc3RhbnQtZm9sZGluZyBoZXJl
IGJlY2F1c2UgdGhpcyBlbmFibGVzIENyZWF0ZVRoaXMgZm9sZGluZy4gTm90ZQogICAgICAgICAg
ICAgLy8gdGhhdCB3ZSBkb24ndCBoYXZlIHN1Y2ggd2F0Y2hwb2ludC1iYXNlZCBmb2xkaW5nIGZv
ciBpbmxpbmVkIHVzZXMgb2YgQ2FsbGVlLCBzaW5jZSBpbiB0aGF0CiAgICAgICAgICAgICAvLyBj
YXNlIGlmIHRoZSBmdW5jdGlvbiBpcyBhIHNpbmdsZXRvbiB0aGVuIHdlIGFscmVhZHkga25vdyBp
dC4KQEAgLTU0Miw3ICs1NDIsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgSW5saW5lQ2FsbEZy
YW1lKiBpbmxpbmVDYWxsRnJhbWUgPSBzdGFjay0+bV9pbmxpbmVDYWxsRnJhbWU7CiAgICAgICAg
ICAgICBpZiAoIWlubGluZUNhbGxGcmFtZSkKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgIGlmIChvcGVyYW5kLm9mZnNldCgpIDwgc3RhdGljX2Nhc3Q8aW50PihpbmxpbmVDYWxs
RnJhbWUtPnN0YWNrT2Zmc2V0ICsgSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyU2l6ZSkpCisgICAg
ICAgICAgICBpZiAob3BlcmFuZC5vZmZzZXQoKSA8IHN0YXRpY19jYXN0PGludD4oaW5saW5lQ2Fs
bEZyYW1lLT5zdGFja09mZnNldCArIENhbGxGcmFtZUhlYWRlcjo6U2l6ZSkpCiAgICAgICAgICAg
ICAgICAgY29udGludWU7CiAgICAgICAgICAgICBpZiAob3BlcmFuZC5vZmZzZXQoKSA9PSBpbmxp
bmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lOjp0aGlzQXJndW1lbnRPZmZzZXQo
KSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTU5Nyw5ICs1OTcsOSBAQCBwcml2YXRl
OgogICAgICAgICAgICAgQVNTRVJUKCFtX2hhc0RlYnVnZ2VyRW5hYmxlZCk7CiAgICAgICAgICAg
ICBudW1Bcmd1bWVudHMgPSBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5zaXplKCk7CiAgICAg
ICAgICAgICBpZiAoaW5saW5lQ2FsbEZyYW1lLT5pc0Nsb3N1cmVDYWxsKQotICAgICAgICAgICAg
ICAgIGZsdXNoRGlyZWN0KGlubGluZVN0YWNrRW50cnktPnJlbWFwT3BlcmFuZChWaXJ0dWFsUmVn
aXN0ZXIoSlNTdGFjazo6Q2FsbGVlKSkpOworICAgICAgICAgICAgICAgIGZsdXNoRGlyZWN0KGlu
bGluZVN0YWNrRW50cnktPnJlbWFwT3BlcmFuZChWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lSGVh
ZGVyOjpDYWxsZWUpKSk7CiAgICAgICAgICAgICBpZiAoaW5saW5lQ2FsbEZyYW1lLT5pc1ZhcmFy
Z3MoKSkKLSAgICAgICAgICAgICAgICBmbHVzaERpcmVjdChpbmxpbmVTdGFja0VudHJ5LT5yZW1h
cE9wZXJhbmQoVmlydHVhbFJlZ2lzdGVyKEpTU3RhY2s6OkFyZ3VtZW50Q291bnQpKSk7CisgICAg
ICAgICAgICAgICAgZmx1c2hEaXJlY3QoaW5saW5lU3RhY2tFbnRyeS0+cmVtYXBPcGVyYW5kKFZp
cnR1YWxSZWdpc3RlcihDYWxsRnJhbWVIZWFkZXI6OkFyZ3VtZW50Q291bnQpKSk7CiAgICAgICAg
IH0gZWxzZQogICAgICAgICAgICAgbnVtQXJndW1lbnRzID0gaW5saW5lU3RhY2tFbnRyeS0+bV9j
b2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBhcmd1bWVu
dCA9IG51bUFyZ3VtZW50czsgYXJndW1lbnQtLSA+IDE7KQpAQCAtNzY2LDkgKzc2Niw5IEBAIHBy
aXZhdGU6CiAgICAgICAgIE9wSW5mbyBwcmVkaWN0aW9uKQogICAgIHsKICAgICAgICAgYWRkVmFy
QXJnQ2hpbGQoY2FsbGVlKTsKLSAgICAgICAgc2l6ZV90IGZyYW1lU2l6ZSA9IEpTU3RhY2s6OkNh
bGxGcmFtZUhlYWRlclNpemUgKyBhcmdDb3VudDsKKyAgICAgICAgc2l6ZV90IGZyYW1lU2l6ZSA9
IENhbGxGcmFtZUhlYWRlcjo6U2l6ZSArIGFyZ0NvdW50OwogICAgICAgICBzaXplX3QgYWxpZ25l
ZEZyYW1lU2l6ZSA9IFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZihzdGFja0FsaWdubWVudFJlZ2lz
dGVycygpLCBmcmFtZVNpemUpOwotICAgICAgICBzaXplX3QgcGFyYW1ldGVyU2xvdHMgPSBhbGln
bmVkRnJhbWVTaXplIC0gSlNTdGFjazo6Q2FsbGVyRnJhbWVBbmRQQ1NpemU7CisgICAgICAgIHNp
emVfdCBwYXJhbWV0ZXJTbG90cyA9IGFsaWduZWRGcmFtZVNpemUgLSBDYWxsRnJhbWVIZWFkZXI6
OkNhbGxlckZyYW1lQW5kUENTaXplOwogCiAgICAgICAgIGlmIChwYXJhbWV0ZXJTbG90cyA+IG1f
cGFyYW1ldGVyU2xvdHMpCiAgICAgICAgICAgICBtX3BhcmFtZXRlclNsb3RzID0gcGFyYW1ldGVy
U2xvdHM7CkBAIC0xMzM3LDcgKzEzMzcsNyBAQCBOb2RlKiBCeXRlQ29kZVBhcnNlcjo6Z2V0QXJn
dW1lbnRDb3VudCgpCiAgICAgTm9kZSogYXJndW1lbnRDb3VudDsKICAgICBpZiAobV9pbmxpbmVT
dGFja1RvcC0+bV9pbmxpbmVDYWxsRnJhbWUpIHsKICAgICAgICAgaWYgKG1faW5saW5lU3RhY2tU
b3AtPm1faW5saW5lQ2FsbEZyYW1lLT5pc1ZhcmFyZ3MoKSkKLSAgICAgICAgICAgIGFyZ3VtZW50
Q291bnQgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKEpTU3RhY2s6OkFyZ3VtZW50Q291bnQpKTsKKyAg
ICAgICAgICAgIGFyZ3VtZW50Q291bnQgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKENhbGxGcmFtZUhl
YWRlcjo6QXJndW1lbnRDb3VudCkpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBhcmd1bWVu
dENvdW50ID0ganNDb25zdGFudChtX2dyYXBoLmZyZWV6ZShqc051bWJlcihtX2lubGluZVN0YWNr
VG9wLT5tX2lubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKSkpLT52YWx1ZSgpKTsKICAg
ICB9IGVsc2UKQEAgLTE0NzIsMTEgKzE0NzIsMTEgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aW5s
aW5lQ2FsbChOb2RlKiBjYQogCiAgICAgLy8gRklYTUU6IERvbid0IGZsdXNoIGNvbnN0YW50cyEK
ICAgICAKLSAgICBpbnQgaW5saW5lQ2FsbEZyYW1lU3RhcnQgPSBtX2lubGluZVN0YWNrVG9wLT5y
ZW1hcE9wZXJhbmQoVmlydHVhbFJlZ2lzdGVyKHJlZ2lzdGVyT2Zmc2V0KSkub2Zmc2V0KCkgKyBK
U1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJTaXplOworICAgIGludCBpbmxpbmVDYWxsRnJhbWVTdGFy
dCA9IG1faW5saW5lU3RhY2tUb3AtPnJlbWFwT3BlcmFuZChWaXJ0dWFsUmVnaXN0ZXIocmVnaXN0
ZXJPZmZzZXQpKS5vZmZzZXQoKSArIENhbGxGcmFtZUhlYWRlcjo6U2l6ZTsKICAgICAKICAgICBl
bnN1cmVMb2NhbHMoCiAgICAgICAgIFZpcnR1YWxSZWdpc3RlcihpbmxpbmVDYWxsRnJhbWVTdGFy
dCkudG9Mb2NhbCgpICsgMSArCi0gICAgICAgIEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlclNpemUg
KyBjb2RlQmxvY2stPm1fbnVtQ2FsbGVlTG9jYWxzKTsKKyAgICAgICAgQ2FsbEZyYW1lSGVhZGVy
OjpTaXplICsgY29kZUJsb2NrLT5tX251bUNhbGxlZUxvY2Fscyk7CiAgICAgCiAgICAgc2l6ZV90
IGFyZ3VtZW50UG9zaXRpb25TdGFydCA9IG1fZ3JhcGgubV9hcmd1bWVudFBvc2l0aW9ucy5zaXpl
KCk7CiAKQEAgLTE0ODcsNyArMTQ4Nyw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmlubGluZUNh
bGwoTm9kZSogY2EKICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIGNhbGxlZVZhcmlhYmxlID0gbnVs
bHB0cjsKICAgICBpZiAoY2FsbGVlLmlzQ2xvc3VyZUNhbGwoKSkgewogICAgICAgICBOb2RlKiBj
YWxsZWVTZXQgPSBzZXQoCi0gICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIocmVnaXN0ZXJPZmZz
ZXQgKyBKU1N0YWNrOjpDYWxsZWUpLCBjYWxsVGFyZ2V0Tm9kZSwgSW1tZWRpYXRlTmFrZWRTZXQp
OworICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyKHJlZ2lzdGVyT2Zmc2V0ICsgQ2FsbEZyYW1l
SGVhZGVyOjpDYWxsZWUpLCBjYWxsVGFyZ2V0Tm9kZSwgSW1tZWRpYXRlTmFrZWRTZXQpOwogICAg
ICAgICAKICAgICAgICAgY2FsbGVlVmFyaWFibGUgPSBjYWxsZWVTZXQtPnZhcmlhYmxlQWNjZXNz
RGF0YSgpOwogICAgICAgICBjYWxsZWVWYXJpYWJsZS0+bWVyZ2VTaG91bGROZXZlclVuYm94KHRy
dWUpOwpAQCAtMTc0Niw3ICsxNzQ2LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5s
aW5pbmcoCiAgICAgICAgICAgICAKICAgICAgICAgICAgIHJlZ2lzdGVyT2Zmc2V0ID0gcmVnaXN0
ZXJPZmZzZXRPckZpcnN0RnJlZVJlZyArIDE7CiAgICAgICAgICAgICByZWdpc3Rlck9mZnNldCAt
PSBtYXhOdW1Bcmd1bWVudHM7IC8vIGluY2x1ZGVzICJ0aGlzIgotICAgICAgICAgICAgcmVnaXN0
ZXJPZmZzZXQgLT0gSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyU2l6ZTsKKyAgICAgICAgICAgIHJl
Z2lzdGVyT2Zmc2V0IC09IENhbGxGcmFtZUhlYWRlcjo6U2l6ZTsKICAgICAgICAgICAgIHJlZ2lz
dGVyT2Zmc2V0ID0gLVdURjo6cm91bmRVcFRvTXVsdGlwbGVPZigKICAgICAgICAgICAgICAgICBz
dGFja0FsaWdubWVudFJlZ2lzdGVycygpLAogICAgICAgICAgICAgICAgIC1yZWdpc3Rlck9mZnNl
dCk7CkBAIC0xNzY2LDEzICsxNzY2LDEzIEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlu
bGluaW5nKAogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgZW5zdXJl
TG9jYWxzKFZpcnR1YWxSZWdpc3RlcihyZW1hcHBlZFJlZ2lzdGVyT2Zmc2V0KS50b0xvY2FsKCkp
OwogICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgaW50IGFyZ3VtZW50
U3RhcnQgPSByZWdpc3Rlck9mZnNldCArIEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlclNpemU7Cisg
ICAgICAgICAgICAgICAgICAgIGludCBhcmd1bWVudFN0YXJ0ID0gcmVnaXN0ZXJPZmZzZXQgKyBD
YWxsRnJhbWVIZWFkZXI6OlNpemU7CiAgICAgICAgICAgICAgICAgICAgIGludCByZW1hcHBlZEFy
Z3VtZW50U3RhcnQgPQogICAgICAgICAgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+
cmVtYXBPcGVyYW5kKFZpcnR1YWxSZWdpc3Rlcihhcmd1bWVudFN0YXJ0KSkub2Zmc2V0KCk7CiAK
ICAgICAgICAgICAgICAgICAgICAgTG9hZFZhcmFyZ3NEYXRhKiBkYXRhID0gbV9ncmFwaC5tX2xv
YWRWYXJhcmdzRGF0YS5hZGQoKTsKICAgICAgICAgICAgICAgICAgICAgZGF0YS0+c3RhcnQgPSBW
aXJ0dWFsUmVnaXN0ZXIocmVtYXBwZWRBcmd1bWVudFN0YXJ0ICsgMSk7Ci0gICAgICAgICAgICAg
ICAgICAgIGRhdGEtPmNvdW50ID0gVmlydHVhbFJlZ2lzdGVyKHJlbWFwcGVkUmVnaXN0ZXJPZmZz
ZXQgKyBKU1N0YWNrOjpBcmd1bWVudENvdW50KTsKKyAgICAgICAgICAgICAgICAgICAgZGF0YS0+
Y291bnQgPSBWaXJ0dWFsUmVnaXN0ZXIocmVtYXBwZWRSZWdpc3Rlck9mZnNldCArIENhbGxGcmFt
ZUhlYWRlcjo6QXJndW1lbnRDb3VudCk7CiAgICAgICAgICAgICAgICAgICAgIGRhdGEtPm9mZnNl
dCA9IGFyZ3VtZW50c09mZnNldDsKICAgICAgICAgICAgICAgICAgICAgZGF0YS0+bGltaXQgPSBt
YXhOdW1Bcmd1bWVudHM7CiAgICAgICAgICAgICAgICAgICAgIGRhdGEtPm1hbmRhdG9yeU1pbmlt
dW0gPSBtYW5kYXRvcnlNaW5pbXVtOwpAQCAtMTc5Myw3ICsxNzkzLDcgQEAgYm9vbCBCeXRlQ29k
ZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcoCiAgICAgICAgICAgICAgICAgICAgIC8vIGJlZm9yZSBT
U0EuCiAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRh
KiBjb3VudFZhcmlhYmxlID0gbmV3VmFyaWFibGVBY2Nlc3NEYXRhKAotICAgICAgICAgICAgICAg
ICAgICAgICAgVmlydHVhbFJlZ2lzdGVyKHJlbWFwcGVkUmVnaXN0ZXJPZmZzZXQgKyBKU1N0YWNr
OjpBcmd1bWVudENvdW50KSk7CisgICAgICAgICAgICAgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0
ZXIocmVtYXBwZWRSZWdpc3Rlck9mZnNldCArIENhbGxGcmFtZUhlYWRlcjo6QXJndW1lbnRDb3Vu
dCkpOwogICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIHByZXR0eSBsYW1lLCBidXQgaXQg
d2lsbCBmb3JjZSB0aGUgY291bnQgdG8gYmUgZmx1c2hlZCBhcyBhbiBpbnQuIFRoaXMgZG9lc24n
dAogICAgICAgICAgICAgICAgICAgICAvLyBtYXR0ZXIgdmVyeSBtdWNoLCBzaW5jZSBvdXIgdXNl
IG9mIGEgU2V0QXJndW1lbnQgYW5kIEZsdXNoZXMgZm9yIHRoaXMgbG9jYWwgc2xvdCBpcwogICAg
ICAgICAgICAgICAgICAgICAvLyBtb3N0bHkganVzdCBhIGZvcm1hbGl0eS4KQEAgLTE5MDQsNyAr
MTkwNCw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKAogICAgIC8vIHll
dC4KICAgICBpZiAodmVyYm9zZSkKICAgICAgICAgZGF0YUxvZygiUmVnaXN0ZXIgb2Zmc2V0OiAi
LCByZWdpc3Rlck9mZnNldCk7Ci0gICAgVmlydHVhbFJlZ2lzdGVyIGNhbGxlZVJlZyhyZWdpc3Rl
ck9mZnNldCArIEpTU3RhY2s6OkNhbGxlZSk7CisgICAgVmlydHVhbFJlZ2lzdGVyIGNhbGxlZVJl
ZyhyZWdpc3Rlck9mZnNldCArIENhbGxGcmFtZUhlYWRlcjo6Q2FsbGVlKTsKICAgICBjYWxsZWVS
ZWcgPSBtX2lubGluZVN0YWNrVG9wLT5yZW1hcE9wZXJhbmQoY2FsbGVlUmVnKTsKICAgICBpZiAo
dmVyYm9zZSkKICAgICAgICAgZGF0YUxvZygiQ2FsbGVlIGlzIGdvaW5nIHRvIGJlICIsIGNhbGxl
ZVJlZywgIlxuIik7CkBAIC0zMjcxLDcgKzMyNzEsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpo
YW5kbGVHZXRCeUlkKAogICAgIGludCByZWdpc3Rlck9mZnNldCA9IHZpcnR1YWxSZWdpc3RlckZv
ckxvY2FsKAogICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPm1fbnVt
Q2FsbGVlTG9jYWxzIC0gMSkub2Zmc2V0KCk7CiAgICAgcmVnaXN0ZXJPZmZzZXQgLT0gbnVtYmVy
T2ZQYXJhbWV0ZXJzOwotICAgIHJlZ2lzdGVyT2Zmc2V0IC09IEpTU3RhY2s6OkNhbGxGcmFtZUhl
YWRlclNpemU7CisgICAgcmVnaXN0ZXJPZmZzZXQgLT0gQ2FsbEZyYW1lSGVhZGVyOjpTaXplOwog
ICAgIAogICAgIC8vIEdldCB0aGUgYWxpZ25tZW50IHJpZ2h0LgogICAgIHJlZ2lzdGVyT2Zmc2V0
ID0gLVdURjo6cm91bmRVcFRvTXVsdGlwbGVPZigKQEAgLTMyODgsNyArMzI4OCw3IEBAIHZvaWQg
Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUdldEJ5SWQoCiAgICAgLy8gICAgdGhlIGRyZWFkZWQgYXJn
dW1lbnRzIG9iamVjdCBvbiB0aGUgZ2V0dGVyLCB0aGUgcmlnaHQgdGhpbmdzIGhhcHBlbi4gV2Vs
bCwgc29ydCBvZiAtCiAgICAgLy8gICAgc2luY2Ugd2Ugb25seSByZWFsbHkgY2FyZSBhYm91dCAn
dGhpcycgaW4gdGhpcyBjYXNlLiBCdXQgd2UncmUgbm90IGdvaW5nIHRvIHRha2UgdGhhdAogICAg
IC8vICAgIHNob3J0Y3V0LgotICAgIGludCBuZXh0UmVnaXN0ZXIgPSByZWdpc3Rlck9mZnNldCAr
IEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlclNpemU7CisgICAgaW50IG5leHRSZWdpc3RlciA9IHJl
Z2lzdGVyT2Zmc2V0ICsgQ2FsbEZyYW1lSGVhZGVyOjpTaXplOwogICAgIHNldChWaXJ0dWFsUmVn
aXN0ZXIobmV4dFJlZ2lzdGVyKyspLCBiYXNlLCBJbW1lZGlhdGVOYWtlZFNldCk7CiAKICAgICAv
LyBXZSd2ZSBzZXQgc29tZSBsb2NhbHMsIGJ1dCB0aGV5IGFyZSBub3QgdXNlci12aXNpYmxlLiBJ
dCdzIHN0aWxsIE9LIHRvIGV4aXQgZnJvbSBoZXJlLgpAQCAtMzQ0MCw3ICszNDQwLDcgQEAgdm9p
ZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlUHV0QnlJZCgKICAgICAgICAgaW50IHJlZ2lzdGVyT2Zm
c2V0ID0gdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoCiAgICAgICAgICAgICBtX2lubGluZVN0YWNr
VG9wLT5tX3Byb2ZpbGVkQmxvY2stPm1fbnVtQ2FsbGVlTG9jYWxzIC0gMSkub2Zmc2V0KCk7CiAg
ICAgICAgIHJlZ2lzdGVyT2Zmc2V0IC09IG51bWJlck9mUGFyYW1ldGVyczsKLSAgICAgICAgcmVn
aXN0ZXJPZmZzZXQgLT0gSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyU2l6ZTsKKyAgICAgICAgcmVn
aXN0ZXJPZmZzZXQgLT0gQ2FsbEZyYW1lSGVhZGVyOjpTaXplOwogICAgIAogICAgICAgICAvLyBH
ZXQgdGhlIGFsaWdubWVudCByaWdodC4KICAgICAgICAgcmVnaXN0ZXJPZmZzZXQgPSAtV1RGOjpy
b3VuZFVwVG9NdWx0aXBsZU9mKApAQCAtMzQ1MSw3ICszNDUxLDcgQEAgdm9pZCBCeXRlQ29kZVBh
cnNlcjo6aGFuZGxlUHV0QnlJZCgKICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPnJlbWFw
T3BlcmFuZCgKICAgICAgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIocmVnaXN0ZXJPZmZzZXQp
KS50b0xvY2FsKCkpOwogICAgIAotICAgICAgICBpbnQgbmV4dFJlZ2lzdGVyID0gcmVnaXN0ZXJP
ZmZzZXQgKyBKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJTaXplOworICAgICAgICBpbnQgbmV4dFJl
Z2lzdGVyID0gcmVnaXN0ZXJPZmZzZXQgKyBDYWxsRnJhbWVIZWFkZXI6OlNpemU7CiAgICAgICAg
IHNldChWaXJ0dWFsUmVnaXN0ZXIobmV4dFJlZ2lzdGVyKyspLCBiYXNlLCBJbW1lZGlhdGVOYWtl
ZFNldCk7CiAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIobmV4dFJlZ2lzdGVyKyspLCB2YWx1
ZSwgSW1tZWRpYXRlTmFrZWRTZXQpOwogCkBAIC00OTcyLDcgKzQ5NzIsNyBAQCBib29sIEJ5dGVD
b2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgICAgICAvLyBvbmx5IGhlbHBz
IGZvciB0aGUgZmlyc3QgYmFzaWMgYmxvY2suIEl0J3MgZXh0cmVtZWx5IGltcG9ydGFudCBub3Qg
dG8gY29uc3RhbnQgZm9sZAogICAgICAgICAgICAgLy8gbG9hZHMgZnJvbSB0aGUgc2NvcGUgcmVn
aXN0ZXIgbGF0ZXIsIGFzIHRoYXQgd291bGQgcHJldmVudCB0aGUgREZHIGZyb20gdHJhY2tpbmcg
dGhlCiAgICAgICAgICAgICAvLyBieXRlY29kZS1sZXZlbCBsaXZlbmVzcyBvZiB0aGUgc2NvcGUg
cmVnaXN0ZXIuCi0gICAgICAgICAgICBOb2RlKiBjYWxsZWUgPSBnZXQoVmlydHVhbFJlZ2lzdGVy
KEpTU3RhY2s6OkNhbGxlZSkpOworICAgICAgICAgICAgTm9kZSogY2FsbGVlID0gZ2V0KFZpcnR1
YWxSZWdpc3RlcihDYWxsRnJhbWVIZWFkZXI6OkNhbGxlZSkpOwogICAgICAgICAgICAgTm9kZSog
cmVzdWx0OwogICAgICAgICAgICAgaWYgKEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0gY2FsbGVlLT5k
eW5hbWljQ2FzdENvbnN0YW50PEpTRnVuY3Rpb24qPigpKQogICAgICAgICAgICAgICAgIHJlc3Vs
dCA9IHdlYWtKU0NvbnN0YW50KGZ1bmN0aW9uLT5zY29wZSgpKTsKQEAgLTUyODMsNyArNTI4Myw3
IEBAIEJ5dGVDb2RlUGFyc2VyOjpJbmxpbmVTdGFja0VudHJ5OjpJbmxpbmUKICAgICAgICAgLy8g
VGhlIG93bmVyIGlzIHRoZSBtYWNoaW5lIGNvZGUgYmxvY2ssIGFuZCB3ZSBhbHJlYWR5IGhhdmUg
YSBiYXJyaWVyIG9uIHRoYXQgd2hlbiB0aGUKICAgICAgICAgLy8gcGxhbiBmaW5pc2hlcy4KICAg
ICAgICAgbV9pbmxpbmVDYWxsRnJhbWUtPmJhc2VsaW5lQ29kZUJsb2NrLnNldFdpdGhvdXRXcml0
ZUJhcnJpZXIoY29kZUJsb2NrLT5iYXNlbGluZVZlcnNpb24oKSk7Ci0gICAgICAgIG1faW5saW5l
Q2FsbEZyYW1lLT5zZXRTdGFja09mZnNldChpbmxpbmVDYWxsRnJhbWVTdGFydC5vZmZzZXQoKSAt
IEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlclNpemUpOworICAgICAgICBtX2lubGluZUNhbGxGcmFt
ZS0+c2V0U3RhY2tPZmZzZXQoaW5saW5lQ2FsbEZyYW1lU3RhcnQub2Zmc2V0KCkgLSBDYWxsRnJh
bWVIZWFkZXI6OlNpemUpOwogICAgICAgICBpZiAoY2FsbGVlKSB7CiAgICAgICAgICAgICBtX2lu
bGluZUNhbGxGcmFtZS0+Y2FsbGVlUmVjb3ZlcnkgPSBWYWx1ZVJlY292ZXJ5Ojpjb25zdGFudChj
YWxsZWUpOwogICAgICAgICAgICAgbV9pbmxpbmVDYWxsRnJhbWUtPmlzQ2xvc3VyZUNhbGwgPSBm
YWxzZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCShy
ZXZpc2lvbiAyMDI5NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJp
emUuaAkod29ya2luZyBjb3B5KQpAQCAtMTEzLDkgKzExMyw5IEBAIHZvaWQgY2xvYmJlcml6ZShH
cmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUKICAgICAvLyBzY2FuIHdvdWxkIHJlYWQuIFRoYXQncyB3
aGF0IHRoaXMgZG9lcy4KICAgICBmb3IgKElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1l
ID0gbm9kZS0+b3JpZ2luLnNlbWFudGljLmlubGluZUNhbGxGcmFtZTsgaW5saW5lQ2FsbEZyYW1l
OyBpbmxpbmVDYWxsRnJhbWUgPSBpbmxpbmVDYWxsRnJhbWUtPmRpcmVjdENhbGxlci5pbmxpbmVD
YWxsRnJhbWUpIHsKICAgICAgICAgaWYgKGlubGluZUNhbGxGcmFtZS0+aXNDbG9zdXJlQ2FsbCkK
LSAgICAgICAgICAgIHJlYWQoQWJzdHJhY3RIZWFwKFN0YWNrLCBpbmxpbmVDYWxsRnJhbWUtPnN0
YWNrT2Zmc2V0ICsgSlNTdGFjazo6Q2FsbGVlKSk7CisgICAgICAgICAgICByZWFkKEFic3RyYWN0
SGVhcChTdGFjaywgaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCArIENhbGxGcmFtZUhlYWRl
cjo6Q2FsbGVlKSk7CiAgICAgICAgIGlmIChpbmxpbmVDYWxsRnJhbWUtPmlzVmFyYXJncygpKQot
ICAgICAgICAgICAgcmVhZChBYnN0cmFjdEhlYXAoU3RhY2ssIGlubGluZUNhbGxGcmFtZS0+c3Rh
Y2tPZmZzZXQgKyBKU1N0YWNrOjpBcmd1bWVudENvdW50KSk7CisgICAgICAgICAgICByZWFkKEFi
c3RyYWN0SGVhcChTdGFjaywgaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCArIENhbGxGcmFt
ZUhlYWRlcjo6QXJndW1lbnRDb3VudCkpOwogICAgIH0KIAogICAgIC8vIFdlIGRvbid0IHdhbnQg
dG8gc3BlY2lmaWNhbGx5IGFjY291bnQgd2hpY2ggbm9kZXMgY2FuIHJlYWQgZnJvbSB0aGUgc2Nv
cGUKQEAgLTUwMSwxMyArNTAxLDEzIEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5v
ZGUqIG5vZGUKICAgICAgICAgcmV0dXJuOwogICAgICAgICAKICAgICBjYXNlIEdldENhbGxlZToK
LSAgICAgICAgcmVhZChBYnN0cmFjdEhlYXAoU3RhY2ssIEpTU3RhY2s6OkNhbGxlZSkpOwotICAg
ICAgICBkZWYoSGVhcExvY2F0aW9uKFN0YWNrTG9jLCBBYnN0cmFjdEhlYXAoU3RhY2ssIEpTU3Rh
Y2s6OkNhbGxlZSkpLCBMYXp5Tm9kZShub2RlKSk7CisgICAgICAgIHJlYWQoQWJzdHJhY3RIZWFw
KFN0YWNrLCBDYWxsRnJhbWVIZWFkZXI6OkNhbGxlZSkpOworICAgICAgICBkZWYoSGVhcExvY2F0
aW9uKFN0YWNrTG9jLCBBYnN0cmFjdEhlYXAoU3RhY2ssIENhbGxGcmFtZUhlYWRlcjo6Q2FsbGVl
KSksIExhenlOb2RlKG5vZGUpKTsKICAgICAgICAgcmV0dXJuOwogICAgICAgICAKICAgICBjYXNl
IEdldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzOgotICAgICAgICByZWFkKEFic3RyYWN0SGVh
cChTdGFjaywgSlNTdGFjazo6QXJndW1lbnRDb3VudCkpOwotICAgICAgICBkZWYoSGVhcExvY2F0
aW9uKFN0YWNrUGF5bG9hZExvYywgQWJzdHJhY3RIZWFwKFN0YWNrLCBKU1N0YWNrOjpBcmd1bWVu
dENvdW50KSksIExhenlOb2RlKG5vZGUpKTsKKyAgICAgICAgcmVhZChBYnN0cmFjdEhlYXAoU3Rh
Y2ssIENhbGxGcmFtZUhlYWRlcjo6QXJndW1lbnRDb3VudCkpOworICAgICAgICBkZWYoSGVhcExv
Y2F0aW9uKFN0YWNrUGF5bG9hZExvYywgQWJzdHJhY3RIZWFwKFN0YWNrLCBDYWxsRnJhbWVIZWFk
ZXI6OkFyZ3VtZW50Q291bnQpKSwgTGF6eU5vZGUobm9kZSkpOwogICAgICAgICByZXR1cm47CiAK
ICAgICBjYXNlIEdldFJlc3RMZW5ndGg6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0dyYXBoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0dyYXBoLmNwcAkocmV2aXNpb24gMjAyOTU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdHcmFwaC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMTIsMTkgKzEwMTIsMTkgQEAgYm9v
bCBHcmFwaDo6aXNMaXZlSW5CeXRlY29kZShWaXJ0dWFsUmVnaQogICAgICAgICBpZiAodmVyYm9z
ZSkKICAgICAgICAgICAgIGRhdGFMb2coInJlZyA9ICIsIHJlZywgIlxuIik7CiAgICAgICAgIAot
ICAgICAgICBpZiAob3BlcmFuZC5vZmZzZXQoKSA8IGNvZGVPcmlnaW5QdHItPnN0YWNrT2Zmc2V0
KCkgKyBKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJTaXplKSB7CisgICAgICAgIGlmIChvcGVyYW5k
Lm9mZnNldCgpIDwgY29kZU9yaWdpblB0ci0+c3RhY2tPZmZzZXQoKSArIENhbGxGcmFtZUhlYWRl
cjo6U2l6ZSkgewogICAgICAgICAgICAgaWYgKHJlZy5pc0FyZ3VtZW50KCkpIHsKLSAgICAgICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVChyZWcub2Zmc2V0KCkgPCBKU1N0YWNrOjpDYWxsRnJhbWVI
ZWFkZXJTaXplKTsKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChyZWcub2Zmc2V0KCkg
PCBDYWxsRnJhbWVIZWFkZXI6OlNpemUpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg
ICAgIGlmIChjb2RlT3JpZ2luUHRyLT5pbmxpbmVDYWxsRnJhbWUtPmlzQ2xvc3VyZUNhbGwKLSAg
ICAgICAgICAgICAgICAgICAgJiYgcmVnLm9mZnNldCgpID09IEpTU3RhY2s6OkNhbGxlZSkgewor
ICAgICAgICAgICAgICAgICAgICAmJiByZWcub2Zmc2V0KCkgPT0gQ2FsbEZyYW1lSGVhZGVyOjpD
YWxsZWUpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAgICAgICAg
ICAgICAgICAgICBkYXRhTG9nKCJMb29rcyBsaWtlIGEgY2FsbGVlLlxuIik7CiAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICAKICAgICAgICAgICAgICAgICBpZiAoY29kZU9yaWdpblB0ci0+aW5saW5lQ2FsbEZyYW1lLT5p
c1ZhcmFyZ3MoKQotICAgICAgICAgICAgICAgICAgICAmJiByZWcub2Zmc2V0KCkgPT0gSlNTdGFj
azo6QXJndW1lbnRDb3VudCkgeworICAgICAgICAgICAgICAgICAgICAmJiByZWcub2Zmc2V0KCkg
PT0gQ2FsbEZyYW1lSGVhZGVyOjpBcmd1bWVudENvdW50KSB7CiAgICAgICAgICAgICAgICAgICAg
IGlmICh2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiTG9va3MgbGlr
ZSB0aGUgYXJndW1lbnQgY291bnQuXG4iKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCShyZXZpc2lvbiAyMDI5
NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTcwOSw5ICs3MDksOSBAQCBwdWJsaWM6CiAgICAgICAgICAgICAKICAgICAgICAgICAg
IGlmIChpbmxpbmVDYWxsRnJhbWUpIHsKICAgICAgICAgICAgICAgICBpZiAoaW5saW5lQ2FsbEZy
YW1lLT5pc0Nsb3N1cmVDYWxsKQotICAgICAgICAgICAgICAgICAgICBmdW5jdG9yKHN0YWNrT2Zm
c2V0ICsgSlNTdGFjazo6Q2FsbGVlKTsKKyAgICAgICAgICAgICAgICAgICAgZnVuY3RvcihzdGFj
a09mZnNldCArIENhbGxGcmFtZUhlYWRlcjo6Q2FsbGVlKTsKICAgICAgICAgICAgICAgICBpZiAo
aW5saW5lQ2FsbEZyYW1lLT5pc1ZhcmFyZ3MoKSkKLSAgICAgICAgICAgICAgICAgICAgZnVuY3Rv
cihzdGFja09mZnNldCArIEpTU3RhY2s6OkFyZ3VtZW50Q291bnQpOworICAgICAgICAgICAgICAg
ICAgICBmdW5jdG9yKHN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lSGVhZGVyOjpBcmd1bWVudENvdW50
KTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICAgICAgQ29kZUJsb2NrKiBj
b2RlQmxvY2sgPSBiYXNlbGluZUNvZGVCbG9ja0ZvcihpbmxpbmVDYWxsRnJhbWUpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAJKHJldmlzaW9u
IDIwMjk1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDgsNyArMTA4LDcgQEAgdm9pZCBKSVRDb21waWxlcjo6Y29t
cGlsZUVudHJ5KCkKICAgICAvLyBjaGVjaykgd2hpY2ggd2lsbCBiZSBkZXBlbmRlbnQgb24gc3Rh
Y2sgbGF5b3V0LiAoV2UnZCBuZWVkIHRvIGFjY291bnQgZm9yIHRoaXMgaW4KICAgICAvLyBib3Ro
IG5vcm1hbCByZXR1cm4gY29kZSBhbmQgd2hlbiBqdW1waW5nIHRvIGFuIGV4Y2VwdGlvbiBoYW5k
bGVyKS4KICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZSgpOwotICAgIGVtaXRQdXRUb0NhbGxGcmFt
ZUhlYWRlcihtX2NvZGVCbG9jaywgSlNTdGFjazo6Q29kZUJsb2NrKTsKKyAgICBlbWl0UHV0VG9D
YWxsRnJhbWVIZWFkZXIobV9jb2RlQmxvY2ssIENhbGxGcmFtZUhlYWRlcjo6Q29kZUJsb2NrKTsK
IH0KIAogdm9pZCBKSVRDb21waWxlcjo6Y29tcGlsZVNldHVwUmVnaXN0ZXJzRm9yRW50cnkoKQpA
QCAtNDQzLDcgKzQ0Myw3IEBAIHZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGVGdW5jdGlvbigpCiAg
ICAgbV9hcml0eUNoZWNrID0gbGFiZWwoKTsKICAgICBjb21waWxlRW50cnkoKTsKIAotICAgIGxv
YWQzMihBc3NlbWJseUhlbHBlcnM6OnBheWxvYWRGb3IoKFZpcnR1YWxSZWdpc3RlcilKU1N0YWNr
OjpBcmd1bWVudENvdW50KSwgR1BSSW5mbzo6cmVnVDEpOworICAgIGxvYWQzMihBc3NlbWJseUhl
bHBlcnM6OnBheWxvYWRGb3IoKFZpcnR1YWxSZWdpc3RlcilDYWxsRnJhbWVIZWFkZXI6OkFyZ3Vt
ZW50Q291bnQpLCBHUFJJbmZvOjpyZWdUMSk7CiAgICAgYnJhbmNoMzIoQWJvdmVPckVxdWFsLCBH
UFJJbmZvOjpyZWdUMSwgVHJ1c3RlZEltbTMyKG1fY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkp
KS5saW5rVG8oZnJvbUFyaXR5Q2hlY2ssIHRoaXMpOwogICAgIGVtaXRTdG9yZUNvZGVPcmlnaW4o
Q29kZU9yaWdpbigwKSk7CiAgICAgaWYgKG1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsKQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAkocmV2aXNp
b24gMjAyOTU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xNTYsNyArMTU2LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBl
bWl0U3RvcmVDYWxsU2l0ZUluZGV4KENhbGxTaXRlSW5kZXggY2FsbFNpdGUpCiAgICAgewotICAg
ICAgICBzdG9yZTMyKFRydXN0ZWRJbW0zMihjYWxsU2l0ZS5iaXRzKCkpLCB0YWdGb3Ioc3RhdGlj
X2Nhc3Q8VmlydHVhbFJlZ2lzdGVyPihKU1N0YWNrOjpBcmd1bWVudENvdW50KSkpOworICAgICAg
ICBzdG9yZTMyKFRydXN0ZWRJbW0zMihjYWxsU2l0ZS5iaXRzKCkpLCB0YWdGb3Ioc3RhdGljX2Nh
c3Q8VmlydHVhbFJlZ2lzdGVyPihDYWxsRnJhbWVIZWFkZXI6OkFyZ3VtZW50Q291bnQpKSk7CiAg
ICAgfQogCiAgICAgLy8gQWRkIGEgY2FsbCBvdXQgZnJvbSBKSVQgY29kZSwgd2l0aG91dCBhbiBl
eGNlcHRpb24gY2hlY2suCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkF2
YWlsYWJpbGl0eUFuYWx5c2lzUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT1NSQXZhaWxhYmlsaXR5QW5hbHlzaXNQaGFzZS5jcHAJKHJldmlzaW9u
IDIwMjk1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSQXZhaWxhYmlsaXR5
QW5hbHlzaXNQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3NywxNCArMTc3LDE0IEBAIHZv
aWQgTG9jYWxPU1JBdmFpbGFiaWxpdHlDYWxjdWxhdG9yOjpleGUKICAgICAgICAgaWYgKGlubGlu
ZUNhbGxGcmFtZS0+aXNWYXJhcmdzKCkpIHsKICAgICAgICAgICAgIC8vIFJlY29yZCBob3cgdG8g
cmVhZCBlYWNoIGFyZ3VtZW50IGFuZCB0aGUgYXJndW1lbnQgY291bnQuCiAgICAgICAgICAgICBB
dmFpbGFiaWxpdHkgYXJndW1lbnRDb3VudCA9Ci0gICAgICAgICAgICAgICAgbV9hdmFpbGFiaWxp
dHkubV9sb2NhbHMub3BlcmFuZChpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgSlNTdGFj
azo6QXJndW1lbnRDb3VudCk7CisgICAgICAgICAgICAgICAgbV9hdmFpbGFiaWxpdHkubV9sb2Nh
bHMub3BlcmFuZChpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lSGVhZGVy
OjpBcmd1bWVudENvdW50KTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgbV9hdmFpbGFiaWxp
dHkubV9oZWFwLnNldChQcm9tb3RlZEhlYXBMb2NhdGlvbihBcmd1bWVudENvdW50UExvYywgbm9k
ZSksIGFyZ3VtZW50Q291bnQpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBpZiAoaW5s
aW5lQ2FsbEZyYW1lLT5pc0Nsb3N1cmVDYWxsKSB7CiAgICAgICAgICAgICBBdmFpbGFiaWxpdHkg
Y2FsbGVlID0gbV9hdmFpbGFiaWxpdHkubV9sb2NhbHMub3BlcmFuZCgKLSAgICAgICAgICAgICAg
ICBpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgSlNTdGFjazo6Q2FsbGVlKTsKKyAgICAg
ICAgICAgICAgICBpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lSGVhZGVy
OjpDYWxsZWUpOwogICAgICAgICAgICAgbV9hdmFpbGFiaWxpdHkubV9oZWFwLnNldChQcm9tb3Rl
ZEhlYXBMb2NhdGlvbihBcmd1bWVudHNDYWxsZWVQTG9jLCBub2RlKSwgY2FsbGVlKTsKICAgICAg
ICAgfQogICAgICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50
cnkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50
cnkuY3BwCShyZXZpc2lvbiAyMDI5NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R09TUkVudHJ5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjY0LDcgKzI2NCw3IEBAIHZvaWQqIHBy
ZXBhcmVPU1JFbnRyeShFeGVjU3RhdGUqIGV4ZWMsIEMKICAgICB1bnNpZ25lZCBiYXNlbGluZUZy
YW1lU2l6ZSA9IGVudHJ5LT5tX2V4cGVjdGVkVmFsdWVzLm51bWJlck9mTG9jYWxzKCk7CiAgICAg
dW5zaWduZWQgbWF4RnJhbWVTaXplID0gc3RkOjptYXgoZnJhbWVTaXplLCBiYXNlbGluZUZyYW1l
U2l6ZSk7CiAKLSAgICBSZWdpc3Rlciogc2NyYXRjaCA9IGJpdHdpc2VfY2FzdDxSZWdpc3Rlcio+
KHZtLT5zY3JhdGNoQnVmZmVyRm9yU2l6ZShzaXplb2YoUmVnaXN0ZXIpICogKDIgKyBKU1N0YWNr
OjpDYWxsRnJhbWVIZWFkZXJTaXplICsgbWF4RnJhbWVTaXplKSktPmRhdGFCdWZmZXIoKSk7Cisg
ICAgUmVnaXN0ZXIqIHNjcmF0Y2ggPSBiaXR3aXNlX2Nhc3Q8UmVnaXN0ZXIqPih2bS0+c2NyYXRj
aEJ1ZmZlckZvclNpemUoc2l6ZW9mKFJlZ2lzdGVyKSAqICgyICsgQ2FsbEZyYW1lSGVhZGVyOjpT
aXplICsgbWF4RnJhbWVTaXplKSktPmRhdGFCdWZmZXIoKSk7CiAgICAgCiAgICAgKmJpdHdpc2Vf
Y2FzdDxzaXplX3QqPihzY3JhdGNoICsgMCkgPSBmcmFtZVNpemU7CiAgICAgCkBAIC0yNzQsOSAr
Mjc0LDkgQEAgdm9pZCogcHJlcGFyZU9TUkVudHJ5KEV4ZWNTdGF0ZSogZXhlYywgQwogICAgIFJF
TEVBU0VfQVNTRVJUKHRhcmdldFBDKTsKICAgICAqYml0d2lzZV9jYXN0PHZvaWQqKj4oc2NyYXRj
aCArIDEpID0gdGFyZ2V0UEM7CiAgICAgCi0gICAgUmVnaXN0ZXIqIHBpdm90ID0gc2NyYXRjaCAr
IDIgKyBKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJTaXplOworICAgIFJlZ2lzdGVyKiBwaXZvdCA9
IHNjcmF0Y2ggKyAyICsgQ2FsbEZyYW1lSGVhZGVyOjpTaXplOwogICAgIAotICAgIGZvciAoaW50
IGluZGV4ID0gLUpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlclNpemU7IGluZGV4IDwgc3RhdGljX2Nh
c3Q8aW50PihiYXNlbGluZUZyYW1lU2l6ZSk7ICsraW5kZXgpIHsKKyAgICBmb3IgKGludCBpbmRl
eCA9IC1DYWxsRnJhbWVIZWFkZXI6OlNpemU7IGluZGV4IDwgc3RhdGljX2Nhc3Q8aW50PihiYXNl
bGluZUZyYW1lU2l6ZSk7ICsraW5kZXgpIHsKICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHJlZygt
MSAtIGluZGV4KTsKICAgICAgICAgCiAgICAgICAgIGlmIChyZWcuaXNMb2NhbCgpKSB7CkBAIC0z
MjksNyArMzI5LDcgQEAgdm9pZCogcHJlcGFyZU9TUkVudHJ5KEV4ZWNTdGF0ZSogZXhlYywgQwog
ICAgIAogICAgIC8vIDcpIEZpeCB0aGUgY2FsbCBmcmFtZSB0byBoYXZlIHRoZSByaWdodCBjb2Rl
IGJsb2NrLgogICAgIAotICAgICpiaXR3aXNlX2Nhc3Q8Q29kZUJsb2NrKio+KHBpdm90IC0gMSAt
IEpTU3RhY2s6OkNvZGVCbG9jaykgPSBjb2RlQmxvY2s7CisgICAgKmJpdHdpc2VfY2FzdDxDb2Rl
QmxvY2sqKj4ocGl2b3QgLSAxIC0gQ2FsbEZyYW1lSGVhZGVyOjpDb2RlQmxvY2spID0gY29kZUJs
b2NrOwogICAgIAogICAgIGlmIChPcHRpb25zOjp2ZXJib3NlT1NSKCkpCiAgICAgICAgIGRhdGFM
b2dGKCIgICAgT1NSIHJldHVybmluZyBkYXRhIGJ1ZmZlciAlcC5cbiIsIHNjcmF0Y2gpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyLmNw
cAkocmV2aXNpb24gMjAyOTU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JF
eGl0Q29tcGlsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MCw3ICs3MCw3IEBAIHZvaWQgT1NS
RXhpdENvbXBpbGVyOjplbWl0UmVzdG9yZUFyZ3VtZW4KICAgICAgICAgCiAgICAgICAgIGlmICgh
aW5saW5lQ2FsbEZyYW1lIHx8IGlubGluZUNhbGxGcmFtZS0+aXNDbG9zdXJlQ2FsbCkgewogICAg
ICAgICAgICAgbV9qaXQubG9hZFB0cigKLSAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6
OmFkZHJlc3NGb3Ioc3RhY2tPZmZzZXQgKyBKU1N0YWNrOjpDYWxsZWUpLAorICAgICAgICAgICAg
ICAgIEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0ZvcihzdGFja09mZnNldCArIENhbGxGcmFtZUhl
YWRlcjo6Q2FsbGVlKSwKICAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZWdUMCk7CiAgICAgICAg
IH0gZWxzZSB7CiAgICAgICAgICAgICBtX2ppdC5tb3ZlKApAQCAtODAsNyArODAsNyBAQCB2b2lk
IE9TUkV4aXRDb21waWxlcjo6ZW1pdFJlc3RvcmVBcmd1bWVuCiAgICAgICAgIAogICAgICAgICBp
ZiAoIWlubGluZUNhbGxGcmFtZSB8fCBpbmxpbmVDYWxsRnJhbWUtPmlzVmFyYXJncygpKSB7CiAg
ICAgICAgICAgICBtX2ppdC5sb2FkMzIoCi0gICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJz
OjpwYXlsb2FkRm9yKHN0YWNrT2Zmc2V0ICsgSlNTdGFjazo6QXJndW1lbnRDb3VudCksCisgICAg
ICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpwYXlsb2FkRm9yKHN0YWNrT2Zmc2V0ICsgQ2Fs
bEZyYW1lSGVhZGVyOjpBcmd1bWVudENvdW50KSwKICAgICAgICAgICAgICAgICBHUFJJbmZvOjpy
ZWdUMSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBtX2ppdC5tb3ZlKApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVy
Q29tbW9uLmNwcAkocmV2aXNpb24gMjAyOTU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDQsNyAr
MTQ0LDcgQEAgdm9pZCByZWlmeUlubGluZWRDYWxsRnJhbWVzKENDYWxsSGVscGVycwogICAgIC8v
IGluIHByZXNlbmNlIG9mIGlubGluZWQgdGFpbCBjYWxscy4KICAgICAvLyBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ3NTExCiAgICAgQVNTRVJUKGppdC5iYXNlbGlu
ZUNvZGVCbG9jaygpLT5qaXRUeXBlKCkgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOwotICAgIGpp
dC5zdG9yZVB0cihBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoaml0LmJhc2VsaW5lQ29k
ZUJsb2NrKCkpLCBBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3IoKFZpcnR1YWxSZWdpc3RlcilK
U1N0YWNrOjpDb2RlQmxvY2spKTsKKyAgICBqaXQuc3RvcmVQdHIoQXNzZW1ibHlIZWxwZXJzOjpU
cnVzdGVkSW1tUHRyKGppdC5iYXNlbGluZUNvZGVCbG9jaygpKSwgQXNzZW1ibHlIZWxwZXJzOjph
ZGRyZXNzRm9yKChWaXJ0dWFsUmVnaXN0ZXIpQ2FsbEZyYW1lSGVhZGVyOjpDb2RlQmxvY2spKTsK
IAogICAgIGNvbnN0IENvZGVPcmlnaW4qIGNvZGVPcmlnaW47CiAgICAgZm9yIChjb2RlT3JpZ2lu
ID0gJmV4aXQubV9jb2RlT3JpZ2luOyBjb2RlT3JpZ2luICYmIGNvZGVPcmlnaW4tPmlubGluZUNh
bGxGcmFtZTsgY29kZU9yaWdpbiA9IGNvZGVPcmlnaW4tPmlubGluZUNhbGxGcmFtZS0+Z2V0Q2Fs
bGVyU2tpcHBpbmdUYWlsQ2FsbHMoKSkgewpAQCAtMjA1LDcgKzIwNSw3IEBAIHZvaWQgcmVpZnlJ
bmxpbmVkQ2FsbEZyYW1lcyhDQ2FsbEhlbHBlcnMKICAgICAgICAgICAgIGppdC5zdG9yZVB0cihB
c3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoanVtcFRhcmdldCksIEFzc2VtYmx5SGVscGVy
czo6YWRkcmVzc0ZvckJ5dGVPZmZzZXQoaW5saW5lQ2FsbEZyYW1lLT5yZXR1cm5QQ09mZnNldCgp
KSk7CiAgICAgICAgIH0KIAotICAgICAgICBqaXQuc3RvcmVQdHIoQXNzZW1ibHlIZWxwZXJzOjpU
cnVzdGVkSW1tUHRyKGJhc2VsaW5lQ29kZUJsb2NrKSwgQXNzZW1ibHlIZWxwZXJzOjphZGRyZXNz
Rm9yKChWaXJ0dWFsUmVnaXN0ZXIpKGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyBKU1N0
YWNrOjpDb2RlQmxvY2spKSk7CisgICAgICAgIGppdC5zdG9yZVB0cihBc3NlbWJseUhlbHBlcnM6
OlRydXN0ZWRJbW1QdHIoYmFzZWxpbmVDb2RlQmxvY2spLCBBc3NlbWJseUhlbHBlcnM6OmFkZHJl
c3NGb3IoKFZpcnR1YWxSZWdpc3RlcikoaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCArIENh
bGxGcmFtZUhlYWRlcjo6Q29kZUJsb2NrKSkpOwogCiAgICAgICAgIC8vIFJlc3RvcmUgdGhlIGlu
bGluZSBjYWxsIGZyYW1lJ3MgY2FsbGVlIHNhdmUgcmVnaXN0ZXJzLgogICAgICAgICAvLyBJZiB0
aGlzIGlubGluZWQgZnJhbWUgaXMgYSB0YWlsIGNhbGwgdGhhdCB3aWxsIHJldHVybiBiYWNrIHRv
IHRoZSBvcmlnaW5hbCBjYWxsZXIsIHdlIG5lZWQgdG8KQEAgLTIxNywyMSArMjE3LDIxIEBAIHZv
aWQgcmVpZnlJbmxpbmVkQ2FsbEZyYW1lcyhDQ2FsbEhlbHBlcnMKICAgICAgICAgICAgIEdQUklu
Zm86OnJlZ1QyKTsKIAogICAgICAgICBpZiAoIWlubGluZUNhbGxGcmFtZS0+aXNWYXJhcmdzKCkp
Ci0gICAgICAgICAgICBqaXQuc3RvcmUzMihBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMihp
bmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5zaXplKCkpLCBBc3NlbWJseUhlbHBlcnM6OnBheWxv
YWRGb3IoKFZpcnR1YWxSZWdpc3RlcikoaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCArIEpT
U3RhY2s6OkFyZ3VtZW50Q291bnQpKSk7CisgICAgICAgICAgICBqaXQuc3RvcmUzMihBc3NlbWJs
eUhlbHBlcnM6OlRydXN0ZWRJbW0zMihpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5zaXplKCkp
LCBBc3NlbWJseUhlbHBlcnM6OnBheWxvYWRGb3IoKFZpcnR1YWxSZWdpc3RlcikoaW5saW5lQ2Fs
bEZyYW1lLT5zdGFja09mZnNldCArIENhbGxGcmFtZUhlYWRlcjo6QXJndW1lbnRDb3VudCkpKTsK
ICNpZiBVU0UoSlNWQUxVRTY0KQogICAgICAgICBqaXQuc3RvcmU2NChjYWxsZXJGcmFtZUdQUiwg
QXNzZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9yQnl0ZU9mZnNldChpbmxpbmVDYWxsRnJhbWUtPmNh
bGxlckZyYW1lT2Zmc2V0KCkpKTsKICAgICAgICAgdWludDMyX3QgbG9jYXRpb25CaXRzID0gQ2Fs
bFNpdGVJbmRleChjb2RlT3JpZ2luLT5ieXRlY29kZUluZGV4KS5iaXRzKCk7Ci0gICAgICAgIGpp
dC5zdG9yZTMyKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKGxvY2F0aW9uQml0cyksIEFz
c2VtYmx5SGVscGVyczo6dGFnRm9yKChWaXJ0dWFsUmVnaXN0ZXIpKGlubGluZUNhbGxGcmFtZS0+
c3RhY2tPZmZzZXQgKyBKU1N0YWNrOjpBcmd1bWVudENvdW50KSkpOworICAgICAgICBqaXQuc3Rv
cmUzMihBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMihsb2NhdGlvbkJpdHMpLCBBc3NlbWJs
eUhlbHBlcnM6OnRhZ0ZvcigoVmlydHVhbFJlZ2lzdGVyKShpbmxpbmVDYWxsRnJhbWUtPnN0YWNr
T2Zmc2V0ICsgQ2FsbEZyYW1lSGVhZGVyOjpBcmd1bWVudENvdW50KSkpOwogICAgICAgICBpZiAo
IWlubGluZUNhbGxGcmFtZS0+aXNDbG9zdXJlQ2FsbCkKLSAgICAgICAgICAgIGppdC5zdG9yZTY0
KEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTY0KEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKGlu
bGluZUNhbGxGcmFtZS0+Y2FsbGVlQ29uc3RhbnQoKSkpKSwgQXNzZW1ibHlIZWxwZXJzOjphZGRy
ZXNzRm9yKChWaXJ0dWFsUmVnaXN0ZXIpKGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyBK
U1N0YWNrOjpDYWxsZWUpKSk7CisgICAgICAgICAgICBqaXQuc3RvcmU2NChBc3NlbWJseUhlbHBl
cnM6OlRydXN0ZWRJbW02NChKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZShpbmxpbmVDYWxsRnJhbWUt
PmNhbGxlZUNvbnN0YW50KCkpKSksIEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0ZvcigoVmlydHVh
bFJlZ2lzdGVyKShpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lSGVhZGVy
OjpDYWxsZWUpKSk7CiAjZWxzZSAvLyBVU0UoSlNWQUxVRTY0KSAvLyBzbyB0aGlzIGlzIHRoZSAz
Mi1iaXQgcGFydAogICAgICAgICBqaXQuc3RvcmVQdHIoY2FsbGVyRnJhbWVHUFIsIEFzc2VtYmx5
SGVscGVyczo6YWRkcmVzc0ZvckJ5dGVPZmZzZXQoaW5saW5lQ2FsbEZyYW1lLT5jYWxsZXJGcmFt
ZU9mZnNldCgpKSk7CiAgICAgICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiA9IGJhc2VsaW5l
Q29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpICsgY29kZU9yaWdpbi0+Ynl0ZWNvZGVJ
bmRleDsKICAgICAgICAgdWludDMyX3QgbG9jYXRpb25CaXRzID0gQ2FsbFNpdGVJbmRleChpbnN0
cnVjdGlvbikuYml0cygpOwotICAgICAgICBqaXQuc3RvcmUzMihBc3NlbWJseUhlbHBlcnM6OlRy
dXN0ZWRJbW0zMihsb2NhdGlvbkJpdHMpLCBBc3NlbWJseUhlbHBlcnM6OnRhZ0ZvcigoVmlydHVh
bFJlZ2lzdGVyKShpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgSlNTdGFjazo6QXJndW1l
bnRDb3VudCkpKTsKLSAgICAgICAgaml0LnN0b3JlMzIoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVk
SW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZyksIEFzc2VtYmx5SGVscGVyczo6dGFnRm9yKChWaXJ0dWFs
UmVnaXN0ZXIpKGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyBKU1N0YWNrOjpDYWxsZWUp
KSk7CisgICAgICAgIGppdC5zdG9yZTMyKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKGxv
Y2F0aW9uQml0cyksIEFzc2VtYmx5SGVscGVyczo6dGFnRm9yKChWaXJ0dWFsUmVnaXN0ZXIpKGlu
bGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyBDYWxsRnJhbWVIZWFkZXI6OkFyZ3VtZW50Q291
bnQpKSk7CisgICAgICAgIGppdC5zdG9yZTMyKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMy
KEpTVmFsdWU6OkNlbGxUYWcpLCBBc3NlbWJseUhlbHBlcnM6OnRhZ0ZvcigoVmlydHVhbFJlZ2lz
dGVyKShpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lSGVhZGVyOjpDYWxs
ZWUpKSk7CiAgICAgICAgIGlmICghaW5saW5lQ2FsbEZyYW1lLT5pc0Nsb3N1cmVDYWxsKQotICAg
ICAgICAgICAgaml0LnN0b3JlUHRyKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbVB0cihpbmxp
bmVDYWxsRnJhbWUtPmNhbGxlZUNvbnN0YW50KCkpLCBBc3NlbWJseUhlbHBlcnM6OnBheWxvYWRG
b3IoKFZpcnR1YWxSZWdpc3RlcikoaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCArIEpTU3Rh
Y2s6OkNhbGxlZSkpKTsKKyAgICAgICAgICAgIGppdC5zdG9yZVB0cihBc3NlbWJseUhlbHBlcnM6
OlRydXN0ZWRJbW1QdHIoaW5saW5lQ2FsbEZyYW1lLT5jYWxsZWVDb25zdGFudCgpKSwgQXNzZW1i
bHlIZWxwZXJzOjpwYXlsb2FkRm9yKChWaXJ0dWFsUmVnaXN0ZXIpKGlubGluZUNhbGxGcmFtZS0+
c3RhY2tPZmZzZXQgKyBDYWxsRnJhbWVIZWFkZXI6OkNhbGxlZSkpKTsKICNlbmRpZiAvLyBVU0Uo
SlNWQUxVRTY0KSAvLyBlbmRpbmcgdGhlICNlbHNlIHBhcnQsIHNvIGRpcmVjdGx5IGFib3ZlIGlz
IHRoZSAzMi1iaXQgcGFydAogICAgIH0KIApAQCAtMjQzLDcgKzI0Myw3IEBAIHZvaWQgcmVpZnlJ
bmxpbmVkQ2FsbEZyYW1lcyhDQ2FsbEhlbHBlcnMKICAgICAgICAgSW5zdHJ1Y3Rpb24qIGluc3Ry
dWN0aW9uID0gaml0LmJhc2VsaW5lQ29kZUJsb2NrKCktPmluc3RydWN0aW9ucygpLmJlZ2luKCkg
KyBjb2RlT3JpZ2luLT5ieXRlY29kZUluZGV4OwogICAgICAgICB1aW50MzJfdCBsb2NhdGlvbkJp
dHMgPSBDYWxsU2l0ZUluZGV4KGluc3RydWN0aW9uKS5iaXRzKCk7CiAjZW5kaWYKLSAgICAgICAg
aml0LnN0b3JlMzIoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIobG9jYXRpb25CaXRzKSwg
QXNzZW1ibHlIZWxwZXJzOjp0YWdGb3IoKFZpcnR1YWxSZWdpc3RlcikoSlNTdGFjazo6QXJndW1l
bnRDb3VudCkpKTsKKyAgICAgICAgaml0LnN0b3JlMzIoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVk
SW1tMzIobG9jYXRpb25CaXRzKSwgQXNzZW1ibHlIZWxwZXJzOjp0YWdGb3IoKFZpcnR1YWxSZWdp
c3RlcikoQ2FsbEZyYW1lSGVhZGVyOjpBcmd1bWVudENvdW50KSkpOwogICAgIH0KIH0KIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxl
ckNvbW1vbi5oCShyZXZpc2lvbiAyMDI5NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5oCSh3b3JraW5nIGNvcHkpCkBAIC04Niw3ICs4Niw3
IEBAIHZvaWQgYWRqdXN0RnJhbWVBbmRTdGFja0luT1NSRXhpdENvbXBpbGUKICAgICBqaXQubW92
ZShHUFJJbmZvOjpyZWdUMCwgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOwogICAgIGRpZE5v
dEhhdmVFeGNlcHRpb24ubGluaygmaml0KTsKICAgICAvLyBXZSBuZWVkIHRvIG1ha2Ugc3VyZSBT
UCBpcyBjb3JyZWN0IGluIGNhc2Ugb2YgYW4gZXhjZXB0aW9uLgotICAgIGppdC5sb2FkUHRyKE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBKU1N0YWNr
OjpDb2RlQmxvY2sgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpKSwgR1BSSW5m
bzo6cmVnVDApOworICAgIGppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKEdQUklu
Zm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBDYWxsRnJhbWVIZWFkZXI6OkNvZGVCbG9jayAqIHN0YXRp
Y19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkpLCBHUFJJbmZvOjpyZWdUMCk7CiAgICAgaml0
LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDAsIENvZGVCbG9j
azo6aml0Q29kZU9mZnNldCgpKSwgR1BSSW5mbzo6cmVnVDApOwogICAgIGppdC5hZGRQdHIoTWFj
cm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihKSVRDb2RlVHlwZTo6Y29tbW9uRGF0YU9mZnNldCgp
KSwgR1BSSW5mbzo6cmVnVDApOwogICAgIGppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3MoR1BSSW5mbzo6cmVnVDAsIENvbW1vbkRhdGE6OmZyYW1lUmVnaXN0ZXJDb3VudE9mZnNldCgp
KSwgR1BSSW5mbzo6cmVnVDApOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQ
cmVjaXNlTG9jYWxDbG9iYmVyaXplLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdQcmVjaXNlTG9jYWxDbG9iYmVyaXplLmgJKHJldmlzaW9uIDIwMjk1NCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlY2lzZUxvY2FsQ2xvYmJlcml6ZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xMjUsMTQgKzEyNSwxNCBAQCBwcml2YXRlOgogICAgICAgICAgICAg
ICAgIC8vIFJlYWQgdGhlIG91dGVybW9zdCBhcmd1bWVudHMgYW5kIGFyZ3VtZW50IGNvdW50Lgog
ICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1fZ3JhcGgubV9jb2RlQmxvY2stPm51
bVBhcmFtZXRlcnMoKTsgaS0tID4gMTspCiAgICAgICAgICAgICAgICAgICAgIG1fcmVhZCh2aXJ0
dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChpKSk7Ci0gICAgICAgICAgICAgICAgbV9yZWFkKFZpcnR1
YWxSZWdpc3RlcihKU1N0YWNrOjpBcmd1bWVudENvdW50KSk7CisgICAgICAgICAgICAgICAgbV9y
ZWFkKFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWVIZWFkZXI6OkFyZ3VtZW50Q291bnQpKTsKICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgp
OyBpLS0gPiAxOykKICAgICAgICAgICAgICAgICBtX3JlYWQoVmlydHVhbFJlZ2lzdGVyKGlubGlu
ZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChpKS5v
ZmZzZXQoKSkpOwogICAgICAgICAgICAgaWYgKGlubGluZUNhbGxGcmFtZS0+aXNWYXJhcmdzKCkp
Ci0gICAgICAgICAgICAgICAgbV9yZWFkKFZpcnR1YWxSZWdpc3RlcihpbmxpbmVDYWxsRnJhbWUt
PnN0YWNrT2Zmc2V0ICsgSlNTdGFjazo6QXJndW1lbnRDb3VudCkpOworICAgICAgICAgICAgICAg
IG1fcmVhZChWaXJ0dWFsUmVnaXN0ZXIoaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCArIENh
bGxGcmFtZUhlYWRlcjo6QXJndW1lbnRDb3VudCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KICAgICAgICAgICAgIApAQCAtMTQyLDcgKzE0Miw3IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICAgICAgbV9yZWFkKHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGkpKTsKICAgICAgICAg
CiAgICAgICAgICAgICAvLyBUaGUgc3RhY2sgaGVhZGVyIGlzIHJlYWQuCi0gICAgICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgSlNTdGFjazo6VGhpc0FyZ3VtZW50OyArK2kpCisgICAg
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgQ2FsbEZyYW1lSGVhZGVyOjpUaGlzQXJn
dW1lbnQ7ICsraSkKICAgICAgICAgICAgICAgICBtX3JlYWQoVmlydHVhbFJlZ2lzdGVyKGkpKTsK
ICAgICAgICAgCiAgICAgICAgICAgICAvLyBSZWFkIGFsbCBvZiB0aGUgaW5saW5lIGFyZ3VtZW50
cyBhbmQgY2FsbCBmcmFtZSBoZWFkZXJzIHRoYXQgd2UgZGlkbid0IGFscmVhZHkgY2FwdHVyZS4K
QEAgLTE1MCw5ICsxNTAsOSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKTsgaS0tID4gMTspCiAgICAg
ICAgICAgICAgICAgICAgIG1fcmVhZChWaXJ0dWFsUmVnaXN0ZXIoaW5saW5lQ2FsbEZyYW1lLT5z
dGFja09mZnNldCArIHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGkpLm9mZnNldCgpKSk7CiAg
ICAgICAgICAgICAgICAgaWYgKGlubGluZUNhbGxGcmFtZS0+aXNDbG9zdXJlQ2FsbCkKLSAgICAg
ICAgICAgICAgICAgICAgbV9yZWFkKFZpcnR1YWxSZWdpc3RlcihpbmxpbmVDYWxsRnJhbWUtPnN0
YWNrT2Zmc2V0ICsgSlNTdGFjazo6Q2FsbGVlKSk7CisgICAgICAgICAgICAgICAgICAgIG1fcmVh
ZChWaXJ0dWFsUmVnaXN0ZXIoaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCArIENhbGxGcmFt
ZUhlYWRlcjo6Q2FsbGVlKSk7CiAgICAgICAgICAgICAgICAgaWYgKGlubGluZUNhbGxGcmFtZS0+
aXNWYXJhcmdzKCkpCi0gICAgICAgICAgICAgICAgICAgIG1fcmVhZChWaXJ0dWFsUmVnaXN0ZXIo
aW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCArIEpTU3RhY2s6OkFyZ3VtZW50Q291bnQpKTsK
KyAgICAgICAgICAgICAgICAgICAgbV9yZWFkKFZpcnR1YWxSZWdpc3RlcihpbmxpbmVDYWxsRnJh
bWUtPnN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lSGVhZGVyOjpBcmd1bWVudENvdW50KSk7CiAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfSB9CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJ
KHJldmlzaW9uIDIwMjk1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgzNSw3ICs4MzUsNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChOb2RlKiBub2RlCiAgICAgICAgICAgICAgICAgc2h1
ZmZsZURhdGEuYXJnc1tpXSA9IGluZm8ucmVjb3ZlcnkoYXJnRWRnZS0+dmlydHVhbFJlZ2lzdGVy
KCkpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgbV9qaXQu
c3RvcmUzMihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKG51bVBhc3NlZEFyZ3MpLCBtX2pp
dC5jYWxsZWVGcmFtZVBheWxvYWRTbG90KEpTU3RhY2s6OkFyZ3VtZW50Q291bnQpKTsKKyAgICAg
ICAgICAgIG1faml0LnN0b3JlMzIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihudW1QYXNz
ZWRBcmdzKSwgbV9qaXQuY2FsbGVlRnJhbWVQYXlsb2FkU2xvdChDYWxsRnJhbWVIZWFkZXI6OkFy
Z3VtZW50Q291bnQpKTsKICAgICAgICAgCiAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8
IG51bVBhc3NlZEFyZ3M7IGkrKykgewogICAgICAgICAgICAgICAgIEVkZ2UgYXJnRWRnZSA9IG1f
aml0LmdyYXBoKCkubV92YXJBcmdDaGlsZHJlbltub2RlLT5maXJzdENoaWxkKCkgKyAxICsgaV07
CkBAIC04NTUsOCArODU1LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSog
bm9kZQogICAgICAgICBjYWxsZWVUYWdHUFIgPSBjYWxsZWUudGFnR1BSKCk7CiAgICAgICAgIGNh
bGxlZVBheWxvYWRHUFIgPSBjYWxsZWUucGF5bG9hZEdQUigpOwogICAgICAgICB1c2UoY2FsbGVl
RWRnZSk7Ci0gICAgICAgIG1faml0LnN0b3JlMzIoY2FsbGVlUGF5bG9hZEdQUiwgbV9qaXQuY2Fs
bGVlRnJhbWVQYXlsb2FkU2xvdChKU1N0YWNrOjpDYWxsZWUpKTsKLSAgICAgICAgbV9qaXQuc3Rv
cmUzMihjYWxsZWVUYWdHUFIsIG1faml0LmNhbGxlZUZyYW1lVGFnU2xvdChKU1N0YWNrOjpDYWxs
ZWUpKTsKKyAgICAgICAgbV9qaXQuc3RvcmUzMihjYWxsZWVQYXlsb2FkR1BSLCBtX2ppdC5jYWxs
ZWVGcmFtZVBheWxvYWRTbG90KENhbGxGcmFtZUhlYWRlcjo6Q2FsbGVlKSk7CisgICAgICAgIG1f
aml0LnN0b3JlMzIoY2FsbGVlVGFnR1BSLCBtX2ppdC5jYWxsZWVGcmFtZVRhZ1Nsb3QoQ2FsbEZy
YW1lSGVhZGVyOjpDYWxsZWUpKTsKIAogICAgICAgICBpZiAoIWlzVGFpbCkKICAgICAgICAgICAg
IGZsdXNoUmVnaXN0ZXJzKCk7CkBAIC00MTE2LDE0ICs0MTE2LDE0IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKIAogICAgIGNhc2UgR2V0Q2FsbGVlOiB7CiAgICAg
ICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7Ci0gICAgICAgIG1faml0LmxvYWRQdHIoSklU
Q29tcGlsZXI6OnBheWxvYWRGb3IoSlNTdGFjazo6Q2FsbGVlKSwgcmVzdWx0LmdwcigpKTsKKyAg
ICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6cGF5bG9hZEZvcihDYWxsRnJhbWVIZWFk
ZXI6OkNhbGxlZSksIHJlc3VsdC5ncHIoKSk7CiAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0Lmdw
cigpLCBub2RlKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgICAgICAKICAgICBjYXNlIEdl
dEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzOiB7CiAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1
bHQodGhpcyk7Ci0gICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6cGF5bG9hZEZvcihK
U1N0YWNrOjpBcmd1bWVudENvdW50KSwgcmVzdWx0LmdwcigpKTsKKyAgICAgICAgbV9qaXQubG9h
ZDMyKEpJVENvbXBpbGVyOjpwYXlsb2FkRm9yKENhbGxGcmFtZUhlYWRlcjo6QXJndW1lbnRDb3Vu
dCksIHJlc3VsdC5ncHIoKSk7CiAgICAgICAgIGludDMyUmVzdWx0KHJlc3VsdC5ncHIoKSwgbm9k
ZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkocmV2aXNpb24gMjAyOTU0KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtODA2LDcgKzgwNiw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxs
KE5vZGUqIG5vZGUKIAogICAgICAgICAgICAgc2h1ZmZsZURhdGEuc2V0dXBDYWxsZWVTYXZlUmVn
aXN0ZXJzKG1faml0LmNvZGVCbG9jaygpKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
IG1faml0LnN0b3JlMzIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihudW1QYXNzZWRBcmdz
KSwgSklUQ29tcGlsZXI6OmNhbGxlZUZyYW1lUGF5bG9hZFNsb3QoSlNTdGFjazo6QXJndW1lbnRD
b3VudCkpOworICAgICAgICAgICAgbV9qaXQuc3RvcmUzMihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3Rl
ZEltbTMyKG51bVBhc3NlZEFyZ3MpLCBKSVRDb21waWxlcjo6Y2FsbGVlRnJhbWVQYXlsb2FkU2xv
dChDYWxsRnJhbWVIZWFkZXI6OkFyZ3VtZW50Q291bnQpKTsKIAogICAgICAgICAgICAgZm9yIChp
bnQgaSA9IDA7IGkgPCBudW1QYXNzZWRBcmdzOyBpKyspIHsKICAgICAgICAgICAgICAgICBFZGdl
IGFyZ0VkZ2UgPSBtX2ppdC5ncmFwaCgpLm1fdmFyQXJnQ2hpbGRyZW5bbm9kZS0+Zmlyc3RDaGls
ZCgpICsgMSArIGldOwpAQCAtODI0LDcgKzgyNCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVt
aXRDYWxsKE5vZGUqIG5vZGUKICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgY2FsbGVlKHRoaXMsIGNh
bGxlZUVkZ2UpOwogICAgICAgICBjYWxsZWVHUFIgPSBjYWxsZWUuZ3ByKCk7CiAgICAgICAgIGNh
bGxlZS51c2UoKTsKLSAgICAgICAgbV9qaXQuc3RvcmU2NChjYWxsZWVHUFIsIEpJVENvbXBpbGVy
OjpjYWxsZWVGcmFtZVNsb3QoSlNTdGFjazo6Q2FsbGVlKSk7CisgICAgICAgIG1faml0LnN0b3Jl
NjQoY2FsbGVlR1BSLCBKSVRDb21waWxlcjo6Y2FsbGVlRnJhbWVTbG90KENhbGxGcmFtZUhlYWRl
cjo6Q2FsbGVlKSk7CiAKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICB9CkBAIC00MDQ3
LDE0ICs0MDQ3LDE0IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkK
IAogICAgIGNhc2UgR2V0Q2FsbGVlOiB7CiAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhp
cyk7Ci0gICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IoSlNTdGFj
azo6Q2FsbGVlKSwgcmVzdWx0LmdwcigpKTsKKyAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21w
aWxlcjo6YWRkcmVzc0ZvcihDYWxsRnJhbWVIZWFkZXI6OkNhbGxlZSksIHJlc3VsdC5ncHIoKSk7
CiAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0LmdwcigpLCBub2RlKTsKICAgICAgICAgYnJlYWs7
CiAgICAgfQogICAgICAgICAKICAgICBjYXNlIEdldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
OiB7CiAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7Ci0gICAgICAgIG1faml0Lmxv
YWQzMihKSVRDb21waWxlcjo6cGF5bG9hZEZvcihKU1N0YWNrOjpBcmd1bWVudENvdW50KSwgcmVz
dWx0LmdwcigpKTsKKyAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjpwYXlsb2FkRm9y
KENhbGxGcmFtZUhlYWRlcjo6QXJndW1lbnRDb3VudCksIHJlc3VsdC5ncHIoKSk7CiAgICAgICAg
IGludDMyUmVzdWx0KHJlc3VsdC5ncHIoKSwgbm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQu
Y3BwCShyZXZpc2lvbiAyMDI5NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUyLDcgKzE1Miw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmVtaXRHZXRMZW5ndGgoSW5saW4KICAgICBlbHNlIHsKICAgICAgICAg
VmlydHVhbFJlZ2lzdGVyIGFyZ3VtZW50Q291bnRSZWdpc3RlcjsKICAgICAgICAgaWYgKCFpbmxp
bmVDYWxsRnJhbWUpCi0gICAgICAgICAgICBhcmd1bWVudENvdW50UmVnaXN0ZXIgPSBWaXJ0dWFs
UmVnaXN0ZXIoSlNTdGFjazo6QXJndW1lbnRDb3VudCk7CisgICAgICAgICAgICBhcmd1bWVudENv
dW50UmVnaXN0ZXIgPSBWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lSGVhZGVyOjpBcmd1bWVudENv
dW50KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgYXJndW1lbnRDb3VudFJlZ2lzdGVyID0g
aW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudENvdW50UmVnaXN0ZXI7CiAgICAgICAgIG1faml0Lmxv
YWQzMihKSVRDb21waWxlcjo6cGF5bG9hZEZvcihhcmd1bWVudENvdW50UmVnaXN0ZXIpLCBsZW5n
dGhHUFIpOwpAQCAtMTc5LDcgKzE3OSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRHZXRD
YWxsZWUoQ29kZU8KICAgICAgICAgICAgICAgICBjYWxsZWVHUFIpOwogICAgICAgICB9CiAgICAg
fSBlbHNlCi0gICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IoSlNT
dGFjazo6Q2FsbGVlKSwgY2FsbGVlR1BSKTsKKyAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21w
aWxlcjo6YWRkcmVzc0ZvcihDYWxsRnJhbWVIZWFkZXI6OkNhbGxlZSksIGNhbGxlZUdQUik7CiB9
CiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRHZXRBcmd1bWVudFN0YXJ0KENvZGVPcmlnaW4g
b3JpZ2luLCBHUFJSZWcgc3RhcnRHUFIpCkBAIC02MTk2LDcgKzYxOTYsNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlQ3JlYXRlRGlyZWN0CiAKICAgICAgICAgVmlydHVhbFJlZ2lzdGVy
IGFyZ3VtZW50Q291bnRSZWdpc3RlcjsKICAgICAgICAgaWYgKCFub2RlLT5vcmlnaW4uc2VtYW50
aWMuaW5saW5lQ2FsbEZyYW1lKQotICAgICAgICAgICAgYXJndW1lbnRDb3VudFJlZ2lzdGVyID0g
VmlydHVhbFJlZ2lzdGVyKEpTU3RhY2s6OkFyZ3VtZW50Q291bnQpOworICAgICAgICAgICAgYXJn
dW1lbnRDb3VudFJlZ2lzdGVyID0gVmlydHVhbFJlZ2lzdGVyKENhbGxGcmFtZUhlYWRlcjo6QXJn
dW1lbnRDb3VudCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGFyZ3VtZW50Q291bnRSZWdp
c3RlciA9IG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50Q291
bnRSZWdpc3RlcjsKICAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjpwYXlsb2FkRm9y
KGFyZ3VtZW50Q291bnRSZWdpc3RlciksIGxlbmd0aEdQUik7CkBAIC02MjcxLDcgKzYyNzEsNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ3JlYXRlRGlyZWN0CiAgICAgICAgICAgICAg
ICAgc2NyYXRjaDFHUFIpOwogICAgICAgICB9CiAgICAgfSBlbHNlCi0gICAgICAgIG1faml0Lmxv
YWRQdHIoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IoSlNTdGFjazo6Q2FsbGVlKSwgc2NyYXRjaDFH
UFIpOworICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKENhbGxG
cmFtZUhlYWRlcjo6Q2FsbGVlKSwgc2NyYXRjaDFHUFIpOwogCiAgICAgLy8gRG9uJ3QgbmVlZCBh
IG1lbW9yeSBiYXJyaWVycyBzaW5jZSB3ZSBqdXN0IGZhc3QtY3JlYXRlZCB0aGUgYWN0aXZhdGlv
biwgc28gdGhlCiAgICAgLy8gYWN0aXZhdGlvbiBtdXN0IGJlIHlvdW5nLgpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdGFja0xheW91dFBoYXNlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0YWNrTGF5b3V0UGhhc2UuY3BwCShyZXZp
c2lvbiAyMDI5NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0YWNrTGF5b3V0
UGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTgsNyArMTE4LDcgQEAgcHVibGljOgogICAg
ICAgICAgICAgCiAgICAgICAgICAgICBpZiAoaW5saW5lQ2FsbEZyYW1lLT5pc1ZhcmFyZ3MoKSkg
ewogICAgICAgICAgICAgICAgIHVzZWRMb2NhbHMuc2V0KFZpcnR1YWxSZWdpc3RlcigKLSAgICAg
ICAgICAgICAgICAgICAgSlNTdGFjazo6QXJndW1lbnRDb3VudCArIGlubGluZUNhbGxGcmFtZS0+
c3RhY2tPZmZzZXQpLnRvTG9jYWwoKSk7CisgICAgICAgICAgICAgICAgICAgIENhbGxGcmFtZUhl
YWRlcjo6QXJndW1lbnRDb3VudCArIGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQpLnRvTG9j
YWwoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGZvciAodW5z
aWduZWQgYXJndW1lbnQgPSBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5zaXplKCk7IGFyZ3Vt
ZW50LS0gPiAxOykgewpAQCAtMTg0LDcgKzE4NCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIAog
ICAgICAgICAgICAgaWYgKGlubGluZUNhbGxGcmFtZS0+aXNWYXJhcmdzKCkpIHsKICAgICAgICAg
ICAgICAgICBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50Q291bnRSZWdpc3RlciA9IGFzc2lnbigK
LSAgICAgICAgICAgICAgICAgICAgYWxsb2NhdGlvbiwgVmlydHVhbFJlZ2lzdGVyKGlubGluZUNh
bGxGcmFtZS0+c3RhY2tPZmZzZXQgKyBKU1N0YWNrOjpBcmd1bWVudENvdW50KSk7CisgICAgICAg
ICAgICAgICAgICAgIGFsbG9jYXRpb24sIFZpcnR1YWxSZWdpc3RlcihpbmxpbmVDYWxsRnJhbWUt
PnN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lSGVhZGVyOjpBcmd1bWVudENvdW50KSk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgYXJndW1lbnQg
PSBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5zaXplKCk7IGFyZ3VtZW50LS0gPiAxOykgewpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaHVua3MuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVGh1bmtzLmNwcAkocmV2aXNpb24gMjAy
OTU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaHVua3MuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMTEsNyArMTExLDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIG9zckVudHJ5
VGh1bmtHZW5lcgogICAgIHB0cmRpZmZfdCBvZmZzZXRPZkZyYW1lU2l6ZSA9IDA7IC8vIFRoaXMg
aXMgdGhlIERGRyBmcmFtZSBjb3VudC4KICAgICBwdHJkaWZmX3Qgb2Zmc2V0T2ZUYXJnZXRQQyA9
IG9mZnNldE9mRnJhbWVTaXplICsgc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKTsKICAgICBwdHJkaWZm
X3Qgb2Zmc2V0T2ZQYXlsb2FkID0gb2Zmc2V0T2ZUYXJnZXRQQyArIHNpemVvZihFbmNvZGVkSlNW
YWx1ZSk7Ci0gICAgcHRyZGlmZl90IG9mZnNldE9mTG9jYWxzID0gb2Zmc2V0T2ZQYXlsb2FkICsg
c2l6ZW9mKFJlZ2lzdGVyKSAqIEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlclNpemU7CisgICAgcHRy
ZGlmZl90IG9mZnNldE9mTG9jYWxzID0gb2Zmc2V0T2ZQYXlsb2FkICsgc2l6ZW9mKFJlZ2lzdGVy
KSAqIENhbGxGcmFtZUhlYWRlcjo6U2l6ZTsKICAgICAKICAgICBqaXQubW92ZShHUFJJbmZvOjpy
ZXR1cm5WYWx1ZUdQUjIsIEdQUkluZm86OnJlZ1QwKTsKICAgICBqaXQubG9hZFB0cihNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhHUFJJbmZvOjpyZWdUMCwgb2Zmc2V0T2ZGcmFtZVNpemUpLCBHUFJJ
bmZvOjpyZWdUMSk7IC8vIExvYWQgdGhlIGZyYW1lIHNpemUuCkBAIC0xMjgsNyArMTI4LDcgQEAg
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmIG9zckVudHJ5VGh1bmtHZW5lcgogICAgIGppdC5sb2FkMzIo
TWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleChHUFJJbmZvOjpyZWdUMCwgR1BSSW5mbzo6cmVnVDEs
IE1hY3JvQXNzZW1ibGVyOjpUaW1lc0VpZ2h0LCBvZmZzZXRPZkxvY2FscyArIHNpemVvZihpbnQz
Ml90KSksIEdQUkluZm86OnJlZ1QzKTsKICAgICBqaXQuc3RvcmUzMihHUFJJbmZvOjpyZWdUMiwg
TWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleChHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BS
SW5mbzo6cmVnVDQsIE1hY3JvQXNzZW1ibGVyOjpUaW1lc0VpZ2h0LCAtc3RhdGljX2Nhc3Q8aW50
cHRyX3Q+KHNpemVvZihSZWdpc3RlcikpKSk7CiAgICAgaml0LnN0b3JlMzIoR1BSSW5mbzo6cmVn
VDMsIE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIs
IEdQUkluZm86OnJlZ1Q0LCBNYWNyb0Fzc2VtYmxlcjo6VGltZXNFaWdodCwgLXN0YXRpY19jYXN0
PGludHB0cl90PihzaXplb2YoUmVnaXN0ZXIpKSArIHN0YXRpY19jYXN0PGludHB0cl90PihzaXpl
b2YoaW50MzJfdCkpKSk7Ci0gICAgaml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1
YWwsIEdQUkluZm86OnJlZ1QxLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihiaXR3aXNl
X2Nhc3Q8dm9pZCo+KC1zdGF0aWNfY2FzdDxpbnRwdHJfdD4oSlNTdGFjazo6Q2FsbEZyYW1lSGVh
ZGVyU2l6ZSkpKSkubGlua1RvKGxvb3AsICZqaXQpOworICAgIGppdC5icmFuY2hQdHIoTWFjcm9B
c3NlbWJsZXI6Ok5vdEVxdWFsLCBHUFJJbmZvOjpyZWdUMSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0
ZWRJbW1QdHIoYml0d2lzZV9jYXN0PHZvaWQqPigtc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KENhbGxG
cmFtZUhlYWRlcjo6U2l6ZSkpKSkubGlua1RvKGxvb3AsICZqaXQpOwogICAgIAogICAgIGppdC5s
b2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKEdQUkluZm86OnJlZ1QwLCBvZmZzZXRPZlRh
cmdldFBDKSwgR1BSSW5mbzo6cmVnVDEpOwogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG9rID0g
aml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6QWJvdmUsIEdQUkluZm86OnJlZ1QxLCBNYWNy
b0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0
PGludHB0cl90PigxMDAwKSkpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
TGluay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5r
LmNwcAkocmV2aXNpb24gMjAyOTU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExM
aW5rLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMwLDcgKzEzMCw3IEBAIHZvaWQgbGluayhTdGF0
ZSYgc3RhdGUpCiAgICAgICAgIENDYWxsSGVscGVyczo6SnVtcExpc3QgbWFpblBhdGhKdW1wczsK
ICAgICAKICAgICAgICAgaml0LmxvYWQzMigKLSAgICAgICAgICAgIGZyYW1lLndpdGhPZmZzZXQo
c2l6ZW9mKFJlZ2lzdGVyKSAqIEpTU3RhY2s6OkFyZ3VtZW50Q291bnQpLAorICAgICAgICAgICAg
ZnJhbWUud2l0aE9mZnNldChzaXplb2YoUmVnaXN0ZXIpICogQ2FsbEZyYW1lSGVhZGVyOjpBcmd1
bWVudENvdW50KSwKICAgICAgICAgICAgIEdQUkluZm86OnJlZ1QxKTsKICAgICAgICAgbWFpblBh
dGhKdW1wcy5hcHBlbmQoaml0LmJyYW5jaDMyKAogICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpB
Ym92ZU9yRXF1YWwsIEdQUkluZm86OnJlZ1QxLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAkocmV2aXNpb24gMjAyOTU0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xODUsNyArMTg1LDcgQEAgcHVibGljOgogICAgICAgICBtX3Byb2MuYWRkRmFzdENvbnN0YW50
KG1fdGFnVHlwZU51bWJlci0+a2V5KCkpOwogICAgICAgICBtX3Byb2MuYWRkRmFzdENvbnN0YW50
KG1fdGFnTWFzay0+a2V5KCkpOwogICAgICAgICAKLSAgICAgICAgbV9vdXQuc3RvcmVQdHIobV9v
dXQuY29uc3RJbnRQdHIoY29kZUJsb2NrKCkpLCBhZGRyZXNzRm9yKEpTU3RhY2s6OkNvZGVCbG9j
aykpOworICAgICAgICBtX291dC5zdG9yZVB0cihtX291dC5jb25zdEludFB0cihjb2RlQmxvY2so
KSksIGFkZHJlc3NGb3IoQ2FsbEZyYW1lSGVhZGVyOjpDb2RlQmxvY2spKTsKIAogICAgICAgICAv
LyBTdGFjayBPdmVyZmxvdyBDaGVjay4KICAgICAgICAgdW5zaWduZWQgZXhpdEZyYW1lU2l6ZSA9
IG1fZ3JhcGgucmVxdWlyZWRSZWdpc3RlckNvdW50Rm9yRXhpdCgpICogc2l6ZW9mKFJlZ2lzdGVy
KTsKQEAgLTIxMiw3ICsyMTIsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgIHN0YWNr
T3ZlcmZsb3cubGluaygmaml0KTsKICAgICAgICAgICAgICAgICAgICAgaml0LnN0b3JlMzIoCiAg
ICAgICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKGNhbGxT
aXRlSW5kZXguYml0cygpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6
dGFnRm9yKFZpcnR1YWxSZWdpc3RlcihKU1N0YWNrOjpBcmd1bWVudENvdW50KSkpOworICAgICAg
ICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjp0YWdGb3IoVmlydHVhbFJlZ2lzdGVyKENh
bGxGcmFtZUhlYWRlcjo6QXJndW1lbnRDb3VudCkpKTsKICAgICAgICAgICAgICAgICAgICAgaml0
LmNvcHlDYWxsZWVTYXZlc1RvVk1FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNCdWZmZXIoKTsKIAogICAg
ICAgICAgICAgICAgICAgICBqaXQubW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BS
SW5mbzo6YXJndW1lbnRHUFIwKTsKQEAgLTMwNDYsNyArMzA0Niw3IEBAIHByaXZhdGU6CiAgICAg
ICAgIGVsc2UgewogICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIGFyZ3VtZW50Q291bnRSZWdp
c3RlcjsKICAgICAgICAgICAgIGlmICghaW5saW5lQ2FsbEZyYW1lKQotICAgICAgICAgICAgICAg
IGFyZ3VtZW50Q291bnRSZWdpc3RlciA9IFZpcnR1YWxSZWdpc3RlcihKU1N0YWNrOjpBcmd1bWVu
dENvdW50KTsKKyAgICAgICAgICAgICAgICBhcmd1bWVudENvdW50UmVnaXN0ZXIgPSBWaXJ0dWFs
UmVnaXN0ZXIoQ2FsbEZyYW1lSGVhZGVyOjpBcmd1bWVudENvdW50KTsKICAgICAgICAgICAgIGVs
c2UKICAgICAgICAgICAgICAgICBhcmd1bWVudENvdW50UmVnaXN0ZXIgPSBpbmxpbmVDYWxsRnJh
bWUtPmFyZ3VtZW50Q291bnRSZWdpc3RlcjsKICAgICAgICAgICAgIGxpbWl0ID0gbV9vdXQuc3Vi
KG1fb3V0LmxvYWQzMihwYXlsb2FkRm9yKGFyZ3VtZW50Q291bnRSZWdpc3RlcikpLCBtX291dC5p
bnQzMk9uZSk7CkBAIC00NzI3LDEyICs0NzI3LDEyIEBAIHByaXZhdGU6CiAgICAgCiAgICAgdm9p
ZCBjb21waWxlR2V0Q2FsbGVlKCkKICAgICB7Ci0gICAgICAgIHNldEpTVmFsdWUobV9vdXQubG9h
ZFB0cihhZGRyZXNzRm9yKEpTU3RhY2s6OkNhbGxlZSkpKTsKKyAgICAgICAgc2V0SlNWYWx1ZSht
X291dC5sb2FkUHRyKGFkZHJlc3NGb3IoQ2FsbEZyYW1lSGVhZGVyOjpDYWxsZWUpKSk7CiAgICAg
fQogICAgIAogICAgIHZvaWQgY29tcGlsZUdldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCkK
ICAgICB7Ci0gICAgICAgIHNldEludDMyKG1fb3V0LmxvYWQzMihwYXlsb2FkRm9yKEpTU3RhY2s6
OkFyZ3VtZW50Q291bnQpKSk7CisgICAgICAgIHNldEludDMyKG1fb3V0LmxvYWQzMihwYXlsb2Fk
Rm9yKENhbGxGcmFtZUhlYWRlcjo6QXJndW1lbnRDb3VudCkpKTsKICAgICB9CiAgICAgCiAgICAg
dm9pZCBjb21waWxlR2V0U2NvcGUoKQpAQCAtNTA1Nyw3ICs1MDU3LDcgQEAgcHJpdmF0ZToKIAog
ICAgICAgICBMVmFsdWUganNDYWxsZWUgPSBsb3dKU1ZhbHVlKG1fZ3JhcGgudmFyQXJnQ2hpbGQo
bm9kZSwgMCkpOwogCi0gICAgICAgIHVuc2lnbmVkIGZyYW1lU2l6ZSA9IEpTU3RhY2s6OkNhbGxG
cmFtZUhlYWRlclNpemUgKyBudW1BcmdzOworICAgICAgICB1bnNpZ25lZCBmcmFtZVNpemUgPSBD
YWxsRnJhbWVIZWFkZXI6OlNpemUgKyBudW1BcmdzOwogICAgICAgICB1bnNpZ25lZCBhbGlnbmVk
RnJhbWVTaXplID0gV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mKHN0YWNrQWxpZ25tZW50UmVnaXN0
ZXJzKCksIGZyYW1lU2l6ZSk7CiAKICAgICAgICAgLy8gSlMtPkpTIGNhbGxpbmcgY29udmVudGlv
biByZXF1aXJlcyB0aGF0IHRoZSBjYWxsZXIgYWxsb3dzIHRoaXMgbXVjaCBzcGFjZSBvbiB0b3Ag
b2Ygc3RhY2sgdG8KQEAgLTUwODAsMTIgKzUwODAsMTIgQEAgcHJpdmF0ZToKIAogICAgICAgICBh
dXRvIGFkZEFyZ3VtZW50ID0gWyZdIChMVmFsdWUgdmFsdWUsIFZpcnR1YWxSZWdpc3RlciByZWcs
IGludCBvZmZzZXQpIHsKICAgICAgICAgICAgIGludHB0cl90IG9mZnNldEZyb21TUCA9Ci0gICAg
ICAgICAgICAgICAgKHJlZy5vZmZzZXQoKSAtIEpTU3RhY2s6OkNhbGxlckZyYW1lQW5kUENTaXpl
KSAqIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkgKyBvZmZzZXQ7CisgICAgICAgICAgICAgICAgKHJl
Zy5vZmZzZXQoKSAtIENhbGxGcmFtZUhlYWRlcjo6Q2FsbGVyRnJhbWVBbmRQQ1NpemUpICogc2l6
ZW9mKEVuY29kZWRKU1ZhbHVlKSArIG9mZnNldDsKICAgICAgICAgICAgIGFyZ3VtZW50cy5hcHBl
bmQoQ29uc3RyYWluZWRWYWx1ZSh2YWx1ZSwgVmFsdWVSZXA6OnN0YWNrQXJndW1lbnQob2Zmc2V0
RnJvbVNQKSkpOwogICAgICAgICB9OwogCi0gICAgICAgIGFkZEFyZ3VtZW50KGpzQ2FsbGVlLCBW
aXJ0dWFsUmVnaXN0ZXIoSlNTdGFjazo6Q2FsbGVlKSwgMCk7Ci0gICAgICAgIGFkZEFyZ3VtZW50
KG1fb3V0LmNvbnN0SW50MzIobnVtQXJncyksIFZpcnR1YWxSZWdpc3RlcihKU1N0YWNrOjpBcmd1
bWVudENvdW50KSwgUGF5bG9hZE9mZnNldCk7CisgICAgICAgIGFkZEFyZ3VtZW50KGpzQ2FsbGVl
LCBWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lSGVhZGVyOjpDYWxsZWUpLCAwKTsKKyAgICAgICAg
YWRkQXJndW1lbnQobV9vdXQuY29uc3RJbnQzMihudW1BcmdzKSwgVmlydHVhbFJlZ2lzdGVyKENh
bGxGcmFtZUhlYWRlcjo6QXJndW1lbnRDb3VudCksIFBheWxvYWRPZmZzZXQpOwogICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtQXJnczsgKytpKQogICAgICAgICAgICAgYWRkQXJn
dW1lbnQobG93SlNWYWx1ZShtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEgKyBpKSksIHZpcnR1
YWxSZWdpc3RlckZvckFyZ3VtZW50KGkpLCAwKTsKIApAQCAtNTExMiw3ICs1MTEyLDcgQEAgcHJp
dmF0ZToKIAogICAgICAgICAgICAgICAgIGppdC5zdG9yZTMyKAogICAgICAgICAgICAgICAgICAg
ICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihjYWxsU2l0ZUluZGV4LmJpdHMoKSksCi0gICAg
ICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6dGFnRm9yKFZpcnR1YWxSZWdpc3RlcihKU1N0
YWNrOjpBcmd1bWVudENvdW50KSkpOworICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6
OnRhZ0ZvcihWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lSGVhZGVyOjpBcmd1bWVudENvdW50KSkp
OwogCiAgICAgICAgICAgICAgICAgQ2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8gPSBqaXQuY29k
ZUJsb2NrKCktPmFkZENhbGxMaW5rSW5mbygpOwogCkBAIC01MjMwLDcgKzUyMzAsNyBAQCBwcml2
YXRlOgogICAgICAgICAgICAgICAgIC8vIHdpdGggdGhlIGNhbGwgc2l0ZSBpbmRleCBvZiBvdXIg
ZnJhbWUuIEJhZCB0aGluZ3MgaGFwcGVuIGlmIGl0J3Mgbm90IHNldC4KICAgICAgICAgICAgICAg
ICBqaXQuc3RvcmUzMigKICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVk
SW1tMzIoY2FsbFNpdGVJbmRleC5iaXRzKCkpLAotICAgICAgICAgICAgICAgICAgICBDQ2FsbEhl
bHBlcnM6OnRhZ0ZvcihWaXJ0dWFsUmVnaXN0ZXIoSlNTdGFjazo6QXJndW1lbnRDb3VudCkpKTsK
KyAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjp0YWdGb3IoVmlydHVhbFJlZ2lzdGVy
KENhbGxGcmFtZUhlYWRlcjo6QXJndW1lbnRDb3VudCkpKTsKIAogICAgICAgICAgICAgICAgIENh
bGxGcmFtZVNodWZmbGVyIHNsb3dQYXRoU2h1ZmZsZXIoaml0LCBzaHVmZmxlRGF0YSk7CiAgICAg
ICAgICAgICAgICAgc2xvd1BhdGhTaHVmZmxlci5zZXRDYWxsZWVKU1ZhbHVlUmVncyhKU1ZhbHVl
UmVncyhHUFJJbmZvOjpyZWdUMCkpOwpAQCAtNTMzNSw3ICs1MzM1LDcgQEAgcHJpdmF0ZToKIAog
ICAgICAgICAgICAgICAgIGppdC5zdG9yZTMyKAogICAgICAgICAgICAgICAgICAgICBDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW0zMihjYWxsU2l0ZUluZGV4LmJpdHMoKSksCi0gICAgICAgICAgICAg
ICAgICAgIENDYWxsSGVscGVyczo6dGFnRm9yKFZpcnR1YWxSZWdpc3RlcihKU1N0YWNrOjpBcmd1
bWVudENvdW50KSkpOworICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OnRhZ0ZvcihW
aXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lSGVhZGVyOjpBcmd1bWVudENvdW50KSkpOwogCiAgICAg
ICAgICAgICAgICAgQ2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8gPSBqaXQuY29kZUJsb2NrKCkt
PmFkZENhbGxMaW5rSW5mbygpOwogICAgICAgICAgICAgICAgIENhbGxWYXJhcmdzRGF0YSogZGF0
YSA9IG5vZGUtPmNhbGxWYXJhcmdzRGF0YSgpOwpAQCAtNTQ2NCw3ICs1NDY0LDcgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgICAgICAgICAgdGhpc0xhdGVSZXAuZW1pdFJlc3RvcmUoaml0LCB0aGlz
R1BSKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAg
ICAgaml0LnN0b3JlNjQoR1BSSW5mbzo6cmVnVDAsIENDYWxsSGVscGVyczo6Y2FsbGVlRnJhbWVT
bG90KEpTU3RhY2s6OkNhbGxlZSkpOworICAgICAgICAgICAgICAgIGppdC5zdG9yZTY0KEdQUklu
Zm86OnJlZ1QwLCBDQ2FsbEhlbHBlcnM6OmNhbGxlZUZyYW1lU2xvdChDYWxsRnJhbWVIZWFkZXI6
OkNhbGxlZSkpOwogICAgICAgICAgICAgICAgIGppdC5zdG9yZTY0KHRoaXNHUFIsIENDYWxsSGVs
cGVyczo6Y2FsbGVlQXJndW1lbnRTbG90KDApKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAg
ICAgICAgICBDYWxsTGlua0luZm86OkNhbGxUeXBlIGNhbGxUeXBlOwpAQCAtNzE0Nyw3ICs3MTQ3
LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICBtX291dC5zdG9yZVB0cihtX2NhbGxGcmFtZSwgcGFj
a2V0LCBtX2hlYXBzLlNoYWRvd0NoaWNrZW5fUGFja2V0X2ZyYW1lKTsKICAgICAgICAgbV9vdXQu
c3RvcmVQdHIobV9vdXQubG9hZFB0cihhZGRyZXNzRm9yKDApKSwgcGFja2V0LCBtX2hlYXBzLlNo
YWRvd0NoaWNrZW5fUGFja2V0X2NhbGxlckZyYW1lKTsKLSAgICAgICAgbV9vdXQuc3RvcmVQdHIo
bV9vdXQubG9hZFB0cihwYXlsb2FkRm9yKEpTU3RhY2s6OkNhbGxlZSkpLCBwYWNrZXQsIG1faGVh
cHMuU2hhZG93Q2hpY2tlbl9QYWNrZXRfY2FsbGVlKTsKKyAgICAgICAgbV9vdXQuc3RvcmVQdHIo
bV9vdXQubG9hZFB0cihwYXlsb2FkRm9yKENhbGxGcmFtZUhlYWRlcjo6Q2FsbGVlKSksIHBhY2tl
dCwgbV9oZWFwcy5TaGFkb3dDaGlja2VuX1BhY2tldF9jYWxsZWUpOwogICAgICAgICBtX291dC5z
dG9yZVB0cihzY29wZSwgcGFja2V0LCBtX2hlYXBzLlNoYWRvd0NoaWNrZW5fUGFja2V0X3Njb3Bl
KTsKICAgICB9CiAgICAgCkBAIC03MjE1LDcgKzcyMTUsNyBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgCiAgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgYXJndW1lbnRDb3VudFJlZ2lzdGVyOwog
ICAgICAgICAgICAgaWYgKCFpbmxpbmVDYWxsRnJhbWUpCi0gICAgICAgICAgICAgICAgYXJndW1l
bnRDb3VudFJlZ2lzdGVyID0gVmlydHVhbFJlZ2lzdGVyKEpTU3RhY2s6OkFyZ3VtZW50Q291bnQp
OworICAgICAgICAgICAgICAgIGFyZ3VtZW50Q291bnRSZWdpc3RlciA9IFZpcnR1YWxSZWdpc3Rl
cihDYWxsRnJhbWVIZWFkZXI6OkFyZ3VtZW50Q291bnQpOwogICAgICAgICAgICAgZWxzZQogICAg
ICAgICAgICAgICAgIGFyZ3VtZW50Q291bnRSZWdpc3RlciA9IGlubGluZUNhbGxGcmFtZS0+YXJn
dW1lbnRDb3VudFJlZ2lzdGVyOwogICAgICAgICAgICAgbGVuZ3RoLnZhbHVlID0gbV9vdXQuc3Vi
KG1fb3V0LmxvYWQzMihwYXlsb2FkRm9yKGFyZ3VtZW50Q291bnRSZWdpc3RlcikpLCBtX291dC5p
bnQzMk9uZSk7CkBAIC03MjM2LDcgKzcyMzYsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAg
IHJldHVybiBtX291dC5sb2FkUHRyKGFkZHJlc3NGb3IoZnJhbWUtPmNhbGxlZVJlY292ZXJ5LnZp
cnR1YWxSZWdpc3RlcigpKSk7CiAgICAgICAgICAgICByZXR1cm4gd2Vha1BvaW50ZXIoZnJhbWUt
PmNhbGxlZVJlY292ZXJ5LmNvbnN0YW50KCkuYXNDZWxsKCkpOwogICAgICAgICB9Ci0gICAgICAg
IHJldHVybiBtX291dC5sb2FkUHRyKGFkZHJlc3NGb3IoSlNTdGFjazo6Q2FsbGVlKSk7CisgICAg
ICAgIHJldHVybiBtX291dC5sb2FkUHRyKGFkZHJlc3NGb3IoQ2FsbEZyYW1lSGVhZGVyOjpDYWxs
ZWUpKTsKICAgICB9CiAgICAgCiAgICAgTFZhbHVlIGdldEFyZ3VtZW50c1N0YXJ0KElubGluZUNh
bGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lKQpAQCAtMTA2ODAsNyArMTA2ODAsNyBAQCBwcml2YXRl
OgogICAgICAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXggPSBtX2Z0bFN0YXRlLmppdENv
ZGUtPmNvbW1vbi5hZGRDb2RlT3JpZ2luKGNvZGVPcmlnaW4pOwogICAgICAgICBtX291dC5zdG9y
ZTMyKAogICAgICAgICAgICAgbV9vdXQuY29uc3RJbnQzMihjYWxsU2l0ZUluZGV4LmJpdHMoKSks
Ci0gICAgICAgICAgICB0YWdGb3IoSlNTdGFjazo6QXJndW1lbnRDb3VudCkpOworICAgICAgICAg
ICAgdGFnRm9yKENhbGxGcmFtZUhlYWRlcjo6QXJndW1lbnRDb3VudCkpOwogICAgIH0KIAogICAg
IHZvaWQgY2FsbFByZWZsaWdodCgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TE9TUkV4aXRDb21waWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExPU1JFeGl0Q29tcGlsZXIuY3BwCShyZXZpc2lvbiAyMDI5NTQpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkV4aXRDb21waWxlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM5NCw3ICszOTQsNyBAQCBzdGF0aWMgdm9pZCBjb21waWxlU3R1YigKICAgICAgICAgaml0
LnN0b3JlNjQoR1BSSW5mbzo6cmVnVDAsIHVud2luZFNjcmF0Y2ggKyBpKTsKICAgICB9CiAgICAg
Ci0gICAgaml0LmxvYWQzMihDQ2FsbEhlbHBlcnM6OnBheWxvYWRGb3IoSlNTdGFjazo6QXJndW1l
bnRDb3VudCksIEdQUkluZm86OnJlZ1QyKTsKKyAgICBqaXQubG9hZDMyKENDYWxsSGVscGVyczo6
cGF5bG9hZEZvcihDYWxsRnJhbWVIZWFkZXI6OkFyZ3VtZW50Q291bnQpLCBHUFJJbmZvOjpyZWdU
Mik7CiAgICAgCiAgICAgLy8gTGV0J3Mgc2F5IHRoYXQgdGhlIEZUTCBmdW5jdGlvbiBoYWQgZmFp
bGVkIGl0cyBhcml0eSBjaGVjay4gSW4gdGhhdCBjYXNlLCB0aGUgc3RhY2sgd2lsbAogICAgIC8v
IGNvbnRhaW4gc29tZSBleHRyYSBzdHVmZi4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMU2xvd1BhdGhDYWxsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExTbG93UGF0aENhbGwuaAkocmV2aXNpb24gMjAyOTU0KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExTbG93UGF0aENhbGwuaAkod29ya2luZyBjb3B5KQpAQCAtMTAzLDcg
KzEwMyw3IEBAIFNsb3dQYXRoQ2FsbCBjYWxsT3BlcmF0aW9uKAogICAgIGlmIChjYWxsU2l0ZUlu
ZGV4KSB7CiAgICAgICAgIGppdC5zdG9yZTMyKAogICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpU
cnVzdGVkSW1tMzIoY2FsbFNpdGVJbmRleC5iaXRzKCkpLAotICAgICAgICAgICAgQ0NhbGxIZWxw
ZXJzOjp0YWdGb3IoSlNTdGFjazo6QXJndW1lbnRDb3VudCkpOworICAgICAgICAgICAgQ0NhbGxI
ZWxwZXJzOjp0YWdGb3IoQ2FsbEZyYW1lSGVhZGVyOjpBcmd1bWVudENvdW50KSk7CiAgICAgfQog
ICAgIHJldHVybiBjYWxsT3BlcmF0aW9uKHVzZWRSZWdpc3RlcnMsIGppdCwgZXhjZXB0aW9uVGFy
Z2V0LCBmdW5jdGlvbiwgcmVzdWx0R1BSLCBhcmd1bWVudHMuLi4pOwogfQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5jcHAJKHJldmlzaW9u
IDIwMjk1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NiwxMiArNzYsMTIgQEAgYm9vbCBDYWxsRnJhbWU6OmNh
bGxTaXRlQml0c0FyZUNvZGVPcmlnaQogCiB1bnNpZ25lZCBDYWxsRnJhbWU6OmNhbGxTaXRlQXNS
YXdCaXRzKCkgY29uc3QKIHsKLSAgICByZXR1cm4gdGhpc1tKU1N0YWNrOjpBcmd1bWVudENvdW50
XS50YWcoKTsKKyAgICByZXR1cm4gdGhpc1tDYWxsRnJhbWVIZWFkZXI6OkFyZ3VtZW50Q291bnRd
LnRhZygpOwogfQogCiBTVVBQUkVTU19BU0FOIHVuc2lnbmVkIENhbGxGcmFtZTo6dW5zYWZlQ2Fs
bFNpdGVBc1Jhd0JpdHMoKSBjb25zdAogewotICAgIHJldHVybiB0aGlzW0pTU3RhY2s6OkFyZ3Vt
ZW50Q291bnRdLnVuc2FmZVRhZygpOworICAgIHJldHVybiB0aGlzW0NhbGxGcmFtZUhlYWRlcjo6
QXJndW1lbnRDb3VudF0udW5zYWZlVGFnKCk7CiB9CiAKIENhbGxTaXRlSW5kZXggQ2FsbEZyYW1l
OjpjYWxsU2l0ZUluZGV4KCkgY29uc3QKQEAgLTExMSw3ICsxMTEsNyBAQCBJbnN0cnVjdGlvbiog
Q2FsbEZyYW1lOjpjdXJyZW50VlBDKCkgY29uCiB2b2lkIENhbGxGcmFtZTo6c2V0Q3VycmVudFZQ
QyhJbnN0cnVjdGlvbiogdnBjKQogewogICAgIENhbGxTaXRlSW5kZXggY2FsbFNpdGUodnBjKTsK
LSAgICB0aGlzW0pTU3RhY2s6OkFyZ3VtZW50Q291bnRdLnRhZygpID0gY2FsbFNpdGUuYml0cygp
OworICAgIHRoaXNbQ2FsbEZyYW1lSGVhZGVyOjpBcmd1bWVudENvdW50XS50YWcoKSA9IGNhbGxT
aXRlLmJpdHMoKTsKIH0KIAogdW5zaWduZWQgQ2FsbEZyYW1lOjpjYWxsU2l0ZUJpdHNBc0J5dGVj
b2RlT2Zmc2V0KCkgY29uc3QKQEAgLTEzMSw3ICsxMzEsNyBAQCBJbnN0cnVjdGlvbiogQ2FsbEZy
YW1lOjpjdXJyZW50VlBDKCkgY29uCiB2b2lkIENhbGxGcmFtZTo6c2V0Q3VycmVudFZQQyhJbnN0
cnVjdGlvbiogdnBjKQogewogICAgIENhbGxTaXRlSW5kZXggY2FsbFNpdGUodnBjIC0gY29kZUJs
b2NrKCktPmluc3RydWN0aW9ucygpLmJlZ2luKCkpOwotICAgIHRoaXNbSlNTdGFjazo6QXJndW1l
bnRDb3VudF0udGFnKCkgPSBzdGF0aWNfY2FzdDxpbnQzMl90PihjYWxsU2l0ZS5iaXRzKCkpOwor
ICAgIHRoaXNbQ2FsbEZyYW1lSGVhZGVyOjpBcmd1bWVudENvdW50XS50YWcoKSA9IHN0YXRpY19j
YXN0PGludDMyX3Q+KGNhbGxTaXRlLmJpdHMoKSk7CiB9CiAKIHVuc2lnbmVkIENhbGxGcmFtZTo6
Y2FsbFNpdGVCaXRzQXNCeXRlY29kZU9mZnNldCgpIGNvbnN0CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oCShyZXZpc2lvbiAyMDI5NTQpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNyArMSw3IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAxIEhh
cnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCiAgKiAgQ29weXJpZ2h0IChDKSAyMDAxIFBldGVy
IEtlbGx5IChwbWtAcG9zdC5jb20pCi0gKiAgQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA3LCAyMDA4
LCAyMDExLCAyMDEzLTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENv
cHlyaWdodCAoQykgMjAwMywgMjAwNy0yMDA4LCAyMDExLCAyMDEzLTIwMTYgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTI0LDcgKzI0LDYg
QEAKICNkZWZpbmUgQ2FsbEZyYW1lX2gKIAogI2luY2x1ZGUgIkFic3RyYWN0UEMuaCIKLSNpbmNs
dWRlICJKU1N0YWNrLmgiCiAjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgiCiAjaW5j
bHVkZSAiUmVnaXN0ZXIuaCIKICNpbmNsdWRlICJTdGFja1Zpc2l0b3IuaCIKQEAgLTM0LDkgKzMz
LDE0IEBACiBuYW1lc3BhY2UgSlNDICB7CiAKICAgICBjbGFzcyBBcmd1bWVudHM7CisgICAgY2xh
c3MgRXhlY1N0YXRlOwogICAgIGNsYXNzIEludGVycHJldGVyOwogICAgIGNsYXNzIEpTU2NvcGU7
CiAKKyAgICBzdHJ1Y3QgSW5zdHJ1Y3Rpb247CisKKyAgICB0eXBlZGVmIEV4ZWNTdGF0ZSBDYWxs
RnJhbWU7CisKICAgICBzdHJ1Y3QgQ2FsbFNpdGVJbmRleCB7CiAgICAgICAgIENhbGxTaXRlSW5k
ZXgoKQogICAgICAgICAgICAgOiBtX2JpdHMoVUlOVF9NQVgpCkBAIC02MCwxNSArNjQsMzQgQEAg
bmFtZXNwYWNlIEpTQyAgewogICAgICAgICB1aW50MzJfdCBtX2JpdHM7CiAgICAgfTsKIAorICAg
IHN0cnVjdCBDYWxsZXJGcmFtZUFuZFBDIHsKKyAgICAgICAgQ2FsbEZyYW1lKiBjYWxsZXJGcmFt
ZTsKKyAgICAgICAgSW5zdHJ1Y3Rpb24qIHBjOworICAgIH07CisKKyAgICBzdHJ1Y3QgQ2FsbEZy
YW1lSGVhZGVyIHsKKyAgICAgICAgZW51bSBFbnRyeSB7CisgICAgICAgICAgICBDYWxsZXJGcmFt
ZUFuZFBDU2l6ZSA9IHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSAvIHNpemVvZihSZWdpc3Rlciks
CisgICAgICAgICAgICBDb2RlQmxvY2sgPSBDYWxsZXJGcmFtZUFuZFBDU2l6ZSwKKyAgICAgICAg
ICAgIENhbGxlZSwKKyAgICAgICAgICAgIEFyZ3VtZW50Q291bnQsCisgICAgICAgICAgICBTaXpl
LAorICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBUaGUgZm9sbG93aW5nIGVudHJpZXMgYXJl
IG5vdCBwYXJ0IG9mIHRoZSBDYWxsRnJhbWVIZWFkZXIgYnV0IGFyZSBwcm92aWRlZCBoZXJlIGFz
IGEgY29udmVuaWVuY2U6CisgICAgICAgICAgICBUaGlzQXJndW1lbnQgPSBTaXplLAorICAgICAg
ICAgICAgRmlyc3RBcmd1bWVudCwKKyAgICAgICAgfTsKKyAgICB9OworCiAgICAgLy8gUmVwcmVz
ZW50cyB0aGUgY3VycmVudCBzdGF0ZSBvZiBzY3JpcHQgZXhlY3V0aW9uLgogICAgIC8vIFBhc3Nl
ZCBhcyB0aGUgZmlyc3QgYXJndW1lbnQgdG8gbW9zdCBmdW5jdGlvbnMuCiAgICAgY2xhc3MgRXhl
Y1N0YXRlIDogcHJpdmF0ZSBSZWdpc3RlciB7CiAgICAgcHVibGljOgotICAgICAgICBKU1ZhbHVl
IGNhbGxlZUFzVmFsdWUoKSBjb25zdCB7IHJldHVybiB0aGlzW0pTU3RhY2s6OkNhbGxlZV0uanNW
YWx1ZSgpOyB9Ci0gICAgICAgIEpTT2JqZWN0KiBjYWxsZWUoKSBjb25zdCB7IHJldHVybiB0aGlz
W0pTU3RhY2s6OkNhbGxlZV0ub2JqZWN0KCk7IH0KLSAgICAgICAgU1VQUFJFU1NfQVNBTiBKU1Zh
bHVlIHVuc2FmZUNhbGxlZSgpIGNvbnN0IHsgcmV0dXJuIHRoaXNbSlNTdGFjazo6Q2FsbGVlXS5h
c2FuVW5zYWZlSlNWYWx1ZSgpOyB9Ci0gICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrKCkgY29u
c3QgeyByZXR1cm4gdGhpc1tKU1N0YWNrOjpDb2RlQmxvY2tdLlJlZ2lzdGVyOjpjb2RlQmxvY2so
KTsgfQotICAgICAgICBTVVBQUkVTU19BU0FOIENvZGVCbG9jayogdW5zYWZlQ29kZUJsb2NrKCkg
Y29uc3QgeyByZXR1cm4gdGhpc1tKU1N0YWNrOjpDb2RlQmxvY2tdLlJlZ2lzdGVyOjphc2FuVW5z
YWZlQ29kZUJsb2NrKCk7IH0KKyAgICAgICAgSlNWYWx1ZSBjYWxsZWVBc1ZhbHVlKCkgY29uc3Qg
eyByZXR1cm4gdGhpc1tDYWxsRnJhbWVIZWFkZXI6OkNhbGxlZV0uanNWYWx1ZSgpOyB9CisgICAg
ICAgIEpTT2JqZWN0KiBjYWxsZWUoKSBjb25zdCB7IHJldHVybiB0aGlzW0NhbGxGcmFtZUhlYWRl
cjo6Q2FsbGVlXS5vYmplY3QoKTsgfQorICAgICAgICBTVVBQUkVTU19BU0FOIEpTVmFsdWUgdW5z
YWZlQ2FsbGVlKCkgY29uc3QgeyByZXR1cm4gdGhpc1tDYWxsRnJhbWVIZWFkZXI6OkNhbGxlZV0u
YXNhblVuc2FmZUpTVmFsdWUoKTsgfQorICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaygpIGNv
bnN0IHsgcmV0dXJuIHRoaXNbQ2FsbEZyYW1lSGVhZGVyOjpDb2RlQmxvY2tdLlJlZ2lzdGVyOjpj
b2RlQmxvY2soKTsgfQorICAgICAgICBTVVBQUkVTU19BU0FOIENvZGVCbG9jayogdW5zYWZlQ29k
ZUJsb2NrKCkgY29uc3QgeyByZXR1cm4gdGhpc1tDYWxsRnJhbWVIZWFkZXI6OkNvZGVCbG9ja10u
UmVnaXN0ZXI6OmFzYW5VbnNhZmVDb2RlQmxvY2soKTsgfQogICAgICAgICBKU1Njb3BlKiBzY29w
ZShpbnQgc2NvcGVSZWdpc3Rlck9mZnNldCkgY29uc3QKICAgICAgICAgewogICAgICAgICAgICAg
QVNTRVJUKHRoaXNbc2NvcGVSZWdpc3Rlck9mZnNldF0uUmVnaXN0ZXI6OnNjb3BlKCkpOwpAQCAt
MTg1LDkgKzIwOCw5IEBAIG5hbWVzcGFjZSBKU0MgIHsKIAogICAgICAgICAvLyBBY2Nlc3MgdG8g
YXJndW1lbnRzIGFzIHBhc3NlZC4gKEFmdGVyIGNhcHR1cmUsIGFyZ3VtZW50cyBtYXkgbW92ZSB0
byBhIGRpZmZlcmVudCBsb2NhdGlvbi4pCiAgICAgICAgIHNpemVfdCBhcmd1bWVudENvdW50KCkg
Y29uc3QgeyByZXR1cm4gYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoKSAtIDE7IH0KLSAgICAg
ICAgc2l6ZV90IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCkgY29uc3QgeyByZXR1cm4gdGhp
c1tKU1N0YWNrOjpBcmd1bWVudENvdW50XS5wYXlsb2FkKCk7IH0KLSAgICAgICAgc3RhdGljIGlu
dCBhcmd1bWVudE9mZnNldChpbnQgYXJndW1lbnQpIHsgcmV0dXJuIChKU1N0YWNrOjpGaXJzdEFy
Z3VtZW50ICsgYXJndW1lbnQpOyB9Ci0gICAgICAgIHN0YXRpYyBpbnQgYXJndW1lbnRPZmZzZXRJ
bmNsdWRpbmdUaGlzKGludCBhcmd1bWVudCkgeyByZXR1cm4gKEpTU3RhY2s6OlRoaXNBcmd1bWVu
dCArIGFyZ3VtZW50KTsgfQorICAgICAgICBzaXplX3QgYXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMoKSBjb25zdCB7IHJldHVybiB0aGlzW0NhbGxGcmFtZUhlYWRlcjo6QXJndW1lbnRDb3VudF0u
cGF5bG9hZCgpOyB9CisgICAgICAgIHN0YXRpYyBpbnQgYXJndW1lbnRPZmZzZXQoaW50IGFyZ3Vt
ZW50KSB7IHJldHVybiAoQ2FsbEZyYW1lSGVhZGVyOjpGaXJzdEFyZ3VtZW50ICsgYXJndW1lbnQp
OyB9CisgICAgICAgIHN0YXRpYyBpbnQgYXJndW1lbnRPZmZzZXRJbmNsdWRpbmdUaGlzKGludCBh
cmd1bWVudCkgeyByZXR1cm4gKENhbGxGcmFtZUhlYWRlcjo6VGhpc0FyZ3VtZW50ICsgYXJndW1l
bnQpOyB9CiAKICAgICAgICAgLy8gSW4gdGhlIGZvbGxvd2luZyAoYXJndW1lbnQoKSBhbmQgc2V0
QXJndW1lbnQoKSksIHRoZSAnYXJndW1lbnQnCiAgICAgICAgIC8vIHBhcmFtZXRlciBpcyB0aGUg
aW5kZXggb2YgdGhlIGFyZ3VtZW50cyBvZiB0aGUgdGFyZ2V0IGZ1bmN0aW9uIG9mCkBAIC0yMzMs
MTMgKzI1NiwxMyBAQCBuYW1lc3BhY2UgSlNDICB7CiAKICAgICAgICAgSlNWYWx1ZSBhcmd1bWVu
dEFmdGVyQ2FwdHVyZShzaXplX3QgYXJndW1lbnQpOwogCi0gICAgICAgIHN0YXRpYyBpbnQgb2Zm
c2V0Rm9yKHNpemVfdCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykgeyByZXR1cm4gYXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMgKyBKU1N0YWNrOjpUaGlzQXJndW1lbnQgLSAxOyB9CisgICAg
ICAgIHN0YXRpYyBpbnQgb2Zmc2V0Rm9yKHNpemVfdCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhp
cykgeyByZXR1cm4gYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgKyBDYWxsRnJhbWVIZWFkZXI6
OlRoaXNBcmd1bWVudCAtIDE7IH0KIAogICAgICAgICBzdGF0aWMgQ2FsbEZyYW1lKiBub0NhbGxl
cigpIHsgcmV0dXJuIDA7IH0KIAotICAgICAgICB2b2lkIHNldEFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzKGludCBjb3VudCkgeyBzdGF0aWNfY2FzdDxSZWdpc3Rlcio+KHRoaXMpW0pTU3RhY2s6
OkFyZ3VtZW50Q291bnRdLnBheWxvYWQoKSA9IGNvdW50OyB9Ci0gICAgICAgIHZvaWQgc2V0Q2Fs
bGVlKEpTT2JqZWN0KiBjYWxsZWUpIHsgc3RhdGljX2Nhc3Q8UmVnaXN0ZXIqPih0aGlzKVtKU1N0
YWNrOjpDYWxsZWVdID0gY2FsbGVlOyB9Ci0gICAgICAgIHZvaWQgc2V0Q29kZUJsb2NrKENvZGVC
bG9jayogY29kZUJsb2NrKSB7IHN0YXRpY19jYXN0PFJlZ2lzdGVyKj4odGhpcylbSlNTdGFjazo6
Q29kZUJsb2NrXSA9IGNvZGVCbG9jazsgfQorICAgICAgICB2b2lkIHNldEFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzKGludCBjb3VudCkgeyBzdGF0aWNfY2FzdDxSZWdpc3Rlcio+KHRoaXMpW0Nh
bGxGcmFtZUhlYWRlcjo6QXJndW1lbnRDb3VudF0ucGF5bG9hZCgpID0gY291bnQ7IH0KKyAgICAg
ICAgdm9pZCBzZXRDYWxsZWUoSlNPYmplY3QqIGNhbGxlZSkgeyBzdGF0aWNfY2FzdDxSZWdpc3Rl
cio+KHRoaXMpW0NhbGxGcmFtZUhlYWRlcjo6Q2FsbGVlXSA9IGNhbGxlZTsgfQorICAgICAgICB2
b2lkIHNldENvZGVCbG9jayhDb2RlQmxvY2sqIGNvZGVCbG9jaykgeyBzdGF0aWNfY2FzdDxSZWdp
c3Rlcio+KHRoaXMpW0NhbGxGcmFtZUhlYWRlcjo6Q29kZUJsb2NrXSA9IGNvZGVCbG9jazsgfQog
ICAgICAgICB2b2lkIHNldFJldHVyblBDKHZvaWQqIHZhbHVlKSB7IGNhbGxlckZyYW1lQW5kUEMo
KS5wYyA9IHJlaW50ZXJwcmV0X2Nhc3Q8SW5zdHJ1Y3Rpb24qPih2YWx1ZSk7IH0KIAogICAgICAg
ICBTdHJpbmcgZnJpZW5kbHlGdW5jdGlvbk5hbWUoKTsKQEAgLTI3OSwxMCArMzAyLDEwIEBAIG5h
bWVzcGFjZSBKU0MgIHsKICAgICAgICAgICAgIGludCBvZmZzZXQgPSByZWcgLSB0aGlzLT5yZWdp
c3RlcnMoKTsKIAogICAgICAgICAgICAgLy8gVGhlIG9mZnNldCBpcyBkZWZpbmVkIChiYXNlZCBv
biBhcmd1bWVudE9mZnNldCgpKSB0byBiZToKLSAgICAgICAgICAgIC8vICAgICAgIG9mZnNldCA9
IEpTU3RhY2s6OkZpcnN0QXJndW1lbnQgLSBhcmdJbmRleDsKKyAgICAgICAgICAgIC8vICAgICAg
IG9mZnNldCA9IENhbGxGcmFtZUhlYWRlcjo6Rmlyc3RBcmd1bWVudCAtIGFyZ0luZGV4OwogICAg
ICAgICAgICAgLy8gSGVuY2U6Ci0gICAgICAgICAgICAvLyAgICAgICBhcmdJbmRleCA9IEpTU3Rh
Y2s6OkZpcnN0QXJndW1lbnQgLSBvZmZzZXQ7Ci0gICAgICAgICAgICBzaXplX3QgYXJnSW5kZXgg
PSBvZmZzZXQgLSBKU1N0YWNrOjpGaXJzdEFyZ3VtZW50OworICAgICAgICAgICAgLy8gICAgICAg
YXJnSW5kZXggPSBDYWxsRnJhbWVIZWFkZXI6OkZpcnN0QXJndW1lbnQgLSBvZmZzZXQ7CisgICAg
ICAgICAgICBzaXplX3QgYXJnSW5kZXggPSBvZmZzZXQgLSBDYWxsRnJhbWVIZWFkZXI6OkZpcnN0
QXJndW1lbnQ7CiAgICAgICAgICAgICByZXR1cm4gYXJnSW5kZXg7CiAgICAgICAgIH0KIApAQCAt
MjkwLDcgKzMxMyw5IEBAIG5hbWVzcGFjZSBKU0MgIHsKICAgICAgICAgY29uc3QgQ2FsbGVyRnJh
bWVBbmRQQyYgY2FsbGVyRnJhbWVBbmRQQygpIGNvbnN0IHsgcmV0dXJuICpyZWludGVycHJldF9j
YXN0PGNvbnN0IENhbGxlckZyYW1lQW5kUEMqPih0aGlzKTsgfQogICAgICAgICBTVVBQUkVTU19B
U0FOIGNvbnN0IENhbGxlckZyYW1lQW5kUEMmIHVuc2FmZUNhbGxlckZyYW1lQW5kUEMoKSBjb25z
dCB7IHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDxjb25zdCBDYWxsZXJGcmFtZUFuZFBDKj4odGhp
cyk7IH0KIAorI2lmICFFTkFCTEUoSklUKQogICAgICAgICBmcmllbmQgY2xhc3MgSlNTdGFjazsK
KyNlbmRpZgogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCShyZXZpc2lvbiAy
MDI5NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MDEsOCArNDAxLDggQEAgdm9pZCBJbnRlcnByZXRlcjo6
ZHVtcFJlZ2lzdGVycyhDYWxsRnJhbQogICAgIGNvbnN0IFJlZ2lzdGVyKiBpdDsKICAgICBjb25z
dCBSZWdpc3RlciogZW5kOwogCi0gICAgaXQgPSBjYWxsRnJhbWUtPnJlZ2lzdGVycygpICsgSlNT
dGFjazo6VGhpc0FyZ3VtZW50ICsgY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCk7Ci0gICAgZW5k
ID0gY2FsbEZyYW1lLT5yZWdpc3RlcnMoKSArIEpTU3RhY2s6OlRoaXNBcmd1bWVudCAtIDE7Cisg
ICAgaXQgPSBjYWxsRnJhbWUtPnJlZ2lzdGVycygpICsgQ2FsbEZyYW1lSGVhZGVyOjpUaGlzQXJn
dW1lbnQgKyBjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKTsKKyAgICBlbmQgPSBjYWxsRnJhbWUt
PnJlZ2lzdGVycygpICsgQ2FsbEZyYW1lSGVhZGVyOjpUaGlzQXJndW1lbnQgLSAxOwogICAgIHdo
aWxlIChpdCA+IGVuZCkgewogICAgICAgICBKU1ZhbHVlIHYgPSBpdC0+anNWYWx1ZSgpOwogICAg
ICAgICBpbnQgcmVnaXN0ZXJOdW1iZXIgPSBpdCAtIGNhbGxGcmFtZS0+cmVnaXN0ZXJzKCk7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIu
aAkocmV2aXNpb24gMjAyOTU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVy
L0ludGVycHJldGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2MiwxMiArMjYyLDEyIEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICAvLyBhbGlnbmVkIHNpemUuIEFsaWduIHRoZSBzaXplIGhlcmUu
CiAgICAgICAgIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzID0gV1RGOjpyb3VuZFVwVG9NdWx0
aXBsZU9mKAogICAgICAgICAgICAgc3RhY2tBbGlnbm1lbnRSZWdpc3RlcnMoKSwKLSAgICAgICAg
ICAgIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzICsgSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVy
U2l6ZSkgLSBKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJTaXplOworICAgICAgICAgICAgYXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMgKyBDYWxsRnJhbWVIZWFkZXI6OlNpemUpIC0gQ2FsbEZyYW1l
SGVhZGVyOjpTaXplOwogCiAgICAgICAgIC8vIEFsaWduIHRoZSBmcmFtZSBvZmZzZXQgaGVyZS4K
ICAgICAgICAgdW5zaWduZWQgcGFkZGVkQ2FsbGVlRnJhbWVPZmZzZXQgPSBXVEY6OnJvdW5kVXBU
b011bHRpcGxlT2YoCiAgICAgICAgICAgICBzdGFja0FsaWdubWVudFJlZ2lzdGVycygpLAotICAg
ICAgICAgICAgbnVtVXNlZFN0YWNrU2xvdHMgKyBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyAr
IEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlclNpemUpOworICAgICAgICAgICAgbnVtVXNlZFN0YWNr
U2xvdHMgKyBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyArIENhbGxGcmFtZUhlYWRlcjo6U2l6
ZSk7CiAgICAgICAgIHJldHVybiBDYWxsRnJhbWU6OmNyZWF0ZShjYWxsRnJhbWUtPnJlZ2lzdGVy
cygpIC0gcGFkZGVkQ2FsbGVlRnJhbWVPZmZzZXQpOwogICAgIH0KIApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0pTU3RhY2suaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSlNTdGFjay5oCShyZXZpc2lvbiAyMDI5NTQpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSlNTdGFjay5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yOSw3ICsyOSw2IEBACiAjaWZuZGVmIEpTU3RhY2tfaAogI2RlZmluZSBKU1N0YWNr
X2gKIAotI2luY2x1ZGUgIkV4ZWN1dGFibGVBbGxvY2F0b3IuaCIKICNpbmNsdWRlICJSZWdpc3Rl
ci5oIgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9QYWdlUmVz
ZXJ2YXRpb24uaD4KQEAgLTM5LDM0ICszOCwxMyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNs
YXNzIENvZGVCbG9ja1NldDsKICAgICBjbGFzcyBDb25zZXJ2YXRpdmVSb290czsKLSAgICBjbGFz
cyBFeGVjU3RhdGU7CiAgICAgY2xhc3MgSklUU3R1YlJvdXRpbmVTZXQ7CiAgICAgY2xhc3MgVk07
CiAgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogCi0gICAgc3RydWN0IEluc3RydWN0
aW9uOwotICAgIHR5cGVkZWYgRXhlY1N0YXRlIENhbGxGcmFtZTsKLQotICAgIHN0cnVjdCBDYWxs
ZXJGcmFtZUFuZFBDIHsKLSAgICAgICAgQ2FsbEZyYW1lKiBjYWxsZXJGcmFtZTsKLSAgICAgICAg
SW5zdHJ1Y3Rpb24qIHBjOwotICAgIH07Ci0KICAgICBjbGFzcyBKU1N0YWNrIHsKICAgICAgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoSlNTdGFjayk7CiAgICAgcHVibGljOgotICAgICAgICBlbnVt
IENhbGxGcmFtZUhlYWRlckVudHJ5IHsKLSAgICAgICAgICAgIENhbGxlckZyYW1lQW5kUENTaXpl
ID0gc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpIC8gc2l6ZW9mKFJlZ2lzdGVyKSwKLSAgICAgICAg
ICAgIENvZGVCbG9jayA9IENhbGxlckZyYW1lQW5kUENTaXplLAotICAgICAgICAgICAgQ2FsbGVl
LAotICAgICAgICAgICAgQXJndW1lbnRDb3VudCwKLSAgICAgICAgICAgIENhbGxGcmFtZUhlYWRl
clNpemUsCi0KLSAgICAgICAgICAgIC8vIFRoZSBmb2xsb3dpbmcgZW50cmllcyBhcmUgbm90IHBh
cnQgb2YgdGhlIENhbGxGcmFtZUhlYWRlciBidXQgYXJlIHByb3ZpZGVkIGhlcmUgYXMgYSBjb252
ZW5pZW5jZToKLSAgICAgICAgICAgIFRoaXNBcmd1bWVudCA9IENhbGxGcmFtZUhlYWRlclNpemUs
Ci0gICAgICAgICAgICBGaXJzdEFyZ3VtZW50LAotICAgICAgICB9OwotCiAgICAgICAgIC8vIEFs
bG93IDhrIG9mIGV4Y2VzcyByZWdpc3RlcnMgYmVmb3JlIHdlIHN0YXJ0IHRyeWluZyB0byByZWFw
IHRoZSBzdGFjawogICAgICAgICBzdGF0aWMgY29uc3QgcHRyZGlmZl90IG1heEV4Y2Vzc0NhcGFj
aXR5ID0gOCAqIDEwMjQ7CiAKQEAgLTc3LDEwICs1NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICBib29sIGNvbnRhaW5zQWRkcmVzcyhSZWdpc3RlciogYWRkcmVzcykgeyByZXR1cm4gKGxv
d0FkZHJlc3MoKSA8PSBhZGRyZXNzICYmIGFkZHJlc3MgPCBoaWdoQWRkcmVzcygpKTsgfQogICAg
ICAgICBzdGF0aWMgc2l6ZV90IGNvbW1pdHRlZEJ5dGVDb3VudCgpOwogCi0jaWYgRU5BQkxFKEpJ
VCkKLSAgICAgICAgdm9pZCBnYXRoZXJDb25zZXJ2YXRpdmVSb290cyhDb25zZXJ2YXRpdmVSb290
cyYsIEpJVFN0dWJSb3V0aW5lU2V0JiwgQ29kZUJsb2NrU2V0JikgeyB9Ci0gICAgICAgIHZvaWQg
c2FuaXRpemVTdGFjaygpIHsgfQotI2Vsc2UKKyNpZiAhRU5BQkxFKEpJVCkKICAgICAgICAgfkpT
U3RhY2soKTsKIAogICAgICAgICB2b2lkIGdhdGhlckNvbnNlcnZhdGl2ZVJvb3RzKENvbnNlcnZh
dGl2ZVJvb3RzJiwgSklUU3R1YlJvdXRpbmVTZXQmLCBDb2RlQmxvY2tTZXQmKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAJKHJldmlzaW9u
IDIwMjk1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjkzLDcgKzI5Myw3IEBAIHZvaWQgQXNzZW1ibHlIZWxwZXJz
OjpqaXRBc3NlcnRJc051bGwoR1AKIAogdm9pZCBBc3NlbWJseUhlbHBlcnM6OmppdEFzc2VydEFy
Z3VtZW50Q291bnRTYW5lKCkKIHsKLSAgICBKdW1wIG9rID0gYnJhbmNoMzIoQmVsb3csIHBheWxv
YWRGb3IoSlNTdGFjazo6QXJndW1lbnRDb3VudCksIFRydXN0ZWRJbW0zMigxMDAwMDAwMCkpOwor
ICAgIEp1bXAgb2sgPSBicmFuY2gzMihCZWxvdywgcGF5bG9hZEZvcihDYWxsRnJhbWVIZWFkZXI6
OkFyZ3VtZW50Q291bnQpLCBUcnVzdGVkSW1tMzIoMTAwMDAwMDApKTsKICAgICBhYm9ydFdpdGhS
ZWFzb24oQUhJbnNhbmVBcmd1bWVudENvdW50KTsKICAgICBvay5saW5rKHRoaXMpOwogfQpAQCAt
NTQ0LDcgKzU0NCw3IEBAIHZvaWQgQXNzZW1ibHlIZWxwZXJzOjplbWl0UmFuZG9tVGh1bmsoSlMK
IAogdm9pZCBBc3NlbWJseUhlbHBlcnM6OmVtaXRSYW5kb21UaHVuayhHUFJSZWcgc2NyYXRjaDAs
IEdQUlJlZyBzY3JhdGNoMSwgR1BSUmVnIHNjcmF0Y2gyLCBHUFJSZWcgc2NyYXRjaDMsIEZQUlJl
ZyByZXN1bHQpCiB7Ci0gICAgZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXJQdHIoSlNTdGFjazo6
Q2FsbGVlLCBzY3JhdGNoMyk7CisgICAgZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXJQdHIoQ2Fs
bEZyYW1lSGVhZGVyOjpDYWxsZWUsIHNjcmF0Y2gzKTsKICAgICBlbWl0TG9hZFN0cnVjdHVyZShz
Y3JhdGNoMywgc2NyYXRjaDMsIHNjcmF0Y2gwKTsKICAgICBsb2FkUHRyKEFkZHJlc3Moc2NyYXRj
aDMsIFN0cnVjdHVyZTo6Z2xvYmFsT2JqZWN0T2Zmc2V0KCkpLCBzY3JhdGNoMyk7CiAgICAgLy8g
Tm93LCBzY3JhdGNoMyBob2xkcyBKU0dsb2JhbE9iamVjdCouCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgJKHJldmlzaW9uIDIwMjk1NCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgJKHdvcmtpbmcgY29weSkK
QEAgLTU2MCwyNiArNTYwLDI2IEBAIHB1YmxpYzoKICAgICB9CiAjZW5kaWYKIAotICAgIHZvaWQg
ZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXJQdHIoSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyRW50
cnkgZW50cnksIEdQUlJlZyB0bywgR1BSUmVnIGZyb20gPSBHUFJJbmZvOjpjYWxsRnJhbWVSZWdp
c3RlcikKKyAgICB2b2lkIGVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyUHRyKENhbGxGcmFtZUhl
YWRlcjo6RW50cnkgZW50cnksIEdQUlJlZyB0bywgR1BSUmVnIGZyb20gPSBHUFJJbmZvOjpjYWxs
RnJhbWVSZWdpc3RlcikKICAgICB7CiAgICAgICAgIGxvYWRQdHIoQWRkcmVzcyhmcm9tLCBlbnRy
eSAqIHNpemVvZihSZWdpc3RlcikpLCB0byk7CiAgICAgfQotICAgIHZvaWQgZW1pdEdldEZyb21D
YWxsRnJhbWVIZWFkZXIzMihKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJFbnRyeSBlbnRyeSwgR1BS
UmVnIHRvLCBHUFJSZWcgZnJvbSA9IEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyKQorICAgIHZv
aWQgZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXIzMihDYWxsRnJhbWVIZWFkZXI6OkVudHJ5IGVu
dHJ5LCBHUFJSZWcgdG8sIEdQUlJlZyBmcm9tID0gR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIp
CiAgICAgewogICAgICAgICBsb2FkMzIoQWRkcmVzcyhmcm9tLCBlbnRyeSAqIHNpemVvZihSZWdp
c3RlcikpLCB0byk7CiAgICAgfQogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgdm9pZCBlbWl0R2V0
RnJvbUNhbGxGcmFtZUhlYWRlcjY0KEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlckVudHJ5IGVudHJ5
LCBHUFJSZWcgdG8sIEdQUlJlZyBmcm9tID0gR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpCisg
ICAgdm9pZCBlbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlcjY0KENhbGxGcmFtZUhlYWRlcjo6RW50
cnkgZW50cnksIEdQUlJlZyB0bywgR1BSUmVnIGZyb20gPSBHUFJJbmZvOjpjYWxsRnJhbWVSZWdp
c3RlcikKICAgICB7CiAgICAgICAgIGxvYWQ2NChBZGRyZXNzKGZyb20sIGVudHJ5ICogc2l6ZW9m
KFJlZ2lzdGVyKSksIHRvKTsKICAgICB9CiAjZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkKLSAgICB2
b2lkIGVtaXRQdXRUb0NhbGxGcmFtZUhlYWRlcihHUFJSZWcgZnJvbSwgSlNTdGFjazo6Q2FsbEZy
YW1lSGVhZGVyRW50cnkgZW50cnkpCisgICAgdm9pZCBlbWl0UHV0VG9DYWxsRnJhbWVIZWFkZXIo
R1BSUmVnIGZyb20sIENhbGxGcmFtZUhlYWRlcjo6RW50cnkgZW50cnkpCiAgICAgewogICAgICAg
ICBzdG9yZVB0cihmcm9tLCBBZGRyZXNzKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBlbnRy
eSAqIHNpemVvZihSZWdpc3RlcikpKTsKICAgICB9CiAKLSAgICB2b2lkIGVtaXRQdXRUb0NhbGxG
cmFtZUhlYWRlcih2b2lkKiB2YWx1ZSwgSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyRW50cnkgZW50
cnkpCisgICAgdm9pZCBlbWl0UHV0VG9DYWxsRnJhbWVIZWFkZXIodm9pZCogdmFsdWUsIENhbGxG
cmFtZUhlYWRlcjo6RW50cnkgZW50cnkpCiAgICAgewogICAgICAgICBzdG9yZVB0cihUcnVzdGVk
SW1tUHRyKHZhbHVlKSwgQWRkcmVzcyhHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgZW50cnkg
KiBzaXplb2YoUmVnaXN0ZXIpKSk7CiAgICAgfQpAQCAtNjA5LDE3ICs2MDksMTcgQEAgcHVibGlj
OgogICAgIC8vIGNhbGxlcidzIGZyYW1lIHBvaW50ZXIuIE9uIHNvbWUgcGxhdGZvcm1zLCB0aGUg
Y2FsbGVlIGlzIHJlc3BvbnNpYmxlIGZvciBwdXNoaW5nIHRoZQogICAgIC8vICJsaW5rIHJlZ2lz
dGVyIiBjb250YWluaW5nIHRoZSByZXR1cm4gYWRkcmVzcyBpbiB0aGUgZnVuY3Rpb24gcHJvbG9n
dWUuCiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICB2b2lkIGVtaXRQdXRUb0NhbGxGcmFtZUhlYWRl
ckJlZm9yZVByb2xvZ3VlKEdQUlJlZyBmcm9tLCBKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJFbnRy
eSBlbnRyeSkKKyAgICB2b2lkIGVtaXRQdXRUb0NhbGxGcmFtZUhlYWRlckJlZm9yZVByb2xvZ3Vl
KEdQUlJlZyBmcm9tLCBDYWxsRnJhbWVIZWFkZXI6OkVudHJ5IGVudHJ5KQogICAgIHsKICAgICAg
ICAgc3RvcmVQdHIoZnJvbSwgQWRkcmVzcyhzdGFja1BvaW50ZXJSZWdpc3RlciwgZW50cnkgKiBz
dGF0aWNfY2FzdDxwdHJkaWZmX3Q+KHNpemVvZihSZWdpc3RlcikpIC0gcHJvbG9ndWVTdGFja1Bv
aW50ZXJEZWx0YSgpKSk7CiAgICAgfQogI2Vsc2UKLSAgICB2b2lkIGVtaXRQdXRQYXlsb2FkVG9D
YWxsRnJhbWVIZWFkZXJCZWZvcmVQcm9sb2d1ZShHUFJSZWcgZnJvbSwgSlNTdGFjazo6Q2FsbEZy
YW1lSGVhZGVyRW50cnkgZW50cnkpCisgICAgdm9pZCBlbWl0UHV0UGF5bG9hZFRvQ2FsbEZyYW1l
SGVhZGVyQmVmb3JlUHJvbG9ndWUoR1BSUmVnIGZyb20sIENhbGxGcmFtZUhlYWRlcjo6RW50cnkg
ZW50cnkpCiAgICAgewogICAgICAgICBzdG9yZVB0cihmcm9tLCBBZGRyZXNzKHN0YWNrUG9pbnRl
clJlZ2lzdGVyLCBlbnRyeSAqIHN0YXRpY19jYXN0PHB0cmRpZmZfdD4oc2l6ZW9mKFJlZ2lzdGVy
KSkgLSBwcm9sb2d1ZVN0YWNrUG9pbnRlckRlbHRhKCkgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2Rl
ZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnBheWxvYWQpKSk7CiAgICAgfQogCi0gICAgdm9pZCBl
bWl0UHV0VGFnVG9DYWxsRnJhbWVIZWFkZXJCZWZvcmVQcm9sb2d1ZShUcnVzdGVkSW1tMzIgdGFn
LCBKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJFbnRyeSBlbnRyeSkKKyAgICB2b2lkIGVtaXRQdXRU
YWdUb0NhbGxGcmFtZUhlYWRlckJlZm9yZVByb2xvZ3VlKFRydXN0ZWRJbW0zMiB0YWcsIENhbGxG
cmFtZUhlYWRlcjo6RW50cnkgZW50cnkpCiAgICAgewogICAgICAgICBzdG9yZVB0cih0YWcsIEFk
ZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0ZXIsIGVudHJ5ICogc3RhdGljX2Nhc3Q8cHRyZGlmZl90
PihzaXplb2YoUmVnaXN0ZXIpKSAtIHByb2xvZ3VlU3RhY2tQb2ludGVyRGVsdGEoKSArIE9CSkVD
VF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMudGFnKSkpOwogICAgIH0K
QEAgLTkzMyw4ICs5MzMsOCBAQCBwdWJsaWM6CiAgICAgLy8gQWNjZXNzIHRvIG91ciBmaXhlZCBj
YWxsZWUgQ2FsbEZyYW1lLgogICAgIHN0YXRpYyBBZGRyZXNzIGNhbGxlZUZyYW1lU2xvdChpbnQg
c2xvdCkKICAgICB7Ci0gICAgICAgIEFTU0VSVChzbG90ID49IEpTU3RhY2s6OkNhbGxlckZyYW1l
QW5kUENTaXplKTsKLSAgICAgICAgcmV0dXJuIEFkZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0ZXIs
IHNpemVvZihSZWdpc3RlcikgKiAoc2xvdCAtIEpTU3RhY2s6OkNhbGxlckZyYW1lQW5kUENTaXpl
KSk7CisgICAgICAgIEFTU0VSVChzbG90ID49IENhbGxGcmFtZUhlYWRlcjo6Q2FsbGVyRnJhbWVB
bmRQQ1NpemUpOworICAgICAgICByZXR1cm4gQWRkcmVzcyhzdGFja1BvaW50ZXJSZWdpc3Rlciwg
c2l6ZW9mKFJlZ2lzdGVyKSAqIChzbG90IC0gQ2FsbEZyYW1lSGVhZGVyOjpDYWxsZXJGcmFtZUFu
ZFBDU2l6ZSkpOwogICAgIH0KIAogICAgIC8vIEFjY2VzcyB0byBvdXIgZml4ZWQgY2FsbGVlIENh
bGxGcmFtZS4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5j
cHAJKHJldmlzaW9uIDIwMjk1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxI
ZWxwZXJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBAQCB2b2lkIENDYWxsSGVs
cGVyczo6bG9nU2hhZG93Q2hpY2tlblByb2xvCiAgICAgc3RvcmVQdHIoR1BSSW5mbzo6Y2FsbEZy
YW1lUmVnaXN0ZXIsIEFkZHJlc3Moc2hhZG93UGFja2V0LCBPQkpFQ1RfT0ZGU0VUT0YoU2hhZG93
Q2hpY2tlbjo6UGFja2V0LCBmcmFtZSkpKTsKICAgICBsb2FkUHRyKEFkZHJlc3MoR1BSSW5mbzo6
Y2FsbEZyYW1lUmVnaXN0ZXIsIE9CSkVDVF9PRkZTRVRPRihDYWxsZXJGcmFtZUFuZFBDLCBjYWxs
ZXJGcmFtZSkpLCBzY3JhdGNoMSk7CiAgICAgc3RvcmVQdHIoc2NyYXRjaDEsIEFkZHJlc3Moc2hh
ZG93UGFja2V0LCBPQkpFQ1RfT0ZGU0VUT0YoU2hhZG93Q2hpY2tlbjo6UGFja2V0LCBjYWxsZXJG
cmFtZSkpKTsKLSAgICBsb2FkUHRyKGFkZHJlc3NGb3IoSlNTdGFjazo6Q2FsbGVlKSwgc2NyYXRj
aDEpOworICAgIGxvYWRQdHIoYWRkcmVzc0ZvcihDYWxsRnJhbWVIZWFkZXI6OkNhbGxlZSksIHNj
cmF0Y2gxKTsKICAgICBzdG9yZVB0cihzY3JhdGNoMSwgQWRkcmVzcyhzaGFkb3dQYWNrZXQsIE9C
SkVDVF9PRkZTRVRPRihTaGFkb3dDaGlja2VuOjpQYWNrZXQsIGNhbGxlZSkpKTsKICAgICBzdG9y
ZVB0cihzY29wZSwgQWRkcmVzcyhzaGFkb3dQYWNrZXQsIE9CSkVDVF9PRkZTRVRPRihTaGFkb3dD
aGlja2VuOjpQYWNrZXQsIHNjb3BlKSkpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9DQ2FsbEhlbHBlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0NDYWxsSGVscGVycy5oCShyZXZpc2lvbiAyMDI5NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0NDYWxsSGVscGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMjc4LDEzICsyMjc4
LDEzIEBAIHB1YmxpYzoKICAgICAgICAgICAgIEdQUlJlZyBvbGRGcmFtZVNpemVHUFIgPSB0ZW1w
MjsKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBHUFJSZWcgYXJnQ291bnRHUFIgPSBv
bGRGcmFtZVNpemVHUFI7Ci0gICAgICAgICAgICAgICAgbG9hZDMyKEFkZHJlc3MoZnJhbWVQb2lu
dGVyUmVnaXN0ZXIsIEpTU3RhY2s6OkFyZ3VtZW50Q291bnQgKiBzdGF0aWNfY2FzdDxpbnQ+KHNp
emVvZihSZWdpc3RlcikpICsgUGF5bG9hZE9mZnNldCksIGFyZ0NvdW50R1BSKTsKKyAgICAgICAg
ICAgICAgICBsb2FkMzIoQWRkcmVzcyhmcmFtZVBvaW50ZXJSZWdpc3RlciwgQ2FsbEZyYW1lSGVh
ZGVyOjpBcmd1bWVudENvdW50ICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSAr
IFBheWxvYWRPZmZzZXQpLCBhcmdDb3VudEdQUik7CiAKICAgICAgICAgICAgICAgICB7CiAgICAg
ICAgICAgICAgICAgICAgIEdQUlJlZyBudW1QYXJhbWV0ZXJzR1BSID0gdGVtcDE7CiAgICAgICAg
ICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgIEdQUlJlZyBjb2RlQmxvY2tH
UFIgPSBudW1QYXJhbWV0ZXJzR1BSOwotICAgICAgICAgICAgICAgICAgICAgICAgbG9hZFB0cihB
ZGRyZXNzKGZyYW1lUG9pbnRlclJlZ2lzdGVyLCBKU1N0YWNrOjpDb2RlQmxvY2sgKiBzdGF0aWNf
Y2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpKSwgY29kZUJsb2NrR1BSKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGxvYWRQdHIoQWRkcmVzcyhmcmFtZVBvaW50ZXJSZWdpc3RlciwgQ2FsbEZy
YW1lSGVhZGVyOjpDb2RlQmxvY2sgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3Rlcikp
KSwgY29kZUJsb2NrR1BSKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGxvYWQzMihBZGRyZXNz
KGNvZGVCbG9ja0dQUiwgQ29kZUJsb2NrOjpvZmZzZXRPZk51bVBhcmFtZXRlcnMoKSksIG51bVBh
cmFtZXRlcnNHUFIpOwogICAgICAgICAgICAgICAgICAgICB9CiAKQEAgLTIyOTQsNyArMjI5NCw3
IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgYXJndW1lbnRDb3VudFdhc05vdEZpeGVk
VXAubGluayh0aGlzKTsKICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICBhZGQz
MihUcnVzdGVkSW1tMzIoc3RhY2tBbGlnbm1lbnRSZWdpc3RlcnMoKSArIEpTU3RhY2s6OkNhbGxG
cmFtZUhlYWRlclNpemUgLSAxKSwgYXJnQ291bnRHUFIsIG9sZEZyYW1lU2l6ZUdQUik7CisgICAg
ICAgICAgICAgICAgYWRkMzIoVHJ1c3RlZEltbTMyKHN0YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCkg
KyBDYWxsRnJhbWVIZWFkZXI6OlNpemUgLSAxKSwgYXJnQ291bnRHUFIsIG9sZEZyYW1lU2l6ZUdQ
Uik7CiAgICAgICAgICAgICAgICAgYW5kMzIoVHJ1c3RlZEltbTMyKC1zdGFja0FsaWdubWVudFJl
Z2lzdGVycygpKSwgb2xkRnJhbWVTaXplR1BSKTsKICAgICAgICAgICAgICAgICAvLyBXZSBhc3N1
bWUgPCAyXjI4IGFyZ3VtZW50cwogICAgICAgICAgICAgICAgIG11bDMyKFRydXN0ZWRJbW0zMihz
aXplb2YoUmVnaXN0ZXIpKSwgb2xkRnJhbWVTaXplR1BSLCBvbGRGcmFtZVNpemVHUFIpOwpAQCAt
MjMwNyw5ICsyMzA3LDkgQEAgcHVibGljOgogICAgICAgICAgICAgLy8gVGhlIG5ldyBmcmFtZSBz
aXplIGlzIGp1c3QgdGhlIG51bWJlciBvZiBhcmd1bWVudHMgcGx1cyB0aGUKICAgICAgICAgICAg
IC8vIGZyYW1lIGhlYWRlciBzaXplLCBhbGlnbmVkCiAgICAgICAgICAgICBBU1NFUlQobmV3RnJh
bWVTaXplR1BSICE9IG5ld0ZyYW1lUG9pbnRlcik7Ci0gICAgICAgICAgICBsb2FkMzIoQWRkcmVz
cyhzdGFja1BvaW50ZXJSZWdpc3RlciwgSlNTdGFjazo6QXJndW1lbnRDb3VudCAqIHN0YXRpY19j
YXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkgKyBQYXlsb2FkT2Zmc2V0IC0gc2l6ZW9mKENhbGxl
ckZyYW1lQW5kUEMpKSwKKyAgICAgICAgICAgIGxvYWQzMihBZGRyZXNzKHN0YWNrUG9pbnRlclJl
Z2lzdGVyLCBDYWxsRnJhbWVIZWFkZXI6OkFyZ3VtZW50Q291bnQgKiBzdGF0aWNfY2FzdDxpbnQ+
KHNpemVvZihSZWdpc3RlcikpICsgUGF5bG9hZE9mZnNldCAtIHNpemVvZihDYWxsZXJGcmFtZUFu
ZFBDKSksCiAgICAgICAgICAgICAgICAgbmV3RnJhbWVTaXplR1BSKTsKLSAgICAgICAgICAgIGFk
ZDMyKFRydXN0ZWRJbW0zMihzdGFja0FsaWdubWVudFJlZ2lzdGVycygpICsgSlNTdGFjazo6Q2Fs
bEZyYW1lSGVhZGVyU2l6ZSAtIDEpLCBuZXdGcmFtZVNpemVHUFIpOworICAgICAgICAgICAgYWRk
MzIoVHJ1c3RlZEltbTMyKHN0YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCkgKyBDYWxsRnJhbWVIZWFk
ZXI6OlNpemUgLSAxKSwgbmV3RnJhbWVTaXplR1BSKTsKICAgICAgICAgICAgIGFuZDMyKFRydXN0
ZWRJbW0zMigtc3RhY2tBbGlnbm1lbnRSZWdpc3RlcnMoKSksIG5ld0ZyYW1lU2l6ZUdQUik7CiAg
ICAgICAgICAgICAvLyBXZSBhc3N1bWUgPCAyXjI4IGFyZ3VtZW50cwogICAgICAgICAgICAgbXVs
MzIoVHJ1c3RlZEltbTMyKHNpemVvZihSZWdpc3RlcikpLCBuZXdGcmFtZVNpemVHUFIsIG5ld0Zy
YW1lU2l6ZUdQUik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NhbGxGcmFtZVNo
dWZmbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NhbGxG
cmFtZVNodWZmbGVyLmNwcAkocmV2aXNpb24gMjAyOTU0KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9DYWxsRnJhbWVTaHVmZmxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDExICsz
NiwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogQ2FsbEZyYW1lU2h1ZmZsZXI6OkNhbGxGcmFtZVNo
dWZmbGVyKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBDYWxsRnJhbWVTaHVmZmxlRGF0YSYgZGF0
YSkKICAgICA6IG1faml0KGppdCkKLSAgICAsIG1fb2xkRnJhbWUoZGF0YS5udW1Mb2NhbHMgKyBK
U1N0YWNrOjpDYWxsZXJGcmFtZUFuZFBDU2l6ZSwgbnVsbHB0cikKLSAgICAsIG1fbmV3RnJhbWUo
ZGF0YS5hcmdzLnNpemUoKSArIEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlclNpemUsIG51bGxwdHIp
Ci0gICAgLCBtX2FsaWduZWRPbGRGcmFtZVNpemUoSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyU2l6
ZQorICAgICwgbV9vbGRGcmFtZShkYXRhLm51bUxvY2FscyArIENhbGxGcmFtZUhlYWRlcjo6Q2Fs
bGVyRnJhbWVBbmRQQ1NpemUsIG51bGxwdHIpCisgICAgLCBtX25ld0ZyYW1lKGRhdGEuYXJncy5z
aXplKCkgKyBDYWxsRnJhbWVIZWFkZXI6OlNpemUsIG51bGxwdHIpCisgICAgLCBtX2FsaWduZWRP
bGRGcmFtZVNpemUoQ2FsbEZyYW1lSGVhZGVyOjpTaXplCiAgICAgICAgICsgcm91bmRBcmd1bWVu
dENvdW50VG9BbGlnbkZyYW1lKGppdC5jb2RlQmxvY2soKS0+bnVtUGFyYW1ldGVycygpKSkKLSAg
ICAsIG1fYWxpZ25lZE5ld0ZyYW1lU2l6ZShKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJTaXplCisg
ICAgLCBtX2FsaWduZWROZXdGcmFtZVNpemUoQ2FsbEZyYW1lSGVhZGVyOjpTaXplCiAgICAgICAg
ICsgcm91bmRBcmd1bWVudENvdW50VG9BbGlnbkZyYW1lKGRhdGEuYXJncy5zaXplKCkpKQogICAg
ICwgbV9mcmFtZURlbHRhKG1fYWxpZ25lZE5ld0ZyYW1lU2l6ZSAtIG1fYWxpZ25lZE9sZEZyYW1l
U2l6ZSkKICAgICAsIG1fbG9ja2VkUmVnaXN0ZXJzKFJlZ2lzdGVyU2V0OjphbGxSZWdpc3RlcnMo
KSkKQEAgLTU0LDcgKzU0LDcgQEAgQ2FsbEZyYW1lU2h1ZmZsZXI6OkNhbGxGcmFtZVNodWZmbGVy
KENDYQogICAgIG1fbG9ja2VkUmVnaXN0ZXJzLmV4Y2x1ZGUoUmVnaXN0ZXJTZXQ6OnZtQ2FsbGVl
U2F2ZVJlZ2lzdGVycygpKTsKIAogICAgIEFTU0VSVCghZGF0YS5jYWxsZWUuaXNJbkpTU3RhY2so
KSB8fCBkYXRhLmNhbGxlZS52aXJ0dWFsUmVnaXN0ZXIoKS5pc0xvY2FsKCkpOwotICAgIGFkZE5l
dyhWaXJ0dWFsUmVnaXN0ZXIoSlNTdGFjazo6Q2FsbGVlKSwgZGF0YS5jYWxsZWUpOworICAgIGFk
ZE5ldyhWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lSGVhZGVyOjpDYWxsZWUpLCBkYXRhLmNhbGxl
ZSk7CiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGRhdGEuYXJncy5zaXplKCk7ICsraSkg
ewogICAgICAgICBBU1NFUlQoIWRhdGEuYXJnc1tpXS5pc0luSlNTdGFjaygpIHx8IGRhdGEuYXJn
c1tpXS52aXJ0dWFsUmVnaXN0ZXIoKS5pc0xvY2FsKCkpOwpAQCAtMTQ1LDcgKzE0NSw3IEBAIHZv
aWQgQ2FsbEZyYW1lU2h1ZmZsZXI6OmR1bXAoUHJpbnRTdHJlYW0KICAgICAgICAgICAgICAgICAg
ICAgb3V0LnByaW50ZigiICVjJThzIDwtICUxOHMgJWMgIiwgZCwgc3RyLmRhdGEoKSwKICAgICAg
ICAgICAgICAgICAgICAgICAgIHJlY292ZXJ5U3RyLmRhdGEoKSwgZCk7CiAgICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgfSBlbHNlIGlmIChuZXdSZWcgPT0gVmlydHVhbFJlZ2lzdGVyIHsg
SlNTdGFjazo6QXJndW1lbnRDb3VudCB9KQorICAgICAgICAgICAgfSBlbHNlIGlmIChuZXdSZWcg
PT0gVmlydHVhbFJlZ2lzdGVyIHsgQ2FsbEZyYW1lSGVhZGVyOjpBcmd1bWVudENvdW50IH0pCiAg
ICAgICAgICAgICAgICAgb3V0LnByaW50ZigiICVjJThzIDwtICUxOHp1ICVjICIsIGQsIHN0ci5k
YXRhKCksIGFyZ0NvdW50KCksIGQpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAg
IG91dC5wcmludGYoIiAlYyUzMHMgJWMgIiwgZCwgIiIsIGQpOwpAQCAtMzIzLDcgKzMyMyw3IEBA
IHZvaWQgQ2FsbEZyYW1lU2h1ZmZsZXI6OmV4dGVuZEZyYW1lSWZOZWUKICAgICAgICAgbV9qaXQu
c3ViUHRyKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoZGVsdGEgKiBzaXplb2YoUmVnaXN0
ZXIpKSwgTWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKIAogICAgICAgICBp
ZiAoaXNTbG93UGF0aCgpKQotICAgICAgICAgICAgbV9mcmFtZURlbHRhID0gbnVtTG9jYWxzKCkg
KyBKU1N0YWNrOjpDYWxsZXJGcmFtZUFuZFBDU2l6ZTsKKyAgICAgICAgICAgIG1fZnJhbWVEZWx0
YSA9IG51bUxvY2FscygpICsgQ2FsbEZyYW1lSGVhZGVyOjpDYWxsZXJGcmFtZUFuZFBDU2l6ZTsK
ICAgICAgICAgZWxzZQogICAgICAgICAgICAgbV9vbGRGcmFtZU9mZnNldCA9IG51bUxvY2Fscygp
OwogCkBAIC0zMzksOSArMzM5LDkgQEAgdm9pZCBDYWxsRnJhbWVTaHVmZmxlcjo6cHJlcGFyZUZv
clNsb3dQYQogICAgIEFTU0VSVChpc1VuZGVjaWRlZCgpKTsKICAgICBlbWl0RGVsdGFDaGVjaygp
OwogCi0gICAgbV9mcmFtZURlbHRhID0gbnVtTG9jYWxzKCkgKyBKU1N0YWNrOjpDYWxsZXJGcmFt
ZUFuZFBDU2l6ZTsKKyAgICBtX2ZyYW1lRGVsdGEgPSBudW1Mb2NhbHMoKSArIENhbGxGcmFtZUhl
YWRlcjo6Q2FsbGVyRnJhbWVBbmRQQ1NpemU7CiAgICAgbV9uZXdGcmFtZUJhc2UgPSBNYWNyb0Fz
c2VtYmxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXI7Ci0gICAgbV9uZXdGcmFtZU9mZnNldCA9IC1K
U1N0YWNrOjpDYWxsZXJGcmFtZUFuZFBDU2l6ZTsKKyAgICBtX25ld0ZyYW1lT2Zmc2V0ID0gLUNh
bGxGcmFtZUhlYWRlcjo6Q2FsbGVyRnJhbWVBbmRQQ1NpemU7CiAKICAgICBpZiAodmVyYm9zZSkK
ICAgICAgICAgZGF0YUxvZygiXG5cblByZXBhcmluZyBmcmFtZSBmb3Igc2xvdyBwYXRoIGNhbGw6
XG4iKTsKQEAgLTQyMywxMSArNDIzLDExIEBAIHZvaWQgQ2FsbEZyYW1lU2h1ZmZsZXI6OnByZXBh
cmVGb3JUYWlsQ2EKICAgICAvLyBvbGQgZnJhbWUgKHRha2luZyBpbnRvIGFjY291bnQgYW4gYXJn
dW1lbnQgY291bnQgaGlnaGVyIHRoYW4KICAgICAvLyB0aGUgbnVtYmVyIG9mIHBhcmFtZXRlcnMp
LCB0aGVuIHN1YnN0cmFjdGluZyB0byBpdCB0aGUgYWxpZ25lZAogICAgIC8vIG5ldyBmcmFtZSBz
aXplIChhZGp1c3RlZCkuCi0gICAgbV9qaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBKU1N0YWNrOjpBcmd1bWVudENvdW50ICogc3Rh
dGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSArIFBheWxvYWRPZmZzZXQpLCBtX25ld0Zy
YW1lQmFzZSk7CisgICAgbV9qaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKEdQUklu
Zm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBDYWxsRnJhbWVIZWFkZXI6OkFyZ3VtZW50Q291bnQgKiBz
dGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpICsgUGF5bG9hZE9mZnNldCksIG1fbmV3
RnJhbWVCYXNlKTsKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBhcmd1bWVudENvdW50T0sgPQog
ICAgICAgICBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6QmVsb3dPckVxdWFsLCBtX25l
d0ZyYW1lQmFzZSwKICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIobV9q
aXQuY29kZUJsb2NrKCktPm51bVBhcmFtZXRlcnMoKSkpOwotICAgIG1faml0LmFkZDMyKE1hY3Jv
QXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoc3RhY2tBbGlnbm1lbnRSZWdpc3RlcnMoKSAtIDEgKyBK
U1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJTaXplKSwgbV9uZXdGcmFtZUJhc2UpOworICAgIG1faml0
LmFkZDMyKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoc3RhY2tBbGlnbm1lbnRSZWdpc3Rl
cnMoKSAtIDEgKyBDYWxsRnJhbWVIZWFkZXI6OlNpemUpLCBtX25ld0ZyYW1lQmFzZSk7CiAgICAg
bV9qaXQuYW5kMzIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMigtc3RhY2tBbGlnbm1lbnRS
ZWdpc3RlcnMoKSksIG1fbmV3RnJhbWVCYXNlKTsKICAgICBtX2ppdC5tdWwzMihNYWNyb0Fzc2Vt
Ymxlcjo6VHJ1c3RlZEltbTMyKHNpemVvZihSZWdpc3RlcikpLCBtX25ld0ZyYW1lQmFzZSwgbV9u
ZXdGcmFtZUJhc2UpOwogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGRvbmUgPSBtX2ppdC5qdW1w
KCk7CkBAIC03NDMsMTEgKzc0MywxMSBAQCB2b2lkIENhbGxGcmFtZVNodWZmbGVyOjpwcmVwYXJl
QW55KCkKICAgICAvLyBXZSBuZWVkIHRvIGhhbmRsZSA0KSBmaXJzdCBiZWNhdXNlIGl0IGltcGxp
ZXMgcmVsZWFzaW5nCiAgICAgLy8gbV9uZXdGcmFtZUJhc2UsIHdoaWNoIGNvdWxkIGJlIGEgd2Fu
dGVkIHJlZ2lzdGVyLgogICAgIGlmICh2ZXJib3NlKQotICAgICAgICBkYXRhTG9nKCIgICAqIFN0
b3JpbmcgdGhlIGFyZ3VtZW50IGNvdW50IGludG8gIiwgVmlydHVhbFJlZ2lzdGVyIHsgSlNTdGFj
azo6QXJndW1lbnRDb3VudCB9LCAiXG4iKTsKKyAgICAgICAgZGF0YUxvZygiICAgKiBTdG9yaW5n
IHRoZSBhcmd1bWVudCBjb3VudCBpbnRvICIsIFZpcnR1YWxSZWdpc3RlciB7IENhbGxGcmFtZUhl
YWRlcjo6QXJndW1lbnRDb3VudCB9LCAiXG4iKTsKICAgICBtX2ppdC5zdG9yZTMyKE1hY3JvQXNz
ZW1ibGVyOjpUcnVzdGVkSW1tMzIoMCksCi0gICAgICAgIGFkZHJlc3NGb3JOZXcoVmlydHVhbFJl
Z2lzdGVyIHsgSlNTdGFjazo6QXJndW1lbnRDb3VudCB9KS53aXRoT2Zmc2V0KFRhZ09mZnNldCkp
OworICAgICAgICBhZGRyZXNzRm9yTmV3KFZpcnR1YWxSZWdpc3RlciB7IENhbGxGcmFtZUhlYWRl
cjo6QXJndW1lbnRDb3VudCB9KS53aXRoT2Zmc2V0KFRhZ09mZnNldCkpOwogICAgIG1faml0LnN0
b3JlMzIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihhcmdDb3VudCgpKSwKLSAgICAgICAg
YWRkcmVzc0Zvck5ldyhWaXJ0dWFsUmVnaXN0ZXIgeyBKU1N0YWNrOjpBcmd1bWVudENvdW50IH0p
LndpdGhPZmZzZXQoUGF5bG9hZE9mZnNldCkpOworICAgICAgICBhZGRyZXNzRm9yTmV3KFZpcnR1
YWxSZWdpc3RlciB7IENhbGxGcmFtZUhlYWRlcjo6QXJndW1lbnRDb3VudCB9KS53aXRoT2Zmc2V0
KFBheWxvYWRPZmZzZXQpKTsKIAogICAgIGlmICghaXNTbG93UGF0aCgpKSB7CiAgICAgICAgIEFT
U0VSVChtX25ld0ZyYW1lQmFzZSAhPSBNYWNyb0Fzc2VtYmxlcjo6c3RhY2tQb2ludGVyUmVnaXN0
ZXIpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DYWxsRnJhbWVTaHVmZmxlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ2FsbEZyYW1lU2h1ZmZs
ZXIuaAkocmV2aXNpb24gMjAyOTU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DYWxs
RnJhbWVTaHVmZmxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDMsNyArMTAzLDcgQEAgcHVibGlj
OgogCiAgICAgICAgIENhbGxGcmFtZVNodWZmbGVEYXRhIGRhdGE7CiAgICAgICAgIGRhdGEubnVt
TG9jYWxzID0gbnVtTG9jYWxzKCk7Ci0gICAgICAgIGRhdGEuY2FsbGVlID0gZ2V0TmV3KFZpcnR1
YWxSZWdpc3RlciB7IEpTU3RhY2s6OkNhbGxlZSB9KS0+cmVjb3ZlcnkoKTsKKyAgICAgICAgZGF0
YS5jYWxsZWUgPSBnZXROZXcoVmlydHVhbFJlZ2lzdGVyIHsgQ2FsbEZyYW1lSGVhZGVyOjpDYWxs
ZWUgfSktPnJlY292ZXJ5KCk7CiAgICAgICAgIGRhdGEuYXJncy5yZXNpemUoYXJnQ291bnQoKSk7
CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJnQ291bnQoKTsgKytpKQogICAgICAg
ICAgICAgZGF0YS5hcmdzW2ldID0gZ2V0TmV3KHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGkp
KS0+cmVjb3ZlcnkoKTsKQEAgLTEyOSw3ICsxMjksNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAg
ICBBU1NFUlQoaXNVbmRlY2lkZWQoKSk7CiAgICAgICAgIEFTU0VSVCghZ2V0TmV3KGpzVmFsdWVS
ZWdzKSk7Ci0gICAgICAgIENhY2hlZFJlY292ZXJ5KiBjYWNoZWRSZWNvdmVyeSB7IGdldE5ldyhW
aXJ0dWFsUmVnaXN0ZXIoSlNTdGFjazo6Q2FsbGVlKSkgfTsKKyAgICAgICAgQ2FjaGVkUmVjb3Zl
cnkqIGNhY2hlZFJlY292ZXJ5IHsgZ2V0TmV3KFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWVIZWFk
ZXI6OkNhbGxlZSkpIH07CiAgICAgICAgIEFTU0VSVChjYWNoZWRSZWNvdmVyeSk7CiAgICAgICAg
IGFkZE5ldyhqc1ZhbHVlUmVncywgY2FjaGVkUmVjb3ZlcnktPnJlY292ZXJ5KCkpOwogICAgIH0K
QEAgLTE0Miw3ICsxNDIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBhc3N1bWVDYWxsZWVJc0NlbGwo
KQogICAgIHsKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQotICAgICAgICBDYWNoZWRSZWNvdmVyeSYg
Y2FsbGVlQ2FjaGVkUmVjb3ZlcnkgPSAqZ2V0TmV3KFZpcnR1YWxSZWdpc3RlcihKU1N0YWNrOjpD
YWxsZWUpKTsKKyAgICAgICAgQ2FjaGVkUmVjb3ZlcnkmIGNhbGxlZUNhY2hlZFJlY292ZXJ5ID0g
KmdldE5ldyhWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lSGVhZGVyOjpDYWxsZWUpKTsKICAgICAg
ICAgc3dpdGNoIChjYWxsZWVDYWNoZWRSZWNvdmVyeS5yZWNvdmVyeSgpLnRlY2huaXF1ZSgpKSB7
CiAgICAgICAgIGNhc2UgSW5QYWlyOgogICAgICAgICAgICAgdXBkYXRlUmVjb3ZlcnkoCkBAIC0y
OTcsMTcgKzI5NywxNyBAQCBwcml2YXRlOgogCiAgICAgaW50IG51bUxvY2FscygpIGNvbnN0CiAg
ICAgewotICAgICAgICByZXR1cm4gbV9vbGRGcmFtZS5zaXplKCkgLSBKU1N0YWNrOjpDYWxsZXJG
cmFtZUFuZFBDU2l6ZTsKKyAgICAgICAgcmV0dXJuIG1fb2xkRnJhbWUuc2l6ZSgpIC0gQ2FsbEZy
YW1lSGVhZGVyOjpDYWxsZXJGcmFtZUFuZFBDU2l6ZTsKICAgICB9CiAKICAgICBDYWNoZWRSZWNv
dmVyeSogZ2V0T2xkKFZpcnR1YWxSZWdpc3RlciByZWcpIGNvbnN0CiAgICAgewotICAgICAgICBy
ZXR1cm4gbV9vbGRGcmFtZVtKU1N0YWNrOjpDYWxsZXJGcmFtZUFuZFBDU2l6ZSAtIHJlZy5vZmZz
ZXQoKSAtIDFdOworICAgICAgICByZXR1cm4gbV9vbGRGcmFtZVtDYWxsRnJhbWVIZWFkZXI6OkNh
bGxlckZyYW1lQW5kUENTaXplIC0gcmVnLm9mZnNldCgpIC0gMV07CiAgICAgfQogCiAgICAgdm9p
ZCBzZXRPbGQoVmlydHVhbFJlZ2lzdGVyIHJlZywgQ2FjaGVkUmVjb3ZlcnkqIGNhY2hlZFJlY292
ZXJ5KQogICAgIHsKLSAgICAgICAgbV9vbGRGcmFtZVtKU1N0YWNrOjpDYWxsZXJGcmFtZUFuZFBD
U2l6ZSAtIHJlZy5vZmZzZXQoKSAtIDFdID0gY2FjaGVkUmVjb3Zlcnk7CisgICAgICAgIG1fb2xk
RnJhbWVbQ2FsbEZyYW1lSGVhZGVyOjpDYWxsZXJGcmFtZUFuZFBDU2l6ZSAtIHJlZy5vZmZzZXQo
KSAtIDFdID0gY2FjaGVkUmVjb3Zlcnk7CiAgICAgfQogCiAgICAgVmlydHVhbFJlZ2lzdGVyIGZp
cnN0T2xkKCkgY29uc3QKQEAgLTMxNyw3ICszMTcsNyBAQCBwcml2YXRlOgogCiAgICAgVmlydHVh
bFJlZ2lzdGVyIGxhc3RPbGQoKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIFZpcnR1YWxS
ZWdpc3RlciB7IEpTU3RhY2s6OkNhbGxlckZyYW1lQW5kUENTaXplIC0gMSB9OworICAgICAgICBy
ZXR1cm4gVmlydHVhbFJlZ2lzdGVyIHsgQ2FsbEZyYW1lSGVhZGVyOjpDYWxsZXJGcmFtZUFuZFBD
U2l6ZSAtIDEgfTsKICAgICB9CiAKICAgICBib29sIGlzVmFsaWRPbGQoVmlydHVhbFJlZ2lzdGVy
IHJlZykgY29uc3QKQEAgLTMzOSw3ICszMzksNyBAQCBwcml2YXRlOgogCiAgICAgc2l6ZV90IGFy
Z0NvdW50KCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBtX25ld0ZyYW1lLnNpemUoKSAt
IEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlclNpemU7CisgICAgICAgIHJldHVybiBtX25ld0ZyYW1l
LnNpemUoKSAtIENhbGxGcmFtZUhlYWRlcjo6U2l6ZTsKICAgICB9CiAKICAgICBDYWNoZWRSZWNv
dmVyeSogZ2V0TmV3KFZpcnR1YWxSZWdpc3RlciBuZXdSZWdpc3RlcikgY29uc3QKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHJldmlzaW9uIDIwMjk1NCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTY5LDcgKzU2OSw3IEBA
IHZvaWQgSklUOjpjb21waWxlV2l0aG91dExpbmtpbmcoSklUQ29tcGkKICAgICAgICAgbm9wKCk7
CiAKICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZSgpOwotICAgIGVtaXRQdXRUb0NhbGxGcmFtZUhl
YWRlcihtX2NvZGVCbG9jaywgSlNTdGFjazo6Q29kZUJsb2NrKTsKKyAgICBlbWl0UHV0VG9DYWxs
RnJhbWVIZWFkZXIobV9jb2RlQmxvY2ssIENhbGxGcmFtZUhlYWRlcjo6Q29kZUJsb2NrKTsKIAog
ICAgIExhYmVsIGJlZ2luTGFiZWwodGhpcyk7CiAKQEAgLTYyNyw5ICs2MjcsOSBAQCB2b2lkIEpJ
VDo6Y29tcGlsZVdpdGhvdXRMaW5raW5nKEpJVENvbXBpCiAgICAgICAgIG1fYXJpdHlDaGVjayA9
IGxhYmVsKCk7CiAgICAgICAgIHN0b3JlOChUcnVzdGVkSW1tMzIoMCksICZtX2NvZGVCbG9jay0+
bV9zaG91bGRBbHdheXNCZUlubGluZWQpOwogICAgICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZSgp
OwotICAgICAgICBlbWl0UHV0VG9DYWxsRnJhbWVIZWFkZXIobV9jb2RlQmxvY2ssIEpTU3RhY2s6
OkNvZGVCbG9jayk7CisgICAgICAgIGVtaXRQdXRUb0NhbGxGcmFtZUhlYWRlcihtX2NvZGVCbG9j
aywgQ2FsbEZyYW1lSGVhZGVyOjpDb2RlQmxvY2spOwogCi0gICAgICAgIGxvYWQzMihwYXlsb2Fk
Rm9yKEpTU3RhY2s6OkFyZ3VtZW50Q291bnQpLCByZWdUMSk7CisgICAgICAgIGxvYWQzMihwYXls
b2FkRm9yKENhbGxGcmFtZUhlYWRlcjo6QXJndW1lbnRDb3VudCksIHJlZ1QxKTsKICAgICAgICAg
YnJhbmNoMzIoQWJvdmVPckVxdWFsLCByZWdUMSwgVHJ1c3RlZEltbTMyKG1fY29kZUJsb2NrLT5t
X251bVBhcmFtZXRlcnMpKS5saW5rVG8oYmVnaW5MYWJlbCwgdGhpcyk7CiAKICAgICAgICAgbV9i
eXRlY29kZU9mZnNldCA9IDA7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHJldmlzaW9u
IDIwMjk1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHdvcmtpbmcgY29w
eSkKQEAgLTcwNiw3ICs3MDYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICB2b2lkIGVt
aXRJbml0UmVnaXN0ZXIoaW50IGRzdCk7CiAKLSAgICAgICAgdm9pZCBlbWl0UHV0SW50VG9DYWxs
RnJhbWVIZWFkZXIoUmVnaXN0ZXJJRCBmcm9tLCBKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJFbnRy
eSk7CisgICAgICAgIHZvaWQgZW1pdFB1dEludFRvQ2FsbEZyYW1lSGVhZGVyKFJlZ2lzdGVySUQg
ZnJvbSwgQ2FsbEZyYW1lSGVhZGVyOjpFbnRyeSk7CiAKICAgICAgICAgSlNWYWx1ZSBnZXRDb25z
dGFudE9wZXJhbmQoaW50IHNyYyk7CiAgICAgICAgIGJvb2wgaXNPcGVyYW5kQ29uc3RhbnRJbnQo
aW50IHNyYyk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwzMl82NC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQu
Y3BwCShyZXZpc2lvbiAyMDI5NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENh
bGwzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3MCw3ICsxNzAsNyBAQCB2b2lkIEpJVDo6
Y29tcGlsZVNldHVwVmFyYXJnc0ZyYW1lKE9wY29kCiAgICAgbW92ZShyZXR1cm5WYWx1ZUdQUiwg
cmVnVDEpOwogCiAgICAgLy8gUHJvZmlsZSB0aGUgYXJndW1lbnQgY291bnQuCi0gICAgbG9hZDMy
KEFkZHJlc3MocmVnVDEsIEpTU3RhY2s6OkFyZ3VtZW50Q291bnQgKiBzdGF0aWNfY2FzdDxpbnQ+
KHNpemVvZihSZWdpc3RlcikpICsgUGF5bG9hZE9mZnNldCksIHJlZ1QyKTsKKyAgICBsb2FkMzIo
QWRkcmVzcyhyZWdUMSwgQ2FsbEZyYW1lSGVhZGVyOjpBcmd1bWVudENvdW50ICogc3RhdGljX2Nh
c3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSArIFBheWxvYWRPZmZzZXQpLCByZWdUMik7CiAgICAg
bG9hZDgoaW5mby0+YWRkcmVzc09mTWF4TnVtQXJndW1lbnRzKCksIHJlZ1QwKTsKICAgICBKdW1w
IG5vdEJpZ2dlc3QgPSBicmFuY2gzMihBYm92ZSwgcmVnVDAsIHJlZ1QyKTsKICAgICBKdW1wIG5v
dFNhdHVyYXRlZCA9IGJyYW5jaDMyKEJlbG93T3JFcXVhbCwgcmVnVDIsIFRydXN0ZWRJbW0zMigy
NTUpKTsKQEAgLTIxNCwxMSArMjE0LDExIEBAIHZvaWQgSklUOjpjb21waWxlQ2FsbEV2YWxTbG93
Q2FzZShJbnN0cnUKIAogICAgIGFkZFB0cihUcnVzdGVkSW1tMzIocmVnaXN0ZXJPZmZzZXQgKiBz
aXplb2YoUmVnaXN0ZXIpICsgc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKSwgY2FsbEZyYW1lUmVn
aXN0ZXIsIHN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKIAotICAgIGxvYWRQdHIoQWRkcmVzcyhzdGFj
a1BvaW50ZXJSZWdpc3Rlciwgc2l6ZW9mKFJlZ2lzdGVyKSAqIEpTU3RhY2s6OkNhbGxlZSAtIHNp
emVvZihDYWxsZXJGcmFtZUFuZFBDKSksIHJlZ1QwKTsKLSAgICBsb2FkUHRyKEFkZHJlc3Moc3Rh
Y2tQb2ludGVyUmVnaXN0ZXIsIHNpemVvZihSZWdpc3RlcikgKiBKU1N0YWNrOjpDYWxsZWUgLSBz
aXplb2YoQ2FsbGVyRnJhbWVBbmRQQykpLCByZWdUMSk7CisgICAgbG9hZFB0cihBZGRyZXNzKHN0
YWNrUG9pbnRlclJlZ2lzdGVyLCBzaXplb2YoUmVnaXN0ZXIpICogQ2FsbEZyYW1lSGVhZGVyOjpD
YWxsZWUgLSBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykpLCByZWdUMCk7CisgICAgbG9hZFB0cihB
ZGRyZXNzKHN0YWNrUG9pbnRlclJlZ2lzdGVyLCBzaXplb2YoUmVnaXN0ZXIpICogQ2FsbEZyYW1l
SGVhZGVyOjpDYWxsZWUgLSBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykpLCByZWdUMSk7CiAgICAg
bW92ZShUcnVzdGVkSW1tUHRyKGluZm8pLCByZWdUMik7CiAKLSAgICBlbWl0TG9hZChKU1N0YWNr
OjpDYWxsZWUsIHJlZ1QxLCByZWdUMCk7CisgICAgZW1pdExvYWQoQ2FsbEZyYW1lSGVhZGVyOjpD
YWxsZWUsIHJlZ1QxLCByZWdUMCk7CiAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHZpcnR1YWxU
aHVuayA9IHZpcnR1YWxUaHVua0ZvcihtX3ZtLCAqaW5mbyk7CiAgICAgaW5mby0+c2V0U2xvd1N0
dWIoY3JlYXRlSklUU3R1YlJvdXRpbmUodmlydHVhbFRodW5rLCAqbV92bSwgbnVsbHB0ciwgdHJ1
ZSkpOwogICAgIGVtaXROYWtlZENhbGwodmlydHVhbFRodW5rLmNvZGUoKSk7CkBAIC0yNjUsMTUg
KzI2NSwxNSBAQCB2b2lkIEpJVDo6Y29tcGlsZU9wQ2FsbChPcGNvZGVJRCBvcGNvZGVJCiAgICAg
CiAgICAgICAgIGFkZFB0cihUcnVzdGVkSW1tMzIocmVnaXN0ZXJPZmZzZXQgKiBzaXplb2YoUmVn
aXN0ZXIpICsgc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKSwgY2FsbEZyYW1lUmVnaXN0ZXIsIHN0
YWNrUG9pbnRlclJlZ2lzdGVyKTsKIAotICAgICAgICBzdG9yZTMyKFRydXN0ZWRJbW0zMihhcmdD
b3VudCksIEFkZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0ZXIsIEpTU3RhY2s6OkFyZ3VtZW50Q291
bnQgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpICsgUGF5bG9hZE9mZnNldCAt
IHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSkpOworICAgICAgICBzdG9yZTMyKFRydXN0ZWRJbW0z
MihhcmdDb3VudCksIEFkZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0ZXIsIENhbGxGcmFtZUhlYWRl
cjo6QXJndW1lbnRDb3VudCAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkgKyBQ
YXlsb2FkT2Zmc2V0IC0gc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKSk7CiAgICAgfSAvLyBTUCBo
b2xkcyBuZXdDYWxsRnJhbWUgKyBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQyksIHdpdGggQXJndW1l
bnRDb3VudCBpbml0aWFsaXplZC4KICAgICAKICAgICB1aW50MzJfdCBsb2NhdGlvbkJpdHMgPSBD
YWxsU2l0ZUluZGV4KGluc3RydWN0aW9uKS5iaXRzKCk7Ci0gICAgc3RvcmUzMihUcnVzdGVkSW1t
MzIobG9jYXRpb25CaXRzKSwgdGFnRm9yKEpTU3RhY2s6OkFyZ3VtZW50Q291bnQsIGNhbGxGcmFt
ZVJlZ2lzdGVyKSk7CisgICAgc3RvcmUzMihUcnVzdGVkSW1tMzIobG9jYXRpb25CaXRzKSwgdGFn
Rm9yKENhbGxGcmFtZUhlYWRlcjo6QXJndW1lbnRDb3VudCwgY2FsbEZyYW1lUmVnaXN0ZXIpKTsK
ICAgICBlbWl0TG9hZChjYWxsZWUsIHJlZ1QxLCByZWdUMCk7IC8vIHJlZ1QxLCByZWdUMCBob2xk
cyBjYWxsZWUuCiAKLSAgICBzdG9yZTMyKHJlZ1QwLCBBZGRyZXNzKHN0YWNrUG9pbnRlclJlZ2lz
dGVyLCBKU1N0YWNrOjpDYWxsZWUgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3Rlcikp
ICsgUGF5bG9hZE9mZnNldCAtIHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSkpOwotICAgIHN0b3Jl
MzIocmVnVDEsIEFkZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0ZXIsIEpTU3RhY2s6OkNhbGxlZSAq
IHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkgKyBUYWdPZmZzZXQgLSBzaXplb2Yo
Q2FsbGVyRnJhbWVBbmRQQykpKTsKKyAgICBzdG9yZTMyKHJlZ1QwLCBBZGRyZXNzKHN0YWNrUG9p
bnRlclJlZ2lzdGVyLCBDYWxsRnJhbWVIZWFkZXI6OkNhbGxlZSAqIHN0YXRpY19jYXN0PGludD4o
c2l6ZW9mKFJlZ2lzdGVyKSkgKyBQYXlsb2FkT2Zmc2V0IC0gc2l6ZW9mKENhbGxlckZyYW1lQW5k
UEMpKSk7CisgICAgc3RvcmUzMihyZWdUMSwgQWRkcmVzcyhzdGFja1BvaW50ZXJSZWdpc3Rlciwg
Q2FsbEZyYW1lSGVhZGVyOjpDYWxsZWUgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3Rl
cikpICsgVGFnT2Zmc2V0IC0gc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKSk7CiAKICAgICBpZiAo
b3Bjb2RlSUQgPT0gb3BfY2FsbF9ldmFsKSB7CiAgICAgICAgIGNvbXBpbGVDYWxsRXZhbChpbnN0
cnVjdGlvbik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAJKHJldmlz
aW9uIDIwMjk1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTgwLDcgKzgwLDcgQEAgdm9pZCBKSVQ6OmNvbXBpbGVTZXR1cFZhcmFy
Z3NGcmFtZShPcGNvZAogICAgIG1vdmUocmV0dXJuVmFsdWVHUFIsIHJlZ1QxKTsKIAogICAgIC8v
IFByb2ZpbGUgdGhlIGFyZ3VtZW50IGNvdW50LgotICAgIGxvYWQzMihBZGRyZXNzKHJlZ1QxLCBK
U1N0YWNrOjpBcmd1bWVudENvdW50ICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIp
KSArIFBheWxvYWRPZmZzZXQpLCByZWdUMik7CisgICAgbG9hZDMyKEFkZHJlc3MocmVnVDEsIENh
bGxGcmFtZUhlYWRlcjo6QXJndW1lbnRDb3VudCAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJl
Z2lzdGVyKSkgKyBQYXlsb2FkT2Zmc2V0KSwgcmVnVDIpOwogICAgIGxvYWQ4KGluZm8tPmFkZHJl
c3NPZk1heE51bUFyZ3VtZW50cygpLCByZWdUMCk7CiAgICAgSnVtcCBub3RCaWdnZXN0ID0gYnJh
bmNoMzIoQWJvdmUsIHJlZ1QwLCByZWdUMik7CiAgICAgSnVtcCBub3RTYXR1cmF0ZWQgPSBicmFu
Y2gzMihCZWxvd09yRXF1YWwsIHJlZ1QyLCBUcnVzdGVkSW1tMzIoMjU1KSk7CkBAIC0xMjMsNyAr
MTIzLDcgQEAgdm9pZCBKSVQ6OmNvbXBpbGVDYWxsRXZhbFNsb3dDYXNlKEluc3RydQogCiAgICAg
YWRkUHRyKFRydXN0ZWRJbW0zMihyZWdpc3Rlck9mZnNldCAqIHNpemVvZihSZWdpc3RlcikgKyBz
aXplb2YoQ2FsbGVyRnJhbWVBbmRQQykpLCBjYWxsRnJhbWVSZWdpc3Rlciwgc3RhY2tQb2ludGVy
UmVnaXN0ZXIpOwogCi0gICAgbG9hZDY0KEFkZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0ZXIsIHNp
emVvZihSZWdpc3RlcikgKiBKU1N0YWNrOjpDYWxsZWUgLSBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQ
QykpLCByZWdUMCk7CisgICAgbG9hZDY0KEFkZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0ZXIsIHNp
emVvZihSZWdpc3RlcikgKiBDYWxsRnJhbWVIZWFkZXI6OkNhbGxlZSAtIHNpemVvZihDYWxsZXJG
cmFtZUFuZFBDKSksIHJlZ1QwKTsKICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoaW5mbyksIHJlZ1Qy
KTsKICAgICBDYWxsIGNhbGwgPSBlbWl0TmFrZWRDYWxsKCk7CiAgICAgYWRkTGlua1Rhc2soCkBA
IC0xODEsMTUgKzE4MSwxNSBAQCB2b2lkIEpJVDo6Y29tcGlsZU9wQ2FsbChPcGNvZGVJRCBvcGNv
ZGVJCiAgICAgICAgIH0KICAgICAKICAgICAgICAgYWRkUHRyKFRydXN0ZWRJbW0zMihyZWdpc3Rl
ck9mZnNldCAqIHNpemVvZihSZWdpc3RlcikgKyBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykpLCBj
YWxsRnJhbWVSZWdpc3Rlciwgc3RhY2tQb2ludGVyUmVnaXN0ZXIpOwotICAgICAgICBzdG9yZTMy
KFRydXN0ZWRJbW0zMihhcmdDb3VudCksIEFkZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0ZXIsIEpT
U3RhY2s6OkFyZ3VtZW50Q291bnQgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3Rlcikp
ICsgUGF5bG9hZE9mZnNldCAtIHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSkpOworICAgICAgICBz
dG9yZTMyKFRydXN0ZWRJbW0zMihhcmdDb3VudCksIEFkZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0
ZXIsIENhbGxGcmFtZUhlYWRlcjo6QXJndW1lbnRDb3VudCAqIHN0YXRpY19jYXN0PGludD4oc2l6
ZW9mKFJlZ2lzdGVyKSkgKyBQYXlsb2FkT2Zmc2V0IC0gc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMp
KSk7CiAgICAgfSAvLyBTUCBob2xkcyBuZXdDYWxsRnJhbWUgKyBzaXplb2YoQ2FsbGVyRnJhbWVB
bmRQQyksIHdpdGggQXJndW1lbnRDb3VudCBpbml0aWFsaXplZC4KICAgICAKICAgICB1aW50MzJf
dCBieXRlY29kZU9mZnNldCA9IGluc3RydWN0aW9uIC0gbV9jb2RlQmxvY2stPmluc3RydWN0aW9u
cygpLmJlZ2luKCk7CiAgICAgdWludDMyX3QgbG9jYXRpb25CaXRzID0gQ2FsbFNpdGVJbmRleChi
eXRlY29kZU9mZnNldCkuYml0cygpOwotICAgIHN0b3JlMzIoVHJ1c3RlZEltbTMyKGxvY2F0aW9u
Qml0cyksIEFkZHJlc3MoY2FsbEZyYW1lUmVnaXN0ZXIsIEpTU3RhY2s6OkFyZ3VtZW50Q291bnQg
KiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpICsgVGFnT2Zmc2V0KSk7CisgICAg
c3RvcmUzMihUcnVzdGVkSW1tMzIobG9jYXRpb25CaXRzKSwgQWRkcmVzcyhjYWxsRnJhbWVSZWdp
c3RlciwgQ2FsbEZyYW1lSGVhZGVyOjpBcmd1bWVudENvdW50ICogc3RhdGljX2Nhc3Q8aW50Pihz
aXplb2YoUmVnaXN0ZXIpKSArIFRhZ09mZnNldCkpOwogCiAgICAgZW1pdEdldFZpcnR1YWxSZWdp
c3RlcihjYWxsZWUsIHJlZ1QwKTsgLy8gcmVnVDAgaG9sZHMgY2FsbGVlLgotICAgIHN0b3JlNjQo
cmVnVDAsIEFkZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0ZXIsIEpTU3RhY2s6OkNhbGxlZSAqIHN0
YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkgLSBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQ
QykpKTsKKyAgICBzdG9yZTY0KHJlZ1QwLCBBZGRyZXNzKHN0YWNrUG9pbnRlclJlZ2lzdGVyLCBD
YWxsRnJhbWVIZWFkZXI6OkNhbGxlZSAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVy
KSkgLSBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykpKTsKIAogICAgIGlmIChvcGNvZGVJRCA9PSBv
cF9jYWxsX2V2YWwpIHsKICAgICAgICAgY29tcGlsZUNhbGxFdmFsKGluc3RydWN0aW9uKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCShyZXZpc2lvbiAyMDI5NTQp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAkod29ya2luZyBjb3B5
KQpAQCAtODgsNyArODgsNyBAQCBBTFdBWVNfSU5MSU5FIEpTVmFsdWUgSklUOjpnZXRDb25zdGFu
dE9wCiAgICAgcmV0dXJuIG1fY29kZUJsb2NrLT5nZXRDb25zdGFudChzcmMpOwogfQogCi1BTFdB
WVNfSU5MSU5FIHZvaWQgSklUOjplbWl0UHV0SW50VG9DYWxsRnJhbWVIZWFkZXIoUmVnaXN0ZXJJ
RCBmcm9tLCBKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJFbnRyeSBlbnRyeSkKK0FMV0FZU19JTkxJ
TkUgdm9pZCBKSVQ6OmVtaXRQdXRJbnRUb0NhbGxGcmFtZUhlYWRlcihSZWdpc3RlcklEIGZyb20s
IENhbGxGcmFtZUhlYWRlcjo6RW50cnkgZW50cnkpCiB7CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkK
ICAgICBzdG9yZTMyKFRydXN0ZWRJbW0zMihJbnQzMlRhZyksIGludFRhZ0ZvcihlbnRyeSwgY2Fs
bEZyYW1lUmVnaXN0ZXIpKTsKQEAgLTE0Miw3ICsxNDIsNyBAQCBBTFdBWVNfSU5MSU5FIHZvaWQg
SklUOjp1cGRhdGVUb3BDYWxsRnJhCiAjZWxzZQogICAgIHVpbnQzMl90IGxvY2F0aW9uQml0cyA9
IENhbGxTaXRlSW5kZXgobV9ieXRlY29kZU9mZnNldCArIDEpLmJpdHMoKTsKICNlbmRpZgotICAg
IHN0b3JlMzIoVHJ1c3RlZEltbTMyKGxvY2F0aW9uQml0cyksIGludFRhZ0ZvcihKU1N0YWNrOjpB
cmd1bWVudENvdW50KSk7CisgICAgc3RvcmUzMihUcnVzdGVkSW1tMzIobG9jYXRpb25CaXRzKSwg
aW50VGFnRm9yKENhbGxGcmFtZUhlYWRlcjo6QXJndW1lbnRDb3VudCkpOwogICAgIAogICAgIC8v
IEZJWE1FOiBJdCdzIG5vdCBjbGVhciB0aGF0IHRoaXMgaXMgbmVlZGVkLiBKSVRPcGVyYXRpb25z
IHRlbmQgdG8gdXBkYXRlIHRoZSB0b3AgY2FsbCBmcmFtZSBvbgogICAgIC8vIHRoZSBDKysgc2lk
ZS4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5j
cHAJKHJldmlzaW9uIDIwMjk1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bj
b2RlczMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUsNyArNTUsNyBAQCBKSVQ6OkNvZGVS
ZWYgSklUOjpwcml2YXRlQ29tcGlsZUNUSU5hdGl2CiAgICAgQ2FsbCBuYXRpdmVDYWxsOwogCiAg
ICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoKTsKLSAgICBlbWl0UHV0VG9DYWxsRnJhbWVIZWFkZXIo
MCwgSlNTdGFjazo6Q29kZUJsb2NrKTsKKyAgICBlbWl0UHV0VG9DYWxsRnJhbWVIZWFkZXIoMCwg
Q2FsbEZyYW1lSGVhZGVyOjpDb2RlQmxvY2spOwogICAgIHN0b3JlUHRyKGNhbGxGcmFtZVJlZ2lz
dGVyLCAmbV92bS0+dG9wQ2FsbEZyYW1lKTsKIAogI2lmIENQVShYODYpCkBAIC04MSw3ICs4MSw3
IEBAIEpJVDo6Q29kZVJlZiBKSVQ6OnByaXZhdGVDb21waWxlQ1RJTmF0aXYKICAgICAvLyBIb3N0
IGZ1bmN0aW9uIHNpZ25hdHVyZSBpcyBmKEV4ZWNTdGF0ZSopLgogICAgIG1vdmUoY2FsbEZyYW1l
UmVnaXN0ZXIsIGFyZ3VtZW50R1BSMCk7CiAKLSAgICBlbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRl
clB0cihKU1N0YWNrOjpDYWxsZWUsIGFyZ3VtZW50R1BSMSk7CisgICAgZW1pdEdldEZyb21DYWxs
RnJhbWVIZWFkZXJQdHIoQ2FsbEZyYW1lSGVhZGVyOjpDYWxsZWUsIGFyZ3VtZW50R1BSMSk7CiAg
ICAgbG9hZFB0cihBZGRyZXNzKGFyZ3VtZW50R1BSMSwgT0JKRUNUX09GRlNFVE9GKEpTRnVuY3Rp
b24sIG1fZXhlY3V0YWJsZSkpLCByZWdUMik7CiAKICAgICAvLyBjYWxsIHRoZSBmdW5jdGlvbgpA
QCAtOTk3LDcgKzk5Nyw3IEBAIHZvaWQgSklUOjplbWl0X29wX2VudGVyKEluc3RydWN0aW9uKiBj
dXIKIHZvaWQgSklUOjplbWl0X29wX2dldF9zY29wZShJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogewogICAgIGludCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5k
OwotICAgIGVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyUHRyKEpTU3RhY2s6OkNhbGxlZSwgcmVn
VDApOworICAgIGVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyUHRyKENhbGxGcmFtZUhlYWRlcjo6
Q2FsbGVlLCByZWdUMCk7CiAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0Z1bmN0aW9uOjpv
ZmZzZXRPZlNjb3BlQ2hhaW4oKSksIHJlZ1QwKTsKICAgICBlbWl0U3RvcmVDZWxsKGRzdCwgcmVn
VDApOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCShy
ZXZpc2lvbiAyMDI5NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MjMsNyArNzIzLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bf
ZW50ZXIoSW5zdHJ1Y3Rpb24qKQogdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X3Njb3BlKEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgaW50IGRzdCA9IGN1cnJlbnRJbnN0cnVj
dGlvblsxXS51Lm9wZXJhbmQ7Ci0gICAgZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXJQdHIoSlNT
dGFjazo6Q2FsbGVlLCByZWdUMCk7CisgICAgZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXJQdHIo
Q2FsbEZyYW1lSGVhZGVyOjpDYWxsZWUsIHJlZ1QwKTsKICAgICBsb2FkUHRyKEFkZHJlc3MocmVn
VDAsIEpTRnVuY3Rpb246Om9mZnNldE9mU2NvcGVDaGFpbigpKSwgcmVnVDApOwogICAgIGVtaXRT
dG9yZUNlbGwoZHN0LCByZWdUMCk7CiB9CkBAIC0xNDQ0LDcgKzE0NDQsNyBAQCB2b2lkIEpJVDo6
ZW1pdF9vcF9jcmVhdGVfY2xvbmVkX2FyZ3VtZW50CiB2b2lkIEpJVDo6ZW1pdF9vcF9hcmd1bWVu
dF9jb3VudChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGludCBkc3Qg
PSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwotICAgIGxvYWQzMihwYXlsb2FkRm9y
KEpTU3RhY2s6OkFyZ3VtZW50Q291bnQpLCByZWdUMCk7CisgICAgbG9hZDMyKHBheWxvYWRGb3Io
Q2FsbEZyYW1lSGVhZGVyOjpBcmd1bWVudENvdW50KSwgcmVnVDApOwogICAgIHN1YjMyKFRydXN0
ZWRJbW0zMigxKSwgcmVnVDApOwogICAgIEpTVmFsdWVSZWdzIHJlc3VsdCA9IEpTVmFsdWVSZWdz
Ojp3aXRoVHdvQXZhaWxhYmxlUmVncyhyZWdUMCwgcmVnVDEpOwogICAgIGJveEludDMyKHJlZ1Qw
LCByZXN1bHQpOwpAQCAtMTQ2MSw3ICsxNDYxLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X3Jl
c3RfbGVuZ3RoKEluc3RydQogewogICAgIGludCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0u
dS5vcGVyYW5kOwogICAgIHVuc2lnbmVkIG51bVBhcmFtc1RvU2tpcCA9IGN1cnJlbnRJbnN0cnVj
dGlvblsyXS51LnVuc2lnbmVkVmFsdWU7Ci0gICAgbG9hZDMyKHBheWxvYWRGb3IoSlNTdGFjazo6
QXJndW1lbnRDb3VudCksIHJlZ1QwKTsKKyAgICBsb2FkMzIocGF5bG9hZEZvcihDYWxsRnJhbWVI
ZWFkZXI6OkFyZ3VtZW50Q291bnQpLCByZWdUMCk7CiAgICAgc3ViMzIoVHJ1c3RlZEltbTMyKDEp
LCByZWdUMCk7CiAgICAgSnVtcCB6ZXJvTGVuZ3RoID0gYnJhbmNoMzIoTGVzc1RoYW5PckVxdWFs
LCByZWdUMCwgSW1tMzIobnVtUGFyYW1zVG9Ta2lwKSk7CiAgICAgc3ViMzIoSW1tMzIobnVtUGFy
YW1zVG9Ta2lwKSwgcmVnVDApOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KU0lu
dGVyZmFjZUpJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSlNJ
bnRlcmZhY2VKSVQuaAkocmV2aXNpb24gMjAyOTU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KU0ludGVyZmFjZUpJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC03MSwxMCArNzEsMTAgQEAg
bmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgSnVtcCBlbWl0SnVtcElmTm90VHlwZShSZWdpc3Rl
cklEIGJhc2VSZWcsIEpTVHlwZSk7CiAKLSAgICAgICAgdm9pZCBlbWl0R2V0RnJvbUNhbGxGcmFt
ZUhlYWRlclB0cihKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJFbnRyeSwgUmVnaXN0ZXJJRCB0bywg
UmVnaXN0ZXJJRCBmcm9tID0gY2FsbEZyYW1lUmVnaXN0ZXIpOwotICAgICAgICB2b2lkIGVtaXRQ
dXRUb0NhbGxGcmFtZUhlYWRlcihSZWdpc3RlcklEIGZyb20sIEpTU3RhY2s6OkNhbGxGcmFtZUhl
YWRlckVudHJ5KTsKLSAgICAgICAgdm9pZCBlbWl0UHV0VG9DYWxsRnJhbWVIZWFkZXIodm9pZCog
dmFsdWUsIEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlckVudHJ5KTsKLSAgICAgICAgdm9pZCBlbWl0
UHV0Q2VsbFRvQ2FsbEZyYW1lSGVhZGVyKFJlZ2lzdGVySUQgZnJvbSwgSlNTdGFjazo6Q2FsbEZy
YW1lSGVhZGVyRW50cnkpOworICAgICAgICB2b2lkIGVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVy
UHRyKENhbGxGcmFtZUhlYWRlcjo6RW50cnksIFJlZ2lzdGVySUQgdG8sIFJlZ2lzdGVySUQgZnJv
bSA9IGNhbGxGcmFtZVJlZ2lzdGVyKTsKKyAgICAgICAgdm9pZCBlbWl0UHV0VG9DYWxsRnJhbWVI
ZWFkZXIoUmVnaXN0ZXJJRCBmcm9tLCBDYWxsRnJhbWVIZWFkZXI6OkVudHJ5KTsKKyAgICAgICAg
dm9pZCBlbWl0UHV0VG9DYWxsRnJhbWVIZWFkZXIodm9pZCogdmFsdWUsIENhbGxGcmFtZUhlYWRl
cjo6RW50cnkpOworICAgICAgICB2b2lkIGVtaXRQdXRDZWxsVG9DYWxsRnJhbWVIZWFkZXIoUmVn
aXN0ZXJJRCBmcm9tLCBDYWxsRnJhbWVIZWFkZXI6OkVudHJ5KTsKIAogICAgICAgICBpbmxpbmUg
QWRkcmVzcyBwYXlsb2FkRm9yKGludCBpbmRleCwgUmVnaXN0ZXJJRCBiYXNlID0gY2FsbEZyYW1l
UmVnaXN0ZXIpOwogICAgICAgICBpbmxpbmUgQWRkcmVzcyBpbnRQYXlsb2FkRm9yKGludCBpbmRl
eCwgUmVnaXN0ZXJJRCBiYXNlID0gY2FsbEZyYW1lUmVnaXN0ZXIpOwpAQCAtMjIxLDEyICsyMjEs
MTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHJldHVybiBicmFuY2g4KE5vdEVxdWFsLCBB
ZGRyZXNzKGJhc2VSZWcsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBUcnVzdGVkSW1t
MzIodHlwZSkpOwogICAgIH0KIAotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBKU0ludGVyZmFjZUpJ
VDo6ZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXJQdHIoSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVy
RW50cnkgZW50cnksIFJlZ2lzdGVySUQgdG8sIFJlZ2lzdGVySUQgZnJvbSkKKyAgICBBTFdBWVNf
SU5MSU5FIHZvaWQgSlNJbnRlcmZhY2VKSVQ6OmVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyUHRy
KENhbGxGcmFtZUhlYWRlcjo6RW50cnkgZW50cnksIFJlZ2lzdGVySUQgdG8sIFJlZ2lzdGVySUQg
ZnJvbSkKICAgICB7CiAgICAgICAgIGxvYWRQdHIoQWRkcmVzcyhmcm9tLCBlbnRyeSAqIHNpemVv
ZihSZWdpc3RlcikpLCB0byk7CiAgICAgfQogCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIEpTSW50
ZXJmYWNlSklUOjplbWl0UHV0VG9DYWxsRnJhbWVIZWFkZXIoUmVnaXN0ZXJJRCBmcm9tLCBKU1N0
YWNrOjpDYWxsRnJhbWVIZWFkZXJFbnRyeSBlbnRyeSkKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQg
SlNJbnRlcmZhY2VKSVQ6OmVtaXRQdXRUb0NhbGxGcmFtZUhlYWRlcihSZWdpc3RlcklEIGZyb20s
IENhbGxGcmFtZUhlYWRlcjo6RW50cnkgZW50cnkpCiAgICAgewogI2lmIFVTRShKU1ZBTFVFMzJf
NjQpCiAgICAgICAgIHN0b3JlUHRyKGZyb20sIHBheWxvYWRGb3IoZW50cnksIGNhbGxGcmFtZVJl
Z2lzdGVyKSk7CkBAIC0yMzUsMTIgKzIzNSwxMiBAQCBuYW1lc3BhY2UgSlNDIHsKICNlbmRpZgog
ICAgIH0KIAotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBKU0ludGVyZmFjZUpJVDo6ZW1pdFB1dFRv
Q2FsbEZyYW1lSGVhZGVyKHZvaWQqIHZhbHVlLCBKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJFbnRy
eSBlbnRyeSkKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgSlNJbnRlcmZhY2VKSVQ6OmVtaXRQdXRU
b0NhbGxGcmFtZUhlYWRlcih2b2lkKiB2YWx1ZSwgQ2FsbEZyYW1lSGVhZGVyOjpFbnRyeSBlbnRy
eSkKICAgICB7CiAgICAgICAgIHN0b3JlUHRyKFRydXN0ZWRJbW1QdHIodmFsdWUpLCBBZGRyZXNz
KGNhbGxGcmFtZVJlZ2lzdGVyLCBlbnRyeSAqIHNpemVvZihSZWdpc3RlcikpKTsKICAgICB9CiAK
LSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgSlNJbnRlcmZhY2VKSVQ6OmVtaXRQdXRDZWxsVG9DYWxs
RnJhbWVIZWFkZXIoUmVnaXN0ZXJJRCBmcm9tLCBKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJFbnRy
eSBlbnRyeSkKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgSlNJbnRlcmZhY2VKSVQ6OmVtaXRQdXRD
ZWxsVG9DYWxsRnJhbWVIZWFkZXIoUmVnaXN0ZXJJRCBmcm9tLCBDYWxsRnJhbWVIZWFkZXI6OkVu
dHJ5IGVudHJ5KQogICAgIHsKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQogICAgICAgICBzdG9yZTMy
KFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSwgdGFnRm9yKGVudHJ5LCBjYWxsRnJhbWVS
ZWdpc3RlcikpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9TZXR1cFZhcmFyZ3NG
cmFtZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9TZXR1cFZh
cmFyZ3NGcmFtZS5jcHAJKHJldmlzaW9uIDIwMjk1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvU2V0dXBWYXJhcmdzRnJhbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw3ICs0Nyw3
IEBAIHZvaWQgZW1pdFNldFZhcmFyZ3NGcmFtZShDQ2FsbEhlbHBlcnMmIGoKICAgICBqaXQuYW5k
UHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKH4oc3RhY2tBbGlnbm1lbnRSZWdpc3RlcnMo
KSAtIDEpKSwgcmVzdWx0R1BSKTsKIAogICAgIGppdC5hZGRQdHIobGVuZ3RoR1BSLCByZXN1bHRH
UFIpOwotICAgIGppdC5hZGRQdHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoSlNTdGFjazo6
Q2FsbEZyYW1lSGVhZGVyU2l6ZSArIChsZW5ndGhJbmNsdWRlc1RoaXM/IDAgOiAxKSksIHJlc3Vs
dEdQUik7CisgICAgaml0LmFkZFB0cihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihDYWxsRnJh
bWVIZWFkZXI6OlNpemUgKyAobGVuZ3RoSW5jbHVkZXNUaGlzPyAwIDogMSkpLCByZXN1bHRHUFIp
OwogICAgIAogICAgIC8vIHJlc3VsdEdQUiBub3cgaGFzIHRoZSByZXF1aXJlZCBmcmFtZSBzaXpl
IGluIFJlZ2lzdGVyIHVuaXRzCiAgICAgLy8gUm91bmQgcmVzdWx0R1BSIHRvIG5leHQgbXVsdGlw
bGUgb2Ygc3RhY2tBbGlnbm1lbnRSZWdpc3RlcnMoKQpAQCAtODUsNyArODUsNyBAQCB2b2lkIGVt
aXRTZXR1cFZhcmFyZ3NGcmFtZUZhc3RDYXNlKENDYWxsCiAgICAgc2xvd0Nhc2UuYXBwZW5kKGpp
dC5icmFuY2hQdHIoQ0NhbGxIZWxwZXJzOjpBYm92ZSwgQ0NhbGxIZWxwZXJzOjpBYnNvbHV0ZUFk
ZHJlc3Moaml0LnZtKCktPmFkZHJlc3NPZkpTQ1BVU3RhY2tMaW1pdCgpKSwgc2NyYXRjaEdQUjIp
KTsKIAogICAgIC8vIEluaXRpYWxpemUgQXJndW1lbnRDb3VudC4KLSAgICBqaXQuc3RvcmUzMihz
Y3JhdGNoR1BSMSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHNjcmF0Y2hHUFIyLCBKU1N0YWNrOjpB
cmd1bWVudENvdW50ICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSArIFBheWxv
YWRPZmZzZXQpKTsKKyAgICBqaXQuc3RvcmUzMihzY3JhdGNoR1BSMSwgQ0NhbGxIZWxwZXJzOjpB
ZGRyZXNzKHNjcmF0Y2hHUFIyLCBDYWxsRnJhbWVIZWFkZXI6OkFyZ3VtZW50Q291bnQgKiBzdGF0
aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpICsgUGF5bG9hZE9mZnNldCkpOwogCiAgICAg
Ly8gQ29weSBhcmd1bWVudHMuCiAgICAgaml0LnNpZ25FeHRlbmQzMlRvUHRyKHNjcmF0Y2hHUFIx
LCBzY3JhdGNoR1BSMSk7CkBAIC0xMzEsNyArMTMxLDcgQEAgdm9pZCBlbWl0U2V0dXBWYXJhcmdz
RnJhbWVGYXN0Q2FzZShDQ2FsbAogICAgICAgICAgICAgZmlyc3RBcmd1bWVudFJlZyA9IFZpcnR1
YWxSZWdpc3RlcigwKTsKICAgICB9IGVsc2UgewogICAgICAgICBhcmd1bWVudENvdW50UmVjb3Zl
cnkgPSBWYWx1ZVJlY292ZXJ5OjpkaXNwbGFjZWRJbkpTU3RhY2soCi0gICAgICAgICAgICBWaXJ0
dWFsUmVnaXN0ZXIoSlNTdGFjazo6QXJndW1lbnRDb3VudCksIERhdGFGb3JtYXRJbnQzMik7Cisg
ICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lSGVhZGVyOjpBcmd1bWVudENvdW50
KSwgRGF0YUZvcm1hdEludDMyKTsKICAgICAgICAgZmlyc3RBcmd1bWVudFJlZyA9IFZpcnR1YWxS
ZWdpc3RlcihDYWxsRnJhbWU6OmFyZ3VtZW50T2Zmc2V0KDApKTsKICAgICB9CiAgICAgZW1pdFNl
dHVwVmFyYXJnc0ZyYW1lRmFzdENhc2Uoaml0LCBudW1Vc2VkU2xvdHNHUFIsIHNjcmF0Y2hHUFIx
LCBzY3JhdGNoR1BSMiwgc2NyYXRjaEdQUjMsIGFyZ3VtZW50Q291bnRSZWNvdmVyeSwgZmlyc3RB
cmd1bWVudFJlZywgZmlyc3RWYXJBcmdPZmZzZXQsIHNsb3dDYXNlKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvU3BlY2lhbGl6ZWRUaHVua0pJVC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU3BlY2lhbGl6ZWRUaHVua0pJVC5oCShyZXZpc2lvbiAy
MDI5NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1NwZWNpYWxpemVkVGh1bmtKSVQu
aAkod29ya2luZyBjb3B5KQpAQCAtNDYsNyArNDYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKCk7CiAgICAgICAgICAgICBlbWl0U2F2ZVRoZW5N
YXRlcmlhbGl6ZVRhZ1JlZ2lzdGVycygpOwogICAgICAgICAgICAgLy8gQ2hlY2sgdGhhdCB3ZSBo
YXZlIHRoZSBleHBlY3RlZCBudW1iZXIgb2YgYXJndW1lbnRzCi0gICAgICAgICAgICBtX2ZhaWx1
cmVzLmFwcGVuZChicmFuY2gzMihOb3RFcXVhbCwgcGF5bG9hZEZvcihKU1N0YWNrOjpBcmd1bWVu
dENvdW50KSwgVHJ1c3RlZEltbTMyKGV4cGVjdGVkQXJnQ291bnQgKyAxKSkpOworICAgICAgICAg
ICAgbV9mYWlsdXJlcy5hcHBlbmQoYnJhbmNoMzIoTm90RXF1YWwsIHBheWxvYWRGb3IoQ2FsbEZy
YW1lSGVhZGVyOjpBcmd1bWVudENvdW50KSwgVHJ1c3RlZEltbTMyKGV4cGVjdGVkQXJnQ291bnQg
KyAxKSkpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBleHBsaWNpdCBTcGVjaWFsaXpl
ZFRodW5rSklUKFZNKiB2bSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtH
ZW5lcmF0b3JzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1Ro
dW5rR2VuZXJhdG9ycy5jcHAJKHJldmlzaW9uIDIwMjk1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjU5LDcgKzI1
OSw3IEBAIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgbmF0aXZlRm9yR2UKICAgICAgICAg
YnJlYWs7CiAgICAgfQogCi0gICAgaml0LmVtaXRQdXRUb0NhbGxGcmFtZUhlYWRlcigwLCBKU1N0
YWNrOjpDb2RlQmxvY2spOworICAgIGppdC5lbWl0UHV0VG9DYWxsRnJhbWVIZWFkZXIoMCwgQ2Fs
bEZyYW1lSGVhZGVyOjpDb2RlQmxvY2spOwogICAgIGppdC5zdG9yZVB0cihKU0ludGVyZmFjZUpJ
VDo6Y2FsbEZyYW1lUmVnaXN0ZXIsICZ2bS0+dG9wQ2FsbEZyYW1lKTsKIAogI2lmIENQVShYODYp
CkBAIC0yNzAsNyArMjcwLDcgQEAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBuYXRpdmVG
b3JHZQogICAgIGppdC5zdWJQdHIoSlNJbnRlcmZhY2VKSVQ6OlRydXN0ZWRJbW0zMig4KSwgSlNJ
bnRlcmZhY2VKSVQ6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsgLy8gQWxpZ24gc3RhY2sgYWZ0ZXIg
cHJvbG9ndWUuCiAKICAgICAvLyBjYWxsIHRoZSBmdW5jdGlvbgotICAgIGppdC5lbWl0R2V0RnJv
bUNhbGxGcmFtZUhlYWRlclB0cihKU1N0YWNrOjpDYWxsZWUsIEpTSW50ZXJmYWNlSklUOjpyZWdU
MSk7CisgICAgaml0LmVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyUHRyKENhbGxGcmFtZUhlYWRl
cjo6Q2FsbGVlLCBKU0ludGVyZmFjZUpJVDo6cmVnVDEpOwogICAgIGppdC5sb2FkUHRyKEpTSW50
ZXJmYWNlSklUOjpBZGRyZXNzKEpTSW50ZXJmYWNlSklUOjpyZWdUMSwgSlNGdW5jdGlvbjo6b2Zm
c2V0T2ZFeGVjdXRhYmxlKCkpLCBKU0ludGVyZmFjZUpJVDo6cmVnVDEpOwogICAgIGppdC5jYWxs
KEpTSW50ZXJmYWNlSklUOjpBZGRyZXNzKEpTSW50ZXJmYWNlSklUOjpyZWdUMSwgZXhlY3V0YWJs
ZU9mZnNldFRvRnVuY3Rpb24pKTsKIApAQCAtMjgyLDcgKzI4Miw3IEBAIHN0YXRpYyBNYWNyb0Fz
c2VtYmxlckNvZGVSZWYgbmF0aXZlRm9yR2UKICAgICAvLyBIb3N0IGZ1bmN0aW9uIHNpZ25hdHVy
ZTogZihFeGVjU3RhdGUqKTsKICAgICBqaXQubW92ZShKU0ludGVyZmFjZUpJVDo6Y2FsbEZyYW1l
UmVnaXN0ZXIsIFg4NlJlZ2lzdGVyczo6ZWRpKTsKIAotICAgIGppdC5lbWl0R2V0RnJvbUNhbGxG
cmFtZUhlYWRlclB0cihKU1N0YWNrOjpDYWxsZWUsIFg4NlJlZ2lzdGVyczo6ZXNpKTsKKyAgICBq
aXQuZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXJQdHIoQ2FsbEZyYW1lSGVhZGVyOjpDYWxsZWUs
IFg4NlJlZ2lzdGVyczo6ZXNpKTsKICAgICBqaXQubG9hZFB0cihKU0ludGVyZmFjZUpJVDo6QWRk
cmVzcyhYODZSZWdpc3RlcnM6OmVzaSwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZFeGVjdXRhYmxlKCkp
LCBYODZSZWdpc3RlcnM6OnI5KTsKICAgICBqaXQuY2FsbChKU0ludGVyZmFjZUpJVDo6QWRkcmVz
cyhYODZSZWdpc3RlcnM6OnI5LCBleGVjdXRhYmxlT2Zmc2V0VG9GdW5jdGlvbikpOwogCkBAIC0y
OTUsNyArMjk1LDcgQEAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBuYXRpdmVGb3JHZQog
ICAgIC8vIEF0IHRoaXMgcG9pbnQgdGhlIHN0YWNrIGlzIGFsaWduZWQgdG8gMTYgYnl0ZXMsIGJ1
dCBpZiB0aGlzIGNoYW5nZXMgYXQgc29tZSBwb2ludCwgd2UgbmVlZCB0byBlbWl0IGNvZGUgdG8g
YWxpZ24gaXQuCiAgICAgaml0LnN1YlB0cihKU0ludGVyZmFjZUpJVDo6VHJ1c3RlZEltbTMyKDQg
KiBzaXplb2YoaW50NjRfdCkpLCBKU0ludGVyZmFjZUpJVDo6c3RhY2tQb2ludGVyUmVnaXN0ZXIp
OwogCi0gICAgaml0LmVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyUHRyKEpTU3RhY2s6OkNhbGxl
ZSwgWDg2UmVnaXN0ZXJzOjplZHgpOworICAgIGppdC5lbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRl
clB0cihDYWxsRnJhbWVIZWFkZXI6OkNhbGxlZSwgWDg2UmVnaXN0ZXJzOjplZHgpOwogICAgIGpp
dC5sb2FkUHRyKEpTSW50ZXJmYWNlSklUOjpBZGRyZXNzKFg4NlJlZ2lzdGVyczo6ZWR4LCBKU0Z1
bmN0aW9uOjpvZmZzZXRPZkV4ZWN1dGFibGUoKSksIFg4NlJlZ2lzdGVyczo6cjkpOwogICAgIGpp
dC5jYWxsKEpTSW50ZXJmYWNlSklUOjpBZGRyZXNzKFg4NlJlZ2lzdGVyczo6cjksIGV4ZWN1dGFi
bGVPZmZzZXRUb0Z1bmN0aW9uKSk7CiAKQEAgLTMxMCw3ICszMTAsNyBAQCBzdGF0aWMgTWFjcm9B
c3NlbWJsZXJDb2RlUmVmIG5hdGl2ZUZvckdlCiAgICAgLy8gSG9zdCBmdW5jdGlvbiBzaWduYXR1
cmU6IGYoRXhlY1N0YXRlKik7CiAgICAgaml0Lm1vdmUoSlNJbnRlcmZhY2VKSVQ6OmNhbGxGcmFt
ZVJlZ2lzdGVyLCBBUk02NFJlZ2lzdGVyczo6eDApOwogCi0gICAgaml0LmVtaXRHZXRGcm9tQ2Fs
bEZyYW1lSGVhZGVyUHRyKEpTU3RhY2s6OkNhbGxlZSwgQVJNNjRSZWdpc3RlcnM6OngxKTsKKyAg
ICBqaXQuZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXJQdHIoQ2FsbEZyYW1lSGVhZGVyOjpDYWxs
ZWUsIEFSTTY0UmVnaXN0ZXJzOjp4MSk7CiAgICAgaml0LmxvYWRQdHIoSlNJbnRlcmZhY2VKSVQ6
OkFkZHJlc3MoQVJNNjRSZWdpc3RlcnM6OngxLCBKU0Z1bmN0aW9uOjpvZmZzZXRPZkV4ZWN1dGFi
bGUoKSksIEFSTTY0UmVnaXN0ZXJzOjp4Mik7CiAgICAgaml0LmNhbGwoSlNJbnRlcmZhY2VKSVQ6
OkFkZHJlc3MoQVJNNjRSZWdpc3RlcnM6OngyLCBleGVjdXRhYmxlT2Zmc2V0VG9GdW5jdGlvbikp
OwogI2VsaWYgQ1BVKEFSTSkgfHwgQ1BVKFNINCkgfHwgQ1BVKE1JUFMpCkBAIC0zMjMsNyArMzIz
LDcgQEAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBuYXRpdmVGb3JHZQogICAgIC8vIEhv
c3QgZnVuY3Rpb24gc2lnbmF0dXJlIGlzIGYoRXhlY1N0YXRlKikuCiAgICAgaml0Lm1vdmUoSlNJ
bnRlcmZhY2VKSVQ6OmNhbGxGcmFtZVJlZ2lzdGVyLCBKU0ludGVyZmFjZUpJVDo6YXJndW1lbnRH
UFIwKTsKIAotICAgIGppdC5lbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlclB0cihKU1N0YWNrOjpD
YWxsZWUsIEpTSW50ZXJmYWNlSklUOjphcmd1bWVudEdQUjEpOworICAgIGppdC5lbWl0R2V0RnJv
bUNhbGxGcmFtZUhlYWRlclB0cihDYWxsRnJhbWVIZWFkZXI6OkNhbGxlZSwgSlNJbnRlcmZhY2VK
SVQ6OmFyZ3VtZW50R1BSMSk7CiAgICAgaml0LmxvYWRQdHIoSlNJbnRlcmZhY2VKSVQ6OkFkZHJl
c3MoSlNJbnRlcmZhY2VKSVQ6OmFyZ3VtZW50R1BSMSwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZFeGVj
dXRhYmxlKCkpLCBKU0ludGVyZmFjZUpJVDo6cmVnVDIpOwogICAgIGppdC5jYWxsKEpTSW50ZXJm
YWNlSklUOjpBZGRyZXNzKEpTSW50ZXJmYWNlSklUOjpyZWdUMiwgZXhlY3V0YWJsZU9mZnNldFRv
RnVuY3Rpb24pKTsKIApAQCAtNDE5LDggKzQxOSw4IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBh
cml0eUZpeHVwR2VuZXJhdG8KICAgICBqaXQucG9wKEpTSW50ZXJmYWNlSklUOjpyZWdUNCk7CiAj
ICBlbmRpZgogICAgIGppdC5tb3ZlKEpTSW50ZXJmYWNlSklUOjpjYWxsRnJhbWVSZWdpc3Rlciwg
SlNJbnRlcmZhY2VKSVQ6OnJlZ1QzKTsKLSAgICBqaXQubG9hZDMyKEpTSW50ZXJmYWNlSklUOjpB
ZGRyZXNzKEpTSW50ZXJmYWNlSklUOjpjYWxsRnJhbWVSZWdpc3RlciwgSlNTdGFjazo6QXJndW1l
bnRDb3VudCAqIHNpemVvZihSZWdpc3RlcikpLCBKU0ludGVyZmFjZUpJVDo6YXJndW1lbnRHUFIy
KTsKLSAgICBqaXQuYWRkMzIoSlNJbnRlcmZhY2VKSVQ6OlRydXN0ZWRJbW0zMihKU1N0YWNrOjpD
YWxsRnJhbWVIZWFkZXJTaXplKSwgSlNJbnRlcmZhY2VKSVQ6OmFyZ3VtZW50R1BSMik7CisgICAg
aml0LmxvYWQzMihKU0ludGVyZmFjZUpJVDo6QWRkcmVzcyhKU0ludGVyZmFjZUpJVDo6Y2FsbEZy
YW1lUmVnaXN0ZXIsIENhbGxGcmFtZUhlYWRlcjo6QXJndW1lbnRDb3VudCAqIHNpemVvZihSZWdp
c3RlcikpLCBKU0ludGVyZmFjZUpJVDo6YXJndW1lbnRHUFIyKTsKKyAgICBqaXQuYWRkMzIoSlNJ
bnRlcmZhY2VKSVQ6OlRydXN0ZWRJbW0zMihDYWxsRnJhbWVIZWFkZXI6OlNpemUpLCBKU0ludGVy
ZmFjZUpJVDo6YXJndW1lbnRHUFIyKTsKIAogICAgIC8vIENoZWNrIHRvIHNlZSBpZiB3ZSBoYXZl
IGV4dHJhIHNsb3RzIHdlIGNhbiB1c2UKICAgICBqaXQubW92ZShKU0ludGVyZmFjZUpJVDo6YXJn
dW1lbnRHUFIwLCBKU0ludGVyZmFjZUpJVDo6YXJndW1lbnRHUFIxKTsKQEAgLTQ2OSw4ICs0Njks
OCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgYXJpdHlGaXh1cEdlbmVyYXRvCiAgICAgaml0LnBv
cChKU0ludGVyZmFjZUpJVDo6cmVnVDQpOwogIyAgZW5kaWYKICAgICBqaXQubW92ZShKU0ludGVy
ZmFjZUpJVDo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEpTSW50ZXJmYWNlSklUOjpyZWdUMyk7Ci0gICAg
aml0LmxvYWQzMihKU0ludGVyZmFjZUpJVDo6QWRkcmVzcyhKU0ludGVyZmFjZUpJVDo6Y2FsbEZy
YW1lUmVnaXN0ZXIsIEpTU3RhY2s6OkFyZ3VtZW50Q291bnQgKiBzaXplb2YoUmVnaXN0ZXIpKSwg
SlNJbnRlcmZhY2VKSVQ6OmFyZ3VtZW50R1BSMik7Ci0gICAgaml0LmFkZDMyKEpTSW50ZXJmYWNl
SklUOjpUcnVzdGVkSW1tMzIoSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyU2l6ZSksIEpTSW50ZXJm
YWNlSklUOjphcmd1bWVudEdQUjIpOworICAgIGppdC5sb2FkMzIoSlNJbnRlcmZhY2VKSVQ6OkFk
ZHJlc3MoSlNJbnRlcmZhY2VKSVQ6OmNhbGxGcmFtZVJlZ2lzdGVyLCBDYWxsRnJhbWVIZWFkZXI6
OkFyZ3VtZW50Q291bnQgKiBzaXplb2YoUmVnaXN0ZXIpKSwgSlNJbnRlcmZhY2VKSVQ6OmFyZ3Vt
ZW50R1BSMik7CisgICAgaml0LmFkZDMyKEpTSW50ZXJmYWNlSklUOjpUcnVzdGVkSW1tMzIoQ2Fs
bEZyYW1lSGVhZGVyOjpTaXplKSwgSlNJbnRlcmZhY2VKSVQ6OmFyZ3VtZW50R1BSMik7CiAKICAg
ICAvLyBDaGVjayB0byBzZWUgaWYgd2UgaGF2ZSBleHRyYSBzbG90cyB3ZSBjYW4gdXNlCiAgICAg
aml0Lm1vdmUoSlNJbnRlcmZhY2VKSVQ6OmFyZ3VtZW50R1BSMCwgSlNJbnRlcmZhY2VKSVQ6OmFy
Z3VtZW50R1BSMSk7CkBAIC0xMDQzLDggKzEwNDMsOCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYg
Ym91bmRUaGlzTm9BcmdzRnVuCiAgICAgaml0LmVtaXRGdW5jdGlvblByb2xvZ3VlKCk7CiAgICAg
CiAgICAgLy8gU2V0IHVwIG91ciBjYWxsIGZyYW1lLgotICAgIGppdC5zdG9yZVB0cihDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW1QdHIobnVsbHB0ciksIENDYWxsSGVscGVyczo6YWRkcmVzc0ZvcihK
U1N0YWNrOjpDb2RlQmxvY2spKTsKLSAgICBqaXQuc3RvcmUzMihDQ2FsbEhlbHBlcnM6OlRydXN0
ZWRJbW0zMigwKSwgQ0NhbGxIZWxwZXJzOjp0YWdGb3IoSlNTdGFjazo6QXJndW1lbnRDb3VudCkp
OworICAgIGppdC5zdG9yZVB0cihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIobnVsbHB0ciks
IENDYWxsSGVscGVyczo6YWRkcmVzc0ZvcihDYWxsRnJhbWVIZWFkZXI6OkNvZGVCbG9jaykpOwor
ICAgIGppdC5zdG9yZTMyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDApLCBDQ2FsbEhlbHBl
cnM6OnRhZ0ZvcihDYWxsRnJhbWVIZWFkZXI6OkFyZ3VtZW50Q291bnQpKTsKIAogICAgIHVuc2ln
bmVkIGV4dHJhU3RhY2tOZWVkZWQgPSAwOwogICAgIGlmICh1bnNpZ25lZCBzdGFja01pc2FsaWdu
bWVudCA9IHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSAlIHN0YWNrQWxpZ25tZW50Qnl0ZXMoKSkK
QEAgLTEwNjUsOCArMTA2NSw4IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBib3VuZFRoaXNOb0Fy
Z3NGdW4KICAgICAvLwogICAgIC8vIFRoYXQncyByZWFsbHkgYWxsIHRoZXJlIGlzIHRvIHRoaXMu
IFdlIGhhdmUgYWxsIHRoZSByZWdpc3RlcnMgd2UgbmVlZCB0byBkbyBpdC4KICAgICAKLSAgICBq
aXQubG9hZDMyKENDYWxsSGVscGVyczo6cGF5bG9hZEZvcihKU1N0YWNrOjpBcmd1bWVudENvdW50
KSwgR1BSSW5mbzo6cmVnVDEpOwotICAgIGppdC5hZGQzMihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJ
bW0zMihKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJTaXplIC0gSlNTdGFjazo6Q2FsbGVyRnJhbWVB
bmRQQ1NpemUpLCBHUFJJbmZvOjpyZWdUMSwgR1BSSW5mbzo6cmVnVDIpOworICAgIGppdC5sb2Fk
MzIoQ0NhbGxIZWxwZXJzOjpwYXlsb2FkRm9yKENhbGxGcmFtZUhlYWRlcjo6QXJndW1lbnRDb3Vu
dCksIEdQUkluZm86OnJlZ1QxKTsKKyAgICBqaXQuYWRkMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVk
SW1tMzIoQ2FsbEZyYW1lSGVhZGVyOjpTaXplIC0gQ2FsbEZyYW1lSGVhZGVyOjpDYWxsZXJGcmFt
ZUFuZFBDU2l6ZSksIEdQUkluZm86OnJlZ1QxLCBHUFJJbmZvOjpyZWdUMik7CiAgICAgaml0Lmxz
aGlmdDMyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDMpLCBHUFJJbmZvOjpyZWdUMik7CiAg
ICAgaml0LmFkZDMyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKHN0YWNrQWxpZ25tZW50Qnl0
ZXMoKSAtIDEpLCBHUFJJbmZvOjpyZWdUMik7CiAgICAgaml0LmFuZDMyKENDYWxsSGVscGVyczo6
VHJ1c3RlZEltbTMyKC1zdGFja0FsaWdubWVudEJ5dGVzKCkpLCBHUFJJbmZvOjpyZWdUMik7CkBA
IC0xMDgxLDE2ICsxMDgxLDE2IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBib3VuZFRoaXNOb0Fy
Z3NGdW4KIAogICAgIC8vIERvIGJhc2ljIGNhbGxlZSBmcmFtZSBzZXR1cCwgaW5jbHVkaW5nICd0
aGlzJy4KICAgICAKLSAgICBqaXQubG9hZENlbGwoQ0NhbGxIZWxwZXJzOjphZGRyZXNzRm9yKEpT
U3RhY2s6OkNhbGxlZSksIEdQUkluZm86OnJlZ1QzKTsKKyAgICBqaXQubG9hZENlbGwoQ0NhbGxI
ZWxwZXJzOjphZGRyZXNzRm9yKENhbGxGcmFtZUhlYWRlcjo6Q2FsbGVlKSwgR1BSSW5mbzo6cmVn
VDMpOwogCi0gICAgaml0LnN0b3JlMzIoR1BSSW5mbzo6cmVnVDEsIENDYWxsSGVscGVyczo6Y2Fs
bGVlRnJhbWVQYXlsb2FkU2xvdChKU1N0YWNrOjpBcmd1bWVudENvdW50KSk7CisgICAgaml0LnN0
b3JlMzIoR1BSSW5mbzo6cmVnVDEsIENDYWxsSGVscGVyczo6Y2FsbGVlRnJhbWVQYXlsb2FkU2xv
dChDYWxsRnJhbWVIZWFkZXI6OkFyZ3VtZW50Q291bnQpKTsKICAgICAKICAgICBKU1ZhbHVlUmVn
cyB2YWx1ZVJlZ3MgPSBKU1ZhbHVlUmVnczo6d2l0aFR3b0F2YWlsYWJsZVJlZ3MoR1BSSW5mbzo6
cmVnVDAsIEdQUkluZm86OnJlZ1QyKTsKICAgICBqaXQubG9hZFZhbHVlKENDYWxsSGVscGVyczo6
QWRkcmVzcyhHUFJJbmZvOjpyZWdUMywgSlNCb3VuZEZ1bmN0aW9uOjpvZmZzZXRPZkJvdW5kVGhp
cygpKSwgdmFsdWVSZWdzKTsKICAgICBqaXQuc3RvcmVWYWx1ZSh2YWx1ZVJlZ3MsIENDYWxsSGVs
cGVyczo6Y2FsbGVlQXJndW1lbnRTbG90KDApKTsKIAogICAgIGppdC5sb2FkUHRyKENDYWxsSGVs
cGVyczo6QWRkcmVzcyhHUFJJbmZvOjpyZWdUMywgSlNCb3VuZEZ1bmN0aW9uOjpvZmZzZXRPZlRh
cmdldEZ1bmN0aW9uKCkpLCBHUFJJbmZvOjpyZWdUMyk7Ci0gICAgaml0LnN0b3JlQ2VsbChHUFJJ
bmZvOjpyZWdUMywgQ0NhbGxIZWxwZXJzOjpjYWxsZWVGcmFtZVNsb3QoSlNTdGFjazo6Q2FsbGVl
KSk7CisgICAgaml0LnN0b3JlQ2VsbChHUFJJbmZvOjpyZWdUMywgQ0NhbGxIZWxwZXJzOjpjYWxs
ZWVGcmFtZVNsb3QoQ2FsbEZyYW1lSGVhZGVyOjpDYWxsZWUpKTsKICAgICAKICAgICAvLyBPSywg
bm93IHdlIGNhbiBzdGFydCBjb3B5aW5nLiBUaGlzIGlzIGEgc2ltcGxlIG1hdHRlciBvZiBjb3B5
aW5nIHBhcmFtZXRlcnMgZnJvbSB0aGUgY2FsbGVyJ3MKICAgICAvLyBmcmFtZSB0byB0aGUgY2Fs
bGVlJ3MgZnJhbWUuIE5vdGUgdGhhdCB3ZSBrbm93IHRoYXQgcmVnVDEgKHRoZSBhcmd1bWVudCBj
b3VudCkgbXVzdCBiZSBhdApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
RGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
RGF0YS5jcHAJKHJldmlzaW9uIDIwMjk1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludERhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NiwxOCArOTYsMTggQEAgdm9pZCBE
YXRhOjpwZXJmb3JtQXNzZXJ0aW9ucyhWTSYgdm0pCiAKICAgICBTVEFUSUNfQVNTRVJUKHNpemVv
Zih2b2lkKikgPT0gUHRyU2l6ZSk7CiAgICAgU1RBVElDX0FTU0VSVChzaXplb2YoUmVnaXN0ZXIp
ID09IFNsb3RTaXplKTsKLSAgICBTVEFUSUNfQVNTRVJUKEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRl
clNpemUgPT0gQ2FsbEZyYW1lSGVhZGVyU2xvdHMpOworICAgIFNUQVRJQ19BU1NFUlQoQ2FsbEZy
YW1lSGVhZGVyOjpTaXplID09IENhbGxGcmFtZUhlYWRlclNsb3RzKTsKIAogICAgIEFTU0VSVCgh
Q2FsbEZyYW1lOjpjYWxsZXJGcmFtZU9mZnNldCgpKTsKLSAgICBTVEFUSUNfQVNTRVJUKEpTU3Rh
Y2s6OkNhbGxlckZyYW1lQW5kUENTaXplID09IChQdHJTaXplICogMikgLyBTbG90U2l6ZSk7Cisg
ICAgU1RBVElDX0FTU0VSVChDYWxsRnJhbWVIZWFkZXI6OkNhbGxlckZyYW1lQW5kUENTaXplID09
IChQdHJTaXplICogMikgLyBTbG90U2l6ZSk7CiAgICAgQVNTRVJUKENhbGxGcmFtZTo6cmV0dXJu
UENPZmZzZXQoKSA9PSBDYWxsRnJhbWU6OmNhbGxlckZyYW1lT2Zmc2V0KCkgKyBQdHJTaXplKTsK
LSAgICBBU1NFUlQoSlNTdGFjazo6Q29kZUJsb2NrICogc2l6ZW9mKFJlZ2lzdGVyKSA9PSBDYWxs
RnJhbWU6OnJldHVyblBDT2Zmc2V0KCkgKyBQdHJTaXplKTsKLSAgICBTVEFUSUNfQVNTRVJUKEpT
U3RhY2s6OkNhbGxlZSAqIHNpemVvZihSZWdpc3RlcikgPT0gSlNTdGFjazo6Q29kZUJsb2NrICog
c2l6ZW9mKFJlZ2lzdGVyKSArIFNsb3RTaXplKTsKLSAgICBTVEFUSUNfQVNTRVJUKEpTU3RhY2s6
OkFyZ3VtZW50Q291bnQgKiBzaXplb2YoUmVnaXN0ZXIpID09IEpTU3RhY2s6OkNhbGxlZSAqIHNp
emVvZihSZWdpc3RlcikgKyBTbG90U2l6ZSk7Ci0gICAgU1RBVElDX0FTU0VSVChKU1N0YWNrOjpU
aGlzQXJndW1lbnQgKiBzaXplb2YoUmVnaXN0ZXIpID09IEpTU3RhY2s6OkFyZ3VtZW50Q291bnQg
KiBzaXplb2YoUmVnaXN0ZXIpICsgU2xvdFNpemUpOwotICAgIFNUQVRJQ19BU1NFUlQoSlNTdGFj
azo6Q2FsbEZyYW1lSGVhZGVyU2l6ZSA9PSBKU1N0YWNrOjpUaGlzQXJndW1lbnQpOworICAgIEFT
U0VSVChDYWxsRnJhbWVIZWFkZXI6OkNvZGVCbG9jayAqIHNpemVvZihSZWdpc3RlcikgPT0gQ2Fs
bEZyYW1lOjpyZXR1cm5QQ09mZnNldCgpICsgUHRyU2l6ZSk7CisgICAgU1RBVElDX0FTU0VSVChD
YWxsRnJhbWVIZWFkZXI6OkNhbGxlZSAqIHNpemVvZihSZWdpc3RlcikgPT0gQ2FsbEZyYW1lSGVh
ZGVyOjpDb2RlQmxvY2sgKiBzaXplb2YoUmVnaXN0ZXIpICsgU2xvdFNpemUpOworICAgIFNUQVRJ
Q19BU1NFUlQoQ2FsbEZyYW1lSGVhZGVyOjpBcmd1bWVudENvdW50ICogc2l6ZW9mKFJlZ2lzdGVy
KSA9PSBDYWxsRnJhbWVIZWFkZXI6OkNhbGxlZSAqIHNpemVvZihSZWdpc3RlcikgKyBTbG90U2l6
ZSk7CisgICAgU1RBVElDX0FTU0VSVChDYWxsRnJhbWVIZWFkZXI6OlRoaXNBcmd1bWVudCAqIHNp
emVvZihSZWdpc3RlcikgPT0gQ2FsbEZyYW1lSGVhZGVyOjpBcmd1bWVudENvdW50ICogc2l6ZW9m
KFJlZ2lzdGVyKSArIFNsb3RTaXplKTsKKyAgICBTVEFUSUNfQVNTRVJUKENhbGxGcmFtZUhlYWRl
cjo6U2l6ZSA9PSBDYWxsRnJhbWVIZWFkZXI6OlRoaXNBcmd1bWVudCk7CiAKLSAgICBBU1NFUlQo
Q2FsbEZyYW1lOjphcmd1bWVudE9mZnNldEluY2x1ZGluZ1RoaXMoMCkgPT0gSlNTdGFjazo6VGhp
c0FyZ3VtZW50KTsKKyAgICBBU1NFUlQoQ2FsbEZyYW1lOjphcmd1bWVudE9mZnNldEluY2x1ZGlu
Z1RoaXMoMCkgPT0gQ2FsbEZyYW1lSGVhZGVyOjpUaGlzQXJndW1lbnQpOwogCiAjaWYgQ1BVKEJJ
R19FTkRJQU4pCiAgICAgQVNTRVJUKE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlw
dG9yLCBhc0JpdHMudGFnKSA9PSAwKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludFNsb3dQYXRocy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAkocmV2aXNpb24gMjAyOTU0KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTMyNiw3ICsxMzI2LDcgQEAgaW5saW5lIFNsb3dQYXRoUmV0dXJuVHlwZSBnZW5lcmljQ2FsbChF
eAogICAgIEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSA9IGV4ZWMgLSBwY1s0XS51Lm9wZXJhbmQ7CiAg
ICAgCiAgICAgZXhlY0NhbGxlZS0+c2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMocGNbM10u
dS5vcGVyYW5kKTsKLSAgICBleGVjQ2FsbGVlLT51bmNoZWNrZWRSKEpTU3RhY2s6OkNhbGxlZSkg
PSBjYWxsZWVBc1ZhbHVlOworICAgIGV4ZWNDYWxsZWUtPnVuY2hlY2tlZFIoQ2FsbEZyYW1lSGVh
ZGVyOjpDYWxsZWUpID0gY2FsbGVlQXNWYWx1ZTsKICAgICBleGVjQ2FsbGVlLT5zZXRDYWxsZXJG
cmFtZShleGVjKTsKICAgICAKICAgICBBU1NFUlQocGNbNV0udS5jYWxsTGlua0luZm8pOwpAQCAt
MTQwNSw3ICsxNDA1LDcgQEAgaW5saW5lIFNsb3dQYXRoUmV0dXJuVHlwZSB2YXJhcmdzU2V0dXAo
RQogICAgICAgICBzZXR1cEZvcndhcmRBcmd1bWVudHNGcmFtZUFuZFNldFRoaXMoZXhlYywgZXhl
Y0NhbGxlZSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCksIHZtLnZhcmFyZ3NMZW5ndGgpOwogCiAg
ICAgZXhlY0NhbGxlZS0+c2V0Q2FsbGVyRnJhbWUoZXhlYyk7Ci0gICAgZXhlY0NhbGxlZS0+dW5j
aGVja2VkUihKU1N0YWNrOjpDYWxsZWUpID0gY2FsbGVlQXNWYWx1ZTsKKyAgICBleGVjQ2FsbGVl
LT51bmNoZWNrZWRSKENhbGxGcmFtZUhlYWRlcjo6Q2FsbGVlKSA9IGNhbGxlZUFzVmFsdWU7CiAg
ICAgZXhlYy0+c2V0Q3VycmVudFZQQyhwYyk7CiAKICAgICByZXR1cm4gc2V0VXBDYWxsKGV4ZWND
YWxsZWUsIHBjLCBraW5kLCBjYWxsZWVBc1ZhbHVlKTsKQEAgLTE0MzYsNyArMTQzNiw3IEBAIExM
SU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9jYWxsX2V2YWwKICAgICAKICAgICBleGVjQ2Fs
bGVlLT5zZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyhwY1szXS51Lm9wZXJhbmQpOwogICAg
IGV4ZWNDYWxsZWUtPnNldENhbGxlckZyYW1lKGV4ZWMpOwotICAgIGV4ZWNDYWxsZWUtPnVuY2hl
Y2tlZFIoSlNTdGFjazo6Q2FsbGVlKSA9IGNhbGxlZUFzVmFsdWU7CisgICAgZXhlY0NhbGxlZS0+
dW5jaGVja2VkUihDYWxsRnJhbWVIZWFkZXI6OkNhbGxlZSkgPSBjYWxsZWVBc1ZhbHVlOwogICAg
IGV4ZWNDYWxsZWUtPnNldFJldHVyblBDKExMSW50OjpnZXRDb2RlUHRyKGxsaW50X2dlbmVyaWNf
cmV0dXJuX3BvaW50KSk7CiAgICAgZXhlY0NhbGxlZS0+c2V0Q29kZUJsb2NrKDApOwogICAgIGV4
ZWMtPnNldEN1cnJlbnRWUEMocGMpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29tbW9uU2xvd1BhdGhzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgJKHJldmlzaW9uIDIwMjk1NCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCSh3b3JraW5nIGNvcHkpCkBA
IC02MCw5ICs2MCw5IEBAIEFMV0FZU19JTkxJTkUgaW50IGFyaXR5Q2hlY2tGb3IoRXhlY1N0YXQK
ICAgICBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPSBleGVjLT5hcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpcygpOwogICAgIAogICAgIEFTU0VSVChhcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpcyA8IG5ld0NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKTsKLSAgICBpbnQgZnJhbWVTaXpl
ID0gYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgKyBKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJT
aXplOworICAgIGludCBmcmFtZVNpemUgPSBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyArIENh
bGxGcmFtZUhlYWRlcjo6U2l6ZTsKICAgICBpbnQgYWxpZ25lZEZyYW1lU2l6ZUZvclBhcmFtZXRl
cnMgPSBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Yoc3RhY2tBbGlnbm1lbnRSZWdpc3RlcnMoKSwK
LSAgICAgICAgbmV3Q29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkgKyBKU1N0YWNrOjpDYWxsRnJh
bWVIZWFkZXJTaXplKTsKKyAgICAgICAgbmV3Q29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkgKyBD
YWxsRnJhbWVIZWFkZXI6OlNpemUpOwogICAgIGludCBwYWRkZWRTdGFja1NwYWNlID0gYWxpZ25l
ZEZyYW1lU2l6ZUZvclBhcmFtZXRlcnMgLSBmcmFtZVNpemU7CiAKICAgICBpZiAoIXN0YWNrLT5l
bnN1cmVDYXBhY2l0eUZvcihleGVjLT5yZWdpc3RlcnMoKSAtIHBhZGRlZFN0YWNrU3BhY2UgJSBz
dGFja0FsaWdubWVudFJlZ2lzdGVycygpKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAkocmV2aXNpb24gMjAyOTU0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAkod29ya2luZyBjb3B5KQpA
QCAtMjA5LDcgKzIwOSw3IEBAIHByaXZhdGU6CiBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVD4gdXNpbmcgSW5pdGlhbGl6ZXIgPSB0eXBlbmFtZSBMYXp5UHJvcGVydHk8SlNHbG9iYWxP
YmplY3QsIFQ+OjpJbml0aWFsaXplcjsKICAgICAKLSAgICBSZWdpc3RlciBtX2dsb2JhbENhbGxG
cmFtZVtKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJTaXplXTsKKyAgICBSZWdpc3RlciBtX2dsb2Jh
bENhbGxGcmFtZVtDYWxsRnJhbWVIZWFkZXI6OlNpemVdOwogCiAgICAgV3JpdGVCYXJyaWVyPEpT
T2JqZWN0PiBtX2dsb2JhbFRoaXM7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0YWNrQWxpZ25tZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RhY2tBbGlnbm1lbnQuaAkocmV2aXNpb24gMjAyOTU0KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RhY2tBbGlnbm1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAt
NDQsMTQgKzQ0LDE0IEBAIGlubGluZSB1bnNpZ25lZCBzdGFja0FsaWdubWVudFJlZ2lzdGVycygK
IC8vIGFuICJ1bmFsaWduZWQiIGNvdW50IG9mIHJlZ2lzdGVycy4KIGlubGluZSB1bnNpZ25lZCBy
b3VuZEFyZ3VtZW50Q291bnRUb0FsaWduRnJhbWUodW5zaWduZWQgYXJndW1lbnRDb3VudCkKIHsK
LSAgICByZXR1cm4gV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mKHN0YWNrQWxpZ25tZW50UmVnaXN0
ZXJzKCksIGFyZ3VtZW50Q291bnQgKyBKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJTaXplKSAtIEpT
U3RhY2s6OkNhbGxGcmFtZUhlYWRlclNpemU7CisgICAgcmV0dXJuIFdURjo6cm91bmRVcFRvTXVs
dGlwbGVPZihzdGFja0FsaWdubWVudFJlZ2lzdGVycygpLCBhcmd1bWVudENvdW50ICsgQ2FsbEZy
YW1lSGVhZGVyOjpTaXplKSAtIENhbGxGcmFtZUhlYWRlcjo6U2l6ZTsKIH0KIAogLy8gQWxpZ24g
bG9jYWwgcmVnaXN0ZXIgY291bnQgdG8gbWFrZSB0aGUgbGFzdCBsb2NhbCBlbmQgb24gYSBzdGFj
ayBhbGlnbmVkIGFkZHJlc3MgZ2l2ZW4gdGhlCi0vLyBDYWxsRnJhbWUgaXMgYXQgYW4gYWRkcmVz
cyB0aGF0IGlzIHN0YWNrIGFsaWduZWQgbWludXMgSlNTdGFjazo6Q2FsbGVyRnJhbWVBbmRQQ1Np
emUKKy8vIENhbGxGcmFtZSBpcyBhdCBhbiBhZGRyZXNzIHRoYXQgaXMgc3RhY2sgYWxpZ25lZCBt
aW51cyBDYWxsRnJhbWVIZWFkZXI6OkNhbGxlckZyYW1lQW5kUENTaXplCiBpbmxpbmUgdW5zaWdu
ZWQgcm91bmRMb2NhbFJlZ2lzdGVyQ291bnRGb3JGcmFtZVBvaW50ZXJPZmZzZXQodW5zaWduZWQg
bG9jYWxSZWdpc3RlckNvdW50KQogewotICAgIHJldHVybiBXVEY6OnJvdW5kVXBUb011bHRpcGxl
T2Yoc3RhY2tBbGlnbm1lbnRSZWdpc3RlcnMoKSwgbG9jYWxSZWdpc3RlckNvdW50ICsgSlNTdGFj
azo6Q2FsbGVyRnJhbWVBbmRQQ1NpemUpIC0gSlNTdGFjazo6Q2FsbGVyRnJhbWVBbmRQQ1NpemU7
CisgICAgcmV0dXJuIFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZihzdGFja0FsaWdubWVudFJlZ2lz
dGVycygpLCBsb2NhbFJlZ2lzdGVyQ291bnQgKyBDYWxsRnJhbWVIZWFkZXI6OkNhbGxlckZyYW1l
QW5kUENTaXplKSAtIENhbGxGcmFtZUhlYWRlcjo6Q2FsbGVyRnJhbWVBbmRQQ1NpemU7CiB9CiAK
IGlubGluZSB1bnNpZ25lZCBsb2dTdGFja0FsaWdubWVudFJlZ2lzdGVycygpCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNRnVuY3Rpb25Db21waWxlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01GdW5jdGlvbkNvbXBpbGVyLmgJKHJl
dmlzaW9uIDIwMjk1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01GdW5jdGlv
bkNvbXBpbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzMCw3ICsxMzAsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIG1fY29kZUJsb2NrLT5zZXRDYWxsZWVTYXZlUmVnaXN0ZXJzKFJlZ2lzdGVyU2V0Ojp3
ZWJBc3NlbWJseUNhbGxlZVNhdmVSZWdpc3RlcnMoKSk7CiAKICAgICAgICAgZW1pdEZ1bmN0aW9u
UHJvbG9ndWUoKTsKLSAgICAgICAgZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVyKG1fY29kZUJsb2Nr
LCBKU1N0YWNrOjpDb2RlQmxvY2spOworICAgICAgICBlbWl0UHV0VG9DYWxsRnJhbWVIZWFkZXIo
bV9jb2RlQmxvY2ssIENhbGxGcmFtZUhlYWRlcjo6Q29kZUJsb2NrKTsKIAogICAgICAgICBtX2Jl
Z2luTGFiZWwgPSBsYWJlbCgpOwogCkBAIC0yMTcsNyArMjE3LDcgQEAgcHVibGljOgogICAgICAg
ICAvLyBGSVhNRTogSW1wbGVtZW50IGFyaXR5IGNoZWNrLgogICAgICAgICBMYWJlbCBhcml0eUNo
ZWNrID0gbGFiZWwoKTsKICAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoKTsKLSAgICAgICAg
ZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVyKG1fY29kZUJsb2NrLCBKU1N0YWNrOjpDb2RlQmxvY2sp
OworICAgICAgICBlbWl0UHV0VG9DYWxsRnJhbWVIZWFkZXIobV9jb2RlQmxvY2ssIENhbGxGcmFt
ZUhlYWRlcjo6Q29kZUJsb2NrKTsKICAgICAgICAganVtcChtX2JlZ2luTGFiZWwpOwogCiAgICAg
ICAgIGlmICghbV9kaXZpZGVFcnJvckp1bXBMaXN0LmVtcHR5KCkpIHsKQEAgLTEzNDcsNyArMTM0
Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBib3hBcmd1bWVudHNBbmRBZGp1c3RTdGFja1BvaW50
ZXIoY29uc3QgVmVjdG9yPFdBU01UeXBlPiYgYXJndW1lbnRzKQogICAgIHsKICAgICAgICAgc2l6
ZV90IGFyZ3VtZW50Q291bnQgPSBhcmd1bWVudHMuc2l6ZSgpOwotICAgICAgICBpbnQgc3RhY2tP
ZmZzZXQgPSAtbV9jYWxsZWVTYXZlU3BhY2UgLSBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Yoc3Rh
Y2tBbGlnbm1lbnRSZWdpc3RlcnMoKSwgbV9udW1iZXJPZkxvY2FscyArIG1fdGVtcFN0YWNrVG9w
ICsgYXJndW1lbnRDb3VudCArIDEgKyBKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJTaXplKTsKKyAg
ICAgICAgaW50IHN0YWNrT2Zmc2V0ID0gLW1fY2FsbGVlU2F2ZVNwYWNlIC0gV1RGOjpyb3VuZFVw
VG9NdWx0aXBsZU9mKHN0YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCksIG1fbnVtYmVyT2ZMb2NhbHMg
KyBtX3RlbXBTdGFja1RvcCArIGFyZ3VtZW50Q291bnQgKyAxICsgQ2FsbEZyYW1lSGVhZGVyOjpT
aXplKTsKIAogICAgICAgICBzdG9yZVRydXN0ZWRWYWx1ZShqc1VuZGVmaW5lZCgpLCBBZGRyZXNz
KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCAoc3RhY2tPZmZzZXQgKyBDYWxsRnJhbWU6OnRo
aXNBcmd1bWVudE9mZnNldCgpKSAqIHNpemVvZihSZWdpc3RlcikpKTsKIApAQCAtMTM4NCwxNyAr
MTM4NCwxNyBAQCBwcml2YXRlOgogICAgICAgICBtX3RlbXBTdGFja1RvcCAtPSBhcmd1bWVudENv
dW50OwogCiAgICAgICAgIGFkZFB0cihUcnVzdGVkSW1tMzIoc3RhY2tPZmZzZXQgKiBzaXplb2Yo
UmVnaXN0ZXIpICsgc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKSwgR1BSSW5mbzo6Y2FsbEZyYW1l
UmVnaXN0ZXIsIHN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKLSAgICAgICAgc3RvcmUzMihUcnVzdGVk
SW1tMzIoYXJndW1lbnRDb3VudCArIDEpLCBBZGRyZXNzKHN0YWNrUG9pbnRlclJlZ2lzdGVyLCBK
U1N0YWNrOjpBcmd1bWVudENvdW50ICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIp
KSArIFBheWxvYWRPZmZzZXQgLSBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykpKTsKKyAgICAgICAg
c3RvcmUzMihUcnVzdGVkSW1tMzIoYXJndW1lbnRDb3VudCArIDEpLCBBZGRyZXNzKHN0YWNrUG9p
bnRlclJlZ2lzdGVyLCBDYWxsRnJhbWVIZWFkZXI6OkFyZ3VtZW50Q291bnQgKiBzdGF0aWNfY2Fz
dDxpbnQ+KHNpemVvZihSZWdpc3RlcikpICsgUGF5bG9hZE9mZnNldCAtIHNpemVvZihDYWxsZXJG
cmFtZUFuZFBDKSkpOwogICAgIH0KIAogICAgIHZvaWQgY2FsbEFuZFVuYm94UmVzdWx0KFdBU01F
eHByZXNzaW9uVHlwZSByZXR1cm5UeXBlKQogICAgIHsKICAgICAgICAgLy8gcmVnVDAgaG9sZHMg
Y2FsbGVlLgogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgIHN0b3JlNjQoR1BSSW5mbzo6cmVn
VDAsIEFkZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0ZXIsIEpTU3RhY2s6OkNhbGxlZSAqIHN0YXRp
Y19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkgLSBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykp
KTsKKyAgICAgICAgc3RvcmU2NChHUFJJbmZvOjpyZWdUMCwgQWRkcmVzcyhzdGFja1BvaW50ZXJS
ZWdpc3RlciwgQ2FsbEZyYW1lSGVhZGVyOjpDYWxsZWUgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVv
ZihSZWdpc3RlcikpIC0gc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKSk7CiAjZWxzZQotICAgICAg
ICBzdG9yZTMyKEdQUkluZm86OnJlZ1QwLCBBZGRyZXNzKHN0YWNrUG9pbnRlclJlZ2lzdGVyLCBK
U1N0YWNrOjpDYWxsZWUgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpICsgUGF5
bG9hZE9mZnNldCAtIHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSkpOwotICAgICAgICBzdG9yZTMy
KFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSwgQWRkcmVzcyhzdGFja1BvaW50ZXJSZWdp
c3RlciwgSlNTdGFjazo6Q2FsbGVlICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIp
KSArIFRhZ09mZnNldCAtIHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSkpOworICAgICAgICBzdG9y
ZTMyKEdQUkluZm86OnJlZ1QwLCBBZGRyZXNzKHN0YWNrUG9pbnRlclJlZ2lzdGVyLCBDYWxsRnJh
bWVIZWFkZXI6OkNhbGxlZSAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkgKyBQ
YXlsb2FkT2Zmc2V0IC0gc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKSk7CisgICAgICAgIHN0b3Jl
MzIoVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpLCBBZGRyZXNzKHN0YWNrUG9pbnRlclJl
Z2lzdGVyLCBDYWxsRnJhbWVIZWFkZXI6OkNhbGxlZSAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9m
KFJlZ2lzdGVyKSkgKyBUYWdPZmZzZXQgLSBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykpKTsKICNl
bmRpZgogCiAgICAgICAgIERhdGFMYWJlbFB0ciBhZGRyZXNzT2ZMaW5rZWRGdW5jdGlvbkNoZWNr
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUZ1bmN0aW9uU3ludGF4Q2hl
Y2tlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01GdW5j
dGlvblN5bnRheENoZWNrZXIuaAkocmV2aXNpb24gMjAyOTU0KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV0FTTUZ1bmN0aW9uU3ludGF4Q2hlY2tlci5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yNzAsOSArMjcwLDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZVRlbXBTdGFja0hlaWdo
dEZvckNhbGwoc2l6ZV90IGFyZ3VtZW50Q291bnQpCiAgICAgewogICAgICAgICAvLyBCb3hlZCBh
cmd1bWVudHMgKyB0aGlzIGFyZ3VtZW50ICsgY2FsbCBmcmFtZSBoZWFkZXIgKyBtYXhpbXVtIHBh
ZGRpbmcuCi0gICAgICAgIG1fdGVtcFN0YWNrVG9wICs9IGFyZ3VtZW50Q291bnQgKyAxICsgSlNT
dGFjazo6Q2FsbEZyYW1lSGVhZGVyU2l6ZSArIDE7CisgICAgICAgIG1fdGVtcFN0YWNrVG9wICs9
IGFyZ3VtZW50Q291bnQgKyAxICsgQ2FsbEZyYW1lSGVhZGVyOjpTaXplICsgMTsKICAgICAgICAg
dXBkYXRlVGVtcFN0YWNrSGVpZ2h0KCk7Ci0gICAgICAgIG1fdGVtcFN0YWNrVG9wIC09IGFyZ3Vt
ZW50Q291bnQgKyAxICsgSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyU2l6ZSArIDE7CisgICAgICAg
IG1fdGVtcFN0YWNrVG9wIC09IGFyZ3VtZW50Q291bnQgKyAxICsgQ2FsbEZyYW1lSGVhZGVyOjpT
aXplICsgMTsKICAgICB9CiAKICAgICB1bnNpZ25lZCBtX251bWJlck9mTG9jYWxzOwo=
</data>
<flag name="review"
          id="306842"
          type_id="1"
          status="-"
          setter="mark.lam"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>283180</attachid>
            <date>2016-07-08 10:03:21 -0700</date>
            <delta_ts>2016-07-08 14:57:46 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-159549.patch</filename>
            <type>text/plain</type>
            <size>140027</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjAyOTgzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI1NyBA
QAorMjAxNi0wNy0wOCAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAg
TW92ZSBDYWxsRnJhbWVIZWFkZXIgaW5mbyBmcm9tIEpTU3RhY2suaCB0byBDYWxsRnJhbWUuaAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU5NTQ5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2FsbEZyYW1l
LmggaXMgYSBtdWNoIGJldHRlciBsb2NhdGlvbiBmb3IgQ2FsbEZyYW1lSGVhZGVyIGluZm8uCisK
KyAgICAgICAgUmVwbGFjZWQgQ2FsbEZyYW1lOjppbml0KCkgd2l0aCBFeGVjU3RhdGU6OmluaXRH
bG9iYWxFeGVjKCkgYmVjYXVzZSBub3JtYWwKKyAgICAgICAgQ2FsbEZyYW1lcyBhcmUgc2V0dXAg
YnkgYSBkaWZmZXJlbnQgbWVjaGFuaXNtIG5vdy4gIE9ubHkgdGhlIGdsb2JhbEV4ZWMgaXMgc3Rp
bGwKKyAgICAgICAgdXNpbmcgaXQuICBTbywgbWlnaHQgYXMgd2VsbCBjaGFuZ2UgaXQgdG8gYmUg
c3BlY2lmaWNhbGx5IGZvciB0aGUgZ2xvYmFsRXhlYy4KKworICAgICAgICBSZW1vdmVkIHRoZSB1
c2Ugb2YgSlNTdGFjazo6Y29udGFpbnNBZGRyZXNzKCkgaW4gRXhlY1N0YXRlOjppbml0R2xvYmFs
RXhlYygpCisgICAgICAgIGJlY2F1c2UgaXQgaXMgbm90IHJlbGV2YW50IHRvIHRoZSBnbG9iYWxF
eGVjLgorCisgICAgICAgIEFsc28gcmVtb3ZlZCBzb21lIHVudXNlZCBjb2RlOiBKU1N0YWNrOjpn
YXRoZXJDb25zZXJ2YXRpdmVSb290cygpIGFuZAorICAgICAgICBKU1N0YWNrOjpzYW5pdGl6ZVN0
YWNrKCkgaXMgbmV2ZXIgY2FsbGVkIGZvciBKSVQgYnVpbGRzLgorCisgICAgICAgICogYnl0ZWNv
ZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpnZW5l
cmF0ZUltcGwpOgorICAgICAgICAqIGJ5dGVjb2RlL1ZpcnR1YWxSZWdpc3Rlci5oOgorICAgICAg
ICAoSlNDOjpWaXJ0dWFsUmVnaXN0ZXI6OmlzVmFsaWQpOgorICAgICAgICAoSlNDOjpWaXJ0dWFs
UmVnaXN0ZXI6OmlzTG9jYWwpOgorICAgICAgICAoSlNDOjpWaXJ0dWFsUmVnaXN0ZXI6OmlzQXJn
dW1lbnQpOgorICAgICAgICAoSlNDOjpWaXJ0dWFsUmVnaXN0ZXI6OmlzSGVhZGVyKToKKyAgICAg
ICAgKEpTQzo6VmlydHVhbFJlZ2lzdGVyOjppc0NvbnN0YW50KToKKyAgICAgICAgKEpTQzo6Vmly
dHVhbFJlZ2lzdGVyOjp0b0xvY2FsKToKKyAgICAgICAgKEpTQzo6VmlydHVhbFJlZ2lzdGVyOjp0
b0FyZ3VtZW50KToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3Bw
OgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IpOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENhbGwpOgorICAgICAgICAoSlND
OjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENvbnN0cnVjdCk6CisgICAgICAgICogYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkNhbGxBcmd1bWVudHM6OnRo
aXNSZWdpc3Rlcik6CisgICAgICAgIChKU0M6OkNhbGxBcmd1bWVudHM6OmFyZ3VtZW50UmVnaXN0
ZXIpOgorICAgICAgICAoSlNDOjpDYWxsQXJndW1lbnRzOjpzdGFja09mZnNldCk6CisgICAgICAg
IChKU0M6OkNhbGxBcmd1bWVudHM6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKToKKyAgICAg
ICAgKEpTQzo6Q2FsbEFyZ3VtZW50czo6YXJndW1lbnRzTm9kZSk6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlR2VuZXJhdG9yOjpyZWdpc3RlckZvcik6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05v
ZGVzQ29kZWdlbi5jcHA6CisgICAgICAgIChKU0M6OmVtaXRIb21lT2JqZWN0Rm9yQ2FsbGVlKToK
KyAgICAgICAgKEpTQzo6ZW1pdEdldFN1cGVyRnVuY3Rpb25Gb3JDb25zdHJ1Y3QpOgorICAgICAg
ICAoSlNDOjpDYWxsQXJndW1lbnRzOjpDYWxsQXJndW1lbnRzKToKKyAgICAgICAgKiBkZmcvREZH
QXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR0FyZ3VtZW50
c1V0aWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6YXJndW1lbnRzSW52b2x2ZVN0YWNr
U2xvdCk6CisgICAgICAgIChKU0M6OkRGRzo6ZW1pdENvZGVUb0dldEFyZ3VtZW50c0FycmF5TGVu
Z3RoKToKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlND
OjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpnZXQpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2Rl
UGFyc2VyOjpmaW5kQXJndW1lbnRQb3NpdGlvbkZvckxvY2FsKToKKyAgICAgICAgKEpTQzo6REZH
OjpCeXRlQ29kZVBhcnNlcjo6Zmx1c2gpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFy
c2VyOjphZGRDYWxsV2l0aG91dFNldHRpbmdSZXN1bHQpOgorICAgICAgICAoSlNDOjpERkc6OkJ5
dGVDb2RlUGFyc2VyOjpnZXRBcmd1bWVudENvdW50KToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRl
Q29kZVBhcnNlcjo6aW5saW5lQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJz
ZXI6OmhhbmRsZUlubGluaW5nKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6
aGFuZGxlR2V0QnlJZCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRs
ZVB1dEJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2Nr
KToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6SW5saW5lU3RhY2tFbnRyeTo6
SW5saW5lU3RhY2tFbnRyeSk6CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJpemUuaDoKKyAgICAg
ICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToKKyAgICAgICAgKiBkZmcvREZHR3JhcGguY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjppc0xpdmVJbkJ5dGVjb2RlKToKKyAgICAgICAgKiBk
ZmcvREZHR3JhcGguaDoKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6Zm9yQWxsTG9jYWxzTGl2
ZUluQnl0ZWNvZGUpOgorICAgICAgICAqIGRmZy9ERkdKSVRDb21waWxlci5jcHA6CisgICAgICAg
IChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmNvbXBpbGVFbnRyeSk6CisgICAgICAgIChKU0M6OkRG
Rzo6SklUQ29tcGlsZXI6OmNvbXBpbGVTZXR1cFJlZ2lzdGVyc0ZvckVudHJ5KToKKyAgICAgICAg
KEpTQzo6REZHOjpKSVRDb21waWxlcjo6Y29tcGlsZUZ1bmN0aW9uKToKKyAgICAgICAgKiBkZmcv
REZHSklUQ29tcGlsZXIuaDoKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6ZW1pdFN0
b3JlQ2FsbFNpdGVJbmRleCk6CisgICAgICAgICogZGZnL0RGR09TUkF2YWlsYWJpbGl0eUFuYWx5
c2lzUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkxvY2FsT1NSQXZhaWxhYmlsaXR5Q2Fs
Y3VsYXRvcjo6ZXhlY3V0ZU5vZGUpOgorICAgICAgICAqIGRmZy9ERkdPU1JFbnRyeS5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6cHJlcGFyZU9TUkVudHJ5KToKKyAgICAgICAgKiBkZmcvREZHT1NS
RXhpdENvbXBpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpPU1JFeGl0Q29tcGlsZXI6OmVt
aXRSZXN0b3JlQXJndW1lbnRzKToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdENvbXBpbGVyQ29t
bW9uLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpyZWlmeUlubGluZWRDYWxsRnJhbWVzKToKKyAg
ICAgICAgKiBkZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmg6CisgICAgICAgIChKU0M6OkRG
Rzo6YWRqdXN0RnJhbWVBbmRTdGFja0luT1NSRXhpdENvbXBpbGVyVGh1bmspOgorICAgICAgICAq
IGRmZy9ERkdQcmVjaXNlTG9jYWxDbG9iYmVyaXplLmg6CisgICAgICAgIChKU0M6OkRGRzo6UHJl
Y2lzZUxvY2FsQ2xvYmJlcml6ZUFkYXB0b3I6OnJlYWRUb3ApOgorICAgICAgICAqIGRmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVt
aXRHZXRMZW5ndGgpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0R2V0
Q2FsbGVlKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdEdldEFyZ3Vt
ZW50U3RhcnQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlQ3Jl
YXRlRGlyZWN0QXJndW1lbnRzKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82
NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKToKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZn
L0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjplbWl0Q2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGUpOgorICAgICAgICAqIGRmZy9ERkdTdGFja0xheW91dFBoYXNlLmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpTdGFja0xheW91dFBoYXNlOjpydW4pOgorICAgICAgICAqIGRmZy9ERkdUaHVua3Mu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6Om9zckVudHJ5VGh1bmtHZW5lcmF0b3IpOgorICAgICAg
ICAqIGZ0bC9GVExMaW5rLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpsaW5rKToKKyAgICAgICAg
KiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2Vy
REZHVG9CMzo6bG93ZXIpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpj
b21waWxlR2V0TXlBcmd1bWVudEJ5VmFsKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2Vy
REZHVG9CMzo6Y29tcGlsZUdldENhbGxlZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dl
ckRGR1RvQjM6OmNvbXBpbGVHZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyk6CisgICAgICAg
IChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVHZXRTY29wZSk6CisgICAgICAg
IChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVDYWxsT3JDb25zdHJ1Y3QpOgor
ICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlVGFpbENhbGwpOgor
ICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQ2FsbE9yQ29uc3Ry
dWN0VmFyYXJncyk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBp
bGVMb2dTaGFkb3dDaGlja2VuUHJvbG9ndWUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93
ZXJERkdUb0IzOjpnZXRBcmd1bWVudHNMZW5ndGgpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6
TG93ZXJERkdUb0IzOjpnZXRDdXJyZW50Q2FsbGVlKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6
Okxvd2VyREZHVG9CMzo6Z2V0QXJndW1lbnRzU3RhcnQpOgorICAgICAgICAoSlNDOjpGVEw6OkRG
Rzo6TG93ZXJERkdUb0IzOjpjYWxsUHJlZmxpZ2h0KToKKyAgICAgICAgKiBmdGwvRlRMT1NSRXhp
dENvbXBpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjb21waWxlU3R1Yik6CisgICAgICAg
ICogZnRsL0ZUTFNsb3dQYXRoQ2FsbC5oOgorICAgICAgICAoSlNDOjpGVEw6OmNhbGxPcGVyYXRp
b24pOgorICAgICAgICAqIGludGVycHJldGVyL0NhbGxGcmFtZS5jcHA6CisgICAgICAgIChKU0M6
OkV4ZWNTdGF0ZTo6aW5pdEdsb2JhbEV4ZWMpOgorICAgICAgICAoSlNDOjpDYWxsRnJhbWU6OmNh
bGxTaXRlQml0c0FyZUJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Q2FsbEZyYW1lOjpj
YWxsU2l0ZUFzUmF3Qml0cyk6CisgICAgICAgIChKU0M6OkNhbGxGcmFtZTo6dW5zYWZlQ2FsbFNp
dGVBc1Jhd0JpdHMpOgorICAgICAgICAoSlNDOjpDYWxsRnJhbWU6OmNhbGxTaXRlSW5kZXgpOgor
ICAgICAgICAoSlNDOjpDYWxsRnJhbWU6OnNldEN1cnJlbnRWUEMpOgorICAgICAgICAoSlNDOjpD
YWxsRnJhbWU6OmNhbGxTaXRlQml0c0FzQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAqIGludGVy
cHJldGVyL0NhbGxGcmFtZS5oOgorICAgICAgICAoSlNDOjpDYWxsU2l0ZUluZGV4OjpDYWxsU2l0
ZUluZGV4KToKKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjpjYWxsZWVBc1ZhbHVlKToKKyAgICAg
ICAgKEpTQzo6RXhlY1N0YXRlOjpjYWxsZWUpOgorICAgICAgICAoSlNDOjpFeGVjU3RhdGU6OnVu
c2FmZUNhbGxlZSk6CisgICAgICAgIChKU0M6OkV4ZWNTdGF0ZTo6Y29kZUJsb2NrKToKKyAgICAg
ICAgKEpTQzo6RXhlY1N0YXRlOjp1bnNhZmVDb2RlQmxvY2spOgorICAgICAgICAoSlNDOjpFeGVj
U3RhdGU6OnNjb3BlKToKKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjpzZXRDYWxsZXJGcmFtZSk6
CisgICAgICAgIChKU0M6OkV4ZWNTdGF0ZTo6c2V0U2NvcGUpOgorICAgICAgICAoSlNDOjpFeGVj
U3RhdGU6OmFyZ3VtZW50Q291bnQpOgorICAgICAgICAoSlNDOjpFeGVjU3RhdGU6OmFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzKToKKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjphcmd1bWVudE9m
ZnNldCk6CisgICAgICAgIChKU0M6OkV4ZWNTdGF0ZTo6YXJndW1lbnRPZmZzZXRJbmNsdWRpbmdU
aGlzKToKKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjpvZmZzZXRGb3IpOgorICAgICAgICAoSlND
OjpFeGVjU3RhdGU6Om5vQ2FsbGVyKToKKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjpzZXRBcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpcyk6CisgICAgICAgIChKU0M6OkV4ZWNTdGF0ZTo6c2V0Q2Fs
bGVlKToKKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjpzZXRDb2RlQmxvY2spOgorICAgICAgICAo
SlNDOjpFeGVjU3RhdGU6OnNldFJldHVyblBDKToKKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjph
cmdJbmRleEZvclJlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjpjYWxsZXJGcmFt
ZUFuZFBDKToKKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjp1bnNhZmVDYWxsZXJGcmFtZUFuZFBD
KToKKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjppbml0KTogRGVsZXRlZC4KKyAgICAgICAgKiBp
bnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpk
dW1wUmVnaXN0ZXJzKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5oOgorICAg
ICAgICAoSlNDOjpjYWxsZWVGcmFtZUZvclZhcmFyZ3MpOgorICAgICAgICAqIGludGVycHJldGVy
L0pTU3RhY2suaDoKKyAgICAgICAgKEpTQzo6SlNTdGFjazo6Y29udGFpbnNBZGRyZXNzKToKKyAg
ICAgICAgKEpTQzo6SlNTdGFjazo6Z2F0aGVyQ29uc2VydmF0aXZlUm9vdHMpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpKU1N0YWNrOjpzYW5pdGl6ZVN0YWNrKTogRGVsZXRlZC4KKyAgICAgICAg
KiBqaXQvQXNzZW1ibHlIZWxwZXJzLmNwcDoKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJz
OjpqaXRBc3NlcnRBcmd1bWVudENvdW50U2FuZSk6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVs
cGVyczo6ZW1pdFJhbmRvbVRodW5rKToKKyAgICAgICAgKiBqaXQvQXNzZW1ibHlIZWxwZXJzLmg6
CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6cmVzdG9yZVJldHVybkFkZHJlc3NCZWZv
cmVSZXR1cm4pOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmVtaXRHZXRGcm9tQ2Fs
bEZyYW1lSGVhZGVyUHRyKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjplbWl0R2V0
RnJvbUNhbGxGcmFtZUhlYWRlcjMyKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpl
bWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlcjY0KToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxw
ZXJzOjplbWl0UHV0VG9DYWxsRnJhbWVIZWFkZXIpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhl
bHBlcnM6OmVtaXRQdXRUb0NhbGxGcmFtZUhlYWRlckJlZm9yZVByb2xvZ3VlKToKKyAgICAgICAg
KEpTQzo6QXNzZW1ibHlIZWxwZXJzOjplbWl0UHV0UGF5bG9hZFRvQ2FsbEZyYW1lSGVhZGVyQmVm
b3JlUHJvbG9ndWUpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmVtaXRQdXRUYWdU
b0NhbGxGcmFtZUhlYWRlckJlZm9yZVByb2xvZ3VlKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlI
ZWxwZXJzOjpjYWxsZWVGcmFtZVNsb3QpOgorICAgICAgICAqIGppdC9DQ2FsbEhlbHBlcnMuY3Bw
OgorICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OmxvZ1NoYWRvd0NoaWNrZW5Qcm9sb2d1ZVBh
Y2tldCk6CisgICAgICAgICogaml0L0NDYWxsSGVscGVycy5oOgorICAgICAgICAoSlNDOjpDQ2Fs
bEhlbHBlcnM6OnByZXBhcmVGb3JUYWlsQ2FsbFNsb3cpOgorICAgICAgICAqIGppdC9DYWxsRnJh
bWVTaHVmZmxlci5jcHA6CisgICAgICAgIChKU0M6OkNhbGxGcmFtZVNodWZmbGVyOjpDYWxsRnJh
bWVTaHVmZmxlcik6CisgICAgICAgIChKU0M6OkNhbGxGcmFtZVNodWZmbGVyOjpkdW1wKToKKyAg
ICAgICAgKEpTQzo6Q2FsbEZyYW1lU2h1ZmZsZXI6OmV4dGVuZEZyYW1lSWZOZWVkZWQpOgorICAg
ICAgICAoSlNDOjpDYWxsRnJhbWVTaHVmZmxlcjo6cHJlcGFyZUZvclNsb3dQYXRoKToKKyAgICAg
ICAgKEpTQzo6Q2FsbEZyYW1lU2h1ZmZsZXI6OnByZXBhcmVGb3JUYWlsQ2FsbCk6CisgICAgICAg
IChKU0M6OkNhbGxGcmFtZVNodWZmbGVyOjpwcmVwYXJlQW55KToKKyAgICAgICAgKiBqaXQvQ2Fs
bEZyYW1lU2h1ZmZsZXIuaDoKKyAgICAgICAgKEpTQzo6Q2FsbEZyYW1lU2h1ZmZsZXI6OnNuYXBz
aG90KToKKyAgICAgICAgKEpTQzo6Q2FsbEZyYW1lU2h1ZmZsZXI6OnNldENhbGxlZUpTVmFsdWVS
ZWdzKToKKyAgICAgICAgKEpTQzo6Q2FsbEZyYW1lU2h1ZmZsZXI6OmFzc3VtZUNhbGxlZUlzQ2Vs
bCk6CisgICAgICAgIChKU0M6OkNhbGxGcmFtZVNodWZmbGVyOjpudW1Mb2NhbHMpOgorICAgICAg
ICAoSlNDOjpDYWxsRnJhbWVTaHVmZmxlcjo6Z2V0T2xkKToKKyAgICAgICAgKEpTQzo6Q2FsbEZy
YW1lU2h1ZmZsZXI6OnNldE9sZCk6CisgICAgICAgIChKU0M6OkNhbGxGcmFtZVNodWZmbGVyOjpm
aXJzdE9sZCk6CisgICAgICAgIChKU0M6OkNhbGxGcmFtZVNodWZmbGVyOjpsYXN0T2xkKToKKyAg
ICAgICAgKEpTQzo6Q2FsbEZyYW1lU2h1ZmZsZXI6OmlzVmFsaWRPbGQpOgorICAgICAgICAoSlND
OjpDYWxsRnJhbWVTaHVmZmxlcjo6YXJnQ291bnQpOgorICAgICAgICAoSlNDOjpDYWxsRnJhbWVT
aHVmZmxlcjo6Z2V0TmV3KToKKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6
SklUOjpjb21waWxlV2l0aG91dExpbmtpbmcpOgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAg
ICAgKiBqaXQvSklUQ2FsbC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZVNldHVwVmFy
YXJnc0ZyYW1lKToKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlQ2FsbEV2YWxTbG93Q2FzZSk6
CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZU9wQ2FsbCk6CisgICAgICAgICogaml0L0pJVENh
bGwzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZVNldHVwVmFyYXJnc0ZyYW1l
KToKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlQ2FsbEV2YWxTbG93Q2FzZSk6CisgICAgICAg
IChKU0M6OkpJVDo6Y29tcGlsZU9wQ2FsbCk6CisgICAgICAgICogaml0L0pJVElubGluZXMuaDoK
KyAgICAgICAgKEpTQzo6SklUOjpnZXRDb25zdGFudE9wZXJhbmQpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRQdXRJbnRUb0NhbGxGcmFtZUhlYWRlcik6CisgICAgICAgIChKU0M6OkpJVDo6dXBk
YXRlVG9wQ2FsbEZyYW1lKToKKyAgICAgICAgKiBqaXQvSklUT3Bjb2Rlcy5jcHA6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfc2NvcGUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRf
b3BfYXJndW1lbnRfY291bnQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X3Jlc3Rf
bGVuZ3RoKToKKyAgICAgICAgKiBqaXQvSklUT3Bjb2RlczMyXzY0LmNwcDoKKyAgICAgICAgKEpT
Qzo6SklUOjpwcml2YXRlQ29tcGlsZUNUSU5hdGl2ZUNhbGwpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRfb3BfZ2V0X3Njb3BlKToKKyAgICAgICAgKiBqaXQvSlNJbnRlcmZhY2VKSVQuaDoKKyAg
ICAgICAgKEpTQzo6SlNJbnRlcmZhY2VKSVQ6OmVtaXRKdW1wSWZOb3RUeXBlKToKKyAgICAgICAg
KEpTQzo6SlNJbnRlcmZhY2VKSVQ6OmVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyUHRyKToKKyAg
ICAgICAgKEpTQzo6SlNJbnRlcmZhY2VKSVQ6OmVtaXRQdXRUb0NhbGxGcmFtZUhlYWRlcik6Cisg
ICAgICAgIChKU0M6OkpTSW50ZXJmYWNlSklUOjplbWl0UHV0Q2VsbFRvQ2FsbEZyYW1lSGVhZGVy
KToKKyAgICAgICAgKiBqaXQvU2V0dXBWYXJhcmdzRnJhbWUuY3BwOgorICAgICAgICAoSlNDOjpl
bWl0U2V0VmFyYXJnc0ZyYW1lKToKKyAgICAgICAgKEpTQzo6ZW1pdFNldHVwVmFyYXJnc0ZyYW1l
RmFzdENhc2UpOgorICAgICAgICAqIGppdC9TcGVjaWFsaXplZFRodW5rSklULmg6CisgICAgICAg
IChKU0M6OlNwZWNpYWxpemVkVGh1bmtKSVQ6OlNwZWNpYWxpemVkVGh1bmtKSVQpOgorICAgICAg
ICAqIGppdC9UaHVua0dlbmVyYXRvcnMuY3BwOgorICAgICAgICAoSlNDOjpuYXRpdmVGb3JHZW5l
cmF0b3IpOgorICAgICAgICAoSlNDOjphcml0eUZpeHVwR2VuZXJhdG9yKToKKyAgICAgICAgKEpT
Qzo6Ym91bmRUaGlzTm9BcmdzRnVuY3Rpb25DYWxsR2VuZXJhdG9yKToKKyAgICAgICAgKiBsbGlu
dC9MTEludERhdGEuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6RGF0YTo6cGVyZm9ybUFzc2Vy
dGlvbnMpOgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpT
Qzo6TExJbnQ6OmdlbmVyaWNDYWxsKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnZhcmFyZ3NTZXR1
cCk6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BBVEhfREVDTCk6CisgICAgICAg
ICogcnVudGltZS9Db21tb25TbG93UGF0aHMuaDoKKyAgICAgICAgKEpTQzo6Q29tbW9uU2xvd1Bh
dGhzOjphcml0eUNoZWNrRm9yKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNw
cDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmluaXQpOgorICAgICAgICAqIHJ1bnRp
bWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL1N0YWNrQWxpZ25tZW50Lmg6
CisgICAgICAgIChKU0M6OnJvdW5kQXJndW1lbnRDb3VudFRvQWxpZ25GcmFtZSk6CisgICAgICAg
IChKU0M6OnJvdW5kTG9jYWxSZWdpc3RlckNvdW50Rm9yRnJhbWVQb2ludGVyT2Zmc2V0KToKKyAg
ICAgICAgKEpTQzo6bG9nU3RhY2tBbGlnbm1lbnRSZWdpc3RlcnMpOgorICAgICAgICAqIHdhc20v
V0FTTUZ1bmN0aW9uQ29tcGlsZXIuaDoKKyAgICAgICAgKEpTQzo6V0FTTUZ1bmN0aW9uQ29tcGls
ZXI6OnN0YXJ0RnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpXQVNNRnVuY3Rpb25Db21waWxlcjo6
ZW5kRnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpXQVNNRnVuY3Rpb25Db21waWxlcjo6Ym94QXJn
dW1lbnRzQW5kQWRqdXN0U3RhY2tQb2ludGVyKToKKyAgICAgICAgKEpTQzo6V0FTTUZ1bmN0aW9u
Q29tcGlsZXI6OmNhbGxBbmRVbmJveFJlc3VsdCk6CisgICAgICAgICogd2FzbS9XQVNNRnVuY3Rp
b25TeW50YXhDaGVja2VyLmg6CisgICAgICAgIChKU0M6OldBU01GdW5jdGlvblN5bnRheENoZWNr
ZXI6OnVwZGF0ZVRlbXBTdGFja0hlaWdodEZvckNhbGwpOgorCiAyMDE2LTA3LTA4ICBLZWl0aCBN
aWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFR5cGVkQXJyYXlzIG5l
ZWQgbW9yZSBpc05ldXRlcmVkIGNoZWNrcy4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcAkocmV2aXNpb24gMjAyOTU0
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtOTQ3LDcgKzk0Nyw3IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2Vu
ZXJhdGVJbXBsKEFjY2Vzc0dlbmUKIAogICAgICAgICBqaXQuc3RvcmUzMigKICAgICAgICAgICAg
IENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKHN0YXRlLmNhbGxTaXRlSW5kZXhGb3JFeGNlcHRp
b25IYW5kbGluZ09yT3JpZ2luYWwoKS5iaXRzKCkpLAotICAgICAgICAgICAgQ0NhbGxIZWxwZXJz
Ojp0YWdGb3Ioc3RhdGljX2Nhc3Q8VmlydHVhbFJlZ2lzdGVyPihKU1N0YWNrOjpBcmd1bWVudENv
dW50KSkpOworICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjp0YWdGb3Ioc3RhdGljX2Nhc3Q8Vmly
dHVhbFJlZ2lzdGVyPihDYWxsRnJhbWVIZWFkZXI6OkFyZ3VtZW50Q291bnQpKSk7CiAKICAgICAg
ICAgaWYgKG1fdHlwZSA9PSBHZXR0ZXIgfHwgbV90eXBlID09IFNldHRlcikgewogICAgICAgICAg
ICAgLy8gQ3JlYXRlIGEgSlMgY2FsbCB1c2luZyBhIEpTIGNhbGwgaW5saW5lIGNhY2hlLiBBc3N1
bWUgdGhhdDoKQEAgLTEwMDIsNyArMTAwMiw3IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVJ
bXBsKEFjY2Vzc0dlbmUKICAgICAgICAgICAgIENDYWxsSGVscGVyczo6SnVtcCByZXR1cm5VbmRl
ZmluZWQgPSBqaXQuYnJhbmNoVGVzdFB0cigKICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6
Olplcm8sIGxvYWRlZFZhbHVlR1BSKTsKIAotICAgICAgICAgICAgdW5zaWduZWQgbnVtYmVyT2ZS
ZWdzRm9yQ2FsbCA9IEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlclNpemUgKyBudW1iZXJPZlBhcmFt
ZXRlcnM7CisgICAgICAgICAgICB1bnNpZ25lZCBudW1iZXJPZlJlZ3NGb3JDYWxsID0gQ2FsbEZy
YW1lSGVhZGVyOjpTaXplICsgbnVtYmVyT2ZQYXJhbWV0ZXJzOwogCiAgICAgICAgICAgICB1bnNp
Z25lZCBudW1iZXJPZkJ5dGVzRm9yQ2FsbCA9CiAgICAgICAgICAgICAgICAgbnVtYmVyT2ZSZWdz
Rm9yQ2FsbCAqIHNpemVvZihSZWdpc3RlcikgLSBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQyk7CkBA
IC0xMDIwLDEwICsxMDIwLDEwIEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKEFjY2Vz
c0dlbmUKIAogICAgICAgICAgICAgaml0LnN0b3JlMzIoCiAgICAgICAgICAgICAgICAgQ0NhbGxI
ZWxwZXJzOjpUcnVzdGVkSW1tMzIobnVtYmVyT2ZQYXJhbWV0ZXJzKSwKLSAgICAgICAgICAgICAg
ICBjYWxsZWVGcmFtZS53aXRoT2Zmc2V0KEpTU3RhY2s6OkFyZ3VtZW50Q291bnQgKiBzaXplb2Yo
UmVnaXN0ZXIpICsgUGF5bG9hZE9mZnNldCkpOworICAgICAgICAgICAgICAgIGNhbGxlZUZyYW1l
LndpdGhPZmZzZXQoQ2FsbEZyYW1lSGVhZGVyOjpBcmd1bWVudENvdW50ICogc2l6ZW9mKFJlZ2lz
dGVyKSArIFBheWxvYWRPZmZzZXQpKTsKIAogICAgICAgICAgICAgaml0LnN0b3JlQ2VsbCgKLSAg
ICAgICAgICAgICAgICBsb2FkZWRWYWx1ZUdQUiwgY2FsbGVlRnJhbWUud2l0aE9mZnNldChKU1N0
YWNrOjpDYWxsZWUgKiBzaXplb2YoUmVnaXN0ZXIpKSk7CisgICAgICAgICAgICAgICAgbG9hZGVk
VmFsdWVHUFIsIGNhbGxlZUZyYW1lLndpdGhPZmZzZXQoQ2FsbEZyYW1lSGVhZGVyOjpDYWxsZWUg
KiBzaXplb2YoUmVnaXN0ZXIpKSk7CiAKICAgICAgICAgICAgIGppdC5zdG9yZUNlbGwoCiAgICAg
ICAgICAgICAgICAgYmFzZUZvckdldEdQUiwKQEAgLTEyNjAsNyArMTI2MCw3IEBAIHZvaWQgQWNj
ZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKEFjY2Vzc0dlbmUKICAgICAgICAgICAgICAgICBqaXQuc3Rv
cmUzMigKICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoCiAg
ICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZS5jYWxsU2l0ZUluZGV4Rm9yRXhjZXB0aW9uSGFu
ZGxpbmdPck9yaWdpbmFsKCkuYml0cygpKSwKLSAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxw
ZXJzOjp0YWdGb3Ioc3RhdGljX2Nhc3Q8VmlydHVhbFJlZ2lzdGVyPihKU1N0YWNrOjpBcmd1bWVu
dENvdW50KSkpOworICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OnRhZ0ZvcihzdGF0
aWNfY2FzdDxWaXJ0dWFsUmVnaXN0ZXI+KENhbGxGcmFtZUhlYWRlcjo6QXJndW1lbnRDb3VudCkp
KTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBqaXQubWFrZVNwYWNlT25TdGFj
a0ZvckNDYWxsKCk7CiAgICAgICAgICAgICAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvVmlydHVhbFJlZ2lzdGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1ZpcnR1YWxSZWdpc3Rlci5oCShyZXZpc2lvbiAyMDI5NTQpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmlydHVhbFJlZ2lzdGVyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDE1
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSwg
MjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1Zh
bGlkKCkgY29uc3QgeyByZXR1cm4gKG1fdmlydHVhbFJlZ2lzdGVyICE9IHNfaW52YWxpZFZpcnR1
YWxSZWdpc3Rlcik7IH0KICAgICBib29sIGlzTG9jYWwoKSBjb25zdCB7IHJldHVybiBvcGVyYW5k
SXNMb2NhbChtX3ZpcnR1YWxSZWdpc3Rlcik7IH0KICAgICBib29sIGlzQXJndW1lbnQoKSBjb25z
dCB7IHJldHVybiBvcGVyYW5kSXNBcmd1bWVudChtX3ZpcnR1YWxSZWdpc3Rlcik7IH0KLSAgICBi
b29sIGlzSGVhZGVyKCkgY29uc3QgeyByZXR1cm4gbV92aXJ0dWFsUmVnaXN0ZXIgPj0gMCAmJiBt
X3ZpcnR1YWxSZWdpc3RlciA8IEpTU3RhY2s6OlRoaXNBcmd1bWVudDsgfQorICAgIGJvb2wgaXNI
ZWFkZXIoKSBjb25zdCB7IHJldHVybiBtX3ZpcnR1YWxSZWdpc3RlciA+PSAwICYmIG1fdmlydHVh
bFJlZ2lzdGVyIDwgQ2FsbEZyYW1lSGVhZGVyOjpUaGlzQXJndW1lbnQ7IH0KICAgICBib29sIGlz
Q29uc3RhbnQoKSBjb25zdCB7IHJldHVybiBtX3ZpcnR1YWxSZWdpc3RlciA+PSBzX2ZpcnN0Q29u
c3RhbnRSZWdpc3RlckluZGV4OyB9CiAgICAgaW50IHRvTG9jYWwoKSBjb25zdCB7IEFTU0VSVChp
c0xvY2FsKCkpOyByZXR1cm4gb3BlcmFuZFRvTG9jYWwobV92aXJ0dWFsUmVnaXN0ZXIpOyB9CiAg
ICAgaW50IHRvQXJndW1lbnQoKSBjb25zdCB7IEFTU0VSVChpc0FyZ3VtZW50KCkpOyByZXR1cm4g
b3BlcmFuZFRvQXJndW1lbnQobV92aXJ0dWFsUmVnaXN0ZXIpOyB9CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmNwcAkocmV2aXNpb24gMjAyOTU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwNiw3ICszMDYs
NyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mCiAKICAgICBhbGxv
Y2F0ZUFuZEVtaXRTY29wZSgpOwogCi0gICAgbV9jYWxsZWVSZWdpc3Rlci5zZXRJbmRleChKU1N0
YWNrOjpDYWxsZWUpOworICAgIG1fY2FsbGVlUmVnaXN0ZXIuc2V0SW5kZXgoQ2FsbEZyYW1lSGVh
ZGVyOjpDYWxsZWUpOwogCiAgICAgaW5pdGlhbGl6ZVBhcmFtZXRlcnMocGFyYW1ldGVycyk7CiAg
ICAgQVNTRVJUKCEoaXNTaW1wbGVQYXJhbWV0ZXJMaXN0ICYmIG1fcmVzdFBhcmFtZXRlcikpOwpA
QCAtNzQyLDcgKzc0Miw3IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihW
TSYKIAogICAgIGFsbG9jYXRlQW5kRW1pdFNjb3BlKCk7CiAKLSAgICBtX2NhbGxlZVJlZ2lzdGVy
LnNldEluZGV4KEpTU3RhY2s6OkNhbGxlZSk7CisgICAgbV9jYWxsZWVSZWdpc3Rlci5zZXRJbmRl
eChDYWxsRnJhbWVIZWFkZXI6OkNhbGxlZSk7CiAKICAgICBtX2NvZGVCbG9jay0+c2V0TnVtUGFy
YW1ldGVycygxKTsgLy8gQWxsb2NhdGUgc3BhY2UgZm9yICJ0aGlzIgogCkBAIC0zMTMwLDggKzMx
MzAsOCBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENhbGwoCiAgICAgfQog
ICAgIAogICAgIC8vIFJlc2VydmUgc3BhY2UgZm9yIGNhbGwgZnJhbWUuCi0gICAgVmVjdG9yPFJl
ZlB0cjxSZWdpc3RlcklEPiwgSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyU2l6ZSwgVW5zYWZlVmVj
dG9yT3ZlcmZsb3c+IGNhbGxGcmFtZTsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IEpTU3RhY2s6
OkNhbGxGcmFtZUhlYWRlclNpemU7ICsraSkKKyAgICBWZWN0b3I8UmVmUHRyPFJlZ2lzdGVySUQ+
LCBDYWxsRnJhbWVIZWFkZXI6OlNpemUsIFVuc2FmZVZlY3Rvck92ZXJmbG93PiBjYWxsRnJhbWU7
CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBDYWxsRnJhbWVIZWFkZXI6OlNpemU7ICsraSkKICAg
ICAgICAgY2FsbEZyYW1lLmFwcGVuZChuZXdUZW1wb3JhcnkoKSk7CiAKICAgICBlbWl0RXhwcmVz
c2lvbkluZm8oZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kKTsKQEAgLTMzMTUsOCArMzMxNSw4
IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q29uc3QKICAgICB9CiAKICAg
ICAvLyBSZXNlcnZlIHNwYWNlIGZvciBjYWxsIGZyYW1lLgotICAgIFZlY3RvcjxSZWZQdHI8UmVn
aXN0ZXJJRD4sIEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlclNpemUsIFVuc2FmZVZlY3Rvck92ZXJm
bG93PiBjYWxsRnJhbWU7Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBKU1N0YWNrOjpDYWxsRnJh
bWVIZWFkZXJTaXplOyArK2kpCisgICAgVmVjdG9yPFJlZlB0cjxSZWdpc3RlcklEPiwgQ2FsbEZy
YW1lSGVhZGVyOjpTaXplLCBVbnNhZmVWZWN0b3JPdmVyZmxvdz4gY2FsbEZyYW1lOworICAgIGZv
ciAoaW50IGkgPSAwOyBpIDwgQ2FsbEZyYW1lSGVhZGVyOjpTaXplOyArK2kpCiAgICAgICAgIGNh
bGxGcmFtZS5hcHBlbmQobmV3VGVtcG9yYXJ5KCkpOwogCiAgICAgZW1pdEV4cHJlc3Npb25JbmZv
KGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCShyZXZpc2lv
biAyMDI5NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTczLDcgKzczLDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAKICAgICAgICAgUmVnaXN0ZXJJRCogdGhpc1JlZ2lzdGVyKCkgeyByZXR1cm4gbV9hcmd2
WzBdLmdldCgpOyB9CiAgICAgICAgIFJlZ2lzdGVySUQqIGFyZ3VtZW50UmVnaXN0ZXIodW5zaWdu
ZWQgaSkgeyByZXR1cm4gbV9hcmd2W2kgKyAxXS5nZXQoKTsgfQotICAgICAgICB1bnNpZ25lZCBz
dGFja09mZnNldCgpIHsgcmV0dXJuIC1tX2FyZ3ZbMF0tPmluZGV4KCkgKyBKU1N0YWNrOjpDYWxs
RnJhbWVIZWFkZXJTaXplOyB9CisgICAgICAgIHVuc2lnbmVkIHN0YWNrT2Zmc2V0KCkgeyByZXR1
cm4gLW1fYXJndlswXS0+aW5kZXgoKSArIENhbGxGcmFtZUhlYWRlcjo6U2l6ZTsgfQogICAgICAg
ICB1bnNpZ25lZCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygpIHsgcmV0dXJuIG1fYXJndi5z
aXplKCkgLSBtX3BhZGRpbmc7IH0KICAgICAgICAgQXJndW1lbnRzTm9kZSogYXJndW1lbnRzTm9k
ZSgpIHsgcmV0dXJuIG1fYXJndW1lbnRzTm9kZTsgfQogCkBAIC04MDksNyArODA5LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBpZiAocmVnLmlzTG9jYWwoKSkKICAgICAgICAgICAg
ICAgICByZXR1cm4gbV9jYWxsZWVMb2NhbHNbcmVnLnRvTG9jYWwoKV07CiAKLSAgICAgICAgICAg
IGlmIChyZWcub2Zmc2V0KCkgPT0gSlNTdGFjazo6Q2FsbGVlKQorICAgICAgICAgICAgaWYgKHJl
Zy5vZmZzZXQoKSA9PSBDYWxsRnJhbWVIZWFkZXI6OkNhbGxlZSkKICAgICAgICAgICAgICAgICBy
ZXR1cm4gbV9jYWxsZWVSZWdpc3RlcjsKIAogICAgICAgICAgICAgQVNTRVJUKG1fcGFyYW1ldGVy
cy5zaXplKCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rl
c0NvZGVnZW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAkocmV2aXNpb24gMjAyOTU0KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xNjUsNyArMTY1LDcgQEAgc3RhdGljIFJlZ2lzdGVySUQqIGVtaXRIb21lT2JqZWN0Rm9yQ2Fs
bAogICAgIH0KIAogICAgIFJlZ2lzdGVySUQgY2FsbGVlOwotICAgIGNhbGxlZS5zZXRJbmRleChK
U1N0YWNrOjpDYWxsZWUpOworICAgIGNhbGxlZS5zZXRJbmRleChDYWxsRnJhbWVIZWFkZXI6OkNh
bGxlZSk7CiAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0R2V0QnlJZChnZW5lcmF0b3IubmV3VGVt
cG9yYXJ5KCksICZjYWxsZWUsIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVz
KCkuaG9tZU9iamVjdFByaXZhdGVOYW1lKCkpOwogfQogCkBAIC0xODEsNyArMTgxLDcgQEAgc3Rh
dGljIFJlZ2lzdGVySUQqIGVtaXRHZXRTdXBlckZ1bmN0aW9uRgogICAgICAgICByZXR1cm4gZ2Vu
ZXJhdG9yLmVtaXRHZXRCeUlkKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgZ2VuZXJhdG9yLmVt
aXRMb2FkRGVyaXZlZENvbnN0cnVjdG9yRnJvbUFycm93RnVuY3Rpb25MZXhpY2FsRW52aXJvbm1l
bnQoKSwgZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS51bmRlcnNjb3JlUHJvdG8pOwogCiAgICAg
UmVnaXN0ZXJJRCBjYWxsZWU7Ci0gICAgY2FsbGVlLnNldEluZGV4KEpTU3RhY2s6OkNhbGxlZSk7
CisgICAgY2FsbGVlLnNldEluZGV4KENhbGxGcmFtZUhlYWRlcjo6Q2FsbGVlKTsKICAgICByZXR1
cm4gZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgJmNhbGxl
ZSwgZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS51bmRlcnNjb3JlUHJvdG8pOwogfQogCkBAIC03
MjQsNyArNzI0LDcgQEAgQ2FsbEFyZ3VtZW50czo6Q2FsbEFyZ3VtZW50cyhCeXRlY29kZUdlbgog
ICAgIH0KIAogICAgIC8vIFdlIG5lZWQgdG8gZW5zdXJlIHRoYXQgdGhlIGZyYW1lIHNpemUgaXMg
c3RhY2stYWxpZ25lZAotICAgIHdoaWxlICgoSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyU2l6ZSAr
IG1fYXJndi5zaXplKCkpICUgc3RhY2tBbGlnbm1lbnRSZWdpc3RlcnMoKSkgeworICAgIHdoaWxl
ICgoQ2FsbEZyYW1lSGVhZGVyOjpTaXplICsgbV9hcmd2LnNpemUoKSkgJSBzdGFja0FsaWdubWVu
dFJlZ2lzdGVycygpKSB7CiAgICAgICAgIG1fYXJndi5pbnNlcnQoMCwgZ2VuZXJhdG9yLm5ld1Rl
bXBvcmFyeSgpKTsKICAgICAgICAgbV9wYWRkaW5nKys7CiAgICAgfQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9u
UGhhc2UuY3BwCShyZXZpc2lvbiAyMDI5NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMDMs
MTIgKzMwMywxMiBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICBpZiAoSW5saW5lQ2Fs
bEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUgPSBjYW5kaWRhdGUtPm9yaWdpbi5zZW1hbnRpYy5pbmxp
bmVDYWxsRnJhbWUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbmxpbmVDYWxsRnJh
bWUtPmlzVmFyYXJncygpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNDbG9iYmVy
ZWRCeUJsb2NrIHw9IGNsb2JiZXJlZEJ5VGhpc0Jsb2NrLm9wZXJhbmQoCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyBKU1N0YWNr
OjpBcmd1bWVudENvdW50KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5saW5l
Q2FsbEZyYW1lLT5zdGFja09mZnNldCArIENhbGxGcmFtZUhlYWRlcjo6QXJndW1lbnRDb3VudCk7
CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAKICAg
ICAgICAgICAgICAgICAgICAgICAgIGlmICghaXNDbG9iYmVyZWRCeUJsb2NrIHx8IGlubGluZUNh
bGxGcmFtZS0+aXNDbG9zdXJlQ2FsbCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlz
Q2xvYmJlcmVkQnlCbG9jayB8PSBjbG9iYmVyZWRCeVRoaXNCbG9jay5vcGVyYW5kKAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsg
SlNTdGFjazo6Q2FsbGVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5saW5l
Q2FsbEZyYW1lLT5zdGFja09mZnNldCArIENhbGxGcmFtZUhlYWRlcjo6Q2FsbGVlKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKCFpc0Nsb2JiZXJlZEJ5QmxvY2spIHsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRzVXRpbGl0aWVzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c1V0aWxpdGllcy5jcHAJKHJl
dmlzaW9uIDIwMjk1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRz
VXRpbGl0aWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsMTEgKzM4LDExIEBAIGJvb2wgYXJn
dW1lbnRzSW52b2x2ZVN0YWNrU2xvdChJbmxpbmVDYWwKICAgICAgICAgcmV0dXJuIChyZWcuaXNB
cmd1bWVudCgpICYmIHJlZy50b0FyZ3VtZW50KCkpIHx8IHJlZy5pc0hlYWRlcigpOwogICAgIAog
ICAgIGlmIChpbmxpbmVDYWxsRnJhbWUtPmlzQ2xvc3VyZUNhbGwKLSAgICAgICAgJiYgcmVnID09
IFZpcnR1YWxSZWdpc3RlcihpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgSlNTdGFjazo6
Q2FsbGVlKSkKKyAgICAgICAgJiYgcmVnID09IFZpcnR1YWxSZWdpc3RlcihpbmxpbmVDYWxsRnJh
bWUtPnN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lSGVhZGVyOjpDYWxsZWUpKQogICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICAKICAgICBpZiAoaW5saW5lQ2FsbEZyYW1lLT5pc1ZhcmFyZ3MoKQotICAg
ICAgICAmJiByZWcgPT0gVmlydHVhbFJlZ2lzdGVyKGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZz
ZXQgKyBKU1N0YWNrOjpBcmd1bWVudENvdW50KSkKKyAgICAgICAgJiYgcmVnID09IFZpcnR1YWxS
ZWdpc3RlcihpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lSGVhZGVyOjpB
cmd1bWVudENvdW50KSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgCiAgICAgdW5zaWduZWQg
bnVtQXJndW1lbnRzID0gaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgpIC0gMTsKQEAg
LTc4LDcgKzc4LDcgQEAgTm9kZSogZW1pdENvZGVUb0dldEFyZ3VtZW50c0FycmF5TGVuZ3RoKAog
ICAgIGlmICghaW5saW5lQ2FsbEZyYW1lKQogICAgICAgICBhcmd1bWVudENvdW50ID0gaW5zZXJ0
aW9uU2V0Lmluc2VydE5vZGUobm9kZUluZGV4LCBTcGVjSW50MzJPbmx5LCBHZXRBcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcywgb3JpZ2luKTsKICAgICBlbHNlIHsKLSAgICAgICAgVmlydHVhbFJl
Z2lzdGVyIGFyZ3VtZW50Q291bnRSZWdpc3RlcihpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0
ICsgSlNTdGFjazo6QXJndW1lbnRDb3VudCk7CisgICAgICAgIFZpcnR1YWxSZWdpc3RlciBhcmd1
bWVudENvdW50UmVnaXN0ZXIoaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCArIENhbGxGcmFt
ZUhlYWRlcjo6QXJndW1lbnRDb3VudCk7CiAgICAgICAgIAogICAgICAgICBhcmd1bWVudENvdW50
ID0gaW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCiAgICAgICAgICAgICBub2RlSW5kZXgsIFNwZWNJ
bnQzMk9ubHksIEdldFN0YWNrLCBvcmlnaW4sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkocmV2aXNpb24gMjAyOTU0KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTMzMSwxMCArMzMxLDEwIEBAIHByaXZhdGU6CiAgICAgICAgIGlmIChpbmxpbmVDYWxs
RnJhbWUoKSkgewogICAgICAgICAgICAgaWYgKCFpbmxpbmVDYWxsRnJhbWUoKS0+aXNDbG9zdXJl
Q2FsbCkgewogICAgICAgICAgICAgICAgIEpTRnVuY3Rpb24qIGNhbGxlZSA9IGlubGluZUNhbGxG
cmFtZSgpLT5jYWxsZWVDb25zdGFudCgpOwotICAgICAgICAgICAgICAgIGlmIChvcGVyYW5kLm9m
ZnNldCgpID09IEpTU3RhY2s6OkNhbGxlZSkKKyAgICAgICAgICAgICAgICBpZiAob3BlcmFuZC5v
ZmZzZXQoKSA9PSBDYWxsRnJhbWVIZWFkZXI6OkNhbGxlZSkKICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHdlYWtKU0NvbnN0YW50KGNhbGxlZSk7CiAgICAgICAgICAgICB9Ci0gICAgICAgIH0g
ZWxzZSBpZiAob3BlcmFuZC5vZmZzZXQoKSA9PSBKU1N0YWNrOjpDYWxsZWUpIHsKKyAgICAgICAg
fSBlbHNlIGlmIChvcGVyYW5kLm9mZnNldCgpID09IENhbGxGcmFtZUhlYWRlcjo6Q2FsbGVlKSB7
CiAgICAgICAgICAgICAvLyBXZSBoYXZlIHRvIGRvIHNvbWUgY29uc3RhbnQtZm9sZGluZyBoZXJl
IGJlY2F1c2UgdGhpcyBlbmFibGVzIENyZWF0ZVRoaXMgZm9sZGluZy4gTm90ZQogICAgICAgICAg
ICAgLy8gdGhhdCB3ZSBkb24ndCBoYXZlIHN1Y2ggd2F0Y2hwb2ludC1iYXNlZCBmb2xkaW5nIGZv
ciBpbmxpbmVkIHVzZXMgb2YgQ2FsbGVlLCBzaW5jZSBpbiB0aGF0CiAgICAgICAgICAgICAvLyBj
YXNlIGlmIHRoZSBmdW5jdGlvbiBpcyBhIHNpbmdsZXRvbiB0aGVuIHdlIGFscmVhZHkga25vdyBp
dC4KQEAgLTU0Miw3ICs1NDIsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgSW5saW5lQ2FsbEZy
YW1lKiBpbmxpbmVDYWxsRnJhbWUgPSBzdGFjay0+bV9pbmxpbmVDYWxsRnJhbWU7CiAgICAgICAg
ICAgICBpZiAoIWlubGluZUNhbGxGcmFtZSkKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgIGlmIChvcGVyYW5kLm9mZnNldCgpIDwgc3RhdGljX2Nhc3Q8aW50PihpbmxpbmVDYWxs
RnJhbWUtPnN0YWNrT2Zmc2V0ICsgSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyU2l6ZSkpCisgICAg
ICAgICAgICBpZiAob3BlcmFuZC5vZmZzZXQoKSA8IHN0YXRpY19jYXN0PGludD4oaW5saW5lQ2Fs
bEZyYW1lLT5zdGFja09mZnNldCArIENhbGxGcmFtZUhlYWRlcjo6U2l6ZSkpCiAgICAgICAgICAg
ICAgICAgY29udGludWU7CiAgICAgICAgICAgICBpZiAob3BlcmFuZC5vZmZzZXQoKSA9PSBpbmxp
bmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lOjp0aGlzQXJndW1lbnRPZmZzZXQo
KSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTU5Nyw5ICs1OTcsOSBAQCBwcml2YXRl
OgogICAgICAgICAgICAgQVNTRVJUKCFtX2hhc0RlYnVnZ2VyRW5hYmxlZCk7CiAgICAgICAgICAg
ICBudW1Bcmd1bWVudHMgPSBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5zaXplKCk7CiAgICAg
ICAgICAgICBpZiAoaW5saW5lQ2FsbEZyYW1lLT5pc0Nsb3N1cmVDYWxsKQotICAgICAgICAgICAg
ICAgIGZsdXNoRGlyZWN0KGlubGluZVN0YWNrRW50cnktPnJlbWFwT3BlcmFuZChWaXJ0dWFsUmVn
aXN0ZXIoSlNTdGFjazo6Q2FsbGVlKSkpOworICAgICAgICAgICAgICAgIGZsdXNoRGlyZWN0KGlu
bGluZVN0YWNrRW50cnktPnJlbWFwT3BlcmFuZChWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lSGVh
ZGVyOjpDYWxsZWUpKSk7CiAgICAgICAgICAgICBpZiAoaW5saW5lQ2FsbEZyYW1lLT5pc1ZhcmFy
Z3MoKSkKLSAgICAgICAgICAgICAgICBmbHVzaERpcmVjdChpbmxpbmVTdGFja0VudHJ5LT5yZW1h
cE9wZXJhbmQoVmlydHVhbFJlZ2lzdGVyKEpTU3RhY2s6OkFyZ3VtZW50Q291bnQpKSk7CisgICAg
ICAgICAgICAgICAgZmx1c2hEaXJlY3QoaW5saW5lU3RhY2tFbnRyeS0+cmVtYXBPcGVyYW5kKFZp
cnR1YWxSZWdpc3RlcihDYWxsRnJhbWVIZWFkZXI6OkFyZ3VtZW50Q291bnQpKSk7CiAgICAgICAg
IH0gZWxzZQogICAgICAgICAgICAgbnVtQXJndW1lbnRzID0gaW5saW5lU3RhY2tFbnRyeS0+bV9j
b2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBhcmd1bWVu
dCA9IG51bUFyZ3VtZW50czsgYXJndW1lbnQtLSA+IDE7KQpAQCAtNzY2LDkgKzc2Niw5IEBAIHBy
aXZhdGU6CiAgICAgICAgIE9wSW5mbyBwcmVkaWN0aW9uKQogICAgIHsKICAgICAgICAgYWRkVmFy
QXJnQ2hpbGQoY2FsbGVlKTsKLSAgICAgICAgc2l6ZV90IGZyYW1lU2l6ZSA9IEpTU3RhY2s6OkNh
bGxGcmFtZUhlYWRlclNpemUgKyBhcmdDb3VudDsKKyAgICAgICAgc2l6ZV90IGZyYW1lU2l6ZSA9
IENhbGxGcmFtZUhlYWRlcjo6U2l6ZSArIGFyZ0NvdW50OwogICAgICAgICBzaXplX3QgYWxpZ25l
ZEZyYW1lU2l6ZSA9IFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZihzdGFja0FsaWdubWVudFJlZ2lz
dGVycygpLCBmcmFtZVNpemUpOwotICAgICAgICBzaXplX3QgcGFyYW1ldGVyU2xvdHMgPSBhbGln
bmVkRnJhbWVTaXplIC0gSlNTdGFjazo6Q2FsbGVyRnJhbWVBbmRQQ1NpemU7CisgICAgICAgIHNp
emVfdCBwYXJhbWV0ZXJTbG90cyA9IGFsaWduZWRGcmFtZVNpemUgLSBDYWxsRnJhbWVIZWFkZXI6
OkNhbGxlckZyYW1lQW5kUENTaXplOwogCiAgICAgICAgIGlmIChwYXJhbWV0ZXJTbG90cyA+IG1f
cGFyYW1ldGVyU2xvdHMpCiAgICAgICAgICAgICBtX3BhcmFtZXRlclNsb3RzID0gcGFyYW1ldGVy
U2xvdHM7CkBAIC0xMzM3LDcgKzEzMzcsNyBAQCBOb2RlKiBCeXRlQ29kZVBhcnNlcjo6Z2V0QXJn
dW1lbnRDb3VudCgpCiAgICAgTm9kZSogYXJndW1lbnRDb3VudDsKICAgICBpZiAobV9pbmxpbmVT
dGFja1RvcC0+bV9pbmxpbmVDYWxsRnJhbWUpIHsKICAgICAgICAgaWYgKG1faW5saW5lU3RhY2tU
b3AtPm1faW5saW5lQ2FsbEZyYW1lLT5pc1ZhcmFyZ3MoKSkKLSAgICAgICAgICAgIGFyZ3VtZW50
Q291bnQgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKEpTU3RhY2s6OkFyZ3VtZW50Q291bnQpKTsKKyAg
ICAgICAgICAgIGFyZ3VtZW50Q291bnQgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKENhbGxGcmFtZUhl
YWRlcjo6QXJndW1lbnRDb3VudCkpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBhcmd1bWVu
dENvdW50ID0ganNDb25zdGFudChtX2dyYXBoLmZyZWV6ZShqc051bWJlcihtX2lubGluZVN0YWNr
VG9wLT5tX2lubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKSkpLT52YWx1ZSgpKTsKICAg
ICB9IGVsc2UKQEAgLTE0NzIsMTEgKzE0NzIsMTEgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aW5s
aW5lQ2FsbChOb2RlKiBjYQogCiAgICAgLy8gRklYTUU6IERvbid0IGZsdXNoIGNvbnN0YW50cyEK
ICAgICAKLSAgICBpbnQgaW5saW5lQ2FsbEZyYW1lU3RhcnQgPSBtX2lubGluZVN0YWNrVG9wLT5y
ZW1hcE9wZXJhbmQoVmlydHVhbFJlZ2lzdGVyKHJlZ2lzdGVyT2Zmc2V0KSkub2Zmc2V0KCkgKyBK
U1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJTaXplOworICAgIGludCBpbmxpbmVDYWxsRnJhbWVTdGFy
dCA9IG1faW5saW5lU3RhY2tUb3AtPnJlbWFwT3BlcmFuZChWaXJ0dWFsUmVnaXN0ZXIocmVnaXN0
ZXJPZmZzZXQpKS5vZmZzZXQoKSArIENhbGxGcmFtZUhlYWRlcjo6U2l6ZTsKICAgICAKICAgICBl
bnN1cmVMb2NhbHMoCiAgICAgICAgIFZpcnR1YWxSZWdpc3RlcihpbmxpbmVDYWxsRnJhbWVTdGFy
dCkudG9Mb2NhbCgpICsgMSArCi0gICAgICAgIEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlclNpemUg
KyBjb2RlQmxvY2stPm1fbnVtQ2FsbGVlTG9jYWxzKTsKKyAgICAgICAgQ2FsbEZyYW1lSGVhZGVy
OjpTaXplICsgY29kZUJsb2NrLT5tX251bUNhbGxlZUxvY2Fscyk7CiAgICAgCiAgICAgc2l6ZV90
IGFyZ3VtZW50UG9zaXRpb25TdGFydCA9IG1fZ3JhcGgubV9hcmd1bWVudFBvc2l0aW9ucy5zaXpl
KCk7CiAKQEAgLTE0ODcsNyArMTQ4Nyw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmlubGluZUNh
bGwoTm9kZSogY2EKICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIGNhbGxlZVZhcmlhYmxlID0gbnVs
bHB0cjsKICAgICBpZiAoY2FsbGVlLmlzQ2xvc3VyZUNhbGwoKSkgewogICAgICAgICBOb2RlKiBj
YWxsZWVTZXQgPSBzZXQoCi0gICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIocmVnaXN0ZXJPZmZz
ZXQgKyBKU1N0YWNrOjpDYWxsZWUpLCBjYWxsVGFyZ2V0Tm9kZSwgSW1tZWRpYXRlTmFrZWRTZXQp
OworICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyKHJlZ2lzdGVyT2Zmc2V0ICsgQ2FsbEZyYW1l
SGVhZGVyOjpDYWxsZWUpLCBjYWxsVGFyZ2V0Tm9kZSwgSW1tZWRpYXRlTmFrZWRTZXQpOwogICAg
ICAgICAKICAgICAgICAgY2FsbGVlVmFyaWFibGUgPSBjYWxsZWVTZXQtPnZhcmlhYmxlQWNjZXNz
RGF0YSgpOwogICAgICAgICBjYWxsZWVWYXJpYWJsZS0+bWVyZ2VTaG91bGROZXZlclVuYm94KHRy
dWUpOwpAQCAtMTc0Niw3ICsxNzQ2LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5s
aW5pbmcoCiAgICAgICAgICAgICAKICAgICAgICAgICAgIHJlZ2lzdGVyT2Zmc2V0ID0gcmVnaXN0
ZXJPZmZzZXRPckZpcnN0RnJlZVJlZyArIDE7CiAgICAgICAgICAgICByZWdpc3Rlck9mZnNldCAt
PSBtYXhOdW1Bcmd1bWVudHM7IC8vIGluY2x1ZGVzICJ0aGlzIgotICAgICAgICAgICAgcmVnaXN0
ZXJPZmZzZXQgLT0gSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyU2l6ZTsKKyAgICAgICAgICAgIHJl
Z2lzdGVyT2Zmc2V0IC09IENhbGxGcmFtZUhlYWRlcjo6U2l6ZTsKICAgICAgICAgICAgIHJlZ2lz
dGVyT2Zmc2V0ID0gLVdURjo6cm91bmRVcFRvTXVsdGlwbGVPZigKICAgICAgICAgICAgICAgICBz
dGFja0FsaWdubWVudFJlZ2lzdGVycygpLAogICAgICAgICAgICAgICAgIC1yZWdpc3Rlck9mZnNl
dCk7CkBAIC0xNzY2LDEzICsxNzY2LDEzIEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlu
bGluaW5nKAogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgZW5zdXJl
TG9jYWxzKFZpcnR1YWxSZWdpc3RlcihyZW1hcHBlZFJlZ2lzdGVyT2Zmc2V0KS50b0xvY2FsKCkp
OwogICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgaW50IGFyZ3VtZW50
U3RhcnQgPSByZWdpc3Rlck9mZnNldCArIEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlclNpemU7Cisg
ICAgICAgICAgICAgICAgICAgIGludCBhcmd1bWVudFN0YXJ0ID0gcmVnaXN0ZXJPZmZzZXQgKyBD
YWxsRnJhbWVIZWFkZXI6OlNpemU7CiAgICAgICAgICAgICAgICAgICAgIGludCByZW1hcHBlZEFy
Z3VtZW50U3RhcnQgPQogICAgICAgICAgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+
cmVtYXBPcGVyYW5kKFZpcnR1YWxSZWdpc3Rlcihhcmd1bWVudFN0YXJ0KSkub2Zmc2V0KCk7CiAK
ICAgICAgICAgICAgICAgICAgICAgTG9hZFZhcmFyZ3NEYXRhKiBkYXRhID0gbV9ncmFwaC5tX2xv
YWRWYXJhcmdzRGF0YS5hZGQoKTsKICAgICAgICAgICAgICAgICAgICAgZGF0YS0+c3RhcnQgPSBW
aXJ0dWFsUmVnaXN0ZXIocmVtYXBwZWRBcmd1bWVudFN0YXJ0ICsgMSk7Ci0gICAgICAgICAgICAg
ICAgICAgIGRhdGEtPmNvdW50ID0gVmlydHVhbFJlZ2lzdGVyKHJlbWFwcGVkUmVnaXN0ZXJPZmZz
ZXQgKyBKU1N0YWNrOjpBcmd1bWVudENvdW50KTsKKyAgICAgICAgICAgICAgICAgICAgZGF0YS0+
Y291bnQgPSBWaXJ0dWFsUmVnaXN0ZXIocmVtYXBwZWRSZWdpc3Rlck9mZnNldCArIENhbGxGcmFt
ZUhlYWRlcjo6QXJndW1lbnRDb3VudCk7CiAgICAgICAgICAgICAgICAgICAgIGRhdGEtPm9mZnNl
dCA9IGFyZ3VtZW50c09mZnNldDsKICAgICAgICAgICAgICAgICAgICAgZGF0YS0+bGltaXQgPSBt
YXhOdW1Bcmd1bWVudHM7CiAgICAgICAgICAgICAgICAgICAgIGRhdGEtPm1hbmRhdG9yeU1pbmlt
dW0gPSBtYW5kYXRvcnlNaW5pbXVtOwpAQCAtMTc5Myw3ICsxNzkzLDcgQEAgYm9vbCBCeXRlQ29k
ZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcoCiAgICAgICAgICAgICAgICAgICAgIC8vIGJlZm9yZSBT
U0EuCiAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRh
KiBjb3VudFZhcmlhYmxlID0gbmV3VmFyaWFibGVBY2Nlc3NEYXRhKAotICAgICAgICAgICAgICAg
ICAgICAgICAgVmlydHVhbFJlZ2lzdGVyKHJlbWFwcGVkUmVnaXN0ZXJPZmZzZXQgKyBKU1N0YWNr
OjpBcmd1bWVudENvdW50KSk7CisgICAgICAgICAgICAgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0
ZXIocmVtYXBwZWRSZWdpc3Rlck9mZnNldCArIENhbGxGcmFtZUhlYWRlcjo6QXJndW1lbnRDb3Vu
dCkpOwogICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIHByZXR0eSBsYW1lLCBidXQgaXQg
d2lsbCBmb3JjZSB0aGUgY291bnQgdG8gYmUgZmx1c2hlZCBhcyBhbiBpbnQuIFRoaXMgZG9lc24n
dAogICAgICAgICAgICAgICAgICAgICAvLyBtYXR0ZXIgdmVyeSBtdWNoLCBzaW5jZSBvdXIgdXNl
IG9mIGEgU2V0QXJndW1lbnQgYW5kIEZsdXNoZXMgZm9yIHRoaXMgbG9jYWwgc2xvdCBpcwogICAg
ICAgICAgICAgICAgICAgICAvLyBtb3N0bHkganVzdCBhIGZvcm1hbGl0eS4KQEAgLTE5MDQsNyAr
MTkwNCw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKAogICAgIC8vIHll
dC4KICAgICBpZiAodmVyYm9zZSkKICAgICAgICAgZGF0YUxvZygiUmVnaXN0ZXIgb2Zmc2V0OiAi
LCByZWdpc3Rlck9mZnNldCk7Ci0gICAgVmlydHVhbFJlZ2lzdGVyIGNhbGxlZVJlZyhyZWdpc3Rl
ck9mZnNldCArIEpTU3RhY2s6OkNhbGxlZSk7CisgICAgVmlydHVhbFJlZ2lzdGVyIGNhbGxlZVJl
ZyhyZWdpc3Rlck9mZnNldCArIENhbGxGcmFtZUhlYWRlcjo6Q2FsbGVlKTsKICAgICBjYWxsZWVS
ZWcgPSBtX2lubGluZVN0YWNrVG9wLT5yZW1hcE9wZXJhbmQoY2FsbGVlUmVnKTsKICAgICBpZiAo
dmVyYm9zZSkKICAgICAgICAgZGF0YUxvZygiQ2FsbGVlIGlzIGdvaW5nIHRvIGJlICIsIGNhbGxl
ZVJlZywgIlxuIik7CkBAIC0zMjcxLDcgKzMyNzEsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpo
YW5kbGVHZXRCeUlkKAogICAgIGludCByZWdpc3Rlck9mZnNldCA9IHZpcnR1YWxSZWdpc3RlckZv
ckxvY2FsKAogICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPm1fbnVt
Q2FsbGVlTG9jYWxzIC0gMSkub2Zmc2V0KCk7CiAgICAgcmVnaXN0ZXJPZmZzZXQgLT0gbnVtYmVy
T2ZQYXJhbWV0ZXJzOwotICAgIHJlZ2lzdGVyT2Zmc2V0IC09IEpTU3RhY2s6OkNhbGxGcmFtZUhl
YWRlclNpemU7CisgICAgcmVnaXN0ZXJPZmZzZXQgLT0gQ2FsbEZyYW1lSGVhZGVyOjpTaXplOwog
ICAgIAogICAgIC8vIEdldCB0aGUgYWxpZ25tZW50IHJpZ2h0LgogICAgIHJlZ2lzdGVyT2Zmc2V0
ID0gLVdURjo6cm91bmRVcFRvTXVsdGlwbGVPZigKQEAgLTMyODgsNyArMzI4OCw3IEBAIHZvaWQg
Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUdldEJ5SWQoCiAgICAgLy8gICAgdGhlIGRyZWFkZWQgYXJn
dW1lbnRzIG9iamVjdCBvbiB0aGUgZ2V0dGVyLCB0aGUgcmlnaHQgdGhpbmdzIGhhcHBlbi4gV2Vs
bCwgc29ydCBvZiAtCiAgICAgLy8gICAgc2luY2Ugd2Ugb25seSByZWFsbHkgY2FyZSBhYm91dCAn
dGhpcycgaW4gdGhpcyBjYXNlLiBCdXQgd2UncmUgbm90IGdvaW5nIHRvIHRha2UgdGhhdAogICAg
IC8vICAgIHNob3J0Y3V0LgotICAgIGludCBuZXh0UmVnaXN0ZXIgPSByZWdpc3Rlck9mZnNldCAr
IEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlclNpemU7CisgICAgaW50IG5leHRSZWdpc3RlciA9IHJl
Z2lzdGVyT2Zmc2V0ICsgQ2FsbEZyYW1lSGVhZGVyOjpTaXplOwogICAgIHNldChWaXJ0dWFsUmVn
aXN0ZXIobmV4dFJlZ2lzdGVyKyspLCBiYXNlLCBJbW1lZGlhdGVOYWtlZFNldCk7CiAKICAgICAv
LyBXZSd2ZSBzZXQgc29tZSBsb2NhbHMsIGJ1dCB0aGV5IGFyZSBub3QgdXNlci12aXNpYmxlLiBJ
dCdzIHN0aWxsIE9LIHRvIGV4aXQgZnJvbSBoZXJlLgpAQCAtMzQ0MCw3ICszNDQwLDcgQEAgdm9p
ZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlUHV0QnlJZCgKICAgICAgICAgaW50IHJlZ2lzdGVyT2Zm
c2V0ID0gdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoCiAgICAgICAgICAgICBtX2lubGluZVN0YWNr
VG9wLT5tX3Byb2ZpbGVkQmxvY2stPm1fbnVtQ2FsbGVlTG9jYWxzIC0gMSkub2Zmc2V0KCk7CiAg
ICAgICAgIHJlZ2lzdGVyT2Zmc2V0IC09IG51bWJlck9mUGFyYW1ldGVyczsKLSAgICAgICAgcmVn
aXN0ZXJPZmZzZXQgLT0gSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyU2l6ZTsKKyAgICAgICAgcmVn
aXN0ZXJPZmZzZXQgLT0gQ2FsbEZyYW1lSGVhZGVyOjpTaXplOwogICAgIAogICAgICAgICAvLyBH
ZXQgdGhlIGFsaWdubWVudCByaWdodC4KICAgICAgICAgcmVnaXN0ZXJPZmZzZXQgPSAtV1RGOjpy
b3VuZFVwVG9NdWx0aXBsZU9mKApAQCAtMzQ1MSw3ICszNDUxLDcgQEAgdm9pZCBCeXRlQ29kZVBh
cnNlcjo6aGFuZGxlUHV0QnlJZCgKICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPnJlbWFw
T3BlcmFuZCgKICAgICAgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIocmVnaXN0ZXJPZmZzZXQp
KS50b0xvY2FsKCkpOwogICAgIAotICAgICAgICBpbnQgbmV4dFJlZ2lzdGVyID0gcmVnaXN0ZXJP
ZmZzZXQgKyBKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJTaXplOworICAgICAgICBpbnQgbmV4dFJl
Z2lzdGVyID0gcmVnaXN0ZXJPZmZzZXQgKyBDYWxsRnJhbWVIZWFkZXI6OlNpemU7CiAgICAgICAg
IHNldChWaXJ0dWFsUmVnaXN0ZXIobmV4dFJlZ2lzdGVyKyspLCBiYXNlLCBJbW1lZGlhdGVOYWtl
ZFNldCk7CiAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIobmV4dFJlZ2lzdGVyKyspLCB2YWx1
ZSwgSW1tZWRpYXRlTmFrZWRTZXQpOwogCkBAIC00OTcyLDcgKzQ5NzIsNyBAQCBib29sIEJ5dGVD
b2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgICAgICAvLyBvbmx5IGhlbHBz
IGZvciB0aGUgZmlyc3QgYmFzaWMgYmxvY2suIEl0J3MgZXh0cmVtZWx5IGltcG9ydGFudCBub3Qg
dG8gY29uc3RhbnQgZm9sZAogICAgICAgICAgICAgLy8gbG9hZHMgZnJvbSB0aGUgc2NvcGUgcmVn
aXN0ZXIgbGF0ZXIsIGFzIHRoYXQgd291bGQgcHJldmVudCB0aGUgREZHIGZyb20gdHJhY2tpbmcg
dGhlCiAgICAgICAgICAgICAvLyBieXRlY29kZS1sZXZlbCBsaXZlbmVzcyBvZiB0aGUgc2NvcGUg
cmVnaXN0ZXIuCi0gICAgICAgICAgICBOb2RlKiBjYWxsZWUgPSBnZXQoVmlydHVhbFJlZ2lzdGVy
KEpTU3RhY2s6OkNhbGxlZSkpOworICAgICAgICAgICAgTm9kZSogY2FsbGVlID0gZ2V0KFZpcnR1
YWxSZWdpc3RlcihDYWxsRnJhbWVIZWFkZXI6OkNhbGxlZSkpOwogICAgICAgICAgICAgTm9kZSog
cmVzdWx0OwogICAgICAgICAgICAgaWYgKEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0gY2FsbGVlLT5k
eW5hbWljQ2FzdENvbnN0YW50PEpTRnVuY3Rpb24qPigpKQogICAgICAgICAgICAgICAgIHJlc3Vs
dCA9IHdlYWtKU0NvbnN0YW50KGZ1bmN0aW9uLT5zY29wZSgpKTsKQEAgLTUyODMsNyArNTI4Myw3
IEBAIEJ5dGVDb2RlUGFyc2VyOjpJbmxpbmVTdGFja0VudHJ5OjpJbmxpbmUKICAgICAgICAgLy8g
VGhlIG93bmVyIGlzIHRoZSBtYWNoaW5lIGNvZGUgYmxvY2ssIGFuZCB3ZSBhbHJlYWR5IGhhdmUg
YSBiYXJyaWVyIG9uIHRoYXQgd2hlbiB0aGUKICAgICAgICAgLy8gcGxhbiBmaW5pc2hlcy4KICAg
ICAgICAgbV9pbmxpbmVDYWxsRnJhbWUtPmJhc2VsaW5lQ29kZUJsb2NrLnNldFdpdGhvdXRXcml0
ZUJhcnJpZXIoY29kZUJsb2NrLT5iYXNlbGluZVZlcnNpb24oKSk7Ci0gICAgICAgIG1faW5saW5l
Q2FsbEZyYW1lLT5zZXRTdGFja09mZnNldChpbmxpbmVDYWxsRnJhbWVTdGFydC5vZmZzZXQoKSAt
IEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlclNpemUpOworICAgICAgICBtX2lubGluZUNhbGxGcmFt
ZS0+c2V0U3RhY2tPZmZzZXQoaW5saW5lQ2FsbEZyYW1lU3RhcnQub2Zmc2V0KCkgLSBDYWxsRnJh
bWVIZWFkZXI6OlNpemUpOwogICAgICAgICBpZiAoY2FsbGVlKSB7CiAgICAgICAgICAgICBtX2lu
bGluZUNhbGxGcmFtZS0+Y2FsbGVlUmVjb3ZlcnkgPSBWYWx1ZVJlY292ZXJ5Ojpjb25zdGFudChj
YWxsZWUpOwogICAgICAgICAgICAgbV9pbmxpbmVDYWxsRnJhbWUtPmlzQ2xvc3VyZUNhbGwgPSBm
YWxzZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCShy
ZXZpc2lvbiAyMDI5NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJp
emUuaAkod29ya2luZyBjb3B5KQpAQCAtMTEzLDkgKzExMyw5IEBAIHZvaWQgY2xvYmJlcml6ZShH
cmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUKICAgICAvLyBzY2FuIHdvdWxkIHJlYWQuIFRoYXQncyB3
aGF0IHRoaXMgZG9lcy4KICAgICBmb3IgKElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1l
ID0gbm9kZS0+b3JpZ2luLnNlbWFudGljLmlubGluZUNhbGxGcmFtZTsgaW5saW5lQ2FsbEZyYW1l
OyBpbmxpbmVDYWxsRnJhbWUgPSBpbmxpbmVDYWxsRnJhbWUtPmRpcmVjdENhbGxlci5pbmxpbmVD
YWxsRnJhbWUpIHsKICAgICAgICAgaWYgKGlubGluZUNhbGxGcmFtZS0+aXNDbG9zdXJlQ2FsbCkK
LSAgICAgICAgICAgIHJlYWQoQWJzdHJhY3RIZWFwKFN0YWNrLCBpbmxpbmVDYWxsRnJhbWUtPnN0
YWNrT2Zmc2V0ICsgSlNTdGFjazo6Q2FsbGVlKSk7CisgICAgICAgICAgICByZWFkKEFic3RyYWN0
SGVhcChTdGFjaywgaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCArIENhbGxGcmFtZUhlYWRl
cjo6Q2FsbGVlKSk7CiAgICAgICAgIGlmIChpbmxpbmVDYWxsRnJhbWUtPmlzVmFyYXJncygpKQot
ICAgICAgICAgICAgcmVhZChBYnN0cmFjdEhlYXAoU3RhY2ssIGlubGluZUNhbGxGcmFtZS0+c3Rh
Y2tPZmZzZXQgKyBKU1N0YWNrOjpBcmd1bWVudENvdW50KSk7CisgICAgICAgICAgICByZWFkKEFi
c3RyYWN0SGVhcChTdGFjaywgaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCArIENhbGxGcmFt
ZUhlYWRlcjo6QXJndW1lbnRDb3VudCkpOwogICAgIH0KIAogICAgIC8vIFdlIGRvbid0IHdhbnQg
dG8gc3BlY2lmaWNhbGx5IGFjY291bnQgd2hpY2ggbm9kZXMgY2FuIHJlYWQgZnJvbSB0aGUgc2Nv
cGUKQEAgLTUwMSwxMyArNTAxLDEzIEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5v
ZGUqIG5vZGUKICAgICAgICAgcmV0dXJuOwogICAgICAgICAKICAgICBjYXNlIEdldENhbGxlZToK
LSAgICAgICAgcmVhZChBYnN0cmFjdEhlYXAoU3RhY2ssIEpTU3RhY2s6OkNhbGxlZSkpOwotICAg
ICAgICBkZWYoSGVhcExvY2F0aW9uKFN0YWNrTG9jLCBBYnN0cmFjdEhlYXAoU3RhY2ssIEpTU3Rh
Y2s6OkNhbGxlZSkpLCBMYXp5Tm9kZShub2RlKSk7CisgICAgICAgIHJlYWQoQWJzdHJhY3RIZWFw
KFN0YWNrLCBDYWxsRnJhbWVIZWFkZXI6OkNhbGxlZSkpOworICAgICAgICBkZWYoSGVhcExvY2F0
aW9uKFN0YWNrTG9jLCBBYnN0cmFjdEhlYXAoU3RhY2ssIENhbGxGcmFtZUhlYWRlcjo6Q2FsbGVl
KSksIExhenlOb2RlKG5vZGUpKTsKICAgICAgICAgcmV0dXJuOwogICAgICAgICAKICAgICBjYXNl
IEdldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzOgotICAgICAgICByZWFkKEFic3RyYWN0SGVh
cChTdGFjaywgSlNTdGFjazo6QXJndW1lbnRDb3VudCkpOwotICAgICAgICBkZWYoSGVhcExvY2F0
aW9uKFN0YWNrUGF5bG9hZExvYywgQWJzdHJhY3RIZWFwKFN0YWNrLCBKU1N0YWNrOjpBcmd1bWVu
dENvdW50KSksIExhenlOb2RlKG5vZGUpKTsKKyAgICAgICAgcmVhZChBYnN0cmFjdEhlYXAoU3Rh
Y2ssIENhbGxGcmFtZUhlYWRlcjo6QXJndW1lbnRDb3VudCkpOworICAgICAgICBkZWYoSGVhcExv
Y2F0aW9uKFN0YWNrUGF5bG9hZExvYywgQWJzdHJhY3RIZWFwKFN0YWNrLCBDYWxsRnJhbWVIZWFk
ZXI6OkFyZ3VtZW50Q291bnQpKSwgTGF6eU5vZGUobm9kZSkpOwogICAgICAgICByZXR1cm47CiAK
ICAgICBjYXNlIEdldFJlc3RMZW5ndGg6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0dyYXBoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0dyYXBoLmNwcAkocmV2aXNpb24gMjAyOTU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdHcmFwaC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMTIsMTkgKzEwMTIsMTkgQEAgYm9v
bCBHcmFwaDo6aXNMaXZlSW5CeXRlY29kZShWaXJ0dWFsUmVnaQogICAgICAgICBpZiAodmVyYm9z
ZSkKICAgICAgICAgICAgIGRhdGFMb2coInJlZyA9ICIsIHJlZywgIlxuIik7CiAgICAgICAgIAot
ICAgICAgICBpZiAob3BlcmFuZC5vZmZzZXQoKSA8IGNvZGVPcmlnaW5QdHItPnN0YWNrT2Zmc2V0
KCkgKyBKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJTaXplKSB7CisgICAgICAgIGlmIChvcGVyYW5k
Lm9mZnNldCgpIDwgY29kZU9yaWdpblB0ci0+c3RhY2tPZmZzZXQoKSArIENhbGxGcmFtZUhlYWRl
cjo6U2l6ZSkgewogICAgICAgICAgICAgaWYgKHJlZy5pc0FyZ3VtZW50KCkpIHsKLSAgICAgICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVChyZWcub2Zmc2V0KCkgPCBKU1N0YWNrOjpDYWxsRnJhbWVI
ZWFkZXJTaXplKTsKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChyZWcub2Zmc2V0KCkg
PCBDYWxsRnJhbWVIZWFkZXI6OlNpemUpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg
ICAgIGlmIChjb2RlT3JpZ2luUHRyLT5pbmxpbmVDYWxsRnJhbWUtPmlzQ2xvc3VyZUNhbGwKLSAg
ICAgICAgICAgICAgICAgICAgJiYgcmVnLm9mZnNldCgpID09IEpTU3RhY2s6OkNhbGxlZSkgewor
ICAgICAgICAgICAgICAgICAgICAmJiByZWcub2Zmc2V0KCkgPT0gQ2FsbEZyYW1lSGVhZGVyOjpD
YWxsZWUpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAgICAgICAg
ICAgICAgICAgICBkYXRhTG9nKCJMb29rcyBsaWtlIGEgY2FsbGVlLlxuIik7CiAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICAKICAgICAgICAgICAgICAgICBpZiAoY29kZU9yaWdpblB0ci0+aW5saW5lQ2FsbEZyYW1lLT5p
c1ZhcmFyZ3MoKQotICAgICAgICAgICAgICAgICAgICAmJiByZWcub2Zmc2V0KCkgPT0gSlNTdGFj
azo6QXJndW1lbnRDb3VudCkgeworICAgICAgICAgICAgICAgICAgICAmJiByZWcub2Zmc2V0KCkg
PT0gQ2FsbEZyYW1lSGVhZGVyOjpBcmd1bWVudENvdW50KSB7CiAgICAgICAgICAgICAgICAgICAg
IGlmICh2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiTG9va3MgbGlr
ZSB0aGUgYXJndW1lbnQgY291bnQuXG4iKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCShyZXZpc2lvbiAyMDI5
NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTcwOSw5ICs3MDksOSBAQCBwdWJsaWM6CiAgICAgICAgICAgICAKICAgICAgICAgICAg
IGlmIChpbmxpbmVDYWxsRnJhbWUpIHsKICAgICAgICAgICAgICAgICBpZiAoaW5saW5lQ2FsbEZy
YW1lLT5pc0Nsb3N1cmVDYWxsKQotICAgICAgICAgICAgICAgICAgICBmdW5jdG9yKHN0YWNrT2Zm
c2V0ICsgSlNTdGFjazo6Q2FsbGVlKTsKKyAgICAgICAgICAgICAgICAgICAgZnVuY3RvcihzdGFj
a09mZnNldCArIENhbGxGcmFtZUhlYWRlcjo6Q2FsbGVlKTsKICAgICAgICAgICAgICAgICBpZiAo
aW5saW5lQ2FsbEZyYW1lLT5pc1ZhcmFyZ3MoKSkKLSAgICAgICAgICAgICAgICAgICAgZnVuY3Rv
cihzdGFja09mZnNldCArIEpTU3RhY2s6OkFyZ3VtZW50Q291bnQpOworICAgICAgICAgICAgICAg
ICAgICBmdW5jdG9yKHN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lSGVhZGVyOjpBcmd1bWVudENvdW50
KTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICAgICAgQ29kZUJsb2NrKiBj
b2RlQmxvY2sgPSBiYXNlbGluZUNvZGVCbG9ja0ZvcihpbmxpbmVDYWxsRnJhbWUpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAJKHJldmlzaW9u
IDIwMjk1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDgsNyArMTA4LDcgQEAgdm9pZCBKSVRDb21waWxlcjo6Y29t
cGlsZUVudHJ5KCkKICAgICAvLyBjaGVjaykgd2hpY2ggd2lsbCBiZSBkZXBlbmRlbnQgb24gc3Rh
Y2sgbGF5b3V0LiAoV2UnZCBuZWVkIHRvIGFjY291bnQgZm9yIHRoaXMgaW4KICAgICAvLyBib3Ro
IG5vcm1hbCByZXR1cm4gY29kZSBhbmQgd2hlbiBqdW1waW5nIHRvIGFuIGV4Y2VwdGlvbiBoYW5k
bGVyKS4KICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZSgpOwotICAgIGVtaXRQdXRUb0NhbGxGcmFt
ZUhlYWRlcihtX2NvZGVCbG9jaywgSlNTdGFjazo6Q29kZUJsb2NrKTsKKyAgICBlbWl0UHV0VG9D
YWxsRnJhbWVIZWFkZXIobV9jb2RlQmxvY2ssIENhbGxGcmFtZUhlYWRlcjo6Q29kZUJsb2NrKTsK
IH0KIAogdm9pZCBKSVRDb21waWxlcjo6Y29tcGlsZVNldHVwUmVnaXN0ZXJzRm9yRW50cnkoKQpA
QCAtNDQzLDcgKzQ0Myw3IEBAIHZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGVGdW5jdGlvbigpCiAg
ICAgbV9hcml0eUNoZWNrID0gbGFiZWwoKTsKICAgICBjb21waWxlRW50cnkoKTsKIAotICAgIGxv
YWQzMihBc3NlbWJseUhlbHBlcnM6OnBheWxvYWRGb3IoKFZpcnR1YWxSZWdpc3RlcilKU1N0YWNr
OjpBcmd1bWVudENvdW50KSwgR1BSSW5mbzo6cmVnVDEpOworICAgIGxvYWQzMihBc3NlbWJseUhl
bHBlcnM6OnBheWxvYWRGb3IoKFZpcnR1YWxSZWdpc3RlcilDYWxsRnJhbWVIZWFkZXI6OkFyZ3Vt
ZW50Q291bnQpLCBHUFJJbmZvOjpyZWdUMSk7CiAgICAgYnJhbmNoMzIoQWJvdmVPckVxdWFsLCBH
UFJJbmZvOjpyZWdUMSwgVHJ1c3RlZEltbTMyKG1fY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkp
KS5saW5rVG8oZnJvbUFyaXR5Q2hlY2ssIHRoaXMpOwogICAgIGVtaXRTdG9yZUNvZGVPcmlnaW4o
Q29kZU9yaWdpbigwKSk7CiAgICAgaWYgKG1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsKQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAkocmV2aXNp
b24gMjAyOTU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xNTYsNyArMTU2LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBl
bWl0U3RvcmVDYWxsU2l0ZUluZGV4KENhbGxTaXRlSW5kZXggY2FsbFNpdGUpCiAgICAgewotICAg
ICAgICBzdG9yZTMyKFRydXN0ZWRJbW0zMihjYWxsU2l0ZS5iaXRzKCkpLCB0YWdGb3Ioc3RhdGlj
X2Nhc3Q8VmlydHVhbFJlZ2lzdGVyPihKU1N0YWNrOjpBcmd1bWVudENvdW50KSkpOworICAgICAg
ICBzdG9yZTMyKFRydXN0ZWRJbW0zMihjYWxsU2l0ZS5iaXRzKCkpLCB0YWdGb3Ioc3RhdGljX2Nh
c3Q8VmlydHVhbFJlZ2lzdGVyPihDYWxsRnJhbWVIZWFkZXI6OkFyZ3VtZW50Q291bnQpKSk7CiAg
ICAgfQogCiAgICAgLy8gQWRkIGEgY2FsbCBvdXQgZnJvbSBKSVQgY29kZSwgd2l0aG91dCBhbiBl
eGNlcHRpb24gY2hlY2suCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkF2
YWlsYWJpbGl0eUFuYWx5c2lzUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT1NSQXZhaWxhYmlsaXR5QW5hbHlzaXNQaGFzZS5jcHAJKHJldmlzaW9u
IDIwMjk1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSQXZhaWxhYmlsaXR5
QW5hbHlzaXNQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3NywxNCArMTc3LDE0IEBAIHZv
aWQgTG9jYWxPU1JBdmFpbGFiaWxpdHlDYWxjdWxhdG9yOjpleGUKICAgICAgICAgaWYgKGlubGlu
ZUNhbGxGcmFtZS0+aXNWYXJhcmdzKCkpIHsKICAgICAgICAgICAgIC8vIFJlY29yZCBob3cgdG8g
cmVhZCBlYWNoIGFyZ3VtZW50IGFuZCB0aGUgYXJndW1lbnQgY291bnQuCiAgICAgICAgICAgICBB
dmFpbGFiaWxpdHkgYXJndW1lbnRDb3VudCA9Ci0gICAgICAgICAgICAgICAgbV9hdmFpbGFiaWxp
dHkubV9sb2NhbHMub3BlcmFuZChpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgSlNTdGFj
azo6QXJndW1lbnRDb3VudCk7CisgICAgICAgICAgICAgICAgbV9hdmFpbGFiaWxpdHkubV9sb2Nh
bHMub3BlcmFuZChpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lSGVhZGVy
OjpBcmd1bWVudENvdW50KTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgbV9hdmFpbGFiaWxp
dHkubV9oZWFwLnNldChQcm9tb3RlZEhlYXBMb2NhdGlvbihBcmd1bWVudENvdW50UExvYywgbm9k
ZSksIGFyZ3VtZW50Q291bnQpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBpZiAoaW5s
aW5lQ2FsbEZyYW1lLT5pc0Nsb3N1cmVDYWxsKSB7CiAgICAgICAgICAgICBBdmFpbGFiaWxpdHkg
Y2FsbGVlID0gbV9hdmFpbGFiaWxpdHkubV9sb2NhbHMub3BlcmFuZCgKLSAgICAgICAgICAgICAg
ICBpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgSlNTdGFjazo6Q2FsbGVlKTsKKyAgICAg
ICAgICAgICAgICBpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lSGVhZGVy
OjpDYWxsZWUpOwogICAgICAgICAgICAgbV9hdmFpbGFiaWxpdHkubV9oZWFwLnNldChQcm9tb3Rl
ZEhlYXBMb2NhdGlvbihBcmd1bWVudHNDYWxsZWVQTG9jLCBub2RlKSwgY2FsbGVlKTsKICAgICAg
ICAgfQogICAgICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50
cnkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50
cnkuY3BwCShyZXZpc2lvbiAyMDI5NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R09TUkVudHJ5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjY0LDcgKzI2NCw3IEBAIHZvaWQqIHBy
ZXBhcmVPU1JFbnRyeShFeGVjU3RhdGUqIGV4ZWMsIEMKICAgICB1bnNpZ25lZCBiYXNlbGluZUZy
YW1lU2l6ZSA9IGVudHJ5LT5tX2V4cGVjdGVkVmFsdWVzLm51bWJlck9mTG9jYWxzKCk7CiAgICAg
dW5zaWduZWQgbWF4RnJhbWVTaXplID0gc3RkOjptYXgoZnJhbWVTaXplLCBiYXNlbGluZUZyYW1l
U2l6ZSk7CiAKLSAgICBSZWdpc3Rlciogc2NyYXRjaCA9IGJpdHdpc2VfY2FzdDxSZWdpc3Rlcio+
KHZtLT5zY3JhdGNoQnVmZmVyRm9yU2l6ZShzaXplb2YoUmVnaXN0ZXIpICogKDIgKyBKU1N0YWNr
OjpDYWxsRnJhbWVIZWFkZXJTaXplICsgbWF4RnJhbWVTaXplKSktPmRhdGFCdWZmZXIoKSk7Cisg
ICAgUmVnaXN0ZXIqIHNjcmF0Y2ggPSBiaXR3aXNlX2Nhc3Q8UmVnaXN0ZXIqPih2bS0+c2NyYXRj
aEJ1ZmZlckZvclNpemUoc2l6ZW9mKFJlZ2lzdGVyKSAqICgyICsgQ2FsbEZyYW1lSGVhZGVyOjpT
aXplICsgbWF4RnJhbWVTaXplKSktPmRhdGFCdWZmZXIoKSk7CiAgICAgCiAgICAgKmJpdHdpc2Vf
Y2FzdDxzaXplX3QqPihzY3JhdGNoICsgMCkgPSBmcmFtZVNpemU7CiAgICAgCkBAIC0yNzQsOSAr
Mjc0LDkgQEAgdm9pZCogcHJlcGFyZU9TUkVudHJ5KEV4ZWNTdGF0ZSogZXhlYywgQwogICAgIFJF
TEVBU0VfQVNTRVJUKHRhcmdldFBDKTsKICAgICAqYml0d2lzZV9jYXN0PHZvaWQqKj4oc2NyYXRj
aCArIDEpID0gdGFyZ2V0UEM7CiAgICAgCi0gICAgUmVnaXN0ZXIqIHBpdm90ID0gc2NyYXRjaCAr
IDIgKyBKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJTaXplOworICAgIFJlZ2lzdGVyKiBwaXZvdCA9
IHNjcmF0Y2ggKyAyICsgQ2FsbEZyYW1lSGVhZGVyOjpTaXplOwogICAgIAotICAgIGZvciAoaW50
IGluZGV4ID0gLUpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlclNpemU7IGluZGV4IDwgc3RhdGljX2Nh
c3Q8aW50PihiYXNlbGluZUZyYW1lU2l6ZSk7ICsraW5kZXgpIHsKKyAgICBmb3IgKGludCBpbmRl
eCA9IC1DYWxsRnJhbWVIZWFkZXI6OlNpemU7IGluZGV4IDwgc3RhdGljX2Nhc3Q8aW50PihiYXNl
bGluZUZyYW1lU2l6ZSk7ICsraW5kZXgpIHsKICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHJlZygt
MSAtIGluZGV4KTsKICAgICAgICAgCiAgICAgICAgIGlmIChyZWcuaXNMb2NhbCgpKSB7CkBAIC0z
MjksNyArMzI5LDcgQEAgdm9pZCogcHJlcGFyZU9TUkVudHJ5KEV4ZWNTdGF0ZSogZXhlYywgQwog
ICAgIAogICAgIC8vIDcpIEZpeCB0aGUgY2FsbCBmcmFtZSB0byBoYXZlIHRoZSByaWdodCBjb2Rl
IGJsb2NrLgogICAgIAotICAgICpiaXR3aXNlX2Nhc3Q8Q29kZUJsb2NrKio+KHBpdm90IC0gMSAt
IEpTU3RhY2s6OkNvZGVCbG9jaykgPSBjb2RlQmxvY2s7CisgICAgKmJpdHdpc2VfY2FzdDxDb2Rl
QmxvY2sqKj4ocGl2b3QgLSAxIC0gQ2FsbEZyYW1lSGVhZGVyOjpDb2RlQmxvY2spID0gY29kZUJs
b2NrOwogICAgIAogICAgIGlmIChPcHRpb25zOjp2ZXJib3NlT1NSKCkpCiAgICAgICAgIGRhdGFM
b2dGKCIgICAgT1NSIHJldHVybmluZyBkYXRhIGJ1ZmZlciAlcC5cbiIsIHNjcmF0Y2gpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyLmNw
cAkocmV2aXNpb24gMjAyOTU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JF
eGl0Q29tcGlsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MCw3ICs3MCw3IEBAIHZvaWQgT1NS
RXhpdENvbXBpbGVyOjplbWl0UmVzdG9yZUFyZ3VtZW4KICAgICAgICAgCiAgICAgICAgIGlmICgh
aW5saW5lQ2FsbEZyYW1lIHx8IGlubGluZUNhbGxGcmFtZS0+aXNDbG9zdXJlQ2FsbCkgewogICAg
ICAgICAgICAgbV9qaXQubG9hZFB0cigKLSAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6
OmFkZHJlc3NGb3Ioc3RhY2tPZmZzZXQgKyBKU1N0YWNrOjpDYWxsZWUpLAorICAgICAgICAgICAg
ICAgIEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0ZvcihzdGFja09mZnNldCArIENhbGxGcmFtZUhl
YWRlcjo6Q2FsbGVlKSwKICAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZWdUMCk7CiAgICAgICAg
IH0gZWxzZSB7CiAgICAgICAgICAgICBtX2ppdC5tb3ZlKApAQCAtODAsNyArODAsNyBAQCB2b2lk
IE9TUkV4aXRDb21waWxlcjo6ZW1pdFJlc3RvcmVBcmd1bWVuCiAgICAgICAgIAogICAgICAgICBp
ZiAoIWlubGluZUNhbGxGcmFtZSB8fCBpbmxpbmVDYWxsRnJhbWUtPmlzVmFyYXJncygpKSB7CiAg
ICAgICAgICAgICBtX2ppdC5sb2FkMzIoCi0gICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJz
OjpwYXlsb2FkRm9yKHN0YWNrT2Zmc2V0ICsgSlNTdGFjazo6QXJndW1lbnRDb3VudCksCisgICAg
ICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpwYXlsb2FkRm9yKHN0YWNrT2Zmc2V0ICsgQ2Fs
bEZyYW1lSGVhZGVyOjpBcmd1bWVudENvdW50KSwKICAgICAgICAgICAgICAgICBHUFJJbmZvOjpy
ZWdUMSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBtX2ppdC5tb3ZlKApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVy
Q29tbW9uLmNwcAkocmV2aXNpb24gMjAyOTU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDQsNyAr
MTQ0LDcgQEAgdm9pZCByZWlmeUlubGluZWRDYWxsRnJhbWVzKENDYWxsSGVscGVycwogICAgIC8v
IGluIHByZXNlbmNlIG9mIGlubGluZWQgdGFpbCBjYWxscy4KICAgICAvLyBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ3NTExCiAgICAgQVNTRVJUKGppdC5iYXNlbGlu
ZUNvZGVCbG9jaygpLT5qaXRUeXBlKCkgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOwotICAgIGpp
dC5zdG9yZVB0cihBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoaml0LmJhc2VsaW5lQ29k
ZUJsb2NrKCkpLCBBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3IoKFZpcnR1YWxSZWdpc3RlcilK
U1N0YWNrOjpDb2RlQmxvY2spKTsKKyAgICBqaXQuc3RvcmVQdHIoQXNzZW1ibHlIZWxwZXJzOjpU
cnVzdGVkSW1tUHRyKGppdC5iYXNlbGluZUNvZGVCbG9jaygpKSwgQXNzZW1ibHlIZWxwZXJzOjph
ZGRyZXNzRm9yKChWaXJ0dWFsUmVnaXN0ZXIpQ2FsbEZyYW1lSGVhZGVyOjpDb2RlQmxvY2spKTsK
IAogICAgIGNvbnN0IENvZGVPcmlnaW4qIGNvZGVPcmlnaW47CiAgICAgZm9yIChjb2RlT3JpZ2lu
ID0gJmV4aXQubV9jb2RlT3JpZ2luOyBjb2RlT3JpZ2luICYmIGNvZGVPcmlnaW4tPmlubGluZUNh
bGxGcmFtZTsgY29kZU9yaWdpbiA9IGNvZGVPcmlnaW4tPmlubGluZUNhbGxGcmFtZS0+Z2V0Q2Fs
bGVyU2tpcHBpbmdUYWlsQ2FsbHMoKSkgewpAQCAtMjA1LDcgKzIwNSw3IEBAIHZvaWQgcmVpZnlJ
bmxpbmVkQ2FsbEZyYW1lcyhDQ2FsbEhlbHBlcnMKICAgICAgICAgICAgIGppdC5zdG9yZVB0cihB
c3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoanVtcFRhcmdldCksIEFzc2VtYmx5SGVscGVy
czo6YWRkcmVzc0ZvckJ5dGVPZmZzZXQoaW5saW5lQ2FsbEZyYW1lLT5yZXR1cm5QQ09mZnNldCgp
KSk7CiAgICAgICAgIH0KIAotICAgICAgICBqaXQuc3RvcmVQdHIoQXNzZW1ibHlIZWxwZXJzOjpU
cnVzdGVkSW1tUHRyKGJhc2VsaW5lQ29kZUJsb2NrKSwgQXNzZW1ibHlIZWxwZXJzOjphZGRyZXNz
Rm9yKChWaXJ0dWFsUmVnaXN0ZXIpKGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyBKU1N0
YWNrOjpDb2RlQmxvY2spKSk7CisgICAgICAgIGppdC5zdG9yZVB0cihBc3NlbWJseUhlbHBlcnM6
OlRydXN0ZWRJbW1QdHIoYmFzZWxpbmVDb2RlQmxvY2spLCBBc3NlbWJseUhlbHBlcnM6OmFkZHJl
c3NGb3IoKFZpcnR1YWxSZWdpc3RlcikoaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCArIENh
bGxGcmFtZUhlYWRlcjo6Q29kZUJsb2NrKSkpOwogCiAgICAgICAgIC8vIFJlc3RvcmUgdGhlIGlu
bGluZSBjYWxsIGZyYW1lJ3MgY2FsbGVlIHNhdmUgcmVnaXN0ZXJzLgogICAgICAgICAvLyBJZiB0
aGlzIGlubGluZWQgZnJhbWUgaXMgYSB0YWlsIGNhbGwgdGhhdCB3aWxsIHJldHVybiBiYWNrIHRv
IHRoZSBvcmlnaW5hbCBjYWxsZXIsIHdlIG5lZWQgdG8KQEAgLTIxNywyMSArMjE3LDIxIEBAIHZv
aWQgcmVpZnlJbmxpbmVkQ2FsbEZyYW1lcyhDQ2FsbEhlbHBlcnMKICAgICAgICAgICAgIEdQUklu
Zm86OnJlZ1QyKTsKIAogICAgICAgICBpZiAoIWlubGluZUNhbGxGcmFtZS0+aXNWYXJhcmdzKCkp
Ci0gICAgICAgICAgICBqaXQuc3RvcmUzMihBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMihp
bmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5zaXplKCkpLCBBc3NlbWJseUhlbHBlcnM6OnBheWxv
YWRGb3IoKFZpcnR1YWxSZWdpc3RlcikoaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCArIEpT
U3RhY2s6OkFyZ3VtZW50Q291bnQpKSk7CisgICAgICAgICAgICBqaXQuc3RvcmUzMihBc3NlbWJs
eUhlbHBlcnM6OlRydXN0ZWRJbW0zMihpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5zaXplKCkp
LCBBc3NlbWJseUhlbHBlcnM6OnBheWxvYWRGb3IoKFZpcnR1YWxSZWdpc3RlcikoaW5saW5lQ2Fs
bEZyYW1lLT5zdGFja09mZnNldCArIENhbGxGcmFtZUhlYWRlcjo6QXJndW1lbnRDb3VudCkpKTsK
ICNpZiBVU0UoSlNWQUxVRTY0KQogICAgICAgICBqaXQuc3RvcmU2NChjYWxsZXJGcmFtZUdQUiwg
QXNzZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9yQnl0ZU9mZnNldChpbmxpbmVDYWxsRnJhbWUtPmNh
bGxlckZyYW1lT2Zmc2V0KCkpKTsKICAgICAgICAgdWludDMyX3QgbG9jYXRpb25CaXRzID0gQ2Fs
bFNpdGVJbmRleChjb2RlT3JpZ2luLT5ieXRlY29kZUluZGV4KS5iaXRzKCk7Ci0gICAgICAgIGpp
dC5zdG9yZTMyKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKGxvY2F0aW9uQml0cyksIEFz
c2VtYmx5SGVscGVyczo6dGFnRm9yKChWaXJ0dWFsUmVnaXN0ZXIpKGlubGluZUNhbGxGcmFtZS0+
c3RhY2tPZmZzZXQgKyBKU1N0YWNrOjpBcmd1bWVudENvdW50KSkpOworICAgICAgICBqaXQuc3Rv
cmUzMihBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMihsb2NhdGlvbkJpdHMpLCBBc3NlbWJs
eUhlbHBlcnM6OnRhZ0ZvcigoVmlydHVhbFJlZ2lzdGVyKShpbmxpbmVDYWxsRnJhbWUtPnN0YWNr
T2Zmc2V0ICsgQ2FsbEZyYW1lSGVhZGVyOjpBcmd1bWVudENvdW50KSkpOwogICAgICAgICBpZiAo
IWlubGluZUNhbGxGcmFtZS0+aXNDbG9zdXJlQ2FsbCkKLSAgICAgICAgICAgIGppdC5zdG9yZTY0
KEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTY0KEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKGlu
bGluZUNhbGxGcmFtZS0+Y2FsbGVlQ29uc3RhbnQoKSkpKSwgQXNzZW1ibHlIZWxwZXJzOjphZGRy
ZXNzRm9yKChWaXJ0dWFsUmVnaXN0ZXIpKGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyBK
U1N0YWNrOjpDYWxsZWUpKSk7CisgICAgICAgICAgICBqaXQuc3RvcmU2NChBc3NlbWJseUhlbHBl
cnM6OlRydXN0ZWRJbW02NChKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZShpbmxpbmVDYWxsRnJhbWUt
PmNhbGxlZUNvbnN0YW50KCkpKSksIEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0ZvcigoVmlydHVh
bFJlZ2lzdGVyKShpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lSGVhZGVy
OjpDYWxsZWUpKSk7CiAjZWxzZSAvLyBVU0UoSlNWQUxVRTY0KSAvLyBzbyB0aGlzIGlzIHRoZSAz
Mi1iaXQgcGFydAogICAgICAgICBqaXQuc3RvcmVQdHIoY2FsbGVyRnJhbWVHUFIsIEFzc2VtYmx5
SGVscGVyczo6YWRkcmVzc0ZvckJ5dGVPZmZzZXQoaW5saW5lQ2FsbEZyYW1lLT5jYWxsZXJGcmFt
ZU9mZnNldCgpKSk7CiAgICAgICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiA9IGJhc2VsaW5l
Q29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpICsgY29kZU9yaWdpbi0+Ynl0ZWNvZGVJ
bmRleDsKICAgICAgICAgdWludDMyX3QgbG9jYXRpb25CaXRzID0gQ2FsbFNpdGVJbmRleChpbnN0
cnVjdGlvbikuYml0cygpOwotICAgICAgICBqaXQuc3RvcmUzMihBc3NlbWJseUhlbHBlcnM6OlRy
dXN0ZWRJbW0zMihsb2NhdGlvbkJpdHMpLCBBc3NlbWJseUhlbHBlcnM6OnRhZ0ZvcigoVmlydHVh
bFJlZ2lzdGVyKShpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgSlNTdGFjazo6QXJndW1l
bnRDb3VudCkpKTsKLSAgICAgICAgaml0LnN0b3JlMzIoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVk
SW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZyksIEFzc2VtYmx5SGVscGVyczo6dGFnRm9yKChWaXJ0dWFs
UmVnaXN0ZXIpKGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyBKU1N0YWNrOjpDYWxsZWUp
KSk7CisgICAgICAgIGppdC5zdG9yZTMyKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKGxv
Y2F0aW9uQml0cyksIEFzc2VtYmx5SGVscGVyczo6dGFnRm9yKChWaXJ0dWFsUmVnaXN0ZXIpKGlu
bGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyBDYWxsRnJhbWVIZWFkZXI6OkFyZ3VtZW50Q291
bnQpKSk7CisgICAgICAgIGppdC5zdG9yZTMyKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMy
KEpTVmFsdWU6OkNlbGxUYWcpLCBBc3NlbWJseUhlbHBlcnM6OnRhZ0ZvcigoVmlydHVhbFJlZ2lz
dGVyKShpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lSGVhZGVyOjpDYWxs
ZWUpKSk7CiAgICAgICAgIGlmICghaW5saW5lQ2FsbEZyYW1lLT5pc0Nsb3N1cmVDYWxsKQotICAg
ICAgICAgICAgaml0LnN0b3JlUHRyKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbVB0cihpbmxp
bmVDYWxsRnJhbWUtPmNhbGxlZUNvbnN0YW50KCkpLCBBc3NlbWJseUhlbHBlcnM6OnBheWxvYWRG
b3IoKFZpcnR1YWxSZWdpc3RlcikoaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCArIEpTU3Rh
Y2s6OkNhbGxlZSkpKTsKKyAgICAgICAgICAgIGppdC5zdG9yZVB0cihBc3NlbWJseUhlbHBlcnM6
OlRydXN0ZWRJbW1QdHIoaW5saW5lQ2FsbEZyYW1lLT5jYWxsZWVDb25zdGFudCgpKSwgQXNzZW1i
bHlIZWxwZXJzOjpwYXlsb2FkRm9yKChWaXJ0dWFsUmVnaXN0ZXIpKGlubGluZUNhbGxGcmFtZS0+
c3RhY2tPZmZzZXQgKyBDYWxsRnJhbWVIZWFkZXI6OkNhbGxlZSkpKTsKICNlbmRpZiAvLyBVU0Uo
SlNWQUxVRTY0KSAvLyBlbmRpbmcgdGhlICNlbHNlIHBhcnQsIHNvIGRpcmVjdGx5IGFib3ZlIGlz
IHRoZSAzMi1iaXQgcGFydAogICAgIH0KIApAQCAtMjQzLDcgKzI0Myw3IEBAIHZvaWQgcmVpZnlJ
bmxpbmVkQ2FsbEZyYW1lcyhDQ2FsbEhlbHBlcnMKICAgICAgICAgSW5zdHJ1Y3Rpb24qIGluc3Ry
dWN0aW9uID0gaml0LmJhc2VsaW5lQ29kZUJsb2NrKCktPmluc3RydWN0aW9ucygpLmJlZ2luKCkg
KyBjb2RlT3JpZ2luLT5ieXRlY29kZUluZGV4OwogICAgICAgICB1aW50MzJfdCBsb2NhdGlvbkJp
dHMgPSBDYWxsU2l0ZUluZGV4KGluc3RydWN0aW9uKS5iaXRzKCk7CiAjZW5kaWYKLSAgICAgICAg
aml0LnN0b3JlMzIoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIobG9jYXRpb25CaXRzKSwg
QXNzZW1ibHlIZWxwZXJzOjp0YWdGb3IoKFZpcnR1YWxSZWdpc3RlcikoSlNTdGFjazo6QXJndW1l
bnRDb3VudCkpKTsKKyAgICAgICAgaml0LnN0b3JlMzIoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVk
SW1tMzIobG9jYXRpb25CaXRzKSwgQXNzZW1ibHlIZWxwZXJzOjp0YWdGb3IoKFZpcnR1YWxSZWdp
c3RlcikoQ2FsbEZyYW1lSGVhZGVyOjpBcmd1bWVudENvdW50KSkpOwogICAgIH0KIH0KIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxl
ckNvbW1vbi5oCShyZXZpc2lvbiAyMDI5NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5oCSh3b3JraW5nIGNvcHkpCkBAIC04Niw3ICs4Niw3
IEBAIHZvaWQgYWRqdXN0RnJhbWVBbmRTdGFja0luT1NSRXhpdENvbXBpbGUKICAgICBqaXQubW92
ZShHUFJJbmZvOjpyZWdUMCwgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOwogICAgIGRpZE5v
dEhhdmVFeGNlcHRpb24ubGluaygmaml0KTsKICAgICAvLyBXZSBuZWVkIHRvIG1ha2Ugc3VyZSBT
UCBpcyBjb3JyZWN0IGluIGNhc2Ugb2YgYW4gZXhjZXB0aW9uLgotICAgIGppdC5sb2FkUHRyKE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBKU1N0YWNr
OjpDb2RlQmxvY2sgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpKSwgR1BSSW5m
bzo6cmVnVDApOworICAgIGppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKEdQUklu
Zm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBDYWxsRnJhbWVIZWFkZXI6OkNvZGVCbG9jayAqIHN0YXRp
Y19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkpLCBHUFJJbmZvOjpyZWdUMCk7CiAgICAgaml0
LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDAsIENvZGVCbG9j
azo6aml0Q29kZU9mZnNldCgpKSwgR1BSSW5mbzo6cmVnVDApOwogICAgIGppdC5hZGRQdHIoTWFj
cm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihKSVRDb2RlVHlwZTo6Y29tbW9uRGF0YU9mZnNldCgp
KSwgR1BSSW5mbzo6cmVnVDApOwogICAgIGppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3MoR1BSSW5mbzo6cmVnVDAsIENvbW1vbkRhdGE6OmZyYW1lUmVnaXN0ZXJDb3VudE9mZnNldCgp
KSwgR1BSSW5mbzo6cmVnVDApOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQ
cmVjaXNlTG9jYWxDbG9iYmVyaXplLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdQcmVjaXNlTG9jYWxDbG9iYmVyaXplLmgJKHJldmlzaW9uIDIwMjk1NCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlY2lzZUxvY2FsQ2xvYmJlcml6ZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xMjUsMTQgKzEyNSwxNCBAQCBwcml2YXRlOgogICAgICAgICAgICAg
ICAgIC8vIFJlYWQgdGhlIG91dGVybW9zdCBhcmd1bWVudHMgYW5kIGFyZ3VtZW50IGNvdW50Lgog
ICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1fZ3JhcGgubV9jb2RlQmxvY2stPm51
bVBhcmFtZXRlcnMoKTsgaS0tID4gMTspCiAgICAgICAgICAgICAgICAgICAgIG1fcmVhZCh2aXJ0
dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChpKSk7Ci0gICAgICAgICAgICAgICAgbV9yZWFkKFZpcnR1
YWxSZWdpc3RlcihKU1N0YWNrOjpBcmd1bWVudENvdW50KSk7CisgICAgICAgICAgICAgICAgbV9y
ZWFkKFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWVIZWFkZXI6OkFyZ3VtZW50Q291bnQpKTsKICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgp
OyBpLS0gPiAxOykKICAgICAgICAgICAgICAgICBtX3JlYWQoVmlydHVhbFJlZ2lzdGVyKGlubGlu
ZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChpKS5v
ZmZzZXQoKSkpOwogICAgICAgICAgICAgaWYgKGlubGluZUNhbGxGcmFtZS0+aXNWYXJhcmdzKCkp
Ci0gICAgICAgICAgICAgICAgbV9yZWFkKFZpcnR1YWxSZWdpc3RlcihpbmxpbmVDYWxsRnJhbWUt
PnN0YWNrT2Zmc2V0ICsgSlNTdGFjazo6QXJndW1lbnRDb3VudCkpOworICAgICAgICAgICAgICAg
IG1fcmVhZChWaXJ0dWFsUmVnaXN0ZXIoaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCArIENh
bGxGcmFtZUhlYWRlcjo6QXJndW1lbnRDb3VudCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KICAgICAgICAgICAgIApAQCAtMTQyLDcgKzE0Miw3IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICAgICAgbV9yZWFkKHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGkpKTsKICAgICAgICAg
CiAgICAgICAgICAgICAvLyBUaGUgc3RhY2sgaGVhZGVyIGlzIHJlYWQuCi0gICAgICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgSlNTdGFjazo6VGhpc0FyZ3VtZW50OyArK2kpCisgICAg
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgQ2FsbEZyYW1lSGVhZGVyOjpUaGlzQXJn
dW1lbnQ7ICsraSkKICAgICAgICAgICAgICAgICBtX3JlYWQoVmlydHVhbFJlZ2lzdGVyKGkpKTsK
ICAgICAgICAgCiAgICAgICAgICAgICAvLyBSZWFkIGFsbCBvZiB0aGUgaW5saW5lIGFyZ3VtZW50
cyBhbmQgY2FsbCBmcmFtZSBoZWFkZXJzIHRoYXQgd2UgZGlkbid0IGFscmVhZHkgY2FwdHVyZS4K
QEAgLTE1MCw5ICsxNTAsOSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKTsgaS0tID4gMTspCiAgICAg
ICAgICAgICAgICAgICAgIG1fcmVhZChWaXJ0dWFsUmVnaXN0ZXIoaW5saW5lQ2FsbEZyYW1lLT5z
dGFja09mZnNldCArIHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGkpLm9mZnNldCgpKSk7CiAg
ICAgICAgICAgICAgICAgaWYgKGlubGluZUNhbGxGcmFtZS0+aXNDbG9zdXJlQ2FsbCkKLSAgICAg
ICAgICAgICAgICAgICAgbV9yZWFkKFZpcnR1YWxSZWdpc3RlcihpbmxpbmVDYWxsRnJhbWUtPnN0
YWNrT2Zmc2V0ICsgSlNTdGFjazo6Q2FsbGVlKSk7CisgICAgICAgICAgICAgICAgICAgIG1fcmVh
ZChWaXJ0dWFsUmVnaXN0ZXIoaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCArIENhbGxGcmFt
ZUhlYWRlcjo6Q2FsbGVlKSk7CiAgICAgICAgICAgICAgICAgaWYgKGlubGluZUNhbGxGcmFtZS0+
aXNWYXJhcmdzKCkpCi0gICAgICAgICAgICAgICAgICAgIG1fcmVhZChWaXJ0dWFsUmVnaXN0ZXIo
aW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCArIEpTU3RhY2s6OkFyZ3VtZW50Q291bnQpKTsK
KyAgICAgICAgICAgICAgICAgICAgbV9yZWFkKFZpcnR1YWxSZWdpc3RlcihpbmxpbmVDYWxsRnJh
bWUtPnN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lSGVhZGVyOjpBcmd1bWVudENvdW50KSk7CiAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfSB9CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJ
KHJldmlzaW9uIDIwMjk1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgzNSw3ICs4MzUsNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChOb2RlKiBub2RlCiAgICAgICAgICAgICAgICAgc2h1
ZmZsZURhdGEuYXJnc1tpXSA9IGluZm8ucmVjb3ZlcnkoYXJnRWRnZS0+dmlydHVhbFJlZ2lzdGVy
KCkpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgbV9qaXQu
c3RvcmUzMihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKG51bVBhc3NlZEFyZ3MpLCBtX2pp
dC5jYWxsZWVGcmFtZVBheWxvYWRTbG90KEpTU3RhY2s6OkFyZ3VtZW50Q291bnQpKTsKKyAgICAg
ICAgICAgIG1faml0LnN0b3JlMzIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihudW1QYXNz
ZWRBcmdzKSwgbV9qaXQuY2FsbGVlRnJhbWVQYXlsb2FkU2xvdChDYWxsRnJhbWVIZWFkZXI6OkFy
Z3VtZW50Q291bnQpKTsKICAgICAgICAgCiAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8
IG51bVBhc3NlZEFyZ3M7IGkrKykgewogICAgICAgICAgICAgICAgIEVkZ2UgYXJnRWRnZSA9IG1f
aml0LmdyYXBoKCkubV92YXJBcmdDaGlsZHJlbltub2RlLT5maXJzdENoaWxkKCkgKyAxICsgaV07
CkBAIC04NTUsOCArODU1LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSog
bm9kZQogICAgICAgICBjYWxsZWVUYWdHUFIgPSBjYWxsZWUudGFnR1BSKCk7CiAgICAgICAgIGNh
bGxlZVBheWxvYWRHUFIgPSBjYWxsZWUucGF5bG9hZEdQUigpOwogICAgICAgICB1c2UoY2FsbGVl
RWRnZSk7Ci0gICAgICAgIG1faml0LnN0b3JlMzIoY2FsbGVlUGF5bG9hZEdQUiwgbV9qaXQuY2Fs
bGVlRnJhbWVQYXlsb2FkU2xvdChKU1N0YWNrOjpDYWxsZWUpKTsKLSAgICAgICAgbV9qaXQuc3Rv
cmUzMihjYWxsZWVUYWdHUFIsIG1faml0LmNhbGxlZUZyYW1lVGFnU2xvdChKU1N0YWNrOjpDYWxs
ZWUpKTsKKyAgICAgICAgbV9qaXQuc3RvcmUzMihjYWxsZWVQYXlsb2FkR1BSLCBtX2ppdC5jYWxs
ZWVGcmFtZVBheWxvYWRTbG90KENhbGxGcmFtZUhlYWRlcjo6Q2FsbGVlKSk7CisgICAgICAgIG1f
aml0LnN0b3JlMzIoY2FsbGVlVGFnR1BSLCBtX2ppdC5jYWxsZWVGcmFtZVRhZ1Nsb3QoQ2FsbEZy
YW1lSGVhZGVyOjpDYWxsZWUpKTsKIAogICAgICAgICBpZiAoIWlzVGFpbCkKICAgICAgICAgICAg
IGZsdXNoUmVnaXN0ZXJzKCk7CkBAIC00MTE2LDE0ICs0MTE2LDE0IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKIAogICAgIGNhc2UgR2V0Q2FsbGVlOiB7CiAgICAg
ICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7Ci0gICAgICAgIG1faml0LmxvYWRQdHIoSklU
Q29tcGlsZXI6OnBheWxvYWRGb3IoSlNTdGFjazo6Q2FsbGVlKSwgcmVzdWx0LmdwcigpKTsKKyAg
ICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6cGF5bG9hZEZvcihDYWxsRnJhbWVIZWFk
ZXI6OkNhbGxlZSksIHJlc3VsdC5ncHIoKSk7CiAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0Lmdw
cigpLCBub2RlKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgICAgICAKICAgICBjYXNlIEdl
dEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzOiB7CiAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1
bHQodGhpcyk7Ci0gICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6cGF5bG9hZEZvcihK
U1N0YWNrOjpBcmd1bWVudENvdW50KSwgcmVzdWx0LmdwcigpKTsKKyAgICAgICAgbV9qaXQubG9h
ZDMyKEpJVENvbXBpbGVyOjpwYXlsb2FkRm9yKENhbGxGcmFtZUhlYWRlcjo6QXJndW1lbnRDb3Vu
dCksIHJlc3VsdC5ncHIoKSk7CiAgICAgICAgIGludDMyUmVzdWx0KHJlc3VsdC5ncHIoKSwgbm9k
ZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkocmV2aXNpb24gMjAyOTU0KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtODA2LDcgKzgwNiw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxs
KE5vZGUqIG5vZGUKIAogICAgICAgICAgICAgc2h1ZmZsZURhdGEuc2V0dXBDYWxsZWVTYXZlUmVn
aXN0ZXJzKG1faml0LmNvZGVCbG9jaygpKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
IG1faml0LnN0b3JlMzIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihudW1QYXNzZWRBcmdz
KSwgSklUQ29tcGlsZXI6OmNhbGxlZUZyYW1lUGF5bG9hZFNsb3QoSlNTdGFjazo6QXJndW1lbnRD
b3VudCkpOworICAgICAgICAgICAgbV9qaXQuc3RvcmUzMihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3Rl
ZEltbTMyKG51bVBhc3NlZEFyZ3MpLCBKSVRDb21waWxlcjo6Y2FsbGVlRnJhbWVQYXlsb2FkU2xv
dChDYWxsRnJhbWVIZWFkZXI6OkFyZ3VtZW50Q291bnQpKTsKIAogICAgICAgICAgICAgZm9yIChp
bnQgaSA9IDA7IGkgPCBudW1QYXNzZWRBcmdzOyBpKyspIHsKICAgICAgICAgICAgICAgICBFZGdl
IGFyZ0VkZ2UgPSBtX2ppdC5ncmFwaCgpLm1fdmFyQXJnQ2hpbGRyZW5bbm9kZS0+Zmlyc3RDaGls
ZCgpICsgMSArIGldOwpAQCAtODI0LDcgKzgyNCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVt
aXRDYWxsKE5vZGUqIG5vZGUKICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgY2FsbGVlKHRoaXMsIGNh
bGxlZUVkZ2UpOwogICAgICAgICBjYWxsZWVHUFIgPSBjYWxsZWUuZ3ByKCk7CiAgICAgICAgIGNh
bGxlZS51c2UoKTsKLSAgICAgICAgbV9qaXQuc3RvcmU2NChjYWxsZWVHUFIsIEpJVENvbXBpbGVy
OjpjYWxsZWVGcmFtZVNsb3QoSlNTdGFjazo6Q2FsbGVlKSk7CisgICAgICAgIG1faml0LnN0b3Jl
NjQoY2FsbGVlR1BSLCBKSVRDb21waWxlcjo6Y2FsbGVlRnJhbWVTbG90KENhbGxGcmFtZUhlYWRl
cjo6Q2FsbGVlKSk7CiAKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICB9CkBAIC00MDQ3
LDE0ICs0MDQ3LDE0IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkK
IAogICAgIGNhc2UgR2V0Q2FsbGVlOiB7CiAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhp
cyk7Ci0gICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IoSlNTdGFj
azo6Q2FsbGVlKSwgcmVzdWx0LmdwcigpKTsKKyAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21w
aWxlcjo6YWRkcmVzc0ZvcihDYWxsRnJhbWVIZWFkZXI6OkNhbGxlZSksIHJlc3VsdC5ncHIoKSk7
CiAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0LmdwcigpLCBub2RlKTsKICAgICAgICAgYnJlYWs7
CiAgICAgfQogICAgICAgICAKICAgICBjYXNlIEdldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
OiB7CiAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7Ci0gICAgICAgIG1faml0Lmxv
YWQzMihKSVRDb21waWxlcjo6cGF5bG9hZEZvcihKU1N0YWNrOjpBcmd1bWVudENvdW50KSwgcmVz
dWx0LmdwcigpKTsKKyAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjpwYXlsb2FkRm9y
KENhbGxGcmFtZUhlYWRlcjo6QXJndW1lbnRDb3VudCksIHJlc3VsdC5ncHIoKSk7CiAgICAgICAg
IGludDMyUmVzdWx0KHJlc3VsdC5ncHIoKSwgbm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQu
Y3BwCShyZXZpc2lvbiAyMDI5NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUyLDcgKzE1Miw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmVtaXRHZXRMZW5ndGgoSW5saW4KICAgICBlbHNlIHsKICAgICAgICAg
VmlydHVhbFJlZ2lzdGVyIGFyZ3VtZW50Q291bnRSZWdpc3RlcjsKICAgICAgICAgaWYgKCFpbmxp
bmVDYWxsRnJhbWUpCi0gICAgICAgICAgICBhcmd1bWVudENvdW50UmVnaXN0ZXIgPSBWaXJ0dWFs
UmVnaXN0ZXIoSlNTdGFjazo6QXJndW1lbnRDb3VudCk7CisgICAgICAgICAgICBhcmd1bWVudENv
dW50UmVnaXN0ZXIgPSBWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lSGVhZGVyOjpBcmd1bWVudENv
dW50KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgYXJndW1lbnRDb3VudFJlZ2lzdGVyID0g
aW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudENvdW50UmVnaXN0ZXI7CiAgICAgICAgIG1faml0Lmxv
YWQzMihKSVRDb21waWxlcjo6cGF5bG9hZEZvcihhcmd1bWVudENvdW50UmVnaXN0ZXIpLCBsZW5n
dGhHUFIpOwpAQCAtMTc5LDcgKzE3OSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRHZXRD
YWxsZWUoQ29kZU8KICAgICAgICAgICAgICAgICBjYWxsZWVHUFIpOwogICAgICAgICB9CiAgICAg
fSBlbHNlCi0gICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IoSlNT
dGFjazo6Q2FsbGVlKSwgY2FsbGVlR1BSKTsKKyAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21w
aWxlcjo6YWRkcmVzc0ZvcihDYWxsRnJhbWVIZWFkZXI6OkNhbGxlZSksIGNhbGxlZUdQUik7CiB9
CiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRHZXRBcmd1bWVudFN0YXJ0KENvZGVPcmlnaW4g
b3JpZ2luLCBHUFJSZWcgc3RhcnRHUFIpCkBAIC02MTk2LDcgKzYxOTYsNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlQ3JlYXRlRGlyZWN0CiAKICAgICAgICAgVmlydHVhbFJlZ2lzdGVy
IGFyZ3VtZW50Q291bnRSZWdpc3RlcjsKICAgICAgICAgaWYgKCFub2RlLT5vcmlnaW4uc2VtYW50
aWMuaW5saW5lQ2FsbEZyYW1lKQotICAgICAgICAgICAgYXJndW1lbnRDb3VudFJlZ2lzdGVyID0g
VmlydHVhbFJlZ2lzdGVyKEpTU3RhY2s6OkFyZ3VtZW50Q291bnQpOworICAgICAgICAgICAgYXJn
dW1lbnRDb3VudFJlZ2lzdGVyID0gVmlydHVhbFJlZ2lzdGVyKENhbGxGcmFtZUhlYWRlcjo6QXJn
dW1lbnRDb3VudCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGFyZ3VtZW50Q291bnRSZWdp
c3RlciA9IG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50Q291
bnRSZWdpc3RlcjsKICAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjpwYXlsb2FkRm9y
KGFyZ3VtZW50Q291bnRSZWdpc3RlciksIGxlbmd0aEdQUik7CkBAIC02MjcxLDcgKzYyNzEsNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ3JlYXRlRGlyZWN0CiAgICAgICAgICAgICAg
ICAgc2NyYXRjaDFHUFIpOwogICAgICAgICB9CiAgICAgfSBlbHNlCi0gICAgICAgIG1faml0Lmxv
YWRQdHIoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IoSlNTdGFjazo6Q2FsbGVlKSwgc2NyYXRjaDFH
UFIpOworICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKENhbGxG
cmFtZUhlYWRlcjo6Q2FsbGVlKSwgc2NyYXRjaDFHUFIpOwogCiAgICAgLy8gRG9uJ3QgbmVlZCBh
IG1lbW9yeSBiYXJyaWVycyBzaW5jZSB3ZSBqdXN0IGZhc3QtY3JlYXRlZCB0aGUgYWN0aXZhdGlv
biwgc28gdGhlCiAgICAgLy8gYWN0aXZhdGlvbiBtdXN0IGJlIHlvdW5nLgpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdGFja0xheW91dFBoYXNlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0YWNrTGF5b3V0UGhhc2UuY3BwCShyZXZp
c2lvbiAyMDI5NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0YWNrTGF5b3V0
UGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTgsNyArMTE4LDcgQEAgcHVibGljOgogICAg
ICAgICAgICAgCiAgICAgICAgICAgICBpZiAoaW5saW5lQ2FsbEZyYW1lLT5pc1ZhcmFyZ3MoKSkg
ewogICAgICAgICAgICAgICAgIHVzZWRMb2NhbHMuc2V0KFZpcnR1YWxSZWdpc3RlcigKLSAgICAg
ICAgICAgICAgICAgICAgSlNTdGFjazo6QXJndW1lbnRDb3VudCArIGlubGluZUNhbGxGcmFtZS0+
c3RhY2tPZmZzZXQpLnRvTG9jYWwoKSk7CisgICAgICAgICAgICAgICAgICAgIENhbGxGcmFtZUhl
YWRlcjo6QXJndW1lbnRDb3VudCArIGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQpLnRvTG9j
YWwoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGZvciAodW5z
aWduZWQgYXJndW1lbnQgPSBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5zaXplKCk7IGFyZ3Vt
ZW50LS0gPiAxOykgewpAQCAtMTg0LDcgKzE4NCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIAog
ICAgICAgICAgICAgaWYgKGlubGluZUNhbGxGcmFtZS0+aXNWYXJhcmdzKCkpIHsKICAgICAgICAg
ICAgICAgICBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50Q291bnRSZWdpc3RlciA9IGFzc2lnbigK
LSAgICAgICAgICAgICAgICAgICAgYWxsb2NhdGlvbiwgVmlydHVhbFJlZ2lzdGVyKGlubGluZUNh
bGxGcmFtZS0+c3RhY2tPZmZzZXQgKyBKU1N0YWNrOjpBcmd1bWVudENvdW50KSk7CisgICAgICAg
ICAgICAgICAgICAgIGFsbG9jYXRpb24sIFZpcnR1YWxSZWdpc3RlcihpbmxpbmVDYWxsRnJhbWUt
PnN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lSGVhZGVyOjpBcmd1bWVudENvdW50KSk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgYXJndW1lbnQg
PSBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5zaXplKCk7IGFyZ3VtZW50LS0gPiAxOykgewpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaHVua3MuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVGh1bmtzLmNwcAkocmV2aXNpb24gMjAy
OTU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaHVua3MuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMTEsNyArMTExLDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIG9zckVudHJ5
VGh1bmtHZW5lcgogICAgIHB0cmRpZmZfdCBvZmZzZXRPZkZyYW1lU2l6ZSA9IDA7IC8vIFRoaXMg
aXMgdGhlIERGRyBmcmFtZSBjb3VudC4KICAgICBwdHJkaWZmX3Qgb2Zmc2V0T2ZUYXJnZXRQQyA9
IG9mZnNldE9mRnJhbWVTaXplICsgc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKTsKICAgICBwdHJkaWZm
X3Qgb2Zmc2V0T2ZQYXlsb2FkID0gb2Zmc2V0T2ZUYXJnZXRQQyArIHNpemVvZihFbmNvZGVkSlNW
YWx1ZSk7Ci0gICAgcHRyZGlmZl90IG9mZnNldE9mTG9jYWxzID0gb2Zmc2V0T2ZQYXlsb2FkICsg
c2l6ZW9mKFJlZ2lzdGVyKSAqIEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlclNpemU7CisgICAgcHRy
ZGlmZl90IG9mZnNldE9mTG9jYWxzID0gb2Zmc2V0T2ZQYXlsb2FkICsgc2l6ZW9mKFJlZ2lzdGVy
KSAqIENhbGxGcmFtZUhlYWRlcjo6U2l6ZTsKICAgICAKICAgICBqaXQubW92ZShHUFJJbmZvOjpy
ZXR1cm5WYWx1ZUdQUjIsIEdQUkluZm86OnJlZ1QwKTsKICAgICBqaXQubG9hZFB0cihNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhHUFJJbmZvOjpyZWdUMCwgb2Zmc2V0T2ZGcmFtZVNpemUpLCBHUFJJ
bmZvOjpyZWdUMSk7IC8vIExvYWQgdGhlIGZyYW1lIHNpemUuCkBAIC0xMjgsNyArMTI4LDcgQEAg
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmIG9zckVudHJ5VGh1bmtHZW5lcgogICAgIGppdC5sb2FkMzIo
TWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleChHUFJJbmZvOjpyZWdUMCwgR1BSSW5mbzo6cmVnVDEs
IE1hY3JvQXNzZW1ibGVyOjpUaW1lc0VpZ2h0LCBvZmZzZXRPZkxvY2FscyArIHNpemVvZihpbnQz
Ml90KSksIEdQUkluZm86OnJlZ1QzKTsKICAgICBqaXQuc3RvcmUzMihHUFJJbmZvOjpyZWdUMiwg
TWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleChHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BS
SW5mbzo6cmVnVDQsIE1hY3JvQXNzZW1ibGVyOjpUaW1lc0VpZ2h0LCAtc3RhdGljX2Nhc3Q8aW50
cHRyX3Q+KHNpemVvZihSZWdpc3RlcikpKSk7CiAgICAgaml0LnN0b3JlMzIoR1BSSW5mbzo6cmVn
VDMsIE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIs
IEdQUkluZm86OnJlZ1Q0LCBNYWNyb0Fzc2VtYmxlcjo6VGltZXNFaWdodCwgLXN0YXRpY19jYXN0
PGludHB0cl90PihzaXplb2YoUmVnaXN0ZXIpKSArIHN0YXRpY19jYXN0PGludHB0cl90PihzaXpl
b2YoaW50MzJfdCkpKSk7Ci0gICAgaml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1
YWwsIEdQUkluZm86OnJlZ1QxLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihiaXR3aXNl
X2Nhc3Q8dm9pZCo+KC1zdGF0aWNfY2FzdDxpbnRwdHJfdD4oSlNTdGFjazo6Q2FsbEZyYW1lSGVh
ZGVyU2l6ZSkpKSkubGlua1RvKGxvb3AsICZqaXQpOworICAgIGppdC5icmFuY2hQdHIoTWFjcm9B
c3NlbWJsZXI6Ok5vdEVxdWFsLCBHUFJJbmZvOjpyZWdUMSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0
ZWRJbW1QdHIoYml0d2lzZV9jYXN0PHZvaWQqPigtc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KENhbGxG
cmFtZUhlYWRlcjo6U2l6ZSkpKSkubGlua1RvKGxvb3AsICZqaXQpOwogICAgIAogICAgIGppdC5s
b2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKEdQUkluZm86OnJlZ1QwLCBvZmZzZXRPZlRh
cmdldFBDKSwgR1BSSW5mbzo6cmVnVDEpOwogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG9rID0g
aml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6QWJvdmUsIEdQUkluZm86OnJlZ1QxLCBNYWNy
b0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0
PGludHB0cl90PigxMDAwKSkpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
TGluay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5r
LmNwcAkocmV2aXNpb24gMjAyOTU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExM
aW5rLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMwLDcgKzEzMCw3IEBAIHZvaWQgbGluayhTdGF0
ZSYgc3RhdGUpCiAgICAgICAgIENDYWxsSGVscGVyczo6SnVtcExpc3QgbWFpblBhdGhKdW1wczsK
ICAgICAKICAgICAgICAgaml0LmxvYWQzMigKLSAgICAgICAgICAgIGZyYW1lLndpdGhPZmZzZXQo
c2l6ZW9mKFJlZ2lzdGVyKSAqIEpTU3RhY2s6OkFyZ3VtZW50Q291bnQpLAorICAgICAgICAgICAg
ZnJhbWUud2l0aE9mZnNldChzaXplb2YoUmVnaXN0ZXIpICogQ2FsbEZyYW1lSGVhZGVyOjpBcmd1
bWVudENvdW50KSwKICAgICAgICAgICAgIEdQUkluZm86OnJlZ1QxKTsKICAgICAgICAgbWFpblBh
dGhKdW1wcy5hcHBlbmQoaml0LmJyYW5jaDMyKAogICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpB
Ym92ZU9yRXF1YWwsIEdQUkluZm86OnJlZ1QxLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAkocmV2aXNpb24gMjAyOTU0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xODUsNyArMTg1LDcgQEAgcHVibGljOgogICAgICAgICBtX3Byb2MuYWRkRmFzdENvbnN0YW50
KG1fdGFnVHlwZU51bWJlci0+a2V5KCkpOwogICAgICAgICBtX3Byb2MuYWRkRmFzdENvbnN0YW50
KG1fdGFnTWFzay0+a2V5KCkpOwogICAgICAgICAKLSAgICAgICAgbV9vdXQuc3RvcmVQdHIobV9v
dXQuY29uc3RJbnRQdHIoY29kZUJsb2NrKCkpLCBhZGRyZXNzRm9yKEpTU3RhY2s6OkNvZGVCbG9j
aykpOworICAgICAgICBtX291dC5zdG9yZVB0cihtX291dC5jb25zdEludFB0cihjb2RlQmxvY2so
KSksIGFkZHJlc3NGb3IoQ2FsbEZyYW1lSGVhZGVyOjpDb2RlQmxvY2spKTsKIAogICAgICAgICAv
LyBTdGFjayBPdmVyZmxvdyBDaGVjay4KICAgICAgICAgdW5zaWduZWQgZXhpdEZyYW1lU2l6ZSA9
IG1fZ3JhcGgucmVxdWlyZWRSZWdpc3RlckNvdW50Rm9yRXhpdCgpICogc2l6ZW9mKFJlZ2lzdGVy
KTsKQEAgLTIxMiw3ICsyMTIsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgIHN0YWNr
T3ZlcmZsb3cubGluaygmaml0KTsKICAgICAgICAgICAgICAgICAgICAgaml0LnN0b3JlMzIoCiAg
ICAgICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKGNhbGxT
aXRlSW5kZXguYml0cygpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6
dGFnRm9yKFZpcnR1YWxSZWdpc3RlcihKU1N0YWNrOjpBcmd1bWVudENvdW50KSkpOworICAgICAg
ICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjp0YWdGb3IoVmlydHVhbFJlZ2lzdGVyKENh
bGxGcmFtZUhlYWRlcjo6QXJndW1lbnRDb3VudCkpKTsKICAgICAgICAgICAgICAgICAgICAgaml0
LmNvcHlDYWxsZWVTYXZlc1RvVk1FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNCdWZmZXIoKTsKIAogICAg
ICAgICAgICAgICAgICAgICBqaXQubW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BS
SW5mbzo6YXJndW1lbnRHUFIwKTsKQEAgLTMwNDYsNyArMzA0Niw3IEBAIHByaXZhdGU6CiAgICAg
ICAgIGVsc2UgewogICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIGFyZ3VtZW50Q291bnRSZWdp
c3RlcjsKICAgICAgICAgICAgIGlmICghaW5saW5lQ2FsbEZyYW1lKQotICAgICAgICAgICAgICAg
IGFyZ3VtZW50Q291bnRSZWdpc3RlciA9IFZpcnR1YWxSZWdpc3RlcihKU1N0YWNrOjpBcmd1bWVu
dENvdW50KTsKKyAgICAgICAgICAgICAgICBhcmd1bWVudENvdW50UmVnaXN0ZXIgPSBWaXJ0dWFs
UmVnaXN0ZXIoQ2FsbEZyYW1lSGVhZGVyOjpBcmd1bWVudENvdW50KTsKICAgICAgICAgICAgIGVs
c2UKICAgICAgICAgICAgICAgICBhcmd1bWVudENvdW50UmVnaXN0ZXIgPSBpbmxpbmVDYWxsRnJh
bWUtPmFyZ3VtZW50Q291bnRSZWdpc3RlcjsKICAgICAgICAgICAgIGxpbWl0ID0gbV9vdXQuc3Vi
KG1fb3V0LmxvYWQzMihwYXlsb2FkRm9yKGFyZ3VtZW50Q291bnRSZWdpc3RlcikpLCBtX291dC5p
bnQzMk9uZSk7CkBAIC00NzI3LDEyICs0NzI3LDEyIEBAIHByaXZhdGU6CiAgICAgCiAgICAgdm9p
ZCBjb21waWxlR2V0Q2FsbGVlKCkKICAgICB7Ci0gICAgICAgIHNldEpTVmFsdWUobV9vdXQubG9h
ZFB0cihhZGRyZXNzRm9yKEpTU3RhY2s6OkNhbGxlZSkpKTsKKyAgICAgICAgc2V0SlNWYWx1ZSht
X291dC5sb2FkUHRyKGFkZHJlc3NGb3IoQ2FsbEZyYW1lSGVhZGVyOjpDYWxsZWUpKSk7CiAgICAg
fQogICAgIAogICAgIHZvaWQgY29tcGlsZUdldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCkK
ICAgICB7Ci0gICAgICAgIHNldEludDMyKG1fb3V0LmxvYWQzMihwYXlsb2FkRm9yKEpTU3RhY2s6
OkFyZ3VtZW50Q291bnQpKSk7CisgICAgICAgIHNldEludDMyKG1fb3V0LmxvYWQzMihwYXlsb2Fk
Rm9yKENhbGxGcmFtZUhlYWRlcjo6QXJndW1lbnRDb3VudCkpKTsKICAgICB9CiAgICAgCiAgICAg
dm9pZCBjb21waWxlR2V0U2NvcGUoKQpAQCAtNTA1Nyw3ICs1MDU3LDcgQEAgcHJpdmF0ZToKIAog
ICAgICAgICBMVmFsdWUganNDYWxsZWUgPSBsb3dKU1ZhbHVlKG1fZ3JhcGgudmFyQXJnQ2hpbGQo
bm9kZSwgMCkpOwogCi0gICAgICAgIHVuc2lnbmVkIGZyYW1lU2l6ZSA9IEpTU3RhY2s6OkNhbGxG
cmFtZUhlYWRlclNpemUgKyBudW1BcmdzOworICAgICAgICB1bnNpZ25lZCBmcmFtZVNpemUgPSBD
YWxsRnJhbWVIZWFkZXI6OlNpemUgKyBudW1BcmdzOwogICAgICAgICB1bnNpZ25lZCBhbGlnbmVk
RnJhbWVTaXplID0gV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mKHN0YWNrQWxpZ25tZW50UmVnaXN0
ZXJzKCksIGZyYW1lU2l6ZSk7CiAKICAgICAgICAgLy8gSlMtPkpTIGNhbGxpbmcgY29udmVudGlv
biByZXF1aXJlcyB0aGF0IHRoZSBjYWxsZXIgYWxsb3dzIHRoaXMgbXVjaCBzcGFjZSBvbiB0b3Ag
b2Ygc3RhY2sgdG8KQEAgLTUwODAsMTIgKzUwODAsMTIgQEAgcHJpdmF0ZToKIAogICAgICAgICBh
dXRvIGFkZEFyZ3VtZW50ID0gWyZdIChMVmFsdWUgdmFsdWUsIFZpcnR1YWxSZWdpc3RlciByZWcs
IGludCBvZmZzZXQpIHsKICAgICAgICAgICAgIGludHB0cl90IG9mZnNldEZyb21TUCA9Ci0gICAg
ICAgICAgICAgICAgKHJlZy5vZmZzZXQoKSAtIEpTU3RhY2s6OkNhbGxlckZyYW1lQW5kUENTaXpl
KSAqIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkgKyBvZmZzZXQ7CisgICAgICAgICAgICAgICAgKHJl
Zy5vZmZzZXQoKSAtIENhbGxGcmFtZUhlYWRlcjo6Q2FsbGVyRnJhbWVBbmRQQ1NpemUpICogc2l6
ZW9mKEVuY29kZWRKU1ZhbHVlKSArIG9mZnNldDsKICAgICAgICAgICAgIGFyZ3VtZW50cy5hcHBl
bmQoQ29uc3RyYWluZWRWYWx1ZSh2YWx1ZSwgVmFsdWVSZXA6OnN0YWNrQXJndW1lbnQob2Zmc2V0
RnJvbVNQKSkpOwogICAgICAgICB9OwogCi0gICAgICAgIGFkZEFyZ3VtZW50KGpzQ2FsbGVlLCBW
aXJ0dWFsUmVnaXN0ZXIoSlNTdGFjazo6Q2FsbGVlKSwgMCk7Ci0gICAgICAgIGFkZEFyZ3VtZW50
KG1fb3V0LmNvbnN0SW50MzIobnVtQXJncyksIFZpcnR1YWxSZWdpc3RlcihKU1N0YWNrOjpBcmd1
bWVudENvdW50KSwgUGF5bG9hZE9mZnNldCk7CisgICAgICAgIGFkZEFyZ3VtZW50KGpzQ2FsbGVl
LCBWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lSGVhZGVyOjpDYWxsZWUpLCAwKTsKKyAgICAgICAg
YWRkQXJndW1lbnQobV9vdXQuY29uc3RJbnQzMihudW1BcmdzKSwgVmlydHVhbFJlZ2lzdGVyKENh
bGxGcmFtZUhlYWRlcjo6QXJndW1lbnRDb3VudCksIFBheWxvYWRPZmZzZXQpOwogICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtQXJnczsgKytpKQogICAgICAgICAgICAgYWRkQXJn
dW1lbnQobG93SlNWYWx1ZShtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEgKyBpKSksIHZpcnR1
YWxSZWdpc3RlckZvckFyZ3VtZW50KGkpLCAwKTsKIApAQCAtNTExMiw3ICs1MTEyLDcgQEAgcHJp
dmF0ZToKIAogICAgICAgICAgICAgICAgIGppdC5zdG9yZTMyKAogICAgICAgICAgICAgICAgICAg
ICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihjYWxsU2l0ZUluZGV4LmJpdHMoKSksCi0gICAg
ICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6dGFnRm9yKFZpcnR1YWxSZWdpc3RlcihKU1N0
YWNrOjpBcmd1bWVudENvdW50KSkpOworICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6
OnRhZ0ZvcihWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lSGVhZGVyOjpBcmd1bWVudENvdW50KSkp
OwogCiAgICAgICAgICAgICAgICAgQ2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8gPSBqaXQuY29k
ZUJsb2NrKCktPmFkZENhbGxMaW5rSW5mbygpOwogCkBAIC01MjMwLDcgKzUyMzAsNyBAQCBwcml2
YXRlOgogICAgICAgICAgICAgICAgIC8vIHdpdGggdGhlIGNhbGwgc2l0ZSBpbmRleCBvZiBvdXIg
ZnJhbWUuIEJhZCB0aGluZ3MgaGFwcGVuIGlmIGl0J3Mgbm90IHNldC4KICAgICAgICAgICAgICAg
ICBqaXQuc3RvcmUzMigKICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVk
SW1tMzIoY2FsbFNpdGVJbmRleC5iaXRzKCkpLAotICAgICAgICAgICAgICAgICAgICBDQ2FsbEhl
bHBlcnM6OnRhZ0ZvcihWaXJ0dWFsUmVnaXN0ZXIoSlNTdGFjazo6QXJndW1lbnRDb3VudCkpKTsK
KyAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjp0YWdGb3IoVmlydHVhbFJlZ2lzdGVy
KENhbGxGcmFtZUhlYWRlcjo6QXJndW1lbnRDb3VudCkpKTsKIAogICAgICAgICAgICAgICAgIENh
bGxGcmFtZVNodWZmbGVyIHNsb3dQYXRoU2h1ZmZsZXIoaml0LCBzaHVmZmxlRGF0YSk7CiAgICAg
ICAgICAgICAgICAgc2xvd1BhdGhTaHVmZmxlci5zZXRDYWxsZWVKU1ZhbHVlUmVncyhKU1ZhbHVl
UmVncyhHUFJJbmZvOjpyZWdUMCkpOwpAQCAtNTMzNSw3ICs1MzM1LDcgQEAgcHJpdmF0ZToKIAog
ICAgICAgICAgICAgICAgIGppdC5zdG9yZTMyKAogICAgICAgICAgICAgICAgICAgICBDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW0zMihjYWxsU2l0ZUluZGV4LmJpdHMoKSksCi0gICAgICAgICAgICAg
ICAgICAgIENDYWxsSGVscGVyczo6dGFnRm9yKFZpcnR1YWxSZWdpc3RlcihKU1N0YWNrOjpBcmd1
bWVudENvdW50KSkpOworICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OnRhZ0ZvcihW
aXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lSGVhZGVyOjpBcmd1bWVudENvdW50KSkpOwogCiAgICAg
ICAgICAgICAgICAgQ2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8gPSBqaXQuY29kZUJsb2NrKCkt
PmFkZENhbGxMaW5rSW5mbygpOwogICAgICAgICAgICAgICAgIENhbGxWYXJhcmdzRGF0YSogZGF0
YSA9IG5vZGUtPmNhbGxWYXJhcmdzRGF0YSgpOwpAQCAtNTQ2NCw3ICs1NDY0LDcgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgICAgICAgICAgdGhpc0xhdGVSZXAuZW1pdFJlc3RvcmUoaml0LCB0aGlz
R1BSKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAg
ICAgaml0LnN0b3JlNjQoR1BSSW5mbzo6cmVnVDAsIENDYWxsSGVscGVyczo6Y2FsbGVlRnJhbWVT
bG90KEpTU3RhY2s6OkNhbGxlZSkpOworICAgICAgICAgICAgICAgIGppdC5zdG9yZTY0KEdQUklu
Zm86OnJlZ1QwLCBDQ2FsbEhlbHBlcnM6OmNhbGxlZUZyYW1lU2xvdChDYWxsRnJhbWVIZWFkZXI6
OkNhbGxlZSkpOwogICAgICAgICAgICAgICAgIGppdC5zdG9yZTY0KHRoaXNHUFIsIENDYWxsSGVs
cGVyczo6Y2FsbGVlQXJndW1lbnRTbG90KDApKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAg
ICAgICAgICBDYWxsTGlua0luZm86OkNhbGxUeXBlIGNhbGxUeXBlOwpAQCAtNzE0Nyw3ICs3MTQ3
LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICBtX291dC5zdG9yZVB0cihtX2NhbGxGcmFtZSwgcGFj
a2V0LCBtX2hlYXBzLlNoYWRvd0NoaWNrZW5fUGFja2V0X2ZyYW1lKTsKICAgICAgICAgbV9vdXQu
c3RvcmVQdHIobV9vdXQubG9hZFB0cihhZGRyZXNzRm9yKDApKSwgcGFja2V0LCBtX2hlYXBzLlNo
YWRvd0NoaWNrZW5fUGFja2V0X2NhbGxlckZyYW1lKTsKLSAgICAgICAgbV9vdXQuc3RvcmVQdHIo
bV9vdXQubG9hZFB0cihwYXlsb2FkRm9yKEpTU3RhY2s6OkNhbGxlZSkpLCBwYWNrZXQsIG1faGVh
cHMuU2hhZG93Q2hpY2tlbl9QYWNrZXRfY2FsbGVlKTsKKyAgICAgICAgbV9vdXQuc3RvcmVQdHIo
bV9vdXQubG9hZFB0cihwYXlsb2FkRm9yKENhbGxGcmFtZUhlYWRlcjo6Q2FsbGVlKSksIHBhY2tl
dCwgbV9oZWFwcy5TaGFkb3dDaGlja2VuX1BhY2tldF9jYWxsZWUpOwogICAgICAgICBtX291dC5z
dG9yZVB0cihzY29wZSwgcGFja2V0LCBtX2hlYXBzLlNoYWRvd0NoaWNrZW5fUGFja2V0X3Njb3Bl
KTsKICAgICB9CiAgICAgCkBAIC03MjE1LDcgKzcyMTUsNyBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgCiAgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgYXJndW1lbnRDb3VudFJlZ2lzdGVyOwog
ICAgICAgICAgICAgaWYgKCFpbmxpbmVDYWxsRnJhbWUpCi0gICAgICAgICAgICAgICAgYXJndW1l
bnRDb3VudFJlZ2lzdGVyID0gVmlydHVhbFJlZ2lzdGVyKEpTU3RhY2s6OkFyZ3VtZW50Q291bnQp
OworICAgICAgICAgICAgICAgIGFyZ3VtZW50Q291bnRSZWdpc3RlciA9IFZpcnR1YWxSZWdpc3Rl
cihDYWxsRnJhbWVIZWFkZXI6OkFyZ3VtZW50Q291bnQpOwogICAgICAgICAgICAgZWxzZQogICAg
ICAgICAgICAgICAgIGFyZ3VtZW50Q291bnRSZWdpc3RlciA9IGlubGluZUNhbGxGcmFtZS0+YXJn
dW1lbnRDb3VudFJlZ2lzdGVyOwogICAgICAgICAgICAgbGVuZ3RoLnZhbHVlID0gbV9vdXQuc3Vi
KG1fb3V0LmxvYWQzMihwYXlsb2FkRm9yKGFyZ3VtZW50Q291bnRSZWdpc3RlcikpLCBtX291dC5p
bnQzMk9uZSk7CkBAIC03MjM2LDcgKzcyMzYsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAg
IHJldHVybiBtX291dC5sb2FkUHRyKGFkZHJlc3NGb3IoZnJhbWUtPmNhbGxlZVJlY292ZXJ5LnZp
cnR1YWxSZWdpc3RlcigpKSk7CiAgICAgICAgICAgICByZXR1cm4gd2Vha1BvaW50ZXIoZnJhbWUt
PmNhbGxlZVJlY292ZXJ5LmNvbnN0YW50KCkuYXNDZWxsKCkpOwogICAgICAgICB9Ci0gICAgICAg
IHJldHVybiBtX291dC5sb2FkUHRyKGFkZHJlc3NGb3IoSlNTdGFjazo6Q2FsbGVlKSk7CisgICAg
ICAgIHJldHVybiBtX291dC5sb2FkUHRyKGFkZHJlc3NGb3IoQ2FsbEZyYW1lSGVhZGVyOjpDYWxs
ZWUpKTsKICAgICB9CiAgICAgCiAgICAgTFZhbHVlIGdldEFyZ3VtZW50c1N0YXJ0KElubGluZUNh
bGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lKQpAQCAtMTA2ODAsNyArMTA2ODAsNyBAQCBwcml2YXRl
OgogICAgICAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXggPSBtX2Z0bFN0YXRlLmppdENv
ZGUtPmNvbW1vbi5hZGRDb2RlT3JpZ2luKGNvZGVPcmlnaW4pOwogICAgICAgICBtX291dC5zdG9y
ZTMyKAogICAgICAgICAgICAgbV9vdXQuY29uc3RJbnQzMihjYWxsU2l0ZUluZGV4LmJpdHMoKSks
Ci0gICAgICAgICAgICB0YWdGb3IoSlNTdGFjazo6QXJndW1lbnRDb3VudCkpOworICAgICAgICAg
ICAgdGFnRm9yKENhbGxGcmFtZUhlYWRlcjo6QXJndW1lbnRDb3VudCkpOwogICAgIH0KIAogICAg
IHZvaWQgY2FsbFByZWZsaWdodCgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TE9TUkV4aXRDb21waWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExPU1JFeGl0Q29tcGlsZXIuY3BwCShyZXZpc2lvbiAyMDI5NTQpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkV4aXRDb21waWxlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM5NCw3ICszOTQsNyBAQCBzdGF0aWMgdm9pZCBjb21waWxlU3R1YigKICAgICAgICAgaml0
LnN0b3JlNjQoR1BSSW5mbzo6cmVnVDAsIHVud2luZFNjcmF0Y2ggKyBpKTsKICAgICB9CiAgICAg
Ci0gICAgaml0LmxvYWQzMihDQ2FsbEhlbHBlcnM6OnBheWxvYWRGb3IoSlNTdGFjazo6QXJndW1l
bnRDb3VudCksIEdQUkluZm86OnJlZ1QyKTsKKyAgICBqaXQubG9hZDMyKENDYWxsSGVscGVyczo6
cGF5bG9hZEZvcihDYWxsRnJhbWVIZWFkZXI6OkFyZ3VtZW50Q291bnQpLCBHUFJJbmZvOjpyZWdU
Mik7CiAgICAgCiAgICAgLy8gTGV0J3Mgc2F5IHRoYXQgdGhlIEZUTCBmdW5jdGlvbiBoYWQgZmFp
bGVkIGl0cyBhcml0eSBjaGVjay4gSW4gdGhhdCBjYXNlLCB0aGUgc3RhY2sgd2lsbAogICAgIC8v
IGNvbnRhaW4gc29tZSBleHRyYSBzdHVmZi4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMU2xvd1BhdGhDYWxsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExTbG93UGF0aENhbGwuaAkocmV2aXNpb24gMjAyOTU0KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExTbG93UGF0aENhbGwuaAkod29ya2luZyBjb3B5KQpAQCAtMTAzLDcg
KzEwMyw3IEBAIFNsb3dQYXRoQ2FsbCBjYWxsT3BlcmF0aW9uKAogICAgIGlmIChjYWxsU2l0ZUlu
ZGV4KSB7CiAgICAgICAgIGppdC5zdG9yZTMyKAogICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpU
cnVzdGVkSW1tMzIoY2FsbFNpdGVJbmRleC5iaXRzKCkpLAotICAgICAgICAgICAgQ0NhbGxIZWxw
ZXJzOjp0YWdGb3IoSlNTdGFjazo6QXJndW1lbnRDb3VudCkpOworICAgICAgICAgICAgQ0NhbGxI
ZWxwZXJzOjp0YWdGb3IoQ2FsbEZyYW1lSGVhZGVyOjpBcmd1bWVudENvdW50KSk7CiAgICAgfQog
ICAgIHJldHVybiBjYWxsT3BlcmF0aW9uKHVzZWRSZWdpc3RlcnMsIGppdCwgZXhjZXB0aW9uVGFy
Z2V0LCBmdW5jdGlvbiwgcmVzdWx0R1BSLCBhcmd1bWVudHMuLi4pOwogfQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5jcHAJKHJldmlzaW9u
IDIwMjk1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiwxNSBAQAogCiBuYW1lc3BhY2UgSlNDIHsK
IAordm9pZCBFeGVjU3RhdGU6OmluaXRHbG9iYWxFeGVjKEV4ZWNTdGF0ZSogZ2xvYmFsRXhlYywg
SlNDYWxsZWUqIGdsb2JhbENhbGxlZSkKK3sKKyAgICBnbG9iYWxFeGVjLT5zZXRDb2RlQmxvY2so
bnVsbHB0cik7CisgICAgZ2xvYmFsRXhlYy0+c2V0Q2FsbGVyRnJhbWUobm9DYWxsZXIoKSk7Cisg
ICAgZ2xvYmFsRXhlYy0+c2V0UmV0dXJuUEMoMCk7CisgICAgZ2xvYmFsRXhlYy0+c2V0QXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMoMCk7CisgICAgZ2xvYmFsRXhlYy0+c2V0Q2FsbGVlKGdsb2Jh
bENhbGxlZSk7Cit9CisKIGJvb2wgQ2FsbEZyYW1lOjpjYWxsU2l0ZUJpdHNBcmVCeXRlY29kZU9m
ZnNldCgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGNvZGVCbG9jaygpKTsKQEAgLTc2LDEyICs4NSwx
MiBAQCBib29sIENhbGxGcmFtZTo6Y2FsbFNpdGVCaXRzQXJlQ29kZU9yaWdpCiAKIHVuc2lnbmVk
IENhbGxGcmFtZTo6Y2FsbFNpdGVBc1Jhd0JpdHMoKSBjb25zdAogewotICAgIHJldHVybiB0aGlz
W0pTU3RhY2s6OkFyZ3VtZW50Q291bnRdLnRhZygpOworICAgIHJldHVybiB0aGlzW0NhbGxGcmFt
ZUhlYWRlcjo6QXJndW1lbnRDb3VudF0udGFnKCk7CiB9CiAKIFNVUFBSRVNTX0FTQU4gdW5zaWdu
ZWQgQ2FsbEZyYW1lOjp1bnNhZmVDYWxsU2l0ZUFzUmF3Qml0cygpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuIHRoaXNbSlNTdGFjazo6QXJndW1lbnRDb3VudF0udW5zYWZlVGFnKCk7CisgICAgcmV0dXJu
IHRoaXNbQ2FsbEZyYW1lSGVhZGVyOjpBcmd1bWVudENvdW50XS51bnNhZmVUYWcoKTsKIH0KIAog
Q2FsbFNpdGVJbmRleCBDYWxsRnJhbWU6OmNhbGxTaXRlSW5kZXgoKSBjb25zdApAQCAtMTExLDcg
KzEyMCw3IEBAIEluc3RydWN0aW9uKiBDYWxsRnJhbWU6OmN1cnJlbnRWUEMoKSBjb24KIHZvaWQg
Q2FsbEZyYW1lOjpzZXRDdXJyZW50VlBDKEluc3RydWN0aW9uKiB2cGMpCiB7CiAgICAgQ2FsbFNp
dGVJbmRleCBjYWxsU2l0ZSh2cGMpOwotICAgIHRoaXNbSlNTdGFjazo6QXJndW1lbnRDb3VudF0u
dGFnKCkgPSBjYWxsU2l0ZS5iaXRzKCk7CisgICAgdGhpc1tDYWxsRnJhbWVIZWFkZXI6OkFyZ3Vt
ZW50Q291bnRdLnRhZygpID0gY2FsbFNpdGUuYml0cygpOwogfQogCiB1bnNpZ25lZCBDYWxsRnJh
bWU6OmNhbGxTaXRlQml0c0FzQnl0ZWNvZGVPZmZzZXQoKSBjb25zdApAQCAtMTMxLDcgKzE0MCw3
IEBAIEluc3RydWN0aW9uKiBDYWxsRnJhbWU6OmN1cnJlbnRWUEMoKSBjb24KIHZvaWQgQ2FsbEZy
YW1lOjpzZXRDdXJyZW50VlBDKEluc3RydWN0aW9uKiB2cGMpCiB7CiAgICAgQ2FsbFNpdGVJbmRl
eCBjYWxsU2l0ZSh2cGMgLSBjb2RlQmxvY2soKS0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSk7Ci0g
ICAgdGhpc1tKU1N0YWNrOjpBcmd1bWVudENvdW50XS50YWcoKSA9IHN0YXRpY19jYXN0PGludDMy
X3Q+KGNhbGxTaXRlLmJpdHMoKSk7CisgICAgdGhpc1tDYWxsRnJhbWVIZWFkZXI6OkFyZ3VtZW50
Q291bnRdLnRhZygpID0gc3RhdGljX2Nhc3Q8aW50MzJfdD4oY2FsbFNpdGUuYml0cygpKTsKIH0K
IAogdW5zaWduZWQgQ2FsbEZyYW1lOjpjYWxsU2l0ZUJpdHNBc0J5dGVjb2RlT2Zmc2V0KCkgY29u
c3QKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1l
LmgJKHJldmlzaW9uIDIwMjk1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9DYWxsRnJhbWUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiAgQ29w
eXJpZ2h0IChDKSAxOTk5LTIwMDEgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKICAqICBD
b3B5cmlnaHQgKEMpIDIwMDEgUGV0ZXIgS2VsbHkgKHBta0Bwb3N0LmNvbSkKLSAqICBDb3B5cmln
aHQgKEMpIDIwMDMsIDIwMDcsIDIwMDgsIDIwMTEsIDIwMTMtMjAxNiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA3LTIwMDgsIDIwMTEs
IDIwMTMtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
ICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYwpAQCAtMjQsNyArMjQsNiBAQAogI2RlZmluZSBDYWxsRnJhbWVfaAogCiAjaW5jbHVk
ZSAiQWJzdHJhY3RQQy5oIgotI2luY2x1ZGUgIkpTU3RhY2suaCIKICNpbmNsdWRlICJNYWNyb0Fz
c2VtYmxlckNvZGVSZWYuaCIKICNpbmNsdWRlICJSZWdpc3Rlci5oIgogI2luY2x1ZGUgIlN0YWNr
VmlzaXRvci5oIgpAQCAtMzQsOSArMzMsMTUgQEAKIG5hbWVzcGFjZSBKU0MgIHsKIAogICAgIGNs
YXNzIEFyZ3VtZW50czsKKyAgICBjbGFzcyBFeGVjU3RhdGU7CiAgICAgY2xhc3MgSW50ZXJwcmV0
ZXI7CisgICAgY2xhc3MgSlNDYWxsZWU7CiAgICAgY2xhc3MgSlNTY29wZTsKIAorICAgIHN0cnVj
dCBJbnN0cnVjdGlvbjsKKworICAgIHR5cGVkZWYgRXhlY1N0YXRlIENhbGxGcmFtZTsKKwogICAg
IHN0cnVjdCBDYWxsU2l0ZUluZGV4IHsKICAgICAgICAgQ2FsbFNpdGVJbmRleCgpCiAgICAgICAg
ICAgICA6IG1fYml0cyhVSU5UX01BWCkKQEAgLTYwLDE1ICs2NSwzNCBAQCBuYW1lc3BhY2UgSlND
ICB7CiAgICAgICAgIHVpbnQzMl90IG1fYml0czsKICAgICB9OwogCisgICAgc3RydWN0IENhbGxl
ckZyYW1lQW5kUEMgeworICAgICAgICBDYWxsRnJhbWUqIGNhbGxlckZyYW1lOworICAgICAgICBJ
bnN0cnVjdGlvbiogcGM7CisgICAgfTsKKworICAgIHN0cnVjdCBDYWxsRnJhbWVIZWFkZXIgewor
ICAgICAgICBlbnVtIEVudHJ5IHsKKyAgICAgICAgICAgIENhbGxlckZyYW1lQW5kUENTaXplID0g
c2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpIC8gc2l6ZW9mKFJlZ2lzdGVyKSwKKyAgICAgICAgICAg
IENvZGVCbG9jayA9IENhbGxlckZyYW1lQW5kUENTaXplLAorICAgICAgICAgICAgQ2FsbGVlLAor
ICAgICAgICAgICAgQXJndW1lbnRDb3VudCwKKyAgICAgICAgICAgIFNpemUsCisgICAgICAgICAg
ICAKKyAgICAgICAgICAgIC8vIFRoZSBmb2xsb3dpbmcgZW50cmllcyBhcmUgbm90IHBhcnQgb2Yg
dGhlIENhbGxGcmFtZUhlYWRlciBidXQgYXJlIHByb3ZpZGVkIGhlcmUgYXMgYSBjb252ZW5pZW5j
ZToKKyAgICAgICAgICAgIFRoaXNBcmd1bWVudCA9IFNpemUsCisgICAgICAgICAgICBGaXJzdEFy
Z3VtZW50LAorICAgICAgICB9OworICAgIH07CisKICAgICAvLyBSZXByZXNlbnRzIHRoZSBjdXJy
ZW50IHN0YXRlIG9mIHNjcmlwdCBleGVjdXRpb24uCiAgICAgLy8gUGFzc2VkIGFzIHRoZSBmaXJz
dCBhcmd1bWVudCB0byBtb3N0IGZ1bmN0aW9ucy4KICAgICBjbGFzcyBFeGVjU3RhdGUgOiBwcml2
YXRlIFJlZ2lzdGVyIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEpTVmFsdWUgY2FsbGVlQXNWYWx1
ZSgpIGNvbnN0IHsgcmV0dXJuIHRoaXNbSlNTdGFjazo6Q2FsbGVlXS5qc1ZhbHVlKCk7IH0KLSAg
ICAgICAgSlNPYmplY3QqIGNhbGxlZSgpIGNvbnN0IHsgcmV0dXJuIHRoaXNbSlNTdGFjazo6Q2Fs
bGVlXS5vYmplY3QoKTsgfQotICAgICAgICBTVVBQUkVTU19BU0FOIEpTVmFsdWUgdW5zYWZlQ2Fs
bGVlKCkgY29uc3QgeyByZXR1cm4gdGhpc1tKU1N0YWNrOjpDYWxsZWVdLmFzYW5VbnNhZmVKU1Zh
bHVlKCk7IH0KLSAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2soKSBjb25zdCB7IHJldHVybiB0
aGlzW0pTU3RhY2s6OkNvZGVCbG9ja10uUmVnaXN0ZXI6OmNvZGVCbG9jaygpOyB9Ci0gICAgICAg
IFNVUFBSRVNTX0FTQU4gQ29kZUJsb2NrKiB1bnNhZmVDb2RlQmxvY2soKSBjb25zdCB7IHJldHVy
biB0aGlzW0pTU3RhY2s6OkNvZGVCbG9ja10uUmVnaXN0ZXI6OmFzYW5VbnNhZmVDb2RlQmxvY2so
KTsgfQorICAgICAgICBKU1ZhbHVlIGNhbGxlZUFzVmFsdWUoKSBjb25zdCB7IHJldHVybiB0aGlz
W0NhbGxGcmFtZUhlYWRlcjo6Q2FsbGVlXS5qc1ZhbHVlKCk7IH0KKyAgICAgICAgSlNPYmplY3Qq
IGNhbGxlZSgpIGNvbnN0IHsgcmV0dXJuIHRoaXNbQ2FsbEZyYW1lSGVhZGVyOjpDYWxsZWVdLm9i
amVjdCgpOyB9CisgICAgICAgIFNVUFBSRVNTX0FTQU4gSlNWYWx1ZSB1bnNhZmVDYWxsZWUoKSBj
b25zdCB7IHJldHVybiB0aGlzW0NhbGxGcmFtZUhlYWRlcjo6Q2FsbGVlXS5hc2FuVW5zYWZlSlNW
YWx1ZSgpOyB9CisgICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrKCkgY29uc3QgeyByZXR1cm4g
dGhpc1tDYWxsRnJhbWVIZWFkZXI6OkNvZGVCbG9ja10uUmVnaXN0ZXI6OmNvZGVCbG9jaygpOyB9
CisgICAgICAgIFNVUFBSRVNTX0FTQU4gQ29kZUJsb2NrKiB1bnNhZmVDb2RlQmxvY2soKSBjb25z
dCB7IHJldHVybiB0aGlzW0NhbGxGcmFtZUhlYWRlcjo6Q29kZUJsb2NrXS5SZWdpc3Rlcjo6YXNh
blVuc2FmZUNvZGVCbG9jaygpOyB9CiAgICAgICAgIEpTU2NvcGUqIHNjb3BlKGludCBzY29wZVJl
Z2lzdGVyT2Zmc2V0KSBjb25zdAogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQodGhpc1tz
Y29wZVJlZ2lzdGVyT2Zmc2V0XS5SZWdpc3Rlcjo6c2NvcGUoKSk7CkBAIC0xNjQsMTcgKzE4OCw3
IEBAIG5hbWVzcGFjZSBKU0MgIHsKICAgICAgICAgdm9pZCBzZXRDYWxsZXJGcmFtZShDYWxsRnJh
bWUqIGZyYW1lKSB7IGNhbGxlckZyYW1lQW5kUEMoKS5jYWxsZXJGcmFtZSA9IGZyYW1lOyB9CiAg
ICAgICAgIHZvaWQgc2V0U2NvcGUoaW50IHNjb3BlUmVnaXN0ZXJPZmZzZXQsIEpTU2NvcGUqIHNj
b3BlKSB7IHN0YXRpY19jYXN0PFJlZ2lzdGVyKj4odGhpcylbc2NvcGVSZWdpc3Rlck9mZnNldF0g
PSBzY29wZTsgfQogCi0gICAgICAgIEFMV0FZU19JTkxJTkUgdm9pZCBpbml0KENvZGVCbG9jayog
Y29kZUJsb2NrLCBJbnN0cnVjdGlvbiogdlBDLAotICAgICAgICAgICAgQ2FsbEZyYW1lKiBjYWxs
ZXJGcmFtZSwgaW50IGFyZ2MsIEpTT2JqZWN0KiBjYWxsZWUpIAotICAgICAgICB7IAotICAgICAg
ICAgICAgQVNTRVJUKGNhbGxlckZyYW1lID09IG5vQ2FsbGVyKCkgfHwgY2FsbGVyRnJhbWUtPnN0
YWNrKCktPmNvbnRhaW5zQWRkcmVzcyh0aGlzKSk7IAotCi0gICAgICAgICAgICBzZXRDb2RlQmxv
Y2soY29kZUJsb2NrKTsgCi0gICAgICAgICAgICBzZXRDYWxsZXJGcmFtZShjYWxsZXJGcmFtZSk7
IAotICAgICAgICAgICAgc2V0UmV0dXJuUEModlBDKTsgLy8gVGhpcyBpcyBlaXRoZXIgYW4gSW5z
dHJ1Y3Rpb24qIG9yIGEgcG9pbnRlciBpbnRvIEpJVCBnZW5lcmF0ZWQgY29kZSBzdG9yZWQgYXMg
YW4gSW5zdHJ1Y3Rpb24qLiAKLSAgICAgICAgICAgIHNldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzKGFyZ2MpOyAvLyBvcmlnaW5hbCBhcmd1bWVudCBjb3VudCAoZm9yIHRoZSBzYWtlIG9mIHRo
ZSAiYXJndW1lbnRzIiBvYmplY3QpIAotICAgICAgICAgICAgc2V0Q2FsbGVlKGNhbGxlZSk7IAot
ICAgICAgICB9CisgICAgICAgIHN0YXRpYyB2b2lkIGluaXRHbG9iYWxFeGVjKEV4ZWNTdGF0ZSog
Z2xvYmFsRXhlYywgSlNDYWxsZWUqIGdsb2JhbENhbGxlZSk7CiAKICAgICAgICAgLy8gUmVhZCBh
IHJlZ2lzdGVyIGZyb20gdGhlIGNvZGVmcmFtZSAob3IgY29uc3RhbnQgZnJvbSB0aGUgQ29kZUJs
b2NrKS4KICAgICAgICAgUmVnaXN0ZXImIHIoaW50KTsKQEAgLTE4NSw5ICsxOTksOSBAQCBuYW1l
c3BhY2UgSlNDICB7CiAKICAgICAgICAgLy8gQWNjZXNzIHRvIGFyZ3VtZW50cyBhcyBwYXNzZWQu
IChBZnRlciBjYXB0dXJlLCBhcmd1bWVudHMgbWF5IG1vdmUgdG8gYSBkaWZmZXJlbnQgbG9jYXRp
b24uKQogICAgICAgICBzaXplX3QgYXJndW1lbnRDb3VudCgpIGNvbnN0IHsgcmV0dXJuIGFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzKCkgLSAxOyB9Ci0gICAgICAgIHNpemVfdCBhcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcygpIGNvbnN0IHsgcmV0dXJuIHRoaXNbSlNTdGFjazo6QXJndW1lbnRD
b3VudF0ucGF5bG9hZCgpOyB9Ci0gICAgICAgIHN0YXRpYyBpbnQgYXJndW1lbnRPZmZzZXQoaW50
IGFyZ3VtZW50KSB7IHJldHVybiAoSlNTdGFjazo6Rmlyc3RBcmd1bWVudCArIGFyZ3VtZW50KTsg
fQotICAgICAgICBzdGF0aWMgaW50IGFyZ3VtZW50T2Zmc2V0SW5jbHVkaW5nVGhpcyhpbnQgYXJn
dW1lbnQpIHsgcmV0dXJuIChKU1N0YWNrOjpUaGlzQXJndW1lbnQgKyBhcmd1bWVudCk7IH0KKyAg
ICAgICAgc2l6ZV90IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCkgY29uc3QgeyByZXR1cm4g
dGhpc1tDYWxsRnJhbWVIZWFkZXI6OkFyZ3VtZW50Q291bnRdLnBheWxvYWQoKTsgfQorICAgICAg
ICBzdGF0aWMgaW50IGFyZ3VtZW50T2Zmc2V0KGludCBhcmd1bWVudCkgeyByZXR1cm4gKENhbGxG
cmFtZUhlYWRlcjo6Rmlyc3RBcmd1bWVudCArIGFyZ3VtZW50KTsgfQorICAgICAgICBzdGF0aWMg
aW50IGFyZ3VtZW50T2Zmc2V0SW5jbHVkaW5nVGhpcyhpbnQgYXJndW1lbnQpIHsgcmV0dXJuIChD
YWxsRnJhbWVIZWFkZXI6OlRoaXNBcmd1bWVudCArIGFyZ3VtZW50KTsgfQogCiAgICAgICAgIC8v
IEluIHRoZSBmb2xsb3dpbmcgKGFyZ3VtZW50KCkgYW5kIHNldEFyZ3VtZW50KCkpLCB0aGUgJ2Fy
Z3VtZW50JwogICAgICAgICAvLyBwYXJhbWV0ZXIgaXMgdGhlIGluZGV4IG9mIHRoZSBhcmd1bWVu
dHMgb2YgdGhlIHRhcmdldCBmdW5jdGlvbiBvZgpAQCAtMjMzLDEzICsyNDcsMTMgQEAgbmFtZXNw
YWNlIEpTQyAgewogCiAgICAgICAgIEpTVmFsdWUgYXJndW1lbnRBZnRlckNhcHR1cmUoc2l6ZV90
IGFyZ3VtZW50KTsKIAotICAgICAgICBzdGF0aWMgaW50IG9mZnNldEZvcihzaXplX3QgYXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMpIHsgcmV0dXJuIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
ICsgSlNTdGFjazo6VGhpc0FyZ3VtZW50IC0gMTsgfQorICAgICAgICBzdGF0aWMgaW50IG9mZnNl
dEZvcihzaXplX3QgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpIHsgcmV0dXJuIGFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzICsgQ2FsbEZyYW1lSGVhZGVyOjpUaGlzQXJndW1lbnQgLSAxOyB9
CiAKICAgICAgICAgc3RhdGljIENhbGxGcmFtZSogbm9DYWxsZXIoKSB7IHJldHVybiAwOyB9CiAK
LSAgICAgICAgdm9pZCBzZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyhpbnQgY291bnQpIHsg
c3RhdGljX2Nhc3Q8UmVnaXN0ZXIqPih0aGlzKVtKU1N0YWNrOjpBcmd1bWVudENvdW50XS5wYXls
b2FkKCkgPSBjb3VudDsgfQotICAgICAgICB2b2lkIHNldENhbGxlZShKU09iamVjdCogY2FsbGVl
KSB7IHN0YXRpY19jYXN0PFJlZ2lzdGVyKj4odGhpcylbSlNTdGFjazo6Q2FsbGVlXSA9IGNhbGxl
ZTsgfQotICAgICAgICB2b2lkIHNldENvZGVCbG9jayhDb2RlQmxvY2sqIGNvZGVCbG9jaykgeyBz
dGF0aWNfY2FzdDxSZWdpc3Rlcio+KHRoaXMpW0pTU3RhY2s6OkNvZGVCbG9ja10gPSBjb2RlQmxv
Y2s7IH0KKyAgICAgICAgdm9pZCBzZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyhpbnQgY291
bnQpIHsgc3RhdGljX2Nhc3Q8UmVnaXN0ZXIqPih0aGlzKVtDYWxsRnJhbWVIZWFkZXI6OkFyZ3Vt
ZW50Q291bnRdLnBheWxvYWQoKSA9IGNvdW50OyB9CisgICAgICAgIHZvaWQgc2V0Q2FsbGVlKEpT
T2JqZWN0KiBjYWxsZWUpIHsgc3RhdGljX2Nhc3Q8UmVnaXN0ZXIqPih0aGlzKVtDYWxsRnJhbWVI
ZWFkZXI6OkNhbGxlZV0gPSBjYWxsZWU7IH0KKyAgICAgICAgdm9pZCBzZXRDb2RlQmxvY2soQ29k
ZUJsb2NrKiBjb2RlQmxvY2spIHsgc3RhdGljX2Nhc3Q8UmVnaXN0ZXIqPih0aGlzKVtDYWxsRnJh
bWVIZWFkZXI6OkNvZGVCbG9ja10gPSBjb2RlQmxvY2s7IH0KICAgICAgICAgdm9pZCBzZXRSZXR1
cm5QQyh2b2lkKiB2YWx1ZSkgeyBjYWxsZXJGcmFtZUFuZFBDKCkucGMgPSByZWludGVycHJldF9j
YXN0PEluc3RydWN0aW9uKj4odmFsdWUpOyB9CiAKICAgICAgICAgU3RyaW5nIGZyaWVuZGx5RnVu
Y3Rpb25OYW1lKCk7CkBAIC0yNzksMTAgKzI5MywxMCBAQCBuYW1lc3BhY2UgSlNDICB7CiAgICAg
ICAgICAgICBpbnQgb2Zmc2V0ID0gcmVnIC0gdGhpcy0+cmVnaXN0ZXJzKCk7CiAKICAgICAgICAg
ICAgIC8vIFRoZSBvZmZzZXQgaXMgZGVmaW5lZCAoYmFzZWQgb24gYXJndW1lbnRPZmZzZXQoKSkg
dG8gYmU6Ci0gICAgICAgICAgICAvLyAgICAgICBvZmZzZXQgPSBKU1N0YWNrOjpGaXJzdEFyZ3Vt
ZW50IC0gYXJnSW5kZXg7CisgICAgICAgICAgICAvLyAgICAgICBvZmZzZXQgPSBDYWxsRnJhbWVI
ZWFkZXI6OkZpcnN0QXJndW1lbnQgLSBhcmdJbmRleDsKICAgICAgICAgICAgIC8vIEhlbmNlOgot
ICAgICAgICAgICAgLy8gICAgICAgYXJnSW5kZXggPSBKU1N0YWNrOjpGaXJzdEFyZ3VtZW50IC0g
b2Zmc2V0OwotICAgICAgICAgICAgc2l6ZV90IGFyZ0luZGV4ID0gb2Zmc2V0IC0gSlNTdGFjazo6
Rmlyc3RBcmd1bWVudDsKKyAgICAgICAgICAgIC8vICAgICAgIGFyZ0luZGV4ID0gQ2FsbEZyYW1l
SGVhZGVyOjpGaXJzdEFyZ3VtZW50IC0gb2Zmc2V0OworICAgICAgICAgICAgc2l6ZV90IGFyZ0lu
ZGV4ID0gb2Zmc2V0IC0gQ2FsbEZyYW1lSGVhZGVyOjpGaXJzdEFyZ3VtZW50OwogICAgICAgICAg
ICAgcmV0dXJuIGFyZ0luZGV4OwogICAgICAgICB9CiAKQEAgLTI5MCw3ICszMDQsOSBAQCBuYW1l
c3BhY2UgSlNDICB7CiAgICAgICAgIGNvbnN0IENhbGxlckZyYW1lQW5kUEMmIGNhbGxlckZyYW1l
QW5kUEMoKSBjb25zdCB7IHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDxjb25zdCBDYWxsZXJGcmFt
ZUFuZFBDKj4odGhpcyk7IH0KICAgICAgICAgU1VQUFJFU1NfQVNBTiBjb25zdCBDYWxsZXJGcmFt
ZUFuZFBDJiB1bnNhZmVDYWxsZXJGcmFtZUFuZFBDKCkgY29uc3QgeyByZXR1cm4gKnJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgQ2FsbGVyRnJhbWVBbmRQQyo+KHRoaXMpOyB9CiAKKyNpZiAhRU5BQkxF
KEpJVCkKICAgICAgICAgZnJpZW5kIGNsYXNzIEpTU3RhY2s7CisjZW5kaWYKICAgICB9OwogCiB9
IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9JbnRlcnByZXRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
dGVycHJldGVyL0ludGVycHJldGVyLmNwcAkocmV2aXNpb24gMjAyOTU0KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDAxLDggKzQwMSw4IEBAIHZvaWQgSW50ZXJwcmV0ZXI6OmR1bXBSZWdpc3RlcnMoQ2FsbEZy
YW0KICAgICBjb25zdCBSZWdpc3RlciogaXQ7CiAgICAgY29uc3QgUmVnaXN0ZXIqIGVuZDsKIAot
ICAgIGl0ID0gY2FsbEZyYW1lLT5yZWdpc3RlcnMoKSArIEpTU3RhY2s6OlRoaXNBcmd1bWVudCAr
IGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpOwotICAgIGVuZCA9IGNhbGxGcmFtZS0+cmVnaXN0
ZXJzKCkgKyBKU1N0YWNrOjpUaGlzQXJndW1lbnQgLSAxOworICAgIGl0ID0gY2FsbEZyYW1lLT5y
ZWdpc3RlcnMoKSArIENhbGxGcmFtZUhlYWRlcjo6VGhpc0FyZ3VtZW50ICsgY2FsbEZyYW1lLT5h
cmd1bWVudENvdW50KCk7CisgICAgZW5kID0gY2FsbEZyYW1lLT5yZWdpc3RlcnMoKSArIENhbGxG
cmFtZUhlYWRlcjo6VGhpc0FyZ3VtZW50IC0gMTsKICAgICB3aGlsZSAoaXQgPiBlbmQpIHsKICAg
ICAgICAgSlNWYWx1ZSB2ID0gaXQtPmpzVmFsdWUoKTsKICAgICAgICAgaW50IHJlZ2lzdGVyTnVt
YmVyID0gaXQgLSBjYWxsRnJhbWUtPnJlZ2lzdGVycygpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgJKHJldmlzaW9uIDIwMjk1NCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNjIsMTIgKzI2MiwxMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
Ly8gYWxpZ25lZCBzaXplLiBBbGlnbiB0aGUgc2l6ZSBoZXJlLgogICAgICAgICBhcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcyA9IFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZigKICAgICAgICAgICAg
IHN0YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCksCi0gICAgICAgICAgICBhcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpcyArIEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlclNpemUpIC0gSlNTdGFjazo6Q2Fs
bEZyYW1lSGVhZGVyU2l6ZTsKKyAgICAgICAgICAgIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
ICsgQ2FsbEZyYW1lSGVhZGVyOjpTaXplKSAtIENhbGxGcmFtZUhlYWRlcjo6U2l6ZTsKIAogICAg
ICAgICAvLyBBbGlnbiB0aGUgZnJhbWUgb2Zmc2V0IGhlcmUuCiAgICAgICAgIHVuc2lnbmVkIHBh
ZGRlZENhbGxlZUZyYW1lT2Zmc2V0ID0gV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mKAogICAgICAg
ICAgICAgc3RhY2tBbGlnbm1lbnRSZWdpc3RlcnMoKSwKLSAgICAgICAgICAgIG51bVVzZWRTdGFj
a1Nsb3RzICsgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgKyBKU1N0YWNrOjpDYWxsRnJhbWVI
ZWFkZXJTaXplKTsKKyAgICAgICAgICAgIG51bVVzZWRTdGFja1Nsb3RzICsgYXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMgKyBDYWxsRnJhbWVIZWFkZXI6OlNpemUpOwogICAgICAgICByZXR1cm4g
Q2FsbEZyYW1lOjpjcmVhdGUoY2FsbEZyYW1lLT5yZWdpc3RlcnMoKSAtIHBhZGRlZENhbGxlZUZy
YW1lT2Zmc2V0KTsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9KU1N0YWNrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVy
cHJldGVyL0pTU3RhY2suaAkocmV2aXNpb24gMjAyOTU0KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2ludGVycHJldGVyL0pTU3RhY2suaAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNiBA
QAogI2lmbmRlZiBKU1N0YWNrX2gKICNkZWZpbmUgSlNTdGFja19oCiAKLSNpbmNsdWRlICJFeGVj
dXRhYmxlQWxsb2NhdG9yLmgiCiAjaW5jbHVkZSAiUmVnaXN0ZXIuaCIKICNpbmNsdWRlIDx3dGYv
Tm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvUGFnZVJlc2VydmF0aW9uLmg+CkBAIC0zOSwz
NCArMzgsMTMgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBDb2RlQmxvY2tTZXQ7CiAg
ICAgY2xhc3MgQ29uc2VydmF0aXZlUm9vdHM7Ci0gICAgY2xhc3MgRXhlY1N0YXRlOwogICAgIGNs
YXNzIEpJVFN0dWJSb3V0aW5lU2V0OwogICAgIGNsYXNzIFZNOwogICAgIGNsYXNzIExMSW50T2Zm
c2V0c0V4dHJhY3RvcjsKIAotICAgIHN0cnVjdCBJbnN0cnVjdGlvbjsKLSAgICB0eXBlZGVmIEV4
ZWNTdGF0ZSBDYWxsRnJhbWU7Ci0KLSAgICBzdHJ1Y3QgQ2FsbGVyRnJhbWVBbmRQQyB7Ci0gICAg
ICAgIENhbGxGcmFtZSogY2FsbGVyRnJhbWU7Ci0gICAgICAgIEluc3RydWN0aW9uKiBwYzsKLSAg
ICB9OwotCiAgICAgY2xhc3MgSlNTdGFjayB7CiAgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KEpTU3RhY2spOwogICAgIHB1YmxpYzoKLSAgICAgICAgZW51bSBDYWxsRnJhbWVIZWFkZXJFbnRy
eSB7Ci0gICAgICAgICAgICBDYWxsZXJGcmFtZUFuZFBDU2l6ZSA9IHNpemVvZihDYWxsZXJGcmFt
ZUFuZFBDKSAvIHNpemVvZihSZWdpc3RlciksCi0gICAgICAgICAgICBDb2RlQmxvY2sgPSBDYWxs
ZXJGcmFtZUFuZFBDU2l6ZSwKLSAgICAgICAgICAgIENhbGxlZSwKLSAgICAgICAgICAgIEFyZ3Vt
ZW50Q291bnQsCi0gICAgICAgICAgICBDYWxsRnJhbWVIZWFkZXJTaXplLAotCi0gICAgICAgICAg
ICAvLyBUaGUgZm9sbG93aW5nIGVudHJpZXMgYXJlIG5vdCBwYXJ0IG9mIHRoZSBDYWxsRnJhbWVI
ZWFkZXIgYnV0IGFyZSBwcm92aWRlZCBoZXJlIGFzIGEgY29udmVuaWVuY2U6Ci0gICAgICAgICAg
ICBUaGlzQXJndW1lbnQgPSBDYWxsRnJhbWVIZWFkZXJTaXplLAotICAgICAgICAgICAgRmlyc3RB
cmd1bWVudCwKLSAgICAgICAgfTsKLQogICAgICAgICAvLyBBbGxvdyA4ayBvZiBleGNlc3MgcmVn
aXN0ZXJzIGJlZm9yZSB3ZSBzdGFydCB0cnlpbmcgdG8gcmVhcCB0aGUgc3RhY2sKICAgICAgICAg
c3RhdGljIGNvbnN0IHB0cmRpZmZfdCBtYXhFeGNlc3NDYXBhY2l0eSA9IDggKiAxMDI0OwogCkBA
IC03NywxMCArNTUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCBjb250YWluc0Fk
ZHJlc3MoUmVnaXN0ZXIqIGFkZHJlc3MpIHsgcmV0dXJuIChsb3dBZGRyZXNzKCkgPD0gYWRkcmVz
cyAmJiBhZGRyZXNzIDwgaGlnaEFkZHJlc3MoKSk7IH0KICAgICAgICAgc3RhdGljIHNpemVfdCBj
b21taXR0ZWRCeXRlQ291bnQoKTsKIAotI2lmIEVOQUJMRShKSVQpCi0gICAgICAgIHZvaWQgZ2F0
aGVyQ29uc2VydmF0aXZlUm9vdHMoQ29uc2VydmF0aXZlUm9vdHMmLCBKSVRTdHViUm91dGluZVNl
dCYsIENvZGVCbG9ja1NldCYpIHsgfQotICAgICAgICB2b2lkIHNhbml0aXplU3RhY2soKSB7IH0K
LSNlbHNlCisjaWYgIUVOQUJMRShKSVQpCiAgICAgICAgIH5KU1N0YWNrKCk7CiAKICAgICAgICAg
dm9pZCBnYXRoZXJDb25zZXJ2YXRpdmVSb290cyhDb25zZXJ2YXRpdmVSb290cyYsIEpJVFN0dWJS
b3V0aW5lU2V0JiwgQ29kZUJsb2NrU2V0Jik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0Fzc2VtYmx5SGVscGVycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCShyZXZpc2lvbiAyMDI5NTQpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI5Myw3ICsyOTMsNyBAQCB2b2lkIEFzc2VtYmx5SGVscGVyczo6aml0QXNzZXJ0SXNOdWxsKEdQ
CiAKIHZvaWQgQXNzZW1ibHlIZWxwZXJzOjpqaXRBc3NlcnRBcmd1bWVudENvdW50U2FuZSgpCiB7
Ci0gICAgSnVtcCBvayA9IGJyYW5jaDMyKEJlbG93LCBwYXlsb2FkRm9yKEpTU3RhY2s6OkFyZ3Vt
ZW50Q291bnQpLCBUcnVzdGVkSW1tMzIoMTAwMDAwMDApKTsKKyAgICBKdW1wIG9rID0gYnJhbmNo
MzIoQmVsb3csIHBheWxvYWRGb3IoQ2FsbEZyYW1lSGVhZGVyOjpBcmd1bWVudENvdW50KSwgVHJ1
c3RlZEltbTMyKDEwMDAwMDAwKSk7CiAgICAgYWJvcnRXaXRoUmVhc29uKEFISW5zYW5lQXJndW1l
bnRDb3VudCk7CiAgICAgb2subGluayh0aGlzKTsKIH0KQEAgLTU0NCw3ICs1NDQsNyBAQCB2b2lk
IEFzc2VtYmx5SGVscGVyczo6ZW1pdFJhbmRvbVRodW5rKEpTCiAKIHZvaWQgQXNzZW1ibHlIZWxw
ZXJzOjplbWl0UmFuZG9tVGh1bmsoR1BSUmVnIHNjcmF0Y2gwLCBHUFJSZWcgc2NyYXRjaDEsIEdQ
UlJlZyBzY3JhdGNoMiwgR1BSUmVnIHNjcmF0Y2gzLCBGUFJSZWcgcmVzdWx0KQogewotICAgIGVt
aXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyUHRyKEpTU3RhY2s6OkNhbGxlZSwgc2NyYXRjaDMpOwor
ICAgIGVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyUHRyKENhbGxGcmFtZUhlYWRlcjo6Q2FsbGVl
LCBzY3JhdGNoMyk7CiAgICAgZW1pdExvYWRTdHJ1Y3R1cmUoc2NyYXRjaDMsIHNjcmF0Y2gzLCBz
Y3JhdGNoMCk7CiAgICAgbG9hZFB0cihBZGRyZXNzKHNjcmF0Y2gzLCBTdHJ1Y3R1cmU6Omdsb2Jh
bE9iamVjdE9mZnNldCgpKSwgc2NyYXRjaDMpOwogICAgIC8vIE5vdywgc2NyYXRjaDMgaG9sZHMg
SlNHbG9iYWxPYmplY3QqLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJs
eUhlbHBlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2Vt
Ymx5SGVscGVycy5oCShyZXZpc2lvbiAyMDI5NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0Fzc2VtYmx5SGVscGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC01NjAsMjYgKzU2MCwyNiBA
QCBwdWJsaWM6CiAgICAgfQogI2VuZGlmCiAKLSAgICB2b2lkIGVtaXRHZXRGcm9tQ2FsbEZyYW1l
SGVhZGVyUHRyKEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlckVudHJ5IGVudHJ5LCBHUFJSZWcgdG8s
IEdQUlJlZyBmcm9tID0gR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpCisgICAgdm9pZCBlbWl0
R2V0RnJvbUNhbGxGcmFtZUhlYWRlclB0cihDYWxsRnJhbWVIZWFkZXI6OkVudHJ5IGVudHJ5LCBH
UFJSZWcgdG8sIEdQUlJlZyBmcm9tID0gR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpCiAgICAg
ewogICAgICAgICBsb2FkUHRyKEFkZHJlc3MoZnJvbSwgZW50cnkgKiBzaXplb2YoUmVnaXN0ZXIp
KSwgdG8pOwogICAgIH0KLSAgICB2b2lkIGVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyMzIoSlNT
dGFjazo6Q2FsbEZyYW1lSGVhZGVyRW50cnkgZW50cnksIEdQUlJlZyB0bywgR1BSUmVnIGZyb20g
PSBHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlcikKKyAgICB2b2lkIGVtaXRHZXRGcm9tQ2FsbEZy
YW1lSGVhZGVyMzIoQ2FsbEZyYW1lSGVhZGVyOjpFbnRyeSBlbnRyeSwgR1BSUmVnIHRvLCBHUFJS
ZWcgZnJvbSA9IEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyKQogICAgIHsKICAgICAgICAgbG9h
ZDMyKEFkZHJlc3MoZnJvbSwgZW50cnkgKiBzaXplb2YoUmVnaXN0ZXIpKSwgdG8pOwogICAgIH0K
ICNpZiBVU0UoSlNWQUxVRTY0KQotICAgIHZvaWQgZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXI2
NChKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJFbnRyeSBlbnRyeSwgR1BSUmVnIHRvLCBHUFJSZWcg
ZnJvbSA9IEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyKQorICAgIHZvaWQgZW1pdEdldEZyb21D
YWxsRnJhbWVIZWFkZXI2NChDYWxsRnJhbWVIZWFkZXI6OkVudHJ5IGVudHJ5LCBHUFJSZWcgdG8s
IEdQUlJlZyBmcm9tID0gR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpCiAgICAgewogICAgICAg
ICBsb2FkNjQoQWRkcmVzcyhmcm9tLCBlbnRyeSAqIHNpemVvZihSZWdpc3RlcikpLCB0byk7CiAg
ICAgfQogI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCi0gICAgdm9pZCBlbWl0UHV0VG9DYWxsRnJh
bWVIZWFkZXIoR1BSUmVnIGZyb20sIEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlckVudHJ5IGVudHJ5
KQorICAgIHZvaWQgZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVyKEdQUlJlZyBmcm9tLCBDYWxsRnJh
bWVIZWFkZXI6OkVudHJ5IGVudHJ5KQogICAgIHsKICAgICAgICAgc3RvcmVQdHIoZnJvbSwgQWRk
cmVzcyhHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgZW50cnkgKiBzaXplb2YoUmVnaXN0ZXIp
KSk7CiAgICAgfQogCi0gICAgdm9pZCBlbWl0UHV0VG9DYWxsRnJhbWVIZWFkZXIodm9pZCogdmFs
dWUsIEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlckVudHJ5IGVudHJ5KQorICAgIHZvaWQgZW1pdFB1
dFRvQ2FsbEZyYW1lSGVhZGVyKHZvaWQqIHZhbHVlLCBDYWxsRnJhbWVIZWFkZXI6OkVudHJ5IGVu
dHJ5KQogICAgIHsKICAgICAgICAgc3RvcmVQdHIoVHJ1c3RlZEltbVB0cih2YWx1ZSksIEFkZHJl
c3MoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIGVudHJ5ICogc2l6ZW9mKFJlZ2lzdGVyKSkp
OwogICAgIH0KQEAgLTYwOSwxNyArNjA5LDE3IEBAIHB1YmxpYzoKICAgICAvLyBjYWxsZXIncyBm
cmFtZSBwb2ludGVyLiBPbiBzb21lIHBsYXRmb3JtcywgdGhlIGNhbGxlZSBpcyByZXNwb25zaWJs
ZSBmb3IgcHVzaGluZyB0aGUKICAgICAvLyAibGluayByZWdpc3RlciIgY29udGFpbmluZyB0aGUg
cmV0dXJuIGFkZHJlc3MgaW4gdGhlIGZ1bmN0aW9uIHByb2xvZ3VlLgogI2lmIFVTRShKU1ZBTFVF
NjQpCi0gICAgdm9pZCBlbWl0UHV0VG9DYWxsRnJhbWVIZWFkZXJCZWZvcmVQcm9sb2d1ZShHUFJS
ZWcgZnJvbSwgSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyRW50cnkgZW50cnkpCisgICAgdm9pZCBl
bWl0UHV0VG9DYWxsRnJhbWVIZWFkZXJCZWZvcmVQcm9sb2d1ZShHUFJSZWcgZnJvbSwgQ2FsbEZy
YW1lSGVhZGVyOjpFbnRyeSBlbnRyeSkKICAgICB7CiAgICAgICAgIHN0b3JlUHRyKGZyb20sIEFk
ZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0ZXIsIGVudHJ5ICogc3RhdGljX2Nhc3Q8cHRyZGlmZl90
PihzaXplb2YoUmVnaXN0ZXIpKSAtIHByb2xvZ3VlU3RhY2tQb2ludGVyRGVsdGEoKSkpOwogICAg
IH0KICNlbHNlCi0gICAgdm9pZCBlbWl0UHV0UGF5bG9hZFRvQ2FsbEZyYW1lSGVhZGVyQmVmb3Jl
UHJvbG9ndWUoR1BSUmVnIGZyb20sIEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlckVudHJ5IGVudHJ5
KQorICAgIHZvaWQgZW1pdFB1dFBheWxvYWRUb0NhbGxGcmFtZUhlYWRlckJlZm9yZVByb2xvZ3Vl
KEdQUlJlZyBmcm9tLCBDYWxsRnJhbWVIZWFkZXI6OkVudHJ5IGVudHJ5KQogICAgIHsKICAgICAg
ICAgc3RvcmVQdHIoZnJvbSwgQWRkcmVzcyhzdGFja1BvaW50ZXJSZWdpc3RlciwgZW50cnkgKiBz
dGF0aWNfY2FzdDxwdHJkaWZmX3Q+KHNpemVvZihSZWdpc3RlcikpIC0gcHJvbG9ndWVTdGFja1Bv
aW50ZXJEZWx0YSgpICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFz
Qml0cy5wYXlsb2FkKSkpOwogICAgIH0KIAotICAgIHZvaWQgZW1pdFB1dFRhZ1RvQ2FsbEZyYW1l
SGVhZGVyQmVmb3JlUHJvbG9ndWUoVHJ1c3RlZEltbTMyIHRhZywgSlNTdGFjazo6Q2FsbEZyYW1l
SGVhZGVyRW50cnkgZW50cnkpCisgICAgdm9pZCBlbWl0UHV0VGFnVG9DYWxsRnJhbWVIZWFkZXJC
ZWZvcmVQcm9sb2d1ZShUcnVzdGVkSW1tMzIgdGFnLCBDYWxsRnJhbWVIZWFkZXI6OkVudHJ5IGVu
dHJ5KQogICAgIHsKICAgICAgICAgc3RvcmVQdHIodGFnLCBBZGRyZXNzKHN0YWNrUG9pbnRlclJl
Z2lzdGVyLCBlbnRyeSAqIHN0YXRpY19jYXN0PHB0cmRpZmZfdD4oc2l6ZW9mKFJlZ2lzdGVyKSkg
LSBwcm9sb2d1ZVN0YWNrUG9pbnRlckRlbHRhKCkgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZh
bHVlRGVzY3JpcHRvciwgYXNCaXRzLnRhZykpKTsKICAgICB9CkBAIC05MzMsOCArOTMzLDggQEAg
cHVibGljOgogICAgIC8vIEFjY2VzcyB0byBvdXIgZml4ZWQgY2FsbGVlIENhbGxGcmFtZS4KICAg
ICBzdGF0aWMgQWRkcmVzcyBjYWxsZWVGcmFtZVNsb3QoaW50IHNsb3QpCiAgICAgewotICAgICAg
ICBBU1NFUlQoc2xvdCA+PSBKU1N0YWNrOjpDYWxsZXJGcmFtZUFuZFBDU2l6ZSk7Ci0gICAgICAg
IHJldHVybiBBZGRyZXNzKHN0YWNrUG9pbnRlclJlZ2lzdGVyLCBzaXplb2YoUmVnaXN0ZXIpICog
KHNsb3QgLSBKU1N0YWNrOjpDYWxsZXJGcmFtZUFuZFBDU2l6ZSkpOworICAgICAgICBBU1NFUlQo
c2xvdCA+PSBDYWxsRnJhbWVIZWFkZXI6OkNhbGxlckZyYW1lQW5kUENTaXplKTsKKyAgICAgICAg
cmV0dXJuIEFkZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0ZXIsIHNpemVvZihSZWdpc3RlcikgKiAo
c2xvdCAtIENhbGxGcmFtZUhlYWRlcjo6Q2FsbGVyRnJhbWVBbmRQQ1NpemUpKTsKICAgICB9CiAK
ICAgICAvLyBBY2Nlc3MgdG8gb3VyIGZpeGVkIGNhbGxlZSBDYWxsRnJhbWUuCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuY3BwCShyZXZpc2lvbiAyMDI5NTQp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM3LDcgKzM3LDcgQEAgdm9pZCBDQ2FsbEhlbHBlcnM6OmxvZ1NoYWRvd0NoaWNr
ZW5Qcm9sbwogICAgIHN0b3JlUHRyKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBBZGRyZXNz
KHNoYWRvd1BhY2tldCwgT0JKRUNUX09GRlNFVE9GKFNoYWRvd0NoaWNrZW46OlBhY2tldCwgZnJh
bWUpKSk7CiAgICAgbG9hZFB0cihBZGRyZXNzKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBP
QkpFQ1RfT0ZGU0VUT0YoQ2FsbGVyRnJhbWVBbmRQQywgY2FsbGVyRnJhbWUpKSwgc2NyYXRjaDEp
OwogICAgIHN0b3JlUHRyKHNjcmF0Y2gxLCBBZGRyZXNzKHNoYWRvd1BhY2tldCwgT0JKRUNUX09G
RlNFVE9GKFNoYWRvd0NoaWNrZW46OlBhY2tldCwgY2FsbGVyRnJhbWUpKSk7Ci0gICAgbG9hZFB0
cihhZGRyZXNzRm9yKEpTU3RhY2s6OkNhbGxlZSksIHNjcmF0Y2gxKTsKKyAgICBsb2FkUHRyKGFk
ZHJlc3NGb3IoQ2FsbEZyYW1lSGVhZGVyOjpDYWxsZWUpLCBzY3JhdGNoMSk7CiAgICAgc3RvcmVQ
dHIoc2NyYXRjaDEsIEFkZHJlc3Moc2hhZG93UGFja2V0LCBPQkpFQ1RfT0ZGU0VUT0YoU2hhZG93
Q2hpY2tlbjo6UGFja2V0LCBjYWxsZWUpKSk7CiAgICAgc3RvcmVQdHIoc2NvcGUsIEFkZHJlc3Mo
c2hhZG93UGFja2V0LCBPQkpFQ1RfT0ZGU0VUT0YoU2hhZG93Q2hpY2tlbjo6UGFja2V0LCBzY29w
ZSkpKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaAko
cmV2aXNpb24gMjAyOTU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBl
cnMuaAkod29ya2luZyBjb3B5KQpAQCAtMjI3OCwxMyArMjI3OCwxMyBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICBHUFJSZWcgb2xkRnJhbWVTaXplR1BSID0gdGVtcDI7CiAgICAgICAgICAgICB7CiAg
ICAgICAgICAgICAgICAgR1BSUmVnIGFyZ0NvdW50R1BSID0gb2xkRnJhbWVTaXplR1BSOwotICAg
ICAgICAgICAgICAgIGxvYWQzMihBZGRyZXNzKGZyYW1lUG9pbnRlclJlZ2lzdGVyLCBKU1N0YWNr
OjpBcmd1bWVudENvdW50ICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSArIFBh
eWxvYWRPZmZzZXQpLCBhcmdDb3VudEdQUik7CisgICAgICAgICAgICAgICAgbG9hZDMyKEFkZHJl
c3MoZnJhbWVQb2ludGVyUmVnaXN0ZXIsIENhbGxGcmFtZUhlYWRlcjo6QXJndW1lbnRDb3VudCAq
IHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkgKyBQYXlsb2FkT2Zmc2V0KSwgYXJn
Q291bnRHUFIpOwogCiAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICBHUFJS
ZWcgbnVtUGFyYW1ldGVyc0dQUiA9IHRlbXAxOwogICAgICAgICAgICAgICAgICAgICB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICBHUFJSZWcgY29kZUJsb2NrR1BSID0gbnVtUGFyYW1ldGVyc0dQ
UjsKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRQdHIoQWRkcmVzcyhmcmFtZVBvaW50ZXJS
ZWdpc3RlciwgSlNTdGFjazo6Q29kZUJsb2NrICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVn
aXN0ZXIpKSksIGNvZGVCbG9ja0dQUik7CisgICAgICAgICAgICAgICAgICAgICAgICBsb2FkUHRy
KEFkZHJlc3MoZnJhbWVQb2ludGVyUmVnaXN0ZXIsIENhbGxGcmFtZUhlYWRlcjo6Q29kZUJsb2Nr
ICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSksIGNvZGVCbG9ja0dQUik7CiAg
ICAgICAgICAgICAgICAgICAgICAgICBsb2FkMzIoQWRkcmVzcyhjb2RlQmxvY2tHUFIsIENvZGVC
bG9jazo6b2Zmc2V0T2ZOdW1QYXJhbWV0ZXJzKCkpLCBudW1QYXJhbWV0ZXJzR1BSKTsKICAgICAg
ICAgICAgICAgICAgICAgfQogCkBAIC0yMjk0LDcgKzIyOTQsNyBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICAgICAgICAgIGFyZ3VtZW50Q291bnRXYXNOb3RGaXhlZFVwLmxpbmsodGhpcyk7CiAgICAg
ICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgYWRkMzIoVHJ1c3RlZEltbTMyKHN0YWNr
QWxpZ25tZW50UmVnaXN0ZXJzKCkgKyBKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJTaXplIC0gMSks
IGFyZ0NvdW50R1BSLCBvbGRGcmFtZVNpemVHUFIpOworICAgICAgICAgICAgICAgIGFkZDMyKFRy
dXN0ZWRJbW0zMihzdGFja0FsaWdubWVudFJlZ2lzdGVycygpICsgQ2FsbEZyYW1lSGVhZGVyOjpT
aXplIC0gMSksIGFyZ0NvdW50R1BSLCBvbGRGcmFtZVNpemVHUFIpOwogICAgICAgICAgICAgICAg
IGFuZDMyKFRydXN0ZWRJbW0zMigtc3RhY2tBbGlnbm1lbnRSZWdpc3RlcnMoKSksIG9sZEZyYW1l
U2l6ZUdQUik7CiAgICAgICAgICAgICAgICAgLy8gV2UgYXNzdW1lIDwgMl4yOCBhcmd1bWVudHMK
ICAgICAgICAgICAgICAgICBtdWwzMihUcnVzdGVkSW1tMzIoc2l6ZW9mKFJlZ2lzdGVyKSksIG9s
ZEZyYW1lU2l6ZUdQUiwgb2xkRnJhbWVTaXplR1BSKTsKQEAgLTIzMDcsOSArMjMwNyw5IEBAIHB1
YmxpYzoKICAgICAgICAgICAgIC8vIFRoZSBuZXcgZnJhbWUgc2l6ZSBpcyBqdXN0IHRoZSBudW1i
ZXIgb2YgYXJndW1lbnRzIHBsdXMgdGhlCiAgICAgICAgICAgICAvLyBmcmFtZSBoZWFkZXIgc2l6
ZSwgYWxpZ25lZAogICAgICAgICAgICAgQVNTRVJUKG5ld0ZyYW1lU2l6ZUdQUiAhPSBuZXdGcmFt
ZVBvaW50ZXIpOwotICAgICAgICAgICAgbG9hZDMyKEFkZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0
ZXIsIEpTU3RhY2s6OkFyZ3VtZW50Q291bnQgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdp
c3RlcikpICsgUGF5bG9hZE9mZnNldCAtIHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSksCisgICAg
ICAgICAgICBsb2FkMzIoQWRkcmVzcyhzdGFja1BvaW50ZXJSZWdpc3RlciwgQ2FsbEZyYW1lSGVh
ZGVyOjpBcmd1bWVudENvdW50ICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSAr
IFBheWxvYWRPZmZzZXQgLSBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykpLAogICAgICAgICAgICAg
ICAgIG5ld0ZyYW1lU2l6ZUdQUik7Ci0gICAgICAgICAgICBhZGQzMihUcnVzdGVkSW1tMzIoc3Rh
Y2tBbGlnbm1lbnRSZWdpc3RlcnMoKSArIEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlclNpemUgLSAx
KSwgbmV3RnJhbWVTaXplR1BSKTsKKyAgICAgICAgICAgIGFkZDMyKFRydXN0ZWRJbW0zMihzdGFj
a0FsaWdubWVudFJlZ2lzdGVycygpICsgQ2FsbEZyYW1lSGVhZGVyOjpTaXplIC0gMSksIG5ld0Zy
YW1lU2l6ZUdQUik7CiAgICAgICAgICAgICBhbmQzMihUcnVzdGVkSW1tMzIoLXN0YWNrQWxpZ25t
ZW50UmVnaXN0ZXJzKCkpLCBuZXdGcmFtZVNpemVHUFIpOwogICAgICAgICAgICAgLy8gV2UgYXNz
dW1lIDwgMl4yOCBhcmd1bWVudHMKICAgICAgICAgICAgIG11bDMyKFRydXN0ZWRJbW0zMihzaXpl
b2YoUmVnaXN0ZXIpKSwgbmV3RnJhbWVTaXplR1BSLCBuZXdGcmFtZVNpemVHUFIpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DYWxsRnJhbWVTaHVmZmxlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DYWxsRnJhbWVTaHVmZmxlci5jcHAJKHJl
dmlzaW9uIDIwMjk1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ2FsbEZyYW1lU2h1
ZmZsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiwxMSArMzYsMTEgQEAgbmFtZXNwYWNlIEpT
QyB7CiAKIENhbGxGcmFtZVNodWZmbGVyOjpDYWxsRnJhbWVTaHVmZmxlcihDQ2FsbEhlbHBlcnMm
IGppdCwgY29uc3QgQ2FsbEZyYW1lU2h1ZmZsZURhdGEmIGRhdGEpCiAgICAgOiBtX2ppdChqaXQp
Ci0gICAgLCBtX29sZEZyYW1lKGRhdGEubnVtTG9jYWxzICsgSlNTdGFjazo6Q2FsbGVyRnJhbWVB
bmRQQ1NpemUsIG51bGxwdHIpCi0gICAgLCBtX25ld0ZyYW1lKGRhdGEuYXJncy5zaXplKCkgKyBK
U1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJTaXplLCBudWxscHRyKQotICAgICwgbV9hbGlnbmVkT2xk
RnJhbWVTaXplKEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlclNpemUKKyAgICAsIG1fb2xkRnJhbWUo
ZGF0YS5udW1Mb2NhbHMgKyBDYWxsRnJhbWVIZWFkZXI6OkNhbGxlckZyYW1lQW5kUENTaXplLCBu
dWxscHRyKQorICAgICwgbV9uZXdGcmFtZShkYXRhLmFyZ3Muc2l6ZSgpICsgQ2FsbEZyYW1lSGVh
ZGVyOjpTaXplLCBudWxscHRyKQorICAgICwgbV9hbGlnbmVkT2xkRnJhbWVTaXplKENhbGxGcmFt
ZUhlYWRlcjo6U2l6ZQogICAgICAgICArIHJvdW5kQXJndW1lbnRDb3VudFRvQWxpZ25GcmFtZShq
aXQuY29kZUJsb2NrKCktPm51bVBhcmFtZXRlcnMoKSkpCi0gICAgLCBtX2FsaWduZWROZXdGcmFt
ZVNpemUoSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyU2l6ZQorICAgICwgbV9hbGlnbmVkTmV3RnJh
bWVTaXplKENhbGxGcmFtZUhlYWRlcjo6U2l6ZQogICAgICAgICArIHJvdW5kQXJndW1lbnRDb3Vu
dFRvQWxpZ25GcmFtZShkYXRhLmFyZ3Muc2l6ZSgpKSkKICAgICAsIG1fZnJhbWVEZWx0YShtX2Fs
aWduZWROZXdGcmFtZVNpemUgLSBtX2FsaWduZWRPbGRGcmFtZVNpemUpCiAgICAgLCBtX2xvY2tl
ZFJlZ2lzdGVycyhSZWdpc3RlclNldDo6YWxsUmVnaXN0ZXJzKCkpCkBAIC01NCw3ICs1NCw3IEBA
IENhbGxGcmFtZVNodWZmbGVyOjpDYWxsRnJhbWVTaHVmZmxlcihDQ2EKICAgICBtX2xvY2tlZFJl
Z2lzdGVycy5leGNsdWRlKFJlZ2lzdGVyU2V0Ojp2bUNhbGxlZVNhdmVSZWdpc3RlcnMoKSk7CiAK
ICAgICBBU1NFUlQoIWRhdGEuY2FsbGVlLmlzSW5KU1N0YWNrKCkgfHwgZGF0YS5jYWxsZWUudmly
dHVhbFJlZ2lzdGVyKCkuaXNMb2NhbCgpKTsKLSAgICBhZGROZXcoVmlydHVhbFJlZ2lzdGVyKEpT
U3RhY2s6OkNhbGxlZSksIGRhdGEuY2FsbGVlKTsKKyAgICBhZGROZXcoVmlydHVhbFJlZ2lzdGVy
KENhbGxGcmFtZUhlYWRlcjo6Q2FsbGVlKSwgZGF0YS5jYWxsZWUpOwogCiAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBkYXRhLmFyZ3Muc2l6ZSgpOyArK2kpIHsKICAgICAgICAgQVNTRVJUKCFk
YXRhLmFyZ3NbaV0uaXNJbkpTU3RhY2soKSB8fCBkYXRhLmFyZ3NbaV0udmlydHVhbFJlZ2lzdGVy
KCkuaXNMb2NhbCgpKTsKQEAgLTE0NSw3ICsxNDUsNyBAQCB2b2lkIENhbGxGcmFtZVNodWZmbGVy
OjpkdW1wKFByaW50U3RyZWFtCiAgICAgICAgICAgICAgICAgICAgIG91dC5wcmludGYoIiAlYyU4
cyA8LSAlMThzICVjICIsIGQsIHN0ci5kYXRhKCksCiAgICAgICAgICAgICAgICAgICAgICAgICBy
ZWNvdmVyeVN0ci5kYXRhKCksIGQpOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0g
ZWxzZSBpZiAobmV3UmVnID09IFZpcnR1YWxSZWdpc3RlciB7IEpTU3RhY2s6OkFyZ3VtZW50Q291
bnQgfSkKKyAgICAgICAgICAgIH0gZWxzZSBpZiAobmV3UmVnID09IFZpcnR1YWxSZWdpc3RlciB7
IENhbGxGcmFtZUhlYWRlcjo6QXJndW1lbnRDb3VudCB9KQogICAgICAgICAgICAgICAgIG91dC5w
cmludGYoIiAlYyU4cyA8LSAlMTh6dSAlYyAiLCBkLCBzdHIuZGF0YSgpLCBhcmdDb3VudCgpLCBk
KTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBvdXQucHJpbnRmKCIgJWMlMzBz
ICVjICIsIGQsICIiLCBkKTsKQEAgLTMyMyw3ICszMjMsNyBAQCB2b2lkIENhbGxGcmFtZVNodWZm
bGVyOjpleHRlbmRGcmFtZUlmTmVlCiAgICAgICAgIG1faml0LnN1YlB0cihNYWNyb0Fzc2VtYmxl
cjo6VHJ1c3RlZEltbTMyKGRlbHRhICogc2l6ZW9mKFJlZ2lzdGVyKSksIE1hY3JvQXNzZW1ibGVy
OjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7CiAKICAgICAgICAgaWYgKGlzU2xvd1BhdGgoKSkKLSAg
ICAgICAgICAgIG1fZnJhbWVEZWx0YSA9IG51bUxvY2FscygpICsgSlNTdGFjazo6Q2FsbGVyRnJh
bWVBbmRQQ1NpemU7CisgICAgICAgICAgICBtX2ZyYW1lRGVsdGEgPSBudW1Mb2NhbHMoKSArIENh
bGxGcmFtZUhlYWRlcjo6Q2FsbGVyRnJhbWVBbmRQQ1NpemU7CiAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgIG1fb2xkRnJhbWVPZmZzZXQgPSBudW1Mb2NhbHMoKTsKIApAQCAtMzM5LDkgKzMzOSw5
IEBAIHZvaWQgQ2FsbEZyYW1lU2h1ZmZsZXI6OnByZXBhcmVGb3JTbG93UGEKICAgICBBU1NFUlQo
aXNVbmRlY2lkZWQoKSk7CiAgICAgZW1pdERlbHRhQ2hlY2soKTsKIAotICAgIG1fZnJhbWVEZWx0
YSA9IG51bUxvY2FscygpICsgSlNTdGFjazo6Q2FsbGVyRnJhbWVBbmRQQ1NpemU7CisgICAgbV9m
cmFtZURlbHRhID0gbnVtTG9jYWxzKCkgKyBDYWxsRnJhbWVIZWFkZXI6OkNhbGxlckZyYW1lQW5k
UENTaXplOwogICAgIG1fbmV3RnJhbWVCYXNlID0gTWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRl
clJlZ2lzdGVyOwotICAgIG1fbmV3RnJhbWVPZmZzZXQgPSAtSlNTdGFjazo6Q2FsbGVyRnJhbWVB
bmRQQ1NpemU7CisgICAgbV9uZXdGcmFtZU9mZnNldCA9IC1DYWxsRnJhbWVIZWFkZXI6OkNhbGxl
ckZyYW1lQW5kUENTaXplOwogCiAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2coIlxu
XG5QcmVwYXJpbmcgZnJhbWUgZm9yIHNsb3cgcGF0aCBjYWxsOlxuIik7CkBAIC00MjMsMTEgKzQy
MywxMSBAQCB2b2lkIENhbGxGcmFtZVNodWZmbGVyOjpwcmVwYXJlRm9yVGFpbENhCiAgICAgLy8g
b2xkIGZyYW1lICh0YWtpbmcgaW50byBhY2NvdW50IGFuIGFyZ3VtZW50IGNvdW50IGhpZ2hlciB0
aGFuCiAgICAgLy8gdGhlIG51bWJlciBvZiBwYXJhbWV0ZXJzKSwgdGhlbiBzdWJzdHJhY3Rpbmcg
dG8gaXQgdGhlIGFsaWduZWQKICAgICAvLyBuZXcgZnJhbWUgc2l6ZSAoYWRqdXN0ZWQpLgotICAg
IG1faml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhHUFJJbmZvOjpjYWxsRnJhbWVS
ZWdpc3RlciwgSlNTdGFjazo6QXJndW1lbnRDb3VudCAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9m
KFJlZ2lzdGVyKSkgKyBQYXlsb2FkT2Zmc2V0KSwgbV9uZXdGcmFtZUJhc2UpOworICAgIG1faml0
LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rl
ciwgQ2FsbEZyYW1lSGVhZGVyOjpBcmd1bWVudENvdW50ICogc3RhdGljX2Nhc3Q8aW50PihzaXpl
b2YoUmVnaXN0ZXIpKSArIFBheWxvYWRPZmZzZXQpLCBtX25ld0ZyYW1lQmFzZSk7CiAgICAgTWFj
cm9Bc3NlbWJsZXI6Okp1bXAgYXJndW1lbnRDb3VudE9LID0KICAgICAgICAgbV9qaXQuYnJhbmNo
MzIoTWFjcm9Bc3NlbWJsZXI6OkJlbG93T3JFcXVhbCwgbV9uZXdGcmFtZUJhc2UsCiAgICAgICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKG1faml0LmNvZGVCbG9jaygpLT5udW1Q
YXJhbWV0ZXJzKCkpKTsKLSAgICBtX2ppdC5hZGQzMihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZElt
bTMyKHN0YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCkgLSAxICsgSlNTdGFjazo6Q2FsbEZyYW1lSGVh
ZGVyU2l6ZSksIG1fbmV3RnJhbWVCYXNlKTsKKyAgICBtX2ppdC5hZGQzMihNYWNyb0Fzc2VtYmxl
cjo6VHJ1c3RlZEltbTMyKHN0YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCkgLSAxICsgQ2FsbEZyYW1l
SGVhZGVyOjpTaXplKSwgbV9uZXdGcmFtZUJhc2UpOwogICAgIG1faml0LmFuZDMyKE1hY3JvQXNz
ZW1ibGVyOjpUcnVzdGVkSW1tMzIoLXN0YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCkpLCBtX25ld0Zy
YW1lQmFzZSk7CiAgICAgbV9qaXQubXVsMzIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihz
aXplb2YoUmVnaXN0ZXIpKSwgbV9uZXdGcmFtZUJhc2UsIG1fbmV3RnJhbWVCYXNlKTsKICAgICBN
YWNyb0Fzc2VtYmxlcjo6SnVtcCBkb25lID0gbV9qaXQuanVtcCgpOwpAQCAtNzQzLDExICs3NDMs
MTEgQEAgdm9pZCBDYWxsRnJhbWVTaHVmZmxlcjo6cHJlcGFyZUFueSgpCiAgICAgLy8gV2UgbmVl
ZCB0byBoYW5kbGUgNCkgZmlyc3QgYmVjYXVzZSBpdCBpbXBsaWVzIHJlbGVhc2luZwogICAgIC8v
IG1fbmV3RnJhbWVCYXNlLCB3aGljaCBjb3VsZCBiZSBhIHdhbnRlZCByZWdpc3Rlci4KICAgICBp
ZiAodmVyYm9zZSkKLSAgICAgICAgZGF0YUxvZygiICAgKiBTdG9yaW5nIHRoZSBhcmd1bWVudCBj
b3VudCBpbnRvICIsIFZpcnR1YWxSZWdpc3RlciB7IEpTU3RhY2s6OkFyZ3VtZW50Q291bnQgfSwg
IlxuIik7CisgICAgICAgIGRhdGFMb2coIiAgICogU3RvcmluZyB0aGUgYXJndW1lbnQgY291bnQg
aW50byAiLCBWaXJ0dWFsUmVnaXN0ZXIgeyBDYWxsRnJhbWVIZWFkZXI6OkFyZ3VtZW50Q291bnQg
fSwgIlxuIik7CiAgICAgbV9qaXQuc3RvcmUzMihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMy
KDApLAotICAgICAgICBhZGRyZXNzRm9yTmV3KFZpcnR1YWxSZWdpc3RlciB7IEpTU3RhY2s6OkFy
Z3VtZW50Q291bnQgfSkud2l0aE9mZnNldChUYWdPZmZzZXQpKTsKKyAgICAgICAgYWRkcmVzc0Zv
ck5ldyhWaXJ0dWFsUmVnaXN0ZXIgeyBDYWxsRnJhbWVIZWFkZXI6OkFyZ3VtZW50Q291bnQgfSku
d2l0aE9mZnNldChUYWdPZmZzZXQpKTsKICAgICBtX2ppdC5zdG9yZTMyKE1hY3JvQXNzZW1ibGVy
OjpUcnVzdGVkSW1tMzIoYXJnQ291bnQoKSksCi0gICAgICAgIGFkZHJlc3NGb3JOZXcoVmlydHVh
bFJlZ2lzdGVyIHsgSlNTdGFjazo6QXJndW1lbnRDb3VudCB9KS53aXRoT2Zmc2V0KFBheWxvYWRP
ZmZzZXQpKTsKKyAgICAgICAgYWRkcmVzc0Zvck5ldyhWaXJ0dWFsUmVnaXN0ZXIgeyBDYWxsRnJh
bWVIZWFkZXI6OkFyZ3VtZW50Q291bnQgfSkud2l0aE9mZnNldChQYXlsb2FkT2Zmc2V0KSk7CiAK
ICAgICBpZiAoIWlzU2xvd1BhdGgoKSkgewogICAgICAgICBBU1NFUlQobV9uZXdGcmFtZUJhc2Ug
IT0gTWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvQ2FsbEZyYW1lU2h1ZmZsZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0NhbGxGcmFtZVNodWZmbGVyLmgJKHJldmlzaW9uIDIwMjk1
NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ2FsbEZyYW1lU2h1ZmZsZXIuaAkod29y
a2luZyBjb3B5KQpAQCAtMTAzLDcgKzEwMyw3IEBAIHB1YmxpYzoKIAogICAgICAgICBDYWxsRnJh
bWVTaHVmZmxlRGF0YSBkYXRhOwogICAgICAgICBkYXRhLm51bUxvY2FscyA9IG51bUxvY2Fscygp
OwotICAgICAgICBkYXRhLmNhbGxlZSA9IGdldE5ldyhWaXJ0dWFsUmVnaXN0ZXIgeyBKU1N0YWNr
OjpDYWxsZWUgfSktPnJlY292ZXJ5KCk7CisgICAgICAgIGRhdGEuY2FsbGVlID0gZ2V0TmV3KFZp
cnR1YWxSZWdpc3RlciB7IENhbGxGcmFtZUhlYWRlcjo6Q2FsbGVlIH0pLT5yZWNvdmVyeSgpOwog
ICAgICAgICBkYXRhLmFyZ3MucmVzaXplKGFyZ0NvdW50KCkpOwogICAgICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IGFyZ0NvdW50KCk7ICsraSkKICAgICAgICAgICAgIGRhdGEuYXJnc1tpXSA9
IGdldE5ldyh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChpKSktPnJlY292ZXJ5KCk7CkBAIC0x
MjksNyArMTI5LDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgQVNTRVJUKGlzVW5kZWNpZGVk
KCkpOwogICAgICAgICBBU1NFUlQoIWdldE5ldyhqc1ZhbHVlUmVncykpOwotICAgICAgICBDYWNo
ZWRSZWNvdmVyeSogY2FjaGVkUmVjb3ZlcnkgeyBnZXROZXcoVmlydHVhbFJlZ2lzdGVyKEpTU3Rh
Y2s6OkNhbGxlZSkpIH07CisgICAgICAgIENhY2hlZFJlY292ZXJ5KiBjYWNoZWRSZWNvdmVyeSB7
IGdldE5ldyhWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lSGVhZGVyOjpDYWxsZWUpKSB9OwogICAg
ICAgICBBU1NFUlQoY2FjaGVkUmVjb3ZlcnkpOwogICAgICAgICBhZGROZXcoanNWYWx1ZVJlZ3Ms
IGNhY2hlZFJlY292ZXJ5LT5yZWNvdmVyeSgpKTsKICAgICB9CkBAIC0xNDIsNyArMTQyLDcgQEAg
cHVibGljOgogICAgIHZvaWQgYXNzdW1lQ2FsbGVlSXNDZWxsKCkKICAgICB7CiAjaWYgVVNFKEpT
VkFMVUUzMl82NCkKLSAgICAgICAgQ2FjaGVkUmVjb3ZlcnkmIGNhbGxlZUNhY2hlZFJlY292ZXJ5
ID0gKmdldE5ldyhWaXJ0dWFsUmVnaXN0ZXIoSlNTdGFjazo6Q2FsbGVlKSk7CisgICAgICAgIENh
Y2hlZFJlY292ZXJ5JiBjYWxsZWVDYWNoZWRSZWNvdmVyeSA9ICpnZXROZXcoVmlydHVhbFJlZ2lz
dGVyKENhbGxGcmFtZUhlYWRlcjo6Q2FsbGVlKSk7CiAgICAgICAgIHN3aXRjaCAoY2FsbGVlQ2Fj
aGVkUmVjb3ZlcnkucmVjb3ZlcnkoKS50ZWNobmlxdWUoKSkgewogICAgICAgICBjYXNlIEluUGFp
cjoKICAgICAgICAgICAgIHVwZGF0ZVJlY292ZXJ5KApAQCAtMjk3LDE3ICsyOTcsMTcgQEAgcHJp
dmF0ZToKIAogICAgIGludCBudW1Mb2NhbHMoKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJu
IG1fb2xkRnJhbWUuc2l6ZSgpIC0gSlNTdGFjazo6Q2FsbGVyRnJhbWVBbmRQQ1NpemU7CisgICAg
ICAgIHJldHVybiBtX29sZEZyYW1lLnNpemUoKSAtIENhbGxGcmFtZUhlYWRlcjo6Q2FsbGVyRnJh
bWVBbmRQQ1NpemU7CiAgICAgfQogCiAgICAgQ2FjaGVkUmVjb3ZlcnkqIGdldE9sZChWaXJ0dWFs
UmVnaXN0ZXIgcmVnKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIG1fb2xkRnJhbWVbSlNT
dGFjazo6Q2FsbGVyRnJhbWVBbmRQQ1NpemUgLSByZWcub2Zmc2V0KCkgLSAxXTsKKyAgICAgICAg
cmV0dXJuIG1fb2xkRnJhbWVbQ2FsbEZyYW1lSGVhZGVyOjpDYWxsZXJGcmFtZUFuZFBDU2l6ZSAt
IHJlZy5vZmZzZXQoKSAtIDFdOwogICAgIH0KIAogICAgIHZvaWQgc2V0T2xkKFZpcnR1YWxSZWdp
c3RlciByZWcsIENhY2hlZFJlY292ZXJ5KiBjYWNoZWRSZWNvdmVyeSkKICAgICB7Ci0gICAgICAg
IG1fb2xkRnJhbWVbSlNTdGFjazo6Q2FsbGVyRnJhbWVBbmRQQ1NpemUgLSByZWcub2Zmc2V0KCkg
LSAxXSA9IGNhY2hlZFJlY292ZXJ5OworICAgICAgICBtX29sZEZyYW1lW0NhbGxGcmFtZUhlYWRl
cjo6Q2FsbGVyRnJhbWVBbmRQQ1NpemUgLSByZWcub2Zmc2V0KCkgLSAxXSA9IGNhY2hlZFJlY292
ZXJ5OwogICAgIH0KIAogICAgIFZpcnR1YWxSZWdpc3RlciBmaXJzdE9sZCgpIGNvbnN0CkBAIC0z
MTcsNyArMzE3LDcgQEAgcHJpdmF0ZToKIAogICAgIFZpcnR1YWxSZWdpc3RlciBsYXN0T2xkKCkg
Y29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBWaXJ0dWFsUmVnaXN0ZXIgeyBKU1N0YWNrOjpD
YWxsZXJGcmFtZUFuZFBDU2l6ZSAtIDEgfTsKKyAgICAgICAgcmV0dXJuIFZpcnR1YWxSZWdpc3Rl
ciB7IENhbGxGcmFtZUhlYWRlcjo6Q2FsbGVyRnJhbWVBbmRQQ1NpemUgLSAxIH07CiAgICAgfQog
CiAgICAgYm9vbCBpc1ZhbGlkT2xkKFZpcnR1YWxSZWdpc3RlciByZWcpIGNvbnN0CkBAIC0zMzks
NyArMzM5LDcgQEAgcHJpdmF0ZToKIAogICAgIHNpemVfdCBhcmdDb3VudCgpIGNvbnN0CiAgICAg
ewotICAgICAgICByZXR1cm4gbV9uZXdGcmFtZS5zaXplKCkgLSBKU1N0YWNrOjpDYWxsRnJhbWVI
ZWFkZXJTaXplOworICAgICAgICByZXR1cm4gbV9uZXdGcmFtZS5zaXplKCkgLSBDYWxsRnJhbWVI
ZWFkZXI6OlNpemU7CiAgICAgfQogCiAgICAgQ2FjaGVkUmVjb3ZlcnkqIGdldE5ldyhWaXJ0dWFs
UmVnaXN0ZXIgbmV3UmVnaXN0ZXIpIGNvbnN0CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQu
Y3BwCShyZXZpc2lvbiAyMDI5NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTU2OSw3ICs1NjksNyBAQCB2b2lkIEpJVDo6Y29tcGlsZVdp
dGhvdXRMaW5raW5nKEpJVENvbXBpCiAgICAgICAgIG5vcCgpOwogCiAgICAgZW1pdEZ1bmN0aW9u
UHJvbG9ndWUoKTsKLSAgICBlbWl0UHV0VG9DYWxsRnJhbWVIZWFkZXIobV9jb2RlQmxvY2ssIEpT
U3RhY2s6OkNvZGVCbG9jayk7CisgICAgZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVyKG1fY29kZUJs
b2NrLCBDYWxsRnJhbWVIZWFkZXI6OkNvZGVCbG9jayk7CiAKICAgICBMYWJlbCBiZWdpbkxhYmVs
KHRoaXMpOwogCkBAIC02MjcsOSArNjI3LDkgQEAgdm9pZCBKSVQ6OmNvbXBpbGVXaXRob3V0TGlu
a2luZyhKSVRDb21waQogICAgICAgICBtX2FyaXR5Q2hlY2sgPSBsYWJlbCgpOwogICAgICAgICBz
dG9yZTgoVHJ1c3RlZEltbTMyKDApLCAmbV9jb2RlQmxvY2stPm1fc2hvdWxkQWx3YXlzQmVJbmxp
bmVkKTsKICAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoKTsKLSAgICAgICAgZW1pdFB1dFRv
Q2FsbEZyYW1lSGVhZGVyKG1fY29kZUJsb2NrLCBKU1N0YWNrOjpDb2RlQmxvY2spOworICAgICAg
ICBlbWl0UHV0VG9DYWxsRnJhbWVIZWFkZXIobV9jb2RlQmxvY2ssIENhbGxGcmFtZUhlYWRlcjo6
Q29kZUJsb2NrKTsKIAotICAgICAgICBsb2FkMzIocGF5bG9hZEZvcihKU1N0YWNrOjpBcmd1bWVu
dENvdW50KSwgcmVnVDEpOworICAgICAgICBsb2FkMzIocGF5bG9hZEZvcihDYWxsRnJhbWVIZWFk
ZXI6OkFyZ3VtZW50Q291bnQpLCByZWdUMSk7CiAgICAgICAgIGJyYW5jaDMyKEFib3ZlT3JFcXVh
bCwgcmVnVDEsIFRydXN0ZWRJbW0zMihtX2NvZGVCbG9jay0+bV9udW1QYXJhbWV0ZXJzKSkubGlu
a1RvKGJlZ2luTGFiZWwsIHRoaXMpOwogCiAgICAgICAgIG1fYnl0ZWNvZGVPZmZzZXQgPSAwOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCShyZXZpc2lvbiAyMDI5NTQpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC03MDYsNyArNzA2LDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdm9pZCBlbWl0SW5pdFJlZ2lzdGVyKGludCBk
c3QpOwogCi0gICAgICAgIHZvaWQgZW1pdFB1dEludFRvQ2FsbEZyYW1lSGVhZGVyKFJlZ2lzdGVy
SUQgZnJvbSwgSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyRW50cnkpOworICAgICAgICB2b2lkIGVt
aXRQdXRJbnRUb0NhbGxGcmFtZUhlYWRlcihSZWdpc3RlcklEIGZyb20sIENhbGxGcmFtZUhlYWRl
cjo6RW50cnkpOwogCiAgICAgICAgIEpTVmFsdWUgZ2V0Q29uc3RhbnRPcGVyYW5kKGludCBzcmMp
OwogICAgICAgICBib29sIGlzT3BlcmFuZENvbnN0YW50SW50KGludCBzcmMpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbDMyXzY0LmNwcAkocmV2aXNpb24gMjAyOTU0
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNzAsNyArMTcwLDcgQEAgdm9pZCBKSVQ6OmNvbXBpbGVTZXR1cFZhcmFyZ3NG
cmFtZShPcGNvZAogICAgIG1vdmUocmV0dXJuVmFsdWVHUFIsIHJlZ1QxKTsKIAogICAgIC8vIFBy
b2ZpbGUgdGhlIGFyZ3VtZW50IGNvdW50LgotICAgIGxvYWQzMihBZGRyZXNzKHJlZ1QxLCBKU1N0
YWNrOjpBcmd1bWVudENvdW50ICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSAr
IFBheWxvYWRPZmZzZXQpLCByZWdUMik7CisgICAgbG9hZDMyKEFkZHJlc3MocmVnVDEsIENhbGxG
cmFtZUhlYWRlcjo6QXJndW1lbnRDb3VudCAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lz
dGVyKSkgKyBQYXlsb2FkT2Zmc2V0KSwgcmVnVDIpOwogICAgIGxvYWQ4KGluZm8tPmFkZHJlc3NP
Zk1heE51bUFyZ3VtZW50cygpLCByZWdUMCk7CiAgICAgSnVtcCBub3RCaWdnZXN0ID0gYnJhbmNo
MzIoQWJvdmUsIHJlZ1QwLCByZWdUMik7CiAgICAgSnVtcCBub3RTYXR1cmF0ZWQgPSBicmFuY2gz
MihCZWxvd09yRXF1YWwsIHJlZ1QyLCBUcnVzdGVkSW1tMzIoMjU1KSk7CkBAIC0yMTQsMTEgKzIx
NCwxMSBAQCB2b2lkIEpJVDo6Y29tcGlsZUNhbGxFdmFsU2xvd0Nhc2UoSW5zdHJ1CiAKICAgICBh
ZGRQdHIoVHJ1c3RlZEltbTMyKHJlZ2lzdGVyT2Zmc2V0ICogc2l6ZW9mKFJlZ2lzdGVyKSArIHNp
emVvZihDYWxsZXJGcmFtZUFuZFBDKSksIGNhbGxGcmFtZVJlZ2lzdGVyLCBzdGFja1BvaW50ZXJS
ZWdpc3Rlcik7CiAKLSAgICBsb2FkUHRyKEFkZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0ZXIsIHNp
emVvZihSZWdpc3RlcikgKiBKU1N0YWNrOjpDYWxsZWUgLSBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQ
QykpLCByZWdUMCk7Ci0gICAgbG9hZFB0cihBZGRyZXNzKHN0YWNrUG9pbnRlclJlZ2lzdGVyLCBz
aXplb2YoUmVnaXN0ZXIpICogSlNTdGFjazo6Q2FsbGVlIC0gc2l6ZW9mKENhbGxlckZyYW1lQW5k
UEMpKSwgcmVnVDEpOworICAgIGxvYWRQdHIoQWRkcmVzcyhzdGFja1BvaW50ZXJSZWdpc3Rlciwg
c2l6ZW9mKFJlZ2lzdGVyKSAqIENhbGxGcmFtZUhlYWRlcjo6Q2FsbGVlIC0gc2l6ZW9mKENhbGxl
ckZyYW1lQW5kUEMpKSwgcmVnVDApOworICAgIGxvYWRQdHIoQWRkcmVzcyhzdGFja1BvaW50ZXJS
ZWdpc3Rlciwgc2l6ZW9mKFJlZ2lzdGVyKSAqIENhbGxGcmFtZUhlYWRlcjo6Q2FsbGVlIC0gc2l6
ZW9mKENhbGxlckZyYW1lQW5kUEMpKSwgcmVnVDEpOwogICAgIG1vdmUoVHJ1c3RlZEltbVB0cihp
bmZvKSwgcmVnVDIpOwogCi0gICAgZW1pdExvYWQoSlNTdGFjazo6Q2FsbGVlLCByZWdUMSwgcmVn
VDApOworICAgIGVtaXRMb2FkKENhbGxGcmFtZUhlYWRlcjo6Q2FsbGVlLCByZWdUMSwgcmVnVDAp
OwogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiB2aXJ0dWFsVGh1bmsgPSB2aXJ0dWFsVGh1bmtG
b3IobV92bSwgKmluZm8pOwogICAgIGluZm8tPnNldFNsb3dTdHViKGNyZWF0ZUpJVFN0dWJSb3V0
aW5lKHZpcnR1YWxUaHVuaywgKm1fdm0sIG51bGxwdHIsIHRydWUpKTsKICAgICBlbWl0TmFrZWRD
YWxsKHZpcnR1YWxUaHVuay5jb2RlKCkpOwpAQCAtMjY1LDE1ICsyNjUsMTUgQEAgdm9pZCBKSVQ6
OmNvbXBpbGVPcENhbGwoT3Bjb2RlSUQgb3Bjb2RlSQogICAgIAogICAgICAgICBhZGRQdHIoVHJ1
c3RlZEltbTMyKHJlZ2lzdGVyT2Zmc2V0ICogc2l6ZW9mKFJlZ2lzdGVyKSArIHNpemVvZihDYWxs
ZXJGcmFtZUFuZFBDKSksIGNhbGxGcmFtZVJlZ2lzdGVyLCBzdGFja1BvaW50ZXJSZWdpc3Rlcik7
CiAKLSAgICAgICAgc3RvcmUzMihUcnVzdGVkSW1tMzIoYXJnQ291bnQpLCBBZGRyZXNzKHN0YWNr
UG9pbnRlclJlZ2lzdGVyLCBKU1N0YWNrOjpBcmd1bWVudENvdW50ICogc3RhdGljX2Nhc3Q8aW50
PihzaXplb2YoUmVnaXN0ZXIpKSArIFBheWxvYWRPZmZzZXQgLSBzaXplb2YoQ2FsbGVyRnJhbWVB
bmRQQykpKTsKKyAgICAgICAgc3RvcmUzMihUcnVzdGVkSW1tMzIoYXJnQ291bnQpLCBBZGRyZXNz
KHN0YWNrUG9pbnRlclJlZ2lzdGVyLCBDYWxsRnJhbWVIZWFkZXI6OkFyZ3VtZW50Q291bnQgKiBz
dGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpICsgUGF5bG9hZE9mZnNldCAtIHNpemVv
ZihDYWxsZXJGcmFtZUFuZFBDKSkpOwogICAgIH0gLy8gU1AgaG9sZHMgbmV3Q2FsbEZyYW1lICsg
c2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpLCB3aXRoIEFyZ3VtZW50Q291bnQgaW5pdGlhbGl6ZWQu
CiAgICAgCiAgICAgdWludDMyX3QgbG9jYXRpb25CaXRzID0gQ2FsbFNpdGVJbmRleChpbnN0cnVj
dGlvbikuYml0cygpOwotICAgIHN0b3JlMzIoVHJ1c3RlZEltbTMyKGxvY2F0aW9uQml0cyksIHRh
Z0ZvcihKU1N0YWNrOjpBcmd1bWVudENvdW50LCBjYWxsRnJhbWVSZWdpc3RlcikpOworICAgIHN0
b3JlMzIoVHJ1c3RlZEltbTMyKGxvY2F0aW9uQml0cyksIHRhZ0ZvcihDYWxsRnJhbWVIZWFkZXI6
OkFyZ3VtZW50Q291bnQsIGNhbGxGcmFtZVJlZ2lzdGVyKSk7CiAgICAgZW1pdExvYWQoY2FsbGVl
LCByZWdUMSwgcmVnVDApOyAvLyByZWdUMSwgcmVnVDAgaG9sZHMgY2FsbGVlLgogCi0gICAgc3Rv
cmUzMihyZWdUMCwgQWRkcmVzcyhzdGFja1BvaW50ZXJSZWdpc3RlciwgSlNTdGFjazo6Q2FsbGVl
ICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSArIFBheWxvYWRPZmZzZXQgLSBz
aXplb2YoQ2FsbGVyRnJhbWVBbmRQQykpKTsKLSAgICBzdG9yZTMyKHJlZ1QxLCBBZGRyZXNzKHN0
YWNrUG9pbnRlclJlZ2lzdGVyLCBKU1N0YWNrOjpDYWxsZWUgKiBzdGF0aWNfY2FzdDxpbnQ+KHNp
emVvZihSZWdpc3RlcikpICsgVGFnT2Zmc2V0IC0gc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKSk7
CisgICAgc3RvcmUzMihyZWdUMCwgQWRkcmVzcyhzdGFja1BvaW50ZXJSZWdpc3RlciwgQ2FsbEZy
YW1lSGVhZGVyOjpDYWxsZWUgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpICsg
UGF5bG9hZE9mZnNldCAtIHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSkpOworICAgIHN0b3JlMzIo
cmVnVDEsIEFkZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0ZXIsIENhbGxGcmFtZUhlYWRlcjo6Q2Fs
bGVlICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSArIFRhZ09mZnNldCAtIHNp
emVvZihDYWxsZXJGcmFtZUFuZFBDKSkpOwogCiAgICAgaWYgKG9wY29kZUlEID09IG9wX2NhbGxf
ZXZhbCkgewogICAgICAgICBjb21waWxlQ2FsbEV2YWwoaW5zdHJ1Y3Rpb24pOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwCShyZXZpc2lvbiAyMDI5NTQpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MCw3
ICs4MCw3IEBAIHZvaWQgSklUOjpjb21waWxlU2V0dXBWYXJhcmdzRnJhbWUoT3Bjb2QKICAgICBt
b3ZlKHJldHVyblZhbHVlR1BSLCByZWdUMSk7CiAKICAgICAvLyBQcm9maWxlIHRoZSBhcmd1bWVu
dCBjb3VudC4KLSAgICBsb2FkMzIoQWRkcmVzcyhyZWdUMSwgSlNTdGFjazo6QXJndW1lbnRDb3Vu
dCAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkgKyBQYXlsb2FkT2Zmc2V0KSwg
cmVnVDIpOworICAgIGxvYWQzMihBZGRyZXNzKHJlZ1QxLCBDYWxsRnJhbWVIZWFkZXI6OkFyZ3Vt
ZW50Q291bnQgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpICsgUGF5bG9hZE9m
ZnNldCksIHJlZ1QyKTsKICAgICBsb2FkOChpbmZvLT5hZGRyZXNzT2ZNYXhOdW1Bcmd1bWVudHMo
KSwgcmVnVDApOwogICAgIEp1bXAgbm90QmlnZ2VzdCA9IGJyYW5jaDMyKEFib3ZlLCByZWdUMCwg
cmVnVDIpOwogICAgIEp1bXAgbm90U2F0dXJhdGVkID0gYnJhbmNoMzIoQmVsb3dPckVxdWFsLCBy
ZWdUMiwgVHJ1c3RlZEltbTMyKDI1NSkpOwpAQCAtMTIzLDcgKzEyMyw3IEBAIHZvaWQgSklUOjpj
b21waWxlQ2FsbEV2YWxTbG93Q2FzZShJbnN0cnUKIAogICAgIGFkZFB0cihUcnVzdGVkSW1tMzIo
cmVnaXN0ZXJPZmZzZXQgKiBzaXplb2YoUmVnaXN0ZXIpICsgc2l6ZW9mKENhbGxlckZyYW1lQW5k
UEMpKSwgY2FsbEZyYW1lUmVnaXN0ZXIsIHN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKIAotICAgIGxv
YWQ2NChBZGRyZXNzKHN0YWNrUG9pbnRlclJlZ2lzdGVyLCBzaXplb2YoUmVnaXN0ZXIpICogSlNT
dGFjazo6Q2FsbGVlIC0gc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKSwgcmVnVDApOworICAgIGxv
YWQ2NChBZGRyZXNzKHN0YWNrUG9pbnRlclJlZ2lzdGVyLCBzaXplb2YoUmVnaXN0ZXIpICogQ2Fs
bEZyYW1lSGVhZGVyOjpDYWxsZWUgLSBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykpLCByZWdUMCk7
CiAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGluZm8pLCByZWdUMik7CiAgICAgQ2FsbCBjYWxsID0g
ZW1pdE5ha2VkQ2FsbCgpOwogICAgIGFkZExpbmtUYXNrKApAQCAtMTgxLDE1ICsxODEsMTUgQEAg
dm9pZCBKSVQ6OmNvbXBpbGVPcENhbGwoT3Bjb2RlSUQgb3Bjb2RlSQogICAgICAgICB9CiAgICAg
CiAgICAgICAgIGFkZFB0cihUcnVzdGVkSW1tMzIocmVnaXN0ZXJPZmZzZXQgKiBzaXplb2YoUmVn
aXN0ZXIpICsgc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKSwgY2FsbEZyYW1lUmVnaXN0ZXIsIHN0
YWNrUG9pbnRlclJlZ2lzdGVyKTsKLSAgICAgICAgc3RvcmUzMihUcnVzdGVkSW1tMzIoYXJnQ291
bnQpLCBBZGRyZXNzKHN0YWNrUG9pbnRlclJlZ2lzdGVyLCBKU1N0YWNrOjpBcmd1bWVudENvdW50
ICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSArIFBheWxvYWRPZmZzZXQgLSBz
aXplb2YoQ2FsbGVyRnJhbWVBbmRQQykpKTsKKyAgICAgICAgc3RvcmUzMihUcnVzdGVkSW1tMzIo
YXJnQ291bnQpLCBBZGRyZXNzKHN0YWNrUG9pbnRlclJlZ2lzdGVyLCBDYWxsRnJhbWVIZWFkZXI6
OkFyZ3VtZW50Q291bnQgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpICsgUGF5
bG9hZE9mZnNldCAtIHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSkpOwogICAgIH0gLy8gU1AgaG9s
ZHMgbmV3Q2FsbEZyYW1lICsgc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpLCB3aXRoIEFyZ3VtZW50
Q291bnQgaW5pdGlhbGl6ZWQuCiAgICAgCiAgICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBp
bnN0cnVjdGlvbiAtIG1fY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpOwogICAgIHVp
bnQzMl90IGxvY2F0aW9uQml0cyA9IENhbGxTaXRlSW5kZXgoYnl0ZWNvZGVPZmZzZXQpLmJpdHMo
KTsKLSAgICBzdG9yZTMyKFRydXN0ZWRJbW0zMihsb2NhdGlvbkJpdHMpLCBBZGRyZXNzKGNhbGxG
cmFtZVJlZ2lzdGVyLCBKU1N0YWNrOjpBcmd1bWVudENvdW50ICogc3RhdGljX2Nhc3Q8aW50Pihz
aXplb2YoUmVnaXN0ZXIpKSArIFRhZ09mZnNldCkpOworICAgIHN0b3JlMzIoVHJ1c3RlZEltbTMy
KGxvY2F0aW9uQml0cyksIEFkZHJlc3MoY2FsbEZyYW1lUmVnaXN0ZXIsIENhbGxGcmFtZUhlYWRl
cjo6QXJndW1lbnRDb3VudCAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkgKyBU
YWdPZmZzZXQpKTsKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoY2FsbGVlLCByZWdUMCk7
IC8vIHJlZ1QwIGhvbGRzIGNhbGxlZS4KLSAgICBzdG9yZTY0KHJlZ1QwLCBBZGRyZXNzKHN0YWNr
UG9pbnRlclJlZ2lzdGVyLCBKU1N0YWNrOjpDYWxsZWUgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVv
ZihSZWdpc3RlcikpIC0gc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKSk7CisgICAgc3RvcmU2NChy
ZWdUMCwgQWRkcmVzcyhzdGFja1BvaW50ZXJSZWdpc3RlciwgQ2FsbEZyYW1lSGVhZGVyOjpDYWxs
ZWUgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpIC0gc2l6ZW9mKENhbGxlckZy
YW1lQW5kUEMpKSk7CiAKICAgICBpZiAob3Bjb2RlSUQgPT0gb3BfY2FsbF9ldmFsKSB7CiAgICAg
ICAgIGNvbXBpbGVDYWxsRXZhbChpbnN0cnVjdGlvbik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVElubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVElubGluZXMuaAkocmV2aXNpb24gMjAyOTU0KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTg4LDcgKzg4LDcgQEAg
QUxXQVlTX0lOTElORSBKU1ZhbHVlIEpJVDo6Z2V0Q29uc3RhbnRPcAogICAgIHJldHVybiBtX2Nv
ZGVCbG9jay0+Z2V0Q29uc3RhbnQoc3JjKTsKIH0KIAotQUxXQVlTX0lOTElORSB2b2lkIEpJVDo6
ZW1pdFB1dEludFRvQ2FsbEZyYW1lSGVhZGVyKFJlZ2lzdGVySUQgZnJvbSwgSlNTdGFjazo6Q2Fs
bEZyYW1lSGVhZGVyRW50cnkgZW50cnkpCitBTFdBWVNfSU5MSU5FIHZvaWQgSklUOjplbWl0UHV0
SW50VG9DYWxsRnJhbWVIZWFkZXIoUmVnaXN0ZXJJRCBmcm9tLCBDYWxsRnJhbWVIZWFkZXI6OkVu
dHJ5IGVudHJ5KQogewogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgc3RvcmUzMihUcnVzdGVk
SW1tMzIoSW50MzJUYWcpLCBpbnRUYWdGb3IoZW50cnksIGNhbGxGcmFtZVJlZ2lzdGVyKSk7CkBA
IC0xNDIsNyArMTQyLDcgQEAgQUxXQVlTX0lOTElORSB2b2lkIEpJVDo6dXBkYXRlVG9wQ2FsbEZy
YQogI2Vsc2UKICAgICB1aW50MzJfdCBsb2NhdGlvbkJpdHMgPSBDYWxsU2l0ZUluZGV4KG1fYnl0
ZWNvZGVPZmZzZXQgKyAxKS5iaXRzKCk7CiAjZW5kaWYKLSAgICBzdG9yZTMyKFRydXN0ZWRJbW0z
Mihsb2NhdGlvbkJpdHMpLCBpbnRUYWdGb3IoSlNTdGFjazo6QXJndW1lbnRDb3VudCkpOworICAg
IHN0b3JlMzIoVHJ1c3RlZEltbTMyKGxvY2F0aW9uQml0cyksIGludFRhZ0ZvcihDYWxsRnJhbWVI
ZWFkZXI6OkFyZ3VtZW50Q291bnQpKTsKICAgICAKICAgICAvLyBGSVhNRTogSXQncyBub3QgY2xl
YXIgdGhhdCB0aGlzIGlzIG5lZWRlZC4gSklUT3BlcmF0aW9ucyB0ZW5kIHRvIHVwZGF0ZSB0aGUg
dG9wIGNhbGwgZnJhbWUgb24KICAgICAvLyB0aGUgQysrIHNpZGUuCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCShyZXZpc2lvbiAyMDI5NTQp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTU1LDcgKzU1LDcgQEAgSklUOjpDb2RlUmVmIEpJVDo6cHJpdmF0ZUNvbXBp
bGVDVElOYXRpdgogICAgIENhbGwgbmF0aXZlQ2FsbDsKIAogICAgIGVtaXRGdW5jdGlvblByb2xv
Z3VlKCk7Ci0gICAgZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVyKDAsIEpTU3RhY2s6OkNvZGVCbG9j
ayk7CisgICAgZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVyKDAsIENhbGxGcmFtZUhlYWRlcjo6Q29k
ZUJsb2NrKTsKICAgICBzdG9yZVB0cihjYWxsRnJhbWVSZWdpc3RlciwgJm1fdm0tPnRvcENhbGxG
cmFtZSk7CiAKICNpZiBDUFUoWDg2KQpAQCAtODEsNyArODEsNyBAQCBKSVQ6OkNvZGVSZWYgSklU
Ojpwcml2YXRlQ29tcGlsZUNUSU5hdGl2CiAgICAgLy8gSG9zdCBmdW5jdGlvbiBzaWduYXR1cmUg
aXMgZihFeGVjU3RhdGUqKS4KICAgICBtb3ZlKGNhbGxGcmFtZVJlZ2lzdGVyLCBhcmd1bWVudEdQ
UjApOwogCi0gICAgZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXJQdHIoSlNTdGFjazo6Q2FsbGVl
LCBhcmd1bWVudEdQUjEpOworICAgIGVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyUHRyKENhbGxG
cmFtZUhlYWRlcjo6Q2FsbGVlLCBhcmd1bWVudEdQUjEpOwogICAgIGxvYWRQdHIoQWRkcmVzcyhh
cmd1bWVudEdQUjEsIE9CSkVDVF9PRkZTRVRPRihKU0Z1bmN0aW9uLCBtX2V4ZWN1dGFibGUpKSwg
cmVnVDIpOwogCiAgICAgLy8gY2FsbCB0aGUgZnVuY3Rpb24KQEAgLTk5Nyw3ICs5OTcsNyBAQCB2
b2lkIEpJVDo6ZW1pdF9vcF9lbnRlcihJbnN0cnVjdGlvbiogY3VyCiB2b2lkIEpJVDo6ZW1pdF9v
cF9nZXRfc2NvcGUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBpbnQg
ZHN0ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKLSAgICBlbWl0R2V0RnJvbUNh
bGxGcmFtZUhlYWRlclB0cihKU1N0YWNrOjpDYWxsZWUsIHJlZ1QwKTsKKyAgICBlbWl0R2V0RnJv
bUNhbGxGcmFtZUhlYWRlclB0cihDYWxsRnJhbWVIZWFkZXI6OkNhbGxlZSwgcmVnVDApOwogICAg
IGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZTY29wZUNoYWluKCkp
LCByZWdUMCk7CiAgICAgZW1pdFN0b3JlQ2VsbChkc3QsIHJlZ1QwKTsKIH0KSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAkocmV2aXNpb24gMjAyOTU0KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNzIzLDcgKzcyMyw3IEBAIHZvaWQgSklUOjplbWl0X29wX2VudGVyKEluc3RydWN0aW9uKikK
IHZvaWQgSklUOjplbWl0X29wX2dldF9zY29wZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQogewogICAgIGludCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwot
ICAgIGVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyUHRyKEpTU3RhY2s6OkNhbGxlZSwgcmVnVDAp
OworICAgIGVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyUHRyKENhbGxGcmFtZUhlYWRlcjo6Q2Fs
bGVlLCByZWdUMCk7CiAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0Z1bmN0aW9uOjpvZmZz
ZXRPZlNjb3BlQ2hhaW4oKSksIHJlZ1QwKTsKICAgICBlbWl0U3RvcmVDZWxsKGRzdCwgcmVnVDAp
OwogfQpAQCAtMTQ0NCw3ICsxNDQ0LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfY3JlYXRlX2Nsb25l
ZF9hcmd1bWVudAogdm9pZCBKSVQ6OmVtaXRfb3BfYXJndW1lbnRfY291bnQoSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBpbnQgZHN0ID0gY3VycmVudEluc3RydWN0aW9u
WzFdLnUub3BlcmFuZDsKLSAgICBsb2FkMzIocGF5bG9hZEZvcihKU1N0YWNrOjpBcmd1bWVudENv
dW50KSwgcmVnVDApOworICAgIGxvYWQzMihwYXlsb2FkRm9yKENhbGxGcmFtZUhlYWRlcjo6QXJn
dW1lbnRDb3VudCksIHJlZ1QwKTsKICAgICBzdWIzMihUcnVzdGVkSW1tMzIoMSksIHJlZ1QwKTsK
ICAgICBKU1ZhbHVlUmVncyByZXN1bHQgPSBKU1ZhbHVlUmVnczo6d2l0aFR3b0F2YWlsYWJsZVJl
Z3MocmVnVDAsIHJlZ1QxKTsKICAgICBib3hJbnQzMihyZWdUMCwgcmVzdWx0KTsKQEAgLTE0NjEs
NyArMTQ2MSw3IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9yZXN0X2xlbmd0aChJbnN0cnUKIHsK
ICAgICBpbnQgZHN0ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKICAgICB1bnNp
Z25lZCBudW1QYXJhbXNUb1NraXAgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS51bnNpZ25lZFZh
bHVlOwotICAgIGxvYWQzMihwYXlsb2FkRm9yKEpTU3RhY2s6OkFyZ3VtZW50Q291bnQpLCByZWdU
MCk7CisgICAgbG9hZDMyKHBheWxvYWRGb3IoQ2FsbEZyYW1lSGVhZGVyOjpBcmd1bWVudENvdW50
KSwgcmVnVDApOwogICAgIHN1YjMyKFRydXN0ZWRJbW0zMigxKSwgcmVnVDApOwogICAgIEp1bXAg
emVyb0xlbmd0aCA9IGJyYW5jaDMyKExlc3NUaGFuT3JFcXVhbCwgcmVnVDAsIEltbTMyKG51bVBh
cmFtc1RvU2tpcCkpOwogICAgIHN1YjMyKEltbTMyKG51bVBhcmFtc1RvU2tpcCksIHJlZ1QwKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSlNJbnRlcmZhY2VKSVQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pTSW50ZXJmYWNlSklULmgJKHJldmlz
aW9uIDIwMjk1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSlNJbnRlcmZhY2VKSVQu
aAkod29ya2luZyBjb3B5KQpAQCAtNzEsMTAgKzcxLDEwIEBAIG5hbWVzcGFjZSBKU0MgewogCiAg
ICAgICAgIEp1bXAgZW1pdEp1bXBJZk5vdFR5cGUoUmVnaXN0ZXJJRCBiYXNlUmVnLCBKU1R5cGUp
OwogCi0gICAgICAgIHZvaWQgZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXJQdHIoSlNTdGFjazo6
Q2FsbEZyYW1lSGVhZGVyRW50cnksIFJlZ2lzdGVySUQgdG8sIFJlZ2lzdGVySUQgZnJvbSA9IGNh
bGxGcmFtZVJlZ2lzdGVyKTsKLSAgICAgICAgdm9pZCBlbWl0UHV0VG9DYWxsRnJhbWVIZWFkZXIo
UmVnaXN0ZXJJRCBmcm9tLCBKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJFbnRyeSk7Ci0gICAgICAg
IHZvaWQgZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVyKHZvaWQqIHZhbHVlLCBKU1N0YWNrOjpDYWxs
RnJhbWVIZWFkZXJFbnRyeSk7Ci0gICAgICAgIHZvaWQgZW1pdFB1dENlbGxUb0NhbGxGcmFtZUhl
YWRlcihSZWdpc3RlcklEIGZyb20sIEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlckVudHJ5KTsKKyAg
ICAgICAgdm9pZCBlbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlclB0cihDYWxsRnJhbWVIZWFkZXI6
OkVudHJ5LCBSZWdpc3RlcklEIHRvLCBSZWdpc3RlcklEIGZyb20gPSBjYWxsRnJhbWVSZWdpc3Rl
cik7CisgICAgICAgIHZvaWQgZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVyKFJlZ2lzdGVySUQgZnJv
bSwgQ2FsbEZyYW1lSGVhZGVyOjpFbnRyeSk7CisgICAgICAgIHZvaWQgZW1pdFB1dFRvQ2FsbEZy
YW1lSGVhZGVyKHZvaWQqIHZhbHVlLCBDYWxsRnJhbWVIZWFkZXI6OkVudHJ5KTsKKyAgICAgICAg
dm9pZCBlbWl0UHV0Q2VsbFRvQ2FsbEZyYW1lSGVhZGVyKFJlZ2lzdGVySUQgZnJvbSwgQ2FsbEZy
YW1lSGVhZGVyOjpFbnRyeSk7CiAKICAgICAgICAgaW5saW5lIEFkZHJlc3MgcGF5bG9hZEZvcihp
bnQgaW5kZXgsIFJlZ2lzdGVySUQgYmFzZSA9IGNhbGxGcmFtZVJlZ2lzdGVyKTsKICAgICAgICAg
aW5saW5lIEFkZHJlc3MgaW50UGF5bG9hZEZvcihpbnQgaW5kZXgsIFJlZ2lzdGVySUQgYmFzZSA9
IGNhbGxGcmFtZVJlZ2lzdGVyKTsKQEAgLTIyMSwxMiArMjIxLDEyIEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICByZXR1cm4gYnJhbmNoOChOb3RFcXVhbCwgQWRkcmVzcyhiYXNlUmVnLCBKU0Nl
bGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwgVHJ1c3RlZEltbTMyKHR5cGUpKTsKICAgICB9CiAK
LSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgSlNJbnRlcmZhY2VKSVQ6OmVtaXRHZXRGcm9tQ2FsbEZy
YW1lSGVhZGVyUHRyKEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlckVudHJ5IGVudHJ5LCBSZWdpc3Rl
cklEIHRvLCBSZWdpc3RlcklEIGZyb20pCisgICAgQUxXQVlTX0lOTElORSB2b2lkIEpTSW50ZXJm
YWNlSklUOjplbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlclB0cihDYWxsRnJhbWVIZWFkZXI6OkVu
dHJ5IGVudHJ5LCBSZWdpc3RlcklEIHRvLCBSZWdpc3RlcklEIGZyb20pCiAgICAgewogICAgICAg
ICBsb2FkUHRyKEFkZHJlc3MoZnJvbSwgZW50cnkgKiBzaXplb2YoUmVnaXN0ZXIpKSwgdG8pOwog
ICAgIH0KIAotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBKU0ludGVyZmFjZUpJVDo6ZW1pdFB1dFRv
Q2FsbEZyYW1lSGVhZGVyKFJlZ2lzdGVySUQgZnJvbSwgSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVy
RW50cnkgZW50cnkpCisgICAgQUxXQVlTX0lOTElORSB2b2lkIEpTSW50ZXJmYWNlSklUOjplbWl0
UHV0VG9DYWxsRnJhbWVIZWFkZXIoUmVnaXN0ZXJJRCBmcm9tLCBDYWxsRnJhbWVIZWFkZXI6OkVu
dHJ5IGVudHJ5KQogICAgIHsKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQogICAgICAgICBzdG9yZVB0
cihmcm9tLCBwYXlsb2FkRm9yKGVudHJ5LCBjYWxsRnJhbWVSZWdpc3RlcikpOwpAQCAtMjM1LDEy
ICsyMzUsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAjZW5kaWYKICAgICB9CiAKLSAgICBBTFdBWVNf
SU5MSU5FIHZvaWQgSlNJbnRlcmZhY2VKSVQ6OmVtaXRQdXRUb0NhbGxGcmFtZUhlYWRlcih2b2lk
KiB2YWx1ZSwgSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyRW50cnkgZW50cnkpCisgICAgQUxXQVlT
X0lOTElORSB2b2lkIEpTSW50ZXJmYWNlSklUOjplbWl0UHV0VG9DYWxsRnJhbWVIZWFkZXIodm9p
ZCogdmFsdWUsIENhbGxGcmFtZUhlYWRlcjo6RW50cnkgZW50cnkpCiAgICAgewogICAgICAgICBz
dG9yZVB0cihUcnVzdGVkSW1tUHRyKHZhbHVlKSwgQWRkcmVzcyhjYWxsRnJhbWVSZWdpc3Rlciwg
ZW50cnkgKiBzaXplb2YoUmVnaXN0ZXIpKSk7CiAgICAgfQogCi0gICAgQUxXQVlTX0lOTElORSB2
b2lkIEpTSW50ZXJmYWNlSklUOjplbWl0UHV0Q2VsbFRvQ2FsbEZyYW1lSGVhZGVyKFJlZ2lzdGVy
SUQgZnJvbSwgSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyRW50cnkgZW50cnkpCisgICAgQUxXQVlT
X0lOTElORSB2b2lkIEpTSW50ZXJmYWNlSklUOjplbWl0UHV0Q2VsbFRvQ2FsbEZyYW1lSGVhZGVy
KFJlZ2lzdGVySUQgZnJvbSwgQ2FsbEZyYW1lSGVhZGVyOjpFbnRyeSBlbnRyeSkKICAgICB7CiAj
aWYgVVNFKEpTVkFMVUUzMl82NCkKICAgICAgICAgc3RvcmUzMihUcnVzdGVkSW1tMzIoSlNWYWx1
ZTo6Q2VsbFRhZyksIHRhZ0ZvcihlbnRyeSwgY2FsbEZyYW1lUmVnaXN0ZXIpKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU2V0dXBWYXJhcmdzRnJhbWUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU2V0dXBWYXJhcmdzRnJhbWUuY3BwCShyZXZp
c2lvbiAyMDI5NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1NldHVwVmFyYXJnc0Zy
YW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcsNyArNDcsNyBAQCB2b2lkIGVtaXRTZXRWYXJh
cmdzRnJhbWUoQ0NhbGxIZWxwZXJzJiBqCiAgICAgaml0LmFuZFB0cihDQ2FsbEhlbHBlcnM6OlRy
dXN0ZWRJbW0zMih+KHN0YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCkgLSAxKSksIHJlc3VsdEdQUik7
CiAKICAgICBqaXQuYWRkUHRyKGxlbmd0aEdQUiwgcmVzdWx0R1BSKTsKLSAgICBqaXQuYWRkUHRy
KENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlclNpemUg
KyAobGVuZ3RoSW5jbHVkZXNUaGlzPyAwIDogMSkpLCByZXN1bHRHUFIpOworICAgIGppdC5hZGRQ
dHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoQ2FsbEZyYW1lSGVhZGVyOjpTaXplICsgKGxl
bmd0aEluY2x1ZGVzVGhpcz8gMCA6IDEpKSwgcmVzdWx0R1BSKTsKICAgICAKICAgICAvLyByZXN1
bHRHUFIgbm93IGhhcyB0aGUgcmVxdWlyZWQgZnJhbWUgc2l6ZSBpbiBSZWdpc3RlciB1bml0cwog
ICAgIC8vIFJvdW5kIHJlc3VsdEdQUiB0byBuZXh0IG11bHRpcGxlIG9mIHN0YWNrQWxpZ25tZW50
UmVnaXN0ZXJzKCkKQEAgLTg1LDcgKzg1LDcgQEAgdm9pZCBlbWl0U2V0dXBWYXJhcmdzRnJhbWVG
YXN0Q2FzZShDQ2FsbAogICAgIHNsb3dDYXNlLmFwcGVuZChqaXQuYnJhbmNoUHRyKENDYWxsSGVs
cGVyczo6QWJvdmUsIENDYWxsSGVscGVyczo6QWJzb2x1dGVBZGRyZXNzKGppdC52bSgpLT5hZGRy
ZXNzT2ZKU0NQVVN0YWNrTGltaXQoKSksIHNjcmF0Y2hHUFIyKSk7CiAKICAgICAvLyBJbml0aWFs
aXplIEFyZ3VtZW50Q291bnQuCi0gICAgaml0LnN0b3JlMzIoc2NyYXRjaEdQUjEsIENDYWxsSGVs
cGVyczo6QWRkcmVzcyhzY3JhdGNoR1BSMiwgSlNTdGFjazo6QXJndW1lbnRDb3VudCAqIHN0YXRp
Y19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkgKyBQYXlsb2FkT2Zmc2V0KSk7CisgICAgaml0
LnN0b3JlMzIoc2NyYXRjaEdQUjEsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzY3JhdGNoR1BSMiwg
Q2FsbEZyYW1lSGVhZGVyOjpBcmd1bWVudENvdW50ICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2Yo
UmVnaXN0ZXIpKSArIFBheWxvYWRPZmZzZXQpKTsKIAogICAgIC8vIENvcHkgYXJndW1lbnRzLgog
ICAgIGppdC5zaWduRXh0ZW5kMzJUb1B0cihzY3JhdGNoR1BSMSwgc2NyYXRjaEdQUjEpOwpAQCAt
MTMxLDcgKzEzMSw3IEBAIHZvaWQgZW1pdFNldHVwVmFyYXJnc0ZyYW1lRmFzdENhc2UoQ0NhbGwK
ICAgICAgICAgICAgIGZpcnN0QXJndW1lbnRSZWcgPSBWaXJ0dWFsUmVnaXN0ZXIoMCk7CiAgICAg
fSBlbHNlIHsKICAgICAgICAgYXJndW1lbnRDb3VudFJlY292ZXJ5ID0gVmFsdWVSZWNvdmVyeTo6
ZGlzcGxhY2VkSW5KU1N0YWNrKAotICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyKEpTU3RhY2s6
OkFyZ3VtZW50Q291bnQpLCBEYXRhRm9ybWF0SW50MzIpOworICAgICAgICAgICAgVmlydHVhbFJl
Z2lzdGVyKENhbGxGcmFtZUhlYWRlcjo6QXJndW1lbnRDb3VudCksIERhdGFGb3JtYXRJbnQzMik7
CiAgICAgICAgIGZpcnN0QXJndW1lbnRSZWcgPSBWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lOjph
cmd1bWVudE9mZnNldCgwKSk7CiAgICAgfQogICAgIGVtaXRTZXR1cFZhcmFyZ3NGcmFtZUZhc3RD
YXNlKGppdCwgbnVtVXNlZFNsb3RzR1BSLCBzY3JhdGNoR1BSMSwgc2NyYXRjaEdQUjIsIHNjcmF0
Y2hHUFIzLCBhcmd1bWVudENvdW50UmVjb3ZlcnksIGZpcnN0QXJndW1lbnRSZWcsIGZpcnN0VmFy
QXJnT2Zmc2V0LCBzbG93Q2FzZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1Nw
ZWNpYWxpemVkVGh1bmtKSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L1NwZWNpYWxpemVkVGh1bmtKSVQuaAkocmV2aXNpb24gMjAyOTU0KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9TcGVjaWFsaXplZFRodW5rSklULmgJKHdvcmtpbmcgY29weSkKQEAg
LTQ2LDcgKzQ2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBlbWl0RnVuY3Rpb25Q
cm9sb2d1ZSgpOwogICAgICAgICAgICAgZW1pdFNhdmVUaGVuTWF0ZXJpYWxpemVUYWdSZWdpc3Rl
cnMoKTsKICAgICAgICAgICAgIC8vIENoZWNrIHRoYXQgd2UgaGF2ZSB0aGUgZXhwZWN0ZWQgbnVt
YmVyIG9mIGFyZ3VtZW50cwotICAgICAgICAgICAgbV9mYWlsdXJlcy5hcHBlbmQoYnJhbmNoMzIo
Tm90RXF1YWwsIHBheWxvYWRGb3IoSlNTdGFjazo6QXJndW1lbnRDb3VudCksIFRydXN0ZWRJbW0z
MihleHBlY3RlZEFyZ0NvdW50ICsgMSkpKTsKKyAgICAgICAgICAgIG1fZmFpbHVyZXMuYXBwZW5k
KGJyYW5jaDMyKE5vdEVxdWFsLCBwYXlsb2FkRm9yKENhbGxGcmFtZUhlYWRlcjo6QXJndW1lbnRD
b3VudCksIFRydXN0ZWRJbW0zMihleHBlY3RlZEFyZ0NvdW50ICsgMSkpKTsKICAgICAgICAgfQog
ICAgICAgICAKICAgICAgICAgZXhwbGljaXQgU3BlY2lhbGl6ZWRUaHVua0pJVChWTSogdm0pCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCShy
ZXZpc2lvbiAyMDI5NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJh
dG9ycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1OSw3ICsyNTksNyBAQCBzdGF0aWMgTWFjcm9B
c3NlbWJsZXJDb2RlUmVmIG5hdGl2ZUZvckdlCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAg
IGppdC5lbWl0UHV0VG9DYWxsRnJhbWVIZWFkZXIoMCwgSlNTdGFjazo6Q29kZUJsb2NrKTsKKyAg
ICBqaXQuZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVyKDAsIENhbGxGcmFtZUhlYWRlcjo6Q29kZUJs
b2NrKTsKICAgICBqaXQuc3RvcmVQdHIoSlNJbnRlcmZhY2VKSVQ6OmNhbGxGcmFtZVJlZ2lzdGVy
LCAmdm0tPnRvcENhbGxGcmFtZSk7CiAKICNpZiBDUFUoWDg2KQpAQCAtMjcwLDcgKzI3MCw3IEBA
IHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgbmF0aXZlRm9yR2UKICAgICBqaXQuc3ViUHRy
KEpTSW50ZXJmYWNlSklUOjpUcnVzdGVkSW1tMzIoOCksIEpTSW50ZXJmYWNlSklUOjpzdGFja1Bv
aW50ZXJSZWdpc3Rlcik7IC8vIEFsaWduIHN0YWNrIGFmdGVyIHByb2xvZ3VlLgogCiAgICAgLy8g
Y2FsbCB0aGUgZnVuY3Rpb24KLSAgICBqaXQuZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXJQdHIo
SlNTdGFjazo6Q2FsbGVlLCBKU0ludGVyZmFjZUpJVDo6cmVnVDEpOworICAgIGppdC5lbWl0R2V0
RnJvbUNhbGxGcmFtZUhlYWRlclB0cihDYWxsRnJhbWVIZWFkZXI6OkNhbGxlZSwgSlNJbnRlcmZh
Y2VKSVQ6OnJlZ1QxKTsKICAgICBqaXQubG9hZFB0cihKU0ludGVyZmFjZUpJVDo6QWRkcmVzcyhK
U0ludGVyZmFjZUpJVDo6cmVnVDEsIEpTRnVuY3Rpb246Om9mZnNldE9mRXhlY3V0YWJsZSgpKSwg
SlNJbnRlcmZhY2VKSVQ6OnJlZ1QxKTsKICAgICBqaXQuY2FsbChKU0ludGVyZmFjZUpJVDo6QWRk
cmVzcyhKU0ludGVyZmFjZUpJVDo6cmVnVDEsIGV4ZWN1dGFibGVPZmZzZXRUb0Z1bmN0aW9uKSk7
CiAKQEAgLTI4Miw3ICsyODIsNyBAQCBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIG5hdGl2
ZUZvckdlCiAgICAgLy8gSG9zdCBmdW5jdGlvbiBzaWduYXR1cmU6IGYoRXhlY1N0YXRlKik7CiAg
ICAgaml0Lm1vdmUoSlNJbnRlcmZhY2VKSVQ6OmNhbGxGcmFtZVJlZ2lzdGVyLCBYODZSZWdpc3Rl
cnM6OmVkaSk7CiAKLSAgICBqaXQuZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXJQdHIoSlNTdGFj
azo6Q2FsbGVlLCBYODZSZWdpc3RlcnM6OmVzaSk7CisgICAgaml0LmVtaXRHZXRGcm9tQ2FsbEZy
YW1lSGVhZGVyUHRyKENhbGxGcmFtZUhlYWRlcjo6Q2FsbGVlLCBYODZSZWdpc3RlcnM6OmVzaSk7
CiAgICAgaml0LmxvYWRQdHIoSlNJbnRlcmZhY2VKSVQ6OkFkZHJlc3MoWDg2UmVnaXN0ZXJzOjpl
c2ksIEpTRnVuY3Rpb246Om9mZnNldE9mRXhlY3V0YWJsZSgpKSwgWDg2UmVnaXN0ZXJzOjpyOSk7
CiAgICAgaml0LmNhbGwoSlNJbnRlcmZhY2VKSVQ6OkFkZHJlc3MoWDg2UmVnaXN0ZXJzOjpyOSwg
ZXhlY3V0YWJsZU9mZnNldFRvRnVuY3Rpb24pKTsKIApAQCAtMjk1LDcgKzI5NSw3IEBAIHN0YXRp
YyBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgbmF0aXZlRm9yR2UKICAgICAvLyBBdCB0aGlzIHBvaW50
IHRoZSBzdGFjayBpcyBhbGlnbmVkIHRvIDE2IGJ5dGVzLCBidXQgaWYgdGhpcyBjaGFuZ2VzIGF0
IHNvbWUgcG9pbnQsIHdlIG5lZWQgdG8gZW1pdCBjb2RlIHRvIGFsaWduIGl0LgogICAgIGppdC5z
dWJQdHIoSlNJbnRlcmZhY2VKSVQ6OlRydXN0ZWRJbW0zMig0ICogc2l6ZW9mKGludDY0X3QpKSwg
SlNJbnRlcmZhY2VKSVQ6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKIAotICAgIGppdC5lbWl0R2V0
RnJvbUNhbGxGcmFtZUhlYWRlclB0cihKU1N0YWNrOjpDYWxsZWUsIFg4NlJlZ2lzdGVyczo6ZWR4
KTsKKyAgICBqaXQuZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXJQdHIoQ2FsbEZyYW1lSGVhZGVy
OjpDYWxsZWUsIFg4NlJlZ2lzdGVyczo6ZWR4KTsKICAgICBqaXQubG9hZFB0cihKU0ludGVyZmFj
ZUpJVDo6QWRkcmVzcyhYODZSZWdpc3RlcnM6OmVkeCwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZFeGVj
dXRhYmxlKCkpLCBYODZSZWdpc3RlcnM6OnI5KTsKICAgICBqaXQuY2FsbChKU0ludGVyZmFjZUpJ
VDo6QWRkcmVzcyhYODZSZWdpc3RlcnM6OnI5LCBleGVjdXRhYmxlT2Zmc2V0VG9GdW5jdGlvbikp
OwogCkBAIC0zMTAsNyArMzEwLDcgQEAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBuYXRp
dmVGb3JHZQogICAgIC8vIEhvc3QgZnVuY3Rpb24gc2lnbmF0dXJlOiBmKEV4ZWNTdGF0ZSopOwog
ICAgIGppdC5tb3ZlKEpTSW50ZXJmYWNlSklUOjpjYWxsRnJhbWVSZWdpc3RlciwgQVJNNjRSZWdp
c3RlcnM6OngwKTsKIAotICAgIGppdC5lbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlclB0cihKU1N0
YWNrOjpDYWxsZWUsIEFSTTY0UmVnaXN0ZXJzOjp4MSk7CisgICAgaml0LmVtaXRHZXRGcm9tQ2Fs
bEZyYW1lSGVhZGVyUHRyKENhbGxGcmFtZUhlYWRlcjo6Q2FsbGVlLCBBUk02NFJlZ2lzdGVyczo6
eDEpOwogICAgIGppdC5sb2FkUHRyKEpTSW50ZXJmYWNlSklUOjpBZGRyZXNzKEFSTTY0UmVnaXN0
ZXJzOjp4MSwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZFeGVjdXRhYmxlKCkpLCBBUk02NFJlZ2lzdGVy
czo6eDIpOwogICAgIGppdC5jYWxsKEpTSW50ZXJmYWNlSklUOjpBZGRyZXNzKEFSTTY0UmVnaXN0
ZXJzOjp4MiwgZXhlY3V0YWJsZU9mZnNldFRvRnVuY3Rpb24pKTsKICNlbGlmIENQVShBUk0pIHx8
IENQVShTSDQpIHx8IENQVShNSVBTKQpAQCAtMzIzLDcgKzMyMyw3IEBAIHN0YXRpYyBNYWNyb0Fz
c2VtYmxlckNvZGVSZWYgbmF0aXZlRm9yR2UKICAgICAvLyBIb3N0IGZ1bmN0aW9uIHNpZ25hdHVy
ZSBpcyBmKEV4ZWNTdGF0ZSopLgogICAgIGppdC5tb3ZlKEpTSW50ZXJmYWNlSklUOjpjYWxsRnJh
bWVSZWdpc3RlciwgSlNJbnRlcmZhY2VKSVQ6OmFyZ3VtZW50R1BSMCk7CiAKLSAgICBqaXQuZW1p
dEdldEZyb21DYWxsRnJhbWVIZWFkZXJQdHIoSlNTdGFjazo6Q2FsbGVlLCBKU0ludGVyZmFjZUpJ
VDo6YXJndW1lbnRHUFIxKTsKKyAgICBqaXQuZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXJQdHIo
Q2FsbEZyYW1lSGVhZGVyOjpDYWxsZWUsIEpTSW50ZXJmYWNlSklUOjphcmd1bWVudEdQUjEpOwog
ICAgIGppdC5sb2FkUHRyKEpTSW50ZXJmYWNlSklUOjpBZGRyZXNzKEpTSW50ZXJmYWNlSklUOjph
cmd1bWVudEdQUjEsIEpTRnVuY3Rpb246Om9mZnNldE9mRXhlY3V0YWJsZSgpKSwgSlNJbnRlcmZh
Y2VKSVQ6OnJlZ1QyKTsKICAgICBqaXQuY2FsbChKU0ludGVyZmFjZUpJVDo6QWRkcmVzcyhKU0lu
dGVyZmFjZUpJVDo6cmVnVDIsIGV4ZWN1dGFibGVPZmZzZXRUb0Z1bmN0aW9uKSk7CiAKQEAgLTQx
OSw4ICs0MTksOCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgYXJpdHlGaXh1cEdlbmVyYXRvCiAg
ICAgaml0LnBvcChKU0ludGVyZmFjZUpJVDo6cmVnVDQpOwogIyAgZW5kaWYKICAgICBqaXQubW92
ZShKU0ludGVyZmFjZUpJVDo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEpTSW50ZXJmYWNlSklUOjpyZWdU
Myk7Ci0gICAgaml0LmxvYWQzMihKU0ludGVyZmFjZUpJVDo6QWRkcmVzcyhKU0ludGVyZmFjZUpJ
VDo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEpTU3RhY2s6OkFyZ3VtZW50Q291bnQgKiBzaXplb2YoUmVn
aXN0ZXIpKSwgSlNJbnRlcmZhY2VKSVQ6OmFyZ3VtZW50R1BSMik7Ci0gICAgaml0LmFkZDMyKEpT
SW50ZXJmYWNlSklUOjpUcnVzdGVkSW1tMzIoSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyU2l6ZSks
IEpTSW50ZXJmYWNlSklUOjphcmd1bWVudEdQUjIpOworICAgIGppdC5sb2FkMzIoSlNJbnRlcmZh
Y2VKSVQ6OkFkZHJlc3MoSlNJbnRlcmZhY2VKSVQ6OmNhbGxGcmFtZVJlZ2lzdGVyLCBDYWxsRnJh
bWVIZWFkZXI6OkFyZ3VtZW50Q291bnQgKiBzaXplb2YoUmVnaXN0ZXIpKSwgSlNJbnRlcmZhY2VK
SVQ6OmFyZ3VtZW50R1BSMik7CisgICAgaml0LmFkZDMyKEpTSW50ZXJmYWNlSklUOjpUcnVzdGVk
SW1tMzIoQ2FsbEZyYW1lSGVhZGVyOjpTaXplKSwgSlNJbnRlcmZhY2VKSVQ6OmFyZ3VtZW50R1BS
Mik7CiAKICAgICAvLyBDaGVjayB0byBzZWUgaWYgd2UgaGF2ZSBleHRyYSBzbG90cyB3ZSBjYW4g
dXNlCiAgICAgaml0Lm1vdmUoSlNJbnRlcmZhY2VKSVQ6OmFyZ3VtZW50R1BSMCwgSlNJbnRlcmZh
Y2VKSVQ6OmFyZ3VtZW50R1BSMSk7CkBAIC00NjksOCArNDY5LDggQEAgTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmIGFyaXR5Rml4dXBHZW5lcmF0bwogICAgIGppdC5wb3AoSlNJbnRlcmZhY2VKSVQ6OnJl
Z1Q0KTsKICMgIGVuZGlmCiAgICAgaml0Lm1vdmUoSlNJbnRlcmZhY2VKSVQ6OmNhbGxGcmFtZVJl
Z2lzdGVyLCBKU0ludGVyZmFjZUpJVDo6cmVnVDMpOwotICAgIGppdC5sb2FkMzIoSlNJbnRlcmZh
Y2VKSVQ6OkFkZHJlc3MoSlNJbnRlcmZhY2VKSVQ6OmNhbGxGcmFtZVJlZ2lzdGVyLCBKU1N0YWNr
OjpBcmd1bWVudENvdW50ICogc2l6ZW9mKFJlZ2lzdGVyKSksIEpTSW50ZXJmYWNlSklUOjphcmd1
bWVudEdQUjIpOwotICAgIGppdC5hZGQzMihKU0ludGVyZmFjZUpJVDo6VHJ1c3RlZEltbTMyKEpT
U3RhY2s6OkNhbGxGcmFtZUhlYWRlclNpemUpLCBKU0ludGVyZmFjZUpJVDo6YXJndW1lbnRHUFIy
KTsKKyAgICBqaXQubG9hZDMyKEpTSW50ZXJmYWNlSklUOjpBZGRyZXNzKEpTSW50ZXJmYWNlSklU
OjpjYWxsRnJhbWVSZWdpc3RlciwgQ2FsbEZyYW1lSGVhZGVyOjpBcmd1bWVudENvdW50ICogc2l6
ZW9mKFJlZ2lzdGVyKSksIEpTSW50ZXJmYWNlSklUOjphcmd1bWVudEdQUjIpOworICAgIGppdC5h
ZGQzMihKU0ludGVyZmFjZUpJVDo6VHJ1c3RlZEltbTMyKENhbGxGcmFtZUhlYWRlcjo6U2l6ZSks
IEpTSW50ZXJmYWNlSklUOjphcmd1bWVudEdQUjIpOwogCiAgICAgLy8gQ2hlY2sgdG8gc2VlIGlm
IHdlIGhhdmUgZXh0cmEgc2xvdHMgd2UgY2FuIHVzZQogICAgIGppdC5tb3ZlKEpTSW50ZXJmYWNl
SklUOjphcmd1bWVudEdQUjAsIEpTSW50ZXJmYWNlSklUOjphcmd1bWVudEdQUjEpOwpAQCAtMTA0
Myw4ICsxMDQzLDggQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGJvdW5kVGhpc05vQXJnc0Z1bgog
ICAgIGppdC5lbWl0RnVuY3Rpb25Qcm9sb2d1ZSgpOwogICAgIAogICAgIC8vIFNldCB1cCBvdXIg
Y2FsbCBmcmFtZS4KLSAgICBqaXQuc3RvcmVQdHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRy
KG51bGxwdHIpLCBDQ2FsbEhlbHBlcnM6OmFkZHJlc3NGb3IoSlNTdGFjazo6Q29kZUJsb2NrKSk7
Ci0gICAgaml0LnN0b3JlMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMCksIENDYWxsSGVs
cGVyczo6dGFnRm9yKEpTU3RhY2s6OkFyZ3VtZW50Q291bnQpKTsKKyAgICBqaXQuc3RvcmVQdHIo
Q0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKG51bGxwdHIpLCBDQ2FsbEhlbHBlcnM6OmFkZHJl
c3NGb3IoQ2FsbEZyYW1lSGVhZGVyOjpDb2RlQmxvY2spKTsKKyAgICBqaXQuc3RvcmUzMihDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW0zMigwKSwgQ0NhbGxIZWxwZXJzOjp0YWdGb3IoQ2FsbEZyYW1l
SGVhZGVyOjpBcmd1bWVudENvdW50KSk7CiAKICAgICB1bnNpZ25lZCBleHRyYVN0YWNrTmVlZGVk
ID0gMDsKICAgICBpZiAodW5zaWduZWQgc3RhY2tNaXNhbGlnbm1lbnQgPSBzaXplb2YoQ2FsbGVy
RnJhbWVBbmRQQykgJSBzdGFja0FsaWdubWVudEJ5dGVzKCkpCkBAIC0xMDY1LDggKzEwNjUsOCBA
QCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgYm91bmRUaGlzTm9BcmdzRnVuCiAgICAgLy8KICAgICAv
LyBUaGF0J3MgcmVhbGx5IGFsbCB0aGVyZSBpcyB0byB0aGlzLiBXZSBoYXZlIGFsbCB0aGUgcmVn
aXN0ZXJzIHdlIG5lZWQgdG8gZG8gaXQuCiAgICAgCi0gICAgaml0LmxvYWQzMihDQ2FsbEhlbHBl
cnM6OnBheWxvYWRGb3IoSlNTdGFjazo6QXJndW1lbnRDb3VudCksIEdQUkluZm86OnJlZ1QxKTsK
LSAgICBqaXQuYWRkMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoSlNTdGFjazo6Q2FsbEZy
YW1lSGVhZGVyU2l6ZSAtIEpTU3RhY2s6OkNhbGxlckZyYW1lQW5kUENTaXplKSwgR1BSSW5mbzo6
cmVnVDEsIEdQUkluZm86OnJlZ1QyKTsKKyAgICBqaXQubG9hZDMyKENDYWxsSGVscGVyczo6cGF5
bG9hZEZvcihDYWxsRnJhbWVIZWFkZXI6OkFyZ3VtZW50Q291bnQpLCBHUFJJbmZvOjpyZWdUMSk7
CisgICAgaml0LmFkZDMyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKENhbGxGcmFtZUhlYWRl
cjo6U2l6ZSAtIENhbGxGcmFtZUhlYWRlcjo6Q2FsbGVyRnJhbWVBbmRQQ1NpemUpLCBHUFJJbmZv
OjpyZWdUMSwgR1BSSW5mbzo6cmVnVDIpOwogICAgIGppdC5sc2hpZnQzMihDQ2FsbEhlbHBlcnM6
OlRydXN0ZWRJbW0zMigzKSwgR1BSSW5mbzo6cmVnVDIpOwogICAgIGppdC5hZGQzMihDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW0zMihzdGFja0FsaWdubWVudEJ5dGVzKCkgLSAxKSwgR1BSSW5mbzo6
cmVnVDIpOwogICAgIGppdC5hbmQzMihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigtc3RhY2tB
bGlnbm1lbnRCeXRlcygpKSwgR1BSSW5mbzo6cmVnVDIpOwpAQCAtMTA4MSwxNiArMTA4MSwxNiBA
QCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgYm91bmRUaGlzTm9BcmdzRnVuCiAKICAgICAvLyBEbyBi
YXNpYyBjYWxsZWUgZnJhbWUgc2V0dXAsIGluY2x1ZGluZyAndGhpcycuCiAgICAgCi0gICAgaml0
LmxvYWRDZWxsKENDYWxsSGVscGVyczo6YWRkcmVzc0ZvcihKU1N0YWNrOjpDYWxsZWUpLCBHUFJJ
bmZvOjpyZWdUMyk7CisgICAgaml0LmxvYWRDZWxsKENDYWxsSGVscGVyczo6YWRkcmVzc0ZvcihD
YWxsRnJhbWVIZWFkZXI6OkNhbGxlZSksIEdQUkluZm86OnJlZ1QzKTsKIAotICAgIGppdC5zdG9y
ZTMyKEdQUkluZm86OnJlZ1QxLCBDQ2FsbEhlbHBlcnM6OmNhbGxlZUZyYW1lUGF5bG9hZFNsb3Qo
SlNTdGFjazo6QXJndW1lbnRDb3VudCkpOworICAgIGppdC5zdG9yZTMyKEdQUkluZm86OnJlZ1Qx
LCBDQ2FsbEhlbHBlcnM6OmNhbGxlZUZyYW1lUGF5bG9hZFNsb3QoQ2FsbEZyYW1lSGVhZGVyOjpB
cmd1bWVudENvdW50KSk7CiAgICAgCiAgICAgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzID0gSlNWYWx1
ZVJlZ3M6OndpdGhUd29BdmFpbGFibGVSZWdzKEdQUkluZm86OnJlZ1QwLCBHUFJJbmZvOjpyZWdU
Mik7CiAgICAgaml0LmxvYWRWYWx1ZShDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6cmVn
VDMsIEpTQm91bmRGdW5jdGlvbjo6b2Zmc2V0T2ZCb3VuZFRoaXMoKSksIHZhbHVlUmVncyk7CiAg
ICAgaml0LnN0b3JlVmFsdWUodmFsdWVSZWdzLCBDQ2FsbEhlbHBlcnM6OmNhbGxlZUFyZ3VtZW50
U2xvdCgwKSk7CiAKICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5m
bzo6cmVnVDMsIEpTQm91bmRGdW5jdGlvbjo6b2Zmc2V0T2ZUYXJnZXRGdW5jdGlvbigpKSwgR1BS
SW5mbzo6cmVnVDMpOwotICAgIGppdC5zdG9yZUNlbGwoR1BSSW5mbzo6cmVnVDMsIENDYWxsSGVs
cGVyczo6Y2FsbGVlRnJhbWVTbG90KEpTU3RhY2s6OkNhbGxlZSkpOworICAgIGppdC5zdG9yZUNl
bGwoR1BSSW5mbzo6cmVnVDMsIENDYWxsSGVscGVyczo6Y2FsbGVlRnJhbWVTbG90KENhbGxGcmFt
ZUhlYWRlcjo6Q2FsbGVlKSk7CiAgICAgCiAgICAgLy8gT0ssIG5vdyB3ZSBjYW4gc3RhcnQgY29w
eWluZy4gVGhpcyBpcyBhIHNpbXBsZSBtYXR0ZXIgb2YgY29weWluZyBwYXJhbWV0ZXJzIGZyb20g
dGhlIGNhbGxlcidzCiAgICAgLy8gZnJhbWUgdG8gdGhlIGNhbGxlZSdzIGZyYW1lLiBOb3RlIHRo
YXQgd2Uga25vdyB0aGF0IHJlZ1QxICh0aGUgYXJndW1lbnQgY291bnQpIG11c3QgYmUgYXQKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwCShyZXZpc2lvbiAy
MDI5NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtOTYsMTggKzk2LDE4IEBAIHZvaWQgRGF0YTo6cGVyZm9ybUFzc2VydGlv
bnMoVk0mIHZtKQogCiAgICAgU1RBVElDX0FTU0VSVChzaXplb2Yodm9pZCopID09IFB0clNpemUp
OwogICAgIFNUQVRJQ19BU1NFUlQoc2l6ZW9mKFJlZ2lzdGVyKSA9PSBTbG90U2l6ZSk7Ci0gICAg
U1RBVElDX0FTU0VSVChKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJTaXplID09IENhbGxGcmFtZUhl
YWRlclNsb3RzKTsKKyAgICBTVEFUSUNfQVNTRVJUKENhbGxGcmFtZUhlYWRlcjo6U2l6ZSA9PSBD
YWxsRnJhbWVIZWFkZXJTbG90cyk7CiAKICAgICBBU1NFUlQoIUNhbGxGcmFtZTo6Y2FsbGVyRnJh
bWVPZmZzZXQoKSk7Ci0gICAgU1RBVElDX0FTU0VSVChKU1N0YWNrOjpDYWxsZXJGcmFtZUFuZFBD
U2l6ZSA9PSAoUHRyU2l6ZSAqIDIpIC8gU2xvdFNpemUpOworICAgIFNUQVRJQ19BU1NFUlQoQ2Fs
bEZyYW1lSGVhZGVyOjpDYWxsZXJGcmFtZUFuZFBDU2l6ZSA9PSAoUHRyU2l6ZSAqIDIpIC8gU2xv
dFNpemUpOwogICAgIEFTU0VSVChDYWxsRnJhbWU6OnJldHVyblBDT2Zmc2V0KCkgPT0gQ2FsbEZy
YW1lOjpjYWxsZXJGcmFtZU9mZnNldCgpICsgUHRyU2l6ZSk7Ci0gICAgQVNTRVJUKEpTU3RhY2s6
OkNvZGVCbG9jayAqIHNpemVvZihSZWdpc3RlcikgPT0gQ2FsbEZyYW1lOjpyZXR1cm5QQ09mZnNl
dCgpICsgUHRyU2l6ZSk7Ci0gICAgU1RBVElDX0FTU0VSVChKU1N0YWNrOjpDYWxsZWUgKiBzaXpl
b2YoUmVnaXN0ZXIpID09IEpTU3RhY2s6OkNvZGVCbG9jayAqIHNpemVvZihSZWdpc3RlcikgKyBT
bG90U2l6ZSk7Ci0gICAgU1RBVElDX0FTU0VSVChKU1N0YWNrOjpBcmd1bWVudENvdW50ICogc2l6
ZW9mKFJlZ2lzdGVyKSA9PSBKU1N0YWNrOjpDYWxsZWUgKiBzaXplb2YoUmVnaXN0ZXIpICsgU2xv
dFNpemUpOwotICAgIFNUQVRJQ19BU1NFUlQoSlNTdGFjazo6VGhpc0FyZ3VtZW50ICogc2l6ZW9m
KFJlZ2lzdGVyKSA9PSBKU1N0YWNrOjpBcmd1bWVudENvdW50ICogc2l6ZW9mKFJlZ2lzdGVyKSAr
IFNsb3RTaXplKTsKLSAgICBTVEFUSUNfQVNTRVJUKEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlclNp
emUgPT0gSlNTdGFjazo6VGhpc0FyZ3VtZW50KTsKKyAgICBBU1NFUlQoQ2FsbEZyYW1lSGVhZGVy
OjpDb2RlQmxvY2sgKiBzaXplb2YoUmVnaXN0ZXIpID09IENhbGxGcmFtZTo6cmV0dXJuUENPZmZz
ZXQoKSArIFB0clNpemUpOworICAgIFNUQVRJQ19BU1NFUlQoQ2FsbEZyYW1lSGVhZGVyOjpDYWxs
ZWUgKiBzaXplb2YoUmVnaXN0ZXIpID09IENhbGxGcmFtZUhlYWRlcjo6Q29kZUJsb2NrICogc2l6
ZW9mKFJlZ2lzdGVyKSArIFNsb3RTaXplKTsKKyAgICBTVEFUSUNfQVNTRVJUKENhbGxGcmFtZUhl
YWRlcjo6QXJndW1lbnRDb3VudCAqIHNpemVvZihSZWdpc3RlcikgPT0gQ2FsbEZyYW1lSGVhZGVy
OjpDYWxsZWUgKiBzaXplb2YoUmVnaXN0ZXIpICsgU2xvdFNpemUpOworICAgIFNUQVRJQ19BU1NF
UlQoQ2FsbEZyYW1lSGVhZGVyOjpUaGlzQXJndW1lbnQgKiBzaXplb2YoUmVnaXN0ZXIpID09IENh
bGxGcmFtZUhlYWRlcjo6QXJndW1lbnRDb3VudCAqIHNpemVvZihSZWdpc3RlcikgKyBTbG90U2l6
ZSk7CisgICAgU1RBVElDX0FTU0VSVChDYWxsRnJhbWVIZWFkZXI6OlNpemUgPT0gQ2FsbEZyYW1l
SGVhZGVyOjpUaGlzQXJndW1lbnQpOwogCi0gICAgQVNTRVJUKENhbGxGcmFtZTo6YXJndW1lbnRP
ZmZzZXRJbmNsdWRpbmdUaGlzKDApID09IEpTU3RhY2s6OlRoaXNBcmd1bWVudCk7CisgICAgQVNT
RVJUKENhbGxGcmFtZTo6YXJndW1lbnRPZmZzZXRJbmNsdWRpbmdUaGlzKDApID09IENhbGxGcmFt
ZUhlYWRlcjo6VGhpc0FyZ3VtZW50KTsKIAogI2lmIENQVShCSUdfRU5ESUFOKQogICAgIEFTU0VS
VChPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnRhZykgPT0g
MCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRo
cy5jcHAJKHJldmlzaW9uIDIwMjk1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludFNsb3dQYXRocy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMjYsNyArMTMyNiw3IEBAIGlu
bGluZSBTbG93UGF0aFJldHVyblR5cGUgZ2VuZXJpY0NhbGwoRXgKICAgICBFeGVjU3RhdGUqIGV4
ZWNDYWxsZWUgPSBleGVjIC0gcGNbNF0udS5vcGVyYW5kOwogICAgIAogICAgIGV4ZWNDYWxsZWUt
PnNldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKHBjWzNdLnUub3BlcmFuZCk7Ci0gICAgZXhl
Y0NhbGxlZS0+dW5jaGVja2VkUihKU1N0YWNrOjpDYWxsZWUpID0gY2FsbGVlQXNWYWx1ZTsKKyAg
ICBleGVjQ2FsbGVlLT51bmNoZWNrZWRSKENhbGxGcmFtZUhlYWRlcjo6Q2FsbGVlKSA9IGNhbGxl
ZUFzVmFsdWU7CiAgICAgZXhlY0NhbGxlZS0+c2V0Q2FsbGVyRnJhbWUoZXhlYyk7CiAgICAgCiAg
ICAgQVNTRVJUKHBjWzVdLnUuY2FsbExpbmtJbmZvKTsKQEAgLTE0MDUsNyArMTQwNSw3IEBAIGlu
bGluZSBTbG93UGF0aFJldHVyblR5cGUgdmFyYXJnc1NldHVwKEUKICAgICAgICAgc2V0dXBGb3J3
YXJkQXJndW1lbnRzRnJhbWVBbmRTZXRUaGlzKGV4ZWMsIGV4ZWNDYWxsZWUsIExMSU5UX09QX0Mo
MykuanNWYWx1ZSgpLCB2bS52YXJhcmdzTGVuZ3RoKTsKIAogICAgIGV4ZWNDYWxsZWUtPnNldENh
bGxlckZyYW1lKGV4ZWMpOwotICAgIGV4ZWNDYWxsZWUtPnVuY2hlY2tlZFIoSlNTdGFjazo6Q2Fs
bGVlKSA9IGNhbGxlZUFzVmFsdWU7CisgICAgZXhlY0NhbGxlZS0+dW5jaGVja2VkUihDYWxsRnJh
bWVIZWFkZXI6OkNhbGxlZSkgPSBjYWxsZWVBc1ZhbHVlOwogICAgIGV4ZWMtPnNldEN1cnJlbnRW
UEMocGMpOwogCiAgICAgcmV0dXJuIHNldFVwQ2FsbChleGVjQ2FsbGVlLCBwYywga2luZCwgY2Fs
bGVlQXNWYWx1ZSk7CkBAIC0xNDM2LDcgKzE0MzYsNyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChz
bG93X3BhdGhfY2FsbF9ldmFsCiAgICAgCiAgICAgZXhlY0NhbGxlZS0+c2V0QXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMocGNbM10udS5vcGVyYW5kKTsKICAgICBleGVjQ2FsbGVlLT5zZXRDYWxs
ZXJGcmFtZShleGVjKTsKLSAgICBleGVjQ2FsbGVlLT51bmNoZWNrZWRSKEpTU3RhY2s6OkNhbGxl
ZSkgPSBjYWxsZWVBc1ZhbHVlOworICAgIGV4ZWNDYWxsZWUtPnVuY2hlY2tlZFIoQ2FsbEZyYW1l
SGVhZGVyOjpDYWxsZWUpID0gY2FsbGVlQXNWYWx1ZTsKICAgICBleGVjQ2FsbGVlLT5zZXRSZXR1
cm5QQyhMTEludDo6Z2V0Q29kZVB0cihsbGludF9nZW5lcmljX3JldHVybl9wb2ludCkpOwogICAg
IGV4ZWNDYWxsZWUtPnNldENvZGVCbG9jaygwKTsKICAgICBleGVjLT5zZXRDdXJyZW50VlBDKHBj
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQ
YXRocy5oCShyZXZpc2lvbiAyMDI5NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db21tb25TbG93UGF0aHMuaAkod29ya2luZyBjb3B5KQpAQCAtNjAsOSArNjAsOSBAQCBBTFdB
WVNfSU5MSU5FIGludCBhcml0eUNoZWNrRm9yKEV4ZWNTdGF0CiAgICAgaW50IGFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzID0gZXhlYy0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoKTsKICAg
ICAKICAgICBBU1NFUlQoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPCBuZXdDb2RlQmxvY2st
Pm51bVBhcmFtZXRlcnMoKSk7Ci0gICAgaW50IGZyYW1lU2l6ZSA9IGFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzICsgSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyU2l6ZTsKKyAgICBpbnQgZnJhbWVT
aXplID0gYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgKyBDYWxsRnJhbWVIZWFkZXI6OlNpemU7
CiAgICAgaW50IGFsaWduZWRGcmFtZVNpemVGb3JQYXJhbWV0ZXJzID0gV1RGOjpyb3VuZFVwVG9N
dWx0aXBsZU9mKHN0YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCksCi0gICAgICAgIG5ld0NvZGVCbG9j
ay0+bnVtUGFyYW1ldGVycygpICsgSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyU2l6ZSk7CisgICAg
ICAgIG5ld0NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpICsgQ2FsbEZyYW1lSGVhZGVyOjpTaXpl
KTsKICAgICBpbnQgcGFkZGVkU3RhY2tTcGFjZSA9IGFsaWduZWRGcmFtZVNpemVGb3JQYXJhbWV0
ZXJzIC0gZnJhbWVTaXplOwogCiAgICAgaWYgKCFzdGFjay0+ZW5zdXJlQ2FwYWNpdHlGb3IoZXhl
Yy0+cmVnaXN0ZXJzKCkgLSBwYWRkZWRTdGFja1NwYWNlICUgc3RhY2tBbGlnbm1lbnRSZWdpc3Rl
cnMoKSkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3QuY3BwCShyZXZpc2lvbiAyMDI5NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyMCw4ICszMjAs
NiBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojppbml0KFZNJiB2bSkKIAogICAgIEJhc2U6OnNldFN0
cnVjdHVyZSh2bSwgU3RydWN0dXJlOjp0b0NhY2hlYWJsZURpY3Rpb25hcnlUcmFuc2l0aW9uKHZt
LCBzdHJ1Y3R1cmUoKSkpOwogCi0gICAgSlNHbG9iYWxPYmplY3Q6Omdsb2JhbEV4ZWMoKS0+aW5p
dCgwLCAwLCBDYWxsRnJhbWU6Om5vQ2FsbGVyKCksIDAsIDApOwotCiAgICAgbV9kZWJ1Z2dlciA9
IDA7CiAKICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKQEAgLTMzMSwxNSArMzI5LDE2IEBA
IHZvaWQgSlNHbG9iYWxPYmplY3Q6OmluaXQoVk0mIHZtKQogICAgIG1fY29uc29sZUNsaWVudCA9
IG1faW5zcGVjdG9yQ29udHJvbGxlci0+Y29uc29sZUNsaWVudCgpOwogI2VuZGlmCiAKLSAgICBF
eGVjU3RhdGUqIGV4ZWMgPSBKU0dsb2JhbE9iamVjdDo6Z2xvYmFsRXhlYygpOwotCiAgICAgbV9m
dW5jdGlvblByb3RvdHlwZS5zZXQodm0sIHRoaXMsIEZ1bmN0aW9uUHJvdG90eXBlOjpjcmVhdGUo
dm0sIEZ1bmN0aW9uUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIGpzTnVsbCgp
KSkpOyAvLyBUaGUgcmVhbCBwcm90b3R5cGUgd2lsbCBiZSBzZXQgb25jZSBPYmplY3RQcm90b3R5
cGUgaXMgY3JlYXRlZC4KICAgICBtX2NhbGxlZVN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIEpTQ2Fs
bGVlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIGpzTnVsbCgpKSk7CiAKICAgICBtX2dsb2Jh
bExleGljYWxFbnZpcm9ubWVudC5zZXQodm0sIHRoaXMsIEpTR2xvYmFsTGV4aWNhbEVudmlyb25t
ZW50OjpjcmVhdGUodm0sIEpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50OjpjcmVhdGVTdHJ1Y3R1
cmUodm0sIHRoaXMpLCB0aGlzKSk7CiAgICAgLy8gTmVlZCB0byBjcmVhdGUgdGhlIGNhbGxlZSBz
dHJ1Y3R1cmUgKGFib3ZlKSBiZWZvcmUgY3JlYXRpbmcgdGhlIGNhbGxlZS4KLSAgICBtX2dsb2Jh
bENhbGxlZS5zZXQodm0sIHRoaXMsIEpTQ2FsbGVlOjpjcmVhdGUodm0sIHRoaXMsIGdsb2JhbFNj
b3BlKCkpKTsKLSAgICBleGVjLT5zZXRDYWxsZWUobV9nbG9iYWxDYWxsZWUuZ2V0KCkpOworICAg
IEpTQ2FsbGVlKiBnbG9iYWxDYWxsZWUgPSBKU0NhbGxlZTo6Y3JlYXRlKHZtLCB0aGlzLCBnbG9i
YWxTY29wZSgpKTsKKyAgICBtX2dsb2JhbENhbGxlZS5zZXQodm0sIHRoaXMsIGdsb2JhbENhbGxl
ZSk7CisKKyAgICBFeGVjU3RhdGU6OmluaXRHbG9iYWxFeGVjKEpTR2xvYmFsT2JqZWN0OjpnbG9i
YWxFeGVjKCksIGdsb2JhbENhbGxlZSk7CisgICAgRXhlY1N0YXRlKiBleGVjID0gSlNHbG9iYWxP
YmplY3Q6Omdsb2JhbEV4ZWMoKTsKIAogICAgIG1fZnVuY3Rpb25TdHJ1Y3R1cmUuc2V0KHZtLCB0
aGlzLCBKU0Z1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90
b3R5cGUuZ2V0KCkpKTsKICAgICBtX2N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uU3RydWN0dXJl
LmluaXRMYXRlcigKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuaAkocmV2aXNpb24gMjAyOTU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMjA5LDcgKzIwOSw3
IEBAIHByaXZhdGU6CiBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gdXNpbmcgSW5p
dGlhbGl6ZXIgPSB0eXBlbmFtZSBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIFQ+OjpJbml0
aWFsaXplcjsKICAgICAKLSAgICBSZWdpc3RlciBtX2dsb2JhbENhbGxGcmFtZVtKU1N0YWNrOjpD
YWxsRnJhbWVIZWFkZXJTaXplXTsKKyAgICBSZWdpc3RlciBtX2dsb2JhbENhbGxGcmFtZVtDYWxs
RnJhbWVIZWFkZXI6OlNpemVdOwogCiAgICAgV3JpdGVCYXJyaWVyPEpTT2JqZWN0PiBtX2dsb2Jh
bFRoaXM7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0YWNrQWxpZ25t
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RhY2tB
bGlnbm1lbnQuaAkocmV2aXNpb24gMjAyOTU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RhY2tBbGlnbm1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDQsMTQgKzQ0LDE0IEBA
IGlubGluZSB1bnNpZ25lZCBzdGFja0FsaWdubWVudFJlZ2lzdGVycygKIC8vIGFuICJ1bmFsaWdu
ZWQiIGNvdW50IG9mIHJlZ2lzdGVycy4KIGlubGluZSB1bnNpZ25lZCByb3VuZEFyZ3VtZW50Q291
bnRUb0FsaWduRnJhbWUodW5zaWduZWQgYXJndW1lbnRDb3VudCkKIHsKLSAgICByZXR1cm4gV1RG
Ojpyb3VuZFVwVG9NdWx0aXBsZU9mKHN0YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCksIGFyZ3VtZW50
Q291bnQgKyBKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJTaXplKSAtIEpTU3RhY2s6OkNhbGxGcmFt
ZUhlYWRlclNpemU7CisgICAgcmV0dXJuIFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZihzdGFja0Fs
aWdubWVudFJlZ2lzdGVycygpLCBhcmd1bWVudENvdW50ICsgQ2FsbEZyYW1lSGVhZGVyOjpTaXpl
KSAtIENhbGxGcmFtZUhlYWRlcjo6U2l6ZTsKIH0KIAogLy8gQWxpZ24gbG9jYWwgcmVnaXN0ZXIg
Y291bnQgdG8gbWFrZSB0aGUgbGFzdCBsb2NhbCBlbmQgb24gYSBzdGFjayBhbGlnbmVkIGFkZHJl
c3MgZ2l2ZW4gdGhlCi0vLyBDYWxsRnJhbWUgaXMgYXQgYW4gYWRkcmVzcyB0aGF0IGlzIHN0YWNr
IGFsaWduZWQgbWludXMgSlNTdGFjazo6Q2FsbGVyRnJhbWVBbmRQQ1NpemUKKy8vIENhbGxGcmFt
ZSBpcyBhdCBhbiBhZGRyZXNzIHRoYXQgaXMgc3RhY2sgYWxpZ25lZCBtaW51cyBDYWxsRnJhbWVI
ZWFkZXI6OkNhbGxlckZyYW1lQW5kUENTaXplCiBpbmxpbmUgdW5zaWduZWQgcm91bmRMb2NhbFJl
Z2lzdGVyQ291bnRGb3JGcmFtZVBvaW50ZXJPZmZzZXQodW5zaWduZWQgbG9jYWxSZWdpc3RlckNv
dW50KQogewotICAgIHJldHVybiBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Yoc3RhY2tBbGlnbm1l
bnRSZWdpc3RlcnMoKSwgbG9jYWxSZWdpc3RlckNvdW50ICsgSlNTdGFjazo6Q2FsbGVyRnJhbWVB
bmRQQ1NpemUpIC0gSlNTdGFjazo6Q2FsbGVyRnJhbWVBbmRQQ1NpemU7CisgICAgcmV0dXJuIFdU
Rjo6cm91bmRVcFRvTXVsdGlwbGVPZihzdGFja0FsaWdubWVudFJlZ2lzdGVycygpLCBsb2NhbFJl
Z2lzdGVyQ291bnQgKyBDYWxsRnJhbWVIZWFkZXI6OkNhbGxlckZyYW1lQW5kUENTaXplKSAtIENh
bGxGcmFtZUhlYWRlcjo6Q2FsbGVyRnJhbWVBbmRQQ1NpemU7CiB9CiAKIGlubGluZSB1bnNpZ25l
ZCBsb2dTdGFja0FsaWdubWVudFJlZ2lzdGVycygpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XQVNNRnVuY3Rpb25Db21waWxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dBU01GdW5jdGlvbkNvbXBpbGVyLmgJKHJldmlzaW9uIDIwMjk1NCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01GdW5jdGlvbkNvbXBpbGVyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEzMCw3ICsxMzAsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fY29kZUJs
b2NrLT5zZXRDYWxsZWVTYXZlUmVnaXN0ZXJzKFJlZ2lzdGVyU2V0Ojp3ZWJBc3NlbWJseUNhbGxl
ZVNhdmVSZWdpc3RlcnMoKSk7CiAKICAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoKTsKLSAg
ICAgICAgZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVyKG1fY29kZUJsb2NrLCBKU1N0YWNrOjpDb2Rl
QmxvY2spOworICAgICAgICBlbWl0UHV0VG9DYWxsRnJhbWVIZWFkZXIobV9jb2RlQmxvY2ssIENh
bGxGcmFtZUhlYWRlcjo6Q29kZUJsb2NrKTsKIAogICAgICAgICBtX2JlZ2luTGFiZWwgPSBsYWJl
bCgpOwogCkBAIC0yMTcsNyArMjE3LDcgQEAgcHVibGljOgogICAgICAgICAvLyBGSVhNRTogSW1w
bGVtZW50IGFyaXR5IGNoZWNrLgogICAgICAgICBMYWJlbCBhcml0eUNoZWNrID0gbGFiZWwoKTsK
ICAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoKTsKLSAgICAgICAgZW1pdFB1dFRvQ2FsbEZy
YW1lSGVhZGVyKG1fY29kZUJsb2NrLCBKU1N0YWNrOjpDb2RlQmxvY2spOworICAgICAgICBlbWl0
UHV0VG9DYWxsRnJhbWVIZWFkZXIobV9jb2RlQmxvY2ssIENhbGxGcmFtZUhlYWRlcjo6Q29kZUJs
b2NrKTsKICAgICAgICAganVtcChtX2JlZ2luTGFiZWwpOwogCiAgICAgICAgIGlmICghbV9kaXZp
ZGVFcnJvckp1bXBMaXN0LmVtcHR5KCkpIHsKQEAgLTEzNDcsNyArMTM0Nyw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBib3hBcmd1bWVudHNBbmRBZGp1c3RTdGFja1BvaW50ZXIoY29uc3QgVmVjdG9y
PFdBU01UeXBlPiYgYXJndW1lbnRzKQogICAgIHsKICAgICAgICAgc2l6ZV90IGFyZ3VtZW50Q291
bnQgPSBhcmd1bWVudHMuc2l6ZSgpOwotICAgICAgICBpbnQgc3RhY2tPZmZzZXQgPSAtbV9jYWxs
ZWVTYXZlU3BhY2UgLSBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Yoc3RhY2tBbGlnbm1lbnRSZWdp
c3RlcnMoKSwgbV9udW1iZXJPZkxvY2FscyArIG1fdGVtcFN0YWNrVG9wICsgYXJndW1lbnRDb3Vu
dCArIDEgKyBKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJTaXplKTsKKyAgICAgICAgaW50IHN0YWNr
T2Zmc2V0ID0gLW1fY2FsbGVlU2F2ZVNwYWNlIC0gV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mKHN0
YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCksIG1fbnVtYmVyT2ZMb2NhbHMgKyBtX3RlbXBTdGFja1Rv
cCArIGFyZ3VtZW50Q291bnQgKyAxICsgQ2FsbEZyYW1lSGVhZGVyOjpTaXplKTsKIAogICAgICAg
ICBzdG9yZVRydXN0ZWRWYWx1ZShqc1VuZGVmaW5lZCgpLCBBZGRyZXNzKEdQUkluZm86OmNhbGxG
cmFtZVJlZ2lzdGVyLCAoc3RhY2tPZmZzZXQgKyBDYWxsRnJhbWU6OnRoaXNBcmd1bWVudE9mZnNl
dCgpKSAqIHNpemVvZihSZWdpc3RlcikpKTsKIApAQCAtMTM4NCwxNyArMTM4NCwxNyBAQCBwcml2
YXRlOgogICAgICAgICBtX3RlbXBTdGFja1RvcCAtPSBhcmd1bWVudENvdW50OwogCiAgICAgICAg
IGFkZFB0cihUcnVzdGVkSW1tMzIoc3RhY2tPZmZzZXQgKiBzaXplb2YoUmVnaXN0ZXIpICsgc2l6
ZW9mKENhbGxlckZyYW1lQW5kUEMpKSwgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIHN0YWNr
UG9pbnRlclJlZ2lzdGVyKTsKLSAgICAgICAgc3RvcmUzMihUcnVzdGVkSW1tMzIoYXJndW1lbnRD
b3VudCArIDEpLCBBZGRyZXNzKHN0YWNrUG9pbnRlclJlZ2lzdGVyLCBKU1N0YWNrOjpBcmd1bWVu
dENvdW50ICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSArIFBheWxvYWRPZmZz
ZXQgLSBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykpKTsKKyAgICAgICAgc3RvcmUzMihUcnVzdGVk
SW1tMzIoYXJndW1lbnRDb3VudCArIDEpLCBBZGRyZXNzKHN0YWNrUG9pbnRlclJlZ2lzdGVyLCBD
YWxsRnJhbWVIZWFkZXI6OkFyZ3VtZW50Q291bnQgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihS
ZWdpc3RlcikpICsgUGF5bG9hZE9mZnNldCAtIHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSkpOwog
ICAgIH0KIAogICAgIHZvaWQgY2FsbEFuZFVuYm94UmVzdWx0KFdBU01FeHByZXNzaW9uVHlwZSBy
ZXR1cm5UeXBlKQogICAgIHsKICAgICAgICAgLy8gcmVnVDAgaG9sZHMgY2FsbGVlLgogI2lmIFVT
RShKU1ZBTFVFNjQpCi0gICAgICAgIHN0b3JlNjQoR1BSSW5mbzo6cmVnVDAsIEFkZHJlc3Moc3Rh
Y2tQb2ludGVyUmVnaXN0ZXIsIEpTU3RhY2s6OkNhbGxlZSAqIHN0YXRpY19jYXN0PGludD4oc2l6
ZW9mKFJlZ2lzdGVyKSkgLSBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykpKTsKKyAgICAgICAgc3Rv
cmU2NChHUFJJbmZvOjpyZWdUMCwgQWRkcmVzcyhzdGFja1BvaW50ZXJSZWdpc3RlciwgQ2FsbEZy
YW1lSGVhZGVyOjpDYWxsZWUgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpIC0g
c2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKSk7CiAjZWxzZQotICAgICAgICBzdG9yZTMyKEdQUklu
Zm86OnJlZ1QwLCBBZGRyZXNzKHN0YWNrUG9pbnRlclJlZ2lzdGVyLCBKU1N0YWNrOjpDYWxsZWUg
KiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpICsgUGF5bG9hZE9mZnNldCAtIHNp
emVvZihDYWxsZXJGcmFtZUFuZFBDKSkpOwotICAgICAgICBzdG9yZTMyKFRydXN0ZWRJbW0zMihK
U1ZhbHVlOjpDZWxsVGFnKSwgQWRkcmVzcyhzdGFja1BvaW50ZXJSZWdpc3RlciwgSlNTdGFjazo6
Q2FsbGVlICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSArIFRhZ09mZnNldCAt
IHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSkpOworICAgICAgICBzdG9yZTMyKEdQUkluZm86OnJl
Z1QwLCBBZGRyZXNzKHN0YWNrUG9pbnRlclJlZ2lzdGVyLCBDYWxsRnJhbWVIZWFkZXI6OkNhbGxl
ZSAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkgKyBQYXlsb2FkT2Zmc2V0IC0g
c2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKSk7CisgICAgICAgIHN0b3JlMzIoVHJ1c3RlZEltbTMy
KEpTVmFsdWU6OkNlbGxUYWcpLCBBZGRyZXNzKHN0YWNrUG9pbnRlclJlZ2lzdGVyLCBDYWxsRnJh
bWVIZWFkZXI6OkNhbGxlZSAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkgKyBU
YWdPZmZzZXQgLSBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykpKTsKICNlbmRpZgogCiAgICAgICAg
IERhdGFMYWJlbFB0ciBhZGRyZXNzT2ZMaW5rZWRGdW5jdGlvbkNoZWNrOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUZ1bmN0aW9uU3ludGF4Q2hlY2tlci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01GdW5jdGlvblN5bnRheENoZWNr
ZXIuaAkocmV2aXNpb24gMjAyOTU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FT
TUZ1bmN0aW9uU3ludGF4Q2hlY2tlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNzAsOSArMjcwLDkg
QEAgcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZVRlbXBTdGFja0hlaWdodEZvckNhbGwoc2l6ZV90
IGFyZ3VtZW50Q291bnQpCiAgICAgewogICAgICAgICAvLyBCb3hlZCBhcmd1bWVudHMgKyB0aGlz
IGFyZ3VtZW50ICsgY2FsbCBmcmFtZSBoZWFkZXIgKyBtYXhpbXVtIHBhZGRpbmcuCi0gICAgICAg
IG1fdGVtcFN0YWNrVG9wICs9IGFyZ3VtZW50Q291bnQgKyAxICsgSlNTdGFjazo6Q2FsbEZyYW1l
SGVhZGVyU2l6ZSArIDE7CisgICAgICAgIG1fdGVtcFN0YWNrVG9wICs9IGFyZ3VtZW50Q291bnQg
KyAxICsgQ2FsbEZyYW1lSGVhZGVyOjpTaXplICsgMTsKICAgICAgICAgdXBkYXRlVGVtcFN0YWNr
SGVpZ2h0KCk7Ci0gICAgICAgIG1fdGVtcFN0YWNrVG9wIC09IGFyZ3VtZW50Q291bnQgKyAxICsg
SlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyU2l6ZSArIDE7CisgICAgICAgIG1fdGVtcFN0YWNrVG9w
IC09IGFyZ3VtZW50Q291bnQgKyAxICsgQ2FsbEZyYW1lSGVhZGVyOjpTaXplICsgMTsKICAgICB9
CiAKICAgICB1bnNpZ25lZCBtX251bWJlck9mTG9jYWxzOwo=
</data>
<flag name="review"
          id="306890"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>283200</attachid>
            <date>2016-07-08 14:57:46 -0700</date>
            <delta_ts>2016-07-08 15:50:41 -0700</delta_ts>
            <desc>revised patch with Geoff&apos;s feedback.</desc>
            <filename>bug-159549.patch</filename>
            <type>text/plain</type>
            <size>140027</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjAyOTgzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI1NyBA
QAorMjAxNi0wNy0wOCAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAg
TW92ZSBDYWxsRnJhbWVIZWFkZXIgaW5mbyBmcm9tIEpTU3RhY2suaCB0byBDYWxsRnJhbWUuaAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU5NTQ5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2FsbEZyYW1l
LmggaXMgYSBtdWNoIGJldHRlciBsb2NhdGlvbiBmb3IgQ2FsbEZyYW1lSGVhZGVyIGluZm8uCisK
KyAgICAgICAgUmVwbGFjZWQgQ2FsbEZyYW1lOjppbml0KCkgd2l0aCBFeGVjU3RhdGU6OmluaXRH
bG9iYWxFeGVjKCkgYmVjYXVzZSBub3JtYWwKKyAgICAgICAgQ2FsbEZyYW1lcyBhcmUgc2V0dXAg
YnkgYSBkaWZmZXJlbnQgbWVjaGFuaXNtIG5vdy4gIE9ubHkgdGhlIGdsb2JhbEV4ZWMgaXMgc3Rp
bGwKKyAgICAgICAgdXNpbmcgaXQuICBTbywgbWlnaHQgYXMgd2VsbCBjaGFuZ2UgaXQgdG8gYmUg
c3BlY2lmaWNhbGx5IGZvciB0aGUgZ2xvYmFsRXhlYy4KKworICAgICAgICBSZW1vdmVkIHRoZSB1
c2Ugb2YgSlNTdGFjazo6Y29udGFpbnNBZGRyZXNzKCkgaW4gRXhlY1N0YXRlOjppbml0R2xvYmFs
RXhlYygpCisgICAgICAgIGJlY2F1c2UgaXQgaXMgbm90IHJlbGV2YW50IHRvIHRoZSBnbG9iYWxF
eGVjLgorCisgICAgICAgIEFsc28gcmVtb3ZlZCBzb21lIHVudXNlZCBjb2RlOiBKU1N0YWNrOjpn
YXRoZXJDb25zZXJ2YXRpdmVSb290cygpIGFuZAorICAgICAgICBKU1N0YWNrOjpzYW5pdGl6ZVN0
YWNrKCkgaXMgbmV2ZXIgY2FsbGVkIGZvciBKSVQgYnVpbGRzLgorCisgICAgICAgICogYnl0ZWNv
ZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpnZW5l
cmF0ZUltcGwpOgorICAgICAgICAqIGJ5dGVjb2RlL1ZpcnR1YWxSZWdpc3Rlci5oOgorICAgICAg
ICAoSlNDOjpWaXJ0dWFsUmVnaXN0ZXI6OmlzVmFsaWQpOgorICAgICAgICAoSlNDOjpWaXJ0dWFs
UmVnaXN0ZXI6OmlzTG9jYWwpOgorICAgICAgICAoSlNDOjpWaXJ0dWFsUmVnaXN0ZXI6OmlzQXJn
dW1lbnQpOgorICAgICAgICAoSlNDOjpWaXJ0dWFsUmVnaXN0ZXI6OmlzSGVhZGVyKToKKyAgICAg
ICAgKEpTQzo6VmlydHVhbFJlZ2lzdGVyOjppc0NvbnN0YW50KToKKyAgICAgICAgKEpTQzo6Vmly
dHVhbFJlZ2lzdGVyOjp0b0xvY2FsKToKKyAgICAgICAgKEpTQzo6VmlydHVhbFJlZ2lzdGVyOjp0
b0FyZ3VtZW50KToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3Bw
OgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IpOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENhbGwpOgorICAgICAgICAoSlND
OjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENvbnN0cnVjdCk6CisgICAgICAgICogYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkNhbGxBcmd1bWVudHM6OnRo
aXNSZWdpc3Rlcik6CisgICAgICAgIChKU0M6OkNhbGxBcmd1bWVudHM6OmFyZ3VtZW50UmVnaXN0
ZXIpOgorICAgICAgICAoSlNDOjpDYWxsQXJndW1lbnRzOjpzdGFja09mZnNldCk6CisgICAgICAg
IChKU0M6OkNhbGxBcmd1bWVudHM6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKToKKyAgICAg
ICAgKEpTQzo6Q2FsbEFyZ3VtZW50czo6YXJndW1lbnRzTm9kZSk6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlR2VuZXJhdG9yOjpyZWdpc3RlckZvcik6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05v
ZGVzQ29kZWdlbi5jcHA6CisgICAgICAgIChKU0M6OmVtaXRIb21lT2JqZWN0Rm9yQ2FsbGVlKToK
KyAgICAgICAgKEpTQzo6ZW1pdEdldFN1cGVyRnVuY3Rpb25Gb3JDb25zdHJ1Y3QpOgorICAgICAg
ICAoSlNDOjpDYWxsQXJndW1lbnRzOjpDYWxsQXJndW1lbnRzKToKKyAgICAgICAgKiBkZmcvREZH
QXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR0FyZ3VtZW50
c1V0aWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6YXJndW1lbnRzSW52b2x2ZVN0YWNr
U2xvdCk6CisgICAgICAgIChKU0M6OkRGRzo6ZW1pdENvZGVUb0dldEFyZ3VtZW50c0FycmF5TGVu
Z3RoKToKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlND
OjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpnZXQpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2Rl
UGFyc2VyOjpmaW5kQXJndW1lbnRQb3NpdGlvbkZvckxvY2FsKToKKyAgICAgICAgKEpTQzo6REZH
OjpCeXRlQ29kZVBhcnNlcjo6Zmx1c2gpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFy
c2VyOjphZGRDYWxsV2l0aG91dFNldHRpbmdSZXN1bHQpOgorICAgICAgICAoSlNDOjpERkc6OkJ5
dGVDb2RlUGFyc2VyOjpnZXRBcmd1bWVudENvdW50KToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRl
Q29kZVBhcnNlcjo6aW5saW5lQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJz
ZXI6OmhhbmRsZUlubGluaW5nKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6
aGFuZGxlR2V0QnlJZCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRs
ZVB1dEJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2Nr
KToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6SW5saW5lU3RhY2tFbnRyeTo6
SW5saW5lU3RhY2tFbnRyeSk6CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJpemUuaDoKKyAgICAg
ICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToKKyAgICAgICAgKiBkZmcvREZHR3JhcGguY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjppc0xpdmVJbkJ5dGVjb2RlKToKKyAgICAgICAgKiBk
ZmcvREZHR3JhcGguaDoKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6Zm9yQWxsTG9jYWxzTGl2
ZUluQnl0ZWNvZGUpOgorICAgICAgICAqIGRmZy9ERkdKSVRDb21waWxlci5jcHA6CisgICAgICAg
IChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmNvbXBpbGVFbnRyeSk6CisgICAgICAgIChKU0M6OkRG
Rzo6SklUQ29tcGlsZXI6OmNvbXBpbGVTZXR1cFJlZ2lzdGVyc0ZvckVudHJ5KToKKyAgICAgICAg
KEpTQzo6REZHOjpKSVRDb21waWxlcjo6Y29tcGlsZUZ1bmN0aW9uKToKKyAgICAgICAgKiBkZmcv
REZHSklUQ29tcGlsZXIuaDoKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6ZW1pdFN0
b3JlQ2FsbFNpdGVJbmRleCk6CisgICAgICAgICogZGZnL0RGR09TUkF2YWlsYWJpbGl0eUFuYWx5
c2lzUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkxvY2FsT1NSQXZhaWxhYmlsaXR5Q2Fs
Y3VsYXRvcjo6ZXhlY3V0ZU5vZGUpOgorICAgICAgICAqIGRmZy9ERkdPU1JFbnRyeS5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6cHJlcGFyZU9TUkVudHJ5KToKKyAgICAgICAgKiBkZmcvREZHT1NS
RXhpdENvbXBpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpPU1JFeGl0Q29tcGlsZXI6OmVt
aXRSZXN0b3JlQXJndW1lbnRzKToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdENvbXBpbGVyQ29t
bW9uLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpyZWlmeUlubGluZWRDYWxsRnJhbWVzKToKKyAg
ICAgICAgKiBkZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmg6CisgICAgICAgIChKU0M6OkRG
Rzo6YWRqdXN0RnJhbWVBbmRTdGFja0luT1NSRXhpdENvbXBpbGVyVGh1bmspOgorICAgICAgICAq
IGRmZy9ERkdQcmVjaXNlTG9jYWxDbG9iYmVyaXplLmg6CisgICAgICAgIChKU0M6OkRGRzo6UHJl
Y2lzZUxvY2FsQ2xvYmJlcml6ZUFkYXB0b3I6OnJlYWRUb3ApOgorICAgICAgICAqIGRmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVt
aXRHZXRMZW5ndGgpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0R2V0
Q2FsbGVlKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdEdldEFyZ3Vt
ZW50U3RhcnQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlQ3Jl
YXRlRGlyZWN0QXJndW1lbnRzKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82
NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKToKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZn
L0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjplbWl0Q2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGUpOgorICAgICAgICAqIGRmZy9ERkdTdGFja0xheW91dFBoYXNlLmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpTdGFja0xheW91dFBoYXNlOjpydW4pOgorICAgICAgICAqIGRmZy9ERkdUaHVua3Mu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6Om9zckVudHJ5VGh1bmtHZW5lcmF0b3IpOgorICAgICAg
ICAqIGZ0bC9GVExMaW5rLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpsaW5rKToKKyAgICAgICAg
KiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2Vy
REZHVG9CMzo6bG93ZXIpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpj
b21waWxlR2V0TXlBcmd1bWVudEJ5VmFsKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2Vy
REZHVG9CMzo6Y29tcGlsZUdldENhbGxlZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dl
ckRGR1RvQjM6OmNvbXBpbGVHZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyk6CisgICAgICAg
IChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVHZXRTY29wZSk6CisgICAgICAg
IChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVDYWxsT3JDb25zdHJ1Y3QpOgor
ICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlVGFpbENhbGwpOgor
ICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQ2FsbE9yQ29uc3Ry
dWN0VmFyYXJncyk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBp
bGVMb2dTaGFkb3dDaGlja2VuUHJvbG9ndWUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93
ZXJERkdUb0IzOjpnZXRBcmd1bWVudHNMZW5ndGgpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6
TG93ZXJERkdUb0IzOjpnZXRDdXJyZW50Q2FsbGVlKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6
Okxvd2VyREZHVG9CMzo6Z2V0QXJndW1lbnRzU3RhcnQpOgorICAgICAgICAoSlNDOjpGVEw6OkRG
Rzo6TG93ZXJERkdUb0IzOjpjYWxsUHJlZmxpZ2h0KToKKyAgICAgICAgKiBmdGwvRlRMT1NSRXhp
dENvbXBpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjb21waWxlU3R1Yik6CisgICAgICAg
ICogZnRsL0ZUTFNsb3dQYXRoQ2FsbC5oOgorICAgICAgICAoSlNDOjpGVEw6OmNhbGxPcGVyYXRp
b24pOgorICAgICAgICAqIGludGVycHJldGVyL0NhbGxGcmFtZS5jcHA6CisgICAgICAgIChKU0M6
OkV4ZWNTdGF0ZTo6aW5pdEdsb2JhbEV4ZWMpOgorICAgICAgICAoSlNDOjpDYWxsRnJhbWU6OmNh
bGxTaXRlQml0c0FyZUJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Q2FsbEZyYW1lOjpj
YWxsU2l0ZUFzUmF3Qml0cyk6CisgICAgICAgIChKU0M6OkNhbGxGcmFtZTo6dW5zYWZlQ2FsbFNp
dGVBc1Jhd0JpdHMpOgorICAgICAgICAoSlNDOjpDYWxsRnJhbWU6OmNhbGxTaXRlSW5kZXgpOgor
ICAgICAgICAoSlNDOjpDYWxsRnJhbWU6OnNldEN1cnJlbnRWUEMpOgorICAgICAgICAoSlNDOjpD
YWxsRnJhbWU6OmNhbGxTaXRlQml0c0FzQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAqIGludGVy
cHJldGVyL0NhbGxGcmFtZS5oOgorICAgICAgICAoSlNDOjpDYWxsU2l0ZUluZGV4OjpDYWxsU2l0
ZUluZGV4KToKKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjpjYWxsZWVBc1ZhbHVlKToKKyAgICAg
ICAgKEpTQzo6RXhlY1N0YXRlOjpjYWxsZWUpOgorICAgICAgICAoSlNDOjpFeGVjU3RhdGU6OnVu
c2FmZUNhbGxlZSk6CisgICAgICAgIChKU0M6OkV4ZWNTdGF0ZTo6Y29kZUJsb2NrKToKKyAgICAg
ICAgKEpTQzo6RXhlY1N0YXRlOjp1bnNhZmVDb2RlQmxvY2spOgorICAgICAgICAoSlNDOjpFeGVj
U3RhdGU6OnNjb3BlKToKKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjpzZXRDYWxsZXJGcmFtZSk6
CisgICAgICAgIChKU0M6OkV4ZWNTdGF0ZTo6c2V0U2NvcGUpOgorICAgICAgICAoSlNDOjpFeGVj
U3RhdGU6OmFyZ3VtZW50Q291bnQpOgorICAgICAgICAoSlNDOjpFeGVjU3RhdGU6OmFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzKToKKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjphcmd1bWVudE9m
ZnNldCk6CisgICAgICAgIChKU0M6OkV4ZWNTdGF0ZTo6YXJndW1lbnRPZmZzZXRJbmNsdWRpbmdU
aGlzKToKKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjpvZmZzZXRGb3IpOgorICAgICAgICAoSlND
OjpFeGVjU3RhdGU6Om5vQ2FsbGVyKToKKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjpzZXRBcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpcyk6CisgICAgICAgIChKU0M6OkV4ZWNTdGF0ZTo6c2V0Q2Fs
bGVlKToKKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjpzZXRDb2RlQmxvY2spOgorICAgICAgICAo
SlNDOjpFeGVjU3RhdGU6OnNldFJldHVyblBDKToKKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjph
cmdJbmRleEZvclJlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjpjYWxsZXJGcmFt
ZUFuZFBDKToKKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjp1bnNhZmVDYWxsZXJGcmFtZUFuZFBD
KToKKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjppbml0KTogRGVsZXRlZC4KKyAgICAgICAgKiBp
bnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpk
dW1wUmVnaXN0ZXJzKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5oOgorICAg
ICAgICAoSlNDOjpjYWxsZWVGcmFtZUZvclZhcmFyZ3MpOgorICAgICAgICAqIGludGVycHJldGVy
L0pTU3RhY2suaDoKKyAgICAgICAgKEpTQzo6SlNTdGFjazo6Y29udGFpbnNBZGRyZXNzKToKKyAg
ICAgICAgKEpTQzo6SlNTdGFjazo6Z2F0aGVyQ29uc2VydmF0aXZlUm9vdHMpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpKU1N0YWNrOjpzYW5pdGl6ZVN0YWNrKTogRGVsZXRlZC4KKyAgICAgICAg
KiBqaXQvQXNzZW1ibHlIZWxwZXJzLmNwcDoKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJz
OjpqaXRBc3NlcnRBcmd1bWVudENvdW50U2FuZSk6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVs
cGVyczo6ZW1pdFJhbmRvbVRodW5rKToKKyAgICAgICAgKiBqaXQvQXNzZW1ibHlIZWxwZXJzLmg6
CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6cmVzdG9yZVJldHVybkFkZHJlc3NCZWZv
cmVSZXR1cm4pOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmVtaXRHZXRGcm9tQ2Fs
bEZyYW1lSGVhZGVyUHRyKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjplbWl0R2V0
RnJvbUNhbGxGcmFtZUhlYWRlcjMyKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpl
bWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlcjY0KToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxw
ZXJzOjplbWl0UHV0VG9DYWxsRnJhbWVIZWFkZXIpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhl
bHBlcnM6OmVtaXRQdXRUb0NhbGxGcmFtZUhlYWRlckJlZm9yZVByb2xvZ3VlKToKKyAgICAgICAg
KEpTQzo6QXNzZW1ibHlIZWxwZXJzOjplbWl0UHV0UGF5bG9hZFRvQ2FsbEZyYW1lSGVhZGVyQmVm
b3JlUHJvbG9ndWUpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmVtaXRQdXRUYWdU
b0NhbGxGcmFtZUhlYWRlckJlZm9yZVByb2xvZ3VlKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlI
ZWxwZXJzOjpjYWxsZWVGcmFtZVNsb3QpOgorICAgICAgICAqIGppdC9DQ2FsbEhlbHBlcnMuY3Bw
OgorICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OmxvZ1NoYWRvd0NoaWNrZW5Qcm9sb2d1ZVBh
Y2tldCk6CisgICAgICAgICogaml0L0NDYWxsSGVscGVycy5oOgorICAgICAgICAoSlNDOjpDQ2Fs
bEhlbHBlcnM6OnByZXBhcmVGb3JUYWlsQ2FsbFNsb3cpOgorICAgICAgICAqIGppdC9DYWxsRnJh
bWVTaHVmZmxlci5jcHA6CisgICAgICAgIChKU0M6OkNhbGxGcmFtZVNodWZmbGVyOjpDYWxsRnJh
bWVTaHVmZmxlcik6CisgICAgICAgIChKU0M6OkNhbGxGcmFtZVNodWZmbGVyOjpkdW1wKToKKyAg
ICAgICAgKEpTQzo6Q2FsbEZyYW1lU2h1ZmZsZXI6OmV4dGVuZEZyYW1lSWZOZWVkZWQpOgorICAg
ICAgICAoSlNDOjpDYWxsRnJhbWVTaHVmZmxlcjo6cHJlcGFyZUZvclNsb3dQYXRoKToKKyAgICAg
ICAgKEpTQzo6Q2FsbEZyYW1lU2h1ZmZsZXI6OnByZXBhcmVGb3JUYWlsQ2FsbCk6CisgICAgICAg
IChKU0M6OkNhbGxGcmFtZVNodWZmbGVyOjpwcmVwYXJlQW55KToKKyAgICAgICAgKiBqaXQvQ2Fs
bEZyYW1lU2h1ZmZsZXIuaDoKKyAgICAgICAgKEpTQzo6Q2FsbEZyYW1lU2h1ZmZsZXI6OnNuYXBz
aG90KToKKyAgICAgICAgKEpTQzo6Q2FsbEZyYW1lU2h1ZmZsZXI6OnNldENhbGxlZUpTVmFsdWVS
ZWdzKToKKyAgICAgICAgKEpTQzo6Q2FsbEZyYW1lU2h1ZmZsZXI6OmFzc3VtZUNhbGxlZUlzQ2Vs
bCk6CisgICAgICAgIChKU0M6OkNhbGxGcmFtZVNodWZmbGVyOjpudW1Mb2NhbHMpOgorICAgICAg
ICAoSlNDOjpDYWxsRnJhbWVTaHVmZmxlcjo6Z2V0T2xkKToKKyAgICAgICAgKEpTQzo6Q2FsbEZy
YW1lU2h1ZmZsZXI6OnNldE9sZCk6CisgICAgICAgIChKU0M6OkNhbGxGcmFtZVNodWZmbGVyOjpm
aXJzdE9sZCk6CisgICAgICAgIChKU0M6OkNhbGxGcmFtZVNodWZmbGVyOjpsYXN0T2xkKToKKyAg
ICAgICAgKEpTQzo6Q2FsbEZyYW1lU2h1ZmZsZXI6OmlzVmFsaWRPbGQpOgorICAgICAgICAoSlND
OjpDYWxsRnJhbWVTaHVmZmxlcjo6YXJnQ291bnQpOgorICAgICAgICAoSlNDOjpDYWxsRnJhbWVT
aHVmZmxlcjo6Z2V0TmV3KToKKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6
SklUOjpjb21waWxlV2l0aG91dExpbmtpbmcpOgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAg
ICAgKiBqaXQvSklUQ2FsbC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZVNldHVwVmFy
YXJnc0ZyYW1lKToKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlQ2FsbEV2YWxTbG93Q2FzZSk6
CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZU9wQ2FsbCk6CisgICAgICAgICogaml0L0pJVENh
bGwzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZVNldHVwVmFyYXJnc0ZyYW1l
KToKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlQ2FsbEV2YWxTbG93Q2FzZSk6CisgICAgICAg
IChKU0M6OkpJVDo6Y29tcGlsZU9wQ2FsbCk6CisgICAgICAgICogaml0L0pJVElubGluZXMuaDoK
KyAgICAgICAgKEpTQzo6SklUOjpnZXRDb25zdGFudE9wZXJhbmQpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRQdXRJbnRUb0NhbGxGcmFtZUhlYWRlcik6CisgICAgICAgIChKU0M6OkpJVDo6dXBk
YXRlVG9wQ2FsbEZyYW1lKToKKyAgICAgICAgKiBqaXQvSklUT3Bjb2Rlcy5jcHA6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfc2NvcGUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRf
b3BfYXJndW1lbnRfY291bnQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X3Jlc3Rf
bGVuZ3RoKToKKyAgICAgICAgKiBqaXQvSklUT3Bjb2RlczMyXzY0LmNwcDoKKyAgICAgICAgKEpT
Qzo6SklUOjpwcml2YXRlQ29tcGlsZUNUSU5hdGl2ZUNhbGwpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRfb3BfZ2V0X3Njb3BlKToKKyAgICAgICAgKiBqaXQvSlNJbnRlcmZhY2VKSVQuaDoKKyAg
ICAgICAgKEpTQzo6SlNJbnRlcmZhY2VKSVQ6OmVtaXRKdW1wSWZOb3RUeXBlKToKKyAgICAgICAg
KEpTQzo6SlNJbnRlcmZhY2VKSVQ6OmVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyUHRyKToKKyAg
ICAgICAgKEpTQzo6SlNJbnRlcmZhY2VKSVQ6OmVtaXRQdXRUb0NhbGxGcmFtZUhlYWRlcik6Cisg
ICAgICAgIChKU0M6OkpTSW50ZXJmYWNlSklUOjplbWl0UHV0Q2VsbFRvQ2FsbEZyYW1lSGVhZGVy
KToKKyAgICAgICAgKiBqaXQvU2V0dXBWYXJhcmdzRnJhbWUuY3BwOgorICAgICAgICAoSlNDOjpl
bWl0U2V0VmFyYXJnc0ZyYW1lKToKKyAgICAgICAgKEpTQzo6ZW1pdFNldHVwVmFyYXJnc0ZyYW1l
RmFzdENhc2UpOgorICAgICAgICAqIGppdC9TcGVjaWFsaXplZFRodW5rSklULmg6CisgICAgICAg
IChKU0M6OlNwZWNpYWxpemVkVGh1bmtKSVQ6OlNwZWNpYWxpemVkVGh1bmtKSVQpOgorICAgICAg
ICAqIGppdC9UaHVua0dlbmVyYXRvcnMuY3BwOgorICAgICAgICAoSlNDOjpuYXRpdmVGb3JHZW5l
cmF0b3IpOgorICAgICAgICAoSlNDOjphcml0eUZpeHVwR2VuZXJhdG9yKToKKyAgICAgICAgKEpT
Qzo6Ym91bmRUaGlzTm9BcmdzRnVuY3Rpb25DYWxsR2VuZXJhdG9yKToKKyAgICAgICAgKiBsbGlu
dC9MTEludERhdGEuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6RGF0YTo6cGVyZm9ybUFzc2Vy
dGlvbnMpOgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpT
Qzo6TExJbnQ6OmdlbmVyaWNDYWxsKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnZhcmFyZ3NTZXR1
cCk6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BBVEhfREVDTCk6CisgICAgICAg
ICogcnVudGltZS9Db21tb25TbG93UGF0aHMuaDoKKyAgICAgICAgKEpTQzo6Q29tbW9uU2xvd1Bh
dGhzOjphcml0eUNoZWNrRm9yKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNw
cDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmluaXQpOgorICAgICAgICAqIHJ1bnRp
bWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL1N0YWNrQWxpZ25tZW50Lmg6
CisgICAgICAgIChKU0M6OnJvdW5kQXJndW1lbnRDb3VudFRvQWxpZ25GcmFtZSk6CisgICAgICAg
IChKU0M6OnJvdW5kTG9jYWxSZWdpc3RlckNvdW50Rm9yRnJhbWVQb2ludGVyT2Zmc2V0KToKKyAg
ICAgICAgKEpTQzo6bG9nU3RhY2tBbGlnbm1lbnRSZWdpc3RlcnMpOgorICAgICAgICAqIHdhc20v
V0FTTUZ1bmN0aW9uQ29tcGlsZXIuaDoKKyAgICAgICAgKEpTQzo6V0FTTUZ1bmN0aW9uQ29tcGls
ZXI6OnN0YXJ0RnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpXQVNNRnVuY3Rpb25Db21waWxlcjo6
ZW5kRnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpXQVNNRnVuY3Rpb25Db21waWxlcjo6Ym94QXJn
dW1lbnRzQW5kQWRqdXN0U3RhY2tQb2ludGVyKToKKyAgICAgICAgKEpTQzo6V0FTTUZ1bmN0aW9u
Q29tcGlsZXI6OmNhbGxBbmRVbmJveFJlc3VsdCk6CisgICAgICAgICogd2FzbS9XQVNNRnVuY3Rp
b25TeW50YXhDaGVja2VyLmg6CisgICAgICAgIChKU0M6OldBU01GdW5jdGlvblN5bnRheENoZWNr
ZXI6OnVwZGF0ZVRlbXBTdGFja0hlaWdodEZvckNhbGwpOgorCiAyMDE2LTA3LTA4ICBLZWl0aCBN
aWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFR5cGVkQXJyYXlzIG5l
ZWQgbW9yZSBpc05ldXRlcmVkIGNoZWNrcy4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcAkocmV2aXNpb24gMjAyOTU0
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtOTQ3LDcgKzk0Nyw3IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2Vu
ZXJhdGVJbXBsKEFjY2Vzc0dlbmUKIAogICAgICAgICBqaXQuc3RvcmUzMigKICAgICAgICAgICAg
IENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKHN0YXRlLmNhbGxTaXRlSW5kZXhGb3JFeGNlcHRp
b25IYW5kbGluZ09yT3JpZ2luYWwoKS5iaXRzKCkpLAotICAgICAgICAgICAgQ0NhbGxIZWxwZXJz
Ojp0YWdGb3Ioc3RhdGljX2Nhc3Q8VmlydHVhbFJlZ2lzdGVyPihKU1N0YWNrOjpBcmd1bWVudENv
dW50KSkpOworICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjp0YWdGb3Ioc3RhdGljX2Nhc3Q8Vmly
dHVhbFJlZ2lzdGVyPihDYWxsRnJhbWVIZWFkZXI6OkFyZ3VtZW50Q291bnQpKSk7CiAKICAgICAg
ICAgaWYgKG1fdHlwZSA9PSBHZXR0ZXIgfHwgbV90eXBlID09IFNldHRlcikgewogICAgICAgICAg
ICAgLy8gQ3JlYXRlIGEgSlMgY2FsbCB1c2luZyBhIEpTIGNhbGwgaW5saW5lIGNhY2hlLiBBc3N1
bWUgdGhhdDoKQEAgLTEwMDIsNyArMTAwMiw3IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVJ
bXBsKEFjY2Vzc0dlbmUKICAgICAgICAgICAgIENDYWxsSGVscGVyczo6SnVtcCByZXR1cm5VbmRl
ZmluZWQgPSBqaXQuYnJhbmNoVGVzdFB0cigKICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6
Olplcm8sIGxvYWRlZFZhbHVlR1BSKTsKIAotICAgICAgICAgICAgdW5zaWduZWQgbnVtYmVyT2ZS
ZWdzRm9yQ2FsbCA9IEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlclNpemUgKyBudW1iZXJPZlBhcmFt
ZXRlcnM7CisgICAgICAgICAgICB1bnNpZ25lZCBudW1iZXJPZlJlZ3NGb3JDYWxsID0gQ2FsbEZy
YW1lSGVhZGVyOjpTaXplICsgbnVtYmVyT2ZQYXJhbWV0ZXJzOwogCiAgICAgICAgICAgICB1bnNp
Z25lZCBudW1iZXJPZkJ5dGVzRm9yQ2FsbCA9CiAgICAgICAgICAgICAgICAgbnVtYmVyT2ZSZWdz
Rm9yQ2FsbCAqIHNpemVvZihSZWdpc3RlcikgLSBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQyk7CkBA
IC0xMDIwLDEwICsxMDIwLDEwIEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKEFjY2Vz
c0dlbmUKIAogICAgICAgICAgICAgaml0LnN0b3JlMzIoCiAgICAgICAgICAgICAgICAgQ0NhbGxI
ZWxwZXJzOjpUcnVzdGVkSW1tMzIobnVtYmVyT2ZQYXJhbWV0ZXJzKSwKLSAgICAgICAgICAgICAg
ICBjYWxsZWVGcmFtZS53aXRoT2Zmc2V0KEpTU3RhY2s6OkFyZ3VtZW50Q291bnQgKiBzaXplb2Yo
UmVnaXN0ZXIpICsgUGF5bG9hZE9mZnNldCkpOworICAgICAgICAgICAgICAgIGNhbGxlZUZyYW1l
LndpdGhPZmZzZXQoQ2FsbEZyYW1lSGVhZGVyOjpBcmd1bWVudENvdW50ICogc2l6ZW9mKFJlZ2lz
dGVyKSArIFBheWxvYWRPZmZzZXQpKTsKIAogICAgICAgICAgICAgaml0LnN0b3JlQ2VsbCgKLSAg
ICAgICAgICAgICAgICBsb2FkZWRWYWx1ZUdQUiwgY2FsbGVlRnJhbWUud2l0aE9mZnNldChKU1N0
YWNrOjpDYWxsZWUgKiBzaXplb2YoUmVnaXN0ZXIpKSk7CisgICAgICAgICAgICAgICAgbG9hZGVk
VmFsdWVHUFIsIGNhbGxlZUZyYW1lLndpdGhPZmZzZXQoQ2FsbEZyYW1lSGVhZGVyOjpDYWxsZWUg
KiBzaXplb2YoUmVnaXN0ZXIpKSk7CiAKICAgICAgICAgICAgIGppdC5zdG9yZUNlbGwoCiAgICAg
ICAgICAgICAgICAgYmFzZUZvckdldEdQUiwKQEAgLTEyNjAsNyArMTI2MCw3IEBAIHZvaWQgQWNj
ZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKEFjY2Vzc0dlbmUKICAgICAgICAgICAgICAgICBqaXQuc3Rv
cmUzMigKICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoCiAg
ICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZS5jYWxsU2l0ZUluZGV4Rm9yRXhjZXB0aW9uSGFu
ZGxpbmdPck9yaWdpbmFsKCkuYml0cygpKSwKLSAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxw
ZXJzOjp0YWdGb3Ioc3RhdGljX2Nhc3Q8VmlydHVhbFJlZ2lzdGVyPihKU1N0YWNrOjpBcmd1bWVu
dENvdW50KSkpOworICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OnRhZ0ZvcihzdGF0
aWNfY2FzdDxWaXJ0dWFsUmVnaXN0ZXI+KENhbGxGcmFtZUhlYWRlcjo6QXJndW1lbnRDb3VudCkp
KTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBqaXQubWFrZVNwYWNlT25TdGFj
a0ZvckNDYWxsKCk7CiAgICAgICAgICAgICAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvVmlydHVhbFJlZ2lzdGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1ZpcnR1YWxSZWdpc3Rlci5oCShyZXZpc2lvbiAyMDI5NTQpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmlydHVhbFJlZ2lzdGVyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDE1
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSwg
MjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1Zh
bGlkKCkgY29uc3QgeyByZXR1cm4gKG1fdmlydHVhbFJlZ2lzdGVyICE9IHNfaW52YWxpZFZpcnR1
YWxSZWdpc3Rlcik7IH0KICAgICBib29sIGlzTG9jYWwoKSBjb25zdCB7IHJldHVybiBvcGVyYW5k
SXNMb2NhbChtX3ZpcnR1YWxSZWdpc3Rlcik7IH0KICAgICBib29sIGlzQXJndW1lbnQoKSBjb25z
dCB7IHJldHVybiBvcGVyYW5kSXNBcmd1bWVudChtX3ZpcnR1YWxSZWdpc3Rlcik7IH0KLSAgICBi
b29sIGlzSGVhZGVyKCkgY29uc3QgeyByZXR1cm4gbV92aXJ0dWFsUmVnaXN0ZXIgPj0gMCAmJiBt
X3ZpcnR1YWxSZWdpc3RlciA8IEpTU3RhY2s6OlRoaXNBcmd1bWVudDsgfQorICAgIGJvb2wgaXNI
ZWFkZXIoKSBjb25zdCB7IHJldHVybiBtX3ZpcnR1YWxSZWdpc3RlciA+PSAwICYmIG1fdmlydHVh
bFJlZ2lzdGVyIDwgQ2FsbEZyYW1lSGVhZGVyOjpUaGlzQXJndW1lbnQ7IH0KICAgICBib29sIGlz
Q29uc3RhbnQoKSBjb25zdCB7IHJldHVybiBtX3ZpcnR1YWxSZWdpc3RlciA+PSBzX2ZpcnN0Q29u
c3RhbnRSZWdpc3RlckluZGV4OyB9CiAgICAgaW50IHRvTG9jYWwoKSBjb25zdCB7IEFTU0VSVChp
c0xvY2FsKCkpOyByZXR1cm4gb3BlcmFuZFRvTG9jYWwobV92aXJ0dWFsUmVnaXN0ZXIpOyB9CiAg
ICAgaW50IHRvQXJndW1lbnQoKSBjb25zdCB7IEFTU0VSVChpc0FyZ3VtZW50KCkpOyByZXR1cm4g
b3BlcmFuZFRvQXJndW1lbnQobV92aXJ0dWFsUmVnaXN0ZXIpOyB9CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmNwcAkocmV2aXNpb24gMjAyOTU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwNiw3ICszMDYs
NyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mCiAKICAgICBhbGxv
Y2F0ZUFuZEVtaXRTY29wZSgpOwogCi0gICAgbV9jYWxsZWVSZWdpc3Rlci5zZXRJbmRleChKU1N0
YWNrOjpDYWxsZWUpOworICAgIG1fY2FsbGVlUmVnaXN0ZXIuc2V0SW5kZXgoQ2FsbEZyYW1lSGVh
ZGVyOjpDYWxsZWUpOwogCiAgICAgaW5pdGlhbGl6ZVBhcmFtZXRlcnMocGFyYW1ldGVycyk7CiAg
ICAgQVNTRVJUKCEoaXNTaW1wbGVQYXJhbWV0ZXJMaXN0ICYmIG1fcmVzdFBhcmFtZXRlcikpOwpA
QCAtNzQyLDcgKzc0Miw3IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihW
TSYKIAogICAgIGFsbG9jYXRlQW5kRW1pdFNjb3BlKCk7CiAKLSAgICBtX2NhbGxlZVJlZ2lzdGVy
LnNldEluZGV4KEpTU3RhY2s6OkNhbGxlZSk7CisgICAgbV9jYWxsZWVSZWdpc3Rlci5zZXRJbmRl
eChDYWxsRnJhbWVIZWFkZXI6OkNhbGxlZSk7CiAKICAgICBtX2NvZGVCbG9jay0+c2V0TnVtUGFy
YW1ldGVycygxKTsgLy8gQWxsb2NhdGUgc3BhY2UgZm9yICJ0aGlzIgogCkBAIC0zMTMwLDggKzMx
MzAsOCBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENhbGwoCiAgICAgfQog
ICAgIAogICAgIC8vIFJlc2VydmUgc3BhY2UgZm9yIGNhbGwgZnJhbWUuCi0gICAgVmVjdG9yPFJl
ZlB0cjxSZWdpc3RlcklEPiwgSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyU2l6ZSwgVW5zYWZlVmVj
dG9yT3ZlcmZsb3c+IGNhbGxGcmFtZTsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IEpTU3RhY2s6
OkNhbGxGcmFtZUhlYWRlclNpemU7ICsraSkKKyAgICBWZWN0b3I8UmVmUHRyPFJlZ2lzdGVySUQ+
LCBDYWxsRnJhbWVIZWFkZXI6OlNpemUsIFVuc2FmZVZlY3Rvck92ZXJmbG93PiBjYWxsRnJhbWU7
CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBDYWxsRnJhbWVIZWFkZXI6OlNpemU7ICsraSkKICAg
ICAgICAgY2FsbEZyYW1lLmFwcGVuZChuZXdUZW1wb3JhcnkoKSk7CiAKICAgICBlbWl0RXhwcmVz
c2lvbkluZm8oZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kKTsKQEAgLTMzMTUsOCArMzMxNSw4
IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q29uc3QKICAgICB9CiAKICAg
ICAvLyBSZXNlcnZlIHNwYWNlIGZvciBjYWxsIGZyYW1lLgotICAgIFZlY3RvcjxSZWZQdHI8UmVn
aXN0ZXJJRD4sIEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlclNpemUsIFVuc2FmZVZlY3Rvck92ZXJm
bG93PiBjYWxsRnJhbWU7Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBKU1N0YWNrOjpDYWxsRnJh
bWVIZWFkZXJTaXplOyArK2kpCisgICAgVmVjdG9yPFJlZlB0cjxSZWdpc3RlcklEPiwgQ2FsbEZy
YW1lSGVhZGVyOjpTaXplLCBVbnNhZmVWZWN0b3JPdmVyZmxvdz4gY2FsbEZyYW1lOworICAgIGZv
ciAoaW50IGkgPSAwOyBpIDwgQ2FsbEZyYW1lSGVhZGVyOjpTaXplOyArK2kpCiAgICAgICAgIGNh
bGxGcmFtZS5hcHBlbmQobmV3VGVtcG9yYXJ5KCkpOwogCiAgICAgZW1pdEV4cHJlc3Npb25JbmZv
KGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCShyZXZpc2lv
biAyMDI5NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTczLDcgKzczLDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAKICAgICAgICAgUmVnaXN0ZXJJRCogdGhpc1JlZ2lzdGVyKCkgeyByZXR1cm4gbV9hcmd2
WzBdLmdldCgpOyB9CiAgICAgICAgIFJlZ2lzdGVySUQqIGFyZ3VtZW50UmVnaXN0ZXIodW5zaWdu
ZWQgaSkgeyByZXR1cm4gbV9hcmd2W2kgKyAxXS5nZXQoKTsgfQotICAgICAgICB1bnNpZ25lZCBz
dGFja09mZnNldCgpIHsgcmV0dXJuIC1tX2FyZ3ZbMF0tPmluZGV4KCkgKyBKU1N0YWNrOjpDYWxs
RnJhbWVIZWFkZXJTaXplOyB9CisgICAgICAgIHVuc2lnbmVkIHN0YWNrT2Zmc2V0KCkgeyByZXR1
cm4gLW1fYXJndlswXS0+aW5kZXgoKSArIENhbGxGcmFtZUhlYWRlcjo6U2l6ZTsgfQogICAgICAg
ICB1bnNpZ25lZCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygpIHsgcmV0dXJuIG1fYXJndi5z
aXplKCkgLSBtX3BhZGRpbmc7IH0KICAgICAgICAgQXJndW1lbnRzTm9kZSogYXJndW1lbnRzTm9k
ZSgpIHsgcmV0dXJuIG1fYXJndW1lbnRzTm9kZTsgfQogCkBAIC04MDksNyArODA5LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBpZiAocmVnLmlzTG9jYWwoKSkKICAgICAgICAgICAg
ICAgICByZXR1cm4gbV9jYWxsZWVMb2NhbHNbcmVnLnRvTG9jYWwoKV07CiAKLSAgICAgICAgICAg
IGlmIChyZWcub2Zmc2V0KCkgPT0gSlNTdGFjazo6Q2FsbGVlKQorICAgICAgICAgICAgaWYgKHJl
Zy5vZmZzZXQoKSA9PSBDYWxsRnJhbWVIZWFkZXI6OkNhbGxlZSkKICAgICAgICAgICAgICAgICBy
ZXR1cm4gbV9jYWxsZWVSZWdpc3RlcjsKIAogICAgICAgICAgICAgQVNTRVJUKG1fcGFyYW1ldGVy
cy5zaXplKCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rl
c0NvZGVnZW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAkocmV2aXNpb24gMjAyOTU0KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xNjUsNyArMTY1LDcgQEAgc3RhdGljIFJlZ2lzdGVySUQqIGVtaXRIb21lT2JqZWN0Rm9yQ2Fs
bAogICAgIH0KIAogICAgIFJlZ2lzdGVySUQgY2FsbGVlOwotICAgIGNhbGxlZS5zZXRJbmRleChK
U1N0YWNrOjpDYWxsZWUpOworICAgIGNhbGxlZS5zZXRJbmRleChDYWxsRnJhbWVIZWFkZXI6OkNh
bGxlZSk7CiAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0R2V0QnlJZChnZW5lcmF0b3IubmV3VGVt
cG9yYXJ5KCksICZjYWxsZWUsIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVz
KCkuaG9tZU9iamVjdFByaXZhdGVOYW1lKCkpOwogfQogCkBAIC0xODEsNyArMTgxLDcgQEAgc3Rh
dGljIFJlZ2lzdGVySUQqIGVtaXRHZXRTdXBlckZ1bmN0aW9uRgogICAgICAgICByZXR1cm4gZ2Vu
ZXJhdG9yLmVtaXRHZXRCeUlkKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgZ2VuZXJhdG9yLmVt
aXRMb2FkRGVyaXZlZENvbnN0cnVjdG9yRnJvbUFycm93RnVuY3Rpb25MZXhpY2FsRW52aXJvbm1l
bnQoKSwgZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS51bmRlcnNjb3JlUHJvdG8pOwogCiAgICAg
UmVnaXN0ZXJJRCBjYWxsZWU7Ci0gICAgY2FsbGVlLnNldEluZGV4KEpTU3RhY2s6OkNhbGxlZSk7
CisgICAgY2FsbGVlLnNldEluZGV4KENhbGxGcmFtZUhlYWRlcjo6Q2FsbGVlKTsKICAgICByZXR1
cm4gZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgJmNhbGxl
ZSwgZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS51bmRlcnNjb3JlUHJvdG8pOwogfQogCkBAIC03
MjQsNyArNzI0LDcgQEAgQ2FsbEFyZ3VtZW50czo6Q2FsbEFyZ3VtZW50cyhCeXRlY29kZUdlbgog
ICAgIH0KIAogICAgIC8vIFdlIG5lZWQgdG8gZW5zdXJlIHRoYXQgdGhlIGZyYW1lIHNpemUgaXMg
c3RhY2stYWxpZ25lZAotICAgIHdoaWxlICgoSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyU2l6ZSAr
IG1fYXJndi5zaXplKCkpICUgc3RhY2tBbGlnbm1lbnRSZWdpc3RlcnMoKSkgeworICAgIHdoaWxl
ICgoQ2FsbEZyYW1lSGVhZGVyOjpTaXplICsgbV9hcmd2LnNpemUoKSkgJSBzdGFja0FsaWdubWVu
dFJlZ2lzdGVycygpKSB7CiAgICAgICAgIG1fYXJndi5pbnNlcnQoMCwgZ2VuZXJhdG9yLm5ld1Rl
bXBvcmFyeSgpKTsKICAgICAgICAgbV9wYWRkaW5nKys7CiAgICAgfQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9u
UGhhc2UuY3BwCShyZXZpc2lvbiAyMDI5NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMDMs
MTIgKzMwMywxMiBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICBpZiAoSW5saW5lQ2Fs
bEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUgPSBjYW5kaWRhdGUtPm9yaWdpbi5zZW1hbnRpYy5pbmxp
bmVDYWxsRnJhbWUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbmxpbmVDYWxsRnJh
bWUtPmlzVmFyYXJncygpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNDbG9iYmVy
ZWRCeUJsb2NrIHw9IGNsb2JiZXJlZEJ5VGhpc0Jsb2NrLm9wZXJhbmQoCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyBKU1N0YWNr
OjpBcmd1bWVudENvdW50KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5saW5l
Q2FsbEZyYW1lLT5zdGFja09mZnNldCArIENhbGxGcmFtZUhlYWRlcjo6QXJndW1lbnRDb3VudCk7
CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAKICAg
ICAgICAgICAgICAgICAgICAgICAgIGlmICghaXNDbG9iYmVyZWRCeUJsb2NrIHx8IGlubGluZUNh
bGxGcmFtZS0+aXNDbG9zdXJlQ2FsbCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlz
Q2xvYmJlcmVkQnlCbG9jayB8PSBjbG9iYmVyZWRCeVRoaXNCbG9jay5vcGVyYW5kKAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsg
SlNTdGFjazo6Q2FsbGVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5saW5l
Q2FsbEZyYW1lLT5zdGFja09mZnNldCArIENhbGxGcmFtZUhlYWRlcjo6Q2FsbGVlKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKCFpc0Nsb2JiZXJlZEJ5QmxvY2spIHsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRzVXRpbGl0aWVzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c1V0aWxpdGllcy5jcHAJKHJl
dmlzaW9uIDIwMjk1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRz
VXRpbGl0aWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsMTEgKzM4LDExIEBAIGJvb2wgYXJn
dW1lbnRzSW52b2x2ZVN0YWNrU2xvdChJbmxpbmVDYWwKICAgICAgICAgcmV0dXJuIChyZWcuaXNB
cmd1bWVudCgpICYmIHJlZy50b0FyZ3VtZW50KCkpIHx8IHJlZy5pc0hlYWRlcigpOwogICAgIAog
ICAgIGlmIChpbmxpbmVDYWxsRnJhbWUtPmlzQ2xvc3VyZUNhbGwKLSAgICAgICAgJiYgcmVnID09
IFZpcnR1YWxSZWdpc3RlcihpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgSlNTdGFjazo6
Q2FsbGVlKSkKKyAgICAgICAgJiYgcmVnID09IFZpcnR1YWxSZWdpc3RlcihpbmxpbmVDYWxsRnJh
bWUtPnN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lSGVhZGVyOjpDYWxsZWUpKQogICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICAKICAgICBpZiAoaW5saW5lQ2FsbEZyYW1lLT5pc1ZhcmFyZ3MoKQotICAg
ICAgICAmJiByZWcgPT0gVmlydHVhbFJlZ2lzdGVyKGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZz
ZXQgKyBKU1N0YWNrOjpBcmd1bWVudENvdW50KSkKKyAgICAgICAgJiYgcmVnID09IFZpcnR1YWxS
ZWdpc3RlcihpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lSGVhZGVyOjpB
cmd1bWVudENvdW50KSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgCiAgICAgdW5zaWduZWQg
bnVtQXJndW1lbnRzID0gaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgpIC0gMTsKQEAg
LTc4LDcgKzc4LDcgQEAgTm9kZSogZW1pdENvZGVUb0dldEFyZ3VtZW50c0FycmF5TGVuZ3RoKAog
ICAgIGlmICghaW5saW5lQ2FsbEZyYW1lKQogICAgICAgICBhcmd1bWVudENvdW50ID0gaW5zZXJ0
aW9uU2V0Lmluc2VydE5vZGUobm9kZUluZGV4LCBTcGVjSW50MzJPbmx5LCBHZXRBcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcywgb3JpZ2luKTsKICAgICBlbHNlIHsKLSAgICAgICAgVmlydHVhbFJl
Z2lzdGVyIGFyZ3VtZW50Q291bnRSZWdpc3RlcihpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0
ICsgSlNTdGFjazo6QXJndW1lbnRDb3VudCk7CisgICAgICAgIFZpcnR1YWxSZWdpc3RlciBhcmd1
bWVudENvdW50UmVnaXN0ZXIoaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCArIENhbGxGcmFt
ZUhlYWRlcjo6QXJndW1lbnRDb3VudCk7CiAgICAgICAgIAogICAgICAgICBhcmd1bWVudENvdW50
ID0gaW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCiAgICAgICAgICAgICBub2RlSW5kZXgsIFNwZWNJ
bnQzMk9ubHksIEdldFN0YWNrLCBvcmlnaW4sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkocmV2aXNpb24gMjAyOTU0KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTMzMSwxMCArMzMxLDEwIEBAIHByaXZhdGU6CiAgICAgICAgIGlmIChpbmxpbmVDYWxs
RnJhbWUoKSkgewogICAgICAgICAgICAgaWYgKCFpbmxpbmVDYWxsRnJhbWUoKS0+aXNDbG9zdXJl
Q2FsbCkgewogICAgICAgICAgICAgICAgIEpTRnVuY3Rpb24qIGNhbGxlZSA9IGlubGluZUNhbGxG
cmFtZSgpLT5jYWxsZWVDb25zdGFudCgpOwotICAgICAgICAgICAgICAgIGlmIChvcGVyYW5kLm9m
ZnNldCgpID09IEpTU3RhY2s6OkNhbGxlZSkKKyAgICAgICAgICAgICAgICBpZiAob3BlcmFuZC5v
ZmZzZXQoKSA9PSBDYWxsRnJhbWVIZWFkZXI6OkNhbGxlZSkKICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHdlYWtKU0NvbnN0YW50KGNhbGxlZSk7CiAgICAgICAgICAgICB9Ci0gICAgICAgIH0g
ZWxzZSBpZiAob3BlcmFuZC5vZmZzZXQoKSA9PSBKU1N0YWNrOjpDYWxsZWUpIHsKKyAgICAgICAg
fSBlbHNlIGlmIChvcGVyYW5kLm9mZnNldCgpID09IENhbGxGcmFtZUhlYWRlcjo6Q2FsbGVlKSB7
CiAgICAgICAgICAgICAvLyBXZSBoYXZlIHRvIGRvIHNvbWUgY29uc3RhbnQtZm9sZGluZyBoZXJl
IGJlY2F1c2UgdGhpcyBlbmFibGVzIENyZWF0ZVRoaXMgZm9sZGluZy4gTm90ZQogICAgICAgICAg
ICAgLy8gdGhhdCB3ZSBkb24ndCBoYXZlIHN1Y2ggd2F0Y2hwb2ludC1iYXNlZCBmb2xkaW5nIGZv
ciBpbmxpbmVkIHVzZXMgb2YgQ2FsbGVlLCBzaW5jZSBpbiB0aGF0CiAgICAgICAgICAgICAvLyBj
YXNlIGlmIHRoZSBmdW5jdGlvbiBpcyBhIHNpbmdsZXRvbiB0aGVuIHdlIGFscmVhZHkga25vdyBp
dC4KQEAgLTU0Miw3ICs1NDIsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgSW5saW5lQ2FsbEZy
YW1lKiBpbmxpbmVDYWxsRnJhbWUgPSBzdGFjay0+bV9pbmxpbmVDYWxsRnJhbWU7CiAgICAgICAg
ICAgICBpZiAoIWlubGluZUNhbGxGcmFtZSkKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgIGlmIChvcGVyYW5kLm9mZnNldCgpIDwgc3RhdGljX2Nhc3Q8aW50PihpbmxpbmVDYWxs
RnJhbWUtPnN0YWNrT2Zmc2V0ICsgSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyU2l6ZSkpCisgICAg
ICAgICAgICBpZiAob3BlcmFuZC5vZmZzZXQoKSA8IHN0YXRpY19jYXN0PGludD4oaW5saW5lQ2Fs
bEZyYW1lLT5zdGFja09mZnNldCArIENhbGxGcmFtZUhlYWRlcjo6U2l6ZSkpCiAgICAgICAgICAg
ICAgICAgY29udGludWU7CiAgICAgICAgICAgICBpZiAob3BlcmFuZC5vZmZzZXQoKSA9PSBpbmxp
bmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lOjp0aGlzQXJndW1lbnRPZmZzZXQo
KSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTU5Nyw5ICs1OTcsOSBAQCBwcml2YXRl
OgogICAgICAgICAgICAgQVNTRVJUKCFtX2hhc0RlYnVnZ2VyRW5hYmxlZCk7CiAgICAgICAgICAg
ICBudW1Bcmd1bWVudHMgPSBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5zaXplKCk7CiAgICAg
ICAgICAgICBpZiAoaW5saW5lQ2FsbEZyYW1lLT5pc0Nsb3N1cmVDYWxsKQotICAgICAgICAgICAg
ICAgIGZsdXNoRGlyZWN0KGlubGluZVN0YWNrRW50cnktPnJlbWFwT3BlcmFuZChWaXJ0dWFsUmVn
aXN0ZXIoSlNTdGFjazo6Q2FsbGVlKSkpOworICAgICAgICAgICAgICAgIGZsdXNoRGlyZWN0KGlu
bGluZVN0YWNrRW50cnktPnJlbWFwT3BlcmFuZChWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lSGVh
ZGVyOjpDYWxsZWUpKSk7CiAgICAgICAgICAgICBpZiAoaW5saW5lQ2FsbEZyYW1lLT5pc1ZhcmFy
Z3MoKSkKLSAgICAgICAgICAgICAgICBmbHVzaERpcmVjdChpbmxpbmVTdGFja0VudHJ5LT5yZW1h
cE9wZXJhbmQoVmlydHVhbFJlZ2lzdGVyKEpTU3RhY2s6OkFyZ3VtZW50Q291bnQpKSk7CisgICAg
ICAgICAgICAgICAgZmx1c2hEaXJlY3QoaW5saW5lU3RhY2tFbnRyeS0+cmVtYXBPcGVyYW5kKFZp
cnR1YWxSZWdpc3RlcihDYWxsRnJhbWVIZWFkZXI6OkFyZ3VtZW50Q291bnQpKSk7CiAgICAgICAg
IH0gZWxzZQogICAgICAgICAgICAgbnVtQXJndW1lbnRzID0gaW5saW5lU3RhY2tFbnRyeS0+bV9j
b2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBhcmd1bWVu
dCA9IG51bUFyZ3VtZW50czsgYXJndW1lbnQtLSA+IDE7KQpAQCAtNzY2LDkgKzc2Niw5IEBAIHBy
aXZhdGU6CiAgICAgICAgIE9wSW5mbyBwcmVkaWN0aW9uKQogICAgIHsKICAgICAgICAgYWRkVmFy
QXJnQ2hpbGQoY2FsbGVlKTsKLSAgICAgICAgc2l6ZV90IGZyYW1lU2l6ZSA9IEpTU3RhY2s6OkNh
bGxGcmFtZUhlYWRlclNpemUgKyBhcmdDb3VudDsKKyAgICAgICAgc2l6ZV90IGZyYW1lU2l6ZSA9
IENhbGxGcmFtZUhlYWRlcjo6U2l6ZSArIGFyZ0NvdW50OwogICAgICAgICBzaXplX3QgYWxpZ25l
ZEZyYW1lU2l6ZSA9IFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZihzdGFja0FsaWdubWVudFJlZ2lz
dGVycygpLCBmcmFtZVNpemUpOwotICAgICAgICBzaXplX3QgcGFyYW1ldGVyU2xvdHMgPSBhbGln
bmVkRnJhbWVTaXplIC0gSlNTdGFjazo6Q2FsbGVyRnJhbWVBbmRQQ1NpemU7CisgICAgICAgIHNp
emVfdCBwYXJhbWV0ZXJTbG90cyA9IGFsaWduZWRGcmFtZVNpemUgLSBDYWxsRnJhbWVIZWFkZXI6
OkNhbGxlckZyYW1lQW5kUENTaXplOwogCiAgICAgICAgIGlmIChwYXJhbWV0ZXJTbG90cyA+IG1f
cGFyYW1ldGVyU2xvdHMpCiAgICAgICAgICAgICBtX3BhcmFtZXRlclNsb3RzID0gcGFyYW1ldGVy
U2xvdHM7CkBAIC0xMzM3LDcgKzEzMzcsNyBAQCBOb2RlKiBCeXRlQ29kZVBhcnNlcjo6Z2V0QXJn
dW1lbnRDb3VudCgpCiAgICAgTm9kZSogYXJndW1lbnRDb3VudDsKICAgICBpZiAobV9pbmxpbmVT
dGFja1RvcC0+bV9pbmxpbmVDYWxsRnJhbWUpIHsKICAgICAgICAgaWYgKG1faW5saW5lU3RhY2tU
b3AtPm1faW5saW5lQ2FsbEZyYW1lLT5pc1ZhcmFyZ3MoKSkKLSAgICAgICAgICAgIGFyZ3VtZW50
Q291bnQgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKEpTU3RhY2s6OkFyZ3VtZW50Q291bnQpKTsKKyAg
ICAgICAgICAgIGFyZ3VtZW50Q291bnQgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKENhbGxGcmFtZUhl
YWRlcjo6QXJndW1lbnRDb3VudCkpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBhcmd1bWVu
dENvdW50ID0ganNDb25zdGFudChtX2dyYXBoLmZyZWV6ZShqc051bWJlcihtX2lubGluZVN0YWNr
VG9wLT5tX2lubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKSkpLT52YWx1ZSgpKTsKICAg
ICB9IGVsc2UKQEAgLTE0NzIsMTEgKzE0NzIsMTEgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aW5s
aW5lQ2FsbChOb2RlKiBjYQogCiAgICAgLy8gRklYTUU6IERvbid0IGZsdXNoIGNvbnN0YW50cyEK
ICAgICAKLSAgICBpbnQgaW5saW5lQ2FsbEZyYW1lU3RhcnQgPSBtX2lubGluZVN0YWNrVG9wLT5y
ZW1hcE9wZXJhbmQoVmlydHVhbFJlZ2lzdGVyKHJlZ2lzdGVyT2Zmc2V0KSkub2Zmc2V0KCkgKyBK
U1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJTaXplOworICAgIGludCBpbmxpbmVDYWxsRnJhbWVTdGFy
dCA9IG1faW5saW5lU3RhY2tUb3AtPnJlbWFwT3BlcmFuZChWaXJ0dWFsUmVnaXN0ZXIocmVnaXN0
ZXJPZmZzZXQpKS5vZmZzZXQoKSArIENhbGxGcmFtZUhlYWRlcjo6U2l6ZTsKICAgICAKICAgICBl
bnN1cmVMb2NhbHMoCiAgICAgICAgIFZpcnR1YWxSZWdpc3RlcihpbmxpbmVDYWxsRnJhbWVTdGFy
dCkudG9Mb2NhbCgpICsgMSArCi0gICAgICAgIEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlclNpemUg
KyBjb2RlQmxvY2stPm1fbnVtQ2FsbGVlTG9jYWxzKTsKKyAgICAgICAgQ2FsbEZyYW1lSGVhZGVy
OjpTaXplICsgY29kZUJsb2NrLT5tX251bUNhbGxlZUxvY2Fscyk7CiAgICAgCiAgICAgc2l6ZV90
IGFyZ3VtZW50UG9zaXRpb25TdGFydCA9IG1fZ3JhcGgubV9hcmd1bWVudFBvc2l0aW9ucy5zaXpl
KCk7CiAKQEAgLTE0ODcsNyArMTQ4Nyw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmlubGluZUNh
bGwoTm9kZSogY2EKICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIGNhbGxlZVZhcmlhYmxlID0gbnVs
bHB0cjsKICAgICBpZiAoY2FsbGVlLmlzQ2xvc3VyZUNhbGwoKSkgewogICAgICAgICBOb2RlKiBj
YWxsZWVTZXQgPSBzZXQoCi0gICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIocmVnaXN0ZXJPZmZz
ZXQgKyBKU1N0YWNrOjpDYWxsZWUpLCBjYWxsVGFyZ2V0Tm9kZSwgSW1tZWRpYXRlTmFrZWRTZXQp
OworICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyKHJlZ2lzdGVyT2Zmc2V0ICsgQ2FsbEZyYW1l
SGVhZGVyOjpDYWxsZWUpLCBjYWxsVGFyZ2V0Tm9kZSwgSW1tZWRpYXRlTmFrZWRTZXQpOwogICAg
ICAgICAKICAgICAgICAgY2FsbGVlVmFyaWFibGUgPSBjYWxsZWVTZXQtPnZhcmlhYmxlQWNjZXNz
RGF0YSgpOwogICAgICAgICBjYWxsZWVWYXJpYWJsZS0+bWVyZ2VTaG91bGROZXZlclVuYm94KHRy
dWUpOwpAQCAtMTc0Niw3ICsxNzQ2LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5s
aW5pbmcoCiAgICAgICAgICAgICAKICAgICAgICAgICAgIHJlZ2lzdGVyT2Zmc2V0ID0gcmVnaXN0
ZXJPZmZzZXRPckZpcnN0RnJlZVJlZyArIDE7CiAgICAgICAgICAgICByZWdpc3Rlck9mZnNldCAt
PSBtYXhOdW1Bcmd1bWVudHM7IC8vIGluY2x1ZGVzICJ0aGlzIgotICAgICAgICAgICAgcmVnaXN0
ZXJPZmZzZXQgLT0gSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyU2l6ZTsKKyAgICAgICAgICAgIHJl
Z2lzdGVyT2Zmc2V0IC09IENhbGxGcmFtZUhlYWRlcjo6U2l6ZTsKICAgICAgICAgICAgIHJlZ2lz
dGVyT2Zmc2V0ID0gLVdURjo6cm91bmRVcFRvTXVsdGlwbGVPZigKICAgICAgICAgICAgICAgICBz
dGFja0FsaWdubWVudFJlZ2lzdGVycygpLAogICAgICAgICAgICAgICAgIC1yZWdpc3Rlck9mZnNl
dCk7CkBAIC0xNzY2LDEzICsxNzY2LDEzIEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlu
bGluaW5nKAogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgZW5zdXJl
TG9jYWxzKFZpcnR1YWxSZWdpc3RlcihyZW1hcHBlZFJlZ2lzdGVyT2Zmc2V0KS50b0xvY2FsKCkp
OwogICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgaW50IGFyZ3VtZW50
U3RhcnQgPSByZWdpc3Rlck9mZnNldCArIEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlclNpemU7Cisg
ICAgICAgICAgICAgICAgICAgIGludCBhcmd1bWVudFN0YXJ0ID0gcmVnaXN0ZXJPZmZzZXQgKyBD
YWxsRnJhbWVIZWFkZXI6OlNpemU7CiAgICAgICAgICAgICAgICAgICAgIGludCByZW1hcHBlZEFy
Z3VtZW50U3RhcnQgPQogICAgICAgICAgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+
cmVtYXBPcGVyYW5kKFZpcnR1YWxSZWdpc3Rlcihhcmd1bWVudFN0YXJ0KSkub2Zmc2V0KCk7CiAK
ICAgICAgICAgICAgICAgICAgICAgTG9hZFZhcmFyZ3NEYXRhKiBkYXRhID0gbV9ncmFwaC5tX2xv
YWRWYXJhcmdzRGF0YS5hZGQoKTsKICAgICAgICAgICAgICAgICAgICAgZGF0YS0+c3RhcnQgPSBW
aXJ0dWFsUmVnaXN0ZXIocmVtYXBwZWRBcmd1bWVudFN0YXJ0ICsgMSk7Ci0gICAgICAgICAgICAg
ICAgICAgIGRhdGEtPmNvdW50ID0gVmlydHVhbFJlZ2lzdGVyKHJlbWFwcGVkUmVnaXN0ZXJPZmZz
ZXQgKyBKU1N0YWNrOjpBcmd1bWVudENvdW50KTsKKyAgICAgICAgICAgICAgICAgICAgZGF0YS0+
Y291bnQgPSBWaXJ0dWFsUmVnaXN0ZXIocmVtYXBwZWRSZWdpc3Rlck9mZnNldCArIENhbGxGcmFt
ZUhlYWRlcjo6QXJndW1lbnRDb3VudCk7CiAgICAgICAgICAgICAgICAgICAgIGRhdGEtPm9mZnNl
dCA9IGFyZ3VtZW50c09mZnNldDsKICAgICAgICAgICAgICAgICAgICAgZGF0YS0+bGltaXQgPSBt
YXhOdW1Bcmd1bWVudHM7CiAgICAgICAgICAgICAgICAgICAgIGRhdGEtPm1hbmRhdG9yeU1pbmlt
dW0gPSBtYW5kYXRvcnlNaW5pbXVtOwpAQCAtMTc5Myw3ICsxNzkzLDcgQEAgYm9vbCBCeXRlQ29k
ZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcoCiAgICAgICAgICAgICAgICAgICAgIC8vIGJlZm9yZSBT
U0EuCiAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRh
KiBjb3VudFZhcmlhYmxlID0gbmV3VmFyaWFibGVBY2Nlc3NEYXRhKAotICAgICAgICAgICAgICAg
ICAgICAgICAgVmlydHVhbFJlZ2lzdGVyKHJlbWFwcGVkUmVnaXN0ZXJPZmZzZXQgKyBKU1N0YWNr
OjpBcmd1bWVudENvdW50KSk7CisgICAgICAgICAgICAgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0
ZXIocmVtYXBwZWRSZWdpc3Rlck9mZnNldCArIENhbGxGcmFtZUhlYWRlcjo6QXJndW1lbnRDb3Vu
dCkpOwogICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIHByZXR0eSBsYW1lLCBidXQgaXQg
d2lsbCBmb3JjZSB0aGUgY291bnQgdG8gYmUgZmx1c2hlZCBhcyBhbiBpbnQuIFRoaXMgZG9lc24n
dAogICAgICAgICAgICAgICAgICAgICAvLyBtYXR0ZXIgdmVyeSBtdWNoLCBzaW5jZSBvdXIgdXNl
IG9mIGEgU2V0QXJndW1lbnQgYW5kIEZsdXNoZXMgZm9yIHRoaXMgbG9jYWwgc2xvdCBpcwogICAg
ICAgICAgICAgICAgICAgICAvLyBtb3N0bHkganVzdCBhIGZvcm1hbGl0eS4KQEAgLTE5MDQsNyAr
MTkwNCw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKAogICAgIC8vIHll
dC4KICAgICBpZiAodmVyYm9zZSkKICAgICAgICAgZGF0YUxvZygiUmVnaXN0ZXIgb2Zmc2V0OiAi
LCByZWdpc3Rlck9mZnNldCk7Ci0gICAgVmlydHVhbFJlZ2lzdGVyIGNhbGxlZVJlZyhyZWdpc3Rl
ck9mZnNldCArIEpTU3RhY2s6OkNhbGxlZSk7CisgICAgVmlydHVhbFJlZ2lzdGVyIGNhbGxlZVJl
ZyhyZWdpc3Rlck9mZnNldCArIENhbGxGcmFtZUhlYWRlcjo6Q2FsbGVlKTsKICAgICBjYWxsZWVS
ZWcgPSBtX2lubGluZVN0YWNrVG9wLT5yZW1hcE9wZXJhbmQoY2FsbGVlUmVnKTsKICAgICBpZiAo
dmVyYm9zZSkKICAgICAgICAgZGF0YUxvZygiQ2FsbGVlIGlzIGdvaW5nIHRvIGJlICIsIGNhbGxl
ZVJlZywgIlxuIik7CkBAIC0zMjcxLDcgKzMyNzEsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpo
YW5kbGVHZXRCeUlkKAogICAgIGludCByZWdpc3Rlck9mZnNldCA9IHZpcnR1YWxSZWdpc3RlckZv
ckxvY2FsKAogICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPm1fbnVt
Q2FsbGVlTG9jYWxzIC0gMSkub2Zmc2V0KCk7CiAgICAgcmVnaXN0ZXJPZmZzZXQgLT0gbnVtYmVy
T2ZQYXJhbWV0ZXJzOwotICAgIHJlZ2lzdGVyT2Zmc2V0IC09IEpTU3RhY2s6OkNhbGxGcmFtZUhl
YWRlclNpemU7CisgICAgcmVnaXN0ZXJPZmZzZXQgLT0gQ2FsbEZyYW1lSGVhZGVyOjpTaXplOwog
ICAgIAogICAgIC8vIEdldCB0aGUgYWxpZ25tZW50IHJpZ2h0LgogICAgIHJlZ2lzdGVyT2Zmc2V0
ID0gLVdURjo6cm91bmRVcFRvTXVsdGlwbGVPZigKQEAgLTMyODgsNyArMzI4OCw3IEBAIHZvaWQg
Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUdldEJ5SWQoCiAgICAgLy8gICAgdGhlIGRyZWFkZWQgYXJn
dW1lbnRzIG9iamVjdCBvbiB0aGUgZ2V0dGVyLCB0aGUgcmlnaHQgdGhpbmdzIGhhcHBlbi4gV2Vs
bCwgc29ydCBvZiAtCiAgICAgLy8gICAgc2luY2Ugd2Ugb25seSByZWFsbHkgY2FyZSBhYm91dCAn
dGhpcycgaW4gdGhpcyBjYXNlLiBCdXQgd2UncmUgbm90IGdvaW5nIHRvIHRha2UgdGhhdAogICAg
IC8vICAgIHNob3J0Y3V0LgotICAgIGludCBuZXh0UmVnaXN0ZXIgPSByZWdpc3Rlck9mZnNldCAr
IEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlclNpemU7CisgICAgaW50IG5leHRSZWdpc3RlciA9IHJl
Z2lzdGVyT2Zmc2V0ICsgQ2FsbEZyYW1lSGVhZGVyOjpTaXplOwogICAgIHNldChWaXJ0dWFsUmVn
aXN0ZXIobmV4dFJlZ2lzdGVyKyspLCBiYXNlLCBJbW1lZGlhdGVOYWtlZFNldCk7CiAKICAgICAv
LyBXZSd2ZSBzZXQgc29tZSBsb2NhbHMsIGJ1dCB0aGV5IGFyZSBub3QgdXNlci12aXNpYmxlLiBJ
dCdzIHN0aWxsIE9LIHRvIGV4aXQgZnJvbSBoZXJlLgpAQCAtMzQ0MCw3ICszNDQwLDcgQEAgdm9p
ZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlUHV0QnlJZCgKICAgICAgICAgaW50IHJlZ2lzdGVyT2Zm
c2V0ID0gdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoCiAgICAgICAgICAgICBtX2lubGluZVN0YWNr
VG9wLT5tX3Byb2ZpbGVkQmxvY2stPm1fbnVtQ2FsbGVlTG9jYWxzIC0gMSkub2Zmc2V0KCk7CiAg
ICAgICAgIHJlZ2lzdGVyT2Zmc2V0IC09IG51bWJlck9mUGFyYW1ldGVyczsKLSAgICAgICAgcmVn
aXN0ZXJPZmZzZXQgLT0gSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyU2l6ZTsKKyAgICAgICAgcmVn
aXN0ZXJPZmZzZXQgLT0gQ2FsbEZyYW1lSGVhZGVyOjpTaXplOwogICAgIAogICAgICAgICAvLyBH
ZXQgdGhlIGFsaWdubWVudCByaWdodC4KICAgICAgICAgcmVnaXN0ZXJPZmZzZXQgPSAtV1RGOjpy
b3VuZFVwVG9NdWx0aXBsZU9mKApAQCAtMzQ1MSw3ICszNDUxLDcgQEAgdm9pZCBCeXRlQ29kZVBh
cnNlcjo6aGFuZGxlUHV0QnlJZCgKICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPnJlbWFw
T3BlcmFuZCgKICAgICAgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIocmVnaXN0ZXJPZmZzZXQp
KS50b0xvY2FsKCkpOwogICAgIAotICAgICAgICBpbnQgbmV4dFJlZ2lzdGVyID0gcmVnaXN0ZXJP
ZmZzZXQgKyBKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJTaXplOworICAgICAgICBpbnQgbmV4dFJl
Z2lzdGVyID0gcmVnaXN0ZXJPZmZzZXQgKyBDYWxsRnJhbWVIZWFkZXI6OlNpemU7CiAgICAgICAg
IHNldChWaXJ0dWFsUmVnaXN0ZXIobmV4dFJlZ2lzdGVyKyspLCBiYXNlLCBJbW1lZGlhdGVOYWtl
ZFNldCk7CiAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIobmV4dFJlZ2lzdGVyKyspLCB2YWx1
ZSwgSW1tZWRpYXRlTmFrZWRTZXQpOwogCkBAIC00OTcyLDcgKzQ5NzIsNyBAQCBib29sIEJ5dGVD
b2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgICAgICAvLyBvbmx5IGhlbHBz
IGZvciB0aGUgZmlyc3QgYmFzaWMgYmxvY2suIEl0J3MgZXh0cmVtZWx5IGltcG9ydGFudCBub3Qg
dG8gY29uc3RhbnQgZm9sZAogICAgICAgICAgICAgLy8gbG9hZHMgZnJvbSB0aGUgc2NvcGUgcmVn
aXN0ZXIgbGF0ZXIsIGFzIHRoYXQgd291bGQgcHJldmVudCB0aGUgREZHIGZyb20gdHJhY2tpbmcg
dGhlCiAgICAgICAgICAgICAvLyBieXRlY29kZS1sZXZlbCBsaXZlbmVzcyBvZiB0aGUgc2NvcGUg
cmVnaXN0ZXIuCi0gICAgICAgICAgICBOb2RlKiBjYWxsZWUgPSBnZXQoVmlydHVhbFJlZ2lzdGVy
KEpTU3RhY2s6OkNhbGxlZSkpOworICAgICAgICAgICAgTm9kZSogY2FsbGVlID0gZ2V0KFZpcnR1
YWxSZWdpc3RlcihDYWxsRnJhbWVIZWFkZXI6OkNhbGxlZSkpOwogICAgICAgICAgICAgTm9kZSog
cmVzdWx0OwogICAgICAgICAgICAgaWYgKEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0gY2FsbGVlLT5k
eW5hbWljQ2FzdENvbnN0YW50PEpTRnVuY3Rpb24qPigpKQogICAgICAgICAgICAgICAgIHJlc3Vs
dCA9IHdlYWtKU0NvbnN0YW50KGZ1bmN0aW9uLT5zY29wZSgpKTsKQEAgLTUyODMsNyArNTI4Myw3
IEBAIEJ5dGVDb2RlUGFyc2VyOjpJbmxpbmVTdGFja0VudHJ5OjpJbmxpbmUKICAgICAgICAgLy8g
VGhlIG93bmVyIGlzIHRoZSBtYWNoaW5lIGNvZGUgYmxvY2ssIGFuZCB3ZSBhbHJlYWR5IGhhdmUg
YSBiYXJyaWVyIG9uIHRoYXQgd2hlbiB0aGUKICAgICAgICAgLy8gcGxhbiBmaW5pc2hlcy4KICAg
ICAgICAgbV9pbmxpbmVDYWxsRnJhbWUtPmJhc2VsaW5lQ29kZUJsb2NrLnNldFdpdGhvdXRXcml0
ZUJhcnJpZXIoY29kZUJsb2NrLT5iYXNlbGluZVZlcnNpb24oKSk7Ci0gICAgICAgIG1faW5saW5l
Q2FsbEZyYW1lLT5zZXRTdGFja09mZnNldChpbmxpbmVDYWxsRnJhbWVTdGFydC5vZmZzZXQoKSAt
IEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlclNpemUpOworICAgICAgICBtX2lubGluZUNhbGxGcmFt
ZS0+c2V0U3RhY2tPZmZzZXQoaW5saW5lQ2FsbEZyYW1lU3RhcnQub2Zmc2V0KCkgLSBDYWxsRnJh
bWVIZWFkZXI6OlNpemUpOwogICAgICAgICBpZiAoY2FsbGVlKSB7CiAgICAgICAgICAgICBtX2lu
bGluZUNhbGxGcmFtZS0+Y2FsbGVlUmVjb3ZlcnkgPSBWYWx1ZVJlY292ZXJ5Ojpjb25zdGFudChj
YWxsZWUpOwogICAgICAgICAgICAgbV9pbmxpbmVDYWxsRnJhbWUtPmlzQ2xvc3VyZUNhbGwgPSBm
YWxzZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCShy
ZXZpc2lvbiAyMDI5NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJp
emUuaAkod29ya2luZyBjb3B5KQpAQCAtMTEzLDkgKzExMyw5IEBAIHZvaWQgY2xvYmJlcml6ZShH
cmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUKICAgICAvLyBzY2FuIHdvdWxkIHJlYWQuIFRoYXQncyB3
aGF0IHRoaXMgZG9lcy4KICAgICBmb3IgKElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1l
ID0gbm9kZS0+b3JpZ2luLnNlbWFudGljLmlubGluZUNhbGxGcmFtZTsgaW5saW5lQ2FsbEZyYW1l
OyBpbmxpbmVDYWxsRnJhbWUgPSBpbmxpbmVDYWxsRnJhbWUtPmRpcmVjdENhbGxlci5pbmxpbmVD
YWxsRnJhbWUpIHsKICAgICAgICAgaWYgKGlubGluZUNhbGxGcmFtZS0+aXNDbG9zdXJlQ2FsbCkK
LSAgICAgICAgICAgIHJlYWQoQWJzdHJhY3RIZWFwKFN0YWNrLCBpbmxpbmVDYWxsRnJhbWUtPnN0
YWNrT2Zmc2V0ICsgSlNTdGFjazo6Q2FsbGVlKSk7CisgICAgICAgICAgICByZWFkKEFic3RyYWN0
SGVhcChTdGFjaywgaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCArIENhbGxGcmFtZUhlYWRl
cjo6Q2FsbGVlKSk7CiAgICAgICAgIGlmIChpbmxpbmVDYWxsRnJhbWUtPmlzVmFyYXJncygpKQot
ICAgICAgICAgICAgcmVhZChBYnN0cmFjdEhlYXAoU3RhY2ssIGlubGluZUNhbGxGcmFtZS0+c3Rh
Y2tPZmZzZXQgKyBKU1N0YWNrOjpBcmd1bWVudENvdW50KSk7CisgICAgICAgICAgICByZWFkKEFi
c3RyYWN0SGVhcChTdGFjaywgaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCArIENhbGxGcmFt
ZUhlYWRlcjo6QXJndW1lbnRDb3VudCkpOwogICAgIH0KIAogICAgIC8vIFdlIGRvbid0IHdhbnQg
dG8gc3BlY2lmaWNhbGx5IGFjY291bnQgd2hpY2ggbm9kZXMgY2FuIHJlYWQgZnJvbSB0aGUgc2Nv
cGUKQEAgLTUwMSwxMyArNTAxLDEzIEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5v
ZGUqIG5vZGUKICAgICAgICAgcmV0dXJuOwogICAgICAgICAKICAgICBjYXNlIEdldENhbGxlZToK
LSAgICAgICAgcmVhZChBYnN0cmFjdEhlYXAoU3RhY2ssIEpTU3RhY2s6OkNhbGxlZSkpOwotICAg
ICAgICBkZWYoSGVhcExvY2F0aW9uKFN0YWNrTG9jLCBBYnN0cmFjdEhlYXAoU3RhY2ssIEpTU3Rh
Y2s6OkNhbGxlZSkpLCBMYXp5Tm9kZShub2RlKSk7CisgICAgICAgIHJlYWQoQWJzdHJhY3RIZWFw
KFN0YWNrLCBDYWxsRnJhbWVIZWFkZXI6OkNhbGxlZSkpOworICAgICAgICBkZWYoSGVhcExvY2F0
aW9uKFN0YWNrTG9jLCBBYnN0cmFjdEhlYXAoU3RhY2ssIENhbGxGcmFtZUhlYWRlcjo6Q2FsbGVl
KSksIExhenlOb2RlKG5vZGUpKTsKICAgICAgICAgcmV0dXJuOwogICAgICAgICAKICAgICBjYXNl
IEdldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzOgotICAgICAgICByZWFkKEFic3RyYWN0SGVh
cChTdGFjaywgSlNTdGFjazo6QXJndW1lbnRDb3VudCkpOwotICAgICAgICBkZWYoSGVhcExvY2F0
aW9uKFN0YWNrUGF5bG9hZExvYywgQWJzdHJhY3RIZWFwKFN0YWNrLCBKU1N0YWNrOjpBcmd1bWVu
dENvdW50KSksIExhenlOb2RlKG5vZGUpKTsKKyAgICAgICAgcmVhZChBYnN0cmFjdEhlYXAoU3Rh
Y2ssIENhbGxGcmFtZUhlYWRlcjo6QXJndW1lbnRDb3VudCkpOworICAgICAgICBkZWYoSGVhcExv
Y2F0aW9uKFN0YWNrUGF5bG9hZExvYywgQWJzdHJhY3RIZWFwKFN0YWNrLCBDYWxsRnJhbWVIZWFk
ZXI6OkFyZ3VtZW50Q291bnQpKSwgTGF6eU5vZGUobm9kZSkpOwogICAgICAgICByZXR1cm47CiAK
ICAgICBjYXNlIEdldFJlc3RMZW5ndGg6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0dyYXBoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0dyYXBoLmNwcAkocmV2aXNpb24gMjAyOTU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdHcmFwaC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMTIsMTkgKzEwMTIsMTkgQEAgYm9v
bCBHcmFwaDo6aXNMaXZlSW5CeXRlY29kZShWaXJ0dWFsUmVnaQogICAgICAgICBpZiAodmVyYm9z
ZSkKICAgICAgICAgICAgIGRhdGFMb2coInJlZyA9ICIsIHJlZywgIlxuIik7CiAgICAgICAgIAot
ICAgICAgICBpZiAob3BlcmFuZC5vZmZzZXQoKSA8IGNvZGVPcmlnaW5QdHItPnN0YWNrT2Zmc2V0
KCkgKyBKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJTaXplKSB7CisgICAgICAgIGlmIChvcGVyYW5k
Lm9mZnNldCgpIDwgY29kZU9yaWdpblB0ci0+c3RhY2tPZmZzZXQoKSArIENhbGxGcmFtZUhlYWRl
cjo6U2l6ZSkgewogICAgICAgICAgICAgaWYgKHJlZy5pc0FyZ3VtZW50KCkpIHsKLSAgICAgICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVChyZWcub2Zmc2V0KCkgPCBKU1N0YWNrOjpDYWxsRnJhbWVI
ZWFkZXJTaXplKTsKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChyZWcub2Zmc2V0KCkg
PCBDYWxsRnJhbWVIZWFkZXI6OlNpemUpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg
ICAgIGlmIChjb2RlT3JpZ2luUHRyLT5pbmxpbmVDYWxsRnJhbWUtPmlzQ2xvc3VyZUNhbGwKLSAg
ICAgICAgICAgICAgICAgICAgJiYgcmVnLm9mZnNldCgpID09IEpTU3RhY2s6OkNhbGxlZSkgewor
ICAgICAgICAgICAgICAgICAgICAmJiByZWcub2Zmc2V0KCkgPT0gQ2FsbEZyYW1lSGVhZGVyOjpD
YWxsZWUpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAgICAgICAg
ICAgICAgICAgICBkYXRhTG9nKCJMb29rcyBsaWtlIGEgY2FsbGVlLlxuIik7CiAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICAKICAgICAgICAgICAgICAgICBpZiAoY29kZU9yaWdpblB0ci0+aW5saW5lQ2FsbEZyYW1lLT5p
c1ZhcmFyZ3MoKQotICAgICAgICAgICAgICAgICAgICAmJiByZWcub2Zmc2V0KCkgPT0gSlNTdGFj
azo6QXJndW1lbnRDb3VudCkgeworICAgICAgICAgICAgICAgICAgICAmJiByZWcub2Zmc2V0KCkg
PT0gQ2FsbEZyYW1lSGVhZGVyOjpBcmd1bWVudENvdW50KSB7CiAgICAgICAgICAgICAgICAgICAg
IGlmICh2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiTG9va3MgbGlr
ZSB0aGUgYXJndW1lbnQgY291bnQuXG4iKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCShyZXZpc2lvbiAyMDI5
NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTcwOSw5ICs3MDksOSBAQCBwdWJsaWM6CiAgICAgICAgICAgICAKICAgICAgICAgICAg
IGlmIChpbmxpbmVDYWxsRnJhbWUpIHsKICAgICAgICAgICAgICAgICBpZiAoaW5saW5lQ2FsbEZy
YW1lLT5pc0Nsb3N1cmVDYWxsKQotICAgICAgICAgICAgICAgICAgICBmdW5jdG9yKHN0YWNrT2Zm
c2V0ICsgSlNTdGFjazo6Q2FsbGVlKTsKKyAgICAgICAgICAgICAgICAgICAgZnVuY3RvcihzdGFj
a09mZnNldCArIENhbGxGcmFtZUhlYWRlcjo6Q2FsbGVlKTsKICAgICAgICAgICAgICAgICBpZiAo
aW5saW5lQ2FsbEZyYW1lLT5pc1ZhcmFyZ3MoKSkKLSAgICAgICAgICAgICAgICAgICAgZnVuY3Rv
cihzdGFja09mZnNldCArIEpTU3RhY2s6OkFyZ3VtZW50Q291bnQpOworICAgICAgICAgICAgICAg
ICAgICBmdW5jdG9yKHN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lSGVhZGVyOjpBcmd1bWVudENvdW50
KTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICAgICAgQ29kZUJsb2NrKiBj
b2RlQmxvY2sgPSBiYXNlbGluZUNvZGVCbG9ja0ZvcihpbmxpbmVDYWxsRnJhbWUpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAJKHJldmlzaW9u
IDIwMjk1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDgsNyArMTA4LDcgQEAgdm9pZCBKSVRDb21waWxlcjo6Y29t
cGlsZUVudHJ5KCkKICAgICAvLyBjaGVjaykgd2hpY2ggd2lsbCBiZSBkZXBlbmRlbnQgb24gc3Rh
Y2sgbGF5b3V0LiAoV2UnZCBuZWVkIHRvIGFjY291bnQgZm9yIHRoaXMgaW4KICAgICAvLyBib3Ro
IG5vcm1hbCByZXR1cm4gY29kZSBhbmQgd2hlbiBqdW1waW5nIHRvIGFuIGV4Y2VwdGlvbiBoYW5k
bGVyKS4KICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZSgpOwotICAgIGVtaXRQdXRUb0NhbGxGcmFt
ZUhlYWRlcihtX2NvZGVCbG9jaywgSlNTdGFjazo6Q29kZUJsb2NrKTsKKyAgICBlbWl0UHV0VG9D
YWxsRnJhbWVIZWFkZXIobV9jb2RlQmxvY2ssIENhbGxGcmFtZUhlYWRlcjo6Q29kZUJsb2NrKTsK
IH0KIAogdm9pZCBKSVRDb21waWxlcjo6Y29tcGlsZVNldHVwUmVnaXN0ZXJzRm9yRW50cnkoKQpA
QCAtNDQzLDcgKzQ0Myw3IEBAIHZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGVGdW5jdGlvbigpCiAg
ICAgbV9hcml0eUNoZWNrID0gbGFiZWwoKTsKICAgICBjb21waWxlRW50cnkoKTsKIAotICAgIGxv
YWQzMihBc3NlbWJseUhlbHBlcnM6OnBheWxvYWRGb3IoKFZpcnR1YWxSZWdpc3RlcilKU1N0YWNr
OjpBcmd1bWVudENvdW50KSwgR1BSSW5mbzo6cmVnVDEpOworICAgIGxvYWQzMihBc3NlbWJseUhl
bHBlcnM6OnBheWxvYWRGb3IoKFZpcnR1YWxSZWdpc3RlcilDYWxsRnJhbWVIZWFkZXI6OkFyZ3Vt
ZW50Q291bnQpLCBHUFJJbmZvOjpyZWdUMSk7CiAgICAgYnJhbmNoMzIoQWJvdmVPckVxdWFsLCBH
UFJJbmZvOjpyZWdUMSwgVHJ1c3RlZEltbTMyKG1fY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkp
KS5saW5rVG8oZnJvbUFyaXR5Q2hlY2ssIHRoaXMpOwogICAgIGVtaXRTdG9yZUNvZGVPcmlnaW4o
Q29kZU9yaWdpbigwKSk7CiAgICAgaWYgKG1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsKQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAkocmV2aXNp
b24gMjAyOTU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xNTYsNyArMTU2LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBl
bWl0U3RvcmVDYWxsU2l0ZUluZGV4KENhbGxTaXRlSW5kZXggY2FsbFNpdGUpCiAgICAgewotICAg
ICAgICBzdG9yZTMyKFRydXN0ZWRJbW0zMihjYWxsU2l0ZS5iaXRzKCkpLCB0YWdGb3Ioc3RhdGlj
X2Nhc3Q8VmlydHVhbFJlZ2lzdGVyPihKU1N0YWNrOjpBcmd1bWVudENvdW50KSkpOworICAgICAg
ICBzdG9yZTMyKFRydXN0ZWRJbW0zMihjYWxsU2l0ZS5iaXRzKCkpLCB0YWdGb3Ioc3RhdGljX2Nh
c3Q8VmlydHVhbFJlZ2lzdGVyPihDYWxsRnJhbWVIZWFkZXI6OkFyZ3VtZW50Q291bnQpKSk7CiAg
ICAgfQogCiAgICAgLy8gQWRkIGEgY2FsbCBvdXQgZnJvbSBKSVQgY29kZSwgd2l0aG91dCBhbiBl
eGNlcHRpb24gY2hlY2suCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkF2
YWlsYWJpbGl0eUFuYWx5c2lzUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT1NSQXZhaWxhYmlsaXR5QW5hbHlzaXNQaGFzZS5jcHAJKHJldmlzaW9u
IDIwMjk1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSQXZhaWxhYmlsaXR5
QW5hbHlzaXNQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3NywxNCArMTc3LDE0IEBAIHZv
aWQgTG9jYWxPU1JBdmFpbGFiaWxpdHlDYWxjdWxhdG9yOjpleGUKICAgICAgICAgaWYgKGlubGlu
ZUNhbGxGcmFtZS0+aXNWYXJhcmdzKCkpIHsKICAgICAgICAgICAgIC8vIFJlY29yZCBob3cgdG8g
cmVhZCBlYWNoIGFyZ3VtZW50IGFuZCB0aGUgYXJndW1lbnQgY291bnQuCiAgICAgICAgICAgICBB
dmFpbGFiaWxpdHkgYXJndW1lbnRDb3VudCA9Ci0gICAgICAgICAgICAgICAgbV9hdmFpbGFiaWxp
dHkubV9sb2NhbHMub3BlcmFuZChpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgSlNTdGFj
azo6QXJndW1lbnRDb3VudCk7CisgICAgICAgICAgICAgICAgbV9hdmFpbGFiaWxpdHkubV9sb2Nh
bHMub3BlcmFuZChpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lSGVhZGVy
OjpBcmd1bWVudENvdW50KTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgbV9hdmFpbGFiaWxp
dHkubV9oZWFwLnNldChQcm9tb3RlZEhlYXBMb2NhdGlvbihBcmd1bWVudENvdW50UExvYywgbm9k
ZSksIGFyZ3VtZW50Q291bnQpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBpZiAoaW5s
aW5lQ2FsbEZyYW1lLT5pc0Nsb3N1cmVDYWxsKSB7CiAgICAgICAgICAgICBBdmFpbGFiaWxpdHkg
Y2FsbGVlID0gbV9hdmFpbGFiaWxpdHkubV9sb2NhbHMub3BlcmFuZCgKLSAgICAgICAgICAgICAg
ICBpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgSlNTdGFjazo6Q2FsbGVlKTsKKyAgICAg
ICAgICAgICAgICBpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lSGVhZGVy
OjpDYWxsZWUpOwogICAgICAgICAgICAgbV9hdmFpbGFiaWxpdHkubV9oZWFwLnNldChQcm9tb3Rl
ZEhlYXBMb2NhdGlvbihBcmd1bWVudHNDYWxsZWVQTG9jLCBub2RlKSwgY2FsbGVlKTsKICAgICAg
ICAgfQogICAgICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50
cnkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50
cnkuY3BwCShyZXZpc2lvbiAyMDI5NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R09TUkVudHJ5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjY0LDcgKzI2NCw3IEBAIHZvaWQqIHBy
ZXBhcmVPU1JFbnRyeShFeGVjU3RhdGUqIGV4ZWMsIEMKICAgICB1bnNpZ25lZCBiYXNlbGluZUZy
YW1lU2l6ZSA9IGVudHJ5LT5tX2V4cGVjdGVkVmFsdWVzLm51bWJlck9mTG9jYWxzKCk7CiAgICAg
dW5zaWduZWQgbWF4RnJhbWVTaXplID0gc3RkOjptYXgoZnJhbWVTaXplLCBiYXNlbGluZUZyYW1l
U2l6ZSk7CiAKLSAgICBSZWdpc3Rlciogc2NyYXRjaCA9IGJpdHdpc2VfY2FzdDxSZWdpc3Rlcio+
KHZtLT5zY3JhdGNoQnVmZmVyRm9yU2l6ZShzaXplb2YoUmVnaXN0ZXIpICogKDIgKyBKU1N0YWNr
OjpDYWxsRnJhbWVIZWFkZXJTaXplICsgbWF4RnJhbWVTaXplKSktPmRhdGFCdWZmZXIoKSk7Cisg
ICAgUmVnaXN0ZXIqIHNjcmF0Y2ggPSBiaXR3aXNlX2Nhc3Q8UmVnaXN0ZXIqPih2bS0+c2NyYXRj
aEJ1ZmZlckZvclNpemUoc2l6ZW9mKFJlZ2lzdGVyKSAqICgyICsgQ2FsbEZyYW1lSGVhZGVyOjpT
aXplICsgbWF4RnJhbWVTaXplKSktPmRhdGFCdWZmZXIoKSk7CiAgICAgCiAgICAgKmJpdHdpc2Vf
Y2FzdDxzaXplX3QqPihzY3JhdGNoICsgMCkgPSBmcmFtZVNpemU7CiAgICAgCkBAIC0yNzQsOSAr
Mjc0LDkgQEAgdm9pZCogcHJlcGFyZU9TUkVudHJ5KEV4ZWNTdGF0ZSogZXhlYywgQwogICAgIFJF
TEVBU0VfQVNTRVJUKHRhcmdldFBDKTsKICAgICAqYml0d2lzZV9jYXN0PHZvaWQqKj4oc2NyYXRj
aCArIDEpID0gdGFyZ2V0UEM7CiAgICAgCi0gICAgUmVnaXN0ZXIqIHBpdm90ID0gc2NyYXRjaCAr
IDIgKyBKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJTaXplOworICAgIFJlZ2lzdGVyKiBwaXZvdCA9
IHNjcmF0Y2ggKyAyICsgQ2FsbEZyYW1lSGVhZGVyOjpTaXplOwogICAgIAotICAgIGZvciAoaW50
IGluZGV4ID0gLUpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlclNpemU7IGluZGV4IDwgc3RhdGljX2Nh
c3Q8aW50PihiYXNlbGluZUZyYW1lU2l6ZSk7ICsraW5kZXgpIHsKKyAgICBmb3IgKGludCBpbmRl
eCA9IC1DYWxsRnJhbWVIZWFkZXI6OlNpemU7IGluZGV4IDwgc3RhdGljX2Nhc3Q8aW50PihiYXNl
bGluZUZyYW1lU2l6ZSk7ICsraW5kZXgpIHsKICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHJlZygt
MSAtIGluZGV4KTsKICAgICAgICAgCiAgICAgICAgIGlmIChyZWcuaXNMb2NhbCgpKSB7CkBAIC0z
MjksNyArMzI5LDcgQEAgdm9pZCogcHJlcGFyZU9TUkVudHJ5KEV4ZWNTdGF0ZSogZXhlYywgQwog
ICAgIAogICAgIC8vIDcpIEZpeCB0aGUgY2FsbCBmcmFtZSB0byBoYXZlIHRoZSByaWdodCBjb2Rl
IGJsb2NrLgogICAgIAotICAgICpiaXR3aXNlX2Nhc3Q8Q29kZUJsb2NrKio+KHBpdm90IC0gMSAt
IEpTU3RhY2s6OkNvZGVCbG9jaykgPSBjb2RlQmxvY2s7CisgICAgKmJpdHdpc2VfY2FzdDxDb2Rl
QmxvY2sqKj4ocGl2b3QgLSAxIC0gQ2FsbEZyYW1lSGVhZGVyOjpDb2RlQmxvY2spID0gY29kZUJs
b2NrOwogICAgIAogICAgIGlmIChPcHRpb25zOjp2ZXJib3NlT1NSKCkpCiAgICAgICAgIGRhdGFM
b2dGKCIgICAgT1NSIHJldHVybmluZyBkYXRhIGJ1ZmZlciAlcC5cbiIsIHNjcmF0Y2gpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyLmNw
cAkocmV2aXNpb24gMjAyOTU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JF
eGl0Q29tcGlsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MCw3ICs3MCw3IEBAIHZvaWQgT1NS
RXhpdENvbXBpbGVyOjplbWl0UmVzdG9yZUFyZ3VtZW4KICAgICAgICAgCiAgICAgICAgIGlmICgh
aW5saW5lQ2FsbEZyYW1lIHx8IGlubGluZUNhbGxGcmFtZS0+aXNDbG9zdXJlQ2FsbCkgewogICAg
ICAgICAgICAgbV9qaXQubG9hZFB0cigKLSAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6
OmFkZHJlc3NGb3Ioc3RhY2tPZmZzZXQgKyBKU1N0YWNrOjpDYWxsZWUpLAorICAgICAgICAgICAg
ICAgIEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0ZvcihzdGFja09mZnNldCArIENhbGxGcmFtZUhl
YWRlcjo6Q2FsbGVlKSwKICAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZWdUMCk7CiAgICAgICAg
IH0gZWxzZSB7CiAgICAgICAgICAgICBtX2ppdC5tb3ZlKApAQCAtODAsNyArODAsNyBAQCB2b2lk
IE9TUkV4aXRDb21waWxlcjo6ZW1pdFJlc3RvcmVBcmd1bWVuCiAgICAgICAgIAogICAgICAgICBp
ZiAoIWlubGluZUNhbGxGcmFtZSB8fCBpbmxpbmVDYWxsRnJhbWUtPmlzVmFyYXJncygpKSB7CiAg
ICAgICAgICAgICBtX2ppdC5sb2FkMzIoCi0gICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJz
OjpwYXlsb2FkRm9yKHN0YWNrT2Zmc2V0ICsgSlNTdGFjazo6QXJndW1lbnRDb3VudCksCisgICAg
ICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpwYXlsb2FkRm9yKHN0YWNrT2Zmc2V0ICsgQ2Fs
bEZyYW1lSGVhZGVyOjpBcmd1bWVudENvdW50KSwKICAgICAgICAgICAgICAgICBHUFJJbmZvOjpy
ZWdUMSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBtX2ppdC5tb3ZlKApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVy
Q29tbW9uLmNwcAkocmV2aXNpb24gMjAyOTU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDQsNyAr
MTQ0LDcgQEAgdm9pZCByZWlmeUlubGluZWRDYWxsRnJhbWVzKENDYWxsSGVscGVycwogICAgIC8v
IGluIHByZXNlbmNlIG9mIGlubGluZWQgdGFpbCBjYWxscy4KICAgICAvLyBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ3NTExCiAgICAgQVNTRVJUKGppdC5iYXNlbGlu
ZUNvZGVCbG9jaygpLT5qaXRUeXBlKCkgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOwotICAgIGpp
dC5zdG9yZVB0cihBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoaml0LmJhc2VsaW5lQ29k
ZUJsb2NrKCkpLCBBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3IoKFZpcnR1YWxSZWdpc3RlcilK
U1N0YWNrOjpDb2RlQmxvY2spKTsKKyAgICBqaXQuc3RvcmVQdHIoQXNzZW1ibHlIZWxwZXJzOjpU
cnVzdGVkSW1tUHRyKGppdC5iYXNlbGluZUNvZGVCbG9jaygpKSwgQXNzZW1ibHlIZWxwZXJzOjph
ZGRyZXNzRm9yKChWaXJ0dWFsUmVnaXN0ZXIpQ2FsbEZyYW1lSGVhZGVyOjpDb2RlQmxvY2spKTsK
IAogICAgIGNvbnN0IENvZGVPcmlnaW4qIGNvZGVPcmlnaW47CiAgICAgZm9yIChjb2RlT3JpZ2lu
ID0gJmV4aXQubV9jb2RlT3JpZ2luOyBjb2RlT3JpZ2luICYmIGNvZGVPcmlnaW4tPmlubGluZUNh
bGxGcmFtZTsgY29kZU9yaWdpbiA9IGNvZGVPcmlnaW4tPmlubGluZUNhbGxGcmFtZS0+Z2V0Q2Fs
bGVyU2tpcHBpbmdUYWlsQ2FsbHMoKSkgewpAQCAtMjA1LDcgKzIwNSw3IEBAIHZvaWQgcmVpZnlJ
bmxpbmVkQ2FsbEZyYW1lcyhDQ2FsbEhlbHBlcnMKICAgICAgICAgICAgIGppdC5zdG9yZVB0cihB
c3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoanVtcFRhcmdldCksIEFzc2VtYmx5SGVscGVy
czo6YWRkcmVzc0ZvckJ5dGVPZmZzZXQoaW5saW5lQ2FsbEZyYW1lLT5yZXR1cm5QQ09mZnNldCgp
KSk7CiAgICAgICAgIH0KIAotICAgICAgICBqaXQuc3RvcmVQdHIoQXNzZW1ibHlIZWxwZXJzOjpU
cnVzdGVkSW1tUHRyKGJhc2VsaW5lQ29kZUJsb2NrKSwgQXNzZW1ibHlIZWxwZXJzOjphZGRyZXNz
Rm9yKChWaXJ0dWFsUmVnaXN0ZXIpKGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyBKU1N0
YWNrOjpDb2RlQmxvY2spKSk7CisgICAgICAgIGppdC5zdG9yZVB0cihBc3NlbWJseUhlbHBlcnM6
OlRydXN0ZWRJbW1QdHIoYmFzZWxpbmVDb2RlQmxvY2spLCBBc3NlbWJseUhlbHBlcnM6OmFkZHJl
c3NGb3IoKFZpcnR1YWxSZWdpc3RlcikoaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCArIENh
bGxGcmFtZUhlYWRlcjo6Q29kZUJsb2NrKSkpOwogCiAgICAgICAgIC8vIFJlc3RvcmUgdGhlIGlu
bGluZSBjYWxsIGZyYW1lJ3MgY2FsbGVlIHNhdmUgcmVnaXN0ZXJzLgogICAgICAgICAvLyBJZiB0
aGlzIGlubGluZWQgZnJhbWUgaXMgYSB0YWlsIGNhbGwgdGhhdCB3aWxsIHJldHVybiBiYWNrIHRv
IHRoZSBvcmlnaW5hbCBjYWxsZXIsIHdlIG5lZWQgdG8KQEAgLTIxNywyMSArMjE3LDIxIEBAIHZv
aWQgcmVpZnlJbmxpbmVkQ2FsbEZyYW1lcyhDQ2FsbEhlbHBlcnMKICAgICAgICAgICAgIEdQUklu
Zm86OnJlZ1QyKTsKIAogICAgICAgICBpZiAoIWlubGluZUNhbGxGcmFtZS0+aXNWYXJhcmdzKCkp
Ci0gICAgICAgICAgICBqaXQuc3RvcmUzMihBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMihp
bmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5zaXplKCkpLCBBc3NlbWJseUhlbHBlcnM6OnBheWxv
YWRGb3IoKFZpcnR1YWxSZWdpc3RlcikoaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCArIEpT
U3RhY2s6OkFyZ3VtZW50Q291bnQpKSk7CisgICAgICAgICAgICBqaXQuc3RvcmUzMihBc3NlbWJs
eUhlbHBlcnM6OlRydXN0ZWRJbW0zMihpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5zaXplKCkp
LCBBc3NlbWJseUhlbHBlcnM6OnBheWxvYWRGb3IoKFZpcnR1YWxSZWdpc3RlcikoaW5saW5lQ2Fs
bEZyYW1lLT5zdGFja09mZnNldCArIENhbGxGcmFtZUhlYWRlcjo6QXJndW1lbnRDb3VudCkpKTsK
ICNpZiBVU0UoSlNWQUxVRTY0KQogICAgICAgICBqaXQuc3RvcmU2NChjYWxsZXJGcmFtZUdQUiwg
QXNzZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9yQnl0ZU9mZnNldChpbmxpbmVDYWxsRnJhbWUtPmNh
bGxlckZyYW1lT2Zmc2V0KCkpKTsKICAgICAgICAgdWludDMyX3QgbG9jYXRpb25CaXRzID0gQ2Fs
bFNpdGVJbmRleChjb2RlT3JpZ2luLT5ieXRlY29kZUluZGV4KS5iaXRzKCk7Ci0gICAgICAgIGpp
dC5zdG9yZTMyKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKGxvY2F0aW9uQml0cyksIEFz
c2VtYmx5SGVscGVyczo6dGFnRm9yKChWaXJ0dWFsUmVnaXN0ZXIpKGlubGluZUNhbGxGcmFtZS0+
c3RhY2tPZmZzZXQgKyBKU1N0YWNrOjpBcmd1bWVudENvdW50KSkpOworICAgICAgICBqaXQuc3Rv
cmUzMihBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMihsb2NhdGlvbkJpdHMpLCBBc3NlbWJs
eUhlbHBlcnM6OnRhZ0ZvcigoVmlydHVhbFJlZ2lzdGVyKShpbmxpbmVDYWxsRnJhbWUtPnN0YWNr
T2Zmc2V0ICsgQ2FsbEZyYW1lSGVhZGVyOjpBcmd1bWVudENvdW50KSkpOwogICAgICAgICBpZiAo
IWlubGluZUNhbGxGcmFtZS0+aXNDbG9zdXJlQ2FsbCkKLSAgICAgICAgICAgIGppdC5zdG9yZTY0
KEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTY0KEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKGlu
bGluZUNhbGxGcmFtZS0+Y2FsbGVlQ29uc3RhbnQoKSkpKSwgQXNzZW1ibHlIZWxwZXJzOjphZGRy
ZXNzRm9yKChWaXJ0dWFsUmVnaXN0ZXIpKGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyBK
U1N0YWNrOjpDYWxsZWUpKSk7CisgICAgICAgICAgICBqaXQuc3RvcmU2NChBc3NlbWJseUhlbHBl
cnM6OlRydXN0ZWRJbW02NChKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZShpbmxpbmVDYWxsRnJhbWUt
PmNhbGxlZUNvbnN0YW50KCkpKSksIEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0ZvcigoVmlydHVh
bFJlZ2lzdGVyKShpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lSGVhZGVy
OjpDYWxsZWUpKSk7CiAjZWxzZSAvLyBVU0UoSlNWQUxVRTY0KSAvLyBzbyB0aGlzIGlzIHRoZSAz
Mi1iaXQgcGFydAogICAgICAgICBqaXQuc3RvcmVQdHIoY2FsbGVyRnJhbWVHUFIsIEFzc2VtYmx5
SGVscGVyczo6YWRkcmVzc0ZvckJ5dGVPZmZzZXQoaW5saW5lQ2FsbEZyYW1lLT5jYWxsZXJGcmFt
ZU9mZnNldCgpKSk7CiAgICAgICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiA9IGJhc2VsaW5l
Q29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpICsgY29kZU9yaWdpbi0+Ynl0ZWNvZGVJ
bmRleDsKICAgICAgICAgdWludDMyX3QgbG9jYXRpb25CaXRzID0gQ2FsbFNpdGVJbmRleChpbnN0
cnVjdGlvbikuYml0cygpOwotICAgICAgICBqaXQuc3RvcmUzMihBc3NlbWJseUhlbHBlcnM6OlRy
dXN0ZWRJbW0zMihsb2NhdGlvbkJpdHMpLCBBc3NlbWJseUhlbHBlcnM6OnRhZ0ZvcigoVmlydHVh
bFJlZ2lzdGVyKShpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgSlNTdGFjazo6QXJndW1l
bnRDb3VudCkpKTsKLSAgICAgICAgaml0LnN0b3JlMzIoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVk
SW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZyksIEFzc2VtYmx5SGVscGVyczo6dGFnRm9yKChWaXJ0dWFs
UmVnaXN0ZXIpKGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyBKU1N0YWNrOjpDYWxsZWUp
KSk7CisgICAgICAgIGppdC5zdG9yZTMyKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKGxv
Y2F0aW9uQml0cyksIEFzc2VtYmx5SGVscGVyczo6dGFnRm9yKChWaXJ0dWFsUmVnaXN0ZXIpKGlu
bGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyBDYWxsRnJhbWVIZWFkZXI6OkFyZ3VtZW50Q291
bnQpKSk7CisgICAgICAgIGppdC5zdG9yZTMyKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMy
KEpTVmFsdWU6OkNlbGxUYWcpLCBBc3NlbWJseUhlbHBlcnM6OnRhZ0ZvcigoVmlydHVhbFJlZ2lz
dGVyKShpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lSGVhZGVyOjpDYWxs
ZWUpKSk7CiAgICAgICAgIGlmICghaW5saW5lQ2FsbEZyYW1lLT5pc0Nsb3N1cmVDYWxsKQotICAg
ICAgICAgICAgaml0LnN0b3JlUHRyKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbVB0cihpbmxp
bmVDYWxsRnJhbWUtPmNhbGxlZUNvbnN0YW50KCkpLCBBc3NlbWJseUhlbHBlcnM6OnBheWxvYWRG
b3IoKFZpcnR1YWxSZWdpc3RlcikoaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCArIEpTU3Rh
Y2s6OkNhbGxlZSkpKTsKKyAgICAgICAgICAgIGppdC5zdG9yZVB0cihBc3NlbWJseUhlbHBlcnM6
OlRydXN0ZWRJbW1QdHIoaW5saW5lQ2FsbEZyYW1lLT5jYWxsZWVDb25zdGFudCgpKSwgQXNzZW1i
bHlIZWxwZXJzOjpwYXlsb2FkRm9yKChWaXJ0dWFsUmVnaXN0ZXIpKGlubGluZUNhbGxGcmFtZS0+
c3RhY2tPZmZzZXQgKyBDYWxsRnJhbWVIZWFkZXI6OkNhbGxlZSkpKTsKICNlbmRpZiAvLyBVU0Uo
SlNWQUxVRTY0KSAvLyBlbmRpbmcgdGhlICNlbHNlIHBhcnQsIHNvIGRpcmVjdGx5IGFib3ZlIGlz
IHRoZSAzMi1iaXQgcGFydAogICAgIH0KIApAQCAtMjQzLDcgKzI0Myw3IEBAIHZvaWQgcmVpZnlJ
bmxpbmVkQ2FsbEZyYW1lcyhDQ2FsbEhlbHBlcnMKICAgICAgICAgSW5zdHJ1Y3Rpb24qIGluc3Ry
dWN0aW9uID0gaml0LmJhc2VsaW5lQ29kZUJsb2NrKCktPmluc3RydWN0aW9ucygpLmJlZ2luKCkg
KyBjb2RlT3JpZ2luLT5ieXRlY29kZUluZGV4OwogICAgICAgICB1aW50MzJfdCBsb2NhdGlvbkJp
dHMgPSBDYWxsU2l0ZUluZGV4KGluc3RydWN0aW9uKS5iaXRzKCk7CiAjZW5kaWYKLSAgICAgICAg
aml0LnN0b3JlMzIoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIobG9jYXRpb25CaXRzKSwg
QXNzZW1ibHlIZWxwZXJzOjp0YWdGb3IoKFZpcnR1YWxSZWdpc3RlcikoSlNTdGFjazo6QXJndW1l
bnRDb3VudCkpKTsKKyAgICAgICAgaml0LnN0b3JlMzIoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVk
SW1tMzIobG9jYXRpb25CaXRzKSwgQXNzZW1ibHlIZWxwZXJzOjp0YWdGb3IoKFZpcnR1YWxSZWdp
c3RlcikoQ2FsbEZyYW1lSGVhZGVyOjpBcmd1bWVudENvdW50KSkpOwogICAgIH0KIH0KIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxl
ckNvbW1vbi5oCShyZXZpc2lvbiAyMDI5NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5oCSh3b3JraW5nIGNvcHkpCkBAIC04Niw3ICs4Niw3
IEBAIHZvaWQgYWRqdXN0RnJhbWVBbmRTdGFja0luT1NSRXhpdENvbXBpbGUKICAgICBqaXQubW92
ZShHUFJJbmZvOjpyZWdUMCwgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOwogICAgIGRpZE5v
dEhhdmVFeGNlcHRpb24ubGluaygmaml0KTsKICAgICAvLyBXZSBuZWVkIHRvIG1ha2Ugc3VyZSBT
UCBpcyBjb3JyZWN0IGluIGNhc2Ugb2YgYW4gZXhjZXB0aW9uLgotICAgIGppdC5sb2FkUHRyKE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBKU1N0YWNr
OjpDb2RlQmxvY2sgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpKSwgR1BSSW5m
bzo6cmVnVDApOworICAgIGppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKEdQUklu
Zm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBDYWxsRnJhbWVIZWFkZXI6OkNvZGVCbG9jayAqIHN0YXRp
Y19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkpLCBHUFJJbmZvOjpyZWdUMCk7CiAgICAgaml0
LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDAsIENvZGVCbG9j
azo6aml0Q29kZU9mZnNldCgpKSwgR1BSSW5mbzo6cmVnVDApOwogICAgIGppdC5hZGRQdHIoTWFj
cm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihKSVRDb2RlVHlwZTo6Y29tbW9uRGF0YU9mZnNldCgp
KSwgR1BSSW5mbzo6cmVnVDApOwogICAgIGppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3MoR1BSSW5mbzo6cmVnVDAsIENvbW1vbkRhdGE6OmZyYW1lUmVnaXN0ZXJDb3VudE9mZnNldCgp
KSwgR1BSSW5mbzo6cmVnVDApOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQ
cmVjaXNlTG9jYWxDbG9iYmVyaXplLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdQcmVjaXNlTG9jYWxDbG9iYmVyaXplLmgJKHJldmlzaW9uIDIwMjk1NCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlY2lzZUxvY2FsQ2xvYmJlcml6ZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xMjUsMTQgKzEyNSwxNCBAQCBwcml2YXRlOgogICAgICAgICAgICAg
ICAgIC8vIFJlYWQgdGhlIG91dGVybW9zdCBhcmd1bWVudHMgYW5kIGFyZ3VtZW50IGNvdW50Lgog
ICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1fZ3JhcGgubV9jb2RlQmxvY2stPm51
bVBhcmFtZXRlcnMoKTsgaS0tID4gMTspCiAgICAgICAgICAgICAgICAgICAgIG1fcmVhZCh2aXJ0
dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChpKSk7Ci0gICAgICAgICAgICAgICAgbV9yZWFkKFZpcnR1
YWxSZWdpc3RlcihKU1N0YWNrOjpBcmd1bWVudENvdW50KSk7CisgICAgICAgICAgICAgICAgbV9y
ZWFkKFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWVIZWFkZXI6OkFyZ3VtZW50Q291bnQpKTsKICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgp
OyBpLS0gPiAxOykKICAgICAgICAgICAgICAgICBtX3JlYWQoVmlydHVhbFJlZ2lzdGVyKGlubGlu
ZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChpKS5v
ZmZzZXQoKSkpOwogICAgICAgICAgICAgaWYgKGlubGluZUNhbGxGcmFtZS0+aXNWYXJhcmdzKCkp
Ci0gICAgICAgICAgICAgICAgbV9yZWFkKFZpcnR1YWxSZWdpc3RlcihpbmxpbmVDYWxsRnJhbWUt
PnN0YWNrT2Zmc2V0ICsgSlNTdGFjazo6QXJndW1lbnRDb3VudCkpOworICAgICAgICAgICAgICAg
IG1fcmVhZChWaXJ0dWFsUmVnaXN0ZXIoaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCArIENh
bGxGcmFtZUhlYWRlcjo6QXJndW1lbnRDb3VudCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KICAgICAgICAgICAgIApAQCAtMTQyLDcgKzE0Miw3IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICAgICAgbV9yZWFkKHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGkpKTsKICAgICAgICAg
CiAgICAgICAgICAgICAvLyBUaGUgc3RhY2sgaGVhZGVyIGlzIHJlYWQuCi0gICAgICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgSlNTdGFjazo6VGhpc0FyZ3VtZW50OyArK2kpCisgICAg
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgQ2FsbEZyYW1lSGVhZGVyOjpUaGlzQXJn
dW1lbnQ7ICsraSkKICAgICAgICAgICAgICAgICBtX3JlYWQoVmlydHVhbFJlZ2lzdGVyKGkpKTsK
ICAgICAgICAgCiAgICAgICAgICAgICAvLyBSZWFkIGFsbCBvZiB0aGUgaW5saW5lIGFyZ3VtZW50
cyBhbmQgY2FsbCBmcmFtZSBoZWFkZXJzIHRoYXQgd2UgZGlkbid0IGFscmVhZHkgY2FwdHVyZS4K
QEAgLTE1MCw5ICsxNTAsOSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKTsgaS0tID4gMTspCiAgICAg
ICAgICAgICAgICAgICAgIG1fcmVhZChWaXJ0dWFsUmVnaXN0ZXIoaW5saW5lQ2FsbEZyYW1lLT5z
dGFja09mZnNldCArIHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGkpLm9mZnNldCgpKSk7CiAg
ICAgICAgICAgICAgICAgaWYgKGlubGluZUNhbGxGcmFtZS0+aXNDbG9zdXJlQ2FsbCkKLSAgICAg
ICAgICAgICAgICAgICAgbV9yZWFkKFZpcnR1YWxSZWdpc3RlcihpbmxpbmVDYWxsRnJhbWUtPnN0
YWNrT2Zmc2V0ICsgSlNTdGFjazo6Q2FsbGVlKSk7CisgICAgICAgICAgICAgICAgICAgIG1fcmVh
ZChWaXJ0dWFsUmVnaXN0ZXIoaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCArIENhbGxGcmFt
ZUhlYWRlcjo6Q2FsbGVlKSk7CiAgICAgICAgICAgICAgICAgaWYgKGlubGluZUNhbGxGcmFtZS0+
aXNWYXJhcmdzKCkpCi0gICAgICAgICAgICAgICAgICAgIG1fcmVhZChWaXJ0dWFsUmVnaXN0ZXIo
aW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCArIEpTU3RhY2s6OkFyZ3VtZW50Q291bnQpKTsK
KyAgICAgICAgICAgICAgICAgICAgbV9yZWFkKFZpcnR1YWxSZWdpc3RlcihpbmxpbmVDYWxsRnJh
bWUtPnN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lSGVhZGVyOjpBcmd1bWVudENvdW50KSk7CiAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfSB9CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJ
KHJldmlzaW9uIDIwMjk1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgzNSw3ICs4MzUsNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChOb2RlKiBub2RlCiAgICAgICAgICAgICAgICAgc2h1
ZmZsZURhdGEuYXJnc1tpXSA9IGluZm8ucmVjb3ZlcnkoYXJnRWRnZS0+dmlydHVhbFJlZ2lzdGVy
KCkpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgbV9qaXQu
c3RvcmUzMihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKG51bVBhc3NlZEFyZ3MpLCBtX2pp
dC5jYWxsZWVGcmFtZVBheWxvYWRTbG90KEpTU3RhY2s6OkFyZ3VtZW50Q291bnQpKTsKKyAgICAg
ICAgICAgIG1faml0LnN0b3JlMzIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihudW1QYXNz
ZWRBcmdzKSwgbV9qaXQuY2FsbGVlRnJhbWVQYXlsb2FkU2xvdChDYWxsRnJhbWVIZWFkZXI6OkFy
Z3VtZW50Q291bnQpKTsKICAgICAgICAgCiAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8
IG51bVBhc3NlZEFyZ3M7IGkrKykgewogICAgICAgICAgICAgICAgIEVkZ2UgYXJnRWRnZSA9IG1f
aml0LmdyYXBoKCkubV92YXJBcmdDaGlsZHJlbltub2RlLT5maXJzdENoaWxkKCkgKyAxICsgaV07
CkBAIC04NTUsOCArODU1LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSog
bm9kZQogICAgICAgICBjYWxsZWVUYWdHUFIgPSBjYWxsZWUudGFnR1BSKCk7CiAgICAgICAgIGNh
bGxlZVBheWxvYWRHUFIgPSBjYWxsZWUucGF5bG9hZEdQUigpOwogICAgICAgICB1c2UoY2FsbGVl
RWRnZSk7Ci0gICAgICAgIG1faml0LnN0b3JlMzIoY2FsbGVlUGF5bG9hZEdQUiwgbV9qaXQuY2Fs
bGVlRnJhbWVQYXlsb2FkU2xvdChKU1N0YWNrOjpDYWxsZWUpKTsKLSAgICAgICAgbV9qaXQuc3Rv
cmUzMihjYWxsZWVUYWdHUFIsIG1faml0LmNhbGxlZUZyYW1lVGFnU2xvdChKU1N0YWNrOjpDYWxs
ZWUpKTsKKyAgICAgICAgbV9qaXQuc3RvcmUzMihjYWxsZWVQYXlsb2FkR1BSLCBtX2ppdC5jYWxs
ZWVGcmFtZVBheWxvYWRTbG90KENhbGxGcmFtZUhlYWRlcjo6Q2FsbGVlKSk7CisgICAgICAgIG1f
aml0LnN0b3JlMzIoY2FsbGVlVGFnR1BSLCBtX2ppdC5jYWxsZWVGcmFtZVRhZ1Nsb3QoQ2FsbEZy
YW1lSGVhZGVyOjpDYWxsZWUpKTsKIAogICAgICAgICBpZiAoIWlzVGFpbCkKICAgICAgICAgICAg
IGZsdXNoUmVnaXN0ZXJzKCk7CkBAIC00MTE2LDE0ICs0MTE2LDE0IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKIAogICAgIGNhc2UgR2V0Q2FsbGVlOiB7CiAgICAg
ICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7Ci0gICAgICAgIG1faml0LmxvYWRQdHIoSklU
Q29tcGlsZXI6OnBheWxvYWRGb3IoSlNTdGFjazo6Q2FsbGVlKSwgcmVzdWx0LmdwcigpKTsKKyAg
ICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6cGF5bG9hZEZvcihDYWxsRnJhbWVIZWFk
ZXI6OkNhbGxlZSksIHJlc3VsdC5ncHIoKSk7CiAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0Lmdw
cigpLCBub2RlKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgICAgICAKICAgICBjYXNlIEdl
dEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzOiB7CiAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1
bHQodGhpcyk7Ci0gICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6cGF5bG9hZEZvcihK
U1N0YWNrOjpBcmd1bWVudENvdW50KSwgcmVzdWx0LmdwcigpKTsKKyAgICAgICAgbV9qaXQubG9h
ZDMyKEpJVENvbXBpbGVyOjpwYXlsb2FkRm9yKENhbGxGcmFtZUhlYWRlcjo6QXJndW1lbnRDb3Vu
dCksIHJlc3VsdC5ncHIoKSk7CiAgICAgICAgIGludDMyUmVzdWx0KHJlc3VsdC5ncHIoKSwgbm9k
ZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkocmV2aXNpb24gMjAyOTU0KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtODA2LDcgKzgwNiw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxs
KE5vZGUqIG5vZGUKIAogICAgICAgICAgICAgc2h1ZmZsZURhdGEuc2V0dXBDYWxsZWVTYXZlUmVn
aXN0ZXJzKG1faml0LmNvZGVCbG9jaygpKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
IG1faml0LnN0b3JlMzIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihudW1QYXNzZWRBcmdz
KSwgSklUQ29tcGlsZXI6OmNhbGxlZUZyYW1lUGF5bG9hZFNsb3QoSlNTdGFjazo6QXJndW1lbnRD
b3VudCkpOworICAgICAgICAgICAgbV9qaXQuc3RvcmUzMihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3Rl
ZEltbTMyKG51bVBhc3NlZEFyZ3MpLCBKSVRDb21waWxlcjo6Y2FsbGVlRnJhbWVQYXlsb2FkU2xv
dChDYWxsRnJhbWVIZWFkZXI6OkFyZ3VtZW50Q291bnQpKTsKIAogICAgICAgICAgICAgZm9yIChp
bnQgaSA9IDA7IGkgPCBudW1QYXNzZWRBcmdzOyBpKyspIHsKICAgICAgICAgICAgICAgICBFZGdl
IGFyZ0VkZ2UgPSBtX2ppdC5ncmFwaCgpLm1fdmFyQXJnQ2hpbGRyZW5bbm9kZS0+Zmlyc3RDaGls
ZCgpICsgMSArIGldOwpAQCAtODI0LDcgKzgyNCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVt
aXRDYWxsKE5vZGUqIG5vZGUKICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgY2FsbGVlKHRoaXMsIGNh
bGxlZUVkZ2UpOwogICAgICAgICBjYWxsZWVHUFIgPSBjYWxsZWUuZ3ByKCk7CiAgICAgICAgIGNh
bGxlZS51c2UoKTsKLSAgICAgICAgbV9qaXQuc3RvcmU2NChjYWxsZWVHUFIsIEpJVENvbXBpbGVy
OjpjYWxsZWVGcmFtZVNsb3QoSlNTdGFjazo6Q2FsbGVlKSk7CisgICAgICAgIG1faml0LnN0b3Jl
NjQoY2FsbGVlR1BSLCBKSVRDb21waWxlcjo6Y2FsbGVlRnJhbWVTbG90KENhbGxGcmFtZUhlYWRl
cjo6Q2FsbGVlKSk7CiAKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICB9CkBAIC00MDQ3
LDE0ICs0MDQ3LDE0IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkK
IAogICAgIGNhc2UgR2V0Q2FsbGVlOiB7CiAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhp
cyk7Ci0gICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IoSlNTdGFj
azo6Q2FsbGVlKSwgcmVzdWx0LmdwcigpKTsKKyAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21w
aWxlcjo6YWRkcmVzc0ZvcihDYWxsRnJhbWVIZWFkZXI6OkNhbGxlZSksIHJlc3VsdC5ncHIoKSk7
CiAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0LmdwcigpLCBub2RlKTsKICAgICAgICAgYnJlYWs7
CiAgICAgfQogICAgICAgICAKICAgICBjYXNlIEdldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
OiB7CiAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7Ci0gICAgICAgIG1faml0Lmxv
YWQzMihKSVRDb21waWxlcjo6cGF5bG9hZEZvcihKU1N0YWNrOjpBcmd1bWVudENvdW50KSwgcmVz
dWx0LmdwcigpKTsKKyAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjpwYXlsb2FkRm9y
KENhbGxGcmFtZUhlYWRlcjo6QXJndW1lbnRDb3VudCksIHJlc3VsdC5ncHIoKSk7CiAgICAgICAg
IGludDMyUmVzdWx0KHJlc3VsdC5ncHIoKSwgbm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQu
Y3BwCShyZXZpc2lvbiAyMDI5NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUyLDcgKzE1Miw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmVtaXRHZXRMZW5ndGgoSW5saW4KICAgICBlbHNlIHsKICAgICAgICAg
VmlydHVhbFJlZ2lzdGVyIGFyZ3VtZW50Q291bnRSZWdpc3RlcjsKICAgICAgICAgaWYgKCFpbmxp
bmVDYWxsRnJhbWUpCi0gICAgICAgICAgICBhcmd1bWVudENvdW50UmVnaXN0ZXIgPSBWaXJ0dWFs
UmVnaXN0ZXIoSlNTdGFjazo6QXJndW1lbnRDb3VudCk7CisgICAgICAgICAgICBhcmd1bWVudENv
dW50UmVnaXN0ZXIgPSBWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lSGVhZGVyOjpBcmd1bWVudENv
dW50KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgYXJndW1lbnRDb3VudFJlZ2lzdGVyID0g
aW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudENvdW50UmVnaXN0ZXI7CiAgICAgICAgIG1faml0Lmxv
YWQzMihKSVRDb21waWxlcjo6cGF5bG9hZEZvcihhcmd1bWVudENvdW50UmVnaXN0ZXIpLCBsZW5n
dGhHUFIpOwpAQCAtMTc5LDcgKzE3OSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRHZXRD
YWxsZWUoQ29kZU8KICAgICAgICAgICAgICAgICBjYWxsZWVHUFIpOwogICAgICAgICB9CiAgICAg
fSBlbHNlCi0gICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IoSlNT
dGFjazo6Q2FsbGVlKSwgY2FsbGVlR1BSKTsKKyAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21w
aWxlcjo6YWRkcmVzc0ZvcihDYWxsRnJhbWVIZWFkZXI6OkNhbGxlZSksIGNhbGxlZUdQUik7CiB9
CiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRHZXRBcmd1bWVudFN0YXJ0KENvZGVPcmlnaW4g
b3JpZ2luLCBHUFJSZWcgc3RhcnRHUFIpCkBAIC02MTk2LDcgKzYxOTYsNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlQ3JlYXRlRGlyZWN0CiAKICAgICAgICAgVmlydHVhbFJlZ2lzdGVy
IGFyZ3VtZW50Q291bnRSZWdpc3RlcjsKICAgICAgICAgaWYgKCFub2RlLT5vcmlnaW4uc2VtYW50
aWMuaW5saW5lQ2FsbEZyYW1lKQotICAgICAgICAgICAgYXJndW1lbnRDb3VudFJlZ2lzdGVyID0g
VmlydHVhbFJlZ2lzdGVyKEpTU3RhY2s6OkFyZ3VtZW50Q291bnQpOworICAgICAgICAgICAgYXJn
dW1lbnRDb3VudFJlZ2lzdGVyID0gVmlydHVhbFJlZ2lzdGVyKENhbGxGcmFtZUhlYWRlcjo6QXJn
dW1lbnRDb3VudCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGFyZ3VtZW50Q291bnRSZWdp
c3RlciA9IG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50Q291
bnRSZWdpc3RlcjsKICAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjpwYXlsb2FkRm9y
KGFyZ3VtZW50Q291bnRSZWdpc3RlciksIGxlbmd0aEdQUik7CkBAIC02MjcxLDcgKzYyNzEsNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ3JlYXRlRGlyZWN0CiAgICAgICAgICAgICAg
ICAgc2NyYXRjaDFHUFIpOwogICAgICAgICB9CiAgICAgfSBlbHNlCi0gICAgICAgIG1faml0Lmxv
YWRQdHIoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IoSlNTdGFjazo6Q2FsbGVlKSwgc2NyYXRjaDFH
UFIpOworICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKENhbGxG
cmFtZUhlYWRlcjo6Q2FsbGVlKSwgc2NyYXRjaDFHUFIpOwogCiAgICAgLy8gRG9uJ3QgbmVlZCBh
IG1lbW9yeSBiYXJyaWVycyBzaW5jZSB3ZSBqdXN0IGZhc3QtY3JlYXRlZCB0aGUgYWN0aXZhdGlv
biwgc28gdGhlCiAgICAgLy8gYWN0aXZhdGlvbiBtdXN0IGJlIHlvdW5nLgpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdGFja0xheW91dFBoYXNlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0YWNrTGF5b3V0UGhhc2UuY3BwCShyZXZp
c2lvbiAyMDI5NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0YWNrTGF5b3V0
UGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTgsNyArMTE4LDcgQEAgcHVibGljOgogICAg
ICAgICAgICAgCiAgICAgICAgICAgICBpZiAoaW5saW5lQ2FsbEZyYW1lLT5pc1ZhcmFyZ3MoKSkg
ewogICAgICAgICAgICAgICAgIHVzZWRMb2NhbHMuc2V0KFZpcnR1YWxSZWdpc3RlcigKLSAgICAg
ICAgICAgICAgICAgICAgSlNTdGFjazo6QXJndW1lbnRDb3VudCArIGlubGluZUNhbGxGcmFtZS0+
c3RhY2tPZmZzZXQpLnRvTG9jYWwoKSk7CisgICAgICAgICAgICAgICAgICAgIENhbGxGcmFtZUhl
YWRlcjo6QXJndW1lbnRDb3VudCArIGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQpLnRvTG9j
YWwoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGZvciAodW5z
aWduZWQgYXJndW1lbnQgPSBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5zaXplKCk7IGFyZ3Vt
ZW50LS0gPiAxOykgewpAQCAtMTg0LDcgKzE4NCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIAog
ICAgICAgICAgICAgaWYgKGlubGluZUNhbGxGcmFtZS0+aXNWYXJhcmdzKCkpIHsKICAgICAgICAg
ICAgICAgICBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50Q291bnRSZWdpc3RlciA9IGFzc2lnbigK
LSAgICAgICAgICAgICAgICAgICAgYWxsb2NhdGlvbiwgVmlydHVhbFJlZ2lzdGVyKGlubGluZUNh
bGxGcmFtZS0+c3RhY2tPZmZzZXQgKyBKU1N0YWNrOjpBcmd1bWVudENvdW50KSk7CisgICAgICAg
ICAgICAgICAgICAgIGFsbG9jYXRpb24sIFZpcnR1YWxSZWdpc3RlcihpbmxpbmVDYWxsRnJhbWUt
PnN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lSGVhZGVyOjpBcmd1bWVudENvdW50KSk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgYXJndW1lbnQg
PSBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5zaXplKCk7IGFyZ3VtZW50LS0gPiAxOykgewpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaHVua3MuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVGh1bmtzLmNwcAkocmV2aXNpb24gMjAy
OTU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaHVua3MuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMTEsNyArMTExLDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIG9zckVudHJ5
VGh1bmtHZW5lcgogICAgIHB0cmRpZmZfdCBvZmZzZXRPZkZyYW1lU2l6ZSA9IDA7IC8vIFRoaXMg
aXMgdGhlIERGRyBmcmFtZSBjb3VudC4KICAgICBwdHJkaWZmX3Qgb2Zmc2V0T2ZUYXJnZXRQQyA9
IG9mZnNldE9mRnJhbWVTaXplICsgc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKTsKICAgICBwdHJkaWZm
X3Qgb2Zmc2V0T2ZQYXlsb2FkID0gb2Zmc2V0T2ZUYXJnZXRQQyArIHNpemVvZihFbmNvZGVkSlNW
YWx1ZSk7Ci0gICAgcHRyZGlmZl90IG9mZnNldE9mTG9jYWxzID0gb2Zmc2V0T2ZQYXlsb2FkICsg
c2l6ZW9mKFJlZ2lzdGVyKSAqIEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlclNpemU7CisgICAgcHRy
ZGlmZl90IG9mZnNldE9mTG9jYWxzID0gb2Zmc2V0T2ZQYXlsb2FkICsgc2l6ZW9mKFJlZ2lzdGVy
KSAqIENhbGxGcmFtZUhlYWRlcjo6U2l6ZTsKICAgICAKICAgICBqaXQubW92ZShHUFJJbmZvOjpy
ZXR1cm5WYWx1ZUdQUjIsIEdQUkluZm86OnJlZ1QwKTsKICAgICBqaXQubG9hZFB0cihNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhHUFJJbmZvOjpyZWdUMCwgb2Zmc2V0T2ZGcmFtZVNpemUpLCBHUFJJ
bmZvOjpyZWdUMSk7IC8vIExvYWQgdGhlIGZyYW1lIHNpemUuCkBAIC0xMjgsNyArMTI4LDcgQEAg
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmIG9zckVudHJ5VGh1bmtHZW5lcgogICAgIGppdC5sb2FkMzIo
TWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleChHUFJJbmZvOjpyZWdUMCwgR1BSSW5mbzo6cmVnVDEs
IE1hY3JvQXNzZW1ibGVyOjpUaW1lc0VpZ2h0LCBvZmZzZXRPZkxvY2FscyArIHNpemVvZihpbnQz
Ml90KSksIEdQUkluZm86OnJlZ1QzKTsKICAgICBqaXQuc3RvcmUzMihHUFJJbmZvOjpyZWdUMiwg
TWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleChHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BS
SW5mbzo6cmVnVDQsIE1hY3JvQXNzZW1ibGVyOjpUaW1lc0VpZ2h0LCAtc3RhdGljX2Nhc3Q8aW50
cHRyX3Q+KHNpemVvZihSZWdpc3RlcikpKSk7CiAgICAgaml0LnN0b3JlMzIoR1BSSW5mbzo6cmVn
VDMsIE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIs
IEdQUkluZm86OnJlZ1Q0LCBNYWNyb0Fzc2VtYmxlcjo6VGltZXNFaWdodCwgLXN0YXRpY19jYXN0
PGludHB0cl90PihzaXplb2YoUmVnaXN0ZXIpKSArIHN0YXRpY19jYXN0PGludHB0cl90PihzaXpl
b2YoaW50MzJfdCkpKSk7Ci0gICAgaml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1
YWwsIEdQUkluZm86OnJlZ1QxLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihiaXR3aXNl
X2Nhc3Q8dm9pZCo+KC1zdGF0aWNfY2FzdDxpbnRwdHJfdD4oSlNTdGFjazo6Q2FsbEZyYW1lSGVh
ZGVyU2l6ZSkpKSkubGlua1RvKGxvb3AsICZqaXQpOworICAgIGppdC5icmFuY2hQdHIoTWFjcm9B
c3NlbWJsZXI6Ok5vdEVxdWFsLCBHUFJJbmZvOjpyZWdUMSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0
ZWRJbW1QdHIoYml0d2lzZV9jYXN0PHZvaWQqPigtc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KENhbGxG
cmFtZUhlYWRlcjo6U2l6ZSkpKSkubGlua1RvKGxvb3AsICZqaXQpOwogICAgIAogICAgIGppdC5s
b2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKEdQUkluZm86OnJlZ1QwLCBvZmZzZXRPZlRh
cmdldFBDKSwgR1BSSW5mbzo6cmVnVDEpOwogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG9rID0g
aml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6QWJvdmUsIEdQUkluZm86OnJlZ1QxLCBNYWNy
b0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0
PGludHB0cl90PigxMDAwKSkpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
TGluay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5r
LmNwcAkocmV2aXNpb24gMjAyOTU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExM
aW5rLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMwLDcgKzEzMCw3IEBAIHZvaWQgbGluayhTdGF0
ZSYgc3RhdGUpCiAgICAgICAgIENDYWxsSGVscGVyczo6SnVtcExpc3QgbWFpblBhdGhKdW1wczsK
ICAgICAKICAgICAgICAgaml0LmxvYWQzMigKLSAgICAgICAgICAgIGZyYW1lLndpdGhPZmZzZXQo
c2l6ZW9mKFJlZ2lzdGVyKSAqIEpTU3RhY2s6OkFyZ3VtZW50Q291bnQpLAorICAgICAgICAgICAg
ZnJhbWUud2l0aE9mZnNldChzaXplb2YoUmVnaXN0ZXIpICogQ2FsbEZyYW1lSGVhZGVyOjpBcmd1
bWVudENvdW50KSwKICAgICAgICAgICAgIEdQUkluZm86OnJlZ1QxKTsKICAgICAgICAgbWFpblBh
dGhKdW1wcy5hcHBlbmQoaml0LmJyYW5jaDMyKAogICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpB
Ym92ZU9yRXF1YWwsIEdQUkluZm86OnJlZ1QxLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAkocmV2aXNpb24gMjAyOTU0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xODUsNyArMTg1LDcgQEAgcHVibGljOgogICAgICAgICBtX3Byb2MuYWRkRmFzdENvbnN0YW50
KG1fdGFnVHlwZU51bWJlci0+a2V5KCkpOwogICAgICAgICBtX3Byb2MuYWRkRmFzdENvbnN0YW50
KG1fdGFnTWFzay0+a2V5KCkpOwogICAgICAgICAKLSAgICAgICAgbV9vdXQuc3RvcmVQdHIobV9v
dXQuY29uc3RJbnRQdHIoY29kZUJsb2NrKCkpLCBhZGRyZXNzRm9yKEpTU3RhY2s6OkNvZGVCbG9j
aykpOworICAgICAgICBtX291dC5zdG9yZVB0cihtX291dC5jb25zdEludFB0cihjb2RlQmxvY2so
KSksIGFkZHJlc3NGb3IoQ2FsbEZyYW1lSGVhZGVyOjpDb2RlQmxvY2spKTsKIAogICAgICAgICAv
LyBTdGFjayBPdmVyZmxvdyBDaGVjay4KICAgICAgICAgdW5zaWduZWQgZXhpdEZyYW1lU2l6ZSA9
IG1fZ3JhcGgucmVxdWlyZWRSZWdpc3RlckNvdW50Rm9yRXhpdCgpICogc2l6ZW9mKFJlZ2lzdGVy
KTsKQEAgLTIxMiw3ICsyMTIsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgIHN0YWNr
T3ZlcmZsb3cubGluaygmaml0KTsKICAgICAgICAgICAgICAgICAgICAgaml0LnN0b3JlMzIoCiAg
ICAgICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKGNhbGxT
aXRlSW5kZXguYml0cygpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6
dGFnRm9yKFZpcnR1YWxSZWdpc3RlcihKU1N0YWNrOjpBcmd1bWVudENvdW50KSkpOworICAgICAg
ICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjp0YWdGb3IoVmlydHVhbFJlZ2lzdGVyKENh
bGxGcmFtZUhlYWRlcjo6QXJndW1lbnRDb3VudCkpKTsKICAgICAgICAgICAgICAgICAgICAgaml0
LmNvcHlDYWxsZWVTYXZlc1RvVk1FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNCdWZmZXIoKTsKIAogICAg
ICAgICAgICAgICAgICAgICBqaXQubW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BS
SW5mbzo6YXJndW1lbnRHUFIwKTsKQEAgLTMwNDYsNyArMzA0Niw3IEBAIHByaXZhdGU6CiAgICAg
ICAgIGVsc2UgewogICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIGFyZ3VtZW50Q291bnRSZWdp
c3RlcjsKICAgICAgICAgICAgIGlmICghaW5saW5lQ2FsbEZyYW1lKQotICAgICAgICAgICAgICAg
IGFyZ3VtZW50Q291bnRSZWdpc3RlciA9IFZpcnR1YWxSZWdpc3RlcihKU1N0YWNrOjpBcmd1bWVu
dENvdW50KTsKKyAgICAgICAgICAgICAgICBhcmd1bWVudENvdW50UmVnaXN0ZXIgPSBWaXJ0dWFs
UmVnaXN0ZXIoQ2FsbEZyYW1lSGVhZGVyOjpBcmd1bWVudENvdW50KTsKICAgICAgICAgICAgIGVs
c2UKICAgICAgICAgICAgICAgICBhcmd1bWVudENvdW50UmVnaXN0ZXIgPSBpbmxpbmVDYWxsRnJh
bWUtPmFyZ3VtZW50Q291bnRSZWdpc3RlcjsKICAgICAgICAgICAgIGxpbWl0ID0gbV9vdXQuc3Vi
KG1fb3V0LmxvYWQzMihwYXlsb2FkRm9yKGFyZ3VtZW50Q291bnRSZWdpc3RlcikpLCBtX291dC5p
bnQzMk9uZSk7CkBAIC00NzI3LDEyICs0NzI3LDEyIEBAIHByaXZhdGU6CiAgICAgCiAgICAgdm9p
ZCBjb21waWxlR2V0Q2FsbGVlKCkKICAgICB7Ci0gICAgICAgIHNldEpTVmFsdWUobV9vdXQubG9h
ZFB0cihhZGRyZXNzRm9yKEpTU3RhY2s6OkNhbGxlZSkpKTsKKyAgICAgICAgc2V0SlNWYWx1ZSht
X291dC5sb2FkUHRyKGFkZHJlc3NGb3IoQ2FsbEZyYW1lSGVhZGVyOjpDYWxsZWUpKSk7CiAgICAg
fQogICAgIAogICAgIHZvaWQgY29tcGlsZUdldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCkK
ICAgICB7Ci0gICAgICAgIHNldEludDMyKG1fb3V0LmxvYWQzMihwYXlsb2FkRm9yKEpTU3RhY2s6
OkFyZ3VtZW50Q291bnQpKSk7CisgICAgICAgIHNldEludDMyKG1fb3V0LmxvYWQzMihwYXlsb2Fk
Rm9yKENhbGxGcmFtZUhlYWRlcjo6QXJndW1lbnRDb3VudCkpKTsKICAgICB9CiAgICAgCiAgICAg
dm9pZCBjb21waWxlR2V0U2NvcGUoKQpAQCAtNTA1Nyw3ICs1MDU3LDcgQEAgcHJpdmF0ZToKIAog
ICAgICAgICBMVmFsdWUganNDYWxsZWUgPSBsb3dKU1ZhbHVlKG1fZ3JhcGgudmFyQXJnQ2hpbGQo
bm9kZSwgMCkpOwogCi0gICAgICAgIHVuc2lnbmVkIGZyYW1lU2l6ZSA9IEpTU3RhY2s6OkNhbGxG
cmFtZUhlYWRlclNpemUgKyBudW1BcmdzOworICAgICAgICB1bnNpZ25lZCBmcmFtZVNpemUgPSBD
YWxsRnJhbWVIZWFkZXI6OlNpemUgKyBudW1BcmdzOwogICAgICAgICB1bnNpZ25lZCBhbGlnbmVk
RnJhbWVTaXplID0gV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mKHN0YWNrQWxpZ25tZW50UmVnaXN0
ZXJzKCksIGZyYW1lU2l6ZSk7CiAKICAgICAgICAgLy8gSlMtPkpTIGNhbGxpbmcgY29udmVudGlv
biByZXF1aXJlcyB0aGF0IHRoZSBjYWxsZXIgYWxsb3dzIHRoaXMgbXVjaCBzcGFjZSBvbiB0b3Ag
b2Ygc3RhY2sgdG8KQEAgLTUwODAsMTIgKzUwODAsMTIgQEAgcHJpdmF0ZToKIAogICAgICAgICBh
dXRvIGFkZEFyZ3VtZW50ID0gWyZdIChMVmFsdWUgdmFsdWUsIFZpcnR1YWxSZWdpc3RlciByZWcs
IGludCBvZmZzZXQpIHsKICAgICAgICAgICAgIGludHB0cl90IG9mZnNldEZyb21TUCA9Ci0gICAg
ICAgICAgICAgICAgKHJlZy5vZmZzZXQoKSAtIEpTU3RhY2s6OkNhbGxlckZyYW1lQW5kUENTaXpl
KSAqIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkgKyBvZmZzZXQ7CisgICAgICAgICAgICAgICAgKHJl
Zy5vZmZzZXQoKSAtIENhbGxGcmFtZUhlYWRlcjo6Q2FsbGVyRnJhbWVBbmRQQ1NpemUpICogc2l6
ZW9mKEVuY29kZWRKU1ZhbHVlKSArIG9mZnNldDsKICAgICAgICAgICAgIGFyZ3VtZW50cy5hcHBl
bmQoQ29uc3RyYWluZWRWYWx1ZSh2YWx1ZSwgVmFsdWVSZXA6OnN0YWNrQXJndW1lbnQob2Zmc2V0
RnJvbVNQKSkpOwogICAgICAgICB9OwogCi0gICAgICAgIGFkZEFyZ3VtZW50KGpzQ2FsbGVlLCBW
aXJ0dWFsUmVnaXN0ZXIoSlNTdGFjazo6Q2FsbGVlKSwgMCk7Ci0gICAgICAgIGFkZEFyZ3VtZW50
KG1fb3V0LmNvbnN0SW50MzIobnVtQXJncyksIFZpcnR1YWxSZWdpc3RlcihKU1N0YWNrOjpBcmd1
bWVudENvdW50KSwgUGF5bG9hZE9mZnNldCk7CisgICAgICAgIGFkZEFyZ3VtZW50KGpzQ2FsbGVl
LCBWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lSGVhZGVyOjpDYWxsZWUpLCAwKTsKKyAgICAgICAg
YWRkQXJndW1lbnQobV9vdXQuY29uc3RJbnQzMihudW1BcmdzKSwgVmlydHVhbFJlZ2lzdGVyKENh
bGxGcmFtZUhlYWRlcjo6QXJndW1lbnRDb3VudCksIFBheWxvYWRPZmZzZXQpOwogICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtQXJnczsgKytpKQogICAgICAgICAgICAgYWRkQXJn
dW1lbnQobG93SlNWYWx1ZShtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEgKyBpKSksIHZpcnR1
YWxSZWdpc3RlckZvckFyZ3VtZW50KGkpLCAwKTsKIApAQCAtNTExMiw3ICs1MTEyLDcgQEAgcHJp
dmF0ZToKIAogICAgICAgICAgICAgICAgIGppdC5zdG9yZTMyKAogICAgICAgICAgICAgICAgICAg
ICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihjYWxsU2l0ZUluZGV4LmJpdHMoKSksCi0gICAg
ICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6dGFnRm9yKFZpcnR1YWxSZWdpc3RlcihKU1N0
YWNrOjpBcmd1bWVudENvdW50KSkpOworICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6
OnRhZ0ZvcihWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lSGVhZGVyOjpBcmd1bWVudENvdW50KSkp
OwogCiAgICAgICAgICAgICAgICAgQ2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8gPSBqaXQuY29k
ZUJsb2NrKCktPmFkZENhbGxMaW5rSW5mbygpOwogCkBAIC01MjMwLDcgKzUyMzAsNyBAQCBwcml2
YXRlOgogICAgICAgICAgICAgICAgIC8vIHdpdGggdGhlIGNhbGwgc2l0ZSBpbmRleCBvZiBvdXIg
ZnJhbWUuIEJhZCB0aGluZ3MgaGFwcGVuIGlmIGl0J3Mgbm90IHNldC4KICAgICAgICAgICAgICAg
ICBqaXQuc3RvcmUzMigKICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVk
SW1tMzIoY2FsbFNpdGVJbmRleC5iaXRzKCkpLAotICAgICAgICAgICAgICAgICAgICBDQ2FsbEhl
bHBlcnM6OnRhZ0ZvcihWaXJ0dWFsUmVnaXN0ZXIoSlNTdGFjazo6QXJndW1lbnRDb3VudCkpKTsK
KyAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjp0YWdGb3IoVmlydHVhbFJlZ2lzdGVy
KENhbGxGcmFtZUhlYWRlcjo6QXJndW1lbnRDb3VudCkpKTsKIAogICAgICAgICAgICAgICAgIENh
bGxGcmFtZVNodWZmbGVyIHNsb3dQYXRoU2h1ZmZsZXIoaml0LCBzaHVmZmxlRGF0YSk7CiAgICAg
ICAgICAgICAgICAgc2xvd1BhdGhTaHVmZmxlci5zZXRDYWxsZWVKU1ZhbHVlUmVncyhKU1ZhbHVl
UmVncyhHUFJJbmZvOjpyZWdUMCkpOwpAQCAtNTMzNSw3ICs1MzM1LDcgQEAgcHJpdmF0ZToKIAog
ICAgICAgICAgICAgICAgIGppdC5zdG9yZTMyKAogICAgICAgICAgICAgICAgICAgICBDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW0zMihjYWxsU2l0ZUluZGV4LmJpdHMoKSksCi0gICAgICAgICAgICAg
ICAgICAgIENDYWxsSGVscGVyczo6dGFnRm9yKFZpcnR1YWxSZWdpc3RlcihKU1N0YWNrOjpBcmd1
bWVudENvdW50KSkpOworICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OnRhZ0ZvcihW
aXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lSGVhZGVyOjpBcmd1bWVudENvdW50KSkpOwogCiAgICAg
ICAgICAgICAgICAgQ2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8gPSBqaXQuY29kZUJsb2NrKCkt
PmFkZENhbGxMaW5rSW5mbygpOwogICAgICAgICAgICAgICAgIENhbGxWYXJhcmdzRGF0YSogZGF0
YSA9IG5vZGUtPmNhbGxWYXJhcmdzRGF0YSgpOwpAQCAtNTQ2NCw3ICs1NDY0LDcgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgICAgICAgICAgdGhpc0xhdGVSZXAuZW1pdFJlc3RvcmUoaml0LCB0aGlz
R1BSKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAg
ICAgaml0LnN0b3JlNjQoR1BSSW5mbzo6cmVnVDAsIENDYWxsSGVscGVyczo6Y2FsbGVlRnJhbWVT
bG90KEpTU3RhY2s6OkNhbGxlZSkpOworICAgICAgICAgICAgICAgIGppdC5zdG9yZTY0KEdQUklu
Zm86OnJlZ1QwLCBDQ2FsbEhlbHBlcnM6OmNhbGxlZUZyYW1lU2xvdChDYWxsRnJhbWVIZWFkZXI6
OkNhbGxlZSkpOwogICAgICAgICAgICAgICAgIGppdC5zdG9yZTY0KHRoaXNHUFIsIENDYWxsSGVs
cGVyczo6Y2FsbGVlQXJndW1lbnRTbG90KDApKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAg
ICAgICAgICBDYWxsTGlua0luZm86OkNhbGxUeXBlIGNhbGxUeXBlOwpAQCAtNzE0Nyw3ICs3MTQ3
LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICBtX291dC5zdG9yZVB0cihtX2NhbGxGcmFtZSwgcGFj
a2V0LCBtX2hlYXBzLlNoYWRvd0NoaWNrZW5fUGFja2V0X2ZyYW1lKTsKICAgICAgICAgbV9vdXQu
c3RvcmVQdHIobV9vdXQubG9hZFB0cihhZGRyZXNzRm9yKDApKSwgcGFja2V0LCBtX2hlYXBzLlNo
YWRvd0NoaWNrZW5fUGFja2V0X2NhbGxlckZyYW1lKTsKLSAgICAgICAgbV9vdXQuc3RvcmVQdHIo
bV9vdXQubG9hZFB0cihwYXlsb2FkRm9yKEpTU3RhY2s6OkNhbGxlZSkpLCBwYWNrZXQsIG1faGVh
cHMuU2hhZG93Q2hpY2tlbl9QYWNrZXRfY2FsbGVlKTsKKyAgICAgICAgbV9vdXQuc3RvcmVQdHIo
bV9vdXQubG9hZFB0cihwYXlsb2FkRm9yKENhbGxGcmFtZUhlYWRlcjo6Q2FsbGVlKSksIHBhY2tl
dCwgbV9oZWFwcy5TaGFkb3dDaGlja2VuX1BhY2tldF9jYWxsZWUpOwogICAgICAgICBtX291dC5z
dG9yZVB0cihzY29wZSwgcGFja2V0LCBtX2hlYXBzLlNoYWRvd0NoaWNrZW5fUGFja2V0X3Njb3Bl
KTsKICAgICB9CiAgICAgCkBAIC03MjE1LDcgKzcyMTUsNyBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgCiAgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgYXJndW1lbnRDb3VudFJlZ2lzdGVyOwog
ICAgICAgICAgICAgaWYgKCFpbmxpbmVDYWxsRnJhbWUpCi0gICAgICAgICAgICAgICAgYXJndW1l
bnRDb3VudFJlZ2lzdGVyID0gVmlydHVhbFJlZ2lzdGVyKEpTU3RhY2s6OkFyZ3VtZW50Q291bnQp
OworICAgICAgICAgICAgICAgIGFyZ3VtZW50Q291bnRSZWdpc3RlciA9IFZpcnR1YWxSZWdpc3Rl
cihDYWxsRnJhbWVIZWFkZXI6OkFyZ3VtZW50Q291bnQpOwogICAgICAgICAgICAgZWxzZQogICAg
ICAgICAgICAgICAgIGFyZ3VtZW50Q291bnRSZWdpc3RlciA9IGlubGluZUNhbGxGcmFtZS0+YXJn
dW1lbnRDb3VudFJlZ2lzdGVyOwogICAgICAgICAgICAgbGVuZ3RoLnZhbHVlID0gbV9vdXQuc3Vi
KG1fb3V0LmxvYWQzMihwYXlsb2FkRm9yKGFyZ3VtZW50Q291bnRSZWdpc3RlcikpLCBtX291dC5p
bnQzMk9uZSk7CkBAIC03MjM2LDcgKzcyMzYsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAg
IHJldHVybiBtX291dC5sb2FkUHRyKGFkZHJlc3NGb3IoZnJhbWUtPmNhbGxlZVJlY292ZXJ5LnZp
cnR1YWxSZWdpc3RlcigpKSk7CiAgICAgICAgICAgICByZXR1cm4gd2Vha1BvaW50ZXIoZnJhbWUt
PmNhbGxlZVJlY292ZXJ5LmNvbnN0YW50KCkuYXNDZWxsKCkpOwogICAgICAgICB9Ci0gICAgICAg
IHJldHVybiBtX291dC5sb2FkUHRyKGFkZHJlc3NGb3IoSlNTdGFjazo6Q2FsbGVlKSk7CisgICAg
ICAgIHJldHVybiBtX291dC5sb2FkUHRyKGFkZHJlc3NGb3IoQ2FsbEZyYW1lSGVhZGVyOjpDYWxs
ZWUpKTsKICAgICB9CiAgICAgCiAgICAgTFZhbHVlIGdldEFyZ3VtZW50c1N0YXJ0KElubGluZUNh
bGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lKQpAQCAtMTA2ODAsNyArMTA2ODAsNyBAQCBwcml2YXRl
OgogICAgICAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXggPSBtX2Z0bFN0YXRlLmppdENv
ZGUtPmNvbW1vbi5hZGRDb2RlT3JpZ2luKGNvZGVPcmlnaW4pOwogICAgICAgICBtX291dC5zdG9y
ZTMyKAogICAgICAgICAgICAgbV9vdXQuY29uc3RJbnQzMihjYWxsU2l0ZUluZGV4LmJpdHMoKSks
Ci0gICAgICAgICAgICB0YWdGb3IoSlNTdGFjazo6QXJndW1lbnRDb3VudCkpOworICAgICAgICAg
ICAgdGFnRm9yKENhbGxGcmFtZUhlYWRlcjo6QXJndW1lbnRDb3VudCkpOwogICAgIH0KIAogICAg
IHZvaWQgY2FsbFByZWZsaWdodCgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TE9TUkV4aXRDb21waWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExPU1JFeGl0Q29tcGlsZXIuY3BwCShyZXZpc2lvbiAyMDI5NTQpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkV4aXRDb21waWxlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM5NCw3ICszOTQsNyBAQCBzdGF0aWMgdm9pZCBjb21waWxlU3R1YigKICAgICAgICAgaml0
LnN0b3JlNjQoR1BSSW5mbzo6cmVnVDAsIHVud2luZFNjcmF0Y2ggKyBpKTsKICAgICB9CiAgICAg
Ci0gICAgaml0LmxvYWQzMihDQ2FsbEhlbHBlcnM6OnBheWxvYWRGb3IoSlNTdGFjazo6QXJndW1l
bnRDb3VudCksIEdQUkluZm86OnJlZ1QyKTsKKyAgICBqaXQubG9hZDMyKENDYWxsSGVscGVyczo6
cGF5bG9hZEZvcihDYWxsRnJhbWVIZWFkZXI6OkFyZ3VtZW50Q291bnQpLCBHUFJJbmZvOjpyZWdU
Mik7CiAgICAgCiAgICAgLy8gTGV0J3Mgc2F5IHRoYXQgdGhlIEZUTCBmdW5jdGlvbiBoYWQgZmFp
bGVkIGl0cyBhcml0eSBjaGVjay4gSW4gdGhhdCBjYXNlLCB0aGUgc3RhY2sgd2lsbAogICAgIC8v
IGNvbnRhaW4gc29tZSBleHRyYSBzdHVmZi4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMU2xvd1BhdGhDYWxsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExTbG93UGF0aENhbGwuaAkocmV2aXNpb24gMjAyOTU0KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExTbG93UGF0aENhbGwuaAkod29ya2luZyBjb3B5KQpAQCAtMTAzLDcg
KzEwMyw3IEBAIFNsb3dQYXRoQ2FsbCBjYWxsT3BlcmF0aW9uKAogICAgIGlmIChjYWxsU2l0ZUlu
ZGV4KSB7CiAgICAgICAgIGppdC5zdG9yZTMyKAogICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpU
cnVzdGVkSW1tMzIoY2FsbFNpdGVJbmRleC5iaXRzKCkpLAotICAgICAgICAgICAgQ0NhbGxIZWxw
ZXJzOjp0YWdGb3IoSlNTdGFjazo6QXJndW1lbnRDb3VudCkpOworICAgICAgICAgICAgQ0NhbGxI
ZWxwZXJzOjp0YWdGb3IoQ2FsbEZyYW1lSGVhZGVyOjpBcmd1bWVudENvdW50KSk7CiAgICAgfQog
ICAgIHJldHVybiBjYWxsT3BlcmF0aW9uKHVzZWRSZWdpc3RlcnMsIGppdCwgZXhjZXB0aW9uVGFy
Z2V0LCBmdW5jdGlvbiwgcmVzdWx0R1BSLCBhcmd1bWVudHMuLi4pOwogfQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5jcHAJKHJldmlzaW9u
IDIwMjk1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiwxNSBAQAogCiBuYW1lc3BhY2UgSlNDIHsK
IAordm9pZCBFeGVjU3RhdGU6OmluaXRHbG9iYWxFeGVjKEV4ZWNTdGF0ZSogZ2xvYmFsRXhlYywg
SlNDYWxsZWUqIGdsb2JhbENhbGxlZSkKK3sKKyAgICBnbG9iYWxFeGVjLT5zZXRDb2RlQmxvY2so
bnVsbHB0cik7CisgICAgZ2xvYmFsRXhlYy0+c2V0Q2FsbGVyRnJhbWUobm9DYWxsZXIoKSk7Cisg
ICAgZ2xvYmFsRXhlYy0+c2V0UmV0dXJuUEMoMCk7CisgICAgZ2xvYmFsRXhlYy0+c2V0QXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMoMCk7CisgICAgZ2xvYmFsRXhlYy0+c2V0Q2FsbGVlKGdsb2Jh
bENhbGxlZSk7Cit9CisKIGJvb2wgQ2FsbEZyYW1lOjpjYWxsU2l0ZUJpdHNBcmVCeXRlY29kZU9m
ZnNldCgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGNvZGVCbG9jaygpKTsKQEAgLTc2LDEyICs4NSwx
MiBAQCBib29sIENhbGxGcmFtZTo6Y2FsbFNpdGVCaXRzQXJlQ29kZU9yaWdpCiAKIHVuc2lnbmVk
IENhbGxGcmFtZTo6Y2FsbFNpdGVBc1Jhd0JpdHMoKSBjb25zdAogewotICAgIHJldHVybiB0aGlz
W0pTU3RhY2s6OkFyZ3VtZW50Q291bnRdLnRhZygpOworICAgIHJldHVybiB0aGlzW0NhbGxGcmFt
ZUhlYWRlcjo6QXJndW1lbnRDb3VudF0udGFnKCk7CiB9CiAKIFNVUFBSRVNTX0FTQU4gdW5zaWdu
ZWQgQ2FsbEZyYW1lOjp1bnNhZmVDYWxsU2l0ZUFzUmF3Qml0cygpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuIHRoaXNbSlNTdGFjazo6QXJndW1lbnRDb3VudF0udW5zYWZlVGFnKCk7CisgICAgcmV0dXJu
IHRoaXNbQ2FsbEZyYW1lSGVhZGVyOjpBcmd1bWVudENvdW50XS51bnNhZmVUYWcoKTsKIH0KIAog
Q2FsbFNpdGVJbmRleCBDYWxsRnJhbWU6OmNhbGxTaXRlSW5kZXgoKSBjb25zdApAQCAtMTExLDcg
KzEyMCw3IEBAIEluc3RydWN0aW9uKiBDYWxsRnJhbWU6OmN1cnJlbnRWUEMoKSBjb24KIHZvaWQg
Q2FsbEZyYW1lOjpzZXRDdXJyZW50VlBDKEluc3RydWN0aW9uKiB2cGMpCiB7CiAgICAgQ2FsbFNp
dGVJbmRleCBjYWxsU2l0ZSh2cGMpOwotICAgIHRoaXNbSlNTdGFjazo6QXJndW1lbnRDb3VudF0u
dGFnKCkgPSBjYWxsU2l0ZS5iaXRzKCk7CisgICAgdGhpc1tDYWxsRnJhbWVIZWFkZXI6OkFyZ3Vt
ZW50Q291bnRdLnRhZygpID0gY2FsbFNpdGUuYml0cygpOwogfQogCiB1bnNpZ25lZCBDYWxsRnJh
bWU6OmNhbGxTaXRlQml0c0FzQnl0ZWNvZGVPZmZzZXQoKSBjb25zdApAQCAtMTMxLDcgKzE0MCw3
IEBAIEluc3RydWN0aW9uKiBDYWxsRnJhbWU6OmN1cnJlbnRWUEMoKSBjb24KIHZvaWQgQ2FsbEZy
YW1lOjpzZXRDdXJyZW50VlBDKEluc3RydWN0aW9uKiB2cGMpCiB7CiAgICAgQ2FsbFNpdGVJbmRl
eCBjYWxsU2l0ZSh2cGMgLSBjb2RlQmxvY2soKS0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSk7Ci0g
ICAgdGhpc1tKU1N0YWNrOjpBcmd1bWVudENvdW50XS50YWcoKSA9IHN0YXRpY19jYXN0PGludDMy
X3Q+KGNhbGxTaXRlLmJpdHMoKSk7CisgICAgdGhpc1tDYWxsRnJhbWVIZWFkZXI6OkFyZ3VtZW50
Q291bnRdLnRhZygpID0gc3RhdGljX2Nhc3Q8aW50MzJfdD4oY2FsbFNpdGUuYml0cygpKTsKIH0K
IAogdW5zaWduZWQgQ2FsbEZyYW1lOjpjYWxsU2l0ZUJpdHNBc0J5dGVjb2RlT2Zmc2V0KCkgY29u
c3QKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1l
LmgJKHJldmlzaW9uIDIwMjk1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9DYWxsRnJhbWUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiAgQ29w
eXJpZ2h0IChDKSAxOTk5LTIwMDEgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKICAqICBD
b3B5cmlnaHQgKEMpIDIwMDEgUGV0ZXIgS2VsbHkgKHBta0Bwb3N0LmNvbSkKLSAqICBDb3B5cmln
aHQgKEMpIDIwMDMsIDIwMDcsIDIwMDgsIDIwMTEsIDIwMTMtMjAxNiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA3LTIwMDgsIDIwMTEs
IDIwMTMtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
ICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYwpAQCAtMjQsNyArMjQsNiBAQAogI2RlZmluZSBDYWxsRnJhbWVfaAogCiAjaW5jbHVk
ZSAiQWJzdHJhY3RQQy5oIgotI2luY2x1ZGUgIkpTU3RhY2suaCIKICNpbmNsdWRlICJNYWNyb0Fz
c2VtYmxlckNvZGVSZWYuaCIKICNpbmNsdWRlICJSZWdpc3Rlci5oIgogI2luY2x1ZGUgIlN0YWNr
VmlzaXRvci5oIgpAQCAtMzQsOSArMzMsMTUgQEAKIG5hbWVzcGFjZSBKU0MgIHsKIAogICAgIGNs
YXNzIEFyZ3VtZW50czsKKyAgICBjbGFzcyBFeGVjU3RhdGU7CiAgICAgY2xhc3MgSW50ZXJwcmV0
ZXI7CisgICAgY2xhc3MgSlNDYWxsZWU7CiAgICAgY2xhc3MgSlNTY29wZTsKIAorICAgIHN0cnVj
dCBJbnN0cnVjdGlvbjsKKworICAgIHR5cGVkZWYgRXhlY1N0YXRlIENhbGxGcmFtZTsKKwogICAg
IHN0cnVjdCBDYWxsU2l0ZUluZGV4IHsKICAgICAgICAgQ2FsbFNpdGVJbmRleCgpCiAgICAgICAg
ICAgICA6IG1fYml0cyhVSU5UX01BWCkKQEAgLTYwLDE1ICs2NSwzNCBAQCBuYW1lc3BhY2UgSlND
ICB7CiAgICAgICAgIHVpbnQzMl90IG1fYml0czsKICAgICB9OwogCisgICAgc3RydWN0IENhbGxl
ckZyYW1lQW5kUEMgeworICAgICAgICBDYWxsRnJhbWUqIGNhbGxlckZyYW1lOworICAgICAgICBJ
bnN0cnVjdGlvbiogcGM7CisgICAgfTsKKworICAgIHN0cnVjdCBDYWxsRnJhbWVIZWFkZXIgewor
ICAgICAgICBlbnVtIEVudHJ5IHsKKyAgICAgICAgICAgIENhbGxlckZyYW1lQW5kUENTaXplID0g
c2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpIC8gc2l6ZW9mKFJlZ2lzdGVyKSwKKyAgICAgICAgICAg
IENvZGVCbG9jayA9IENhbGxlckZyYW1lQW5kUENTaXplLAorICAgICAgICAgICAgQ2FsbGVlLAor
ICAgICAgICAgICAgQXJndW1lbnRDb3VudCwKKyAgICAgICAgICAgIFNpemUsCisgICAgICAgICAg
ICAKKyAgICAgICAgICAgIC8vIFRoZSBmb2xsb3dpbmcgZW50cmllcyBhcmUgbm90IHBhcnQgb2Yg
dGhlIENhbGxGcmFtZUhlYWRlciBidXQgYXJlIHByb3ZpZGVkIGhlcmUgYXMgYSBjb252ZW5pZW5j
ZToKKyAgICAgICAgICAgIFRoaXNBcmd1bWVudCA9IFNpemUsCisgICAgICAgICAgICBGaXJzdEFy
Z3VtZW50LAorICAgICAgICB9OworICAgIH07CisKICAgICAvLyBSZXByZXNlbnRzIHRoZSBjdXJy
ZW50IHN0YXRlIG9mIHNjcmlwdCBleGVjdXRpb24uCiAgICAgLy8gUGFzc2VkIGFzIHRoZSBmaXJz
dCBhcmd1bWVudCB0byBtb3N0IGZ1bmN0aW9ucy4KICAgICBjbGFzcyBFeGVjU3RhdGUgOiBwcml2
YXRlIFJlZ2lzdGVyIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEpTVmFsdWUgY2FsbGVlQXNWYWx1
ZSgpIGNvbnN0IHsgcmV0dXJuIHRoaXNbSlNTdGFjazo6Q2FsbGVlXS5qc1ZhbHVlKCk7IH0KLSAg
ICAgICAgSlNPYmplY3QqIGNhbGxlZSgpIGNvbnN0IHsgcmV0dXJuIHRoaXNbSlNTdGFjazo6Q2Fs
bGVlXS5vYmplY3QoKTsgfQotICAgICAgICBTVVBQUkVTU19BU0FOIEpTVmFsdWUgdW5zYWZlQ2Fs
bGVlKCkgY29uc3QgeyByZXR1cm4gdGhpc1tKU1N0YWNrOjpDYWxsZWVdLmFzYW5VbnNhZmVKU1Zh
bHVlKCk7IH0KLSAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2soKSBjb25zdCB7IHJldHVybiB0
aGlzW0pTU3RhY2s6OkNvZGVCbG9ja10uUmVnaXN0ZXI6OmNvZGVCbG9jaygpOyB9Ci0gICAgICAg
IFNVUFBSRVNTX0FTQU4gQ29kZUJsb2NrKiB1bnNhZmVDb2RlQmxvY2soKSBjb25zdCB7IHJldHVy
biB0aGlzW0pTU3RhY2s6OkNvZGVCbG9ja10uUmVnaXN0ZXI6OmFzYW5VbnNhZmVDb2RlQmxvY2so
KTsgfQorICAgICAgICBKU1ZhbHVlIGNhbGxlZUFzVmFsdWUoKSBjb25zdCB7IHJldHVybiB0aGlz
W0NhbGxGcmFtZUhlYWRlcjo6Q2FsbGVlXS5qc1ZhbHVlKCk7IH0KKyAgICAgICAgSlNPYmplY3Qq
IGNhbGxlZSgpIGNvbnN0IHsgcmV0dXJuIHRoaXNbQ2FsbEZyYW1lSGVhZGVyOjpDYWxsZWVdLm9i
amVjdCgpOyB9CisgICAgICAgIFNVUFBSRVNTX0FTQU4gSlNWYWx1ZSB1bnNhZmVDYWxsZWUoKSBj
b25zdCB7IHJldHVybiB0aGlzW0NhbGxGcmFtZUhlYWRlcjo6Q2FsbGVlXS5hc2FuVW5zYWZlSlNW
YWx1ZSgpOyB9CisgICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrKCkgY29uc3QgeyByZXR1cm4g
dGhpc1tDYWxsRnJhbWVIZWFkZXI6OkNvZGVCbG9ja10uUmVnaXN0ZXI6OmNvZGVCbG9jaygpOyB9
CisgICAgICAgIFNVUFBSRVNTX0FTQU4gQ29kZUJsb2NrKiB1bnNhZmVDb2RlQmxvY2soKSBjb25z
dCB7IHJldHVybiB0aGlzW0NhbGxGcmFtZUhlYWRlcjo6Q29kZUJsb2NrXS5SZWdpc3Rlcjo6YXNh
blVuc2FmZUNvZGVCbG9jaygpOyB9CiAgICAgICAgIEpTU2NvcGUqIHNjb3BlKGludCBzY29wZVJl
Z2lzdGVyT2Zmc2V0KSBjb25zdAogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQodGhpc1tz
Y29wZVJlZ2lzdGVyT2Zmc2V0XS5SZWdpc3Rlcjo6c2NvcGUoKSk7CkBAIC0xNjQsMTcgKzE4OCw3
IEBAIG5hbWVzcGFjZSBKU0MgIHsKICAgICAgICAgdm9pZCBzZXRDYWxsZXJGcmFtZShDYWxsRnJh
bWUqIGZyYW1lKSB7IGNhbGxlckZyYW1lQW5kUEMoKS5jYWxsZXJGcmFtZSA9IGZyYW1lOyB9CiAg
ICAgICAgIHZvaWQgc2V0U2NvcGUoaW50IHNjb3BlUmVnaXN0ZXJPZmZzZXQsIEpTU2NvcGUqIHNj
b3BlKSB7IHN0YXRpY19jYXN0PFJlZ2lzdGVyKj4odGhpcylbc2NvcGVSZWdpc3Rlck9mZnNldF0g
PSBzY29wZTsgfQogCi0gICAgICAgIEFMV0FZU19JTkxJTkUgdm9pZCBpbml0KENvZGVCbG9jayog
Y29kZUJsb2NrLCBJbnN0cnVjdGlvbiogdlBDLAotICAgICAgICAgICAgQ2FsbEZyYW1lKiBjYWxs
ZXJGcmFtZSwgaW50IGFyZ2MsIEpTT2JqZWN0KiBjYWxsZWUpIAotICAgICAgICB7IAotICAgICAg
ICAgICAgQVNTRVJUKGNhbGxlckZyYW1lID09IG5vQ2FsbGVyKCkgfHwgY2FsbGVyRnJhbWUtPnN0
YWNrKCktPmNvbnRhaW5zQWRkcmVzcyh0aGlzKSk7IAotCi0gICAgICAgICAgICBzZXRDb2RlQmxv
Y2soY29kZUJsb2NrKTsgCi0gICAgICAgICAgICBzZXRDYWxsZXJGcmFtZShjYWxsZXJGcmFtZSk7
IAotICAgICAgICAgICAgc2V0UmV0dXJuUEModlBDKTsgLy8gVGhpcyBpcyBlaXRoZXIgYW4gSW5z
dHJ1Y3Rpb24qIG9yIGEgcG9pbnRlciBpbnRvIEpJVCBnZW5lcmF0ZWQgY29kZSBzdG9yZWQgYXMg
YW4gSW5zdHJ1Y3Rpb24qLiAKLSAgICAgICAgICAgIHNldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzKGFyZ2MpOyAvLyBvcmlnaW5hbCBhcmd1bWVudCBjb3VudCAoZm9yIHRoZSBzYWtlIG9mIHRo
ZSAiYXJndW1lbnRzIiBvYmplY3QpIAotICAgICAgICAgICAgc2V0Q2FsbGVlKGNhbGxlZSk7IAot
ICAgICAgICB9CisgICAgICAgIHN0YXRpYyB2b2lkIGluaXRHbG9iYWxFeGVjKEV4ZWNTdGF0ZSog
Z2xvYmFsRXhlYywgSlNDYWxsZWUqIGdsb2JhbENhbGxlZSk7CiAKICAgICAgICAgLy8gUmVhZCBh
IHJlZ2lzdGVyIGZyb20gdGhlIGNvZGVmcmFtZSAob3IgY29uc3RhbnQgZnJvbSB0aGUgQ29kZUJs
b2NrKS4KICAgICAgICAgUmVnaXN0ZXImIHIoaW50KTsKQEAgLTE4NSw5ICsxOTksOSBAQCBuYW1l
c3BhY2UgSlNDICB7CiAKICAgICAgICAgLy8gQWNjZXNzIHRvIGFyZ3VtZW50cyBhcyBwYXNzZWQu
IChBZnRlciBjYXB0dXJlLCBhcmd1bWVudHMgbWF5IG1vdmUgdG8gYSBkaWZmZXJlbnQgbG9jYXRp
b24uKQogICAgICAgICBzaXplX3QgYXJndW1lbnRDb3VudCgpIGNvbnN0IHsgcmV0dXJuIGFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzKCkgLSAxOyB9Ci0gICAgICAgIHNpemVfdCBhcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcygpIGNvbnN0IHsgcmV0dXJuIHRoaXNbSlNTdGFjazo6QXJndW1lbnRD
b3VudF0ucGF5bG9hZCgpOyB9Ci0gICAgICAgIHN0YXRpYyBpbnQgYXJndW1lbnRPZmZzZXQoaW50
IGFyZ3VtZW50KSB7IHJldHVybiAoSlNTdGFjazo6Rmlyc3RBcmd1bWVudCArIGFyZ3VtZW50KTsg
fQotICAgICAgICBzdGF0aWMgaW50IGFyZ3VtZW50T2Zmc2V0SW5jbHVkaW5nVGhpcyhpbnQgYXJn
dW1lbnQpIHsgcmV0dXJuIChKU1N0YWNrOjpUaGlzQXJndW1lbnQgKyBhcmd1bWVudCk7IH0KKyAg
ICAgICAgc2l6ZV90IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCkgY29uc3QgeyByZXR1cm4g
dGhpc1tDYWxsRnJhbWVIZWFkZXI6OkFyZ3VtZW50Q291bnRdLnBheWxvYWQoKTsgfQorICAgICAg
ICBzdGF0aWMgaW50IGFyZ3VtZW50T2Zmc2V0KGludCBhcmd1bWVudCkgeyByZXR1cm4gKENhbGxG
cmFtZUhlYWRlcjo6Rmlyc3RBcmd1bWVudCArIGFyZ3VtZW50KTsgfQorICAgICAgICBzdGF0aWMg
aW50IGFyZ3VtZW50T2Zmc2V0SW5jbHVkaW5nVGhpcyhpbnQgYXJndW1lbnQpIHsgcmV0dXJuIChD
YWxsRnJhbWVIZWFkZXI6OlRoaXNBcmd1bWVudCArIGFyZ3VtZW50KTsgfQogCiAgICAgICAgIC8v
IEluIHRoZSBmb2xsb3dpbmcgKGFyZ3VtZW50KCkgYW5kIHNldEFyZ3VtZW50KCkpLCB0aGUgJ2Fy
Z3VtZW50JwogICAgICAgICAvLyBwYXJhbWV0ZXIgaXMgdGhlIGluZGV4IG9mIHRoZSBhcmd1bWVu
dHMgb2YgdGhlIHRhcmdldCBmdW5jdGlvbiBvZgpAQCAtMjMzLDEzICsyNDcsMTMgQEAgbmFtZXNw
YWNlIEpTQyAgewogCiAgICAgICAgIEpTVmFsdWUgYXJndW1lbnRBZnRlckNhcHR1cmUoc2l6ZV90
IGFyZ3VtZW50KTsKIAotICAgICAgICBzdGF0aWMgaW50IG9mZnNldEZvcihzaXplX3QgYXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMpIHsgcmV0dXJuIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
ICsgSlNTdGFjazo6VGhpc0FyZ3VtZW50IC0gMTsgfQorICAgICAgICBzdGF0aWMgaW50IG9mZnNl
dEZvcihzaXplX3QgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpIHsgcmV0dXJuIGFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzICsgQ2FsbEZyYW1lSGVhZGVyOjpUaGlzQXJndW1lbnQgLSAxOyB9
CiAKICAgICAgICAgc3RhdGljIENhbGxGcmFtZSogbm9DYWxsZXIoKSB7IHJldHVybiAwOyB9CiAK
LSAgICAgICAgdm9pZCBzZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyhpbnQgY291bnQpIHsg
c3RhdGljX2Nhc3Q8UmVnaXN0ZXIqPih0aGlzKVtKU1N0YWNrOjpBcmd1bWVudENvdW50XS5wYXls
b2FkKCkgPSBjb3VudDsgfQotICAgICAgICB2b2lkIHNldENhbGxlZShKU09iamVjdCogY2FsbGVl
KSB7IHN0YXRpY19jYXN0PFJlZ2lzdGVyKj4odGhpcylbSlNTdGFjazo6Q2FsbGVlXSA9IGNhbGxl
ZTsgfQotICAgICAgICB2b2lkIHNldENvZGVCbG9jayhDb2RlQmxvY2sqIGNvZGVCbG9jaykgeyBz
dGF0aWNfY2FzdDxSZWdpc3Rlcio+KHRoaXMpW0pTU3RhY2s6OkNvZGVCbG9ja10gPSBjb2RlQmxv
Y2s7IH0KKyAgICAgICAgdm9pZCBzZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyhpbnQgY291
bnQpIHsgc3RhdGljX2Nhc3Q8UmVnaXN0ZXIqPih0aGlzKVtDYWxsRnJhbWVIZWFkZXI6OkFyZ3Vt
ZW50Q291bnRdLnBheWxvYWQoKSA9IGNvdW50OyB9CisgICAgICAgIHZvaWQgc2V0Q2FsbGVlKEpT
T2JqZWN0KiBjYWxsZWUpIHsgc3RhdGljX2Nhc3Q8UmVnaXN0ZXIqPih0aGlzKVtDYWxsRnJhbWVI
ZWFkZXI6OkNhbGxlZV0gPSBjYWxsZWU7IH0KKyAgICAgICAgdm9pZCBzZXRDb2RlQmxvY2soQ29k
ZUJsb2NrKiBjb2RlQmxvY2spIHsgc3RhdGljX2Nhc3Q8UmVnaXN0ZXIqPih0aGlzKVtDYWxsRnJh
bWVIZWFkZXI6OkNvZGVCbG9ja10gPSBjb2RlQmxvY2s7IH0KICAgICAgICAgdm9pZCBzZXRSZXR1
cm5QQyh2b2lkKiB2YWx1ZSkgeyBjYWxsZXJGcmFtZUFuZFBDKCkucGMgPSByZWludGVycHJldF9j
YXN0PEluc3RydWN0aW9uKj4odmFsdWUpOyB9CiAKICAgICAgICAgU3RyaW5nIGZyaWVuZGx5RnVu
Y3Rpb25OYW1lKCk7CkBAIC0yNzksMTAgKzI5MywxMCBAQCBuYW1lc3BhY2UgSlNDICB7CiAgICAg
ICAgICAgICBpbnQgb2Zmc2V0ID0gcmVnIC0gdGhpcy0+cmVnaXN0ZXJzKCk7CiAKICAgICAgICAg
ICAgIC8vIFRoZSBvZmZzZXQgaXMgZGVmaW5lZCAoYmFzZWQgb24gYXJndW1lbnRPZmZzZXQoKSkg
dG8gYmU6Ci0gICAgICAgICAgICAvLyAgICAgICBvZmZzZXQgPSBKU1N0YWNrOjpGaXJzdEFyZ3Vt
ZW50IC0gYXJnSW5kZXg7CisgICAgICAgICAgICAvLyAgICAgICBvZmZzZXQgPSBDYWxsRnJhbWVI
ZWFkZXI6OkZpcnN0QXJndW1lbnQgLSBhcmdJbmRleDsKICAgICAgICAgICAgIC8vIEhlbmNlOgot
ICAgICAgICAgICAgLy8gICAgICAgYXJnSW5kZXggPSBKU1N0YWNrOjpGaXJzdEFyZ3VtZW50IC0g
b2Zmc2V0OwotICAgICAgICAgICAgc2l6ZV90IGFyZ0luZGV4ID0gb2Zmc2V0IC0gSlNTdGFjazo6
Rmlyc3RBcmd1bWVudDsKKyAgICAgICAgICAgIC8vICAgICAgIGFyZ0luZGV4ID0gQ2FsbEZyYW1l
SGVhZGVyOjpGaXJzdEFyZ3VtZW50IC0gb2Zmc2V0OworICAgICAgICAgICAgc2l6ZV90IGFyZ0lu
ZGV4ID0gb2Zmc2V0IC0gQ2FsbEZyYW1lSGVhZGVyOjpGaXJzdEFyZ3VtZW50OwogICAgICAgICAg
ICAgcmV0dXJuIGFyZ0luZGV4OwogICAgICAgICB9CiAKQEAgLTI5MCw3ICszMDQsOSBAQCBuYW1l
c3BhY2UgSlNDICB7CiAgICAgICAgIGNvbnN0IENhbGxlckZyYW1lQW5kUEMmIGNhbGxlckZyYW1l
QW5kUEMoKSBjb25zdCB7IHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDxjb25zdCBDYWxsZXJGcmFt
ZUFuZFBDKj4odGhpcyk7IH0KICAgICAgICAgU1VQUFJFU1NfQVNBTiBjb25zdCBDYWxsZXJGcmFt
ZUFuZFBDJiB1bnNhZmVDYWxsZXJGcmFtZUFuZFBDKCkgY29uc3QgeyByZXR1cm4gKnJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgQ2FsbGVyRnJhbWVBbmRQQyo+KHRoaXMpOyB9CiAKKyNpZiAhRU5BQkxF
KEpJVCkKICAgICAgICAgZnJpZW5kIGNsYXNzIEpTU3RhY2s7CisjZW5kaWYKICAgICB9OwogCiB9
IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9JbnRlcnByZXRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
dGVycHJldGVyL0ludGVycHJldGVyLmNwcAkocmV2aXNpb24gMjAyOTU0KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDAxLDggKzQwMSw4IEBAIHZvaWQgSW50ZXJwcmV0ZXI6OmR1bXBSZWdpc3RlcnMoQ2FsbEZy
YW0KICAgICBjb25zdCBSZWdpc3RlciogaXQ7CiAgICAgY29uc3QgUmVnaXN0ZXIqIGVuZDsKIAot
ICAgIGl0ID0gY2FsbEZyYW1lLT5yZWdpc3RlcnMoKSArIEpTU3RhY2s6OlRoaXNBcmd1bWVudCAr
IGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpOwotICAgIGVuZCA9IGNhbGxGcmFtZS0+cmVnaXN0
ZXJzKCkgKyBKU1N0YWNrOjpUaGlzQXJndW1lbnQgLSAxOworICAgIGl0ID0gY2FsbEZyYW1lLT5y
ZWdpc3RlcnMoKSArIENhbGxGcmFtZUhlYWRlcjo6VGhpc0FyZ3VtZW50ICsgY2FsbEZyYW1lLT5h
cmd1bWVudENvdW50KCk7CisgICAgZW5kID0gY2FsbEZyYW1lLT5yZWdpc3RlcnMoKSArIENhbGxG
cmFtZUhlYWRlcjo6VGhpc0FyZ3VtZW50IC0gMTsKICAgICB3aGlsZSAoaXQgPiBlbmQpIHsKICAg
ICAgICAgSlNWYWx1ZSB2ID0gaXQtPmpzVmFsdWUoKTsKICAgICAgICAgaW50IHJlZ2lzdGVyTnVt
YmVyID0gaXQgLSBjYWxsRnJhbWUtPnJlZ2lzdGVycygpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgJKHJldmlzaW9uIDIwMjk1NCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNjIsMTIgKzI2MiwxMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
Ly8gYWxpZ25lZCBzaXplLiBBbGlnbiB0aGUgc2l6ZSBoZXJlLgogICAgICAgICBhcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcyA9IFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZigKICAgICAgICAgICAg
IHN0YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCksCi0gICAgICAgICAgICBhcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpcyArIEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlclNpemUpIC0gSlNTdGFjazo6Q2Fs
bEZyYW1lSGVhZGVyU2l6ZTsKKyAgICAgICAgICAgIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
ICsgQ2FsbEZyYW1lSGVhZGVyOjpTaXplKSAtIENhbGxGcmFtZUhlYWRlcjo6U2l6ZTsKIAogICAg
ICAgICAvLyBBbGlnbiB0aGUgZnJhbWUgb2Zmc2V0IGhlcmUuCiAgICAgICAgIHVuc2lnbmVkIHBh
ZGRlZENhbGxlZUZyYW1lT2Zmc2V0ID0gV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mKAogICAgICAg
ICAgICAgc3RhY2tBbGlnbm1lbnRSZWdpc3RlcnMoKSwKLSAgICAgICAgICAgIG51bVVzZWRTdGFj
a1Nsb3RzICsgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgKyBKU1N0YWNrOjpDYWxsRnJhbWVI
ZWFkZXJTaXplKTsKKyAgICAgICAgICAgIG51bVVzZWRTdGFja1Nsb3RzICsgYXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMgKyBDYWxsRnJhbWVIZWFkZXI6OlNpemUpOwogICAgICAgICByZXR1cm4g
Q2FsbEZyYW1lOjpjcmVhdGUoY2FsbEZyYW1lLT5yZWdpc3RlcnMoKSAtIHBhZGRlZENhbGxlZUZy
YW1lT2Zmc2V0KTsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9KU1N0YWNrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVy
cHJldGVyL0pTU3RhY2suaAkocmV2aXNpb24gMjAyOTU0KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2ludGVycHJldGVyL0pTU3RhY2suaAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNiBA
QAogI2lmbmRlZiBKU1N0YWNrX2gKICNkZWZpbmUgSlNTdGFja19oCiAKLSNpbmNsdWRlICJFeGVj
dXRhYmxlQWxsb2NhdG9yLmgiCiAjaW5jbHVkZSAiUmVnaXN0ZXIuaCIKICNpbmNsdWRlIDx3dGYv
Tm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvUGFnZVJlc2VydmF0aW9uLmg+CkBAIC0zOSwz
NCArMzgsMTMgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBDb2RlQmxvY2tTZXQ7CiAg
ICAgY2xhc3MgQ29uc2VydmF0aXZlUm9vdHM7Ci0gICAgY2xhc3MgRXhlY1N0YXRlOwogICAgIGNs
YXNzIEpJVFN0dWJSb3V0aW5lU2V0OwogICAgIGNsYXNzIFZNOwogICAgIGNsYXNzIExMSW50T2Zm
c2V0c0V4dHJhY3RvcjsKIAotICAgIHN0cnVjdCBJbnN0cnVjdGlvbjsKLSAgICB0eXBlZGVmIEV4
ZWNTdGF0ZSBDYWxsRnJhbWU7Ci0KLSAgICBzdHJ1Y3QgQ2FsbGVyRnJhbWVBbmRQQyB7Ci0gICAg
ICAgIENhbGxGcmFtZSogY2FsbGVyRnJhbWU7Ci0gICAgICAgIEluc3RydWN0aW9uKiBwYzsKLSAg
ICB9OwotCiAgICAgY2xhc3MgSlNTdGFjayB7CiAgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KEpTU3RhY2spOwogICAgIHB1YmxpYzoKLSAgICAgICAgZW51bSBDYWxsRnJhbWVIZWFkZXJFbnRy
eSB7Ci0gICAgICAgICAgICBDYWxsZXJGcmFtZUFuZFBDU2l6ZSA9IHNpemVvZihDYWxsZXJGcmFt
ZUFuZFBDKSAvIHNpemVvZihSZWdpc3RlciksCi0gICAgICAgICAgICBDb2RlQmxvY2sgPSBDYWxs
ZXJGcmFtZUFuZFBDU2l6ZSwKLSAgICAgICAgICAgIENhbGxlZSwKLSAgICAgICAgICAgIEFyZ3Vt
ZW50Q291bnQsCi0gICAgICAgICAgICBDYWxsRnJhbWVIZWFkZXJTaXplLAotCi0gICAgICAgICAg
ICAvLyBUaGUgZm9sbG93aW5nIGVudHJpZXMgYXJlIG5vdCBwYXJ0IG9mIHRoZSBDYWxsRnJhbWVI
ZWFkZXIgYnV0IGFyZSBwcm92aWRlZCBoZXJlIGFzIGEgY29udmVuaWVuY2U6Ci0gICAgICAgICAg
ICBUaGlzQXJndW1lbnQgPSBDYWxsRnJhbWVIZWFkZXJTaXplLAotICAgICAgICAgICAgRmlyc3RB
cmd1bWVudCwKLSAgICAgICAgfTsKLQogICAgICAgICAvLyBBbGxvdyA4ayBvZiBleGNlc3MgcmVn
aXN0ZXJzIGJlZm9yZSB3ZSBzdGFydCB0cnlpbmcgdG8gcmVhcCB0aGUgc3RhY2sKICAgICAgICAg
c3RhdGljIGNvbnN0IHB0cmRpZmZfdCBtYXhFeGNlc3NDYXBhY2l0eSA9IDggKiAxMDI0OwogCkBA
IC03NywxMCArNTUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCBjb250YWluc0Fk
ZHJlc3MoUmVnaXN0ZXIqIGFkZHJlc3MpIHsgcmV0dXJuIChsb3dBZGRyZXNzKCkgPD0gYWRkcmVz
cyAmJiBhZGRyZXNzIDwgaGlnaEFkZHJlc3MoKSk7IH0KICAgICAgICAgc3RhdGljIHNpemVfdCBj
b21taXR0ZWRCeXRlQ291bnQoKTsKIAotI2lmIEVOQUJMRShKSVQpCi0gICAgICAgIHZvaWQgZ2F0
aGVyQ29uc2VydmF0aXZlUm9vdHMoQ29uc2VydmF0aXZlUm9vdHMmLCBKSVRTdHViUm91dGluZVNl
dCYsIENvZGVCbG9ja1NldCYpIHsgfQotICAgICAgICB2b2lkIHNhbml0aXplU3RhY2soKSB7IH0K
LSNlbHNlCisjaWYgIUVOQUJMRShKSVQpCiAgICAgICAgIH5KU1N0YWNrKCk7CiAKICAgICAgICAg
dm9pZCBnYXRoZXJDb25zZXJ2YXRpdmVSb290cyhDb25zZXJ2YXRpdmVSb290cyYsIEpJVFN0dWJS
b3V0aW5lU2V0JiwgQ29kZUJsb2NrU2V0Jik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0Fzc2VtYmx5SGVscGVycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCShyZXZpc2lvbiAyMDI5NTQpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI5Myw3ICsyOTMsNyBAQCB2b2lkIEFzc2VtYmx5SGVscGVyczo6aml0QXNzZXJ0SXNOdWxsKEdQ
CiAKIHZvaWQgQXNzZW1ibHlIZWxwZXJzOjpqaXRBc3NlcnRBcmd1bWVudENvdW50U2FuZSgpCiB7
Ci0gICAgSnVtcCBvayA9IGJyYW5jaDMyKEJlbG93LCBwYXlsb2FkRm9yKEpTU3RhY2s6OkFyZ3Vt
ZW50Q291bnQpLCBUcnVzdGVkSW1tMzIoMTAwMDAwMDApKTsKKyAgICBKdW1wIG9rID0gYnJhbmNo
MzIoQmVsb3csIHBheWxvYWRGb3IoQ2FsbEZyYW1lSGVhZGVyOjpBcmd1bWVudENvdW50KSwgVHJ1
c3RlZEltbTMyKDEwMDAwMDAwKSk7CiAgICAgYWJvcnRXaXRoUmVhc29uKEFISW5zYW5lQXJndW1l
bnRDb3VudCk7CiAgICAgb2subGluayh0aGlzKTsKIH0KQEAgLTU0NCw3ICs1NDQsNyBAQCB2b2lk
IEFzc2VtYmx5SGVscGVyczo6ZW1pdFJhbmRvbVRodW5rKEpTCiAKIHZvaWQgQXNzZW1ibHlIZWxw
ZXJzOjplbWl0UmFuZG9tVGh1bmsoR1BSUmVnIHNjcmF0Y2gwLCBHUFJSZWcgc2NyYXRjaDEsIEdQ
UlJlZyBzY3JhdGNoMiwgR1BSUmVnIHNjcmF0Y2gzLCBGUFJSZWcgcmVzdWx0KQogewotICAgIGVt
aXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyUHRyKEpTU3RhY2s6OkNhbGxlZSwgc2NyYXRjaDMpOwor
ICAgIGVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyUHRyKENhbGxGcmFtZUhlYWRlcjo6Q2FsbGVl
LCBzY3JhdGNoMyk7CiAgICAgZW1pdExvYWRTdHJ1Y3R1cmUoc2NyYXRjaDMsIHNjcmF0Y2gzLCBz
Y3JhdGNoMCk7CiAgICAgbG9hZFB0cihBZGRyZXNzKHNjcmF0Y2gzLCBTdHJ1Y3R1cmU6Omdsb2Jh
bE9iamVjdE9mZnNldCgpKSwgc2NyYXRjaDMpOwogICAgIC8vIE5vdywgc2NyYXRjaDMgaG9sZHMg
SlNHbG9iYWxPYmplY3QqLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJs
eUhlbHBlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2Vt
Ymx5SGVscGVycy5oCShyZXZpc2lvbiAyMDI5NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0Fzc2VtYmx5SGVscGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC01NjAsMjYgKzU2MCwyNiBA
QCBwdWJsaWM6CiAgICAgfQogI2VuZGlmCiAKLSAgICB2b2lkIGVtaXRHZXRGcm9tQ2FsbEZyYW1l
SGVhZGVyUHRyKEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlckVudHJ5IGVudHJ5LCBHUFJSZWcgdG8s
IEdQUlJlZyBmcm9tID0gR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpCisgICAgdm9pZCBlbWl0
R2V0RnJvbUNhbGxGcmFtZUhlYWRlclB0cihDYWxsRnJhbWVIZWFkZXI6OkVudHJ5IGVudHJ5LCBH
UFJSZWcgdG8sIEdQUlJlZyBmcm9tID0gR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpCiAgICAg
ewogICAgICAgICBsb2FkUHRyKEFkZHJlc3MoZnJvbSwgZW50cnkgKiBzaXplb2YoUmVnaXN0ZXIp
KSwgdG8pOwogICAgIH0KLSAgICB2b2lkIGVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyMzIoSlNT
dGFjazo6Q2FsbEZyYW1lSGVhZGVyRW50cnkgZW50cnksIEdQUlJlZyB0bywgR1BSUmVnIGZyb20g
PSBHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlcikKKyAgICB2b2lkIGVtaXRHZXRGcm9tQ2FsbEZy
YW1lSGVhZGVyMzIoQ2FsbEZyYW1lSGVhZGVyOjpFbnRyeSBlbnRyeSwgR1BSUmVnIHRvLCBHUFJS
ZWcgZnJvbSA9IEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyKQogICAgIHsKICAgICAgICAgbG9h
ZDMyKEFkZHJlc3MoZnJvbSwgZW50cnkgKiBzaXplb2YoUmVnaXN0ZXIpKSwgdG8pOwogICAgIH0K
ICNpZiBVU0UoSlNWQUxVRTY0KQotICAgIHZvaWQgZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXI2
NChKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJFbnRyeSBlbnRyeSwgR1BSUmVnIHRvLCBHUFJSZWcg
ZnJvbSA9IEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyKQorICAgIHZvaWQgZW1pdEdldEZyb21D
YWxsRnJhbWVIZWFkZXI2NChDYWxsRnJhbWVIZWFkZXI6OkVudHJ5IGVudHJ5LCBHUFJSZWcgdG8s
IEdQUlJlZyBmcm9tID0gR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpCiAgICAgewogICAgICAg
ICBsb2FkNjQoQWRkcmVzcyhmcm9tLCBlbnRyeSAqIHNpemVvZihSZWdpc3RlcikpLCB0byk7CiAg
ICAgfQogI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCi0gICAgdm9pZCBlbWl0UHV0VG9DYWxsRnJh
bWVIZWFkZXIoR1BSUmVnIGZyb20sIEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlckVudHJ5IGVudHJ5
KQorICAgIHZvaWQgZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVyKEdQUlJlZyBmcm9tLCBDYWxsRnJh
bWVIZWFkZXI6OkVudHJ5IGVudHJ5KQogICAgIHsKICAgICAgICAgc3RvcmVQdHIoZnJvbSwgQWRk
cmVzcyhHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgZW50cnkgKiBzaXplb2YoUmVnaXN0ZXIp
KSk7CiAgICAgfQogCi0gICAgdm9pZCBlbWl0UHV0VG9DYWxsRnJhbWVIZWFkZXIodm9pZCogdmFs
dWUsIEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlckVudHJ5IGVudHJ5KQorICAgIHZvaWQgZW1pdFB1
dFRvQ2FsbEZyYW1lSGVhZGVyKHZvaWQqIHZhbHVlLCBDYWxsRnJhbWVIZWFkZXI6OkVudHJ5IGVu
dHJ5KQogICAgIHsKICAgICAgICAgc3RvcmVQdHIoVHJ1c3RlZEltbVB0cih2YWx1ZSksIEFkZHJl
c3MoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIGVudHJ5ICogc2l6ZW9mKFJlZ2lzdGVyKSkp
OwogICAgIH0KQEAgLTYwOSwxNyArNjA5LDE3IEBAIHB1YmxpYzoKICAgICAvLyBjYWxsZXIncyBm
cmFtZSBwb2ludGVyLiBPbiBzb21lIHBsYXRmb3JtcywgdGhlIGNhbGxlZSBpcyByZXNwb25zaWJs
ZSBmb3IgcHVzaGluZyB0aGUKICAgICAvLyAibGluayByZWdpc3RlciIgY29udGFpbmluZyB0aGUg
cmV0dXJuIGFkZHJlc3MgaW4gdGhlIGZ1bmN0aW9uIHByb2xvZ3VlLgogI2lmIFVTRShKU1ZBTFVF
NjQpCi0gICAgdm9pZCBlbWl0UHV0VG9DYWxsRnJhbWVIZWFkZXJCZWZvcmVQcm9sb2d1ZShHUFJS
ZWcgZnJvbSwgSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyRW50cnkgZW50cnkpCisgICAgdm9pZCBl
bWl0UHV0VG9DYWxsRnJhbWVIZWFkZXJCZWZvcmVQcm9sb2d1ZShHUFJSZWcgZnJvbSwgQ2FsbEZy
YW1lSGVhZGVyOjpFbnRyeSBlbnRyeSkKICAgICB7CiAgICAgICAgIHN0b3JlUHRyKGZyb20sIEFk
ZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0ZXIsIGVudHJ5ICogc3RhdGljX2Nhc3Q8cHRyZGlmZl90
PihzaXplb2YoUmVnaXN0ZXIpKSAtIHByb2xvZ3VlU3RhY2tQb2ludGVyRGVsdGEoKSkpOwogICAg
IH0KICNlbHNlCi0gICAgdm9pZCBlbWl0UHV0UGF5bG9hZFRvQ2FsbEZyYW1lSGVhZGVyQmVmb3Jl
UHJvbG9ndWUoR1BSUmVnIGZyb20sIEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlckVudHJ5IGVudHJ5
KQorICAgIHZvaWQgZW1pdFB1dFBheWxvYWRUb0NhbGxGcmFtZUhlYWRlckJlZm9yZVByb2xvZ3Vl
KEdQUlJlZyBmcm9tLCBDYWxsRnJhbWVIZWFkZXI6OkVudHJ5IGVudHJ5KQogICAgIHsKICAgICAg
ICAgc3RvcmVQdHIoZnJvbSwgQWRkcmVzcyhzdGFja1BvaW50ZXJSZWdpc3RlciwgZW50cnkgKiBz
dGF0aWNfY2FzdDxwdHJkaWZmX3Q+KHNpemVvZihSZWdpc3RlcikpIC0gcHJvbG9ndWVTdGFja1Bv
aW50ZXJEZWx0YSgpICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFz
Qml0cy5wYXlsb2FkKSkpOwogICAgIH0KIAotICAgIHZvaWQgZW1pdFB1dFRhZ1RvQ2FsbEZyYW1l
SGVhZGVyQmVmb3JlUHJvbG9ndWUoVHJ1c3RlZEltbTMyIHRhZywgSlNTdGFjazo6Q2FsbEZyYW1l
SGVhZGVyRW50cnkgZW50cnkpCisgICAgdm9pZCBlbWl0UHV0VGFnVG9DYWxsRnJhbWVIZWFkZXJC
ZWZvcmVQcm9sb2d1ZShUcnVzdGVkSW1tMzIgdGFnLCBDYWxsRnJhbWVIZWFkZXI6OkVudHJ5IGVu
dHJ5KQogICAgIHsKICAgICAgICAgc3RvcmVQdHIodGFnLCBBZGRyZXNzKHN0YWNrUG9pbnRlclJl
Z2lzdGVyLCBlbnRyeSAqIHN0YXRpY19jYXN0PHB0cmRpZmZfdD4oc2l6ZW9mKFJlZ2lzdGVyKSkg
LSBwcm9sb2d1ZVN0YWNrUG9pbnRlckRlbHRhKCkgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZh
bHVlRGVzY3JpcHRvciwgYXNCaXRzLnRhZykpKTsKICAgICB9CkBAIC05MzMsOCArOTMzLDggQEAg
cHVibGljOgogICAgIC8vIEFjY2VzcyB0byBvdXIgZml4ZWQgY2FsbGVlIENhbGxGcmFtZS4KICAg
ICBzdGF0aWMgQWRkcmVzcyBjYWxsZWVGcmFtZVNsb3QoaW50IHNsb3QpCiAgICAgewotICAgICAg
ICBBU1NFUlQoc2xvdCA+PSBKU1N0YWNrOjpDYWxsZXJGcmFtZUFuZFBDU2l6ZSk7Ci0gICAgICAg
IHJldHVybiBBZGRyZXNzKHN0YWNrUG9pbnRlclJlZ2lzdGVyLCBzaXplb2YoUmVnaXN0ZXIpICog
KHNsb3QgLSBKU1N0YWNrOjpDYWxsZXJGcmFtZUFuZFBDU2l6ZSkpOworICAgICAgICBBU1NFUlQo
c2xvdCA+PSBDYWxsRnJhbWVIZWFkZXI6OkNhbGxlckZyYW1lQW5kUENTaXplKTsKKyAgICAgICAg
cmV0dXJuIEFkZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0ZXIsIHNpemVvZihSZWdpc3RlcikgKiAo
c2xvdCAtIENhbGxGcmFtZUhlYWRlcjo6Q2FsbGVyRnJhbWVBbmRQQ1NpemUpKTsKICAgICB9CiAK
ICAgICAvLyBBY2Nlc3MgdG8gb3VyIGZpeGVkIGNhbGxlZSBDYWxsRnJhbWUuCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuY3BwCShyZXZpc2lvbiAyMDI5NTQp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM3LDcgKzM3LDcgQEAgdm9pZCBDQ2FsbEhlbHBlcnM6OmxvZ1NoYWRvd0NoaWNr
ZW5Qcm9sbwogICAgIHN0b3JlUHRyKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBBZGRyZXNz
KHNoYWRvd1BhY2tldCwgT0JKRUNUX09GRlNFVE9GKFNoYWRvd0NoaWNrZW46OlBhY2tldCwgZnJh
bWUpKSk7CiAgICAgbG9hZFB0cihBZGRyZXNzKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBP
QkpFQ1RfT0ZGU0VUT0YoQ2FsbGVyRnJhbWVBbmRQQywgY2FsbGVyRnJhbWUpKSwgc2NyYXRjaDEp
OwogICAgIHN0b3JlUHRyKHNjcmF0Y2gxLCBBZGRyZXNzKHNoYWRvd1BhY2tldCwgT0JKRUNUX09G
RlNFVE9GKFNoYWRvd0NoaWNrZW46OlBhY2tldCwgY2FsbGVyRnJhbWUpKSk7Ci0gICAgbG9hZFB0
cihhZGRyZXNzRm9yKEpTU3RhY2s6OkNhbGxlZSksIHNjcmF0Y2gxKTsKKyAgICBsb2FkUHRyKGFk
ZHJlc3NGb3IoQ2FsbEZyYW1lSGVhZGVyOjpDYWxsZWUpLCBzY3JhdGNoMSk7CiAgICAgc3RvcmVQ
dHIoc2NyYXRjaDEsIEFkZHJlc3Moc2hhZG93UGFja2V0LCBPQkpFQ1RfT0ZGU0VUT0YoU2hhZG93
Q2hpY2tlbjo6UGFja2V0LCBjYWxsZWUpKSk7CiAgICAgc3RvcmVQdHIoc2NvcGUsIEFkZHJlc3Mo
c2hhZG93UGFja2V0LCBPQkpFQ1RfT0ZGU0VUT0YoU2hhZG93Q2hpY2tlbjo6UGFja2V0LCBzY29w
ZSkpKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaAko
cmV2aXNpb24gMjAyOTU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBl
cnMuaAkod29ya2luZyBjb3B5KQpAQCAtMjI3OCwxMyArMjI3OCwxMyBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICBHUFJSZWcgb2xkRnJhbWVTaXplR1BSID0gdGVtcDI7CiAgICAgICAgICAgICB7CiAg
ICAgICAgICAgICAgICAgR1BSUmVnIGFyZ0NvdW50R1BSID0gb2xkRnJhbWVTaXplR1BSOwotICAg
ICAgICAgICAgICAgIGxvYWQzMihBZGRyZXNzKGZyYW1lUG9pbnRlclJlZ2lzdGVyLCBKU1N0YWNr
OjpBcmd1bWVudENvdW50ICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSArIFBh
eWxvYWRPZmZzZXQpLCBhcmdDb3VudEdQUik7CisgICAgICAgICAgICAgICAgbG9hZDMyKEFkZHJl
c3MoZnJhbWVQb2ludGVyUmVnaXN0ZXIsIENhbGxGcmFtZUhlYWRlcjo6QXJndW1lbnRDb3VudCAq
IHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkgKyBQYXlsb2FkT2Zmc2V0KSwgYXJn
Q291bnRHUFIpOwogCiAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICBHUFJS
ZWcgbnVtUGFyYW1ldGVyc0dQUiA9IHRlbXAxOwogICAgICAgICAgICAgICAgICAgICB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICBHUFJSZWcgY29kZUJsb2NrR1BSID0gbnVtUGFyYW1ldGVyc0dQ
UjsKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRQdHIoQWRkcmVzcyhmcmFtZVBvaW50ZXJS
ZWdpc3RlciwgSlNTdGFjazo6Q29kZUJsb2NrICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVn
aXN0ZXIpKSksIGNvZGVCbG9ja0dQUik7CisgICAgICAgICAgICAgICAgICAgICAgICBsb2FkUHRy
KEFkZHJlc3MoZnJhbWVQb2ludGVyUmVnaXN0ZXIsIENhbGxGcmFtZUhlYWRlcjo6Q29kZUJsb2Nr
ICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSksIGNvZGVCbG9ja0dQUik7CiAg
ICAgICAgICAgICAgICAgICAgICAgICBsb2FkMzIoQWRkcmVzcyhjb2RlQmxvY2tHUFIsIENvZGVC
bG9jazo6b2Zmc2V0T2ZOdW1QYXJhbWV0ZXJzKCkpLCBudW1QYXJhbWV0ZXJzR1BSKTsKICAgICAg
ICAgICAgICAgICAgICAgfQogCkBAIC0yMjk0LDcgKzIyOTQsNyBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICAgICAgICAgIGFyZ3VtZW50Q291bnRXYXNOb3RGaXhlZFVwLmxpbmsodGhpcyk7CiAgICAg
ICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgYWRkMzIoVHJ1c3RlZEltbTMyKHN0YWNr
QWxpZ25tZW50UmVnaXN0ZXJzKCkgKyBKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJTaXplIC0gMSks
IGFyZ0NvdW50R1BSLCBvbGRGcmFtZVNpemVHUFIpOworICAgICAgICAgICAgICAgIGFkZDMyKFRy
dXN0ZWRJbW0zMihzdGFja0FsaWdubWVudFJlZ2lzdGVycygpICsgQ2FsbEZyYW1lSGVhZGVyOjpT
aXplIC0gMSksIGFyZ0NvdW50R1BSLCBvbGRGcmFtZVNpemVHUFIpOwogICAgICAgICAgICAgICAg
IGFuZDMyKFRydXN0ZWRJbW0zMigtc3RhY2tBbGlnbm1lbnRSZWdpc3RlcnMoKSksIG9sZEZyYW1l
U2l6ZUdQUik7CiAgICAgICAgICAgICAgICAgLy8gV2UgYXNzdW1lIDwgMl4yOCBhcmd1bWVudHMK
ICAgICAgICAgICAgICAgICBtdWwzMihUcnVzdGVkSW1tMzIoc2l6ZW9mKFJlZ2lzdGVyKSksIG9s
ZEZyYW1lU2l6ZUdQUiwgb2xkRnJhbWVTaXplR1BSKTsKQEAgLTIzMDcsOSArMjMwNyw5IEBAIHB1
YmxpYzoKICAgICAgICAgICAgIC8vIFRoZSBuZXcgZnJhbWUgc2l6ZSBpcyBqdXN0IHRoZSBudW1i
ZXIgb2YgYXJndW1lbnRzIHBsdXMgdGhlCiAgICAgICAgICAgICAvLyBmcmFtZSBoZWFkZXIgc2l6
ZSwgYWxpZ25lZAogICAgICAgICAgICAgQVNTRVJUKG5ld0ZyYW1lU2l6ZUdQUiAhPSBuZXdGcmFt
ZVBvaW50ZXIpOwotICAgICAgICAgICAgbG9hZDMyKEFkZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0
ZXIsIEpTU3RhY2s6OkFyZ3VtZW50Q291bnQgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdp
c3RlcikpICsgUGF5bG9hZE9mZnNldCAtIHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSksCisgICAg
ICAgICAgICBsb2FkMzIoQWRkcmVzcyhzdGFja1BvaW50ZXJSZWdpc3RlciwgQ2FsbEZyYW1lSGVh
ZGVyOjpBcmd1bWVudENvdW50ICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSAr
IFBheWxvYWRPZmZzZXQgLSBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykpLAogICAgICAgICAgICAg
ICAgIG5ld0ZyYW1lU2l6ZUdQUik7Ci0gICAgICAgICAgICBhZGQzMihUcnVzdGVkSW1tMzIoc3Rh
Y2tBbGlnbm1lbnRSZWdpc3RlcnMoKSArIEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlclNpemUgLSAx
KSwgbmV3RnJhbWVTaXplR1BSKTsKKyAgICAgICAgICAgIGFkZDMyKFRydXN0ZWRJbW0zMihzdGFj
a0FsaWdubWVudFJlZ2lzdGVycygpICsgQ2FsbEZyYW1lSGVhZGVyOjpTaXplIC0gMSksIG5ld0Zy
YW1lU2l6ZUdQUik7CiAgICAgICAgICAgICBhbmQzMihUcnVzdGVkSW1tMzIoLXN0YWNrQWxpZ25t
ZW50UmVnaXN0ZXJzKCkpLCBuZXdGcmFtZVNpemVHUFIpOwogICAgICAgICAgICAgLy8gV2UgYXNz
dW1lIDwgMl4yOCBhcmd1bWVudHMKICAgICAgICAgICAgIG11bDMyKFRydXN0ZWRJbW0zMihzaXpl
b2YoUmVnaXN0ZXIpKSwgbmV3RnJhbWVTaXplR1BSLCBuZXdGcmFtZVNpemVHUFIpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DYWxsRnJhbWVTaHVmZmxlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DYWxsRnJhbWVTaHVmZmxlci5jcHAJKHJl
dmlzaW9uIDIwMjk1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ2FsbEZyYW1lU2h1
ZmZsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiwxMSArMzYsMTEgQEAgbmFtZXNwYWNlIEpT
QyB7CiAKIENhbGxGcmFtZVNodWZmbGVyOjpDYWxsRnJhbWVTaHVmZmxlcihDQ2FsbEhlbHBlcnMm
IGppdCwgY29uc3QgQ2FsbEZyYW1lU2h1ZmZsZURhdGEmIGRhdGEpCiAgICAgOiBtX2ppdChqaXQp
Ci0gICAgLCBtX29sZEZyYW1lKGRhdGEubnVtTG9jYWxzICsgSlNTdGFjazo6Q2FsbGVyRnJhbWVB
bmRQQ1NpemUsIG51bGxwdHIpCi0gICAgLCBtX25ld0ZyYW1lKGRhdGEuYXJncy5zaXplKCkgKyBK
U1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJTaXplLCBudWxscHRyKQotICAgICwgbV9hbGlnbmVkT2xk
RnJhbWVTaXplKEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlclNpemUKKyAgICAsIG1fb2xkRnJhbWUo
ZGF0YS5udW1Mb2NhbHMgKyBDYWxsRnJhbWVIZWFkZXI6OkNhbGxlckZyYW1lQW5kUENTaXplLCBu
dWxscHRyKQorICAgICwgbV9uZXdGcmFtZShkYXRhLmFyZ3Muc2l6ZSgpICsgQ2FsbEZyYW1lSGVh
ZGVyOjpTaXplLCBudWxscHRyKQorICAgICwgbV9hbGlnbmVkT2xkRnJhbWVTaXplKENhbGxGcmFt
ZUhlYWRlcjo6U2l6ZQogICAgICAgICArIHJvdW5kQXJndW1lbnRDb3VudFRvQWxpZ25GcmFtZShq
aXQuY29kZUJsb2NrKCktPm51bVBhcmFtZXRlcnMoKSkpCi0gICAgLCBtX2FsaWduZWROZXdGcmFt
ZVNpemUoSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyU2l6ZQorICAgICwgbV9hbGlnbmVkTmV3RnJh
bWVTaXplKENhbGxGcmFtZUhlYWRlcjo6U2l6ZQogICAgICAgICArIHJvdW5kQXJndW1lbnRDb3Vu
dFRvQWxpZ25GcmFtZShkYXRhLmFyZ3Muc2l6ZSgpKSkKICAgICAsIG1fZnJhbWVEZWx0YShtX2Fs
aWduZWROZXdGcmFtZVNpemUgLSBtX2FsaWduZWRPbGRGcmFtZVNpemUpCiAgICAgLCBtX2xvY2tl
ZFJlZ2lzdGVycyhSZWdpc3RlclNldDo6YWxsUmVnaXN0ZXJzKCkpCkBAIC01NCw3ICs1NCw3IEBA
IENhbGxGcmFtZVNodWZmbGVyOjpDYWxsRnJhbWVTaHVmZmxlcihDQ2EKICAgICBtX2xvY2tlZFJl
Z2lzdGVycy5leGNsdWRlKFJlZ2lzdGVyU2V0Ojp2bUNhbGxlZVNhdmVSZWdpc3RlcnMoKSk7CiAK
ICAgICBBU1NFUlQoIWRhdGEuY2FsbGVlLmlzSW5KU1N0YWNrKCkgfHwgZGF0YS5jYWxsZWUudmly
dHVhbFJlZ2lzdGVyKCkuaXNMb2NhbCgpKTsKLSAgICBhZGROZXcoVmlydHVhbFJlZ2lzdGVyKEpT
U3RhY2s6OkNhbGxlZSksIGRhdGEuY2FsbGVlKTsKKyAgICBhZGROZXcoVmlydHVhbFJlZ2lzdGVy
KENhbGxGcmFtZUhlYWRlcjo6Q2FsbGVlKSwgZGF0YS5jYWxsZWUpOwogCiAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBkYXRhLmFyZ3Muc2l6ZSgpOyArK2kpIHsKICAgICAgICAgQVNTRVJUKCFk
YXRhLmFyZ3NbaV0uaXNJbkpTU3RhY2soKSB8fCBkYXRhLmFyZ3NbaV0udmlydHVhbFJlZ2lzdGVy
KCkuaXNMb2NhbCgpKTsKQEAgLTE0NSw3ICsxNDUsNyBAQCB2b2lkIENhbGxGcmFtZVNodWZmbGVy
OjpkdW1wKFByaW50U3RyZWFtCiAgICAgICAgICAgICAgICAgICAgIG91dC5wcmludGYoIiAlYyU4
cyA8LSAlMThzICVjICIsIGQsIHN0ci5kYXRhKCksCiAgICAgICAgICAgICAgICAgICAgICAgICBy
ZWNvdmVyeVN0ci5kYXRhKCksIGQpOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0g
ZWxzZSBpZiAobmV3UmVnID09IFZpcnR1YWxSZWdpc3RlciB7IEpTU3RhY2s6OkFyZ3VtZW50Q291
bnQgfSkKKyAgICAgICAgICAgIH0gZWxzZSBpZiAobmV3UmVnID09IFZpcnR1YWxSZWdpc3RlciB7
IENhbGxGcmFtZUhlYWRlcjo6QXJndW1lbnRDb3VudCB9KQogICAgICAgICAgICAgICAgIG91dC5w
cmludGYoIiAlYyU4cyA8LSAlMTh6dSAlYyAiLCBkLCBzdHIuZGF0YSgpLCBhcmdDb3VudCgpLCBk
KTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBvdXQucHJpbnRmKCIgJWMlMzBz
ICVjICIsIGQsICIiLCBkKTsKQEAgLTMyMyw3ICszMjMsNyBAQCB2b2lkIENhbGxGcmFtZVNodWZm
bGVyOjpleHRlbmRGcmFtZUlmTmVlCiAgICAgICAgIG1faml0LnN1YlB0cihNYWNyb0Fzc2VtYmxl
cjo6VHJ1c3RlZEltbTMyKGRlbHRhICogc2l6ZW9mKFJlZ2lzdGVyKSksIE1hY3JvQXNzZW1ibGVy
OjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7CiAKICAgICAgICAgaWYgKGlzU2xvd1BhdGgoKSkKLSAg
ICAgICAgICAgIG1fZnJhbWVEZWx0YSA9IG51bUxvY2FscygpICsgSlNTdGFjazo6Q2FsbGVyRnJh
bWVBbmRQQ1NpemU7CisgICAgICAgICAgICBtX2ZyYW1lRGVsdGEgPSBudW1Mb2NhbHMoKSArIENh
bGxGcmFtZUhlYWRlcjo6Q2FsbGVyRnJhbWVBbmRQQ1NpemU7CiAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgIG1fb2xkRnJhbWVPZmZzZXQgPSBudW1Mb2NhbHMoKTsKIApAQCAtMzM5LDkgKzMzOSw5
IEBAIHZvaWQgQ2FsbEZyYW1lU2h1ZmZsZXI6OnByZXBhcmVGb3JTbG93UGEKICAgICBBU1NFUlQo
aXNVbmRlY2lkZWQoKSk7CiAgICAgZW1pdERlbHRhQ2hlY2soKTsKIAotICAgIG1fZnJhbWVEZWx0
YSA9IG51bUxvY2FscygpICsgSlNTdGFjazo6Q2FsbGVyRnJhbWVBbmRQQ1NpemU7CisgICAgbV9m
cmFtZURlbHRhID0gbnVtTG9jYWxzKCkgKyBDYWxsRnJhbWVIZWFkZXI6OkNhbGxlckZyYW1lQW5k
UENTaXplOwogICAgIG1fbmV3RnJhbWVCYXNlID0gTWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRl
clJlZ2lzdGVyOwotICAgIG1fbmV3RnJhbWVPZmZzZXQgPSAtSlNTdGFjazo6Q2FsbGVyRnJhbWVB
bmRQQ1NpemU7CisgICAgbV9uZXdGcmFtZU9mZnNldCA9IC1DYWxsRnJhbWVIZWFkZXI6OkNhbGxl
ckZyYW1lQW5kUENTaXplOwogCiAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2coIlxu
XG5QcmVwYXJpbmcgZnJhbWUgZm9yIHNsb3cgcGF0aCBjYWxsOlxuIik7CkBAIC00MjMsMTEgKzQy
MywxMSBAQCB2b2lkIENhbGxGcmFtZVNodWZmbGVyOjpwcmVwYXJlRm9yVGFpbENhCiAgICAgLy8g
b2xkIGZyYW1lICh0YWtpbmcgaW50byBhY2NvdW50IGFuIGFyZ3VtZW50IGNvdW50IGhpZ2hlciB0
aGFuCiAgICAgLy8gdGhlIG51bWJlciBvZiBwYXJhbWV0ZXJzKSwgdGhlbiBzdWJzdHJhY3Rpbmcg
dG8gaXQgdGhlIGFsaWduZWQKICAgICAvLyBuZXcgZnJhbWUgc2l6ZSAoYWRqdXN0ZWQpLgotICAg
IG1faml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhHUFJJbmZvOjpjYWxsRnJhbWVS
ZWdpc3RlciwgSlNTdGFjazo6QXJndW1lbnRDb3VudCAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9m
KFJlZ2lzdGVyKSkgKyBQYXlsb2FkT2Zmc2V0KSwgbV9uZXdGcmFtZUJhc2UpOworICAgIG1faml0
LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rl
ciwgQ2FsbEZyYW1lSGVhZGVyOjpBcmd1bWVudENvdW50ICogc3RhdGljX2Nhc3Q8aW50PihzaXpl
b2YoUmVnaXN0ZXIpKSArIFBheWxvYWRPZmZzZXQpLCBtX25ld0ZyYW1lQmFzZSk7CiAgICAgTWFj
cm9Bc3NlbWJsZXI6Okp1bXAgYXJndW1lbnRDb3VudE9LID0KICAgICAgICAgbV9qaXQuYnJhbmNo
MzIoTWFjcm9Bc3NlbWJsZXI6OkJlbG93T3JFcXVhbCwgbV9uZXdGcmFtZUJhc2UsCiAgICAgICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKG1faml0LmNvZGVCbG9jaygpLT5udW1Q
YXJhbWV0ZXJzKCkpKTsKLSAgICBtX2ppdC5hZGQzMihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZElt
bTMyKHN0YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCkgLSAxICsgSlNTdGFjazo6Q2FsbEZyYW1lSGVh
ZGVyU2l6ZSksIG1fbmV3RnJhbWVCYXNlKTsKKyAgICBtX2ppdC5hZGQzMihNYWNyb0Fzc2VtYmxl
cjo6VHJ1c3RlZEltbTMyKHN0YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCkgLSAxICsgQ2FsbEZyYW1l
SGVhZGVyOjpTaXplKSwgbV9uZXdGcmFtZUJhc2UpOwogICAgIG1faml0LmFuZDMyKE1hY3JvQXNz
ZW1ibGVyOjpUcnVzdGVkSW1tMzIoLXN0YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCkpLCBtX25ld0Zy
YW1lQmFzZSk7CiAgICAgbV9qaXQubXVsMzIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihz
aXplb2YoUmVnaXN0ZXIpKSwgbV9uZXdGcmFtZUJhc2UsIG1fbmV3RnJhbWVCYXNlKTsKICAgICBN
YWNyb0Fzc2VtYmxlcjo6SnVtcCBkb25lID0gbV9qaXQuanVtcCgpOwpAQCAtNzQzLDExICs3NDMs
MTEgQEAgdm9pZCBDYWxsRnJhbWVTaHVmZmxlcjo6cHJlcGFyZUFueSgpCiAgICAgLy8gV2UgbmVl
ZCB0byBoYW5kbGUgNCkgZmlyc3QgYmVjYXVzZSBpdCBpbXBsaWVzIHJlbGVhc2luZwogICAgIC8v
IG1fbmV3RnJhbWVCYXNlLCB3aGljaCBjb3VsZCBiZSBhIHdhbnRlZCByZWdpc3Rlci4KICAgICBp
ZiAodmVyYm9zZSkKLSAgICAgICAgZGF0YUxvZygiICAgKiBTdG9yaW5nIHRoZSBhcmd1bWVudCBj
b3VudCBpbnRvICIsIFZpcnR1YWxSZWdpc3RlciB7IEpTU3RhY2s6OkFyZ3VtZW50Q291bnQgfSwg
IlxuIik7CisgICAgICAgIGRhdGFMb2coIiAgICogU3RvcmluZyB0aGUgYXJndW1lbnQgY291bnQg
aW50byAiLCBWaXJ0dWFsUmVnaXN0ZXIgeyBDYWxsRnJhbWVIZWFkZXI6OkFyZ3VtZW50Q291bnQg
fSwgIlxuIik7CiAgICAgbV9qaXQuc3RvcmUzMihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMy
KDApLAotICAgICAgICBhZGRyZXNzRm9yTmV3KFZpcnR1YWxSZWdpc3RlciB7IEpTU3RhY2s6OkFy
Z3VtZW50Q291bnQgfSkud2l0aE9mZnNldChUYWdPZmZzZXQpKTsKKyAgICAgICAgYWRkcmVzc0Zv
ck5ldyhWaXJ0dWFsUmVnaXN0ZXIgeyBDYWxsRnJhbWVIZWFkZXI6OkFyZ3VtZW50Q291bnQgfSku
d2l0aE9mZnNldChUYWdPZmZzZXQpKTsKICAgICBtX2ppdC5zdG9yZTMyKE1hY3JvQXNzZW1ibGVy
OjpUcnVzdGVkSW1tMzIoYXJnQ291bnQoKSksCi0gICAgICAgIGFkZHJlc3NGb3JOZXcoVmlydHVh
bFJlZ2lzdGVyIHsgSlNTdGFjazo6QXJndW1lbnRDb3VudCB9KS53aXRoT2Zmc2V0KFBheWxvYWRP
ZmZzZXQpKTsKKyAgICAgICAgYWRkcmVzc0Zvck5ldyhWaXJ0dWFsUmVnaXN0ZXIgeyBDYWxsRnJh
bWVIZWFkZXI6OkFyZ3VtZW50Q291bnQgfSkud2l0aE9mZnNldChQYXlsb2FkT2Zmc2V0KSk7CiAK
ICAgICBpZiAoIWlzU2xvd1BhdGgoKSkgewogICAgICAgICBBU1NFUlQobV9uZXdGcmFtZUJhc2Ug
IT0gTWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvQ2FsbEZyYW1lU2h1ZmZsZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0NhbGxGcmFtZVNodWZmbGVyLmgJKHJldmlzaW9uIDIwMjk1
NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ2FsbEZyYW1lU2h1ZmZsZXIuaAkod29y
a2luZyBjb3B5KQpAQCAtMTAzLDcgKzEwMyw3IEBAIHB1YmxpYzoKIAogICAgICAgICBDYWxsRnJh
bWVTaHVmZmxlRGF0YSBkYXRhOwogICAgICAgICBkYXRhLm51bUxvY2FscyA9IG51bUxvY2Fscygp
OwotICAgICAgICBkYXRhLmNhbGxlZSA9IGdldE5ldyhWaXJ0dWFsUmVnaXN0ZXIgeyBKU1N0YWNr
OjpDYWxsZWUgfSktPnJlY292ZXJ5KCk7CisgICAgICAgIGRhdGEuY2FsbGVlID0gZ2V0TmV3KFZp
cnR1YWxSZWdpc3RlciB7IENhbGxGcmFtZUhlYWRlcjo6Q2FsbGVlIH0pLT5yZWNvdmVyeSgpOwog
ICAgICAgICBkYXRhLmFyZ3MucmVzaXplKGFyZ0NvdW50KCkpOwogICAgICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IGFyZ0NvdW50KCk7ICsraSkKICAgICAgICAgICAgIGRhdGEuYXJnc1tpXSA9
IGdldE5ldyh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChpKSktPnJlY292ZXJ5KCk7CkBAIC0x
MjksNyArMTI5LDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgQVNTRVJUKGlzVW5kZWNpZGVk
KCkpOwogICAgICAgICBBU1NFUlQoIWdldE5ldyhqc1ZhbHVlUmVncykpOwotICAgICAgICBDYWNo
ZWRSZWNvdmVyeSogY2FjaGVkUmVjb3ZlcnkgeyBnZXROZXcoVmlydHVhbFJlZ2lzdGVyKEpTU3Rh
Y2s6OkNhbGxlZSkpIH07CisgICAgICAgIENhY2hlZFJlY292ZXJ5KiBjYWNoZWRSZWNvdmVyeSB7
IGdldE5ldyhWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lSGVhZGVyOjpDYWxsZWUpKSB9OwogICAg
ICAgICBBU1NFUlQoY2FjaGVkUmVjb3ZlcnkpOwogICAgICAgICBhZGROZXcoanNWYWx1ZVJlZ3Ms
IGNhY2hlZFJlY292ZXJ5LT5yZWNvdmVyeSgpKTsKICAgICB9CkBAIC0xNDIsNyArMTQyLDcgQEAg
cHVibGljOgogICAgIHZvaWQgYXNzdW1lQ2FsbGVlSXNDZWxsKCkKICAgICB7CiAjaWYgVVNFKEpT
VkFMVUUzMl82NCkKLSAgICAgICAgQ2FjaGVkUmVjb3ZlcnkmIGNhbGxlZUNhY2hlZFJlY292ZXJ5
ID0gKmdldE5ldyhWaXJ0dWFsUmVnaXN0ZXIoSlNTdGFjazo6Q2FsbGVlKSk7CisgICAgICAgIENh
Y2hlZFJlY292ZXJ5JiBjYWxsZWVDYWNoZWRSZWNvdmVyeSA9ICpnZXROZXcoVmlydHVhbFJlZ2lz
dGVyKENhbGxGcmFtZUhlYWRlcjo6Q2FsbGVlKSk7CiAgICAgICAgIHN3aXRjaCAoY2FsbGVlQ2Fj
aGVkUmVjb3ZlcnkucmVjb3ZlcnkoKS50ZWNobmlxdWUoKSkgewogICAgICAgICBjYXNlIEluUGFp
cjoKICAgICAgICAgICAgIHVwZGF0ZVJlY292ZXJ5KApAQCAtMjk3LDE3ICsyOTcsMTcgQEAgcHJp
dmF0ZToKIAogICAgIGludCBudW1Mb2NhbHMoKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJu
IG1fb2xkRnJhbWUuc2l6ZSgpIC0gSlNTdGFjazo6Q2FsbGVyRnJhbWVBbmRQQ1NpemU7CisgICAg
ICAgIHJldHVybiBtX29sZEZyYW1lLnNpemUoKSAtIENhbGxGcmFtZUhlYWRlcjo6Q2FsbGVyRnJh
bWVBbmRQQ1NpemU7CiAgICAgfQogCiAgICAgQ2FjaGVkUmVjb3ZlcnkqIGdldE9sZChWaXJ0dWFs
UmVnaXN0ZXIgcmVnKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIG1fb2xkRnJhbWVbSlNT
dGFjazo6Q2FsbGVyRnJhbWVBbmRQQ1NpemUgLSByZWcub2Zmc2V0KCkgLSAxXTsKKyAgICAgICAg
cmV0dXJuIG1fb2xkRnJhbWVbQ2FsbEZyYW1lSGVhZGVyOjpDYWxsZXJGcmFtZUFuZFBDU2l6ZSAt
IHJlZy5vZmZzZXQoKSAtIDFdOwogICAgIH0KIAogICAgIHZvaWQgc2V0T2xkKFZpcnR1YWxSZWdp
c3RlciByZWcsIENhY2hlZFJlY292ZXJ5KiBjYWNoZWRSZWNvdmVyeSkKICAgICB7Ci0gICAgICAg
IG1fb2xkRnJhbWVbSlNTdGFjazo6Q2FsbGVyRnJhbWVBbmRQQ1NpemUgLSByZWcub2Zmc2V0KCkg
LSAxXSA9IGNhY2hlZFJlY292ZXJ5OworICAgICAgICBtX29sZEZyYW1lW0NhbGxGcmFtZUhlYWRl
cjo6Q2FsbGVyRnJhbWVBbmRQQ1NpemUgLSByZWcub2Zmc2V0KCkgLSAxXSA9IGNhY2hlZFJlY292
ZXJ5OwogICAgIH0KIAogICAgIFZpcnR1YWxSZWdpc3RlciBmaXJzdE9sZCgpIGNvbnN0CkBAIC0z
MTcsNyArMzE3LDcgQEAgcHJpdmF0ZToKIAogICAgIFZpcnR1YWxSZWdpc3RlciBsYXN0T2xkKCkg
Y29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBWaXJ0dWFsUmVnaXN0ZXIgeyBKU1N0YWNrOjpD
YWxsZXJGcmFtZUFuZFBDU2l6ZSAtIDEgfTsKKyAgICAgICAgcmV0dXJuIFZpcnR1YWxSZWdpc3Rl
ciB7IENhbGxGcmFtZUhlYWRlcjo6Q2FsbGVyRnJhbWVBbmRQQ1NpemUgLSAxIH07CiAgICAgfQog
CiAgICAgYm9vbCBpc1ZhbGlkT2xkKFZpcnR1YWxSZWdpc3RlciByZWcpIGNvbnN0CkBAIC0zMzks
NyArMzM5LDcgQEAgcHJpdmF0ZToKIAogICAgIHNpemVfdCBhcmdDb3VudCgpIGNvbnN0CiAgICAg
ewotICAgICAgICByZXR1cm4gbV9uZXdGcmFtZS5zaXplKCkgLSBKU1N0YWNrOjpDYWxsRnJhbWVI
ZWFkZXJTaXplOworICAgICAgICByZXR1cm4gbV9uZXdGcmFtZS5zaXplKCkgLSBDYWxsRnJhbWVI
ZWFkZXI6OlNpemU7CiAgICAgfQogCiAgICAgQ2FjaGVkUmVjb3ZlcnkqIGdldE5ldyhWaXJ0dWFs
UmVnaXN0ZXIgbmV3UmVnaXN0ZXIpIGNvbnN0CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQu
Y3BwCShyZXZpc2lvbiAyMDI5NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTU2OSw3ICs1NjksNyBAQCB2b2lkIEpJVDo6Y29tcGlsZVdp
dGhvdXRMaW5raW5nKEpJVENvbXBpCiAgICAgICAgIG5vcCgpOwogCiAgICAgZW1pdEZ1bmN0aW9u
UHJvbG9ndWUoKTsKLSAgICBlbWl0UHV0VG9DYWxsRnJhbWVIZWFkZXIobV9jb2RlQmxvY2ssIEpT
U3RhY2s6OkNvZGVCbG9jayk7CisgICAgZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVyKG1fY29kZUJs
b2NrLCBDYWxsRnJhbWVIZWFkZXI6OkNvZGVCbG9jayk7CiAKICAgICBMYWJlbCBiZWdpbkxhYmVs
KHRoaXMpOwogCkBAIC02MjcsOSArNjI3LDkgQEAgdm9pZCBKSVQ6OmNvbXBpbGVXaXRob3V0TGlu
a2luZyhKSVRDb21waQogICAgICAgICBtX2FyaXR5Q2hlY2sgPSBsYWJlbCgpOwogICAgICAgICBz
dG9yZTgoVHJ1c3RlZEltbTMyKDApLCAmbV9jb2RlQmxvY2stPm1fc2hvdWxkQWx3YXlzQmVJbmxp
bmVkKTsKICAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoKTsKLSAgICAgICAgZW1pdFB1dFRv
Q2FsbEZyYW1lSGVhZGVyKG1fY29kZUJsb2NrLCBKU1N0YWNrOjpDb2RlQmxvY2spOworICAgICAg
ICBlbWl0UHV0VG9DYWxsRnJhbWVIZWFkZXIobV9jb2RlQmxvY2ssIENhbGxGcmFtZUhlYWRlcjo6
Q29kZUJsb2NrKTsKIAotICAgICAgICBsb2FkMzIocGF5bG9hZEZvcihKU1N0YWNrOjpBcmd1bWVu
dENvdW50KSwgcmVnVDEpOworICAgICAgICBsb2FkMzIocGF5bG9hZEZvcihDYWxsRnJhbWVIZWFk
ZXI6OkFyZ3VtZW50Q291bnQpLCByZWdUMSk7CiAgICAgICAgIGJyYW5jaDMyKEFib3ZlT3JFcXVh
bCwgcmVnVDEsIFRydXN0ZWRJbW0zMihtX2NvZGVCbG9jay0+bV9udW1QYXJhbWV0ZXJzKSkubGlu
a1RvKGJlZ2luTGFiZWwsIHRoaXMpOwogCiAgICAgICAgIG1fYnl0ZWNvZGVPZmZzZXQgPSAwOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCShyZXZpc2lvbiAyMDI5NTQpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC03MDYsNyArNzA2LDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdm9pZCBlbWl0SW5pdFJlZ2lzdGVyKGludCBk
c3QpOwogCi0gICAgICAgIHZvaWQgZW1pdFB1dEludFRvQ2FsbEZyYW1lSGVhZGVyKFJlZ2lzdGVy
SUQgZnJvbSwgSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyRW50cnkpOworICAgICAgICB2b2lkIGVt
aXRQdXRJbnRUb0NhbGxGcmFtZUhlYWRlcihSZWdpc3RlcklEIGZyb20sIENhbGxGcmFtZUhlYWRl
cjo6RW50cnkpOwogCiAgICAgICAgIEpTVmFsdWUgZ2V0Q29uc3RhbnRPcGVyYW5kKGludCBzcmMp
OwogICAgICAgICBib29sIGlzT3BlcmFuZENvbnN0YW50SW50KGludCBzcmMpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbDMyXzY0LmNwcAkocmV2aXNpb24gMjAyOTU0
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNzAsNyArMTcwLDcgQEAgdm9pZCBKSVQ6OmNvbXBpbGVTZXR1cFZhcmFyZ3NG
cmFtZShPcGNvZAogICAgIG1vdmUocmV0dXJuVmFsdWVHUFIsIHJlZ1QxKTsKIAogICAgIC8vIFBy
b2ZpbGUgdGhlIGFyZ3VtZW50IGNvdW50LgotICAgIGxvYWQzMihBZGRyZXNzKHJlZ1QxLCBKU1N0
YWNrOjpBcmd1bWVudENvdW50ICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSAr
IFBheWxvYWRPZmZzZXQpLCByZWdUMik7CisgICAgbG9hZDMyKEFkZHJlc3MocmVnVDEsIENhbGxG
cmFtZUhlYWRlcjo6QXJndW1lbnRDb3VudCAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lz
dGVyKSkgKyBQYXlsb2FkT2Zmc2V0KSwgcmVnVDIpOwogICAgIGxvYWQ4KGluZm8tPmFkZHJlc3NP
Zk1heE51bUFyZ3VtZW50cygpLCByZWdUMCk7CiAgICAgSnVtcCBub3RCaWdnZXN0ID0gYnJhbmNo
MzIoQWJvdmUsIHJlZ1QwLCByZWdUMik7CiAgICAgSnVtcCBub3RTYXR1cmF0ZWQgPSBicmFuY2gz
MihCZWxvd09yRXF1YWwsIHJlZ1QyLCBUcnVzdGVkSW1tMzIoMjU1KSk7CkBAIC0yMTQsMTEgKzIx
NCwxMSBAQCB2b2lkIEpJVDo6Y29tcGlsZUNhbGxFdmFsU2xvd0Nhc2UoSW5zdHJ1CiAKICAgICBh
ZGRQdHIoVHJ1c3RlZEltbTMyKHJlZ2lzdGVyT2Zmc2V0ICogc2l6ZW9mKFJlZ2lzdGVyKSArIHNp
emVvZihDYWxsZXJGcmFtZUFuZFBDKSksIGNhbGxGcmFtZVJlZ2lzdGVyLCBzdGFja1BvaW50ZXJS
ZWdpc3Rlcik7CiAKLSAgICBsb2FkUHRyKEFkZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0ZXIsIHNp
emVvZihSZWdpc3RlcikgKiBKU1N0YWNrOjpDYWxsZWUgLSBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQ
QykpLCByZWdUMCk7Ci0gICAgbG9hZFB0cihBZGRyZXNzKHN0YWNrUG9pbnRlclJlZ2lzdGVyLCBz
aXplb2YoUmVnaXN0ZXIpICogSlNTdGFjazo6Q2FsbGVlIC0gc2l6ZW9mKENhbGxlckZyYW1lQW5k
UEMpKSwgcmVnVDEpOworICAgIGxvYWRQdHIoQWRkcmVzcyhzdGFja1BvaW50ZXJSZWdpc3Rlciwg
c2l6ZW9mKFJlZ2lzdGVyKSAqIENhbGxGcmFtZUhlYWRlcjo6Q2FsbGVlIC0gc2l6ZW9mKENhbGxl
ckZyYW1lQW5kUEMpKSwgcmVnVDApOworICAgIGxvYWRQdHIoQWRkcmVzcyhzdGFja1BvaW50ZXJS
ZWdpc3Rlciwgc2l6ZW9mKFJlZ2lzdGVyKSAqIENhbGxGcmFtZUhlYWRlcjo6Q2FsbGVlIC0gc2l6
ZW9mKENhbGxlckZyYW1lQW5kUEMpKSwgcmVnVDEpOwogICAgIG1vdmUoVHJ1c3RlZEltbVB0cihp
bmZvKSwgcmVnVDIpOwogCi0gICAgZW1pdExvYWQoSlNTdGFjazo6Q2FsbGVlLCByZWdUMSwgcmVn
VDApOworICAgIGVtaXRMb2FkKENhbGxGcmFtZUhlYWRlcjo6Q2FsbGVlLCByZWdUMSwgcmVnVDAp
OwogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiB2aXJ0dWFsVGh1bmsgPSB2aXJ0dWFsVGh1bmtG
b3IobV92bSwgKmluZm8pOwogICAgIGluZm8tPnNldFNsb3dTdHViKGNyZWF0ZUpJVFN0dWJSb3V0
aW5lKHZpcnR1YWxUaHVuaywgKm1fdm0sIG51bGxwdHIsIHRydWUpKTsKICAgICBlbWl0TmFrZWRD
YWxsKHZpcnR1YWxUaHVuay5jb2RlKCkpOwpAQCAtMjY1LDE1ICsyNjUsMTUgQEAgdm9pZCBKSVQ6
OmNvbXBpbGVPcENhbGwoT3Bjb2RlSUQgb3Bjb2RlSQogICAgIAogICAgICAgICBhZGRQdHIoVHJ1
c3RlZEltbTMyKHJlZ2lzdGVyT2Zmc2V0ICogc2l6ZW9mKFJlZ2lzdGVyKSArIHNpemVvZihDYWxs
ZXJGcmFtZUFuZFBDKSksIGNhbGxGcmFtZVJlZ2lzdGVyLCBzdGFja1BvaW50ZXJSZWdpc3Rlcik7
CiAKLSAgICAgICAgc3RvcmUzMihUcnVzdGVkSW1tMzIoYXJnQ291bnQpLCBBZGRyZXNzKHN0YWNr
UG9pbnRlclJlZ2lzdGVyLCBKU1N0YWNrOjpBcmd1bWVudENvdW50ICogc3RhdGljX2Nhc3Q8aW50
PihzaXplb2YoUmVnaXN0ZXIpKSArIFBheWxvYWRPZmZzZXQgLSBzaXplb2YoQ2FsbGVyRnJhbWVB
bmRQQykpKTsKKyAgICAgICAgc3RvcmUzMihUcnVzdGVkSW1tMzIoYXJnQ291bnQpLCBBZGRyZXNz
KHN0YWNrUG9pbnRlclJlZ2lzdGVyLCBDYWxsRnJhbWVIZWFkZXI6OkFyZ3VtZW50Q291bnQgKiBz
dGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpICsgUGF5bG9hZE9mZnNldCAtIHNpemVv
ZihDYWxsZXJGcmFtZUFuZFBDKSkpOwogICAgIH0gLy8gU1AgaG9sZHMgbmV3Q2FsbEZyYW1lICsg
c2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpLCB3aXRoIEFyZ3VtZW50Q291bnQgaW5pdGlhbGl6ZWQu
CiAgICAgCiAgICAgdWludDMyX3QgbG9jYXRpb25CaXRzID0gQ2FsbFNpdGVJbmRleChpbnN0cnVj
dGlvbikuYml0cygpOwotICAgIHN0b3JlMzIoVHJ1c3RlZEltbTMyKGxvY2F0aW9uQml0cyksIHRh
Z0ZvcihKU1N0YWNrOjpBcmd1bWVudENvdW50LCBjYWxsRnJhbWVSZWdpc3RlcikpOworICAgIHN0
b3JlMzIoVHJ1c3RlZEltbTMyKGxvY2F0aW9uQml0cyksIHRhZ0ZvcihDYWxsRnJhbWVIZWFkZXI6
OkFyZ3VtZW50Q291bnQsIGNhbGxGcmFtZVJlZ2lzdGVyKSk7CiAgICAgZW1pdExvYWQoY2FsbGVl
LCByZWdUMSwgcmVnVDApOyAvLyByZWdUMSwgcmVnVDAgaG9sZHMgY2FsbGVlLgogCi0gICAgc3Rv
cmUzMihyZWdUMCwgQWRkcmVzcyhzdGFja1BvaW50ZXJSZWdpc3RlciwgSlNTdGFjazo6Q2FsbGVl
ICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSArIFBheWxvYWRPZmZzZXQgLSBz
aXplb2YoQ2FsbGVyRnJhbWVBbmRQQykpKTsKLSAgICBzdG9yZTMyKHJlZ1QxLCBBZGRyZXNzKHN0
YWNrUG9pbnRlclJlZ2lzdGVyLCBKU1N0YWNrOjpDYWxsZWUgKiBzdGF0aWNfY2FzdDxpbnQ+KHNp
emVvZihSZWdpc3RlcikpICsgVGFnT2Zmc2V0IC0gc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKSk7
CisgICAgc3RvcmUzMihyZWdUMCwgQWRkcmVzcyhzdGFja1BvaW50ZXJSZWdpc3RlciwgQ2FsbEZy
YW1lSGVhZGVyOjpDYWxsZWUgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpICsg
UGF5bG9hZE9mZnNldCAtIHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSkpOworICAgIHN0b3JlMzIo
cmVnVDEsIEFkZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0ZXIsIENhbGxGcmFtZUhlYWRlcjo6Q2Fs
bGVlICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSArIFRhZ09mZnNldCAtIHNp
emVvZihDYWxsZXJGcmFtZUFuZFBDKSkpOwogCiAgICAgaWYgKG9wY29kZUlEID09IG9wX2NhbGxf
ZXZhbCkgewogICAgICAgICBjb21waWxlQ2FsbEV2YWwoaW5zdHJ1Y3Rpb24pOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwCShyZXZpc2lvbiAyMDI5NTQpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MCw3
ICs4MCw3IEBAIHZvaWQgSklUOjpjb21waWxlU2V0dXBWYXJhcmdzRnJhbWUoT3Bjb2QKICAgICBt
b3ZlKHJldHVyblZhbHVlR1BSLCByZWdUMSk7CiAKICAgICAvLyBQcm9maWxlIHRoZSBhcmd1bWVu
dCBjb3VudC4KLSAgICBsb2FkMzIoQWRkcmVzcyhyZWdUMSwgSlNTdGFjazo6QXJndW1lbnRDb3Vu
dCAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkgKyBQYXlsb2FkT2Zmc2V0KSwg
cmVnVDIpOworICAgIGxvYWQzMihBZGRyZXNzKHJlZ1QxLCBDYWxsRnJhbWVIZWFkZXI6OkFyZ3Vt
ZW50Q291bnQgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpICsgUGF5bG9hZE9m
ZnNldCksIHJlZ1QyKTsKICAgICBsb2FkOChpbmZvLT5hZGRyZXNzT2ZNYXhOdW1Bcmd1bWVudHMo
KSwgcmVnVDApOwogICAgIEp1bXAgbm90QmlnZ2VzdCA9IGJyYW5jaDMyKEFib3ZlLCByZWdUMCwg
cmVnVDIpOwogICAgIEp1bXAgbm90U2F0dXJhdGVkID0gYnJhbmNoMzIoQmVsb3dPckVxdWFsLCBy
ZWdUMiwgVHJ1c3RlZEltbTMyKDI1NSkpOwpAQCAtMTIzLDcgKzEyMyw3IEBAIHZvaWQgSklUOjpj
b21waWxlQ2FsbEV2YWxTbG93Q2FzZShJbnN0cnUKIAogICAgIGFkZFB0cihUcnVzdGVkSW1tMzIo
cmVnaXN0ZXJPZmZzZXQgKiBzaXplb2YoUmVnaXN0ZXIpICsgc2l6ZW9mKENhbGxlckZyYW1lQW5k
UEMpKSwgY2FsbEZyYW1lUmVnaXN0ZXIsIHN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKIAotICAgIGxv
YWQ2NChBZGRyZXNzKHN0YWNrUG9pbnRlclJlZ2lzdGVyLCBzaXplb2YoUmVnaXN0ZXIpICogSlNT
dGFjazo6Q2FsbGVlIC0gc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKSwgcmVnVDApOworICAgIGxv
YWQ2NChBZGRyZXNzKHN0YWNrUG9pbnRlclJlZ2lzdGVyLCBzaXplb2YoUmVnaXN0ZXIpICogQ2Fs
bEZyYW1lSGVhZGVyOjpDYWxsZWUgLSBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykpLCByZWdUMCk7
CiAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGluZm8pLCByZWdUMik7CiAgICAgQ2FsbCBjYWxsID0g
ZW1pdE5ha2VkQ2FsbCgpOwogICAgIGFkZExpbmtUYXNrKApAQCAtMTgxLDE1ICsxODEsMTUgQEAg
dm9pZCBKSVQ6OmNvbXBpbGVPcENhbGwoT3Bjb2RlSUQgb3Bjb2RlSQogICAgICAgICB9CiAgICAg
CiAgICAgICAgIGFkZFB0cihUcnVzdGVkSW1tMzIocmVnaXN0ZXJPZmZzZXQgKiBzaXplb2YoUmVn
aXN0ZXIpICsgc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKSwgY2FsbEZyYW1lUmVnaXN0ZXIsIHN0
YWNrUG9pbnRlclJlZ2lzdGVyKTsKLSAgICAgICAgc3RvcmUzMihUcnVzdGVkSW1tMzIoYXJnQ291
bnQpLCBBZGRyZXNzKHN0YWNrUG9pbnRlclJlZ2lzdGVyLCBKU1N0YWNrOjpBcmd1bWVudENvdW50
ICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSArIFBheWxvYWRPZmZzZXQgLSBz
aXplb2YoQ2FsbGVyRnJhbWVBbmRQQykpKTsKKyAgICAgICAgc3RvcmUzMihUcnVzdGVkSW1tMzIo
YXJnQ291bnQpLCBBZGRyZXNzKHN0YWNrUG9pbnRlclJlZ2lzdGVyLCBDYWxsRnJhbWVIZWFkZXI6
OkFyZ3VtZW50Q291bnQgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpICsgUGF5
bG9hZE9mZnNldCAtIHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSkpOwogICAgIH0gLy8gU1AgaG9s
ZHMgbmV3Q2FsbEZyYW1lICsgc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpLCB3aXRoIEFyZ3VtZW50
Q291bnQgaW5pdGlhbGl6ZWQuCiAgICAgCiAgICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBp
bnN0cnVjdGlvbiAtIG1fY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpOwogICAgIHVp
bnQzMl90IGxvY2F0aW9uQml0cyA9IENhbGxTaXRlSW5kZXgoYnl0ZWNvZGVPZmZzZXQpLmJpdHMo
KTsKLSAgICBzdG9yZTMyKFRydXN0ZWRJbW0zMihsb2NhdGlvbkJpdHMpLCBBZGRyZXNzKGNhbGxG
cmFtZVJlZ2lzdGVyLCBKU1N0YWNrOjpBcmd1bWVudENvdW50ICogc3RhdGljX2Nhc3Q8aW50Pihz
aXplb2YoUmVnaXN0ZXIpKSArIFRhZ09mZnNldCkpOworICAgIHN0b3JlMzIoVHJ1c3RlZEltbTMy
KGxvY2F0aW9uQml0cyksIEFkZHJlc3MoY2FsbEZyYW1lUmVnaXN0ZXIsIENhbGxGcmFtZUhlYWRl
cjo6QXJndW1lbnRDb3VudCAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkgKyBU
YWdPZmZzZXQpKTsKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoY2FsbGVlLCByZWdUMCk7
IC8vIHJlZ1QwIGhvbGRzIGNhbGxlZS4KLSAgICBzdG9yZTY0KHJlZ1QwLCBBZGRyZXNzKHN0YWNr
UG9pbnRlclJlZ2lzdGVyLCBKU1N0YWNrOjpDYWxsZWUgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVv
ZihSZWdpc3RlcikpIC0gc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKSk7CisgICAgc3RvcmU2NChy
ZWdUMCwgQWRkcmVzcyhzdGFja1BvaW50ZXJSZWdpc3RlciwgQ2FsbEZyYW1lSGVhZGVyOjpDYWxs
ZWUgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpIC0gc2l6ZW9mKENhbGxlckZy
YW1lQW5kUEMpKSk7CiAKICAgICBpZiAob3Bjb2RlSUQgPT0gb3BfY2FsbF9ldmFsKSB7CiAgICAg
ICAgIGNvbXBpbGVDYWxsRXZhbChpbnN0cnVjdGlvbik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVElubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVElubGluZXMuaAkocmV2aXNpb24gMjAyOTU0KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTg4LDcgKzg4LDcgQEAg
QUxXQVlTX0lOTElORSBKU1ZhbHVlIEpJVDo6Z2V0Q29uc3RhbnRPcAogICAgIHJldHVybiBtX2Nv
ZGVCbG9jay0+Z2V0Q29uc3RhbnQoc3JjKTsKIH0KIAotQUxXQVlTX0lOTElORSB2b2lkIEpJVDo6
ZW1pdFB1dEludFRvQ2FsbEZyYW1lSGVhZGVyKFJlZ2lzdGVySUQgZnJvbSwgSlNTdGFjazo6Q2Fs
bEZyYW1lSGVhZGVyRW50cnkgZW50cnkpCitBTFdBWVNfSU5MSU5FIHZvaWQgSklUOjplbWl0UHV0
SW50VG9DYWxsRnJhbWVIZWFkZXIoUmVnaXN0ZXJJRCBmcm9tLCBDYWxsRnJhbWVIZWFkZXI6OkVu
dHJ5IGVudHJ5KQogewogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgc3RvcmUzMihUcnVzdGVk
SW1tMzIoSW50MzJUYWcpLCBpbnRUYWdGb3IoZW50cnksIGNhbGxGcmFtZVJlZ2lzdGVyKSk7CkBA
IC0xNDIsNyArMTQyLDcgQEAgQUxXQVlTX0lOTElORSB2b2lkIEpJVDo6dXBkYXRlVG9wQ2FsbEZy
YQogI2Vsc2UKICAgICB1aW50MzJfdCBsb2NhdGlvbkJpdHMgPSBDYWxsU2l0ZUluZGV4KG1fYnl0
ZWNvZGVPZmZzZXQgKyAxKS5iaXRzKCk7CiAjZW5kaWYKLSAgICBzdG9yZTMyKFRydXN0ZWRJbW0z
Mihsb2NhdGlvbkJpdHMpLCBpbnRUYWdGb3IoSlNTdGFjazo6QXJndW1lbnRDb3VudCkpOworICAg
IHN0b3JlMzIoVHJ1c3RlZEltbTMyKGxvY2F0aW9uQml0cyksIGludFRhZ0ZvcihDYWxsRnJhbWVI
ZWFkZXI6OkFyZ3VtZW50Q291bnQpKTsKICAgICAKICAgICAvLyBGSVhNRTogSXQncyBub3QgY2xl
YXIgdGhhdCB0aGlzIGlzIG5lZWRlZC4gSklUT3BlcmF0aW9ucyB0ZW5kIHRvIHVwZGF0ZSB0aGUg
dG9wIGNhbGwgZnJhbWUgb24KICAgICAvLyB0aGUgQysrIHNpZGUuCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCShyZXZpc2lvbiAyMDI5NTQp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTU1LDcgKzU1LDcgQEAgSklUOjpDb2RlUmVmIEpJVDo6cHJpdmF0ZUNvbXBp
bGVDVElOYXRpdgogICAgIENhbGwgbmF0aXZlQ2FsbDsKIAogICAgIGVtaXRGdW5jdGlvblByb2xv
Z3VlKCk7Ci0gICAgZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVyKDAsIEpTU3RhY2s6OkNvZGVCbG9j
ayk7CisgICAgZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVyKDAsIENhbGxGcmFtZUhlYWRlcjo6Q29k
ZUJsb2NrKTsKICAgICBzdG9yZVB0cihjYWxsRnJhbWVSZWdpc3RlciwgJm1fdm0tPnRvcENhbGxG
cmFtZSk7CiAKICNpZiBDUFUoWDg2KQpAQCAtODEsNyArODEsNyBAQCBKSVQ6OkNvZGVSZWYgSklU
Ojpwcml2YXRlQ29tcGlsZUNUSU5hdGl2CiAgICAgLy8gSG9zdCBmdW5jdGlvbiBzaWduYXR1cmUg
aXMgZihFeGVjU3RhdGUqKS4KICAgICBtb3ZlKGNhbGxGcmFtZVJlZ2lzdGVyLCBhcmd1bWVudEdQ
UjApOwogCi0gICAgZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXJQdHIoSlNTdGFjazo6Q2FsbGVl
LCBhcmd1bWVudEdQUjEpOworICAgIGVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyUHRyKENhbGxG
cmFtZUhlYWRlcjo6Q2FsbGVlLCBhcmd1bWVudEdQUjEpOwogICAgIGxvYWRQdHIoQWRkcmVzcyhh
cmd1bWVudEdQUjEsIE9CSkVDVF9PRkZTRVRPRihKU0Z1bmN0aW9uLCBtX2V4ZWN1dGFibGUpKSwg
cmVnVDIpOwogCiAgICAgLy8gY2FsbCB0aGUgZnVuY3Rpb24KQEAgLTk5Nyw3ICs5OTcsNyBAQCB2
b2lkIEpJVDo6ZW1pdF9vcF9lbnRlcihJbnN0cnVjdGlvbiogY3VyCiB2b2lkIEpJVDo6ZW1pdF9v
cF9nZXRfc2NvcGUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBpbnQg
ZHN0ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKLSAgICBlbWl0R2V0RnJvbUNh
bGxGcmFtZUhlYWRlclB0cihKU1N0YWNrOjpDYWxsZWUsIHJlZ1QwKTsKKyAgICBlbWl0R2V0RnJv
bUNhbGxGcmFtZUhlYWRlclB0cihDYWxsRnJhbWVIZWFkZXI6OkNhbGxlZSwgcmVnVDApOwogICAg
IGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZTY29wZUNoYWluKCkp
LCByZWdUMCk7CiAgICAgZW1pdFN0b3JlQ2VsbChkc3QsIHJlZ1QwKTsKIH0KSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAkocmV2aXNpb24gMjAyOTU0KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNzIzLDcgKzcyMyw3IEBAIHZvaWQgSklUOjplbWl0X29wX2VudGVyKEluc3RydWN0aW9uKikK
IHZvaWQgSklUOjplbWl0X29wX2dldF9zY29wZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQogewogICAgIGludCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwot
ICAgIGVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyUHRyKEpTU3RhY2s6OkNhbGxlZSwgcmVnVDAp
OworICAgIGVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyUHRyKENhbGxGcmFtZUhlYWRlcjo6Q2Fs
bGVlLCByZWdUMCk7CiAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0Z1bmN0aW9uOjpvZmZz
ZXRPZlNjb3BlQ2hhaW4oKSksIHJlZ1QwKTsKICAgICBlbWl0U3RvcmVDZWxsKGRzdCwgcmVnVDAp
OwogfQpAQCAtMTQ0NCw3ICsxNDQ0LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfY3JlYXRlX2Nsb25l
ZF9hcmd1bWVudAogdm9pZCBKSVQ6OmVtaXRfb3BfYXJndW1lbnRfY291bnQoSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBpbnQgZHN0ID0gY3VycmVudEluc3RydWN0aW9u
WzFdLnUub3BlcmFuZDsKLSAgICBsb2FkMzIocGF5bG9hZEZvcihKU1N0YWNrOjpBcmd1bWVudENv
dW50KSwgcmVnVDApOworICAgIGxvYWQzMihwYXlsb2FkRm9yKENhbGxGcmFtZUhlYWRlcjo6QXJn
dW1lbnRDb3VudCksIHJlZ1QwKTsKICAgICBzdWIzMihUcnVzdGVkSW1tMzIoMSksIHJlZ1QwKTsK
ICAgICBKU1ZhbHVlUmVncyByZXN1bHQgPSBKU1ZhbHVlUmVnczo6d2l0aFR3b0F2YWlsYWJsZVJl
Z3MocmVnVDAsIHJlZ1QxKTsKICAgICBib3hJbnQzMihyZWdUMCwgcmVzdWx0KTsKQEAgLTE0NjEs
NyArMTQ2MSw3IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9yZXN0X2xlbmd0aChJbnN0cnUKIHsK
ICAgICBpbnQgZHN0ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKICAgICB1bnNp
Z25lZCBudW1QYXJhbXNUb1NraXAgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS51bnNpZ25lZFZh
bHVlOwotICAgIGxvYWQzMihwYXlsb2FkRm9yKEpTU3RhY2s6OkFyZ3VtZW50Q291bnQpLCByZWdU
MCk7CisgICAgbG9hZDMyKHBheWxvYWRGb3IoQ2FsbEZyYW1lSGVhZGVyOjpBcmd1bWVudENvdW50
KSwgcmVnVDApOwogICAgIHN1YjMyKFRydXN0ZWRJbW0zMigxKSwgcmVnVDApOwogICAgIEp1bXAg
emVyb0xlbmd0aCA9IGJyYW5jaDMyKExlc3NUaGFuT3JFcXVhbCwgcmVnVDAsIEltbTMyKG51bVBh
cmFtc1RvU2tpcCkpOwogICAgIHN1YjMyKEltbTMyKG51bVBhcmFtc1RvU2tpcCksIHJlZ1QwKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSlNJbnRlcmZhY2VKSVQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pTSW50ZXJmYWNlSklULmgJKHJldmlz
aW9uIDIwMjk1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSlNJbnRlcmZhY2VKSVQu
aAkod29ya2luZyBjb3B5KQpAQCAtNzEsMTAgKzcxLDEwIEBAIG5hbWVzcGFjZSBKU0MgewogCiAg
ICAgICAgIEp1bXAgZW1pdEp1bXBJZk5vdFR5cGUoUmVnaXN0ZXJJRCBiYXNlUmVnLCBKU1R5cGUp
OwogCi0gICAgICAgIHZvaWQgZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXJQdHIoSlNTdGFjazo6
Q2FsbEZyYW1lSGVhZGVyRW50cnksIFJlZ2lzdGVySUQgdG8sIFJlZ2lzdGVySUQgZnJvbSA9IGNh
bGxGcmFtZVJlZ2lzdGVyKTsKLSAgICAgICAgdm9pZCBlbWl0UHV0VG9DYWxsRnJhbWVIZWFkZXIo
UmVnaXN0ZXJJRCBmcm9tLCBKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJFbnRyeSk7Ci0gICAgICAg
IHZvaWQgZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVyKHZvaWQqIHZhbHVlLCBKU1N0YWNrOjpDYWxs
RnJhbWVIZWFkZXJFbnRyeSk7Ci0gICAgICAgIHZvaWQgZW1pdFB1dENlbGxUb0NhbGxGcmFtZUhl
YWRlcihSZWdpc3RlcklEIGZyb20sIEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlckVudHJ5KTsKKyAg
ICAgICAgdm9pZCBlbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlclB0cihDYWxsRnJhbWVIZWFkZXI6
OkVudHJ5LCBSZWdpc3RlcklEIHRvLCBSZWdpc3RlcklEIGZyb20gPSBjYWxsRnJhbWVSZWdpc3Rl
cik7CisgICAgICAgIHZvaWQgZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVyKFJlZ2lzdGVySUQgZnJv
bSwgQ2FsbEZyYW1lSGVhZGVyOjpFbnRyeSk7CisgICAgICAgIHZvaWQgZW1pdFB1dFRvQ2FsbEZy
YW1lSGVhZGVyKHZvaWQqIHZhbHVlLCBDYWxsRnJhbWVIZWFkZXI6OkVudHJ5KTsKKyAgICAgICAg
dm9pZCBlbWl0UHV0Q2VsbFRvQ2FsbEZyYW1lSGVhZGVyKFJlZ2lzdGVySUQgZnJvbSwgQ2FsbEZy
YW1lSGVhZGVyOjpFbnRyeSk7CiAKICAgICAgICAgaW5saW5lIEFkZHJlc3MgcGF5bG9hZEZvcihp
bnQgaW5kZXgsIFJlZ2lzdGVySUQgYmFzZSA9IGNhbGxGcmFtZVJlZ2lzdGVyKTsKICAgICAgICAg
aW5saW5lIEFkZHJlc3MgaW50UGF5bG9hZEZvcihpbnQgaW5kZXgsIFJlZ2lzdGVySUQgYmFzZSA9
IGNhbGxGcmFtZVJlZ2lzdGVyKTsKQEAgLTIyMSwxMiArMjIxLDEyIEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICByZXR1cm4gYnJhbmNoOChOb3RFcXVhbCwgQWRkcmVzcyhiYXNlUmVnLCBKU0Nl
bGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwgVHJ1c3RlZEltbTMyKHR5cGUpKTsKICAgICB9CiAK
LSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgSlNJbnRlcmZhY2VKSVQ6OmVtaXRHZXRGcm9tQ2FsbEZy
YW1lSGVhZGVyUHRyKEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlckVudHJ5IGVudHJ5LCBSZWdpc3Rl
cklEIHRvLCBSZWdpc3RlcklEIGZyb20pCisgICAgQUxXQVlTX0lOTElORSB2b2lkIEpTSW50ZXJm
YWNlSklUOjplbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlclB0cihDYWxsRnJhbWVIZWFkZXI6OkVu
dHJ5IGVudHJ5LCBSZWdpc3RlcklEIHRvLCBSZWdpc3RlcklEIGZyb20pCiAgICAgewogICAgICAg
ICBsb2FkUHRyKEFkZHJlc3MoZnJvbSwgZW50cnkgKiBzaXplb2YoUmVnaXN0ZXIpKSwgdG8pOwog
ICAgIH0KIAotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBKU0ludGVyZmFjZUpJVDo6ZW1pdFB1dFRv
Q2FsbEZyYW1lSGVhZGVyKFJlZ2lzdGVySUQgZnJvbSwgSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVy
RW50cnkgZW50cnkpCisgICAgQUxXQVlTX0lOTElORSB2b2lkIEpTSW50ZXJmYWNlSklUOjplbWl0
UHV0VG9DYWxsRnJhbWVIZWFkZXIoUmVnaXN0ZXJJRCBmcm9tLCBDYWxsRnJhbWVIZWFkZXI6OkVu
dHJ5IGVudHJ5KQogICAgIHsKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQogICAgICAgICBzdG9yZVB0
cihmcm9tLCBwYXlsb2FkRm9yKGVudHJ5LCBjYWxsRnJhbWVSZWdpc3RlcikpOwpAQCAtMjM1LDEy
ICsyMzUsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAjZW5kaWYKICAgICB9CiAKLSAgICBBTFdBWVNf
SU5MSU5FIHZvaWQgSlNJbnRlcmZhY2VKSVQ6OmVtaXRQdXRUb0NhbGxGcmFtZUhlYWRlcih2b2lk
KiB2YWx1ZSwgSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyRW50cnkgZW50cnkpCisgICAgQUxXQVlT
X0lOTElORSB2b2lkIEpTSW50ZXJmYWNlSklUOjplbWl0UHV0VG9DYWxsRnJhbWVIZWFkZXIodm9p
ZCogdmFsdWUsIENhbGxGcmFtZUhlYWRlcjo6RW50cnkgZW50cnkpCiAgICAgewogICAgICAgICBz
dG9yZVB0cihUcnVzdGVkSW1tUHRyKHZhbHVlKSwgQWRkcmVzcyhjYWxsRnJhbWVSZWdpc3Rlciwg
ZW50cnkgKiBzaXplb2YoUmVnaXN0ZXIpKSk7CiAgICAgfQogCi0gICAgQUxXQVlTX0lOTElORSB2
b2lkIEpTSW50ZXJmYWNlSklUOjplbWl0UHV0Q2VsbFRvQ2FsbEZyYW1lSGVhZGVyKFJlZ2lzdGVy
SUQgZnJvbSwgSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyRW50cnkgZW50cnkpCisgICAgQUxXQVlT
X0lOTElORSB2b2lkIEpTSW50ZXJmYWNlSklUOjplbWl0UHV0Q2VsbFRvQ2FsbEZyYW1lSGVhZGVy
KFJlZ2lzdGVySUQgZnJvbSwgQ2FsbEZyYW1lSGVhZGVyOjpFbnRyeSBlbnRyeSkKICAgICB7CiAj
aWYgVVNFKEpTVkFMVUUzMl82NCkKICAgICAgICAgc3RvcmUzMihUcnVzdGVkSW1tMzIoSlNWYWx1
ZTo6Q2VsbFRhZyksIHRhZ0ZvcihlbnRyeSwgY2FsbEZyYW1lUmVnaXN0ZXIpKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU2V0dXBWYXJhcmdzRnJhbWUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU2V0dXBWYXJhcmdzRnJhbWUuY3BwCShyZXZp
c2lvbiAyMDI5NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1NldHVwVmFyYXJnc0Zy
YW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcsNyArNDcsNyBAQCB2b2lkIGVtaXRTZXRWYXJh
cmdzRnJhbWUoQ0NhbGxIZWxwZXJzJiBqCiAgICAgaml0LmFuZFB0cihDQ2FsbEhlbHBlcnM6OlRy
dXN0ZWRJbW0zMih+KHN0YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCkgLSAxKSksIHJlc3VsdEdQUik7
CiAKICAgICBqaXQuYWRkUHRyKGxlbmd0aEdQUiwgcmVzdWx0R1BSKTsKLSAgICBqaXQuYWRkUHRy
KENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlclNpemUg
KyAobGVuZ3RoSW5jbHVkZXNUaGlzPyAwIDogMSkpLCByZXN1bHRHUFIpOworICAgIGppdC5hZGRQ
dHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoQ2FsbEZyYW1lSGVhZGVyOjpTaXplICsgKGxl
bmd0aEluY2x1ZGVzVGhpcz8gMCA6IDEpKSwgcmVzdWx0R1BSKTsKICAgICAKICAgICAvLyByZXN1
bHRHUFIgbm93IGhhcyB0aGUgcmVxdWlyZWQgZnJhbWUgc2l6ZSBpbiBSZWdpc3RlciB1bml0cwog
ICAgIC8vIFJvdW5kIHJlc3VsdEdQUiB0byBuZXh0IG11bHRpcGxlIG9mIHN0YWNrQWxpZ25tZW50
UmVnaXN0ZXJzKCkKQEAgLTg1LDcgKzg1LDcgQEAgdm9pZCBlbWl0U2V0dXBWYXJhcmdzRnJhbWVG
YXN0Q2FzZShDQ2FsbAogICAgIHNsb3dDYXNlLmFwcGVuZChqaXQuYnJhbmNoUHRyKENDYWxsSGVs
cGVyczo6QWJvdmUsIENDYWxsSGVscGVyczo6QWJzb2x1dGVBZGRyZXNzKGppdC52bSgpLT5hZGRy
ZXNzT2ZKU0NQVVN0YWNrTGltaXQoKSksIHNjcmF0Y2hHUFIyKSk7CiAKICAgICAvLyBJbml0aWFs
aXplIEFyZ3VtZW50Q291bnQuCi0gICAgaml0LnN0b3JlMzIoc2NyYXRjaEdQUjEsIENDYWxsSGVs
cGVyczo6QWRkcmVzcyhzY3JhdGNoR1BSMiwgSlNTdGFjazo6QXJndW1lbnRDb3VudCAqIHN0YXRp
Y19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkgKyBQYXlsb2FkT2Zmc2V0KSk7CisgICAgaml0
LnN0b3JlMzIoc2NyYXRjaEdQUjEsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzY3JhdGNoR1BSMiwg
Q2FsbEZyYW1lSGVhZGVyOjpBcmd1bWVudENvdW50ICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2Yo
UmVnaXN0ZXIpKSArIFBheWxvYWRPZmZzZXQpKTsKIAogICAgIC8vIENvcHkgYXJndW1lbnRzLgog
ICAgIGppdC5zaWduRXh0ZW5kMzJUb1B0cihzY3JhdGNoR1BSMSwgc2NyYXRjaEdQUjEpOwpAQCAt
MTMxLDcgKzEzMSw3IEBAIHZvaWQgZW1pdFNldHVwVmFyYXJnc0ZyYW1lRmFzdENhc2UoQ0NhbGwK
ICAgICAgICAgICAgIGZpcnN0QXJndW1lbnRSZWcgPSBWaXJ0dWFsUmVnaXN0ZXIoMCk7CiAgICAg
fSBlbHNlIHsKICAgICAgICAgYXJndW1lbnRDb3VudFJlY292ZXJ5ID0gVmFsdWVSZWNvdmVyeTo6
ZGlzcGxhY2VkSW5KU1N0YWNrKAotICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyKEpTU3RhY2s6
OkFyZ3VtZW50Q291bnQpLCBEYXRhRm9ybWF0SW50MzIpOworICAgICAgICAgICAgVmlydHVhbFJl
Z2lzdGVyKENhbGxGcmFtZUhlYWRlcjo6QXJndW1lbnRDb3VudCksIERhdGFGb3JtYXRJbnQzMik7
CiAgICAgICAgIGZpcnN0QXJndW1lbnRSZWcgPSBWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lOjph
cmd1bWVudE9mZnNldCgwKSk7CiAgICAgfQogICAgIGVtaXRTZXR1cFZhcmFyZ3NGcmFtZUZhc3RD
YXNlKGppdCwgbnVtVXNlZFNsb3RzR1BSLCBzY3JhdGNoR1BSMSwgc2NyYXRjaEdQUjIsIHNjcmF0
Y2hHUFIzLCBhcmd1bWVudENvdW50UmVjb3ZlcnksIGZpcnN0QXJndW1lbnRSZWcsIGZpcnN0VmFy
QXJnT2Zmc2V0LCBzbG93Q2FzZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1Nw
ZWNpYWxpemVkVGh1bmtKSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L1NwZWNpYWxpemVkVGh1bmtKSVQuaAkocmV2aXNpb24gMjAyOTU0KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9TcGVjaWFsaXplZFRodW5rSklULmgJKHdvcmtpbmcgY29weSkKQEAg
LTQ2LDcgKzQ2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBlbWl0RnVuY3Rpb25Q
cm9sb2d1ZSgpOwogICAgICAgICAgICAgZW1pdFNhdmVUaGVuTWF0ZXJpYWxpemVUYWdSZWdpc3Rl
cnMoKTsKICAgICAgICAgICAgIC8vIENoZWNrIHRoYXQgd2UgaGF2ZSB0aGUgZXhwZWN0ZWQgbnVt
YmVyIG9mIGFyZ3VtZW50cwotICAgICAgICAgICAgbV9mYWlsdXJlcy5hcHBlbmQoYnJhbmNoMzIo
Tm90RXF1YWwsIHBheWxvYWRGb3IoSlNTdGFjazo6QXJndW1lbnRDb3VudCksIFRydXN0ZWRJbW0z
MihleHBlY3RlZEFyZ0NvdW50ICsgMSkpKTsKKyAgICAgICAgICAgIG1fZmFpbHVyZXMuYXBwZW5k
KGJyYW5jaDMyKE5vdEVxdWFsLCBwYXlsb2FkRm9yKENhbGxGcmFtZUhlYWRlcjo6QXJndW1lbnRD
b3VudCksIFRydXN0ZWRJbW0zMihleHBlY3RlZEFyZ0NvdW50ICsgMSkpKTsKICAgICAgICAgfQog
ICAgICAgICAKICAgICAgICAgZXhwbGljaXQgU3BlY2lhbGl6ZWRUaHVua0pJVChWTSogdm0pCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCShy
ZXZpc2lvbiAyMDI5NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJh
dG9ycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1OSw3ICsyNTksNyBAQCBzdGF0aWMgTWFjcm9B
c3NlbWJsZXJDb2RlUmVmIG5hdGl2ZUZvckdlCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAg
IGppdC5lbWl0UHV0VG9DYWxsRnJhbWVIZWFkZXIoMCwgSlNTdGFjazo6Q29kZUJsb2NrKTsKKyAg
ICBqaXQuZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVyKDAsIENhbGxGcmFtZUhlYWRlcjo6Q29kZUJs
b2NrKTsKICAgICBqaXQuc3RvcmVQdHIoSlNJbnRlcmZhY2VKSVQ6OmNhbGxGcmFtZVJlZ2lzdGVy
LCAmdm0tPnRvcENhbGxGcmFtZSk7CiAKICNpZiBDUFUoWDg2KQpAQCAtMjcwLDcgKzI3MCw3IEBA
IHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgbmF0aXZlRm9yR2UKICAgICBqaXQuc3ViUHRy
KEpTSW50ZXJmYWNlSklUOjpUcnVzdGVkSW1tMzIoOCksIEpTSW50ZXJmYWNlSklUOjpzdGFja1Bv
aW50ZXJSZWdpc3Rlcik7IC8vIEFsaWduIHN0YWNrIGFmdGVyIHByb2xvZ3VlLgogCiAgICAgLy8g
Y2FsbCB0aGUgZnVuY3Rpb24KLSAgICBqaXQuZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXJQdHIo
SlNTdGFjazo6Q2FsbGVlLCBKU0ludGVyZmFjZUpJVDo6cmVnVDEpOworICAgIGppdC5lbWl0R2V0
RnJvbUNhbGxGcmFtZUhlYWRlclB0cihDYWxsRnJhbWVIZWFkZXI6OkNhbGxlZSwgSlNJbnRlcmZh
Y2VKSVQ6OnJlZ1QxKTsKICAgICBqaXQubG9hZFB0cihKU0ludGVyZmFjZUpJVDo6QWRkcmVzcyhK
U0ludGVyZmFjZUpJVDo6cmVnVDEsIEpTRnVuY3Rpb246Om9mZnNldE9mRXhlY3V0YWJsZSgpKSwg
SlNJbnRlcmZhY2VKSVQ6OnJlZ1QxKTsKICAgICBqaXQuY2FsbChKU0ludGVyZmFjZUpJVDo6QWRk
cmVzcyhKU0ludGVyZmFjZUpJVDo6cmVnVDEsIGV4ZWN1dGFibGVPZmZzZXRUb0Z1bmN0aW9uKSk7
CiAKQEAgLTI4Miw3ICsyODIsNyBAQCBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIG5hdGl2
ZUZvckdlCiAgICAgLy8gSG9zdCBmdW5jdGlvbiBzaWduYXR1cmU6IGYoRXhlY1N0YXRlKik7CiAg
ICAgaml0Lm1vdmUoSlNJbnRlcmZhY2VKSVQ6OmNhbGxGcmFtZVJlZ2lzdGVyLCBYODZSZWdpc3Rl
cnM6OmVkaSk7CiAKLSAgICBqaXQuZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXJQdHIoSlNTdGFj
azo6Q2FsbGVlLCBYODZSZWdpc3RlcnM6OmVzaSk7CisgICAgaml0LmVtaXRHZXRGcm9tQ2FsbEZy
YW1lSGVhZGVyUHRyKENhbGxGcmFtZUhlYWRlcjo6Q2FsbGVlLCBYODZSZWdpc3RlcnM6OmVzaSk7
CiAgICAgaml0LmxvYWRQdHIoSlNJbnRlcmZhY2VKSVQ6OkFkZHJlc3MoWDg2UmVnaXN0ZXJzOjpl
c2ksIEpTRnVuY3Rpb246Om9mZnNldE9mRXhlY3V0YWJsZSgpKSwgWDg2UmVnaXN0ZXJzOjpyOSk7
CiAgICAgaml0LmNhbGwoSlNJbnRlcmZhY2VKSVQ6OkFkZHJlc3MoWDg2UmVnaXN0ZXJzOjpyOSwg
ZXhlY3V0YWJsZU9mZnNldFRvRnVuY3Rpb24pKTsKIApAQCAtMjk1LDcgKzI5NSw3IEBAIHN0YXRp
YyBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgbmF0aXZlRm9yR2UKICAgICAvLyBBdCB0aGlzIHBvaW50
IHRoZSBzdGFjayBpcyBhbGlnbmVkIHRvIDE2IGJ5dGVzLCBidXQgaWYgdGhpcyBjaGFuZ2VzIGF0
IHNvbWUgcG9pbnQsIHdlIG5lZWQgdG8gZW1pdCBjb2RlIHRvIGFsaWduIGl0LgogICAgIGppdC5z
dWJQdHIoSlNJbnRlcmZhY2VKSVQ6OlRydXN0ZWRJbW0zMig0ICogc2l6ZW9mKGludDY0X3QpKSwg
SlNJbnRlcmZhY2VKSVQ6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKIAotICAgIGppdC5lbWl0R2V0
RnJvbUNhbGxGcmFtZUhlYWRlclB0cihKU1N0YWNrOjpDYWxsZWUsIFg4NlJlZ2lzdGVyczo6ZWR4
KTsKKyAgICBqaXQuZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXJQdHIoQ2FsbEZyYW1lSGVhZGVy
OjpDYWxsZWUsIFg4NlJlZ2lzdGVyczo6ZWR4KTsKICAgICBqaXQubG9hZFB0cihKU0ludGVyZmFj
ZUpJVDo6QWRkcmVzcyhYODZSZWdpc3RlcnM6OmVkeCwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZFeGVj
dXRhYmxlKCkpLCBYODZSZWdpc3RlcnM6OnI5KTsKICAgICBqaXQuY2FsbChKU0ludGVyZmFjZUpJ
VDo6QWRkcmVzcyhYODZSZWdpc3RlcnM6OnI5LCBleGVjdXRhYmxlT2Zmc2V0VG9GdW5jdGlvbikp
OwogCkBAIC0zMTAsNyArMzEwLDcgQEAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBuYXRp
dmVGb3JHZQogICAgIC8vIEhvc3QgZnVuY3Rpb24gc2lnbmF0dXJlOiBmKEV4ZWNTdGF0ZSopOwog
ICAgIGppdC5tb3ZlKEpTSW50ZXJmYWNlSklUOjpjYWxsRnJhbWVSZWdpc3RlciwgQVJNNjRSZWdp
c3RlcnM6OngwKTsKIAotICAgIGppdC5lbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlclB0cihKU1N0
YWNrOjpDYWxsZWUsIEFSTTY0UmVnaXN0ZXJzOjp4MSk7CisgICAgaml0LmVtaXRHZXRGcm9tQ2Fs
bEZyYW1lSGVhZGVyUHRyKENhbGxGcmFtZUhlYWRlcjo6Q2FsbGVlLCBBUk02NFJlZ2lzdGVyczo6
eDEpOwogICAgIGppdC5sb2FkUHRyKEpTSW50ZXJmYWNlSklUOjpBZGRyZXNzKEFSTTY0UmVnaXN0
ZXJzOjp4MSwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZFeGVjdXRhYmxlKCkpLCBBUk02NFJlZ2lzdGVy
czo6eDIpOwogICAgIGppdC5jYWxsKEpTSW50ZXJmYWNlSklUOjpBZGRyZXNzKEFSTTY0UmVnaXN0
ZXJzOjp4MiwgZXhlY3V0YWJsZU9mZnNldFRvRnVuY3Rpb24pKTsKICNlbGlmIENQVShBUk0pIHx8
IENQVShTSDQpIHx8IENQVShNSVBTKQpAQCAtMzIzLDcgKzMyMyw3IEBAIHN0YXRpYyBNYWNyb0Fz
c2VtYmxlckNvZGVSZWYgbmF0aXZlRm9yR2UKICAgICAvLyBIb3N0IGZ1bmN0aW9uIHNpZ25hdHVy
ZSBpcyBmKEV4ZWNTdGF0ZSopLgogICAgIGppdC5tb3ZlKEpTSW50ZXJmYWNlSklUOjpjYWxsRnJh
bWVSZWdpc3RlciwgSlNJbnRlcmZhY2VKSVQ6OmFyZ3VtZW50R1BSMCk7CiAKLSAgICBqaXQuZW1p
dEdldEZyb21DYWxsRnJhbWVIZWFkZXJQdHIoSlNTdGFjazo6Q2FsbGVlLCBKU0ludGVyZmFjZUpJ
VDo6YXJndW1lbnRHUFIxKTsKKyAgICBqaXQuZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXJQdHIo
Q2FsbEZyYW1lSGVhZGVyOjpDYWxsZWUsIEpTSW50ZXJmYWNlSklUOjphcmd1bWVudEdQUjEpOwog
ICAgIGppdC5sb2FkUHRyKEpTSW50ZXJmYWNlSklUOjpBZGRyZXNzKEpTSW50ZXJmYWNlSklUOjph
cmd1bWVudEdQUjEsIEpTRnVuY3Rpb246Om9mZnNldE9mRXhlY3V0YWJsZSgpKSwgSlNJbnRlcmZh
Y2VKSVQ6OnJlZ1QyKTsKICAgICBqaXQuY2FsbChKU0ludGVyZmFjZUpJVDo6QWRkcmVzcyhKU0lu
dGVyZmFjZUpJVDo6cmVnVDIsIGV4ZWN1dGFibGVPZmZzZXRUb0Z1bmN0aW9uKSk7CiAKQEAgLTQx
OSw4ICs0MTksOCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgYXJpdHlGaXh1cEdlbmVyYXRvCiAg
ICAgaml0LnBvcChKU0ludGVyZmFjZUpJVDo6cmVnVDQpOwogIyAgZW5kaWYKICAgICBqaXQubW92
ZShKU0ludGVyZmFjZUpJVDo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEpTSW50ZXJmYWNlSklUOjpyZWdU
Myk7Ci0gICAgaml0LmxvYWQzMihKU0ludGVyZmFjZUpJVDo6QWRkcmVzcyhKU0ludGVyZmFjZUpJ
VDo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEpTU3RhY2s6OkFyZ3VtZW50Q291bnQgKiBzaXplb2YoUmVn
aXN0ZXIpKSwgSlNJbnRlcmZhY2VKSVQ6OmFyZ3VtZW50R1BSMik7Ci0gICAgaml0LmFkZDMyKEpT
SW50ZXJmYWNlSklUOjpUcnVzdGVkSW1tMzIoSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyU2l6ZSks
IEpTSW50ZXJmYWNlSklUOjphcmd1bWVudEdQUjIpOworICAgIGppdC5sb2FkMzIoSlNJbnRlcmZh
Y2VKSVQ6OkFkZHJlc3MoSlNJbnRlcmZhY2VKSVQ6OmNhbGxGcmFtZVJlZ2lzdGVyLCBDYWxsRnJh
bWVIZWFkZXI6OkFyZ3VtZW50Q291bnQgKiBzaXplb2YoUmVnaXN0ZXIpKSwgSlNJbnRlcmZhY2VK
SVQ6OmFyZ3VtZW50R1BSMik7CisgICAgaml0LmFkZDMyKEpTSW50ZXJmYWNlSklUOjpUcnVzdGVk
SW1tMzIoQ2FsbEZyYW1lSGVhZGVyOjpTaXplKSwgSlNJbnRlcmZhY2VKSVQ6OmFyZ3VtZW50R1BS
Mik7CiAKICAgICAvLyBDaGVjayB0byBzZWUgaWYgd2UgaGF2ZSBleHRyYSBzbG90cyB3ZSBjYW4g
dXNlCiAgICAgaml0Lm1vdmUoSlNJbnRlcmZhY2VKSVQ6OmFyZ3VtZW50R1BSMCwgSlNJbnRlcmZh
Y2VKSVQ6OmFyZ3VtZW50R1BSMSk7CkBAIC00NjksOCArNDY5LDggQEAgTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmIGFyaXR5Rml4dXBHZW5lcmF0bwogICAgIGppdC5wb3AoSlNJbnRlcmZhY2VKSVQ6OnJl
Z1Q0KTsKICMgIGVuZGlmCiAgICAgaml0Lm1vdmUoSlNJbnRlcmZhY2VKSVQ6OmNhbGxGcmFtZVJl
Z2lzdGVyLCBKU0ludGVyZmFjZUpJVDo6cmVnVDMpOwotICAgIGppdC5sb2FkMzIoSlNJbnRlcmZh
Y2VKSVQ6OkFkZHJlc3MoSlNJbnRlcmZhY2VKSVQ6OmNhbGxGcmFtZVJlZ2lzdGVyLCBKU1N0YWNr
OjpBcmd1bWVudENvdW50ICogc2l6ZW9mKFJlZ2lzdGVyKSksIEpTSW50ZXJmYWNlSklUOjphcmd1
bWVudEdQUjIpOwotICAgIGppdC5hZGQzMihKU0ludGVyZmFjZUpJVDo6VHJ1c3RlZEltbTMyKEpT
U3RhY2s6OkNhbGxGcmFtZUhlYWRlclNpemUpLCBKU0ludGVyZmFjZUpJVDo6YXJndW1lbnRHUFIy
KTsKKyAgICBqaXQubG9hZDMyKEpTSW50ZXJmYWNlSklUOjpBZGRyZXNzKEpTSW50ZXJmYWNlSklU
OjpjYWxsRnJhbWVSZWdpc3RlciwgQ2FsbEZyYW1lSGVhZGVyOjpBcmd1bWVudENvdW50ICogc2l6
ZW9mKFJlZ2lzdGVyKSksIEpTSW50ZXJmYWNlSklUOjphcmd1bWVudEdQUjIpOworICAgIGppdC5h
ZGQzMihKU0ludGVyZmFjZUpJVDo6VHJ1c3RlZEltbTMyKENhbGxGcmFtZUhlYWRlcjo6U2l6ZSks
IEpTSW50ZXJmYWNlSklUOjphcmd1bWVudEdQUjIpOwogCiAgICAgLy8gQ2hlY2sgdG8gc2VlIGlm
IHdlIGhhdmUgZXh0cmEgc2xvdHMgd2UgY2FuIHVzZQogICAgIGppdC5tb3ZlKEpTSW50ZXJmYWNl
SklUOjphcmd1bWVudEdQUjAsIEpTSW50ZXJmYWNlSklUOjphcmd1bWVudEdQUjEpOwpAQCAtMTA0
Myw4ICsxMDQzLDggQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGJvdW5kVGhpc05vQXJnc0Z1bgog
ICAgIGppdC5lbWl0RnVuY3Rpb25Qcm9sb2d1ZSgpOwogICAgIAogICAgIC8vIFNldCB1cCBvdXIg
Y2FsbCBmcmFtZS4KLSAgICBqaXQuc3RvcmVQdHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRy
KG51bGxwdHIpLCBDQ2FsbEhlbHBlcnM6OmFkZHJlc3NGb3IoSlNTdGFjazo6Q29kZUJsb2NrKSk7
Ci0gICAgaml0LnN0b3JlMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMCksIENDYWxsSGVs
cGVyczo6dGFnRm9yKEpTU3RhY2s6OkFyZ3VtZW50Q291bnQpKTsKKyAgICBqaXQuc3RvcmVQdHIo
Q0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKG51bGxwdHIpLCBDQ2FsbEhlbHBlcnM6OmFkZHJl
c3NGb3IoQ2FsbEZyYW1lSGVhZGVyOjpDb2RlQmxvY2spKTsKKyAgICBqaXQuc3RvcmUzMihDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW0zMigwKSwgQ0NhbGxIZWxwZXJzOjp0YWdGb3IoQ2FsbEZyYW1l
SGVhZGVyOjpBcmd1bWVudENvdW50KSk7CiAKICAgICB1bnNpZ25lZCBleHRyYVN0YWNrTmVlZGVk
ID0gMDsKICAgICBpZiAodW5zaWduZWQgc3RhY2tNaXNhbGlnbm1lbnQgPSBzaXplb2YoQ2FsbGVy
RnJhbWVBbmRQQykgJSBzdGFja0FsaWdubWVudEJ5dGVzKCkpCkBAIC0xMDY1LDggKzEwNjUsOCBA
QCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgYm91bmRUaGlzTm9BcmdzRnVuCiAgICAgLy8KICAgICAv
LyBUaGF0J3MgcmVhbGx5IGFsbCB0aGVyZSBpcyB0byB0aGlzLiBXZSBoYXZlIGFsbCB0aGUgcmVn
aXN0ZXJzIHdlIG5lZWQgdG8gZG8gaXQuCiAgICAgCi0gICAgaml0LmxvYWQzMihDQ2FsbEhlbHBl
cnM6OnBheWxvYWRGb3IoSlNTdGFjazo6QXJndW1lbnRDb3VudCksIEdQUkluZm86OnJlZ1QxKTsK
LSAgICBqaXQuYWRkMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoSlNTdGFjazo6Q2FsbEZy
YW1lSGVhZGVyU2l6ZSAtIEpTU3RhY2s6OkNhbGxlckZyYW1lQW5kUENTaXplKSwgR1BSSW5mbzo6
cmVnVDEsIEdQUkluZm86OnJlZ1QyKTsKKyAgICBqaXQubG9hZDMyKENDYWxsSGVscGVyczo6cGF5
bG9hZEZvcihDYWxsRnJhbWVIZWFkZXI6OkFyZ3VtZW50Q291bnQpLCBHUFJJbmZvOjpyZWdUMSk7
CisgICAgaml0LmFkZDMyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKENhbGxGcmFtZUhlYWRl
cjo6U2l6ZSAtIENhbGxGcmFtZUhlYWRlcjo6Q2FsbGVyRnJhbWVBbmRQQ1NpemUpLCBHUFJJbmZv
OjpyZWdUMSwgR1BSSW5mbzo6cmVnVDIpOwogICAgIGppdC5sc2hpZnQzMihDQ2FsbEhlbHBlcnM6
OlRydXN0ZWRJbW0zMigzKSwgR1BSSW5mbzo6cmVnVDIpOwogICAgIGppdC5hZGQzMihDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW0zMihzdGFja0FsaWdubWVudEJ5dGVzKCkgLSAxKSwgR1BSSW5mbzo6
cmVnVDIpOwogICAgIGppdC5hbmQzMihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigtc3RhY2tB
bGlnbm1lbnRCeXRlcygpKSwgR1BSSW5mbzo6cmVnVDIpOwpAQCAtMTA4MSwxNiArMTA4MSwxNiBA
QCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgYm91bmRUaGlzTm9BcmdzRnVuCiAKICAgICAvLyBEbyBi
YXNpYyBjYWxsZWUgZnJhbWUgc2V0dXAsIGluY2x1ZGluZyAndGhpcycuCiAgICAgCi0gICAgaml0
LmxvYWRDZWxsKENDYWxsSGVscGVyczo6YWRkcmVzc0ZvcihKU1N0YWNrOjpDYWxsZWUpLCBHUFJJ
bmZvOjpyZWdUMyk7CisgICAgaml0LmxvYWRDZWxsKENDYWxsSGVscGVyczo6YWRkcmVzc0ZvcihD
YWxsRnJhbWVIZWFkZXI6OkNhbGxlZSksIEdQUkluZm86OnJlZ1QzKTsKIAotICAgIGppdC5zdG9y
ZTMyKEdQUkluZm86OnJlZ1QxLCBDQ2FsbEhlbHBlcnM6OmNhbGxlZUZyYW1lUGF5bG9hZFNsb3Qo
SlNTdGFjazo6QXJndW1lbnRDb3VudCkpOworICAgIGppdC5zdG9yZTMyKEdQUkluZm86OnJlZ1Qx
LCBDQ2FsbEhlbHBlcnM6OmNhbGxlZUZyYW1lUGF5bG9hZFNsb3QoQ2FsbEZyYW1lSGVhZGVyOjpB
cmd1bWVudENvdW50KSk7CiAgICAgCiAgICAgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzID0gSlNWYWx1
ZVJlZ3M6OndpdGhUd29BdmFpbGFibGVSZWdzKEdQUkluZm86OnJlZ1QwLCBHUFJJbmZvOjpyZWdU
Mik7CiAgICAgaml0LmxvYWRWYWx1ZShDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6cmVn
VDMsIEpTQm91bmRGdW5jdGlvbjo6b2Zmc2V0T2ZCb3VuZFRoaXMoKSksIHZhbHVlUmVncyk7CiAg
ICAgaml0LnN0b3JlVmFsdWUodmFsdWVSZWdzLCBDQ2FsbEhlbHBlcnM6OmNhbGxlZUFyZ3VtZW50
U2xvdCgwKSk7CiAKICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5m
bzo6cmVnVDMsIEpTQm91bmRGdW5jdGlvbjo6b2Zmc2V0T2ZUYXJnZXRGdW5jdGlvbigpKSwgR1BS
SW5mbzo6cmVnVDMpOwotICAgIGppdC5zdG9yZUNlbGwoR1BSSW5mbzo6cmVnVDMsIENDYWxsSGVs
cGVyczo6Y2FsbGVlRnJhbWVTbG90KEpTU3RhY2s6OkNhbGxlZSkpOworICAgIGppdC5zdG9yZUNl
bGwoR1BSSW5mbzo6cmVnVDMsIENDYWxsSGVscGVyczo6Y2FsbGVlRnJhbWVTbG90KENhbGxGcmFt
ZUhlYWRlcjo6Q2FsbGVlKSk7CiAgICAgCiAgICAgLy8gT0ssIG5vdyB3ZSBjYW4gc3RhcnQgY29w
eWluZy4gVGhpcyBpcyBhIHNpbXBsZSBtYXR0ZXIgb2YgY29weWluZyBwYXJhbWV0ZXJzIGZyb20g
dGhlIGNhbGxlcidzCiAgICAgLy8gZnJhbWUgdG8gdGhlIGNhbGxlZSdzIGZyYW1lLiBOb3RlIHRo
YXQgd2Uga25vdyB0aGF0IHJlZ1QxICh0aGUgYXJndW1lbnQgY291bnQpIG11c3QgYmUgYXQKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwCShyZXZpc2lvbiAy
MDI5NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtOTYsMTggKzk2LDE4IEBAIHZvaWQgRGF0YTo6cGVyZm9ybUFzc2VydGlv
bnMoVk0mIHZtKQogCiAgICAgU1RBVElDX0FTU0VSVChzaXplb2Yodm9pZCopID09IFB0clNpemUp
OwogICAgIFNUQVRJQ19BU1NFUlQoc2l6ZW9mKFJlZ2lzdGVyKSA9PSBTbG90U2l6ZSk7Ci0gICAg
U1RBVElDX0FTU0VSVChKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJTaXplID09IENhbGxGcmFtZUhl
YWRlclNsb3RzKTsKKyAgICBTVEFUSUNfQVNTRVJUKENhbGxGcmFtZUhlYWRlcjo6U2l6ZSA9PSBD
YWxsRnJhbWVIZWFkZXJTbG90cyk7CiAKICAgICBBU1NFUlQoIUNhbGxGcmFtZTo6Y2FsbGVyRnJh
bWVPZmZzZXQoKSk7Ci0gICAgU1RBVElDX0FTU0VSVChKU1N0YWNrOjpDYWxsZXJGcmFtZUFuZFBD
U2l6ZSA9PSAoUHRyU2l6ZSAqIDIpIC8gU2xvdFNpemUpOworICAgIFNUQVRJQ19BU1NFUlQoQ2Fs
bEZyYW1lSGVhZGVyOjpDYWxsZXJGcmFtZUFuZFBDU2l6ZSA9PSAoUHRyU2l6ZSAqIDIpIC8gU2xv
dFNpemUpOwogICAgIEFTU0VSVChDYWxsRnJhbWU6OnJldHVyblBDT2Zmc2V0KCkgPT0gQ2FsbEZy
YW1lOjpjYWxsZXJGcmFtZU9mZnNldCgpICsgUHRyU2l6ZSk7Ci0gICAgQVNTRVJUKEpTU3RhY2s6
OkNvZGVCbG9jayAqIHNpemVvZihSZWdpc3RlcikgPT0gQ2FsbEZyYW1lOjpyZXR1cm5QQ09mZnNl
dCgpICsgUHRyU2l6ZSk7Ci0gICAgU1RBVElDX0FTU0VSVChKU1N0YWNrOjpDYWxsZWUgKiBzaXpl
b2YoUmVnaXN0ZXIpID09IEpTU3RhY2s6OkNvZGVCbG9jayAqIHNpemVvZihSZWdpc3RlcikgKyBT
bG90U2l6ZSk7Ci0gICAgU1RBVElDX0FTU0VSVChKU1N0YWNrOjpBcmd1bWVudENvdW50ICogc2l6
ZW9mKFJlZ2lzdGVyKSA9PSBKU1N0YWNrOjpDYWxsZWUgKiBzaXplb2YoUmVnaXN0ZXIpICsgU2xv
dFNpemUpOwotICAgIFNUQVRJQ19BU1NFUlQoSlNTdGFjazo6VGhpc0FyZ3VtZW50ICogc2l6ZW9m
KFJlZ2lzdGVyKSA9PSBKU1N0YWNrOjpBcmd1bWVudENvdW50ICogc2l6ZW9mKFJlZ2lzdGVyKSAr
IFNsb3RTaXplKTsKLSAgICBTVEFUSUNfQVNTRVJUKEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlclNp
emUgPT0gSlNTdGFjazo6VGhpc0FyZ3VtZW50KTsKKyAgICBBU1NFUlQoQ2FsbEZyYW1lSGVhZGVy
OjpDb2RlQmxvY2sgKiBzaXplb2YoUmVnaXN0ZXIpID09IENhbGxGcmFtZTo6cmV0dXJuUENPZmZz
ZXQoKSArIFB0clNpemUpOworICAgIFNUQVRJQ19BU1NFUlQoQ2FsbEZyYW1lSGVhZGVyOjpDYWxs
ZWUgKiBzaXplb2YoUmVnaXN0ZXIpID09IENhbGxGcmFtZUhlYWRlcjo6Q29kZUJsb2NrICogc2l6
ZW9mKFJlZ2lzdGVyKSArIFNsb3RTaXplKTsKKyAgICBTVEFUSUNfQVNTRVJUKENhbGxGcmFtZUhl
YWRlcjo6QXJndW1lbnRDb3VudCAqIHNpemVvZihSZWdpc3RlcikgPT0gQ2FsbEZyYW1lSGVhZGVy
OjpDYWxsZWUgKiBzaXplb2YoUmVnaXN0ZXIpICsgU2xvdFNpemUpOworICAgIFNUQVRJQ19BU1NF
UlQoQ2FsbEZyYW1lSGVhZGVyOjpUaGlzQXJndW1lbnQgKiBzaXplb2YoUmVnaXN0ZXIpID09IENh
bGxGcmFtZUhlYWRlcjo6QXJndW1lbnRDb3VudCAqIHNpemVvZihSZWdpc3RlcikgKyBTbG90U2l6
ZSk7CisgICAgU1RBVElDX0FTU0VSVChDYWxsRnJhbWVIZWFkZXI6OlNpemUgPT0gQ2FsbEZyYW1l
SGVhZGVyOjpUaGlzQXJndW1lbnQpOwogCi0gICAgQVNTRVJUKENhbGxGcmFtZTo6YXJndW1lbnRP
ZmZzZXRJbmNsdWRpbmdUaGlzKDApID09IEpTU3RhY2s6OlRoaXNBcmd1bWVudCk7CisgICAgQVNT
RVJUKENhbGxGcmFtZTo6YXJndW1lbnRPZmZzZXRJbmNsdWRpbmdUaGlzKDApID09IENhbGxGcmFt
ZUhlYWRlcjo6VGhpc0FyZ3VtZW50KTsKIAogI2lmIENQVShCSUdfRU5ESUFOKQogICAgIEFTU0VS
VChPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnRhZykgPT0g
MCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRo
cy5jcHAJKHJldmlzaW9uIDIwMjk1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludFNsb3dQYXRocy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMjYsNyArMTMyNiw3IEBAIGlu
bGluZSBTbG93UGF0aFJldHVyblR5cGUgZ2VuZXJpY0NhbGwoRXgKICAgICBFeGVjU3RhdGUqIGV4
ZWNDYWxsZWUgPSBleGVjIC0gcGNbNF0udS5vcGVyYW5kOwogICAgIAogICAgIGV4ZWNDYWxsZWUt
PnNldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKHBjWzNdLnUub3BlcmFuZCk7Ci0gICAgZXhl
Y0NhbGxlZS0+dW5jaGVja2VkUihKU1N0YWNrOjpDYWxsZWUpID0gY2FsbGVlQXNWYWx1ZTsKKyAg
ICBleGVjQ2FsbGVlLT51bmNoZWNrZWRSKENhbGxGcmFtZUhlYWRlcjo6Q2FsbGVlKSA9IGNhbGxl
ZUFzVmFsdWU7CiAgICAgZXhlY0NhbGxlZS0+c2V0Q2FsbGVyRnJhbWUoZXhlYyk7CiAgICAgCiAg
ICAgQVNTRVJUKHBjWzVdLnUuY2FsbExpbmtJbmZvKTsKQEAgLTE0MDUsNyArMTQwNSw3IEBAIGlu
bGluZSBTbG93UGF0aFJldHVyblR5cGUgdmFyYXJnc1NldHVwKEUKICAgICAgICAgc2V0dXBGb3J3
YXJkQXJndW1lbnRzRnJhbWVBbmRTZXRUaGlzKGV4ZWMsIGV4ZWNDYWxsZWUsIExMSU5UX09QX0Mo
MykuanNWYWx1ZSgpLCB2bS52YXJhcmdzTGVuZ3RoKTsKIAogICAgIGV4ZWNDYWxsZWUtPnNldENh
bGxlckZyYW1lKGV4ZWMpOwotICAgIGV4ZWNDYWxsZWUtPnVuY2hlY2tlZFIoSlNTdGFjazo6Q2Fs
bGVlKSA9IGNhbGxlZUFzVmFsdWU7CisgICAgZXhlY0NhbGxlZS0+dW5jaGVja2VkUihDYWxsRnJh
bWVIZWFkZXI6OkNhbGxlZSkgPSBjYWxsZWVBc1ZhbHVlOwogICAgIGV4ZWMtPnNldEN1cnJlbnRW
UEMocGMpOwogCiAgICAgcmV0dXJuIHNldFVwQ2FsbChleGVjQ2FsbGVlLCBwYywga2luZCwgY2Fs
bGVlQXNWYWx1ZSk7CkBAIC0xNDM2LDcgKzE0MzYsNyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChz
bG93X3BhdGhfY2FsbF9ldmFsCiAgICAgCiAgICAgZXhlY0NhbGxlZS0+c2V0QXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMocGNbM10udS5vcGVyYW5kKTsKICAgICBleGVjQ2FsbGVlLT5zZXRDYWxs
ZXJGcmFtZShleGVjKTsKLSAgICBleGVjQ2FsbGVlLT51bmNoZWNrZWRSKEpTU3RhY2s6OkNhbGxl
ZSkgPSBjYWxsZWVBc1ZhbHVlOworICAgIGV4ZWNDYWxsZWUtPnVuY2hlY2tlZFIoQ2FsbEZyYW1l
SGVhZGVyOjpDYWxsZWUpID0gY2FsbGVlQXNWYWx1ZTsKICAgICBleGVjQ2FsbGVlLT5zZXRSZXR1
cm5QQyhMTEludDo6Z2V0Q29kZVB0cihsbGludF9nZW5lcmljX3JldHVybl9wb2ludCkpOwogICAg
IGV4ZWNDYWxsZWUtPnNldENvZGVCbG9jaygwKTsKICAgICBleGVjLT5zZXRDdXJyZW50VlBDKHBj
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQ
YXRocy5oCShyZXZpc2lvbiAyMDI5NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db21tb25TbG93UGF0aHMuaAkod29ya2luZyBjb3B5KQpAQCAtNjAsOSArNjAsOSBAQCBBTFdB
WVNfSU5MSU5FIGludCBhcml0eUNoZWNrRm9yKEV4ZWNTdGF0CiAgICAgaW50IGFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzID0gZXhlYy0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoKTsKICAg
ICAKICAgICBBU1NFUlQoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPCBuZXdDb2RlQmxvY2st
Pm51bVBhcmFtZXRlcnMoKSk7Ci0gICAgaW50IGZyYW1lU2l6ZSA9IGFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzICsgSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyU2l6ZTsKKyAgICBpbnQgZnJhbWVT
aXplID0gYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgKyBDYWxsRnJhbWVIZWFkZXI6OlNpemU7
CiAgICAgaW50IGFsaWduZWRGcmFtZVNpemVGb3JQYXJhbWV0ZXJzID0gV1RGOjpyb3VuZFVwVG9N
dWx0aXBsZU9mKHN0YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCksCi0gICAgICAgIG5ld0NvZGVCbG9j
ay0+bnVtUGFyYW1ldGVycygpICsgSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyU2l6ZSk7CisgICAg
ICAgIG5ld0NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpICsgQ2FsbEZyYW1lSGVhZGVyOjpTaXpl
KTsKICAgICBpbnQgcGFkZGVkU3RhY2tTcGFjZSA9IGFsaWduZWRGcmFtZVNpemVGb3JQYXJhbWV0
ZXJzIC0gZnJhbWVTaXplOwogCiAgICAgaWYgKCFzdGFjay0+ZW5zdXJlQ2FwYWNpdHlGb3IoZXhl
Yy0+cmVnaXN0ZXJzKCkgLSBwYWRkZWRTdGFja1NwYWNlICUgc3RhY2tBbGlnbm1lbnRSZWdpc3Rl
cnMoKSkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3QuY3BwCShyZXZpc2lvbiAyMDI5NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyMCw4ICszMjAs
NiBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojppbml0KFZNJiB2bSkKIAogICAgIEJhc2U6OnNldFN0
cnVjdHVyZSh2bSwgU3RydWN0dXJlOjp0b0NhY2hlYWJsZURpY3Rpb25hcnlUcmFuc2l0aW9uKHZt
LCBzdHJ1Y3R1cmUoKSkpOwogCi0gICAgSlNHbG9iYWxPYmplY3Q6Omdsb2JhbEV4ZWMoKS0+aW5p
dCgwLCAwLCBDYWxsRnJhbWU6Om5vQ2FsbGVyKCksIDAsIDApOwotCiAgICAgbV9kZWJ1Z2dlciA9
IDA7CiAKICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKQEAgLTMzMSwxNSArMzI5LDE2IEBA
IHZvaWQgSlNHbG9iYWxPYmplY3Q6OmluaXQoVk0mIHZtKQogICAgIG1fY29uc29sZUNsaWVudCA9
IG1faW5zcGVjdG9yQ29udHJvbGxlci0+Y29uc29sZUNsaWVudCgpOwogI2VuZGlmCiAKLSAgICBF
eGVjU3RhdGUqIGV4ZWMgPSBKU0dsb2JhbE9iamVjdDo6Z2xvYmFsRXhlYygpOwotCiAgICAgbV9m
dW5jdGlvblByb3RvdHlwZS5zZXQodm0sIHRoaXMsIEZ1bmN0aW9uUHJvdG90eXBlOjpjcmVhdGUo
dm0sIEZ1bmN0aW9uUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIGpzTnVsbCgp
KSkpOyAvLyBUaGUgcmVhbCBwcm90b3R5cGUgd2lsbCBiZSBzZXQgb25jZSBPYmplY3RQcm90b3R5
cGUgaXMgY3JlYXRlZC4KICAgICBtX2NhbGxlZVN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIEpTQ2Fs
bGVlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIGpzTnVsbCgpKSk7CiAKICAgICBtX2dsb2Jh
bExleGljYWxFbnZpcm9ubWVudC5zZXQodm0sIHRoaXMsIEpTR2xvYmFsTGV4aWNhbEVudmlyb25t
ZW50OjpjcmVhdGUodm0sIEpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50OjpjcmVhdGVTdHJ1Y3R1
cmUodm0sIHRoaXMpLCB0aGlzKSk7CiAgICAgLy8gTmVlZCB0byBjcmVhdGUgdGhlIGNhbGxlZSBz
dHJ1Y3R1cmUgKGFib3ZlKSBiZWZvcmUgY3JlYXRpbmcgdGhlIGNhbGxlZS4KLSAgICBtX2dsb2Jh
bENhbGxlZS5zZXQodm0sIHRoaXMsIEpTQ2FsbGVlOjpjcmVhdGUodm0sIHRoaXMsIGdsb2JhbFNj
b3BlKCkpKTsKLSAgICBleGVjLT5zZXRDYWxsZWUobV9nbG9iYWxDYWxsZWUuZ2V0KCkpOworICAg
IEpTQ2FsbGVlKiBnbG9iYWxDYWxsZWUgPSBKU0NhbGxlZTo6Y3JlYXRlKHZtLCB0aGlzLCBnbG9i
YWxTY29wZSgpKTsKKyAgICBtX2dsb2JhbENhbGxlZS5zZXQodm0sIHRoaXMsIGdsb2JhbENhbGxl
ZSk7CisKKyAgICBFeGVjU3RhdGU6OmluaXRHbG9iYWxFeGVjKEpTR2xvYmFsT2JqZWN0OjpnbG9i
YWxFeGVjKCksIGdsb2JhbENhbGxlZSk7CisgICAgRXhlY1N0YXRlKiBleGVjID0gSlNHbG9iYWxP
YmplY3Q6Omdsb2JhbEV4ZWMoKTsKIAogICAgIG1fZnVuY3Rpb25TdHJ1Y3R1cmUuc2V0KHZtLCB0
aGlzLCBKU0Z1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90
b3R5cGUuZ2V0KCkpKTsKICAgICBtX2N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uU3RydWN0dXJl
LmluaXRMYXRlcigKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuaAkocmV2aXNpb24gMjAyOTU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMjA5LDcgKzIwOSw3
IEBAIHByaXZhdGU6CiBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gdXNpbmcgSW5p
dGlhbGl6ZXIgPSB0eXBlbmFtZSBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIFQ+OjpJbml0
aWFsaXplcjsKICAgICAKLSAgICBSZWdpc3RlciBtX2dsb2JhbENhbGxGcmFtZVtKU1N0YWNrOjpD
YWxsRnJhbWVIZWFkZXJTaXplXTsKKyAgICBSZWdpc3RlciBtX2dsb2JhbENhbGxGcmFtZVtDYWxs
RnJhbWVIZWFkZXI6OlNpemVdOwogCiAgICAgV3JpdGVCYXJyaWVyPEpTT2JqZWN0PiBtX2dsb2Jh
bFRoaXM7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0YWNrQWxpZ25t
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RhY2tB
bGlnbm1lbnQuaAkocmV2aXNpb24gMjAyOTU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RhY2tBbGlnbm1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDQsMTQgKzQ0LDE0IEBA
IGlubGluZSB1bnNpZ25lZCBzdGFja0FsaWdubWVudFJlZ2lzdGVycygKIC8vIGFuICJ1bmFsaWdu
ZWQiIGNvdW50IG9mIHJlZ2lzdGVycy4KIGlubGluZSB1bnNpZ25lZCByb3VuZEFyZ3VtZW50Q291
bnRUb0FsaWduRnJhbWUodW5zaWduZWQgYXJndW1lbnRDb3VudCkKIHsKLSAgICByZXR1cm4gV1RG
Ojpyb3VuZFVwVG9NdWx0aXBsZU9mKHN0YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCksIGFyZ3VtZW50
Q291bnQgKyBKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJTaXplKSAtIEpTU3RhY2s6OkNhbGxGcmFt
ZUhlYWRlclNpemU7CisgICAgcmV0dXJuIFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZihzdGFja0Fs
aWdubWVudFJlZ2lzdGVycygpLCBhcmd1bWVudENvdW50ICsgQ2FsbEZyYW1lSGVhZGVyOjpTaXpl
KSAtIENhbGxGcmFtZUhlYWRlcjo6U2l6ZTsKIH0KIAogLy8gQWxpZ24gbG9jYWwgcmVnaXN0ZXIg
Y291bnQgdG8gbWFrZSB0aGUgbGFzdCBsb2NhbCBlbmQgb24gYSBzdGFjayBhbGlnbmVkIGFkZHJl
c3MgZ2l2ZW4gdGhlCi0vLyBDYWxsRnJhbWUgaXMgYXQgYW4gYWRkcmVzcyB0aGF0IGlzIHN0YWNr
IGFsaWduZWQgbWludXMgSlNTdGFjazo6Q2FsbGVyRnJhbWVBbmRQQ1NpemUKKy8vIENhbGxGcmFt
ZSBpcyBhdCBhbiBhZGRyZXNzIHRoYXQgaXMgc3RhY2sgYWxpZ25lZCBtaW51cyBDYWxsRnJhbWVI
ZWFkZXI6OkNhbGxlckZyYW1lQW5kUENTaXplCiBpbmxpbmUgdW5zaWduZWQgcm91bmRMb2NhbFJl
Z2lzdGVyQ291bnRGb3JGcmFtZVBvaW50ZXJPZmZzZXQodW5zaWduZWQgbG9jYWxSZWdpc3RlckNv
dW50KQogewotICAgIHJldHVybiBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Yoc3RhY2tBbGlnbm1l
bnRSZWdpc3RlcnMoKSwgbG9jYWxSZWdpc3RlckNvdW50ICsgSlNTdGFjazo6Q2FsbGVyRnJhbWVB
bmRQQ1NpemUpIC0gSlNTdGFjazo6Q2FsbGVyRnJhbWVBbmRQQ1NpemU7CisgICAgcmV0dXJuIFdU
Rjo6cm91bmRVcFRvTXVsdGlwbGVPZihzdGFja0FsaWdubWVudFJlZ2lzdGVycygpLCBsb2NhbFJl
Z2lzdGVyQ291bnQgKyBDYWxsRnJhbWVIZWFkZXI6OkNhbGxlckZyYW1lQW5kUENTaXplKSAtIENh
bGxGcmFtZUhlYWRlcjo6Q2FsbGVyRnJhbWVBbmRQQ1NpemU7CiB9CiAKIGlubGluZSB1bnNpZ25l
ZCBsb2dTdGFja0FsaWdubWVudFJlZ2lzdGVycygpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XQVNNRnVuY3Rpb25Db21waWxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dBU01GdW5jdGlvbkNvbXBpbGVyLmgJKHJldmlzaW9uIDIwMjk1NCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01GdW5jdGlvbkNvbXBpbGVyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEzMCw3ICsxMzAsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fY29kZUJs
b2NrLT5zZXRDYWxsZWVTYXZlUmVnaXN0ZXJzKFJlZ2lzdGVyU2V0Ojp3ZWJBc3NlbWJseUNhbGxl
ZVNhdmVSZWdpc3RlcnMoKSk7CiAKICAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoKTsKLSAg
ICAgICAgZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVyKG1fY29kZUJsb2NrLCBKU1N0YWNrOjpDb2Rl
QmxvY2spOworICAgICAgICBlbWl0UHV0VG9DYWxsRnJhbWVIZWFkZXIobV9jb2RlQmxvY2ssIENh
bGxGcmFtZUhlYWRlcjo6Q29kZUJsb2NrKTsKIAogICAgICAgICBtX2JlZ2luTGFiZWwgPSBsYWJl
bCgpOwogCkBAIC0yMTcsNyArMjE3LDcgQEAgcHVibGljOgogICAgICAgICAvLyBGSVhNRTogSW1w
bGVtZW50IGFyaXR5IGNoZWNrLgogICAgICAgICBMYWJlbCBhcml0eUNoZWNrID0gbGFiZWwoKTsK
ICAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoKTsKLSAgICAgICAgZW1pdFB1dFRvQ2FsbEZy
YW1lSGVhZGVyKG1fY29kZUJsb2NrLCBKU1N0YWNrOjpDb2RlQmxvY2spOworICAgICAgICBlbWl0
UHV0VG9DYWxsRnJhbWVIZWFkZXIobV9jb2RlQmxvY2ssIENhbGxGcmFtZUhlYWRlcjo6Q29kZUJs
b2NrKTsKICAgICAgICAganVtcChtX2JlZ2luTGFiZWwpOwogCiAgICAgICAgIGlmICghbV9kaXZp
ZGVFcnJvckp1bXBMaXN0LmVtcHR5KCkpIHsKQEAgLTEzNDcsNyArMTM0Nyw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBib3hBcmd1bWVudHNBbmRBZGp1c3RTdGFja1BvaW50ZXIoY29uc3QgVmVjdG9y
PFdBU01UeXBlPiYgYXJndW1lbnRzKQogICAgIHsKICAgICAgICAgc2l6ZV90IGFyZ3VtZW50Q291
bnQgPSBhcmd1bWVudHMuc2l6ZSgpOwotICAgICAgICBpbnQgc3RhY2tPZmZzZXQgPSAtbV9jYWxs
ZWVTYXZlU3BhY2UgLSBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Yoc3RhY2tBbGlnbm1lbnRSZWdp
c3RlcnMoKSwgbV9udW1iZXJPZkxvY2FscyArIG1fdGVtcFN0YWNrVG9wICsgYXJndW1lbnRDb3Vu
dCArIDEgKyBKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJTaXplKTsKKyAgICAgICAgaW50IHN0YWNr
T2Zmc2V0ID0gLW1fY2FsbGVlU2F2ZVNwYWNlIC0gV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mKHN0
YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCksIG1fbnVtYmVyT2ZMb2NhbHMgKyBtX3RlbXBTdGFja1Rv
cCArIGFyZ3VtZW50Q291bnQgKyAxICsgQ2FsbEZyYW1lSGVhZGVyOjpTaXplKTsKIAogICAgICAg
ICBzdG9yZVRydXN0ZWRWYWx1ZShqc1VuZGVmaW5lZCgpLCBBZGRyZXNzKEdQUkluZm86OmNhbGxG
cmFtZVJlZ2lzdGVyLCAoc3RhY2tPZmZzZXQgKyBDYWxsRnJhbWU6OnRoaXNBcmd1bWVudE9mZnNl
dCgpKSAqIHNpemVvZihSZWdpc3RlcikpKTsKIApAQCAtMTM4NCwxNyArMTM4NCwxNyBAQCBwcml2
YXRlOgogICAgICAgICBtX3RlbXBTdGFja1RvcCAtPSBhcmd1bWVudENvdW50OwogCiAgICAgICAg
IGFkZFB0cihUcnVzdGVkSW1tMzIoc3RhY2tPZmZzZXQgKiBzaXplb2YoUmVnaXN0ZXIpICsgc2l6
ZW9mKENhbGxlckZyYW1lQW5kUEMpKSwgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIHN0YWNr
UG9pbnRlclJlZ2lzdGVyKTsKLSAgICAgICAgc3RvcmUzMihUcnVzdGVkSW1tMzIoYXJndW1lbnRD
b3VudCArIDEpLCBBZGRyZXNzKHN0YWNrUG9pbnRlclJlZ2lzdGVyLCBKU1N0YWNrOjpBcmd1bWVu
dENvdW50ICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSArIFBheWxvYWRPZmZz
ZXQgLSBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykpKTsKKyAgICAgICAgc3RvcmUzMihUcnVzdGVk
SW1tMzIoYXJndW1lbnRDb3VudCArIDEpLCBBZGRyZXNzKHN0YWNrUG9pbnRlclJlZ2lzdGVyLCBD
YWxsRnJhbWVIZWFkZXI6OkFyZ3VtZW50Q291bnQgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihS
ZWdpc3RlcikpICsgUGF5bG9hZE9mZnNldCAtIHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSkpOwog
ICAgIH0KIAogICAgIHZvaWQgY2FsbEFuZFVuYm94UmVzdWx0KFdBU01FeHByZXNzaW9uVHlwZSBy
ZXR1cm5UeXBlKQogICAgIHsKICAgICAgICAgLy8gcmVnVDAgaG9sZHMgY2FsbGVlLgogI2lmIFVT
RShKU1ZBTFVFNjQpCi0gICAgICAgIHN0b3JlNjQoR1BSSW5mbzo6cmVnVDAsIEFkZHJlc3Moc3Rh
Y2tQb2ludGVyUmVnaXN0ZXIsIEpTU3RhY2s6OkNhbGxlZSAqIHN0YXRpY19jYXN0PGludD4oc2l6
ZW9mKFJlZ2lzdGVyKSkgLSBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykpKTsKKyAgICAgICAgc3Rv
cmU2NChHUFJJbmZvOjpyZWdUMCwgQWRkcmVzcyhzdGFja1BvaW50ZXJSZWdpc3RlciwgQ2FsbEZy
YW1lSGVhZGVyOjpDYWxsZWUgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpIC0g
c2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKSk7CiAjZWxzZQotICAgICAgICBzdG9yZTMyKEdQUklu
Zm86OnJlZ1QwLCBBZGRyZXNzKHN0YWNrUG9pbnRlclJlZ2lzdGVyLCBKU1N0YWNrOjpDYWxsZWUg
KiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpICsgUGF5bG9hZE9mZnNldCAtIHNp
emVvZihDYWxsZXJGcmFtZUFuZFBDKSkpOwotICAgICAgICBzdG9yZTMyKFRydXN0ZWRJbW0zMihK
U1ZhbHVlOjpDZWxsVGFnKSwgQWRkcmVzcyhzdGFja1BvaW50ZXJSZWdpc3RlciwgSlNTdGFjazo6
Q2FsbGVlICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSArIFRhZ09mZnNldCAt
IHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSkpOworICAgICAgICBzdG9yZTMyKEdQUkluZm86OnJl
Z1QwLCBBZGRyZXNzKHN0YWNrUG9pbnRlclJlZ2lzdGVyLCBDYWxsRnJhbWVIZWFkZXI6OkNhbGxl
ZSAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkgKyBQYXlsb2FkT2Zmc2V0IC0g
c2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKSk7CisgICAgICAgIHN0b3JlMzIoVHJ1c3RlZEltbTMy
KEpTVmFsdWU6OkNlbGxUYWcpLCBBZGRyZXNzKHN0YWNrUG9pbnRlclJlZ2lzdGVyLCBDYWxsRnJh
bWVIZWFkZXI6OkNhbGxlZSAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkgKyBU
YWdPZmZzZXQgLSBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykpKTsKICNlbmRpZgogCiAgICAgICAg
IERhdGFMYWJlbFB0ciBhZGRyZXNzT2ZMaW5rZWRGdW5jdGlvbkNoZWNrOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUZ1bmN0aW9uU3ludGF4Q2hlY2tlci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01GdW5jdGlvblN5bnRheENoZWNr
ZXIuaAkocmV2aXNpb24gMjAyOTU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FT
TUZ1bmN0aW9uU3ludGF4Q2hlY2tlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNzAsOSArMjcwLDkg
QEAgcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZVRlbXBTdGFja0hlaWdodEZvckNhbGwoc2l6ZV90
IGFyZ3VtZW50Q291bnQpCiAgICAgewogICAgICAgICAvLyBCb3hlZCBhcmd1bWVudHMgKyB0aGlz
IGFyZ3VtZW50ICsgY2FsbCBmcmFtZSBoZWFkZXIgKyBtYXhpbXVtIHBhZGRpbmcuCi0gICAgICAg
IG1fdGVtcFN0YWNrVG9wICs9IGFyZ3VtZW50Q291bnQgKyAxICsgSlNTdGFjazo6Q2FsbEZyYW1l
SGVhZGVyU2l6ZSArIDE7CisgICAgICAgIG1fdGVtcFN0YWNrVG9wICs9IGFyZ3VtZW50Q291bnQg
KyAxICsgQ2FsbEZyYW1lSGVhZGVyOjpTaXplICsgMTsKICAgICAgICAgdXBkYXRlVGVtcFN0YWNr
SGVpZ2h0KCk7Ci0gICAgICAgIG1fdGVtcFN0YWNrVG9wIC09IGFyZ3VtZW50Q291bnQgKyAxICsg
SlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyU2l6ZSArIDE7CisgICAgICAgIG1fdGVtcFN0YWNrVG9w
IC09IGFyZ3VtZW50Q291bnQgKyAxICsgQ2FsbEZyYW1lSGVhZGVyOjpTaXplICsgMTsKICAgICB9
CiAKICAgICB1bnNpZ25lZCBtX251bWJlck9mTG9jYWxzOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>283208</attachid>
            <date>2016-07-08 15:50:41 -0700</date>
            <delta_ts>2016-07-08 15:50:41 -0700</delta_ts>
            <desc>Patch for landing.</desc>
            <filename>bug-159549b.patch</filename>
            <type>text/plain</type>
            <size>140070</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjAyOTk0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI1NyBA
QAorMjAxNi0wNy0wOCAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAg
TW92ZSBDYWxsRnJhbWUgaGVhZGVyIGluZm8gZnJvbSBKU1N0YWNrLmggdG8gQ2FsbEZyYW1lLmgK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1OTU0OQor
CisgICAgICAgIFJldmlld2VkIGJ5IEdlb2ZmcmV5IEdhcmVuLgorCisgICAgICAgIENhbGxGcmFt
ZS5oIGlzIGEgbXVjaCBiZXR0ZXIgbG9jYXRpb24gZm9yIENhbGxGcmFtZSBoZWFkZXIgaW5mby4K
KworICAgICAgICBSZXBsYWNlZCBDYWxsRnJhbWU6OmluaXQoKSB3aXRoIEV4ZWNTdGF0ZTo6aW5p
dEdsb2JhbEV4ZWMoKSBiZWNhdXNlIG5vcm1hbAorICAgICAgICBDYWxsRnJhbWVzIGFyZSBzZXR1
cCBieSBhIGRpZmZlcmVudCBtZWNoYW5pc20gbm93LiAgT25seSB0aGUgZ2xvYmFsRXhlYyBpcyBz
dGlsbAorICAgICAgICB1c2luZyBpdC4gIFNvLCBtaWdodCBhcyB3ZWxsIGNoYW5nZSBpdCB0byBi
ZSBzcGVjaWZpY2FsbHkgZm9yIHRoZSBnbG9iYWxFeGVjLgorCisgICAgICAgIFJlbW92ZWQgdGhl
IHVzZSBvZiBKU1N0YWNrOjpjb250YWluc0FkZHJlc3MoKSBpbiBFeGVjU3RhdGU6OmluaXRHbG9i
YWxFeGVjKCkKKyAgICAgICAgYmVjYXVzZSBpdCBpcyBub3QgcmVsZXZhbnQgdG8gdGhlIGdsb2Jh
bEV4ZWMuCisKKyAgICAgICAgQWxzbyByZW1vdmVkIHNvbWUgdW51c2VkIGNvZGU6IEpTU3RhY2s6
OmdhdGhlckNvbnNlcnZhdGl2ZVJvb3RzKCkgYW5kCisgICAgICAgIEpTU3RhY2s6OnNhbml0aXpl
U3RhY2soKSBpcyBuZXZlciBjYWxsZWQgZm9yIEpJVCBidWlsZHMuCisKKyAgICAgICAgKiBieXRl
Y29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6Omdl
bmVyYXRlSW1wbCk6CisgICAgICAgICogYnl0ZWNvZGUvVmlydHVhbFJlZ2lzdGVyLmg6CisgICAg
ICAgIChKU0M6OlZpcnR1YWxSZWdpc3Rlcjo6aXNWYWxpZCk6CisgICAgICAgIChKU0M6OlZpcnR1
YWxSZWdpc3Rlcjo6aXNMb2NhbCk6CisgICAgICAgIChKU0M6OlZpcnR1YWxSZWdpc3Rlcjo6aXNB
cmd1bWVudCk6CisgICAgICAgIChKU0M6OlZpcnR1YWxSZWdpc3Rlcjo6aXNIZWFkZXIpOgorICAg
ICAgICAoSlNDOjpWaXJ0dWFsUmVnaXN0ZXI6OmlzQ29uc3RhbnQpOgorICAgICAgICAoSlNDOjpW
aXJ0dWFsUmVnaXN0ZXI6OnRvTG9jYWwpOgorICAgICAgICAoSlNDOjpWaXJ0dWFsUmVnaXN0ZXI6
OnRvQXJndW1lbnQpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5j
cHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcik6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2FsbCk6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q29uc3RydWN0KToKKyAgICAgICAgKiBieXRlY29t
cGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKEpTQzo6Q2FsbEFyZ3VtZW50czo6
dGhpc1JlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6Q2FsbEFyZ3VtZW50czo6YXJndW1lbnRSZWdp
c3Rlcik6CisgICAgICAgIChKU0M6OkNhbGxBcmd1bWVudHM6OnN0YWNrT2Zmc2V0KToKKyAgICAg
ICAgKEpTQzo6Q2FsbEFyZ3VtZW50czo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpOgorICAg
ICAgICAoSlNDOjpDYWxsQXJndW1lbnRzOjphcmd1bWVudHNOb2RlKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6OnJlZ2lzdGVyRm9yKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIv
Tm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAgKEpTQzo6ZW1pdEhvbWVPYmplY3RGb3JDYWxsZWUp
OgorICAgICAgICAoSlNDOjplbWl0R2V0U3VwZXJGdW5jdGlvbkZvckNvbnN0cnVjdCk6CisgICAg
ICAgIChKU0M6OkNhbGxBcmd1bWVudHM6OkNhbGxBcmd1bWVudHMpOgorICAgICAgICAqIGRmZy9E
RkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHQXJndW1l
bnRzVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjphcmd1bWVudHNJbnZvbHZlU3Rh
Y2tTbG90KToKKyAgICAgICAgKEpTQzo6REZHOjplbWl0Q29kZVRvR2V0QXJndW1lbnRzQXJyYXlM
ZW5ndGgpOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmdldCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNv
ZGVQYXJzZXI6OmZpbmRBcmd1bWVudFBvc2l0aW9uRm9yTG9jYWwpOgorICAgICAgICAoSlNDOjpE
Rkc6OkJ5dGVDb2RlUGFyc2VyOjpmbHVzaCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQ
YXJzZXI6OmFkZENhbGxXaXRob3V0U2V0dGluZ1Jlc3VsdCk6CisgICAgICAgIChKU0M6OkRGRzo6
Qnl0ZUNvZGVQYXJzZXI6OmdldEFyZ3VtZW50Q291bnQpOgorICAgICAgICAoSlNDOjpERkc6OkJ5
dGVDb2RlUGFyc2VyOjppbmxpbmVDYWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBh
cnNlcjo6aGFuZGxlSW5saW5pbmcpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2Vy
OjpoYW5kbGVHZXRCeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFu
ZGxlUHV0QnlJZCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxv
Y2spOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpJbmxpbmVTdGFja0VudHJ5
OjpJbmxpbmVTdGFja0VudHJ5KToKKyAgICAgICAgKiBkZmcvREZHQ2xvYmJlcml6ZS5oOgorICAg
ICAgICAoSlNDOjpERkc6OmNsb2JiZXJpemUpOgorICAgICAgICAqIGRmZy9ERkdHcmFwaC5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmlzTGl2ZUluQnl0ZWNvZGUpOgorICAgICAgICAq
IGRmZy9ERkdHcmFwaC5oOgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjpmb3JBbGxMb2NhbHNM
aXZlSW5CeXRlY29kZSk6CisgICAgICAgICogZGZnL0RGR0pJVENvbXBpbGVyLmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6Y29tcGlsZUVudHJ5KToKKyAgICAgICAgKEpTQzo6
REZHOjpKSVRDb21waWxlcjo6Y29tcGlsZVNldHVwUmVnaXN0ZXJzRm9yRW50cnkpOgorICAgICAg
ICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjpjb21waWxlRnVuY3Rpb24pOgorICAgICAgICAqIGRm
Zy9ERkdKSVRDb21waWxlci5oOgorICAgICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjplbWl0
U3RvcmVDYWxsU2l0ZUluZGV4KToKKyAgICAgICAgKiBkZmcvREZHT1NSQXZhaWxhYmlsaXR5QW5h
bHlzaXNQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6TG9jYWxPU1JBdmFpbGFiaWxpdHlD
YWxjdWxhdG9yOjpleGVjdXRlTm9kZSk6CisgICAgICAgICogZGZnL0RGR09TUkVudHJ5LmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpwcmVwYXJlT1NSRW50cnkpOgorICAgICAgICAqIGRmZy9ERkdP
U1JFeGl0Q29tcGlsZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6Ok9TUkV4aXRDb21waWxlcjo6
ZW1pdFJlc3RvcmVBcmd1bWVudHMpOgorICAgICAgICAqIGRmZy9ERkdPU1JFeGl0Q29tcGlsZXJD
b21tb24uY3BwOgorICAgICAgICAoSlNDOjpERkc6OnJlaWZ5SW5saW5lZENhbGxGcmFtZXMpOgor
ICAgICAgICAqIGRmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uaDoKKyAgICAgICAgKEpTQzo6
REZHOjphZGp1c3RGcmFtZUFuZFN0YWNrSW5PU1JFeGl0Q29tcGlsZXJUaHVuayk6CisgICAgICAg
ICogZGZnL0RGR1ByZWNpc2VMb2NhbENsb2JiZXJpemUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpQ
cmVjaXNlTG9jYWxDbG9iYmVyaXplQWRhcHRvcjo6cmVhZFRvcCk6CisgICAgICAgICogZGZnL0RG
R1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
ZW1pdEdldExlbmd0aCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRH
ZXRDYWxsZWUpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0R2V0QXJn
dW1lbnRTdGFydCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVD
cmVhdGVEaXJlY3RBcmd1bWVudHMpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMy
XzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwpOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBk
ZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmVtaXRDYWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZSk6CisgICAgICAgICogZGZnL0RGR1N0YWNrTGF5b3V0UGhhc2UuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OlN0YWNrTGF5b3V0UGhhc2U6OnJ1bik6CisgICAgICAgICogZGZnL0RGR1RodW5r
cy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6b3NyRW50cnlUaHVua0dlbmVyYXRvcik6CisgICAg
ICAgICogZnRsL0ZUTExpbmsuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmxpbmspOgorICAgICAg
ICAqIGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93
ZXJERkdUb0IzOjpsb3dlcik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6
OmNvbXBpbGVHZXRNeUFyZ3VtZW50QnlWYWwpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93
ZXJERkdUb0IzOjpjb21waWxlR2V0Q2FsbGVlKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxv
d2VyREZHVG9CMzo6Y29tcGlsZUdldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKToKKyAgICAg
ICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUdldFNjb3BlKToKKyAgICAg
ICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUNhbGxPckNvbnN0cnVjdCk6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVUYWlsQ2FsbCk6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVDYWxsT3JDb25z
dHJ1Y3RWYXJhcmdzKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29t
cGlsZUxvZ1NoYWRvd0NoaWNrZW5Qcm9sb2d1ZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpM
b3dlckRGR1RvQjM6OmdldEFyZ3VtZW50c0xlbmd0aCk6CisgICAgICAgIChKU0M6OkZUTDo6REZH
OjpMb3dlckRGR1RvQjM6OmdldEN1cnJlbnRDYWxsZWUpOgorICAgICAgICAoSlNDOjpGVEw6OkRG
Rzo6TG93ZXJERkdUb0IzOjpnZXRBcmd1bWVudHNTdGFydCk6CisgICAgICAgIChKU0M6OkZUTDo6
REZHOjpMb3dlckRGR1RvQjM6OmNhbGxQcmVmbGlnaHQpOgorICAgICAgICAqIGZ0bC9GVExPU1JF
eGl0Q29tcGlsZXIuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmNvbXBpbGVTdHViKToKKyAgICAg
ICAgKiBmdGwvRlRMU2xvd1BhdGhDYWxsLmg6CisgICAgICAgIChKU0M6OkZUTDo6Y2FsbE9wZXJh
dGlvbik6CisgICAgICAgICogaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmNwcDoKKyAgICAgICAgKEpT
Qzo6RXhlY1N0YXRlOjppbml0R2xvYmFsRXhlYyk6CisgICAgICAgIChKU0M6OkNhbGxGcmFtZTo6
Y2FsbFNpdGVCaXRzQXJlQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpDYWxsRnJhbWU6
OmNhbGxTaXRlQXNSYXdCaXRzKToKKyAgICAgICAgKEpTQzo6Q2FsbEZyYW1lOjp1bnNhZmVDYWxs
U2l0ZUFzUmF3Qml0cyk6CisgICAgICAgIChKU0M6OkNhbGxGcmFtZTo6Y2FsbFNpdGVJbmRleCk6
CisgICAgICAgIChKU0M6OkNhbGxGcmFtZTo6c2V0Q3VycmVudFZQQyk6CisgICAgICAgIChKU0M6
OkNhbGxGcmFtZTo6Y2FsbFNpdGVCaXRzQXNCeXRlY29kZU9mZnNldCk6CisgICAgICAgICogaW50
ZXJwcmV0ZXIvQ2FsbEZyYW1lLmg6CisgICAgICAgIChKU0M6OkNhbGxTaXRlSW5kZXg6OkNhbGxT
aXRlSW5kZXgpOgorICAgICAgICAoSlNDOjpFeGVjU3RhdGU6OmNhbGxlZUFzVmFsdWUpOgorICAg
ICAgICAoSlNDOjpFeGVjU3RhdGU6OmNhbGxlZSk6CisgICAgICAgIChKU0M6OkV4ZWNTdGF0ZTo6
dW5zYWZlQ2FsbGVlKToKKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjpjb2RlQmxvY2spOgorICAg
ICAgICAoSlNDOjpFeGVjU3RhdGU6OnVuc2FmZUNvZGVCbG9jayk6CisgICAgICAgIChKU0M6OkV4
ZWNTdGF0ZTo6c2NvcGUpOgorICAgICAgICAoSlNDOjpFeGVjU3RhdGU6OnNldENhbGxlckZyYW1l
KToKKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjpzZXRTY29wZSk6CisgICAgICAgIChKU0M6OkV4
ZWNTdGF0ZTo6YXJndW1lbnRDb3VudCk6CisgICAgICAgIChKU0M6OkV4ZWNTdGF0ZTo6YXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMpOgorICAgICAgICAoSlNDOjpFeGVjU3RhdGU6OmFyZ3VtZW50
T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjphcmd1bWVudE9mZnNldEluY2x1ZGlu
Z1RoaXMpOgorICAgICAgICAoSlNDOjpFeGVjU3RhdGU6Om9mZnNldEZvcik6CisgICAgICAgIChK
U0M6OkV4ZWNTdGF0ZTo6bm9DYWxsZXIpOgorICAgICAgICAoSlNDOjpFeGVjU3RhdGU6OnNldEFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKToKKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjpzZXRD
YWxsZWUpOgorICAgICAgICAoSlNDOjpFeGVjU3RhdGU6OnNldENvZGVCbG9jayk6CisgICAgICAg
IChKU0M6OkV4ZWNTdGF0ZTo6c2V0UmV0dXJuUEMpOgorICAgICAgICAoSlNDOjpFeGVjU3RhdGU6
OmFyZ0luZGV4Rm9yUmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpFeGVjU3RhdGU6OmNhbGxlckZy
YW1lQW5kUEMpOgorICAgICAgICAoSlNDOjpFeGVjU3RhdGU6OnVuc2FmZUNhbGxlckZyYW1lQW5k
UEMpOgorICAgICAgICAoSlNDOjpFeGVjU3RhdGU6OmluaXQpOiBEZWxldGVkLgorICAgICAgICAq
IGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6
OmR1bXBSZWdpc3RlcnMpOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmg6Cisg
ICAgICAgIChKU0M6OmNhbGxlZUZyYW1lRm9yVmFyYXJncyk6CisgICAgICAgICogaW50ZXJwcmV0
ZXIvSlNTdGFjay5oOgorICAgICAgICAoSlNDOjpKU1N0YWNrOjpjb250YWluc0FkZHJlc3MpOgor
ICAgICAgICAoSlNDOjpKU1N0YWNrOjpnYXRoZXJDb25zZXJ2YXRpdmVSb290cyk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6OkpTU3RhY2s6OnNhbml0aXplU3RhY2spOiBEZWxldGVkLgorICAgICAg
ICAqIGppdC9Bc3NlbWJseUhlbHBlcnMuY3BwOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBl
cnM6OmppdEFzc2VydEFyZ3VtZW50Q291bnRTYW5lKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlI
ZWxwZXJzOjplbWl0UmFuZG9tVGh1bmspOgorICAgICAgICAqIGppdC9Bc3NlbWJseUhlbHBlcnMu
aDoKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpyZXN0b3JlUmV0dXJuQWRkcmVzc0Jl
Zm9yZVJldHVybik6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6ZW1pdEdldEZyb21D
YWxsRnJhbWVIZWFkZXJQdHIpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmVtaXRH
ZXRGcm9tQ2FsbEZyYW1lSGVhZGVyMzIpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6
OmVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyNjQpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhl
bHBlcnM6OmVtaXRQdXRUb0NhbGxGcmFtZUhlYWRlcik6CisgICAgICAgIChKU0M6OkFzc2VtYmx5
SGVscGVyczo6ZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVyQmVmb3JlUHJvbG9ndWUpOgorICAgICAg
ICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmVtaXRQdXRQYXlsb2FkVG9DYWxsRnJhbWVIZWFkZXJC
ZWZvcmVQcm9sb2d1ZSk6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6ZW1pdFB1dFRh
Z1RvQ2FsbEZyYW1lSGVhZGVyQmVmb3JlUHJvbG9ndWUpOgorICAgICAgICAoSlNDOjpBc3NlbWJs
eUhlbHBlcnM6OmNhbGxlZUZyYW1lU2xvdCk6CisgICAgICAgICogaml0L0NDYWxsSGVscGVycy5j
cHA6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6bG9nU2hhZG93Q2hpY2tlblByb2xvZ3Vl
UGFja2V0KToKKyAgICAgICAgKiBqaXQvQ0NhbGxIZWxwZXJzLmg6CisgICAgICAgIChKU0M6OkND
YWxsSGVscGVyczo6cHJlcGFyZUZvclRhaWxDYWxsU2xvdyk6CisgICAgICAgICogaml0L0NhbGxG
cmFtZVNodWZmbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6Q2FsbEZyYW1lU2h1ZmZsZXI6OkNhbGxG
cmFtZVNodWZmbGVyKToKKyAgICAgICAgKEpTQzo6Q2FsbEZyYW1lU2h1ZmZsZXI6OmR1bXApOgor
ICAgICAgICAoSlNDOjpDYWxsRnJhbWVTaHVmZmxlcjo6ZXh0ZW5kRnJhbWVJZk5lZWRlZCk6Cisg
ICAgICAgIChKU0M6OkNhbGxGcmFtZVNodWZmbGVyOjpwcmVwYXJlRm9yU2xvd1BhdGgpOgorICAg
ICAgICAoSlNDOjpDYWxsRnJhbWVTaHVmZmxlcjo6cHJlcGFyZUZvclRhaWxDYWxsKToKKyAgICAg
ICAgKEpTQzo6Q2FsbEZyYW1lU2h1ZmZsZXI6OnByZXBhcmVBbnkpOgorICAgICAgICAqIGppdC9D
YWxsRnJhbWVTaHVmZmxlci5oOgorICAgICAgICAoSlNDOjpDYWxsRnJhbWVTaHVmZmxlcjo6c25h
cHNob3QpOgorICAgICAgICAoSlNDOjpDYWxsRnJhbWVTaHVmZmxlcjo6c2V0Q2FsbGVlSlNWYWx1
ZVJlZ3MpOgorICAgICAgICAoSlNDOjpDYWxsRnJhbWVTaHVmZmxlcjo6YXNzdW1lQ2FsbGVlSXND
ZWxsKToKKyAgICAgICAgKEpTQzo6Q2FsbEZyYW1lU2h1ZmZsZXI6Om51bUxvY2Fscyk6CisgICAg
ICAgIChKU0M6OkNhbGxGcmFtZVNodWZmbGVyOjpnZXRPbGQpOgorICAgICAgICAoSlNDOjpDYWxs
RnJhbWVTaHVmZmxlcjo6c2V0T2xkKToKKyAgICAgICAgKEpTQzo6Q2FsbEZyYW1lU2h1ZmZsZXI6
OmZpcnN0T2xkKToKKyAgICAgICAgKEpTQzo6Q2FsbEZyYW1lU2h1ZmZsZXI6Omxhc3RPbGQpOgor
ICAgICAgICAoSlNDOjpDYWxsRnJhbWVTaHVmZmxlcjo6aXNWYWxpZE9sZCk6CisgICAgICAgIChK
U0M6OkNhbGxGcmFtZVNodWZmbGVyOjphcmdDb3VudCk6CisgICAgICAgIChKU0M6OkNhbGxGcmFt
ZVNodWZmbGVyOjpnZXROZXcpOgorICAgICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlND
OjpKSVQ6OmNvbXBpbGVXaXRob3V0TGlua2luZyk6CisgICAgICAgICogaml0L0pJVC5oOgorICAg
ICAgICAqIGppdC9KSVRDYWxsLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlU2V0dXBW
YXJhcmdzRnJhbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVDYWxsRXZhbFNsb3dDYXNl
KToKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlT3BDYWxsKToKKyAgICAgICAgKiBqaXQvSklU
Q2FsbDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlU2V0dXBWYXJhcmdzRnJh
bWUpOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVDYWxsRXZhbFNsb3dDYXNlKToKKyAgICAg
ICAgKEpTQzo6SklUOjpjb21waWxlT3BDYWxsKToKKyAgICAgICAgKiBqaXQvSklUSW5saW5lcy5o
OgorICAgICAgICAoSlNDOjpKSVQ6OmdldENvbnN0YW50T3BlcmFuZCk6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdFB1dEludFRvQ2FsbEZyYW1lSGVhZGVyKToKKyAgICAgICAgKEpTQzo6SklUOjp1
cGRhdGVUb3BDYWxsRnJhbWUpOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9zY29wZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dF9vcF9hcmd1bWVudF9jb3VudCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfcmVz
dF9sZW5ndGgpOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzMzJfNjQuY3BwOgorICAgICAgICAo
SlNDOjpKSVQ6OnByaXZhdGVDb21waWxlQ1RJTmF0aXZlQ2FsbCk6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdF9vcF9nZXRfc2NvcGUpOgorICAgICAgICAqIGppdC9KU0ludGVyZmFjZUpJVC5oOgor
ICAgICAgICAoSlNDOjpKU0ludGVyZmFjZUpJVDo6ZW1pdEp1bXBJZk5vdFR5cGUpOgorICAgICAg
ICAoSlNDOjpKU0ludGVyZmFjZUpJVDo6ZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXJQdHIpOgor
ICAgICAgICAoSlNDOjpKU0ludGVyZmFjZUpJVDo6ZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVyKToK
KyAgICAgICAgKEpTQzo6SlNJbnRlcmZhY2VKSVQ6OmVtaXRQdXRDZWxsVG9DYWxsRnJhbWVIZWFk
ZXIpOgorICAgICAgICAqIGppdC9TZXR1cFZhcmFyZ3NGcmFtZS5jcHA6CisgICAgICAgIChKU0M6
OmVtaXRTZXRWYXJhcmdzRnJhbWUpOgorICAgICAgICAoSlNDOjplbWl0U2V0dXBWYXJhcmdzRnJh
bWVGYXN0Q2FzZSk6CisgICAgICAgICogaml0L1NwZWNpYWxpemVkVGh1bmtKSVQuaDoKKyAgICAg
ICAgKEpTQzo6U3BlY2lhbGl6ZWRUaHVua0pJVDo6U3BlY2lhbGl6ZWRUaHVua0pJVCk6CisgICAg
ICAgICogaml0L1RodW5rR2VuZXJhdG9ycy5jcHA6CisgICAgICAgIChKU0M6Om5hdGl2ZUZvckdl
bmVyYXRvcik6CisgICAgICAgIChKU0M6OmFyaXR5Rml4dXBHZW5lcmF0b3IpOgorICAgICAgICAo
SlNDOjpib3VuZFRoaXNOb0FyZ3NGdW5jdGlvbkNhbGxHZW5lcmF0b3IpOgorICAgICAgICAqIGxs
aW50L0xMSW50RGF0YS5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpEYXRhOjpwZXJmb3JtQXNz
ZXJ0aW9ucyk6CisgICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwOgorICAgICAgICAo
SlNDOjpMTEludDo6Z2VuZXJpY0NhbGwpOgorICAgICAgICAoSlNDOjpMTEludDo6dmFyYXJnc1Nl
dHVwKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OkxMSU5UX1NMT1dfUEFUSF9ERUNMKToKKyAgICAg
ICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5oOgorICAgICAgICAoSlNDOjpDb21tb25TbG93
UGF0aHM6OmFyaXR5Q2hlY2tGb3IpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAgICAgICogcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvU3RhY2tBbGlnbm1lbnQu
aDoKKyAgICAgICAgKEpTQzo6cm91bmRBcmd1bWVudENvdW50VG9BbGlnbkZyYW1lKToKKyAgICAg
ICAgKEpTQzo6cm91bmRMb2NhbFJlZ2lzdGVyQ291bnRGb3JGcmFtZVBvaW50ZXJPZmZzZXQpOgor
ICAgICAgICAoSlNDOjpsb2dTdGFja0FsaWdubWVudFJlZ2lzdGVycyk6CisgICAgICAgICogd2Fz
bS9XQVNNRnVuY3Rpb25Db21waWxlci5oOgorICAgICAgICAoSlNDOjpXQVNNRnVuY3Rpb25Db21w
aWxlcjo6c3RhcnRGdW5jdGlvbik6CisgICAgICAgIChKU0M6OldBU01GdW5jdGlvbkNvbXBpbGVy
OjplbmRGdW5jdGlvbik6CisgICAgICAgIChKU0M6OldBU01GdW5jdGlvbkNvbXBpbGVyOjpib3hB
cmd1bWVudHNBbmRBZGp1c3RTdGFja1BvaW50ZXIpOgorICAgICAgICAoSlNDOjpXQVNNRnVuY3Rp
b25Db21waWxlcjo6Y2FsbEFuZFVuYm94UmVzdWx0KToKKyAgICAgICAgKiB3YXNtL1dBU01GdW5j
dGlvblN5bnRheENoZWNrZXIuaDoKKyAgICAgICAgKEpTQzo6V0FTTUZ1bmN0aW9uU3ludGF4Q2hl
Y2tlcjo6dXBkYXRlVGVtcFN0YWNrSGVpZ2h0Rm9yQ2FsbCk6CisKIDIwMTYtMDctMDggIE1hcmsg
TGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbmFtZSBqc0NQVVN0YWNrTGlt
aXQgdG8gb3NTdGFja0xpbWl0V2l0aFJlc2VydmUgYW5kIGpzRW11bGF0ZWRTdGFja0xpbWl0IHRv
IGNsb29wU3RhY2tMaW1pdC4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Q
b2x5bW9ycGhpY0FjY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcAkocmV2aXNpb24gMjAyOTk0KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtOTQ3LDcgKzk0Nyw3IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVJbXBs
KEFjY2Vzc0dlbmUKIAogICAgICAgICBqaXQuc3RvcmUzMigKICAgICAgICAgICAgIENDYWxsSGVs
cGVyczo6VHJ1c3RlZEltbTMyKHN0YXRlLmNhbGxTaXRlSW5kZXhGb3JFeGNlcHRpb25IYW5kbGlu
Z09yT3JpZ2luYWwoKS5iaXRzKCkpLAotICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjp0YWdGb3Io
c3RhdGljX2Nhc3Q8VmlydHVhbFJlZ2lzdGVyPihKU1N0YWNrOjpBcmd1bWVudENvdW50KSkpOwor
ICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjp0YWdGb3Ioc3RhdGljX2Nhc3Q8VmlydHVhbFJlZ2lz
dGVyPihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSkpOwogCiAgICAgICAgIGlmIChtX3R5
cGUgPT0gR2V0dGVyIHx8IG1fdHlwZSA9PSBTZXR0ZXIpIHsKICAgICAgICAgICAgIC8vIENyZWF0
ZSBhIEpTIGNhbGwgdXNpbmcgYSBKUyBjYWxsIGlubGluZSBjYWNoZS4gQXNzdW1lIHRoYXQ6CkBA
IC0xMDAyLDcgKzEwMDIsNyBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChBY2Nlc3NH
ZW5lCiAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgcmV0dXJuVW5kZWZpbmVkID0gaml0
LmJyYW5jaFRlc3RQdHIoCiAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpaZXJvLCBsb2Fk
ZWRWYWx1ZUdQUik7CiAKLSAgICAgICAgICAgIHVuc2lnbmVkIG51bWJlck9mUmVnc0ZvckNhbGwg
PSBKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJTaXplICsgbnVtYmVyT2ZQYXJhbWV0ZXJzOworICAg
ICAgICAgICAgdW5zaWduZWQgbnVtYmVyT2ZSZWdzRm9yQ2FsbCA9IENhbGxGcmFtZTo6aGVhZGVy
U2l6ZUluUmVnaXN0ZXJzICsgbnVtYmVyT2ZQYXJhbWV0ZXJzOwogCiAgICAgICAgICAgICB1bnNp
Z25lZCBudW1iZXJPZkJ5dGVzRm9yQ2FsbCA9CiAgICAgICAgICAgICAgICAgbnVtYmVyT2ZSZWdz
Rm9yQ2FsbCAqIHNpemVvZihSZWdpc3RlcikgLSBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQyk7CkBA
IC0xMDIwLDEwICsxMDIwLDEwIEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKEFjY2Vz
c0dlbmUKIAogICAgICAgICAgICAgaml0LnN0b3JlMzIoCiAgICAgICAgICAgICAgICAgQ0NhbGxI
ZWxwZXJzOjpUcnVzdGVkSW1tMzIobnVtYmVyT2ZQYXJhbWV0ZXJzKSwKLSAgICAgICAgICAgICAg
ICBjYWxsZWVGcmFtZS53aXRoT2Zmc2V0KEpTU3RhY2s6OkFyZ3VtZW50Q291bnQgKiBzaXplb2Yo
UmVnaXN0ZXIpICsgUGF5bG9hZE9mZnNldCkpOworICAgICAgICAgICAgICAgIGNhbGxlZUZyYW1l
LndpdGhPZmZzZXQoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCAqIHNpemVvZihSZWdpc3Rl
cikgKyBQYXlsb2FkT2Zmc2V0KSk7CiAKICAgICAgICAgICAgIGppdC5zdG9yZUNlbGwoCi0gICAg
ICAgICAgICAgICAgbG9hZGVkVmFsdWVHUFIsIGNhbGxlZUZyYW1lLndpdGhPZmZzZXQoSlNTdGFj
azo6Q2FsbGVlICogc2l6ZW9mKFJlZ2lzdGVyKSkpOworICAgICAgICAgICAgICAgIGxvYWRlZFZh
bHVlR1BSLCBjYWxsZWVGcmFtZS53aXRoT2Zmc2V0KENhbGxGcmFtZVNsb3Q6OmNhbGxlZSAqIHNp
emVvZihSZWdpc3RlcikpKTsKIAogICAgICAgICAgICAgaml0LnN0b3JlQ2VsbCgKICAgICAgICAg
ICAgICAgICBiYXNlRm9yR2V0R1BSLApAQCAtMTI2MCw3ICsxMjYwLDcgQEAgdm9pZCBBY2Nlc3ND
YXNlOjpnZW5lcmF0ZUltcGwoQWNjZXNzR2VuZQogICAgICAgICAgICAgICAgIGppdC5zdG9yZTMy
KAogICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigKICAgICAg
ICAgICAgICAgICAgICAgICAgIHN0YXRlLmNhbGxTaXRlSW5kZXhGb3JFeGNlcHRpb25IYW5kbGlu
Z09yT3JpZ2luYWwoKS5iaXRzKCkpLAotICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6
OnRhZ0ZvcihzdGF0aWNfY2FzdDxWaXJ0dWFsUmVnaXN0ZXI+KEpTU3RhY2s6OkFyZ3VtZW50Q291
bnQpKSk7CisgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6dGFnRm9yKHN0YXRpY19j
YXN0PFZpcnR1YWxSZWdpc3Rlcj4oQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCkpKTsKICAg
ICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBqaXQubWFrZVNwYWNlT25TdGFja0ZvckND
YWxsKCk7CiAgICAgICAgICAgICAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvVmlydHVhbFJlZ2lzdGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1ZpcnR1YWxSZWdpc3Rlci5oCShyZXZpc2lvbiAyMDI5OTQpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmlydHVhbFJlZ2lzdGVyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDE1IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxNS0y
MDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1ZhbGlkKCkg
Y29uc3QgeyByZXR1cm4gKG1fdmlydHVhbFJlZ2lzdGVyICE9IHNfaW52YWxpZFZpcnR1YWxSZWdp
c3Rlcik7IH0KICAgICBib29sIGlzTG9jYWwoKSBjb25zdCB7IHJldHVybiBvcGVyYW5kSXNMb2Nh
bChtX3ZpcnR1YWxSZWdpc3Rlcik7IH0KICAgICBib29sIGlzQXJndW1lbnQoKSBjb25zdCB7IHJl
dHVybiBvcGVyYW5kSXNBcmd1bWVudChtX3ZpcnR1YWxSZWdpc3Rlcik7IH0KLSAgICBib29sIGlz
SGVhZGVyKCkgY29uc3QgeyByZXR1cm4gbV92aXJ0dWFsUmVnaXN0ZXIgPj0gMCAmJiBtX3ZpcnR1
YWxSZWdpc3RlciA8IEpTU3RhY2s6OlRoaXNBcmd1bWVudDsgfQorICAgIGJvb2wgaXNIZWFkZXIo
KSBjb25zdCB7IHJldHVybiBtX3ZpcnR1YWxSZWdpc3RlciA+PSAwICYmIG1fdmlydHVhbFJlZ2lz
dGVyIDwgQ2FsbEZyYW1lU2xvdDo6dGhpc0FyZ3VtZW50OyB9CiAgICAgYm9vbCBpc0NvbnN0YW50
KCkgY29uc3QgeyByZXR1cm4gbV92aXJ0dWFsUmVnaXN0ZXIgPj0gc19maXJzdENvbnN0YW50UmVn
aXN0ZXJJbmRleDsgfQogICAgIGludCB0b0xvY2FsKCkgY29uc3QgeyBBU1NFUlQoaXNMb2NhbCgp
KTsgcmV0dXJuIG9wZXJhbmRUb0xvY2FsKG1fdmlydHVhbFJlZ2lzdGVyKTsgfQogICAgIGludCB0
b0FyZ3VtZW50KCkgY29uc3QgeyBBU1NFUlQoaXNBcmd1bWVudCgpKTsgcmV0dXJuIG9wZXJhbmRU
b0FyZ3VtZW50KG1fdmlydHVhbFJlZ2lzdGVyKTsgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAJKHJl
dmlzaW9uIDIwMjk5NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0
ZWNvZGVHZW5lcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMDYsNyArMzA2LDcgQEAgQnl0
ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJgogCiAgICAgYWxsb2NhdGVBbmRF
bWl0U2NvcGUoKTsKIAotICAgIG1fY2FsbGVlUmVnaXN0ZXIuc2V0SW5kZXgoSlNTdGFjazo6Q2Fs
bGVlKTsKKyAgICBtX2NhbGxlZVJlZ2lzdGVyLnNldEluZGV4KENhbGxGcmFtZVNsb3Q6OmNhbGxl
ZSk7CiAKICAgICBpbml0aWFsaXplUGFyYW1ldGVycyhwYXJhbWV0ZXJzKTsKICAgICBBU1NFUlQo
IShpc1NpbXBsZVBhcmFtZXRlckxpc3QgJiYgbV9yZXN0UGFyYW1ldGVyKSk7CkBAIC03NDIsNyAr
NzQyLDcgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJgogCiAgICAg
YWxsb2NhdGVBbmRFbWl0U2NvcGUoKTsKIAotICAgIG1fY2FsbGVlUmVnaXN0ZXIuc2V0SW5kZXgo
SlNTdGFjazo6Q2FsbGVlKTsKKyAgICBtX2NhbGxlZVJlZ2lzdGVyLnNldEluZGV4KENhbGxGcmFt
ZVNsb3Q6OmNhbGxlZSk7CiAKICAgICBtX2NvZGVCbG9jay0+c2V0TnVtUGFyYW1ldGVycygxKTsg
Ly8gQWxsb2NhdGUgc3BhY2UgZm9yICJ0aGlzIgogCkBAIC0zMTMwLDggKzMxMzAsOCBAQCBSZWdp
c3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENhbGwoCiAgICAgfQogICAgIAogICAgIC8v
IFJlc2VydmUgc3BhY2UgZm9yIGNhbGwgZnJhbWUuCi0gICAgVmVjdG9yPFJlZlB0cjxSZWdpc3Rl
cklEPiwgSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyU2l6ZSwgVW5zYWZlVmVjdG9yT3ZlcmZsb3c+
IGNhbGxGcmFtZTsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IEpTU3RhY2s6OkNhbGxGcmFtZUhl
YWRlclNpemU7ICsraSkKKyAgICBWZWN0b3I8UmVmUHRyPFJlZ2lzdGVySUQ+LCBDYWxsRnJhbWU6
OmhlYWRlclNpemVJblJlZ2lzdGVycywgVW5zYWZlVmVjdG9yT3ZlcmZsb3c+IGNhbGxGcmFtZTsK
KyAgICBmb3IgKGludCBpID0gMDsgaSA8IENhbGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJz
OyArK2kpCiAgICAgICAgIGNhbGxGcmFtZS5hcHBlbmQobmV3VGVtcG9yYXJ5KCkpOwogCiAgICAg
ZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCk7CkBAIC0zMzE1
LDggKzMzMTUsOCBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENvbnN0CiAg
ICAgfQogCiAgICAgLy8gUmVzZXJ2ZSBzcGFjZSBmb3IgY2FsbCBmcmFtZS4KLSAgICBWZWN0b3I8
UmVmUHRyPFJlZ2lzdGVySUQ+LCBKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJTaXplLCBVbnNhZmVW
ZWN0b3JPdmVyZmxvdz4gY2FsbEZyYW1lOwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgSlNTdGFj
azo6Q2FsbEZyYW1lSGVhZGVyU2l6ZTsgKytpKQorICAgIFZlY3RvcjxSZWZQdHI8UmVnaXN0ZXJJ
RD4sIENhbGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJzLCBVbnNhZmVWZWN0b3JPdmVyZmxv
dz4gY2FsbEZyYW1lOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgQ2FsbEZyYW1lOjpoZWFkZXJT
aXplSW5SZWdpc3RlcnM7ICsraSkKICAgICAgICAgY2FsbEZyYW1lLmFwcGVuZChuZXdUZW1wb3Jh
cnkoKSk7CiAKICAgICBlbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90
RW5kKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVH
ZW5lcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgJKHJldmlzaW9uIDIwMjk5NCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAkod29ya2luZyBjb3B5
KQpAQCAtNzMsNyArNzMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBSZWdpc3RlcklE
KiB0aGlzUmVnaXN0ZXIoKSB7IHJldHVybiBtX2FyZ3ZbMF0uZ2V0KCk7IH0KICAgICAgICAgUmVn
aXN0ZXJJRCogYXJndW1lbnRSZWdpc3Rlcih1bnNpZ25lZCBpKSB7IHJldHVybiBtX2FyZ3ZbaSAr
IDFdLmdldCgpOyB9Ci0gICAgICAgIHVuc2lnbmVkIHN0YWNrT2Zmc2V0KCkgeyByZXR1cm4gLW1f
YXJndlswXS0+aW5kZXgoKSArIEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlclNpemU7IH0KKyAgICAg
ICAgdW5zaWduZWQgc3RhY2tPZmZzZXQoKSB7IHJldHVybiAtbV9hcmd2WzBdLT5pbmRleCgpICsg
Q2FsbEZyYW1lOjpoZWFkZXJTaXplSW5SZWdpc3RlcnM7IH0KICAgICAgICAgdW5zaWduZWQgYXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoKSB7IHJldHVybiBtX2FyZ3Yuc2l6ZSgpIC0gbV9wYWRk
aW5nOyB9CiAgICAgICAgIEFyZ3VtZW50c05vZGUqIGFyZ3VtZW50c05vZGUoKSB7IHJldHVybiBt
X2FyZ3VtZW50c05vZGU7IH0KIApAQCAtODA5LDcgKzgwOSw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICAgICAgaWYgKHJlZy5pc0xvY2FsKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG1f
Y2FsbGVlTG9jYWxzW3JlZy50b0xvY2FsKCldOwogCi0gICAgICAgICAgICBpZiAocmVnLm9mZnNl
dCgpID09IEpTU3RhY2s6OkNhbGxlZSkKKyAgICAgICAgICAgIGlmIChyZWcub2Zmc2V0KCkgPT0g
Q2FsbEZyYW1lU2xvdDo6Y2FsbGVlKQogICAgICAgICAgICAgICAgIHJldHVybiBtX2NhbGxlZVJl
Z2lzdGVyOwogCiAgICAgICAgICAgICBBU1NFUlQobV9wYXJhbWV0ZXJzLnNpemUoKSk7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVn
ZW4uY3BwCShyZXZpc2lvbiAyMDI5OTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL05vZGVzQ29kZWdlbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2NSw3ICsxNjUsNyBA
QCBzdGF0aWMgUmVnaXN0ZXJJRCogZW1pdEhvbWVPYmplY3RGb3JDYWxsCiAgICAgfQogCiAgICAg
UmVnaXN0ZXJJRCBjYWxsZWU7Ci0gICAgY2FsbGVlLnNldEluZGV4KEpTU3RhY2s6OkNhbGxlZSk7
CisgICAgY2FsbGVlLnNldEluZGV4KENhbGxGcmFtZVNsb3Q6OmNhbGxlZSk7CiAgICAgcmV0dXJu
IGdlbmVyYXRvci5lbWl0R2V0QnlJZChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksICZjYWxsZWUs
IGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCkuaG9tZU9iamVjdFByaXZh
dGVOYW1lKCkpOwogfQogCkBAIC0xODEsNyArMTgxLDcgQEAgc3RhdGljIFJlZ2lzdGVySUQqIGVt
aXRHZXRTdXBlckZ1bmN0aW9uRgogICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRHZXRCeUlk
KGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgZ2VuZXJhdG9yLmVtaXRMb2FkRGVyaXZlZENvbnN0
cnVjdG9yRnJvbUFycm93RnVuY3Rpb25MZXhpY2FsRW52aXJvbm1lbnQoKSwgZ2VuZXJhdG9yLnBy
b3BlcnR5TmFtZXMoKS51bmRlcnNjb3JlUHJvdG8pOwogCiAgICAgUmVnaXN0ZXJJRCBjYWxsZWU7
Ci0gICAgY2FsbGVlLnNldEluZGV4KEpTU3RhY2s6OkNhbGxlZSk7CisgICAgY2FsbGVlLnNldElu
ZGV4KENhbGxGcmFtZVNsb3Q6OmNhbGxlZSk7CiAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0R2V0
QnlJZChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksICZjYWxsZWUsIGdlbmVyYXRvci5wcm9wZXJ0
eU5hbWVzKCkudW5kZXJzY29yZVByb3RvKTsKIH0KIApAQCAtNzI0LDcgKzcyNCw3IEBAIENhbGxB
cmd1bWVudHM6OkNhbGxBcmd1bWVudHMoQnl0ZWNvZGVHZW4KICAgICB9CiAKICAgICAvLyBXZSBu
ZWVkIHRvIGVuc3VyZSB0aGF0IHRoZSBmcmFtZSBzaXplIGlzIHN0YWNrLWFsaWduZWQKLSAgICB3
aGlsZSAoKEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlclNpemUgKyBtX2FyZ3Yuc2l6ZSgpKSAlIHN0
YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCkpIHsKKyAgICB3aGlsZSAoKENhbGxGcmFtZTo6aGVhZGVy
U2l6ZUluUmVnaXN0ZXJzICsgbV9hcmd2LnNpemUoKSkgJSBzdGFja0FsaWdubWVudFJlZ2lzdGVy
cygpKSB7CiAgICAgICAgIG1fYXJndi5pbnNlcnQoMCwgZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgp
KTsKICAgICAgICAgbV9wYWRkaW5nKys7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3Bw
CShyZXZpc2lvbiAyMDI5OTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3Vt
ZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMDMsMTIgKzMwMywx
MiBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICBpZiAoSW5saW5lQ2FsbEZyYW1lKiBp
bmxpbmVDYWxsRnJhbWUgPSBjYW5kaWRhdGUtPm9yaWdpbi5zZW1hbnRpYy5pbmxpbmVDYWxsRnJh
bWUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbmxpbmVDYWxsRnJhbWUtPmlzVmFy
YXJncygpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNDbG9iYmVyZWRCeUJsb2Nr
IHw9IGNsb2JiZXJlZEJ5VGhpc0Jsb2NrLm9wZXJhbmQoCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyBKU1N0YWNrOjpBcmd1bWVu
dENvdW50KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5saW5lQ2FsbEZyYW1l
LT5zdGFja09mZnNldCArIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpOwogICAgICAgICAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoIWlzQ2xvYmJlcmVkQnlCbG9jayB8fCBpbmxpbmVDYWxsRnJhbWUtPmlz
Q2xvc3VyZUNhbGwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0Nsb2JiZXJlZEJ5
QmxvY2sgfD0gY2xvYmJlcmVkQnlUaGlzQmxvY2sub3BlcmFuZCgKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCArIEpTU3RhY2s6OkNh
bGxlZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlubGluZUNhbGxGcmFtZS0+
c3RhY2tPZmZzZXQgKyBDYWxsRnJhbWVTbG90OjpjYWxsZWUpOwogICAgICAgICAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoIWlzQ2xvYmJlcmVkQnlCbG9jaykgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdBcmd1bWVudHNVdGlsaXRpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRzVXRpbGl0aWVzLmNwcAkocmV2aXNpb24gMjAyOTk0
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudHNVdGlsaXRpZXMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zOCwxMSArMzgsMTEgQEAgYm9vbCBhcmd1bWVudHNJbnZvbHZl
U3RhY2tTbG90KElubGluZUNhbAogICAgICAgICByZXR1cm4gKHJlZy5pc0FyZ3VtZW50KCkgJiYg
cmVnLnRvQXJndW1lbnQoKSkgfHwgcmVnLmlzSGVhZGVyKCk7CiAgICAgCiAgICAgaWYgKGlubGlu
ZUNhbGxGcmFtZS0+aXNDbG9zdXJlQ2FsbAotICAgICAgICAmJiByZWcgPT0gVmlydHVhbFJlZ2lz
dGVyKGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyBKU1N0YWNrOjpDYWxsZWUpKQorICAg
ICAgICAmJiByZWcgPT0gVmlydHVhbFJlZ2lzdGVyKGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZz
ZXQgKyBDYWxsRnJhbWVTbG90OjpjYWxsZWUpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAK
ICAgICBpZiAoaW5saW5lQ2FsbEZyYW1lLT5pc1ZhcmFyZ3MoKQotICAgICAgICAmJiByZWcgPT0g
VmlydHVhbFJlZ2lzdGVyKGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyBKU1N0YWNrOjpB
cmd1bWVudENvdW50KSkKKyAgICAgICAgJiYgcmVnID09IFZpcnR1YWxSZWdpc3RlcihpbmxpbmVD
YWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCkpCiAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIAogICAgIHVuc2lnbmVkIG51bUFyZ3VtZW50cyA9IGlu
bGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKSAtIDE7CkBAIC03OCw3ICs3OCw3IEBAIE5v
ZGUqIGVtaXRDb2RlVG9HZXRBcmd1bWVudHNBcnJheUxlbmd0aCgKICAgICBpZiAoIWlubGluZUNh
bGxGcmFtZSkKICAgICAgICAgYXJndW1lbnRDb3VudCA9IGluc2VydGlvblNldC5pbnNlcnROb2Rl
KG5vZGVJbmRleCwgU3BlY0ludDMyT25seSwgR2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMs
IG9yaWdpbik7CiAgICAgZWxzZSB7Ci0gICAgICAgIFZpcnR1YWxSZWdpc3RlciBhcmd1bWVudENv
dW50UmVnaXN0ZXIoaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCArIEpTU3RhY2s6OkFyZ3Vt
ZW50Q291bnQpOworICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgYXJndW1lbnRDb3VudFJlZ2lzdGVy
KGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENv
dW50KTsKICAgICAgICAgCiAgICAgICAgIGFyZ3VtZW50Q291bnQgPSBpbnNlcnRpb25TZXQuaW5z
ZXJ0Tm9kZSgKICAgICAgICAgICAgIG5vZGVJbmRleCwgU3BlY0ludDMyT25seSwgR2V0U3RhY2ss
IG9yaWdpbiwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJz
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNv
ZGVQYXJzZXIuY3BwCShyZXZpc2lvbiAyMDI5OTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMxLDEwICszMzEs
MTAgQEAgcHJpdmF0ZToKICAgICAgICAgaWYgKGlubGluZUNhbGxGcmFtZSgpKSB7CiAgICAgICAg
ICAgICBpZiAoIWlubGluZUNhbGxGcmFtZSgpLT5pc0Nsb3N1cmVDYWxsKSB7CiAgICAgICAgICAg
ICAgICAgSlNGdW5jdGlvbiogY2FsbGVlID0gaW5saW5lQ2FsbEZyYW1lKCktPmNhbGxlZUNvbnN0
YW50KCk7Ci0gICAgICAgICAgICAgICAgaWYgKG9wZXJhbmQub2Zmc2V0KCkgPT0gSlNTdGFjazo6
Q2FsbGVlKQorICAgICAgICAgICAgICAgIGlmIChvcGVyYW5kLm9mZnNldCgpID09IENhbGxGcmFt
ZVNsb3Q6OmNhbGxlZSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHdlYWtKU0NvbnN0YW50
KGNhbGxlZSk7CiAgICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSBpZiAob3BlcmFuZC5vZmZz
ZXQoKSA9PSBKU1N0YWNrOjpDYWxsZWUpIHsKKyAgICAgICAgfSBlbHNlIGlmIChvcGVyYW5kLm9m
ZnNldCgpID09IENhbGxGcmFtZVNsb3Q6OmNhbGxlZSkgewogICAgICAgICAgICAgLy8gV2UgaGF2
ZSB0byBkbyBzb21lIGNvbnN0YW50LWZvbGRpbmcgaGVyZSBiZWNhdXNlIHRoaXMgZW5hYmxlcyBD
cmVhdGVUaGlzIGZvbGRpbmcuIE5vdGUKICAgICAgICAgICAgIC8vIHRoYXQgd2UgZG9uJ3QgaGF2
ZSBzdWNoIHdhdGNocG9pbnQtYmFzZWQgZm9sZGluZyBmb3IgaW5saW5lZCB1c2VzIG9mIENhbGxl
ZSwgc2luY2UgaW4gdGhhdAogICAgICAgICAgICAgLy8gY2FzZSBpZiB0aGUgZnVuY3Rpb24gaXMg
YSBzaW5nbGV0b24gdGhlbiB3ZSBhbHJlYWR5IGtub3cgaXQuCkBAIC01NDIsNyArNTQyLDcgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgIElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lID0g
c3RhY2stPm1faW5saW5lQ2FsbEZyYW1lOwogICAgICAgICAgICAgaWYgKCFpbmxpbmVDYWxsRnJh
bWUpCiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBpZiAob3BlcmFuZC5vZmZz
ZXQoKSA8IHN0YXRpY19jYXN0PGludD4oaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCArIEpT
U3RhY2s6OkNhbGxGcmFtZUhlYWRlclNpemUpKQorICAgICAgICAgICAgaWYgKG9wZXJhbmQub2Zm
c2V0KCkgPCBzdGF0aWNfY2FzdDxpbnQ+KGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyBD
YWxsRnJhbWU6OmhlYWRlclNpemVJblJlZ2lzdGVycykpCiAgICAgICAgICAgICAgICAgY29udGlu
dWU7CiAgICAgICAgICAgICBpZiAob3BlcmFuZC5vZmZzZXQoKSA9PSBpbmxpbmVDYWxsRnJhbWUt
PnN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lOjp0aGlzQXJndW1lbnRPZmZzZXQoKSkKICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKQEAgLTU5Nyw5ICs1OTcsOSBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgQVNTRVJUKCFtX2hhc0RlYnVnZ2VyRW5hYmxlZCk7CiAgICAgICAgICAgICBudW1Bcmd1bWVu
dHMgPSBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5zaXplKCk7CiAgICAgICAgICAgICBpZiAo
aW5saW5lQ2FsbEZyYW1lLT5pc0Nsb3N1cmVDYWxsKQotICAgICAgICAgICAgICAgIGZsdXNoRGly
ZWN0KGlubGluZVN0YWNrRW50cnktPnJlbWFwT3BlcmFuZChWaXJ0dWFsUmVnaXN0ZXIoSlNTdGFj
azo6Q2FsbGVlKSkpOworICAgICAgICAgICAgICAgIGZsdXNoRGlyZWN0KGlubGluZVN0YWNrRW50
cnktPnJlbWFwT3BlcmFuZChWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlKSkp
OwogICAgICAgICAgICAgaWYgKGlubGluZUNhbGxGcmFtZS0+aXNWYXJhcmdzKCkpCi0gICAgICAg
ICAgICAgICAgZmx1c2hEaXJlY3QoaW5saW5lU3RhY2tFbnRyeS0+cmVtYXBPcGVyYW5kKFZpcnR1
YWxSZWdpc3RlcihKU1N0YWNrOjpBcmd1bWVudENvdW50KSkpOworICAgICAgICAgICAgICAgIGZs
dXNoRGlyZWN0KGlubGluZVN0YWNrRW50cnktPnJlbWFwT3BlcmFuZChWaXJ0dWFsUmVnaXN0ZXIo
Q2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCkpKTsKICAgICAgICAgfSBlbHNlCiAgICAgICAg
ICAgICBudW1Bcmd1bWVudHMgPSBpbmxpbmVTdGFja0VudHJ5LT5tX2NvZGVCbG9jay0+bnVtUGFy
YW1ldGVycygpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGFyZ3VtZW50ID0gbnVtQXJndW1lbnRz
OyBhcmd1bWVudC0tID4gMTspCkBAIC03NjYsOSArNzY2LDkgQEAgcHJpdmF0ZToKICAgICAgICAg
T3BJbmZvIHByZWRpY3Rpb24pCiAgICAgewogICAgICAgICBhZGRWYXJBcmdDaGlsZChjYWxsZWUp
OwotICAgICAgICBzaXplX3QgZnJhbWVTaXplID0gSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyU2l6
ZSArIGFyZ0NvdW50OworICAgICAgICBzaXplX3QgZnJhbWVTaXplID0gQ2FsbEZyYW1lOjpoZWFk
ZXJTaXplSW5SZWdpc3RlcnMgKyBhcmdDb3VudDsKICAgICAgICAgc2l6ZV90IGFsaWduZWRGcmFt
ZVNpemUgPSBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Yoc3RhY2tBbGlnbm1lbnRSZWdpc3RlcnMo
KSwgZnJhbWVTaXplKTsKLSAgICAgICAgc2l6ZV90IHBhcmFtZXRlclNsb3RzID0gYWxpZ25lZEZy
YW1lU2l6ZSAtIEpTU3RhY2s6OkNhbGxlckZyYW1lQW5kUENTaXplOworICAgICAgICBzaXplX3Qg
cGFyYW1ldGVyU2xvdHMgPSBhbGlnbmVkRnJhbWVTaXplIC0gQ2FsbGVyRnJhbWVBbmRQQzo6c2l6
ZUluUmVnaXN0ZXJzOwogCiAgICAgICAgIGlmIChwYXJhbWV0ZXJTbG90cyA+IG1fcGFyYW1ldGVy
U2xvdHMpCiAgICAgICAgICAgICBtX3BhcmFtZXRlclNsb3RzID0gcGFyYW1ldGVyU2xvdHM7CkBA
IC0xMzM3LDcgKzEzMzcsNyBAQCBOb2RlKiBCeXRlQ29kZVBhcnNlcjo6Z2V0QXJndW1lbnRDb3Vu
dCgpCiAgICAgTm9kZSogYXJndW1lbnRDb3VudDsKICAgICBpZiAobV9pbmxpbmVTdGFja1RvcC0+
bV9pbmxpbmVDYWxsRnJhbWUpIHsKICAgICAgICAgaWYgKG1faW5saW5lU3RhY2tUb3AtPm1faW5s
aW5lQ2FsbEZyYW1lLT5pc1ZhcmFyZ3MoKSkKLSAgICAgICAgICAgIGFyZ3VtZW50Q291bnQgPSBn
ZXQoVmlydHVhbFJlZ2lzdGVyKEpTU3RhY2s6OkFyZ3VtZW50Q291bnQpKTsKKyAgICAgICAgICAg
IGFyZ3VtZW50Q291bnQgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKENhbGxGcmFtZVNsb3Q6OmFyZ3Vt
ZW50Q291bnQpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgYXJndW1lbnRDb3VudCA9IGpz
Q29uc3RhbnQobV9ncmFwaC5mcmVlemUoanNOdW1iZXIobV9pbmxpbmVTdGFja1RvcC0+bV9pbmxp
bmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5zaXplKCkpKS0+dmFsdWUoKSk7CiAgICAgfSBlbHNlCkBA
IC0xNDcyLDExICsxNDcyLDExIEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmlubGluZUNhbGwoTm9k
ZSogY2EKIAogICAgIC8vIEZJWE1FOiBEb24ndCBmbHVzaCBjb25zdGFudHMhCiAgICAgCi0gICAg
aW50IGlubGluZUNhbGxGcmFtZVN0YXJ0ID0gbV9pbmxpbmVTdGFja1RvcC0+cmVtYXBPcGVyYW5k
KFZpcnR1YWxSZWdpc3RlcihyZWdpc3Rlck9mZnNldCkpLm9mZnNldCgpICsgSlNTdGFjazo6Q2Fs
bEZyYW1lSGVhZGVyU2l6ZTsKKyAgICBpbnQgaW5saW5lQ2FsbEZyYW1lU3RhcnQgPSBtX2lubGlu
ZVN0YWNrVG9wLT5yZW1hcE9wZXJhbmQoVmlydHVhbFJlZ2lzdGVyKHJlZ2lzdGVyT2Zmc2V0KSku
b2Zmc2V0KCkgKyBDYWxsRnJhbWU6OmhlYWRlclNpemVJblJlZ2lzdGVyczsKICAgICAKICAgICBl
bnN1cmVMb2NhbHMoCiAgICAgICAgIFZpcnR1YWxSZWdpc3RlcihpbmxpbmVDYWxsRnJhbWVTdGFy
dCkudG9Mb2NhbCgpICsgMSArCi0gICAgICAgIEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlclNpemUg
KyBjb2RlQmxvY2stPm1fbnVtQ2FsbGVlTG9jYWxzKTsKKyAgICAgICAgQ2FsbEZyYW1lOjpoZWFk
ZXJTaXplSW5SZWdpc3RlcnMgKyBjb2RlQmxvY2stPm1fbnVtQ2FsbGVlTG9jYWxzKTsKICAgICAK
ICAgICBzaXplX3QgYXJndW1lbnRQb3NpdGlvblN0YXJ0ID0gbV9ncmFwaC5tX2FyZ3VtZW50UG9z
aXRpb25zLnNpemUoKTsKIApAQCAtMTQ4Nyw3ICsxNDg3LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNl
cjo6aW5saW5lQ2FsbChOb2RlKiBjYQogICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogY2FsbGVlVmFy
aWFibGUgPSBudWxscHRyOwogICAgIGlmIChjYWxsZWUuaXNDbG9zdXJlQ2FsbCgpKSB7CiAgICAg
ICAgIE5vZGUqIGNhbGxlZVNldCA9IHNldCgKLSAgICAgICAgICAgIFZpcnR1YWxSZWdpc3Rlcihy
ZWdpc3Rlck9mZnNldCArIEpTU3RhY2s6OkNhbGxlZSksIGNhbGxUYXJnZXROb2RlLCBJbW1lZGlh
dGVOYWtlZFNldCk7CisgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIocmVnaXN0ZXJPZmZzZXQg
KyBDYWxsRnJhbWVTbG90OjpjYWxsZWUpLCBjYWxsVGFyZ2V0Tm9kZSwgSW1tZWRpYXRlTmFrZWRT
ZXQpOwogICAgICAgICAKICAgICAgICAgY2FsbGVlVmFyaWFibGUgPSBjYWxsZWVTZXQtPnZhcmlh
YmxlQWNjZXNzRGF0YSgpOwogICAgICAgICBjYWxsZWVWYXJpYWJsZS0+bWVyZ2VTaG91bGROZXZl
clVuYm94KHRydWUpOwpAQCAtMTc0Niw3ICsxNzQ2LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6
aGFuZGxlSW5saW5pbmcoCiAgICAgICAgICAgICAKICAgICAgICAgICAgIHJlZ2lzdGVyT2Zmc2V0
ID0gcmVnaXN0ZXJPZmZzZXRPckZpcnN0RnJlZVJlZyArIDE7CiAgICAgICAgICAgICByZWdpc3Rl
ck9mZnNldCAtPSBtYXhOdW1Bcmd1bWVudHM7IC8vIGluY2x1ZGVzICJ0aGlzIgotICAgICAgICAg
ICAgcmVnaXN0ZXJPZmZzZXQgLT0gSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyU2l6ZTsKKyAgICAg
ICAgICAgIHJlZ2lzdGVyT2Zmc2V0IC09IENhbGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJz
OwogICAgICAgICAgICAgcmVnaXN0ZXJPZmZzZXQgPSAtV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9m
KAogICAgICAgICAgICAgICAgIHN0YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCksCiAgICAgICAgICAg
ICAgICAgLXJlZ2lzdGVyT2Zmc2V0KTsKQEAgLTE3NjYsMTMgKzE3NjYsMTMgQEAgYm9vbCBCeXRl
Q29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcoCiAgICAgICAgICAgICAgICAgICAgIAogICAgICAg
ICAgICAgICAgICAgICBlbnN1cmVMb2NhbHMoVmlydHVhbFJlZ2lzdGVyKHJlbWFwcGVkUmVnaXN0
ZXJPZmZzZXQpLnRvTG9jYWwoKSk7CiAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAg
ICAgICAgICBpbnQgYXJndW1lbnRTdGFydCA9IHJlZ2lzdGVyT2Zmc2V0ICsgSlNTdGFjazo6Q2Fs
bEZyYW1lSGVhZGVyU2l6ZTsKKyAgICAgICAgICAgICAgICAgICAgaW50IGFyZ3VtZW50U3RhcnQg
PSByZWdpc3Rlck9mZnNldCArIENhbGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJzOwogICAg
ICAgICAgICAgICAgICAgICBpbnQgcmVtYXBwZWRBcmd1bWVudFN0YXJ0ID0KICAgICAgICAgICAg
ICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPnJlbWFwT3BlcmFuZChWaXJ0dWFsUmVnaXN0
ZXIoYXJndW1lbnRTdGFydCkpLm9mZnNldCgpOwogCiAgICAgICAgICAgICAgICAgICAgIExvYWRW
YXJhcmdzRGF0YSogZGF0YSA9IG1fZ3JhcGgubV9sb2FkVmFyYXJnc0RhdGEuYWRkKCk7CiAgICAg
ICAgICAgICAgICAgICAgIGRhdGEtPnN0YXJ0ID0gVmlydHVhbFJlZ2lzdGVyKHJlbWFwcGVkQXJn
dW1lbnRTdGFydCArIDEpOwotICAgICAgICAgICAgICAgICAgICBkYXRhLT5jb3VudCA9IFZpcnR1
YWxSZWdpc3RlcihyZW1hcHBlZFJlZ2lzdGVyT2Zmc2V0ICsgSlNTdGFjazo6QXJndW1lbnRDb3Vu
dCk7CisgICAgICAgICAgICAgICAgICAgIGRhdGEtPmNvdW50ID0gVmlydHVhbFJlZ2lzdGVyKHJl
bWFwcGVkUmVnaXN0ZXJPZmZzZXQgKyBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KTsKICAg
ICAgICAgICAgICAgICAgICAgZGF0YS0+b2Zmc2V0ID0gYXJndW1lbnRzT2Zmc2V0OwogICAgICAg
ICAgICAgICAgICAgICBkYXRhLT5saW1pdCA9IG1heE51bUFyZ3VtZW50czsKICAgICAgICAgICAg
ICAgICAgICAgZGF0YS0+bWFuZGF0b3J5TWluaW11bSA9IG1hbmRhdG9yeU1pbmltdW07CkBAIC0x
NzkzLDcgKzE3OTMsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZygKICAg
ICAgICAgICAgICAgICAgICAgLy8gYmVmb3JlIFNTQS4KICAgICAgICAgICAgIAogICAgICAgICAg
ICAgICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIGNvdW50VmFyaWFibGUgPSBuZXdWYXJpYWJs
ZUFjY2Vzc0RhdGEoCi0gICAgICAgICAgICAgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIocmVt
YXBwZWRSZWdpc3Rlck9mZnNldCArIEpTU3RhY2s6OkFyZ3VtZW50Q291bnQpKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlcihyZW1hcHBlZFJlZ2lzdGVyT2Zmc2V0ICsg
Q2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCkpOwogICAgICAgICAgICAgICAgICAgICAvLyBU
aGlzIGlzIHByZXR0eSBsYW1lLCBidXQgaXQgd2lsbCBmb3JjZSB0aGUgY291bnQgdG8gYmUgZmx1
c2hlZCBhcyBhbiBpbnQuIFRoaXMgZG9lc24ndAogICAgICAgICAgICAgICAgICAgICAvLyBtYXR0
ZXIgdmVyeSBtdWNoLCBzaW5jZSBvdXIgdXNlIG9mIGEgU2V0QXJndW1lbnQgYW5kIEZsdXNoZXMg
Zm9yIHRoaXMgbG9jYWwgc2xvdCBpcwogICAgICAgICAgICAgICAgICAgICAvLyBtb3N0bHkganVz
dCBhIGZvcm1hbGl0eS4KQEAgLTE5MDQsNyArMTkwNCw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6
OmhhbmRsZUlubGluaW5nKAogICAgIC8vIHlldC4KICAgICBpZiAodmVyYm9zZSkKICAgICAgICAg
ZGF0YUxvZygiUmVnaXN0ZXIgb2Zmc2V0OiAiLCByZWdpc3Rlck9mZnNldCk7Ci0gICAgVmlydHVh
bFJlZ2lzdGVyIGNhbGxlZVJlZyhyZWdpc3Rlck9mZnNldCArIEpTU3RhY2s6OkNhbGxlZSk7Cisg
ICAgVmlydHVhbFJlZ2lzdGVyIGNhbGxlZVJlZyhyZWdpc3Rlck9mZnNldCArIENhbGxGcmFtZVNs
b3Q6OmNhbGxlZSk7CiAgICAgY2FsbGVlUmVnID0gbV9pbmxpbmVTdGFja1RvcC0+cmVtYXBPcGVy
YW5kKGNhbGxlZVJlZyk7CiAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2coIkNhbGxl
ZSBpcyBnb2luZyB0byBiZSAiLCBjYWxsZWVSZWcsICJcbiIpOwpAQCAtMzI3MSw3ICszMjcxLDcg
QEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlR2V0QnlJZCgKICAgICBpbnQgcmVnaXN0ZXJP
ZmZzZXQgPSB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbCgKICAgICAgICAgbV9pbmxpbmVTdGFja1Rv
cC0+bV9wcm9maWxlZEJsb2NrLT5tX251bUNhbGxlZUxvY2FscyAtIDEpLm9mZnNldCgpOwogICAg
IHJlZ2lzdGVyT2Zmc2V0IC09IG51bWJlck9mUGFyYW1ldGVyczsKLSAgICByZWdpc3Rlck9mZnNl
dCAtPSBKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJTaXplOworICAgIHJlZ2lzdGVyT2Zmc2V0IC09
IENhbGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJzOwogICAgIAogICAgIC8vIEdldCB0aGUg
YWxpZ25tZW50IHJpZ2h0LgogICAgIHJlZ2lzdGVyT2Zmc2V0ID0gLVdURjo6cm91bmRVcFRvTXVs
dGlwbGVPZigKQEAgLTMyODgsNyArMzI4OCw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRs
ZUdldEJ5SWQoCiAgICAgLy8gICAgdGhlIGRyZWFkZWQgYXJndW1lbnRzIG9iamVjdCBvbiB0aGUg
Z2V0dGVyLCB0aGUgcmlnaHQgdGhpbmdzIGhhcHBlbi4gV2VsbCwgc29ydCBvZiAtCiAgICAgLy8g
ICAgc2luY2Ugd2Ugb25seSByZWFsbHkgY2FyZSBhYm91dCAndGhpcycgaW4gdGhpcyBjYXNlLiBC
dXQgd2UncmUgbm90IGdvaW5nIHRvIHRha2UgdGhhdAogICAgIC8vICAgIHNob3J0Y3V0LgotICAg
IGludCBuZXh0UmVnaXN0ZXIgPSByZWdpc3Rlck9mZnNldCArIEpTU3RhY2s6OkNhbGxGcmFtZUhl
YWRlclNpemU7CisgICAgaW50IG5leHRSZWdpc3RlciA9IHJlZ2lzdGVyT2Zmc2V0ICsgQ2FsbEZy
YW1lOjpoZWFkZXJTaXplSW5SZWdpc3RlcnM7CiAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihuZXh0
UmVnaXN0ZXIrKyksIGJhc2UsIEltbWVkaWF0ZU5ha2VkU2V0KTsKIAogICAgIC8vIFdlJ3ZlIHNl
dCBzb21lIGxvY2FscywgYnV0IHRoZXkgYXJlIG5vdCB1c2VyLXZpc2libGUuIEl0J3Mgc3RpbGwg
T0sgdG8gZXhpdCBmcm9tIGhlcmUuCkBAIC0zNDQwLDcgKzM0NDAsNyBAQCB2b2lkIEJ5dGVDb2Rl
UGFyc2VyOjpoYW5kbGVQdXRCeUlkKAogICAgICAgICBpbnQgcmVnaXN0ZXJPZmZzZXQgPSB2aXJ0
dWFsUmVnaXN0ZXJGb3JMb2NhbCgKICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fcHJv
ZmlsZWRCbG9jay0+bV9udW1DYWxsZWVMb2NhbHMgLSAxKS5vZmZzZXQoKTsKICAgICAgICAgcmVn
aXN0ZXJPZmZzZXQgLT0gbnVtYmVyT2ZQYXJhbWV0ZXJzOwotICAgICAgICByZWdpc3Rlck9mZnNl
dCAtPSBKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJTaXplOworICAgICAgICByZWdpc3Rlck9mZnNl
dCAtPSBDYWxsRnJhbWU6OmhlYWRlclNpemVJblJlZ2lzdGVyczsKICAgICAKICAgICAgICAgLy8g
R2V0IHRoZSBhbGlnbm1lbnQgcmlnaHQuCiAgICAgICAgIHJlZ2lzdGVyT2Zmc2V0ID0gLVdURjo6
cm91bmRVcFRvTXVsdGlwbGVPZigKQEAgLTM0NTEsNyArMzQ1MSw3IEBAIHZvaWQgQnl0ZUNvZGVQ
YXJzZXI6OmhhbmRsZVB1dEJ5SWQoCiAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5yZW1h
cE9wZXJhbmQoCiAgICAgICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyKHJlZ2lzdGVyT2Zmc2V0
KSkudG9Mb2NhbCgpKTsKICAgICAKLSAgICAgICAgaW50IG5leHRSZWdpc3RlciA9IHJlZ2lzdGVy
T2Zmc2V0ICsgSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyU2l6ZTsKKyAgICAgICAgaW50IG5leHRS
ZWdpc3RlciA9IHJlZ2lzdGVyT2Zmc2V0ICsgQ2FsbEZyYW1lOjpoZWFkZXJTaXplSW5SZWdpc3Rl
cnM7CiAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIobmV4dFJlZ2lzdGVyKyspLCBiYXNlLCBJ
bW1lZGlhdGVOYWtlZFNldCk7CiAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIobmV4dFJlZ2lz
dGVyKyspLCB2YWx1ZSwgSW1tZWRpYXRlTmFrZWRTZXQpOwogCkBAIC00OTcyLDcgKzQ5NzIsNyBA
QCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgICAgICAv
LyBvbmx5IGhlbHBzIGZvciB0aGUgZmlyc3QgYmFzaWMgYmxvY2suIEl0J3MgZXh0cmVtZWx5IGlt
cG9ydGFudCBub3QgdG8gY29uc3RhbnQgZm9sZAogICAgICAgICAgICAgLy8gbG9hZHMgZnJvbSB0
aGUgc2NvcGUgcmVnaXN0ZXIgbGF0ZXIsIGFzIHRoYXQgd291bGQgcHJldmVudCB0aGUgREZHIGZy
b20gdHJhY2tpbmcgdGhlCiAgICAgICAgICAgICAvLyBieXRlY29kZS1sZXZlbCBsaXZlbmVzcyBv
ZiB0aGUgc2NvcGUgcmVnaXN0ZXIuCi0gICAgICAgICAgICBOb2RlKiBjYWxsZWUgPSBnZXQoVmly
dHVhbFJlZ2lzdGVyKEpTU3RhY2s6OkNhbGxlZSkpOworICAgICAgICAgICAgTm9kZSogY2FsbGVl
ID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90OjpjYWxsZWUpKTsKICAgICAgICAg
ICAgIE5vZGUqIHJlc3VsdDsKICAgICAgICAgICAgIGlmIChKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9
IGNhbGxlZS0+ZHluYW1pY0Nhc3RDb25zdGFudDxKU0Z1bmN0aW9uKj4oKSkKICAgICAgICAgICAg
ICAgICByZXN1bHQgPSB3ZWFrSlNDb25zdGFudChmdW5jdGlvbi0+c2NvcGUoKSk7CkBAIC01Mjgz
LDcgKzUyODMsNyBAQCBCeXRlQ29kZVBhcnNlcjo6SW5saW5lU3RhY2tFbnRyeTo6SW5saW5lCiAg
ICAgICAgIC8vIFRoZSBvd25lciBpcyB0aGUgbWFjaGluZSBjb2RlIGJsb2NrLCBhbmQgd2UgYWxy
ZWFkeSBoYXZlIGEgYmFycmllciBvbiB0aGF0IHdoZW4gdGhlCiAgICAgICAgIC8vIHBsYW4gZmlu
aXNoZXMuCiAgICAgICAgIG1faW5saW5lQ2FsbEZyYW1lLT5iYXNlbGluZUNvZGVCbG9jay5zZXRX
aXRob3V0V3JpdGVCYXJyaWVyKGNvZGVCbG9jay0+YmFzZWxpbmVWZXJzaW9uKCkpOwotICAgICAg
ICBtX2lubGluZUNhbGxGcmFtZS0+c2V0U3RhY2tPZmZzZXQoaW5saW5lQ2FsbEZyYW1lU3RhcnQu
b2Zmc2V0KCkgLSBKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJTaXplKTsKKyAgICAgICAgbV9pbmxp
bmVDYWxsRnJhbWUtPnNldFN0YWNrT2Zmc2V0KGlubGluZUNhbGxGcmFtZVN0YXJ0Lm9mZnNldCgp
IC0gQ2FsbEZyYW1lOjpoZWFkZXJTaXplSW5SZWdpc3RlcnMpOwogICAgICAgICBpZiAoY2FsbGVl
KSB7CiAgICAgICAgICAgICBtX2lubGluZUNhbGxGcmFtZS0+Y2FsbGVlUmVjb3ZlcnkgPSBWYWx1
ZVJlY292ZXJ5Ojpjb25zdGFudChjYWxsZWUpOwogICAgICAgICAgICAgbV9pbmxpbmVDYWxsRnJh
bWUtPmlzQ2xvc3VyZUNhbGwgPSBmYWxzZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ2xvYmJlcml6ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ2xvYmJlcml6ZS5oCShyZXZpc2lvbiAyMDI5OTQpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAkod29ya2luZyBjb3B5KQpAQCAtMTEzLDkgKzExMyw5
IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUKICAgICAvLyBzY2Fu
IHdvdWxkIHJlYWQuIFRoYXQncyB3aGF0IHRoaXMgZG9lcy4KICAgICBmb3IgKElubGluZUNhbGxG
cmFtZSogaW5saW5lQ2FsbEZyYW1lID0gbm9kZS0+b3JpZ2luLnNlbWFudGljLmlubGluZUNhbGxG
cmFtZTsgaW5saW5lQ2FsbEZyYW1lOyBpbmxpbmVDYWxsRnJhbWUgPSBpbmxpbmVDYWxsRnJhbWUt
PmRpcmVjdENhbGxlci5pbmxpbmVDYWxsRnJhbWUpIHsKICAgICAgICAgaWYgKGlubGluZUNhbGxG
cmFtZS0+aXNDbG9zdXJlQ2FsbCkKLSAgICAgICAgICAgIHJlYWQoQWJzdHJhY3RIZWFwKFN0YWNr
LCBpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgSlNTdGFjazo6Q2FsbGVlKSk7CisgICAg
ICAgICAgICByZWFkKEFic3RyYWN0SGVhcChTdGFjaywgaW5saW5lQ2FsbEZyYW1lLT5zdGFja09m
ZnNldCArIENhbGxGcmFtZVNsb3Q6OmNhbGxlZSkpOwogICAgICAgICBpZiAoaW5saW5lQ2FsbEZy
YW1lLT5pc1ZhcmFyZ3MoKSkKLSAgICAgICAgICAgIHJlYWQoQWJzdHJhY3RIZWFwKFN0YWNrLCBp
bmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgSlNTdGFjazo6QXJndW1lbnRDb3VudCkpOwor
ICAgICAgICAgICAgcmVhZChBYnN0cmFjdEhlYXAoU3RhY2ssIGlubGluZUNhbGxGcmFtZS0+c3Rh
Y2tPZmZzZXQgKyBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSk7CiAgICAgfQogCiAgICAg
Ly8gV2UgZG9uJ3Qgd2FudCB0byBzcGVjaWZpY2FsbHkgYWNjb3VudCB3aGljaCBub2RlcyBjYW4g
cmVhZCBmcm9tIHRoZSBzY29wZQpAQCAtNTAxLDEzICs1MDEsMTMgQEAgdm9pZCBjbG9iYmVyaXpl
KEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZQogICAgICAgICByZXR1cm47CiAgICAgICAgIAogICAg
IGNhc2UgR2V0Q2FsbGVlOgotICAgICAgICByZWFkKEFic3RyYWN0SGVhcChTdGFjaywgSlNTdGFj
azo6Q2FsbGVlKSk7Ci0gICAgICAgIGRlZihIZWFwTG9jYXRpb24oU3RhY2tMb2MsIEFic3RyYWN0
SGVhcChTdGFjaywgSlNTdGFjazo6Q2FsbGVlKSksIExhenlOb2RlKG5vZGUpKTsKKyAgICAgICAg
cmVhZChBYnN0cmFjdEhlYXAoU3RhY2ssIENhbGxGcmFtZVNsb3Q6OmNhbGxlZSkpOworICAgICAg
ICBkZWYoSGVhcExvY2F0aW9uKFN0YWNrTG9jLCBBYnN0cmFjdEhlYXAoU3RhY2ssIENhbGxGcmFt
ZVNsb3Q6OmNhbGxlZSkpLCBMYXp5Tm9kZShub2RlKSk7CiAgICAgICAgIHJldHVybjsKICAgICAg
ICAgCiAgICAgY2FzZSBHZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpczoKLSAgICAgICAgcmVh
ZChBYnN0cmFjdEhlYXAoU3RhY2ssIEpTU3RhY2s6OkFyZ3VtZW50Q291bnQpKTsKLSAgICAgICAg
ZGVmKEhlYXBMb2NhdGlvbihTdGFja1BheWxvYWRMb2MsIEFic3RyYWN0SGVhcChTdGFjaywgSlNT
dGFjazo6QXJndW1lbnRDb3VudCkpLCBMYXp5Tm9kZShub2RlKSk7CisgICAgICAgIHJlYWQoQWJz
dHJhY3RIZWFwKFN0YWNrLCBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSk7CisgICAgICAg
IGRlZihIZWFwTG9jYXRpb24oU3RhY2tQYXlsb2FkTG9jLCBBYnN0cmFjdEhlYXAoU3RhY2ssIENh
bGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpKSwgTGF6eU5vZGUobm9kZSkpOwogICAgICAgICBy
ZXR1cm47CiAKICAgICBjYXNlIEdldFJlc3RMZW5ndGg6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0dyYXBoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0dyYXBoLmNwcAkocmV2aXNpb24gMjAyOTk0KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMTIsMTkgKzEwMTIs
MTkgQEAgYm9vbCBHcmFwaDo6aXNMaXZlSW5CeXRlY29kZShWaXJ0dWFsUmVnaQogICAgICAgICBp
ZiAodmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2coInJlZyA9ICIsIHJlZywgIlxuIik7CiAg
ICAgICAgIAotICAgICAgICBpZiAob3BlcmFuZC5vZmZzZXQoKSA8IGNvZGVPcmlnaW5QdHItPnN0
YWNrT2Zmc2V0KCkgKyBKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJTaXplKSB7CisgICAgICAgIGlm
IChvcGVyYW5kLm9mZnNldCgpIDwgY29kZU9yaWdpblB0ci0+c3RhY2tPZmZzZXQoKSArIENhbGxG
cmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJzKSB7CiAgICAgICAgICAgICBpZiAocmVnLmlzQXJn
dW1lbnQoKSkgewotICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHJlZy5vZmZzZXQoKSA8
IEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlclNpemUpOworICAgICAgICAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKHJlZy5vZmZzZXQoKSA8IENhbGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJzKTsK
ICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBpZiAoY29kZU9yaWdpblB0ci0+aW5s
aW5lQ2FsbEZyYW1lLT5pc0Nsb3N1cmVDYWxsCi0gICAgICAgICAgICAgICAgICAgICYmIHJlZy5v
ZmZzZXQoKSA9PSBKU1N0YWNrOjpDYWxsZWUpIHsKKyAgICAgICAgICAgICAgICAgICAgJiYgcmVn
Lm9mZnNldCgpID09IENhbGxGcmFtZVNsb3Q6OmNhbGxlZSkgewogICAgICAgICAgICAgICAgICAg
ICBpZiAodmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIkxvb2tzIGxp
a2UgYSBjYWxsZWUuXG4iKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGlmIChjb2Rl
T3JpZ2luUHRyLT5pbmxpbmVDYWxsRnJhbWUtPmlzVmFyYXJncygpCi0gICAgICAgICAgICAgICAg
ICAgICYmIHJlZy5vZmZzZXQoKSA9PSBKU1N0YWNrOjpBcmd1bWVudENvdW50KSB7CisgICAgICAg
ICAgICAgICAgICAgICYmIHJlZy5vZmZzZXQoKSA9PSBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENv
dW50KSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQogICAgICAgICAgICAgICAg
ICAgICAgICAgZGF0YUxvZygiTG9va3MgbGlrZSB0aGUgYXJndW1lbnQgY291bnQuXG4iKTsKICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0dyYXBoLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdHcmFwaC5oCShyZXZpc2lvbiAyMDI5OTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0dyYXBoLmgJKHdvcmtpbmcgY29weSkKQEAgLTcwOSw5ICs3MDksOSBAQCBwdWJsaWM6
CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChpbmxpbmVDYWxsRnJhbWUpIHsKICAgICAg
ICAgICAgICAgICBpZiAoaW5saW5lQ2FsbEZyYW1lLT5pc0Nsb3N1cmVDYWxsKQotICAgICAgICAg
ICAgICAgICAgICBmdW5jdG9yKHN0YWNrT2Zmc2V0ICsgSlNTdGFjazo6Q2FsbGVlKTsKKyAgICAg
ICAgICAgICAgICAgICAgZnVuY3RvcihzdGFja09mZnNldCArIENhbGxGcmFtZVNsb3Q6OmNhbGxl
ZSk7CiAgICAgICAgICAgICAgICAgaWYgKGlubGluZUNhbGxGcmFtZS0+aXNWYXJhcmdzKCkpCi0g
ICAgICAgICAgICAgICAgICAgIGZ1bmN0b3Ioc3RhY2tPZmZzZXQgKyBKU1N0YWNrOjpBcmd1bWVu
dENvdW50KTsKKyAgICAgICAgICAgICAgICAgICAgZnVuY3RvcihzdGFja09mZnNldCArIENhbGxG
cmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgCiAg
ICAgICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGJhc2VsaW5lQ29kZUJsb2NrRm9yKGlu
bGluZUNhbGxGcmFtZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENv
bXBpbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJ
VENvbXBpbGVyLmNwcAkocmV2aXNpb24gMjAyOTk0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdKSVRDb21waWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwOCw3ICsxMDgsNyBA
QCB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxlRW50cnkoKQogICAgIC8vIGNoZWNrKSB3aGljaCB3
aWxsIGJlIGRlcGVuZGVudCBvbiBzdGFjayBsYXlvdXQuIChXZSdkIG5lZWQgdG8gYWNjb3VudCBm
b3IgdGhpcyBpbgogICAgIC8vIGJvdGggbm9ybWFsIHJldHVybiBjb2RlIGFuZCB3aGVuIGp1bXBp
bmcgdG8gYW4gZXhjZXB0aW9uIGhhbmRsZXIpLgogICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKCk7
Ci0gICAgZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVyKG1fY29kZUJsb2NrLCBKU1N0YWNrOjpDb2Rl
QmxvY2spOworICAgIGVtaXRQdXRUb0NhbGxGcmFtZUhlYWRlcihtX2NvZGVCbG9jaywgQ2FsbEZy
YW1lU2xvdDo6Y29kZUJsb2NrKTsKIH0KIAogdm9pZCBKSVRDb21waWxlcjo6Y29tcGlsZVNldHVw
UmVnaXN0ZXJzRm9yRW50cnkoKQpAQCAtNDQzLDcgKzQ0Myw3IEBAIHZvaWQgSklUQ29tcGlsZXI6
OmNvbXBpbGVGdW5jdGlvbigpCiAgICAgbV9hcml0eUNoZWNrID0gbGFiZWwoKTsKICAgICBjb21w
aWxlRW50cnkoKTsKIAotICAgIGxvYWQzMihBc3NlbWJseUhlbHBlcnM6OnBheWxvYWRGb3IoKFZp
cnR1YWxSZWdpc3RlcilKU1N0YWNrOjpBcmd1bWVudENvdW50KSwgR1BSSW5mbzo6cmVnVDEpOwor
ICAgIGxvYWQzMihBc3NlbWJseUhlbHBlcnM6OnBheWxvYWRGb3IoKFZpcnR1YWxSZWdpc3RlcilD
YWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSwgR1BSSW5mbzo6cmVnVDEpOwogICAgIGJyYW5j
aDMyKEFib3ZlT3JFcXVhbCwgR1BSSW5mbzo6cmVnVDEsIFRydXN0ZWRJbW0zMihtX2NvZGVCbG9j
ay0+bnVtUGFyYW1ldGVycygpKSkubGlua1RvKGZyb21Bcml0eUNoZWNrLCB0aGlzKTsKICAgICBl
bWl0U3RvcmVDb2RlT3JpZ2luKENvZGVPcmlnaW4oMCkpOwogICAgIGlmIChtYXhGcmFtZUV4dGVu
dEZvclNsb3dQYXRoQ2FsbCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklU
Q29tcGlsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJ
VENvbXBpbGVyLmgJKHJldmlzaW9uIDIwMjk5NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHSklUQ29tcGlsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTU2LDcgKzE1Niw3IEBAIHB1
YmxpYzoKIAogICAgIHZvaWQgZW1pdFN0b3JlQ2FsbFNpdGVJbmRleChDYWxsU2l0ZUluZGV4IGNh
bGxTaXRlKQogICAgIHsKLSAgICAgICAgc3RvcmUzMihUcnVzdGVkSW1tMzIoY2FsbFNpdGUuYml0
cygpKSwgdGFnRm9yKHN0YXRpY19jYXN0PFZpcnR1YWxSZWdpc3Rlcj4oSlNTdGFjazo6QXJndW1l
bnRDb3VudCkpKTsKKyAgICAgICAgc3RvcmUzMihUcnVzdGVkSW1tMzIoY2FsbFNpdGUuYml0cygp
KSwgdGFnRm9yKHN0YXRpY19jYXN0PFZpcnR1YWxSZWdpc3Rlcj4oQ2FsbEZyYW1lU2xvdDo6YXJn
dW1lbnRDb3VudCkpKTsKICAgICB9CiAKICAgICAvLyBBZGQgYSBjYWxsIG91dCBmcm9tIEpJVCBj
b2RlLCB3aXRob3V0IGFuIGV4Y2VwdGlvbiBjaGVjay4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT1NSQXZhaWxhYmlsaXR5QW5hbHlzaXNQaGFzZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JBdmFpbGFiaWxpdHlBbmFseXNpc1Bo
YXNlLmNwcAkocmV2aXNpb24gMjAyOTk0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPU1JBdmFpbGFiaWxpdHlBbmFseXNpc1BoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc3
LDE0ICsxNzcsMTQgQEAgdm9pZCBMb2NhbE9TUkF2YWlsYWJpbGl0eUNhbGN1bGF0b3I6OmV4ZQog
ICAgICAgICBpZiAoaW5saW5lQ2FsbEZyYW1lLT5pc1ZhcmFyZ3MoKSkgewogICAgICAgICAgICAg
Ly8gUmVjb3JkIGhvdyB0byByZWFkIGVhY2ggYXJndW1lbnQgYW5kIHRoZSBhcmd1bWVudCBjb3Vu
dC4KICAgICAgICAgICAgIEF2YWlsYWJpbGl0eSBhcmd1bWVudENvdW50ID0KLSAgICAgICAgICAg
ICAgICBtX2F2YWlsYWJpbGl0eS5tX2xvY2Fscy5vcGVyYW5kKGlubGluZUNhbGxGcmFtZS0+c3Rh
Y2tPZmZzZXQgKyBKU1N0YWNrOjpBcmd1bWVudENvdW50KTsKKyAgICAgICAgICAgICAgICBtX2F2
YWlsYWJpbGl0eS5tX2xvY2Fscy5vcGVyYW5kKGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQg
KyBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KTsKICAgICAgICAgICAgIAogICAgICAgICAg
ICAgbV9hdmFpbGFiaWxpdHkubV9oZWFwLnNldChQcm9tb3RlZEhlYXBMb2NhdGlvbihBcmd1bWVu
dENvdW50UExvYywgbm9kZSksIGFyZ3VtZW50Q291bnQpOwogICAgICAgICB9CiAgICAgICAgIAog
ICAgICAgICBpZiAoaW5saW5lQ2FsbEZyYW1lLT5pc0Nsb3N1cmVDYWxsKSB7CiAgICAgICAgICAg
ICBBdmFpbGFiaWxpdHkgY2FsbGVlID0gbV9hdmFpbGFiaWxpdHkubV9sb2NhbHMub3BlcmFuZCgK
LSAgICAgICAgICAgICAgICBpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgSlNTdGFjazo6
Q2FsbGVlKTsKKyAgICAgICAgICAgICAgICBpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsg
Q2FsbEZyYW1lU2xvdDo6Y2FsbGVlKTsKICAgICAgICAgICAgIG1fYXZhaWxhYmlsaXR5Lm1faGVh
cC5zZXQoUHJvbW90ZWRIZWFwTG9jYXRpb24oQXJndW1lbnRzQ2FsbGVlUExvYywgbm9kZSksIGNh
bGxlZSk7CiAgICAgICAgIH0KICAgICAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09TUkVudHJ5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09TUkVudHJ5LmNwcAkocmV2aXNpb24gMjAyOTk0KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPU1JFbnRyeS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2NCw3ICsyNjQs
NyBAQCB2b2lkKiBwcmVwYXJlT1NSRW50cnkoRXhlY1N0YXRlKiBleGVjLCBDCiAgICAgdW5zaWdu
ZWQgYmFzZWxpbmVGcmFtZVNpemUgPSBlbnRyeS0+bV9leHBlY3RlZFZhbHVlcy5udW1iZXJPZkxv
Y2FscygpOwogICAgIHVuc2lnbmVkIG1heEZyYW1lU2l6ZSA9IHN0ZDo6bWF4KGZyYW1lU2l6ZSwg
YmFzZWxpbmVGcmFtZVNpemUpOwogCi0gICAgUmVnaXN0ZXIqIHNjcmF0Y2ggPSBiaXR3aXNlX2Nh
c3Q8UmVnaXN0ZXIqPih2bS0+c2NyYXRjaEJ1ZmZlckZvclNpemUoc2l6ZW9mKFJlZ2lzdGVyKSAq
ICgyICsgSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyU2l6ZSArIG1heEZyYW1lU2l6ZSkpLT5kYXRh
QnVmZmVyKCkpOworICAgIFJlZ2lzdGVyKiBzY3JhdGNoID0gYml0d2lzZV9jYXN0PFJlZ2lzdGVy
Kj4odm0tPnNjcmF0Y2hCdWZmZXJGb3JTaXplKHNpemVvZihSZWdpc3RlcikgKiAoMiArIENhbGxG
cmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJzICsgbWF4RnJhbWVTaXplKSktPmRhdGFCdWZmZXIo
KSk7CiAgICAgCiAgICAgKmJpdHdpc2VfY2FzdDxzaXplX3QqPihzY3JhdGNoICsgMCkgPSBmcmFt
ZVNpemU7CiAgICAgCkBAIC0yNzQsOSArMjc0LDkgQEAgdm9pZCogcHJlcGFyZU9TUkVudHJ5KEV4
ZWNTdGF0ZSogZXhlYywgQwogICAgIFJFTEVBU0VfQVNTRVJUKHRhcmdldFBDKTsKICAgICAqYml0
d2lzZV9jYXN0PHZvaWQqKj4oc2NyYXRjaCArIDEpID0gdGFyZ2V0UEM7CiAgICAgCi0gICAgUmVn
aXN0ZXIqIHBpdm90ID0gc2NyYXRjaCArIDIgKyBKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJTaXpl
OworICAgIFJlZ2lzdGVyKiBwaXZvdCA9IHNjcmF0Y2ggKyAyICsgQ2FsbEZyYW1lOjpoZWFkZXJT
aXplSW5SZWdpc3RlcnM7CiAgICAgCi0gICAgZm9yIChpbnQgaW5kZXggPSAtSlNTdGFjazo6Q2Fs
bEZyYW1lSGVhZGVyU2l6ZTsgaW5kZXggPCBzdGF0aWNfY2FzdDxpbnQ+KGJhc2VsaW5lRnJhbWVT
aXplKTsgKytpbmRleCkgeworICAgIGZvciAoaW50IGluZGV4ID0gLUNhbGxGcmFtZTo6aGVhZGVy
U2l6ZUluUmVnaXN0ZXJzOyBpbmRleCA8IHN0YXRpY19jYXN0PGludD4oYmFzZWxpbmVGcmFtZVNp
emUpOyArK2luZGV4KSB7CiAgICAgICAgIFZpcnR1YWxSZWdpc3RlciByZWcoLTEgLSBpbmRleCk7
CiAgICAgICAgIAogICAgICAgICBpZiAocmVnLmlzTG9jYWwoKSkgewpAQCAtMzI5LDcgKzMyOSw3
IEBAIHZvaWQqIHByZXBhcmVPU1JFbnRyeShFeGVjU3RhdGUqIGV4ZWMsIEMKICAgICAKICAgICAv
LyA3KSBGaXggdGhlIGNhbGwgZnJhbWUgdG8gaGF2ZSB0aGUgcmlnaHQgY29kZSBibG9jay4KICAg
ICAKLSAgICAqYml0d2lzZV9jYXN0PENvZGVCbG9jayoqPihwaXZvdCAtIDEgLSBKU1N0YWNrOjpD
b2RlQmxvY2spID0gY29kZUJsb2NrOworICAgICpiaXR3aXNlX2Nhc3Q8Q29kZUJsb2NrKio+KHBp
dm90IC0gMSAtIENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jaykgPSBjb2RlQmxvY2s7CiAgICAgCiAg
ICAgaWYgKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSkKICAgICAgICAgZGF0YUxvZ0YoIiAgICBPU1Ig
cmV0dXJuaW5nIGRhdGEgYnVmZmVyICVwLlxuIiwgc2NyYXRjaCk7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIuY3BwCShyZXZpc2lvbiAy
MDI5OTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTcwLDcgKzcwLDcgQEAgdm9pZCBPU1JFeGl0Q29tcGlsZXI6
OmVtaXRSZXN0b3JlQXJndW1lbgogICAgICAgICAKICAgICAgICAgaWYgKCFpbmxpbmVDYWxsRnJh
bWUgfHwgaW5saW5lQ2FsbEZyYW1lLT5pc0Nsb3N1cmVDYWxsKSB7CiAgICAgICAgICAgICBtX2pp
dC5sb2FkUHRyKAotICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0Zvcihz
dGFja09mZnNldCArIEpTU3RhY2s6OkNhbGxlZSksCisgICAgICAgICAgICAgICAgQXNzZW1ibHlI
ZWxwZXJzOjphZGRyZXNzRm9yKHN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlKSwK
ICAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZWdUMCk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICBtX2ppdC5tb3ZlKApAQCAtODAsNyArODAsNyBAQCB2b2lkIE9TUkV4aXRDb21waWxl
cjo6ZW1pdFJlc3RvcmVBcmd1bWVuCiAgICAgICAgIAogICAgICAgICBpZiAoIWlubGluZUNhbGxG
cmFtZSB8fCBpbmxpbmVDYWxsRnJhbWUtPmlzVmFyYXJncygpKSB7CiAgICAgICAgICAgICBtX2pp
dC5sb2FkMzIoCi0gICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpwYXlsb2FkRm9yKHN0
YWNrT2Zmc2V0ICsgSlNTdGFjazo6QXJndW1lbnRDb3VudCksCisgICAgICAgICAgICAgICAgQXNz
ZW1ibHlIZWxwZXJzOjpwYXlsb2FkRm9yKHN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lU2xvdDo6YXJn
dW1lbnRDb3VudCksCiAgICAgICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDEpOwogICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICAgbV9qaXQubW92ZSgKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5jcHAJKHJldmlz
aW9uIDIwMjk5NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBp
bGVyQ29tbW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ0LDcgKzE0NCw3IEBAIHZvaWQgcmVp
ZnlJbmxpbmVkQ2FsbEZyYW1lcyhDQ2FsbEhlbHBlcnMKICAgICAvLyBpbiBwcmVzZW5jZSBvZiBp
bmxpbmVkIHRhaWwgY2FsbHMuCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE0NzUxMQogICAgIEFTU0VSVChqaXQuYmFzZWxpbmVDb2RlQmxvY2soKS0+aml0
VHlwZSgpID09IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKLSAgICBqaXQuc3RvcmVQdHIoQXNzZW1i
bHlIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGppdC5iYXNlbGluZUNvZGVCbG9jaygpKSwgQXNzZW1i
bHlIZWxwZXJzOjphZGRyZXNzRm9yKChWaXJ0dWFsUmVnaXN0ZXIpSlNTdGFjazo6Q29kZUJsb2Nr
KSk7CisgICAgaml0LnN0b3JlUHRyKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbVB0cihqaXQu
YmFzZWxpbmVDb2RlQmxvY2soKSksIEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0ZvcigoVmlydHVh
bFJlZ2lzdGVyKUNhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jaykpOwogCiAgICAgY29uc3QgQ29kZU9y
aWdpbiogY29kZU9yaWdpbjsKICAgICBmb3IgKGNvZGVPcmlnaW4gPSAmZXhpdC5tX2NvZGVPcmln
aW47IGNvZGVPcmlnaW4gJiYgY29kZU9yaWdpbi0+aW5saW5lQ2FsbEZyYW1lOyBjb2RlT3JpZ2lu
ID0gY29kZU9yaWdpbi0+aW5saW5lQ2FsbEZyYW1lLT5nZXRDYWxsZXJTa2lwcGluZ1RhaWxDYWxs
cygpKSB7CkBAIC0yMDUsNyArMjA1LDcgQEAgdm9pZCByZWlmeUlubGluZWRDYWxsRnJhbWVzKEND
YWxsSGVscGVycwogICAgICAgICAgICAgaml0LnN0b3JlUHRyKEFzc2VtYmx5SGVscGVyczo6VHJ1
c3RlZEltbVB0cihqdW1wVGFyZ2V0KSwgQXNzZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9yQnl0ZU9m
ZnNldChpbmxpbmVDYWxsRnJhbWUtPnJldHVyblBDT2Zmc2V0KCkpKTsKICAgICAgICAgfQogCi0g
ICAgICAgIGppdC5zdG9yZVB0cihBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoYmFzZWxp
bmVDb2RlQmxvY2spLCBBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3IoKFZpcnR1YWxSZWdpc3Rl
cikoaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCArIEpTU3RhY2s6OkNvZGVCbG9jaykpKTsK
KyAgICAgICAgaml0LnN0b3JlUHRyKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbVB0cihiYXNl
bGluZUNvZGVCbG9jayksIEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0ZvcigoVmlydHVhbFJlZ2lz
dGVyKShpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lU2xvdDo6Y29kZUJs
b2NrKSkpOwogCiAgICAgICAgIC8vIFJlc3RvcmUgdGhlIGlubGluZSBjYWxsIGZyYW1lJ3MgY2Fs
bGVlIHNhdmUgcmVnaXN0ZXJzLgogICAgICAgICAvLyBJZiB0aGlzIGlubGluZWQgZnJhbWUgaXMg
YSB0YWlsIGNhbGwgdGhhdCB3aWxsIHJldHVybiBiYWNrIHRvIHRoZSBvcmlnaW5hbCBjYWxsZXIs
IHdlIG5lZWQgdG8KQEAgLTIxNywyMSArMjE3LDIxIEBAIHZvaWQgcmVpZnlJbmxpbmVkQ2FsbEZy
YW1lcyhDQ2FsbEhlbHBlcnMKICAgICAgICAgICAgIEdQUkluZm86OnJlZ1QyKTsKIAogICAgICAg
ICBpZiAoIWlubGluZUNhbGxGcmFtZS0+aXNWYXJhcmdzKCkpCi0gICAgICAgICAgICBqaXQuc3Rv
cmUzMihBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMihpbmxpbmVDYWxsRnJhbWUtPmFyZ3Vt
ZW50cy5zaXplKCkpLCBBc3NlbWJseUhlbHBlcnM6OnBheWxvYWRGb3IoKFZpcnR1YWxSZWdpc3Rl
cikoaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCArIEpTU3RhY2s6OkFyZ3VtZW50Q291bnQp
KSk7CisgICAgICAgICAgICBqaXQuc3RvcmUzMihBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0z
MihpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5zaXplKCkpLCBBc3NlbWJseUhlbHBlcnM6OnBh
eWxvYWRGb3IoKFZpcnR1YWxSZWdpc3RlcikoaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCAr
IENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpKSk7CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAg
ICAgICAgaml0LnN0b3JlNjQoY2FsbGVyRnJhbWVHUFIsIEFzc2VtYmx5SGVscGVyczo6YWRkcmVz
c0ZvckJ5dGVPZmZzZXQoaW5saW5lQ2FsbEZyYW1lLT5jYWxsZXJGcmFtZU9mZnNldCgpKSk7CiAg
ICAgICAgIHVpbnQzMl90IGxvY2F0aW9uQml0cyA9IENhbGxTaXRlSW5kZXgoY29kZU9yaWdpbi0+
Ynl0ZWNvZGVJbmRleCkuYml0cygpOwotICAgICAgICBqaXQuc3RvcmUzMihBc3NlbWJseUhlbHBl
cnM6OlRydXN0ZWRJbW0zMihsb2NhdGlvbkJpdHMpLCBBc3NlbWJseUhlbHBlcnM6OnRhZ0Zvcigo
VmlydHVhbFJlZ2lzdGVyKShpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgSlNTdGFjazo6
QXJndW1lbnRDb3VudCkpKTsKKyAgICAgICAgaml0LnN0b3JlMzIoQXNzZW1ibHlIZWxwZXJzOjpU
cnVzdGVkSW1tMzIobG9jYXRpb25CaXRzKSwgQXNzZW1ibHlIZWxwZXJzOjp0YWdGb3IoKFZpcnR1
YWxSZWdpc3RlcikoaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCArIENhbGxGcmFtZVNsb3Q6
OmFyZ3VtZW50Q291bnQpKSk7CiAgICAgICAgIGlmICghaW5saW5lQ2FsbEZyYW1lLT5pc0Nsb3N1
cmVDYWxsKQotICAgICAgICAgICAgaml0LnN0b3JlNjQoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVk
SW1tNjQoSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoaW5saW5lQ2FsbEZyYW1lLT5jYWxsZWVDb25z
dGFudCgpKSkpLCBBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3IoKFZpcnR1YWxSZWdpc3Rlciko
aW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCArIEpTU3RhY2s6OkNhbGxlZSkpKTsKKyAgICAg
ICAgICAgIGppdC5zdG9yZTY0KEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTY0KEpTVmFsdWU6
OmVuY29kZShKU1ZhbHVlKGlubGluZUNhbGxGcmFtZS0+Y2FsbGVlQ29uc3RhbnQoKSkpKSwgQXNz
ZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9yKChWaXJ0dWFsUmVnaXN0ZXIpKGlubGluZUNhbGxGcmFt
ZS0+c3RhY2tPZmZzZXQgKyBDYWxsRnJhbWVTbG90OjpjYWxsZWUpKSk7CiAjZWxzZSAvLyBVU0Uo
SlNWQUxVRTY0KSAvLyBzbyB0aGlzIGlzIHRoZSAzMi1iaXQgcGFydAogICAgICAgICBqaXQuc3Rv
cmVQdHIoY2FsbGVyRnJhbWVHUFIsIEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0ZvckJ5dGVPZmZz
ZXQoaW5saW5lQ2FsbEZyYW1lLT5jYWxsZXJGcmFtZU9mZnNldCgpKSk7CiAgICAgICAgIEluc3Ry
dWN0aW9uKiBpbnN0cnVjdGlvbiA9IGJhc2VsaW5lQ29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5i
ZWdpbigpICsgY29kZU9yaWdpbi0+Ynl0ZWNvZGVJbmRleDsKICAgICAgICAgdWludDMyX3QgbG9j
YXRpb25CaXRzID0gQ2FsbFNpdGVJbmRleChpbnN0cnVjdGlvbikuYml0cygpOwotICAgICAgICBq
aXQuc3RvcmUzMihBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMihsb2NhdGlvbkJpdHMpLCBB
c3NlbWJseUhlbHBlcnM6OnRhZ0ZvcigoVmlydHVhbFJlZ2lzdGVyKShpbmxpbmVDYWxsRnJhbWUt
PnN0YWNrT2Zmc2V0ICsgSlNTdGFjazo6QXJndW1lbnRDb3VudCkpKTsKLSAgICAgICAgaml0LnN0
b3JlMzIoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZyksIEFz
c2VtYmx5SGVscGVyczo6dGFnRm9yKChWaXJ0dWFsUmVnaXN0ZXIpKGlubGluZUNhbGxGcmFtZS0+
c3RhY2tPZmZzZXQgKyBKU1N0YWNrOjpDYWxsZWUpKSk7CisgICAgICAgIGppdC5zdG9yZTMyKEFz
c2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKGxvY2F0aW9uQml0cyksIEFzc2VtYmx5SGVscGVy
czo6dGFnRm9yKChWaXJ0dWFsUmVnaXN0ZXIpKGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQg
KyBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSkpOworICAgICAgICBqaXQuc3RvcmUzMihB
c3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSwgQXNzZW1ibHlI
ZWxwZXJzOjp0YWdGb3IoKFZpcnR1YWxSZWdpc3RlcikoaW5saW5lQ2FsbEZyYW1lLT5zdGFja09m
ZnNldCArIENhbGxGcmFtZVNsb3Q6OmNhbGxlZSkpKTsKICAgICAgICAgaWYgKCFpbmxpbmVDYWxs
RnJhbWUtPmlzQ2xvc3VyZUNhbGwpCi0gICAgICAgICAgICBqaXQuc3RvcmVQdHIoQXNzZW1ibHlI
ZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGlubGluZUNhbGxGcmFtZS0+Y2FsbGVlQ29uc3RhbnQoKSks
IEFzc2VtYmx5SGVscGVyczo6cGF5bG9hZEZvcigoVmlydHVhbFJlZ2lzdGVyKShpbmxpbmVDYWxs
RnJhbWUtPnN0YWNrT2Zmc2V0ICsgSlNTdGFjazo6Q2FsbGVlKSkpOworICAgICAgICAgICAgaml0
LnN0b3JlUHRyKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbVB0cihpbmxpbmVDYWxsRnJhbWUt
PmNhbGxlZUNvbnN0YW50KCkpLCBBc3NlbWJseUhlbHBlcnM6OnBheWxvYWRGb3IoKFZpcnR1YWxS
ZWdpc3RlcikoaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCArIENhbGxGcmFtZVNsb3Q6OmNh
bGxlZSkpKTsKICNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0KSAvLyBlbmRpbmcgdGhlICNlbHNlIHBh
cnQsIHNvIGRpcmVjdGx5IGFib3ZlIGlzIHRoZSAzMi1iaXQgcGFydAogICAgIH0KIApAQCAtMjQz
LDcgKzI0Myw3IEBAIHZvaWQgcmVpZnlJbmxpbmVkQ2FsbEZyYW1lcyhDQ2FsbEhlbHBlcnMKICAg
ICAgICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uID0gaml0LmJhc2VsaW5lQ29kZUJsb2NrKCkt
Pmluc3RydWN0aW9ucygpLmJlZ2luKCkgKyBjb2RlT3JpZ2luLT5ieXRlY29kZUluZGV4OwogICAg
ICAgICB1aW50MzJfdCBsb2NhdGlvbkJpdHMgPSBDYWxsU2l0ZUluZGV4KGluc3RydWN0aW9uKS5i
aXRzKCk7CiAjZW5kaWYKLSAgICAgICAgaml0LnN0b3JlMzIoQXNzZW1ibHlIZWxwZXJzOjpUcnVz
dGVkSW1tMzIobG9jYXRpb25CaXRzKSwgQXNzZW1ibHlIZWxwZXJzOjp0YWdGb3IoKFZpcnR1YWxS
ZWdpc3RlcikoSlNTdGFjazo6QXJndW1lbnRDb3VudCkpKTsKKyAgICAgICAgaml0LnN0b3JlMzIo
QXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIobG9jYXRpb25CaXRzKSwgQXNzZW1ibHlIZWxw
ZXJzOjp0YWdGb3IoKFZpcnR1YWxSZWdpc3RlcikoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3Vu
dCkpKTsKICAgICB9CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NS
RXhpdENvbXBpbGVyQ29tbW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uaAkocmV2aXNpb24gMjAyOTk0KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uaAkod29ya2lu
ZyBjb3B5KQpAQCAtODYsNyArODYsNyBAQCB2b2lkIGFkanVzdEZyYW1lQW5kU3RhY2tJbk9TUkV4
aXRDb21waWxlCiAgICAgaml0Lm1vdmUoR1BSSW5mbzo6cmVnVDAsIEdQUkluZm86OmNhbGxGcmFt
ZVJlZ2lzdGVyKTsKICAgICBkaWROb3RIYXZlRXhjZXB0aW9uLmxpbmsoJmppdCk7CiAgICAgLy8g
V2UgbmVlZCB0byBtYWtlIHN1cmUgU1AgaXMgY29ycmVjdCBpbiBjYXNlIG9mIGFuIGV4Y2VwdGlv
bi4KLSAgICBqaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhHUFJJbmZvOjpjYWxs
RnJhbWVSZWdpc3RlciwgSlNTdGFjazo6Q29kZUJsb2NrICogc3RhdGljX2Nhc3Q8aW50PihzaXpl
b2YoUmVnaXN0ZXIpKSksIEdQUkluZm86OnJlZ1QwKTsKKyAgICBqaXQubG9hZFB0cihNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgQ2FsbEZyYW1lU2xv
dDo6Y29kZUJsb2NrICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSksIEdQUklu
Zm86OnJlZ1QwKTsKICAgICBqaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhHUFJJ
bmZvOjpyZWdUMCwgQ29kZUJsb2NrOjpqaXRDb2RlT2Zmc2V0KCkpLCBHUFJJbmZvOjpyZWdUMCk7
CiAgICAgaml0LmFkZFB0cihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKEpJVENvZGVUeXBl
Ojpjb21tb25EYXRhT2Zmc2V0KCkpLCBHUFJJbmZvOjpyZWdUMCk7CiAgICAgaml0LmxvYWQzMihN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhHUFJJbmZvOjpyZWdUMCwgQ29tbW9uRGF0YTo6ZnJhbWVS
ZWdpc3RlckNvdW50T2Zmc2V0KCkpLCBHUFJJbmZvOjpyZWdUMCk7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1ByZWNpc2VMb2NhbENsb2JiZXJpemUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWNpc2VMb2NhbENsb2JiZXJpemUuaAko
cmV2aXNpb24gMjAyOTk0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVjaXNl
TG9jYWxDbG9iYmVyaXplLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyNSwxNCArMTI1LDE0IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICAgICAgLy8gUmVhZCB0aGUgb3V0ZXJtb3N0IGFyZ3VtZW50cyBh
bmQgYXJndW1lbnQgY291bnQuCiAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9n
cmFwaC5tX2NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpOyBpLS0gPiAxOykKICAgICAgICAgICAg
ICAgICAgICAgbV9yZWFkKHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGkpKTsKLSAgICAgICAg
ICAgICAgICBtX3JlYWQoVmlydHVhbFJlZ2lzdGVyKEpTU3RhY2s6OkFyZ3VtZW50Q291bnQpKTsK
KyAgICAgICAgICAgICAgICBtX3JlYWQoVmlydHVhbFJlZ2lzdGVyKENhbGxGcmFtZVNsb3Q6OmFy
Z3VtZW50Q291bnQpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIAogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gaW5saW5lQ2FsbEZyYW1l
LT5hcmd1bWVudHMuc2l6ZSgpOyBpLS0gPiAxOykKICAgICAgICAgICAgICAgICBtX3JlYWQoVmly
dHVhbFJlZ2lzdGVyKGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyB2aXJ0dWFsUmVnaXN0
ZXJGb3JBcmd1bWVudChpKS5vZmZzZXQoKSkpOwogICAgICAgICAgICAgaWYgKGlubGluZUNhbGxG
cmFtZS0+aXNWYXJhcmdzKCkpCi0gICAgICAgICAgICAgICAgbV9yZWFkKFZpcnR1YWxSZWdpc3Rl
cihpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgSlNTdGFjazo6QXJndW1lbnRDb3VudCkp
OworICAgICAgICAgICAgICAgIG1fcmVhZChWaXJ0dWFsUmVnaXN0ZXIoaW5saW5lQ2FsbEZyYW1l
LT5zdGFja09mZnNldCArIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAKQEAgLTE0Miw3ICsxNDIsNyBAQCBw
cml2YXRlOgogICAgICAgICAgICAgICAgIG1fcmVhZCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVu
dChpKSk7CiAgICAgICAgIAogICAgICAgICAgICAgLy8gVGhlIHN0YWNrIGhlYWRlciBpcyByZWFk
LgotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IEpTU3RhY2s6OlRoaXNBcmd1
bWVudDsgKytpKQorICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IENhbGxGcmFt
ZVNsb3Q6OnRoaXNBcmd1bWVudDsgKytpKQogICAgICAgICAgICAgICAgIG1fcmVhZChWaXJ0dWFs
UmVnaXN0ZXIoaSkpOwogICAgICAgICAKICAgICAgICAgICAgIC8vIFJlYWQgYWxsIG9mIHRoZSBp
bmxpbmUgYXJndW1lbnRzIGFuZCBjYWxsIGZyYW1lIGhlYWRlcnMgdGhhdCB3ZSBkaWRuJ3QgYWxy
ZWFkeSBjYXB0dXJlLgpAQCAtMTUwLDkgKzE1MCw5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgpOyBp
LS0gPiAxOykKICAgICAgICAgICAgICAgICAgICAgbV9yZWFkKFZpcnR1YWxSZWdpc3Rlcihpbmxp
bmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoaSku
b2Zmc2V0KCkpKTsKICAgICAgICAgICAgICAgICBpZiAoaW5saW5lQ2FsbEZyYW1lLT5pc0Nsb3N1
cmVDYWxsKQotICAgICAgICAgICAgICAgICAgICBtX3JlYWQoVmlydHVhbFJlZ2lzdGVyKGlubGlu
ZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyBKU1N0YWNrOjpDYWxsZWUpKTsKKyAgICAgICAgICAg
ICAgICAgICAgbV9yZWFkKFZpcnR1YWxSZWdpc3RlcihpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zm
c2V0ICsgQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlKSk7CiAgICAgICAgICAgICAgICAgaWYgKGlubGlu
ZUNhbGxGcmFtZS0+aXNWYXJhcmdzKCkpCi0gICAgICAgICAgICAgICAgICAgIG1fcmVhZChWaXJ0
dWFsUmVnaXN0ZXIoaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCArIEpTU3RhY2s6OkFyZ3Vt
ZW50Q291bnQpKTsKKyAgICAgICAgICAgICAgICAgICAgbV9yZWFkKFZpcnR1YWxSZWdpc3Rlcihp
bmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3Vu
dCkpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0gfQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
MzJfNjQuY3BwCShyZXZpc2lvbiAyMDI5OTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MzUsNyArODM1
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSogbm9kZQogICAgICAgICAg
ICAgICAgIHNodWZmbGVEYXRhLmFyZ3NbaV0gPSBpbmZvLnJlY292ZXJ5KGFyZ0VkZ2UtPnZpcnR1
YWxSZWdpc3RlcigpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgIG1faml0LnN0b3JlMzIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihudW1QYXNzZWRB
cmdzKSwgbV9qaXQuY2FsbGVlRnJhbWVQYXlsb2FkU2xvdChKU1N0YWNrOjpBcmd1bWVudENvdW50
KSk7CisgICAgICAgICAgICBtX2ppdC5zdG9yZTMyKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1t
MzIobnVtUGFzc2VkQXJncyksIG1faml0LmNhbGxlZUZyYW1lUGF5bG9hZFNsb3QoQ2FsbEZyYW1l
U2xvdDo6YXJndW1lbnRDb3VudCkpOwogICAgICAgICAKICAgICAgICAgICAgIGZvciAoaW50IGkg
PSAwOyBpIDwgbnVtUGFzc2VkQXJnczsgaSsrKSB7CiAgICAgICAgICAgICAgICAgRWRnZSBhcmdF
ZGdlID0gbV9qaXQuZ3JhcGgoKS5tX3ZhckFyZ0NoaWxkcmVuW25vZGUtPmZpcnN0Q2hpbGQoKSAr
IDEgKyBpXTsKQEAgLTg1NSw4ICs4NTUsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0Q2Fs
bChOb2RlKiBub2RlCiAgICAgICAgIGNhbGxlZVRhZ0dQUiA9IGNhbGxlZS50YWdHUFIoKTsKICAg
ICAgICAgY2FsbGVlUGF5bG9hZEdQUiA9IGNhbGxlZS5wYXlsb2FkR1BSKCk7CiAgICAgICAgIHVz
ZShjYWxsZWVFZGdlKTsKLSAgICAgICAgbV9qaXQuc3RvcmUzMihjYWxsZWVQYXlsb2FkR1BSLCBt
X2ppdC5jYWxsZWVGcmFtZVBheWxvYWRTbG90KEpTU3RhY2s6OkNhbGxlZSkpOwotICAgICAgICBt
X2ppdC5zdG9yZTMyKGNhbGxlZVRhZ0dQUiwgbV9qaXQuY2FsbGVlRnJhbWVUYWdTbG90KEpTU3Rh
Y2s6OkNhbGxlZSkpOworICAgICAgICBtX2ppdC5zdG9yZTMyKGNhbGxlZVBheWxvYWRHUFIsIG1f
aml0LmNhbGxlZUZyYW1lUGF5bG9hZFNsb3QoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlKSk7CisgICAg
ICAgIG1faml0LnN0b3JlMzIoY2FsbGVlVGFnR1BSLCBtX2ppdC5jYWxsZWVGcmFtZVRhZ1Nsb3Qo
Q2FsbEZyYW1lU2xvdDo6Y2FsbGVlKSk7CiAKICAgICAgICAgaWYgKCFpc1RhaWwpCiAgICAgICAg
ICAgICBmbHVzaFJlZ2lzdGVycygpOwpAQCAtNDExNiwxNCArNDExNiwxNCBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAKICAgICBjYXNlIEdldENhbGxlZTogewog
ICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwotICAgICAgICBtX2ppdC5sb2FkUHRy
KEpJVENvbXBpbGVyOjpwYXlsb2FkRm9yKEpTU3RhY2s6OkNhbGxlZSksIHJlc3VsdC5ncHIoKSk7
CisgICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OnBheWxvYWRGb3IoQ2FsbEZyYW1l
U2xvdDo6Y2FsbGVlKSwgcmVzdWx0LmdwcigpKTsKICAgICAgICAgY2VsbFJlc3VsdChyZXN1bHQu
Z3ByKCksIG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgICAgIAogICAgIGNhc2Ug
R2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXM6IHsKICAgICAgICAgR1BSVGVtcG9yYXJ5IHJl
c3VsdCh0aGlzKTsKLSAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjpwYXlsb2FkRm9y
KEpTU3RhY2s6OkFyZ3VtZW50Q291bnQpLCByZXN1bHQuZ3ByKCkpOworICAgICAgICBtX2ppdC5s
b2FkMzIoSklUQ29tcGlsZXI6OnBheWxvYWRGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3Vu
dCksIHJlc3VsdC5ncHIoKSk7CiAgICAgICAgIGludDMyUmVzdWx0KHJlc3VsdC5ncHIoKSwgbm9k
ZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkocmV2aXNpb24gMjAyOTk0KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtODA2LDcgKzgwNiw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxs
KE5vZGUqIG5vZGUKIAogICAgICAgICAgICAgc2h1ZmZsZURhdGEuc2V0dXBDYWxsZWVTYXZlUmVn
aXN0ZXJzKG1faml0LmNvZGVCbG9jaygpKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
IG1faml0LnN0b3JlMzIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihudW1QYXNzZWRBcmdz
KSwgSklUQ29tcGlsZXI6OmNhbGxlZUZyYW1lUGF5bG9hZFNsb3QoSlNTdGFjazo6QXJndW1lbnRD
b3VudCkpOworICAgICAgICAgICAgbV9qaXQuc3RvcmUzMihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3Rl
ZEltbTMyKG51bVBhc3NlZEFyZ3MpLCBKSVRDb21waWxlcjo6Y2FsbGVlRnJhbWVQYXlsb2FkU2xv
dChDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSk7CiAKICAgICAgICAgICAgIGZvciAoaW50
IGkgPSAwOyBpIDwgbnVtUGFzc2VkQXJnczsgaSsrKSB7CiAgICAgICAgICAgICAgICAgRWRnZSBh
cmdFZGdlID0gbV9qaXQuZ3JhcGgoKS5tX3ZhckFyZ0NoaWxkcmVuW25vZGUtPmZpcnN0Q2hpbGQo
KSArIDEgKyBpXTsKQEAgLTgyNCw3ICs4MjQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0
Q2FsbChOb2RlKiBub2RlCiAgICAgICAgIEpTVmFsdWVPcGVyYW5kIGNhbGxlZSh0aGlzLCBjYWxs
ZWVFZGdlKTsKICAgICAgICAgY2FsbGVlR1BSID0gY2FsbGVlLmdwcigpOwogICAgICAgICBjYWxs
ZWUudXNlKCk7Ci0gICAgICAgIG1faml0LnN0b3JlNjQoY2FsbGVlR1BSLCBKSVRDb21waWxlcjo6
Y2FsbGVlRnJhbWVTbG90KEpTU3RhY2s6OkNhbGxlZSkpOworICAgICAgICBtX2ppdC5zdG9yZTY0
KGNhbGxlZUdQUiwgSklUQ29tcGlsZXI6OmNhbGxlZUZyYW1lU2xvdChDYWxsRnJhbWVTbG90Ojpj
YWxsZWUpKTsKIAogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgIH0KQEAgLTQwNDcsMTQg
KzQwNDcsMTQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogCiAg
ICAgY2FzZSBHZXRDYWxsZWU6IHsKICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsK
LSAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6YWRkcmVzc0ZvcihKU1N0YWNrOjpD
YWxsZWUpLCByZXN1bHQuZ3ByKCkpOworICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVy
OjphZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNhbGxlZSksIHJlc3VsdC5ncHIoKSk7CiAgICAg
ICAgIGNlbGxSZXN1bHQocmVzdWx0LmdwcigpLCBub2RlKTsKICAgICAgICAgYnJlYWs7CiAgICAg
fQogICAgICAgICAKICAgICBjYXNlIEdldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzOiB7CiAg
ICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7Ci0gICAgICAgIG1faml0LmxvYWQzMihK
SVRDb21waWxlcjo6cGF5bG9hZEZvcihKU1N0YWNrOjpBcmd1bWVudENvdW50KSwgcmVzdWx0Lmdw
cigpKTsKKyAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjpwYXlsb2FkRm9yKENhbGxG
cmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpLCByZXN1bHQuZ3ByKCkpOwogICAgICAgICBpbnQzMlJl
c3VsdChyZXN1bHQuZ3ByKCksIG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkocmV2
aXNpb24gMjAyOTk0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1Miw3ICsxNTIsNyBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjplbWl0R2V0TGVuZ3RoKElubGluCiAgICAgZWxzZSB7CiAgICAgICAgIFZpcnR1YWxS
ZWdpc3RlciBhcmd1bWVudENvdW50UmVnaXN0ZXI7CiAgICAgICAgIGlmICghaW5saW5lQ2FsbEZy
YW1lKQotICAgICAgICAgICAgYXJndW1lbnRDb3VudFJlZ2lzdGVyID0gVmlydHVhbFJlZ2lzdGVy
KEpTU3RhY2s6OkFyZ3VtZW50Q291bnQpOworICAgICAgICAgICAgYXJndW1lbnRDb3VudFJlZ2lz
dGVyID0gVmlydHVhbFJlZ2lzdGVyKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpOwogICAg
ICAgICBlbHNlCiAgICAgICAgICAgICBhcmd1bWVudENvdW50UmVnaXN0ZXIgPSBpbmxpbmVDYWxs
RnJhbWUtPmFyZ3VtZW50Q291bnRSZWdpc3RlcjsKICAgICAgICAgbV9qaXQubG9hZDMyKEpJVENv
bXBpbGVyOjpwYXlsb2FkRm9yKGFyZ3VtZW50Q291bnRSZWdpc3RlciksIGxlbmd0aEdQUik7CkBA
IC0xNzksNyArMTc5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdEdldENhbGxlZShDb2Rl
TwogICAgICAgICAgICAgICAgIGNhbGxlZUdQUik7CiAgICAgICAgIH0KICAgICB9IGVsc2UKLSAg
ICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6YWRkcmVzc0ZvcihKU1N0YWNrOjpDYWxs
ZWUpLCBjYWxsZWVHUFIpOworICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjphZGRy
ZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNhbGxlZSksIGNhbGxlZUdQUik7CiB9CiAKIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmVtaXRHZXRBcmd1bWVudFN0YXJ0KENvZGVPcmlnaW4gb3JpZ2luLCBHUFJS
ZWcgc3RhcnRHUFIpCkBAIC02MjE3LDcgKzYyMTcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlQ3JlYXRlRGlyZWN0CiAKICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIGFyZ3VtZW50Q291
bnRSZWdpc3RlcjsKICAgICAgICAgaWYgKCFub2RlLT5vcmlnaW4uc2VtYW50aWMuaW5saW5lQ2Fs
bEZyYW1lKQotICAgICAgICAgICAgYXJndW1lbnRDb3VudFJlZ2lzdGVyID0gVmlydHVhbFJlZ2lz
dGVyKEpTU3RhY2s6OkFyZ3VtZW50Q291bnQpOworICAgICAgICAgICAgYXJndW1lbnRDb3VudFJl
Z2lzdGVyID0gVmlydHVhbFJlZ2lzdGVyKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpOwog
ICAgICAgICBlbHNlCiAgICAgICAgICAgICBhcmd1bWVudENvdW50UmVnaXN0ZXIgPSBub2RlLT5v
cmlnaW4uc2VtYW50aWMuaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudENvdW50UmVnaXN0ZXI7CiAg
ICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6cGF5bG9hZEZvcihhcmd1bWVudENvdW50
UmVnaXN0ZXIpLCBsZW5ndGhHUFIpOwpAQCAtNjI5Miw3ICs2MjkyLDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZUNyZWF0ZURpcmVjdAogICAgICAgICAgICAgICAgIHNjcmF0Y2gxR1BS
KTsKICAgICAgICAgfQogICAgIH0gZWxzZQotICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBp
bGVyOjphZGRyZXNzRm9yKEpTU3RhY2s6OkNhbGxlZSksIHNjcmF0Y2gxR1BSKTsKKyAgICAgICAg
bV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6YWRkcmVzc0ZvcihDYWxsRnJhbWVTbG90OjpjYWxs
ZWUpLCBzY3JhdGNoMUdQUik7CiAKICAgICAvLyBEb24ndCBuZWVkIGEgbWVtb3J5IGJhcnJpZXJz
IHNpbmNlIHdlIGp1c3QgZmFzdC1jcmVhdGVkIHRoZSBhY3RpdmF0aW9uLCBzbyB0aGUKICAgICAv
LyBhY3RpdmF0aW9uIG11c3QgYmUgeW91bmcuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1N0YWNrTGF5b3V0UGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3RhY2tMYXlvdXRQaGFzZS5jcHAJKHJldmlzaW9uIDIwMjk5NCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RhY2tMYXlvdXRQaGFzZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTExOCw3ICsxMTgsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAKICAgICAg
ICAgICAgIGlmIChpbmxpbmVDYWxsRnJhbWUtPmlzVmFyYXJncygpKSB7CiAgICAgICAgICAgICAg
ICAgdXNlZExvY2Fscy5zZXQoVmlydHVhbFJlZ2lzdGVyKAotICAgICAgICAgICAgICAgICAgICBK
U1N0YWNrOjpBcmd1bWVudENvdW50ICsgaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCkudG9M
b2NhbCgpKTsKKyAgICAgICAgICAgICAgICAgICAgQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3Vu
dCArIGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQpLnRvTG9jYWwoKSk7CiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgYXJndW1lbnQgPSBp
bmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5zaXplKCk7IGFyZ3VtZW50LS0gPiAxOykgewpAQCAt
MTg0LDcgKzE4NCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKGlu
bGluZUNhbGxGcmFtZS0+aXNWYXJhcmdzKCkpIHsKICAgICAgICAgICAgICAgICBpbmxpbmVDYWxs
RnJhbWUtPmFyZ3VtZW50Q291bnRSZWdpc3RlciA9IGFzc2lnbigKLSAgICAgICAgICAgICAgICAg
ICAgYWxsb2NhdGlvbiwgVmlydHVhbFJlZ2lzdGVyKGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZz
ZXQgKyBKU1N0YWNrOjpBcmd1bWVudENvdW50KSk7CisgICAgICAgICAgICAgICAgICAgIGFsbG9j
YXRpb24sIFZpcnR1YWxSZWdpc3RlcihpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgQ2Fs
bEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCkpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAg
CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGFyZ3VtZW50ID0gaW5saW5lQ2FsbEZyYW1lLT5h
cmd1bWVudHMuc2l6ZSgpOyBhcmd1bWVudC0tID4gMTspIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHVGh1bmtzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1RodW5rcy5jcHAJKHJldmlzaW9uIDIwMjk5NCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHVGh1bmtzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTExLDcgKzEx
MSw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBvc3JFbnRyeVRodW5rR2VuZXIKICAgICBwdHJk
aWZmX3Qgb2Zmc2V0T2ZGcmFtZVNpemUgPSAwOyAvLyBUaGlzIGlzIHRoZSBERkcgZnJhbWUgY291
bnQuCiAgICAgcHRyZGlmZl90IG9mZnNldE9mVGFyZ2V0UEMgPSBvZmZzZXRPZkZyYW1lU2l6ZSAr
IHNpemVvZihFbmNvZGVkSlNWYWx1ZSk7CiAgICAgcHRyZGlmZl90IG9mZnNldE9mUGF5bG9hZCA9
IG9mZnNldE9mVGFyZ2V0UEMgKyBzaXplb2YoRW5jb2RlZEpTVmFsdWUpOwotICAgIHB0cmRpZmZf
dCBvZmZzZXRPZkxvY2FscyA9IG9mZnNldE9mUGF5bG9hZCArIHNpemVvZihSZWdpc3RlcikgKiBK
U1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJTaXplOworICAgIHB0cmRpZmZfdCBvZmZzZXRPZkxvY2Fs
cyA9IG9mZnNldE9mUGF5bG9hZCArIHNpemVvZihSZWdpc3RlcikgKiBDYWxsRnJhbWU6OmhlYWRl
clNpemVJblJlZ2lzdGVyczsKICAgICAKICAgICBqaXQubW92ZShHUFJJbmZvOjpyZXR1cm5WYWx1
ZUdQUjIsIEdQUkluZm86OnJlZ1QwKTsKICAgICBqaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhHUFJJbmZvOjpyZWdUMCwgb2Zmc2V0T2ZGcmFtZVNpemUpLCBHUFJJbmZvOjpyZWdU
MSk7IC8vIExvYWQgdGhlIGZyYW1lIHNpemUuCkBAIC0xMjgsNyArMTI4LDcgQEAgTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmIG9zckVudHJ5VGh1bmtHZW5lcgogICAgIGppdC5sb2FkMzIoTWFjcm9Bc3Nl
bWJsZXI6OkJhc2VJbmRleChHUFJJbmZvOjpyZWdUMCwgR1BSSW5mbzo6cmVnVDEsIE1hY3JvQXNz
ZW1ibGVyOjpUaW1lc0VpZ2h0LCBvZmZzZXRPZkxvY2FscyArIHNpemVvZihpbnQzMl90KSksIEdQ
UkluZm86OnJlZ1QzKTsKICAgICBqaXQuc3RvcmUzMihHUFJJbmZvOjpyZWdUMiwgTWFjcm9Bc3Nl
bWJsZXI6OkJhc2VJbmRleChHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6cmVn
VDQsIE1hY3JvQXNzZW1ibGVyOjpUaW1lc0VpZ2h0LCAtc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KHNp
emVvZihSZWdpc3RlcikpKSk7CiAgICAgaml0LnN0b3JlMzIoR1BSSW5mbzo6cmVnVDMsIE1hY3Jv
QXNzZW1ibGVyOjpCYXNlSW5kZXgoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86
OnJlZ1Q0LCBNYWNyb0Fzc2VtYmxlcjo6VGltZXNFaWdodCwgLXN0YXRpY19jYXN0PGludHB0cl90
PihzaXplb2YoUmVnaXN0ZXIpKSArIHN0YXRpY19jYXN0PGludHB0cl90PihzaXplb2YoaW50MzJf
dCkpKSk7Ci0gICAgaml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIEdQUklu
Zm86OnJlZ1QxLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihiaXR3aXNlX2Nhc3Q8dm9p
ZCo+KC1zdGF0aWNfY2FzdDxpbnRwdHJfdD4oSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyU2l6ZSkp
KSkubGlua1RvKGxvb3AsICZqaXQpOworICAgIGppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6
Ok5vdEVxdWFsLCBHUFJJbmZvOjpyZWdUMSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIo
Yml0d2lzZV9jYXN0PHZvaWQqPigtc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KENhbGxGcmFtZTo6aGVh
ZGVyU2l6ZUluUmVnaXN0ZXJzKSkpKS5saW5rVG8obG9vcCwgJmppdCk7CiAgICAgCiAgICAgaml0
LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDAsIG9mZnNldE9m
VGFyZ2V0UEMpLCBHUFJJbmZvOjpyZWdUMSk7CiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgb2sg
PSBqaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpBYm92ZSwgR1BSSW5mbzo6cmVnVDEsIE1h
Y3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4oc3RhdGljX2Nh
c3Q8aW50cHRyX3Q+KDEwMDApKSkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExMaW5rLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExp
bmsuY3BwCShyZXZpc2lvbiAyMDI5OTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TExpbmsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzAsNyArMTMwLDcgQEAgdm9pZCBsaW5rKFN0
YXRlJiBzdGF0ZSkKICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCBtYWluUGF0aEp1bXBz
OwogICAgIAogICAgICAgICBqaXQubG9hZDMyKAotICAgICAgICAgICAgZnJhbWUud2l0aE9mZnNl
dChzaXplb2YoUmVnaXN0ZXIpICogSlNTdGFjazo6QXJndW1lbnRDb3VudCksCisgICAgICAgICAg
ICBmcmFtZS53aXRoT2Zmc2V0KHNpemVvZihSZWdpc3RlcikgKiBDYWxsRnJhbWVTbG90Ojphcmd1
bWVudENvdW50KSwKICAgICAgICAgICAgIEdQUkluZm86OnJlZ1QxKTsKICAgICAgICAgbWFpblBh
dGhKdW1wcy5hcHBlbmQoaml0LmJyYW5jaDMyKAogICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpB
Ym92ZU9yRXF1YWwsIEdQUkluZm86OnJlZ1QxLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAkocmV2aXNpb24gMjAyOTk0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xODUsNyArMTg1LDcgQEAgcHVibGljOgogICAgICAgICBtX3Byb2MuYWRkRmFzdENvbnN0YW50
KG1fdGFnVHlwZU51bWJlci0+a2V5KCkpOwogICAgICAgICBtX3Byb2MuYWRkRmFzdENvbnN0YW50
KG1fdGFnTWFzay0+a2V5KCkpOwogICAgICAgICAKLSAgICAgICAgbV9vdXQuc3RvcmVQdHIobV9v
dXQuY29uc3RJbnRQdHIoY29kZUJsb2NrKCkpLCBhZGRyZXNzRm9yKEpTU3RhY2s6OkNvZGVCbG9j
aykpOworICAgICAgICBtX291dC5zdG9yZVB0cihtX291dC5jb25zdEludFB0cihjb2RlQmxvY2so
KSksIGFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKSk7CiAKICAgICAgICAgLy8g
U3RhY2sgT3ZlcmZsb3cgQ2hlY2suCiAgICAgICAgIHVuc2lnbmVkIGV4aXRGcmFtZVNpemUgPSBt
X2dyYXBoLnJlcXVpcmVkUmVnaXN0ZXJDb3VudEZvckV4aXQoKSAqIHNpemVvZihSZWdpc3Rlcik7
CkBAIC0yMTIsNyArMjEyLDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICBzdGFja092
ZXJmbG93LmxpbmsoJmppdCk7CiAgICAgICAgICAgICAgICAgICAgIGppdC5zdG9yZTMyKAogICAg
ICAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihjYWxsU2l0
ZUluZGV4LmJpdHMoKSksCi0gICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OnRh
Z0ZvcihWaXJ0dWFsUmVnaXN0ZXIoSlNTdGFjazo6QXJndW1lbnRDb3VudCkpKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6dGFnRm9yKFZpcnR1YWxSZWdpc3RlcihDYWxs
RnJhbWVTbG90Ojphcmd1bWVudENvdW50KSkpOwogICAgICAgICAgICAgICAgICAgICBqaXQuY29w
eUNhbGxlZVNhdmVzVG9WTUVudHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZlcigpOwogCiAgICAgICAg
ICAgICAgICAgICAgIGppdC5tb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjApOwpAQCAtMzA0Niw3ICszMDQ2LDcgQEAgcHJpdmF0ZToKICAgICAgICAg
ZWxzZSB7CiAgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgYXJndW1lbnRDb3VudFJlZ2lzdGVy
OwogICAgICAgICAgICAgaWYgKCFpbmxpbmVDYWxsRnJhbWUpCi0gICAgICAgICAgICAgICAgYXJn
dW1lbnRDb3VudFJlZ2lzdGVyID0gVmlydHVhbFJlZ2lzdGVyKEpTU3RhY2s6OkFyZ3VtZW50Q291
bnQpOworICAgICAgICAgICAgICAgIGFyZ3VtZW50Q291bnRSZWdpc3RlciA9IFZpcnR1YWxSZWdp
c3RlcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KTsKICAgICAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgICAgICBhcmd1bWVudENvdW50UmVnaXN0ZXIgPSBpbmxpbmVDYWxsRnJhbWUtPmFy
Z3VtZW50Q291bnRSZWdpc3RlcjsKICAgICAgICAgICAgIGxpbWl0ID0gbV9vdXQuc3ViKG1fb3V0
LmxvYWQzMihwYXlsb2FkRm9yKGFyZ3VtZW50Q291bnRSZWdpc3RlcikpLCBtX291dC5pbnQzMk9u
ZSk7CkBAIC00NzMyLDEyICs0NzMyLDEyIEBAIHByaXZhdGU6CiAgICAgCiAgICAgdm9pZCBjb21w
aWxlR2V0Q2FsbGVlKCkKICAgICB7Ci0gICAgICAgIHNldEpTVmFsdWUobV9vdXQubG9hZFB0cihh
ZGRyZXNzRm9yKEpTU3RhY2s6OkNhbGxlZSkpKTsKKyAgICAgICAgc2V0SlNWYWx1ZShtX291dC5s
b2FkUHRyKGFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlKSkpOwogICAgIH0KICAgICAK
ICAgICB2b2lkIGNvbXBpbGVHZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygpCiAgICAgewot
ICAgICAgICBzZXRJbnQzMihtX291dC5sb2FkMzIocGF5bG9hZEZvcihKU1N0YWNrOjpBcmd1bWVu
dENvdW50KSkpOworICAgICAgICBzZXRJbnQzMihtX291dC5sb2FkMzIocGF5bG9hZEZvcihDYWxs
RnJhbWVTbG90Ojphcmd1bWVudENvdW50KSkpOwogICAgIH0KICAgICAKICAgICB2b2lkIGNvbXBp
bGVHZXRTY29wZSgpCkBAIC01MDYyLDcgKzUwNjIsNyBAQCBwcml2YXRlOgogCiAgICAgICAgIExW
YWx1ZSBqc0NhbGxlZSA9IGxvd0pTVmFsdWUobV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAwKSk7
CiAKLSAgICAgICAgdW5zaWduZWQgZnJhbWVTaXplID0gSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVy
U2l6ZSArIG51bUFyZ3M7CisgICAgICAgIHVuc2lnbmVkIGZyYW1lU2l6ZSA9IENhbGxGcmFtZTo6
aGVhZGVyU2l6ZUluUmVnaXN0ZXJzICsgbnVtQXJnczsKICAgICAgICAgdW5zaWduZWQgYWxpZ25l
ZEZyYW1lU2l6ZSA9IFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZihzdGFja0FsaWdubWVudFJlZ2lz
dGVycygpLCBmcmFtZVNpemUpOwogCiAgICAgICAgIC8vIEpTLT5KUyBjYWxsaW5nIGNvbnZlbnRp
b24gcmVxdWlyZXMgdGhhdCB0aGUgY2FsbGVyIGFsbG93cyB0aGlzIG11Y2ggc3BhY2Ugb24gdG9w
IG9mIHN0YWNrIHRvCkBAIC01MDg1LDEyICs1MDg1LDEyIEBAIHByaXZhdGU6CiAKICAgICAgICAg
YXV0byBhZGRBcmd1bWVudCA9IFsmXSAoTFZhbHVlIHZhbHVlLCBWaXJ0dWFsUmVnaXN0ZXIgcmVn
LCBpbnQgb2Zmc2V0KSB7CiAgICAgICAgICAgICBpbnRwdHJfdCBvZmZzZXRGcm9tU1AgPQotICAg
ICAgICAgICAgICAgIChyZWcub2Zmc2V0KCkgLSBKU1N0YWNrOjpDYWxsZXJGcmFtZUFuZFBDU2l6
ZSkgKiBzaXplb2YoRW5jb2RlZEpTVmFsdWUpICsgb2Zmc2V0OworICAgICAgICAgICAgICAgIChy
ZWcub2Zmc2V0KCkgLSBDYWxsZXJGcmFtZUFuZFBDOjpzaXplSW5SZWdpc3RlcnMpICogc2l6ZW9m
KEVuY29kZWRKU1ZhbHVlKSArIG9mZnNldDsKICAgICAgICAgICAgIGFyZ3VtZW50cy5hcHBlbmQo
Q29uc3RyYWluZWRWYWx1ZSh2YWx1ZSwgVmFsdWVSZXA6OnN0YWNrQXJndW1lbnQob2Zmc2V0RnJv
bVNQKSkpOwogICAgICAgICB9OwogCi0gICAgICAgIGFkZEFyZ3VtZW50KGpzQ2FsbGVlLCBWaXJ0
dWFsUmVnaXN0ZXIoSlNTdGFjazo6Q2FsbGVlKSwgMCk7Ci0gICAgICAgIGFkZEFyZ3VtZW50KG1f
b3V0LmNvbnN0SW50MzIobnVtQXJncyksIFZpcnR1YWxSZWdpc3RlcihKU1N0YWNrOjpBcmd1bWVu
dENvdW50KSwgUGF5bG9hZE9mZnNldCk7CisgICAgICAgIGFkZEFyZ3VtZW50KGpzQ2FsbGVlLCBW
aXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlKSwgMCk7CisgICAgICAgIGFkZEFy
Z3VtZW50KG1fb3V0LmNvbnN0SW50MzIobnVtQXJncyksIFZpcnR1YWxSZWdpc3RlcihDYWxsRnJh
bWVTbG90Ojphcmd1bWVudENvdW50KSwgUGF5bG9hZE9mZnNldCk7CiAgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBudW1BcmdzOyArK2kpCiAgICAgICAgICAgICBhZGRBcmd1bWVudChs
b3dKU1ZhbHVlKG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSArIGkpKSwgdmlydHVhbFJlZ2lz
dGVyRm9yQXJndW1lbnQoaSksIDApOwogCkBAIC01MTE3LDcgKzUxMTcsNyBAQCBwcml2YXRlOgog
CiAgICAgICAgICAgICAgICAgaml0LnN0b3JlMzIoCiAgICAgICAgICAgICAgICAgICAgIENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbTMyKGNhbGxTaXRlSW5kZXguYml0cygpKSwKLSAgICAgICAgICAg
ICAgICAgICAgQ0NhbGxIZWxwZXJzOjp0YWdGb3IoVmlydHVhbFJlZ2lzdGVyKEpTU3RhY2s6OkFy
Z3VtZW50Q291bnQpKSk7CisgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6dGFnRm9y
KFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSkpOwogCiAgICAg
ICAgICAgICAgICAgQ2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8gPSBqaXQuY29kZUJsb2NrKCkt
PmFkZENhbGxMaW5rSW5mbygpOwogCkBAIC01MjM1LDcgKzUyMzUsNyBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgICAgIC8vIHdpdGggdGhlIGNhbGwgc2l0ZSBpbmRleCBvZiBvdXIgZnJhbWUuIEJh
ZCB0aGluZ3MgaGFwcGVuIGlmIGl0J3Mgbm90IHNldC4KICAgICAgICAgICAgICAgICBqaXQuc3Rv
cmUzMigKICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoY2Fs
bFNpdGVJbmRleC5iaXRzKCkpLAotICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OnRh
Z0ZvcihWaXJ0dWFsUmVnaXN0ZXIoSlNTdGFjazo6QXJndW1lbnRDb3VudCkpKTsKKyAgICAgICAg
ICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjp0YWdGb3IoVmlydHVhbFJlZ2lzdGVyKENhbGxGcmFt
ZVNsb3Q6OmFyZ3VtZW50Q291bnQpKSk7CiAKICAgICAgICAgICAgICAgICBDYWxsRnJhbWVTaHVm
ZmxlciBzbG93UGF0aFNodWZmbGVyKGppdCwgc2h1ZmZsZURhdGEpOwogICAgICAgICAgICAgICAg
IHNsb3dQYXRoU2h1ZmZsZXIuc2V0Q2FsbGVlSlNWYWx1ZVJlZ3MoSlNWYWx1ZVJlZ3MoR1BSSW5m
bzo6cmVnVDApKTsKQEAgLTUzNDAsNyArNTM0MCw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgICAg
ICAgICBqaXQuc3RvcmUzMigKICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVz
dGVkSW1tMzIoY2FsbFNpdGVJbmRleC5iaXRzKCkpLAotICAgICAgICAgICAgICAgICAgICBDQ2Fs
bEhlbHBlcnM6OnRhZ0ZvcihWaXJ0dWFsUmVnaXN0ZXIoSlNTdGFjazo6QXJndW1lbnRDb3VudCkp
KTsKKyAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjp0YWdGb3IoVmlydHVhbFJlZ2lz
dGVyKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpKSk7CiAKICAgICAgICAgICAgICAgICBD
YWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbyA9IGppdC5jb2RlQmxvY2soKS0+YWRkQ2FsbExpbmtJ
bmZvKCk7CiAgICAgICAgICAgICAgICAgQ2FsbFZhcmFyZ3NEYXRhKiBkYXRhID0gbm9kZS0+Y2Fs
bFZhcmFyZ3NEYXRhKCk7CkBAIC01NDY5LDcgKzU0NjksNyBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgICAgICAgICB0aGlzTGF0ZVJlcC5lbWl0UmVzdG9yZShqaXQsIHRoaXNHUFIpOwogICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBqaXQuc3RvcmU2
NChHUFJJbmZvOjpyZWdUMCwgQ0NhbGxIZWxwZXJzOjpjYWxsZWVGcmFtZVNsb3QoSlNTdGFjazo6
Q2FsbGVlKSk7CisgICAgICAgICAgICAgICAgaml0LnN0b3JlNjQoR1BSSW5mbzo6cmVnVDAsIEND
YWxsSGVscGVyczo6Y2FsbGVlRnJhbWVTbG90KENhbGxGcmFtZVNsb3Q6OmNhbGxlZSkpOwogICAg
ICAgICAgICAgICAgIGppdC5zdG9yZTY0KHRoaXNHUFIsIENDYWxsSGVscGVyczo6Y2FsbGVlQXJn
dW1lbnRTbG90KDApKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBDYWxsTGlu
a0luZm86OkNhbGxUeXBlIGNhbGxUeXBlOwpAQCAtNzE1Miw3ICs3MTUyLDcgQEAgcHJpdmF0ZToK
IAogICAgICAgICBtX291dC5zdG9yZVB0cihtX2NhbGxGcmFtZSwgcGFja2V0LCBtX2hlYXBzLlNo
YWRvd0NoaWNrZW5fUGFja2V0X2ZyYW1lKTsKICAgICAgICAgbV9vdXQuc3RvcmVQdHIobV9vdXQu
bG9hZFB0cihhZGRyZXNzRm9yKDApKSwgcGFja2V0LCBtX2hlYXBzLlNoYWRvd0NoaWNrZW5fUGFj
a2V0X2NhbGxlckZyYW1lKTsKLSAgICAgICAgbV9vdXQuc3RvcmVQdHIobV9vdXQubG9hZFB0cihw
YXlsb2FkRm9yKEpTU3RhY2s6OkNhbGxlZSkpLCBwYWNrZXQsIG1faGVhcHMuU2hhZG93Q2hpY2tl
bl9QYWNrZXRfY2FsbGVlKTsKKyAgICAgICAgbV9vdXQuc3RvcmVQdHIobV9vdXQubG9hZFB0cihw
YXlsb2FkRm9yKENhbGxGcmFtZVNsb3Q6OmNhbGxlZSkpLCBwYWNrZXQsIG1faGVhcHMuU2hhZG93
Q2hpY2tlbl9QYWNrZXRfY2FsbGVlKTsKICAgICAgICAgbV9vdXQuc3RvcmVQdHIoc2NvcGUsIHBh
Y2tldCwgbV9oZWFwcy5TaGFkb3dDaGlja2VuX1BhY2tldF9zY29wZSk7CiAgICAgfQogICAgIApA
QCAtNzIyMCw3ICs3MjIwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIAogICAgICAgICAgICAg
VmlydHVhbFJlZ2lzdGVyIGFyZ3VtZW50Q291bnRSZWdpc3RlcjsKICAgICAgICAgICAgIGlmICgh
aW5saW5lQ2FsbEZyYW1lKQotICAgICAgICAgICAgICAgIGFyZ3VtZW50Q291bnRSZWdpc3RlciA9
IFZpcnR1YWxSZWdpc3RlcihKU1N0YWNrOjpBcmd1bWVudENvdW50KTsKKyAgICAgICAgICAgICAg
ICBhcmd1bWVudENvdW50UmVnaXN0ZXIgPSBWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lU2xvdDo6
YXJndW1lbnRDb3VudCk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgYXJndW1l
bnRDb3VudFJlZ2lzdGVyID0gaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudENvdW50UmVnaXN0ZXI7
CiAgICAgICAgICAgICBsZW5ndGgudmFsdWUgPSBtX291dC5zdWIobV9vdXQubG9hZDMyKHBheWxv
YWRGb3IoYXJndW1lbnRDb3VudFJlZ2lzdGVyKSksIG1fb3V0LmludDMyT25lKTsKQEAgLTcyNDEs
NyArNzI0MSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgcmV0dXJuIG1fb3V0LmxvYWRQ
dHIoYWRkcmVzc0ZvcihmcmFtZS0+Y2FsbGVlUmVjb3ZlcnkudmlydHVhbFJlZ2lzdGVyKCkpKTsK
ICAgICAgICAgICAgIHJldHVybiB3ZWFrUG9pbnRlcihmcmFtZS0+Y2FsbGVlUmVjb3ZlcnkuY29u
c3RhbnQoKS5hc0NlbGwoKSk7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIG1fb3V0LmxvYWRQ
dHIoYWRkcmVzc0ZvcihKU1N0YWNrOjpDYWxsZWUpKTsKKyAgICAgICAgcmV0dXJuIG1fb3V0Lmxv
YWRQdHIoYWRkcmVzc0ZvcihDYWxsRnJhbWVTbG90OjpjYWxsZWUpKTsKICAgICB9CiAgICAgCiAg
ICAgTFZhbHVlIGdldEFyZ3VtZW50c1N0YXJ0KElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZy
YW1lKQpAQCAtMTA3MDIsNyArMTA3MDIsNyBAQCBwcml2YXRlOgogICAgICAgICBDYWxsU2l0ZUlu
ZGV4IGNhbGxTaXRlSW5kZXggPSBtX2Z0bFN0YXRlLmppdENvZGUtPmNvbW1vbi5hZGRDb2RlT3Jp
Z2luKGNvZGVPcmlnaW4pOwogICAgICAgICBtX291dC5zdG9yZTMyKAogICAgICAgICAgICAgbV9v
dXQuY29uc3RJbnQzMihjYWxsU2l0ZUluZGV4LmJpdHMoKSksCi0gICAgICAgICAgICB0YWdGb3Io
SlNTdGFjazo6QXJndW1lbnRDb3VudCkpOworICAgICAgICAgICAgdGFnRm9yKENhbGxGcmFtZVNs
b3Q6OmFyZ3VtZW50Q291bnQpKTsKICAgICB9CiAKICAgICB2b2lkIGNhbGxQcmVmbGlnaHQoKQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFeGl0Q29tcGlsZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdENvbXBpbGVy
LmNwcAkocmV2aXNpb24gMjAyOTk0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExP
U1JFeGl0Q29tcGlsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOTQsNyArMzk0LDcgQEAgc3Rh
dGljIHZvaWQgY29tcGlsZVN0dWIoCiAgICAgICAgIGppdC5zdG9yZTY0KEdQUkluZm86OnJlZ1Qw
LCB1bndpbmRTY3JhdGNoICsgaSk7CiAgICAgfQogICAgIAotICAgIGppdC5sb2FkMzIoQ0NhbGxI
ZWxwZXJzOjpwYXlsb2FkRm9yKEpTU3RhY2s6OkFyZ3VtZW50Q291bnQpLCBHUFJJbmZvOjpyZWdU
Mik7CisgICAgaml0LmxvYWQzMihDQ2FsbEhlbHBlcnM6OnBheWxvYWRGb3IoQ2FsbEZyYW1lU2xv
dDo6YXJndW1lbnRDb3VudCksIEdQUkluZm86OnJlZ1QyKTsKICAgICAKICAgICAvLyBMZXQncyBz
YXkgdGhhdCB0aGUgRlRMIGZ1bmN0aW9uIGhhZCBmYWlsZWQgaXRzIGFyaXR5IGNoZWNrLiBJbiB0
aGF0IGNhc2UsIHRoZSBzdGFjayB3aWxsCiAgICAgLy8gY29udGFpbiBzb21lIGV4dHJhIHN0dWZm
LgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTbG93UGF0aENhbGwuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNsb3dQYXRoQ2FsbC5oCShy
ZXZpc2lvbiAyMDI5OTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNsb3dQYXRo
Q2FsbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDMsNyArMTAzLDcgQEAgU2xvd1BhdGhDYWxsIGNh
bGxPcGVyYXRpb24oCiAgICAgaWYgKGNhbGxTaXRlSW5kZXgpIHsKICAgICAgICAgaml0LnN0b3Jl
MzIoCiAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihjYWxsU2l0ZUluZGV4
LmJpdHMoKSksCi0gICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OnRhZ0ZvcihKU1N0YWNrOjpBcmd1
bWVudENvdW50KSk7CisgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OnRhZ0ZvcihDYWxsRnJhbWVT
bG90Ojphcmd1bWVudENvdW50KSk7CiAgICAgfQogICAgIHJldHVybiBjYWxsT3BlcmF0aW9uKHVz
ZWRSZWdpc3RlcnMsIGppdCwgZXhjZXB0aW9uVGFyZ2V0LCBmdW5jdGlvbiwgcmVzdWx0R1BSLCBh
cmd1bWVudHMuLi4pOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVy
L0NhbGxGcmFtZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVy
cHJldGVyL0NhbGxGcmFtZS5jcHAJKHJldmlzaW9uIDIwMjk5NCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2
ICszNiwxNSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAordm9pZCBFeGVjU3RhdGU6OmluaXRHbG9i
YWxFeGVjKEV4ZWNTdGF0ZSogZ2xvYmFsRXhlYywgSlNDYWxsZWUqIGdsb2JhbENhbGxlZSkKK3sK
KyAgICBnbG9iYWxFeGVjLT5zZXRDb2RlQmxvY2sobnVsbHB0cik7CisgICAgZ2xvYmFsRXhlYy0+
c2V0Q2FsbGVyRnJhbWUobm9DYWxsZXIoKSk7CisgICAgZ2xvYmFsRXhlYy0+c2V0UmV0dXJuUEMo
MCk7CisgICAgZ2xvYmFsRXhlYy0+c2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoMCk7Cisg
ICAgZ2xvYmFsRXhlYy0+c2V0Q2FsbGVlKGdsb2JhbENhbGxlZSk7Cit9CisKIGJvb2wgQ2FsbEZy
YW1lOjpjYWxsU2l0ZUJpdHNBcmVCeXRlY29kZU9mZnNldCgpIGNvbnN0CiB7CiAgICAgQVNTRVJU
KGNvZGVCbG9jaygpKTsKQEAgLTc2LDEyICs4NSwxMiBAQCBib29sIENhbGxGcmFtZTo6Y2FsbFNp
dGVCaXRzQXJlQ29kZU9yaWdpCiAKIHVuc2lnbmVkIENhbGxGcmFtZTo6Y2FsbFNpdGVBc1Jhd0Jp
dHMoKSBjb25zdAogewotICAgIHJldHVybiB0aGlzW0pTU3RhY2s6OkFyZ3VtZW50Q291bnRdLnRh
ZygpOworICAgIHJldHVybiB0aGlzW0NhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRdLnRhZygp
OwogfQogCiBTVVBQUkVTU19BU0FOIHVuc2lnbmVkIENhbGxGcmFtZTo6dW5zYWZlQ2FsbFNpdGVB
c1Jhd0JpdHMoKSBjb25zdAogewotICAgIHJldHVybiB0aGlzW0pTU3RhY2s6OkFyZ3VtZW50Q291
bnRdLnVuc2FmZVRhZygpOworICAgIHJldHVybiB0aGlzW0NhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50
Q291bnRdLnVuc2FmZVRhZygpOwogfQogCiBDYWxsU2l0ZUluZGV4IENhbGxGcmFtZTo6Y2FsbFNp
dGVJbmRleCgpIGNvbnN0CkBAIC0xMTEsNyArMTIwLDcgQEAgSW5zdHJ1Y3Rpb24qIENhbGxGcmFt
ZTo6Y3VycmVudFZQQygpIGNvbgogdm9pZCBDYWxsRnJhbWU6OnNldEN1cnJlbnRWUEMoSW5zdHJ1
Y3Rpb24qIHZwYykKIHsKICAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlKHZwYyk7Ci0gICAgdGhp
c1tKU1N0YWNrOjpBcmd1bWVudENvdW50XS50YWcoKSA9IGNhbGxTaXRlLmJpdHMoKTsKKyAgICB0
aGlzW0NhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRdLnRhZygpID0gY2FsbFNpdGUuYml0cygp
OwogfQogCiB1bnNpZ25lZCBDYWxsRnJhbWU6OmNhbGxTaXRlQml0c0FzQnl0ZWNvZGVPZmZzZXQo
KSBjb25zdApAQCAtMTMxLDcgKzE0MCw3IEBAIEluc3RydWN0aW9uKiBDYWxsRnJhbWU6OmN1cnJl
bnRWUEMoKSBjb24KIHZvaWQgQ2FsbEZyYW1lOjpzZXRDdXJyZW50VlBDKEluc3RydWN0aW9uKiB2
cGMpCiB7CiAgICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZSh2cGMgLSBjb2RlQmxvY2soKS0+aW5z
dHJ1Y3Rpb25zKCkuYmVnaW4oKSk7Ci0gICAgdGhpc1tKU1N0YWNrOjpBcmd1bWVudENvdW50XS50
YWcoKSA9IHN0YXRpY19jYXN0PGludDMyX3Q+KGNhbGxTaXRlLmJpdHMoKSk7CisgICAgdGhpc1tD
YWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50XS50YWcoKSA9IHN0YXRpY19jYXN0PGludDMyX3Q+
KGNhbGxTaXRlLmJpdHMoKSk7CiB9CiAKIHVuc2lnbmVkIENhbGxGcmFtZTo6Y2FsbFNpdGVCaXRz
QXNCeXRlY29kZU9mZnNldCgpIGNvbnN0CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50
ZXJwcmV0ZXIvQ2FsbEZyYW1lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL0NhbGxGcmFtZS5oCShyZXZpc2lvbiAyMDI5OTQpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmgJKHdvcmtpbmcgY29weSkKQEAgLTEs
NyArMSw3IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAxIEhhcnJpIFBvcnRlbiAo
cG9ydGVuQGtkZS5vcmcpCiAgKiAgQ29weXJpZ2h0IChDKSAyMDAxIFBldGVyIEtlbGx5IChwbWtA
cG9zdC5jb20pCi0gKiAgQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA3LCAyMDA4LCAyMDExLCAyMDEz
LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykg
MjAwMywgMjAwNy0yMDA4LCAyMDExLCAyMDEzLTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTI0LDcgKzI0LDYgQEAKICNkZWZpbmUg
Q2FsbEZyYW1lX2gKIAogI2luY2x1ZGUgIkFic3RyYWN0UEMuaCIKLSNpbmNsdWRlICJKU1N0YWNr
LmgiCiAjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgiCiAjaW5jbHVkZSAiUmVnaXN0
ZXIuaCIKICNpbmNsdWRlICJTdGFja1Zpc2l0b3IuaCIKQEAgLTM0LDkgKzMzLDE1IEBACiBuYW1l
c3BhY2UgSlNDICB7CiAKICAgICBjbGFzcyBBcmd1bWVudHM7CisgICAgY2xhc3MgRXhlY1N0YXRl
OwogICAgIGNsYXNzIEludGVycHJldGVyOworICAgIGNsYXNzIEpTQ2FsbGVlOwogICAgIGNsYXNz
IEpTU2NvcGU7CiAKKyAgICBzdHJ1Y3QgSW5zdHJ1Y3Rpb247CisKKyAgICB0eXBlZGVmIEV4ZWNT
dGF0ZSBDYWxsRnJhbWU7CisKICAgICBzdHJ1Y3QgQ2FsbFNpdGVJbmRleCB7CiAgICAgICAgIENh
bGxTaXRlSW5kZXgoKQogICAgICAgICAgICAgOiBtX2JpdHMoVUlOVF9NQVgpCkBAIC02MCwxNSAr
NjUsMzIgQEAgbmFtZXNwYWNlIEpTQyAgewogICAgICAgICB1aW50MzJfdCBtX2JpdHM7CiAgICAg
fTsKIAorICAgIHN0cnVjdCBDYWxsZXJGcmFtZUFuZFBDIHsKKyAgICAgICAgQ2FsbEZyYW1lKiBj
YWxsZXJGcmFtZTsKKyAgICAgICAgSW5zdHJ1Y3Rpb24qIHBjOworICAgICAgICBzdGF0aWMgY29u
c3QgaW50IHNpemVJblJlZ2lzdGVycyA9IDIgKiBzaXplb2Yodm9pZCopIC8gc2l6ZW9mKFJlZ2lz
dGVyKTsKKyAgICB9OworICAgIHN0YXRpY19hc3NlcnQoQ2FsbGVyRnJhbWVBbmRQQzo6c2l6ZUlu
UmVnaXN0ZXJzID09IHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSAvIHNpemVvZihSZWdpc3Rlciks
ICJDYWxsZXJGcmFtZUFuZFBDOjpzaXplSW5SZWdpc3RlcnMgaXMgaW5jb3JyZWN0LiIpOworCisg
ICAgc3RydWN0IENhbGxGcmFtZVNsb3QgeworICAgICAgICBzdGF0aWMgY29uc3QgaW50IGNvZGVC
bG9jayA9IENhbGxlckZyYW1lQW5kUEM6OnNpemVJblJlZ2lzdGVyczsKKyAgICAgICAgc3RhdGlj
IGNvbnN0IGludCBjYWxsZWUgPSBjb2RlQmxvY2sgKyAxOworICAgICAgICBzdGF0aWMgY29uc3Qg
aW50IGFyZ3VtZW50Q291bnQgPSBjYWxsZWUgKyAxOworICAgICAgICBzdGF0aWMgY29uc3QgaW50
IHRoaXNBcmd1bWVudCA9IGFyZ3VtZW50Q291bnQgKyAxOworICAgICAgICBzdGF0aWMgY29uc3Qg
aW50IGZpcnN0QXJndW1lbnQgPSB0aGlzQXJndW1lbnQgKyAxOworICAgIH07CisKICAgICAvLyBS
ZXByZXNlbnRzIHRoZSBjdXJyZW50IHN0YXRlIG9mIHNjcmlwdCBleGVjdXRpb24uCiAgICAgLy8g
UGFzc2VkIGFzIHRoZSBmaXJzdCBhcmd1bWVudCB0byBtb3N0IGZ1bmN0aW9ucy4KICAgICBjbGFz
cyBFeGVjU3RhdGUgOiBwcml2YXRlIFJlZ2lzdGVyIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEpT
VmFsdWUgY2FsbGVlQXNWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIHRoaXNbSlNTdGFjazo6Q2FsbGVl
XS5qc1ZhbHVlKCk7IH0KLSAgICAgICAgSlNPYmplY3QqIGNhbGxlZSgpIGNvbnN0IHsgcmV0dXJu
IHRoaXNbSlNTdGFjazo6Q2FsbGVlXS5vYmplY3QoKTsgfQotICAgICAgICBTVVBQUkVTU19BU0FO
IEpTVmFsdWUgdW5zYWZlQ2FsbGVlKCkgY29uc3QgeyByZXR1cm4gdGhpc1tKU1N0YWNrOjpDYWxs
ZWVdLmFzYW5VbnNhZmVKU1ZhbHVlKCk7IH0KLSAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2so
KSBjb25zdCB7IHJldHVybiB0aGlzW0pTU3RhY2s6OkNvZGVCbG9ja10uUmVnaXN0ZXI6OmNvZGVC
bG9jaygpOyB9Ci0gICAgICAgIFNVUFBSRVNTX0FTQU4gQ29kZUJsb2NrKiB1bnNhZmVDb2RlQmxv
Y2soKSBjb25zdCB7IHJldHVybiB0aGlzW0pTU3RhY2s6OkNvZGVCbG9ja10uUmVnaXN0ZXI6OmFz
YW5VbnNhZmVDb2RlQmxvY2soKTsgfQorICAgICAgICBzdGF0aWMgY29uc3QgaW50IGhlYWRlclNp
emVJblJlZ2lzdGVycyA9IENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQgKyAxOworCisgICAg
ICAgIEpTVmFsdWUgY2FsbGVlQXNWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIHRoaXNbQ2FsbEZyYW1l
U2xvdDo6Y2FsbGVlXS5qc1ZhbHVlKCk7IH0KKyAgICAgICAgSlNPYmplY3QqIGNhbGxlZSgpIGNv
bnN0IHsgcmV0dXJuIHRoaXNbQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlXS5vYmplY3QoKTsgfQorICAg
ICAgICBTVVBQUkVTU19BU0FOIEpTVmFsdWUgdW5zYWZlQ2FsbGVlKCkgY29uc3QgeyByZXR1cm4g
dGhpc1tDYWxsRnJhbWVTbG90OjpjYWxsZWVdLmFzYW5VbnNhZmVKU1ZhbHVlKCk7IH0KKyAgICAg
ICAgQ29kZUJsb2NrKiBjb2RlQmxvY2soKSBjb25zdCB7IHJldHVybiB0aGlzW0NhbGxGcmFtZVNs
b3Q6OmNvZGVCbG9ja10uUmVnaXN0ZXI6OmNvZGVCbG9jaygpOyB9CisgICAgICAgIFNVUFBSRVNT
X0FTQU4gQ29kZUJsb2NrKiB1bnNhZmVDb2RlQmxvY2soKSBjb25zdCB7IHJldHVybiB0aGlzW0Nh
bGxGcmFtZVNsb3Q6OmNvZGVCbG9ja10uUmVnaXN0ZXI6OmFzYW5VbnNhZmVDb2RlQmxvY2soKTsg
fQogICAgICAgICBKU1Njb3BlKiBzY29wZShpbnQgc2NvcGVSZWdpc3Rlck9mZnNldCkgY29uc3QK
ICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKHRoaXNbc2NvcGVSZWdpc3Rlck9mZnNldF0u
UmVnaXN0ZXI6OnNjb3BlKCkpOwpAQCAtMTY0LDE3ICsxODYsNyBAQCBuYW1lc3BhY2UgSlNDICB7
CiAgICAgICAgIHZvaWQgc2V0Q2FsbGVyRnJhbWUoQ2FsbEZyYW1lKiBmcmFtZSkgeyBjYWxsZXJG
cmFtZUFuZFBDKCkuY2FsbGVyRnJhbWUgPSBmcmFtZTsgfQogICAgICAgICB2b2lkIHNldFNjb3Bl
KGludCBzY29wZVJlZ2lzdGVyT2Zmc2V0LCBKU1Njb3BlKiBzY29wZSkgeyBzdGF0aWNfY2FzdDxS
ZWdpc3Rlcio+KHRoaXMpW3Njb3BlUmVnaXN0ZXJPZmZzZXRdID0gc2NvcGU7IH0KIAotICAgICAg
ICBBTFdBWVNfSU5MSU5FIHZvaWQgaW5pdChDb2RlQmxvY2sqIGNvZGVCbG9jaywgSW5zdHJ1Y3Rp
b24qIHZQQywKLSAgICAgICAgICAgIENhbGxGcmFtZSogY2FsbGVyRnJhbWUsIGludCBhcmdjLCBK
U09iamVjdCogY2FsbGVlKSAKLSAgICAgICAgeyAKLSAgICAgICAgICAgIEFTU0VSVChjYWxsZXJG
cmFtZSA9PSBub0NhbGxlcigpIHx8IGNhbGxlckZyYW1lLT5zdGFjaygpLT5jb250YWluc0FkZHJl
c3ModGhpcykpOyAKLQotICAgICAgICAgICAgc2V0Q29kZUJsb2NrKGNvZGVCbG9jayk7IAotICAg
ICAgICAgICAgc2V0Q2FsbGVyRnJhbWUoY2FsbGVyRnJhbWUpOyAKLSAgICAgICAgICAgIHNldFJl
dHVyblBDKHZQQyk7IC8vIFRoaXMgaXMgZWl0aGVyIGFuIEluc3RydWN0aW9uKiBvciBhIHBvaW50
ZXIgaW50byBKSVQgZ2VuZXJhdGVkIGNvZGUgc3RvcmVkIGFzIGFuIEluc3RydWN0aW9uKi4gCi0g
ICAgICAgICAgICBzZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyhhcmdjKTsgLy8gb3JpZ2lu
YWwgYXJndW1lbnQgY291bnQgKGZvciB0aGUgc2FrZSBvZiB0aGUgImFyZ3VtZW50cyIgb2JqZWN0
KSAKLSAgICAgICAgICAgIHNldENhbGxlZShjYWxsZWUpOyAKLSAgICAgICAgfQorICAgICAgICBz
dGF0aWMgdm9pZCBpbml0R2xvYmFsRXhlYyhFeGVjU3RhdGUqIGdsb2JhbEV4ZWMsIEpTQ2FsbGVl
KiBnbG9iYWxDYWxsZWUpOwogCiAgICAgICAgIC8vIFJlYWQgYSByZWdpc3RlciBmcm9tIHRoZSBj
b2RlZnJhbWUgKG9yIGNvbnN0YW50IGZyb20gdGhlIENvZGVCbG9jaykuCiAgICAgICAgIFJlZ2lz
dGVyJiByKGludCk7CkBAIC0xODUsOSArMTk3LDkgQEAgbmFtZXNwYWNlIEpTQyAgewogCiAgICAg
ICAgIC8vIEFjY2VzcyB0byBhcmd1bWVudHMgYXMgcGFzc2VkLiAoQWZ0ZXIgY2FwdHVyZSwgYXJn
dW1lbnRzIG1heSBtb3ZlIHRvIGEgZGlmZmVyZW50IGxvY2F0aW9uLikKICAgICAgICAgc2l6ZV90
IGFyZ3VtZW50Q291bnQoKSBjb25zdCB7IHJldHVybiBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhp
cygpIC0gMTsgfQotICAgICAgICBzaXplX3QgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoKSBj
b25zdCB7IHJldHVybiB0aGlzW0pTU3RhY2s6OkFyZ3VtZW50Q291bnRdLnBheWxvYWQoKTsgfQot
ICAgICAgICBzdGF0aWMgaW50IGFyZ3VtZW50T2Zmc2V0KGludCBhcmd1bWVudCkgeyByZXR1cm4g
KEpTU3RhY2s6OkZpcnN0QXJndW1lbnQgKyBhcmd1bWVudCk7IH0KLSAgICAgICAgc3RhdGljIGlu
dCBhcmd1bWVudE9mZnNldEluY2x1ZGluZ1RoaXMoaW50IGFyZ3VtZW50KSB7IHJldHVybiAoSlNT
dGFjazo6VGhpc0FyZ3VtZW50ICsgYXJndW1lbnQpOyB9CisgICAgICAgIHNpemVfdCBhcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpcygpIGNvbnN0IHsgcmV0dXJuIHRoaXNbQ2FsbEZyYW1lU2xvdDo6
YXJndW1lbnRDb3VudF0ucGF5bG9hZCgpOyB9CisgICAgICAgIHN0YXRpYyBpbnQgYXJndW1lbnRP
ZmZzZXQoaW50IGFyZ3VtZW50KSB7IHJldHVybiAoQ2FsbEZyYW1lU2xvdDo6Zmlyc3RBcmd1bWVu
dCArIGFyZ3VtZW50KTsgfQorICAgICAgICBzdGF0aWMgaW50IGFyZ3VtZW50T2Zmc2V0SW5jbHVk
aW5nVGhpcyhpbnQgYXJndW1lbnQpIHsgcmV0dXJuIChDYWxsRnJhbWVTbG90Ojp0aGlzQXJndW1l
bnQgKyBhcmd1bWVudCk7IH0KIAogICAgICAgICAvLyBJbiB0aGUgZm9sbG93aW5nIChhcmd1bWVu
dCgpIGFuZCBzZXRBcmd1bWVudCgpKSwgdGhlICdhcmd1bWVudCcKICAgICAgICAgLy8gcGFyYW1l
dGVyIGlzIHRoZSBpbmRleCBvZiB0aGUgYXJndW1lbnRzIG9mIHRoZSB0YXJnZXQgZnVuY3Rpb24g
b2YKQEAgLTIzMywxMyArMjQ1LDEzIEBAIG5hbWVzcGFjZSBKU0MgIHsKIAogICAgICAgICBKU1Zh
bHVlIGFyZ3VtZW50QWZ0ZXJDYXB0dXJlKHNpemVfdCBhcmd1bWVudCk7CiAKLSAgICAgICAgc3Rh
dGljIGludCBvZmZzZXRGb3Ioc2l6ZV90IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSB7IHJl
dHVybiBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyArIEpTU3RhY2s6OlRoaXNBcmd1bWVudCAt
IDE7IH0KKyAgICAgICAgc3RhdGljIGludCBvZmZzZXRGb3Ioc2l6ZV90IGFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzKSB7IHJldHVybiBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyArIENhbGxG
cmFtZVNsb3Q6OnRoaXNBcmd1bWVudCAtIDE7IH0KIAogICAgICAgICBzdGF0aWMgQ2FsbEZyYW1l
KiBub0NhbGxlcigpIHsgcmV0dXJuIDA7IH0KIAotICAgICAgICB2b2lkIHNldEFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzKGludCBjb3VudCkgeyBzdGF0aWNfY2FzdDxSZWdpc3Rlcio+KHRoaXMp
W0pTU3RhY2s6OkFyZ3VtZW50Q291bnRdLnBheWxvYWQoKSA9IGNvdW50OyB9Ci0gICAgICAgIHZv
aWQgc2V0Q2FsbGVlKEpTT2JqZWN0KiBjYWxsZWUpIHsgc3RhdGljX2Nhc3Q8UmVnaXN0ZXIqPih0
aGlzKVtKU1N0YWNrOjpDYWxsZWVdID0gY2FsbGVlOyB9Ci0gICAgICAgIHZvaWQgc2V0Q29kZUJs
b2NrKENvZGVCbG9jayogY29kZUJsb2NrKSB7IHN0YXRpY19jYXN0PFJlZ2lzdGVyKj4odGhpcylb
SlNTdGFjazo6Q29kZUJsb2NrXSA9IGNvZGVCbG9jazsgfQorICAgICAgICB2b2lkIHNldEFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzKGludCBjb3VudCkgeyBzdGF0aWNfY2FzdDxSZWdpc3Rlcio+
KHRoaXMpW0NhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRdLnBheWxvYWQoKSA9IGNvdW50OyB9
CisgICAgICAgIHZvaWQgc2V0Q2FsbGVlKEpTT2JqZWN0KiBjYWxsZWUpIHsgc3RhdGljX2Nhc3Q8
UmVnaXN0ZXIqPih0aGlzKVtDYWxsRnJhbWVTbG90OjpjYWxsZWVdID0gY2FsbGVlOyB9CisgICAg
ICAgIHZvaWQgc2V0Q29kZUJsb2NrKENvZGVCbG9jayogY29kZUJsb2NrKSB7IHN0YXRpY19jYXN0
PFJlZ2lzdGVyKj4odGhpcylbQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrXSA9IGNvZGVCbG9jazsg
fQogICAgICAgICB2b2lkIHNldFJldHVyblBDKHZvaWQqIHZhbHVlKSB7IGNhbGxlckZyYW1lQW5k
UEMoKS5wYyA9IHJlaW50ZXJwcmV0X2Nhc3Q8SW5zdHJ1Y3Rpb24qPih2YWx1ZSk7IH0KIAogICAg
ICAgICBTdHJpbmcgZnJpZW5kbHlGdW5jdGlvbk5hbWUoKTsKQEAgLTI3OSwxMCArMjkxLDEwIEBA
IG5hbWVzcGFjZSBKU0MgIHsKICAgICAgICAgICAgIGludCBvZmZzZXQgPSByZWcgLSB0aGlzLT5y
ZWdpc3RlcnMoKTsKIAogICAgICAgICAgICAgLy8gVGhlIG9mZnNldCBpcyBkZWZpbmVkIChiYXNl
ZCBvbiBhcmd1bWVudE9mZnNldCgpKSB0byBiZToKLSAgICAgICAgICAgIC8vICAgICAgIG9mZnNl
dCA9IEpTU3RhY2s6OkZpcnN0QXJndW1lbnQgLSBhcmdJbmRleDsKKyAgICAgICAgICAgIC8vICAg
ICAgIG9mZnNldCA9IENhbGxGcmFtZVNsb3Q6OmZpcnN0QXJndW1lbnQgLSBhcmdJbmRleDsKICAg
ICAgICAgICAgIC8vIEhlbmNlOgotICAgICAgICAgICAgLy8gICAgICAgYXJnSW5kZXggPSBKU1N0
YWNrOjpGaXJzdEFyZ3VtZW50IC0gb2Zmc2V0OwotICAgICAgICAgICAgc2l6ZV90IGFyZ0luZGV4
ID0gb2Zmc2V0IC0gSlNTdGFjazo6Rmlyc3RBcmd1bWVudDsKKyAgICAgICAgICAgIC8vICAgICAg
IGFyZ0luZGV4ID0gQ2FsbEZyYW1lU2xvdDo6Zmlyc3RBcmd1bWVudCAtIG9mZnNldDsKKyAgICAg
ICAgICAgIHNpemVfdCBhcmdJbmRleCA9IG9mZnNldCAtIENhbGxGcmFtZVNsb3Q6OmZpcnN0QXJn
dW1lbnQ7CiAgICAgICAgICAgICByZXR1cm4gYXJnSW5kZXg7CiAgICAgICAgIH0KIApAQCAtMjkw
LDcgKzMwMiw5IEBAIG5hbWVzcGFjZSBKU0MgIHsKICAgICAgICAgY29uc3QgQ2FsbGVyRnJhbWVB
bmRQQyYgY2FsbGVyRnJhbWVBbmRQQygpIGNvbnN0IHsgcmV0dXJuICpyZWludGVycHJldF9jYXN0
PGNvbnN0IENhbGxlckZyYW1lQW5kUEMqPih0aGlzKTsgfQogICAgICAgICBTVVBQUkVTU19BU0FO
IGNvbnN0IENhbGxlckZyYW1lQW5kUEMmIHVuc2FmZUNhbGxlckZyYW1lQW5kUEMoKSBjb25zdCB7
IHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDxjb25zdCBDYWxsZXJGcmFtZUFuZFBDKj4odGhpcyk7
IH0KIAorI2lmICFFTkFCTEUoSklUKQogICAgICAgICBmcmllbmQgY2xhc3MgSlNTdGFjazsKKyNl
bmRpZgogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCShyZXZpc2lvbiAyMDI5
OTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00MDEsOCArNDAxLDggQEAgdm9pZCBJbnRlcnByZXRlcjo6ZHVt
cFJlZ2lzdGVycyhDYWxsRnJhbQogICAgIGNvbnN0IFJlZ2lzdGVyKiBpdDsKICAgICBjb25zdCBS
ZWdpc3RlciogZW5kOwogCi0gICAgaXQgPSBjYWxsRnJhbWUtPnJlZ2lzdGVycygpICsgSlNTdGFj
azo6VGhpc0FyZ3VtZW50ICsgY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCk7Ci0gICAgZW5kID0g
Y2FsbEZyYW1lLT5yZWdpc3RlcnMoKSArIEpTU3RhY2s6OlRoaXNBcmd1bWVudCAtIDE7CisgICAg
aXQgPSBjYWxsRnJhbWUtPnJlZ2lzdGVycygpICsgQ2FsbEZyYW1lU2xvdDo6dGhpc0FyZ3VtZW50
ICsgY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCk7CisgICAgZW5kID0gY2FsbEZyYW1lLT5yZWdp
c3RlcnMoKSArIENhbGxGcmFtZVNsb3Q6OnRoaXNBcmd1bWVudCAtIDE7CiAgICAgd2hpbGUgKGl0
ID4gZW5kKSB7CiAgICAgICAgIEpTVmFsdWUgdiA9IGl0LT5qc1ZhbHVlKCk7CiAgICAgICAgIGlu
dCByZWdpc3Rlck51bWJlciA9IGl0IC0gY2FsbEZyYW1lLT5yZWdpc3RlcnMoKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCShyZXZp
c2lvbiAyMDI5OTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJw
cmV0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjYyLDEyICsyNjIsMTIgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIC8vIGFsaWduZWQgc2l6ZS4gQWxpZ24gdGhlIHNpemUgaGVyZS4KICAgICAg
ICAgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPSBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Yo
CiAgICAgICAgICAgICBzdGFja0FsaWdubWVudFJlZ2lzdGVycygpLAotICAgICAgICAgICAgYXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgKyBKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJTaXplKSAt
IEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlclNpemU7CisgICAgICAgICAgICBhcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpcyArIENhbGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJzKSAtIENhbGxG
cmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJzOwogCiAgICAgICAgIC8vIEFsaWduIHRoZSBmcmFt
ZSBvZmZzZXQgaGVyZS4KICAgICAgICAgdW5zaWduZWQgcGFkZGVkQ2FsbGVlRnJhbWVPZmZzZXQg
PSBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2YoCiAgICAgICAgICAgICBzdGFja0FsaWdubWVudFJl
Z2lzdGVycygpLAotICAgICAgICAgICAgbnVtVXNlZFN0YWNrU2xvdHMgKyBhcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpcyArIEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlclNpemUpOworICAgICAgICAg
ICAgbnVtVXNlZFN0YWNrU2xvdHMgKyBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyArIENhbGxG
cmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJzKTsKICAgICAgICAgcmV0dXJuIENhbGxGcmFtZTo6
Y3JlYXRlKGNhbGxGcmFtZS0+cmVnaXN0ZXJzKCkgLSBwYWRkZWRDYWxsZWVGcmFtZU9mZnNldCk7
CiAgICAgfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSlNTdGFj
ay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9KU1N0
YWNrLmgJKHJldmlzaW9uIDIwMjk5NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9KU1N0YWNrLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDYgQEAKICNpZm5kZWYg
SlNTdGFja19oCiAjZGVmaW5lIEpTU3RhY2tfaAogCi0jaW5jbHVkZSAiRXhlY3V0YWJsZUFsbG9j
YXRvci5oIgogI2luY2x1ZGUgIlJlZ2lzdGVyLmgiCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxl
Lmg+CiAjaW5jbHVkZSA8d3RmL1BhZ2VSZXNlcnZhdGlvbi5oPgpAQCAtMzksMzQgKzM4LDEzIEBA
IG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgQ29kZUJsb2NrU2V0OwogICAgIGNsYXNzIENv
bnNlcnZhdGl2ZVJvb3RzOwotICAgIGNsYXNzIEV4ZWNTdGF0ZTsKICAgICBjbGFzcyBKSVRTdHVi
Um91dGluZVNldDsKICAgICBjbGFzcyBWTTsKICAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0
b3I7CiAKLSAgICBzdHJ1Y3QgSW5zdHJ1Y3Rpb247Ci0gICAgdHlwZWRlZiBFeGVjU3RhdGUgQ2Fs
bEZyYW1lOwotCi0gICAgc3RydWN0IENhbGxlckZyYW1lQW5kUEMgewotICAgICAgICBDYWxsRnJh
bWUqIGNhbGxlckZyYW1lOwotICAgICAgICBJbnN0cnVjdGlvbiogcGM7Ci0gICAgfTsKLQogICAg
IGNsYXNzIEpTU3RhY2sgewogICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShKU1N0YWNrKTsK
ICAgICBwdWJsaWM6Ci0gICAgICAgIGVudW0gQ2FsbEZyYW1lSGVhZGVyRW50cnkgewotICAgICAg
ICAgICAgQ2FsbGVyRnJhbWVBbmRQQ1NpemUgPSBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykgLyBz
aXplb2YoUmVnaXN0ZXIpLAotICAgICAgICAgICAgQ29kZUJsb2NrID0gQ2FsbGVyRnJhbWVBbmRQ
Q1NpemUsCi0gICAgICAgICAgICBDYWxsZWUsCi0gICAgICAgICAgICBBcmd1bWVudENvdW50LAot
ICAgICAgICAgICAgQ2FsbEZyYW1lSGVhZGVyU2l6ZSwKLQotICAgICAgICAgICAgLy8gVGhlIGZv
bGxvd2luZyBlbnRyaWVzIGFyZSBub3QgcGFydCBvZiB0aGUgQ2FsbEZyYW1lSGVhZGVyIGJ1dCBh
cmUgcHJvdmlkZWQgaGVyZSBhcyBhIGNvbnZlbmllbmNlOgotICAgICAgICAgICAgVGhpc0FyZ3Vt
ZW50ID0gQ2FsbEZyYW1lSGVhZGVyU2l6ZSwKLSAgICAgICAgICAgIEZpcnN0QXJndW1lbnQsCi0g
ICAgICAgIH07Ci0KICAgICAgICAgLy8gQWxsb3cgOGsgb2YgZXhjZXNzIHJlZ2lzdGVycyBiZWZv
cmUgd2Ugc3RhcnQgdHJ5aW5nIHRvIHJlYXAgdGhlIHN0YWNrCiAgICAgICAgIHN0YXRpYyBjb25z
dCBwdHJkaWZmX3QgbWF4RXhjZXNzQ2FwYWNpdHkgPSA4ICogMTAyNDsKIApAQCAtNzcsMTAgKzU1
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGJvb2wgY29udGFpbnNBZGRyZXNzKFJlZ2lz
dGVyKiBhZGRyZXNzKSB7IHJldHVybiAobG93QWRkcmVzcygpIDw9IGFkZHJlc3MgJiYgYWRkcmVz
cyA8IGhpZ2hBZGRyZXNzKCkpOyB9CiAgICAgICAgIHN0YXRpYyBzaXplX3QgY29tbWl0dGVkQnl0
ZUNvdW50KCk7CiAKLSNpZiBFTkFCTEUoSklUKQotICAgICAgICB2b2lkIGdhdGhlckNvbnNlcnZh
dGl2ZVJvb3RzKENvbnNlcnZhdGl2ZVJvb3RzJiwgSklUU3R1YlJvdXRpbmVTZXQmLCBDb2RlQmxv
Y2tTZXQmKSB7IH0KLSAgICAgICAgdm9pZCBzYW5pdGl6ZVN0YWNrKCkgeyB9Ci0jZWxzZQorI2lm
ICFFTkFCTEUoSklUKQogICAgICAgICB+SlNTdGFjaygpOwogCiAgICAgICAgIHZvaWQgZ2F0aGVy
Q29uc2VydmF0aXZlUm9vdHMoQ29uc2VydmF0aXZlUm9vdHMmLCBKSVRTdHViUm91dGluZVNldCYs
IENvZGVCbG9ja1NldCYpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJs
eUhlbHBlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNz
ZW1ibHlIZWxwZXJzLmNwcAkocmV2aXNpb24gMjAyOTk0KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOTMsNyArMjkz
LDcgQEAgdm9pZCBBc3NlbWJseUhlbHBlcnM6OmppdEFzc2VydElzTnVsbChHUAogCiB2b2lkIEFz
c2VtYmx5SGVscGVyczo6aml0QXNzZXJ0QXJndW1lbnRDb3VudFNhbmUoKQogewotICAgIEp1bXAg
b2sgPSBicmFuY2gzMihCZWxvdywgcGF5bG9hZEZvcihKU1N0YWNrOjpBcmd1bWVudENvdW50KSwg
VHJ1c3RlZEltbTMyKDEwMDAwMDAwKSk7CisgICAgSnVtcCBvayA9IGJyYW5jaDMyKEJlbG93LCBw
YXlsb2FkRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpLCBUcnVzdGVkSW1tMzIoMTAw
MDAwMDApKTsKICAgICBhYm9ydFdpdGhSZWFzb24oQUhJbnNhbmVBcmd1bWVudENvdW50KTsKICAg
ICBvay5saW5rKHRoaXMpOwogfQpAQCAtNTQ0LDcgKzU0NCw3IEBAIHZvaWQgQXNzZW1ibHlIZWxw
ZXJzOjplbWl0UmFuZG9tVGh1bmsoSlMKIAogdm9pZCBBc3NlbWJseUhlbHBlcnM6OmVtaXRSYW5k
b21UaHVuayhHUFJSZWcgc2NyYXRjaDAsIEdQUlJlZyBzY3JhdGNoMSwgR1BSUmVnIHNjcmF0Y2gy
LCBHUFJSZWcgc2NyYXRjaDMsIEZQUlJlZyByZXN1bHQpCiB7Ci0gICAgZW1pdEdldEZyb21DYWxs
RnJhbWVIZWFkZXJQdHIoSlNTdGFjazo6Q2FsbGVlLCBzY3JhdGNoMyk7CisgICAgZW1pdEdldEZy
b21DYWxsRnJhbWVIZWFkZXJQdHIoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlLCBzY3JhdGNoMyk7CiAg
ICAgZW1pdExvYWRTdHJ1Y3R1cmUoc2NyYXRjaDMsIHNjcmF0Y2gzLCBzY3JhdGNoMCk7CiAgICAg
bG9hZFB0cihBZGRyZXNzKHNjcmF0Y2gzLCBTdHJ1Y3R1cmU6Omdsb2JhbE9iamVjdE9mZnNldCgp
KSwgc2NyYXRjaDMpOwogICAgIC8vIE5vdywgc2NyYXRjaDMgaG9sZHMgSlNHbG9iYWxPYmplY3Qq
LgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCShy
ZXZpc2lvbiAyMDI5OTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVs
cGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC01NjAsMjYgKzU2MCwyNiBAQCBwdWJsaWM6CiAgICAg
fQogI2VuZGlmCiAKLSAgICB2b2lkIGVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyUHRyKEpTU3Rh
Y2s6OkNhbGxGcmFtZUhlYWRlckVudHJ5IGVudHJ5LCBHUFJSZWcgdG8sIEdQUlJlZyBmcm9tID0g
R1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpCisgICAgdm9pZCBlbWl0R2V0RnJvbUNhbGxGcmFt
ZUhlYWRlclB0cihpbnQgZW50cnksIEdQUlJlZyB0bywgR1BSUmVnIGZyb20gPSBHUFJJbmZvOjpj
YWxsRnJhbWVSZWdpc3RlcikKICAgICB7CiAgICAgICAgIGxvYWRQdHIoQWRkcmVzcyhmcm9tLCBl
bnRyeSAqIHNpemVvZihSZWdpc3RlcikpLCB0byk7CiAgICAgfQotICAgIHZvaWQgZW1pdEdldEZy
b21DYWxsRnJhbWVIZWFkZXIzMihKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJFbnRyeSBlbnRyeSwg
R1BSUmVnIHRvLCBHUFJSZWcgZnJvbSA9IEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyKQorICAg
IHZvaWQgZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXIzMihpbnQgZW50cnksIEdQUlJlZyB0bywg
R1BSUmVnIGZyb20gPSBHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlcikKICAgICB7CiAgICAgICAg
IGxvYWQzMihBZGRyZXNzKGZyb20sIGVudHJ5ICogc2l6ZW9mKFJlZ2lzdGVyKSksIHRvKTsKICAg
ICB9CiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICB2b2lkIGVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVh
ZGVyNjQoSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyRW50cnkgZW50cnksIEdQUlJlZyB0bywgR1BS
UmVnIGZyb20gPSBHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlcikKKyAgICB2b2lkIGVtaXRHZXRG
cm9tQ2FsbEZyYW1lSGVhZGVyNjQoaW50IGVudHJ5LCBHUFJSZWcgdG8sIEdQUlJlZyBmcm9tID0g
R1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpCiAgICAgewogICAgICAgICBsb2FkNjQoQWRkcmVz
cyhmcm9tLCBlbnRyeSAqIHNpemVvZihSZWdpc3RlcikpLCB0byk7CiAgICAgfQogI2VuZGlmIC8v
IFVTRShKU1ZBTFVFNjQpCi0gICAgdm9pZCBlbWl0UHV0VG9DYWxsRnJhbWVIZWFkZXIoR1BSUmVn
IGZyb20sIEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlckVudHJ5IGVudHJ5KQorICAgIHZvaWQgZW1p
dFB1dFRvQ2FsbEZyYW1lSGVhZGVyKEdQUlJlZyBmcm9tLCBpbnQgZW50cnkpCiAgICAgewogICAg
ICAgICBzdG9yZVB0cihmcm9tLCBBZGRyZXNzKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBl
bnRyeSAqIHNpemVvZihSZWdpc3RlcikpKTsKICAgICB9CiAKLSAgICB2b2lkIGVtaXRQdXRUb0Nh
bGxGcmFtZUhlYWRlcih2b2lkKiB2YWx1ZSwgSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyRW50cnkg
ZW50cnkpCisgICAgdm9pZCBlbWl0UHV0VG9DYWxsRnJhbWVIZWFkZXIodm9pZCogdmFsdWUsIGlu
dCBlbnRyeSkKICAgICB7CiAgICAgICAgIHN0b3JlUHRyKFRydXN0ZWRJbW1QdHIodmFsdWUpLCBB
ZGRyZXNzKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBlbnRyeSAqIHNpemVvZihSZWdpc3Rl
cikpKTsKICAgICB9CkBAIC02MDksMTcgKzYwOSwxNyBAQCBwdWJsaWM6CiAgICAgLy8gY2FsbGVy
J3MgZnJhbWUgcG9pbnRlci4gT24gc29tZSBwbGF0Zm9ybXMsIHRoZSBjYWxsZWUgaXMgcmVzcG9u
c2libGUgZm9yIHB1c2hpbmcgdGhlCiAgICAgLy8gImxpbmsgcmVnaXN0ZXIiIGNvbnRhaW5pbmcg
dGhlIHJldHVybiBhZGRyZXNzIGluIHRoZSBmdW5jdGlvbiBwcm9sb2d1ZS4KICNpZiBVU0UoSlNW
QUxVRTY0KQotICAgIHZvaWQgZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVyQmVmb3JlUHJvbG9ndWUo
R1BSUmVnIGZyb20sIEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlckVudHJ5IGVudHJ5KQorICAgIHZv
aWQgZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVyQmVmb3JlUHJvbG9ndWUoR1BSUmVnIGZyb20sIGlu
dCBlbnRyeSkKICAgICB7CiAgICAgICAgIHN0b3JlUHRyKGZyb20sIEFkZHJlc3Moc3RhY2tQb2lu
dGVyUmVnaXN0ZXIsIGVudHJ5ICogc3RhdGljX2Nhc3Q8cHRyZGlmZl90PihzaXplb2YoUmVnaXN0
ZXIpKSAtIHByb2xvZ3VlU3RhY2tQb2ludGVyRGVsdGEoKSkpOwogICAgIH0KICNlbHNlCi0gICAg
dm9pZCBlbWl0UHV0UGF5bG9hZFRvQ2FsbEZyYW1lSGVhZGVyQmVmb3JlUHJvbG9ndWUoR1BSUmVn
IGZyb20sIEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlckVudHJ5IGVudHJ5KQorICAgIHZvaWQgZW1p
dFB1dFBheWxvYWRUb0NhbGxGcmFtZUhlYWRlckJlZm9yZVByb2xvZ3VlKEdQUlJlZyBmcm9tLCBp
bnQgZW50cnkpCiAgICAgewogICAgICAgICBzdG9yZVB0cihmcm9tLCBBZGRyZXNzKHN0YWNrUG9p
bnRlclJlZ2lzdGVyLCBlbnRyeSAqIHN0YXRpY19jYXN0PHB0cmRpZmZfdD4oc2l6ZW9mKFJlZ2lz
dGVyKSkgLSBwcm9sb2d1ZVN0YWNrUG9pbnRlckRlbHRhKCkgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5j
b2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnBheWxvYWQpKSk7CiAgICAgfQogCi0gICAgdm9p
ZCBlbWl0UHV0VGFnVG9DYWxsRnJhbWVIZWFkZXJCZWZvcmVQcm9sb2d1ZShUcnVzdGVkSW1tMzIg
dGFnLCBKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJFbnRyeSBlbnRyeSkKKyAgICB2b2lkIGVtaXRQ
dXRUYWdUb0NhbGxGcmFtZUhlYWRlckJlZm9yZVByb2xvZ3VlKFRydXN0ZWRJbW0zMiB0YWcsIGlu
dCBlbnRyeSkKICAgICB7CiAgICAgICAgIHN0b3JlUHRyKHRhZywgQWRkcmVzcyhzdGFja1BvaW50
ZXJSZWdpc3RlciwgZW50cnkgKiBzdGF0aWNfY2FzdDxwdHJkaWZmX3Q+KHNpemVvZihSZWdpc3Rl
cikpIC0gcHJvbG9ndWVTdGFja1BvaW50ZXJEZWx0YSgpICsgT0JKRUNUX09GRlNFVE9GKEVuY29k
ZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy50YWcpKSk7CiAgICAgfQpAQCAtOTMzLDggKzkzMyw4
IEBAIHB1YmxpYzoKICAgICAvLyBBY2Nlc3MgdG8gb3VyIGZpeGVkIGNhbGxlZSBDYWxsRnJhbWUu
CiAgICAgc3RhdGljIEFkZHJlc3MgY2FsbGVlRnJhbWVTbG90KGludCBzbG90KQogICAgIHsKLSAg
ICAgICAgQVNTRVJUKHNsb3QgPj0gSlNTdGFjazo6Q2FsbGVyRnJhbWVBbmRQQ1NpemUpOwotICAg
ICAgICByZXR1cm4gQWRkcmVzcyhzdGFja1BvaW50ZXJSZWdpc3Rlciwgc2l6ZW9mKFJlZ2lzdGVy
KSAqIChzbG90IC0gSlNTdGFjazo6Q2FsbGVyRnJhbWVBbmRQQ1NpemUpKTsKKyAgICAgICAgQVNT
RVJUKHNsb3QgPj0gQ2FsbGVyRnJhbWVBbmRQQzo6c2l6ZUluUmVnaXN0ZXJzKTsKKyAgICAgICAg
cmV0dXJuIEFkZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0ZXIsIHNpemVvZihSZWdpc3RlcikgKiAo
c2xvdCAtIENhbGxlckZyYW1lQW5kUEM6OnNpemVJblJlZ2lzdGVycykpOwogICAgIH0KIAogICAg
IC8vIEFjY2VzcyB0byBvdXIgZml4ZWQgY2FsbGVlIENhbGxGcmFtZS4KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5jcHAJKHJldmlzaW9uIDIwMjk5NCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzcsNyArMzcsNyBAQCB2b2lkIENDYWxsSGVscGVyczo6bG9nU2hhZG93Q2hpY2tlblBy
b2xvCiAgICAgc3RvcmVQdHIoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEFkZHJlc3Moc2hh
ZG93UGFja2V0LCBPQkpFQ1RfT0ZGU0VUT0YoU2hhZG93Q2hpY2tlbjo6UGFja2V0LCBmcmFtZSkp
KTsKICAgICBsb2FkUHRyKEFkZHJlc3MoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIE9CSkVD
VF9PRkZTRVRPRihDYWxsZXJGcmFtZUFuZFBDLCBjYWxsZXJGcmFtZSkpLCBzY3JhdGNoMSk7CiAg
ICAgc3RvcmVQdHIoc2NyYXRjaDEsIEFkZHJlc3Moc2hhZG93UGFja2V0LCBPQkpFQ1RfT0ZGU0VU
T0YoU2hhZG93Q2hpY2tlbjo6UGFja2V0LCBjYWxsZXJGcmFtZSkpKTsKLSAgICBsb2FkUHRyKGFk
ZHJlc3NGb3IoSlNTdGFjazo6Q2FsbGVlKSwgc2NyYXRjaDEpOworICAgIGxvYWRQdHIoYWRkcmVz
c0ZvcihDYWxsRnJhbWVTbG90OjpjYWxsZWUpLCBzY3JhdGNoMSk7CiAgICAgc3RvcmVQdHIoc2Ny
YXRjaDEsIEFkZHJlc3Moc2hhZG93UGFja2V0LCBPQkpFQ1RfT0ZGU0VUT0YoU2hhZG93Q2hpY2tl
bjo6UGFja2V0LCBjYWxsZWUpKSk7CiAgICAgc3RvcmVQdHIoc2NvcGUsIEFkZHJlc3Moc2hhZG93
UGFja2V0LCBPQkpFQ1RfT0ZGU0VUT0YoU2hhZG93Q2hpY2tlbjo6UGFja2V0LCBzY29wZSkpKTsK
IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaAkocmV2aXNp
b24gMjAyOTk0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaAko
d29ya2luZyBjb3B5KQpAQCAtMjI3OCwxMyArMjI3OCwxMyBAQCBwdWJsaWM6CiAgICAgICAgICAg
ICBHUFJSZWcgb2xkRnJhbWVTaXplR1BSID0gdGVtcDI7CiAgICAgICAgICAgICB7CiAgICAgICAg
ICAgICAgICAgR1BSUmVnIGFyZ0NvdW50R1BSID0gb2xkRnJhbWVTaXplR1BSOwotICAgICAgICAg
ICAgICAgIGxvYWQzMihBZGRyZXNzKGZyYW1lUG9pbnRlclJlZ2lzdGVyLCBKU1N0YWNrOjpBcmd1
bWVudENvdW50ICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSArIFBheWxvYWRP
ZmZzZXQpLCBhcmdDb3VudEdQUik7CisgICAgICAgICAgICAgICAgbG9hZDMyKEFkZHJlc3MoZnJh
bWVQb2ludGVyUmVnaXN0ZXIsIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQgKiBzdGF0aWNf
Y2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpICsgUGF5bG9hZE9mZnNldCksIGFyZ0NvdW50R1BS
KTsKIAogICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgR1BSUmVnIG51bVBh
cmFtZXRlcnNHUFIgPSB0ZW1wMTsKICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAg
ICAgICAgICAgICAgR1BSUmVnIGNvZGVCbG9ja0dQUiA9IG51bVBhcmFtZXRlcnNHUFI7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBsb2FkUHRyKEFkZHJlc3MoZnJhbWVQb2ludGVyUmVnaXN0ZXIs
IEpTU3RhY2s6OkNvZGVCbG9jayAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkp
LCBjb2RlQmxvY2tHUFIpOworICAgICAgICAgICAgICAgICAgICAgICAgbG9hZFB0cihBZGRyZXNz
KGZyYW1lUG9pbnRlclJlZ2lzdGVyLCBDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2sgKiBzdGF0aWNf
Y2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpKSwgY29kZUJsb2NrR1BSKTsKICAgICAgICAgICAg
ICAgICAgICAgICAgIGxvYWQzMihBZGRyZXNzKGNvZGVCbG9ja0dQUiwgQ29kZUJsb2NrOjpvZmZz
ZXRPZk51bVBhcmFtZXRlcnMoKSksIG51bVBhcmFtZXRlcnNHUFIpOwogICAgICAgICAgICAgICAg
ICAgICB9CiAKQEAgLTIyOTQsNyArMjI5NCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAg
ICAgYXJndW1lbnRDb3VudFdhc05vdEZpeGVkVXAubGluayh0aGlzKTsKICAgICAgICAgICAgICAg
ICB9CiAKLSAgICAgICAgICAgICAgICBhZGQzMihUcnVzdGVkSW1tMzIoc3RhY2tBbGlnbm1lbnRS
ZWdpc3RlcnMoKSArIEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlclNpemUgLSAxKSwgYXJnQ291bnRH
UFIsIG9sZEZyYW1lU2l6ZUdQUik7CisgICAgICAgICAgICAgICAgYWRkMzIoVHJ1c3RlZEltbTMy
KHN0YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCkgKyBDYWxsRnJhbWU6OmhlYWRlclNpemVJblJlZ2lz
dGVycyAtIDEpLCBhcmdDb3VudEdQUiwgb2xkRnJhbWVTaXplR1BSKTsKICAgICAgICAgICAgICAg
ICBhbmQzMihUcnVzdGVkSW1tMzIoLXN0YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCkpLCBvbGRGcmFt
ZVNpemVHUFIpOwogICAgICAgICAgICAgICAgIC8vIFdlIGFzc3VtZSA8IDJeMjggYXJndW1lbnRz
CiAgICAgICAgICAgICAgICAgbXVsMzIoVHJ1c3RlZEltbTMyKHNpemVvZihSZWdpc3RlcikpLCBv
bGRGcmFtZVNpemVHUFIsIG9sZEZyYW1lU2l6ZUdQUik7CkBAIC0yMzA3LDkgKzIzMDcsOSBAQCBw
dWJsaWM6CiAgICAgICAgICAgICAvLyBUaGUgbmV3IGZyYW1lIHNpemUgaXMganVzdCB0aGUgbnVt
YmVyIG9mIGFyZ3VtZW50cyBwbHVzIHRoZQogICAgICAgICAgICAgLy8gZnJhbWUgaGVhZGVyIHNp
emUsIGFsaWduZWQKICAgICAgICAgICAgIEFTU0VSVChuZXdGcmFtZVNpemVHUFIgIT0gbmV3RnJh
bWVQb2ludGVyKTsKLSAgICAgICAgICAgIGxvYWQzMihBZGRyZXNzKHN0YWNrUG9pbnRlclJlZ2lz
dGVyLCBKU1N0YWNrOjpBcmd1bWVudENvdW50ICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVn
aXN0ZXIpKSArIFBheWxvYWRPZmZzZXQgLSBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykpLAorICAg
ICAgICAgICAgbG9hZDMyKEFkZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0ZXIsIENhbGxGcmFtZVNs
b3Q6OmFyZ3VtZW50Q291bnQgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpICsg
UGF5bG9hZE9mZnNldCAtIHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSksCiAgICAgICAgICAgICAg
ICAgbmV3RnJhbWVTaXplR1BSKTsKLSAgICAgICAgICAgIGFkZDMyKFRydXN0ZWRJbW0zMihzdGFj
a0FsaWdubWVudFJlZ2lzdGVycygpICsgSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyU2l6ZSAtIDEp
LCBuZXdGcmFtZVNpemVHUFIpOworICAgICAgICAgICAgYWRkMzIoVHJ1c3RlZEltbTMyKHN0YWNr
QWxpZ25tZW50UmVnaXN0ZXJzKCkgKyBDYWxsRnJhbWU6OmhlYWRlclNpemVJblJlZ2lzdGVycyAt
IDEpLCBuZXdGcmFtZVNpemVHUFIpOwogICAgICAgICAgICAgYW5kMzIoVHJ1c3RlZEltbTMyKC1z
dGFja0FsaWdubWVudFJlZ2lzdGVycygpKSwgbmV3RnJhbWVTaXplR1BSKTsKICAgICAgICAgICAg
IC8vIFdlIGFzc3VtZSA8IDJeMjggYXJndW1lbnRzCiAgICAgICAgICAgICBtdWwzMihUcnVzdGVk
SW1tMzIoc2l6ZW9mKFJlZ2lzdGVyKSksIG5ld0ZyYW1lU2l6ZUdQUiwgbmV3RnJhbWVTaXplR1BS
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ2FsbEZyYW1lU2h1ZmZsZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ2FsbEZyYW1lU2h1ZmZs
ZXIuY3BwCShyZXZpc2lvbiAyMDI5OTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Nh
bGxGcmFtZVNodWZmbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsMTEgKzM2LDExIEBAIG5h
bWVzcGFjZSBKU0MgewogCiBDYWxsRnJhbWVTaHVmZmxlcjo6Q2FsbEZyYW1lU2h1ZmZsZXIoQ0Nh
bGxIZWxwZXJzJiBqaXQsIGNvbnN0IENhbGxGcmFtZVNodWZmbGVEYXRhJiBkYXRhKQogICAgIDog
bV9qaXQoaml0KQotICAgICwgbV9vbGRGcmFtZShkYXRhLm51bUxvY2FscyArIEpTU3RhY2s6OkNh
bGxlckZyYW1lQW5kUENTaXplLCBudWxscHRyKQotICAgICwgbV9uZXdGcmFtZShkYXRhLmFyZ3Mu
c2l6ZSgpICsgSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyU2l6ZSwgbnVsbHB0cikKLSAgICAsIG1f
YWxpZ25lZE9sZEZyYW1lU2l6ZShKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJTaXplCisgICAgLCBt
X29sZEZyYW1lKGRhdGEubnVtTG9jYWxzICsgQ2FsbGVyRnJhbWVBbmRQQzo6c2l6ZUluUmVnaXN0
ZXJzLCBudWxscHRyKQorICAgICwgbV9uZXdGcmFtZShkYXRhLmFyZ3Muc2l6ZSgpICsgQ2FsbEZy
YW1lOjpoZWFkZXJTaXplSW5SZWdpc3RlcnMsIG51bGxwdHIpCisgICAgLCBtX2FsaWduZWRPbGRG
cmFtZVNpemUoQ2FsbEZyYW1lOjpoZWFkZXJTaXplSW5SZWdpc3RlcnMKICAgICAgICAgKyByb3Vu
ZEFyZ3VtZW50Q291bnRUb0FsaWduRnJhbWUoaml0LmNvZGVCbG9jaygpLT5udW1QYXJhbWV0ZXJz
KCkpKQotICAgICwgbV9hbGlnbmVkTmV3RnJhbWVTaXplKEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRl
clNpemUKKyAgICAsIG1fYWxpZ25lZE5ld0ZyYW1lU2l6ZShDYWxsRnJhbWU6OmhlYWRlclNpemVJ
blJlZ2lzdGVycwogICAgICAgICArIHJvdW5kQXJndW1lbnRDb3VudFRvQWxpZ25GcmFtZShkYXRh
LmFyZ3Muc2l6ZSgpKSkKICAgICAsIG1fZnJhbWVEZWx0YShtX2FsaWduZWROZXdGcmFtZVNpemUg
LSBtX2FsaWduZWRPbGRGcmFtZVNpemUpCiAgICAgLCBtX2xvY2tlZFJlZ2lzdGVycyhSZWdpc3Rl
clNldDo6YWxsUmVnaXN0ZXJzKCkpCkBAIC01NCw3ICs1NCw3IEBAIENhbGxGcmFtZVNodWZmbGVy
OjpDYWxsRnJhbWVTaHVmZmxlcihDQ2EKICAgICBtX2xvY2tlZFJlZ2lzdGVycy5leGNsdWRlKFJl
Z2lzdGVyU2V0Ojp2bUNhbGxlZVNhdmVSZWdpc3RlcnMoKSk7CiAKICAgICBBU1NFUlQoIWRhdGEu
Y2FsbGVlLmlzSW5KU1N0YWNrKCkgfHwgZGF0YS5jYWxsZWUudmlydHVhbFJlZ2lzdGVyKCkuaXNM
b2NhbCgpKTsKLSAgICBhZGROZXcoVmlydHVhbFJlZ2lzdGVyKEpTU3RhY2s6OkNhbGxlZSksIGRh
dGEuY2FsbGVlKTsKKyAgICBhZGROZXcoVmlydHVhbFJlZ2lzdGVyKENhbGxGcmFtZVNsb3Q6OmNh
bGxlZSksIGRhdGEuY2FsbGVlKTsKIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZGF0YS5h
cmdzLnNpemUoKTsgKytpKSB7CiAgICAgICAgIEFTU0VSVCghZGF0YS5hcmdzW2ldLmlzSW5KU1N0
YWNrKCkgfHwgZGF0YS5hcmdzW2ldLnZpcnR1YWxSZWdpc3RlcigpLmlzTG9jYWwoKSk7CkBAIC0x
NDUsNyArMTQ1LDcgQEAgdm9pZCBDYWxsRnJhbWVTaHVmZmxlcjo6ZHVtcChQcmludFN0cmVhbQog
ICAgICAgICAgICAgICAgICAgICBvdXQucHJpbnRmKCIgJWMlOHMgPC0gJTE4cyAlYyAiLCBkLCBz
dHIuZGF0YSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgcmVjb3ZlcnlTdHIuZGF0YSgpLCBk
KTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKG5ld1JlZyA9PSBW
aXJ0dWFsUmVnaXN0ZXIgeyBKU1N0YWNrOjpBcmd1bWVudENvdW50IH0pCisgICAgICAgICAgICB9
IGVsc2UgaWYgKG5ld1JlZyA9PSBWaXJ0dWFsUmVnaXN0ZXIgeyBDYWxsRnJhbWVTbG90Ojphcmd1
bWVudENvdW50IH0pCiAgICAgICAgICAgICAgICAgb3V0LnByaW50ZigiICVjJThzIDwtICUxOHp1
ICVjICIsIGQsIHN0ci5kYXRhKCksIGFyZ0NvdW50KCksIGQpOwogICAgICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgICAgIG91dC5wcmludGYoIiAlYyUzMHMgJWMgIiwgZCwgIiIsIGQpOwpAQCAt
MzIzLDcgKzMyMyw3IEBAIHZvaWQgQ2FsbEZyYW1lU2h1ZmZsZXI6OmV4dGVuZEZyYW1lSWZOZWUK
ICAgICAgICAgbV9qaXQuc3ViUHRyKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoZGVsdGEg
KiBzaXplb2YoUmVnaXN0ZXIpKSwgTWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVy
KTsKIAogICAgICAgICBpZiAoaXNTbG93UGF0aCgpKQotICAgICAgICAgICAgbV9mcmFtZURlbHRh
ID0gbnVtTG9jYWxzKCkgKyBKU1N0YWNrOjpDYWxsZXJGcmFtZUFuZFBDU2l6ZTsKKyAgICAgICAg
ICAgIG1fZnJhbWVEZWx0YSA9IG51bUxvY2FscygpICsgQ2FsbGVyRnJhbWVBbmRQQzo6c2l6ZUlu
UmVnaXN0ZXJzOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBtX29sZEZyYW1lT2Zmc2V0ID0g
bnVtTG9jYWxzKCk7CiAKQEAgLTMzOSw5ICszMzksOSBAQCB2b2lkIENhbGxGcmFtZVNodWZmbGVy
OjpwcmVwYXJlRm9yU2xvd1BhCiAgICAgQVNTRVJUKGlzVW5kZWNpZGVkKCkpOwogICAgIGVtaXRE
ZWx0YUNoZWNrKCk7CiAKLSAgICBtX2ZyYW1lRGVsdGEgPSBudW1Mb2NhbHMoKSArIEpTU3RhY2s6
OkNhbGxlckZyYW1lQW5kUENTaXplOworICAgIG1fZnJhbWVEZWx0YSA9IG51bUxvY2FscygpICsg
Q2FsbGVyRnJhbWVBbmRQQzo6c2l6ZUluUmVnaXN0ZXJzOwogICAgIG1fbmV3RnJhbWVCYXNlID0g
TWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyOwotICAgIG1fbmV3RnJhbWVPZmZz
ZXQgPSAtSlNTdGFjazo6Q2FsbGVyRnJhbWVBbmRQQ1NpemU7CisgICAgbV9uZXdGcmFtZU9mZnNl
dCA9IC1DYWxsZXJGcmFtZUFuZFBDOjpzaXplSW5SZWdpc3RlcnM7CiAKICAgICBpZiAodmVyYm9z
ZSkKICAgICAgICAgZGF0YUxvZygiXG5cblByZXBhcmluZyBmcmFtZSBmb3Igc2xvdyBwYXRoIGNh
bGw6XG4iKTsKQEAgLTQyMywxMSArNDIzLDExIEBAIHZvaWQgQ2FsbEZyYW1lU2h1ZmZsZXI6OnBy
ZXBhcmVGb3JUYWlsQ2EKICAgICAvLyBvbGQgZnJhbWUgKHRha2luZyBpbnRvIGFjY291bnQgYW4g
YXJndW1lbnQgY291bnQgaGlnaGVyIHRoYW4KICAgICAvLyB0aGUgbnVtYmVyIG9mIHBhcmFtZXRl
cnMpLCB0aGVuIHN1YnN0cmFjdGluZyB0byBpdCB0aGUgYWxpZ25lZAogICAgIC8vIG5ldyBmcmFt
ZSBzaXplIChhZGp1c3RlZCkuCi0gICAgbV9qaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBKU1N0YWNrOjpBcmd1bWVudENvdW50ICog
c3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSArIFBheWxvYWRPZmZzZXQpLCBtX25l
d0ZyYW1lQmFzZSk7CisgICAgbV9qaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKEdQ
UkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50ICog
c3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSArIFBheWxvYWRPZmZzZXQpLCBtX25l
d0ZyYW1lQmFzZSk7CiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgYXJndW1lbnRDb3VudE9LID0K
ICAgICAgICAgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkJlbG93T3JFcXVhbCwgbV9u
ZXdGcmFtZUJhc2UsCiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKG1f
aml0LmNvZGVCbG9jaygpLT5udW1QYXJhbWV0ZXJzKCkpKTsKLSAgICBtX2ppdC5hZGQzMihNYWNy
b0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKHN0YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCkgLSAxICsg
SlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyU2l6ZSksIG1fbmV3RnJhbWVCYXNlKTsKKyAgICBtX2pp
dC5hZGQzMihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKHN0YWNrQWxpZ25tZW50UmVnaXN0
ZXJzKCkgLSAxICsgQ2FsbEZyYW1lOjpoZWFkZXJTaXplSW5SZWdpc3RlcnMpLCBtX25ld0ZyYW1l
QmFzZSk7CiAgICAgbV9qaXQuYW5kMzIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMigtc3Rh
Y2tBbGlnbm1lbnRSZWdpc3RlcnMoKSksIG1fbmV3RnJhbWVCYXNlKTsKICAgICBtX2ppdC5tdWwz
MihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKHNpemVvZihSZWdpc3RlcikpLCBtX25ld0Zy
YW1lQmFzZSwgbV9uZXdGcmFtZUJhc2UpOwogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGRvbmUg
PSBtX2ppdC5qdW1wKCk7CkBAIC03NDMsMTEgKzc0MywxMSBAQCB2b2lkIENhbGxGcmFtZVNodWZm
bGVyOjpwcmVwYXJlQW55KCkKICAgICAvLyBXZSBuZWVkIHRvIGhhbmRsZSA0KSBmaXJzdCBiZWNh
dXNlIGl0IGltcGxpZXMgcmVsZWFzaW5nCiAgICAgLy8gbV9uZXdGcmFtZUJhc2UsIHdoaWNoIGNv
dWxkIGJlIGEgd2FudGVkIHJlZ2lzdGVyLgogICAgIGlmICh2ZXJib3NlKQotICAgICAgICBkYXRh
TG9nKCIgICAqIFN0b3JpbmcgdGhlIGFyZ3VtZW50IGNvdW50IGludG8gIiwgVmlydHVhbFJlZ2lz
dGVyIHsgSlNTdGFjazo6QXJndW1lbnRDb3VudCB9LCAiXG4iKTsKKyAgICAgICAgZGF0YUxvZygi
ICAgKiBTdG9yaW5nIHRoZSBhcmd1bWVudCBjb3VudCBpbnRvICIsIFZpcnR1YWxSZWdpc3RlciB7
IENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQgfSwgIlxuIik7CiAgICAgbV9qaXQuc3RvcmUz
MihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKDApLAotICAgICAgICBhZGRyZXNzRm9yTmV3
KFZpcnR1YWxSZWdpc3RlciB7IEpTU3RhY2s6OkFyZ3VtZW50Q291bnQgfSkud2l0aE9mZnNldChU
YWdPZmZzZXQpKTsKKyAgICAgICAgYWRkcmVzc0Zvck5ldyhWaXJ0dWFsUmVnaXN0ZXIgeyBDYWxs
RnJhbWVTbG90Ojphcmd1bWVudENvdW50IH0pLndpdGhPZmZzZXQoVGFnT2Zmc2V0KSk7CiAgICAg
bV9qaXQuc3RvcmUzMihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKGFyZ0NvdW50KCkpLAot
ICAgICAgICBhZGRyZXNzRm9yTmV3KFZpcnR1YWxSZWdpc3RlciB7IEpTU3RhY2s6OkFyZ3VtZW50
Q291bnQgfSkud2l0aE9mZnNldChQYXlsb2FkT2Zmc2V0KSk7CisgICAgICAgIGFkZHJlc3NGb3JO
ZXcoVmlydHVhbFJlZ2lzdGVyIHsgQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCB9KS53aXRo
T2Zmc2V0KFBheWxvYWRPZmZzZXQpKTsKIAogICAgIGlmICghaXNTbG93UGF0aCgpKSB7CiAgICAg
ICAgIEFTU0VSVChtX25ld0ZyYW1lQmFzZSAhPSBNYWNyb0Fzc2VtYmxlcjo6c3RhY2tQb2ludGVy
UmVnaXN0ZXIpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DYWxsRnJhbWVTaHVm
Zmxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ2FsbEZyYW1l
U2h1ZmZsZXIuaAkocmV2aXNpb24gMjAyOTk0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9DYWxsRnJhbWVTaHVmZmxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDMsNyArMTAzLDcgQEAg
cHVibGljOgogCiAgICAgICAgIENhbGxGcmFtZVNodWZmbGVEYXRhIGRhdGE7CiAgICAgICAgIGRh
dGEubnVtTG9jYWxzID0gbnVtTG9jYWxzKCk7Ci0gICAgICAgIGRhdGEuY2FsbGVlID0gZ2V0TmV3
KFZpcnR1YWxSZWdpc3RlciB7IEpTU3RhY2s6OkNhbGxlZSB9KS0+cmVjb3ZlcnkoKTsKKyAgICAg
ICAgZGF0YS5jYWxsZWUgPSBnZXROZXcoVmlydHVhbFJlZ2lzdGVyIHsgQ2FsbEZyYW1lU2xvdDo6
Y2FsbGVlIH0pLT5yZWNvdmVyeSgpOwogICAgICAgICBkYXRhLmFyZ3MucmVzaXplKGFyZ0NvdW50
KCkpOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFyZ0NvdW50KCk7ICsraSkKICAg
ICAgICAgICAgIGRhdGEuYXJnc1tpXSA9IGdldE5ldyh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVu
dChpKSktPnJlY292ZXJ5KCk7CkBAIC0xMjksNyArMTI5LDcgQEAgcHVibGljOgogICAgIHsKICAg
ICAgICAgQVNTRVJUKGlzVW5kZWNpZGVkKCkpOwogICAgICAgICBBU1NFUlQoIWdldE5ldyhqc1Zh
bHVlUmVncykpOwotICAgICAgICBDYWNoZWRSZWNvdmVyeSogY2FjaGVkUmVjb3ZlcnkgeyBnZXRO
ZXcoVmlydHVhbFJlZ2lzdGVyKEpTU3RhY2s6OkNhbGxlZSkpIH07CisgICAgICAgIENhY2hlZFJl
Y292ZXJ5KiBjYWNoZWRSZWNvdmVyeSB7IGdldE5ldyhWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1l
U2xvdDo6Y2FsbGVlKSkgfTsKICAgICAgICAgQVNTRVJUKGNhY2hlZFJlY292ZXJ5KTsKICAgICAg
ICAgYWRkTmV3KGpzVmFsdWVSZWdzLCBjYWNoZWRSZWNvdmVyeS0+cmVjb3ZlcnkoKSk7CiAgICAg
fQpAQCAtMTQyLDcgKzE0Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGFzc3VtZUNhbGxlZUlzQ2Vs
bCgpCiAgICAgewogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCi0gICAgICAgIENhY2hlZFJlY292ZXJ5
JiBjYWxsZWVDYWNoZWRSZWNvdmVyeSA9ICpnZXROZXcoVmlydHVhbFJlZ2lzdGVyKEpTU3RhY2s6
OkNhbGxlZSkpOworICAgICAgICBDYWNoZWRSZWNvdmVyeSYgY2FsbGVlQ2FjaGVkUmVjb3Zlcnkg
PSAqZ2V0TmV3KFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90OjpjYWxsZWUpKTsKICAgICAg
ICAgc3dpdGNoIChjYWxsZWVDYWNoZWRSZWNvdmVyeS5yZWNvdmVyeSgpLnRlY2huaXF1ZSgpKSB7
CiAgICAgICAgIGNhc2UgSW5QYWlyOgogICAgICAgICAgICAgdXBkYXRlUmVjb3ZlcnkoCkBAIC0y
OTcsMTcgKzI5NywxNyBAQCBwcml2YXRlOgogCiAgICAgaW50IG51bUxvY2FscygpIGNvbnN0CiAg
ICAgewotICAgICAgICByZXR1cm4gbV9vbGRGcmFtZS5zaXplKCkgLSBKU1N0YWNrOjpDYWxsZXJG
cmFtZUFuZFBDU2l6ZTsKKyAgICAgICAgcmV0dXJuIG1fb2xkRnJhbWUuc2l6ZSgpIC0gQ2FsbGVy
RnJhbWVBbmRQQzo6c2l6ZUluUmVnaXN0ZXJzOwogICAgIH0KIAogICAgIENhY2hlZFJlY292ZXJ5
KiBnZXRPbGQoVmlydHVhbFJlZ2lzdGVyIHJlZykgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVy
biBtX29sZEZyYW1lW0pTU3RhY2s6OkNhbGxlckZyYW1lQW5kUENTaXplIC0gcmVnLm9mZnNldCgp
IC0gMV07CisgICAgICAgIHJldHVybiBtX29sZEZyYW1lW0NhbGxlckZyYW1lQW5kUEM6OnNpemVJ
blJlZ2lzdGVycyAtIHJlZy5vZmZzZXQoKSAtIDFdOwogICAgIH0KIAogICAgIHZvaWQgc2V0T2xk
KFZpcnR1YWxSZWdpc3RlciByZWcsIENhY2hlZFJlY292ZXJ5KiBjYWNoZWRSZWNvdmVyeSkKICAg
ICB7Ci0gICAgICAgIG1fb2xkRnJhbWVbSlNTdGFjazo6Q2FsbGVyRnJhbWVBbmRQQ1NpemUgLSBy
ZWcub2Zmc2V0KCkgLSAxXSA9IGNhY2hlZFJlY292ZXJ5OworICAgICAgICBtX29sZEZyYW1lW0Nh
bGxlckZyYW1lQW5kUEM6OnNpemVJblJlZ2lzdGVycyAtIHJlZy5vZmZzZXQoKSAtIDFdID0gY2Fj
aGVkUmVjb3Zlcnk7CiAgICAgfQogCiAgICAgVmlydHVhbFJlZ2lzdGVyIGZpcnN0T2xkKCkgY29u
c3QKQEAgLTMxNyw3ICszMTcsNyBAQCBwcml2YXRlOgogCiAgICAgVmlydHVhbFJlZ2lzdGVyIGxh
c3RPbGQoKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIFZpcnR1YWxSZWdpc3RlciB7IEpT
U3RhY2s6OkNhbGxlckZyYW1lQW5kUENTaXplIC0gMSB9OworICAgICAgICByZXR1cm4gVmlydHVh
bFJlZ2lzdGVyIHsgQ2FsbGVyRnJhbWVBbmRQQzo6c2l6ZUluUmVnaXN0ZXJzIC0gMSB9OwogICAg
IH0KIAogICAgIGJvb2wgaXNWYWxpZE9sZChWaXJ0dWFsUmVnaXN0ZXIgcmVnKSBjb25zdApAQCAt
MzM5LDcgKzMzOSw3IEBAIHByaXZhdGU6CiAKICAgICBzaXplX3QgYXJnQ291bnQoKSBjb25zdAog
ICAgIHsKLSAgICAgICAgcmV0dXJuIG1fbmV3RnJhbWUuc2l6ZSgpIC0gSlNTdGFjazo6Q2FsbEZy
YW1lSGVhZGVyU2l6ZTsKKyAgICAgICAgcmV0dXJuIG1fbmV3RnJhbWUuc2l6ZSgpIC0gQ2FsbEZy
YW1lOjpoZWFkZXJTaXplSW5SZWdpc3RlcnM7CiAgICAgfQogCiAgICAgQ2FjaGVkUmVjb3Zlcnkq
IGdldE5ldyhWaXJ0dWFsUmVnaXN0ZXIgbmV3UmVnaXN0ZXIpIGNvbnN0CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVQuY3BwCShyZXZpc2lvbiAyMDI5OTQpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2OSw3ICs1NjksNyBAQCB2b2lk
IEpJVDo6Y29tcGlsZVdpdGhvdXRMaW5raW5nKEpJVENvbXBpCiAgICAgICAgIG5vcCgpOwogCiAg
ICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoKTsKLSAgICBlbWl0UHV0VG9DYWxsRnJhbWVIZWFkZXIo
bV9jb2RlQmxvY2ssIEpTU3RhY2s6OkNvZGVCbG9jayk7CisgICAgZW1pdFB1dFRvQ2FsbEZyYW1l
SGVhZGVyKG1fY29kZUJsb2NrLCBDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spOwogCiAgICAgTGFi
ZWwgYmVnaW5MYWJlbCh0aGlzKTsKIApAQCAtNjI3LDkgKzYyNyw5IEBAIHZvaWQgSklUOjpjb21w
aWxlV2l0aG91dExpbmtpbmcoSklUQ29tcGkKICAgICAgICAgbV9hcml0eUNoZWNrID0gbGFiZWwo
KTsKICAgICAgICAgc3RvcmU4KFRydXN0ZWRJbW0zMigwKSwgJm1fY29kZUJsb2NrLT5tX3Nob3Vs
ZEFsd2F5c0JlSW5saW5lZCk7CiAgICAgICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKCk7Ci0gICAg
ICAgIGVtaXRQdXRUb0NhbGxGcmFtZUhlYWRlcihtX2NvZGVCbG9jaywgSlNTdGFjazo6Q29kZUJs
b2NrKTsKKyAgICAgICAgZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVyKG1fY29kZUJsb2NrLCBDYWxs
RnJhbWVTbG90Ojpjb2RlQmxvY2spOwogCi0gICAgICAgIGxvYWQzMihwYXlsb2FkRm9yKEpTU3Rh
Y2s6OkFyZ3VtZW50Q291bnQpLCByZWdUMSk7CisgICAgICAgIGxvYWQzMihwYXlsb2FkRm9yKENh
bGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpLCByZWdUMSk7CiAgICAgICAgIGJyYW5jaDMyKEFi
b3ZlT3JFcXVhbCwgcmVnVDEsIFRydXN0ZWRJbW0zMihtX2NvZGVCbG9jay0+bV9udW1QYXJhbWV0
ZXJzKSkubGlua1RvKGJlZ2luTGFiZWwsIHRoaXMpOwogCiAgICAgICAgIG1fYnl0ZWNvZGVPZmZz
ZXQgPSAwOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCShyZXZpc2lvbiAyMDI5OTQpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC03MDYs
NyArNzA2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdm9pZCBlbWl0SW5pdFJlZ2lz
dGVyKGludCBkc3QpOwogCi0gICAgICAgIHZvaWQgZW1pdFB1dEludFRvQ2FsbEZyYW1lSGVhZGVy
KFJlZ2lzdGVySUQgZnJvbSwgSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyRW50cnkpOworICAgICAg
ICB2b2lkIGVtaXRQdXRJbnRUb0NhbGxGcmFtZUhlYWRlcihSZWdpc3RlcklEIGZyb20sIGludCBl
bnRyeSk7CiAKICAgICAgICAgSlNWYWx1ZSBnZXRDb25zdGFudE9wZXJhbmQoaW50IHNyYyk7CiAg
ICAgICAgIGJvb2wgaXNPcGVyYW5kQ29uc3RhbnRJbnQoaW50IHNyYyk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQuY3BwCShyZXZpc2lvbiAyMDI5OTQpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwzMl82NC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE3MCw3ICsxNzAsNyBAQCB2b2lkIEpJVDo6Y29tcGlsZVNldHVwVmFyYXJnc0ZyYW1l
KE9wY29kCiAgICAgbW92ZShyZXR1cm5WYWx1ZUdQUiwgcmVnVDEpOwogCiAgICAgLy8gUHJvZmls
ZSB0aGUgYXJndW1lbnQgY291bnQuCi0gICAgbG9hZDMyKEFkZHJlc3MocmVnVDEsIEpTU3RhY2s6
OkFyZ3VtZW50Q291bnQgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpICsgUGF5
bG9hZE9mZnNldCksIHJlZ1QyKTsKKyAgICBsb2FkMzIoQWRkcmVzcyhyZWdUMSwgQ2FsbEZyYW1l
U2xvdDo6YXJndW1lbnRDb3VudCAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkg
KyBQYXlsb2FkT2Zmc2V0KSwgcmVnVDIpOwogICAgIGxvYWQ4KGluZm8tPmFkZHJlc3NPZk1heE51
bUFyZ3VtZW50cygpLCByZWdUMCk7CiAgICAgSnVtcCBub3RCaWdnZXN0ID0gYnJhbmNoMzIoQWJv
dmUsIHJlZ1QwLCByZWdUMik7CiAgICAgSnVtcCBub3RTYXR1cmF0ZWQgPSBicmFuY2gzMihCZWxv
d09yRXF1YWwsIHJlZ1QyLCBUcnVzdGVkSW1tMzIoMjU1KSk7CkBAIC0yMTQsMTEgKzIxNCwxMSBA
QCB2b2lkIEpJVDo6Y29tcGlsZUNhbGxFdmFsU2xvd0Nhc2UoSW5zdHJ1CiAKICAgICBhZGRQdHIo
VHJ1c3RlZEltbTMyKHJlZ2lzdGVyT2Zmc2V0ICogc2l6ZW9mKFJlZ2lzdGVyKSArIHNpemVvZihD
YWxsZXJGcmFtZUFuZFBDKSksIGNhbGxGcmFtZVJlZ2lzdGVyLCBzdGFja1BvaW50ZXJSZWdpc3Rl
cik7CiAKLSAgICBsb2FkUHRyKEFkZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0ZXIsIHNpemVvZihS
ZWdpc3RlcikgKiBKU1N0YWNrOjpDYWxsZWUgLSBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykpLCBy
ZWdUMCk7Ci0gICAgbG9hZFB0cihBZGRyZXNzKHN0YWNrUG9pbnRlclJlZ2lzdGVyLCBzaXplb2Yo
UmVnaXN0ZXIpICogSlNTdGFjazo6Q2FsbGVlIC0gc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKSwg
cmVnVDEpOworICAgIGxvYWRQdHIoQWRkcmVzcyhzdGFja1BvaW50ZXJSZWdpc3Rlciwgc2l6ZW9m
KFJlZ2lzdGVyKSAqIENhbGxGcmFtZVNsb3Q6OmNhbGxlZSAtIHNpemVvZihDYWxsZXJGcmFtZUFu
ZFBDKSksIHJlZ1QwKTsKKyAgICBsb2FkUHRyKEFkZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0ZXIs
IHNpemVvZihSZWdpc3RlcikgKiBDYWxsRnJhbWVTbG90OjpjYWxsZWUgLSBzaXplb2YoQ2FsbGVy
RnJhbWVBbmRQQykpLCByZWdUMSk7CiAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGluZm8pLCByZWdU
Mik7CiAKLSAgICBlbWl0TG9hZChKU1N0YWNrOjpDYWxsZWUsIHJlZ1QxLCByZWdUMCk7CisgICAg
ZW1pdExvYWQoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlLCByZWdUMSwgcmVnVDApOwogICAgIE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZiB2aXJ0dWFsVGh1bmsgPSB2aXJ0dWFsVGh1bmtGb3IobV92bSwgKmlu
Zm8pOwogICAgIGluZm8tPnNldFNsb3dTdHViKGNyZWF0ZUpJVFN0dWJSb3V0aW5lKHZpcnR1YWxU
aHVuaywgKm1fdm0sIG51bGxwdHIsIHRydWUpKTsKICAgICBlbWl0TmFrZWRDYWxsKHZpcnR1YWxU
aHVuay5jb2RlKCkpOwpAQCAtMjY1LDE1ICsyNjUsMTUgQEAgdm9pZCBKSVQ6OmNvbXBpbGVPcENh
bGwoT3Bjb2RlSUQgb3Bjb2RlSQogICAgIAogICAgICAgICBhZGRQdHIoVHJ1c3RlZEltbTMyKHJl
Z2lzdGVyT2Zmc2V0ICogc2l6ZW9mKFJlZ2lzdGVyKSArIHNpemVvZihDYWxsZXJGcmFtZUFuZFBD
KSksIGNhbGxGcmFtZVJlZ2lzdGVyLCBzdGFja1BvaW50ZXJSZWdpc3Rlcik7CiAKLSAgICAgICAg
c3RvcmUzMihUcnVzdGVkSW1tMzIoYXJnQ291bnQpLCBBZGRyZXNzKHN0YWNrUG9pbnRlclJlZ2lz
dGVyLCBKU1N0YWNrOjpBcmd1bWVudENvdW50ICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVn
aXN0ZXIpKSArIFBheWxvYWRPZmZzZXQgLSBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykpKTsKKyAg
ICAgICAgc3RvcmUzMihUcnVzdGVkSW1tMzIoYXJnQ291bnQpLCBBZGRyZXNzKHN0YWNrUG9pbnRl
clJlZ2lzdGVyLCBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50ICogc3RhdGljX2Nhc3Q8aW50
PihzaXplb2YoUmVnaXN0ZXIpKSArIFBheWxvYWRPZmZzZXQgLSBzaXplb2YoQ2FsbGVyRnJhbWVB
bmRQQykpKTsKICAgICB9IC8vIFNQIGhvbGRzIG5ld0NhbGxGcmFtZSArIHNpemVvZihDYWxsZXJG
cmFtZUFuZFBDKSwgd2l0aCBBcmd1bWVudENvdW50IGluaXRpYWxpemVkLgogICAgIAogICAgIHVp
bnQzMl90IGxvY2F0aW9uQml0cyA9IENhbGxTaXRlSW5kZXgoaW5zdHJ1Y3Rpb24pLmJpdHMoKTsK
LSAgICBzdG9yZTMyKFRydXN0ZWRJbW0zMihsb2NhdGlvbkJpdHMpLCB0YWdGb3IoSlNTdGFjazo6
QXJndW1lbnRDb3VudCwgY2FsbEZyYW1lUmVnaXN0ZXIpKTsKKyAgICBzdG9yZTMyKFRydXN0ZWRJ
bW0zMihsb2NhdGlvbkJpdHMpLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCwg
Y2FsbEZyYW1lUmVnaXN0ZXIpKTsKICAgICBlbWl0TG9hZChjYWxsZWUsIHJlZ1QxLCByZWdUMCk7
IC8vIHJlZ1QxLCByZWdUMCBob2xkcyBjYWxsZWUuCiAKLSAgICBzdG9yZTMyKHJlZ1QwLCBBZGRy
ZXNzKHN0YWNrUG9pbnRlclJlZ2lzdGVyLCBKU1N0YWNrOjpDYWxsZWUgKiBzdGF0aWNfY2FzdDxp
bnQ+KHNpemVvZihSZWdpc3RlcikpICsgUGF5bG9hZE9mZnNldCAtIHNpemVvZihDYWxsZXJGcmFt
ZUFuZFBDKSkpOwotICAgIHN0b3JlMzIocmVnVDEsIEFkZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0
ZXIsIEpTU3RhY2s6OkNhbGxlZSAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkg
KyBUYWdPZmZzZXQgLSBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykpKTsKKyAgICBzdG9yZTMyKHJl
Z1QwLCBBZGRyZXNzKHN0YWNrUG9pbnRlclJlZ2lzdGVyLCBDYWxsRnJhbWVTbG90OjpjYWxsZWUg
KiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpICsgUGF5bG9hZE9mZnNldCAtIHNp
emVvZihDYWxsZXJGcmFtZUFuZFBDKSkpOworICAgIHN0b3JlMzIocmVnVDEsIEFkZHJlc3Moc3Rh
Y2tQb2ludGVyUmVnaXN0ZXIsIENhbGxGcmFtZVNsb3Q6OmNhbGxlZSAqIHN0YXRpY19jYXN0PGlu
dD4oc2l6ZW9mKFJlZ2lzdGVyKSkgKyBUYWdPZmZzZXQgLSBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQ
QykpKTsKIAogICAgIGlmIChvcGNvZGVJRCA9PSBvcF9jYWxsX2V2YWwpIHsKICAgICAgICAgY29t
cGlsZUNhbGxFdmFsKGluc3RydWN0aW9uKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUQ2FsbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRDYWxsLmNwcAkocmV2aXNpb24gMjAyOTk0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRDYWxsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODAsNyArODAsNyBAQCB2b2lkIEpJVDo6
Y29tcGlsZVNldHVwVmFyYXJnc0ZyYW1lKE9wY29kCiAgICAgbW92ZShyZXR1cm5WYWx1ZUdQUiwg
cmVnVDEpOwogCiAgICAgLy8gUHJvZmlsZSB0aGUgYXJndW1lbnQgY291bnQuCi0gICAgbG9hZDMy
KEFkZHJlc3MocmVnVDEsIEpTU3RhY2s6OkFyZ3VtZW50Q291bnQgKiBzdGF0aWNfY2FzdDxpbnQ+
KHNpemVvZihSZWdpc3RlcikpICsgUGF5bG9hZE9mZnNldCksIHJlZ1QyKTsKKyAgICBsb2FkMzIo
QWRkcmVzcyhyZWdUMSwgQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCAqIHN0YXRpY19jYXN0
PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkgKyBQYXlsb2FkT2Zmc2V0KSwgcmVnVDIpOwogICAgIGxv
YWQ4KGluZm8tPmFkZHJlc3NPZk1heE51bUFyZ3VtZW50cygpLCByZWdUMCk7CiAgICAgSnVtcCBu
b3RCaWdnZXN0ID0gYnJhbmNoMzIoQWJvdmUsIHJlZ1QwLCByZWdUMik7CiAgICAgSnVtcCBub3RT
YXR1cmF0ZWQgPSBicmFuY2gzMihCZWxvd09yRXF1YWwsIHJlZ1QyLCBUcnVzdGVkSW1tMzIoMjU1
KSk7CkBAIC0xMjMsNyArMTIzLDcgQEAgdm9pZCBKSVQ6OmNvbXBpbGVDYWxsRXZhbFNsb3dDYXNl
KEluc3RydQogCiAgICAgYWRkUHRyKFRydXN0ZWRJbW0zMihyZWdpc3Rlck9mZnNldCAqIHNpemVv
ZihSZWdpc3RlcikgKyBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykpLCBjYWxsRnJhbWVSZWdpc3Rl
ciwgc3RhY2tQb2ludGVyUmVnaXN0ZXIpOwogCi0gICAgbG9hZDY0KEFkZHJlc3Moc3RhY2tQb2lu
dGVyUmVnaXN0ZXIsIHNpemVvZihSZWdpc3RlcikgKiBKU1N0YWNrOjpDYWxsZWUgLSBzaXplb2Yo
Q2FsbGVyRnJhbWVBbmRQQykpLCByZWdUMCk7CisgICAgbG9hZDY0KEFkZHJlc3Moc3RhY2tQb2lu
dGVyUmVnaXN0ZXIsIHNpemVvZihSZWdpc3RlcikgKiBDYWxsRnJhbWVTbG90OjpjYWxsZWUgLSBz
aXplb2YoQ2FsbGVyRnJhbWVBbmRQQykpLCByZWdUMCk7CiAgICAgbW92ZShUcnVzdGVkSW1tUHRy
KGluZm8pLCByZWdUMik7CiAgICAgQ2FsbCBjYWxsID0gZW1pdE5ha2VkQ2FsbCgpOwogICAgIGFk
ZExpbmtUYXNrKApAQCAtMTgxLDE1ICsxODEsMTUgQEAgdm9pZCBKSVQ6OmNvbXBpbGVPcENhbGwo
T3Bjb2RlSUQgb3Bjb2RlSQogICAgICAgICB9CiAgICAgCiAgICAgICAgIGFkZFB0cihUcnVzdGVk
SW1tMzIocmVnaXN0ZXJPZmZzZXQgKiBzaXplb2YoUmVnaXN0ZXIpICsgc2l6ZW9mKENhbGxlckZy
YW1lQW5kUEMpKSwgY2FsbEZyYW1lUmVnaXN0ZXIsIHN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKLSAg
ICAgICAgc3RvcmUzMihUcnVzdGVkSW1tMzIoYXJnQ291bnQpLCBBZGRyZXNzKHN0YWNrUG9pbnRl
clJlZ2lzdGVyLCBKU1N0YWNrOjpBcmd1bWVudENvdW50ICogc3RhdGljX2Nhc3Q8aW50PihzaXpl
b2YoUmVnaXN0ZXIpKSArIFBheWxvYWRPZmZzZXQgLSBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykp
KTsKKyAgICAgICAgc3RvcmUzMihUcnVzdGVkSW1tMzIoYXJnQ291bnQpLCBBZGRyZXNzKHN0YWNr
UG9pbnRlclJlZ2lzdGVyLCBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50ICogc3RhdGljX2Nh
c3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSArIFBheWxvYWRPZmZzZXQgLSBzaXplb2YoQ2FsbGVy
RnJhbWVBbmRQQykpKTsKICAgICB9IC8vIFNQIGhvbGRzIG5ld0NhbGxGcmFtZSArIHNpemVvZihD
YWxsZXJGcmFtZUFuZFBDKSwgd2l0aCBBcmd1bWVudENvdW50IGluaXRpYWxpemVkLgogICAgIAog
ICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0gaW5zdHJ1Y3Rpb24gLSBtX2NvZGVCbG9jay0+
aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsKICAgICB1aW50MzJfdCBsb2NhdGlvbkJpdHMgPSBDYWxs
U2l0ZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KS5iaXRzKCk7Ci0gICAgc3RvcmUzMihUcnVzdGVkSW1t
MzIobG9jYXRpb25CaXRzKSwgQWRkcmVzcyhjYWxsRnJhbWVSZWdpc3RlciwgSlNTdGFjazo6QXJn
dW1lbnRDb3VudCAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkgKyBUYWdPZmZz
ZXQpKTsKKyAgICBzdG9yZTMyKFRydXN0ZWRJbW0zMihsb2NhdGlvbkJpdHMpLCBBZGRyZXNzKGNh
bGxGcmFtZVJlZ2lzdGVyLCBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50ICogc3RhdGljX2Nh
c3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSArIFRhZ09mZnNldCkpOwogCiAgICAgZW1pdEdldFZp
cnR1YWxSZWdpc3RlcihjYWxsZWUsIHJlZ1QwKTsgLy8gcmVnVDAgaG9sZHMgY2FsbGVlLgotICAg
IHN0b3JlNjQocmVnVDAsIEFkZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0ZXIsIEpTU3RhY2s6OkNh
bGxlZSAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkgLSBzaXplb2YoQ2FsbGVy
RnJhbWVBbmRQQykpKTsKKyAgICBzdG9yZTY0KHJlZ1QwLCBBZGRyZXNzKHN0YWNrUG9pbnRlclJl
Z2lzdGVyLCBDYWxsRnJhbWVTbG90OjpjYWxsZWUgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihS
ZWdpc3RlcikpIC0gc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKSk7CiAKICAgICBpZiAob3Bjb2Rl
SUQgPT0gb3BfY2FsbF9ldmFsKSB7CiAgICAgICAgIGNvbXBpbGVDYWxsRXZhbChpbnN0cnVjdGlv
bik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAkocmV2aXNpb24g
MjAyOTk0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTg4LDcgKzg4LDcgQEAgQUxXQVlTX0lOTElORSBKU1ZhbHVlIEpJVDo6Z2V0
Q29uc3RhbnRPcAogICAgIHJldHVybiBtX2NvZGVCbG9jay0+Z2V0Q29uc3RhbnQoc3JjKTsKIH0K
IAotQUxXQVlTX0lOTElORSB2b2lkIEpJVDo6ZW1pdFB1dEludFRvQ2FsbEZyYW1lSGVhZGVyKFJl
Z2lzdGVySUQgZnJvbSwgSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyRW50cnkgZW50cnkpCitBTFdB
WVNfSU5MSU5FIHZvaWQgSklUOjplbWl0UHV0SW50VG9DYWxsRnJhbWVIZWFkZXIoUmVnaXN0ZXJJ
RCBmcm9tLCBpbnQgZW50cnkpCiB7CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKICAgICBzdG9yZTMy
KFRydXN0ZWRJbW0zMihJbnQzMlRhZyksIGludFRhZ0ZvcihlbnRyeSwgY2FsbEZyYW1lUmVnaXN0
ZXIpKTsKQEAgLTE0Miw3ICsxNDIsNyBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgSklUOjp1cGRhdGVU
b3BDYWxsRnJhCiAjZWxzZQogICAgIHVpbnQzMl90IGxvY2F0aW9uQml0cyA9IENhbGxTaXRlSW5k
ZXgobV9ieXRlY29kZU9mZnNldCArIDEpLmJpdHMoKTsKICNlbmRpZgotICAgIHN0b3JlMzIoVHJ1
c3RlZEltbTMyKGxvY2F0aW9uQml0cyksIGludFRhZ0ZvcihKU1N0YWNrOjpBcmd1bWVudENvdW50
KSk7CisgICAgc3RvcmUzMihUcnVzdGVkSW1tMzIobG9jYXRpb25CaXRzKSwgaW50VGFnRm9yKENh
bGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpKTsKICAgICAKICAgICAvLyBGSVhNRTogSXQncyBu
b3QgY2xlYXIgdGhhdCB0aGlzIGlzIG5lZWRlZC4gSklUT3BlcmF0aW9ucyB0ZW5kIHRvIHVwZGF0
ZSB0aGUgdG9wIGNhbGwgZnJhbWUgb24KICAgICAvLyB0aGUgQysrIHNpZGUuCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCShyZXZpc2lvbiAy
MDI5OTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTU1LDcgKzU1LDcgQEAgSklUOjpDb2RlUmVmIEpJVDo6cHJpdmF0
ZUNvbXBpbGVDVElOYXRpdgogICAgIENhbGwgbmF0aXZlQ2FsbDsKIAogICAgIGVtaXRGdW5jdGlv
blByb2xvZ3VlKCk7Ci0gICAgZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVyKDAsIEpTU3RhY2s6OkNv
ZGVCbG9jayk7CisgICAgZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVyKDAsIENhbGxGcmFtZVNsb3Q6
OmNvZGVCbG9jayk7CiAgICAgc3RvcmVQdHIoY2FsbEZyYW1lUmVnaXN0ZXIsICZtX3ZtLT50b3BD
YWxsRnJhbWUpOwogCiAjaWYgQ1BVKFg4NikKQEAgLTgxLDcgKzgxLDcgQEAgSklUOjpDb2RlUmVm
IEpJVDo6cHJpdmF0ZUNvbXBpbGVDVElOYXRpdgogICAgIC8vIEhvc3QgZnVuY3Rpb24gc2lnbmF0
dXJlIGlzIGYoRXhlY1N0YXRlKikuCiAgICAgbW92ZShjYWxsRnJhbWVSZWdpc3RlciwgYXJndW1l
bnRHUFIwKTsKIAotICAgIGVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyUHRyKEpTU3RhY2s6OkNh
bGxlZSwgYXJndW1lbnRHUFIxKTsKKyAgICBlbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlclB0cihD
YWxsRnJhbWVTbG90OjpjYWxsZWUsIGFyZ3VtZW50R1BSMSk7CiAgICAgbG9hZFB0cihBZGRyZXNz
KGFyZ3VtZW50R1BSMSwgT0JKRUNUX09GRlNFVE9GKEpTRnVuY3Rpb24sIG1fZXhlY3V0YWJsZSkp
LCByZWdUMik7CiAKICAgICAvLyBjYWxsIHRoZSBmdW5jdGlvbgpAQCAtOTk3LDcgKzk5Nyw3IEBA
IHZvaWQgSklUOjplbWl0X29wX2VudGVyKEluc3RydWN0aW9uKiBjdXIKIHZvaWQgSklUOjplbWl0
X29wX2dldF9zY29wZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGlu
dCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwotICAgIGVtaXRHZXRGcm9t
Q2FsbEZyYW1lSGVhZGVyUHRyKEpTU3RhY2s6OkNhbGxlZSwgcmVnVDApOworICAgIGVtaXRHZXRG
cm9tQ2FsbEZyYW1lSGVhZGVyUHRyKENhbGxGcmFtZVNsb3Q6OmNhbGxlZSwgcmVnVDApOwogICAg
IGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZTY29wZUNoYWluKCkp
LCByZWdUMCk7CiAgICAgZW1pdFN0b3JlQ2VsbChkc3QsIHJlZ1QwKTsKIH0KSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAkocmV2aXNpb24gMjAyOTk0KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNzIzLDcgKzcyMyw3IEBAIHZvaWQgSklUOjplbWl0X29wX2VudGVyKEluc3RydWN0aW9uKikK
IHZvaWQgSklUOjplbWl0X29wX2dldF9zY29wZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQogewogICAgIGludCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwot
ICAgIGVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyUHRyKEpTU3RhY2s6OkNhbGxlZSwgcmVnVDAp
OworICAgIGVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyUHRyKENhbGxGcmFtZVNsb3Q6OmNhbGxl
ZSwgcmVnVDApOwogICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNGdW5jdGlvbjo6b2Zmc2V0
T2ZTY29wZUNoYWluKCkpLCByZWdUMCk7CiAgICAgZW1pdFN0b3JlQ2VsbChkc3QsIHJlZ1QwKTsK
IH0KQEAgLTE0NDQsNyArMTQ0NCw3IEBAIHZvaWQgSklUOjplbWl0X29wX2NyZWF0ZV9jbG9uZWRf
YXJndW1lbnQKIHZvaWQgSklUOjplbWl0X29wX2FyZ3VtZW50X2NvdW50KEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgaW50IGRzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsx
XS51Lm9wZXJhbmQ7Ci0gICAgbG9hZDMyKHBheWxvYWRGb3IoSlNTdGFjazo6QXJndW1lbnRDb3Vu
dCksIHJlZ1QwKTsKKyAgICBsb2FkMzIocGF5bG9hZEZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVu
dENvdW50KSwgcmVnVDApOwogICAgIHN1YjMyKFRydXN0ZWRJbW0zMigxKSwgcmVnVDApOwogICAg
IEpTVmFsdWVSZWdzIHJlc3VsdCA9IEpTVmFsdWVSZWdzOjp3aXRoVHdvQXZhaWxhYmxlUmVncyhy
ZWdUMCwgcmVnVDEpOwogICAgIGJveEludDMyKHJlZ1QwLCByZXN1bHQpOwpAQCAtMTQ2MSw3ICsx
NDYxLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X3Jlc3RfbGVuZ3RoKEluc3RydQogewogICAg
IGludCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwogICAgIHVuc2lnbmVk
IG51bVBhcmFtc1RvU2tpcCA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51LnVuc2lnbmVkVmFsdWU7
Ci0gICAgbG9hZDMyKHBheWxvYWRGb3IoSlNTdGFjazo6QXJndW1lbnRDb3VudCksIHJlZ1QwKTsK
KyAgICBsb2FkMzIocGF5bG9hZEZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSwgcmVn
VDApOwogICAgIHN1YjMyKFRydXN0ZWRJbW0zMigxKSwgcmVnVDApOwogICAgIEp1bXAgemVyb0xl
bmd0aCA9IGJyYW5jaDMyKExlc3NUaGFuT3JFcXVhbCwgcmVnVDAsIEltbTMyKG51bVBhcmFtc1Rv
U2tpcCkpOwogICAgIHN1YjMyKEltbTMyKG51bVBhcmFtc1RvU2tpcCksIHJlZ1QwKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSlNJbnRlcmZhY2VKSVQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pTSW50ZXJmYWNlSklULmgJKHJldmlzaW9uIDIw
Mjk5NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSlNJbnRlcmZhY2VKSVQuaAkod29y
a2luZyBjb3B5KQpAQCAtNzEsMTAgKzcxLDEwIEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAg
IEp1bXAgZW1pdEp1bXBJZk5vdFR5cGUoUmVnaXN0ZXJJRCBiYXNlUmVnLCBKU1R5cGUpOwogCi0g
ICAgICAgIHZvaWQgZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXJQdHIoSlNTdGFjazo6Q2FsbEZy
YW1lSGVhZGVyRW50cnksIFJlZ2lzdGVySUQgdG8sIFJlZ2lzdGVySUQgZnJvbSA9IGNhbGxGcmFt
ZVJlZ2lzdGVyKTsKLSAgICAgICAgdm9pZCBlbWl0UHV0VG9DYWxsRnJhbWVIZWFkZXIoUmVnaXN0
ZXJJRCBmcm9tLCBKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJFbnRyeSk7Ci0gICAgICAgIHZvaWQg
ZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVyKHZvaWQqIHZhbHVlLCBKU1N0YWNrOjpDYWxsRnJhbWVI
ZWFkZXJFbnRyeSk7Ci0gICAgICAgIHZvaWQgZW1pdFB1dENlbGxUb0NhbGxGcmFtZUhlYWRlcihS
ZWdpc3RlcklEIGZyb20sIEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlckVudHJ5KTsKKyAgICAgICAg
dm9pZCBlbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlclB0cihpbnQgZW50cnksIFJlZ2lzdGVySUQg
dG8sIFJlZ2lzdGVySUQgZnJvbSA9IGNhbGxGcmFtZVJlZ2lzdGVyKTsKKyAgICAgICAgdm9pZCBl
bWl0UHV0VG9DYWxsRnJhbWVIZWFkZXIoUmVnaXN0ZXJJRCBmcm9tLCBpbnQgZW50cnkpOworICAg
ICAgICB2b2lkIGVtaXRQdXRUb0NhbGxGcmFtZUhlYWRlcih2b2lkKiB2YWx1ZSwgaW50IGVudHJ5
KTsKKyAgICAgICAgdm9pZCBlbWl0UHV0Q2VsbFRvQ2FsbEZyYW1lSGVhZGVyKFJlZ2lzdGVySUQg
ZnJvbSwgaW50IGVudHJ5KTsKIAogICAgICAgICBpbmxpbmUgQWRkcmVzcyBwYXlsb2FkRm9yKGlu
dCBpbmRleCwgUmVnaXN0ZXJJRCBiYXNlID0gY2FsbEZyYW1lUmVnaXN0ZXIpOwogICAgICAgICBp
bmxpbmUgQWRkcmVzcyBpbnRQYXlsb2FkRm9yKGludCBpbmRleCwgUmVnaXN0ZXJJRCBiYXNlID0g
Y2FsbEZyYW1lUmVnaXN0ZXIpOwpAQCAtMjIxLDEyICsyMjEsMTIgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIHJldHVybiBicmFuY2g4KE5vdEVxdWFsLCBBZGRyZXNzKGJhc2VSZWcsIEpTQ2Vs
bDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIodHlwZSkpOwogICAgIH0KIAot
ICAgIEFMV0FZU19JTkxJTkUgdm9pZCBKU0ludGVyZmFjZUpJVDo6ZW1pdEdldEZyb21DYWxsRnJh
bWVIZWFkZXJQdHIoSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyRW50cnkgZW50cnksIFJlZ2lzdGVy
SUQgdG8sIFJlZ2lzdGVySUQgZnJvbSkKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgSlNJbnRlcmZh
Y2VKSVQ6OmVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyUHRyKGludCBlbnRyeSwgUmVnaXN0ZXJJ
RCB0bywgUmVnaXN0ZXJJRCBmcm9tKQogICAgIHsKICAgICAgICAgbG9hZFB0cihBZGRyZXNzKGZy
b20sIGVudHJ5ICogc2l6ZW9mKFJlZ2lzdGVyKSksIHRvKTsKICAgICB9CiAKLSAgICBBTFdBWVNf
SU5MSU5FIHZvaWQgSlNJbnRlcmZhY2VKSVQ6OmVtaXRQdXRUb0NhbGxGcmFtZUhlYWRlcihSZWdp
c3RlcklEIGZyb20sIEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlckVudHJ5IGVudHJ5KQorICAgIEFM
V0FZU19JTkxJTkUgdm9pZCBKU0ludGVyZmFjZUpJVDo6ZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVy
KFJlZ2lzdGVySUQgZnJvbSwgaW50IGVudHJ5KQogICAgIHsKICNpZiBVU0UoSlNWQUxVRTMyXzY0
KQogICAgICAgICBzdG9yZVB0cihmcm9tLCBwYXlsb2FkRm9yKGVudHJ5LCBjYWxsRnJhbWVSZWdp
c3RlcikpOwpAQCAtMjM1LDEyICsyMzUsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAjZW5kaWYKICAg
ICB9CiAKLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgSlNJbnRlcmZhY2VKSVQ6OmVtaXRQdXRUb0Nh
bGxGcmFtZUhlYWRlcih2b2lkKiB2YWx1ZSwgSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyRW50cnkg
ZW50cnkpCisgICAgQUxXQVlTX0lOTElORSB2b2lkIEpTSW50ZXJmYWNlSklUOjplbWl0UHV0VG9D
YWxsRnJhbWVIZWFkZXIodm9pZCogdmFsdWUsIGludCBlbnRyeSkKICAgICB7CiAgICAgICAgIHN0
b3JlUHRyKFRydXN0ZWRJbW1QdHIodmFsdWUpLCBBZGRyZXNzKGNhbGxGcmFtZVJlZ2lzdGVyLCBl
bnRyeSAqIHNpemVvZihSZWdpc3RlcikpKTsKICAgICB9CiAKLSAgICBBTFdBWVNfSU5MSU5FIHZv
aWQgSlNJbnRlcmZhY2VKSVQ6OmVtaXRQdXRDZWxsVG9DYWxsRnJhbWVIZWFkZXIoUmVnaXN0ZXJJ
RCBmcm9tLCBKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJFbnRyeSBlbnRyeSkKKyAgICBBTFdBWVNf
SU5MSU5FIHZvaWQgSlNJbnRlcmZhY2VKSVQ6OmVtaXRQdXRDZWxsVG9DYWxsRnJhbWVIZWFkZXIo
UmVnaXN0ZXJJRCBmcm9tLCBpbnQgZW50cnkpCiAgICAgewogI2lmIFVTRShKU1ZBTFVFMzJfNjQp
CiAgICAgICAgIHN0b3JlMzIoVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpLCB0YWdGb3Io
ZW50cnksIGNhbGxGcmFtZVJlZ2lzdGVyKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L1NldHVwVmFyYXJnc0ZyYW1lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L1NldHVwVmFyYXJnc0ZyYW1lLmNwcAkocmV2aXNpb24gMjAyOTk0KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9TZXR1cFZhcmFyZ3NGcmFtZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQ3LDcgKzQ3LDcgQEAgdm9pZCBlbWl0U2V0VmFyYXJnc0ZyYW1lKENDYWxsSGVscGVy
cyYgagogICAgIGppdC5hbmRQdHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIofihzdGFja0Fs
aWdubWVudFJlZ2lzdGVycygpIC0gMSkpLCByZXN1bHRHUFIpOwogCiAgICAgaml0LmFkZFB0cihs
ZW5ndGhHUFIsIHJlc3VsdEdQUik7Ci0gICAgaml0LmFkZFB0cihDQ2FsbEhlbHBlcnM6OlRydXN0
ZWRJbW0zMihKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJTaXplICsgKGxlbmd0aEluY2x1ZGVzVGhp
cz8gMCA6IDEpKSwgcmVzdWx0R1BSKTsKKyAgICBqaXQuYWRkUHRyKENDYWxsSGVscGVyczo6VHJ1
c3RlZEltbTMyKENhbGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJzICsgKGxlbmd0aEluY2x1
ZGVzVGhpcz8gMCA6IDEpKSwgcmVzdWx0R1BSKTsKICAgICAKICAgICAvLyByZXN1bHRHUFIgbm93
IGhhcyB0aGUgcmVxdWlyZWQgZnJhbWUgc2l6ZSBpbiBSZWdpc3RlciB1bml0cwogICAgIC8vIFJv
dW5kIHJlc3VsdEdQUiB0byBuZXh0IG11bHRpcGxlIG9mIHN0YWNrQWxpZ25tZW50UmVnaXN0ZXJz
KCkKQEAgLTg1LDcgKzg1LDcgQEAgdm9pZCBlbWl0U2V0dXBWYXJhcmdzRnJhbWVGYXN0Q2FzZShD
Q2FsbAogICAgIHNsb3dDYXNlLmFwcGVuZChqaXQuYnJhbmNoUHRyKENDYWxsSGVscGVyczo6QWJv
dmUsIENDYWxsSGVscGVyczo6QWJzb2x1dGVBZGRyZXNzKGppdC52bSgpLT5vc1N0YWNrTGltaXRX
aXRoUmVzZXJ2ZSgpKSwgc2NyYXRjaEdQUjIpKTsKIAogICAgIC8vIEluaXRpYWxpemUgQXJndW1l
bnRDb3VudC4KLSAgICBqaXQuc3RvcmUzMihzY3JhdGNoR1BSMSwgQ0NhbGxIZWxwZXJzOjpBZGRy
ZXNzKHNjcmF0Y2hHUFIyLCBKU1N0YWNrOjpBcmd1bWVudENvdW50ICogc3RhdGljX2Nhc3Q8aW50
PihzaXplb2YoUmVnaXN0ZXIpKSArIFBheWxvYWRPZmZzZXQpKTsKKyAgICBqaXQuc3RvcmUzMihz
Y3JhdGNoR1BSMSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHNjcmF0Y2hHUFIyLCBDYWxsRnJhbWVT
bG90Ojphcmd1bWVudENvdW50ICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSAr
IFBheWxvYWRPZmZzZXQpKTsKIAogICAgIC8vIENvcHkgYXJndW1lbnRzLgogICAgIGppdC5zaWdu
RXh0ZW5kMzJUb1B0cihzY3JhdGNoR1BSMSwgc2NyYXRjaEdQUjEpOwpAQCAtMTMxLDcgKzEzMSw3
IEBAIHZvaWQgZW1pdFNldHVwVmFyYXJnc0ZyYW1lRmFzdENhc2UoQ0NhbGwKICAgICAgICAgICAg
IGZpcnN0QXJndW1lbnRSZWcgPSBWaXJ0dWFsUmVnaXN0ZXIoMCk7CiAgICAgfSBlbHNlIHsKICAg
ICAgICAgYXJndW1lbnRDb3VudFJlY292ZXJ5ID0gVmFsdWVSZWNvdmVyeTo6ZGlzcGxhY2VkSW5K
U1N0YWNrKAotICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyKEpTU3RhY2s6OkFyZ3VtZW50Q291
bnQpLCBEYXRhRm9ybWF0SW50MzIpOworICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyKENhbGxG
cmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpLCBEYXRhRm9ybWF0SW50MzIpOwogICAgICAgICBmaXJz
dEFyZ3VtZW50UmVnID0gVmlydHVhbFJlZ2lzdGVyKENhbGxGcmFtZTo6YXJndW1lbnRPZmZzZXQo
MCkpOwogICAgIH0KICAgICBlbWl0U2V0dXBWYXJhcmdzRnJhbWVGYXN0Q2FzZShqaXQsIG51bVVz
ZWRTbG90c0dQUiwgc2NyYXRjaEdQUjEsIHNjcmF0Y2hHUFIyLCBzY3JhdGNoR1BSMywgYXJndW1l
bnRDb3VudFJlY292ZXJ5LCBmaXJzdEFyZ3VtZW50UmVnLCBmaXJzdFZhckFyZ09mZnNldCwgc2xv
d0Nhc2UpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9TcGVjaWFsaXplZFRodW5r
SklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9TcGVjaWFsaXpl
ZFRodW5rSklULmgJKHJldmlzaW9uIDIwMjk5NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvU3BlY2lhbGl6ZWRUaHVua0pJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Niw3ICs0Niw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoKTsKICAg
ICAgICAgICAgIGVtaXRTYXZlVGhlbk1hdGVyaWFsaXplVGFnUmVnaXN0ZXJzKCk7CiAgICAgICAg
ICAgICAvLyBDaGVjayB0aGF0IHdlIGhhdmUgdGhlIGV4cGVjdGVkIG51bWJlciBvZiBhcmd1bWVu
dHMKLSAgICAgICAgICAgIG1fZmFpbHVyZXMuYXBwZW5kKGJyYW5jaDMyKE5vdEVxdWFsLCBwYXls
b2FkRm9yKEpTU3RhY2s6OkFyZ3VtZW50Q291bnQpLCBUcnVzdGVkSW1tMzIoZXhwZWN0ZWRBcmdD
b3VudCArIDEpKSk7CisgICAgICAgICAgICBtX2ZhaWx1cmVzLmFwcGVuZChicmFuY2gzMihOb3RF
cXVhbCwgcGF5bG9hZEZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSwgVHJ1c3RlZElt
bTMyKGV4cGVjdGVkQXJnQ291bnQgKyAxKSkpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAg
ICBleHBsaWNpdCBTcGVjaWFsaXplZFRodW5rSklUKFZNKiB2bSkKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAJKHJldmlzaW9uIDIwMjk5NCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjU5LDcgKzI1OSw3IEBAIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWYg
bmF0aXZlRm9yR2UKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgaml0LmVtaXRQdXRUb0Nh
bGxGcmFtZUhlYWRlcigwLCBKU1N0YWNrOjpDb2RlQmxvY2spOworICAgIGppdC5lbWl0UHV0VG9D
YWxsRnJhbWVIZWFkZXIoMCwgQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKTsKICAgICBqaXQuc3Rv
cmVQdHIoSlNJbnRlcmZhY2VKSVQ6OmNhbGxGcmFtZVJlZ2lzdGVyLCAmdm0tPnRvcENhbGxGcmFt
ZSk7CiAKICNpZiBDUFUoWDg2KQpAQCAtMjcwLDcgKzI3MCw3IEBAIHN0YXRpYyBNYWNyb0Fzc2Vt
YmxlckNvZGVSZWYgbmF0aXZlRm9yR2UKICAgICBqaXQuc3ViUHRyKEpTSW50ZXJmYWNlSklUOjpU
cnVzdGVkSW1tMzIoOCksIEpTSW50ZXJmYWNlSklUOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7IC8v
IEFsaWduIHN0YWNrIGFmdGVyIHByb2xvZ3VlLgogCiAgICAgLy8gY2FsbCB0aGUgZnVuY3Rpb24K
LSAgICBqaXQuZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXJQdHIoSlNTdGFjazo6Q2FsbGVlLCBK
U0ludGVyZmFjZUpJVDo6cmVnVDEpOworICAgIGppdC5lbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRl
clB0cihDYWxsRnJhbWVTbG90OjpjYWxsZWUsIEpTSW50ZXJmYWNlSklUOjpyZWdUMSk7CiAgICAg
aml0LmxvYWRQdHIoSlNJbnRlcmZhY2VKSVQ6OkFkZHJlc3MoSlNJbnRlcmZhY2VKSVQ6OnJlZ1Qx
LCBKU0Z1bmN0aW9uOjpvZmZzZXRPZkV4ZWN1dGFibGUoKSksIEpTSW50ZXJmYWNlSklUOjpyZWdU
MSk7CiAgICAgaml0LmNhbGwoSlNJbnRlcmZhY2VKSVQ6OkFkZHJlc3MoSlNJbnRlcmZhY2VKSVQ6
OnJlZ1QxLCBleGVjdXRhYmxlT2Zmc2V0VG9GdW5jdGlvbikpOwogCkBAIC0yODIsNyArMjgyLDcg
QEAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBuYXRpdmVGb3JHZQogICAgIC8vIEhvc3Qg
ZnVuY3Rpb24gc2lnbmF0dXJlOiBmKEV4ZWNTdGF0ZSopOwogICAgIGppdC5tb3ZlKEpTSW50ZXJm
YWNlSklUOjpjYWxsRnJhbWVSZWdpc3RlciwgWDg2UmVnaXN0ZXJzOjplZGkpOwogCi0gICAgaml0
LmVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyUHRyKEpTU3RhY2s6OkNhbGxlZSwgWDg2UmVnaXN0
ZXJzOjplc2kpOworICAgIGppdC5lbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlclB0cihDYWxsRnJh
bWVTbG90OjpjYWxsZWUsIFg4NlJlZ2lzdGVyczo6ZXNpKTsKICAgICBqaXQubG9hZFB0cihKU0lu
dGVyZmFjZUpJVDo6QWRkcmVzcyhYODZSZWdpc3RlcnM6OmVzaSwgSlNGdW5jdGlvbjo6b2Zmc2V0
T2ZFeGVjdXRhYmxlKCkpLCBYODZSZWdpc3RlcnM6OnI5KTsKICAgICBqaXQuY2FsbChKU0ludGVy
ZmFjZUpJVDo6QWRkcmVzcyhYODZSZWdpc3RlcnM6OnI5LCBleGVjdXRhYmxlT2Zmc2V0VG9GdW5j
dGlvbikpOwogCkBAIC0yOTUsNyArMjk1LDcgQEAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZiBuYXRpdmVGb3JHZQogICAgIC8vIEF0IHRoaXMgcG9pbnQgdGhlIHN0YWNrIGlzIGFsaWduZWQg
dG8gMTYgYnl0ZXMsIGJ1dCBpZiB0aGlzIGNoYW5nZXMgYXQgc29tZSBwb2ludCwgd2UgbmVlZCB0
byBlbWl0IGNvZGUgdG8gYWxpZ24gaXQuCiAgICAgaml0LnN1YlB0cihKU0ludGVyZmFjZUpJVDo6
VHJ1c3RlZEltbTMyKDQgKiBzaXplb2YoaW50NjRfdCkpLCBKU0ludGVyZmFjZUpJVDo6c3RhY2tQ
b2ludGVyUmVnaXN0ZXIpOwogCi0gICAgaml0LmVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyUHRy
KEpTU3RhY2s6OkNhbGxlZSwgWDg2UmVnaXN0ZXJzOjplZHgpOworICAgIGppdC5lbWl0R2V0RnJv
bUNhbGxGcmFtZUhlYWRlclB0cihDYWxsRnJhbWVTbG90OjpjYWxsZWUsIFg4NlJlZ2lzdGVyczo6
ZWR4KTsKICAgICBqaXQubG9hZFB0cihKU0ludGVyZmFjZUpJVDo6QWRkcmVzcyhYODZSZWdpc3Rl
cnM6OmVkeCwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZFeGVjdXRhYmxlKCkpLCBYODZSZWdpc3RlcnM6
OnI5KTsKICAgICBqaXQuY2FsbChKU0ludGVyZmFjZUpJVDo6QWRkcmVzcyhYODZSZWdpc3RlcnM6
OnI5LCBleGVjdXRhYmxlT2Zmc2V0VG9GdW5jdGlvbikpOwogCkBAIC0zMTAsNyArMzEwLDcgQEAg
c3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBuYXRpdmVGb3JHZQogICAgIC8vIEhvc3QgZnVu
Y3Rpb24gc2lnbmF0dXJlOiBmKEV4ZWNTdGF0ZSopOwogICAgIGppdC5tb3ZlKEpTSW50ZXJmYWNl
SklUOjpjYWxsRnJhbWVSZWdpc3RlciwgQVJNNjRSZWdpc3RlcnM6OngwKTsKIAotICAgIGppdC5l
bWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlclB0cihKU1N0YWNrOjpDYWxsZWUsIEFSTTY0UmVnaXN0
ZXJzOjp4MSk7CisgICAgaml0LmVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyUHRyKENhbGxGcmFt
ZVNsb3Q6OmNhbGxlZSwgQVJNNjRSZWdpc3RlcnM6OngxKTsKICAgICBqaXQubG9hZFB0cihKU0lu
dGVyZmFjZUpJVDo6QWRkcmVzcyhBUk02NFJlZ2lzdGVyczo6eDEsIEpTRnVuY3Rpb246Om9mZnNl
dE9mRXhlY3V0YWJsZSgpKSwgQVJNNjRSZWdpc3RlcnM6OngyKTsKICAgICBqaXQuY2FsbChKU0lu
dGVyZmFjZUpJVDo6QWRkcmVzcyhBUk02NFJlZ2lzdGVyczo6eDIsIGV4ZWN1dGFibGVPZmZzZXRU
b0Z1bmN0aW9uKSk7CiAjZWxpZiBDUFUoQVJNKSB8fCBDUFUoU0g0KSB8fCBDUFUoTUlQUykKQEAg
LTMyMyw3ICszMjMsNyBAQCBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIG5hdGl2ZUZvckdl
CiAgICAgLy8gSG9zdCBmdW5jdGlvbiBzaWduYXR1cmUgaXMgZihFeGVjU3RhdGUqKS4KICAgICBq
aXQubW92ZShKU0ludGVyZmFjZUpJVDo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEpTSW50ZXJmYWNlSklU
Ojphcmd1bWVudEdQUjApOwogCi0gICAgaml0LmVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyUHRy
KEpTU3RhY2s6OkNhbGxlZSwgSlNJbnRlcmZhY2VKSVQ6OmFyZ3VtZW50R1BSMSk7CisgICAgaml0
LmVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyUHRyKENhbGxGcmFtZVNsb3Q6OmNhbGxlZSwgSlNJ
bnRlcmZhY2VKSVQ6OmFyZ3VtZW50R1BSMSk7CiAgICAgaml0LmxvYWRQdHIoSlNJbnRlcmZhY2VK
SVQ6OkFkZHJlc3MoSlNJbnRlcmZhY2VKSVQ6OmFyZ3VtZW50R1BSMSwgSlNGdW5jdGlvbjo6b2Zm
c2V0T2ZFeGVjdXRhYmxlKCkpLCBKU0ludGVyZmFjZUpJVDo6cmVnVDIpOwogICAgIGppdC5jYWxs
KEpTSW50ZXJmYWNlSklUOjpBZGRyZXNzKEpTSW50ZXJmYWNlSklUOjpyZWdUMiwgZXhlY3V0YWJs
ZU9mZnNldFRvRnVuY3Rpb24pKTsKIApAQCAtNDE5LDggKzQxOSw4IEBAIE1hY3JvQXNzZW1ibGVy
Q29kZVJlZiBhcml0eUZpeHVwR2VuZXJhdG8KICAgICBqaXQucG9wKEpTSW50ZXJmYWNlSklUOjpy
ZWdUNCk7CiAjICBlbmRpZgogICAgIGppdC5tb3ZlKEpTSW50ZXJmYWNlSklUOjpjYWxsRnJhbWVS
ZWdpc3RlciwgSlNJbnRlcmZhY2VKSVQ6OnJlZ1QzKTsKLSAgICBqaXQubG9hZDMyKEpTSW50ZXJm
YWNlSklUOjpBZGRyZXNzKEpTSW50ZXJmYWNlSklUOjpjYWxsRnJhbWVSZWdpc3RlciwgSlNTdGFj
azo6QXJndW1lbnRDb3VudCAqIHNpemVvZihSZWdpc3RlcikpLCBKU0ludGVyZmFjZUpJVDo6YXJn
dW1lbnRHUFIyKTsKLSAgICBqaXQuYWRkMzIoSlNJbnRlcmZhY2VKSVQ6OlRydXN0ZWRJbW0zMihK
U1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJTaXplKSwgSlNJbnRlcmZhY2VKSVQ6OmFyZ3VtZW50R1BS
Mik7CisgICAgaml0LmxvYWQzMihKU0ludGVyZmFjZUpJVDo6QWRkcmVzcyhKU0ludGVyZmFjZUpJ
VDo6Y2FsbEZyYW1lUmVnaXN0ZXIsIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQgKiBzaXpl
b2YoUmVnaXN0ZXIpKSwgSlNJbnRlcmZhY2VKSVQ6OmFyZ3VtZW50R1BSMik7CisgICAgaml0LmFk
ZDMyKEpTSW50ZXJmYWNlSklUOjpUcnVzdGVkSW1tMzIoQ2FsbEZyYW1lOjpoZWFkZXJTaXplSW5S
ZWdpc3RlcnMpLCBKU0ludGVyZmFjZUpJVDo6YXJndW1lbnRHUFIyKTsKIAogICAgIC8vIENoZWNr
IHRvIHNlZSBpZiB3ZSBoYXZlIGV4dHJhIHNsb3RzIHdlIGNhbiB1c2UKICAgICBqaXQubW92ZShK
U0ludGVyZmFjZUpJVDo6YXJndW1lbnRHUFIwLCBKU0ludGVyZmFjZUpJVDo6YXJndW1lbnRHUFIx
KTsKQEAgLTQ2OSw4ICs0NjksOCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgYXJpdHlGaXh1cEdl
bmVyYXRvCiAgICAgaml0LnBvcChKU0ludGVyZmFjZUpJVDo6cmVnVDQpOwogIyAgZW5kaWYKICAg
ICBqaXQubW92ZShKU0ludGVyZmFjZUpJVDo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEpTSW50ZXJmYWNl
SklUOjpyZWdUMyk7Ci0gICAgaml0LmxvYWQzMihKU0ludGVyZmFjZUpJVDo6QWRkcmVzcyhKU0lu
dGVyZmFjZUpJVDo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEpTU3RhY2s6OkFyZ3VtZW50Q291bnQgKiBz
aXplb2YoUmVnaXN0ZXIpKSwgSlNJbnRlcmZhY2VKSVQ6OmFyZ3VtZW50R1BSMik7Ci0gICAgaml0
LmFkZDMyKEpTSW50ZXJmYWNlSklUOjpUcnVzdGVkSW1tMzIoSlNTdGFjazo6Q2FsbEZyYW1lSGVh
ZGVyU2l6ZSksIEpTSW50ZXJmYWNlSklUOjphcmd1bWVudEdQUjIpOworICAgIGppdC5sb2FkMzIo
SlNJbnRlcmZhY2VKSVQ6OkFkZHJlc3MoSlNJbnRlcmZhY2VKSVQ6OmNhbGxGcmFtZVJlZ2lzdGVy
LCBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50ICogc2l6ZW9mKFJlZ2lzdGVyKSksIEpTSW50
ZXJmYWNlSklUOjphcmd1bWVudEdQUjIpOworICAgIGppdC5hZGQzMihKU0ludGVyZmFjZUpJVDo6
VHJ1c3RlZEltbTMyKENhbGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJzKSwgSlNJbnRlcmZh
Y2VKSVQ6OmFyZ3VtZW50R1BSMik7CiAKICAgICAvLyBDaGVjayB0byBzZWUgaWYgd2UgaGF2ZSBl
eHRyYSBzbG90cyB3ZSBjYW4gdXNlCiAgICAgaml0Lm1vdmUoSlNJbnRlcmZhY2VKSVQ6OmFyZ3Vt
ZW50R1BSMCwgSlNJbnRlcmZhY2VKSVQ6OmFyZ3VtZW50R1BSMSk7CkBAIC0xMDQzLDggKzEwNDMs
OCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgYm91bmRUaGlzTm9BcmdzRnVuCiAgICAgaml0LmVt
aXRGdW5jdGlvblByb2xvZ3VlKCk7CiAgICAgCiAgICAgLy8gU2V0IHVwIG91ciBjYWxsIGZyYW1l
LgotICAgIGppdC5zdG9yZVB0cihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIobnVsbHB0ciks
IENDYWxsSGVscGVyczo6YWRkcmVzc0ZvcihKU1N0YWNrOjpDb2RlQmxvY2spKTsKLSAgICBqaXQu
c3RvcmUzMihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigwKSwgQ0NhbGxIZWxwZXJzOjp0YWdG
b3IoSlNTdGFjazo6QXJndW1lbnRDb3VudCkpOworICAgIGppdC5zdG9yZVB0cihDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW1QdHIobnVsbHB0ciksIENDYWxsSGVscGVyczo6YWRkcmVzc0ZvcihDYWxs
RnJhbWVTbG90Ojpjb2RlQmxvY2spKTsKKyAgICBqaXQuc3RvcmUzMihDQ2FsbEhlbHBlcnM6OlRy
dXN0ZWRJbW0zMigwKSwgQ0NhbGxIZWxwZXJzOjp0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1l
bnRDb3VudCkpOwogCiAgICAgdW5zaWduZWQgZXh0cmFTdGFja05lZWRlZCA9IDA7CiAgICAgaWYg
KHVuc2lnbmVkIHN0YWNrTWlzYWxpZ25tZW50ID0gc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpICUg
c3RhY2tBbGlnbm1lbnRCeXRlcygpKQpAQCAtMTA2NSw4ICsxMDY1LDggQEAgTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmIGJvdW5kVGhpc05vQXJnc0Z1bgogICAgIC8vCiAgICAgLy8gVGhhdCdzIHJlYWxs
eSBhbGwgdGhlcmUgaXMgdG8gdGhpcy4gV2UgaGF2ZSBhbGwgdGhlIHJlZ2lzdGVycyB3ZSBuZWVk
IHRvIGRvIGl0LgogICAgIAotICAgIGppdC5sb2FkMzIoQ0NhbGxIZWxwZXJzOjpwYXlsb2FkRm9y
KEpTU3RhY2s6OkFyZ3VtZW50Q291bnQpLCBHUFJJbmZvOjpyZWdUMSk7Ci0gICAgaml0LmFkZDMy
KENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlclNpemUg
LSBKU1N0YWNrOjpDYWxsZXJGcmFtZUFuZFBDU2l6ZSksIEdQUkluZm86OnJlZ1QxLCBHUFJJbmZv
OjpyZWdUMik7CisgICAgaml0LmxvYWQzMihDQ2FsbEhlbHBlcnM6OnBheWxvYWRGb3IoQ2FsbEZy
YW1lU2xvdDo6YXJndW1lbnRDb3VudCksIEdQUkluZm86OnJlZ1QxKTsKKyAgICBqaXQuYWRkMzIo
Q0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoQ2FsbEZyYW1lOjpoZWFkZXJTaXplSW5SZWdpc3Rl
cnMgLSBDYWxsZXJGcmFtZUFuZFBDOjpzaXplSW5SZWdpc3RlcnMpLCBHUFJJbmZvOjpyZWdUMSwg
R1BSSW5mbzo6cmVnVDIpOwogICAgIGppdC5sc2hpZnQzMihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJ
bW0zMigzKSwgR1BSSW5mbzo6cmVnVDIpOwogICAgIGppdC5hZGQzMihDQ2FsbEhlbHBlcnM6OlRy
dXN0ZWRJbW0zMihzdGFja0FsaWdubWVudEJ5dGVzKCkgLSAxKSwgR1BSSW5mbzo6cmVnVDIpOwog
ICAgIGppdC5hbmQzMihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigtc3RhY2tBbGlnbm1lbnRC
eXRlcygpKSwgR1BSSW5mbzo6cmVnVDIpOwpAQCAtMTA4MSwxNiArMTA4MSwxNiBAQCBNYWNyb0Fz
c2VtYmxlckNvZGVSZWYgYm91bmRUaGlzTm9BcmdzRnVuCiAKICAgICAvLyBEbyBiYXNpYyBjYWxs
ZWUgZnJhbWUgc2V0dXAsIGluY2x1ZGluZyAndGhpcycuCiAgICAgCi0gICAgaml0LmxvYWRDZWxs
KENDYWxsSGVscGVyczo6YWRkcmVzc0ZvcihKU1N0YWNrOjpDYWxsZWUpLCBHUFJJbmZvOjpyZWdU
Myk7CisgICAgaml0LmxvYWRDZWxsKENDYWxsSGVscGVyczo6YWRkcmVzc0ZvcihDYWxsRnJhbWVT
bG90OjpjYWxsZWUpLCBHUFJJbmZvOjpyZWdUMyk7CiAKLSAgICBqaXQuc3RvcmUzMihHUFJJbmZv
OjpyZWdUMSwgQ0NhbGxIZWxwZXJzOjpjYWxsZWVGcmFtZVBheWxvYWRTbG90KEpTU3RhY2s6OkFy
Z3VtZW50Q291bnQpKTsKKyAgICBqaXQuc3RvcmUzMihHUFJJbmZvOjpyZWdUMSwgQ0NhbGxIZWxw
ZXJzOjpjYWxsZWVGcmFtZVBheWxvYWRTbG90KENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQp
KTsKICAgICAKICAgICBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MgPSBKU1ZhbHVlUmVnczo6d2l0aFR3
b0F2YWlsYWJsZVJlZ3MoR1BSSW5mbzo6cmVnVDAsIEdQUkluZm86OnJlZ1QyKTsKICAgICBqaXQu
bG9hZFZhbHVlKENDYWxsSGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjpyZWdUMywgSlNCb3VuZEZ1
bmN0aW9uOjpvZmZzZXRPZkJvdW5kVGhpcygpKSwgdmFsdWVSZWdzKTsKICAgICBqaXQuc3RvcmVW
YWx1ZSh2YWx1ZVJlZ3MsIENDYWxsSGVscGVyczo6Y2FsbGVlQXJndW1lbnRTbG90KDApKTsKIAog
ICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjpyZWdUMywgSlNC
b3VuZEZ1bmN0aW9uOjpvZmZzZXRPZlRhcmdldEZ1bmN0aW9uKCkpLCBHUFJJbmZvOjpyZWdUMyk7
Ci0gICAgaml0LnN0b3JlQ2VsbChHUFJJbmZvOjpyZWdUMywgQ0NhbGxIZWxwZXJzOjpjYWxsZWVG
cmFtZVNsb3QoSlNTdGFjazo6Q2FsbGVlKSk7CisgICAgaml0LnN0b3JlQ2VsbChHUFJJbmZvOjpy
ZWdUMywgQ0NhbGxIZWxwZXJzOjpjYWxsZWVGcmFtZVNsb3QoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVl
KSk7CiAgICAgCiAgICAgLy8gT0ssIG5vdyB3ZSBjYW4gc3RhcnQgY29weWluZy4gVGhpcyBpcyBh
IHNpbXBsZSBtYXR0ZXIgb2YgY29weWluZyBwYXJhbWV0ZXJzIGZyb20gdGhlIGNhbGxlcidzCiAg
ICAgLy8gZnJhbWUgdG8gdGhlIGNhbGxlZSdzIGZyYW1lLiBOb3RlIHRoYXQgd2Uga25vdyB0aGF0
IHJlZ1QxICh0aGUgYXJndW1lbnQgY291bnQpIG11c3QgYmUgYXQKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwCShyZXZpc2lvbiAyMDI5OTQpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
OTYsMTggKzk2LDE4IEBAIHZvaWQgRGF0YTo6cGVyZm9ybUFzc2VydGlvbnMoVk0mIHZtKQogCiAg
ICAgU1RBVElDX0FTU0VSVChzaXplb2Yodm9pZCopID09IFB0clNpemUpOwogICAgIFNUQVRJQ19B
U1NFUlQoc2l6ZW9mKFJlZ2lzdGVyKSA9PSBTbG90U2l6ZSk7Ci0gICAgU1RBVElDX0FTU0VSVChK
U1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJTaXplID09IENhbGxGcmFtZUhlYWRlclNsb3RzKTsKKyAg
ICBTVEFUSUNfQVNTRVJUKENhbGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJzID09IENhbGxG
cmFtZUhlYWRlclNsb3RzKTsKIAogICAgIEFTU0VSVCghQ2FsbEZyYW1lOjpjYWxsZXJGcmFtZU9m
ZnNldCgpKTsKLSAgICBTVEFUSUNfQVNTRVJUKEpTU3RhY2s6OkNhbGxlckZyYW1lQW5kUENTaXpl
ID09IChQdHJTaXplICogMikgLyBTbG90U2l6ZSk7CisgICAgU1RBVElDX0FTU0VSVChDYWxsZXJG
cmFtZUFuZFBDOjpzaXplSW5SZWdpc3RlcnMgPT0gKFB0clNpemUgKiAyKSAvIFNsb3RTaXplKTsK
ICAgICBBU1NFUlQoQ2FsbEZyYW1lOjpyZXR1cm5QQ09mZnNldCgpID09IENhbGxGcmFtZTo6Y2Fs
bGVyRnJhbWVPZmZzZXQoKSArIFB0clNpemUpOwotICAgIEFTU0VSVChKU1N0YWNrOjpDb2RlQmxv
Y2sgKiBzaXplb2YoUmVnaXN0ZXIpID09IENhbGxGcmFtZTo6cmV0dXJuUENPZmZzZXQoKSArIFB0
clNpemUpOwotICAgIFNUQVRJQ19BU1NFUlQoSlNTdGFjazo6Q2FsbGVlICogc2l6ZW9mKFJlZ2lz
dGVyKSA9PSBKU1N0YWNrOjpDb2RlQmxvY2sgKiBzaXplb2YoUmVnaXN0ZXIpICsgU2xvdFNpemUp
OwotICAgIFNUQVRJQ19BU1NFUlQoSlNTdGFjazo6QXJndW1lbnRDb3VudCAqIHNpemVvZihSZWdp
c3RlcikgPT0gSlNTdGFjazo6Q2FsbGVlICogc2l6ZW9mKFJlZ2lzdGVyKSArIFNsb3RTaXplKTsK
LSAgICBTVEFUSUNfQVNTRVJUKEpTU3RhY2s6OlRoaXNBcmd1bWVudCAqIHNpemVvZihSZWdpc3Rl
cikgPT0gSlNTdGFjazo6QXJndW1lbnRDb3VudCAqIHNpemVvZihSZWdpc3RlcikgKyBTbG90U2l6
ZSk7Ci0gICAgU1RBVElDX0FTU0VSVChKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJTaXplID09IEpT
U3RhY2s6OlRoaXNBcmd1bWVudCk7CisgICAgQVNTRVJUKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9j
ayAqIHNpemVvZihSZWdpc3RlcikgPT0gQ2FsbEZyYW1lOjpyZXR1cm5QQ09mZnNldCgpICsgUHRy
U2l6ZSk7CisgICAgU1RBVElDX0FTU0VSVChDYWxsRnJhbWVTbG90OjpjYWxsZWUgKiBzaXplb2Yo
UmVnaXN0ZXIpID09IENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayAqIHNpemVvZihSZWdpc3Rlcikg
KyBTbG90U2l6ZSk7CisgICAgU1RBVElDX0FTU0VSVChDYWxsRnJhbWVTbG90Ojphcmd1bWVudENv
dW50ICogc2l6ZW9mKFJlZ2lzdGVyKSA9PSBDYWxsRnJhbWVTbG90OjpjYWxsZWUgKiBzaXplb2Yo
UmVnaXN0ZXIpICsgU2xvdFNpemUpOworICAgIFNUQVRJQ19BU1NFUlQoQ2FsbEZyYW1lU2xvdDo6
dGhpc0FyZ3VtZW50ICogc2l6ZW9mKFJlZ2lzdGVyKSA9PSBDYWxsRnJhbWVTbG90Ojphcmd1bWVu
dENvdW50ICogc2l6ZW9mKFJlZ2lzdGVyKSArIFNsb3RTaXplKTsKKyAgICBTVEFUSUNfQVNTRVJU
KENhbGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJzID09IENhbGxGcmFtZVNsb3Q6OnRoaXNB
cmd1bWVudCk7CiAKLSAgICBBU1NFUlQoQ2FsbEZyYW1lOjphcmd1bWVudE9mZnNldEluY2x1ZGlu
Z1RoaXMoMCkgPT0gSlNTdGFjazo6VGhpc0FyZ3VtZW50KTsKKyAgICBBU1NFUlQoQ2FsbEZyYW1l
Ojphcmd1bWVudE9mZnNldEluY2x1ZGluZ1RoaXMoMCkgPT0gQ2FsbEZyYW1lU2xvdDo6dGhpc0Fy
Z3VtZW50KTsKIAogI2lmIENQVShCSUdfRU5ESUFOKQogICAgIEFTU0VSVChPQkpFQ1RfT0ZGU0VU
T0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnRhZykgPT0gMCk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJKHJldmlzaW9u
IDIwMjk5NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMjYsNyArMTMyNiw3IEBAIGlubGluZSBTbG93UGF0aFJl
dHVyblR5cGUgZ2VuZXJpY0NhbGwoRXgKICAgICBFeGVjU3RhdGUqIGV4ZWNDYWxsZWUgPSBleGVj
IC0gcGNbNF0udS5vcGVyYW5kOwogICAgIAogICAgIGV4ZWNDYWxsZWUtPnNldEFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzKHBjWzNdLnUub3BlcmFuZCk7Ci0gICAgZXhlY0NhbGxlZS0+dW5jaGVj
a2VkUihKU1N0YWNrOjpDYWxsZWUpID0gY2FsbGVlQXNWYWx1ZTsKKyAgICBleGVjQ2FsbGVlLT51
bmNoZWNrZWRSKENhbGxGcmFtZVNsb3Q6OmNhbGxlZSkgPSBjYWxsZWVBc1ZhbHVlOwogICAgIGV4
ZWNDYWxsZWUtPnNldENhbGxlckZyYW1lKGV4ZWMpOwogICAgIAogICAgIEFTU0VSVChwY1s1XS51
LmNhbGxMaW5rSW5mbyk7CkBAIC0xNDA1LDcgKzE0MDUsNyBAQCBpbmxpbmUgU2xvd1BhdGhSZXR1
cm5UeXBlIHZhcmFyZ3NTZXR1cChFCiAgICAgICAgIHNldHVwRm9yd2FyZEFyZ3VtZW50c0ZyYW1l
QW5kU2V0VGhpcyhleGVjLCBleGVjQ2FsbGVlLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSwgdm0u
dmFyYXJnc0xlbmd0aCk7CiAKICAgICBleGVjQ2FsbGVlLT5zZXRDYWxsZXJGcmFtZShleGVjKTsK
LSAgICBleGVjQ2FsbGVlLT51bmNoZWNrZWRSKEpTU3RhY2s6OkNhbGxlZSkgPSBjYWxsZWVBc1Zh
bHVlOworICAgIGV4ZWNDYWxsZWUtPnVuY2hlY2tlZFIoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlKSA9
IGNhbGxlZUFzVmFsdWU7CiAgICAgZXhlYy0+c2V0Q3VycmVudFZQQyhwYyk7CiAKICAgICByZXR1
cm4gc2V0VXBDYWxsKGV4ZWNDYWxsZWUsIHBjLCBraW5kLCBjYWxsZWVBc1ZhbHVlKTsKQEAgLTE0
MzYsNyArMTQzNiw3IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9jYWxsX2V2YWwK
ICAgICAKICAgICBleGVjQ2FsbGVlLT5zZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyhwY1sz
XS51Lm9wZXJhbmQpOwogICAgIGV4ZWNDYWxsZWUtPnNldENhbGxlckZyYW1lKGV4ZWMpOwotICAg
IGV4ZWNDYWxsZWUtPnVuY2hlY2tlZFIoSlNTdGFjazo6Q2FsbGVlKSA9IGNhbGxlZUFzVmFsdWU7
CisgICAgZXhlY0NhbGxlZS0+dW5jaGVja2VkUihDYWxsRnJhbWVTbG90OjpjYWxsZWUpID0gY2Fs
bGVlQXNWYWx1ZTsKICAgICBleGVjQ2FsbGVlLT5zZXRSZXR1cm5QQyhMTEludDo6Z2V0Q29kZVB0
cihsbGludF9nZW5lcmljX3JldHVybl9wb2ludCkpOwogICAgIGV4ZWNDYWxsZWUtPnNldENvZGVC
bG9jaygwKTsKICAgICBleGVjLT5zZXRDdXJyZW50VlBDKHBjKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCShyZXZpc2lvbiAyMDI5
OTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAko
d29ya2luZyBjb3B5KQpAQCAtNjAsOSArNjAsOSBAQCBBTFdBWVNfSU5MSU5FIGludCBhcml0eUNo
ZWNrRm9yKEV4ZWNTdGF0CiAgICAgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzID0gZXhl
Yy0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoKTsKICAgICAKICAgICBBU1NFUlQoYXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMgPCBuZXdDb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSk7Ci0g
ICAgaW50IGZyYW1lU2l6ZSA9IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzICsgSlNTdGFjazo6
Q2FsbEZyYW1lSGVhZGVyU2l6ZTsKKyAgICBpbnQgZnJhbWVTaXplID0gYXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMgKyBDYWxsRnJhbWU6OmhlYWRlclNpemVJblJlZ2lzdGVyczsKICAgICBpbnQg
YWxpZ25lZEZyYW1lU2l6ZUZvclBhcmFtZXRlcnMgPSBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Yo
c3RhY2tBbGlnbm1lbnRSZWdpc3RlcnMoKSwKLSAgICAgICAgbmV3Q29kZUJsb2NrLT5udW1QYXJh
bWV0ZXJzKCkgKyBKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJTaXplKTsKKyAgICAgICAgbmV3Q29k
ZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkgKyBDYWxsRnJhbWU6OmhlYWRlclNpemVJblJlZ2lzdGVy
cyk7CiAgICAgaW50IHBhZGRlZFN0YWNrU3BhY2UgPSBhbGlnbmVkRnJhbWVTaXplRm9yUGFyYW1l
dGVycyAtIGZyYW1lU2l6ZTsKIAogICAgIGlmICghc3RhY2stPmVuc3VyZUNhcGFjaXR5Rm9yKGV4
ZWMtPnJlZ2lzdGVycygpIC0gcGFkZGVkU3RhY2tTcGFjZSAlIHN0YWNrQWxpZ25tZW50UmVnaXN0
ZXJzKCkpKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmNwcAkocmV2aXNpb24gMjAyOTk0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMjAsOCArMzIw
LDYgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6aW5pdChWTSYgdm0pCiAKICAgICBCYXNlOjpzZXRT
dHJ1Y3R1cmUodm0sIFN0cnVjdHVyZTo6dG9DYWNoZWFibGVEaWN0aW9uYXJ5VHJhbnNpdGlvbih2
bSwgc3RydWN0dXJlKCkpKTsKIAotICAgIEpTR2xvYmFsT2JqZWN0OjpnbG9iYWxFeGVjKCktPmlu
aXQoMCwgMCwgQ2FsbEZyYW1lOjpub0NhbGxlcigpLCAwLCAwKTsKLQogICAgIG1fZGVidWdnZXIg
PSAwOwogCiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCkBAIC0zMzEsMTUgKzMyOSwxNiBA
QCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojppbml0KFZNJiB2bSkKICAgICBtX2NvbnNvbGVDbGllbnQg
PSBtX2luc3BlY3RvckNvbnRyb2xsZXItPmNvbnNvbGVDbGllbnQoKTsKICNlbmRpZgogCi0gICAg
RXhlY1N0YXRlKiBleGVjID0gSlNHbG9iYWxPYmplY3Q6Omdsb2JhbEV4ZWMoKTsKLQogICAgIG1f
ZnVuY3Rpb25Qcm90b3R5cGUuc2V0KHZtLCB0aGlzLCBGdW5jdGlvblByb3RvdHlwZTo6Y3JlYXRl
KHZtLCBGdW5jdGlvblByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBqc051bGwo
KSkpKTsgLy8gVGhlIHJlYWwgcHJvdG90eXBlIHdpbGwgYmUgc2V0IG9uY2UgT2JqZWN0UHJvdG90
eXBlIGlzIGNyZWF0ZWQuCiAgICAgbV9jYWxsZWVTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBKU0Nh
bGxlZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBqc051bGwoKSkpOwogCiAgICAgbV9nbG9i
YWxMZXhpY2FsRW52aXJvbm1lbnQuc2V0KHZtLCB0aGlzLCBKU0dsb2JhbExleGljYWxFbnZpcm9u
bWVudDo6Y3JlYXRlKHZtLCBKU0dsb2JhbExleGljYWxFbnZpcm9ubWVudDo6Y3JlYXRlU3RydWN0
dXJlKHZtLCB0aGlzKSwgdGhpcykpOwogICAgIC8vIE5lZWQgdG8gY3JlYXRlIHRoZSBjYWxsZWUg
c3RydWN0dXJlIChhYm92ZSkgYmVmb3JlIGNyZWF0aW5nIHRoZSBjYWxsZWUuCi0gICAgbV9nbG9i
YWxDYWxsZWUuc2V0KHZtLCB0aGlzLCBKU0NhbGxlZTo6Y3JlYXRlKHZtLCB0aGlzLCBnbG9iYWxT
Y29wZSgpKSk7Ci0gICAgZXhlYy0+c2V0Q2FsbGVlKG1fZ2xvYmFsQ2FsbGVlLmdldCgpKTsKKyAg
ICBKU0NhbGxlZSogZ2xvYmFsQ2FsbGVlID0gSlNDYWxsZWU6OmNyZWF0ZSh2bSwgdGhpcywgZ2xv
YmFsU2NvcGUoKSk7CisgICAgbV9nbG9iYWxDYWxsZWUuc2V0KHZtLCB0aGlzLCBnbG9iYWxDYWxs
ZWUpOworCisgICAgRXhlY1N0YXRlOjppbml0R2xvYmFsRXhlYyhKU0dsb2JhbE9iamVjdDo6Z2xv
YmFsRXhlYygpLCBnbG9iYWxDYWxsZWUpOworICAgIEV4ZWNTdGF0ZSogZXhlYyA9IEpTR2xvYmFs
T2JqZWN0OjpnbG9iYWxFeGVjKCk7CiAKICAgICBtX2Z1bmN0aW9uU3RydWN0dXJlLnNldCh2bSwg
dGhpcywgSlNGdW5jdGlvbjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJv
dG90eXBlLmdldCgpKSk7CiAgICAgbV9jdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvblN0cnVjdHVy
ZS5pbml0TGF0ZXIoCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmgJKHJldmlzaW9uIDIwMjk5NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTIwOSw3ICsyMDks
NyBAQCBwcml2YXRlOgogcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHVzaW5nIElu
aXRpYWxpemVyID0gdHlwZW5hbWUgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBUPjo6SW5p
dGlhbGl6ZXI7CiAgICAgCi0gICAgUmVnaXN0ZXIgbV9nbG9iYWxDYWxsRnJhbWVbSlNTdGFjazo6
Q2FsbEZyYW1lSGVhZGVyU2l6ZV07CisgICAgUmVnaXN0ZXIgbV9nbG9iYWxDYWxsRnJhbWVbQ2Fs
bEZyYW1lOjpoZWFkZXJTaXplSW5SZWdpc3RlcnNdOwogCiAgICAgV3JpdGVCYXJyaWVyPEpTT2Jq
ZWN0PiBtX2dsb2JhbFRoaXM7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0YWNrQWxpZ25tZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RhY2tBbGlnbm1lbnQuaAkocmV2aXNpb24gMjAyOTk0KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RhY2tBbGlnbm1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDQs
MTQgKzQ0LDE0IEBAIGlubGluZSB1bnNpZ25lZCBzdGFja0FsaWdubWVudFJlZ2lzdGVycygKIC8v
IGFuICJ1bmFsaWduZWQiIGNvdW50IG9mIHJlZ2lzdGVycy4KIGlubGluZSB1bnNpZ25lZCByb3Vu
ZEFyZ3VtZW50Q291bnRUb0FsaWduRnJhbWUodW5zaWduZWQgYXJndW1lbnRDb3VudCkKIHsKLSAg
ICByZXR1cm4gV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mKHN0YWNrQWxpZ25tZW50UmVnaXN0ZXJz
KCksIGFyZ3VtZW50Q291bnQgKyBKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJTaXplKSAtIEpTU3Rh
Y2s6OkNhbGxGcmFtZUhlYWRlclNpemU7CisgICAgcmV0dXJuIFdURjo6cm91bmRVcFRvTXVsdGlw
bGVPZihzdGFja0FsaWdubWVudFJlZ2lzdGVycygpLCBhcmd1bWVudENvdW50ICsgQ2FsbEZyYW1l
OjpoZWFkZXJTaXplSW5SZWdpc3RlcnMpIC0gQ2FsbEZyYW1lOjpoZWFkZXJTaXplSW5SZWdpc3Rl
cnM7CiB9CiAKIC8vIEFsaWduIGxvY2FsIHJlZ2lzdGVyIGNvdW50IHRvIG1ha2UgdGhlIGxhc3Qg
bG9jYWwgZW5kIG9uIGEgc3RhY2sgYWxpZ25lZCBhZGRyZXNzIGdpdmVuIHRoZQotLy8gQ2FsbEZy
YW1lIGlzIGF0IGFuIGFkZHJlc3MgdGhhdCBpcyBzdGFjayBhbGlnbmVkIG1pbnVzIEpTU3RhY2s6
OkNhbGxlckZyYW1lQW5kUENTaXplCisvLyBDYWxsRnJhbWUgaXMgYXQgYW4gYWRkcmVzcyB0aGF0
IGlzIHN0YWNrIGFsaWduZWQgbWludXMgQ2FsbGVyRnJhbWVBbmRQQzo6c2l6ZUluUmVnaXN0ZXJz
CiBpbmxpbmUgdW5zaWduZWQgcm91bmRMb2NhbFJlZ2lzdGVyQ291bnRGb3JGcmFtZVBvaW50ZXJP
ZmZzZXQodW5zaWduZWQgbG9jYWxSZWdpc3RlckNvdW50KQogewotICAgIHJldHVybiBXVEY6OnJv
dW5kVXBUb011bHRpcGxlT2Yoc3RhY2tBbGlnbm1lbnRSZWdpc3RlcnMoKSwgbG9jYWxSZWdpc3Rl
ckNvdW50ICsgSlNTdGFjazo6Q2FsbGVyRnJhbWVBbmRQQ1NpemUpIC0gSlNTdGFjazo6Q2FsbGVy
RnJhbWVBbmRQQ1NpemU7CisgICAgcmV0dXJuIFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZihzdGFj
a0FsaWdubWVudFJlZ2lzdGVycygpLCBsb2NhbFJlZ2lzdGVyQ291bnQgKyBDYWxsZXJGcmFtZUFu
ZFBDOjpzaXplSW5SZWdpc3RlcnMpIC0gQ2FsbGVyRnJhbWVBbmRQQzo6c2l6ZUluUmVnaXN0ZXJz
OwogfQogCiBpbmxpbmUgdW5zaWduZWQgbG9nU3RhY2tBbGlnbm1lbnRSZWdpc3RlcnMoKQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUZ1bmN0aW9uQ29tcGlsZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNRnVuY3Rpb25Db21waWxl
ci5oCShyZXZpc2lvbiAyMDI5OTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNN
RnVuY3Rpb25Db21waWxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzAsNyArMTMwLDcgQEAgcHVi
bGljOgogICAgICAgICBtX2NvZGVCbG9jay0+c2V0Q2FsbGVlU2F2ZVJlZ2lzdGVycyhSZWdpc3Rl
clNldDo6d2ViQXNzZW1ibHlDYWxsZWVTYXZlUmVnaXN0ZXJzKCkpOwogCiAgICAgICAgIGVtaXRG
dW5jdGlvblByb2xvZ3VlKCk7Ci0gICAgICAgIGVtaXRQdXRUb0NhbGxGcmFtZUhlYWRlcihtX2Nv
ZGVCbG9jaywgSlNTdGFjazo6Q29kZUJsb2NrKTsKKyAgICAgICAgZW1pdFB1dFRvQ2FsbEZyYW1l
SGVhZGVyKG1fY29kZUJsb2NrLCBDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spOwogCiAgICAgICAg
IG1fYmVnaW5MYWJlbCA9IGxhYmVsKCk7CiAKQEAgLTIxNyw3ICsyMTcsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgYXJpdHkgY2hlY2suCiAgICAgICAgIExhYmVsIGFy
aXR5Q2hlY2sgPSBsYWJlbCgpOwogICAgICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZSgpOwotICAg
ICAgICBlbWl0UHV0VG9DYWxsRnJhbWVIZWFkZXIobV9jb2RlQmxvY2ssIEpTU3RhY2s6OkNvZGVC
bG9jayk7CisgICAgICAgIGVtaXRQdXRUb0NhbGxGcmFtZUhlYWRlcihtX2NvZGVCbG9jaywgQ2Fs
bEZyYW1lU2xvdDo6Y29kZUJsb2NrKTsKICAgICAgICAganVtcChtX2JlZ2luTGFiZWwpOwogCiAg
ICAgICAgIGlmICghbV9kaXZpZGVFcnJvckp1bXBMaXN0LmVtcHR5KCkpIHsKQEAgLTEzNDcsNyAr
MTM0Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBib3hBcmd1bWVudHNBbmRBZGp1c3RTdGFja1Bv
aW50ZXIoY29uc3QgVmVjdG9yPFdBU01UeXBlPiYgYXJndW1lbnRzKQogICAgIHsKICAgICAgICAg
c2l6ZV90IGFyZ3VtZW50Q291bnQgPSBhcmd1bWVudHMuc2l6ZSgpOwotICAgICAgICBpbnQgc3Rh
Y2tPZmZzZXQgPSAtbV9jYWxsZWVTYXZlU3BhY2UgLSBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Yo
c3RhY2tBbGlnbm1lbnRSZWdpc3RlcnMoKSwgbV9udW1iZXJPZkxvY2FscyArIG1fdGVtcFN0YWNr
VG9wICsgYXJndW1lbnRDb3VudCArIDEgKyBKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJTaXplKTsK
KyAgICAgICAgaW50IHN0YWNrT2Zmc2V0ID0gLW1fY2FsbGVlU2F2ZVNwYWNlIC0gV1RGOjpyb3Vu
ZFVwVG9NdWx0aXBsZU9mKHN0YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCksIG1fbnVtYmVyT2ZMb2Nh
bHMgKyBtX3RlbXBTdGFja1RvcCArIGFyZ3VtZW50Q291bnQgKyAxICsgQ2FsbEZyYW1lOjpoZWFk
ZXJTaXplSW5SZWdpc3RlcnMpOwogCiAgICAgICAgIHN0b3JlVHJ1c3RlZFZhbHVlKGpzVW5kZWZp
bmVkKCksIEFkZHJlc3MoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIChzdGFja09mZnNldCAr
IENhbGxGcmFtZTo6dGhpc0FyZ3VtZW50T2Zmc2V0KCkpICogc2l6ZW9mKFJlZ2lzdGVyKSkpOwog
CkBAIC0xMzg0LDE3ICsxMzg0LDE3IEBAIHByaXZhdGU6CiAgICAgICAgIG1fdGVtcFN0YWNrVG9w
IC09IGFyZ3VtZW50Q291bnQ7CiAKICAgICAgICAgYWRkUHRyKFRydXN0ZWRJbW0zMihzdGFja09m
ZnNldCAqIHNpemVvZihSZWdpc3RlcikgKyBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykpLCBHUFJJ
bmZvOjpjYWxsRnJhbWVSZWdpc3Rlciwgc3RhY2tQb2ludGVyUmVnaXN0ZXIpOwotICAgICAgICBz
dG9yZTMyKFRydXN0ZWRJbW0zMihhcmd1bWVudENvdW50ICsgMSksIEFkZHJlc3Moc3RhY2tQb2lu
dGVyUmVnaXN0ZXIsIEpTU3RhY2s6OkFyZ3VtZW50Q291bnQgKiBzdGF0aWNfY2FzdDxpbnQ+KHNp
emVvZihSZWdpc3RlcikpICsgUGF5bG9hZE9mZnNldCAtIHNpemVvZihDYWxsZXJGcmFtZUFuZFBD
KSkpOworICAgICAgICBzdG9yZTMyKFRydXN0ZWRJbW0zMihhcmd1bWVudENvdW50ICsgMSksIEFk
ZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0ZXIsIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQg
KiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpICsgUGF5bG9hZE9mZnNldCAtIHNp
emVvZihDYWxsZXJGcmFtZUFuZFBDKSkpOwogICAgIH0KIAogICAgIHZvaWQgY2FsbEFuZFVuYm94
UmVzdWx0KFdBU01FeHByZXNzaW9uVHlwZSByZXR1cm5UeXBlKQogICAgIHsKICAgICAgICAgLy8g
cmVnVDAgaG9sZHMgY2FsbGVlLgogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgIHN0b3JlNjQo
R1BSSW5mbzo6cmVnVDAsIEFkZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0ZXIsIEpTU3RhY2s6OkNh
bGxlZSAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkgLSBzaXplb2YoQ2FsbGVy
RnJhbWVBbmRQQykpKTsKKyAgICAgICAgc3RvcmU2NChHUFJJbmZvOjpyZWdUMCwgQWRkcmVzcyhz
dGFja1BvaW50ZXJSZWdpc3RlciwgQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlICogc3RhdGljX2Nhc3Q8
aW50PihzaXplb2YoUmVnaXN0ZXIpKSAtIHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSkpOwogI2Vs
c2UKLSAgICAgICAgc3RvcmUzMihHUFJJbmZvOjpyZWdUMCwgQWRkcmVzcyhzdGFja1BvaW50ZXJS
ZWdpc3RlciwgSlNTdGFjazo6Q2FsbGVlICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0
ZXIpKSArIFBheWxvYWRPZmZzZXQgLSBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykpKTsKLSAgICAg
ICAgc3RvcmUzMihUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZyksIEFkZHJlc3Moc3RhY2tQ
b2ludGVyUmVnaXN0ZXIsIEpTU3RhY2s6OkNhbGxlZSAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9m
KFJlZ2lzdGVyKSkgKyBUYWdPZmZzZXQgLSBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykpKTsKKyAg
ICAgICAgc3RvcmUzMihHUFJJbmZvOjpyZWdUMCwgQWRkcmVzcyhzdGFja1BvaW50ZXJSZWdpc3Rl
ciwgQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0
ZXIpKSArIFBheWxvYWRPZmZzZXQgLSBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykpKTsKKyAgICAg
ICAgc3RvcmUzMihUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZyksIEFkZHJlc3Moc3RhY2tQ
b2ludGVyUmVnaXN0ZXIsIENhbGxGcmFtZVNsb3Q6OmNhbGxlZSAqIHN0YXRpY19jYXN0PGludD4o
c2l6ZW9mKFJlZ2lzdGVyKSkgKyBUYWdPZmZzZXQgLSBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykp
KTsKICNlbmRpZgogCiAgICAgICAgIERhdGFMYWJlbFB0ciBhZGRyZXNzT2ZMaW5rZWRGdW5jdGlv
bkNoZWNrOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUZ1bmN0aW9uU3lu
dGF4Q2hlY2tlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dB
U01GdW5jdGlvblN5bnRheENoZWNrZXIuaAkocmV2aXNpb24gMjAyOTk0KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV0FTTUZ1bmN0aW9uU3ludGF4Q2hlY2tlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yNzAsOSArMjcwLDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZVRlbXBTdGFj
a0hlaWdodEZvckNhbGwoc2l6ZV90IGFyZ3VtZW50Q291bnQpCiAgICAgewogICAgICAgICAvLyBC
b3hlZCBhcmd1bWVudHMgKyB0aGlzIGFyZ3VtZW50ICsgY2FsbCBmcmFtZSBoZWFkZXIgKyBtYXhp
bXVtIHBhZGRpbmcuCi0gICAgICAgIG1fdGVtcFN0YWNrVG9wICs9IGFyZ3VtZW50Q291bnQgKyAx
ICsgSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyU2l6ZSArIDE7CisgICAgICAgIG1fdGVtcFN0YWNr
VG9wICs9IGFyZ3VtZW50Q291bnQgKyAxICsgQ2FsbEZyYW1lOjpoZWFkZXJTaXplSW5SZWdpc3Rl
cnMgKyAxOwogICAgICAgICB1cGRhdGVUZW1wU3RhY2tIZWlnaHQoKTsKLSAgICAgICAgbV90ZW1w
U3RhY2tUb3AgLT0gYXJndW1lbnRDb3VudCArIDEgKyBKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJT
aXplICsgMTsKKyAgICAgICAgbV90ZW1wU3RhY2tUb3AgLT0gYXJndW1lbnRDb3VudCArIDEgKyBD
YWxsRnJhbWU6OmhlYWRlclNpemVJblJlZ2lzdGVycyArIDE7CiAgICAgfQogCiAgICAgdW5zaWdu
ZWQgbV9udW1iZXJPZkxvY2FsczsK
</data>

          </attachment>
      

    </bug>

</bugzilla>