<?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>158232</bug_id>
          
          <creation_ts>2016-05-31 13:39:53 -0700</creation_ts>
          <short_desc>Reduce ResourceResponse copying</short_desc>
          <delta_ts>2016-07-15 08:24:08 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>benjamin</cc>
    
    <cc>berto</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>danw</cc>
    
    <cc>gustavo</cc>
    
    <cc>japhet</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>mrobinson</cc>
    
    <cc>pnormand</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1197914</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-05-31 13:39:53 -0700</bug_when>
    <thetext>Reduce ResourceResponse copying</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1197917</commentid>
    <comment_count>1</comment_count>
      <attachid>280173</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-05-31 13:43:42 -0700</bug_when>
    <thetext>Created attachment 280173
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1197925</commentid>
    <comment_count>2</comment_count>
      <attachid>280173</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-05-31 13:48:03 -0700</bug_when>
    <thetext>Comment on attachment 280173
Patch

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

&gt; Source/WTF/wtf/Optional.h:184
&gt; +    template&lt;class Encoder&gt; void encode(Encoder&amp;) const;

What&apos;s wrong with the version that is already in ArgumentCoders.h?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1197927</commentid>
    <comment_count>3</comment_count>
      <attachid>280173</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-05-31 13:51:04 -0700</bug_when>
    <thetext>Comment on attachment 280173
Patch

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

&gt; Source/WebCore/platform/network/ResourceResponseBase.cpp:184
&gt;      m_certificateInfo = static_cast&lt;const ResourceResponse*&gt;(this)-&gt;platformCertificateInfo();

Presumably we no longer need the const in the cast here.

&gt; Source/WebCore/platform/network/ResourceResponseBase.h:176
&gt; +#define RESOURCE_RESPONSE_BASE_CERT_INFO_OPTIONAL

What&apos;s this?

&gt; Source/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:471
&gt; +    webPage-&gt;send(Messages::WebPageProxy::DidCommitLoadForFrame(m_frame-&gt;frameID(), documentLoader.navigationID(), documentLoader.response().mimeType(), m_frameHasCustomContentProvider, static_cast&lt;uint32_t&gt;(m_frame-&gt;coreFrame()-&gt;loader().loadType()), documentLoader.response().certificateInfo().valueOr(CertificateInfo()), m_frame-&gt;coreFrame()-&gt;document()-&gt;isPluginDocument(), UserData(WebProcess::singleton().transformObjectsToHandles(userData.get()).get())));

Is constructing a CertificateInfo() cheap enough that we want to do it every time?

&gt; Source/WebKit2/WebProcess/WebPage/WebFrame.cpp:409
&gt; +    return documentLoader-&gt;response().certificateInfo().valueOr(CertificateInfo());

Is constructing a CertificateInfo() cheap enough that we want to do it every time?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1197928</commentid>
    <comment_count>4</comment_count>
      <attachid>280173</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-05-31 13:51:32 -0700</bug_when>
    <thetext>Comment on attachment 280173
Patch

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

&gt; Source/WebKit2/UIProcess/Authentication/AuthenticationChallengeProxy.cpp:74
&gt; +    if (credential-&gt;certificateInfo() &amp;&amp; credential-&gt;certificateInfo())

LoL :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1197939</commentid>
    <comment_count>5</comment_count>
      <attachid>280181</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-05-31 14:07:11 -0700</bug_when>
    <thetext>Created attachment 280181
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1197941</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-05-31 14:09:42 -0700</bug_when>
    <thetext>Attachment 280181 did not pass style-queue:


ERROR: Source/WebKit2/WebProcess/WebPage/WebFrame.cpp:409:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 1 in 14 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>1197944</commentid>
    <comment_count>7</comment_count>
      <attachid>280181</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-05-31 14:12:17 -0700</bug_when>
    <thetext>Comment on attachment 280181
Patch

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

&gt; Source/WebCore/platform/network/ResourceResponseBase.h:176
&gt; +#define RESOURCE_RESPONSE_BASE_CERT_INFO_OPTIONAL

This is temporary and to assist a change in another repository.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1197990</commentid>
    <comment_count>8</comment_count>
      <attachid>280181</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-05-31 15:35:34 -0700</bug_when>
    <thetext>Comment on attachment 280181
Patch

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

&gt; Source/WebKit2/NetworkProcess/cache/NetworkCacheCoders.h:30
&gt; +#include &quot;ArgumentCoders.h&quot;

This isn&apos;t needed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1199906</commentid>
    <comment_count>9</comment_count>
      <attachid>280670</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-06-06 22:33:09 -0700</bug_when>
    <thetext>Created attachment 280670
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1199908</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-06-06 22:34:20 -0700</bug_when>
    <thetext>Attachment 280670 did not pass style-queue:


ERROR: Source/WebKit2/WebProcess/WebPage/WebFrame.cpp:409:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 1 in 14 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>1201129</commentid>
    <comment_count>11</comment_count>
      <attachid>280670</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-06-09 20:29:19 -0700</bug_when>
    <thetext>Comment on attachment 280670
Patch

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

&gt; Source/WebCore/ChangeLog:15
&gt; +        (WebCore::ResourceResponseBase::includeCertificateInfo): Made non-const because it modifies the ResourceResponse.

I am not sure what your rationale was for changing this. The person who did the original work intentionally used const and mutable. Could you give the rationale?

&gt; Source/WebCore/loader/SubresourceLoader.cpp:244
&gt;      if (shouldIncludeCertificateInfo())
&gt; -        response.includeCertificateInfo();
&gt; +        const_cast&lt;ResourceResponse&amp;&gt;(response).includeCertificateInfo(); // FIXME: response should not be const.

Why not fix this instead of adding the const_cast?

&gt; Source/WebCore/platform/network/ResourceResponseBase.cpp:194
&gt; +Optional&lt;CertificateInfo&gt; ResourceResponseBase::certificateInfo() const
&gt;  {
&gt;      return m_certificateInfo;
&gt;  }

I suggest we make this an inline in the header.

&gt; Source/WebCore/platform/network/ResourceResponseBase.h:117
&gt; +    WEBCORE_EXPORT Optional&lt;CertificateInfo&gt; certificateInfo() const;

For better efficiency, I suggest the return type const Optional&lt;CertificateInfo&gt;&amp;. Otherwise, calling this will copy the certificate info. And so it will be much less efficient than calling containsCertificateInfo() was.

&gt; Source/WebCore/platform/network/ResourceResponseBase.h:192
&gt; +#define RESOURCE_RESPONSE_BASE_CERT_INFO_OPTIONAL

What is this for?

&gt; Source/WebKit2/NetworkProcess/NetworkLoad.cpp:293
&gt; +    // FIXME: receivedResponse should not be const.
&gt; +    if (sharedDidReceiveResponse(const_cast&lt;ResourceResponse&amp;&gt;(receivedResponse)) == NetworkLoadClient::ShouldContinueDidReceiveResponse::Yes)
&gt;          m_handle-&gt;continueDidReceiveResponse();

Why a FIXME instead of fixing it?

&gt; Source/WebKit2/NetworkProcess/cache/NetworkCacheCoders.h:84
&gt; +template&lt;typename T&gt; struct Coder&lt;WTF::Optional&lt;T&gt;&gt; {
&gt; +    static void encode(Encoder&amp; encoder, const WTF::Optional&lt;T&gt;&amp; optional)

Can’t this just be Optional, rather than WTF::Optional?

&gt; Source/WebKit2/NetworkProcess/cache/NetworkCacheCoders.h:95
&gt; +    static bool decode(Decoder&amp; decoder, WTF::Optional&lt;T&gt;&amp; optional)

Can’t this just be Optional, rather than WTF::Optional?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1201287</commentid>
    <comment_count>12</comment_count>
      <attachid>280670</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-06-10 11:24:54 -0700</bug_when>
    <thetext>Comment on attachment 280670
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:15
&gt;&gt; +        (WebCore::ResourceResponseBase::includeCertificateInfo): Made non-const because it modifies the ResourceResponse.
&gt; 
&gt; I am not sure what your rationale was for changing this. The person who did the original work intentionally used const and mutable. Could you give the rationale?

You&apos;re right.  This is not a good change.  It just copies things from the platform data to the ResourceResponseBase, which doesn&apos;t actually change the ResourceResponse conceptually.

&gt;&gt; Source/WebCore/platform/network/ResourceResponseBase.h:192
&gt;&gt; +#define RESOURCE_RESPONSE_BASE_CERT_INFO_OPTIONAL
&gt; 
&gt; What is this for?

This is so we don&apos;t break the internal build when I land this, because certificateInfo() is called from WebKitAdditions.  It&apos;s temporary and will be removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1201330</commentid>
    <comment_count>13</comment_count>
      <attachid>281031</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-06-10 12:27:08 -0700</bug_when>
    <thetext>Created attachment 281031
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1201331</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-06-10 12:28:49 -0700</bug_when>
    <thetext>Attachment 281031 did not pass style-queue:


ERROR: Source/WebKit2/WebProcess/WebPage/WebFrame.cpp:409:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 1 in 33 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>1201347</commentid>
    <comment_count>15</comment_count>
      <attachid>281036</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-06-10 13:05:04 -0700</bug_when>
    <thetext>Created attachment 281036
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1201348</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-06-10 13:06:11 -0700</bug_when>
    <thetext>Attachment 281036 did not pass style-queue:


ERROR: Source/WebKit2/WebProcess/WebPage/WebFrame.cpp:409:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 1 in 34 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>1201351</commentid>
    <comment_count>17</comment_count>
      <attachid>281038</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-06-10 13:15:28 -0700</bug_when>
    <thetext>Created attachment 281038
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1201352</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-06-10 13:17:37 -0700</bug_when>
    <thetext>Attachment 281038 did not pass style-queue:


ERROR: Source/WebKit2/WebProcess/WebPage/WebFrame.cpp:409:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 1 in 35 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>1201356</commentid>
    <comment_count>19</comment_count>
      <attachid>281041</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-06-10 13:27:59 -0700</bug_when>
    <thetext>Created attachment 281041
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1201357</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-06-10 13:29:22 -0700</bug_when>
    <thetext>Attachment 281041 did not pass style-queue:


ERROR: Source/WebKit2/WebProcess/WebPage/WebFrame.cpp:409:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 1 in 38 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>1201383</commentid>
    <comment_count>21</comment_count>
      <attachid>281046</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-06-10 14:17:07 -0700</bug_when>
    <thetext>Created attachment 281046
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1201384</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-06-10 14:18:53 -0700</bug_when>
    <thetext>Attachment 281046 did not pass style-queue:


ERROR: Source/WebKit2/WebProcess/WebPage/WebFrame.cpp:409:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 1 in 37 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>1201397</commentid>
    <comment_count>23</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-06-10 15:02:25 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/201943</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1211411</commentid>
    <comment_count>24</comment_count>
      <attachid>281046</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2016-07-15 07:36:41 -0700</bug_when>
    <thetext>Comment on attachment 281046
Patch

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

&gt; Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:1095
&gt;      handleResponseReceived(response);

Shouldn&apos;t this use WTFMove(response) ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1211418</commentid>
    <comment_count>25</comment_count>
      <attachid>281046</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-07-15 08:24:08 -0700</bug_when>
    <thetext>Comment on attachment 281046
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:1095
&gt;&gt;      handleResponseReceived(response);
&gt; 
&gt; Shouldn&apos;t this use WTFMove(response) ?

It could but it would not help unless handleResponseReceived() is also updated to take a ResourceResponse&amp;&amp;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>280173</attachid>
            <date>2016-05-31 13:43:42 -0700</date>
            <delta_ts>2016-05-31 14:07:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158232-20160531134457.patch</filename>
            <type>text/plain</type>
            <size>19624</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyMDE0NTcpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDE2LTA1LTMxICBBbGV4IENocmlzdGVuc2VuICA8
YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVkdWNlIFJlc291cmNlUmVzcG9u
c2UgY29weWluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTU4MjMyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiB3dGYvT3B0aW9uYWwuaDoKKyAgICAgICAgKFdURjo6T3B0aW9uYWw8VD46OmVuY29kZSk6
CisgICAgICAgIChXVEY6Ok9wdGlvbmFsPFQ+OjpkZWNvZGUpOgorICAgICAgICBBZGRlZCB0ZW1w
bGF0ZSBlbmNvZGVycyBhbmQgZGVjb2RlcnMgc28gd2UgY2FuIHNlbmQgT3B0aW9uYWxzIGFjcm9z
cyBJUEMuCisKIDIwMTYtMDUtMjYgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAog
ICAgICAgICBTY29wZWRMYW1iZGEgc2hvdWxkIGhhdmUgYSBsaWZldGltZSBzdG9yeSB0aGF0IG1h
a2VzIHNlbnNlIHRvIHRoZSBjb21waWxlcgpJbmRleDogU291cmNlL1dURi93dGYvT3B0aW9uYWwu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9PcHRpb25hbC5oCShyZXZpc2lvbiAyMDE0
NTcpCisrKyBTb3VyY2UvV1RGL3d0Zi9PcHRpb25hbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xODEs
NiArMTgxLDkgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gY2FsbGJhY2soKTsKICAgICB9CiAK
KyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7
CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIGJvb2wgZGVjb2RlKERlY29kZXIm
LCBPcHRpb25hbDxUPiYpOworCiBwcml2YXRlOgogICAgIGNvbnN0IFQqIGFzUHRyKCkgY29uc3Qg
eyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBUKj4oJm1fdmFsdWUpOyB9CiAgICAgVCog
YXNQdHIoKSB7IHJldHVybiByZWludGVycHJldF9jYXN0PFQqPigmbV92YWx1ZSk7IH0KQEAgLTI2
Myw2ICsyNjYsMzUgQEAgbWFrZU9wdGlvbmFsKFQmJiB2YWx1ZSkKICAgICByZXR1cm4gT3B0aW9u
YWw8dHlwZW5hbWUgc3RkOjpkZWNheTxUPjo6dHlwZT4oc3RkOjpmb3J3YXJkPFQ+KHZhbHVlKSk7
CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+Cit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9p
ZCBPcHRpb25hbDxUPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgaWYg
KCEqdGhpcykgeworICAgICAgICBlbmNvZGVyIDw8IGZhbHNlOworICAgICAgICByZXR1cm47Cisg
ICAgfQorICAgIGVuY29kZXIgPDwgdHJ1ZTsKKyAgICBlbmNvZGVyIDw8IHZhbHVlKCk7Cit9CisK
K3RlbXBsYXRlPHR5cGVuYW1lIFQ+Cit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgorYm9vbCBPcHRp
b25hbDxUPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIE9wdGlvbmFsPFQ+JiBkZXN0aW5hdGlv
bikKK3sKKyAgICBib29sIGhhc1ZhbHVlOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaGFzVmFs
dWUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFoYXNWYWx1ZSkgeworICAgICAg
ICBkZXN0aW5hdGlvbiA9IE51bGxvcHQ7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKGRlc3RpbmF0aW9uLnZhbHVlKCkpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgcmV0dXJuIHRydWU7Cit9CisKKyAgICAKIH0gLy8gbmFtZXNwYWNlIFdU
RgogCiB1c2luZyBXVEY6OkluUGxhY2U7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMDE1MTUp
CisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwy
NSBAQAorMjAxNi0wNS0zMSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQu
b3JnPgorCisgICAgICAgIFJlZHVjZSBSZXNvdXJjZVJlc3BvbnNlIGNvcHlpbmcKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1ODIzMgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gIE5v
IGNoYW5nZSBpbiBiZWhhdmlvci4KKworICAgICAgICAqIGxvYWRlci9TdWJyZXNvdXJjZUxvYWRl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJl
c3BvbnNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjpSZXNvdXJjZVJl
c3BvbnNlQmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6c2V0
VGV4dEVuY29kaW5nTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFz
ZTo6aW5jbHVkZUNlcnRpZmljYXRlSW5mbyk6IE1hZGUgbm9uLWNvbnN0IGJlY2F1c2UgaXQgbW9k
aWZpZXMgdGhlIFJlc291cmNlUmVzcG9uc2UuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlQmFzZTo6Y2VydGlmaWNhdGVJbmZvKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L1Jlc291cmNlUmVzcG9uc2VCYXNlLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlQmFzZTo6ZW5jb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNl
OjpkZWNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6OmNvbnRh
aW5zQ2VydGlmaWNhdGVJbmZvKTogRGVsZXRlZC4KKyAgICAgICAgVXNlIGFuIE9wdGlvbmFsIGZv
ciB0aGUgQ2VydGlmaWNhdGVJbmZvIGluc3RlYWQgb2Yga2VlcGluZyBhIGJvb2wgYW5kIGEgQ2Vy
dGlmaWNhdGVJbmZvLgorCiAyMDE2LTA1LTMxICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVu
c2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQnVpbGQgZml4IGFmdGVyIHIyMDE0ODIuCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAJKHJldmlzaW9u
IDIwMTQ1NykKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI0MSw3ICsyNDEsNyBAQCB2b2lkIFN1YnJlc291cmNlTG9hZGVy
OjpkaWRSZWNlaXZlUmVzcG9uCiAgICAgUmVmPFN1YnJlc291cmNlTG9hZGVyPiBwcm90ZWN0ZWRU
aGlzKCp0aGlzKTsKIAogICAgIGlmIChzaG91bGRJbmNsdWRlQ2VydGlmaWNhdGVJbmZvKCkpCi0g
ICAgICAgIHJlc3BvbnNlLmluY2x1ZGVDZXJ0aWZpY2F0ZUluZm8oKTsKKyAgICAgICAgY29uc3Rf
Y2FzdDxSZXNvdXJjZVJlc3BvbnNlJj4ocmVzcG9uc2UpLmluY2x1ZGVDZXJ0aWZpY2F0ZUluZm8o
KTsgLy8gRklYTUU6IHJlc3BvbnNlIHNob3VsZCBub3QgYmUgY29uc3QuCiAKICAgICBpZiAocmVz
cG9uc2UuaXNIdHRwVmVyc2lvbjBfOSgpKSB7CiAgICAgICAgIGlmIChtX2ZyYW1lKSB7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
UmVzcG9uc2VCYXNlLmNwcAkocmV2aXNpb24gMjAxNDU3KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQ3LDcgKzQ3LDYgQEAgaW5saW5lIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIFJlc291cmNlUgog
UmVzb3VyY2VSZXNwb25zZUJhc2U6OlJlc291cmNlUmVzcG9uc2VCYXNlKCkKICAgICA6IG1faXNO
dWxsKHRydWUpCiAgICAgLCBtX2V4cGVjdGVkQ29udGVudExlbmd0aCgwKQotICAgICwgbV9pbmNs
dWRlc0NlcnRpZmljYXRlSW5mbyhmYWxzZSkKICAgICAsIG1faHR0cFN0YXR1c0NvZGUoMCkKIHsK
IH0KQEAgLTU4LDcgKzU3LDcgQEAgUmVzb3VyY2VSZXNwb25zZUJhc2U6OlJlc291cmNlUmVzcG9u
c2VCYQogICAgICwgbV9taW1lVHlwZShtaW1lVHlwZSkKICAgICAsIG1fZXhwZWN0ZWRDb250ZW50
TGVuZ3RoKGV4cGVjdGVkTGVuZ3RoKQogICAgICwgbV90ZXh0RW5jb2RpbmdOYW1lKHRleHRFbmNv
ZGluZ05hbWUpCi0gICAgLCBtX2luY2x1ZGVzQ2VydGlmaWNhdGVJbmZvKHRydWUpIC8vIEVtcHR5
IGJ1dCB2YWxpZCBmb3Igc3ludGhldGljIHJlc3BvbnNlcy4KKyAgICAsIG1fY2VydGlmaWNhdGVJ
bmZvKENlcnRpZmljYXRlSW5mbygpKSAvLyBFbXB0eSBidXQgdmFsaWQgZm9yIHN5bnRoZXRpYyBy
ZXNwb25zZXMuCiAgICAgLCBtX2h0dHBTdGF0dXNDb2RlKDApCiB7CiB9CkBAIC0xNzgsMTUgKzE3
NywxNCBAQCB2b2lkIFJlc291cmNlUmVzcG9uc2VCYXNlOjpzZXRUZXh0RW5jb2RpCiAgICAgLy8g
RklYTUU6IFNob3VsZCBpbnZhbGlkYXRlIG9yIHVwZGF0ZSBwbGF0Zm9ybSByZXNwb25zZSBpZiBw
cmVzZW50LgogfQogCi12b2lkIFJlc291cmNlUmVzcG9uc2VCYXNlOjppbmNsdWRlQ2VydGlmaWNh
dGVJbmZvKCkgY29uc3QKK3ZvaWQgUmVzb3VyY2VSZXNwb25zZUJhc2U6OmluY2x1ZGVDZXJ0aWZp
Y2F0ZUluZm8oKQogewotICAgIGlmIChtX2luY2x1ZGVzQ2VydGlmaWNhdGVJbmZvKQorICAgIGlm
IChtX2NlcnRpZmljYXRlSW5mbykKICAgICAgICAgcmV0dXJuOwogICAgIG1fY2VydGlmaWNhdGVJ
bmZvID0gc3RhdGljX2Nhc3Q8Y29uc3QgUmVzb3VyY2VSZXNwb25zZSo+KHRoaXMpLT5wbGF0Zm9y
bUNlcnRpZmljYXRlSW5mbygpOwotICAgIG1faW5jbHVkZXNDZXJ0aWZpY2F0ZUluZm8gPSB0cnVl
OwogfQogCi1DZXJ0aWZpY2F0ZUluZm8gUmVzb3VyY2VSZXNwb25zZUJhc2U6OmNlcnRpZmljYXRl
SW5mbygpIGNvbnN0CitPcHRpb25hbDxDZXJ0aWZpY2F0ZUluZm8+IFJlc291cmNlUmVzcG9uc2VC
YXNlOjpjZXJ0aWZpY2F0ZUluZm8oKSBjb25zdAogewogICAgIHJldHVybiBtX2NlcnRpZmljYXRl
SW5mbzsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VS
ZXNwb25zZUJhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmgJKHJldmlzaW9uIDIwMTQ1NykKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaAkod29ya2luZyBj
b3B5KQpAQCAtOTcsOSArOTcsOCBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBp
c0F0dGFjaG1lbnQoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgc3VnZ2VzdGVk
RmlsZW5hbWUoKSBjb25zdDsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaW5jbHVkZUNlcnRp
ZmljYXRlSW5mbygpIGNvbnN0OwotICAgIGJvb2wgY29udGFpbnNDZXJ0aWZpY2F0ZUluZm8oKSBj
b25zdCB7IHJldHVybiBtX2luY2x1ZGVzQ2VydGlmaWNhdGVJbmZvOyB9Ci0gICAgV0VCQ09SRV9F
WFBPUlQgQ2VydGlmaWNhdGVJbmZvIGNlcnRpZmljYXRlSW5mbygpIGNvbnN0OworICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgaW5jbHVkZUNlcnRpZmljYXRlSW5mbygpOworICAgIFdFQkNPUkVfRVhQ
T1JUIE9wdGlvbmFsPENlcnRpZmljYXRlSW5mbz4gY2VydGlmaWNhdGVJbmZvKCkgY29uc3Q7CiAg
ICAgCiAgICAgLy8gVGhlc2UgZnVuY3Rpb25zIHJldHVybiBwYXJzZWQgdmFsdWVzIG9mIHRoZSBj
b3JyZXNwb25kaW5nIHJlc3BvbnNlIGhlYWRlcnMuCiAgICAgLy8gTmFOIG1lYW5zIHRoYXQgdGhl
IGhlYWRlciB3YXMgbm90IHByZXNlbnQgb3IgaGFkIGludmFsaWQgdmFsdWUuCkBAIC0xNzQsOCAr
MTczLDggQEAgcHJvdGVjdGVkOgogICAgIEhUVFBIZWFkZXJNYXAgbV9odHRwSGVhZGVyRmllbGRz
OwogICAgIG11dGFibGUgUmVzb3VyY2VMb2FkVGltaW5nIG1fcmVzb3VyY2VMb2FkVGltaW5nOwog
Ci0gICAgbXV0YWJsZSBib29sIG1faW5jbHVkZXNDZXJ0aWZpY2F0ZUluZm87Ci0gICAgbXV0YWJs
ZSBDZXJ0aWZpY2F0ZUluZm8gbV9jZXJ0aWZpY2F0ZUluZm87CisjZGVmaW5lIFJFU09VUkNFX1JF
U1BPTlNFX0JBU0VfQ0VSVF9JTkZPX09QVElPTkFMCisgICAgT3B0aW9uYWw8Q2VydGlmaWNhdGVJ
bmZvPiBtX2NlcnRpZmljYXRlSW5mbzsKIAogICAgIGludCBtX2h0dHBTdGF0dXNDb2RlOwogCkBA
IC0yMjAsOSArMjE5LDcgQEAgdm9pZCBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6ZW5jb2RlKEVuY29k
ZQogICAgIGVuY29kZXIgPDwgbV9odHRwSGVhZGVyRmllbGRzOwogICAgIGVuY29kZXIgPDwgbV9y
ZXNvdXJjZUxvYWRUaW1pbmc7CiAgICAgZW5jb2RlciA8PCBtX2h0dHBTdGF0dXNDb2RlOwotICAg
IGVuY29kZXIgPDwgbV9pbmNsdWRlc0NlcnRpZmljYXRlSW5mbzsKLSAgICBpZiAobV9pbmNsdWRl
c0NlcnRpZmljYXRlSW5mbykKLSAgICAgICAgZW5jb2RlciA8PCBtX2NlcnRpZmljYXRlSW5mbzsK
KyAgICBlbmNvZGVyIDw8IG1fY2VydGlmaWNhdGVJbmZvOwogICAgIGVuY29kZXIuZW5jb2RlRW51
bShtX3NvdXJjZSk7CiAgICAgZW5jb2Rlci5lbmNvZGVFbnVtKG1fdHlwZSk7CiAgICAgZW5jb2Rl
ciA8PCBtX2lzUmVkaXJlY3RlZDsKQEAgLTI1OCwxMiArMjU1LDggQEAgYm9vbCBSZXNvdXJjZVJl
c3BvbnNlQmFzZTo6ZGVjb2RlKERlY29kZQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShyZXNwb25zZS5tX2h0dHBTdGF0dXNDb2RlKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzcG9uc2UubV9pbmNsdWRlc0Nl
cnRpZmljYXRlSW5mbykpCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXNwb25zZS5tX2NlcnRp
ZmljYXRlSW5mbykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAocmVzcG9uc2UubV9p
bmNsdWRlc0NlcnRpZmljYXRlSW5mbykgewotICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJl
c3BvbnNlLm1fY2VydGlmaWNhdGVJbmZvKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICB9CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZUVudW0ocmVzcG9uc2UubV9zb3VyY2UpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZUVudW0ocmVzcG9uc2Uu
bV90eXBlKSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwMTUyMSkKKysrIFNvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM0IEBACisyMDE2LTA1LTMx
ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAg
UmVkdWNlIFJlc291cmNlUmVzcG9uc2UgY29weWluZworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4MjMyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2su
aDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtMb2FkOjpjb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtMb2FkOjpzaGFyZWREaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAg
ICBEb24ndCBjb3B5IHRoZSB3aG9sZSBSZXNvdXJjZVJlc3BvbnNlIHdoZW4gd2Ugd2FudCB0byBz
ZXQgc29tZSB0aGluZ3MgYW5kIHBhc3MgaXQgYWxvbmcuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtMb2FkOjpkaWRSZWNlaXZlQ2hhbGxlbmdlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xv
YWQ6OmRpZFJlY2VpdmVSZXNwb25zZU5ldHdvcmtTZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVSZXNwb25zZUFzeW5jKToKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrTG9hZC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtS
ZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6cmV0cmlldmVDYWNoZUVudHJ5KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9QaW5nTG9h
ZC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29h
Lm1tOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2s6OmRpZENvbXBsZXRlV2l0aEVy
cm9yKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrOjpkaWRSZWNlaXZlUmVzcG9u
c2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbkNo
YWxsZW5nZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVu
Z2VQcm94eTo6dXNlQ3JlZGVudGlhbCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1l
TG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENvbW1pdExvYWQpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9XZWJGcmFtZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lOjp1cmwp
OgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6Y2VydGlmaWNhdGVJbmZvKToKKyAgICAgICAg
KFdlYktpdDo6V2ViRnJhbWU6OmlubmVyVGV4dCk6CisKIDIwMTYtMDUtMzEgIENocmlzIER1bWV6
ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBCZXR0ZXIgZGVhbCB3aXRoIFdl
YlByb2Nlc3Mgc3VzcGVuc2lvbiBkdWUgdG8gc2NyZWVuIGxvY2tpbmcKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5oCShyZXZpc2lvbiAy
MDE0NTcpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2su
aAkod29ya2luZyBjb3B5KQpAQCAtNzAsNyArNzAsNyBAQCBjbGFzcyBOZXR3b3JrRGF0YVRhc2tD
bGllbnQgewogcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVj
dGlvbihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiwgUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlcikgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBkaWRSZWNlaXZlQ2hhbGxlbmdlKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlJiwgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXIpID0gMDsKLSAgICB2aXJ0dWFs
IHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlTmV0d29ya1Nlc3Npb24oY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlTmV0d29ya1Nlc3Npb24oV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRCZWNvbWVEb3dubG9hZCgp
ID0gMDsKQEAgLTEwMCw3ICsxMDAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRTZW5kRGF0YSh1
aW50NjRfdCB0b3RhbEJ5dGVzU2VudCwgdWludDY0X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9TZW5k
KTsKICAgICB2b2lkIGRpZFJlY2VpdmVDaGFsbGVuZ2UoY29uc3QgV2ViQ29yZTo6QXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UmLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlcik7CiAgICAgdm9pZCBk
aWRDb21wbGV0ZVdpdGhFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7Ci0gICAg
dm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYs
IFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIpOworICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNl
KFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyKTsK
ICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYp
OwogICAgIHZvaWQgZGlkQmVjb21lRG93bmxvYWQoKTsKICAgICAKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAJKHJldmlzaW9uIDIwMTQ1NykK
KysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTQ2LDkgKzE0Niw4IEBAIHZvaWQgTmV0d29ya0xvYWQ6OmNvbnRpbnVlRGlk
UmVjZWl2ZVJlc3AKICAgICAgICAgbV9oYW5kbGUtPmNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNl
KCk7CiB9CiAKLU5ldHdvcmtMb2FkQ2xpZW50OjpTaG91bGRDb250aW51ZURpZFJlY2VpdmVSZXNw
b25zZSBOZXR3b3JrTG9hZDo6c2hhcmVkRGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIHJlY2VpdmVkUmVzcG9uc2UpCitOZXR3b3JrTG9hZENsaWVudDo6U2hvdWxkQ29u
dGludWVEaWRSZWNlaXZlUmVzcG9uc2UgTmV0d29ya0xvYWQ6OnNoYXJlZERpZFJlY2VpdmVSZXNw
b25zZShSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKLSAgICBSZXNvdXJjZVJlc3BvbnNl
IHJlc3BvbnNlID0gcmVjZWl2ZWRSZXNwb25zZTsKICAgICByZXNwb25zZS5zZXRTb3VyY2UoUmVz
b3VyY2VSZXNwb25zZTo6U291cmNlOjpOZXR3b3JrKTsKICAgICBpZiAobV9wYXJhbWV0ZXJzLm5l
ZWRzQ2VydGlmaWNhdGVJbmZvKQogICAgICAgICByZXNwb25zZS5pbmNsdWRlQ2VydGlmaWNhdGVJ
bmZvKCk7CkBAIC0yMzIsNyArMjMxLDcgQEAgdm9pZCBOZXR3b3JrTG9hZDo6ZGlkUmVjZWl2ZUNo
YWxsZW5nZShjbwogICAgICAgICBtX2NsaWVudC5jYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVj
dGlvblNwYWNlQXN5bmMoY2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZSgpKTsKIH0KIAotdm9pZCBO
ZXR3b3JrTG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlTmV0d29ya1Nlc3Npb24oY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIgY29tcGxldGlv
bkhhbmRsZXIpCit2b2lkIE5ldHdvcmtMb2FkOjpkaWRSZWNlaXZlUmVzcG9uc2VOZXR3b3JrU2Vz
c2lvbihSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxl
ciBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAg
IGlmIChtX3Rhc2sgJiYgbV90YXNrLT5wZW5kaW5nRG93bmxvYWRJRCgpLmRvd25sb2FkSUQoKSkK
QEAgLTI4Myw3ICsyODIsOCBAQCB2b2lkIE5ldHdvcmtMb2FkOjpjYW5ub3RTaG93VVJMKCkKIHZv
aWQgTmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVSZXNwb25zZUFzeW5jKFJlc291cmNlSGFuZGxlKiBo
YW5kbGUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlY2VpdmVkUmVzcG9uc2UpCiB7CiAgICAg
QVNTRVJUX1VOVVNFRChoYW5kbGUsIGhhbmRsZSA9PSBtX2hhbmRsZSk7Ci0gICAgaWYgKHNoYXJl
ZERpZFJlY2VpdmVSZXNwb25zZShyZWNlaXZlZFJlc3BvbnNlKSA9PSBOZXR3b3JrTG9hZENsaWVu
dDo6U2hvdWxkQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2U6OlllcykKKyAgICAvLyBGSVhNRTog
cmVjZWl2ZWRSZXNwb25zZSBzaG91bGQgbm90IGJlIGNvbnN0LgorICAgIGlmIChzaGFyZWREaWRS
ZWNlaXZlUmVzcG9uc2UoY29uc3RfY2FzdDxSZXNvdXJjZVJlc3BvbnNlJj4ocmVjZWl2ZWRSZXNw
b25zZSkpID09IE5ldHdvcmtMb2FkQ2xpZW50OjpTaG91bGRDb250aW51ZURpZFJlY2VpdmVSZXNw
b25zZTo6WWVzKQogICAgICAgICBtX2hhbmRsZS0+Y29udGludWVEaWRSZWNlaXZlUmVzcG9uc2Uo
KTsKIH0KIApJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9h
ZC5oCShyZXZpc2lvbiAyMDE0NTcpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrTG9hZC5oCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw3ICs2Nyw3IEBAIHB1YmxpYzoKICAg
ICAvLyBOZXR3b3JrRGF0YVRhc2tDbGllbnQKICAgICB2b2lkIHdpbGxQZXJmb3JtSFRUUFJlZGly
ZWN0aW9uKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmLCBSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyKSBmaW5hbDsKICAgICB2
b2lkIGRpZFJlY2VpdmVDaGFsbGVuZ2UoY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFs
bGVuZ2UmLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlcikgZmluYWw7Ci0gICAgdm9pZCBkaWRS
ZWNlaXZlUmVzcG9uc2VOZXR3b3JrU2Vzc2lvbihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJiwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlcikgZmluYWw7CisgICAgdm9pZCBkaWRSZWNl
aXZlUmVzcG9uc2VOZXR3b3JrU2Vzc2lvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgUmVz
cG9uc2VDb21wbGV0aW9uSGFuZGxlcikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShS
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKICAgICB2b2lkIGRpZENvbXBs
ZXRlV2l0aEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBmaW5hbDsKICAgICB2
b2lkIGRpZEJlY29tZURvd25sb2FkKCkgZmluYWw7CkBAIC0xMTYsNyArMTE2LDcgQEAgcHVibGlj
OgogI2VuZGlmCiAKIHByaXZhdGU6Ci0gICAgTmV0d29ya0xvYWRDbGllbnQ6OlNob3VsZENvbnRp
bnVlRGlkUmVjZWl2ZVJlc3BvbnNlIHNoYXJlZERpZFJlY2VpdmVSZXNwb25zZShjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7CisgICAgTmV0d29ya0xvYWRDbGllbnQ6OlNob3VsZENv
bnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlIHNoYXJlZERpZFJlY2VpdmVSZXNwb25zZShXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgdm9pZCBzaGFyZWRXaWxsU2VuZFJlZGlyZWN0ZWRS
ZXF1ZXN0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmKTsKIAogICAgIE5ldHdvcmtMb2FkQ2xpZW50JiBtX2NsaWVudDsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jl
c291cmNlTG9hZGVyLmNwcAkocmV2aXNpb24gMjAxNDU3KQorKysgU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTc4LDcgKzE3OCw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpyZXRyaWV2ZUNhY2gK
ICAgICAgICAgICAgIGxvYWRlci0+ZGlzcGF0Y2hXaWxsU2VuZFJlcXVlc3RGb3JDYWNoZUVudHJ5
KFdURk1vdmUoZW50cnkpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAg
ICBpZiAobG9hZGVyLT5tX3BhcmFtZXRlcnMubmVlZHNDZXJ0aWZpY2F0ZUluZm8gJiYgIWVudHJ5
LT5yZXNwb25zZSgpLmNvbnRhaW5zQ2VydGlmaWNhdGVJbmZvKCkpIHsKKyAgICAgICAgaWYgKGxv
YWRlci0+bV9wYXJhbWV0ZXJzLm5lZWRzQ2VydGlmaWNhdGVJbmZvICYmICFlbnRyeS0+cmVzcG9u
c2UoKS5jZXJ0aWZpY2F0ZUluZm8oKSkgewogICAgICAgICAgICAgbG9hZGVyLT5zdGFydE5ldHdv
cmtMb2FkKHJlcXVlc3QpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmgJKHJldmlzaW9uIDIwMTQ1NykK
KysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTU4LDcgKzU4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
QXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6Q2FuY2VsLCB7IH0pOwogICAgICAg
ICBkZWxldGUgdGhpczsKICAgICB9Ci0gICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2VOZXR3b3Jr
U2Vzc2lvbihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgUmVzcG9uc2VDb21wbGV0
aW9uSGFuZGxlciBjb21wbGV0aW9uSGFuZGxlcikgb3ZlcnJpZGUKKyAgICB2b2lkIGRpZFJlY2Vp
dmVSZXNwb25zZU5ldHdvcmtTZXNzaW9uKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBSZXNw
b25zZUNvbXBsZXRpb25IYW5kbGVyIGNvbXBsZXRpb25IYW5kbGVyKSBvdmVycmlkZQogICAgIHsK
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV2ViQ29yZTo6UG9saWN5QWN0aW9uOjpQb2xpY3lJ
Z25vcmUpOwogICAgICAgICBkZWxldGUgdGhpczsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1t
CShyZXZpc2lvbiAyMDE0NTcpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jb2Nv
YS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMTY1LDcgKzE2NSw3
IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrOjpkaWRDb21wbGV0ZVdpdGhFcnIKICAgICAgICAgbV9j
bGllbnQtPmRpZENvbXBsZXRlV2l0aEVycm9yKGVycm9yKTsKIH0KIAotdm9pZCBOZXR3b3JrRGF0
YVRhc2s6OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZSwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciBjb21wbGV0aW9uSGFuZGxlcikK
K3ZvaWQgTmV0d29ya0RhdGFUYXNrOjpkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIgY29tcGxldGlv
bkhhbmRsZXIpCiB7CiAgICAgaWYgKG1fY2xpZW50KQogICAgICAgICBtX2NsaWVudC0+ZGlkUmVj
ZWl2ZVJlc3BvbnNlTmV0d29ya1Nlc3Npb24ocmVzcG9uc2UsIGNvbXBsZXRpb25IYW5kbGVyKTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNh
dGlvbkNoYWxsZW5nZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eS5jcHAJKHJl
dmlzaW9uIDIwMTQ1NykKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRoZW50aWNhdGlv
bi9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzEs
NyArNzEsNyBAQCB2b2lkIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk6OnVzZUNyCiAgICAg
fQogCiAgICAgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvIGNlcnRpZmljYXRlSW5mbzsKLSAgICBp
ZiAoY3JlZGVudGlhbC0+Y2VydGlmaWNhdGVJbmZvKCkpCisgICAgaWYgKGNyZWRlbnRpYWwtPmNl
cnRpZmljYXRlSW5mbygpICYmIGNyZWRlbnRpYWwtPmNlcnRpZmljYXRlSW5mbygpKQogICAgICAg
ICBjZXJ0aWZpY2F0ZUluZm8gPSBjcmVkZW50aWFsLT5jZXJ0aWZpY2F0ZUluZm8oKS0+Y2VydGlm
aWNhdGVJbmZvKCk7CiAKICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OkF1dGhlbnRp
Y2F0aW9uTWFuYWdlcjo6VXNlQ3JlZGVudGlhbEZvckNoYWxsZW5nZShjaGFsbGVuZ2VJRCwgY3Jl
ZGVudGlhbC0+Y3JlZGVudGlhbCgpLCBjZXJ0aWZpY2F0ZUluZm8pLCAwKTsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCShyZXZpc2lvbiAyMDE0NTcpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDY4LDcgKzQ2OCw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJD
bGllbnQ6OmRpc3BhdGNoRGlkQ28KIAogICAgIC8vIE5vdGlmeSB0aGUgVUlQcm9jZXNzLgogCi0g
ICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRDb21taXRMb2FkRm9y
RnJhbWUobV9mcmFtZS0+ZnJhbWVJRCgpLCBkb2N1bWVudExvYWRlci5uYXZpZ2F0aW9uSUQoKSwg
ZG9jdW1lbnRMb2FkZXIucmVzcG9uc2UoKS5taW1lVHlwZSgpLCBtX2ZyYW1lSGFzQ3VzdG9tQ29u
dGVudFByb3ZpZGVyLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4obV9mcmFtZS0+Y29yZUZyYW1lKCkt
PmxvYWRlcigpLmxvYWRUeXBlKCkpLCBkb2N1bWVudExvYWRlci5yZXNwb25zZSgpLmNlcnRpZmlj
YXRlSW5mbygpLCBtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+ZG9jdW1lbnQoKS0+aXNQbHVnaW5Eb2N1
bWVudCgpLCBVc2VyRGF0YShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50cmFuc2Zvcm1PYmplY3Rz
VG9IYW5kbGVzKHVzZXJEYXRhLmdldCgpKS5nZXQoKSkpKTsKKyAgICB3ZWJQYWdlLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZENvbW1pdExvYWRGb3JGcmFtZShtX2ZyYW1lLT5mcmFt
ZUlEKCksIGRvY3VtZW50TG9hZGVyLm5hdmlnYXRpb25JRCgpLCBkb2N1bWVudExvYWRlci5yZXNw
b25zZSgpLm1pbWVUeXBlKCksIG1fZnJhbWVIYXNDdXN0b21Db250ZW50UHJvdmlkZXIsIHN0YXRp
Y19jYXN0PHVpbnQzMl90PihtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+bG9hZGVyKCkubG9hZFR5cGUo
KSksIGRvY3VtZW50TG9hZGVyLnJlc3BvbnNlKCkuY2VydGlmaWNhdGVJbmZvKCkudmFsdWVPcihD
ZXJ0aWZpY2F0ZUluZm8oKSksIG1fZnJhbWUtPmNvcmVGcmFtZSgpLT5kb2N1bWVudCgpLT5pc1Bs
dWdpbkRvY3VtZW50KCksIFVzZXJEYXRhKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnRyYW5zZm9y
bU9iamVjdHNUb0hhbmRsZXModXNlckRhdGEuZ2V0KCkpLmdldCgpKSkpOwogICAgIHdlYlBhZ2Ut
PmRpZENvbW1pdExvYWQobV9mcmFtZSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAkocmV2aXNpb24gMjAxNDU3KQorKysgU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzk3LDE2ICszOTcsMTYgQEAgU3RyaW5nIFdlYkZyYW1lOjp1cmwoKSBjb25zdAogICAg
IHJldHVybiBkb2N1bWVudExvYWRlci0+dXJsKCkuc3RyaW5nKCk7CiB9CiAKLVdlYkNvcmU6OkNl
cnRpZmljYXRlSW5mbyBXZWJGcmFtZTo6Y2VydGlmaWNhdGVJbmZvKCkgY29uc3QKK0NlcnRpZmlj
YXRlSW5mbyBXZWJGcmFtZTo6Y2VydGlmaWNhdGVJbmZvKCkgY29uc3QKIHsKICAgICBpZiAoIW1f
Y29yZUZyYW1lKQotICAgICAgICByZXR1cm4gQ2VydGlmaWNhdGVJbmZvKCk7CisgICAgICAgIHJl
dHVybiB7IH07CiAKICAgICBEb2N1bWVudExvYWRlciogZG9jdW1lbnRMb2FkZXIgPSBtX2NvcmVG
cmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKTsKICAgICBpZiAoIWRvY3VtZW50TG9hZGVy
KQotICAgICAgICByZXR1cm4gQ2VydGlmaWNhdGVJbmZvKCk7CisgICAgICAgIHJldHVybiB7IH07
CiAKLSAgICByZXR1cm4gZG9jdW1lbnRMb2FkZXItPnJlc3BvbnNlKCkuY2VydGlmaWNhdGVJbmZv
KCk7CisgICAgcmV0dXJuIGRvY3VtZW50TG9hZGVyLT5yZXNwb25zZSgpLmNlcnRpZmljYXRlSW5m
bygpLnZhbHVlT3IoQ2VydGlmaWNhdGVJbmZvKCkpOwogfQogCiBTdHJpbmcgV2ViRnJhbWU6Omlu
bmVyVGV4dCgpIGNvbnN0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>280181</attachid>
            <date>2016-05-31 14:07:11 -0700</date>
            <delta_ts>2016-06-06 22:33:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158232-20160531140827.patch</filename>
            <type>text/plain</type>
            <size>19761</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwMTUyMykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDE2LTA1LTMxICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVkdWNlIFJl
c291cmNlUmVzcG9uc2UgY29weWluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTU4MjMyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiAgTm8gY2hhbmdlIGluIGJlaGF2aW9yLgorCisg
ICAgICAgICogbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZUJhc2U6OlJlc291cmNlUmVzcG9uc2VCYXNlKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjpzZXRUZXh0RW5jb2RpbmdOYW1lKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjppbmNsdWRlQ2VydGlmaWNhdGVJbmZv
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjpjZXJ0aWZpY2F0ZUlu
Zm8pOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjplbmNvZGUpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6OmRlY29kZSk6CisgICAgICAgIChXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6Y29udGFpbnNDZXJ0aWZpY2F0ZUluZm8pOiBEZWxl
dGVkLgorCiAyMDE2LTA1LTMxICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29t
PgogCiAgICAgICAgIFtNYWNdIEFpclBsYXkgcm91dGUgaXMgc29tZXRpbWVzIHJlc2V0IHdoZW4g
Y2hhbmdpbmcgdmlkZW8uc3JjCkBAIC05MCw2ICsxMTEsMjggQEAKIAogMjAxNi0wNS0zMSAgQWxl
eCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCisgICAgICAgIFJlZHVj
ZSBSZXNvdXJjZVJlc3BvbnNlIGNvcHlpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE1ODIzMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gIE5vIGNoYW5nZSBpbiBiZWhhdmlvci4K
KworICAgICAgICAqIGxvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZSk6CisgICAgICAg
IChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6c2V0VGV4dEVuY29kaW5nTmFtZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6aW5jbHVkZUNlcnRpZmljYXRl
SW5mbyk6IE1hZGUgbm9uLWNvbnN0IGJlY2F1c2UgaXQgbW9kaWZpZXMgdGhlIFJlc291cmNlUmVz
cG9uc2UuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6Y2VydGlmaWNh
dGVJbmZvKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNl
Lmg6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6ZW5jb2RlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjpkZWNvZGUpOgorICAgICAgICAo
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6OmNvbnRhaW5zQ2VydGlmaWNhdGVJbmZvKTog
RGVsZXRlZC4KKyAgICAgICAgVXNlIGFuIE9wdGlvbmFsIGZvciB0aGUgQ2VydGlmaWNhdGVJbmZv
IGluc3RlYWQgb2Yga2VlcGluZyBhIGJvb2wgYW5kIGEgQ2VydGlmaWNhdGVJbmZvLgorCisyMDE2
LTA1LTMxICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKICAg
ICAgICAgQnVpbGQgZml4IGFmdGVyIHIyMDE0ODIuCiAKICAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybERvd25sb2FkLmNwcDoKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9T
dWJyZXNvdXJjZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVy
L1N1YnJlc291cmNlTG9hZGVyLmNwcAkocmV2aXNpb24gMjAxNDU3KQorKysgU291cmNlL1dlYkNv
cmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQxLDcg
KzI0MSw3IEBAIHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb24KICAgICBS
ZWY8U3VicmVzb3VyY2VMb2FkZXI+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCiAgICAgaWYgKHNo
b3VsZEluY2x1ZGVDZXJ0aWZpY2F0ZUluZm8oKSkKLSAgICAgICAgcmVzcG9uc2UuaW5jbHVkZUNl
cnRpZmljYXRlSW5mbygpOworICAgICAgICBjb25zdF9jYXN0PFJlc291cmNlUmVzcG9uc2UmPihy
ZXNwb25zZSkuaW5jbHVkZUNlcnRpZmljYXRlSW5mbygpOyAvLyBGSVhNRTogcmVzcG9uc2Ugc2hv
dWxkIG5vdCBiZSBjb25zdC4KIAogICAgIGlmIChyZXNwb25zZS5pc0h0dHBWZXJzaW9uMF85KCkp
IHsKICAgICAgICAgaWYgKG1fZnJhbWUpIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwCShyZXZpc2lv
biAyMDE0NTcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVz
cG9uc2VCYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcsNyArNDcsNiBAQCBpbmxpbmUgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYgUmVzb3VyY2VSCiBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6UmVz
b3VyY2VSZXNwb25zZUJhc2UoKQogICAgIDogbV9pc051bGwodHJ1ZSkKICAgICAsIG1fZXhwZWN0
ZWRDb250ZW50TGVuZ3RoKDApCi0gICAgLCBtX2luY2x1ZGVzQ2VydGlmaWNhdGVJbmZvKGZhbHNl
KQogICAgICwgbV9odHRwU3RhdHVzQ29kZSgwKQogewogfQpAQCAtNTgsNyArNTcsNyBAQCBSZXNv
dXJjZVJlc3BvbnNlQmFzZTo6UmVzb3VyY2VSZXNwb25zZUJhCiAgICAgLCBtX21pbWVUeXBlKG1p
bWVUeXBlKQogICAgICwgbV9leHBlY3RlZENvbnRlbnRMZW5ndGgoZXhwZWN0ZWRMZW5ndGgpCiAg
ICAgLCBtX3RleHRFbmNvZGluZ05hbWUodGV4dEVuY29kaW5nTmFtZSkKLSAgICAsIG1faW5jbHVk
ZXNDZXJ0aWZpY2F0ZUluZm8odHJ1ZSkgLy8gRW1wdHkgYnV0IHZhbGlkIGZvciBzeW50aGV0aWMg
cmVzcG9uc2VzLgorICAgICwgbV9jZXJ0aWZpY2F0ZUluZm8oQ2VydGlmaWNhdGVJbmZvKCkpIC8v
IEVtcHR5IGJ1dCB2YWxpZCBmb3Igc3ludGhldGljIHJlc3BvbnNlcy4KICAgICAsIG1faHR0cFN0
YXR1c0NvZGUoMCkKIHsKIH0KQEAgLTE3OCwxNSArMTc3LDE0IEBAIHZvaWQgUmVzb3VyY2VSZXNw
b25zZUJhc2U6OnNldFRleHRFbmNvZGkKICAgICAvLyBGSVhNRTogU2hvdWxkIGludmFsaWRhdGUg
b3IgdXBkYXRlIHBsYXRmb3JtIHJlc3BvbnNlIGlmIHByZXNlbnQuCiB9CiAKLXZvaWQgUmVzb3Vy
Y2VSZXNwb25zZUJhc2U6OmluY2x1ZGVDZXJ0aWZpY2F0ZUluZm8oKSBjb25zdAordm9pZCBSZXNv
dXJjZVJlc3BvbnNlQmFzZTo6aW5jbHVkZUNlcnRpZmljYXRlSW5mbygpCiB7Ci0gICAgaWYgKG1f
aW5jbHVkZXNDZXJ0aWZpY2F0ZUluZm8pCisgICAgaWYgKG1fY2VydGlmaWNhdGVJbmZvKQogICAg
ICAgICByZXR1cm47Ci0gICAgbV9jZXJ0aWZpY2F0ZUluZm8gPSBzdGF0aWNfY2FzdDxjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlKj4odGhpcyktPnBsYXRmb3JtQ2VydGlmaWNhdGVJbmZvKCk7Ci0gICAg
bV9pbmNsdWRlc0NlcnRpZmljYXRlSW5mbyA9IHRydWU7CisgICAgbV9jZXJ0aWZpY2F0ZUluZm8g
PSBwbGF0Zm9ybUNlcnRpZmljYXRlSW5mbygpOwogfQogCi1DZXJ0aWZpY2F0ZUluZm8gUmVzb3Vy
Y2VSZXNwb25zZUJhc2U6OmNlcnRpZmljYXRlSW5mbygpIGNvbnN0CitPcHRpb25hbDxDZXJ0aWZp
Y2F0ZUluZm8+IFJlc291cmNlUmVzcG9uc2VCYXNlOjpjZXJ0aWZpY2F0ZUluZm8oKSBjb25zdAog
ewogICAgIHJldHVybiBtX2NlcnRpZmljYXRlSW5mbzsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmgJKHJl
dmlzaW9uIDIwMTQ1NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3Vy
Y2VSZXNwb25zZUJhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtOTcsOSArOTcsOCBAQCBwdWJsaWM6
CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc0F0dGFjaG1lbnQoKSBjb25zdDsKICAgICBXRUJD
T1JFX0VYUE9SVCBTdHJpbmcgc3VnZ2VzdGVkRmlsZW5hbWUoKSBjb25zdDsKIAotICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgaW5jbHVkZUNlcnRpZmljYXRlSW5mbygpIGNvbnN0OwotICAgIGJvb2wg
Y29udGFpbnNDZXJ0aWZpY2F0ZUluZm8oKSBjb25zdCB7IHJldHVybiBtX2luY2x1ZGVzQ2VydGlm
aWNhdGVJbmZvOyB9Ci0gICAgV0VCQ09SRV9FWFBPUlQgQ2VydGlmaWNhdGVJbmZvIGNlcnRpZmlj
YXRlSW5mbygpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaW5jbHVkZUNlcnRpZmlj
YXRlSW5mbygpOworICAgIFdFQkNPUkVfRVhQT1JUIE9wdGlvbmFsPENlcnRpZmljYXRlSW5mbz4g
Y2VydGlmaWNhdGVJbmZvKCkgY29uc3Q7CiAgICAgCiAgICAgLy8gVGhlc2UgZnVuY3Rpb25zIHJl
dHVybiBwYXJzZWQgdmFsdWVzIG9mIHRoZSBjb3JyZXNwb25kaW5nIHJlc3BvbnNlIGhlYWRlcnMu
CiAgICAgLy8gTmFOIG1lYW5zIHRoYXQgdGhlIGhlYWRlciB3YXMgbm90IHByZXNlbnQgb3IgaGFk
IGludmFsaWQgdmFsdWUuCkBAIC0xNzQsOCArMTczLDggQEAgcHJvdGVjdGVkOgogICAgIEhUVFBI
ZWFkZXJNYXAgbV9odHRwSGVhZGVyRmllbGRzOwogICAgIG11dGFibGUgUmVzb3VyY2VMb2FkVGlt
aW5nIG1fcmVzb3VyY2VMb2FkVGltaW5nOwogCi0gICAgbXV0YWJsZSBib29sIG1faW5jbHVkZXND
ZXJ0aWZpY2F0ZUluZm87Ci0gICAgbXV0YWJsZSBDZXJ0aWZpY2F0ZUluZm8gbV9jZXJ0aWZpY2F0
ZUluZm87CisjZGVmaW5lIFJFU09VUkNFX1JFU1BPTlNFX0JBU0VfQ0VSVF9JTkZPX09QVElPTkFM
CisgICAgT3B0aW9uYWw8Q2VydGlmaWNhdGVJbmZvPiBtX2NlcnRpZmljYXRlSW5mbzsKIAogICAg
IGludCBtX2h0dHBTdGF0dXNDb2RlOwogCkBAIC0yMjAsOSArMjE5LDcgQEAgdm9pZCBSZXNvdXJj
ZVJlc3BvbnNlQmFzZTo6ZW5jb2RlKEVuY29kZQogICAgIGVuY29kZXIgPDwgbV9odHRwSGVhZGVy
RmllbGRzOwogICAgIGVuY29kZXIgPDwgbV9yZXNvdXJjZUxvYWRUaW1pbmc7CiAgICAgZW5jb2Rl
ciA8PCBtX2h0dHBTdGF0dXNDb2RlOwotICAgIGVuY29kZXIgPDwgbV9pbmNsdWRlc0NlcnRpZmlj
YXRlSW5mbzsKLSAgICBpZiAobV9pbmNsdWRlc0NlcnRpZmljYXRlSW5mbykKLSAgICAgICAgZW5j
b2RlciA8PCBtX2NlcnRpZmljYXRlSW5mbzsKKyAgICBlbmNvZGVyIDw8IG1fY2VydGlmaWNhdGVJ
bmZvOwogICAgIGVuY29kZXIuZW5jb2RlRW51bShtX3NvdXJjZSk7CiAgICAgZW5jb2Rlci5lbmNv
ZGVFbnVtKG1fdHlwZSk7CiAgICAgZW5jb2RlciA8PCBtX2lzUmVkaXJlY3RlZDsKQEAgLTI1OCwx
MiArMjU1LDggQEAgYm9vbCBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6ZGVjb2RlKERlY29kZQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXNwb25zZS5tX2h0
dHBTdGF0dXNDb2RlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUocmVzcG9uc2UubV9pbmNsdWRlc0NlcnRpZmljYXRlSW5mbykpCisgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShyZXNwb25zZS5tX2NlcnRpZmljYXRlSW5mbykpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICBpZiAocmVzcG9uc2UubV9pbmNsdWRlc0NlcnRpZmljYXRlSW5mbykgewotICAg
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3BvbnNlLm1fY2VydGlmaWNhdGVJbmZvKSkKLSAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZUVu
dW0ocmVzcG9uc2UubV9zb3VyY2UpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZUVudW0ocmVzcG9uc2UubV90eXBlKSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlz
aW9uIDIwMTUyMSkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDM1IEBACisyMDE2LTA1LTMxICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVu
c2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVkdWNlIFJlc291cmNlUmVzcG9uc2UgY29weWlu
ZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4MjMy
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrTG9hZC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkOjpjb250aW51ZURp
ZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkOjpzaGFyZWRE
aWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICBEb24ndCBjb3B5IHRoZSB3aG9sZSBSZXNvdXJj
ZVJlc3BvbnNlIHdoZW4gd2Ugd2FudCB0byBzZXQgc29tZSB0aGluZ3MgYW5kIHBhc3MgaXQgYWxv
bmcuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkOjpkaWRSZWNlaXZlQ2hhbGxlbmdlKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVSZXNwb25zZU5ldHdvcmtT
ZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVSZXNwb25z
ZUFzeW5jKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6cmV0cmlldmVDYWNoZUVudHJ5KToKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZUNvZGVycy5oOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2Fj
aGU6OkNvZGVyPFdURjo6T3B0aW9uYWw8VD4+OjplbmNvZGUpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrQ2FjaGU6OkNvZGVyPFdURjo6T3B0aW9uYWw8VD4+OjpkZWNvZGUpOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrRGF0YVRhc2s6OmRpZENvbXBsZXRlV2l0aEVycm9yKToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya0RhdGFUYXNrOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDb21taXRMb2Fk
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJGcmFtZTo6dXJsKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OmNlcnRp
ZmljYXRlSW5mbyk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lOjppbm5lclRleHQpOgorCiAy
MDE2LTA1LTMxICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgW2lP
U10gQmV0dGVyIGRlYWwgd2l0aCBXZWJQcm9jZXNzIHN1c3BlbnNpb24gZHVlIHRvIHNjcmVlbiBs
b2NraW5nCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRh
c2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
RGF0YVRhc2suaAkocmV2aXNpb24gMjAxNDU3KQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0RhdGFUYXNrLmgJKHdvcmtpbmcgY29weSkKQEAgLTcwLDcgKzcwLDcgQEAg
Y2xhc3MgTmV0d29ya0RhdGFUYXNrQ2xpZW50IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
d2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFJlZGlyZWN0Q29tcGxldGlvbkhh
bmRsZXIpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUNoYWxsZW5nZShjb25zdCBX
ZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5k
bGVyKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZU5ldHdvcmtTZXNz
aW9uKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBSZXNwb25zZUNvbXBsZXRpb25I
YW5kbGVyKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZU5ldHdvcmtT
ZXNzaW9uKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBSZXNwb25zZUNvbXBsZXRpb25IYW5k
bGVyKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tcGxldGVXaXRo
RXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgZGlkQmVjb21lRG93bmxvYWQoKSA9IDA7CkBAIC0xMDAsNyArMTAwLDcgQEAgcHVibGljOgog
ICAgIHZvaWQgZGlkU2VuZERhdGEodWludDY0X3QgdG90YWxCeXRlc1NlbnQsIHVpbnQ2NF90IHRv
dGFsQnl0ZXNFeHBlY3RlZFRvU2VuZCk7CiAgICAgdm9pZCBkaWRSZWNlaXZlQ2hhbGxlbmdlKGNv
bnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiwgQ2hhbGxlbmdlQ29tcGxldGlv
bkhhbmRsZXIpOwogICAgIHZvaWQgZGlkQ29tcGxldGVXaXRoRXJyb3IoY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VFcnJvciYpOwotICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICB2
b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgUmVzcG9u
c2VDb21wbGV0aW9uSGFuZGxlcik7CiAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiYmKTsKICAgICB2b2lkIGRpZEJlY29tZURvd25sb2FkKCk7CiAg
ICAgCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQu
Y3BwCShyZXZpc2lvbiAyMDE0NTcpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrTG9hZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0Niw5ICsxNDYsOCBAQCB2b2lkIE5l
dHdvcmtMb2FkOjpjb250aW51ZURpZFJlY2VpdmVSZXNwCiAgICAgICAgIG1faGFuZGxlLT5jb250
aW51ZURpZFJlY2VpdmVSZXNwb25zZSgpOwogfQogCi1OZXR3b3JrTG9hZENsaWVudDo6U2hvdWxk
Q29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UgTmV0d29ya0xvYWQ6OnNoYXJlZERpZFJlY2VpdmVS
ZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWNlaXZlZFJlc3BvbnNlKQorTmV0d29y
a0xvYWRDbGllbnQ6OlNob3VsZENvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlIE5ldHdvcmtMb2Fk
OjpzaGFyZWREaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7
Ci0gICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSA9IHJlY2VpdmVkUmVzcG9uc2U7CiAgICAg
cmVzcG9uc2Uuc2V0U291cmNlKFJlc291cmNlUmVzcG9uc2U6OlNvdXJjZTo6TmV0d29yayk7CiAg
ICAgaWYgKG1fcGFyYW1ldGVycy5uZWVkc0NlcnRpZmljYXRlSW5mbykKICAgICAgICAgcmVzcG9u
c2UuaW5jbHVkZUNlcnRpZmljYXRlSW5mbygpOwpAQCAtMjMyLDcgKzIzMSw3IEBAIHZvaWQgTmV0
d29ya0xvYWQ6OmRpZFJlY2VpdmVDaGFsbGVuZ2UoY28KICAgICAgICAgbV9jbGllbnQuY2FuQXV0
aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZUFzeW5jKGNoYWxsZW5nZS5wcm90ZWN0aW9u
U3BhY2UoKSk7CiB9CiAKLXZvaWQgTmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVSZXNwb25zZU5ldHdv
cmtTZXNzaW9uKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZXNwb25zZUNvbXBs
ZXRpb25IYW5kbGVyIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3JrTG9hZDo6ZGlkUmVj
ZWl2ZVJlc3BvbnNlTmV0d29ya1Nlc3Npb24oUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJl
c3BvbnNlQ29tcGxldGlvbkhhbmRsZXIgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKICAgICBpZiAobV90YXNrICYmIG1fdGFzay0+cGVuZGluZ0Rvd25s
b2FkSUQoKS5kb3dubG9hZElEKCkpCkBAIC0yODMsNyArMjgyLDggQEAgdm9pZCBOZXR3b3JrTG9h
ZDo6Y2Fubm90U2hvd1VSTCgpCiB2b2lkIE5ldHdvcmtMb2FkOjpkaWRSZWNlaXZlUmVzcG9uc2VB
c3luYyhSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWNl
aXZlZFJlc3BvbnNlKQogewogICAgIEFTU0VSVF9VTlVTRUQoaGFuZGxlLCBoYW5kbGUgPT0gbV9o
YW5kbGUpOwotICAgIGlmIChzaGFyZWREaWRSZWNlaXZlUmVzcG9uc2UocmVjZWl2ZWRSZXNwb25z
ZSkgPT0gTmV0d29ya0xvYWRDbGllbnQ6OlNob3VsZENvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNl
OjpZZXMpCisgICAgLy8gRklYTUU6IHJlY2VpdmVkUmVzcG9uc2Ugc2hvdWxkIG5vdCBiZSBjb25z
dC4KKyAgICBpZiAoc2hhcmVkRGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0X2Nhc3Q8UmVzb3VyY2VS
ZXNwb25zZSY+KHJlY2VpdmVkUmVzcG9uc2UpKSA9PSBOZXR3b3JrTG9hZENsaWVudDo6U2hvdWxk
Q29udGludWVEaWRSZWNlaXZlUmVzcG9uc2U6OlllcykKICAgICAgICAgbV9oYW5kbGUtPmNvbnRp
bnVlRGlkUmVjZWl2ZVJlc3BvbnNlKCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL05ldHdvcmtMb2FkLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaAkocmV2aXNpb24gMjAxNDU3KQorKysgU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaAkod29ya2luZyBjb3B5KQpAQCAtNjcs
NyArNjcsNyBAQCBwdWJsaWM6CiAgICAgLy8gTmV0d29ya0RhdGFUYXNrQ2xpZW50CiAgICAgdm9p
ZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgUmVkaXJlY3RDb21wbGV0aW9u
SGFuZGxlcikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlQ2hhbGxlbmdlKGNvbnN0IFdlYkNv
cmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiwgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXIp
IGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlTmV0d29ya1Nlc3Npb24oY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIpIGZp
bmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlTmV0d29ya1Nlc3Npb24oV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIpIGZpbmFsOwogICAg
IHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgZmlu
YWw7CiAgICAgdm9pZCBkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yJikgZmluYWw7CiAgICAgdm9pZCBkaWRCZWNvbWVEb3dubG9hZCgpIGZpbmFsOwpAQCAt
MTE2LDcgKzExNiw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiBwcml2YXRlOgotICAgIE5ldHdvcmtM
b2FkQ2xpZW50OjpTaG91bGRDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSBzaGFyZWREaWRSZWNl
aXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOworICAgIE5ldHdv
cmtMb2FkQ2xpZW50OjpTaG91bGRDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSBzaGFyZWREaWRS
ZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHZvaWQgc2hh
cmVkV2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7CiAKICAgICBOZXR3b3JrTG9h
ZENsaWVudCYgbV9jbGllbnQ7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAJKHJldmlzaW9uIDIwMTQ1NykK
KysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE3OCw3ICsxNzgsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJj
ZUxvYWRlcjo6cmV0cmlldmVDYWNoCiAgICAgICAgICAgICBsb2FkZXItPmRpc3BhdGNoV2lsbFNl
bmRSZXF1ZXN0Rm9yQ2FjaGVFbnRyeShXVEZNb3ZlKGVudHJ5KSk7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KLSAgICAgICAgaWYgKGxvYWRlci0+bV9wYXJhbWV0ZXJzLm5lZWRzQ2Vy
dGlmaWNhdGVJbmZvICYmICFlbnRyeS0+cmVzcG9uc2UoKS5jb250YWluc0NlcnRpZmljYXRlSW5m
bygpKSB7CisgICAgICAgIGlmIChsb2FkZXItPm1fcGFyYW1ldGVycy5uZWVkc0NlcnRpZmljYXRl
SW5mbyAmJiAhZW50cnktPnJlc3BvbnNlKCkuY2VydGlmaWNhdGVJbmZvKCkpIHsKICAgICAgICAg
ICAgIGxvYWRlci0+c3RhcnROZXR3b3JrTG9hZChyZXF1ZXN0KTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvUGluZ0xv
YWQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9h
ZC5oCShyZXZpc2lvbiAyMDE0NTcpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9Q
aW5nTG9hZC5oCSh3b3JraW5nIGNvcHkpCkBAIC01OCw3ICs1OCw3IEBAIHByaXZhdGU6CiAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb246
OkNhbmNlbCwgeyB9KTsKICAgICAgICAgZGVsZXRlIHRoaXM7CiAgICAgfQotICAgIHZvaWQgZGlk
UmVjZWl2ZVJlc3BvbnNlTmV0d29ya1Nlc3Npb24oY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIgY29tcGxldGlvbkhhbmRsZXIpIG92ZXJy
aWRlCisgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2VOZXR3b3JrU2Vzc2lvbihXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciBjb21wbGV0aW9uSGFu
ZGxlcikgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdlYkNvcmU6
OlBvbGljeUFjdGlvbjo6UG9saWN5SWdub3JlKTsKICAgICAgICAgZGVsZXRlIHRoaXM7CkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVDb2RlcnMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVDb2RlcnMuaAkocmV2aXNpb24gMjAxNDU3KQorKysgU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlQ29kZXJzLmgJKHdvcmtpbmcgY29weSkKQEAg
LTIzLDExICsyMywxMSBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICov
CiAKLSNpZm5kZWYgTmV0d29ya0NhY2hlQ29kZXJzX2gKLSNkZWZpbmUgTmV0d29ya0NhY2hlQ29k
ZXJzX2gKKyNwcmFnbWEgb25jZQogCiAjaWYgRU5BQkxFKE5FVFdPUktfQ0FDSEUpCiAKKyNpbmNs
dWRlICJBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIk5ldHdvcmtDYWNoZURlY29kZXIuaCIK
ICNpbmNsdWRlICJOZXR3b3JrQ2FjaGVFbmNvZGVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9DZXJ0
aWZpY2F0ZUluZm8uaD4KQEAgLTgxLDYgKzgxLDM4IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFJlcCwg
dHlwZW5hbWUgUGVyaW9kPiAKICAgICB9CiB9OwogCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1
Y3QgQ29kZXI8V1RGOjpPcHRpb25hbDxUPj4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNv
ZGVyJiBlbmNvZGVyLCBjb25zdCBXVEY6Ok9wdGlvbmFsPFQ+JiBvcHRpb25hbCkKKyAgICB7Cisg
ICAgICAgIGlmICghb3B0aW9uYWwpIHsKKyAgICAgICAgICAgIGVuY29kZXIgPDwgZmFsc2U7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGVuY29kZXIg
PDwgdHJ1ZTsKKyAgICAgICAgZW5jb2RlciA8PCBvcHRpb25hbC52YWx1ZSgpOworICAgIH0KKyAg
ICAKKyAgICBzdGF0aWMgYm9vbCBkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgV1RGOjpPcHRpb25h
bDxUPiYgb3B0aW9uYWwpCisgICAgeworICAgICAgICBib29sIGlzRW5nYWdlZDsKKyAgICAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShpc0VuZ2FnZWQpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICAKKyAgICAgICAgaWYgKCFpc0VuZ2FnZWQpIHsKKyAgICAgICAgICAgIG9wdGlv
bmFsID0gTnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAg
ICAgIAorICAgICAgICBUIHZhbHVlOworICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHZhbHVl
KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgCisgICAgICAgIG9wdGlvbmFs
ID0gV1RGTW92ZSh2YWx1ZSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KK307CisKIHRl
bXBsYXRlPHR5cGVuYW1lIEtleVR5cGUsIHR5cGVuYW1lIFZhbHVlVHlwZT4gc3RydWN0IENvZGVy
PFdURjo6S2V5VmFsdWVQYWlyPEtleVR5cGUsIFZhbHVlVHlwZT4+IHsKICAgICBzdGF0aWMgdm9p
ZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgV1RGOjpLZXlWYWx1ZVBhaXI8S2V5VHlw
ZSwgVmFsdWVUeXBlPiYgcGFpcikKICAgICB7CkBAIC0yNjcsNCArMjk5LDMgQEAgdGVtcGxhdGU8
PiBzdHJ1Y3QgQ29kZXI8V2ViQ29yZTo6SFRUUEhlYQogfQogfQogI2VuZGlmCi0jZW5kaWYKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0Nv
Y29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NvY29h
L05ldHdvcmtEYXRhVGFza0NvY29hLm1tCShyZXZpc2lvbiAyMDE0NTcpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMTY1LDcgKzE2NSw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrOjpkaWRDb21w
bGV0ZVdpdGhFcnIKICAgICAgICAgbV9jbGllbnQtPmRpZENvbXBsZXRlV2l0aEVycm9yKGVycm9y
KTsKIH0KIAotdm9pZCBOZXR3b3JrRGF0YVRhc2s6OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVzcG9uc2VDb21wbGV0aW9uSGFu
ZGxlciBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya0RhdGFUYXNrOjpkaWRSZWNlaXZl
UmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlc3BvbnNlQ29t
cGxldGlvbkhhbmRsZXIgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKG1fY2xpZW50KQog
ICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZVJlc3BvbnNlTmV0d29ya1Nlc3Npb24ocmVzcG9u
c2UsIGNvbXBsZXRpb25IYW5kbGVyKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuY3BwCShyZXZpc2lvbiAyMDE0NTcpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDY4LDcgKzQ2OCw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ28K
IAogICAgIC8vIE5vdGlmeSB0aGUgVUlQcm9jZXNzLgogCi0gICAgd2ViUGFnZS0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpEaWRDb21taXRMb2FkRm9yRnJhbWUobV9mcmFtZS0+ZnJhbWVJ
RCgpLCBkb2N1bWVudExvYWRlci5uYXZpZ2F0aW9uSUQoKSwgZG9jdW1lbnRMb2FkZXIucmVzcG9u
c2UoKS5taW1lVHlwZSgpLCBtX2ZyYW1lSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyLCBzdGF0aWNf
Y2FzdDx1aW50MzJfdD4obV9mcmFtZS0+Y29yZUZyYW1lKCktPmxvYWRlcigpLmxvYWRUeXBlKCkp
LCBkb2N1bWVudExvYWRlci5yZXNwb25zZSgpLmNlcnRpZmljYXRlSW5mbygpLCBtX2ZyYW1lLT5j
b3JlRnJhbWUoKS0+ZG9jdW1lbnQoKS0+aXNQbHVnaW5Eb2N1bWVudCgpLCBVc2VyRGF0YShXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVzZXJEYXRhLmdl
dCgpKS5nZXQoKSkpKTsKKyAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OkRpZENvbW1pdExvYWRGb3JGcmFtZShtX2ZyYW1lLT5mcmFtZUlEKCksIGRvY3VtZW50TG9hZGVy
Lm5hdmlnYXRpb25JRCgpLCBkb2N1bWVudExvYWRlci5yZXNwb25zZSgpLm1pbWVUeXBlKCksIG1f
ZnJhbWVIYXNDdXN0b21Db250ZW50UHJvdmlkZXIsIHN0YXRpY19jYXN0PHVpbnQzMl90PihtX2Zy
YW1lLT5jb3JlRnJhbWUoKS0+bG9hZGVyKCkubG9hZFR5cGUoKSksIGRvY3VtZW50TG9hZGVyLnJl
c3BvbnNlKCkuY2VydGlmaWNhdGVJbmZvKCkudmFsdWVPckNvbXB1dGUoW10geyByZXR1cm4gQ2Vy
dGlmaWNhdGVJbmZvKCk7IH0pLCBtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+ZG9jdW1lbnQoKS0+aXNQ
bHVnaW5Eb2N1bWVudCgpLCBVc2VyRGF0YShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50cmFuc2Zv
cm1PYmplY3RzVG9IYW5kbGVzKHVzZXJEYXRhLmdldCgpKS5nZXQoKSkpKTsKICAgICB3ZWJQYWdl
LT5kaWRDb21taXRMb2FkKG1fZnJhbWUpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAJKHJldmlzaW9uIDIwMTQ1NykKKysrIFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM5NywxNiArMzk3LDE2IEBAIFN0cmluZyBXZWJGcmFtZTo6dXJsKCkgY29uc3QKICAg
ICByZXR1cm4gZG9jdW1lbnRMb2FkZXItPnVybCgpLnN0cmluZygpOwogfQogCi1XZWJDb3JlOjpD
ZXJ0aWZpY2F0ZUluZm8gV2ViRnJhbWU6OmNlcnRpZmljYXRlSW5mbygpIGNvbnN0CitDZXJ0aWZp
Y2F0ZUluZm8gV2ViRnJhbWU6OmNlcnRpZmljYXRlSW5mbygpIGNvbnN0CiB7CiAgICAgaWYgKCFt
X2NvcmVGcmFtZSkKLSAgICAgICAgcmV0dXJuIENlcnRpZmljYXRlSW5mbygpOworICAgICAgICBy
ZXR1cm4geyB9OwogCiAgICAgRG9jdW1lbnRMb2FkZXIqIGRvY3VtZW50TG9hZGVyID0gbV9jb3Jl
RnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCk7CiAgICAgaWYgKCFkb2N1bWVudExvYWRl
cikKLSAgICAgICAgcmV0dXJuIENlcnRpZmljYXRlSW5mbygpOworICAgICAgICByZXR1cm4geyB9
OwogCi0gICAgcmV0dXJuIGRvY3VtZW50TG9hZGVyLT5yZXNwb25zZSgpLmNlcnRpZmljYXRlSW5m
bygpOworICAgIHJldHVybiBkb2N1bWVudExvYWRlci0+cmVzcG9uc2UoKS5jZXJ0aWZpY2F0ZUlu
Zm8oKS52YWx1ZU9yQ29tcHV0ZShbXSB7IHJldHVybiBDZXJ0aWZpY2F0ZUluZm8oKTsgfSk7CiB9
CiAKIFN0cmluZyBXZWJGcmFtZTo6aW5uZXJUZXh0KCkgY29uc3QK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>280670</attachid>
            <date>2016-06-06 22:33:09 -0700</date>
            <delta_ts>2016-06-10 12:27:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158232-20160606223434.patch</filename>
            <type>text/plain</type>
            <size>18805</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwMTczOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI1IEBACisyMDE2LTA1LTMxICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVkdWNlIFJl
c291cmNlUmVzcG9uc2UgY29weWluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTU4MjMyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiAgTm8gY2hhbmdlIGluIGJlaGF2aW9yLgorCisg
ICAgICAgICogbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZUJhc2U6OlJlc291cmNlUmVzcG9uc2VCYXNlKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjpzZXRUZXh0RW5jb2RpbmdOYW1lKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjppbmNsdWRlQ2VydGlmaWNhdGVJbmZv
KTogTWFkZSBub24tY29uc3QgYmVjYXVzZSBpdCBtb2RpZmllcyB0aGUgUmVzb3VyY2VSZXNwb25z
ZS4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjpjZXJ0aWZpY2F0ZUlu
Zm8pOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjplbmNvZGUpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6OmRlY29kZSk6CisgICAgICAgIChXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6Y29udGFpbnNDZXJ0aWZpY2F0ZUluZm8pOiBEZWxl
dGVkLgorICAgICAgICBVc2UgYW4gT3B0aW9uYWwgZm9yIHRoZSBDZXJ0aWZpY2F0ZUluZm8gaW5z
dGVhZCBvZiBrZWVwaW5nIGEgYm9vbCBhbmQgYSBDZXJ0aWZpY2F0ZUluZm8uCisKIDIwMTYtMDYt
MDIgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVXBkYXRlIHRo
ZSBsaXN0IG9mIGVsZW1lbnRzIGF0dGFjaFNoYWRvdyBpcyBhbGxvd2VkCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAJKHJldmlzaW9uIDIwMTczOSkK
KysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI0MSw3ICsyNDEsNyBAQCB2b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNl
aXZlUmVzcG9uCiAgICAgUmVmPFN1YnJlc291cmNlTG9hZGVyPiBwcm90ZWN0ZWRUaGlzKCp0aGlz
KTsKIAogICAgIGlmIChzaG91bGRJbmNsdWRlQ2VydGlmaWNhdGVJbmZvKCkpCi0gICAgICAgIHJl
c3BvbnNlLmluY2x1ZGVDZXJ0aWZpY2F0ZUluZm8oKTsKKyAgICAgICAgY29uc3RfY2FzdDxSZXNv
dXJjZVJlc3BvbnNlJj4ocmVzcG9uc2UpLmluY2x1ZGVDZXJ0aWZpY2F0ZUluZm8oKTsgLy8gRklY
TUU6IHJlc3BvbnNlIHNob3VsZCBub3QgYmUgY29uc3QuCiAKICAgICBpZiAocmVzcG9uc2UuaXNI
dHRwVmVyc2lvbjBfOSgpKSB7CiAgICAgICAgIGlmIChtX2ZyYW1lKSB7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VC
YXNlLmNwcAkocmV2aXNpb24gMjAxNzM5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3
LDYgQEAgaW5saW5lIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIFJlc291cmNlUgogUmVzb3VyY2VS
ZXNwb25zZUJhc2U6OlJlc291cmNlUmVzcG9uc2VCYXNlKCkKICAgICA6IG1faXNOdWxsKHRydWUp
CiAgICAgLCBtX2V4cGVjdGVkQ29udGVudExlbmd0aCgwKQotICAgICwgbV9pbmNsdWRlc0NlcnRp
ZmljYXRlSW5mbyhmYWxzZSkKICAgICAsIG1faHR0cFN0YXR1c0NvZGUoMCkKIHsKIH0KQEAgLTU4
LDcgKzU3LDcgQEAgUmVzb3VyY2VSZXNwb25zZUJhc2U6OlJlc291cmNlUmVzcG9uc2VCYQogICAg
ICwgbV9taW1lVHlwZShtaW1lVHlwZSkKICAgICAsIG1fZXhwZWN0ZWRDb250ZW50TGVuZ3RoKGV4
cGVjdGVkTGVuZ3RoKQogICAgICwgbV90ZXh0RW5jb2RpbmdOYW1lKHRleHRFbmNvZGluZ05hbWUp
Ci0gICAgLCBtX2luY2x1ZGVzQ2VydGlmaWNhdGVJbmZvKHRydWUpIC8vIEVtcHR5IGJ1dCB2YWxp
ZCBmb3Igc3ludGhldGljIHJlc3BvbnNlcy4KKyAgICAsIG1fY2VydGlmaWNhdGVJbmZvKENlcnRp
ZmljYXRlSW5mbygpKSAvLyBFbXB0eSBidXQgdmFsaWQgZm9yIHN5bnRoZXRpYyByZXNwb25zZXMu
CiAgICAgLCBtX2h0dHBTdGF0dXNDb2RlKDApCiB7CiB9CkBAIC0xODIsMTUgKzE4MSwxNCBAQCB2
b2lkIFJlc291cmNlUmVzcG9uc2VCYXNlOjpzZXRUZXh0RW5jb2RpCiAgICAgLy8gRklYTUU6IFNo
b3VsZCBpbnZhbGlkYXRlIG9yIHVwZGF0ZSBwbGF0Zm9ybSByZXNwb25zZSBpZiBwcmVzZW50Lgog
fQogCi12b2lkIFJlc291cmNlUmVzcG9uc2VCYXNlOjppbmNsdWRlQ2VydGlmaWNhdGVJbmZvKCkg
Y29uc3QKK3ZvaWQgUmVzb3VyY2VSZXNwb25zZUJhc2U6OmluY2x1ZGVDZXJ0aWZpY2F0ZUluZm8o
KQogewotICAgIGlmIChtX2luY2x1ZGVzQ2VydGlmaWNhdGVJbmZvKQorICAgIGlmIChtX2NlcnRp
ZmljYXRlSW5mbykKICAgICAgICAgcmV0dXJuOwotICAgIG1fY2VydGlmaWNhdGVJbmZvID0gc3Rh
dGljX2Nhc3Q8Y29uc3QgUmVzb3VyY2VSZXNwb25zZSo+KHRoaXMpLT5wbGF0Zm9ybUNlcnRpZmlj
YXRlSW5mbygpOwotICAgIG1faW5jbHVkZXNDZXJ0aWZpY2F0ZUluZm8gPSB0cnVlOworICAgIG1f
Y2VydGlmaWNhdGVJbmZvID0gcGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm8oKTsKIH0KIAotQ2VydGlm
aWNhdGVJbmZvIFJlc291cmNlUmVzcG9uc2VCYXNlOjpjZXJ0aWZpY2F0ZUluZm8oKSBjb25zdAor
T3B0aW9uYWw8Q2VydGlmaWNhdGVJbmZvPiBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6Y2VydGlmaWNh
dGVJbmZvKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9jZXJ0aWZpY2F0ZUluZm87CiB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJl
c3BvbnNlQmFzZS5oCShyZXZpc2lvbiAyMDE3MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTExMyw5
ICsxMTMsOCBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc0F0dGFjaG1lbnQo
KSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgc3VnZ2VzdGVkRmlsZW5hbWUoKSBj
b25zdDsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaW5jbHVkZUNlcnRpZmljYXRlSW5mbygp
IGNvbnN0OwotICAgIGJvb2wgY29udGFpbnNDZXJ0aWZpY2F0ZUluZm8oKSBjb25zdCB7IHJldHVy
biBtX2luY2x1ZGVzQ2VydGlmaWNhdGVJbmZvOyB9Ci0gICAgV0VCQ09SRV9FWFBPUlQgQ2VydGlm
aWNhdGVJbmZvIGNlcnRpZmljYXRlSW5mbygpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgaW5jbHVkZUNlcnRpZmljYXRlSW5mbygpOworICAgIFdFQkNPUkVfRVhQT1JUIE9wdGlvbmFs
PENlcnRpZmljYXRlSW5mbz4gY2VydGlmaWNhdGVJbmZvKCkgY29uc3Q7CiAgICAgCiAgICAgLy8g
VGhlc2UgZnVuY3Rpb25zIHJldHVybiBwYXJzZWQgdmFsdWVzIG9mIHRoZSBjb3JyZXNwb25kaW5n
IHJlc3BvbnNlIGhlYWRlcnMuCiAgICAgLy8gTmFOIG1lYW5zIHRoYXQgdGhlIGhlYWRlciB3YXMg
bm90IHByZXNlbnQgb3IgaGFkIGludmFsaWQgdmFsdWUuCkBAIC0xOTAsOCArMTg5LDggQEAgcHJv
dGVjdGVkOgogICAgIEhUVFBIZWFkZXJNYXAgbV9odHRwSGVhZGVyRmllbGRzOwogICAgIG11dGFi
bGUgUmVzb3VyY2VMb2FkVGltaW5nIG1fcmVzb3VyY2VMb2FkVGltaW5nOwogCi0gICAgbXV0YWJs
ZSBib29sIG1faW5jbHVkZXNDZXJ0aWZpY2F0ZUluZm87Ci0gICAgbXV0YWJsZSBDZXJ0aWZpY2F0
ZUluZm8gbV9jZXJ0aWZpY2F0ZUluZm87CisjZGVmaW5lIFJFU09VUkNFX1JFU1BPTlNFX0JBU0Vf
Q0VSVF9JTkZPX09QVElPTkFMCisgICAgT3B0aW9uYWw8Q2VydGlmaWNhdGVJbmZvPiBtX2NlcnRp
ZmljYXRlSW5mbzsKIAogICAgIGludCBtX2h0dHBTdGF0dXNDb2RlOwogCkBAIC0yMzYsOSArMjM1
LDcgQEAgdm9pZCBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6ZW5jb2RlKEVuY29kZQogICAgIGVuY29k
ZXIgPDwgbV9odHRwSGVhZGVyRmllbGRzOwogICAgIGVuY29kZXIgPDwgbV9yZXNvdXJjZUxvYWRU
aW1pbmc7CiAgICAgZW5jb2RlciA8PCBtX2h0dHBTdGF0dXNDb2RlOwotICAgIGVuY29kZXIgPDwg
bV9pbmNsdWRlc0NlcnRpZmljYXRlSW5mbzsKLSAgICBpZiAobV9pbmNsdWRlc0NlcnRpZmljYXRl
SW5mbykKLSAgICAgICAgZW5jb2RlciA8PCBtX2NlcnRpZmljYXRlSW5mbzsKKyAgICBlbmNvZGVy
IDw8IG1fY2VydGlmaWNhdGVJbmZvOwogICAgIGVuY29kZXIuZW5jb2RlRW51bShtX3NvdXJjZSk7
CiAgICAgZW5jb2Rlci5lbmNvZGVFbnVtKG1fdHlwZSk7CiAgICAgZW5jb2RlciA8PCBtX2lzUmVk
aXJlY3RlZDsKQEAgLTI3NCwxMiArMjcxLDggQEAgYm9vbCBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6
ZGVjb2RlKERlY29kZQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShyZXNwb25zZS5tX2h0dHBTdGF0dXNDb2RlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzcG9uc2UubV9pbmNsdWRlc0NlcnRpZmljYXRlSW5m
bykpCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXNwb25zZS5tX2NlcnRpZmljYXRlSW5mbykp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAocmVzcG9uc2UubV9pbmNsdWRlc0NlcnRp
ZmljYXRlSW5mbykgewotICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3BvbnNlLm1fY2Vy
dGlmaWNhdGVJbmZvKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9CiAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZUVudW0ocmVzcG9uc2UubV9zb3VyY2UpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZUVudW0ocmVzcG9uc2UubV90eXBlKSkKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwMTczOSkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM1IEBACisyMDE2LTA2LTA2ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVkdWNlIFJlc291
cmNlUmVzcG9uc2UgY29weWluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTU4MjMyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaDoKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtMb2FkOjpjb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtMb2FkOjpzaGFyZWREaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICBEb24ndCBjb3B5
IHRoZSB3aG9sZSBSZXNvdXJjZVJlc3BvbnNlIHdoZW4gd2Ugd2FudCB0byBzZXQgc29tZSB0aGlu
Z3MgYW5kIHBhc3MgaXQgYWxvbmcuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkOjpkaWRS
ZWNlaXZlQ2hhbGxlbmdlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWQ6OmRpZFJlY2Vp
dmVSZXNwb25zZU5ldHdvcmtTZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWQ6
OmRpZFJlY2VpdmVSZXNwb25zZUFzeW5jKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrTG9hZC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRl
ci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6cmV0cmlldmVD
YWNoZUVudHJ5KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5oOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUNvZGVycy5oOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkNvZGVyPFdURjo6T3B0aW9uYWw8VD4+OjplbmNvZGUpOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkNvZGVyPFdURjo6T3B0aW9uYWw8VD4+Ojpk
ZWNvZGUpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0Nv
Y29hLm1tOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2s6OmRpZENvbXBsZXRlV2l0
aEVycm9yKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrOjpkaWRSZWNlaXZlUmVz
cG9uc2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlz
cGF0Y2hEaWRDb21taXRMb2FkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJh
bWUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6dXJsKToKKyAgICAgICAgKFdlYktp
dDo6V2ViRnJhbWU6OmNlcnRpZmljYXRlSW5mbyk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1l
Ojppbm5lclRleHQpOgorCiAyMDE2LTA2LTA2ICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0BhcHBs
ZS5jb20+CiAKICAgICAgICAgUG9zaXRpb24gb2YgV2ViR0wgPGNhbnZhcz4gb24gaU9TIGlzIGlu
Y29ycmVjdCB3aXRoIENTUyBib3JkZXJzCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrRGF0YVRhc2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaAkocmV2aXNpb24gMjAxNzM5KQorKysgU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmgJKHdvcmtpbmcgY29weSkK
QEAgLTcwLDcgKzcwLDcgQEAgY2xhc3MgTmV0d29ya0RhdGFUYXNrQ2xpZW50IHsKIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgUmVkaXJlY3RDb21w
bGV0aW9uSGFuZGxlcikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQ2hhbGxlbmdl
KGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiwgQ2hhbGxlbmdlQ29tcGxl
dGlvbkhhbmRsZXIpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlTmV0
d29ya1Nlc3Npb24oY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIFJlc3BvbnNlQ29t
cGxldGlvbkhhbmRsZXIpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNl
TmV0d29ya1Nlc3Npb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIFJlc3BvbnNlQ29tcGxl
dGlvbkhhbmRsZXIpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmUHRy
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRDb21w
bGV0ZVdpdGhFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBkaWRCZWNvbWVEb3dubG9hZCgpID0gMDsKQEAgLTEwMCw3ICsxMDAsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBkaWRTZW5kRGF0YSh1aW50NjRfdCB0b3RhbEJ5dGVzU2VudCwgdWlu
dDY0X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9TZW5kKTsKICAgICB2b2lkIGRpZFJlY2VpdmVDaGFs
bGVuZ2UoY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmLCBDaGFsbGVuZ2VD
b21wbGV0aW9uSGFuZGxlcik7CiAgICAgdm9pZCBkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7Ci0gICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIp
OworICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
LCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyKTsKICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJl
ZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpOwogICAgIHZvaWQgZGlkQmVjb21lRG93bmxv
YWQoKTsKICAgICAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtM
b2FkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrTG9hZC5jcHAJKHJldmlzaW9uIDIwMTczOSkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtMb2FkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUyLDkgKzE1Miw4IEBA
IHZvaWQgTmV0d29ya0xvYWQ6OmNvbnRpbnVlRGlkUmVjZWl2ZVJlc3AKICAgICAgICAgbV9oYW5k
bGUtPmNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlKCk7CiB9CiAKLU5ldHdvcmtMb2FkQ2xpZW50
OjpTaG91bGRDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSBOZXR3b3JrTG9hZDo6c2hhcmVkRGlk
UmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlY2VpdmVkUmVzcG9uc2Up
CitOZXR3b3JrTG9hZENsaWVudDo6U2hvdWxkQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UgTmV0
d29ya0xvYWQ6OnNoYXJlZERpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiByZXNw
b25zZSkKIHsKLSAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlID0gcmVjZWl2ZWRSZXNwb25z
ZTsKICAgICByZXNwb25zZS5zZXRTb3VyY2UoUmVzb3VyY2VSZXNwb25zZTo6U291cmNlOjpOZXR3
b3JrKTsKICAgICBpZiAobV9wYXJhbWV0ZXJzLm5lZWRzQ2VydGlmaWNhdGVJbmZvKQogICAgICAg
ICByZXNwb25zZS5pbmNsdWRlQ2VydGlmaWNhdGVJbmZvKCk7CkBAIC0yMzgsNyArMjM3LDcgQEAg
dm9pZCBOZXR3b3JrTG9hZDo6ZGlkUmVjZWl2ZUNoYWxsZW5nZShjbwogICAgICAgICBtX2NsaWVu
dC5jYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlQXN5bmMoY2hhbGxlbmdlLnBy
b3RlY3Rpb25TcGFjZSgpKTsKIH0KIAotdm9pZCBOZXR3b3JrTG9hZDo6ZGlkUmVjZWl2ZVJlc3Bv
bnNlTmV0d29ya1Nlc3Npb24oY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlc3Bv
bnNlQ29tcGxldGlvbkhhbmRsZXIgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtMb2Fk
OjpkaWRSZWNlaXZlUmVzcG9uc2VOZXR3b3JrU2Vzc2lvbihSZXNvdXJjZVJlc3BvbnNlJiByZXNw
b25zZSwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIGlmIChtX3Rhc2sgJiYgbV90YXNrLT5wZW5k
aW5nRG93bmxvYWRJRCgpLmRvd25sb2FkSUQoKSkKQEAgLTI4OSw3ICsyODgsOCBAQCB2b2lkIE5l
dHdvcmtMb2FkOjpjYW5ub3RTaG93VVJMKCkKIHZvaWQgTmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVS
ZXNwb25zZUFzeW5jKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmIHJlY2VpdmVkUmVzcG9uc2UpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChoYW5kbGUsIGhhbmRs
ZSA9PSBtX2hhbmRsZSk7Ci0gICAgaWYgKHNoYXJlZERpZFJlY2VpdmVSZXNwb25zZShyZWNlaXZl
ZFJlc3BvbnNlKSA9PSBOZXR3b3JrTG9hZENsaWVudDo6U2hvdWxkQ29udGludWVEaWRSZWNlaXZl
UmVzcG9uc2U6OlllcykKKyAgICAvLyBGSVhNRTogcmVjZWl2ZWRSZXNwb25zZSBzaG91bGQgbm90
IGJlIGNvbnN0LgorICAgIGlmIChzaGFyZWREaWRSZWNlaXZlUmVzcG9uc2UoY29uc3RfY2FzdDxS
ZXNvdXJjZVJlc3BvbnNlJj4ocmVjZWl2ZWRSZXNwb25zZSkpID09IE5ldHdvcmtMb2FkQ2xpZW50
OjpTaG91bGRDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZTo6WWVzKQogICAgICAgICBtX2hhbmRs
ZS0+Y29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UoKTsKIH0KIApJbmRleDogU291cmNlL1dlYktp
dDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oCShyZXZpc2lvbiAyMDE3MzkpCisrKyBT
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yMyw4ICsyMyw3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAg
Ki8KIAotI2lmbmRlZiBOZXR3b3JrTG9hZF9oCi0jZGVmaW5lIE5ldHdvcmtMb2FkX2gKKyNwcmFn
bWEgb25jZQogCiAjaW5jbHVkZSAiTmV0d29ya0xvYWRDbGllbnQuaCIKICNpbmNsdWRlICJOZXR3
b3JrTG9hZFBhcmFtZXRlcnMuaCIKQEAgLTY3LDcgKzY2LDcgQEAgcHVibGljOgogICAgIC8vIE5l
dHdvcmtEYXRhVGFza0NsaWVudAogICAgIHZvaWQgd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24o
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwg
UmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlcikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlQ2hh
bGxlbmdlKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiwgQ2hhbGxlbmdl
Q29tcGxldGlvbkhhbmRsZXIpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlTmV0
d29ya1Nlc3Npb24oY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIFJlc3BvbnNlQ29t
cGxldGlvbkhhbmRsZXIpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlTmV0d29y
a1Nlc3Npb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIFJlc3BvbnNlQ29tcGxldGlvbkhh
bmRsZXIpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAgICAgdm9pZCBkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgZmluYWw7CiAgICAgdm9pZCBkaWRCZWNvbWVEb3du
bG9hZCgpIGZpbmFsOwpAQCAtMTE2LDcgKzExNSw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiBwcml2
YXRlOgotICAgIE5ldHdvcmtMb2FkQ2xpZW50OjpTaG91bGRDb250aW51ZURpZFJlY2VpdmVSZXNw
b25zZSBzaGFyZWREaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYpOworICAgIE5ldHdvcmtMb2FkQ2xpZW50OjpTaG91bGRDb250aW51ZURpZFJlY2VpdmVS
ZXNwb25zZSBzaGFyZWREaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYpOwogICAgIHZvaWQgc2hhcmVkV2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmKTsKIAogICAgIE5l
dHdvcmtMb2FkQ2xpZW50JiBtX2NsaWVudDsKQEAgLTEzNiw1ICsxMzUsMyBAQCBwcml2YXRlOgog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBOZXR3b3JrTG9hZF9oCklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtS
ZXNvdXJjZUxvYWRlci5jcHAJKHJldmlzaW9uIDIwMTczOSkKKysrIFNvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE3OCw3ICsxNzgsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6cmV0cmlldmVDYWNo
CiAgICAgICAgICAgICBsb2FkZXItPmRpc3BhdGNoV2lsbFNlbmRSZXF1ZXN0Rm9yQ2FjaGVFbnRy
eShXVEZNb3ZlKGVudHJ5KSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAg
ICAgaWYgKGxvYWRlci0+bV9wYXJhbWV0ZXJzLm5lZWRzQ2VydGlmaWNhdGVJbmZvICYmICFlbnRy
eS0+cmVzcG9uc2UoKS5jb250YWluc0NlcnRpZmljYXRlSW5mbygpKSB7CisgICAgICAgIGlmIChs
b2FkZXItPm1fcGFyYW1ldGVycy5uZWVkc0NlcnRpZmljYXRlSW5mbyAmJiAhZW50cnktPnJlc3Bv
bnNlKCkuY2VydGlmaWNhdGVJbmZvKCkpIHsKICAgICAgICAgICAgIGxvYWRlci0+c3RhcnROZXR3
b3JrTG9hZChyZXF1ZXN0KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpJbmRleDog
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5oCShyZXZpc2lvbiAyMDE3Mzkp
CisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5oCSh3b3JraW5nIGNv
cHkpCkBAIC01OCw3ICs1OCw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb246OkNhbmNlbCwgeyB9KTsKICAgICAg
ICAgZGVsZXRlIHRoaXM7CiAgICAgfQotICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlTmV0d29y
a1Nlc3Npb24oY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIFJlc3BvbnNlQ29tcGxl
dGlvbkhhbmRsZXIgY29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlCisgICAgdm9pZCBkaWRSZWNl
aXZlUmVzcG9uc2VOZXR3b3JrU2Vzc2lvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgUmVz
cG9uc2VDb21wbGV0aW9uSGFuZGxlciBjb21wbGV0aW9uSGFuZGxlcikgb3ZlcnJpZGUKICAgICB7
CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdlYkNvcmU6OlBvbGljeUFjdGlvbjo6UG9saWN5
SWdub3JlKTsKICAgICAgICAgZGVsZXRlIHRoaXM7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVDb2RlcnMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVDb2RlcnMuaAkocmV2
aXNpb24gMjAxNzM5KQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlQ29kZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDggKzIzLDcgQEAKICAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIE5ldHdvcmtDYWNo
ZUNvZGVyc19oCi0jZGVmaW5lIE5ldHdvcmtDYWNoZUNvZGVyc19oCisjcHJhZ21hIG9uY2UKIAog
I2lmIEVOQUJMRShORVRXT1JLX0NBQ0hFKQogCkBAIC04MSw2ICs4MCwzOCBAQCB0ZW1wbGF0ZTx0
eXBlbmFtZSBSZXAsIHR5cGVuYW1lIFBlcmlvZD4gCiAgICAgfQogfTsKIAordGVtcGxhdGU8dHlw
ZW5hbWUgVD4gc3RydWN0IENvZGVyPFdURjo6T3B0aW9uYWw8VD4+IHsKKyAgICBzdGF0aWMgdm9p
ZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgV1RGOjpPcHRpb25hbDxUPiYgb3B0aW9u
YWwpCisgICAgeworICAgICAgICBpZiAoIW9wdGlvbmFsKSB7CisgICAgICAgICAgICBlbmNvZGVy
IDw8IGZhbHNlOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIAorICAg
ICAgICBlbmNvZGVyIDw8IHRydWU7CisgICAgICAgIGVuY29kZXIgPDwgb3B0aW9uYWwudmFsdWUo
KTsKKyAgICB9CisgICAgCisgICAgc3RhdGljIGJvb2wgZGVjb2RlKERlY29kZXImIGRlY29kZXIs
IFdURjo6T3B0aW9uYWw8VD4mIG9wdGlvbmFsKQorICAgIHsKKyAgICAgICAgYm9vbCBpc0VuZ2Fn
ZWQ7CisgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaXNFbmdhZ2VkKSkKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgCisgICAgICAgIGlmICghaXNFbmdhZ2VkKSB7CisgICAg
ICAgICAgICBvcHRpb25hbCA9IE51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICAgICAgfQorICAgICAgICAKKyAgICAgICAgVCB2YWx1ZTsKKyAgICAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZSh2YWx1ZSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIAorICAg
ICAgICBvcHRpb25hbCA9IFdURk1vdmUodmFsdWUpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICB9Cit9OworCiB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXlUeXBlLCB0eXBlbmFtZSBWYWx1ZVR5cGU+
IHN0cnVjdCBDb2RlcjxXVEY6OktleVZhbHVlUGFpcjxLZXlUeXBlLCBWYWx1ZVR5cGU+PiB7CiAg
ICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFdURjo6S2V5VmFs
dWVQYWlyPEtleVR5cGUsIFZhbHVlVHlwZT4mIHBhaXIpCiAgICAgewpAQCAtMjY3LDQgKzI5OCwz
IEBAIHRlbXBsYXRlPD4gc3RydWN0IENvZGVyPFdlYkNvcmU6OkhUVFBIZWEKIH0KIH0KICNlbmRp
ZgotI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3
b3JrRGF0YVRhc2tDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQkocmV2aXNpb24gMjAxNzM5KQor
KysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29j
b2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTE2NSw3ICsxNjUsNyBAQCB2b2lkIE5ldHdvcmtEYXRh
VGFzazo6ZGlkQ29tcGxldGVXaXRoRXJyCiAgICAgICAgIG1fY2xpZW50LT5kaWRDb21wbGV0ZVdp
dGhFcnJvcihlcnJvcik7CiB9CiAKLXZvaWQgTmV0d29ya0RhdGFUYXNrOjpkaWRSZWNlaXZlUmVz
cG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlc3BvbnNl
Q29tcGxldGlvbkhhbmRsZXIgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtEYXRhVGFz
azo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNl
LCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlm
IChtX2NsaWVudCkKICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVSZXNwb25zZU5ldHdvcmtT
ZXNzaW9uKHJlc3BvbnNlLCBjb21wbGV0aW9uSGFuZGxlcik7CkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmNwcAkocmV2aXNpb24gMjAxNzM5KQorKysgU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQ2OCw3ICs0NjgsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpk
aXNwYXRjaERpZENvCiAKICAgICAvLyBOb3RpZnkgdGhlIFVJUHJvY2Vzcy4KIAotICAgIHdlYlBh
Z2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkQ29tbWl0TG9hZEZvckZyYW1lKG1f
ZnJhbWUtPmZyYW1lSUQoKSwgZG9jdW1lbnRMb2FkZXIubmF2aWdhdGlvbklEKCksIGRvY3VtZW50
TG9hZGVyLnJlc3BvbnNlKCkubWltZVR5cGUoKSwgbV9mcmFtZUhhc0N1c3RvbUNvbnRlbnRQcm92
aWRlciwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KG1fZnJhbWUtPmNvcmVGcmFtZSgpLT5sb2FkZXIo
KS5sb2FkVHlwZSgpKSwgZG9jdW1lbnRMb2FkZXIucmVzcG9uc2UoKS5jZXJ0aWZpY2F0ZUluZm8o
KSwgbV9mcmFtZS0+Y29yZUZyYW1lKCktPmRvY3VtZW50KCktPmlzUGx1Z2luRG9jdW1lbnQoKSwg
VXNlckRhdGEoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxl
cyh1c2VyRGF0YS5nZXQoKSkuZ2V0KCkpKSk7CisgICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpEaWRDb21taXRMb2FkRm9yRnJhbWUobV9mcmFtZS0+ZnJhbWVJRCgpLCBk
b2N1bWVudExvYWRlci5uYXZpZ2F0aW9uSUQoKSwgZG9jdW1lbnRMb2FkZXIucmVzcG9uc2UoKS5t
aW1lVHlwZSgpLCBtX2ZyYW1lSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyLCBzdGF0aWNfY2FzdDx1
aW50MzJfdD4obV9mcmFtZS0+Y29yZUZyYW1lKCktPmxvYWRlcigpLmxvYWRUeXBlKCkpLCBkb2N1
bWVudExvYWRlci5yZXNwb25zZSgpLmNlcnRpZmljYXRlSW5mbygpLnZhbHVlT3JDb21wdXRlKFtd
IHsgcmV0dXJuIENlcnRpZmljYXRlSW5mbygpOyB9KSwgbV9mcmFtZS0+Y29yZUZyYW1lKCktPmRv
Y3VtZW50KCktPmlzUGx1Z2luRG9jdW1lbnQoKSwgVXNlckRhdGEoV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YS5nZXQoKSkuZ2V0KCkpKSk7
CiAgICAgd2ViUGFnZS0+ZGlkQ29tbWl0TG9hZChtX2ZyYW1lKTsKIH0KIApJbmRleDogU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCShyZXZpc2lvbiAy
MDE3MzkpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zOTcsMTYgKzM5NywxNiBAQCBTdHJpbmcgV2ViRnJhbWU6OnVy
bCgpIGNvbnN0CiAgICAgcmV0dXJuIGRvY3VtZW50TG9hZGVyLT51cmwoKS5zdHJpbmcoKTsKIH0K
IAotV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvIFdlYkZyYW1lOjpjZXJ0aWZpY2F0ZUluZm8oKSBj
b25zdAorQ2VydGlmaWNhdGVJbmZvIFdlYkZyYW1lOjpjZXJ0aWZpY2F0ZUluZm8oKSBjb25zdAog
ewogICAgIGlmICghbV9jb3JlRnJhbWUpCi0gICAgICAgIHJldHVybiBDZXJ0aWZpY2F0ZUluZm8o
KTsKKyAgICAgICAgcmV0dXJuIHsgfTsKIAogICAgIERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExv
YWRlciA9IG1fY29yZUZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpOwogICAgIGlmICgh
ZG9jdW1lbnRMb2FkZXIpCi0gICAgICAgIHJldHVybiBDZXJ0aWZpY2F0ZUluZm8oKTsKKyAgICAg
ICAgcmV0dXJuIHsgfTsKIAotICAgIHJldHVybiBkb2N1bWVudExvYWRlci0+cmVzcG9uc2UoKS5j
ZXJ0aWZpY2F0ZUluZm8oKTsKKyAgICByZXR1cm4gZG9jdW1lbnRMb2FkZXItPnJlc3BvbnNlKCku
Y2VydGlmaWNhdGVJbmZvKCkudmFsdWVPckNvbXB1dGUoW10geyByZXR1cm4gQ2VydGlmaWNhdGVJ
bmZvKCk7IH0pOwogfQogCiBTdHJpbmcgV2ViRnJhbWU6OmlubmVyVGV4dCgpIGNvbnN0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>281031</attachid>
            <date>2016-06-10 12:27:08 -0700</date>
            <delta_ts>2016-06-10 13:05:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158232-20160610122842.patch</filename>
            <type>text/plain</type>
            <size>42246</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwMTkzMykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU4IEBACisyMDE2LTA2LTEwICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVkdWNlIFJl
c291cmNlUmVzcG9uc2UgY29weWluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTU4MjMyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIu
CisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiAgTm8gY2hhbmdlIGluIGJlaGF2aW9yIGV4Y2VwdCBy
ZW1vdmluZyBhbiB1bm5lY2Vzc2FyeSBjb3B5LgorCisgICAgICAgICogbG9hZGVyL1Jlc291cmNl
TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpkaWRTZW5kRGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNl
KToKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFw
cGxpY2F0aW9uQ2FjaGVHcm91cDo6Y3JlYXRlUmVzb3VyY2VIYW5kbGUpOgorICAgICAgICAoV2Vi
Q29yZTo6QXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAg
ICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpCbG9iUmVzb3VyY2VIYW5kbGU6Om5vdGlmeVJlc3BvbnNlT25TdWNjZXNzKToKKyAgICAgICAg
KFdlYkNvcmU6OkJsb2JSZXNvdXJjZUhhbmRsZTo6bm90aWZ5UmVzcG9uc2VPbkVycm9yKToKKyAg
ICAgICAgKFdlYkNvcmU6OkJsb2JSZXNvdXJjZUhhbmRsZTo6bm90aWZ5UmVjZWl2ZURhdGEpOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUGluZ0hhbmRsZS5oOgorICAgICAgICAoV2ViQ29y
ZTo6UGluZ0hhbmRsZTo6UGluZ0hhbmRsZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZUhhbmRsZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRs
ZUNsaWVudDo6d2lsbFNlbmRSZXF1ZXN0QXN5bmMpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VIYW5kbGVDbGllbnQ6OmRpZFJlY2VpdmVSZXNwb25zZUFzeW5jKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpS
ZXNvdXJjZUhhbmRsZUNsaWVudDo6ZGlkU2VuZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VIYW5kbGVDbGllbnQ6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3Jl
OjpSZXNvdXJjZUhhbmRsZUNsaWVudDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZUJhc2U6OlJlc291cmNlUmVzcG9uc2VCYXNlKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjppbmNsdWRlQ2VydGlmaWNhdGVJbmZvKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjpzdWdnZXN0ZWRGaWxlbmFtZSk6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6Y2VydGlmaWNhdGVJbmZv
KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VC
YXNlLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6Y2VydGlmaWNh
dGVJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjplbmNvZGUp
OgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6OmRlY29kZSk6CisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6Y29udGFpbnNDZXJ0aWZpY2F0ZUlu
Zm8pOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvU3luY2hyb25vdXNMb2Fk
ZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3luY2hyb25vdXNMb2FkZXJDbGllbnQ6
OmNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UpOgorICAgICAgICAoV2ViQ29y
ZTo6U3luY2hyb25vdXNMb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAg
IChXZWJDb3JlOjpTeW5jaHJvbm91c0xvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZURhdGEpOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvU3luY2hyb25vdXNMb2FkZXJDbGllbnQuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVs
ZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VI
YW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZTo6ZGlkUmVjZWl2
ZVJlc3BvbnNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1N5bmNocm9ub3VzUmVz
b3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OmRpZFJl
Y2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpTeW5jaHJvbm91c1Jlc291cmNlSGFu
ZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlLm1tOgor
ICAgICAgICAoLVtXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlIGNvbm5lY3Rpb246ZGlk
UmVjZWl2ZVJlc3BvbnNlOl0pOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNv
cmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5tbToKKyAgICAgICAgKC1b
V2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlIGNvbm5lY3Rpb246
ZGlkUmVjZWl2ZVJlc3BvbnNlOl0pOgorCiAyMDE2LTA2LTEwICBZb3Vlbm4gRmFibGV0ICA8eW91
ZW5uLmZhYmxldEBjcmYuY2Fub24uZnI+CiAKICAgICAgICAgT3JpZ2luIGhlYWRlciBpcyBub3Qg
aW5jbHVkZWQgaW4gQ09SUyByZXF1ZXN0cyBmb3IgcHJlbG9hZGVkIGNyb3NzLW9yaWdpbiByZXNv
dXJjZXMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAkocmV2
aXNpb24gMjAxODczKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNjE4LDcgKzYxOCw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6
OmRpZFNlbmREYXRhKFJlc291cmMKICAgICBkaWRTZW5kRGF0YShieXRlc1NlbnQsIHRvdGFsQnl0
ZXNUb0JlU2VudCk7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25z
ZShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQordm9p
ZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlKiwgUmVz
b3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlKQogewogICAgIGlmIChkb2N1bWVudExvYWRlcigpLT5h
cHBsaWNhdGlvbkNhY2hlSG9zdCgpLT5tYXliZUxvYWRGYWxsYmFja0ZvclJlc3BvbnNlKHRoaXMs
IHJlc3BvbnNlKSkKICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVy
L1Jlc291cmNlTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jl
c291cmNlTG9hZGVyLmgJKHJldmlzaW9uIDIwMTg3MykKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9SZXNvdXJjZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xODUsNyArMTg1LDcgQEAgcHJp
dmF0ZToKICAgICAvLyBSZXNvdXJjZUhhbmRsZUNsaWVudAogICAgIFJlc291cmNlUmVxdWVzdCB3
aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VIYW5kbGUqLCBSZXNvdXJjZVJlcXVlc3QmJiwgUmVzb3Vy
Y2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkU2Vu
ZERhdGEoUmVzb3VyY2VIYW5kbGUqLCB1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNp
Z25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KSBvdmVycmlkZTsKLSAgICB2b2lkIGRp
ZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
KSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSos
IFJlc291cmNlUmVzcG9uc2UmJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShS
ZXNvdXJjZUhhbmRsZSosIGNvbnN0IGNoYXIqLCB1bnNpZ25lZCwgaW50IGVuY29kZWREYXRhTGVu
Z3RoKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUq
LCBSZWY8U2hhcmVkQnVmZmVyPiYmLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlOwog
ICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUhhbmRsZSosIGRvdWJsZSBmaW5pc2hU
aW1lKSBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBs
aWNhdGlvbkNhY2hlR3JvdXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCShyZXZpc2lvbiAyMDE4NzMpCisr
KyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDg5LDcgKzQ4OSw3IEBAIFJlZlB0cjxSZXNvdXJjZUhhbmRs
ZT4gQXBwbGljYXRpb25DYWNoZUcKICAgICByZXR1cm4gaGFuZGxlOwogfQogCi12b2lkIEFwcGxp
Y2F0aW9uQ2FjaGVHcm91cDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlKiBoYW5k
bGUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQordm9pZCBBcHBsaWNhdGlvbkNh
Y2hlR3JvdXA6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBSZXNv
dXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UpCiB7CiAgICAgQVNTRVJUKG1fZnJhbWUpOwogICAgIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUgPSBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OndpbGxSZWNlaXZlUmVzb3VyY2VSZXNwb25zZShtX2ZyYW1lKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdy
b3VwLmgJKHJldmlzaW9uIDIwMTg3MykKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuaAkod29ya2luZyBjb3B5KQpAQCAtMTA4LDcgKzEwOCw3
IEBAIHByaXZhdGU6CiAgICAgLy8gdGhlIGV4aXN0aW5nIGNsaWVudCBjYWxsYmFjayBjYW5ub3Qg
YmUgdXNlZCwgc28gYXNzdW1lIHRoYXQgYW55IGNsaWVudCB0aGF0IGVuYWJsZXMgYXBwbGljYXRp
b24gY2FjaGUgYWxzbyB3YW50cyBpdCB0byB1c2UgY3JlZGVudGlhbCBzdG9yYWdlLgogICAgIGJv
b2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UoUmVzb3VyY2VIYW5kbGUqKSBvdmVycmlkZSB7
IHJldHVybiB0cnVlOyB9CiAKLSAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUhh
bmRsZSosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJl
Y2VpdmVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSosIFJlc291cmNlUmVzcG9uc2UmJikgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IGNoYXIq
LCB1bnNpZ25lZCBsZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGU7CiAgICAg
dm9pZCBkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlSGFuZGxlKiwgZG91YmxlIGZpbmlzaFRpbWUp
IG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFpbChSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291
cmNlRXJyb3ImKSBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvQmxvYlJlc291cmNlSGFuZGxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5jcHAJKHJldmlzaW9uIDIwMTg3MykK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFuZGxlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtODMsNyArODMsNyBAQCBjbGFzcyBCbG9iUmVzb3VyY2VTeW5j
aHJvbm91c0xvYWRlciA6IHB1CiBwdWJsaWM6CiAgICAgQmxvYlJlc291cmNlU3luY2hyb25vdXNM
b2FkZXIoUmVzb3VyY2VFcnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBWZWN0b3I8Y2hhcj4mKTsK
IAotICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlKiwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFJl
c291cmNlSGFuZGxlKiwgUmVzb3VyY2VSZXNwb25zZSYmKSBvdmVycmlkZTsKICAgICB2b2lkIGRp
ZEZhaWwoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAK
IHByaXZhdGU6CkBAIC05OSw3ICs5OSw3IEBAIEJsb2JSZXNvdXJjZVN5bmNocm9ub3VzTG9hZGVy
OjpCbG9iUmVzb3UKIHsKIH0KIAotdm9pZCBCbG9iUmVzb3VyY2VTeW5jaHJvbm91c0xvYWRlcjo6
ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIHJlc3BvbnNlKQordm9pZCBCbG9iUmVzb3VyY2VTeW5jaHJvbm91c0xvYWRlcjo6
ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIFJlc291cmNlUmVzcG9u
c2UmJiByZXNwb25zZSkKIHsKICAgICAvLyBXZSBjYW5ub3QgaGFuZGxlIHRoZSBzaXplIHRoYXQg
aXMgbW9yZSB0aGFuIG1heGltdW0gaW50ZWdlci4KICAgICBpZiAocmVzcG9uc2UuZXhwZWN0ZWRD
b250ZW50TGVuZ3RoKCkgPiBJTlRfTUFYKSB7CkBAIC01ODMsOSArNTgzLDkgQEAgdm9pZCBCbG9i
UmVzb3VyY2VIYW5kbGU6Om5vdGlmeVJlc3BvbnNlTwogICAgIC8vIEl0J3MgY3VycmVudGx5IGNs
aWVudCdzIHJlc3BvbnNpYmlsaXR5IHRvIGtub3cgdGhhdCBkaWRSZWNlaXZlUmVzcG9uc2VBc3lu
YyBjYW5ub3QgYmUgdXNlZCB0byBjb252ZXJ0IGEKICAgICAvLyBsb2FkIGludG8gYSBkb3dubG9h
ZCBvciBibG9icy4KICAgICBpZiAodXNlc0FzeW5jQ2FsbGJhY2tzKCkpCi0gICAgICAgIGNsaWVu
dCgpLT5kaWRSZWNlaXZlUmVzcG9uc2VBc3luYyh0aGlzLCByZXNwb25zZSk7CisgICAgICAgIGNs
aWVudCgpLT5kaWRSZWNlaXZlUmVzcG9uc2VBc3luYyh0aGlzLCBXVEZNb3ZlKHJlc3BvbnNlKSk7
CiAgICAgZWxzZQotICAgICAgICBjbGllbnQoKS0+ZGlkUmVjZWl2ZVJlc3BvbnNlKHRoaXMsIHJl
c3BvbnNlKTsKKyAgICAgICAgY2xpZW50KCktPmRpZFJlY2VpdmVSZXNwb25zZSh0aGlzLCBXVEZN
b3ZlKHJlc3BvbnNlKSk7CiB9CiAKIHZvaWQgQmxvYlJlc291cmNlSGFuZGxlOjpub3RpZnlSZXNw
b25zZU9uRXJyb3IoKQpAQCAtNjE1LDkgKzYxNSw5IEBAIHZvaWQgQmxvYlJlc291cmNlSGFuZGxl
Ojpub3RpZnlSZXNwb25zZU8KICAgICAvLyBOb3RlIHRoYXQgd2UgZG9uJ3Qgd2FpdCBmb3IgY29u
dGludWVEaWRSZWNlaXZlUmVzcG9uc2Ugd2hlbiB1c2luZyBkaWRSZWNlaXZlUmVzcG9uc2VBc3lu
Yy4KICAgICAvLyBUaGlzIGlzIG5vdCBmb3JtYWxseSBjb3JyZWN0LCBidXQgdGhlIGNsaWVudCBo
YXMgdG8gYmUgYSBuby1vcCBhbnl3YXksIGJlY2F1c2UgYmxvYnMgY2FuJ3QgYmUgZG93bmxvYWRl
ZC4KICAgICBpZiAodXNlc0FzeW5jQ2FsbGJhY2tzKCkpCi0gICAgICAgIGNsaWVudCgpLT5kaWRS
ZWNlaXZlUmVzcG9uc2VBc3luYyh0aGlzLCByZXNwb25zZSk7CisgICAgICAgIGNsaWVudCgpLT5k
aWRSZWNlaXZlUmVzcG9uc2VBc3luYyh0aGlzLCBXVEZNb3ZlKHJlc3BvbnNlKSk7CiAgICAgZWxz
ZQotICAgICAgICBjbGllbnQoKS0+ZGlkUmVjZWl2ZVJlc3BvbnNlKHRoaXMsIHJlc3BvbnNlKTsK
KyAgICAgICAgY2xpZW50KCktPmRpZFJlY2VpdmVSZXNwb25zZSh0aGlzLCBXVEZNb3ZlKHJlc3Bv
bnNlKSk7CiB9CiAKIHZvaWQgQmxvYlJlc291cmNlSGFuZGxlOjpub3RpZnlSZWNlaXZlRGF0YShj
b25zdCBjaGFyKiBkYXRhLCBpbnQgYnl0ZXNSZWFkKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9QaW5nSGFuZGxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9QaW5nSGFuZGxlLmgJKHJldmlzaW9uIDIwMTg3MykKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUGluZ0hhbmRsZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC01Niw3ICs1Niw3IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBkaWRS
ZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikg
b3ZlcnJpZGUgeyBkZWxldGUgdGhpczsgfQorICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFJl
c291cmNlSGFuZGxlKiwgUmVzb3VyY2VSZXNwb25zZSYmKSBvdmVycmlkZSB7IGRlbGV0ZSB0aGlz
OyB9CiAgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiwgUmVmPFNoYXJl
ZEJ1ZmZlcj4mJiwgaW50KSBvdmVycmlkZSB7IGRlbGV0ZSB0aGlzOyB9OwogICAgIHZvaWQgZGlk
RmluaXNoTG9hZGluZyhSZXNvdXJjZUhhbmRsZSosIGRvdWJsZSkgb3ZlcnJpZGUgeyBkZWxldGUg
dGhpczsgfQogICAgIHZvaWQgZGlkRmFpbChSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNl
RXJyb3ImKSBvdmVycmlkZSB7IGRlbGV0ZSB0aGlzOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcAko
cmV2aXNpb24gMjAxODczKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNv
dXJjZUhhbmRsZUNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwLDcgKzUwLDcgQEAgdm9p
ZCBSZXNvdXJjZUhhbmRsZUNsaWVudDo6d2lsbFNlbmRSZXF1ZQogICAgIGhhbmRsZS0+Y29udGlu
dWVXaWxsU2VuZFJlcXVlc3QoV1RGTW92ZShyZXF1ZXN0KSk7CiB9CiAKLXZvaWQgUmVzb3VyY2VI
YW5kbGVDbGllbnQ6OmRpZFJlY2VpdmVSZXNwb25zZUFzeW5jKFJlc291cmNlSGFuZGxlKiBoYW5k
bGUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKQordm9pZCBSZXNvdXJjZUhhbmRsZUNsaWVudDo6
ZGlkUmVjZWl2ZVJlc3BvbnNlQXN5bmMoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgUmVzb3VyY2VS
ZXNwb25zZSYmKQogewogICAgIGhhbmRsZS0+Y29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UoKTsK
IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVD
bGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jl
c291cmNlSGFuZGxlQ2xpZW50LmgJKHJldmlzaW9uIDIwMTg3MykKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaAkod29ya2luZyBjb3B5KQpA
QCAtNzEsNyArNzEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFdFQkNPUkVfRVhQ
T1JUIHZpcnR1YWwgUmVzb3VyY2VSZXF1ZXN0IHdpbGxTZW5kUmVxdWVzdChSZXNvdXJjZUhhbmRs
ZSosIFJlc291cmNlUmVxdWVzdCYmLCBSZXNvdXJjZVJlc3BvbnNlJiYpOwogICAgICAgICB2aXJ0
dWFsIHZvaWQgZGlkU2VuZERhdGEoUmVzb3VyY2VIYW5kbGUqLCB1bnNpZ25lZCBsb25nIGxvbmcg
LypieXRlc1NlbnQqLywgdW5zaWduZWQgbG9uZyBsb25nIC8qdG90YWxCeXRlc1RvQmVTZW50Ki8p
IHsgfQogCi0gICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VI
YW5kbGUqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgeyB9CisgICAgICAgIHZpcnR1YWwgdm9p
ZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqLCBSZXNvdXJjZVJlc3BvbnNlJiYp
IHsgfQogICAgICAgICAKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlc291
cmNlSGFuZGxlKiwgY29uc3QgY2hhciosIHVuc2lnbmVkLCBpbnQgLyplbmNvZGVkRGF0YUxlbmd0
aCovKSB7IH0KICAgICAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVC
dWZmZXIoUmVzb3VyY2VIYW5kbGUqLCBSZWY8U2hhcmVkQnVmZmVyPiYmLCBpbnQgZW5jb2RlZERh
dGFMZW5ndGgpOwpAQCAtODksNyArODksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
IFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCB3aWxsU2VuZFJlcXVlc3RBc3luYyhSZXNvdXJj
ZUhhbmRsZSosIFJlc291cmNlUmVxdWVzdCYmLCBSZXNvdXJjZVJlc3BvbnNlJiYpOwogCiAgICAg
ICAgIC8vIENsaWVudCB3aWxsIGNhbGwgUmVzb3VyY2VIYW5kbGU6OmNvbnRpbnVlRGlkUmVjZWl2
ZVJlc3BvbnNlKCkgd2hlbiByZWFkeS4KLSAgICAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2
b2lkIGRpZFJlY2VpdmVSZXNwb25zZUFzeW5jKFJlc291cmNlSGFuZGxlKiwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYpOworICAgICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgZGlkUmVj
ZWl2ZVJlc3BvbnNlQXN5bmMoUmVzb3VyY2VIYW5kbGUqLCBSZXNvdXJjZVJlc3BvbnNlJiYpOwog
CiAjaWYgVVNFKFBST1RFQ1RJT05fU1BBQ0VfQVVUSF9DQUxMQkFDSykKICAgICAgICAgLy8gQ2xp
ZW50IHdpbGwgcGFzcyBhbiB1cGRhdGVkIHJlcXVlc3QgdXNpbmcgUmVzb3VyY2VIYW5kbGU6OmNv
bnRpbnVlQ2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZSgpIHdoZW4gcmVhZHku
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VC
YXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jl
c291cmNlUmVzcG9uc2VCYXNlLmNwcAkocmV2aXNpb24gMjAxODczKQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQ3LDcgKzQ3LDYgQEAgaW5saW5lIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIFJlc291
cmNlUgogUmVzb3VyY2VSZXNwb25zZUJhc2U6OlJlc291cmNlUmVzcG9uc2VCYXNlKCkKICAgICA6
IG1faXNOdWxsKHRydWUpCiAgICAgLCBtX2V4cGVjdGVkQ29udGVudExlbmd0aCgwKQotICAgICwg
bV9pbmNsdWRlc0NlcnRpZmljYXRlSW5mbyhmYWxzZSkKICAgICAsIG1faHR0cFN0YXR1c0NvZGUo
MCkKIHsKIH0KQEAgLTU4LDcgKzU3LDcgQEAgUmVzb3VyY2VSZXNwb25zZUJhc2U6OlJlc291cmNl
UmVzcG9uc2VCYQogICAgICwgbV9taW1lVHlwZShtaW1lVHlwZSkKICAgICAsIG1fZXhwZWN0ZWRD
b250ZW50TGVuZ3RoKGV4cGVjdGVkTGVuZ3RoKQogICAgICwgbV90ZXh0RW5jb2RpbmdOYW1lKHRl
eHRFbmNvZGluZ05hbWUpCi0gICAgLCBtX2luY2x1ZGVzQ2VydGlmaWNhdGVJbmZvKHRydWUpIC8v
IEVtcHR5IGJ1dCB2YWxpZCBmb3Igc3ludGhldGljIHJlc3BvbnNlcy4KKyAgICAsIG1fY2VydGlm
aWNhdGVJbmZvKENlcnRpZmljYXRlSW5mbygpKSAvLyBFbXB0eSBidXQgdmFsaWQgZm9yIHN5bnRo
ZXRpYyByZXNwb25zZXMuCiAgICAgLCBtX2h0dHBTdGF0dXNDb2RlKDApCiB7CiB9CkBAIC0xODQs
MTUgKzE4Myw5IEBAIHZvaWQgUmVzb3VyY2VSZXNwb25zZUJhc2U6OnNldFRleHRFbmNvZGkKIAog
dm9pZCBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6aW5jbHVkZUNlcnRpZmljYXRlSW5mbygpIGNvbnN0
CiB7Ci0gICAgaWYgKG1faW5jbHVkZXNDZXJ0aWZpY2F0ZUluZm8pCisgICAgaWYgKG1fY2VydGlm
aWNhdGVJbmZvKQogICAgICAgICByZXR1cm47CiAgICAgbV9jZXJ0aWZpY2F0ZUluZm8gPSBzdGF0
aWNfY2FzdDxjb25zdCBSZXNvdXJjZVJlc3BvbnNlKj4odGhpcyktPnBsYXRmb3JtQ2VydGlmaWNh
dGVJbmZvKCk7Ci0gICAgbV9pbmNsdWRlc0NlcnRpZmljYXRlSW5mbyA9IHRydWU7Ci19Ci0KLUNl
cnRpZmljYXRlSW5mbyBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6Y2VydGlmaWNhdGVJbmZvKCkgY29u
c3QKLXsKLSAgICByZXR1cm4gbV9jZXJ0aWZpY2F0ZUluZm87CiB9CiAKIFN0cmluZyBSZXNvdXJj
ZVJlc3BvbnNlQmFzZTo6c3VnZ2VzdGVkRmlsZW5hbWUoKSBjb25zdApJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2Uu
aAkocmV2aXNpb24gMjAxODczKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZVJlc3BvbnNlQmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTQsOCArMTE0LDcgQEAg
cHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBzdWdnZXN0ZWRGaWxlbmFtZSgpIGNv
bnN0OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbmNsdWRlQ2VydGlmaWNhdGVJbmZvKCkg
Y29uc3Q7Ci0gICAgYm9vbCBjb250YWluc0NlcnRpZmljYXRlSW5mbygpIGNvbnN0IHsgcmV0dXJu
IG1faW5jbHVkZXNDZXJ0aWZpY2F0ZUluZm87IH0KLSAgICBXRUJDT1JFX0VYUE9SVCBDZXJ0aWZp
Y2F0ZUluZm8gY2VydGlmaWNhdGVJbmZvKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgY29u
c3QgT3B0aW9uYWw8Q2VydGlmaWNhdGVJbmZvPiYgY2VydGlmaWNhdGVJbmZvKCkgY29uc3QgeyBy
ZXR1cm4gbV9jZXJ0aWZpY2F0ZUluZm87IH07CiAgICAgCiAgICAgLy8gVGhlc2UgZnVuY3Rpb25z
IHJldHVybiBwYXJzZWQgdmFsdWVzIG9mIHRoZSBjb3JyZXNwb25kaW5nIHJlc3BvbnNlIGhlYWRl
cnMuCiAgICAgLy8gTmFOIG1lYW5zIHRoYXQgdGhlIGhlYWRlciB3YXMgbm90IHByZXNlbnQgb3Ig
aGFkIGludmFsaWQgdmFsdWUuCkBAIC0xOTAsOCArMTg5LDggQEAgcHJvdGVjdGVkOgogICAgIEhU
VFBIZWFkZXJNYXAgbV9odHRwSGVhZGVyRmllbGRzOwogICAgIG11dGFibGUgUmVzb3VyY2VMb2Fk
VGltaW5nIG1fcmVzb3VyY2VMb2FkVGltaW5nOwogCi0gICAgbXV0YWJsZSBib29sIG1faW5jbHVk
ZXNDZXJ0aWZpY2F0ZUluZm87Ci0gICAgbXV0YWJsZSBDZXJ0aWZpY2F0ZUluZm8gbV9jZXJ0aWZp
Y2F0ZUluZm87CisjZGVmaW5lIFJFU09VUkNFX1JFU1BPTlNFX0JBU0VfQ0VSVF9JTkZPX09QVElP
TkFMCisgICAgbXV0YWJsZSBPcHRpb25hbDxDZXJ0aWZpY2F0ZUluZm8+IG1fY2VydGlmaWNhdGVJ
bmZvOwogCiAgICAgaW50IG1faHR0cFN0YXR1c0NvZGU7CiAKQEAgLTIzNiw5ICsyMzUsNyBAQCB2
b2lkIFJlc291cmNlUmVzcG9uc2VCYXNlOjplbmNvZGUoRW5jb2RlCiAgICAgZW5jb2RlciA8PCBt
X2h0dHBIZWFkZXJGaWVsZHM7CiAgICAgZW5jb2RlciA8PCBtX3Jlc291cmNlTG9hZFRpbWluZzsK
ICAgICBlbmNvZGVyIDw8IG1faHR0cFN0YXR1c0NvZGU7Ci0gICAgZW5jb2RlciA8PCBtX2luY2x1
ZGVzQ2VydGlmaWNhdGVJbmZvOwotICAgIGlmIChtX2luY2x1ZGVzQ2VydGlmaWNhdGVJbmZvKQot
ICAgICAgICBlbmNvZGVyIDw8IG1fY2VydGlmaWNhdGVJbmZvOworICAgIGVuY29kZXIgPDwgbV9j
ZXJ0aWZpY2F0ZUluZm87CiAgICAgZW5jb2Rlci5lbmNvZGVFbnVtKG1fc291cmNlKTsKICAgICBl
bmNvZGVyLmVuY29kZUVudW0obV90eXBlKTsKICAgICBlbmNvZGVyIDw8IG1faXNSZWRpcmVjdGVk
OwpAQCAtMjc0LDEyICsyNzEsOCBAQCBib29sIFJlc291cmNlUmVzcG9uc2VCYXNlOjpkZWNvZGUo
RGVjb2RlCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJl
c3BvbnNlLm1faHR0cFN0YXR1c0NvZGUpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYg
KCFkZWNvZGVyLmRlY29kZShyZXNwb25zZS5tX2luY2x1ZGVzQ2VydGlmaWNhdGVJbmZvKSkKKyAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3BvbnNlLm1fY2VydGlmaWNhdGVJbmZvKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChyZXNwb25zZS5tX2luY2x1ZGVzQ2VydGlmaWNhdGVJ
bmZvKSB7Ci0gICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzcG9uc2UubV9jZXJ0aWZpY2F0
ZUluZm8pKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlRW51bShyZXNwb25zZS5tX3NvdXJjZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlRW51bShyZXNwb25zZS5tX3R5cGUpKQpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9TeW5jaHJvbm91c0xvYWRlckNsaWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9TeW5jaHJvbm91
c0xvYWRlckNsaWVudC5jcHAJKHJldmlzaW9uIDIwMTg3MykKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvU3luY2hyb25vdXNMb2FkZXJDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC02Miw5ICs2Miw5IEBAIGJvb2wgU3luY2hyb25vdXNMb2FkZXJDbGllbnQ6OmNhbkF1dGhl
bnQKIH0KICNlbmRpZgogCi12b2lkIFN5bmNocm9ub3VzTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZl
UmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25z
ZSkKK3ZvaWQgU3luY2hyb25vdXNMb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNv
dXJjZUhhbmRsZSosIFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSkKIHsKLSAgICBtX3Jlc3Bv
bnNlID0gcmVzcG9uc2U7CisgICAgbV9yZXNwb25zZSA9IFdURk1vdmUocmVzcG9uc2UpOwogfQog
CiB2b2lkIFN5bmNocm9ub3VzTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhh
bmRsZSosIGNvbnN0IGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgaW50IC8qZW5jb2RlZERh
dGFMZW5ndGgqLykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU3luY2hy
b25vdXNMb2FkZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50LmgJKHJldmlzaW9uIDIwMTg3MykKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU3luY2hyb25vdXNMb2FkZXJDbGllbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtNDgsNyArNDgsNyBAQCBwcml2YXRlOgogICAgIFJlc291cmNl
UmVxdWVzdCB3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VIYW5kbGUqLCBSZXNvdXJjZVJlcXVlc3Qm
JiwgUmVzb3VyY2VSZXNwb25zZSYmKSBvdmVycmlkZTsKICAgICBib29sIHNob3VsZFVzZUNyZWRl
bnRpYWxTdG9yYWdlKFJlc291cmNlSGFuZGxlKikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNl
aXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNl
KFJlc291cmNlSGFuZGxlKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOworICAg
IHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlKiwgUmVzb3VyY2VSZXNwb25z
ZSYmKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlKiwg
Y29uc3QgY2hhciosIHVuc2lnbmVkLCBpbnQgLyplbmNvZGVkRGF0YUxlbmd0aCovKSBvdmVycmlk
ZTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VIYW5kbGUqLCBkb3VibGUgLypm
aW5pc2hUaW1lKi8pIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFpbChSZXNvdXJjZUhhbmRsZSos
IGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdp
dGhPcGVyYXRpb25RdWV1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9w
ZXJhdGlvblF1ZXVlLmNwcAkocmV2aXNpb24gMjAxODczKQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0
aE9wZXJhdGlvblF1ZXVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYxLDcgKzE2MSw3IEBAIHZv
aWQgUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2EKICAgICAgICAgVU5VU0VEX1BB
UkFNKGNvbm5lY3Rpb24pOwogI2VuZGlmCiAgICAgICAgIAotICAgICAgICBtX2hhbmRsZS0+Y2xp
ZW50KCktPmRpZFJlY2VpdmVSZXNwb25zZUFzeW5jKG1faGFuZGxlLCByZXNvdXJjZVJlc3BvbnNl
KTsKKyAgICAgICAgbV9oYW5kbGUtPmNsaWVudCgpLT5kaWRSZWNlaXZlUmVzcG9uc2VBc3luYyht
X2hhbmRsZSwgV1RGTW92ZShyZXNvdXJjZVJlc3BvbnNlKSk7CiAgICAgfSk7CiAgICAgZGlzcGF0
Y2hfc2VtYXBob3JlX3dhaXQobV9zZW1hcGhvcmUsIERJU1BBVENIX1RJTUVfRk9SRVZFUik7CiB9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1N5bmNocm9ub3VzUmVz
b3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9TeW5jaHJvbm91c1Jlc291cmNlSGFuZGxl
Q0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuY3BwCShyZXZpc2lvbiAyMDE4NzMpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1N5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVS
TENvbm5lY3Rpb25EZWxlZ2F0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4MCw3ICsxODAsNyBA
QCB2b2lkIFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lCiAgICAgVU5VU0VEX1BB
UkFNKGNvbm5lY3Rpb24pOwogI2VuZGlmCiAgICAgCi0gICAgbV9oYW5kbGUtPmNsaWVudCgpLT5k
aWRSZWNlaXZlUmVzcG9uc2UobV9oYW5kbGUsIHJlc291cmNlUmVzcG9uc2UpOworICAgIG1faGFu
ZGxlLT5jbGllbnQoKS0+ZGlkUmVjZWl2ZVJlc3BvbnNlKG1faGFuZGxlLCBXVEZNb3ZlKHJlc291
cmNlUmVzcG9uc2UpKTsKIH0KIAogdm9pZCBTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxD
b25uZWN0aW9uRGVsZWdhdGU6OmRpZFJlY2VpdmVEYXRhKENGRGF0YVJlZiBkYXRhLCBDRkluZGV4
IG9yaWdpbmFsTGVuZ3RoKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9t
YWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZS5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0Rl
bGVnYXRlLm1tCShyZXZpc2lvbiAyMDE4NzMpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0xNjksNyArMTY5LDcgQEAgLSAodm9pZCljb25uZWN0aW9uOihOU1VSTENvbm5lY3Rp
b24gKiljbwogICAgIFVOVVNFRF9QQVJBTShjb25uZWN0aW9uKTsKICNlbmRpZgogICAgIAotICAg
IG1faGFuZGxlLT5jbGllbnQoKS0+ZGlkUmVjZWl2ZVJlc3BvbnNlKG1faGFuZGxlLCByZXNvdXJj
ZVJlc3BvbnNlKTsKKyAgICBtX2hhbmRsZS0+Y2xpZW50KCktPmRpZFJlY2VpdmVSZXNwb25zZSht
X2hhbmRsZSwgV1RGTW92ZShyZXNvdXJjZVJlc3BvbnNlKSk7CiB9CiAKICNpZiBVU0UoTkVUV09S
S19DRkRBVEFfQVJSQVlfQ0FMTEJBQ0spCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2Vi
Q29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tCShyZXZpc2lvbiAy
MDE4NzMpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVz
b3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUubW0JKHdvcmtpbmcgY29weSkKQEAg
LTIxNSw3ICsyMTUsNyBAQCAtICh2b2lkKWNvbm5lY3Rpb246KE5TVVJMQ29ubmVjdGlvbiAqKWNv
CiAjZWxzZQogICAgICAgICBVTlVTRURfUEFSQU0oY29ubmVjdGlvbik7CiAjZW5kaWYKLSAgICAg
ICAgbV9oYW5kbGUtPmNsaWVudCgpLT5kaWRSZWNlaXZlUmVzcG9uc2VBc3luYyhtX2hhbmRsZSwg
cmVzb3VyY2VSZXNwb25zZSk7CisgICAgICAgIG1faGFuZGxlLT5jbGllbnQoKS0+ZGlkUmVjZWl2
ZVJlc3BvbnNlQXN5bmMobV9oYW5kbGUsIFdURk1vdmUocmVzb3VyY2VSZXNwb25zZSkpOwogICAg
IH0pOwogCiAgICAgZGlzcGF0Y2hfc2VtYXBob3JlX3dhaXQobV9zZW1hcGhvcmUsIERJU1BBVENI
X1RJTUVfRk9SRVZFUik7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMDE4OTQpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw0NCBAQAorMjAx
Ni0wNi0xMCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisg
ICAgICAgIFJlZHVjZSBSZXNvdXJjZVJlc3BvbnNlIGNvcHlpbmcKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1ODIzMgorCisgICAgICAgIFJldmlld2Vk
IGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1Bl
bmRpbmdEb3dubG9hZC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFz
ay5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya0xvYWQ6OmNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0xvYWQ6OnNoYXJlZERpZFJlY2VpdmVSZXNwb25zZSk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkOjpzaGFyZWRXaWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVDaGFsbGVuZ2UpOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlTmV0d29ya1Nl
c3Npb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNl
QXN5bmMpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmg6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDbGllbnQuaDoKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUmVzb3VyY2VMb2FkZXI6OnJldHJpZXZlQ2FjaGVFbnRyeSk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6YWJvcnQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L05ldHdvcmtSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1BpbmdM
b2FkLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlQ29kZXJz
Lmg6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6Q29kZXI8T3B0aW9uYWw8VD4+Ojpl
bmNvZGUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkNvZGVyPE9wdGlvbmFsPFQ+
Pjo6ZGVjb2RlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVT
cGVjdWxhdGl2ZUxvYWQuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1
bGF0aXZlTG9hZDo6d2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdCk6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmg6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW06CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtEYXRhVGFzazo6ZGlkQ29tcGxldGVXaXRoRXJyb3IpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrRGF0YVRhc2s6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbToKKyAgICAgICAgKC1b
V0tOZXR3b3JrU2Vzc2lvbkRlbGVnYXRlIFVSTFNlc3Npb246ZGF0YVRhc2s6ZGlkUmVjZWl2ZVJl
c3BvbnNlOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJG
cmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDb21taXRMb2FkKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6
dXJsKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OmNlcnRpZmljYXRlSW5mbyk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkZyYW1lOjppbm5lclRleHQpOgorCiAyMDE2LTA2LTA5ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQ2xlYW4gdXAg
RWRpdG9yQ2xpZW50IGxpZmV0aW1lCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrRGF0YVRhc2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaAkocmV2aXNpb24gMjAxODczKQorKysgU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmgJKHdvcmtpbmcgY29weSkKQEAg
LTcwLDcgKzcwLDcgQEAgY2xhc3MgTmV0d29ya0RhdGFUYXNrQ2xpZW50IHsKIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgUmVkaXJlY3RDb21wbGV0
aW9uSGFuZGxlcikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQ2hhbGxlbmdlKGNv
bnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiwgQ2hhbGxlbmdlQ29tcGxldGlv
bkhhbmRsZXIpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlTmV0d29y
a1Nlc3Npb24oY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIFJlc3BvbnNlQ29tcGxl
dGlvbkhhbmRsZXIpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlTmV0
d29ya1Nlc3Npb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZXNwb25zZUNvbXBsZXRp
b25IYW5kbGVyKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tcGxldGVX
aXRoRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgZGlkQmVjb21lRG93bmxvYWQoKSA9IDA7CkBAIC0xMDAsNyArMTAwLDcgQEAgcHVibGlj
OgogICAgIHZvaWQgZGlkU2VuZERhdGEodWludDY0X3QgdG90YWxCeXRlc1NlbnQsIHVpbnQ2NF90
IHRvdGFsQnl0ZXNFeHBlY3RlZFRvU2VuZCk7CiAgICAgdm9pZCBkaWRSZWNlaXZlQ2hhbGxlbmdl
KGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiwgQ2hhbGxlbmdlQ29tcGxl
dGlvbkhhbmRsZXIpOwogICAgIHZvaWQgZGlkQ29tcGxldGVXaXRoRXJyb3IoY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VFcnJvciYpOwotICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyKTsKKyAg
ICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJl
c3BvbnNlQ29tcGxldGlvbkhhbmRsZXIpOwogICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJik7CiAgICAgdm9pZCBkaWRCZWNvbWVEb3dubG9hZCgpOwog
ICAgIApJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2Fk
LmNwcAkocmV2aXNpb24gMjAxODczKQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0xvYWQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTMsMTQgKzE1MywxMyBAQCB2b2lk
IE5ldHdvcmtMb2FkOjpjb250aW51ZURpZFJlY2VpdmVSZXNwCiAgICAgICAgIG1faGFuZGxlLT5j
b250aW51ZURpZFJlY2VpdmVSZXNwb25zZSgpOwogfQogCi1OZXR3b3JrTG9hZENsaWVudDo6U2hv
dWxkQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UgTmV0d29ya0xvYWQ6OnNoYXJlZERpZFJlY2Vp
dmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWNlaXZlZFJlc3BvbnNlKQorTmV0
d29ya0xvYWRDbGllbnQ6OlNob3VsZENvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlIE5ldHdvcmtM
b2FkOjpzaGFyZWREaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNl
KQogewotICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UgPSByZWNlaXZlZFJlc3BvbnNlOwog
ICAgIHJlc3BvbnNlLnNldFNvdXJjZShSZXNvdXJjZVJlc3BvbnNlOjpTb3VyY2U6Ok5ldHdvcmsp
OwogICAgIGlmIChtX3BhcmFtZXRlcnMubmVlZHNDZXJ0aWZpY2F0ZUluZm8pCiAgICAgICAgIHJl
c3BvbnNlLmluY2x1ZGVDZXJ0aWZpY2F0ZUluZm8oKTsKIAotICAgIHJldHVybiBtX2NsaWVudC5k
aWRSZWNlaXZlUmVzcG9uc2UocmVzcG9uc2UpOworICAgIHJldHVybiBtX2NsaWVudC5kaWRSZWNl
aXZlUmVzcG9uc2UoV1RGTW92ZShyZXNwb25zZSkpOwogfQogCiB2b2lkIE5ldHdvcmtMb2FkOjpz
aGFyZWRXaWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3Qs
IFJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlKQpAQCAtMjM5LDEyICsyMzgsMTIg
QEAgdm9pZCBOZXR3b3JrTG9hZDo6ZGlkUmVjZWl2ZUNoYWxsZW5nZShjbwogICAgICAgICBtX2Ns
aWVudC5jYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlQXN5bmMoY2hhbGxlbmdl
LnByb3RlY3Rpb25TcGFjZSgpKTsKIH0KIAotdm9pZCBOZXR3b3JrTG9hZDo6ZGlkUmVjZWl2ZVJl
c3BvbnNlTmV0d29ya1Nlc3Npb24oY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJl
c3BvbnNlQ29tcGxldGlvbkhhbmRsZXIgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtM
b2FkOjpkaWRSZWNlaXZlUmVzcG9uc2VOZXR3b3JrU2Vzc2lvbihSZXNvdXJjZVJlc3BvbnNlJiYg
cmVzcG9uc2UsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIgY29tcGxldGlvbkhhbmRsZXIpCiB7
CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBpZiAobV90YXNrICYmIG1fdGFzay0+
cGVuZGluZ0Rvd25sb2FkSUQoKS5kb3dubG9hZElEKCkpCiAgICAgICAgIE5ldHdvcmtQcm9jZXNz
OjpzaW5nbGV0b24oKS5maW5kUGVuZGluZ0Rvd25sb2FkTG9jYXRpb24oKm1fdGFzay5nZXQoKSwg
Y29tcGxldGlvbkhhbmRsZXIsIG1fdGFzay0+Y3VycmVudFJlcXVlc3QoKSk7Ci0gICAgZWxzZSBp
ZiAoc2hhcmVkRGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlKSA9PSBOZXR3b3JrTG9hZENsaWVu
dDo6U2hvdWxkQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2U6OlllcykKKyAgICBlbHNlIGlmIChz
aGFyZWREaWRSZWNlaXZlUmVzcG9uc2UoV1RGTW92ZShyZXNwb25zZSkpID09IE5ldHdvcmtMb2Fk
Q2xpZW50OjpTaG91bGRDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZTo6WWVzKQogICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihQb2xpY3lVc2UpOwogICAgIGVsc2UKICAgICAgICAgbV9yZXNwb25z
ZUNvbXBsZXRpb25IYW5kbGVyID0gY29tcGxldGlvbkhhbmRsZXI7CkBAIC0yODcsMTAgKzI4Niwx
MCBAQCB2b2lkIE5ldHdvcmtMb2FkOjpjYW5ub3RTaG93VVJMKCkKICAgICAKICNlbmRpZgogCi12
b2lkIE5ldHdvcmtMb2FkOjpkaWRSZWNlaXZlUmVzcG9uc2VBc3luYyhSZXNvdXJjZUhhbmRsZSog
aGFuZGxlLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWNlaXZlZFJlc3BvbnNlKQordm9pZCBO
ZXR3b3JrTG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlQXN5bmMoUmVzb3VyY2VIYW5kbGUqIGhhbmRs
ZSwgUmVzb3VyY2VSZXNwb25zZSYmIHJlY2VpdmVkUmVzcG9uc2UpCiB7CiAgICAgQVNTRVJUX1VO
VVNFRChoYW5kbGUsIGhhbmRsZSA9PSBtX2hhbmRsZSk7Ci0gICAgaWYgKHNoYXJlZERpZFJlY2Vp
dmVSZXNwb25zZShyZWNlaXZlZFJlc3BvbnNlKSA9PSBOZXR3b3JrTG9hZENsaWVudDo6U2hvdWxk
Q29udGludWVEaWRSZWNlaXZlUmVzcG9uc2U6OlllcykKKyAgICBpZiAoc2hhcmVkRGlkUmVjZWl2
ZVJlc3BvbnNlKFdURk1vdmUocmVjZWl2ZWRSZXNwb25zZSkpID09IE5ldHdvcmtMb2FkQ2xpZW50
OjpTaG91bGRDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZTo6WWVzKQogICAgICAgICBtX2hhbmRs
ZS0+Y29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UoKTsKIH0KIApJbmRleDogU291cmNlL1dlYktp
dDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oCShyZXZpc2lvbiAyMDE4NzMpCisrKyBT
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oCSh3b3JraW5nIGNvcHkp
CkBAIC02Nyw3ICs2Nyw3IEBAIHB1YmxpYzoKICAgICAvLyBOZXR3b3JrRGF0YVRhc2tDbGllbnQK
ICAgICB2b2lkIHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFJlZGlyZWN0Q29tcGxldGlvbkhh
bmRsZXIpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZUNoYWxsZW5nZShjb25zdCBXZWJDb3Jl
OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyKSBm
aW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZU5ldHdvcmtTZXNzaW9uKGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyKSBmaW5h
bDsKKyAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZU5ldHdvcmtTZXNzaW9uKFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmJiwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlcikgZmluYWw7CiAgICAg
dm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsK
ICAgICB2b2lkIGRpZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJy
b3ImKSBmaW5hbDsKICAgICB2b2lkIGRpZEJlY29tZURvd25sb2FkKCkgZmluYWw7CkBAIC03OCw3
ICs3OCw3IEBAIHB1YmxpYzoKICAgICAvLyBSZXNvdXJjZUhhbmRsZUNsaWVudAogICAgIHZvaWQg
d2lsbFNlbmRSZXF1ZXN0QXN5bmMoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVz
cG9uc2UpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkU2VuZERhdGEoV2ViQ29yZTo6UmVzb3VyY2VI
YW5kbGUqLCB1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcg
dG90YWxCeXRlc1RvQmVTZW50KSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25z
ZUFzeW5jKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlQXN5bmMoV2Vi
Q29yZTo6UmVzb3VyY2VIYW5kbGUqLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYpIG92ZXJy
aWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBj
b25zdCBjaGFyKiwgdW5zaWduZWQsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwgUmVmPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIG92
ZXJyaWRlOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhXZWJDb3JlOjpSZXNvdXJjZUhhbmRs
ZSosIGRvdWJsZSBmaW5pc2hUaW1lKSBvdmVycmlkZTsKQEAgLTExNiw3ICsxMTYsNyBAQCBwdWJs
aWM6CiAjZW5kaWYKIAogcHJpdmF0ZToKLSAgICBOZXR3b3JrTG9hZENsaWVudDo6U2hvdWxkQ29u
dGludWVEaWRSZWNlaXZlUmVzcG9uc2Ugc2hhcmVkRGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKKyAgICBOZXR3b3JrTG9hZENsaWVudDo6U2hvdWxk
Q29udGludWVEaWRSZWNlaXZlUmVzcG9uc2Ugc2hhcmVkRGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmJik7CiAgICAgdm9pZCBzaGFyZWRXaWxsU2VuZFJlZGlyZWN0
ZWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiYpOwogCiAgICAgTmV0d29ya0xvYWRDbGllbnQmIG1fY2xpZW50OwpJbmRleDogU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDbGllbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENsaWVudC5oCShy
ZXZpc2lvbiAyMDE4NzMpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
TG9hZENsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw4ICsyMyw3IEBACiAgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBOZXR3b3JrTG9hZENsaWVu
dF9oCi0jZGVmaW5lIE5ldHdvcmtMb2FkQ2xpZW50X2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVk
ZSA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJl
cXVlc3QuaD4KQEAgLTUyLDcgKzUxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBjYW5B
dXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlQXN5bmMoY29uc3QgV2ViQ29yZTo6UHJv
dGVjdGlvblNwYWNlJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsU2VuZFJlZGlyZWN0ZWRS
ZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmJiByZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVj
dFJlc3BvbnNlKSA9IDA7CiAgICAgZW51bSBjbGFzcyBTaG91bGRDb250aW51ZURpZFJlY2VpdmVS
ZXNwb25zZSB7IE5vLCBZZXMgfTsKLSAgICB2aXJ0dWFsIFNob3VsZENvbnRpbnVlRGlkUmVjZWl2
ZVJlc3BvbnNlIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJikgPSAwOworICAgIHZpcnR1YWwgU2hvdWxkQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2Ug
ZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJikgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IGRpZEZpbmlzaExvYWRpbmcoZG91YmxlIGZpbmlzaFRpbWUpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgZGlkRmFpbExvYWRpbmcoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpID0gMDsKQEAg
LTYyLDYgKzYxLDMgQEAgcHVibGljOgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNl
bmRpZiAvLyBOZXR3b3JrTG9hZENsaWVudF9oCi0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAkocmV2aXNp
b24gMjAxODczKQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291
cmNlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc4LDcgKzE3OCw3IEBAIHZvaWQgTmV0
d29ya1Jlc291cmNlTG9hZGVyOjpyZXRyaWV2ZUNhY2gKICAgICAgICAgICAgIGxvYWRlci0+ZGlz
cGF0Y2hXaWxsU2VuZFJlcXVlc3RGb3JDYWNoZUVudHJ5KFdURk1vdmUoZW50cnkpKTsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBpZiAobG9hZGVyLT5tX3BhcmFtZXRl
cnMubmVlZHNDZXJ0aWZpY2F0ZUluZm8gJiYgIWVudHJ5LT5yZXNwb25zZSgpLmNvbnRhaW5zQ2Vy
dGlmaWNhdGVJbmZvKCkpIHsKKyAgICAgICAgaWYgKGxvYWRlci0+bV9wYXJhbWV0ZXJzLm5lZWRz
Q2VydGlmaWNhdGVJbmZvICYmICFlbnRyeS0+cmVzcG9uc2UoKS5jZXJ0aWZpY2F0ZUluZm8oKSkg
ewogICAgICAgICAgICAgbG9hZGVyLT5zdGFydE5ldHdvcmtMb2FkKHJlcXVlc3QpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0yNzQsNyArMjc0LDcgQEAgdm9pZCBOZXR3b3Jr
UmVzb3VyY2VMb2FkZXI6OmFib3J0KCkKICAgICBjbGVhbnVwKCk7CiB9CiAKLWF1dG8gTmV0d29y
a1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYgcmVjZWl2ZWRSZXNwb25zZSkgLT4gU2hvdWxkQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UK
K2F1dG8gTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VS
ZXNwb25zZSYmIHJlY2VpdmVkUmVzcG9uc2UpIC0+IFNob3VsZENvbnRpbnVlRGlkUmVjZWl2ZVJl
c3BvbnNlCiB7CiAgICAgTkVUV09SS1JFU09VUkNFTE9BREVSX0xPR19BTFdBWVMoIlJlY2VpdmVk
IG5ldHdvcmsgcmVzb3VyY2UgcmVzcG9uc2U6IGxvYWRlciA9ICVwLCBwYWdlSUQgPSAlbGx1LCBm
cmFtZUlEID0gJWxsdSwgaXNNYWluUmVzb3VyY2UgPSAlZCwgaXNTeW5jaHJvbm91cyA9ICVkLCBo
dHRwU3RhdHVzQ29kZSA9ICVkIiwgdGhpcywgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJh
bWV0ZXJzLndlYkZyYW1lSUQsIGlzTWFpblJlc291cmNlKCksIGlzU3luY2hyb25vdXMoKSwgcmVj
ZWl2ZWRSZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpKTsKIApJbmRleDogU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgJKHJldmlz
aW9uIDIwMTg3MykKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNv
dXJjZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC04OCw3ICs4OCw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2VBc3luYyhjb25zdCBX
ZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2UmKSBvdmVycmlkZTsKICAgICBib29sIGlzU3luY2hyb25v
dXMoKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIHdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3Qo
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJl
ZGlyZWN0UmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmKSBvdmVycmlkZTsKLSAg
ICBTaG91bGRDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSBkaWRSZWNlaXZlUmVzcG9uc2UoY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOworICAgIFNob3VsZENvbnRp
bnVlRGlkUmVjZWl2ZVJlc3BvbnNlIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgb3Zl
cnJpZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGRvdWJsZSBmaW5pc2hUaW1lKSBvdmVy
cmlkZTsKICAgICB2b2lkIGRpZEZhaWxMb2FkaW5nKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJy
b3ImKSBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL1BpbmdM
b2FkLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvUGluZ0xv
YWQuaAkocmV2aXNpb24gMjAxODczKQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mv
UGluZ0xvYWQuaAkod29ya2luZyBjb3B5KQpAQCAtNTgsNyArNTgsNyBAQCBwcml2YXRlOgogICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9u
OjpDYW5jZWwsIHsgfSk7CiAgICAgICAgIGRlbGV0ZSB0aGlzOwogICAgIH0KLSAgICB2b2lkIGRp
ZFJlY2VpdmVSZXNwb25zZU5ldHdvcmtTZXNzaW9uKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyIGNvbXBsZXRpb25IYW5kbGVyKSBvdmVy
cmlkZQorICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlTmV0d29ya1Nlc3Npb24oV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYmLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyIGNvbXBsZXRpb25I
YW5kbGVyKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV2ViQ29y
ZTo6UG9saWN5QWN0aW9uOjpQb2xpY3lJZ25vcmUpOwogICAgICAgICBkZWxldGUgdGhpczsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxv
YWQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9h
ZHMvUGVuZGluZ0Rvd25sb2FkLmgJKHJldmlzaW9uIDIwMTg3MykKKysrIFNvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuaAkod29ya2luZyBjb3B5
KQpAQCAtNTUsNyArNTUsNyBAQCBwcml2YXRlOiAgICAKICAgICB2b2lkIGNhbkF1dGhlbnRpY2F0
ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2VBc3luYyhjb25zdCBXZWJDb3JlOjpQcm90ZWN0aW9uU3Bh
Y2UmKSBvdmVycmlkZTsKICAgICBib29sIGlzU3luY2hyb25vdXMoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBmYWxzZTsgfQogICAgIHZvaWQgd2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJl
Y3RSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSkg
b3ZlcnJpZGU7Ci0gICAgU2hvdWxkQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UgZGlkUmVjZWl2
ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZSB7IHJl
dHVybiBTaG91bGRDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZTo6Tm87IH07CisgICAgU2hvdWxk
Q29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmJikgb3ZlcnJpZGUgeyByZXR1cm4gU2hvdWxkQ29udGludWVEaWRSZWNl
aXZlUmVzcG9uc2U6Ok5vOyB9OwogICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJp
ZGUgeyB9OwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhkb3VibGUgZmluaXNoVGltZSkgb3Zl
cnJpZGUgeyB9OwogICAgIHZvaWQgZGlkRmFpbExvYWRpbmcoY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvciYpIG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlQ29kZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlQ29kZXJzLmgJKHJldmlzaW9uIDIwMTg3
MykKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUNv
ZGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw4ICsyMyw3IEBACiAgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBOZXR3b3JrQ2FjaGVDb2RlcnNfaAot
I2RlZmluZSBOZXR3b3JrQ2FjaGVDb2RlcnNfaAorI3ByYWdtYSBvbmNlCiAKICNpZiBFTkFCTEUo
TkVUV09SS19DQUNIRSkKIApAQCAtODEsNiArODAsMzggQEAgdGVtcGxhdGU8dHlwZW5hbWUgUmVw
LCB0eXBlbmFtZSBQZXJpb2Q+IAogICAgIH0KIH07CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0
cnVjdCBDb2RlcjxPcHRpb25hbDxUPj4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVy
JiBlbmNvZGVyLCBjb25zdCBPcHRpb25hbDxUPiYgb3B0aW9uYWwpCisgICAgeworICAgICAgICBp
ZiAoIW9wdGlvbmFsKSB7CisgICAgICAgICAgICBlbmNvZGVyIDw8IGZhbHNlOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBlbmNvZGVyIDw8IHRydWU7
CisgICAgICAgIGVuY29kZXIgPDwgb3B0aW9uYWwudmFsdWUoKTsKKyAgICB9CisgICAgCisgICAg
c3RhdGljIGJvb2wgZGVjb2RlKERlY29kZXImIGRlY29kZXIsIE9wdGlvbmFsPFQ+JiBvcHRpb25h
bCkKKyAgICB7CisgICAgICAgIGJvb2wgaXNFbmdhZ2VkOworICAgICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKGlzRW5nYWdlZCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIAor
ICAgICAgICBpZiAoIWlzRW5nYWdlZCkgeworICAgICAgICAgICAgb3B0aW9uYWwgPSBOdWxsb3B0
OworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAg
IFQgdmFsdWU7CisgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUodmFsdWUpKQorICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICAKKyAgICAgICAgb3B0aW9uYWwgPSBXVEZNb3ZlKHZh
bHVlKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorfTsKKwogdGVtcGxhdGU8dHlwZW5h
bWUgS2V5VHlwZSwgdHlwZW5hbWUgVmFsdWVUeXBlPiBzdHJ1Y3QgQ29kZXI8V1RGOjpLZXlWYWx1
ZVBhaXI8S2V5VHlwZSwgVmFsdWVUeXBlPj4gewogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNv
ZGVyJiBlbmNvZGVyLCBjb25zdCBXVEY6OktleVZhbHVlUGFpcjxLZXlUeXBlLCBWYWx1ZVR5cGU+
JiBwYWlyKQogICAgIHsKQEAgLTI2Nyw0ICsyOTgsMyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBDb2Rl
cjxXZWJDb3JlOjpIVFRQSGVhCiB9CiB9CiAjZW5kaWYKLSNlbmRpZgpJbmRleDogU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwCShyZXZpc2lvbiAyMDE4NzMpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MCw3ICs3MCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVMb2Fk
Ojp3aWxsU2VuZFJlZGlyZWN0ZWQKICAgICBhYm9ydCgpOwogfQogCi1hdXRvIFNwZWN1bGF0aXZl
TG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlY2VpdmVk
UmVzcG9uc2UpIC0+IFNob3VsZENvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlCithdXRvIFNwZWN1
bGF0aXZlTG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZWNlaXZl
ZFJlc3BvbnNlKSAtPiBTaG91bGRDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZQogewogICAgIG1f
cmVzcG9uc2UgPSByZWNlaXZlZFJlc3BvbnNlOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVj
dWxhdGl2ZUxvYWQuaAkocmV2aXNpb24gMjAxODczKQorKysgU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTU3LDcgKzU3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNhbkF1dGhlbnRpY2F0ZUFn
YWluc3RQcm90ZWN0aW9uU3BhY2VBc3luYyhjb25zdCBXZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2Um
KSBvdmVycmlkZSB7IH0KICAgICBib29sIGlzU3luY2hyb25vdXMoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBmYWxzZTsgfQogICAgIHZvaWQgd2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJl
Y3RSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSkg
b3ZlcnJpZGU7Ci0gICAgU2hvdWxkQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UgZGlkUmVjZWl2
ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKKyAg
ICBTaG91bGRDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSBkaWRSZWNlaXZlUmVzcG9uc2UoV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYmKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVC
dWZmZXIoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERh
dGFMZW5ndGgpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhkb3VibGUgZmlu
aXNoVGltZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGYWlsTG9hZGluZyhjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQko
cmV2aXNpb24gMjAxODczKQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY29jb2Ev
TmV0d29ya0RhdGFUYXNrQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTE2NSwxMCArMTY1LDEw
IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrOjpkaWRDb21wbGV0ZVdpdGhFcnIKICAgICAgICAgbV9j
bGllbnQtPmRpZENvbXBsZXRlV2l0aEVycm9yKGVycm9yKTsKIH0KIAotdm9pZCBOZXR3b3JrRGF0
YVRhc2s6OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZSwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciBjb21wbGV0aW9uSGFuZGxlcikK
K3ZvaWQgTmV0d29ya0RhdGFUYXNrOjpkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYmIHJlc3BvbnNlLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyIGNvbXBsZXRp
b25IYW5kbGVyKQogewogICAgIGlmIChtX2NsaWVudCkKLSAgICAgICAgbV9jbGllbnQtPmRpZFJl
Y2VpdmVSZXNwb25zZU5ldHdvcmtTZXNzaW9uKHJlc3BvbnNlLCBjb21wbGV0aW9uSGFuZGxlcik7
CisgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlUmVzcG9uc2VOZXR3b3JrU2Vzc2lvbihXVEZN
b3ZlKHJlc3BvbnNlKSwgY29tcGxldGlvbkhhbmRsZXIpOwogICAgIGVsc2UgewogICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV2ViQ29yZTo6
UG9saWN5QWN0aW9uOjpQb2xpY3lJZ25vcmUpOwpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCShy
ZXZpc2lvbiAyMDE4NzMpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9O
ZXR3b3JrU2Vzc2lvbkNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNDcsNyArMjQ3LDcgQEAg
LSAodm9pZClVUkxTZXNzaW9uOihOU1VSTFNlc3Npb24gKilzZXNzaQogICAgICAgICBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlIHJlc291cmNlUmVzcG9uc2UocmVzcG9uc2UpOwogICAgICAgICBj
b3B5VGltaW5nRGF0YShbZGF0YVRhc2sgX3RpbWluZ0RhdGFdLCByZXNvdXJjZVJlc3BvbnNlLnJl
c291cmNlTG9hZFRpbWluZygpKTsKICAgICAgICAgYXV0byBjb21wbGV0aW9uSGFuZGxlckNvcHkg
PSBCbG9ja19jb3B5KGNvbXBsZXRpb25IYW5kbGVyKTsKLSAgICAgICAgbmV0d29ya0RhdGFUYXNr
LT5kaWRSZWNlaXZlUmVzcG9uc2UocmVzb3VyY2VSZXNwb25zZSwgW2NvbXBsZXRpb25IYW5kbGVy
Q29weSwgdGFza0lkZW50aWZpZXJdKFdlYkNvcmU6OlBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24p
IHsKKyAgICAgICAgbmV0d29ya0RhdGFUYXNrLT5kaWRSZWNlaXZlUmVzcG9uc2UoV1RGTW92ZShy
ZXNvdXJjZVJlc3BvbnNlKSwgW2NvbXBsZXRpb25IYW5kbGVyQ29weSwgdGFza0lkZW50aWZpZXJd
KFdlYkNvcmU6OlBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24pIHsKICAgICAgICAgICAgIExPRyhO
ZXR3b3JrU2Vzc2lvbiwgIiVsbHUgZGlkUmVjZWl2ZVJlc3BvbnNlIGNvbXBsZXRpb25IYW5kbGVy
IChjYW5jZWwpIiwgdGFza0lkZW50aWZpZXIpOwogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXJDb3B5KHRvTlNVUkxTZXNzaW9uUmVzcG9uc2VEaXNwb3NpdGlvbihwb2xpY3lBY3Rpb24pKTsK
ICAgICAgICAgICAgIEJsb2NrX3JlbGVhc2UoY29tcGxldGlvbkhhbmRsZXJDb3B5KTsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCShyZXZpc2lvbiAyMDE4NzMpCisrKyBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDY4LDcgKzQ2OCw3IEBAIHZvaWQgV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ28KIAogICAgIC8vIE5vdGlmeSB0aGUgVUlQcm9jZXNz
LgogCi0gICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRDb21taXRM
b2FkRm9yRnJhbWUobV9mcmFtZS0+ZnJhbWVJRCgpLCBkb2N1bWVudExvYWRlci5uYXZpZ2F0aW9u
SUQoKSwgZG9jdW1lbnRMb2FkZXIucmVzcG9uc2UoKS5taW1lVHlwZSgpLCBtX2ZyYW1lSGFzQ3Vz
dG9tQ29udGVudFByb3ZpZGVyLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4obV9mcmFtZS0+Y29yZUZy
YW1lKCktPmxvYWRlcigpLmxvYWRUeXBlKCkpLCBkb2N1bWVudExvYWRlci5yZXNwb25zZSgpLmNl
cnRpZmljYXRlSW5mbygpLCBtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+ZG9jdW1lbnQoKS0+aXNQbHVn
aW5Eb2N1bWVudCgpLCBVc2VyRGF0YShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50cmFuc2Zvcm1P
YmplY3RzVG9IYW5kbGVzKHVzZXJEYXRhLmdldCgpKS5nZXQoKSkpKTsKKyAgICB3ZWJQYWdlLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZENvbW1pdExvYWRGb3JGcmFtZShtX2ZyYW1l
LT5mcmFtZUlEKCksIGRvY3VtZW50TG9hZGVyLm5hdmlnYXRpb25JRCgpLCBkb2N1bWVudExvYWRl
ci5yZXNwb25zZSgpLm1pbWVUeXBlKCksIG1fZnJhbWVIYXNDdXN0b21Db250ZW50UHJvdmlkZXIs
IHN0YXRpY19jYXN0PHVpbnQzMl90PihtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+bG9hZGVyKCkubG9h
ZFR5cGUoKSksIGRvY3VtZW50TG9hZGVyLnJlc3BvbnNlKCkuY2VydGlmaWNhdGVJbmZvKCkudmFs
dWVPckNvbXB1dGUoW10geyByZXR1cm4gQ2VydGlmaWNhdGVJbmZvKCk7IH0pLCBtX2ZyYW1lLT5j
b3JlRnJhbWUoKS0+ZG9jdW1lbnQoKS0+aXNQbHVnaW5Eb2N1bWVudCgpLCBVc2VyRGF0YShXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVzZXJEYXRhLmdl
dCgpKS5nZXQoKSkpKTsKICAgICB3ZWJQYWdlLT5kaWRDb21taXRMb2FkKG1fZnJhbWUpOwogfQog
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5j
cHAJKHJldmlzaW9uIDIwMTg3MykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJGcmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5NywxNiArMzk3LDE2IEBAIFN0cmlu
ZyBXZWJGcmFtZTo6dXJsKCkgY29uc3QKICAgICByZXR1cm4gZG9jdW1lbnRMb2FkZXItPnVybCgp
LnN0cmluZygpOwogfQogCi1XZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8gV2ViRnJhbWU6OmNlcnRp
ZmljYXRlSW5mbygpIGNvbnN0CitDZXJ0aWZpY2F0ZUluZm8gV2ViRnJhbWU6OmNlcnRpZmljYXRl
SW5mbygpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2NvcmVGcmFtZSkKLSAgICAgICAgcmV0dXJuIENl
cnRpZmljYXRlSW5mbygpOworICAgICAgICByZXR1cm4geyB9OwogCiAgICAgRG9jdW1lbnRMb2Fk
ZXIqIGRvY3VtZW50TG9hZGVyID0gbV9jb3JlRnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVy
KCk7CiAgICAgaWYgKCFkb2N1bWVudExvYWRlcikKLSAgICAgICAgcmV0dXJuIENlcnRpZmljYXRl
SW5mbygpOworICAgICAgICByZXR1cm4geyB9OwogCi0gICAgcmV0dXJuIGRvY3VtZW50TG9hZGVy
LT5yZXNwb25zZSgpLmNlcnRpZmljYXRlSW5mbygpOworICAgIHJldHVybiBkb2N1bWVudExvYWRl
ci0+cmVzcG9uc2UoKS5jZXJ0aWZpY2F0ZUluZm8oKS52YWx1ZU9yQ29tcHV0ZShbXSB7IHJldHVy
biBDZXJ0aWZpY2F0ZUluZm8oKTsgfSk7CiB9CiAKIFN0cmluZyBXZWJGcmFtZTo6aW5uZXJUZXh0
KCkgY29uc3QK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>281036</attachid>
            <date>2016-06-10 13:05:04 -0700</date>
            <delta_ts>2016-06-10 13:15:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158232-20160610130637.patch</filename>
            <type>text/plain</type>
            <size>44007</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwMTkzNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYwIEBACisyMDE2LTA2LTEwICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVkdWNlIFJl
c291cmNlUmVzcG9uc2UgY29weWluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTU4MjMyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIu
CisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiAgTm8gY2hhbmdlIGluIGJlaGF2aW9yIGV4Y2VwdCBy
ZW1vdmluZyBhbiB1bm5lY2Vzc2FyeSBjb3B5LgorCisgICAgICAgICogbG9hZGVyL1Jlc291cmNl
TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpkaWRTZW5kRGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNl
KToKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFw
cGxpY2F0aW9uQ2FjaGVHcm91cDo6Y3JlYXRlUmVzb3VyY2VIYW5kbGUpOgorICAgICAgICAoV2Vi
Q29yZTo6QXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAg
ICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpCbG9iUmVzb3VyY2VIYW5kbGU6Om5vdGlmeVJlc3BvbnNlT25TdWNjZXNzKToKKyAgICAgICAg
KFdlYkNvcmU6OkJsb2JSZXNvdXJjZUhhbmRsZTo6bm90aWZ5UmVzcG9uc2VPbkVycm9yKToKKyAg
ICAgICAgKFdlYkNvcmU6OkJsb2JSZXNvdXJjZUhhbmRsZTo6bm90aWZ5UmVjZWl2ZURhdGEpOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRGF0YVVSTC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpoYW5kbGVEYXRhVVJMKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1BpbmdIYW5kbGUu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlBpbmdIYW5kbGU6OlBpbmdIYW5kbGUpOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVzb3VyY2VIYW5kbGVDbGllbnQ6OndpbGxTZW5kUmVxdWVzdEFzeW5jKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRSZWNlaXZlUmVzcG9uc2VBc3lu
Yyk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5oOgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDbGllbnQ6OmRpZFNlbmREYXRhKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRSZWNlaXZlUmVzcG9uc2Up
OgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDbGllbnQ6OmRpZFJlY2VpdmVEYXRh
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjpSZXNvdXJjZVJlc3BvbnNl
QmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6aW5jbHVkZUNl
cnRpZmljYXRlSW5mbyk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6
c3VnZ2VzdGVkRmlsZW5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJh
c2U6OmNlcnRpZmljYXRlSW5mbyk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZUJhc2U6OmNlcnRpZmljYXRlSW5mbyk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlQmFzZTo6ZW5jb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VC
YXNlOjpkZWNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6OmNv
bnRhaW5zQ2VydGlmaWNhdGVJbmZvKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN5bmNo
cm9ub3VzTG9hZGVyQ2xpZW50OjpjYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNl
KToKKyAgICAgICAgKFdlYkNvcmU6OlN5bmNocm9ub3VzTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZl
UmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6U3luY2hyb25vdXNMb2FkZXJDbGllbnQ6OmRp
ZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1N5bmNocm9ub3VzTG9h
ZGVyQ2xpZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRs
ZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0
aW9uUXVldWU6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9jZi9TeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVj
dGlvbkRlbGVnYXRlOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6U3lu
Y2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlOjpkaWRSZWNlaXZl
RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFu
ZGxlQXNEZWxlZ2F0ZS5tbToKKyAgICAgICAgKC1bV2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxl
Z2F0ZSBjb25uZWN0aW9uOmRpZFJlY2VpdmVSZXNwb25zZTpdKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdh
dGUubW06CisgICAgICAgICgtW1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVE
ZWxlZ2F0ZSBjb25uZWN0aW9uOmRpZFJlY2VpdmVSZXNwb25zZTpdKToKKwogMjAxNi0wNi0xMCAg
WW91ZW5uIEZhYmxldCAgPHlvdWVubi5mYWJsZXRAY3JmLmNhbm9uLmZyPgogCiAgICAgICAgIE9y
aWdpbiBoZWFkZXIgaXMgbm90IGluY2x1ZGVkIGluIENPUlMgcmVxdWVzdHMgZm9yIHByZWxvYWRl
ZCBjcm9zcy1vcmlnaW4gcmVzb3VyY2VzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVz
b3VyY2VMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNv
dXJjZUxvYWRlci5jcHAJKHJldmlzaW9uIDIwMTg3MykKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9SZXNvdXJjZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYxOCw3ICs2MTgsNyBAQCB2
b2lkIFJlc291cmNlTG9hZGVyOjpkaWRTZW5kRGF0YShSZXNvdXJjCiAgICAgZGlkU2VuZERhdGEo
Ynl0ZXNTZW50LCB0b3RhbEJ5dGVzVG9CZVNlbnQpOwogfQogCi12b2lkIFJlc291cmNlTG9hZGVy
OjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiByZXNwb25zZSkKK3ZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShS
ZXNvdXJjZUhhbmRsZSosIFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSkKIHsKICAgICBpZiAo
ZG9jdW1lbnRMb2FkZXIoKS0+YXBwbGljYXRpb25DYWNoZUhvc3QoKS0+bWF5YmVMb2FkRmFsbGJh
Y2tGb3JSZXNwb25zZSh0aGlzLCByZXNwb25zZSkpCiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCShyZXZpc2lvbiAyMDE4NzMpCisrKyBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
MTg1LDcgKzE4NSw3IEBAIHByaXZhdGU6CiAgICAgLy8gUmVzb3VyY2VIYW5kbGVDbGllbnQKICAg
ICBSZXNvdXJjZVJlcXVlc3Qgd2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlSGFuZGxlKiwgUmVzb3Vy
Y2VSZXF1ZXN0JiYsIFJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlKSBvdmVycmlk
ZTsKICAgICB2b2lkIGRpZFNlbmREYXRhKFJlc291cmNlSGFuZGxlKiwgdW5zaWduZWQgbG9uZyBs
b25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCkgb3Zl
cnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqLCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9u
c2UoUmVzb3VyY2VIYW5kbGUqLCBSZXNvdXJjZVJlc3BvbnNlJiYpIG92ZXJyaWRlOwogICAgIHZv
aWQgZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBjaGFyKiwgdW5zaWduZWQs
IGludCBlbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlQnVm
ZmVyKFJlc291cmNlSGFuZGxlKiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgaW50IGVuY29kZWREYXRh
TGVuZ3RoKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VIYW5k
bGUqLCBkb3VibGUgZmluaXNoVGltZSkgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcAko
cmV2aXNpb24gMjAxODczKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGVHcm91cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4OSw3ICs0ODksNyBAQCBS
ZWZQdHI8UmVzb3VyY2VIYW5kbGU+IEFwcGxpY2F0aW9uQ2FjaGVHCiAgICAgcmV0dXJuIGhhbmRs
ZTsKIH0KIAotdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRpZFJlY2VpdmVSZXNwb25zZShS
ZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkK
K3ZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VI
YW5kbGUqIGhhbmRsZSwgUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlKQogewogICAgIEFTU0VS
VChtX2ZyYW1lKTsKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgY29va2llID0g
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUmVjZWl2ZVJlc291cmNlUmVzcG9uc2UobV9m
cmFtZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZUdyb3VwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5oCShyZXZpc2lvbiAyMDE4NzMpCisrKyBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEwOCw3ICsxMDgsNyBAQCBwcml2YXRlOgogICAgIC8vIHRoZSBleGlzdGluZyBjbGll
bnQgY2FsbGJhY2sgY2Fubm90IGJlIHVzZWQsIHNvIGFzc3VtZSB0aGF0IGFueSBjbGllbnQgdGhh
dCBlbmFibGVzIGFwcGxpY2F0aW9uIGNhY2hlIGFsc28gd2FudHMgaXQgdG8gdXNlIGNyZWRlbnRp
YWwgc3RvcmFnZS4KICAgICBib29sIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKFJlc291cmNl
SGFuZGxlKikgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgdm9pZCBkaWRSZWNlaXZl
UmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJp
ZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqLCBSZXNvdXJj
ZVJlc3BvbnNlJiYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VI
YW5kbGUqLCBjb25zdCBjaGFyKiwgdW5zaWduZWQgbGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5n
dGgpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUhhbmRsZSos
IGRvdWJsZSBmaW5pc2hUaW1lKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZhaWwoUmVzb3VyY2VI
YW5kbGUqLCBjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VIYW5kbGUuY3Bw
CShyZXZpc2lvbiAyMDE4NzMpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Js
b2JSZXNvdXJjZUhhbmRsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgzLDcgKzgzLDcgQEAgY2xh
c3MgQmxvYlJlc291cmNlU3luY2hyb25vdXNMb2FkZXIgOiBwdQogcHVibGljOgogICAgIEJsb2JS
ZXNvdXJjZVN5bmNocm9ub3VzTG9hZGVyKFJlc291cmNlRXJyb3ImLCBSZXNvdXJjZVJlc3BvbnNl
JiwgVmVjdG9yPGNoYXI+Jik7CiAKLSAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJj
ZUhhbmRsZSosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKKyAgICB2b2lkIGRp
ZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSosIFJlc291cmNlUmVzcG9uc2UmJikgb3Zl
cnJpZGU7CiAgICAgdm9pZCBkaWRGYWlsKFJlc291cmNlSGFuZGxlKiwgY29uc3QgUmVzb3VyY2VF
cnJvciYpIG92ZXJyaWRlOwogCiBwcml2YXRlOgpAQCAtOTksNyArOTksNyBAQCBCbG9iUmVzb3Vy
Y2VTeW5jaHJvbm91c0xvYWRlcjo6QmxvYlJlc291CiB7CiB9CiAKLXZvaWQgQmxvYlJlc291cmNl
U3luY2hyb25vdXNMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSogaGFu
ZGxlLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKK3ZvaWQgQmxvYlJlc291cmNl
U3luY2hyb25vdXNMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSogaGFu
ZGxlLCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UpCiB7CiAgICAgLy8gV2UgY2Fubm90IGhh
bmRsZSB0aGUgc2l6ZSB0aGF0IGlzIG1vcmUgdGhhbiBtYXhpbXVtIGludGVnZXIuCiAgICAgaWYg
KHJlc3BvbnNlLmV4cGVjdGVkQ29udGVudExlbmd0aCgpID4gSU5UX01BWCkgewpAQCAtNTgzLDkg
KzU4Myw5IEBAIHZvaWQgQmxvYlJlc291cmNlSGFuZGxlOjpub3RpZnlSZXNwb25zZU8KICAgICAv
LyBJdCdzIGN1cnJlbnRseSBjbGllbnQncyByZXNwb25zaWJpbGl0eSB0byBrbm93IHRoYXQgZGlk
UmVjZWl2ZVJlc3BvbnNlQXN5bmMgY2Fubm90IGJlIHVzZWQgdG8gY29udmVydCBhCiAgICAgLy8g
bG9hZCBpbnRvIGEgZG93bmxvYWQgb3IgYmxvYnMuCiAgICAgaWYgKHVzZXNBc3luY0NhbGxiYWNr
cygpKQotICAgICAgICBjbGllbnQoKS0+ZGlkUmVjZWl2ZVJlc3BvbnNlQXN5bmModGhpcywgcmVz
cG9uc2UpOworICAgICAgICBjbGllbnQoKS0+ZGlkUmVjZWl2ZVJlc3BvbnNlQXN5bmModGhpcywg
V1RGTW92ZShyZXNwb25zZSkpOwogICAgIGVsc2UKLSAgICAgICAgY2xpZW50KCktPmRpZFJlY2Vp
dmVSZXNwb25zZSh0aGlzLCByZXNwb25zZSk7CisgICAgICAgIGNsaWVudCgpLT5kaWRSZWNlaXZl
UmVzcG9uc2UodGhpcywgV1RGTW92ZShyZXNwb25zZSkpOwogfQogCiB2b2lkIEJsb2JSZXNvdXJj
ZUhhbmRsZTo6bm90aWZ5UmVzcG9uc2VPbkVycm9yKCkKQEAgLTYxNSw5ICs2MTUsOSBAQCB2b2lk
IEJsb2JSZXNvdXJjZUhhbmRsZTo6bm90aWZ5UmVzcG9uc2VPCiAgICAgLy8gTm90ZSB0aGF0IHdl
IGRvbid0IHdhaXQgZm9yIGNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlIHdoZW4gdXNpbmcgZGlk
UmVjZWl2ZVJlc3BvbnNlQXN5bmMuCiAgICAgLy8gVGhpcyBpcyBub3QgZm9ybWFsbHkgY29ycmVj
dCwgYnV0IHRoZSBjbGllbnQgaGFzIHRvIGJlIGEgbm8tb3AgYW55d2F5LCBiZWNhdXNlIGJsb2Jz
IGNhbid0IGJlIGRvd25sb2FkZWQuCiAgICAgaWYgKHVzZXNBc3luY0NhbGxiYWNrcygpKQotICAg
ICAgICBjbGllbnQoKS0+ZGlkUmVjZWl2ZVJlc3BvbnNlQXN5bmModGhpcywgcmVzcG9uc2UpOwor
ICAgICAgICBjbGllbnQoKS0+ZGlkUmVjZWl2ZVJlc3BvbnNlQXN5bmModGhpcywgV1RGTW92ZShy
ZXNwb25zZSkpOwogICAgIGVsc2UKLSAgICAgICAgY2xpZW50KCktPmRpZFJlY2VpdmVSZXNwb25z
ZSh0aGlzLCByZXNwb25zZSk7CisgICAgICAgIGNsaWVudCgpLT5kaWRSZWNlaXZlUmVzcG9uc2Uo
dGhpcywgV1RGTW92ZShyZXNwb25zZSkpOwogfQogCiB2b2lkIEJsb2JSZXNvdXJjZUhhbmRsZTo6
bm90aWZ5UmVjZWl2ZURhdGEoY29uc3QgY2hhciogZGF0YSwgaW50IGJ5dGVzUmVhZCkKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRGF0YVVSTC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9EYXRhVVJMLmNwcAkocmV2aXNpb24g
MjAxODczKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9EYXRhVVJMLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNzYsMjUgKzc2LDIyIEBAIHZvaWQgaGFuZGxlRGF0YVVSTChSZXNv
dXJjZUhhbmRsZSogaGFuZGwKIAogICAgIGlmIChiYXNlNjQpIHsKICAgICAgICAgZGF0YSA9IGRl
Y29kZVVSTEVzY2FwZVNlcXVlbmNlcyhkYXRhKTsKLSAgICAgICAgaGFuZGxlLT5jbGllbnQoKS0+
ZGlkUmVjZWl2ZVJlc3BvbnNlKGhhbmRsZSwgcmVzcG9uc2UpOworICAgICAgICBoYW5kbGUtPmNs
aWVudCgpLT5kaWRSZWNlaXZlUmVzcG9uc2UoaGFuZGxlLCBXVEZNb3ZlKHJlc3BvbnNlKSk7CiAK
ICAgICAgICAgLy8gZGlkUmVjZWl2ZVJlc3BvbnNlIG1pZ2h0IGNhdXNlIHRoZSBjbGllbnQgdG8g
YmUgZGVsZXRlZC4KICAgICAgICAgaWYgKGhhbmRsZS0+Y2xpZW50KCkpIHsKICAgICAgICAgICAg
IFZlY3RvcjxjaGFyPiBvdXQ7Ci0gICAgICAgICAgICBpZiAoYmFzZTY0RGVjb2RlKGRhdGEsIG91
dCwgQmFzZTY0SWdub3JlU3BhY2VzQW5kTmV3TGluZXMpICYmIG91dC5zaXplKCkgPiAwKSB7Ci0g
ICAgICAgICAgICAgICAgcmVzcG9uc2Uuc2V0RXhwZWN0ZWRDb250ZW50TGVuZ3RoKG91dC5zaXpl
KCkpOworICAgICAgICAgICAgaWYgKGJhc2U2NERlY29kZShkYXRhLCBvdXQsIEJhc2U2NElnbm9y
ZVNwYWNlc0FuZE5ld0xpbmVzKSAmJiBvdXQuc2l6ZSgpID4gMCkKICAgICAgICAgICAgICAgICBo
YW5kbGUtPmNsaWVudCgpLT5kaWRSZWNlaXZlRGF0YShoYW5kbGUsIG91dC5kYXRhKCksIG91dC5z
aXplKCksIDApOwotICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfSBlbHNlIHsKICAgICAg
ICAgVGV4dEVuY29kaW5nIGVuY29kaW5nKGNoYXJzZXQpOwogICAgICAgICBkYXRhID0gZGVjb2Rl
VVJMRXNjYXBlU2VxdWVuY2VzKGRhdGEsIGVuY29kaW5nKTsKLSAgICAgICAgaGFuZGxlLT5jbGll
bnQoKS0+ZGlkUmVjZWl2ZVJlc3BvbnNlKGhhbmRsZSwgcmVzcG9uc2UpOworICAgICAgICBoYW5k
bGUtPmNsaWVudCgpLT5kaWRSZWNlaXZlUmVzcG9uc2UoaGFuZGxlLCBXVEZNb3ZlKHJlc3BvbnNl
KSk7CiAKICAgICAgICAgLy8gZGlkUmVjZWl2ZVJlc3BvbnNlIG1pZ2h0IGNhdXNlIHRoZSBjbGll
bnQgdG8gYmUgZGVsZXRlZC4KICAgICAgICAgaWYgKGhhbmRsZS0+Y2xpZW50KCkpIHsKICAgICAg
ICAgICAgIENTdHJpbmcgZW5jb2RlZERhdGEgPSBlbmNvZGluZy5lbmNvZGUoZGF0YSwgVVJMRW5j
b2RlZEVudGl0aWVzRm9yVW5lbmNvZGFibGVzKTsKLSAgICAgICAgICAgIHJlc3BvbnNlLnNldEV4
cGVjdGVkQ29udGVudExlbmd0aChlbmNvZGVkRGF0YS5sZW5ndGgoKSk7CiAgICAgICAgICAgICBp
ZiAoZW5jb2RlZERhdGEubGVuZ3RoKCkpCiAgICAgICAgICAgICAgICAgaGFuZGxlLT5jbGllbnQo
KS0+ZGlkUmVjZWl2ZURhdGEoaGFuZGxlLCBlbmNvZGVkRGF0YS5kYXRhKCksIGVuY29kZWREYXRh
Lmxlbmd0aCgpLCAwKTsKICAgICAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9QaW5nSGFuZGxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9QaW5nSGFuZGxlLmgJKHJldmlzaW9uIDIwMTg3MykKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvUGluZ0hhbmRsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01Niw3
ICs1Niw3IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBkaWRSZWNlaXZl
UmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJp
ZGUgeyBkZWxldGUgdGhpczsgfQorICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNl
SGFuZGxlKiwgUmVzb3VyY2VSZXNwb25zZSYmKSBvdmVycmlkZSB7IGRlbGV0ZSB0aGlzOyB9CiAg
ICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiwgUmVmPFNoYXJlZEJ1ZmZl
cj4mJiwgaW50KSBvdmVycmlkZSB7IGRlbGV0ZSB0aGlzOyB9OwogICAgIHZvaWQgZGlkRmluaXNo
TG9hZGluZyhSZXNvdXJjZUhhbmRsZSosIGRvdWJsZSkgb3ZlcnJpZGUgeyBkZWxldGUgdGhpczsg
fQogICAgIHZvaWQgZGlkRmFpbChSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlRXJyb3Im
KSBvdmVycmlkZSB7IGRlbGV0ZSB0aGlzOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcAkocmV2aXNp
b24gMjAxODczKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhh
bmRsZUNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwLDcgKzUwLDcgQEAgdm9pZCBSZXNv
dXJjZUhhbmRsZUNsaWVudDo6d2lsbFNlbmRSZXF1ZQogICAgIGhhbmRsZS0+Y29udGludWVXaWxs
U2VuZFJlcXVlc3QoV1RGTW92ZShyZXF1ZXN0KSk7CiB9CiAKLXZvaWQgUmVzb3VyY2VIYW5kbGVD
bGllbnQ6OmRpZFJlY2VpdmVSZXNwb25zZUFzeW5jKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmKQordm9pZCBSZXNvdXJjZUhhbmRsZUNsaWVudDo6ZGlkUmVj
ZWl2ZVJlc3BvbnNlQXN5bmMoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgUmVzb3VyY2VSZXNwb25z
ZSYmKQogewogICAgIGhhbmRsZS0+Y29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UoKTsKIH0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
SGFuZGxlQ2xpZW50LmgJKHJldmlzaW9uIDIwMTg3MykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNzEs
NyArNzEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFdFQkNPUkVfRVhQT1JUIHZp
cnR1YWwgUmVzb3VyY2VSZXF1ZXN0IHdpbGxTZW5kUmVxdWVzdChSZXNvdXJjZUhhbmRsZSosIFJl
c291cmNlUmVxdWVzdCYmLCBSZXNvdXJjZVJlc3BvbnNlJiYpOwogICAgICAgICB2aXJ0dWFsIHZv
aWQgZGlkU2VuZERhdGEoUmVzb3VyY2VIYW5kbGUqLCB1bnNpZ25lZCBsb25nIGxvbmcgLypieXRl
c1NlbnQqLywgdW5zaWduZWQgbG9uZyBsb25nIC8qdG90YWxCeXRlc1RvQmVTZW50Ki8pIHsgfQog
Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUq
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgeyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRS
ZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqLCBSZXNvdXJjZVJlc3BvbnNlJiYpIHsgfQog
ICAgICAgICAKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFu
ZGxlKiwgY29uc3QgY2hhciosIHVuc2lnbmVkLCBpbnQgLyplbmNvZGVkRGF0YUxlbmd0aCovKSB7
IH0KICAgICAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVCdWZmZXIo
UmVzb3VyY2VIYW5kbGUqLCBSZWY8U2hhcmVkQnVmZmVyPiYmLCBpbnQgZW5jb2RlZERhdGFMZW5n
dGgpOwpAQCAtODksNyArODksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFdFQkNP
UkVfRVhQT1JUIHZpcnR1YWwgdm9pZCB3aWxsU2VuZFJlcXVlc3RBc3luYyhSZXNvdXJjZUhhbmRs
ZSosIFJlc291cmNlUmVxdWVzdCYmLCBSZXNvdXJjZVJlc3BvbnNlJiYpOwogCiAgICAgICAgIC8v
IENsaWVudCB3aWxsIGNhbGwgUmVzb3VyY2VIYW5kbGU6OmNvbnRpbnVlRGlkUmVjZWl2ZVJlc3Bv
bnNlKCkgd2hlbiByZWFkeS4KLSAgICAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGRp
ZFJlY2VpdmVSZXNwb25zZUFzeW5jKFJlc291cmNlSGFuZGxlKiwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYpOworICAgICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJl
c3BvbnNlQXN5bmMoUmVzb3VyY2VIYW5kbGUqLCBSZXNvdXJjZVJlc3BvbnNlJiYpOwogCiAjaWYg
VVNFKFBST1RFQ1RJT05fU1BBQ0VfQVVUSF9DQUxMQkFDSykKICAgICAgICAgLy8gQ2xpZW50IHdp
bGwgcGFzcyBhbiB1cGRhdGVkIHJlcXVlc3QgdXNpbmcgUmVzb3VyY2VIYW5kbGU6OmNvbnRpbnVl
Q2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZSgpIHdoZW4gcmVhZHkuCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
UmVzcG9uc2VCYXNlLmNwcAkocmV2aXNpb24gMjAxODczKQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQ3LDcgKzQ3LDYgQEAgaW5saW5lIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIFJlc291cmNlUgog
UmVzb3VyY2VSZXNwb25zZUJhc2U6OlJlc291cmNlUmVzcG9uc2VCYXNlKCkKICAgICA6IG1faXNO
dWxsKHRydWUpCiAgICAgLCBtX2V4cGVjdGVkQ29udGVudExlbmd0aCgwKQotICAgICwgbV9pbmNs
dWRlc0NlcnRpZmljYXRlSW5mbyhmYWxzZSkKICAgICAsIG1faHR0cFN0YXR1c0NvZGUoMCkKIHsK
IH0KQEAgLTU4LDcgKzU3LDcgQEAgUmVzb3VyY2VSZXNwb25zZUJhc2U6OlJlc291cmNlUmVzcG9u
c2VCYQogICAgICwgbV9taW1lVHlwZShtaW1lVHlwZSkKICAgICAsIG1fZXhwZWN0ZWRDb250ZW50
TGVuZ3RoKGV4cGVjdGVkTGVuZ3RoKQogICAgICwgbV90ZXh0RW5jb2RpbmdOYW1lKHRleHRFbmNv
ZGluZ05hbWUpCi0gICAgLCBtX2luY2x1ZGVzQ2VydGlmaWNhdGVJbmZvKHRydWUpIC8vIEVtcHR5
IGJ1dCB2YWxpZCBmb3Igc3ludGhldGljIHJlc3BvbnNlcy4KKyAgICAsIG1fY2VydGlmaWNhdGVJ
bmZvKENlcnRpZmljYXRlSW5mbygpKSAvLyBFbXB0eSBidXQgdmFsaWQgZm9yIHN5bnRoZXRpYyBy
ZXNwb25zZXMuCiAgICAgLCBtX2h0dHBTdGF0dXNDb2RlKDApCiB7CiB9CkBAIC0xODQsMTUgKzE4
Myw5IEBAIHZvaWQgUmVzb3VyY2VSZXNwb25zZUJhc2U6OnNldFRleHRFbmNvZGkKIAogdm9pZCBS
ZXNvdXJjZVJlc3BvbnNlQmFzZTo6aW5jbHVkZUNlcnRpZmljYXRlSW5mbygpIGNvbnN0CiB7Ci0g
ICAgaWYgKG1faW5jbHVkZXNDZXJ0aWZpY2F0ZUluZm8pCisgICAgaWYgKG1fY2VydGlmaWNhdGVJ
bmZvKQogICAgICAgICByZXR1cm47CiAgICAgbV9jZXJ0aWZpY2F0ZUluZm8gPSBzdGF0aWNfY2Fz
dDxjb25zdCBSZXNvdXJjZVJlc3BvbnNlKj4odGhpcyktPnBsYXRmb3JtQ2VydGlmaWNhdGVJbmZv
KCk7Ci0gICAgbV9pbmNsdWRlc0NlcnRpZmljYXRlSW5mbyA9IHRydWU7Ci19Ci0KLUNlcnRpZmlj
YXRlSW5mbyBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6Y2VydGlmaWNhdGVJbmZvKCkgY29uc3QKLXsK
LSAgICByZXR1cm4gbV9jZXJ0aWZpY2F0ZUluZm87CiB9CiAKIFN0cmluZyBSZXNvdXJjZVJlc3Bv
bnNlQmFzZTo6c3VnZ2VzdGVkRmlsZW5hbWUoKSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaAkocmV2
aXNpb24gMjAxODczKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJj
ZVJlc3BvbnNlQmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTQsOCArMTE0LDcgQEAgcHVibGlj
OgogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBzdWdnZXN0ZWRGaWxlbmFtZSgpIGNvbnN0Owog
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbmNsdWRlQ2VydGlmaWNhdGVJbmZvKCkgY29uc3Q7
Ci0gICAgYm9vbCBjb250YWluc0NlcnRpZmljYXRlSW5mbygpIGNvbnN0IHsgcmV0dXJuIG1faW5j
bHVkZXNDZXJ0aWZpY2F0ZUluZm87IH0KLSAgICBXRUJDT1JFX0VYUE9SVCBDZXJ0aWZpY2F0ZUlu
Zm8gY2VydGlmaWNhdGVJbmZvKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgT3B0
aW9uYWw8Q2VydGlmaWNhdGVJbmZvPiYgY2VydGlmaWNhdGVJbmZvKCkgY29uc3QgeyByZXR1cm4g
bV9jZXJ0aWZpY2F0ZUluZm87IH07CiAgICAgCiAgICAgLy8gVGhlc2UgZnVuY3Rpb25zIHJldHVy
biBwYXJzZWQgdmFsdWVzIG9mIHRoZSBjb3JyZXNwb25kaW5nIHJlc3BvbnNlIGhlYWRlcnMuCiAg
ICAgLy8gTmFOIG1lYW5zIHRoYXQgdGhlIGhlYWRlciB3YXMgbm90IHByZXNlbnQgb3IgaGFkIGlu
dmFsaWQgdmFsdWUuCkBAIC0xOTAsOCArMTg5LDggQEAgcHJvdGVjdGVkOgogICAgIEhUVFBIZWFk
ZXJNYXAgbV9odHRwSGVhZGVyRmllbGRzOwogICAgIG11dGFibGUgUmVzb3VyY2VMb2FkVGltaW5n
IG1fcmVzb3VyY2VMb2FkVGltaW5nOwogCi0gICAgbXV0YWJsZSBib29sIG1faW5jbHVkZXNDZXJ0
aWZpY2F0ZUluZm87Ci0gICAgbXV0YWJsZSBDZXJ0aWZpY2F0ZUluZm8gbV9jZXJ0aWZpY2F0ZUlu
Zm87CisjZGVmaW5lIFJFU09VUkNFX1JFU1BPTlNFX0JBU0VfQ0VSVF9JTkZPX09QVElPTkFMCisg
ICAgbXV0YWJsZSBPcHRpb25hbDxDZXJ0aWZpY2F0ZUluZm8+IG1fY2VydGlmaWNhdGVJbmZvOwog
CiAgICAgaW50IG1faHR0cFN0YXR1c0NvZGU7CiAKQEAgLTIzNiw5ICsyMzUsNyBAQCB2b2lkIFJl
c291cmNlUmVzcG9uc2VCYXNlOjplbmNvZGUoRW5jb2RlCiAgICAgZW5jb2RlciA8PCBtX2h0dHBI
ZWFkZXJGaWVsZHM7CiAgICAgZW5jb2RlciA8PCBtX3Jlc291cmNlTG9hZFRpbWluZzsKICAgICBl
bmNvZGVyIDw8IG1faHR0cFN0YXR1c0NvZGU7Ci0gICAgZW5jb2RlciA8PCBtX2luY2x1ZGVzQ2Vy
dGlmaWNhdGVJbmZvOwotICAgIGlmIChtX2luY2x1ZGVzQ2VydGlmaWNhdGVJbmZvKQotICAgICAg
ICBlbmNvZGVyIDw8IG1fY2VydGlmaWNhdGVJbmZvOworICAgIGVuY29kZXIgPDwgbV9jZXJ0aWZp
Y2F0ZUluZm87CiAgICAgZW5jb2Rlci5lbmNvZGVFbnVtKG1fc291cmNlKTsKICAgICBlbmNvZGVy
LmVuY29kZUVudW0obV90eXBlKTsKICAgICBlbmNvZGVyIDw8IG1faXNSZWRpcmVjdGVkOwpAQCAt
Mjc0LDEyICsyNzEsOCBAQCBib29sIFJlc291cmNlUmVzcG9uc2VCYXNlOjpkZWNvZGUoRGVjb2Rl
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3BvbnNl
Lm1faHR0cFN0YXR1c0NvZGUpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShyZXNwb25zZS5tX2luY2x1ZGVzQ2VydGlmaWNhdGVJbmZvKSkKKyAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHJlc3BvbnNlLm1fY2VydGlmaWNhdGVJbmZvKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIGlmIChyZXNwb25zZS5tX2luY2x1ZGVzQ2VydGlmaWNhdGVJbmZvKSB7
Ci0gICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzcG9uc2UubV9jZXJ0aWZpY2F0ZUluZm8p
KQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlRW51bShyZXNwb25zZS5tX3NvdXJjZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlRW51bShyZXNwb25zZS5tX3R5cGUpKQpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9TeW5jaHJvbm91c0xvYWRlckNsaWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9TeW5jaHJvbm91c0xvYWRl
ckNsaWVudC5jcHAJKHJldmlzaW9uIDIwMTg3MykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvU3luY2hyb25vdXNMb2FkZXJDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02
Miw5ICs2Miw5IEBAIGJvb2wgU3luY2hyb25vdXNMb2FkZXJDbGllbnQ6OmNhbkF1dGhlbnQKIH0K
ICNlbmRpZgogCi12b2lkIFN5bmNocm9ub3VzTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlUmVzcG9u
c2UoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKK3Zv
aWQgU3luY2hyb25vdXNMb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUhh
bmRsZSosIFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSkKIHsKLSAgICBtX3Jlc3BvbnNlID0g
cmVzcG9uc2U7CisgICAgbV9yZXNwb25zZSA9IFdURk1vdmUocmVzcG9uc2UpOwogfQogCiB2b2lk
IFN5bmNocm9ub3VzTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSos
IGNvbnN0IGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgaW50IC8qZW5jb2RlZERhdGFMZW5n
dGgqLykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU3luY2hyb25vdXNM
b2FkZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50LmgJKHJldmlzaW9uIDIwMTg3MykKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU3luY2hyb25vdXNMb2FkZXJDbGllbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtNDgsNyArNDgsNyBAQCBwcml2YXRlOgogICAgIFJlc291cmNlUmVxdWVz
dCB3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VIYW5kbGUqLCBSZXNvdXJjZVJlcXVlc3QmJiwgUmVz
b3VyY2VSZXNwb25zZSYmKSBvdmVycmlkZTsKICAgICBib29sIHNob3VsZFVzZUNyZWRlbnRpYWxT
dG9yYWdlKFJlc291cmNlSGFuZGxlKikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291
cmNlSGFuZGxlKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOworICAgIHZvaWQg
ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlKiwgUmVzb3VyY2VSZXNwb25zZSYmKSBv
dmVycmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlKiwgY29uc3Qg
Y2hhciosIHVuc2lnbmVkLCBpbnQgLyplbmNvZGVkRGF0YUxlbmd0aCovKSBvdmVycmlkZTsKICAg
ICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VIYW5kbGUqLCBkb3VibGUgLypmaW5pc2hU
aW1lKi8pIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFpbChSZXNvdXJjZUhhbmRsZSosIGNvbnN0
IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVy
YXRpb25RdWV1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlv
blF1ZXVlLmNwcAkocmV2aXNpb24gMjAxODczKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJh
dGlvblF1ZXVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYxLDcgKzE2MSw3IEBAIHZvaWQgUmVz
b3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2EKICAgICAgICAgVU5VU0VEX1BBUkFNKGNv
bm5lY3Rpb24pOwogI2VuZGlmCiAgICAgICAgIAotICAgICAgICBtX2hhbmRsZS0+Y2xpZW50KCkt
PmRpZFJlY2VpdmVSZXNwb25zZUFzeW5jKG1faGFuZGxlLCByZXNvdXJjZVJlc3BvbnNlKTsKKyAg
ICAgICAgbV9oYW5kbGUtPmNsaWVudCgpLT5kaWRSZWNlaXZlUmVzcG9uc2VBc3luYyhtX2hhbmRs
ZSwgV1RGTW92ZShyZXNvdXJjZVJlc3BvbnNlKSk7CiAgICAgfSk7CiAgICAgZGlzcGF0Y2hfc2Vt
YXBob3JlX3dhaXQobV9zZW1hcGhvcmUsIERJU1BBVENIX1RJTUVfRk9SRVZFUik7CiB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1N5bmNocm9ub3VzUmVzb3VyY2VI
YW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9TeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxD
b25uZWN0aW9uRGVsZWdhdGUuY3BwCShyZXZpc2lvbiAyMDE4NzMpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1N5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5l
Y3Rpb25EZWxlZ2F0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4MCw3ICsxODAsNyBAQCB2b2lk
IFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lCiAgICAgVU5VU0VEX1BBUkFNKGNv
bm5lY3Rpb24pOwogI2VuZGlmCiAgICAgCi0gICAgbV9oYW5kbGUtPmNsaWVudCgpLT5kaWRSZWNl
aXZlUmVzcG9uc2UobV9oYW5kbGUsIHJlc291cmNlUmVzcG9uc2UpOworICAgIG1faGFuZGxlLT5j
bGllbnQoKS0+ZGlkUmVjZWl2ZVJlc3BvbnNlKG1faGFuZGxlLCBXVEZNb3ZlKHJlc291cmNlUmVz
cG9uc2UpKTsKIH0KIAogdm9pZCBTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0
aW9uRGVsZWdhdGU6OmRpZFJlY2VpdmVEYXRhKENGRGF0YVJlZiBkYXRhLCBDRkluZGV4IG9yaWdp
bmFsTGVuZ3RoKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2Vi
Q29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRl
Lm1tCShyZXZpc2lvbiAyMDE4NzMpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0xNjksNyArMTY5LDcgQEAgLSAodm9pZCljb25uZWN0aW9uOihOU1VSTENvbm5lY3Rpb24gKilj
bwogICAgIFVOVVNFRF9QQVJBTShjb25uZWN0aW9uKTsKICNlbmRpZgogICAgIAotICAgIG1faGFu
ZGxlLT5jbGllbnQoKS0+ZGlkUmVjZWl2ZVJlc3BvbnNlKG1faGFuZGxlLCByZXNvdXJjZVJlc3Bv
bnNlKTsKKyAgICBtX2hhbmRsZS0+Y2xpZW50KCktPmRpZFJlY2VpdmVSZXNwb25zZShtX2hhbmRs
ZSwgV1RGTW92ZShyZXNvdXJjZVJlc3BvbnNlKSk7CiB9CiAKICNpZiBVU0UoTkVUV09SS19DRkRB
VEFfQVJSQVlfQ0FMTEJBQ0spCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJl
c291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tCShyZXZpc2lvbiAyMDE4NzMp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VI
YW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUubW0JKHdvcmtpbmcgY29weSkKQEAgLTIxNSw3
ICsyMTUsNyBAQCAtICh2b2lkKWNvbm5lY3Rpb246KE5TVVJMQ29ubmVjdGlvbiAqKWNvCiAjZWxz
ZQogICAgICAgICBVTlVTRURfUEFSQU0oY29ubmVjdGlvbik7CiAjZW5kaWYKLSAgICAgICAgbV9o
YW5kbGUtPmNsaWVudCgpLT5kaWRSZWNlaXZlUmVzcG9uc2VBc3luYyhtX2hhbmRsZSwgcmVzb3Vy
Y2VSZXNwb25zZSk7CisgICAgICAgIG1faGFuZGxlLT5jbGllbnQoKS0+ZGlkUmVjZWl2ZVJlc3Bv
bnNlQXN5bmMobV9oYW5kbGUsIFdURk1vdmUocmVzb3VyY2VSZXNwb25zZSkpOwogICAgIH0pOwog
CiAgICAgZGlzcGF0Y2hfc2VtYXBob3JlX3dhaXQobV9zZW1hcGhvcmUsIERJU1BBVENIX1RJTUVf
Rk9SRVZFUik7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMDE4OTQpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw0NCBAQAorMjAxNi0wNi0x
MCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAg
IFJlZHVjZSBSZXNvdXJjZVJlc3BvbnNlIGNvcHlpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1ODIzMgorCisgICAgICAgIFJldmlld2VkIGJ5IERh
cmluIEFkbGVyLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdE
b3dubG9hZC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5oOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya0xvYWQ6OmNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya0xvYWQ6OnNoYXJlZERpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtMb2FkOjpzaGFyZWRXaWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVDaGFsbGVuZ2UpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlTmV0d29ya1Nlc3Npb24p
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlQXN5bmMp
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmg6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDbGllbnQuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVz
b3VyY2VMb2FkZXI6OnJldHJpZXZlQ2FjaGVFbnRyeSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtSZXNvdXJjZUxvYWRlcjo6YWJvcnQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdv
cmtSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmg6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlQ29kZXJzLmg6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6Q29kZXI8T3B0aW9uYWw8VD4+OjplbmNvZGUp
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkNvZGVyPE9wdGlvbmFsPFQ+Pjo6ZGVj
b2RlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxh
dGl2ZUxvYWQuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZl
TG9hZDo6d2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmg6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtEYXRhVGFzazo6ZGlkQ29tcGxldGVXaXRoRXJyb3IpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrRGF0YVRhc2s6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbToKKyAgICAgICAgKC1bV0tOZXR3
b3JrU2Vzc2lvbkRlbGVnYXRlIFVSTFNlc3Npb246ZGF0YVRhc2s6ZGlkUmVjZWl2ZVJlc3BvbnNl
OmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxv
YWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDb21taXRMb2FkKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViRnJhbWUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6dXJsKToK
KyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OmNlcnRpZmljYXRlSW5mbyk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkZyYW1lOjppbm5lclRleHQpOgorCiAyMDE2LTA2LTA5ICBBbGV4IENocmlzdGVu
c2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQ2xlYW4gdXAgRWRpdG9y
Q2xpZW50IGxpZmV0aW1lCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrRGF0YVRhc2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrRGF0YVRhc2suaAkocmV2aXNpb24gMjAxODczKQorKysgU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmgJKHdvcmtpbmcgY29weSkKQEAgLTcwLDcg
KzcwLDcgQEAgY2xhc3MgTmV0d29ya0RhdGFUYXNrQ2xpZW50IHsKIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgUmVkaXJlY3RDb21wbGV0aW9uSGFu
ZGxlcikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQ2hhbGxlbmdlKGNvbnN0IFdl
YkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiwgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRs
ZXIpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlTmV0d29ya1Nlc3Np
b24oY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIFJlc3BvbnNlQ29tcGxldGlvbkhh
bmRsZXIpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlTmV0d29ya1Nl
c3Npb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZXNwb25zZUNvbXBsZXRpb25IYW5k
bGVyKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tcGxldGVXaXRoRXJy
b3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
ZGlkQmVjb21lRG93bmxvYWQoKSA9IDA7CkBAIC0xMDAsNyArMTAwLDcgQEAgcHVibGljOgogICAg
IHZvaWQgZGlkU2VuZERhdGEodWludDY0X3QgdG90YWxCeXRlc1NlbnQsIHVpbnQ2NF90IHRvdGFs
Qnl0ZXNFeHBlY3RlZFRvU2VuZCk7CiAgICAgdm9pZCBkaWRSZWNlaXZlQ2hhbGxlbmdlKGNvbnN0
IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiwgQ2hhbGxlbmdlQ29tcGxldGlvbkhh
bmRsZXIpOwogICAgIHZvaWQgZGlkQ29tcGxldGVXaXRoRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VFcnJvciYpOwotICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICB2b2lk
IGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNl
Q29tcGxldGlvbkhhbmRsZXIpOwogICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4mJik7CiAgICAgdm9pZCBkaWRCZWNvbWVEb3dubG9hZCgpOwogICAgIApJ
bmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcAko
cmV2aXNpb24gMjAxODczKQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0xvYWQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTMsMTQgKzE1MywxMyBAQCB2b2lkIE5ldHdv
cmtMb2FkOjpjb250aW51ZURpZFJlY2VpdmVSZXNwCiAgICAgICAgIG1faGFuZGxlLT5jb250aW51
ZURpZFJlY2VpdmVSZXNwb25zZSgpOwogfQogCi1OZXR3b3JrTG9hZENsaWVudDo6U2hvdWxkQ29u
dGludWVEaWRSZWNlaXZlUmVzcG9uc2UgTmV0d29ya0xvYWQ6OnNoYXJlZERpZFJlY2VpdmVSZXNw
b25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWNlaXZlZFJlc3BvbnNlKQorTmV0d29ya0xv
YWRDbGllbnQ6OlNob3VsZENvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlIE5ldHdvcmtMb2FkOjpz
aGFyZWREaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlKQogewot
ICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UgPSByZWNlaXZlZFJlc3BvbnNlOwogICAgIHJl
c3BvbnNlLnNldFNvdXJjZShSZXNvdXJjZVJlc3BvbnNlOjpTb3VyY2U6Ok5ldHdvcmspOwogICAg
IGlmIChtX3BhcmFtZXRlcnMubmVlZHNDZXJ0aWZpY2F0ZUluZm8pCiAgICAgICAgIHJlc3BvbnNl
LmluY2x1ZGVDZXJ0aWZpY2F0ZUluZm8oKTsKIAotICAgIHJldHVybiBtX2NsaWVudC5kaWRSZWNl
aXZlUmVzcG9uc2UocmVzcG9uc2UpOworICAgIHJldHVybiBtX2NsaWVudC5kaWRSZWNlaXZlUmVz
cG9uc2UoV1RGTW92ZShyZXNwb25zZSkpOwogfQogCiB2b2lkIE5ldHdvcmtMb2FkOjpzaGFyZWRX
aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFJlc291
cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlKQpAQCAtMjM5LDEyICsyMzgsMTIgQEAgdm9p
ZCBOZXR3b3JrTG9hZDo6ZGlkUmVjZWl2ZUNoYWxsZW5nZShjbwogICAgICAgICBtX2NsaWVudC5j
YW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlQXN5bmMoY2hhbGxlbmdlLnByb3Rl
Y3Rpb25TcGFjZSgpKTsKIH0KIAotdm9pZCBOZXR3b3JrTG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNl
TmV0d29ya1Nlc3Npb24oY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlc3BvbnNl
Q29tcGxldGlvbkhhbmRsZXIgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtMb2FkOjpk
aWRSZWNlaXZlUmVzcG9uc2VOZXR3b3JrU2Vzc2lvbihSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9u
c2UsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBpZiAobV90YXNrICYmIG1fdGFzay0+cGVuZGlu
Z0Rvd25sb2FkSUQoKS5kb3dubG9hZElEKCkpCiAgICAgICAgIE5ldHdvcmtQcm9jZXNzOjpzaW5n
bGV0b24oKS5maW5kUGVuZGluZ0Rvd25sb2FkTG9jYXRpb24oKm1fdGFzay5nZXQoKSwgY29tcGxl
dGlvbkhhbmRsZXIsIG1fdGFzay0+Y3VycmVudFJlcXVlc3QoKSk7Ci0gICAgZWxzZSBpZiAoc2hh
cmVkRGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlKSA9PSBOZXR3b3JrTG9hZENsaWVudDo6U2hv
dWxkQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2U6OlllcykKKyAgICBlbHNlIGlmIChzaGFyZWRE
aWRSZWNlaXZlUmVzcG9uc2UoV1RGTW92ZShyZXNwb25zZSkpID09IE5ldHdvcmtMb2FkQ2xpZW50
OjpTaG91bGRDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZTo6WWVzKQogICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihQb2xpY3lVc2UpOwogICAgIGVsc2UKICAgICAgICAgbV9yZXNwb25zZUNvbXBs
ZXRpb25IYW5kbGVyID0gY29tcGxldGlvbkhhbmRsZXI7CkBAIC0yODcsMTAgKzI4NiwxMCBAQCB2
b2lkIE5ldHdvcmtMb2FkOjpjYW5ub3RTaG93VVJMKCkKICAgICAKICNlbmRpZgogCi12b2lkIE5l
dHdvcmtMb2FkOjpkaWRSZWNlaXZlUmVzcG9uc2VBc3luYyhSZXNvdXJjZUhhbmRsZSogaGFuZGxl
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWNlaXZlZFJlc3BvbnNlKQordm9pZCBOZXR3b3Jr
TG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlQXN5bmMoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgUmVz
b3VyY2VSZXNwb25zZSYmIHJlY2VpdmVkUmVzcG9uc2UpCiB7CiAgICAgQVNTRVJUX1VOVVNFRCho
YW5kbGUsIGhhbmRsZSA9PSBtX2hhbmRsZSk7Ci0gICAgaWYgKHNoYXJlZERpZFJlY2VpdmVSZXNw
b25zZShyZWNlaXZlZFJlc3BvbnNlKSA9PSBOZXR3b3JrTG9hZENsaWVudDo6U2hvdWxkQ29udGlu
dWVEaWRSZWNlaXZlUmVzcG9uc2U6OlllcykKKyAgICBpZiAoc2hhcmVkRGlkUmVjZWl2ZVJlc3Bv
bnNlKFdURk1vdmUocmVjZWl2ZWRSZXNwb25zZSkpID09IE5ldHdvcmtMb2FkQ2xpZW50OjpTaG91
bGRDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZTo6WWVzKQogICAgICAgICBtX2hhbmRsZS0+Y29u
dGludWVEaWRSZWNlaXZlUmVzcG9uc2UoKTsKIH0KIApJbmRleDogU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oCShyZXZpc2lvbiAyMDE4NzMpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oCSh3b3JraW5nIGNvcHkpCkBAIC02
Nyw3ICs2Nyw3IEBAIHB1YmxpYzoKICAgICAvLyBOZXR3b3JrRGF0YVRhc2tDbGllbnQKICAgICB2
b2lkIHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
JiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXIp
IGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZUNoYWxsZW5nZShjb25zdCBXZWJDb3JlOjpBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSYsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbDsK
LSAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZU5ldHdvcmtTZXNzaW9uKGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbDsKKyAg
ICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZU5ldHdvcmtTZXNzaW9uKFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmJiwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlcikgZmluYWw7CiAgICAgdm9pZCBk
aWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKICAgICB2
b2lkIGRpZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBm
aW5hbDsKICAgICB2b2lkIGRpZEJlY29tZURvd25sb2FkKCkgZmluYWw7CkBAIC03OCw3ICs3OCw3
IEBAIHB1YmxpYzoKICAgICAvLyBSZXNvdXJjZUhhbmRsZUNsaWVudAogICAgIHZvaWQgd2lsbFNl
bmRSZXF1ZXN0QXN5bmMoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2Up
IG92ZXJyaWRlOwogICAgIHZvaWQgZGlkU2VuZERhdGEoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUq
LCB1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxC
eXRlc1RvQmVTZW50KSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZUFzeW5j
KFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlQXN5bmMoV2ViQ29yZTo6
UmVzb3VyY2VIYW5kbGUqLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYpIG92ZXJyaWRlOwog
ICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBjb25zdCBj
aGFyKiwgdW5zaWduZWQsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBkaWRSZWNlaXZlQnVmZmVyKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwgUmVmPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRl
OwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIGRv
dWJsZSBmaW5pc2hUaW1lKSBvdmVycmlkZTsKQEAgLTExNiw3ICsxMTYsNyBAQCBwdWJsaWM6CiAj
ZW5kaWYKIAogcHJpdmF0ZToKLSAgICBOZXR3b3JrTG9hZENsaWVudDo6U2hvdWxkQ29udGludWVE
aWRSZWNlaXZlUmVzcG9uc2Ugc2hhcmVkRGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmKTsKKyAgICBOZXR3b3JrTG9hZENsaWVudDo6U2hvdWxkQ29udGlu
dWVEaWRSZWNlaXZlUmVzcG9uc2Ugc2hhcmVkRGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmJik7CiAgICAgdm9pZCBzaGFyZWRXaWxsU2VuZFJlZGlyZWN0ZWRSZXF1
ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiYpOwogCiAgICAgTmV0d29ya0xvYWRDbGllbnQmIG1fY2xpZW50OwpJbmRleDogU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDbGllbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENsaWVudC5oCShyZXZpc2lv
biAyMDE4NzMpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENs
aWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw4ICsyMyw3IEBACiAgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBOZXR3b3JrTG9hZENsaWVudF9oCi0j
ZGVmaW5lIE5ldHdvcmtMb2FkQ2xpZW50X2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSA8V2Vi
Q29yZS9SZXNvdXJjZUVycm9yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3Qu
aD4KQEAgLTUyLDcgKzUxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBjYW5BdXRoZW50
aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlQXN5bmMoY29uc3QgV2ViQ29yZTo6UHJvdGVjdGlv
blNwYWNlJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0
KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiBy
ZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3Bv
bnNlKSA9IDA7CiAgICAgZW51bSBjbGFzcyBTaG91bGRDb250aW51ZURpZFJlY2VpdmVSZXNwb25z
ZSB7IE5vLCBZZXMgfTsKLSAgICB2aXJ0dWFsIFNob3VsZENvbnRpbnVlRGlkUmVjZWl2ZVJlc3Bv
bnNlIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJikg
PSAwOworICAgIHZpcnR1YWwgU2hvdWxkQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UgZGlkUmVj
ZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJikgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGlu
dCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZEZp
bmlzaExvYWRpbmcoZG91YmxlIGZpbmlzaFRpbWUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlk
RmFpbExvYWRpbmcoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpID0gMDsKQEAgLTYyLDYg
KzYxLDMgQEAgcHVibGljOgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAv
LyBOZXR3b3JrTG9hZENsaWVudF9oCi0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAkocmV2aXNpb24gMjAx
ODczKQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9h
ZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc4LDcgKzE3OCw3IEBAIHZvaWQgTmV0d29ya1Jl
c291cmNlTG9hZGVyOjpyZXRyaWV2ZUNhY2gKICAgICAgICAgICAgIGxvYWRlci0+ZGlzcGF0Y2hX
aWxsU2VuZFJlcXVlc3RGb3JDYWNoZUVudHJ5KFdURk1vdmUoZW50cnkpKTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQotICAgICAgICBpZiAobG9hZGVyLT5tX3BhcmFtZXRlcnMubmVl
ZHNDZXJ0aWZpY2F0ZUluZm8gJiYgIWVudHJ5LT5yZXNwb25zZSgpLmNvbnRhaW5zQ2VydGlmaWNh
dGVJbmZvKCkpIHsKKyAgICAgICAgaWYgKGxvYWRlci0+bV9wYXJhbWV0ZXJzLm5lZWRzQ2VydGlm
aWNhdGVJbmZvICYmICFlbnRyeS0+cmVzcG9uc2UoKS5jZXJ0aWZpY2F0ZUluZm8oKSkgewogICAg
ICAgICAgICAgbG9hZGVyLT5zdGFydE5ldHdvcmtMb2FkKHJlcXVlc3QpOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CkBAIC0yNzQsNyArMjc0LDcgQEAgdm9pZCBOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXI6OmFib3J0KCkKICAgICBjbGVhbnVwKCk7CiB9CiAKLWF1dG8gTmV0d29ya1Jlc291
cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVj
ZWl2ZWRSZXNwb25zZSkgLT4gU2hvdWxkQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UKK2F1dG8g
TmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25z
ZSYmIHJlY2VpdmVkUmVzcG9uc2UpIC0+IFNob3VsZENvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNl
CiB7CiAgICAgTkVUV09SS1JFU09VUkNFTE9BREVSX0xPR19BTFdBWVMoIlJlY2VpdmVkIG5ldHdv
cmsgcmVzb3VyY2UgcmVzcG9uc2U6IGxvYWRlciA9ICVwLCBwYWdlSUQgPSAlbGx1LCBmcmFtZUlE
ID0gJWxsdSwgaXNNYWluUmVzb3VyY2UgPSAlZCwgaXNTeW5jaHJvbm91cyA9ICVkLCBodHRwU3Rh
dHVzQ29kZSA9ICVkIiwgdGhpcywgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJz
LndlYkZyYW1lSUQsIGlzTWFpblJlc291cmNlKCksIGlzU3luY2hyb25vdXMoKSwgcmVjZWl2ZWRS
ZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpKTsKIApJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgJKHJldmlzaW9uIDIw
MTg3MykKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxv
YWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC04OCw3ICs4OCw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IGNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2VBc3luYyhjb25zdCBXZWJDb3Jl
OjpQcm90ZWN0aW9uU3BhY2UmKSBvdmVycmlkZTsKICAgICBib29sIGlzU3luY2hyb25vdXMoKSBj
b25zdCBvdmVycmlkZTsKICAgICB2b2lkIHdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlZGlyZWN0
UmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmKSBvdmVycmlkZTsKLSAgICBTaG91
bGRDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOworICAgIFNob3VsZENvbnRpbnVlRGlk
UmVjZWl2ZVJlc3BvbnNlIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJiYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGU7
CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGRvdWJsZSBmaW5pc2hUaW1lKSBvdmVycmlkZTsK
ICAgICB2b2lkIGRpZEZhaWxMb2FkaW5nKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBv
dmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuaAko
cmV2aXNpb24gMjAxODczKQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvUGluZ0xv
YWQuaAkod29ya2luZyBjb3B5KQpAQCAtNTgsNyArNTgsNyBAQCBwcml2YXRlOgogICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uOjpDYW5j
ZWwsIHsgfSk7CiAgICAgICAgIGRlbGV0ZSB0aGlzOwogICAgIH0KLSAgICB2b2lkIGRpZFJlY2Vp
dmVSZXNwb25zZU5ldHdvcmtTZXNzaW9uKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
LCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyIGNvbXBsZXRpb25IYW5kbGVyKSBvdmVycmlkZQor
ICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlTmV0d29ya1Nlc3Npb24oV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYmLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyIGNvbXBsZXRpb25IYW5kbGVy
KSBvdmVycmlkZQogICAgIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV2ViQ29yZTo6UG9s
aWN5QWN0aW9uOjpQb2xpY3lJZ25vcmUpOwogICAgICAgICBkZWxldGUgdGhpczsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVu
ZGluZ0Rvd25sb2FkLmgJKHJldmlzaW9uIDIwMTg3MykKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuaAkod29ya2luZyBjb3B5KQpAQCAt
NTUsNyArNTUsNyBAQCBwcml2YXRlOiAgICAKICAgICB2b2lkIGNhbkF1dGhlbnRpY2F0ZUFnYWlu
c3RQcm90ZWN0aW9uU3BhY2VBc3luYyhjb25zdCBXZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2UmKSBv
dmVycmlkZTsKICAgICBib29sIGlzU3luY2hyb25vdXMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBmYWxzZTsgfQogICAgIHZvaWQgd2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1
ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSkgb3ZlcnJp
ZGU7Ci0gICAgU2hvdWxkQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UgZGlkUmVjZWl2ZVJlc3Bv
bnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZSB7IHJldHVybiBT
aG91bGRDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZTo6Tm87IH07CisgICAgU2hvdWxkQ29udGlu
dWVEaWRSZWNlaXZlUmVzcG9uc2UgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmJikgb3ZlcnJpZGUgeyByZXR1cm4gU2hvdWxkQ29udGludWVEaWRSZWNlaXZlUmVz
cG9uc2U6Ok5vOyB9OwogICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGUgeyB9
OwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhkb3VibGUgZmluaXNoVGltZSkgb3ZlcnJpZGUg
eyB9OwogICAgIHZvaWQgZGlkRmFpbExvYWRpbmcoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciYpIG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlQ29kZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlQ29kZXJzLmgJKHJldmlzaW9uIDIwMTg3MykKKysr
IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUNvZGVycy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yMyw4ICsyMyw3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBOZXR3b3JrQ2FjaGVDb2RlcnNfaAotI2RlZmlu
ZSBOZXR3b3JrQ2FjaGVDb2RlcnNfaAorI3ByYWdtYSBvbmNlCiAKICNpZiBFTkFCTEUoTkVUV09S
S19DQUNIRSkKIApAQCAtODEsNiArODAsMzggQEAgdGVtcGxhdGU8dHlwZW5hbWUgUmVwLCB0eXBl
bmFtZSBQZXJpb2Q+IAogICAgIH0KIH07CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBD
b2RlcjxPcHRpb25hbDxUPj4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNv
ZGVyLCBjb25zdCBPcHRpb25hbDxUPiYgb3B0aW9uYWwpCisgICAgeworICAgICAgICBpZiAoIW9w
dGlvbmFsKSB7CisgICAgICAgICAgICBlbmNvZGVyIDw8IGZhbHNlOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBlbmNvZGVyIDw8IHRydWU7CisgICAg
ICAgIGVuY29kZXIgPDwgb3B0aW9uYWwudmFsdWUoKTsKKyAgICB9CisgICAgCisgICAgc3RhdGlj
IGJvb2wgZGVjb2RlKERlY29kZXImIGRlY29kZXIsIE9wdGlvbmFsPFQ+JiBvcHRpb25hbCkKKyAg
ICB7CisgICAgICAgIGJvb2wgaXNFbmdhZ2VkOworICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KGlzRW5nYWdlZCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIAorICAgICAg
ICBpZiAoIWlzRW5nYWdlZCkgeworICAgICAgICAgICAgb3B0aW9uYWwgPSBOdWxsb3B0OworICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIFQgdmFs
dWU7CisgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUodmFsdWUpKQorICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICAKKyAgICAgICAgb3B0aW9uYWwgPSBXVEZNb3ZlKHZhbHVlKTsK
KyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorfTsKKwogdGVtcGxhdGU8dHlwZW5hbWUgS2V5
VHlwZSwgdHlwZW5hbWUgVmFsdWVUeXBlPiBzdHJ1Y3QgQ29kZXI8V1RGOjpLZXlWYWx1ZVBhaXI8
S2V5VHlwZSwgVmFsdWVUeXBlPj4gewogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiBl
bmNvZGVyLCBjb25zdCBXVEY6OktleVZhbHVlUGFpcjxLZXlUeXBlLCBWYWx1ZVR5cGU+JiBwYWly
KQogICAgIHsKQEAgLTI2Nyw0ICsyOTgsMyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBDb2RlcjxXZWJD
b3JlOjpIVFRQSGVhCiB9CiB9CiAjZW5kaWYKLSNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVTcGVjdWxhdGl2ZUxvYWQuY3BwCShyZXZpc2lvbiAyMDE4NzMpCisrKyBTb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC03MCw3ICs3MCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVMb2FkOjp3aWxs
U2VuZFJlZGlyZWN0ZWQKICAgICBhYm9ydCgpOwogfQogCi1hdXRvIFNwZWN1bGF0aXZlTG9hZDo6
ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlY2VpdmVkUmVzcG9u
c2UpIC0+IFNob3VsZENvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlCithdXRvIFNwZWN1bGF0aXZl
TG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZWNlaXZlZFJlc3Bv
bnNlKSAtPiBTaG91bGRDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZQogewogICAgIG1fcmVzcG9u
c2UgPSByZWNlaXZlZFJlc3BvbnNlOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2
ZUxvYWQuaAkocmV2aXNpb24gMjAxODczKQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmgJKHdvcmtpbmcgY29weSkKQEAg
LTU3LDcgKzU3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQ
cm90ZWN0aW9uU3BhY2VBc3luYyhjb25zdCBXZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2UmKSBvdmVy
cmlkZSB7IH0KICAgICBib29sIGlzU3luY2hyb25vdXMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBmYWxzZTsgfQogICAgIHZvaWQgd2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1
ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSkgb3ZlcnJp
ZGU7Ci0gICAgU2hvdWxkQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UgZGlkUmVjZWl2ZVJlc3Bv
bnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKKyAgICBTaG91
bGRDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYmKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIo
UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5n
dGgpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhkb3VibGUgZmluaXNoVGlt
ZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGYWlsTG9hZGluZyhjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yJikgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQkocmV2aXNp
b24gMjAxODczKQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29y
a0RhdGFUYXNrQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTE2NSwxMCArMTY1LDEwIEBAIHZv
aWQgTmV0d29ya0RhdGFUYXNrOjpkaWRDb21wbGV0ZVdpdGhFcnIKICAgICAgICAgbV9jbGllbnQt
PmRpZENvbXBsZXRlV2l0aEVycm9yKGVycm9yKTsKIH0KIAotdm9pZCBOZXR3b3JrRGF0YVRhc2s6
OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNw
b25zZSwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQg
TmV0d29ya0RhdGFUYXNrOjpkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYmIHJlc3BvbnNlLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyIGNvbXBsZXRpb25IYW5k
bGVyKQogewogICAgIGlmIChtX2NsaWVudCkKLSAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVS
ZXNwb25zZU5ldHdvcmtTZXNzaW9uKHJlc3BvbnNlLCBjb21wbGV0aW9uSGFuZGxlcik7CisgICAg
ICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlUmVzcG9uc2VOZXR3b3JrU2Vzc2lvbihXVEZNb3ZlKHJl
c3BvbnNlKSwgY29tcGxldGlvbkhhbmRsZXIpOwogICAgIGVsc2UgewogICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV2ViQ29yZTo6UG9saWN5
QWN0aW9uOjpQb2xpY3lJZ25vcmUpOwpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCShyZXZpc2lv
biAyMDE4NzMpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3Jr
U2Vzc2lvbkNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNDcsNyArMjQ3LDcgQEAgLSAodm9p
ZClVUkxTZXNzaW9uOihOU1VSTFNlc3Npb24gKilzZXNzaQogICAgICAgICBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlIHJlc291cmNlUmVzcG9uc2UocmVzcG9uc2UpOwogICAgICAgICBjb3B5VGlt
aW5nRGF0YShbZGF0YVRhc2sgX3RpbWluZ0RhdGFdLCByZXNvdXJjZVJlc3BvbnNlLnJlc291cmNl
TG9hZFRpbWluZygpKTsKICAgICAgICAgYXV0byBjb21wbGV0aW9uSGFuZGxlckNvcHkgPSBCbG9j
a19jb3B5KGNvbXBsZXRpb25IYW5kbGVyKTsKLSAgICAgICAgbmV0d29ya0RhdGFUYXNrLT5kaWRS
ZWNlaXZlUmVzcG9uc2UocmVzb3VyY2VSZXNwb25zZSwgW2NvbXBsZXRpb25IYW5kbGVyQ29weSwg
dGFza0lkZW50aWZpZXJdKFdlYkNvcmU6OlBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24pIHsKKyAg
ICAgICAgbmV0d29ya0RhdGFUYXNrLT5kaWRSZWNlaXZlUmVzcG9uc2UoV1RGTW92ZShyZXNvdXJj
ZVJlc3BvbnNlKSwgW2NvbXBsZXRpb25IYW5kbGVyQ29weSwgdGFza0lkZW50aWZpZXJdKFdlYkNv
cmU6OlBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24pIHsKICAgICAgICAgICAgIExPRyhOZXR3b3Jr
U2Vzc2lvbiwgIiVsbHUgZGlkUmVjZWl2ZVJlc3BvbnNlIGNvbXBsZXRpb25IYW5kbGVyIChjYW5j
ZWwpIiwgdGFza0lkZW50aWZpZXIpOwogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXJDb3B5
KHRvTlNVUkxTZXNzaW9uUmVzcG9uc2VEaXNwb3NpdGlvbihwb2xpY3lBY3Rpb24pKTsKICAgICAg
ICAgICAgIEJsb2NrX3JlbGVhc2UoY29tcGxldGlvbkhhbmRsZXJDb3B5KTsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCShyZXZpc2lvbiAyMDE4NzMpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDY4LDcgKzQ2OCw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJD
bGllbnQ6OmRpc3BhdGNoRGlkQ28KIAogICAgIC8vIE5vdGlmeSB0aGUgVUlQcm9jZXNzLgogCi0g
ICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRDb21taXRMb2FkRm9y
RnJhbWUobV9mcmFtZS0+ZnJhbWVJRCgpLCBkb2N1bWVudExvYWRlci5uYXZpZ2F0aW9uSUQoKSwg
ZG9jdW1lbnRMb2FkZXIucmVzcG9uc2UoKS5taW1lVHlwZSgpLCBtX2ZyYW1lSGFzQ3VzdG9tQ29u
dGVudFByb3ZpZGVyLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4obV9mcmFtZS0+Y29yZUZyYW1lKCkt
PmxvYWRlcigpLmxvYWRUeXBlKCkpLCBkb2N1bWVudExvYWRlci5yZXNwb25zZSgpLmNlcnRpZmlj
YXRlSW5mbygpLCBtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+ZG9jdW1lbnQoKS0+aXNQbHVnaW5Eb2N1
bWVudCgpLCBVc2VyRGF0YShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50cmFuc2Zvcm1PYmplY3Rz
VG9IYW5kbGVzKHVzZXJEYXRhLmdldCgpKS5nZXQoKSkpKTsKKyAgICB3ZWJQYWdlLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZENvbW1pdExvYWRGb3JGcmFtZShtX2ZyYW1lLT5mcmFt
ZUlEKCksIGRvY3VtZW50TG9hZGVyLm5hdmlnYXRpb25JRCgpLCBkb2N1bWVudExvYWRlci5yZXNw
b25zZSgpLm1pbWVUeXBlKCksIG1fZnJhbWVIYXNDdXN0b21Db250ZW50UHJvdmlkZXIsIHN0YXRp
Y19jYXN0PHVpbnQzMl90PihtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+bG9hZGVyKCkubG9hZFR5cGUo
KSksIGRvY3VtZW50TG9hZGVyLnJlc3BvbnNlKCkuY2VydGlmaWNhdGVJbmZvKCkudmFsdWVPckNv
bXB1dGUoW10geyByZXR1cm4gQ2VydGlmaWNhdGVJbmZvKCk7IH0pLCBtX2ZyYW1lLT5jb3JlRnJh
bWUoKS0+ZG9jdW1lbnQoKS0+aXNQbHVnaW5Eb2N1bWVudCgpLCBVc2VyRGF0YShXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVzZXJEYXRhLmdldCgpKS5n
ZXQoKSkpKTsKICAgICB3ZWJQYWdlLT5kaWRDb21taXRMb2FkKG1fZnJhbWUpOwogfQogCkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAJKHJl
dmlzaW9uIDIwMTg3MykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJG
cmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5NywxNiArMzk3LDE2IEBAIFN0cmluZyBXZWJG
cmFtZTo6dXJsKCkgY29uc3QKICAgICByZXR1cm4gZG9jdW1lbnRMb2FkZXItPnVybCgpLnN0cmlu
ZygpOwogfQogCi1XZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8gV2ViRnJhbWU6OmNlcnRpZmljYXRl
SW5mbygpIGNvbnN0CitDZXJ0aWZpY2F0ZUluZm8gV2ViRnJhbWU6OmNlcnRpZmljYXRlSW5mbygp
IGNvbnN0CiB7CiAgICAgaWYgKCFtX2NvcmVGcmFtZSkKLSAgICAgICAgcmV0dXJuIENlcnRpZmlj
YXRlSW5mbygpOworICAgICAgICByZXR1cm4geyB9OwogCiAgICAgRG9jdW1lbnRMb2FkZXIqIGRv
Y3VtZW50TG9hZGVyID0gbV9jb3JlRnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCk7CiAg
ICAgaWYgKCFkb2N1bWVudExvYWRlcikKLSAgICAgICAgcmV0dXJuIENlcnRpZmljYXRlSW5mbygp
OworICAgICAgICByZXR1cm4geyB9OwogCi0gICAgcmV0dXJuIGRvY3VtZW50TG9hZGVyLT5yZXNw
b25zZSgpLmNlcnRpZmljYXRlSW5mbygpOworICAgIHJldHVybiBkb2N1bWVudExvYWRlci0+cmVz
cG9uc2UoKS5jZXJ0aWZpY2F0ZUluZm8oKS52YWx1ZU9yQ29tcHV0ZShbXSB7IHJldHVybiBDZXJ0
aWZpY2F0ZUluZm8oKTsgfSk7CiB9CiAKIFN0cmluZyBXZWJGcmFtZTo6aW5uZXJUZXh0KCkgY29u
c3QK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>281038</attachid>
            <date>2016-06-10 13:15:28 -0700</date>
            <delta_ts>2016-06-10 13:27:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158232-20160610131701.patch</filename>
            <type>text/plain</type>
            <size>45920</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwMTkzNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYzIEBACisyMDE2LTA2LTEwICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVkdWNlIFJl
c291cmNlUmVzcG9uc2UgY29weWluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTU4MjMyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIu
CisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiAgTm8gY2hhbmdlIGluIGJlaGF2aW9yIGV4Y2VwdCBy
ZW1vdmluZyBhbiB1bm5lY2Vzc2FyeSBjb3B5IG9uIGNvY29hIHBsYXRmb3Jtcy4KKworICAgICAg
ICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJj
ZUxvYWRlcjo6ZGlkU2VuZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6
OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmg6
CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmNyZWF0ZVJlc291cmNlSGFu
ZGxlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkUmVjZWl2
ZVJlc3BvbnNlKToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdy
b3VwLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VIYW5kbGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6QmxvYlJlc291cmNlSGFuZGxlOjpub3RpZnlSZXNwb25zZU9u
U3VjY2Vzcyk6CisgICAgICAgIChXZWJDb3JlOjpCbG9iUmVzb3VyY2VIYW5kbGU6Om5vdGlmeVJl
c3BvbnNlT25FcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpCbG9iUmVzb3VyY2VIYW5kbGU6Om5v
dGlmeVJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkwuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6aGFuZGxlRGF0YVVSTCk6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9QaW5nSGFuZGxlLmg6CisgICAgICAgIChXZWJDb3JlOjpQaW5nSGFuZGxlOjpQaW5n
SGFuZGxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ2xpZW50Ojp3aWxsU2VuZFJl
cXVlc3RBc3luYyk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNsaWVudDo6ZGlk
UmVjZWl2ZVJlc3BvbnNlQXN5bmMpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3Vy
Y2VIYW5kbGVDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ2xpZW50
OjpkaWRTZW5kRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNsaWVudDo6
ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ2xp
ZW50OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJj
ZVJlc3BvbnNlQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFz
ZTo6UmVzb3VyY2VSZXNwb25zZUJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZUJhc2U6OmluY2x1ZGVDZXJ0aWZpY2F0ZUluZm8pOgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZUJhc2U6OnN1Z2dlc3RlZEZpbGVuYW1lKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2VCYXNlOjpjZXJ0aWZpY2F0ZUluZm8pOiBEZWxldGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjpjZXJ0aWZpY2F0ZUluZm8pOgorICAgICAgICAo
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6OmVuY29kZSk6CisgICAgICAgIChXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6ZGVjb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2VCYXNlOjpjb250YWluc0NlcnRpZmljYXRlSW5mbyk6IERlbGV0ZWQuCisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9TeW5jaHJvbm91c0xvYWRlckNsaWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTeW5jaHJvbm91c0xvYWRlckNsaWVudDo6Y2FuQXV0aGVudGljYXRlQWdh
aW5zdFByb3RlY3Rpb25TcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpTeW5jaHJvbm91c0xvYWRl
ckNsaWVudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OlN5bmNocm9u
b3VzTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9TeW5jaHJvbm91c0xvYWRlckNsaWVudC5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25R
dWV1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlv
bkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29u
bmVjdGlvbkRlbGVnYXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN5bmNocm9ub3VzUmVzb3Vy
Y2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25E
ZWxlZ2F0ZTo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFj
L1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGUubW06CisgICAgICAgICgtW1dlYkNvcmVS
ZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGUgY29ubmVjdGlvbjpkaWRSZWNlaXZlUmVzcG9uc2U6XSk6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNP
cGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tOgorICAgICAgICAoLVtXZWJDb3JlUmVzb3VyY2VIYW5k
bGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUgY29ubmVjdGlvbjpkaWRSZWNlaXZlUmVzcG9uc2U6
XSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpuZXh0TXVsdGlwYXJ0UmVzcG9uc2VQYXJ0Q2FsbGJhY2sp
OgorICAgICAgICAoV2ViQ29yZTo6c2VuZFJlcXVlc3RDYWxsYmFjayk6CisKIDIwMTYtMDYtMTAg
IFlvdWVubiBGYWJsZXQgIDx5b3Vlbm4uZmFibGV0QGNyZi5jYW5vbi5mcj4KIAogICAgICAgICBP
cmlnaW4gaGVhZGVyIGlzIG5vdCBpbmNsdWRlZCBpbiBDT1JTIHJlcXVlc3RzIGZvciBwcmVsb2Fk
ZWQgY3Jvc3Mtb3JpZ2luIHJlc291cmNlcwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jl
c291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVz
b3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiAyMDE4NzMpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvUmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MTgsNyArNjE4LDcgQEAg
dm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkU2VuZERhdGEoUmVzb3VyYwogICAgIGRpZFNlbmREYXRh
KGJ5dGVzU2VudCwgdG90YWxCeXRlc1RvQmVTZW50KTsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWRl
cjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlKiwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVzcG9uc2UpCit2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2Uo
UmVzb3VyY2VIYW5kbGUqLCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UpCiB7CiAgICAgaWYg
KGRvY3VtZW50TG9hZGVyKCktPmFwcGxpY2F0aW9uQ2FjaGVIb3N0KCktPm1heWJlTG9hZEZhbGxi
YWNrRm9yUmVzcG9uc2UodGhpcywgcmVzcG9uc2UpKQogICAgICAgICByZXR1cm47CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaAkocmV2aXNpb24gMjAxODczKQorKysg
U291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTE4NSw3ICsxODUsNyBAQCBwcml2YXRlOgogICAgIC8vIFJlc291cmNlSGFuZGxlQ2xpZW50CiAg
ICAgUmVzb3VyY2VSZXF1ZXN0IHdpbGxTZW5kUmVxdWVzdChSZXNvdXJjZUhhbmRsZSosIFJlc291
cmNlUmVxdWVzdCYmLCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSkgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBkaWRTZW5kRGF0YShSZXNvdXJjZUhhbmRsZSosIHVuc2lnbmVkIGxvbmcg
bG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpIG92
ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlKiwgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3Bv
bnNlKFJlc291cmNlSGFuZGxlKiwgUmVzb3VyY2VSZXNwb25zZSYmKSBvdmVycmlkZTsKICAgICB2
b2lkIGRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlKiwgY29uc3QgY2hhciosIHVuc2lnbmVk
LCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZUJ1
ZmZlcihSZXNvdXJjZUhhbmRsZSosIFJlZjxTaGFyZWRCdWZmZXI+JiYsIGludCBlbmNvZGVkRGF0
YUxlbmd0aCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlSGFu
ZGxlKiwgZG91YmxlIGZpbmlzaFRpbWUpIG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAJ
KHJldmlzaW9uIDIwMTg3MykKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBs
aWNhdGlvbkNhY2hlR3JvdXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00ODksNyArNDg5LDcgQEAg
UmVmUHRyPFJlc291cmNlSGFuZGxlPiBBcHBsaWNhdGlvbkNhY2hlRwogICAgIHJldHVybiBoYW5k
bGU7CiB9CiAKLXZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRSZWNlaXZlUmVzcG9uc2Uo
UmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2Up
Cit2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNl
SGFuZGxlKiBoYW5kbGUsIFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSkKIHsKICAgICBBU1NF
UlQobV9mcmFtZSk7CiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIGNvb2tpZSA9
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlKG1f
ZnJhbWUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVHcm91cC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuaAkocmV2aXNpb24gMjAxODczKQorKysgU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xMDgsNyArMTA4LDcgQEAgcHJpdmF0ZToKICAgICAvLyB0aGUgZXhpc3RpbmcgY2xp
ZW50IGNhbGxiYWNrIGNhbm5vdCBiZSB1c2VkLCBzbyBhc3N1bWUgdGhhdCBhbnkgY2xpZW50IHRo
YXQgZW5hYmxlcyBhcHBsaWNhdGlvbiBjYWNoZSBhbHNvIHdhbnRzIGl0IHRvIHVzZSBjcmVkZW50
aWFsIHN0b3JhZ2UuCiAgICAgYm9vbCBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZShSZXNvdXJj
ZUhhbmRsZSopIG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAotICAgIHZvaWQgZGlkUmVjZWl2
ZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJy
aWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlKiwgUmVzb3Vy
Y2VSZXNwb25zZSYmKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlc291cmNl
SGFuZGxlKiwgY29uc3QgY2hhciosIHVuc2lnbmVkIGxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVu
Z3RoKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VIYW5kbGUq
LCBkb3VibGUgZmluaXNoVGltZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGYWlsKFJlc291cmNl
SGFuZGxlKiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VIYW5kbGUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFuZGxlLmNw
cAkocmV2aXNpb24gMjAxODczKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9C
bG9iUmVzb3VyY2VIYW5kbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Myw3ICs4Myw3IEBAIGNs
YXNzIEJsb2JSZXNvdXJjZVN5bmNocm9ub3VzTG9hZGVyIDogcHUKIHB1YmxpYzoKICAgICBCbG9i
UmVzb3VyY2VTeW5jaHJvbm91c0xvYWRlcihSZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VSZXNwb25z
ZSYsIFZlY3RvcjxjaGFyPiYpOwogCi0gICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3Vy
Y2VIYW5kbGUqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7CisgICAgdm9pZCBk
aWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqLCBSZXNvdXJjZVJlc3BvbnNlJiYpIG92
ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFpbChSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNl
RXJyb3ImKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKQEAgLTk5LDcgKzk5LDcgQEAgQmxvYlJlc291
cmNlU3luY2hyb25vdXNMb2FkZXI6OkJsb2JSZXNvdQogewogfQogCi12b2lkIEJsb2JSZXNvdXJj
ZVN5bmNocm9ub3VzTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqIGhh
bmRsZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCit2b2lkIEJsb2JSZXNvdXJj
ZVN5bmNocm9ub3VzTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqIGhh
bmRsZSwgUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlKQogewogICAgIC8vIFdlIGNhbm5vdCBo
YW5kbGUgdGhlIHNpemUgdGhhdCBpcyBtb3JlIHRoYW4gbWF4aW11bSBpbnRlZ2VyLgogICAgIGlm
IChyZXNwb25zZS5leHBlY3RlZENvbnRlbnRMZW5ndGgoKSA+IElOVF9NQVgpIHsKQEAgLTU4Myw5
ICs1ODMsOSBAQCB2b2lkIEJsb2JSZXNvdXJjZUhhbmRsZTo6bm90aWZ5UmVzcG9uc2VPCiAgICAg
Ly8gSXQncyBjdXJyZW50bHkgY2xpZW50J3MgcmVzcG9uc2liaWxpdHkgdG8ga25vdyB0aGF0IGRp
ZFJlY2VpdmVSZXNwb25zZUFzeW5jIGNhbm5vdCBiZSB1c2VkIHRvIGNvbnZlcnQgYQogICAgIC8v
IGxvYWQgaW50byBhIGRvd25sb2FkIG9yIGJsb2JzLgogICAgIGlmICh1c2VzQXN5bmNDYWxsYmFj
a3MoKSkKLSAgICAgICAgY2xpZW50KCktPmRpZFJlY2VpdmVSZXNwb25zZUFzeW5jKHRoaXMsIHJl
c3BvbnNlKTsKKyAgICAgICAgY2xpZW50KCktPmRpZFJlY2VpdmVSZXNwb25zZUFzeW5jKHRoaXMs
IFdURk1vdmUocmVzcG9uc2UpKTsKICAgICBlbHNlCi0gICAgICAgIGNsaWVudCgpLT5kaWRSZWNl
aXZlUmVzcG9uc2UodGhpcywgcmVzcG9uc2UpOworICAgICAgICBjbGllbnQoKS0+ZGlkUmVjZWl2
ZVJlc3BvbnNlKHRoaXMsIFdURk1vdmUocmVzcG9uc2UpKTsKIH0KIAogdm9pZCBCbG9iUmVzb3Vy
Y2VIYW5kbGU6Om5vdGlmeVJlc3BvbnNlT25FcnJvcigpCkBAIC02MTUsOSArNjE1LDkgQEAgdm9p
ZCBCbG9iUmVzb3VyY2VIYW5kbGU6Om5vdGlmeVJlc3BvbnNlTwogICAgIC8vIE5vdGUgdGhhdCB3
ZSBkb24ndCB3YWl0IGZvciBjb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSB3aGVuIHVzaW5nIGRp
ZFJlY2VpdmVSZXNwb25zZUFzeW5jLgogICAgIC8vIFRoaXMgaXMgbm90IGZvcm1hbGx5IGNvcnJl
Y3QsIGJ1dCB0aGUgY2xpZW50IGhhcyB0byBiZSBhIG5vLW9wIGFueXdheSwgYmVjYXVzZSBibG9i
cyBjYW4ndCBiZSBkb3dubG9hZGVkLgogICAgIGlmICh1c2VzQXN5bmNDYWxsYmFja3MoKSkKLSAg
ICAgICAgY2xpZW50KCktPmRpZFJlY2VpdmVSZXNwb25zZUFzeW5jKHRoaXMsIHJlc3BvbnNlKTsK
KyAgICAgICAgY2xpZW50KCktPmRpZFJlY2VpdmVSZXNwb25zZUFzeW5jKHRoaXMsIFdURk1vdmUo
cmVzcG9uc2UpKTsKICAgICBlbHNlCi0gICAgICAgIGNsaWVudCgpLT5kaWRSZWNlaXZlUmVzcG9u
c2UodGhpcywgcmVzcG9uc2UpOworICAgICAgICBjbGllbnQoKS0+ZGlkUmVjZWl2ZVJlc3BvbnNl
KHRoaXMsIFdURk1vdmUocmVzcG9uc2UpKTsKIH0KIAogdm9pZCBCbG9iUmVzb3VyY2VIYW5kbGU6
Om5vdGlmeVJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIGludCBieXRlc1JlYWQpCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkwuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRGF0YVVSTC5jcHAJKHJldmlzaW9u
IDIwMTg3MykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRGF0YVVSTC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTc2LDI1ICs3NiwyMiBAQCB2b2lkIGhhbmRsZURhdGFVUkwoUmVz
b3VyY2VIYW5kbGUqIGhhbmRsCiAKICAgICBpZiAoYmFzZTY0KSB7CiAgICAgICAgIGRhdGEgPSBk
ZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXMoZGF0YSk7Ci0gICAgICAgIGhhbmRsZS0+Y2xpZW50KCkt
PmRpZFJlY2VpdmVSZXNwb25zZShoYW5kbGUsIHJlc3BvbnNlKTsKKyAgICAgICAgaGFuZGxlLT5j
bGllbnQoKS0+ZGlkUmVjZWl2ZVJlc3BvbnNlKGhhbmRsZSwgV1RGTW92ZShyZXNwb25zZSkpOwog
CiAgICAgICAgIC8vIGRpZFJlY2VpdmVSZXNwb25zZSBtaWdodCBjYXVzZSB0aGUgY2xpZW50IHRv
IGJlIGRlbGV0ZWQuCiAgICAgICAgIGlmIChoYW5kbGUtPmNsaWVudCgpKSB7CiAgICAgICAgICAg
ICBWZWN0b3I8Y2hhcj4gb3V0OwotICAgICAgICAgICAgaWYgKGJhc2U2NERlY29kZShkYXRhLCBv
dXQsIEJhc2U2NElnbm9yZVNwYWNlc0FuZE5ld0xpbmVzKSAmJiBvdXQuc2l6ZSgpID4gMCkgewot
ICAgICAgICAgICAgICAgIHJlc3BvbnNlLnNldEV4cGVjdGVkQ29udGVudExlbmd0aChvdXQuc2l6
ZSgpKTsKKyAgICAgICAgICAgIGlmIChiYXNlNjREZWNvZGUoZGF0YSwgb3V0LCBCYXNlNjRJZ25v
cmVTcGFjZXNBbmROZXdMaW5lcykgJiYgb3V0LnNpemUoKSA+IDApCiAgICAgICAgICAgICAgICAg
aGFuZGxlLT5jbGllbnQoKS0+ZGlkUmVjZWl2ZURhdGEoaGFuZGxlLCBvdXQuZGF0YSgpLCBvdXQu
c2l6ZSgpLCAwKTsKLSAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAg
ICAgIFRleHRFbmNvZGluZyBlbmNvZGluZyhjaGFyc2V0KTsKICAgICAgICAgZGF0YSA9IGRlY29k
ZVVSTEVzY2FwZVNlcXVlbmNlcyhkYXRhLCBlbmNvZGluZyk7Ci0gICAgICAgIGhhbmRsZS0+Y2xp
ZW50KCktPmRpZFJlY2VpdmVSZXNwb25zZShoYW5kbGUsIHJlc3BvbnNlKTsKKyAgICAgICAgaGFu
ZGxlLT5jbGllbnQoKS0+ZGlkUmVjZWl2ZVJlc3BvbnNlKGhhbmRsZSwgV1RGTW92ZShyZXNwb25z
ZSkpOwogCiAgICAgICAgIC8vIGRpZFJlY2VpdmVSZXNwb25zZSBtaWdodCBjYXVzZSB0aGUgY2xp
ZW50IHRvIGJlIGRlbGV0ZWQuCiAgICAgICAgIGlmIChoYW5kbGUtPmNsaWVudCgpKSB7CiAgICAg
ICAgICAgICBDU3RyaW5nIGVuY29kZWREYXRhID0gZW5jb2RpbmcuZW5jb2RlKGRhdGEsIFVSTEVu
Y29kZWRFbnRpdGllc0ZvclVuZW5jb2RhYmxlcyk7Ci0gICAgICAgICAgICByZXNwb25zZS5zZXRF
eHBlY3RlZENvbnRlbnRMZW5ndGgoZW5jb2RlZERhdGEubGVuZ3RoKCkpOwogICAgICAgICAgICAg
aWYgKGVuY29kZWREYXRhLmxlbmd0aCgpKQogICAgICAgICAgICAgICAgIGhhbmRsZS0+Y2xpZW50
KCktPmRpZFJlY2VpdmVEYXRhKGhhbmRsZSwgZW5jb2RlZERhdGEuZGF0YSgpLCBlbmNvZGVkRGF0
YS5sZW5ndGgoKSwgMCk7CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUGluZ0hhbmRsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvUGluZ0hhbmRsZS5oCShyZXZpc2lvbiAyMDE4NzMpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL1BpbmdIYW5kbGUuaAkod29ya2luZyBjb3B5KQpAQCAtNTYs
NyArNTYsNyBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIHZvaWQgZGlkUmVjZWl2
ZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJy
aWRlIHsgZGVsZXRlIHRoaXM7IH0KKyAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJj
ZUhhbmRsZSosIFJlc291cmNlUmVzcG9uc2UmJikgb3ZlcnJpZGUgeyBkZWxldGUgdGhpczsgfQog
ICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSosIFJlZjxTaGFyZWRCdWZm
ZXI+JiYsIGludCkgb3ZlcnJpZGUgeyBkZWxldGUgdGhpczsgfTsKICAgICB2b2lkIGRpZEZpbmlz
aExvYWRpbmcoUmVzb3VyY2VIYW5kbGUqLCBkb3VibGUpIG92ZXJyaWRlIHsgZGVsZXRlIHRoaXM7
IH0KICAgICB2b2lkIGRpZEZhaWwoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBSZXNvdXJjZUVycm9y
Jikgb3ZlcnJpZGUgeyBkZWxldGUgdGhpczsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAJKHJldmlz
aW9uIDIwMTg3MykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VI
YW5kbGVDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MCw3ICs1MCw3IEBAIHZvaWQgUmVz
b3VyY2VIYW5kbGVDbGllbnQ6OndpbGxTZW5kUmVxdWUKICAgICBoYW5kbGUtPmNvbnRpbnVlV2ls
bFNlbmRSZXF1ZXN0KFdURk1vdmUocmVxdWVzdCkpOwogfQogCi12b2lkIFJlc291cmNlSGFuZGxl
Q2xpZW50OjpkaWRSZWNlaXZlUmVzcG9uc2VBc3luYyhSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJikKK3ZvaWQgUmVzb3VyY2VIYW5kbGVDbGllbnQ6OmRpZFJl
Y2VpdmVSZXNwb25zZUFzeW5jKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIFJlc291cmNlUmVzcG9u
c2UmJikKIHsKICAgICBoYW5kbGUtPmNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlKCk7CiB9Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJj
ZUhhbmRsZUNsaWVudC5oCShyZXZpc2lvbiAyMDE4NzMpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTcx
LDcgKzcxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBXRUJDT1JFX0VYUE9SVCB2
aXJ0dWFsIFJlc291cmNlUmVxdWVzdCB3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VIYW5kbGUqLCBS
ZXNvdXJjZVJlcXVlc3QmJiwgUmVzb3VyY2VSZXNwb25zZSYmKTsKICAgICAgICAgdmlydHVhbCB2
b2lkIGRpZFNlbmREYXRhKFJlc291cmNlSGFuZGxlKiwgdW5zaWduZWQgbG9uZyBsb25nIC8qYnl0
ZXNTZW50Ki8sIHVuc2lnbmVkIGxvbmcgbG9uZyAvKnRvdGFsQnl0ZXNUb0JlU2VudCovKSB7IH0K
IAotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlSGFuZGxl
KiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIHsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgZGlk
UmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlKiwgUmVzb3VyY2VSZXNwb25zZSYmKSB7IH0K
ICAgICAgICAgCiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhh
bmRsZSosIGNvbnN0IGNoYXIqLCB1bnNpZ25lZCwgaW50IC8qZW5jb2RlZERhdGFMZW5ndGgqLykg
eyB9CiAgICAgICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQnVmZmVy
KFJlc291cmNlSGFuZGxlKiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgaW50IGVuY29kZWREYXRhTGVu
Z3RoKTsKQEAgLTg5LDcgKzg5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBXRUJD
T1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgd2lsbFNlbmRSZXF1ZXN0QXN5bmMoUmVzb3VyY2VIYW5k
bGUqLCBSZXNvdXJjZVJlcXVlc3QmJiwgUmVzb3VyY2VSZXNwb25zZSYmKTsKIAogICAgICAgICAv
LyBDbGllbnQgd2lsbCBjYWxsIFJlc291cmNlSGFuZGxlOjpjb250aW51ZURpZFJlY2VpdmVSZXNw
b25zZSgpIHdoZW4gcmVhZHkuCi0gICAgICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBk
aWRSZWNlaXZlUmVzcG9uc2VBc3luYyhSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmKTsKKyAgICAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVS
ZXNwb25zZUFzeW5jKFJlc291cmNlSGFuZGxlKiwgUmVzb3VyY2VSZXNwb25zZSYmKTsKIAogI2lm
IFVTRShQUk9URUNUSU9OX1NQQUNFX0FVVEhfQ0FMTEJBQ0spCiAgICAgICAgIC8vIENsaWVudCB3
aWxsIHBhc3MgYW4gdXBkYXRlZCByZXF1ZXN0IHVzaW5nIFJlc291cmNlSGFuZGxlOjpjb250aW51
ZUNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoKSB3aGVuIHJlYWR5LgpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJj
ZVJlc3BvbnNlQmFzZS5jcHAJKHJldmlzaW9uIDIwMTg3MykKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00Nyw3ICs0Nyw2IEBAIGlubGluZSBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBSZXNvdXJjZVIK
IFJlc291cmNlUmVzcG9uc2VCYXNlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZSgpCiAgICAgOiBtX2lz
TnVsbCh0cnVlKQogICAgICwgbV9leHBlY3RlZENvbnRlbnRMZW5ndGgoMCkKLSAgICAsIG1faW5j
bHVkZXNDZXJ0aWZpY2F0ZUluZm8oZmFsc2UpCiAgICAgLCBtX2h0dHBTdGF0dXNDb2RlKDApCiB7
CiB9CkBAIC01OCw3ICs1Nyw3IEBAIFJlc291cmNlUmVzcG9uc2VCYXNlOjpSZXNvdXJjZVJlc3Bv
bnNlQmEKICAgICAsIG1fbWltZVR5cGUobWltZVR5cGUpCiAgICAgLCBtX2V4cGVjdGVkQ29udGVu
dExlbmd0aChleHBlY3RlZExlbmd0aCkKICAgICAsIG1fdGV4dEVuY29kaW5nTmFtZSh0ZXh0RW5j
b2RpbmdOYW1lKQotICAgICwgbV9pbmNsdWRlc0NlcnRpZmljYXRlSW5mbyh0cnVlKSAvLyBFbXB0
eSBidXQgdmFsaWQgZm9yIHN5bnRoZXRpYyByZXNwb25zZXMuCisgICAgLCBtX2NlcnRpZmljYXRl
SW5mbyhDZXJ0aWZpY2F0ZUluZm8oKSkgLy8gRW1wdHkgYnV0IHZhbGlkIGZvciBzeW50aGV0aWMg
cmVzcG9uc2VzLgogICAgICwgbV9odHRwU3RhdHVzQ29kZSgwKQogewogfQpAQCAtMTg0LDE1ICsx
ODMsOSBAQCB2b2lkIFJlc291cmNlUmVzcG9uc2VCYXNlOjpzZXRUZXh0RW5jb2RpCiAKIHZvaWQg
UmVzb3VyY2VSZXNwb25zZUJhc2U6OmluY2x1ZGVDZXJ0aWZpY2F0ZUluZm8oKSBjb25zdAogewot
ICAgIGlmIChtX2luY2x1ZGVzQ2VydGlmaWNhdGVJbmZvKQorICAgIGlmIChtX2NlcnRpZmljYXRl
SW5mbykKICAgICAgICAgcmV0dXJuOwogICAgIG1fY2VydGlmaWNhdGVJbmZvID0gc3RhdGljX2Nh
c3Q8Y29uc3QgUmVzb3VyY2VSZXNwb25zZSo+KHRoaXMpLT5wbGF0Zm9ybUNlcnRpZmljYXRlSW5m
bygpOwotICAgIG1faW5jbHVkZXNDZXJ0aWZpY2F0ZUluZm8gPSB0cnVlOwotfQotCi1DZXJ0aWZp
Y2F0ZUluZm8gUmVzb3VyY2VSZXNwb25zZUJhc2U6OmNlcnRpZmljYXRlSW5mbygpIGNvbnN0Ci17
Ci0gICAgcmV0dXJuIG1fY2VydGlmaWNhdGVJbmZvOwogfQogCiBTdHJpbmcgUmVzb3VyY2VSZXNw
b25zZUJhc2U6OnN1Z2dlc3RlZEZpbGVuYW1lKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmgJKHJl
dmlzaW9uIDIwMTg3MykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3Vy
Y2VSZXNwb25zZUJhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtMTE0LDggKzExNCw3IEBAIHB1Ymxp
YzoKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgc3VnZ2VzdGVkRmlsZW5hbWUoKSBjb25zdDsK
IAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaW5jbHVkZUNlcnRpZmljYXRlSW5mbygpIGNvbnN0
OwotICAgIGJvb2wgY29udGFpbnNDZXJ0aWZpY2F0ZUluZm8oKSBjb25zdCB7IHJldHVybiBtX2lu
Y2x1ZGVzQ2VydGlmaWNhdGVJbmZvOyB9Ci0gICAgV0VCQ09SRV9FWFBPUlQgQ2VydGlmaWNhdGVJ
bmZvIGNlcnRpZmljYXRlSW5mbygpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IE9w
dGlvbmFsPENlcnRpZmljYXRlSW5mbz4mIGNlcnRpZmljYXRlSW5mbygpIGNvbnN0IHsgcmV0dXJu
IG1fY2VydGlmaWNhdGVJbmZvOyB9OwogICAgIAogICAgIC8vIFRoZXNlIGZ1bmN0aW9ucyByZXR1
cm4gcGFyc2VkIHZhbHVlcyBvZiB0aGUgY29ycmVzcG9uZGluZyByZXNwb25zZSBoZWFkZXJzLgog
ICAgIC8vIE5hTiBtZWFucyB0aGF0IHRoZSBoZWFkZXIgd2FzIG5vdCBwcmVzZW50IG9yIGhhZCBp
bnZhbGlkIHZhbHVlLgpAQCAtMTkwLDggKzE4OSw4IEBAIHByb3RlY3RlZDoKICAgICBIVFRQSGVh
ZGVyTWFwIG1faHR0cEhlYWRlckZpZWxkczsKICAgICBtdXRhYmxlIFJlc291cmNlTG9hZFRpbWlu
ZyBtX3Jlc291cmNlTG9hZFRpbWluZzsKIAotICAgIG11dGFibGUgYm9vbCBtX2luY2x1ZGVzQ2Vy
dGlmaWNhdGVJbmZvOwotICAgIG11dGFibGUgQ2VydGlmaWNhdGVJbmZvIG1fY2VydGlmaWNhdGVJ
bmZvOworI2RlZmluZSBSRVNPVVJDRV9SRVNQT05TRV9CQVNFX0NFUlRfSU5GT19PUFRJT05BTAor
ICAgIG11dGFibGUgT3B0aW9uYWw8Q2VydGlmaWNhdGVJbmZvPiBtX2NlcnRpZmljYXRlSW5mbzsK
IAogICAgIGludCBtX2h0dHBTdGF0dXNDb2RlOwogCkBAIC0yMzYsOSArMjM1LDcgQEAgdm9pZCBS
ZXNvdXJjZVJlc3BvbnNlQmFzZTo6ZW5jb2RlKEVuY29kZQogICAgIGVuY29kZXIgPDwgbV9odHRw
SGVhZGVyRmllbGRzOwogICAgIGVuY29kZXIgPDwgbV9yZXNvdXJjZUxvYWRUaW1pbmc7CiAgICAg
ZW5jb2RlciA8PCBtX2h0dHBTdGF0dXNDb2RlOwotICAgIGVuY29kZXIgPDwgbV9pbmNsdWRlc0Nl
cnRpZmljYXRlSW5mbzsKLSAgICBpZiAobV9pbmNsdWRlc0NlcnRpZmljYXRlSW5mbykKLSAgICAg
ICAgZW5jb2RlciA8PCBtX2NlcnRpZmljYXRlSW5mbzsKKyAgICBlbmNvZGVyIDw8IG1fY2VydGlm
aWNhdGVJbmZvOwogICAgIGVuY29kZXIuZW5jb2RlRW51bShtX3NvdXJjZSk7CiAgICAgZW5jb2Rl
ci5lbmNvZGVFbnVtKG1fdHlwZSk7CiAgICAgZW5jb2RlciA8PCBtX2lzUmVkaXJlY3RlZDsKQEAg
LTI3NCwxMiArMjcxLDggQEAgYm9vbCBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6ZGVjb2RlKERlY29k
ZQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXNwb25z
ZS5tX2h0dHBTdGF0dXNDb2RlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghZGVj
b2Rlci5kZWNvZGUocmVzcG9uc2UubV9pbmNsdWRlc0NlcnRpZmljYXRlSW5mbykpCisgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShyZXNwb25zZS5tX2NlcnRpZmljYXRlSW5mbykpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICBpZiAocmVzcG9uc2UubV9pbmNsdWRlc0NlcnRpZmljYXRlSW5mbykg
ewotICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3BvbnNlLm1fY2VydGlmaWNhdGVJbmZv
KSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9CiAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZUVudW0ocmVzcG9uc2UubV9zb3VyY2UpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZUVudW0ocmVzcG9uc2UubV90eXBlKSkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU3luY2hyb25vdXNMb2FkZXJDbGllbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU3luY2hyb25vdXNMb2Fk
ZXJDbGllbnQuY3BwCShyZXZpc2lvbiAyMDE4NzMpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NjIsOSArNjIsOSBAQCBib29sIFN5bmNocm9ub3VzTG9hZGVyQ2xpZW50OjpjYW5BdXRoZW50CiB9
CiAjZW5kaWYKIAotdm9pZCBTeW5jaHJvbm91c0xvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZVJlc3Bv
bnNlKFJlc291cmNlSGFuZGxlKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCit2
b2lkIFN5bmNocm9ub3VzTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VI
YW5kbGUqLCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UpCiB7Ci0gICAgbV9yZXNwb25zZSA9
IHJlc3BvbnNlOworICAgIG1fcmVzcG9uc2UgPSBXVEZNb3ZlKHJlc3BvbnNlKTsKIH0KIAogdm9p
ZCBTeW5jaHJvbm91c0xvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUq
LCBjb25zdCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIGludCAvKmVuY29kZWREYXRhTGVu
Z3RoKi8pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1N5bmNocm9ub3Vz
TG9hZGVyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9TeW5jaHJvbm91c0xvYWRlckNsaWVudC5oCShyZXZpc2lvbiAyMDE4NzMpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50LmgJKHdv
cmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDcgQEAgcHJpdmF0ZToKICAgICBSZXNvdXJjZVJlcXVl
c3Qgd2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlSGFuZGxlKiwgUmVzb3VyY2VSZXF1ZXN0JiYsIFJl
c291cmNlUmVzcG9uc2UmJikgb3ZlcnJpZGU7CiAgICAgYm9vbCBzaG91bGRVc2VDcmVkZW50aWFs
U3RvcmFnZShSZXNvdXJjZUhhbmRsZSopIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZUF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFJlc291cmNlSGFuZGxlKiwgY29uc3QgQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UmKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShSZXNv
dXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKKyAgICB2b2lk
IGRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSosIFJlc291cmNlUmVzcG9uc2UmJikg
b3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0
IGNoYXIqLCB1bnNpZ25lZCwgaW50IC8qZW5jb2RlZERhdGFMZW5ndGgqLykgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlSGFuZGxlKiwgZG91YmxlIC8qZmluaXNo
VGltZSovKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZhaWwoUmVzb3VyY2VIYW5kbGUqLCBjb25z
dCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3Bl
cmF0aW9uUXVldWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRp
b25RdWV1ZS5jcHAJKHJldmlzaW9uIDIwMTg3MykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVy
YXRpb25RdWV1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2MSw3ICsxNjEsNyBAQCB2b2lkIFJl
c291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhCiAgICAgICAgIFVOVVNFRF9QQVJBTShj
b25uZWN0aW9uKTsKICNlbmRpZgogICAgICAgICAKLSAgICAgICAgbV9oYW5kbGUtPmNsaWVudCgp
LT5kaWRSZWNlaXZlUmVzcG9uc2VBc3luYyhtX2hhbmRsZSwgcmVzb3VyY2VSZXNwb25zZSk7Cisg
ICAgICAgIG1faGFuZGxlLT5jbGllbnQoKS0+ZGlkUmVjZWl2ZVJlc3BvbnNlQXN5bmMobV9oYW5k
bGUsIFdURk1vdmUocmVzb3VyY2VSZXNwb25zZSkpOwogICAgIH0pOwogICAgIGRpc3BhdGNoX3Nl
bWFwaG9yZV93YWl0KG1fc2VtYXBob3JlLCBESVNQQVRDSF9USU1FX0ZPUkVWRVIpOwogfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9TeW5jaHJvbm91c1Jlc291cmNl
SGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJM
Q29ubmVjdGlvbkRlbGVnYXRlLmNwcAkocmV2aXNpb24gMjAxODczKQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9TeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25u
ZWN0aW9uRGVsZWdhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODAsNyArMTgwLDcgQEAgdm9p
ZCBTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZQogICAgIFVOVVNFRF9QQVJBTShj
b25uZWN0aW9uKTsKICNlbmRpZgogICAgIAotICAgIG1faGFuZGxlLT5jbGllbnQoKS0+ZGlkUmVj
ZWl2ZVJlc3BvbnNlKG1faGFuZGxlLCByZXNvdXJjZVJlc3BvbnNlKTsKKyAgICBtX2hhbmRsZS0+
Y2xpZW50KCktPmRpZFJlY2VpdmVSZXNwb25zZShtX2hhbmRsZSwgV1RGTW92ZShyZXNvdXJjZVJl
c3BvbnNlKSk7CiB9CiAKIHZvaWQgU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVj
dGlvbkRlbGVnYXRlOjpkaWRSZWNlaXZlRGF0YShDRkRhdGFSZWYgZGF0YSwgQ0ZJbmRleCBvcmln
aW5hbExlbmd0aCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dl
YkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGUubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0
ZS5tbQkocmV2aXNpb24gMjAxODczKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZS5tbQkod29ya2luZyBjb3B5KQpA
QCAtMTY5LDcgKzE2OSw3IEBAIC0gKHZvaWQpY29ubmVjdGlvbjooTlNVUkxDb25uZWN0aW9uICop
Y28KICAgICBVTlVTRURfUEFSQU0oY29ubmVjdGlvbik7CiAjZW5kaWYKICAgICAKLSAgICBtX2hh
bmRsZS0+Y2xpZW50KCktPmRpZFJlY2VpdmVSZXNwb25zZShtX2hhbmRsZSwgcmVzb3VyY2VSZXNw
b25zZSk7CisgICAgbV9oYW5kbGUtPmNsaWVudCgpLT5kaWRSZWNlaXZlUmVzcG9uc2UobV9oYW5k
bGUsIFdURk1vdmUocmVzb3VyY2VSZXNwb25zZSkpOwogfQogCiAjaWYgVVNFKE5FVFdPUktfQ0ZE
QVRBX0FSUkFZX0NBTExCQUNLKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVS
ZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5tbQkocmV2aXNpb24gMjAxODcz
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNl
SGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yMTUs
NyArMjE1LDcgQEAgLSAodm9pZCljb25uZWN0aW9uOihOU1VSTENvbm5lY3Rpb24gKiljbwogI2Vs
c2UKICAgICAgICAgVU5VU0VEX1BBUkFNKGNvbm5lY3Rpb24pOwogI2VuZGlmCi0gICAgICAgIG1f
aGFuZGxlLT5jbGllbnQoKS0+ZGlkUmVjZWl2ZVJlc3BvbnNlQXN5bmMobV9oYW5kbGUsIHJlc291
cmNlUmVzcG9uc2UpOworICAgICAgICBtX2hhbmRsZS0+Y2xpZW50KCktPmRpZFJlY2VpdmVSZXNw
b25zZUFzeW5jKG1faGFuZGxlLCBXVEZNb3ZlKHJlc291cmNlUmVzcG9uc2UpKTsKICAgICB9KTsK
IAogICAgIGRpc3BhdGNoX3NlbWFwaG9yZV93YWl0KG1fc2VtYXBob3JlLCBESVNQQVRDSF9USU1F
X0ZPUkVWRVIpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jl
c291cmNlSGFuZGxlU291cC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAJKHJldmlzaW9uIDIwMTg3MykK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNv
dXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzYsNyArMTM2LDcgQEAgcHVibGljOgogICAgIH0K
ICNlbmRpZiAvLyBTT1VQX0NIRUNLX1ZFUlNJT04oMiwgNDksIDkxKQogCi0gICAgdm9pZCBkaWRS
ZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBy
ZXNwb25zZSkgb3ZlcnJpZGUKKyAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUhh
bmRsZSosIFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSkgb3ZlcnJpZGUKICAgICB7CiAgICAg
ICAgIG1fcmVzcG9uc2UgPSByZXNwb25zZTsKICAgICB9CkBAIC02NTQsOSArNjU0LDkgQEAgc3Rh
dGljIHZvaWQgbmV4dE11bHRpcGFydFJlc3BvbnNlUGFydENhbAogICAgIGQtPm1fcHJldmlvdXNQ
b3NpdGlvbiA9IDA7CiAKICAgICBpZiAoaGFuZGxlLT5jbGllbnQoKS0+dXNlc0FzeW5jQ2FsbGJh
Y2tzKCkpCi0gICAgICAgIGhhbmRsZS0+Y2xpZW50KCktPmRpZFJlY2VpdmVSZXNwb25zZUFzeW5j
KGhhbmRsZS5nZXQoKSwgZC0+bV9yZXNwb25zZSk7CisgICAgICAgIGhhbmRsZS0+Y2xpZW50KCkt
PmRpZFJlY2VpdmVSZXNwb25zZUFzeW5jKGhhbmRsZS5nZXQoKSwgUmVzb3VyY2VSZXNwb25zZShk
LT5tX3Jlc3BvbnNlKSk7CiAgICAgZWxzZSB7Ci0gICAgICAgIGhhbmRsZS0+Y2xpZW50KCktPmRp
ZFJlY2VpdmVSZXNwb25zZShoYW5kbGUuZ2V0KCksIGQtPm1fcmVzcG9uc2UpOworICAgICAgICBo
YW5kbGUtPmNsaWVudCgpLT5kaWRSZWNlaXZlUmVzcG9uc2UoaGFuZGxlLmdldCgpLCBSZXNvdXJj
ZVJlc3BvbnNlKGQtPm1fcmVzcG9uc2UpKTsKICAgICAgICAgY29udGludWVBZnRlckRpZFJlY2Vp
dmVSZXNwb25zZShoYW5kbGUuZ2V0KCkpOwogICAgIH0KIH0KQEAgLTcxOCw5ICs3MTgsOSBAQCBz
dGF0aWMgdm9pZCBzZW5kUmVxdWVzdENhbGxiYWNrKEdPYmplY3QqCiAgICAgICAgIGQtPm1faW5w
dXRTdHJlYW0gPSBpbnB1dFN0cmVhbTsKIAogICAgIGlmIChkLT5jbGllbnQoKS0+dXNlc0FzeW5j
Q2FsbGJhY2tzKCkpCi0gICAgICAgIGhhbmRsZS0+Y2xpZW50KCktPmRpZFJlY2VpdmVSZXNwb25z
ZUFzeW5jKGhhbmRsZS5nZXQoKSwgZC0+bV9yZXNwb25zZSk7CisgICAgICAgIGhhbmRsZS0+Y2xp
ZW50KCktPmRpZFJlY2VpdmVSZXNwb25zZUFzeW5jKGhhbmRsZS5nZXQoKSwgUmVzb3VyY2VSZXNw
b25zZShkLT5tX3Jlc3BvbnNlKSk7CiAgICAgZWxzZSB7Ci0gICAgICAgIGhhbmRsZS0+Y2xpZW50
KCktPmRpZFJlY2VpdmVSZXNwb25zZShoYW5kbGUuZ2V0KCksIGQtPm1fcmVzcG9uc2UpOworICAg
ICAgICBoYW5kbGUtPmNsaWVudCgpLT5kaWRSZWNlaXZlUmVzcG9uc2UoaGFuZGxlLmdldCgpLCBS
ZXNvdXJjZVJlc3BvbnNlKGQtPm1fcmVzcG9uc2UpKTsKICAgICAgICAgY29udGludWVBZnRlckRp
ZFJlY2VpdmVSZXNwb25zZShoYW5kbGUuZ2V0KCkpOwogICAgIH0KIH0KSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDIwMTg5NCkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDQ0IEBACisyMDE2LTA2LTEwICBBbGV4IENocmlzdGVuc2VuICA8YWNo
cmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVkdWNlIFJlc291cmNlUmVzcG9uc2Ug
Y29weWluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTU4MjMyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmg6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0xvYWQuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6Y29udGludWVE
aWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6c2hhcmVk
RGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWQ6OnNoYXJl
ZFdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9h
ZDo6ZGlkUmVjZWl2ZUNoYWxsZW5nZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkOjpk
aWRSZWNlaXZlUmVzcG9uc2VOZXR3b3JrU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtMb2FkOjpkaWRSZWNlaXZlUmVzcG9uc2VBc3luYyk6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0xvYWQuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENs
aWVudC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5j
cHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6cmV0cmlldmVDYWNo
ZUVudHJ5KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjphYm9ydCk6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmg6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVDb2RlcnMuaDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nh
Y2hlOjpDb2RlcjxPcHRpb25hbDxUPj46OmVuY29kZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtDYWNoZTo6Q29kZXI8T3B0aW9uYWw8VD4+OjpkZWNvZGUpOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkOjp3aWxsU2VuZFJlZGlyZWN0ZWRS
ZXF1ZXN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVj
dWxhdGl2ZUxvYWQuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0
YVRhc2tDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrOjpkaWRDb21w
bGV0ZVdpdGhFcnJvcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFzazo6ZGlkUmVj
ZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vz
c2lvbkNvY29hLm1tOgorICAgICAgICAoLVtXS05ldHdvcmtTZXNzaW9uRGVsZWdhdGUgVVJMU2Vz
c2lvbjpkYXRhVGFzazpkaWRSZWNlaXZlUmVzcG9uc2U6Y29tcGxldGlvbkhhbmRsZXI6XSk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENv
bW1pdExvYWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkZyYW1lOjp1cmwpOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFt
ZTo6Y2VydGlmaWNhdGVJbmZvKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OmlubmVyVGV4
dCk6CisKIDIwMTYtMDYtMDkgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0
Lm9yZz4KIAogICAgICAgICBDbGVhbiB1cCBFZGl0b3JDbGllbnQgbGlmZXRpbWUKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5oCShyZXZp
c2lvbiAyMDE4NzMpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0
YVRhc2suaAkod29ya2luZyBjb3B5KQpAQCAtNzAsNyArNzAsNyBAQCBjbGFzcyBOZXR3b3JrRGF0
YVRhc2tDbGllbnQgewogcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB3aWxsUGVyZm9ybUhUVFBS
ZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYmLCBSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIGRpZFJlY2VpdmVDaGFsbGVuZ2UoY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFs
bGVuZ2UmLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlcikgPSAwOwotICAgIHZpcnR1YWwgdm9p
ZCBkaWRSZWNlaXZlUmVzcG9uc2VOZXR3b3JrU2Vzc2lvbihjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlcikgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBkaWRSZWNlaXZlUmVzcG9uc2VOZXR3b3JrU2Vzc2lvbihXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRCZWNvbWVEb3dubG9hZCgpID0gMDsK
QEAgLTEwMCw3ICsxMDAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRTZW5kRGF0YSh1aW50NjRf
dCB0b3RhbEJ5dGVzU2VudCwgdWludDY0X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9TZW5kKTsKICAg
ICB2b2lkIGRpZFJlY2VpdmVDaGFsbGVuZ2UoY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25D
aGFsbGVuZ2UmLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlcik7CiAgICAgdm9pZCBkaWRDb21w
bGV0ZVdpdGhFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7Ci0gICAgdm9pZCBk
aWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIFJlc3Bv
bnNlQ29tcGxldGlvbkhhbmRsZXIpOworICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmJiwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlcik7CiAgICAg
dm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKTsKICAgICB2
b2lkIGRpZEJlY29tZURvd25sb2FkKCk7CiAgICAgCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCShyZXZpc2lvbiAyMDE4NzMpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE1MywxNCArMTUzLDEzIEBAIHZvaWQgTmV0d29ya0xvYWQ6OmNvbnRpbnVlRGlkUmVjZWl2
ZVJlc3AKICAgICAgICAgbV9oYW5kbGUtPmNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlKCk7CiB9
CiAKLU5ldHdvcmtMb2FkQ2xpZW50OjpTaG91bGRDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSBO
ZXR3b3JrTG9hZDo6c2hhcmVkRGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmIHJlY2VpdmVkUmVzcG9uc2UpCitOZXR3b3JrTG9hZENsaWVudDo6U2hvdWxkQ29udGludWVE
aWRSZWNlaXZlUmVzcG9uc2UgTmV0d29ya0xvYWQ6OnNoYXJlZERpZFJlY2VpdmVSZXNwb25zZShS
ZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UpCiB7Ci0gICAgUmVzb3VyY2VSZXNwb25zZSByZXNw
b25zZSA9IHJlY2VpdmVkUmVzcG9uc2U7CiAgICAgcmVzcG9uc2Uuc2V0U291cmNlKFJlc291cmNl
UmVzcG9uc2U6OlNvdXJjZTo6TmV0d29yayk7CiAgICAgaWYgKG1fcGFyYW1ldGVycy5uZWVkc0Nl
cnRpZmljYXRlSW5mbykKICAgICAgICAgcmVzcG9uc2UuaW5jbHVkZUNlcnRpZmljYXRlSW5mbygp
OwogCi0gICAgcmV0dXJuIG1fY2xpZW50LmRpZFJlY2VpdmVSZXNwb25zZShyZXNwb25zZSk7Cisg
ICAgcmV0dXJuIG1fY2xpZW50LmRpZFJlY2VpdmVSZXNwb25zZShXVEZNb3ZlKHJlc3BvbnNlKSk7
CiB9CiAKIHZvaWQgTmV0d29ya0xvYWQ6OnNoYXJlZFdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3Qo
UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgUmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVz
cG9uc2UpCkBAIC0yMzksMTIgKzIzOCwxMiBAQCB2b2lkIE5ldHdvcmtMb2FkOjpkaWRSZWNlaXZl
Q2hhbGxlbmdlKGNvCiAgICAgICAgIG1fY2xpZW50LmNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90
ZWN0aW9uU3BhY2VBc3luYyhjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlKCkpOwogfQogCi12b2lk
IE5ldHdvcmtMb2FkOjpkaWRSZWNlaXZlUmVzcG9uc2VOZXR3b3JrU2Vzc2lvbihjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciBjb21wbGV0
aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVSZXNwb25zZU5ldHdvcmtT
ZXNzaW9uKFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgUmVzcG9uc2VDb21wbGV0aW9uSGFu
ZGxlciBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwog
ICAgIGlmIChtX3Rhc2sgJiYgbV90YXNrLT5wZW5kaW5nRG93bmxvYWRJRCgpLmRvd25sb2FkSUQo
KSkKICAgICAgICAgTmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRvbigpLmZpbmRQZW5kaW5nRG93bmxv
YWRMb2NhdGlvbigqbV90YXNrLmdldCgpLCBjb21wbGV0aW9uSGFuZGxlciwgbV90YXNrLT5jdXJy
ZW50UmVxdWVzdCgpKTsKLSAgICBlbHNlIGlmIChzaGFyZWREaWRSZWNlaXZlUmVzcG9uc2UocmVz
cG9uc2UpID09IE5ldHdvcmtMb2FkQ2xpZW50OjpTaG91bGRDb250aW51ZURpZFJlY2VpdmVSZXNw
b25zZTo6WWVzKQorICAgIGVsc2UgaWYgKHNoYXJlZERpZFJlY2VpdmVSZXNwb25zZShXVEZNb3Zl
KHJlc3BvbnNlKSkgPT0gTmV0d29ya0xvYWRDbGllbnQ6OlNob3VsZENvbnRpbnVlRGlkUmVjZWl2
ZVJlc3BvbnNlOjpZZXMpCiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFBvbGljeVVzZSk7CiAg
ICAgZWxzZQogICAgICAgICBtX3Jlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIgPSBjb21wbGV0aW9u
SGFuZGxlcjsKQEAgLTI4NywxMCArMjg2LDEwIEBAIHZvaWQgTmV0d29ya0xvYWQ6OmNhbm5vdFNo
b3dVUkwoKQogICAgIAogI2VuZGlmCiAKLXZvaWQgTmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVSZXNw
b25zZUFzeW5jKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlY2VpdmVkUmVzcG9uc2UpCit2b2lkIE5ldHdvcmtMb2FkOjpkaWRSZWNlaXZlUmVzcG9uc2VB
c3luYyhSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVjZWl2ZWRS
ZXNwb25zZSkKIHsKICAgICBBU1NFUlRfVU5VU0VEKGhhbmRsZSwgaGFuZGxlID09IG1faGFuZGxl
KTsKLSAgICBpZiAoc2hhcmVkRGlkUmVjZWl2ZVJlc3BvbnNlKHJlY2VpdmVkUmVzcG9uc2UpID09
IE5ldHdvcmtMb2FkQ2xpZW50OjpTaG91bGRDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZTo6WWVz
KQorICAgIGlmIChzaGFyZWREaWRSZWNlaXZlUmVzcG9uc2UoV1RGTW92ZShyZWNlaXZlZFJlc3Bv
bnNlKSkgPT0gTmV0d29ya0xvYWRDbGllbnQ6OlNob3VsZENvbnRpbnVlRGlkUmVjZWl2ZVJlc3Bv
bnNlOjpZZXMpCiAgICAgICAgIG1faGFuZGxlLT5jb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSgp
OwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2Fk
LmgJKHJldmlzaW9uIDIwMTg3MykKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05l
dHdvcmtMb2FkLmgJKHdvcmtpbmcgY29weSkKQEAgLTY3LDcgKzY3LDcgQEAgcHVibGljOgogICAg
IC8vIE5ldHdvcmtEYXRhVGFza0NsaWVudAogICAgIHZvaWQgd2lsbFBlcmZvcm1IVFRQUmVkaXJl
Y3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmJiwgUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlcikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNl
aXZlQ2hhbGxlbmdlKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiwgQ2hh
bGxlbmdlQ29tcGxldGlvbkhhbmRsZXIpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3Bv
bnNlTmV0d29ya1Nlc3Npb24oY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIFJlc3Bv
bnNlQ29tcGxldGlvbkhhbmRsZXIpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNl
TmV0d29ya1Nlc3Npb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZXNwb25zZUNvbXBs
ZXRpb25IYW5kbGVyKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwogICAgIHZvaWQgZGlkQ29tcGxldGVXaXRoRXJyb3Io
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIGZpbmFsOwogICAgIHZvaWQgZGlkQmVjb21l
RG93bmxvYWQoKSBmaW5hbDsKQEAgLTc4LDcgKzc4LDcgQEAgcHVibGljOgogICAgIC8vIFJlc291
cmNlSGFuZGxlQ2xpZW50CiAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3RBc3luYyhXZWJDb3JlOjpS
ZXNvdXJjZUhhbmRsZSosIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRT
ZW5kRGF0YShXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIHVuc2lnbmVkIGxvbmcgbG9uZyBieXRl
c1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpIG92ZXJyaWRlOwot
ICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlQXN5bmMoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUq
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7CisgICAgdm9pZCBk
aWRSZWNlaXZlUmVzcG9uc2VBc3luYyhXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShX
ZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIGNvbnN0IGNoYXIqLCB1bnNpZ25lZCwgaW50IGVuY29k
ZWREYXRhTGVuZ3RoKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoV2ViQ29y
ZTo6UmVzb3VyY2VIYW5kbGUqLCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVw
b3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2Fk
aW5nKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwgZG91YmxlIGZpbmlzaFRpbWUpIG92ZXJyaWRl
OwpAQCAtMTE2LDcgKzExNiw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiBwcml2YXRlOgotICAgIE5l
dHdvcmtMb2FkQ2xpZW50OjpTaG91bGRDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSBzaGFyZWRE
aWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOworICAg
IE5ldHdvcmtMb2FkQ2xpZW50OjpTaG91bGRDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSBzaGFy
ZWREaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmKTsKICAgICB2
b2lkIHNoYXJlZFdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJik7CiAKICAgICBOZXR3b3JrTG9hZENs
aWVudCYgbV9jbGllbnQ7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrTG9hZENsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtMb2FkQ2xpZW50LmgJKHJldmlzaW9uIDIwMTg3MykKKysrIFNvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTIzLDggKzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwog
Ci0jaWZuZGVmIE5ldHdvcmtMb2FkQ2xpZW50X2gKLSNkZWZpbmUgTmV0d29ya0xvYWRDbGllbnRf
aAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgpAQCAtNTIsNyArNTEsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIGNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3Bh
Y2VBc3luYyhjb25zdCBXZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2UmKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIHdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlZGlyZWN0UmVxdWVzdCwgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UpID0gMDsKICAgICBlbnVtIGNsYXNz
IFNob3VsZENvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlIHsgTm8sIFllcyB9OwotICAgIHZpcnR1
YWwgU2hvdWxkQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UgZGlkUmVjZWl2ZVJlc3BvbnNlKGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKSA9IDA7CisgICAgdmlydHVhbCBTaG91bGRD
b250aW51ZURpZFJlY2VpdmVSZXNwb25zZSBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVCdWZmZXIo
UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5n
dGgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZyhkb3VibGUgZmluaXNo
VGltZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsTG9hZGluZyhjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yJikgPSAwOwpAQCAtNjIsNiArNjEsMyBAQCBwdWJsaWM6CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIE5ldHdvcmtMb2FkQ2xpZW50X2gKLQpJ
bmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiAyMDE4NzMpCisrKyBTb3VyY2UvV2ViS2l0Mi9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xNzgsNyArMTc4LDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnJldHJpZXZlQ2Fj
aAogICAgICAgICAgICAgbG9hZGVyLT5kaXNwYXRjaFdpbGxTZW5kUmVxdWVzdEZvckNhY2hlRW50
cnkoV1RGTW92ZShlbnRyeSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAg
ICAgIGlmIChsb2FkZXItPm1fcGFyYW1ldGVycy5uZWVkc0NlcnRpZmljYXRlSW5mbyAmJiAhZW50
cnktPnJlc3BvbnNlKCkuY29udGFpbnNDZXJ0aWZpY2F0ZUluZm8oKSkgeworICAgICAgICBpZiAo
bG9hZGVyLT5tX3BhcmFtZXRlcnMubmVlZHNDZXJ0aWZpY2F0ZUluZm8gJiYgIWVudHJ5LT5yZXNw
b25zZSgpLmNlcnRpZmljYXRlSW5mbygpKSB7CiAgICAgICAgICAgICBsb2FkZXItPnN0YXJ0TmV0
d29ya0xvYWQocmVxdWVzdCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTI3
NCw3ICsyNzQsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6YWJvcnQoKQogICAgIGNs
ZWFudXAoKTsKIH0KIAotYXV0byBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNw
b25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWNlaXZlZFJlc3BvbnNlKSAtPiBTaG91bGRD
b250aW51ZURpZFJlY2VpdmVSZXNwb25zZQorYXV0byBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRp
ZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVjZWl2ZWRSZXNwb25zZSkgLT4g
U2hvdWxkQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UKIHsKICAgICBORVRXT1JLUkVTT1VSQ0VM
T0FERVJfTE9HX0FMV0FZUygiUmVjZWl2ZWQgbmV0d29yayByZXNvdXJjZSByZXNwb25zZTogbG9h
ZGVyID0gJXAsIHBhZ2VJRCA9ICVsbHUsIGZyYW1lSUQgPSAlbGx1LCBpc01haW5SZXNvdXJjZSA9
ICVkLCBpc1N5bmNocm9ub3VzID0gJWQsIGh0dHBTdGF0dXNDb2RlID0gJWQiLCB0aGlzLCBtX3Bh
cmFtZXRlcnMud2ViUGFnZUlELCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgaXNNYWluUmVzb3Vy
Y2UoKSwgaXNTeW5jaHJvbm91cygpLCByZWNlaXZlZFJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkp
OwogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VM
b2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUmVzb3VyY2VMb2FkZXIuaAkocmV2aXNpb24gMjAxODczKQorKysgU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTg4LDcgKzg4LDcgQEAgcHVibGljOgogICAgIHZvaWQgY2FuQXV0aGVudGljYXRlQWdhaW5zdFBy
b3RlY3Rpb25TcGFjZUFzeW5jKGNvbnN0IFdlYkNvcmU6OlByb3RlY3Rpb25TcGFjZSYpIG92ZXJy
aWRlOwogICAgIGJvb2wgaXNTeW5jaHJvbm91cygpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQg
d2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiYpIG92ZXJyaWRlOwotICAgIFNob3VsZENvbnRpbnVlRGlkUmVjZWl2ZVJlc3Bv
bnNlIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJikg
b3ZlcnJpZGU7CisgICAgU2hvdWxkQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UgZGlkUmVjZWl2
ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJikgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGludCByZXBv
cnRlZEVuY29kZWREYXRhTGVuZ3RoKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRp
bmcoZG91YmxlIGZpbmlzaFRpbWUpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFpbExvYWRpbmco
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5oCShyZXZpc2lvbiAyMDE4NzMpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5oCSh3b3JraW5nIGNvcHkpCkBAIC01
OCw3ICs1OCw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb246OkNhbmNlbCwgeyB9KTsKICAgICAgICAgZGVsZXRl
IHRoaXM7CiAgICAgfQotICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlTmV0d29ya1Nlc3Npb24o
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRs
ZXIgY29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlCisgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9u
c2VOZXR3b3JrU2Vzc2lvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29t
cGxldGlvbkhhbmRsZXIgY29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlCiAgICAgewogICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihXZWJDb3JlOjpQb2xpY3lBY3Rpb246OlBvbGljeUlnbm9yZSk7
CiAgICAgICAgIGRlbGV0ZSB0aGlzOwpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuaAkocmV2aXNpb24g
MjAxODczKQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRp
bmdEb3dubG9hZC5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSw3ICs1NSw3IEBAIHByaXZhdGU6ICAg
IAogICAgIHZvaWQgY2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZUFzeW5jKGNv
bnN0IFdlYkNvcmU6OlByb3RlY3Rpb25TcGFjZSYpIG92ZXJyaWRlOwogICAgIGJvb2wgaXNTeW5j
aHJvbm91cygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdm9pZCB3aWxs
U2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlKSBvdmVycmlkZTsKLSAgICBTaG91bGRDb250aW51ZURp
ZFJlY2VpdmVSZXNwb25zZSBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYpIG92ZXJyaWRlIHsgcmV0dXJuIFNob3VsZENvbnRpbnVlRGlkUmVjZWl2ZVJl
c3BvbnNlOjpObzsgfTsKKyAgICBTaG91bGRDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSBkaWRS
ZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmKSBvdmVycmlkZSB7IHJl
dHVybiBTaG91bGRDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZTo6Tm87IH07CiAgICAgdm9pZCBk
aWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRl
ZEVuY29kZWREYXRhTGVuZ3RoKSBvdmVycmlkZSB7IH07CiAgICAgdm9pZCBkaWRGaW5pc2hMb2Fk
aW5nKGRvdWJsZSBmaW5pc2hUaW1lKSBvdmVycmlkZSB7IH07CiAgICAgdm9pZCBkaWRGYWlsTG9h
ZGluZyhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVDb2RlcnMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVDb2RlcnMuaAkocmV2aXNpb24gMjAxODczKQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlQ29kZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDgg
KzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZu
ZGVmIE5ldHdvcmtDYWNoZUNvZGVyc19oCi0jZGVmaW5lIE5ldHdvcmtDYWNoZUNvZGVyc19oCisj
cHJhZ21hIG9uY2UKIAogI2lmIEVOQUJMRShORVRXT1JLX0NBQ0hFKQogCkBAIC04MSw2ICs4MCwz
OCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBSZXAsIHR5cGVuYW1lIFBlcmlvZD4gCiAgICAgfQogfTsK
IAordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IENvZGVyPE9wdGlvbmFsPFQ+PiB7CisgICAg
c3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IE9wdGlvbmFsPFQ+JiBv
cHRpb25hbCkKKyAgICB7CisgICAgICAgIGlmICghb3B0aW9uYWwpIHsKKyAgICAgICAgICAgIGVu
Y29kZXIgPDwgZmFsc2U7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAg
CisgICAgICAgIGVuY29kZXIgPDwgdHJ1ZTsKKyAgICAgICAgZW5jb2RlciA8PCBvcHRpb25hbC52
YWx1ZSgpOworICAgIH0KKyAgICAKKyAgICBzdGF0aWMgYm9vbCBkZWNvZGUoRGVjb2RlciYgZGVj
b2RlciwgT3B0aW9uYWw8VD4mIG9wdGlvbmFsKQorICAgIHsKKyAgICAgICAgYm9vbCBpc0VuZ2Fn
ZWQ7CisgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaXNFbmdhZ2VkKSkKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgCisgICAgICAgIGlmICghaXNFbmdhZ2VkKSB7CisgICAg
ICAgICAgICBvcHRpb25hbCA9IE51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICAgICAgfQorICAgICAgICAKKyAgICAgICAgVCB2YWx1ZTsKKyAgICAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZSh2YWx1ZSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIAorICAg
ICAgICBvcHRpb25hbCA9IFdURk1vdmUodmFsdWUpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICB9Cit9OworCiB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXlUeXBlLCB0eXBlbmFtZSBWYWx1ZVR5cGU+
IHN0cnVjdCBDb2RlcjxXVEY6OktleVZhbHVlUGFpcjxLZXlUeXBlLCBWYWx1ZVR5cGU+PiB7CiAg
ICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFdURjo6S2V5VmFs
dWVQYWlyPEtleVR5cGUsIFZhbHVlVHlwZT4mIHBhaXIpCiAgICAgewpAQCAtMjY3LDQgKzI5OCwz
IEBAIHRlbXBsYXRlPD4gc3RydWN0IENvZGVyPFdlYkNvcmU6OkhUVFBIZWEKIH0KIH0KICNlbmRp
ZgotI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAJKHJl
dmlzaW9uIDIwMTg3MykKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcwLDcgKzcw
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUxvYWQ6OndpbGxTZW5kUmVkaXJlY3RlZAogICAgIGFib3J0
KCk7CiB9CiAKLWF1dG8gU3BlY3VsYXRpdmVMb2FkOjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYgcmVjZWl2ZWRSZXNwb25zZSkgLT4gU2hvdWxkQ29udGludWVEaWRS
ZWNlaXZlUmVzcG9uc2UKK2F1dG8gU3BlY3VsYXRpdmVMb2FkOjpkaWRSZWNlaXZlUmVzcG9uc2Uo
UmVzb3VyY2VSZXNwb25zZSYmIHJlY2VpdmVkUmVzcG9uc2UpIC0+IFNob3VsZENvbnRpbnVlRGlk
UmVjZWl2ZVJlc3BvbnNlCiB7CiAgICAgbV9yZXNwb25zZSA9IHJlY2VpdmVkUmVzcG9uc2U7CiAK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNw
ZWN1bGF0aXZlTG9hZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oCShyZXZpc2lvbiAyMDE4NzMp
CisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVj
dWxhdGl2ZUxvYWQuaAkod29ya2luZyBjb3B5KQpAQCAtNTcsNyArNTcsNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgY2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZUFzeW5jKGNvbnN0
IFdlYkNvcmU6OlByb3RlY3Rpb25TcGFjZSYpIG92ZXJyaWRlIHsgfQogICAgIGJvb2wgaXNTeW5j
aHJvbm91cygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdm9pZCB3aWxs
U2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlKSBvdmVycmlkZTsKLSAgICBTaG91bGRDb250aW51ZURp
ZFJlY2VpdmVSZXNwb25zZSBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYpIG92ZXJyaWRlOworICAgIFNob3VsZENvbnRpbnVlRGlkUmVjZWl2ZVJlc3Bv
bnNlIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYpIG92ZXJy
aWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBk
aWRGaW5pc2hMb2FkaW5nKGRvdWJsZSBmaW5pc2hUaW1lKSBvdmVycmlkZTsKICAgICB2b2lkIGRp
ZEZhaWxMb2FkaW5nKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0Nv
Y29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NvY29h
L05ldHdvcmtEYXRhVGFza0NvY29hLm1tCShyZXZpc2lvbiAyMDE4NzMpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMTY1LDEwICsxNjUsMTAgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2s6OmRpZENv
bXBsZXRlV2l0aEVycgogICAgICAgICBtX2NsaWVudC0+ZGlkQ29tcGxldGVXaXRoRXJyb3IoZXJy
b3IpOwogfQogCi12b2lkIE5ldHdvcmtEYXRhVGFzazo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZXNwb25zZUNvbXBsZXRpb25I
YW5kbGVyIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3JrRGF0YVRhc2s6OmRpZFJlY2Vp
dmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFJlc3BvbnNl
Q29tcGxldGlvbkhhbmRsZXIgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKG1fY2xpZW50
KQotICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZVJlc3BvbnNlTmV0d29ya1Nlc3Npb24ocmVz
cG9uc2UsIGNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVS
ZXNwb25zZU5ldHdvcmtTZXNzaW9uKFdURk1vdmUocmVzcG9uc2UpLCBjb21wbGV0aW9uSGFuZGxl
cik7CiAgICAgZWxzZSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihXZWJDb3JlOjpQb2xpY3lBY3Rpb246OlBvbGljeUlnbm9yZSk7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNv
Y29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NvY29h
L05ldHdvcmtTZXNzaW9uQ29jb2EubW0JKHJldmlzaW9uIDIwMTg3MykKKysrIFNvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTI0Nyw3ICsyNDcsNyBAQCAtICh2b2lkKVVSTFNlc3Npb246KE5TVVJMU2Vzc2lv
biAqKXNlc3NpCiAgICAgICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzb3VyY2VSZXNw
b25zZShyZXNwb25zZSk7CiAgICAgICAgIGNvcHlUaW1pbmdEYXRhKFtkYXRhVGFzayBfdGltaW5n
RGF0YV0sIHJlc291cmNlUmVzcG9uc2UucmVzb3VyY2VMb2FkVGltaW5nKCkpOwogICAgICAgICBh
dXRvIGNvbXBsZXRpb25IYW5kbGVyQ29weSA9IEJsb2NrX2NvcHkoY29tcGxldGlvbkhhbmRsZXIp
OwotICAgICAgICBuZXR3b3JrRGF0YVRhc2stPmRpZFJlY2VpdmVSZXNwb25zZShyZXNvdXJjZVJl
c3BvbnNlLCBbY29tcGxldGlvbkhhbmRsZXJDb3B5LCB0YXNrSWRlbnRpZmllcl0oV2ViQ29yZTo6
UG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbikgeworICAgICAgICBuZXR3b3JrRGF0YVRhc2stPmRp
ZFJlY2VpdmVSZXNwb25zZShXVEZNb3ZlKHJlc291cmNlUmVzcG9uc2UpLCBbY29tcGxldGlvbkhh
bmRsZXJDb3B5LCB0YXNrSWRlbnRpZmllcl0oV2ViQ29yZTo6UG9saWN5QWN0aW9uIHBvbGljeUFj
dGlvbikgewogICAgICAgICAgICAgTE9HKE5ldHdvcmtTZXNzaW9uLCAiJWxsdSBkaWRSZWNlaXZl
UmVzcG9uc2UgY29tcGxldGlvbkhhbmRsZXIgKGNhbmNlbCkiLCB0YXNrSWRlbnRpZmllcik7CiAg
ICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlckNvcHkodG9OU1VSTFNlc3Npb25SZXNwb25zZURp
c3Bvc2l0aW9uKHBvbGljeUFjdGlvbikpOwogICAgICAgICAgICAgQmxvY2tfcmVsZWFzZShjb21w
bGV0aW9uSGFuZGxlckNvcHkpOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5j
cHAJKHJldmlzaW9uIDIwMTg3MykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Njgs
NyArNDY4LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDbwogCiAg
ICAgLy8gTm90aWZ5IHRoZSBVSVByb2Nlc3MuCiAKLSAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OkRpZENvbW1pdExvYWRGb3JGcmFtZShtX2ZyYW1lLT5mcmFtZUlEKCks
IGRvY3VtZW50TG9hZGVyLm5hdmlnYXRpb25JRCgpLCBkb2N1bWVudExvYWRlci5yZXNwb25zZSgp
Lm1pbWVUeXBlKCksIG1fZnJhbWVIYXNDdXN0b21Db250ZW50UHJvdmlkZXIsIHN0YXRpY19jYXN0
PHVpbnQzMl90PihtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+bG9hZGVyKCkubG9hZFR5cGUoKSksIGRv
Y3VtZW50TG9hZGVyLnJlc3BvbnNlKCkuY2VydGlmaWNhdGVJbmZvKCksIG1fZnJhbWUtPmNvcmVG
cmFtZSgpLT5kb2N1bWVudCgpLT5pc1BsdWdpbkRvY3VtZW50KCksIFVzZXJEYXRhKFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXModXNlckRhdGEuZ2V0KCkp
LmdldCgpKSkpOworICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlk
Q29tbWl0TG9hZEZvckZyYW1lKG1fZnJhbWUtPmZyYW1lSUQoKSwgZG9jdW1lbnRMb2FkZXIubmF2
aWdhdGlvbklEKCksIGRvY3VtZW50TG9hZGVyLnJlc3BvbnNlKCkubWltZVR5cGUoKSwgbV9mcmFt
ZUhhc0N1c3RvbUNvbnRlbnRQcm92aWRlciwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KG1fZnJhbWUt
PmNvcmVGcmFtZSgpLT5sb2FkZXIoKS5sb2FkVHlwZSgpKSwgZG9jdW1lbnRMb2FkZXIucmVzcG9u
c2UoKS5jZXJ0aWZpY2F0ZUluZm8oKS52YWx1ZU9yQ29tcHV0ZShbXSB7IHJldHVybiBDZXJ0aWZp
Y2F0ZUluZm8oKTsgfSksIG1fZnJhbWUtPmNvcmVGcmFtZSgpLT5kb2N1bWVudCgpLT5pc1BsdWdp
bkRvY3VtZW50KCksIFVzZXJEYXRhKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnRyYW5zZm9ybU9i
amVjdHNUb0hhbmRsZXModXNlckRhdGEuZ2V0KCkpLmdldCgpKSkpOwogICAgIHdlYlBhZ2UtPmRp
ZENvbW1pdExvYWQobV9mcmFtZSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAkocmV2aXNpb24gMjAxODczKQorKysgU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzk3LDE2ICszOTcsMTYgQEAgU3RyaW5nIFdlYkZyYW1lOjp1cmwoKSBjb25zdAogICAgIHJl
dHVybiBkb2N1bWVudExvYWRlci0+dXJsKCkuc3RyaW5nKCk7CiB9CiAKLVdlYkNvcmU6OkNlcnRp
ZmljYXRlSW5mbyBXZWJGcmFtZTo6Y2VydGlmaWNhdGVJbmZvKCkgY29uc3QKK0NlcnRpZmljYXRl
SW5mbyBXZWJGcmFtZTo6Y2VydGlmaWNhdGVJbmZvKCkgY29uc3QKIHsKICAgICBpZiAoIW1fY29y
ZUZyYW1lKQotICAgICAgICByZXR1cm4gQ2VydGlmaWNhdGVJbmZvKCk7CisgICAgICAgIHJldHVy
biB7IH07CiAKICAgICBEb2N1bWVudExvYWRlciogZG9jdW1lbnRMb2FkZXIgPSBtX2NvcmVGcmFt
ZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKTsKICAgICBpZiAoIWRvY3VtZW50TG9hZGVyKQot
ICAgICAgICByZXR1cm4gQ2VydGlmaWNhdGVJbmZvKCk7CisgICAgICAgIHJldHVybiB7IH07CiAK
LSAgICByZXR1cm4gZG9jdW1lbnRMb2FkZXItPnJlc3BvbnNlKCkuY2VydGlmaWNhdGVJbmZvKCk7
CisgICAgcmV0dXJuIGRvY3VtZW50TG9hZGVyLT5yZXNwb25zZSgpLmNlcnRpZmljYXRlSW5mbygp
LnZhbHVlT3JDb21wdXRlKFtdIHsgcmV0dXJuIENlcnRpZmljYXRlSW5mbygpOyB9KTsKIH0KIAog
U3RyaW5nIFdlYkZyYW1lOjppbm5lclRleHQoKSBjb25zdAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>281041</attachid>
            <date>2016-06-10 13:27:59 -0700</date>
            <delta_ts>2016-06-10 14:17:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158232-20160610132932.patch</filename>
            <type>text/plain</type>
            <size>49832</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwMTkzNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDczIEBACisyMDE2LTA2LTEwICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVkdWNlIFJl
c291cmNlUmVzcG9uc2UgY29weWluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTU4MjMyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIu
CisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiAgTm8gY2hhbmdlIGluIGJlaGF2aW9yIGV4Y2VwdCBy
ZW1vdmluZyBhbiB1bm5lY2Vzc2FyeSBjb3B5IG9uIGNvY29hIHBsYXRmb3Jtcy4KKworICAgICAg
ICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJj
ZUxvYWRlcjo6ZGlkU2VuZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6
OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmg6
CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmNyZWF0ZVJlc291cmNlSGFu
ZGxlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkUmVjZWl2
ZVJlc3BvbnNlKToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdy
b3VwLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1NZWRpYVJlc291cmNl
TG9hZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2VDbGllbnQ6
On5QbGF0Zm9ybU1lZGlhUmVzb3VyY2VDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZv
cm1NZWRpYVJlc291cmNlQ2xpZW50OjpyZXNwb25zZVJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNv
cmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZUNsaWVudDo6cmVkaXJlY3RSZWNlaXZlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2VDbGllbnQ6OnNob3VsZENhY2hlUmVz
cG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlQ2xpZW50Ojpk
YXRhU2VudCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
V2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHA6CisgICAgICAgIChSZXNvdXJj
ZUhhbmRsZVN0cmVhbWluZ0NsaWVudDo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFJlc291
cmNlSGFuZGxlU3RyZWFtaW5nQ2xpZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFuZGxlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkJsb2JSZXNvdXJjZUhhbmRsZTo6bm90aWZ5UmVzcG9uc2VPblN1Y2Nlc3MpOgorICAgICAg
ICAoV2ViQ29yZTo6QmxvYlJlc291cmNlSGFuZGxlOjpub3RpZnlSZXNwb25zZU9uRXJyb3IpOgor
ICAgICAgICAoV2ViQ29yZTo6QmxvYlJlc291cmNlSGFuZGxlOjpub3RpZnlSZWNlaXZlRGF0YSk6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9EYXRhVVJMLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmhhbmRsZURhdGFVUkwpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUGluZ0hhbmRs
ZS5oOgorICAgICAgICAoV2ViQ29yZTo6UGluZ0hhbmRsZTo6UGluZ0hhbmRsZSk6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNsaWVudDo6d2lsbFNlbmRSZXF1ZXN0QXN5bmMpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDbGllbnQ6OmRpZFJlY2VpdmVSZXNwb25zZUFz
eW5jKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50Lmg6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNsaWVudDo6ZGlkU2VuZERhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDbGllbnQ6OmRpZFJlY2VpdmVSZXNwb25z
ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNsaWVudDo6ZGlkUmVjZWl2ZURh
dGEpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6OlJlc291cmNlUmVzcG9u
c2VCYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjppbmNsdWRl
Q2VydGlmaWNhdGVJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNl
OjpzdWdnZXN0ZWRGaWxlbmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
QmFzZTo6Y2VydGlmaWNhdGVJbmZvKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlQmFzZTo6Y2VydGlmaWNhdGVJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2VCYXNlOjplbmNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZUJhc2U6OmRlY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6
Y29udGFpbnNDZXJ0aWZpY2F0ZUluZm8pOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvU3luY2hyb25vdXNMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3lu
Y2hyb25vdXNMb2FkZXJDbGllbnQ6OmNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3Bh
Y2UpOgorICAgICAgICAoV2ViQ29yZTo6U3luY2hyb25vdXNMb2FkZXJDbGllbnQ6OmRpZFJlY2Vp
dmVSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpTeW5jaHJvbm91c0xvYWRlckNsaWVudDo6
ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvU3luY2hyb25vdXNM
b2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFu
ZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVy
YXRpb25RdWV1ZTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL2NmL1N5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25u
ZWN0aW9uRGVsZWdhdGU6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpT
eW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OmRpZFJlY2Vp
dmVEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VI
YW5kbGVBc0RlbGVnYXRlLm1tOgorICAgICAgICAoLVtXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0Rl
bGVnYXRlIGNvbm5lY3Rpb246ZGlkUmVjZWl2ZVJlc3BvbnNlOl0pOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxl
Z2F0ZS5tbToKKyAgICAgICAgKC1bV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1
ZURlbGVnYXRlIGNvbm5lY3Rpb246ZGlkUmVjZWl2ZVJlc3BvbnNlOl0pOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6bmV4dE11bHRpcGFydFJlc3BvbnNlUGFydENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNv
cmU6OnNlbmRSZXF1ZXN0Q2FsbGJhY2spOgorCiAyMDE2LTA2LTEwICBZb3Vlbm4gRmFibGV0ICA8
eW91ZW5uLmZhYmxldEBjcmYuY2Fub24uZnI+CiAKICAgICAgICAgT3JpZ2luIGhlYWRlciBpcyBu
b3QgaW5jbHVkZWQgaW4gQ09SUyByZXF1ZXN0cyBmb3IgcHJlbG9hZGVkIGNyb3NzLW9yaWdpbiBy
ZXNvdXJjZXMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAko
cmV2aXNpb24gMjAxODczKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjE4LDcgKzYxOCw3IEBAIHZvaWQgUmVzb3VyY2VMb2Fk
ZXI6OmRpZFNlbmREYXRhKFJlc291cmMKICAgICBkaWRTZW5kRGF0YShieXRlc1NlbnQsIHRvdGFs
Qnl0ZXNUb0JlU2VudCk7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNw
b25zZShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQor
dm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlKiwg
UmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlKQogewogICAgIGlmIChkb2N1bWVudExvYWRlcigp
LT5hcHBsaWNhdGlvbkNhY2hlSG9zdCgpLT5tYXliZUxvYWRGYWxsYmFja0ZvclJlc3BvbnNlKHRo
aXMsIHJlc3BvbnNlKSkKICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1Jlc291cmNlTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVy
L1Jlc291cmNlTG9hZGVyLmgJKHJldmlzaW9uIDIwMTg3MykKKysrIFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9SZXNvdXJjZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xODUsNyArMTg1LDcgQEAg
cHJpdmF0ZToKICAgICAvLyBSZXNvdXJjZUhhbmRsZUNsaWVudAogICAgIFJlc291cmNlUmVxdWVz
dCB3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VIYW5kbGUqLCBSZXNvdXJjZVJlcXVlc3QmJiwgUmVz
b3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlk
U2VuZERhdGEoUmVzb3VyY2VIYW5kbGUqLCB1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1
bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KSBvdmVycmlkZTsKLSAgICB2b2lk
IGRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUhhbmRs
ZSosIFJlc291cmNlUmVzcG9uc2UmJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlRGF0
YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IGNoYXIqLCB1bnNpZ25lZCwgaW50IGVuY29kZWREYXRh
TGVuZ3RoKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5k
bGUqLCBSZWY8U2hhcmVkQnVmZmVyPiYmLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRl
OwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUhhbmRsZSosIGRvdWJsZSBmaW5p
c2hUaW1lKSBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9B
cHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCShyZXZpc2lvbiAyMDE4NzMp
CisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3Vw
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDg5LDcgKzQ4OSw3IEBAIFJlZlB0cjxSZXNvdXJjZUhh
bmRsZT4gQXBwbGljYXRpb25DYWNoZUcKICAgICByZXR1cm4gaGFuZGxlOwogfQogCi12b2lkIEFw
cGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlKiBo
YW5kbGUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQordm9pZCBBcHBsaWNhdGlv
bkNhY2hlR3JvdXA6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBS
ZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UpCiB7CiAgICAgQVNTRVJUKG1fZnJhbWUpOwogICAg
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUgPSBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OndpbGxSZWNlaXZlUmVzb3VyY2VSZXNwb25zZShtX2ZyYW1lKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNo
ZUdyb3VwLmgJKHJldmlzaW9uIDIwMTg3MykKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuaAkod29ya2luZyBjb3B5KQpAQCAtMTA4LDcgKzEw
OCw3IEBAIHByaXZhdGU6CiAgICAgLy8gdGhlIGV4aXN0aW5nIGNsaWVudCBjYWxsYmFjayBjYW5u
b3QgYmUgdXNlZCwgc28gYXNzdW1lIHRoYXQgYW55IGNsaWVudCB0aGF0IGVuYWJsZXMgYXBwbGlj
YXRpb24gY2FjaGUgYWxzbyB3YW50cyBpdCB0byB1c2UgY3JlZGVudGlhbCBzdG9yYWdlLgogICAg
IGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UoUmVzb3VyY2VIYW5kbGUqKSBvdmVycmlk
ZSB7IHJldHVybiB0cnVlOyB9CiAKLSAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJj
ZUhhbmRsZSosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKKyAgICB2b2lkIGRp
ZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSosIFJlc291cmNlUmVzcG9uc2UmJikgb3Zl
cnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IGNo
YXIqLCB1bnNpZ25lZCBsZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlSGFuZGxlKiwgZG91YmxlIGZpbmlzaFRp
bWUpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFpbChSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJl
c291cmNlRXJyb3ImKSBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1BsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlci5o
CShyZXZpc2lvbiAyMDE4NzMpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Q
bGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsOCArMjMs
NyBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFBsYXRmb3JtTWVkaWFSZXNvdXJj
ZUxvYWRlcl9oCi0jZGVmaW5lIFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlcl9oCisjcHJhZ21h
IG9uY2UKIAogI2lmIEVOQUJMRShWSURFTykKIApAQCAtNDMsNyArNDIsNyBAQCBjbGFzcyBQbGF0
Zm9ybU1lZGlhUmVzb3VyY2VDbGllbnQgewogcHVibGljOgogICAgIHZpcnR1YWwgflBsYXRmb3Jt
TWVkaWFSZXNvdXJjZUNsaWVudCgpIHsgfQogCi0gICAgdmlydHVhbCB2b2lkIHJlc3BvbnNlUmVj
ZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIHsg
fQorICAgIHZpcnR1YWwgdm9pZCByZXNwb25zZVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJj
ZSYsIFJlc291cmNlUmVzcG9uc2UmJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHJlZGlyZWN0UmVj
ZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYpIHsgfQogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDYWNoZVJlc3BvbnNl
KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSB7IHJldHVy
biB0cnVlOyB9CiAgICAgdmlydHVhbCB2b2lkIGRhdGFTZW50KFBsYXRmb3JtTWVkaWFSZXNvdXJj
ZSYsIHVuc2lnbmVkIGxvbmcgbG9uZywgdW5zaWduZWQgbG9uZyBsb25nKSB7IH0KQEAgLTkxLDQg
KzkwLDMgQEAgcHJvdGVjdGVkOgogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYKLSNl
bmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291
cmNlTG9hZGVyLmgJKHJldmlzaW9uIDIwMTg3MykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICAv
LyBDYWNoZWRSZXNvdXJjZUNsaWVudAotICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChDYWNoZWRS
ZXNvdXJjZSosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKKyAgICB2b2lkIHJl
c3BvbnNlUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UqLCBSZXNvdXJjZVJlc3BvbnNlJiYpIG92ZXJy
aWRlOwogICAgIHZvaWQgZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlKiwgY29uc3QgY2hhcios
IGludCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSop
IG92ZXJyaWRlOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVh
bWVyLmNwcAkocmV2aXNpb24gMjAxODczKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTk2LDcgKzk2LDcgQEAgY2xhc3MgUmVzb3VyY2VIYW5kbGVTdHJlYW1pbmdDbGllbnQg
OiBwdQogICAgICAgICBjaGFyKiBnZXRPckNyZWF0ZVJlYWRCdWZmZXIoc2l6ZV90IHJlcXVlc3Rl
ZFNpemUsIHNpemVfdCYgYWN0dWFsU2l6ZSkgb3ZlcnJpZGU7CiAjZW5kaWYKICAgICAgICAgUmVz
b3VyY2VSZXF1ZXN0IHdpbGxTZW5kUmVxdWVzdChSZXNvdXJjZUhhbmRsZSosIFJlc291cmNlUmVx
dWVzdCYmLCBSZXNvdXJjZVJlc3BvbnNlJiYpIG92ZXJyaWRlOwotICAgICAgICB2b2lkIGRpZFJl
Y2VpdmVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBv
dmVycmlkZTsKKyAgICAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUq
LCBSZXNvdXJjZVJlc3BvbnNlJiYpIG92ZXJyaWRlOwogICAgICAgICB2b2lkIGRpZFJlY2VpdmVE
YXRhKFJlc291cmNlSGFuZGxlKiwgY29uc3QgY2hhciosIHVuc2lnbmVkLCBpbnQpIG92ZXJyaWRl
OwogICAgICAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqLCBSZWY8U2hh
cmVkQnVmZmVyPiYmLCBpbnQgZW5jb2RlZExlbmd0aCkgb3ZlcnJpZGU7CiAgICAgICAgIHZvaWQg
ZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUhhbmRsZSosIGRvdWJsZSAvKmZpbmlzaFRpbWUqLykg
b3ZlcnJpZGU7CkBAIC0xMDkwLDcgKzEwOTAsNyBAQCBSZXNvdXJjZVJlcXVlc3QgUmVzb3VyY2VI
YW5kbGVTdHJlYW1pbmdDCiAgICAgcmV0dXJuIFdURk1vdmUocmVxdWVzdCk7CiB9CiAKLXZvaWQg
UmVzb3VyY2VIYW5kbGVTdHJlYW1pbmdDbGllbnQ6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJj
ZUhhbmRsZSosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQordm9pZCBSZXNvdXJj
ZUhhbmRsZVN0cmVhbWluZ0NsaWVudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlSGFuZGxl
KiwgUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlKQogewogICAgIGhhbmRsZVJlc3BvbnNlUmVj
ZWl2ZWQocmVzcG9uc2UpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9CbG9iUmVzb3VyY2VIYW5kbGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFuZGxlLmNwcAkocmV2aXNpb24gMjAxODczKQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VIYW5kbGUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC04Myw3ICs4Myw3IEBAIGNsYXNzIEJsb2JSZXNvdXJjZVN5bmNo
cm9ub3VzTG9hZGVyIDogcHUKIHB1YmxpYzoKICAgICBCbG9iUmVzb3VyY2VTeW5jaHJvbm91c0xv
YWRlcihSZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VSZXNwb25zZSYsIFZlY3RvcjxjaGFyPiYpOwog
Ci0gICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVz
b3VyY2VIYW5kbGUqLCBSZXNvdXJjZVJlc3BvbnNlJiYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlk
RmFpbChSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKIAog
cHJpdmF0ZToKQEAgLTk5LDcgKzk5LDcgQEAgQmxvYlJlc291cmNlU3luY2hyb25vdXNMb2FkZXI6
OkJsb2JSZXNvdQogewogfQogCi12b2lkIEJsb2JSZXNvdXJjZVN5bmNocm9ub3VzTG9hZGVyOjpk
aWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYgcmVzcG9uc2UpCit2b2lkIEJsb2JSZXNvdXJjZVN5bmNocm9ub3VzTG9hZGVyOjpk
aWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgUmVzb3VyY2VSZXNwb25z
ZSYmIHJlc3BvbnNlKQogewogICAgIC8vIFdlIGNhbm5vdCBoYW5kbGUgdGhlIHNpemUgdGhhdCBp
cyBtb3JlIHRoYW4gbWF4aW11bSBpbnRlZ2VyLgogICAgIGlmIChyZXNwb25zZS5leHBlY3RlZENv
bnRlbnRMZW5ndGgoKSA+IElOVF9NQVgpIHsKQEAgLTU4Myw5ICs1ODMsOSBAQCB2b2lkIEJsb2JS
ZXNvdXJjZUhhbmRsZTo6bm90aWZ5UmVzcG9uc2VPCiAgICAgLy8gSXQncyBjdXJyZW50bHkgY2xp
ZW50J3MgcmVzcG9uc2liaWxpdHkgdG8ga25vdyB0aGF0IGRpZFJlY2VpdmVSZXNwb25zZUFzeW5j
IGNhbm5vdCBiZSB1c2VkIHRvIGNvbnZlcnQgYQogICAgIC8vIGxvYWQgaW50byBhIGRvd25sb2Fk
IG9yIGJsb2JzLgogICAgIGlmICh1c2VzQXN5bmNDYWxsYmFja3MoKSkKLSAgICAgICAgY2xpZW50
KCktPmRpZFJlY2VpdmVSZXNwb25zZUFzeW5jKHRoaXMsIHJlc3BvbnNlKTsKKyAgICAgICAgY2xp
ZW50KCktPmRpZFJlY2VpdmVSZXNwb25zZUFzeW5jKHRoaXMsIFdURk1vdmUocmVzcG9uc2UpKTsK
ICAgICBlbHNlCi0gICAgICAgIGNsaWVudCgpLT5kaWRSZWNlaXZlUmVzcG9uc2UodGhpcywgcmVz
cG9uc2UpOworICAgICAgICBjbGllbnQoKS0+ZGlkUmVjZWl2ZVJlc3BvbnNlKHRoaXMsIFdURk1v
dmUocmVzcG9uc2UpKTsKIH0KIAogdm9pZCBCbG9iUmVzb3VyY2VIYW5kbGU6Om5vdGlmeVJlc3Bv
bnNlT25FcnJvcigpCkBAIC02MTUsOSArNjE1LDkgQEAgdm9pZCBCbG9iUmVzb3VyY2VIYW5kbGU6
Om5vdGlmeVJlc3BvbnNlTwogICAgIC8vIE5vdGUgdGhhdCB3ZSBkb24ndCB3YWl0IGZvciBjb250
aW51ZURpZFJlY2VpdmVSZXNwb25zZSB3aGVuIHVzaW5nIGRpZFJlY2VpdmVSZXNwb25zZUFzeW5j
LgogICAgIC8vIFRoaXMgaXMgbm90IGZvcm1hbGx5IGNvcnJlY3QsIGJ1dCB0aGUgY2xpZW50IGhh
cyB0byBiZSBhIG5vLW9wIGFueXdheSwgYmVjYXVzZSBibG9icyBjYW4ndCBiZSBkb3dubG9hZGVk
LgogICAgIGlmICh1c2VzQXN5bmNDYWxsYmFja3MoKSkKLSAgICAgICAgY2xpZW50KCktPmRpZFJl
Y2VpdmVSZXNwb25zZUFzeW5jKHRoaXMsIHJlc3BvbnNlKTsKKyAgICAgICAgY2xpZW50KCktPmRp
ZFJlY2VpdmVSZXNwb25zZUFzeW5jKHRoaXMsIFdURk1vdmUocmVzcG9uc2UpKTsKICAgICBlbHNl
Ci0gICAgICAgIGNsaWVudCgpLT5kaWRSZWNlaXZlUmVzcG9uc2UodGhpcywgcmVzcG9uc2UpOwor
ICAgICAgICBjbGllbnQoKS0+ZGlkUmVjZWl2ZVJlc3BvbnNlKHRoaXMsIFdURk1vdmUocmVzcG9u
c2UpKTsKIH0KIAogdm9pZCBCbG9iUmVzb3VyY2VIYW5kbGU6Om5vdGlmeVJlY2VpdmVEYXRhKGNv
bnN0IGNoYXIqIGRhdGEsIGludCBieXRlc1JlYWQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL0RhdGFVUkwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvRGF0YVVSTC5jcHAJKHJldmlzaW9uIDIwMTg3MykKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRGF0YVVSTC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc2
LDI1ICs3NiwyMiBAQCB2b2lkIGhhbmRsZURhdGFVUkwoUmVzb3VyY2VIYW5kbGUqIGhhbmRsCiAK
ICAgICBpZiAoYmFzZTY0KSB7CiAgICAgICAgIGRhdGEgPSBkZWNvZGVVUkxFc2NhcGVTZXF1ZW5j
ZXMoZGF0YSk7Ci0gICAgICAgIGhhbmRsZS0+Y2xpZW50KCktPmRpZFJlY2VpdmVSZXNwb25zZSho
YW5kbGUsIHJlc3BvbnNlKTsKKyAgICAgICAgaGFuZGxlLT5jbGllbnQoKS0+ZGlkUmVjZWl2ZVJl
c3BvbnNlKGhhbmRsZSwgV1RGTW92ZShyZXNwb25zZSkpOwogCiAgICAgICAgIC8vIGRpZFJlY2Vp
dmVSZXNwb25zZSBtaWdodCBjYXVzZSB0aGUgY2xpZW50IHRvIGJlIGRlbGV0ZWQuCiAgICAgICAg
IGlmIChoYW5kbGUtPmNsaWVudCgpKSB7CiAgICAgICAgICAgICBWZWN0b3I8Y2hhcj4gb3V0Owot
ICAgICAgICAgICAgaWYgKGJhc2U2NERlY29kZShkYXRhLCBvdXQsIEJhc2U2NElnbm9yZVNwYWNl
c0FuZE5ld0xpbmVzKSAmJiBvdXQuc2l6ZSgpID4gMCkgewotICAgICAgICAgICAgICAgIHJlc3Bv
bnNlLnNldEV4cGVjdGVkQ29udGVudExlbmd0aChvdXQuc2l6ZSgpKTsKKyAgICAgICAgICAgIGlm
IChiYXNlNjREZWNvZGUoZGF0YSwgb3V0LCBCYXNlNjRJZ25vcmVTcGFjZXNBbmROZXdMaW5lcykg
JiYgb3V0LnNpemUoKSA+IDApCiAgICAgICAgICAgICAgICAgaGFuZGxlLT5jbGllbnQoKS0+ZGlk
UmVjZWl2ZURhdGEoaGFuZGxlLCBvdXQuZGF0YSgpLCBvdXQuc2l6ZSgpLCAwKTsKLSAgICAgICAg
ICAgIH0KICAgICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAgIFRleHRFbmNvZGluZyBlbmNv
ZGluZyhjaGFyc2V0KTsKICAgICAgICAgZGF0YSA9IGRlY29kZVVSTEVzY2FwZVNlcXVlbmNlcyhk
YXRhLCBlbmNvZGluZyk7Ci0gICAgICAgIGhhbmRsZS0+Y2xpZW50KCktPmRpZFJlY2VpdmVSZXNw
b25zZShoYW5kbGUsIHJlc3BvbnNlKTsKKyAgICAgICAgaGFuZGxlLT5jbGllbnQoKS0+ZGlkUmVj
ZWl2ZVJlc3BvbnNlKGhhbmRsZSwgV1RGTW92ZShyZXNwb25zZSkpOwogCiAgICAgICAgIC8vIGRp
ZFJlY2VpdmVSZXNwb25zZSBtaWdodCBjYXVzZSB0aGUgY2xpZW50IHRvIGJlIGRlbGV0ZWQuCiAg
ICAgICAgIGlmIChoYW5kbGUtPmNsaWVudCgpKSB7CiAgICAgICAgICAgICBDU3RyaW5nIGVuY29k
ZWREYXRhID0gZW5jb2RpbmcuZW5jb2RlKGRhdGEsIFVSTEVuY29kZWRFbnRpdGllc0ZvclVuZW5j
b2RhYmxlcyk7Ci0gICAgICAgICAgICByZXNwb25zZS5zZXRFeHBlY3RlZENvbnRlbnRMZW5ndGgo
ZW5jb2RlZERhdGEubGVuZ3RoKCkpOwogICAgICAgICAgICAgaWYgKGVuY29kZWREYXRhLmxlbmd0
aCgpKQogICAgICAgICAgICAgICAgIGhhbmRsZS0+Y2xpZW50KCktPmRpZFJlY2VpdmVEYXRhKGhh
bmRsZSwgZW5jb2RlZERhdGEuZGF0YSgpLCBlbmNvZGVkRGF0YS5sZW5ndGgoKSwgMCk7CiAgICAg
ICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUGluZ0hhbmRsZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUGluZ0hhbmRs
ZS5oCShyZXZpc2lvbiAyMDE4NzMpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1BpbmdIYW5kbGUuaAkod29ya2luZyBjb3B5KQpAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAg
ICAgfQogCiBwcml2YXRlOgotICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlSGFu
ZGxlKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlIHsgZGVsZXRlIHRoaXM7IH0K
KyAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSosIFJlc291cmNlUmVz
cG9uc2UmJikgb3ZlcnJpZGUgeyBkZWxldGUgdGhpczsgfQogICAgIHZvaWQgZGlkUmVjZWl2ZUJ1
ZmZlcihSZXNvdXJjZUhhbmRsZSosIFJlZjxTaGFyZWRCdWZmZXI+JiYsIGludCkgb3ZlcnJpZGUg
eyBkZWxldGUgdGhpczsgfTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VIYW5k
bGUqLCBkb3VibGUpIG92ZXJyaWRlIHsgZGVsZXRlIHRoaXM7IH0KICAgICB2b2lkIGRpZEZhaWwo
UmVzb3VyY2VIYW5kbGUqLCBjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGUgeyBkZWxldGUg
dGhpczsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhh
bmRsZUNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAJKHJldmlzaW9uIDIwMTg3MykKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC01MCw3ICs1MCw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGVDbGllbnQ6Ondp
bGxTZW5kUmVxdWUKICAgICBoYW5kbGUtPmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KFdURk1vdmUo
cmVxdWVzdCkpOwogfQogCi12b2lkIFJlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRSZWNlaXZlUmVz
cG9uc2VBc3luYyhSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JikKK3ZvaWQgUmVzb3VyY2VIYW5kbGVDbGllbnQ6OmRpZFJlY2VpdmVSZXNwb25zZUFzeW5jKFJl
c291cmNlSGFuZGxlKiBoYW5kbGUsIFJlc291cmNlUmVzcG9uc2UmJikKIHsKICAgICBoYW5kbGUt
PmNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlKCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5oCShyZXZp
c2lvbiAyMDE4NzMpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
SGFuZGxlQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTcxLDcgKzcxLDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIFJlc291cmNlUmVxdWVz
dCB3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VIYW5kbGUqLCBSZXNvdXJjZVJlcXVlc3QmJiwgUmVz
b3VyY2VSZXNwb25zZSYmKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZFNlbmREYXRhKFJlc291
cmNlSGFuZGxlKiwgdW5zaWduZWQgbG9uZyBsb25nIC8qYnl0ZXNTZW50Ki8sIHVuc2lnbmVkIGxv
bmcgbG9uZyAvKnRvdGFsQnl0ZXNUb0JlU2VudCovKSB7IH0KIAotICAgICAgICB2aXJ0dWFsIHZv
aWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlKiwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYpIHsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291
cmNlSGFuZGxlKiwgUmVzb3VyY2VSZXNwb25zZSYmKSB7IH0KICAgICAgICAgCiAgICAgICAgIHZp
cnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IGNoYXIqLCB1
bnNpZ25lZCwgaW50IC8qZW5jb2RlZERhdGFMZW5ndGgqLykgeyB9CiAgICAgICAgIFdFQkNPUkVf
RVhQT1JUIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiwgUmVm
PFNoYXJlZEJ1ZmZlcj4mJiwgaW50IGVuY29kZWREYXRhTGVuZ3RoKTsKQEAgLTg5LDcgKzg5LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZv
aWQgd2lsbFNlbmRSZXF1ZXN0QXN5bmMoUmVzb3VyY2VIYW5kbGUqLCBSZXNvdXJjZVJlcXVlc3Qm
JiwgUmVzb3VyY2VSZXNwb25zZSYmKTsKIAogICAgICAgICAvLyBDbGllbnQgd2lsbCBjYWxsIFJl
c291cmNlSGFuZGxlOjpjb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSgpIHdoZW4gcmVhZHkuCi0g
ICAgICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2VBc3lu
YyhSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKKyAgICAgICAgV0VC
Q09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZUFzeW5jKFJlc291cmNl
SGFuZGxlKiwgUmVzb3VyY2VSZXNwb25zZSYmKTsKIAogI2lmIFVTRShQUk9URUNUSU9OX1NQQUNF
X0FVVEhfQ0FMTEJBQ0spCiAgICAgICAgIC8vIENsaWVudCB3aWxsIHBhc3MgYW4gdXBkYXRlZCBy
ZXF1ZXN0IHVzaW5nIFJlc291cmNlSGFuZGxlOjpjb250aW51ZUNhbkF1dGhlbnRpY2F0ZUFnYWlu
c3RQcm90ZWN0aW9uU3BhY2UoKSB3aGVuIHJlYWR5LgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAJKHJl
dmlzaW9uIDIwMTg3MykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3Vy
Y2VSZXNwb25zZUJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw3ICs0Nyw2IEBAIGlubGlu
ZSBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBSZXNvdXJjZVIKIFJlc291cmNlUmVzcG9uc2VCYXNl
OjpSZXNvdXJjZVJlc3BvbnNlQmFzZSgpCiAgICAgOiBtX2lzTnVsbCh0cnVlKQogICAgICwgbV9l
eHBlY3RlZENvbnRlbnRMZW5ndGgoMCkKLSAgICAsIG1faW5jbHVkZXNDZXJ0aWZpY2F0ZUluZm8o
ZmFsc2UpCiAgICAgLCBtX2h0dHBTdGF0dXNDb2RlKDApCiB7CiB9CkBAIC01OCw3ICs1Nyw3IEBA
IFJlc291cmNlUmVzcG9uc2VCYXNlOjpSZXNvdXJjZVJlc3BvbnNlQmEKICAgICAsIG1fbWltZVR5
cGUobWltZVR5cGUpCiAgICAgLCBtX2V4cGVjdGVkQ29udGVudExlbmd0aChleHBlY3RlZExlbmd0
aCkKICAgICAsIG1fdGV4dEVuY29kaW5nTmFtZSh0ZXh0RW5jb2RpbmdOYW1lKQotICAgICwgbV9p
bmNsdWRlc0NlcnRpZmljYXRlSW5mbyh0cnVlKSAvLyBFbXB0eSBidXQgdmFsaWQgZm9yIHN5bnRo
ZXRpYyByZXNwb25zZXMuCisgICAgLCBtX2NlcnRpZmljYXRlSW5mbyhDZXJ0aWZpY2F0ZUluZm8o
KSkgLy8gRW1wdHkgYnV0IHZhbGlkIGZvciBzeW50aGV0aWMgcmVzcG9uc2VzLgogICAgICwgbV9o
dHRwU3RhdHVzQ29kZSgwKQogewogfQpAQCAtMTg0LDE1ICsxODMsOSBAQCB2b2lkIFJlc291cmNl
UmVzcG9uc2VCYXNlOjpzZXRUZXh0RW5jb2RpCiAKIHZvaWQgUmVzb3VyY2VSZXNwb25zZUJhc2U6
OmluY2x1ZGVDZXJ0aWZpY2F0ZUluZm8oKSBjb25zdAogewotICAgIGlmIChtX2luY2x1ZGVzQ2Vy
dGlmaWNhdGVJbmZvKQorICAgIGlmIChtX2NlcnRpZmljYXRlSW5mbykKICAgICAgICAgcmV0dXJu
OwogICAgIG1fY2VydGlmaWNhdGVJbmZvID0gc3RhdGljX2Nhc3Q8Y29uc3QgUmVzb3VyY2VSZXNw
b25zZSo+KHRoaXMpLT5wbGF0Zm9ybUNlcnRpZmljYXRlSW5mbygpOwotICAgIG1faW5jbHVkZXND
ZXJ0aWZpY2F0ZUluZm8gPSB0cnVlOwotfQotCi1DZXJ0aWZpY2F0ZUluZm8gUmVzb3VyY2VSZXNw
b25zZUJhc2U6OmNlcnRpZmljYXRlSW5mbygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fY2VydGlm
aWNhdGVJbmZvOwogfQogCiBTdHJpbmcgUmVzb3VyY2VSZXNwb25zZUJhc2U6OnN1Z2dlc3RlZEZp
bGVuYW1lKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVz
b3VyY2VSZXNwb25zZUJhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmgJKHJldmlzaW9uIDIwMTg3MykKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaAkod29y
a2luZyBjb3B5KQpAQCAtMTE0LDggKzExNCw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9S
VCBTdHJpbmcgc3VnZ2VzdGVkRmlsZW5hbWUoKSBjb25zdDsKIAogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgaW5jbHVkZUNlcnRpZmljYXRlSW5mbygpIGNvbnN0OwotICAgIGJvb2wgY29udGFpbnND
ZXJ0aWZpY2F0ZUluZm8oKSBjb25zdCB7IHJldHVybiBtX2luY2x1ZGVzQ2VydGlmaWNhdGVJbmZv
OyB9Ci0gICAgV0VCQ09SRV9FWFBPUlQgQ2VydGlmaWNhdGVJbmZvIGNlcnRpZmljYXRlSW5mbygp
IGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IE9wdGlvbmFsPENlcnRpZmljYXRlSW5m
bz4mIGNlcnRpZmljYXRlSW5mbygpIGNvbnN0IHsgcmV0dXJuIG1fY2VydGlmaWNhdGVJbmZvOyB9
OwogICAgIAogICAgIC8vIFRoZXNlIGZ1bmN0aW9ucyByZXR1cm4gcGFyc2VkIHZhbHVlcyBvZiB0
aGUgY29ycmVzcG9uZGluZyByZXNwb25zZSBoZWFkZXJzLgogICAgIC8vIE5hTiBtZWFucyB0aGF0
IHRoZSBoZWFkZXIgd2FzIG5vdCBwcmVzZW50IG9yIGhhZCBpbnZhbGlkIHZhbHVlLgpAQCAtMTkw
LDggKzE4OSw4IEBAIHByb3RlY3RlZDoKICAgICBIVFRQSGVhZGVyTWFwIG1faHR0cEhlYWRlckZp
ZWxkczsKICAgICBtdXRhYmxlIFJlc291cmNlTG9hZFRpbWluZyBtX3Jlc291cmNlTG9hZFRpbWlu
ZzsKIAotICAgIG11dGFibGUgYm9vbCBtX2luY2x1ZGVzQ2VydGlmaWNhdGVJbmZvOwotICAgIG11
dGFibGUgQ2VydGlmaWNhdGVJbmZvIG1fY2VydGlmaWNhdGVJbmZvOworI2RlZmluZSBSRVNPVVJD
RV9SRVNQT05TRV9CQVNFX0NFUlRfSU5GT19PUFRJT05BTAorICAgIG11dGFibGUgT3B0aW9uYWw8
Q2VydGlmaWNhdGVJbmZvPiBtX2NlcnRpZmljYXRlSW5mbzsKIAogICAgIGludCBtX2h0dHBTdGF0
dXNDb2RlOwogCkBAIC0yMzYsOSArMjM1LDcgQEAgdm9pZCBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6
ZW5jb2RlKEVuY29kZQogICAgIGVuY29kZXIgPDwgbV9odHRwSGVhZGVyRmllbGRzOwogICAgIGVu
Y29kZXIgPDwgbV9yZXNvdXJjZUxvYWRUaW1pbmc7CiAgICAgZW5jb2RlciA8PCBtX2h0dHBTdGF0
dXNDb2RlOwotICAgIGVuY29kZXIgPDwgbV9pbmNsdWRlc0NlcnRpZmljYXRlSW5mbzsKLSAgICBp
ZiAobV9pbmNsdWRlc0NlcnRpZmljYXRlSW5mbykKLSAgICAgICAgZW5jb2RlciA8PCBtX2NlcnRp
ZmljYXRlSW5mbzsKKyAgICBlbmNvZGVyIDw8IG1fY2VydGlmaWNhdGVJbmZvOwogICAgIGVuY29k
ZXIuZW5jb2RlRW51bShtX3NvdXJjZSk7CiAgICAgZW5jb2Rlci5lbmNvZGVFbnVtKG1fdHlwZSk7
CiAgICAgZW5jb2RlciA8PCBtX2lzUmVkaXJlY3RlZDsKQEAgLTI3NCwxMiArMjcxLDggQEAgYm9v
bCBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6ZGVjb2RlKERlY29kZQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXNwb25zZS5tX2h0dHBTdGF0dXNDb2RlKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzcG9uc2Uu
bV9pbmNsdWRlc0NlcnRpZmljYXRlSW5mbykpCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXNw
b25zZS5tX2NlcnRpZmljYXRlSW5mbykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAo
cmVzcG9uc2UubV9pbmNsdWRlc0NlcnRpZmljYXRlSW5mbykgewotICAgICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKHJlc3BvbnNlLm1fY2VydGlmaWNhdGVJbmZvKSkKLSAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICB9CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZUVudW0ocmVzcG9uc2UubV9z
b3VyY2UpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZUVu
dW0ocmVzcG9uc2UubV90eXBlKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvU3luY2hyb25vdXNMb2FkZXJDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvU3luY2hyb25vdXNMb2FkZXJDbGllbnQuY3BwCShyZXZpc2lv
biAyMDE4NzMpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1N5bmNocm9ub3Vz
TG9hZGVyQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjIsOSArNjIsOSBAQCBib29sIFN5
bmNocm9ub3VzTG9hZGVyQ2xpZW50OjpjYW5BdXRoZW50CiB9CiAjZW5kaWYKIAotdm9pZCBTeW5j
aHJvbm91c0xvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlKiwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCit2b2lkIFN5bmNocm9ub3VzTG9hZGVy
Q2xpZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqLCBSZXNvdXJjZVJlc3Bv
bnNlJiYgcmVzcG9uc2UpCiB7Ci0gICAgbV9yZXNwb25zZSA9IHJlc3BvbnNlOworICAgIG1fcmVz
cG9uc2UgPSBXVEZNb3ZlKHJlc3BvbnNlKTsKIH0KIAogdm9pZCBTeW5jaHJvbm91c0xvYWRlckNs
aWVudDo6ZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBjaGFyKiBkYXRhLCB1
bnNpZ25lZCBsZW5ndGgsIGludCAvKmVuY29kZWREYXRhTGVuZ3RoKi8pCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9TeW5jaHJvbm91c0xvYWRl
ckNsaWVudC5oCShyZXZpc2lvbiAyMDE4NzMpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcg
KzQ4LDcgQEAgcHJpdmF0ZToKICAgICBSZXNvdXJjZVJlcXVlc3Qgd2lsbFNlbmRSZXF1ZXN0KFJl
c291cmNlSGFuZGxlKiwgUmVzb3VyY2VSZXF1ZXN0JiYsIFJlc291cmNlUmVzcG9uc2UmJikgb3Zl
cnJpZGU7CiAgICAgYm9vbCBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZShSZXNvdXJjZUhhbmRs
ZSopIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
KFJlc291cmNlSGFuZGxlKiwgY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKSBvdmVycmlk
ZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShS
ZXNvdXJjZUhhbmRsZSosIFJlc291cmNlUmVzcG9uc2UmJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBk
aWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IGNoYXIqLCB1bnNpZ25lZCwgaW50
IC8qZW5jb2RlZERhdGFMZW5ndGgqLykgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2Fk
aW5nKFJlc291cmNlSGFuZGxlKiwgZG91YmxlIC8qZmluaXNoVGltZSovKSBvdmVycmlkZTsKICAg
ICB2b2lkIGRpZEZhaWwoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBSZXNvdXJjZUVycm9yJikgb3Zl
cnJpZGU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNl
SGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5k
bGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5jcHAJKHJldmlzaW9u
IDIwMTg3MykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VI
YW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE2MSw3ICsxNjEsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25u
ZWN0aW9uRGVsZWdhCiAgICAgICAgIFVOVVNFRF9QQVJBTShjb25uZWN0aW9uKTsKICNlbmRpZgog
ICAgICAgICAKLSAgICAgICAgbV9oYW5kbGUtPmNsaWVudCgpLT5kaWRSZWNlaXZlUmVzcG9uc2VB
c3luYyhtX2hhbmRsZSwgcmVzb3VyY2VSZXNwb25zZSk7CisgICAgICAgIG1faGFuZGxlLT5jbGll
bnQoKS0+ZGlkUmVjZWl2ZVJlc3BvbnNlQXN5bmMobV9oYW5kbGUsIFdURk1vdmUocmVzb3VyY2VS
ZXNwb25zZSkpOwogICAgIH0pOwogICAgIGRpc3BhdGNoX3NlbWFwaG9yZV93YWl0KG1fc2VtYXBo
b3JlLCBESVNQQVRDSF9USU1FX0ZPUkVWRVIpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jZi9TeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9u
RGVsZWdhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2YvU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmNw
cAkocmV2aXNpb24gMjAxODczKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
Zi9TeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xODAsNyArMTgwLDcgQEAgdm9pZCBTeW5jaHJvbm91c1Jlc291cmNl
SGFuZGxlQ0ZVUkxDb25uZQogICAgIFVOVVNFRF9QQVJBTShjb25uZWN0aW9uKTsKICNlbmRpZgog
ICAgIAotICAgIG1faGFuZGxlLT5jbGllbnQoKS0+ZGlkUmVjZWl2ZVJlc3BvbnNlKG1faGFuZGxl
LCByZXNvdXJjZVJlc3BvbnNlKTsKKyAgICBtX2hhbmRsZS0+Y2xpZW50KCktPmRpZFJlY2VpdmVS
ZXNwb25zZShtX2hhbmRsZSwgV1RGTW92ZShyZXNvdXJjZVJlc3BvbnNlKSk7CiB9CiAKIHZvaWQg
U3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlOjpkaWRSZWNl
aXZlRGF0YShDRkRhdGFSZWYgZGF0YSwgQ0ZJbmRleCBvcmlnaW5hbExlbmd0aCkKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFz
RGVsZWdhdGUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZS5tbQkocmV2aXNpb24gMjAxODcz
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNl
SGFuZGxlQXNEZWxlZ2F0ZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMTY5LDcgKzE2OSw3IEBAIC0g
KHZvaWQpY29ubmVjdGlvbjooTlNVUkxDb25uZWN0aW9uICopY28KICAgICBVTlVTRURfUEFSQU0o
Y29ubmVjdGlvbik7CiAjZW5kaWYKICAgICAKLSAgICBtX2hhbmRsZS0+Y2xpZW50KCktPmRpZFJl
Y2VpdmVSZXNwb25zZShtX2hhbmRsZSwgcmVzb3VyY2VSZXNwb25zZSk7CisgICAgbV9oYW5kbGUt
PmNsaWVudCgpLT5kaWRSZWNlaXZlUmVzcG9uc2UobV9oYW5kbGUsIFdURk1vdmUocmVzb3VyY2VS
ZXNwb25zZSkpOwogfQogCiAjaWYgVVNFKE5FVFdPUktfQ0ZEQVRBX0FSUkFZX0NBTExCQUNLKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNl
SGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0
aW9uUXVldWVEZWxlZ2F0ZS5tbQkocmV2aXNpb24gMjAxODczKQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1
ZURlbGVnYXRlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yMTUsNyArMjE1LDcgQEAgLSAodm9pZClj
b25uZWN0aW9uOihOU1VSTENvbm5lY3Rpb24gKiljbwogI2Vsc2UKICAgICAgICAgVU5VU0VEX1BB
UkFNKGNvbm5lY3Rpb24pOwogI2VuZGlmCi0gICAgICAgIG1faGFuZGxlLT5jbGllbnQoKS0+ZGlk
UmVjZWl2ZVJlc3BvbnNlQXN5bmMobV9oYW5kbGUsIHJlc291cmNlUmVzcG9uc2UpOworICAgICAg
ICBtX2hhbmRsZS0+Y2xpZW50KCktPmRpZFJlY2VpdmVSZXNwb25zZUFzeW5jKG1faGFuZGxlLCBX
VEZNb3ZlKHJlc291cmNlUmVzcG9uc2UpKTsKICAgICB9KTsKIAogICAgIGRpc3BhdGNoX3NlbWFw
aG9yZV93YWl0KG1fc2VtYXBob3JlLCBESVNQQVRDSF9USU1FX0ZPUkVWRVIpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291
cmNlSGFuZGxlU291cC5jcHAJKHJldmlzaW9uIDIwMTg3MykKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMzYsNyArMTM2LDcgQEAgcHVibGljOgogICAgIH0KICNlbmRpZiAvLyBTT1VQX0NIRUNL
X1ZFUlNJT04oMiwgNDksIDkxKQogCi0gICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3Vy
Y2VIYW5kbGUqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkgb3ZlcnJpZGUKKyAg
ICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSosIFJlc291cmNlUmVzcG9u
c2UmJiByZXNwb25zZSkgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIG1fcmVzcG9uc2UgPSByZXNw
b25zZTsKICAgICB9CkBAIC02NTQsOSArNjU0LDkgQEAgc3RhdGljIHZvaWQgbmV4dE11bHRpcGFy
dFJlc3BvbnNlUGFydENhbAogICAgIGQtPm1fcHJldmlvdXNQb3NpdGlvbiA9IDA7CiAKICAgICBp
ZiAoaGFuZGxlLT5jbGllbnQoKS0+dXNlc0FzeW5jQ2FsbGJhY2tzKCkpCi0gICAgICAgIGhhbmRs
ZS0+Y2xpZW50KCktPmRpZFJlY2VpdmVSZXNwb25zZUFzeW5jKGhhbmRsZS5nZXQoKSwgZC0+bV9y
ZXNwb25zZSk7CisgICAgICAgIGhhbmRsZS0+Y2xpZW50KCktPmRpZFJlY2VpdmVSZXNwb25zZUFz
eW5jKGhhbmRsZS5nZXQoKSwgUmVzb3VyY2VSZXNwb25zZShkLT5tX3Jlc3BvbnNlKSk7CiAgICAg
ZWxzZSB7Ci0gICAgICAgIGhhbmRsZS0+Y2xpZW50KCktPmRpZFJlY2VpdmVSZXNwb25zZShoYW5k
bGUuZ2V0KCksIGQtPm1fcmVzcG9uc2UpOworICAgICAgICBoYW5kbGUtPmNsaWVudCgpLT5kaWRS
ZWNlaXZlUmVzcG9uc2UoaGFuZGxlLmdldCgpLCBSZXNvdXJjZVJlc3BvbnNlKGQtPm1fcmVzcG9u
c2UpKTsKICAgICAgICAgY29udGludWVBZnRlckRpZFJlY2VpdmVSZXNwb25zZShoYW5kbGUuZ2V0
KCkpOwogICAgIH0KIH0KQEAgLTcxOCw5ICs3MTgsOSBAQCBzdGF0aWMgdm9pZCBzZW5kUmVxdWVz
dENhbGxiYWNrKEdPYmplY3QqCiAgICAgICAgIGQtPm1faW5wdXRTdHJlYW0gPSBpbnB1dFN0cmVh
bTsKIAogICAgIGlmIChkLT5jbGllbnQoKS0+dXNlc0FzeW5jQ2FsbGJhY2tzKCkpCi0gICAgICAg
IGhhbmRsZS0+Y2xpZW50KCktPmRpZFJlY2VpdmVSZXNwb25zZUFzeW5jKGhhbmRsZS5nZXQoKSwg
ZC0+bV9yZXNwb25zZSk7CisgICAgICAgIGhhbmRsZS0+Y2xpZW50KCktPmRpZFJlY2VpdmVSZXNw
b25zZUFzeW5jKGhhbmRsZS5nZXQoKSwgUmVzb3VyY2VSZXNwb25zZShkLT5tX3Jlc3BvbnNlKSk7
CiAgICAgZWxzZSB7Ci0gICAgICAgIGhhbmRsZS0+Y2xpZW50KCktPmRpZFJlY2VpdmVSZXNwb25z
ZShoYW5kbGUuZ2V0KCksIGQtPm1fcmVzcG9uc2UpOworICAgICAgICBoYW5kbGUtPmNsaWVudCgp
LT5kaWRSZWNlaXZlUmVzcG9uc2UoaGFuZGxlLmdldCgpLCBSZXNvdXJjZVJlc3BvbnNlKGQtPm1f
cmVzcG9uc2UpKTsKICAgICAgICAgY29udGludWVBZnRlckRpZFJlY2VpdmVSZXNwb25zZShoYW5k
bGUuZ2V0KCkpOwogICAgIH0KIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwMTg5NCkKKysr
IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ0IEBA
CisyMDE2LTA2LTEwICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+
CisKKyAgICAgICAgUmVkdWNlIFJlc291cmNlUmVzcG9uc2UgY29weWluZworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4MjMyCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9h
ZHMvUGVuZGluZ0Rvd25sb2FkLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Rh
dGFUYXNrLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6Y29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UpOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6c2hhcmVkRGlkUmVjZWl2ZVJlc3BvbnNlKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWQ6OnNoYXJlZFdpbGxTZW5kUmVkaXJlY3RlZFJl
cXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6ZGlkUmVjZWl2ZUNoYWxsZW5n
ZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkOjpkaWRSZWNlaXZlUmVzcG9uc2VOZXR3
b3JrU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkOjpkaWRSZWNlaXZlUmVz
cG9uc2VBc3luYyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaDoKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENsaWVudC5oOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6cmV0cmlldmVDYWNoZUVudHJ5KToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjphYm9ydCk6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
UGluZ0xvYWQuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVD
b2RlcnMuaDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpDb2RlcjxPcHRpb25hbDxU
Pj46OmVuY29kZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6Q29kZXI8T3B0aW9u
YWw8VD4+OjpkZWNvZGUpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZVNwZWN1bGF0aXZlTG9hZC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6
U3BlY3VsYXRpdmVMb2FkOjp3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KToKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaDoKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrOjpkaWRDb21wbGV0ZVdpdGhFcnJvcik6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFzazo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tOgorICAgICAg
ICAoLVtXS05ldHdvcmtTZXNzaW9uRGVsZWdhdGUgVVJMU2Vzc2lvbjpkYXRhVGFzazpkaWRSZWNl
aXZlUmVzcG9uc2U6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENvbW1pdExvYWQpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZy
YW1lOjp1cmwpOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6Y2VydGlmaWNhdGVJbmZvKToK
KyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OmlubmVyVGV4dCk6CisKIDIwMTYtMDYtMDkgIEFs
ZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBDbGVh
biB1cCBFZGl0b3JDbGllbnQgbGlmZXRpbWUKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtEYXRhVGFzay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5oCShyZXZpc2lvbiAyMDE4NzMpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaAkod29ya2luZyBjb3B5
KQpAQCAtNzAsNyArNzAsNyBAQCBjbGFzcyBOZXR3b3JrRGF0YVRhc2tDbGllbnQgewogcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBSZWRpcmVjdENv
bXBsZXRpb25IYW5kbGVyKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVDaGFsbGVu
Z2UoY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmLCBDaGFsbGVuZ2VDb21w
bGV0aW9uSGFuZGxlcikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2VO
ZXR3b3JrU2Vzc2lvbihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgUmVzcG9uc2VD
b21wbGV0aW9uSGFuZGxlcikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9u
c2VOZXR3b3JrU2Vzc2lvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29t
cGxldGlvbkhhbmRsZXIpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVm
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRDb21w
bGV0ZVdpdGhFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBkaWRCZWNvbWVEb3dubG9hZCgpID0gMDsKQEAgLTEwMCw3ICsxMDAsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBkaWRTZW5kRGF0YSh1aW50NjRfdCB0b3RhbEJ5dGVzU2VudCwgdWlu
dDY0X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9TZW5kKTsKICAgICB2b2lkIGRpZFJlY2VpdmVDaGFs
bGVuZ2UoY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmLCBDaGFsbGVuZ2VD
b21wbGV0aW9uSGFuZGxlcik7CiAgICAgdm9pZCBkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7Ci0gICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIp
OworICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
JiwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlcik7CiAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShS
ZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKTsKICAgICB2b2lkIGRpZEJlY29tZURvd25sb2Fk
KCk7CiAgICAgCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9h
ZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0xvYWQuY3BwCShyZXZpc2lvbiAyMDE4NzMpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrTG9hZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1MywxNCArMTUzLDEzIEBA
IHZvaWQgTmV0d29ya0xvYWQ6OmNvbnRpbnVlRGlkUmVjZWl2ZVJlc3AKICAgICAgICAgbV9oYW5k
bGUtPmNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlKCk7CiB9CiAKLU5ldHdvcmtMb2FkQ2xpZW50
OjpTaG91bGRDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSBOZXR3b3JrTG9hZDo6c2hhcmVkRGlk
UmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlY2VpdmVkUmVzcG9uc2Up
CitOZXR3b3JrTG9hZENsaWVudDo6U2hvdWxkQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UgTmV0
d29ya0xvYWQ6OnNoYXJlZERpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVz
cG9uc2UpCiB7Ci0gICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSA9IHJlY2VpdmVkUmVzcG9u
c2U7CiAgICAgcmVzcG9uc2Uuc2V0U291cmNlKFJlc291cmNlUmVzcG9uc2U6OlNvdXJjZTo6TmV0
d29yayk7CiAgICAgaWYgKG1fcGFyYW1ldGVycy5uZWVkc0NlcnRpZmljYXRlSW5mbykKICAgICAg
ICAgcmVzcG9uc2UuaW5jbHVkZUNlcnRpZmljYXRlSW5mbygpOwogCi0gICAgcmV0dXJuIG1fY2xp
ZW50LmRpZFJlY2VpdmVSZXNwb25zZShyZXNwb25zZSk7CisgICAgcmV0dXJuIG1fY2xpZW50LmRp
ZFJlY2VpdmVSZXNwb25zZShXVEZNb3ZlKHJlc3BvbnNlKSk7CiB9CiAKIHZvaWQgTmV0d29ya0xv
YWQ6OnNoYXJlZFdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVx
dWVzdCwgUmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UpCkBAIC0yMzksMTIgKzIz
OCwxMiBAQCB2b2lkIE5ldHdvcmtMb2FkOjpkaWRSZWNlaXZlQ2hhbGxlbmdlKGNvCiAgICAgICAg
IG1fY2xpZW50LmNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2VBc3luYyhjaGFs
bGVuZ2UucHJvdGVjdGlvblNwYWNlKCkpOwogfQogCi12b2lkIE5ldHdvcmtMb2FkOjpkaWRSZWNl
aXZlUmVzcG9uc2VOZXR3b3JrU2Vzc2lvbihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25z
ZSwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0
d29ya0xvYWQ6OmRpZFJlY2VpdmVSZXNwb25zZU5ldHdvcmtTZXNzaW9uKFJlc291cmNlUmVzcG9u
c2UmJiByZXNwb25zZSwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciBjb21wbGV0aW9uSGFuZGxl
cikKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIGlmIChtX3Rhc2sgJiYgbV90
YXNrLT5wZW5kaW5nRG93bmxvYWRJRCgpLmRvd25sb2FkSUQoKSkKICAgICAgICAgTmV0d29ya1By
b2Nlc3M6OnNpbmdsZXRvbigpLmZpbmRQZW5kaW5nRG93bmxvYWRMb2NhdGlvbigqbV90YXNrLmdl
dCgpLCBjb21wbGV0aW9uSGFuZGxlciwgbV90YXNrLT5jdXJyZW50UmVxdWVzdCgpKTsKLSAgICBl
bHNlIGlmIChzaGFyZWREaWRSZWNlaXZlUmVzcG9uc2UocmVzcG9uc2UpID09IE5ldHdvcmtMb2Fk
Q2xpZW50OjpTaG91bGRDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZTo6WWVzKQorICAgIGVsc2Ug
aWYgKHNoYXJlZERpZFJlY2VpdmVSZXNwb25zZShXVEZNb3ZlKHJlc3BvbnNlKSkgPT0gTmV0d29y
a0xvYWRDbGllbnQ6OlNob3VsZENvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlOjpZZXMpCiAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKFBvbGljeVVzZSk7CiAgICAgZWxzZQogICAgICAgICBtX3Jl
c3BvbnNlQ29tcGxldGlvbkhhbmRsZXIgPSBjb21wbGV0aW9uSGFuZGxlcjsKQEAgLTI4NywxMCAr
Mjg2LDEwIEBAIHZvaWQgTmV0d29ya0xvYWQ6OmNhbm5vdFNob3dVUkwoKQogICAgIAogI2VuZGlm
CiAKLXZvaWQgTmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVSZXNwb25zZUFzeW5jKFJlc291cmNlSGFu
ZGxlKiBoYW5kbGUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlY2VpdmVkUmVzcG9uc2UpCit2
b2lkIE5ldHdvcmtMb2FkOjpkaWRSZWNlaXZlUmVzcG9uc2VBc3luYyhSZXNvdXJjZUhhbmRsZSog
aGFuZGxlLCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVjZWl2ZWRSZXNwb25zZSkKIHsKICAgICBBU1NF
UlRfVU5VU0VEKGhhbmRsZSwgaGFuZGxlID09IG1faGFuZGxlKTsKLSAgICBpZiAoc2hhcmVkRGlk
UmVjZWl2ZVJlc3BvbnNlKHJlY2VpdmVkUmVzcG9uc2UpID09IE5ldHdvcmtMb2FkQ2xpZW50OjpT
aG91bGRDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZTo6WWVzKQorICAgIGlmIChzaGFyZWREaWRS
ZWNlaXZlUmVzcG9uc2UoV1RGTW92ZShyZWNlaXZlZFJlc3BvbnNlKSkgPT0gTmV0d29ya0xvYWRD
bGllbnQ6OlNob3VsZENvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlOjpZZXMpCiAgICAgICAgIG1f
aGFuZGxlLT5jb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSgpOwogfQogCkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmgJKHJldmlzaW9uIDIwMTg3MykK
KysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTY3LDcgKzY3LDcgQEAgcHVibGljOgogICAgIC8vIE5ldHdvcmtEYXRhVGFza0Ns
aWVudAogICAgIHZvaWQgd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgUmVkaXJlY3RDb21wbGV0
aW9uSGFuZGxlcikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlQ2hhbGxlbmdlKGNvbnN0IFdl
YkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiwgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRs
ZXIpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlTmV0d29ya1Nlc3Npb24oY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIp
IGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlTmV0d29ya1Nlc3Npb24oV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbDsK
ICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpIGZp
bmFsOwogICAgIHZvaWQgZGlkQ29tcGxldGVXaXRoRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvciYpIGZpbmFsOwogICAgIHZvaWQgZGlkQmVjb21lRG93bmxvYWQoKSBmaW5hbDsKQEAg
LTc4LDcgKzc4LDcgQEAgcHVibGljOgogICAgIC8vIFJlc291cmNlSGFuZGxlQ2xpZW50CiAgICAg
dm9pZCB3aWxsU2VuZFJlcXVlc3RBc3luYyhXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJl
Y3RSZXNwb25zZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRTZW5kRGF0YShXZWJDb3JlOjpSZXNv
dXJjZUhhbmRsZSosIHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcg
bG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZVJl
c3BvbnNlQXN5bmMoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2VBc3lu
YyhXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJikg
b3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShXZWJDb3JlOjpSZXNvdXJjZUhhbmRs
ZSosIGNvbnN0IGNoYXIqLCB1bnNpZ25lZCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKSBvdmVycmlk
ZTsKICAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBS
ZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0
aCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFdlYkNvcmU6OlJlc291cmNl
SGFuZGxlKiwgZG91YmxlIGZpbmlzaFRpbWUpIG92ZXJyaWRlOwpAQCAtMTE2LDcgKzExNiw3IEBA
IHB1YmxpYzoKICNlbmRpZgogCiBwcml2YXRlOgotICAgIE5ldHdvcmtMb2FkQ2xpZW50OjpTaG91
bGRDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSBzaGFyZWREaWRSZWNlaXZlUmVzcG9uc2UoY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOworICAgIE5ldHdvcmtMb2FkQ2xpZW50OjpT
aG91bGRDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSBzaGFyZWREaWRSZWNlaXZlUmVzcG9uc2Uo
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmKTsKICAgICB2b2lkIHNoYXJlZFdpbGxTZW5kUmVk
aXJlY3RlZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmJik7CiAKICAgICBOZXR3b3JrTG9hZENsaWVudCYgbV9jbGllbnQ7CkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENsaWVudC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2xpZW50
LmgJKHJldmlzaW9uIDIwMTg3MykKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05l
dHdvcmtMb2FkQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDggKzIzLDcgQEAKICAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIE5ldHdvcmtMb2Fk
Q2xpZW50X2gKLSNkZWZpbmUgTmV0d29ya0xvYWRDbGllbnRfaAorI3ByYWdtYSBvbmNlCiAKICNp
bmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291
cmNlUmVxdWVzdC5oPgpAQCAtNTIsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IGNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2VBc3luYyhjb25zdCBXZWJDb3Jl
OjpQcm90ZWN0aW9uU3BhY2UmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxTZW5kUmVkaXJl
Y3RlZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYmIHJlZGlyZWN0UmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJl
ZGlyZWN0UmVzcG9uc2UpID0gMDsKICAgICBlbnVtIGNsYXNzIFNob3VsZENvbnRpbnVlRGlkUmVj
ZWl2ZVJlc3BvbnNlIHsgTm8sIFllcyB9OwotICAgIHZpcnR1YWwgU2hvdWxkQ29udGludWVEaWRS
ZWNlaXZlUmVzcG9uc2UgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmKSA9IDA7CisgICAgdmlydHVhbCBTaG91bGRDb250aW51ZURpZFJlY2VpdmVSZXNw
b25zZSBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgZGlkRmluaXNoTG9hZGluZyhkb3VibGUgZmluaXNoVGltZSkgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBkaWRGYWlsTG9hZGluZyhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgPSAw
OwpAQCAtNjIsNiArNjEsMyBAQCBwdWJsaWM6CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
LQotI2VuZGlmIC8vIE5ldHdvcmtMb2FkQ2xpZW50X2gKLQpJbmRleDogU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCShy
ZXZpc2lvbiAyMDE4NzMpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzgsNyArMTc4LDcgQEAgdm9p
ZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnJldHJpZXZlQ2FjaAogICAgICAgICAgICAgbG9hZGVy
LT5kaXNwYXRjaFdpbGxTZW5kUmVxdWVzdEZvckNhY2hlRW50cnkoV1RGTW92ZShlbnRyeSkpOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIGlmIChsb2FkZXItPm1fcGFy
YW1ldGVycy5uZWVkc0NlcnRpZmljYXRlSW5mbyAmJiAhZW50cnktPnJlc3BvbnNlKCkuY29udGFp
bnNDZXJ0aWZpY2F0ZUluZm8oKSkgeworICAgICAgICBpZiAobG9hZGVyLT5tX3BhcmFtZXRlcnMu
bmVlZHNDZXJ0aWZpY2F0ZUluZm8gJiYgIWVudHJ5LT5yZXNwb25zZSgpLmNlcnRpZmljYXRlSW5m
bygpKSB7CiAgICAgICAgICAgICBsb2FkZXItPnN0YXJ0TmV0d29ya0xvYWQocmVxdWVzdCk7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTI3NCw3ICsyNzQsNyBAQCB2b2lkIE5l
dHdvcmtSZXNvdXJjZUxvYWRlcjo6YWJvcnQoKQogICAgIGNsZWFudXAoKTsKIH0KIAotYXV0byBO
ZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiByZWNlaXZlZFJlc3BvbnNlKSAtPiBTaG91bGRDb250aW51ZURpZFJlY2VpdmVSZXNw
b25zZQorYXV0byBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNv
dXJjZVJlc3BvbnNlJiYgcmVjZWl2ZWRSZXNwb25zZSkgLT4gU2hvdWxkQ29udGludWVEaWRSZWNl
aXZlUmVzcG9uc2UKIHsKICAgICBORVRXT1JLUkVTT1VSQ0VMT0FERVJfTE9HX0FMV0FZUygiUmVj
ZWl2ZWQgbmV0d29yayByZXNvdXJjZSByZXNwb25zZTogbG9hZGVyID0gJXAsIHBhZ2VJRCA9ICVs
bHUsIGZyYW1lSUQgPSAlbGx1LCBpc01haW5SZXNvdXJjZSA9ICVkLCBpc1N5bmNocm9ub3VzID0g
JWQsIGh0dHBTdGF0dXNDb2RlID0gJWQiLCB0aGlzLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELCBt
X3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgaXNNYWluUmVzb3VyY2UoKSwgaXNTeW5jaHJvbm91cygp
LCByZWNlaXZlZFJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkpOwogCkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAko
cmV2aXNpb24gMjAxODczKQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Jlc291cmNlTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTg4LDcgKzg4LDcgQEAgcHVibGlj
OgogICAgIHZvaWQgY2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZUFzeW5jKGNv
bnN0IFdlYkNvcmU6OlByb3RlY3Rpb25TcGFjZSYpIG92ZXJyaWRlOwogICAgIGJvb2wgaXNTeW5j
aHJvbm91cygpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgd2lsbFNlbmRSZWRpcmVjdGVkUmVx
dWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiYgcmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYpIG92ZXJyaWRl
OwotICAgIFNob3VsZENvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlIGRpZFJlY2VpdmVSZXNwb25z
ZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7CisgICAgU2hvdWxk
Q29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJl
ZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3Ro
KSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoZG91YmxlIGZpbmlzaFRpbWUp
IG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFpbExvYWRpbmcoY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvciYpIG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mv
UGluZ0xvYWQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9Q
aW5nTG9hZC5oCShyZXZpc2lvbiAyMDE4NzMpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9QaW5nTG9hZC5oCSh3b3JraW5nIGNvcHkpCkBAIC01OCw3ICs1OCw3IEBAIHByaXZhdGU6
CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9z
aXRpb246OkNhbmNlbCwgeyB9KTsKICAgICAgICAgZGVsZXRlIHRoaXM7CiAgICAgfQotICAgIHZv
aWQgZGlkUmVjZWl2ZVJlc3BvbnNlTmV0d29ya1Nlc3Npb24oY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIgY29tcGxldGlvbkhhbmRsZXIp
IG92ZXJyaWRlCisgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2VOZXR3b3JrU2Vzc2lvbihXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIgY29tcGxl
dGlvbkhhbmRsZXIpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihX
ZWJDb3JlOjpQb2xpY3lBY3Rpb246OlBvbGljeUlnbm9yZSk7CiAgICAgICAgIGRlbGV0ZSB0aGlz
OwpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdE
b3dubG9hZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rv
d25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuaAkocmV2aXNpb24gMjAxODczKQorKysgU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5oCSh3b3JraW5n
IGNvcHkpCkBAIC01NSw3ICs1NSw3IEBAIHByaXZhdGU6ICAgIAogICAgIHZvaWQgY2FuQXV0aGVu
dGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZUFzeW5jKGNvbnN0IFdlYkNvcmU6OlByb3RlY3Rp
b25TcGFjZSYpIG92ZXJyaWRlOwogICAgIGJvb2wgaXNTeW5jaHJvbm91cygpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdm9pZCB3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0
KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiBy
ZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3Bv
bnNlKSBvdmVycmlkZTsKLSAgICBTaG91bGRDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSBkaWRS
ZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRl
IHsgcmV0dXJuIFNob3VsZENvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlOjpObzsgfTsKKyAgICBT
aG91bGRDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYmKSBvdmVycmlkZSB7IHJldHVybiBTaG91bGRDb250aW51ZURp
ZFJlY2VpdmVSZXNwb25zZTo6Tm87IH07CiAgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSBv
dmVycmlkZSB7IH07CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGRvdWJsZSBmaW5pc2hUaW1l
KSBvdmVycmlkZSB7IH07CiAgICAgdm9pZCBkaWRGYWlsTG9hZGluZyhjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVDb2RlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVDb2RlcnMuaAkocmV2aXNpb24g
MjAxODczKQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0Nh
Y2hlQ29kZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDggKzIzLDcgQEAKICAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIE5ldHdvcmtDYWNoZUNvZGVy
c19oCi0jZGVmaW5lIE5ldHdvcmtDYWNoZUNvZGVyc19oCisjcHJhZ21hIG9uY2UKIAogI2lmIEVO
QUJMRShORVRXT1JLX0NBQ0hFKQogCkBAIC04MSw2ICs4MCwzOCBAQCB0ZW1wbGF0ZTx0eXBlbmFt
ZSBSZXAsIHR5cGVuYW1lIFBlcmlvZD4gCiAgICAgfQogfTsKIAordGVtcGxhdGU8dHlwZW5hbWUg
VD4gc3RydWN0IENvZGVyPE9wdGlvbmFsPFQ+PiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVu
Y29kZXImIGVuY29kZXIsIGNvbnN0IE9wdGlvbmFsPFQ+JiBvcHRpb25hbCkKKyAgICB7CisgICAg
ICAgIGlmICghb3B0aW9uYWwpIHsKKyAgICAgICAgICAgIGVuY29kZXIgPDwgZmFsc2U7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGVuY29kZXIgPDwg
dHJ1ZTsKKyAgICAgICAgZW5jb2RlciA8PCBvcHRpb25hbC52YWx1ZSgpOworICAgIH0KKyAgICAK
KyAgICBzdGF0aWMgYm9vbCBkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgT3B0aW9uYWw8VD4mIG9w
dGlvbmFsKQorICAgIHsKKyAgICAgICAgYm9vbCBpc0VuZ2FnZWQ7CisgICAgICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoaXNFbmdhZ2VkKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgCisgICAgICAgIGlmICghaXNFbmdhZ2VkKSB7CisgICAgICAgICAgICBvcHRpb25hbCA9IE51
bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICAKKyAg
ICAgICAgVCB2YWx1ZTsKKyAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh2YWx1ZSkpCisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIAorICAgICAgICBvcHRpb25hbCA9IFdURk1v
dmUodmFsdWUpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9Cit9OworCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBLZXlUeXBlLCB0eXBlbmFtZSBWYWx1ZVR5cGU+IHN0cnVjdCBDb2RlcjxXVEY6Oktl
eVZhbHVlUGFpcjxLZXlUeXBlLCBWYWx1ZVR5cGU+PiB7CiAgICAgc3RhdGljIHZvaWQgZW5jb2Rl
KEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFdURjo6S2V5VmFsdWVQYWlyPEtleVR5cGUsIFZhbHVl
VHlwZT4mIHBhaXIpCiAgICAgewpAQCAtMjY3LDQgKzI5OCwzIEBAIHRlbXBsYXRlPD4gc3RydWN0
IENvZGVyPFdlYkNvcmU6OkhUVFBIZWEKIH0KIH0KICNlbmRpZgotI2VuZGlmCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxv
YWQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAJKHJldmlzaW9uIDIwMTg3MykKKysrIFNv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZl
TG9hZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcwLDcgKzcwLDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUxvYWQ6OndpbGxTZW5kUmVkaXJlY3RlZAogICAgIGFib3J0KCk7CiB9CiAKLWF1dG8gU3BlY3Vs
YXRpdmVMb2FkOjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVj
ZWl2ZWRSZXNwb25zZSkgLT4gU2hvdWxkQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UKK2F1dG8g
U3BlY3VsYXRpdmVMb2FkOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJl
Y2VpdmVkUmVzcG9uc2UpIC0+IFNob3VsZENvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlCiB7CiAg
ICAgbV9yZXNwb25zZSA9IHJlY2VpdmVkUmVzcG9uc2U7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZVNwZWN1bGF0aXZlTG9hZC5oCShyZXZpc2lvbiAyMDE4NzMpCisrKyBTb3VyY2UvV2ViS2l0Mi9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNTcsNyArNTcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY2FuQXV0aGVudGlj
YXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZUFzeW5jKGNvbnN0IFdlYkNvcmU6OlByb3RlY3Rpb25T
cGFjZSYpIG92ZXJyaWRlIHsgfQogICAgIGJvb2wgaXNTeW5jaHJvbm91cygpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdm9pZCB3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0
KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiBy
ZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3Bv
bnNlKSBvdmVycmlkZTsKLSAgICBTaG91bGRDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSBkaWRS
ZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRl
OworICAgIFNob3VsZENvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlIGRpZFJlY2VpdmVSZXNwb25z
ZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVj
ZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNv
ZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGRvdWJs
ZSBmaW5pc2hUaW1lKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZhaWxMb2FkaW5nKGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29h
Lm1tCShyZXZpc2lvbiAyMDE4NzMpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9j
b2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMTY1LDEwICsx
NjUsMTAgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2s6OmRpZENvbXBsZXRlV2l0aEVycgogICAgICAg
ICBtX2NsaWVudC0+ZGlkQ29tcGxldGVXaXRoRXJyb3IoZXJyb3IpOwogfQogCi12b2lkIE5ldHdv
cmtEYXRhVGFzazo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmIHJlc3BvbnNlLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyIGNvbXBsZXRpb25IYW5k
bGVyKQordm9pZCBOZXR3b3JrRGF0YVRhc2s6OmRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIgY29t
cGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKG1fY2xpZW50KQotICAgICAgICBtX2NsaWVudC0+
ZGlkUmVjZWl2ZVJlc3BvbnNlTmV0d29ya1Nlc3Npb24ocmVzcG9uc2UsIGNvbXBsZXRpb25IYW5k
bGVyKTsKKyAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVSZXNwb25zZU5ldHdvcmtTZXNzaW9u
KFdURk1vdmUocmVzcG9uc2UpLCBjb21wbGV0aW9uSGFuZGxlcik7CiAgICAgZWxzZSB7CiAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXZWJD
b3JlOjpQb2xpY3lBY3Rpb246OlBvbGljeUlnbm9yZSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9O
ZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2Eu
bW0JKHJldmlzaW9uIDIwMTg3MykKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2Nv
Y29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTI0Nyw3ICsyNDcs
NyBAQCAtICh2b2lkKVVSTFNlc3Npb246KE5TVVJMU2Vzc2lvbiAqKXNlc3NpCiAgICAgICAgIFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzb3VyY2VSZXNwb25zZShyZXNwb25zZSk7CiAgICAg
ICAgIGNvcHlUaW1pbmdEYXRhKFtkYXRhVGFzayBfdGltaW5nRGF0YV0sIHJlc291cmNlUmVzcG9u
c2UucmVzb3VyY2VMb2FkVGltaW5nKCkpOwogICAgICAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVy
Q29weSA9IEJsb2NrX2NvcHkoY29tcGxldGlvbkhhbmRsZXIpOwotICAgICAgICBuZXR3b3JrRGF0
YVRhc2stPmRpZFJlY2VpdmVSZXNwb25zZShyZXNvdXJjZVJlc3BvbnNlLCBbY29tcGxldGlvbkhh
bmRsZXJDb3B5LCB0YXNrSWRlbnRpZmllcl0oV2ViQ29yZTo6UG9saWN5QWN0aW9uIHBvbGljeUFj
dGlvbikgeworICAgICAgICBuZXR3b3JrRGF0YVRhc2stPmRpZFJlY2VpdmVSZXNwb25zZShXVEZN
b3ZlKHJlc291cmNlUmVzcG9uc2UpLCBbY29tcGxldGlvbkhhbmRsZXJDb3B5LCB0YXNrSWRlbnRp
Zmllcl0oV2ViQ29yZTo6UG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbikgewogICAgICAgICAgICAg
TE9HKE5ldHdvcmtTZXNzaW9uLCAiJWxsdSBkaWRSZWNlaXZlUmVzcG9uc2UgY29tcGxldGlvbkhh
bmRsZXIgKGNhbmNlbCkiLCB0YXNrSWRlbnRpZmllcik7CiAgICAgICAgICAgICBjb21wbGV0aW9u
SGFuZGxlckNvcHkodG9OU1VSTFNlc3Npb25SZXNwb25zZURpc3Bvc2l0aW9uKHBvbGljeUFjdGlv
bikpOwogICAgICAgICAgICAgQmxvY2tfcmVsZWFzZShjb21wbGV0aW9uSGFuZGxlckNvcHkpOwpJ
bmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAJKHJldmlzaW9uIDIwMTg3MykK
KysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NjgsNyArNDY4LDcgQEAgdm9pZCBXZWJG
cmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDbwogCiAgICAgLy8gTm90aWZ5IHRoZSBVSVBy
b2Nlc3MuCiAKLSAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZENv
bW1pdExvYWRGb3JGcmFtZShtX2ZyYW1lLT5mcmFtZUlEKCksIGRvY3VtZW50TG9hZGVyLm5hdmln
YXRpb25JRCgpLCBkb2N1bWVudExvYWRlci5yZXNwb25zZSgpLm1pbWVUeXBlKCksIG1fZnJhbWVI
YXNDdXN0b21Db250ZW50UHJvdmlkZXIsIHN0YXRpY19jYXN0PHVpbnQzMl90PihtX2ZyYW1lLT5j
b3JlRnJhbWUoKS0+bG9hZGVyKCkubG9hZFR5cGUoKSksIGRvY3VtZW50TG9hZGVyLnJlc3BvbnNl
KCkuY2VydGlmaWNhdGVJbmZvKCksIG1fZnJhbWUtPmNvcmVGcmFtZSgpLT5kb2N1bWVudCgpLT5p
c1BsdWdpbkRvY3VtZW50KCksIFVzZXJEYXRhKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnRyYW5z
Zm9ybU9iamVjdHNUb0hhbmRsZXModXNlckRhdGEuZ2V0KCkpLmdldCgpKSkpOworICAgIHdlYlBh
Z2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkQ29tbWl0TG9hZEZvckZyYW1lKG1f
ZnJhbWUtPmZyYW1lSUQoKSwgZG9jdW1lbnRMb2FkZXIubmF2aWdhdGlvbklEKCksIGRvY3VtZW50
TG9hZGVyLnJlc3BvbnNlKCkubWltZVR5cGUoKSwgbV9mcmFtZUhhc0N1c3RvbUNvbnRlbnRQcm92
aWRlciwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KG1fZnJhbWUtPmNvcmVGcmFtZSgpLT5sb2FkZXIo
KS5sb2FkVHlwZSgpKSwgZG9jdW1lbnRMb2FkZXIucmVzcG9uc2UoKS5jZXJ0aWZpY2F0ZUluZm8o
KS52YWx1ZU9yQ29tcHV0ZShbXSB7IHJldHVybiBDZXJ0aWZpY2F0ZUluZm8oKTsgfSksIG1fZnJh
bWUtPmNvcmVGcmFtZSgpLT5kb2N1bWVudCgpLT5pc1BsdWdpbkRvY3VtZW50KCksIFVzZXJEYXRh
KFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXModXNlckRh
dGEuZ2V0KCkpLmdldCgpKSkpOwogICAgIHdlYlBhZ2UtPmRpZENvbW1pdExvYWQobV9mcmFtZSk7
CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZy
YW1lLmNwcAkocmV2aXNpb24gMjAxODczKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYkZyYW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzk3LDE2ICszOTcsMTYgQEAg
U3RyaW5nIFdlYkZyYW1lOjp1cmwoKSBjb25zdAogICAgIHJldHVybiBkb2N1bWVudExvYWRlci0+
dXJsKCkuc3RyaW5nKCk7CiB9CiAKLVdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyBXZWJGcmFtZTo6
Y2VydGlmaWNhdGVJbmZvKCkgY29uc3QKK0NlcnRpZmljYXRlSW5mbyBXZWJGcmFtZTo6Y2VydGlm
aWNhdGVJbmZvKCkgY29uc3QKIHsKICAgICBpZiAoIW1fY29yZUZyYW1lKQotICAgICAgICByZXR1
cm4gQ2VydGlmaWNhdGVJbmZvKCk7CisgICAgICAgIHJldHVybiB7IH07CiAKICAgICBEb2N1bWVu
dExvYWRlciogZG9jdW1lbnRMb2FkZXIgPSBtX2NvcmVGcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRM
b2FkZXIoKTsKICAgICBpZiAoIWRvY3VtZW50TG9hZGVyKQotICAgICAgICByZXR1cm4gQ2VydGlm
aWNhdGVJbmZvKCk7CisgICAgICAgIHJldHVybiB7IH07CiAKLSAgICByZXR1cm4gZG9jdW1lbnRM
b2FkZXItPnJlc3BvbnNlKCkuY2VydGlmaWNhdGVJbmZvKCk7CisgICAgcmV0dXJuIGRvY3VtZW50
TG9hZGVyLT5yZXNwb25zZSgpLmNlcnRpZmljYXRlSW5mbygpLnZhbHVlT3JDb21wdXRlKFtdIHsg
cmV0dXJuIENlcnRpZmljYXRlSW5mbygpOyB9KTsKIH0KIAogU3RyaW5nIFdlYkZyYW1lOjppbm5l
clRleHQoKSBjb25zdAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>281046</attachid>
            <date>2016-06-10 14:17:07 -0700</date>
            <delta_ts>2016-06-10 17:13:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158232-20160610141837.patch</filename>
            <type>text/plain</type>
            <size>48551</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwMTkzNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDczIEBACisyMDE2LTA2LTEwICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVkdWNlIFJl
c291cmNlUmVzcG9uc2UgY29weWluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTU4MjMyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIu
CisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiAgTm8gY2hhbmdlIGluIGJlaGF2aW9yIGV4Y2VwdCBy
ZW1vdmluZyBhbiB1bm5lY2Vzc2FyeSBjb3B5IG9uIGNvY29hIHBsYXRmb3Jtcy4KKworICAgICAg
ICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJj
ZUxvYWRlcjo6ZGlkU2VuZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6
OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmg6
CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmNyZWF0ZVJlc291cmNlSGFu
ZGxlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkUmVjZWl2
ZVJlc3BvbnNlKToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdy
b3VwLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1NZWRpYVJlc291cmNl
TG9hZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2VDbGllbnQ6
On5QbGF0Zm9ybU1lZGlhUmVzb3VyY2VDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZv
cm1NZWRpYVJlc291cmNlQ2xpZW50OjpyZXNwb25zZVJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNv
cmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZUNsaWVudDo6cmVkaXJlY3RSZWNlaXZlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2VDbGllbnQ6OnNob3VsZENhY2hlUmVz
cG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlQ2xpZW50Ojpk
YXRhU2VudCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
V2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHA6CisgICAgICAgIChSZXNvdXJj
ZUhhbmRsZVN0cmVhbWluZ0NsaWVudDo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFJlc291
cmNlSGFuZGxlU3RyZWFtaW5nQ2xpZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFuZGxlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkJsb2JSZXNvdXJjZUhhbmRsZTo6bm90aWZ5UmVzcG9uc2VPblN1Y2Nlc3MpOgorICAgICAg
ICAoV2ViQ29yZTo6QmxvYlJlc291cmNlSGFuZGxlOjpub3RpZnlSZXNwb25zZU9uRXJyb3IpOgor
ICAgICAgICAoV2ViQ29yZTo6QmxvYlJlc291cmNlSGFuZGxlOjpub3RpZnlSZWNlaXZlRGF0YSk6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9EYXRhVVJMLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmhhbmRsZURhdGFVUkwpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUGluZ0hhbmRs
ZS5oOgorICAgICAgICAoV2ViQ29yZTo6UGluZ0hhbmRsZTo6UGluZ0hhbmRsZSk6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNsaWVudDo6d2lsbFNlbmRSZXF1ZXN0QXN5bmMpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDbGllbnQ6OmRpZFJlY2VpdmVSZXNwb25zZUFz
eW5jKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50Lmg6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNsaWVudDo6ZGlkU2VuZERhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDbGllbnQ6OmRpZFJlY2VpdmVSZXNwb25z
ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNsaWVudDo6ZGlkUmVjZWl2ZURh
dGEpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6OlJlc291cmNlUmVzcG9u
c2VCYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjppbmNsdWRl
Q2VydGlmaWNhdGVJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNl
OjpzdWdnZXN0ZWRGaWxlbmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
QmFzZTo6Y2VydGlmaWNhdGVJbmZvKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlQmFzZTo6Y2VydGlmaWNhdGVJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2VCYXNlOjplbmNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZUJhc2U6OmRlY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6
Y29udGFpbnNDZXJ0aWZpY2F0ZUluZm8pOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvU3luY2hyb25vdXNMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3lu
Y2hyb25vdXNMb2FkZXJDbGllbnQ6OmNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3Bh
Y2UpOgorICAgICAgICAoV2ViQ29yZTo6U3luY2hyb25vdXNMb2FkZXJDbGllbnQ6OmRpZFJlY2Vp
dmVSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpTeW5jaHJvbm91c0xvYWRlckNsaWVudDo6
ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvU3luY2hyb25vdXNM
b2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFu
ZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVy
YXRpb25RdWV1ZTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL2NmL1N5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25u
ZWN0aW9uRGVsZWdhdGU6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpT
eW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OmRpZFJlY2Vp
dmVEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VI
YW5kbGVBc0RlbGVnYXRlLm1tOgorICAgICAgICAoLVtXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0Rl
bGVnYXRlIGNvbm5lY3Rpb246ZGlkUmVjZWl2ZVJlc3BvbnNlOl0pOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxl
Z2F0ZS5tbToKKyAgICAgICAgKC1bV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1
ZURlbGVnYXRlIGNvbm5lY3Rpb246ZGlkUmVjZWl2ZVJlc3BvbnNlOl0pOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6bmV4dE11bHRpcGFydFJlc3BvbnNlUGFydENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNv
cmU6OnNlbmRSZXF1ZXN0Q2FsbGJhY2spOgorCiAyMDE2LTA2LTEwICBZb3Vlbm4gRmFibGV0ICA8
eW91ZW5uLmZhYmxldEBjcmYuY2Fub24uZnI+CiAKICAgICAgICAgT3JpZ2luIGhlYWRlciBpcyBu
b3QgaW5jbHVkZWQgaW4gQ09SUyByZXF1ZXN0cyBmb3IgcHJlbG9hZGVkIGNyb3NzLW9yaWdpbiBy
ZXNvdXJjZXMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAko
cmV2aXNpb24gMjAxODczKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjE4LDcgKzYxOCw3IEBAIHZvaWQgUmVzb3VyY2VMb2Fk
ZXI6OmRpZFNlbmREYXRhKFJlc291cmMKICAgICBkaWRTZW5kRGF0YShieXRlc1NlbnQsIHRvdGFs
Qnl0ZXNUb0JlU2VudCk7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNw
b25zZShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQor
dm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlKiwg
UmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlKQogewogICAgIGlmIChkb2N1bWVudExvYWRlcigp
LT5hcHBsaWNhdGlvbkNhY2hlSG9zdCgpLT5tYXliZUxvYWRGYWxsYmFja0ZvclJlc3BvbnNlKHRo
aXMsIHJlc3BvbnNlKSkKICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1Jlc291cmNlTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVy
L1Jlc291cmNlTG9hZGVyLmgJKHJldmlzaW9uIDIwMTg3MykKKysrIFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9SZXNvdXJjZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xODUsNyArMTg1LDcgQEAg
cHJpdmF0ZToKICAgICAvLyBSZXNvdXJjZUhhbmRsZUNsaWVudAogICAgIFJlc291cmNlUmVxdWVz
dCB3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VIYW5kbGUqLCBSZXNvdXJjZVJlcXVlc3QmJiwgUmVz
b3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlk
U2VuZERhdGEoUmVzb3VyY2VIYW5kbGUqLCB1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1
bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KSBvdmVycmlkZTsKLSAgICB2b2lk
IGRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUhhbmRs
ZSosIFJlc291cmNlUmVzcG9uc2UmJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlRGF0
YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IGNoYXIqLCB1bnNpZ25lZCwgaW50IGVuY29kZWREYXRh
TGVuZ3RoKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5k
bGUqLCBSZWY8U2hhcmVkQnVmZmVyPiYmLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRl
OwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUhhbmRsZSosIGRvdWJsZSBmaW5p
c2hUaW1lKSBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9B
cHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCShyZXZpc2lvbiAyMDE4NzMp
CisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3Vw
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDg5LDcgKzQ4OSw3IEBAIFJlZlB0cjxSZXNvdXJjZUhh
bmRsZT4gQXBwbGljYXRpb25DYWNoZUcKICAgICByZXR1cm4gaGFuZGxlOwogfQogCi12b2lkIEFw
cGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlKiBo
YW5kbGUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQordm9pZCBBcHBsaWNhdGlv
bkNhY2hlR3JvdXA6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBS
ZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UpCiB7CiAgICAgQVNTRVJUKG1fZnJhbWUpOwogICAg
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUgPSBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OndpbGxSZWNlaXZlUmVzb3VyY2VSZXNwb25zZShtX2ZyYW1lKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNo
ZUdyb3VwLmgJKHJldmlzaW9uIDIwMTg3MykKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuaAkod29ya2luZyBjb3B5KQpAQCAtMTA4LDcgKzEw
OCw3IEBAIHByaXZhdGU6CiAgICAgLy8gdGhlIGV4aXN0aW5nIGNsaWVudCBjYWxsYmFjayBjYW5u
b3QgYmUgdXNlZCwgc28gYXNzdW1lIHRoYXQgYW55IGNsaWVudCB0aGF0IGVuYWJsZXMgYXBwbGlj
YXRpb24gY2FjaGUgYWxzbyB3YW50cyBpdCB0byB1c2UgY3JlZGVudGlhbCBzdG9yYWdlLgogICAg
IGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UoUmVzb3VyY2VIYW5kbGUqKSBvdmVycmlk
ZSB7IHJldHVybiB0cnVlOyB9CiAKLSAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJj
ZUhhbmRsZSosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKKyAgICB2b2lkIGRp
ZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSosIFJlc291cmNlUmVzcG9uc2UmJikgb3Zl
cnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IGNo
YXIqLCB1bnNpZ25lZCBsZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlSGFuZGxlKiwgZG91YmxlIGZpbmlzaFRp
bWUpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFpbChSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJl
c291cmNlRXJyb3ImKSBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1BsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlci5o
CShyZXZpc2lvbiAyMDE4NzMpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Q
bGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsOCArMjMs
NyBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFBsYXRmb3JtTWVkaWFSZXNvdXJj
ZUxvYWRlcl9oCi0jZGVmaW5lIFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlcl9oCisjcHJhZ21h
IG9uY2UKIAogI2lmIEVOQUJMRShWSURFTykKIApAQCAtOTEsNCArOTAsMyBAQCBwcm90ZWN0ZWQ6
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZgotI2VuZGlmCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVh
bWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcAkocmV2aXNpb24gMjAxODczKQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNv
dXJjZUdTdHJlYW1lci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk2LDcgKzk2LDcgQEAgY2xhc3Mg
UmVzb3VyY2VIYW5kbGVTdHJlYW1pbmdDbGllbnQgOiBwdQogICAgICAgICBjaGFyKiBnZXRPckNy
ZWF0ZVJlYWRCdWZmZXIoc2l6ZV90IHJlcXVlc3RlZFNpemUsIHNpemVfdCYgYWN0dWFsU2l6ZSkg
b3ZlcnJpZGU7CiAjZW5kaWYKICAgICAgICAgUmVzb3VyY2VSZXF1ZXN0IHdpbGxTZW5kUmVxdWVz
dChSZXNvdXJjZUhhbmRsZSosIFJlc291cmNlUmVxdWVzdCYmLCBSZXNvdXJjZVJlc3BvbnNlJiYp
IG92ZXJyaWRlOwotICAgICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUhhbmRs
ZSosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKKyAgICAgICAgdm9pZCBkaWRS
ZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqLCBSZXNvdXJjZVJlc3BvbnNlJiYpIG92ZXJy
aWRlOwogICAgICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlKiwgY29uc3Qg
Y2hhciosIHVuc2lnbmVkLCBpbnQpIG92ZXJyaWRlOwogICAgICAgICB2b2lkIGRpZFJlY2VpdmVC
dWZmZXIoUmVzb3VyY2VIYW5kbGUqLCBSZWY8U2hhcmVkQnVmZmVyPiYmLCBpbnQgZW5jb2RlZExl
bmd0aCkgb3ZlcnJpZGU7CiAgICAgICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUhh
bmRsZSosIGRvdWJsZSAvKmZpbmlzaFRpbWUqLykgb3ZlcnJpZGU7CkBAIC0xMDkwLDcgKzEwOTAs
NyBAQCBSZXNvdXJjZVJlcXVlc3QgUmVzb3VyY2VIYW5kbGVTdHJlYW1pbmdDCiAgICAgcmV0dXJu
IFdURk1vdmUocmVxdWVzdCk7CiB9CiAKLXZvaWQgUmVzb3VyY2VIYW5kbGVTdHJlYW1pbmdDbGll
bnQ6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlc3BvbnNlKQordm9pZCBSZXNvdXJjZUhhbmRsZVN0cmVhbWluZ0NsaWVudDo6ZGlk
UmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlKiwgUmVzb3VyY2VSZXNwb25zZSYmIHJlc3Bv
bnNlKQogewogICAgIGhhbmRsZVJlc3BvbnNlUmVjZWl2ZWQocmVzcG9uc2UpOwogfQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VIYW5kbGUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNl
SGFuZGxlLmNwcAkocmV2aXNpb24gMjAxODczKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9CbG9iUmVzb3VyY2VIYW5kbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Myw3ICs4
Myw3IEBAIGNsYXNzIEJsb2JSZXNvdXJjZVN5bmNocm9ub3VzTG9hZGVyIDogcHUKIHB1YmxpYzoK
ICAgICBCbG9iUmVzb3VyY2VTeW5jaHJvbm91c0xvYWRlcihSZXNvdXJjZUVycm9yJiwgUmVzb3Vy
Y2VSZXNwb25zZSYsIFZlY3RvcjxjaGFyPiYpOwogCi0gICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9u
c2UoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqLCBSZXNvdXJjZVJlc3Bv
bnNlJiYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFpbChSZXNvdXJjZUhhbmRsZSosIGNvbnN0
IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKQEAgLTk5LDcgKzk5LDcgQEAg
QmxvYlJlc291cmNlU3luY2hyb25vdXNMb2FkZXI6OkJsb2JSZXNvdQogewogfQogCi12b2lkIEJs
b2JSZXNvdXJjZVN5bmNocm9ub3VzTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VI
YW5kbGUqIGhhbmRsZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCit2b2lkIEJs
b2JSZXNvdXJjZVN5bmNocm9ub3VzTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VI
YW5kbGUqIGhhbmRsZSwgUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlKQogewogICAgIC8vIFdl
IGNhbm5vdCBoYW5kbGUgdGhlIHNpemUgdGhhdCBpcyBtb3JlIHRoYW4gbWF4aW11bSBpbnRlZ2Vy
LgogICAgIGlmIChyZXNwb25zZS5leHBlY3RlZENvbnRlbnRMZW5ndGgoKSA+IElOVF9NQVgpIHsK
QEAgLTU4Myw5ICs1ODMsOSBAQCB2b2lkIEJsb2JSZXNvdXJjZUhhbmRsZTo6bm90aWZ5UmVzcG9u
c2VPCiAgICAgLy8gSXQncyBjdXJyZW50bHkgY2xpZW50J3MgcmVzcG9uc2liaWxpdHkgdG8ga25v
dyB0aGF0IGRpZFJlY2VpdmVSZXNwb25zZUFzeW5jIGNhbm5vdCBiZSB1c2VkIHRvIGNvbnZlcnQg
YQogICAgIC8vIGxvYWQgaW50byBhIGRvd25sb2FkIG9yIGJsb2JzLgogICAgIGlmICh1c2VzQXN5
bmNDYWxsYmFja3MoKSkKLSAgICAgICAgY2xpZW50KCktPmRpZFJlY2VpdmVSZXNwb25zZUFzeW5j
KHRoaXMsIHJlc3BvbnNlKTsKKyAgICAgICAgY2xpZW50KCktPmRpZFJlY2VpdmVSZXNwb25zZUFz
eW5jKHRoaXMsIFdURk1vdmUocmVzcG9uc2UpKTsKICAgICBlbHNlCi0gICAgICAgIGNsaWVudCgp
LT5kaWRSZWNlaXZlUmVzcG9uc2UodGhpcywgcmVzcG9uc2UpOworICAgICAgICBjbGllbnQoKS0+
ZGlkUmVjZWl2ZVJlc3BvbnNlKHRoaXMsIFdURk1vdmUocmVzcG9uc2UpKTsKIH0KIAogdm9pZCBC
bG9iUmVzb3VyY2VIYW5kbGU6Om5vdGlmeVJlc3BvbnNlT25FcnJvcigpCkBAIC02MTUsOSArNjE1
LDkgQEAgdm9pZCBCbG9iUmVzb3VyY2VIYW5kbGU6Om5vdGlmeVJlc3BvbnNlTwogICAgIC8vIE5v
dGUgdGhhdCB3ZSBkb24ndCB3YWl0IGZvciBjb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSB3aGVu
IHVzaW5nIGRpZFJlY2VpdmVSZXNwb25zZUFzeW5jLgogICAgIC8vIFRoaXMgaXMgbm90IGZvcm1h
bGx5IGNvcnJlY3QsIGJ1dCB0aGUgY2xpZW50IGhhcyB0byBiZSBhIG5vLW9wIGFueXdheSwgYmVj
YXVzZSBibG9icyBjYW4ndCBiZSBkb3dubG9hZGVkLgogICAgIGlmICh1c2VzQXN5bmNDYWxsYmFj
a3MoKSkKLSAgICAgICAgY2xpZW50KCktPmRpZFJlY2VpdmVSZXNwb25zZUFzeW5jKHRoaXMsIHJl
c3BvbnNlKTsKKyAgICAgICAgY2xpZW50KCktPmRpZFJlY2VpdmVSZXNwb25zZUFzeW5jKHRoaXMs
IFdURk1vdmUocmVzcG9uc2UpKTsKICAgICBlbHNlCi0gICAgICAgIGNsaWVudCgpLT5kaWRSZWNl
aXZlUmVzcG9uc2UodGhpcywgcmVzcG9uc2UpOworICAgICAgICBjbGllbnQoKS0+ZGlkUmVjZWl2
ZVJlc3BvbnNlKHRoaXMsIFdURk1vdmUocmVzcG9uc2UpKTsKIH0KIAogdm9pZCBCbG9iUmVzb3Vy
Y2VIYW5kbGU6Om5vdGlmeVJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIGludCBieXRlc1Jl
YWQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkwuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRGF0YVVSTC5jcHAJ
KHJldmlzaW9uIDIwMTg3MykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRGF0
YVVSTC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc2LDI1ICs3NiwyMiBAQCB2b2lkIGhhbmRsZURh
dGFVUkwoUmVzb3VyY2VIYW5kbGUqIGhhbmRsCiAKICAgICBpZiAoYmFzZTY0KSB7CiAgICAgICAg
IGRhdGEgPSBkZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXMoZGF0YSk7Ci0gICAgICAgIGhhbmRsZS0+
Y2xpZW50KCktPmRpZFJlY2VpdmVSZXNwb25zZShoYW5kbGUsIHJlc3BvbnNlKTsKKyAgICAgICAg
aGFuZGxlLT5jbGllbnQoKS0+ZGlkUmVjZWl2ZVJlc3BvbnNlKGhhbmRsZSwgV1RGTW92ZShyZXNw
b25zZSkpOwogCiAgICAgICAgIC8vIGRpZFJlY2VpdmVSZXNwb25zZSBtaWdodCBjYXVzZSB0aGUg
Y2xpZW50IHRvIGJlIGRlbGV0ZWQuCiAgICAgICAgIGlmIChoYW5kbGUtPmNsaWVudCgpKSB7CiAg
ICAgICAgICAgICBWZWN0b3I8Y2hhcj4gb3V0OwotICAgICAgICAgICAgaWYgKGJhc2U2NERlY29k
ZShkYXRhLCBvdXQsIEJhc2U2NElnbm9yZVNwYWNlc0FuZE5ld0xpbmVzKSAmJiBvdXQuc2l6ZSgp
ID4gMCkgewotICAgICAgICAgICAgICAgIHJlc3BvbnNlLnNldEV4cGVjdGVkQ29udGVudExlbmd0
aChvdXQuc2l6ZSgpKTsKKyAgICAgICAgICAgIGlmIChiYXNlNjREZWNvZGUoZGF0YSwgb3V0LCBC
YXNlNjRJZ25vcmVTcGFjZXNBbmROZXdMaW5lcykgJiYgb3V0LnNpemUoKSA+IDApCiAgICAgICAg
ICAgICAgICAgaGFuZGxlLT5jbGllbnQoKS0+ZGlkUmVjZWl2ZURhdGEoaGFuZGxlLCBvdXQuZGF0
YSgpLCBvdXQuc2l6ZSgpLCAwKTsKLSAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0gZWxz
ZSB7CiAgICAgICAgIFRleHRFbmNvZGluZyBlbmNvZGluZyhjaGFyc2V0KTsKICAgICAgICAgZGF0
YSA9IGRlY29kZVVSTEVzY2FwZVNlcXVlbmNlcyhkYXRhLCBlbmNvZGluZyk7Ci0gICAgICAgIGhh
bmRsZS0+Y2xpZW50KCktPmRpZFJlY2VpdmVSZXNwb25zZShoYW5kbGUsIHJlc3BvbnNlKTsKKyAg
ICAgICAgaGFuZGxlLT5jbGllbnQoKS0+ZGlkUmVjZWl2ZVJlc3BvbnNlKGhhbmRsZSwgV1RGTW92
ZShyZXNwb25zZSkpOwogCiAgICAgICAgIC8vIGRpZFJlY2VpdmVSZXNwb25zZSBtaWdodCBjYXVz
ZSB0aGUgY2xpZW50IHRvIGJlIGRlbGV0ZWQuCiAgICAgICAgIGlmIChoYW5kbGUtPmNsaWVudCgp
KSB7CiAgICAgICAgICAgICBDU3RyaW5nIGVuY29kZWREYXRhID0gZW5jb2RpbmcuZW5jb2RlKGRh
dGEsIFVSTEVuY29kZWRFbnRpdGllc0ZvclVuZW5jb2RhYmxlcyk7Ci0gICAgICAgICAgICByZXNw
b25zZS5zZXRFeHBlY3RlZENvbnRlbnRMZW5ndGgoZW5jb2RlZERhdGEubGVuZ3RoKCkpOwogICAg
ICAgICAgICAgaWYgKGVuY29kZWREYXRhLmxlbmd0aCgpKQogICAgICAgICAgICAgICAgIGhhbmRs
ZS0+Y2xpZW50KCktPmRpZFJlY2VpdmVEYXRhKGhhbmRsZSwgZW5jb2RlZERhdGEuZGF0YSgpLCBl
bmNvZGVkRGF0YS5sZW5ndGgoKSwgMCk7CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvUGluZ0hhbmRsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvUGluZ0hhbmRsZS5oCShyZXZpc2lvbiAyMDE4NzMpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1BpbmdIYW5kbGUuaAkod29ya2luZyBjb3B5
KQpAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIHZvaWQg
ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlKiwgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYpIG92ZXJyaWRlIHsgZGVsZXRlIHRoaXM7IH0KKyAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25z
ZShSZXNvdXJjZUhhbmRsZSosIFJlc291cmNlUmVzcG9uc2UmJikgb3ZlcnJpZGUgeyBkZWxldGUg
dGhpczsgfQogICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSosIFJlZjxT
aGFyZWRCdWZmZXI+JiYsIGludCkgb3ZlcnJpZGUgeyBkZWxldGUgdGhpczsgfTsKICAgICB2b2lk
IGRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VIYW5kbGUqLCBkb3VibGUpIG92ZXJyaWRlIHsgZGVs
ZXRlIHRoaXM7IH0KICAgICB2b2lkIGRpZEZhaWwoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBSZXNv
dXJjZUVycm9yJikgb3ZlcnJpZGUgeyBkZWxldGUgdGhpczsgfQpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5j
cHAJKHJldmlzaW9uIDIwMTg3MykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
UmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MCw3ICs1MCw3IEBA
IHZvaWQgUmVzb3VyY2VIYW5kbGVDbGllbnQ6OndpbGxTZW5kUmVxdWUKICAgICBoYW5kbGUtPmNv
bnRpbnVlV2lsbFNlbmRSZXF1ZXN0KFdURk1vdmUocmVxdWVzdCkpOwogfQogCi12b2lkIFJlc291
cmNlSGFuZGxlQ2xpZW50OjpkaWRSZWNlaXZlUmVzcG9uc2VBc3luYyhSZXNvdXJjZUhhbmRsZSog
aGFuZGxlLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikKK3ZvaWQgUmVzb3VyY2VIYW5kbGVDbGll
bnQ6OmRpZFJlY2VpdmVSZXNwb25zZUFzeW5jKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIFJlc291
cmNlUmVzcG9uc2UmJikKIHsKICAgICBoYW5kbGUtPmNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNl
KCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFu
ZGxlQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9SZXNvdXJjZUhhbmRsZUNsaWVudC5oCShyZXZpc2lvbiAyMDE4NzMpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTcxLDcgKzcxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBXRUJDT1JF
X0VYUE9SVCB2aXJ0dWFsIFJlc291cmNlUmVxdWVzdCB3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VI
YW5kbGUqLCBSZXNvdXJjZVJlcXVlc3QmJiwgUmVzb3VyY2VSZXNwb25zZSYmKTsKICAgICAgICAg
dmlydHVhbCB2b2lkIGRpZFNlbmREYXRhKFJlc291cmNlSGFuZGxlKiwgdW5zaWduZWQgbG9uZyBs
b25nIC8qYnl0ZXNTZW50Ki8sIHVuc2lnbmVkIGxvbmcgbG9uZyAvKnRvdGFsQnl0ZXNUb0JlU2Vu
dCovKSB7IH0KIAotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291
cmNlSGFuZGxlKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIHsgfQorICAgICAgICB2aXJ0dWFs
IHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlKiwgUmVzb3VyY2VSZXNwb25z
ZSYmKSB7IH0KICAgICAgICAgCiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShS
ZXNvdXJjZUhhbmRsZSosIGNvbnN0IGNoYXIqLCB1bnNpZ25lZCwgaW50IC8qZW5jb2RlZERhdGFM
ZW5ndGgqLykgeyB9CiAgICAgICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBkaWRSZWNl
aXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgaW50IGVuY29k
ZWREYXRhTGVuZ3RoKTsKQEAgLTg5LDcgKzg5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgd2lsbFNlbmRSZXF1ZXN0QXN5bmMoUmVz
b3VyY2VIYW5kbGUqLCBSZXNvdXJjZVJlcXVlc3QmJiwgUmVzb3VyY2VSZXNwb25zZSYmKTsKIAog
ICAgICAgICAvLyBDbGllbnQgd2lsbCBjYWxsIFJlc291cmNlSGFuZGxlOjpjb250aW51ZURpZFJl
Y2VpdmVSZXNwb25zZSgpIHdoZW4gcmVhZHkuCi0gICAgICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1
YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2VBc3luYyhSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmKTsKKyAgICAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGRp
ZFJlY2VpdmVSZXNwb25zZUFzeW5jKFJlc291cmNlSGFuZGxlKiwgUmVzb3VyY2VSZXNwb25zZSYm
KTsKIAogI2lmIFVTRShQUk9URUNUSU9OX1NQQUNFX0FVVEhfQ0FMTEJBQ0spCiAgICAgICAgIC8v
IENsaWVudCB3aWxsIHBhc3MgYW4gdXBkYXRlZCByZXF1ZXN0IHVzaW5nIFJlc291cmNlSGFuZGxl
Ojpjb250aW51ZUNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoKSB3aGVuIHJl
YWR5LgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3Bv
bnNlQmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAJKHJldmlzaW9uIDIwMTg3MykKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00Nyw3ICs0Nyw2IEBAIGlubGluZSBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBS
ZXNvdXJjZVIKIFJlc291cmNlUmVzcG9uc2VCYXNlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZSgpCiAg
ICAgOiBtX2lzTnVsbCh0cnVlKQogICAgICwgbV9leHBlY3RlZENvbnRlbnRMZW5ndGgoMCkKLSAg
ICAsIG1faW5jbHVkZXNDZXJ0aWZpY2F0ZUluZm8oZmFsc2UpCiAgICAgLCBtX2h0dHBTdGF0dXND
b2RlKDApCiB7CiB9CkBAIC01OCw3ICs1Nyw3IEBAIFJlc291cmNlUmVzcG9uc2VCYXNlOjpSZXNv
dXJjZVJlc3BvbnNlQmEKICAgICAsIG1fbWltZVR5cGUobWltZVR5cGUpCiAgICAgLCBtX2V4cGVj
dGVkQ29udGVudExlbmd0aChleHBlY3RlZExlbmd0aCkKICAgICAsIG1fdGV4dEVuY29kaW5nTmFt
ZSh0ZXh0RW5jb2RpbmdOYW1lKQotICAgICwgbV9pbmNsdWRlc0NlcnRpZmljYXRlSW5mbyh0cnVl
KSAvLyBFbXB0eSBidXQgdmFsaWQgZm9yIHN5bnRoZXRpYyByZXNwb25zZXMuCisgICAgLCBtX2Nl
cnRpZmljYXRlSW5mbyhDZXJ0aWZpY2F0ZUluZm8oKSkgLy8gRW1wdHkgYnV0IHZhbGlkIGZvciBz
eW50aGV0aWMgcmVzcG9uc2VzLgogICAgICwgbV9odHRwU3RhdHVzQ29kZSgwKQogewogfQpAQCAt
MTg0LDE1ICsxODMsOSBAQCB2b2lkIFJlc291cmNlUmVzcG9uc2VCYXNlOjpzZXRUZXh0RW5jb2Rp
CiAKIHZvaWQgUmVzb3VyY2VSZXNwb25zZUJhc2U6OmluY2x1ZGVDZXJ0aWZpY2F0ZUluZm8oKSBj
b25zdAogewotICAgIGlmIChtX2luY2x1ZGVzQ2VydGlmaWNhdGVJbmZvKQorICAgIGlmIChtX2Nl
cnRpZmljYXRlSW5mbykKICAgICAgICAgcmV0dXJuOwogICAgIG1fY2VydGlmaWNhdGVJbmZvID0g
c3RhdGljX2Nhc3Q8Y29uc3QgUmVzb3VyY2VSZXNwb25zZSo+KHRoaXMpLT5wbGF0Zm9ybUNlcnRp
ZmljYXRlSW5mbygpOwotICAgIG1faW5jbHVkZXNDZXJ0aWZpY2F0ZUluZm8gPSB0cnVlOwotfQot
Ci1DZXJ0aWZpY2F0ZUluZm8gUmVzb3VyY2VSZXNwb25zZUJhc2U6OmNlcnRpZmljYXRlSW5mbygp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fY2VydGlmaWNhdGVJbmZvOwogfQogCiBTdHJpbmcgUmVz
b3VyY2VSZXNwb25zZUJhc2U6OnN1Z2dlc3RlZEZpbGVuYW1lKCkgY29uc3QKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VC
YXNlLmgJKHJldmlzaW9uIDIwMTg3MykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtMTE0LDggKzExNCw3
IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgc3VnZ2VzdGVkRmlsZW5hbWUo
KSBjb25zdDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaW5jbHVkZUNlcnRpZmljYXRlSW5m
bygpIGNvbnN0OwotICAgIGJvb2wgY29udGFpbnNDZXJ0aWZpY2F0ZUluZm8oKSBjb25zdCB7IHJl
dHVybiBtX2luY2x1ZGVzQ2VydGlmaWNhdGVJbmZvOyB9Ci0gICAgV0VCQ09SRV9FWFBPUlQgQ2Vy
dGlmaWNhdGVJbmZvIGNlcnRpZmljYXRlSW5mbygpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JU
IGNvbnN0IE9wdGlvbmFsPENlcnRpZmljYXRlSW5mbz4mIGNlcnRpZmljYXRlSW5mbygpIGNvbnN0
IHsgcmV0dXJuIG1fY2VydGlmaWNhdGVJbmZvOyB9OwogICAgIAogICAgIC8vIFRoZXNlIGZ1bmN0
aW9ucyByZXR1cm4gcGFyc2VkIHZhbHVlcyBvZiB0aGUgY29ycmVzcG9uZGluZyByZXNwb25zZSBo
ZWFkZXJzLgogICAgIC8vIE5hTiBtZWFucyB0aGF0IHRoZSBoZWFkZXIgd2FzIG5vdCBwcmVzZW50
IG9yIGhhZCBpbnZhbGlkIHZhbHVlLgpAQCAtMTkwLDggKzE4OSw4IEBAIHByb3RlY3RlZDoKICAg
ICBIVFRQSGVhZGVyTWFwIG1faHR0cEhlYWRlckZpZWxkczsKICAgICBtdXRhYmxlIFJlc291cmNl
TG9hZFRpbWluZyBtX3Jlc291cmNlTG9hZFRpbWluZzsKIAotICAgIG11dGFibGUgYm9vbCBtX2lu
Y2x1ZGVzQ2VydGlmaWNhdGVJbmZvOwotICAgIG11dGFibGUgQ2VydGlmaWNhdGVJbmZvIG1fY2Vy
dGlmaWNhdGVJbmZvOworI2RlZmluZSBSRVNPVVJDRV9SRVNQT05TRV9CQVNFX0NFUlRfSU5GT19P
UFRJT05BTAorICAgIG11dGFibGUgT3B0aW9uYWw8Q2VydGlmaWNhdGVJbmZvPiBtX2NlcnRpZmlj
YXRlSW5mbzsKIAogICAgIGludCBtX2h0dHBTdGF0dXNDb2RlOwogCkBAIC0yMzYsOSArMjM1LDcg
QEAgdm9pZCBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6ZW5jb2RlKEVuY29kZQogICAgIGVuY29kZXIg
PDwgbV9odHRwSGVhZGVyRmllbGRzOwogICAgIGVuY29kZXIgPDwgbV9yZXNvdXJjZUxvYWRUaW1p
bmc7CiAgICAgZW5jb2RlciA8PCBtX2h0dHBTdGF0dXNDb2RlOwotICAgIGVuY29kZXIgPDwgbV9p
bmNsdWRlc0NlcnRpZmljYXRlSW5mbzsKLSAgICBpZiAobV9pbmNsdWRlc0NlcnRpZmljYXRlSW5m
bykKLSAgICAgICAgZW5jb2RlciA8PCBtX2NlcnRpZmljYXRlSW5mbzsKKyAgICBlbmNvZGVyIDw8
IG1fY2VydGlmaWNhdGVJbmZvOwogICAgIGVuY29kZXIuZW5jb2RlRW51bShtX3NvdXJjZSk7CiAg
ICAgZW5jb2Rlci5lbmNvZGVFbnVtKG1fdHlwZSk7CiAgICAgZW5jb2RlciA8PCBtX2lzUmVkaXJl
Y3RlZDsKQEAgLTI3NCwxMiArMjcxLDggQEAgYm9vbCBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6ZGVj
b2RlKERlY29kZQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShyZXNwb25zZS5tX2h0dHBTdGF0dXNDb2RlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IGlmICghZGVjb2Rlci5kZWNvZGUocmVzcG9uc2UubV9pbmNsdWRlc0NlcnRpZmljYXRlSW5mbykp
CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXNwb25zZS5tX2NlcnRpZmljYXRlSW5mbykpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAocmVzcG9uc2UubV9pbmNsdWRlc0NlcnRpZmlj
YXRlSW5mbykgewotICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3BvbnNlLm1fY2VydGlm
aWNhdGVJbmZvKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9CiAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZUVudW0ocmVzcG9uc2UubV9zb3VyY2UpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZUVudW0ocmVzcG9uc2UubV90eXBlKSkKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU3luY2hyb25vdXNMb2FkZXJDbGllbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU3luY2hy
b25vdXNMb2FkZXJDbGllbnQuY3BwCShyZXZpc2lvbiAyMDE4NzMpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNjIsOSArNjIsOSBAQCBib29sIFN5bmNocm9ub3VzTG9hZGVyQ2xpZW50OjpjYW5B
dXRoZW50CiB9CiAjZW5kaWYKIAotdm9pZCBTeW5jaHJvbm91c0xvYWRlckNsaWVudDo6ZGlkUmVj
ZWl2ZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVz
cG9uc2UpCit2b2lkIFN5bmNocm9ub3VzTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlUmVzcG9uc2Uo
UmVzb3VyY2VIYW5kbGUqLCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UpCiB7Ci0gICAgbV9y
ZXNwb25zZSA9IHJlc3BvbnNlOworICAgIG1fcmVzcG9uc2UgPSBXVEZNb3ZlKHJlc3BvbnNlKTsK
IH0KIAogdm9pZCBTeW5jaHJvbm91c0xvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZURhdGEoUmVzb3Vy
Y2VIYW5kbGUqLCBjb25zdCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIGludCAvKmVuY29k
ZWREYXRhTGVuZ3RoKi8pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1N5
bmNocm9ub3VzTG9hZGVyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9TeW5jaHJvbm91c0xvYWRlckNsaWVudC5oCShyZXZpc2lvbiAyMDE4NzMp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1N5bmNocm9ub3VzTG9hZGVyQ2xp
ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDcgQEAgcHJpdmF0ZToKICAgICBSZXNv
dXJjZVJlcXVlc3Qgd2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlSGFuZGxlKiwgUmVzb3VyY2VSZXF1
ZXN0JiYsIFJlc291cmNlUmVzcG9uc2UmJikgb3ZlcnJpZGU7CiAgICAgYm9vbCBzaG91bGRVc2VD
cmVkZW50aWFsU3RvcmFnZShSZXNvdXJjZUhhbmRsZSopIG92ZXJyaWRlOwogICAgIHZvaWQgZGlk
UmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFJlc291cmNlSGFuZGxlKiwgY29uc3QgQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UmKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVSZXNw
b25zZShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsK
KyAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSosIFJlc291cmNlUmVz
cG9uc2UmJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRs
ZSosIGNvbnN0IGNoYXIqLCB1bnNpZ25lZCwgaW50IC8qZW5jb2RlZERhdGFMZW5ndGgqLykgb3Zl
cnJpZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlSGFuZGxlKiwgZG91Ymxl
IC8qZmluaXNoVGltZSovKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZhaWwoUmVzb3VyY2VIYW5k
bGUqLCBjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdh
dGVXaXRoT3BlcmF0aW9uUXVldWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdp
dGhPcGVyYXRpb25RdWV1ZS5jcHAJKHJldmlzaW9uIDIwMTg3MykKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0
ZVdpdGhPcGVyYXRpb25RdWV1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2MSw3ICsxNjEsNyBA
QCB2b2lkIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhCiAgICAgICAgIFVOVVNF
RF9QQVJBTShjb25uZWN0aW9uKTsKICNlbmRpZgogICAgICAgICAKLSAgICAgICAgbV9oYW5kbGUt
PmNsaWVudCgpLT5kaWRSZWNlaXZlUmVzcG9uc2VBc3luYyhtX2hhbmRsZSwgcmVzb3VyY2VSZXNw
b25zZSk7CisgICAgICAgIG1faGFuZGxlLT5jbGllbnQoKS0+ZGlkUmVjZWl2ZVJlc3BvbnNlQXN5
bmMobV9oYW5kbGUsIFdURk1vdmUocmVzb3VyY2VSZXNwb25zZSkpOwogICAgIH0pOwogICAgIGRp
c3BhdGNoX3NlbWFwaG9yZV93YWl0KG1fc2VtYXBob3JlLCBESVNQQVRDSF9USU1FX0ZPUkVWRVIp
OwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9TeW5jaHJvbm91
c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU3luY2hyb25vdXNSZXNvdXJjZUhh
bmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmNwcAkocmV2aXNpb24gMjAxODczKQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9TeW5jaHJvbm91c1Jlc291cmNlSGFuZGxl
Q0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODAsNyArMTgw
LDcgQEAgdm9pZCBTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZQogICAgIFVOVVNF
RF9QQVJBTShjb25uZWN0aW9uKTsKICNlbmRpZgogICAgIAotICAgIG1faGFuZGxlLT5jbGllbnQo
KS0+ZGlkUmVjZWl2ZVJlc3BvbnNlKG1faGFuZGxlLCByZXNvdXJjZVJlc3BvbnNlKTsKKyAgICBt
X2hhbmRsZS0+Y2xpZW50KCktPmRpZFJlY2VpdmVSZXNwb25zZShtX2hhbmRsZSwgV1RGTW92ZShy
ZXNvdXJjZVJlc3BvbnNlKSk7CiB9CiAKIHZvaWQgU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNG
VVJMQ29ubmVjdGlvbkRlbGVnYXRlOjpkaWRSZWNlaXZlRGF0YShDRkRhdGFSZWYgZGF0YSwgQ0ZJ
bmRleCBvcmlnaW5hbExlbmd0aCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGUubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxl
QXNEZWxlZ2F0ZS5tbQkocmV2aXNpb24gMjAxODczKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZS5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMTY5LDcgKzE2OSw3IEBAIC0gKHZvaWQpY29ubmVjdGlvbjooTlNVUkxDb25u
ZWN0aW9uICopY28KICAgICBVTlVTRURfUEFSQU0oY29ubmVjdGlvbik7CiAjZW5kaWYKICAgICAK
LSAgICBtX2hhbmRsZS0+Y2xpZW50KCktPmRpZFJlY2VpdmVSZXNwb25zZShtX2hhbmRsZSwgcmVz
b3VyY2VSZXNwb25zZSk7CisgICAgbV9oYW5kbGUtPmNsaWVudCgpLT5kaWRSZWNlaXZlUmVzcG9u
c2UobV9oYW5kbGUsIFdURk1vdmUocmVzb3VyY2VSZXNwb25zZSkpOwogfQogCiAjaWYgVVNFKE5F
VFdPUktfQ0ZEQVRBX0FSUkFZX0NBTExCQUNLKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVn
YXRlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFj
L1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5tbQkocmV2aXNp
b24gMjAxODczKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29y
ZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0yMTUsNyArMjE1LDcgQEAgLSAodm9pZCljb25uZWN0aW9uOihOU1VSTENvbm5lY3Rpb24g
KiljbwogI2Vsc2UKICAgICAgICAgVU5VU0VEX1BBUkFNKGNvbm5lY3Rpb24pOwogI2VuZGlmCi0g
ICAgICAgIG1faGFuZGxlLT5jbGllbnQoKS0+ZGlkUmVjZWl2ZVJlc3BvbnNlQXN5bmMobV9oYW5k
bGUsIHJlc291cmNlUmVzcG9uc2UpOworICAgICAgICBtX2hhbmRsZS0+Y2xpZW50KCktPmRpZFJl
Y2VpdmVSZXNwb25zZUFzeW5jKG1faGFuZGxlLCBXVEZNb3ZlKHJlc291cmNlUmVzcG9uc2UpKTsK
ICAgICB9KTsKIAogICAgIGRpc3BhdGNoX3NlbWFwaG9yZV93YWl0KG1fc2VtYXBob3JlLCBESVNQ
QVRDSF9USU1FX0ZPUkVWRVIpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAJKHJldmlzaW9u
IDIwMTg3MykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJj
ZUhhbmRsZVNvdXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzYsNyArMTM2LDcgQEAgcHVibGlj
OgogICAgIH0KICNlbmRpZiAvLyBTT1VQX0NIRUNLX1ZFUlNJT04oMiwgNDksIDkxKQogCi0gICAg
dm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiByZXNwb25zZSkgb3ZlcnJpZGUKKyAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShS
ZXNvdXJjZUhhbmRsZSosIFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSkgb3ZlcnJpZGUKICAg
ICB7CiAgICAgICAgIG1fcmVzcG9uc2UgPSByZXNwb25zZTsKICAgICB9CkBAIC02NTQsOSArNjU0
LDkgQEAgc3RhdGljIHZvaWQgbmV4dE11bHRpcGFydFJlc3BvbnNlUGFydENhbAogICAgIGQtPm1f
cHJldmlvdXNQb3NpdGlvbiA9IDA7CiAKICAgICBpZiAoaGFuZGxlLT5jbGllbnQoKS0+dXNlc0Fz
eW5jQ2FsbGJhY2tzKCkpCi0gICAgICAgIGhhbmRsZS0+Y2xpZW50KCktPmRpZFJlY2VpdmVSZXNw
b25zZUFzeW5jKGhhbmRsZS5nZXQoKSwgZC0+bV9yZXNwb25zZSk7CisgICAgICAgIGhhbmRsZS0+
Y2xpZW50KCktPmRpZFJlY2VpdmVSZXNwb25zZUFzeW5jKGhhbmRsZS5nZXQoKSwgUmVzb3VyY2VS
ZXNwb25zZShkLT5tX3Jlc3BvbnNlKSk7CiAgICAgZWxzZSB7Ci0gICAgICAgIGhhbmRsZS0+Y2xp
ZW50KCktPmRpZFJlY2VpdmVSZXNwb25zZShoYW5kbGUuZ2V0KCksIGQtPm1fcmVzcG9uc2UpOwor
ICAgICAgICBoYW5kbGUtPmNsaWVudCgpLT5kaWRSZWNlaXZlUmVzcG9uc2UoaGFuZGxlLmdldCgp
LCBSZXNvdXJjZVJlc3BvbnNlKGQtPm1fcmVzcG9uc2UpKTsKICAgICAgICAgY29udGludWVBZnRl
ckRpZFJlY2VpdmVSZXNwb25zZShoYW5kbGUuZ2V0KCkpOwogICAgIH0KIH0KQEAgLTcxOCw5ICs3
MTgsOSBAQCBzdGF0aWMgdm9pZCBzZW5kUmVxdWVzdENhbGxiYWNrKEdPYmplY3QqCiAgICAgICAg
IGQtPm1faW5wdXRTdHJlYW0gPSBpbnB1dFN0cmVhbTsKIAogICAgIGlmIChkLT5jbGllbnQoKS0+
dXNlc0FzeW5jQ2FsbGJhY2tzKCkpCi0gICAgICAgIGhhbmRsZS0+Y2xpZW50KCktPmRpZFJlY2Vp
dmVSZXNwb25zZUFzeW5jKGhhbmRsZS5nZXQoKSwgZC0+bV9yZXNwb25zZSk7CisgICAgICAgIGhh
bmRsZS0+Y2xpZW50KCktPmRpZFJlY2VpdmVSZXNwb25zZUFzeW5jKGhhbmRsZS5nZXQoKSwgUmVz
b3VyY2VSZXNwb25zZShkLT5tX3Jlc3BvbnNlKSk7CiAgICAgZWxzZSB7Ci0gICAgICAgIGhhbmRs
ZS0+Y2xpZW50KCktPmRpZFJlY2VpdmVSZXNwb25zZShoYW5kbGUuZ2V0KCksIGQtPm1fcmVzcG9u
c2UpOworICAgICAgICBoYW5kbGUtPmNsaWVudCgpLT5kaWRSZWNlaXZlUmVzcG9uc2UoaGFuZGxl
LmdldCgpLCBSZXNvdXJjZVJlc3BvbnNlKGQtPm1fcmVzcG9uc2UpKTsKICAgICAgICAgY29udGlu
dWVBZnRlckRpZFJlY2VpdmVSZXNwb25zZShoYW5kbGUuZ2V0KCkpOwogICAgIH0KIH0KSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cJKHJldmlzaW9uIDIwMTg5NCkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ0IEBACisyMDE2LTA2LTEwICBBbGV4IENocmlzdGVu
c2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVkdWNlIFJlc291cmNl
UmVzcG9uc2UgY29weWluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTU4MjMyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmg6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmg6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6
Y29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9h
ZDo6c2hhcmVkRGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xv
YWQ6OnNoYXJlZFdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrTG9hZDo6ZGlkUmVjZWl2ZUNoYWxsZW5nZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtMb2FkOjpkaWRSZWNlaXZlUmVzcG9uc2VOZXR3b3JrU2Vzc2lvbik6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtMb2FkOjpkaWRSZWNlaXZlUmVzcG9uc2VBc3luYyk6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrTG9hZENsaWVudC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJj
ZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6cmV0
cmlldmVDYWNoZUVudHJ5KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVy
OjphYm9ydCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVy
Lmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuaDoKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVDb2RlcnMuaDoKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0NhY2hlOjpDb2RlcjxPcHRpb25hbDxUPj46OmVuY29kZSk6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtDYWNoZTo6Q29kZXI8T3B0aW9uYWw8VD4+OjpkZWNvZGUpOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkOjp3aWxsU2VuZFJl
ZGlyZWN0ZWRSZXF1ZXN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGVTcGVjdWxhdGl2ZUxvYWQuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9O
ZXR3b3JrRGF0YVRhc2tDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNr
OjpkaWRDb21wbGV0ZVdpdGhFcnJvcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFz
azo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9O
ZXR3b3JrU2Vzc2lvbkNvY29hLm1tOgorICAgICAgICAoLVtXS05ldHdvcmtTZXNzaW9uRGVsZWdh
dGUgVVJMU2Vzc2lvbjpkYXRhVGFzazpkaWRSZWNlaXZlUmVzcG9uc2U6Y29tcGxldGlvbkhhbmRs
ZXI6XSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNw
YXRjaERpZENvbW1pdExvYWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFt
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lOjp1cmwpOgorICAgICAgICAoV2ViS2l0
OjpXZWJGcmFtZTo6Y2VydGlmaWNhdGVJbmZvKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6
OmlubmVyVGV4dCk6CisKIDIwMTYtMDYtMDkgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5z
ZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBDbGVhbiB1cCBFZGl0b3JDbGllbnQgbGlmZXRpbWUK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFz
ay5oCShyZXZpc2lvbiAyMDE4NzMpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrRGF0YVRhc2suaAkod29ya2luZyBjb3B5KQpAQCAtNzAsNyArNzAsNyBAQCBjbGFzcyBO
ZXR3b3JrRGF0YVRhc2tDbGllbnQgewogcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB3aWxsUGVy
Zm9ybUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmLCBSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIGRpZFJlY2VpdmVDaGFsbGVuZ2UoY29uc3QgV2ViQ29yZTo6QXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UmLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlcikgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2VOZXR3b3JrU2Vzc2lvbihjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlcikgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2VOZXR3b3JrU2Vzc2lvbihXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRCZWNvbWVEb3dubG9h
ZCgpID0gMDsKQEAgLTEwMCw3ICsxMDAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRTZW5kRGF0
YSh1aW50NjRfdCB0b3RhbEJ5dGVzU2VudCwgdWludDY0X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9T
ZW5kKTsKICAgICB2b2lkIGRpZFJlY2VpdmVDaGFsbGVuZ2UoY29uc3QgV2ViQ29yZTo6QXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UmLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlcik7CiAgICAgdm9p
ZCBkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7Ci0g
ICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIpOworICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3Bv
bnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxl
cik7CiAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYm
KTsKICAgICB2b2lkIGRpZEJlY29tZURvd25sb2FkKCk7CiAgICAgCkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCShyZXZpc2lvbiAyMDE4NzMp
CisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE1MywxNCArMTUzLDEzIEBAIHZvaWQgTmV0d29ya0xvYWQ6OmNvbnRpbnVl
RGlkUmVjZWl2ZVJlc3AKICAgICAgICAgbV9oYW5kbGUtPmNvbnRpbnVlRGlkUmVjZWl2ZVJlc3Bv
bnNlKCk7CiB9CiAKLU5ldHdvcmtMb2FkQ2xpZW50OjpTaG91bGRDb250aW51ZURpZFJlY2VpdmVS
ZXNwb25zZSBOZXR3b3JrTG9hZDo6c2hhcmVkRGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmIHJlY2VpdmVkUmVzcG9uc2UpCitOZXR3b3JrTG9hZENsaWVudDo6U2hvdWxk
Q29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UgTmV0d29ya0xvYWQ6OnNoYXJlZERpZFJlY2VpdmVS
ZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UpCiB7Ci0gICAgUmVzb3VyY2VSZXNw
b25zZSByZXNwb25zZSA9IHJlY2VpdmVkUmVzcG9uc2U7CiAgICAgcmVzcG9uc2Uuc2V0U291cmNl
KFJlc291cmNlUmVzcG9uc2U6OlNvdXJjZTo6TmV0d29yayk7CiAgICAgaWYgKG1fcGFyYW1ldGVy
cy5uZWVkc0NlcnRpZmljYXRlSW5mbykKICAgICAgICAgcmVzcG9uc2UuaW5jbHVkZUNlcnRpZmlj
YXRlSW5mbygpOwogCi0gICAgcmV0dXJuIG1fY2xpZW50LmRpZFJlY2VpdmVSZXNwb25zZShyZXNw
b25zZSk7CisgICAgcmV0dXJuIG1fY2xpZW50LmRpZFJlY2VpdmVSZXNwb25zZShXVEZNb3ZlKHJl
c3BvbnNlKSk7CiB9CiAKIHZvaWQgTmV0d29ya0xvYWQ6OnNoYXJlZFdpbGxTZW5kUmVkaXJlY3Rl
ZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgUmVzb3VyY2VSZXNwb25zZSYmIHJl
ZGlyZWN0UmVzcG9uc2UpCkBAIC0yMzksMTIgKzIzOCwxMiBAQCB2b2lkIE5ldHdvcmtMb2FkOjpk
aWRSZWNlaXZlQ2hhbGxlbmdlKGNvCiAgICAgICAgIG1fY2xpZW50LmNhbkF1dGhlbnRpY2F0ZUFn
YWluc3RQcm90ZWN0aW9uU3BhY2VBc3luYyhjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlKCkpOwog
fQogCi12b2lkIE5ldHdvcmtMb2FkOjpkaWRSZWNlaXZlUmVzcG9uc2VOZXR3b3JrU2Vzc2lvbihj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxl
ciBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVSZXNwb25z
ZU5ldHdvcmtTZXNzaW9uKFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgUmVzcG9uc2VDb21w
bGV0aW9uSGFuZGxlciBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOwogICAgIGlmIChtX3Rhc2sgJiYgbV90YXNrLT5wZW5kaW5nRG93bmxvYWRJRCgpLmRv
d25sb2FkSUQoKSkKICAgICAgICAgTmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRvbigpLmZpbmRQZW5k
aW5nRG93bmxvYWRMb2NhdGlvbigqbV90YXNrLmdldCgpLCBjb21wbGV0aW9uSGFuZGxlciwgbV90
YXNrLT5jdXJyZW50UmVxdWVzdCgpKTsKLSAgICBlbHNlIGlmIChzaGFyZWREaWRSZWNlaXZlUmVz
cG9uc2UocmVzcG9uc2UpID09IE5ldHdvcmtMb2FkQ2xpZW50OjpTaG91bGRDb250aW51ZURpZFJl
Y2VpdmVSZXNwb25zZTo6WWVzKQorICAgIGVsc2UgaWYgKHNoYXJlZERpZFJlY2VpdmVSZXNwb25z
ZShXVEZNb3ZlKHJlc3BvbnNlKSkgPT0gTmV0d29ya0xvYWRDbGllbnQ6OlNob3VsZENvbnRpbnVl
RGlkUmVjZWl2ZVJlc3BvbnNlOjpZZXMpCiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFBvbGlj
eVVzZSk7CiAgICAgZWxzZQogICAgICAgICBtX3Jlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIgPSBj
b21wbGV0aW9uSGFuZGxlcjsKQEAgLTI4NywxMCArMjg2LDEwIEBAIHZvaWQgTmV0d29ya0xvYWQ6
OmNhbm5vdFNob3dVUkwoKQogICAgIAogI2VuZGlmCiAKLXZvaWQgTmV0d29ya0xvYWQ6OmRpZFJl
Y2VpdmVSZXNwb25zZUFzeW5jKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIHJlY2VpdmVkUmVzcG9uc2UpCit2b2lkIE5ldHdvcmtMb2FkOjpkaWRSZWNlaXZl
UmVzcG9uc2VBc3luYyhSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBSZXNvdXJjZVJlc3BvbnNlJiYg
cmVjZWl2ZWRSZXNwb25zZSkKIHsKICAgICBBU1NFUlRfVU5VU0VEKGhhbmRsZSwgaGFuZGxlID09
IG1faGFuZGxlKTsKLSAgICBpZiAoc2hhcmVkRGlkUmVjZWl2ZVJlc3BvbnNlKHJlY2VpdmVkUmVz
cG9uc2UpID09IE5ldHdvcmtMb2FkQ2xpZW50OjpTaG91bGRDb250aW51ZURpZFJlY2VpdmVSZXNw
b25zZTo6WWVzKQorICAgIGlmIChzaGFyZWREaWRSZWNlaXZlUmVzcG9uc2UoV1RGTW92ZShyZWNl
aXZlZFJlc3BvbnNlKSkgPT0gTmV0d29ya0xvYWRDbGllbnQ6OlNob3VsZENvbnRpbnVlRGlkUmVj
ZWl2ZVJlc3BvbnNlOjpZZXMpCiAgICAgICAgIG1faGFuZGxlLT5jb250aW51ZURpZFJlY2VpdmVS
ZXNwb25zZSgpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrTG9hZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05l
dHdvcmtMb2FkLmgJKHJldmlzaW9uIDIwMTg3MykKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtMb2FkLmgJKHdvcmtpbmcgY29weSkKQEAgLTY3LDcgKzY3LDcgQEAgcHVi
bGljOgogICAgIC8vIE5ldHdvcmtEYXRhVGFza0NsaWVudAogICAgIHZvaWQgd2lsbFBlcmZvcm1I
VFRQUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmJiwgUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlcikgZmluYWw7CiAgICAgdm9p
ZCBkaWRSZWNlaXZlQ2hhbGxlbmdlKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlJiwgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXIpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVj
ZWl2ZVJlc3BvbnNlTmV0d29ya1Nlc3Npb24oY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2
ZVJlc3BvbnNlTmV0d29ya1Nlc3Npb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZXNw
b25zZUNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJl
ZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwogICAgIHZvaWQgZGlkQ29tcGxldGVX
aXRoRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIGZpbmFsOwogICAgIHZvaWQg
ZGlkQmVjb21lRG93bmxvYWQoKSBmaW5hbDsKQEAgLTc4LDcgKzc4LDcgQEAgcHVibGljOgogICAg
IC8vIFJlc291cmNlSGFuZGxlQ2xpZW50CiAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3RBc3luYyhX
ZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSkgb3ZlcnJpZGU7CiAgICAg
dm9pZCBkaWRTZW5kRGF0YShXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIHVuc2lnbmVkIGxvbmcg
bG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpIG92
ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlQXN5bmMoV2ViQ29yZTo6UmVzb3Vy
Y2VIYW5kbGUqLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2VBc3luYyhXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSos
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNl
aXZlRGF0YShXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIGNvbnN0IGNoYXIqLCB1bnNpZ25lZCwg
aW50IGVuY29kZWREYXRhTGVuZ3RoKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVCdWZm
ZXIoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYm
LCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRG
aW5pc2hMb2FkaW5nKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwgZG91YmxlIGZpbmlzaFRpbWUp
IG92ZXJyaWRlOwpAQCAtMTE2LDcgKzExNiw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiBwcml2YXRl
OgotICAgIE5ldHdvcmtMb2FkQ2xpZW50OjpTaG91bGRDb250aW51ZURpZFJlY2VpdmVSZXNwb25z
ZSBzaGFyZWREaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYpOworICAgIE5ldHdvcmtMb2FkQ2xpZW50OjpTaG91bGRDb250aW51ZURpZFJlY2VpdmVSZXNw
b25zZSBzaGFyZWREaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYm
KTsKICAgICB2b2lkIHNoYXJlZFdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJik7CiAKICAgICBOZXR3
b3JrTG9hZENsaWVudCYgbV9jbGllbnQ7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrTG9hZENsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2xpZW50LmgJKHJldmlzaW9uIDIwMTg3MykKKysrIFNv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2xpZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTIzLDggKzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KICAqLwogCi0jaWZuZGVmIE5ldHdvcmtMb2FkQ2xpZW50X2gKLSNkZWZpbmUgTmV0d29ya0xv
YWRDbGllbnRfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlRXJy
b3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgpAQCAtNTIsNyArNTEs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90
ZWN0aW9uU3BhY2VBc3luYyhjb25zdCBXZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2UmKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIHdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlZGlyZWN0UmVxdWVzdCwg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UpID0gMDsKICAgICBl
bnVtIGNsYXNzIFNob3VsZENvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlIHsgTm8sIFllcyB9Owot
ICAgIHZpcnR1YWwgU2hvdWxkQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UgZGlkUmVjZWl2ZVJl
c3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKSA9IDA7CisgICAgdmlydHVh
bCBTaG91bGRDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSBkaWRSZWNlaXZlUmVzcG9uc2UoV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2Vp
dmVCdWZmZXIoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2Rl
ZERhdGFMZW5ndGgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZyhkb3Vi
bGUgZmluaXNoVGltZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsTG9hZGluZyhjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgPSAwOwpAQCAtNjIsNiArNjEsMyBAQCBwdWJsaWM6
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIE5ldHdvcmtMb2FkQ2xp
ZW50X2gKLQpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291
cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiAyMDE4NzMpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNzgsNyArMTc4LDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnJl
dHJpZXZlQ2FjaAogICAgICAgICAgICAgbG9hZGVyLT5kaXNwYXRjaFdpbGxTZW5kUmVxdWVzdEZv
ckNhY2hlRW50cnkoV1RGTW92ZShlbnRyeSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9Ci0gICAgICAgIGlmIChsb2FkZXItPm1fcGFyYW1ldGVycy5uZWVkc0NlcnRpZmljYXRlSW5m
byAmJiAhZW50cnktPnJlc3BvbnNlKCkuY29udGFpbnNDZXJ0aWZpY2F0ZUluZm8oKSkgeworICAg
ICAgICBpZiAobG9hZGVyLT5tX3BhcmFtZXRlcnMubmVlZHNDZXJ0aWZpY2F0ZUluZm8gJiYgIWVu
dHJ5LT5yZXNwb25zZSgpLmNlcnRpZmljYXRlSW5mbygpKSB7CiAgICAgICAgICAgICBsb2FkZXIt
PnN0YXJ0TmV0d29ya0xvYWQocmVxdWVzdCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KQEAgLTI3NCw3ICsyNzQsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6YWJvcnQo
KQogICAgIGNsZWFudXAoKTsKIH0KIAotYXV0byBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJl
Y2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWNlaXZlZFJlc3BvbnNlKSAt
PiBTaG91bGRDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZQorYXV0byBOZXR3b3JrUmVzb3VyY2VM
b2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVjZWl2ZWRSZXNw
b25zZSkgLT4gU2hvdWxkQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UKIHsKICAgICBORVRXT1JL
UkVTT1VSQ0VMT0FERVJfTE9HX0FMV0FZUygiUmVjZWl2ZWQgbmV0d29yayByZXNvdXJjZSByZXNw
b25zZTogbG9hZGVyID0gJXAsIHBhZ2VJRCA9ICVsbHUsIGZyYW1lSUQgPSAlbGx1LCBpc01haW5S
ZXNvdXJjZSA9ICVkLCBpc1N5bmNocm9ub3VzID0gJWQsIGh0dHBTdGF0dXNDb2RlID0gJWQiLCB0
aGlzLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgaXNN
YWluUmVzb3VyY2UoKSwgaXNTeW5jaHJvbm91cygpLCByZWNlaXZlZFJlc3BvbnNlLmh0dHBTdGF0
dXNDb2RlKCkpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UmVzb3VyY2VMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAkocmV2aXNpb24gMjAxODczKQorKysgU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTg4LDcgKzg4LDcgQEAgcHVibGljOgogICAgIHZvaWQgY2FuQXV0aGVudGljYXRl
QWdhaW5zdFByb3RlY3Rpb25TcGFjZUFzeW5jKGNvbnN0IFdlYkNvcmU6OlByb3RlY3Rpb25TcGFj
ZSYpIG92ZXJyaWRlOwogICAgIGJvb2wgaXNTeW5jaHJvbm91cygpIGNvbnN0IG92ZXJyaWRlOwog
ICAgIHZvaWQgd2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiYpIG92ZXJyaWRlOwotICAgIFNob3VsZENvbnRpbnVlRGlkUmVj
ZWl2ZVJlc3BvbnNlIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJikgb3ZlcnJpZGU7CisgICAgU2hvdWxkQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2Ug
ZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJikgb3ZlcnJpZGU7
CiAgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYs
IGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZp
bmlzaExvYWRpbmcoZG91YmxlIGZpbmlzaFRpbWUpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFp
bExvYWRpbmcoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwpJbmRleDog
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5oCShyZXZpc2lvbiAyMDE4NzMp
CisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5oCSh3b3JraW5nIGNv
cHkpCkBAIC01OCw3ICs1OCw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb246OkNhbmNlbCwgeyB9KTsKICAgICAg
ICAgZGVsZXRlIHRoaXM7CiAgICAgfQotICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlTmV0d29y
a1Nlc3Npb24oY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIFJlc3BvbnNlQ29tcGxl
dGlvbkhhbmRsZXIgY29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlCisgICAgdm9pZCBkaWRSZWNl
aXZlUmVzcG9uc2VOZXR3b3JrU2Vzc2lvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJl
c3BvbnNlQ29tcGxldGlvbkhhbmRsZXIgY29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlCiAgICAg
ewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXZWJDb3JlOjpQb2xpY3lBY3Rpb246OlBvbGlj
eUlnbm9yZSk7CiAgICAgICAgIGRlbGV0ZSB0aGlzOwpJbmRleDogU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuaAko
cmV2aXNpb24gMjAxODczKQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRG93bmxv
YWRzL1BlbmRpbmdEb3dubG9hZC5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSw3ICs1NSw3IEBAIHBy
aXZhdGU6ICAgIAogICAgIHZvaWQgY2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFj
ZUFzeW5jKGNvbnN0IFdlYkNvcmU6OlByb3RlY3Rpb25TcGFjZSYpIG92ZXJyaWRlOwogICAgIGJv
b2wgaXNTeW5jaHJvbm91cygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAg
dm9pZCB3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYm
LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlKSBvdmVycmlkZTsKLSAgICBTaG91bGRD
b250aW51ZURpZFJlY2VpdmVSZXNwb25zZSBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlIHsgcmV0dXJuIFNob3VsZENvbnRpbnVlRGlk
UmVjZWl2ZVJlc3BvbnNlOjpObzsgfTsKKyAgICBTaG91bGRDb250aW51ZURpZFJlY2VpdmVSZXNw
b25zZSBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmKSBvdmVy
cmlkZSB7IHJldHVybiBTaG91bGRDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZTo6Tm87IH07CiAg
ICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGlu
dCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSBvdmVycmlkZSB7IH07CiAgICAgdm9pZCBkaWRG
aW5pc2hMb2FkaW5nKGRvdWJsZSBmaW5pc2hUaW1lKSBvdmVycmlkZSB7IH07CiAgICAgdm9pZCBk
aWRGYWlsTG9hZGluZyhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVDb2Rl
cnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVDb2RlcnMuaAkocmV2aXNpb24gMjAxODczKQorKysgU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlQ29kZXJzLmgJKHdvcmtpbmcgY29weSkK
QEAgLTIzLDggKzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAq
LwogCi0jaWZuZGVmIE5ldHdvcmtDYWNoZUNvZGVyc19oCi0jZGVmaW5lIE5ldHdvcmtDYWNoZUNv
ZGVyc19oCisjcHJhZ21hIG9uY2UKIAogI2lmIEVOQUJMRShORVRXT1JLX0NBQ0hFKQogCkBAIC04
MSw2ICs4MCwzOCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBSZXAsIHR5cGVuYW1lIFBlcmlvZD4gCiAg
ICAgfQogfTsKIAordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IENvZGVyPE9wdGlvbmFsPFQ+
PiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IE9wdGlv
bmFsPFQ+JiBvcHRpb25hbCkKKyAgICB7CisgICAgICAgIGlmICghb3B0aW9uYWwpIHsKKyAgICAg
ICAgICAgIGVuY29kZXIgPDwgZmFsc2U7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KyAgICAgICAgCisgICAgICAgIGVuY29kZXIgPDwgdHJ1ZTsKKyAgICAgICAgZW5jb2RlciA8PCBv
cHRpb25hbC52YWx1ZSgpOworICAgIH0KKyAgICAKKyAgICBzdGF0aWMgYm9vbCBkZWNvZGUoRGVj
b2RlciYgZGVjb2RlciwgT3B0aW9uYWw8VD4mIG9wdGlvbmFsKQorICAgIHsKKyAgICAgICAgYm9v
bCBpc0VuZ2FnZWQ7CisgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaXNFbmdhZ2VkKSkKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgCisgICAgICAgIGlmICghaXNFbmdhZ2Vk
KSB7CisgICAgICAgICAgICBvcHRpb25hbCA9IE51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgVCB2YWx1ZTsKKyAgICAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZSh2YWx1ZSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIAorICAgICAgICBvcHRpb25hbCA9IFdURk1vdmUodmFsdWUpOworICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICB9Cit9OworCiB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXlUeXBlLCB0eXBlbmFtZSBW
YWx1ZVR5cGU+IHN0cnVjdCBDb2RlcjxXVEY6OktleVZhbHVlUGFpcjxLZXlUeXBlLCBWYWx1ZVR5
cGU+PiB7CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFdU
Rjo6S2V5VmFsdWVQYWlyPEtleVR5cGUsIFZhbHVlVHlwZT4mIHBhaXIpCiAgICAgewpAQCAtMjY3
LDQgKzI5OCwzIEBAIHRlbXBsYXRlPD4gc3RydWN0IENvZGVyPFdlYkNvcmU6OkhUVFBIZWEKIH0K
IH0KICNlbmRpZgotI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9h
ZC5jcHAJKHJldmlzaW9uIDIwMTg3MykKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTcwLDcgKzcwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUxvYWQ6OndpbGxTZW5kUmVkaXJlY3RlZAog
ICAgIGFib3J0KCk7CiB9CiAKLWF1dG8gU3BlY3VsYXRpdmVMb2FkOjpkaWRSZWNlaXZlUmVzcG9u
c2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVjZWl2ZWRSZXNwb25zZSkgLT4gU2hvdWxkQ29u
dGludWVEaWRSZWNlaXZlUmVzcG9uc2UKK2F1dG8gU3BlY3VsYXRpdmVMb2FkOjpkaWRSZWNlaXZl
UmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlY2VpdmVkUmVzcG9uc2UpIC0+IFNob3VsZENv
bnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlCiB7CiAgICAgbV9yZXNwb25zZSA9IHJlY2VpdmVkUmVz
cG9uc2U7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oCShyZXZpc2lv
biAyMDE4NzMpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGVTcGVjdWxhdGl2ZUxvYWQuaAkod29ya2luZyBjb3B5KQpAQCAtNTcsNyArNTcsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgY2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZUFz
eW5jKGNvbnN0IFdlYkNvcmU6OlByb3RlY3Rpb25TcGFjZSYpIG92ZXJyaWRlIHsgfQogICAgIGJv
b2wgaXNTeW5jaHJvbm91cygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAg
dm9pZCB3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYm
LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlKSBvdmVycmlkZTsKLSAgICBTaG91bGRD
b250aW51ZURpZFJlY2VpdmVSZXNwb25zZSBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOworICAgIFNob3VsZENvbnRpbnVlRGlkUmVj
ZWl2ZVJlc3BvbnNlIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGRvdWJsZSBmaW5pc2hUaW1lKSBvdmVycmlkZTsKICAg
ICB2b2lkIGRpZEZhaWxMb2FkaW5nKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBvdmVy
cmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtE
YXRhVGFza0NvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9j
ZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCShyZXZpc2lvbiAyMDE4NzMpCisrKyBT
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5t
bQkod29ya2luZyBjb3B5KQpAQCAtMTY1LDEwICsxNjUsMTAgQEAgdm9pZCBOZXR3b3JrRGF0YVRh
c2s6OmRpZENvbXBsZXRlV2l0aEVycgogICAgICAgICBtX2NsaWVudC0+ZGlkQ29tcGxldGVXaXRo
RXJyb3IoZXJyb3IpOwogfQogCi12b2lkIE5ldHdvcmtEYXRhVGFzazo6ZGlkUmVjZWl2ZVJlc3Bv
bnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZXNwb25zZUNv
bXBsZXRpb25IYW5kbGVyIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3JrRGF0YVRhc2s6
OmRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2Us
IFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYg
KG1fY2xpZW50KQotICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZVJlc3BvbnNlTmV0d29ya1Nl
c3Npb24ocmVzcG9uc2UsIGNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICAgICAgbV9jbGllbnQtPmRp
ZFJlY2VpdmVSZXNwb25zZU5ldHdvcmtTZXNzaW9uKFdURk1vdmUocmVzcG9uc2UpLCBjb21wbGV0
aW9uSGFuZGxlcik7CiAgICAgZWxzZSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXZWJDb3JlOjpQb2xpY3lBY3Rpb246OlBvbGljeUln
bm9yZSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3Jr
U2Vzc2lvbkNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9j
ZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0JKHJldmlzaW9uIDIwMTg3MykKKysrIFNv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0J
KHdvcmtpbmcgY29weSkKQEAgLTI0Nyw3ICsyNDcsNyBAQCAtICh2b2lkKVVSTFNlc3Npb246KE5T
VVJMU2Vzc2lvbiAqKXNlc3NpCiAgICAgICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVz
b3VyY2VSZXNwb25zZShyZXNwb25zZSk7CiAgICAgICAgIGNvcHlUaW1pbmdEYXRhKFtkYXRhVGFz
ayBfdGltaW5nRGF0YV0sIHJlc291cmNlUmVzcG9uc2UucmVzb3VyY2VMb2FkVGltaW5nKCkpOwog
ICAgICAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyQ29weSA9IEJsb2NrX2NvcHkoY29tcGxldGlv
bkhhbmRsZXIpOwotICAgICAgICBuZXR3b3JrRGF0YVRhc2stPmRpZFJlY2VpdmVSZXNwb25zZShy
ZXNvdXJjZVJlc3BvbnNlLCBbY29tcGxldGlvbkhhbmRsZXJDb3B5LCB0YXNrSWRlbnRpZmllcl0o
V2ViQ29yZTo6UG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbikgeworICAgICAgICBuZXR3b3JrRGF0
YVRhc2stPmRpZFJlY2VpdmVSZXNwb25zZShXVEZNb3ZlKHJlc291cmNlUmVzcG9uc2UpLCBbY29t
cGxldGlvbkhhbmRsZXJDb3B5LCB0YXNrSWRlbnRpZmllcl0oV2ViQ29yZTo6UG9saWN5QWN0aW9u
IHBvbGljeUFjdGlvbikgewogICAgICAgICAgICAgTE9HKE5ldHdvcmtTZXNzaW9uLCAiJWxsdSBk
aWRSZWNlaXZlUmVzcG9uc2UgY29tcGxldGlvbkhhbmRsZXIgKGNhbmNlbCkiLCB0YXNrSWRlbnRp
Zmllcik7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlckNvcHkodG9OU1VSTFNlc3Npb25S
ZXNwb25zZURpc3Bvc2l0aW9uKHBvbGljeUFjdGlvbikpOwogICAgICAgICAgICAgQmxvY2tfcmVs
ZWFzZShjb21wbGV0aW9uSGFuZGxlckNvcHkpOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5jcHAJKHJldmlzaW9uIDIwMTg3MykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00NjgsNyArNDY4LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hE
aWRDbwogCiAgICAgLy8gTm90aWZ5IHRoZSBVSVByb2Nlc3MuCiAKLSAgICB3ZWJQYWdlLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZENvbW1pdExvYWRGb3JGcmFtZShtX2ZyYW1lLT5m
cmFtZUlEKCksIGRvY3VtZW50TG9hZGVyLm5hdmlnYXRpb25JRCgpLCBkb2N1bWVudExvYWRlci5y
ZXNwb25zZSgpLm1pbWVUeXBlKCksIG1fZnJhbWVIYXNDdXN0b21Db250ZW50UHJvdmlkZXIsIHN0
YXRpY19jYXN0PHVpbnQzMl90PihtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+bG9hZGVyKCkubG9hZFR5
cGUoKSksIGRvY3VtZW50TG9hZGVyLnJlc3BvbnNlKCkuY2VydGlmaWNhdGVJbmZvKCksIG1fZnJh
bWUtPmNvcmVGcmFtZSgpLT5kb2N1bWVudCgpLT5pc1BsdWdpbkRvY3VtZW50KCksIFVzZXJEYXRh
KFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXModXNlckRh
dGEuZ2V0KCkpLmdldCgpKSkpOworICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6RGlkQ29tbWl0TG9hZEZvckZyYW1lKG1fZnJhbWUtPmZyYW1lSUQoKSwgZG9jdW1lbnRM
b2FkZXIubmF2aWdhdGlvbklEKCksIGRvY3VtZW50TG9hZGVyLnJlc3BvbnNlKCkubWltZVR5cGUo
KSwgbV9mcmFtZUhhc0N1c3RvbUNvbnRlbnRQcm92aWRlciwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+
KG1fZnJhbWUtPmNvcmVGcmFtZSgpLT5sb2FkZXIoKS5sb2FkVHlwZSgpKSwgZG9jdW1lbnRMb2Fk
ZXIucmVzcG9uc2UoKS5jZXJ0aWZpY2F0ZUluZm8oKS52YWx1ZU9yQ29tcHV0ZShbXSB7IHJldHVy
biBDZXJ0aWZpY2F0ZUluZm8oKTsgfSksIG1fZnJhbWUtPmNvcmVGcmFtZSgpLT5kb2N1bWVudCgp
LT5pc1BsdWdpbkRvY3VtZW50KCksIFVzZXJEYXRhKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnRy
YW5zZm9ybU9iamVjdHNUb0hhbmRsZXModXNlckRhdGEuZ2V0KCkpLmdldCgpKSkpOwogICAgIHdl
YlBhZ2UtPmRpZENvbW1pdExvYWQobV9mcmFtZSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAkocmV2aXNpb24gMjAxODczKQor
KysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzk3LDE2ICszOTcsMTYgQEAgU3RyaW5nIFdlYkZyYW1lOjp1cmwoKSBjb25z
dAogICAgIHJldHVybiBkb2N1bWVudExvYWRlci0+dXJsKCkuc3RyaW5nKCk7CiB9CiAKLVdlYkNv
cmU6OkNlcnRpZmljYXRlSW5mbyBXZWJGcmFtZTo6Y2VydGlmaWNhdGVJbmZvKCkgY29uc3QKK0Nl
cnRpZmljYXRlSW5mbyBXZWJGcmFtZTo6Y2VydGlmaWNhdGVJbmZvKCkgY29uc3QKIHsKICAgICBp
ZiAoIW1fY29yZUZyYW1lKQotICAgICAgICByZXR1cm4gQ2VydGlmaWNhdGVJbmZvKCk7CisgICAg
ICAgIHJldHVybiB7IH07CiAKICAgICBEb2N1bWVudExvYWRlciogZG9jdW1lbnRMb2FkZXIgPSBt
X2NvcmVGcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKTsKICAgICBpZiAoIWRvY3VtZW50
TG9hZGVyKQotICAgICAgICByZXR1cm4gQ2VydGlmaWNhdGVJbmZvKCk7CisgICAgICAgIHJldHVy
biB7IH07CiAKLSAgICByZXR1cm4gZG9jdW1lbnRMb2FkZXItPnJlc3BvbnNlKCkuY2VydGlmaWNh
dGVJbmZvKCk7CisgICAgcmV0dXJuIGRvY3VtZW50TG9hZGVyLT5yZXNwb25zZSgpLmNlcnRpZmlj
YXRlSW5mbygpLnZhbHVlT3JDb21wdXRlKFtdIHsgcmV0dXJuIENlcnRpZmljYXRlSW5mbygpOyB9
KTsKIH0KIAogU3RyaW5nIFdlYkZyYW1lOjppbm5lclRleHQoKSBjb25zdAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>