<?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>163263</bug_id>
          
          <creation_ts>2016-10-10 19:14:56 -0700</creation_ts>
          <short_desc>Remove dead networking code</short_desc>
          <delta_ts>2016-10-11 11:23:22 -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>commit-queue</cc>
    
    <cc>dbates</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1238684</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-10-10 19:14:56 -0700</bug_when>
    <thetext>Remove dead networking code</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1238686</commentid>
    <comment_count>1</comment_count>
      <attachid>291209</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-10-10 19:20:26 -0700</bug_when>
    <thetext>Created attachment 291209
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1238687</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-10 19:22:42 -0700</bug_when>
    <thetext>Attachment 291209 did not pass style-queue:


ERROR: Source/WebCore/ChangeLog:8:  You should remove the &apos;No new tests&apos; and either add and list tests, or explain why no new tests were possible.  [changelog/nonewtests] [5]
Total errors found: 1 in 88 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>1238688</commentid>
    <comment_count>3</comment_count>
      <attachid>291210</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-10-10 19:24:09 -0700</bug_when>
    <thetext>Created attachment 291210
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1238694</commentid>
    <comment_count>4</comment_count>
      <attachid>291213</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-10-10 19:34:10 -0700</bug_when>
    <thetext>Created attachment 291213
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1238718</commentid>
    <comment_count>5</comment_count>
      <attachid>291224</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-10-10 21:10:57 -0700</bug_when>
    <thetext>Created attachment 291224
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1238722</commentid>
    <comment_count>6</comment_count>
      <attachid>291227</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-10-10 21:26:22 -0700</bug_when>
    <thetext>Created attachment 291227
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1238723</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-10 21:27:55 -0700</bug_when>
    <thetext>Attachment 291227 did not pass style-queue:


ERROR: Source/WebCore/WebCorePrefix.h:0:  Use #pragma once header guard.  [build/header_guard] [5]
ERROR: Source/WebCore/testing/js/WebCoreTestSupportPrefix.h:0:  Use #pragma once header guard.  [build/header_guard] [5]
Total errors found: 2 in 88 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>1238742</commentid>
    <comment_count>8</comment_count>
      <attachid>291232</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-10-10 22:52:15 -0700</bug_when>
    <thetext>Created attachment 291232
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1238743</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-10 22:53:38 -0700</bug_when>
    <thetext>Attachment 291232 did not pass style-queue:


ERROR: Source/WebCore/WebCorePrefix.h:0:  Use #pragma once header guard.  [build/header_guard] [5]
ERROR: Source/WebCore/testing/js/WebCoreTestSupportPrefix.h:0:  Use #pragma once header guard.  [build/header_guard] [5]
Total errors found: 2 in 88 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>1238772</commentid>
    <comment_count>10</comment_count>
      <attachid>291232</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-10-10 23:53:04 -0700</bug_when>
    <thetext>Comment on attachment 291232
Patch

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

&gt; Source/WebCore/loader/EmptyClients.h:406
&gt; -#if PLATFORM(WIN) &amp;&amp; USE(CFNETWORK)
&gt; +#if PLATFORM(WIN) &amp;&amp; USE(CFURLCONNECTION)

Do we need to mention PLATFORM(WIN) here at all now?

&gt; Source/WebCore/loader/FrameLoaderClient.h:300
&gt; -#if PLATFORM(WIN) &amp;&amp; USE(CFNETWORK)
&gt; +#if PLATFORM(WIN) &amp;&amp; USE(CFURLCONNECTION)

Do we need to mention PLATFORM(WIN) here at all now?

&gt; Source/WebCore/loader/ResourceLoader.cpp:-723
&gt;      // Only these platforms provide a way to continue without credentials.
&gt;      // If we can&apos;t continue with credentials, we need to cancel the load altogether.
&gt; -#if PLATFORM(COCOA) || USE(CFNETWORK) || USE(CURL) || PLATFORM(GTK) || PLATFORM(EFL)
&gt;      challenge.authenticationClient()-&gt;receivedRequestToContinueWithoutCredential(challenge);
&gt;      ASSERT(!m_handle || !m_handle-&gt;hasAuthenticationChallenge());
&gt; -#else
&gt; -    didFail(blockedError());
&gt; -#endif

This comment does not make sense any more if we remove the #if and the #else.

&gt; Source/WebCore/platform/mac/WebCoreSystemInterface.h:83
&gt; -#if USE(CFNETWORK)
&gt; +#if USE(CFURLCONNECTION)
&gt;  typedef struct OpaqueCFHTTPCookieStorage*  CFHTTPCookieStorageRef;
&gt;  typedef struct _CFURLProtectionSpace* CFURLProtectionSpaceRef;
&gt;  typedef struct _CFURLCredential* WKCFURLCredentialRef;

This isn’t used on Windows, so why keep the USE(CFURLCONNECTION) part of this?

&gt; Source/WebCore/platform/network/ProtectionSpaceBase.cpp:-33
&gt; -#if USE(CFNETWORK) &amp;&amp; !PLATFORM(COCOA)
&gt; -#include &quot;AuthenticationCF.h&quot;
&gt; -#include &lt;CFNetwork/CFURLProtectionSpacePriv.h&gt;
&gt; -#endif

Why isn’t this needed on Windows?

&gt; Source/WebCore/platform/network/ResourceHandle.h:95
&gt; +class ResourceHandle : public RefCounted&lt;ResourceHandle&gt; , public AuthenticationClient {

No space before the comma, please.

&gt; Source/WebCore/platform/network/ResourceRequestBase.cpp:35
&gt; +#if !USE(SOUP) &amp;&amp; (!PLATFORM(COCOA) || USE(CFURLCONNECTION))

Seems like this can just be !USE(SOUP) &amp;&amp; !PLATFORM(COCOA), no need to check USE(CFURLCONNECTION)

&gt; Source/WebCore/platform/network/cf/NetworkStorageSessionCFNet.cpp:101
&gt; -#if USE(CFNETWORK)
&gt; +#if USE(CFURLCONNECTION)
&gt;      return _CFHTTPCookieStorageGetDefault(kCFAllocatorDefault);
&gt;  #else
&gt;      // When using NSURLConnection, we also use its shared cookie storage.
&gt; -    return 0;
&gt; +    return nullptr;
&gt;  #endif

Should this file even compile anything when USE(CFURLCONNETION) is false?

&gt; Source/WebCore/platform/network/cf/ResourceHandleCFNet.cpp:-478
&gt; -#if PLATFORM(COCOA)
&gt;              CFURLConnectionUseCredential(d-&gt;m_connection.get(), webCredential.cfCredential(), challenge.cfURLAuthChallengeRef());
&gt; -#else
&gt; -            RetainPtr&lt;CFURLCredentialRef&gt; cfCredential = adoptCF(createCF(webCredential));
&gt; -            CFURLConnectionUseCredential(d-&gt;m_connection.get(), cfCredential.get(), challenge.cfURLAuthChallengeRef());
&gt; -#endif

Here you kept the Cocoa version. I think that’s backwards.

&gt; Source/WebCore/platform/network/cf/ResourceHandleCFNet.cpp:-486
&gt; -#if PLATFORM(COCOA)
&gt;          CFURLConnectionUseCredential(d-&gt;m_connection.get(), credential.cfCredential(), challenge.cfURLAuthChallengeRef());
&gt; -#else
&gt; -        RetainPtr&lt;CFURLCredentialRef&gt; cfCredential = adoptCF(createCF(credential));
&gt; -        CFURLConnectionUseCredential(d-&gt;m_connection.get(), cfCredential.get(), challenge.cfURLAuthChallengeRef());
&gt; -#endif

Here you kept the Cocoa version. I think that’s backwards.

&gt; Source/WebKit/win/WebView.cpp:5264
&gt; +#if PLATFORM(WIN) || USE(CFURLCONNECTION)

This should just be PLATFORM(WIN), no need for the USE(CFURLCONNECTION), right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1238852</commentid>
    <comment_count>11</comment_count>
      <attachid>291232</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-10-11 08:23:08 -0700</bug_when>
    <thetext>Comment on attachment 291232
Patch

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

&gt;&gt; Source/WebCore/platform/network/ProtectionSpaceBase.cpp:-33
&gt;&gt; -#endif
&gt; 
&gt; Why isn’t this needed on Windows?

It compiles without it.  It must be left over from code that used to be in this file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1238853</commentid>
    <comment_count>12</comment_count>
      <attachid>291259</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-10-11 08:24:02 -0700</bug_when>
    <thetext>Created attachment 291259
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1238854</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-11 08:25:55 -0700</bug_when>
    <thetext>Attachment 291259 did not pass style-queue:


ERROR: Source/WebCore/WebCorePrefix.h:0:  Use #pragma once header guard.  [build/header_guard] [5]
ERROR: Source/WebCore/testing/js/WebCoreTestSupportPrefix.h:0:  Use #pragma once header guard.  [build/header_guard] [5]
Total errors found: 2 in 87 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>1238893</commentid>
    <comment_count>14</comment_count>
      <attachid>291270</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-10-11 09:40:46 -0700</bug_when>
    <thetext>Created attachment 291270
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1238896</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-11 09:43:11 -0700</bug_when>
    <thetext>Attachment 291270 did not pass style-queue:


ERROR: Source/WebCore/WebCorePrefix.h:0:  Use #pragma once header guard.  [build/header_guard] [5]
ERROR: Source/WebCore/testing/js/WebCoreTestSupportPrefix.h:0:  Use #pragma once header guard.  [build/header_guard] [5]
Total errors found: 2 in 87 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>1238909</commentid>
    <comment_count>16</comment_count>
      <attachid>291270</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2016-10-11 10:14:48 -0700</bug_when>
    <thetext>Comment on attachment 291270
Patch

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

Yay!

&gt; Source/WebCore/platform/network/cf/AuthenticationCF.cpp:89
&gt; +    return CFURLAuthChallengeCreate(0, protectionSpace.get(), credential.get(), coreChallenge.previousFailureCount(), coreChallenge.failureResponse().cfURLResponse(), coreChallenge.error());

Nit: 0 =&gt; nullptr

&gt; Source/WebCore/platform/network/cf/NetworkStorageSessionCFNet.cpp:41
&gt; +// FIXME: This file is mostly Cocoa code, not CFNet code.

CFNet =&gt; CFNetwork

We should look to extract out the CFNetwork code an rename/move this file to reflect that it is used by Cocoa-based platforms. We can do that in a separate bug/patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1238923</commentid>
    <comment_count>17</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-10-11 11:16:24 -0700</bug_when>
    <thetext>Also removing ResourceRequestMac.mm</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1238924</commentid>
    <comment_count>18</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-10-11 11:23:22 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/207151</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>291209</attachid>
            <date>2016-10-10 19:20:26 -0700</date>
            <delta_ts>2016-10-10 19:24:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-163263-20161010191705.patch</filename>
            <type>text/plain</type>
            <size>200755</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDIwNzAz
NSkKKysrIENoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDE2LTEw
LTEwICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgUmVtb3ZlIGRlYWQgbmV0d29ya2luZyBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjMyNjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFNvdXJjZS9jbWFrZS9PcHRpb25zQXBwbGVXaW4uY21h
a2U6CisKIDIwMTYtMTAtMTAgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3Jn
PgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyMDY5NzIuCkluZGV4OiBTb3Vy
Y2UvV1RGL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL0NoYW5nZUxvZwkocmV2
aXNpb24gMjA3MDM1KQorKysgU291cmNlL1dURi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwxNCBAQAorMjAxNi0xMC0xMCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNl
bkB3ZWJraXQub3JnPgorCisgICAgICAgIFJlbW92ZSBkZWFkIG5ldHdvcmtpbmcgY29kZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzMjYzCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvUGxhdGZv
cm0uaDoKKyAgICAgICAgKiB3dGYvU2NoZWR1bGVQYWlyLmg6CisgICAgICAgICogd3RmL1NjaGVk
dWxlUGFpck1hYy5tbToKKwogMjAxNi0xMC0xMCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVh
QGdtYWlsLmNvbT4KIAogICAgICAgICBbRE9NSklUXSBJbXBsZW1lbnQgTm9kZSBhY2Nlc3NvcnMg
aW4gRE9NSklUCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgJKHJldmlzaW9uIDIwNzAzNSkKKysrIFNvdXJjZS9X
VEYvd3RmL1BsYXRmb3JtLmgJKHdvcmtpbmcgY29weSkKQEAgLTU1OSwxMCArNTU5LDYgQEAKIAog
I2lmIFBMQVRGT1JNKElPUykKIAotI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspICYmIF9fSVBI
T05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTAwMDAwCi0jZGVmaW5lIFVTRV9DRk5FVFdP
UksgMQotI2VuZGlmCi0KICNkZWZpbmUgSEFWRV9ORVRXT1JLX0VYVEVOU0lPTiAxCiAjZGVmaW5l
IEhBVkVfUkVBRExJTkUgMQogI2RlZmluZSBVU0VfVUlLSVRfRURJVElORyAxCkBAIC01OTIsMTAg
KzU4OCwxMCBAQAogI2VuZGlmCiAKICNpZiBQTEFURk9STShXSU4pICYmICFVU0UoV0lOR0RJKSAm
JiAhUExBVEZPUk0oV0lOX0NBSVJPKQotI2RlZmluZSBVU0VfQ0ZORVRXT1JLIDEKKyNkZWZpbmUg
VVNFX0NGVVJMQ09OTkVDVElPTiAxCiAjZW5kaWYKIAotI2lmIFVTRShDRk5FVFdPUkspIHx8IFBM
QVRGT1JNKENPQ09BKQorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pIHx8IFBMQVRGT1JNKENPQ09B
KQogI2RlZmluZSBVU0VfQ0ZVUkxDQUNIRSAxCiAjZW5kaWYKIApAQCAtOTUxLDkgKzk0Nyw2IEBA
CiAjZGVmaW5lIFVTRV9QUk9URUNUSU9OX1NQQUNFX0FVVEhfQ0FMTEJBQ0sgMQogI2VuZGlmCiAK
LS8qIFNldCB1cCBhIGRlZmluZSBmb3IgYSBjb21tb24gZXJyb3IgdGhhdCBpcyBpbnRlbmRlZCB0
byBjYXVzZSBhIGJ1aWxkIGVycm9yIC0tIHRodXMgdGhlIHNwYWNlIGFmdGVyIEVycm9yLiAqLwot
I2RlZmluZSBXVEZfUExBVEZPUk1fQ0ZORVRXT1JLIEVycm9yIFVTRV9tYWNyb19zaG91bGRfYmVf
dXNlZF93aXRoX0NGTkVUV09SSwotCiAjaWYgUExBVEZPUk0oQ09DT0EpICYmIEhBVkUoQUNDRVNT
SUJJTElUWSkKICNkZWZpbmUgVVNFX0FDQ0VTU0lCSUxJVFlfQ09OVEVYVF9NRU5VUyAxCiAjZW5k
aWYKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1NjaGVkdWxlUGFpci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XVEYvd3RmL1NjaGVkdWxlUGFpci5oCShyZXZpc2lvbiAyMDcwMzUpCisrKyBTb3VyY2Uv
V1RGL3d0Zi9TY2hlZHVsZVBhaXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQAog
I2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KIAotI2lmIFBMQVRGT1JNKENPQ09BKSAmJiAhVVNFKENGTkVUV09SSykKKyNpZiBQ
TEFURk9STShDT0NPQSkKIE9CSkNfQ0xBU1MgTlNSdW5Mb29wOwogI2VuZGlmCiAKQEAgLTQ1LDcg
KzQ1LDcgQEAgY2xhc3MgU2NoZWR1bGVQYWlyIDogcHVibGljIFRocmVhZFNhZmVSZQogcHVibGlj
OgogICAgIHN0YXRpYyBSZWY8U2NoZWR1bGVQYWlyPiBjcmVhdGUoQ0ZSdW5Mb29wUmVmIHJ1bkxv
b3AsIENGU3RyaW5nUmVmIG1vZGUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2NoZWR1bGVQYWly
KHJ1bkxvb3AsIG1vZGUpKTsgfQogCi0jaWYgUExBVEZPUk0oQ09DT0EpICYmICFVU0UoQ0ZORVRX
T1JLKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHN0YXRpYyBSZWY8U2NoZWR1bGVQYWlyPiBj
cmVhdGUoTlNSdW5Mb29wKiBydW5Mb29wLCBDRlN0cmluZ1JlZiBtb2RlKSB7IHJldHVybiBhZG9w
dFJlZigqbmV3IFNjaGVkdWxlUGFpcihydW5Mb29wLCBtb2RlKSk7IH0KICAgICBOU1J1bkxvb3Aq
IG5zUnVuTG9vcCgpIGNvbnN0IHsgcmV0dXJuIG1fbnNSdW5Mb29wLmdldCgpOyB9CiAjZW5kaWYK
QEAgLTYzLDcgKzYzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIG1fbW9kZSA9IGFkb3B0Q0Yo
Q0ZTdHJpbmdDcmVhdGVDb3B5KDAsIG1vZGUpKTsKICAgICB9CiAKLSNpZiBQTEFURk9STShDT0NP
QSkgJiYgIVVTRShDRk5FVFdPUkspCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgV1RGX0VYUE9S
VF9QUklWQVRFIFNjaGVkdWxlUGFpcihOU1J1bkxvb3AqLCBDRlN0cmluZ1JlZik7CiAgICAgUmV0
YWluUHRyPE5TUnVuTG9vcCo+IG1fbnNSdW5Mb29wOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV1RG
L3d0Zi9TY2hlZHVsZVBhaXJNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvU2No
ZWR1bGVQYWlyTWFjLm1tCShyZXZpc2lvbiAyMDcwMzUpCisrKyBTb3VyY2UvV1RGL3d0Zi9TY2hl
ZHVsZVBhaXJNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTI5LDggKzI5LDYgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJTY2hlZHVsZVBhaXIuaCIKIAotI2lmICFVU0UoQ0ZORVRX
T1JLKQotCiBuYW1lc3BhY2UgV1RGIHsKIAogU2NoZWR1bGVQYWlyOjpTY2hlZHVsZVBhaXIoTlNS
dW5Mb29wKiBydW5Mb29wLCBDRlN0cmluZ1JlZiBtb2RlKQpAQCAtNDIsNSArNDAsMyBAQCBTY2hl
ZHVsZVBhaXI6OlNjaGVkdWxlUGFpcihOU1J1bkxvb3AqIHJ1CiB9CiAKIH0gLy8gbmFtZXNwYWNl
Ci0KLSNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjA3MDM1KQorKysgU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTY0IEBACisyMDE2LTEw
LTEwICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgUmVtb3ZlIGRlYWQgbmV0d29ya2luZyBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjMyNjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMgKE9PUFMhKS4KKworICAgICAgICAq
IFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJDb3JlUHJl
Zml4Lmg6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmg6CisgICAgICAgICogbG9h
ZGVyL0VtcHR5Q2xpZW50cy5oOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlckNsaWVudC5o
OgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKToKKyAg
ICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvU3VicmVz
b3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvY2YvUmVzb3VyY2VMb2FkZXJDRk5ldC5j
cHA6CisgICAgICAgICogbG9hZGVyL2NvY29hL1N1YnJlc291cmNlTG9hZGVyQ29jb2EubW06Cisg
ICAgICAgIChXZWJDb3JlOjpTdWJyZXNvdXJjZUxvYWRlcjo6d2lsbENhY2hlUmVzcG9uc2UpOiBE
ZWxldGVkLgorICAgICAgICAqIGxvYWRlci9tYWMvRG9jdW1lbnRMb2FkZXJNYWMuY3BwOgorICAg
ICAgICAqIGxvYWRlci9tYWMvUmVzb3VyY2VMb2FkZXJNYWMubW06CisgICAgICAgIChXZWJDb3Jl
OjpSZXNvdXJjZUxvYWRlcjo6d2lsbENhY2hlUmVzcG9uc2UpOiBEZWxldGVkLgorICAgICAgICAq
IHBhZ2UvbWFjL1BhZ2VNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpwbGF0Zm9ybUlu
aXRpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6YWRkU2NoZWR1bGVQYWlyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBhZ2U6OnJlbW92ZVNjaGVkdWxlUGFpcik6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakM6OnNob3VsZFdhaXRGb3JSZXNwb25zZVRvQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29yZU5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVu
Z2VDbGllbnQ6OmNyZWF0ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXZWJDb3JlTlNV
UkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUNsaWVudDo6V2ViQ29yZU5TVVJMQXV0aGVudGljYXRp
b25DaGFsbGVuZ2VDbGllbnQpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9XZWJD
b3JlU3lzdGVtSW50ZXJmYWNlLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9OZXR3b3Jr
U3RvcmFnZVNlc3Npb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Byb3RlY3Rpb25T
cGFjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUHJvdGVjdGlvblNwYWNlQmFzZS5j
cHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5jcHA6CisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwOgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291
cmNlSGFuZGxlQ2xpZW50Ojp3aWxsQ2FjaGVSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpS
ZXNvdXJjZUhhbmRsZUNsaWVudDo6c2hvdWxkQ2FjaGVSZXNwb25zZSk6CisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmg6CisgICAgICAgIChXZWJDb3Jl
OjpSZXNvdXJjZUhhbmRsZUludGVybmFsOjpSZXNvdXJjZUhhbmRsZUludGVybmFsKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvY2YvQXV0aGVudGljYXRpb25DRi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UpOgor
ICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQ0YpOgorICAgICAgICAoV2ViQ29yZTo6Y29yZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9BdXRoZW50aWNhdGlvbkNGLmg6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9jZi9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvQ29va2llSmFyQ0ZOZXQuY3BwOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvY2YvQ3JlZGVudGlhbFN0b3JhZ2VDRk5ldC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDcmVkZW50aWFsU3RvcmFnZTo6Z2V0RnJvbVBlcnNpc3RlbnRTdG9yYWdlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNyZWRlbnRpYWxTdG9yYWdlOjpzYXZlVG9QZXJzaXN0ZW50U3RvcmFn
ZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9Mb2FkZXJSdW5Mb29w
Q0YuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvTG9hZGVyUnVuTG9vcENGLmg6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5l
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZVN0
b3JhZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvUHJvdGVjdGlvblNwYWNlQ0ZO
ZXQuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvUHJvdGVjdGlvblNwYWNlQ0ZO
ZXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3IuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHA6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnNob3VsZFNuaWZmQ29ubmVjdGlvblByb3BlcnR5KToKKyAgICAgICAgKFdlYkNv
cmU6OlJlc291cmNlSGFuZGxlOjpjcmVhdGVDRlVSTENvbm5lY3Rpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6UmVzb3VyY2VIYW5kbGU6OnN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
SGFuZGxlOjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVzb3VyY2VIYW5kbGU6OnRyeUhhbmRsZVBhc3N3b3JkQmFzZWRBdXRoZW50aWNhdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRDcmVkZW50aWFs
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpzY2hlZHVsZSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6dW5zY2hlZHVsZSk6IERlbGV0ZWQu
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVj
dGlvbkRlbGVnYXRlLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNl
SGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9u
UXVldWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rp
b25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZTo6c2V0dXBSZXF1ZXN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9u
UXVldWU6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhh
bmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlOjpjYW5SZXNwb25k
VG9Qcm90ZWN0aW9uU3BhY2UpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3Vy
Y2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5oOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Lmg6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q6OmVuY29kaW5nUmVxdWlyZXNQbGF0Zm9ybURhdGEpOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6ZmluZENGVVJMUmVxdWVzdENvcHlDb250ZW50RGlzcG9zaXRpb25F
bmNvZGluZ0ZhbGxiYWNrQXJyYXlGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3Q6OmRvVXBkYXRlUGxhdGZvcm1SZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdDo6ZG9VcGRhdGVQbGF0Zm9ybUhUVFBCb2R5KToKKyAgICAgICAgKFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVSZXNvdXJjZVJlcXVlc3QpOgorICAgICAgICAo
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0OjpzZXRTdG9yYWdlU2Vzc2lvbik6CisgICAgICAgIChX
ZWJDb3JlOjpmaW5kQ0ZVUkxSZXF1ZXN0U2V0Q29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxs
YmFja0FycmF5RnVuY3Rpb24pOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
Y2YvUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2Nm
L1Jlc291cmNlUmVzcG9uc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2U6
OlJlc291cmNlUmVzcG9uc2UpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3Vy
Y2VSZXNwb25zZUNGTmV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2U6
OmNmVVJMUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZTo6cGxh
dGZvcm1DZXJ0aWZpY2F0ZUluZm8pOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvU3lu
Y2hyb25vdXNMb2FkZXJDbGllbnRDRk5ldC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9jZi9TeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVj
dGlvbkRlbGVnYXRlOjpzZXR1cFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3luY2hyb25v
dXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlOjpzZXR1cENvbm5lY3Rpb25T
Y2hlZHVsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OmFkanVzdE1JTUVUeXBlSWZOZWNlc3Nhcnkp
OgorICAgICAgICAoV2ViQ29yZTo6U3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVj
dGlvbkRlbGVnYXRlOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6U3lu
Y2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlOjp3aWxsQ2FjaGVS
ZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZV
UkxDb25uZWN0aW9uRGVsZWdhdGU6OmNhblJlc3BvbmRUb1Byb3RlY3Rpb25TcGFjZSk6CisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9TeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxD
b25uZWN0aW9uRGVsZWdhdGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL0Ny
ZWRlbnRpYWxDb2NvYS5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvQ3JlZGVu
dGlhbENvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6Q3JlZGVudGlhbDo6Q3JlZGVudGlhbCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDcmVkZW50aWFsOjpjZkNyZWRlbnRpYWwpOiBE
ZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvUHJvdGVjdGlvblNwYWNl
Q29jb2EuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Byb3RlY3Rpb25TcGFj
ZUNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6UHJvdGVjdGlvblNwYWNlOjpQcm90ZWN0aW9u
U3BhY2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UHJvdGVjdGlvblNwYWNlOjpjZlNw
YWNlKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNl
UmVxdWVzdENvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Ojpuc1VS
TFJlcXVlc3QpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXNw
b25zZUNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZTo6cGxhdGZv
cm1DZXJ0aWZpY2F0ZUluZm8pOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZTo6
bnNVUkxSZXNwb25zZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlOjpSZXNvdXJjZVJlc3BvbnNlKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL2lvcy9RdWlja0xvb2suaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2lvcy9RdWlj
a0xvb2subW06CisgICAgICAgICgtW1dlYlF1aWNrTG9va0hhbmRsZUFzRGVsZWdhdGUgaW5pdFdp
dGhDb25uZWN0aW9uRGVsZWdhdGU6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYlF1aWNrTG9v
a0hhbmRsZUFzRGVsZWdhdGUgY29ubmVjdGlvbjpkaWRSZWNlaXZlRGF0YUFycmF5Ol0pOiBEZWxl
dGVkLgorICAgICAgICAoLVtXZWJRdWlja0xvb2tIYW5kbGVBc0RlbGVnYXRlIGNvbm5lY3Rpb246
ZGlkUmVjZWl2ZURhdGE6bGVuZ3RoUmVjZWl2ZWQ6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dl
YlF1aWNrTG9va0hhbmRsZUFzRGVsZWdhdGUgY29ubmVjdGlvbkRpZEZpbmlzaExvYWRpbmc6XSk6
IERlbGV0ZWQuCisgICAgICAgICgtW1dlYlF1aWNrTG9va0hhbmRsZUFzRGVsZWdhdGUgY29ubmVj
dGlvbjpkaWRGYWlsV2l0aEVycm9yOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtXZWJRdWlja0xv
b2tIYW5kbGVBc0RlbGVnYXRlIGRldGFjaEhhbmRsZV0pOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6UXVpY2tMb29rSGFuZGxlOjpjcmVhdGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6UXVpY2tMb29rSGFuZGxlOjpjZlJlc3BvbnNlKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL2lvcy9SZXNvdXJjZUhhbmRsZUlPUy5tbTogUmVtb3ZlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL2lvcy9SZXNvdXJjZVJlcXVlc3RJT1MubW06IFJlbW92ZWQuCisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvQXV0aGVudGljYXRpb25NYWMubW06CisgICAg
ICAgICgtW1dlYkNvcmVBdXRoZW50aWNhdGlvbkNsaWVudEFzQ2hhbGxlbmdlU2VuZGVyIHNldENG
Q2hhbGxlbmdlOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtXZWJDb3JlQXV0aGVudGljYXRpb25D
bGllbnRBc0NoYWxsZW5nZVNlbmRlciBjZkNoYWxsZW5nZV0pOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6Y29yZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjptYWMpOiBEZWxldGVk
LgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL0Nvb2tpZUphck1hYy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OnNldENvb2tpZXNGcm9tRE9NKToKKyAgICAgICAgKFdlYkNvcmU6OmNvb2tp
ZVN0b3JhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6YWRkQ29va2llKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL21hYy9DcmVkZW50aWFsU3RvcmFnZU1hYy5tbToKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL21hYy9Gb3JtRGF0YVN0cmVhbU1hYy5oOgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvbWFjL0Zvcm1EYXRhU3RyZWFtTWFjLm1tOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvbWFjL1Jlc291cmNlRXJyb3JNYWMubW06CisgICAgICAgIChOU0Vycm9yRnJvbUNGRXJy
b3IpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VFcnJvcjo6UmVzb3VyY2VF
cnJvcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUVycm9yOjpuc0Vycm9y
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlRXJyb3I6Om9wZXJhdG9yIE5T
RXJyb3IgKik6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3Vy
Y2VIYW5kbGVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6Y29udGlu
dWVXaWxsQ2FjaGVSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6
Z2V0Q29ubmVjdGlvblRpbWluZ0RhdGEpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvbWFjL1Jlc291cmNlUmVxdWVzdE1hYy5tbTogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL21hYy9TeW5jaHJvbm91c0xvYWRlckNsaWVudC5tbToKKyAgICAgICAgKFdl
YkNvcmU6OlN5bmNocm9ub3VzTG9hZGVyQ2xpZW50OjpwbGF0Zm9ybUJhZFJlc3BvbnNlRXJyb3Ip
OgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFz
RGVsZWdhdGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3Vy
Y2VIYW5kbGVBc0RlbGVnYXRlLm1tOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL1dl
YkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5oOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVl
dWVEZWxlZ2F0ZS5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlVVJM
UmVzcG9uc2UubW06CisgICAgICAgIChXZWJDb3JlOjpzeW50aGVzaXplUmVkaXJlY3RSZXNwb25z
ZUlmTmVjZXNzYXJ5KToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vVGVtcG9yYXJ5TGlua1N0dWJz
LmNwcDoKKyAgICAgICAgKiB0ZXN0aW5nL2pzL1dlYkNvcmVUZXN0U3VwcG9ydFByZWZpeC5oOgor
CiAyMDE2LTEwLTEwICBOYW4gV2FuZyAgPG5fd2FuZ0BhcHBsZS5jb20+CiAKICAgICAgICAgQVg6
IEV4cG9zZSBpbnZhbGlkIHN0YXR1cyBmb3IgaW5wdXQgdHlwZXMgd2l0aCB0aGF0IGluZm9ybWF0
aW9uCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlUHJlZml4LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvV2ViQ29yZVByZWZpeC5oCShyZXZpc2lvbiAyMDcwMzUpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlUHJlZml4LmgJKHdvcmtpbmcgY29weSkKQEAgLTE4LDcgKzE4LDkg
QEAKICAqCiAgKi8KIAotLyogVGhpcyBwcmVmaXggZmlsZSBzaG91bGQgY29udGFpbiBvbmx5OiAK
KyNwcmFnbWEgb25jZQorCisvKiBUaGlzIHByZWZpeCBmaWxlIHNob3VsZCBjb250YWluIG9ubHk6
CiAgKiAgICAxKSBmaWxlcyB0byBwcmVjb21waWxlIGZvciBmYXN0ZXIgYnVpbGRzCiAgKiAgICAy
KSBpbiBvbmUgY2FzZSBhdCBsZWFzdDogT1MtWC1zcGVjaWZpYyBwZXJmb3JtYW5jZSBidWcgd29y
a2Fyb3VuZHMKICAqICAgIDMpIHRoZSBzcGVjaWFsIHRyaWNrIHRvIGNhdGNoIHVzIHVzaW5nIG5l
dyBvciBkZWxldGUgd2l0aG91dCBpbmNsdWRpbmcgImNvbmZpZy5oIgpAQCAtMTMzLDggKzEzNSw4
IEBACiAjZWxzZQogCiAjaWYgT1MoV0lORE9XUykKLSNpZiBVU0UoQ0cpCiAKKyNpZiBVU0UoQ0cp
CiAvLyBGSVhNRSA8cmRhcjovL3Byb2JsZW0vODIwODg2OD4gUmVtb3ZlIHN1cHBvcnQgZm9yIG9i
c29sZXRlIENvbG9yU3luYyBBUEksIENvcmVTZXJ2aWNlcyBoZWFkZXIgaW4gQ29yZUdyYXBoaWNz
CiAvLyBXZSBjYW4gcmVtb3ZlIHRoaXMgb25jZSB0aGUgbmV3IENvbG9yU3luYyBBUElzIGFyZSBh
dmFpbGFibGUgaW4gYW4gaW50ZXJuYWwgU2FmYXJpIFNESy4KICNpbmNsdWRlIDxDb2xvclN5bmMv
Q29sb3JTeW5jLmg+CkBAIC0xNDMsMTkgKzE0NSwyMSBAQAogI2RlZmluZSBPQlNPTEVURV9DT0xP
UlNZTkNfQVBJCiAjZW5kaWYKICNlbmRpZgotI2lmIFVTRShDRk5FVFdPUkspCi0vKiBXaW5kb3dz
IGRvZXNuJ3QgaW5jbHVkZSBDRk5ldHdvcmsuaCB2aWEgQ29yZVNlcnZpY2VzLmgsIHNvIHdlIGRv
Ci0gICBpdCBleHBsaWNpdGx5IGhlcmUgdG8gbWFrZSBXaW5kb3dzIG1vcmUgY29uc2lzdGVudCB3
aXRoIE1hYy4gKi8KKworI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAjaW5jbHVkZSA8Q0ZOZXR3
b3JrL0NGTmV0d29yay5oPgogLy8gT24gV2luZG93cywgZGlzcGF0Y2guaCBuZWVkcyB0byBiZSBp
bmNsdWRlZCBiZWZvcmUgY2VydGFpbiBDRk5ldHdvcmsgaGVhZGVycy4KICNpbmNsdWRlIDxkaXNw
YXRjaC9kaXNwYXRjaC5oPgogI2VuZGlmCisKICNpbmNsdWRlIDx3aW5kb3dzLmg+Ci0jZWxzZQot
I2lmICFQTEFURk9STShJT1MpCisKKyNlbGlmICFQTEFURk9STShJT1MpCisKICNpbmNsdWRlIDxD
b3JlU2VydmljZXMvQ29yZVNlcnZpY2VzLmg+Ci0jZW5kaWYgLy8gIVBMQVRGT1JNKElPUykKLSNl
bmRpZiAvLyBPUyhXSU5ET1dTKQorCisjZW5kaWYKKwogCiAjZW5kaWYKIApJbmRleDogU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNp
b24gMjA3MDM1KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yMDIxLDcgKzIwMjEsNiBAQAogCQk1MTRDNzY0RjBD
RTkyMzRFMDA3RUYzQ0QgLyogRm9ybURhdGFTdHJlYW1NYWMubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTRDNzY0NTBDRTkyMzRFMDA3RUYzQ0QgLyog
Rm9ybURhdGFTdHJlYW1NYWMubW0gKi87IH07CiAJCTUxNEM3NjUwMENFOTIzNEUwMDdFRjNDRCAv
KiBSZXNvdXJjZUVycm9yTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTE0Qzc2NDYwQ0U5MjM0RTAwN0VGM0NEIC8qIFJlc291cmNlRXJyb3JNYWMu
bW0gKi87IH07CiAJCTUxNEM3NjUxMENFOTIzNEUwMDdFRjNDRCAvKiBSZXNvdXJjZUhhbmRsZU1h
Yy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNEM3
NjQ3MENFOTIzNEUwMDdFRjNDRCAvKiBSZXNvdXJjZUhhbmRsZU1hYy5tbSAqLzsgfTsKLQkJNTE0
Qzc2NTMwQ0U5MjM0RTAwN0VGM0NEIC8qIFJlc291cmNlUmVxdWVzdE1hYy5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNEM3NjQ5MENFOTIzNEUwMDdF
RjNDRCAvKiBSZXNvdXJjZVJlcXVlc3RNYWMubW0gKi87IH07CiAJCTUxNEM3NjZEMENFOTIzQTEw
MDdFRjNDRCAvKiBDcmVkZW50aWFsQmFzZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MTRDNzY1ODBDRTkyM0ExMDA3RUYzQ0QgLyogQ3JlZGVudGlh
bEJhc2UuY3BwICovOyB9OwogCQk1MTRDNzY2RTBDRTkyM0ExMDA3RUYzQ0QgLyogQ3JlZGVudGlh
bC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE0Qzc2
NTkwQ0U5MjNBMTAwN0VGM0NEIC8qIENyZWRlbnRpYWwuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTRDNzY2RjBDRTkyM0ExMDA3RUYzQ0QgLyog
Rm9ybURhdGEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTE0Qzc2NUEwQ0U5MjNBMTAwN0VGM0NEIC8qIEZvcm1EYXRhLmNwcCAqLzsgfTsKQEAgLTI4
MDgsNyArMjgwNyw2IEBACiAJCTdENEM5NkREMUFENDQ4MzUwMDM2NUE1MCAvKiBKU0ZldGNoSGVh
ZGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0Q0
Qzk2RDkxQUQ0NDgzNTAwMzY1QTUwIC8qIEpTRmV0Y2hIZWFkZXJzLmggKi87IH07CiAJCTdENzQx
QkRBMTc3MjI2QUEwMDg1OTE3MCAvKiBDU1NWYWx1ZUtleXdvcmRzLmggaW4gQ29weSBHZW5lcmF0
ZWQgSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTY1ODE0ODA5
RDEzMDQzMDAwRTYxRDcgLyogQ1NTVmFsdWVLZXl3b3Jkcy5oICovOyB9OwogCQk3RTM3RUYyRTEz
MzkyMDg4MDBCMjkyNTAgLyogU3VicmVzb3VyY2VMb2FkZXJDRi5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RTM3RUYyRDEzMzkyMDg4MDBCMjkyNTAg
LyogU3VicmVzb3VyY2VMb2FkZXJDRi5jcHAgKi87IH07Ci0JCTdFNDI4Q0U1MTNFMzQwN0YwMDNC
NjYxQyAvKiBSZXNvdXJjZUhhbmRsZUlPUy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDdFNDI4Q0U0MTNFMzQwN0YwMDNCNjYxQyAvKiBSZXNvdXJjZUhh
bmRsZUlPUy5tbSAqLzsgfTsKIAkJN0U0NkY2RkExNjI3QTJDQTAwMDYyMjIzIC8qIEpTT0VTRWxl
bWVudEluZGV4VWludC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3RTQ2RjZGODE2MjdBMkM5MDAwNjIyMjMgLyogSlNPRVNFbGVtZW50SW5kZXhVaW50
LmNwcCAqLzsgfTsKIAkJN0U0NkY2RkIxNjI3QTJDQTAwMDYyMjIzIC8qIEpTT0VTRWxlbWVudElu
ZGV4VWludC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
N0U0NkY2RjkxNjI3QTJDOTAwMDYyMjIzIC8qIEpTT0VTRWxlbWVudEluZGV4VWludC5oICovOyB9
OwogCQk3RTQ3NEUxRTEyNDk0REM5MDAyMzUzNjQgLyogU1FMaXRlRGF0YWJhc2VUcmFja2VyQ2xp
ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RTQ3
NEUxQjEyNDk0REM5MDAyMzUzNjQgLyogU1FMaXRlRGF0YWJhc2VUcmFja2VyQ2xpZW50LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTI4MjYsNyAr
MjgyNCw2IEBACiAJCTdFNjZFMjM0MTZENkVCNkMwMEY3RTdGRiAvKiBXZWJHTENvbXByZXNzZWRU
ZXh0dXJlQVRDLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3RTY2RTIzMjE2RDZFQjZDMDBGN0U3RkYgLyogV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQy5o
ICovOyB9OwogCQk3RTY2RTIzNDE3RTZFQjZDMDBGN0U3RkYgLyogV2ViR0xDb21wcmVzc2VkVGV4
dHVyZVBWUlRDLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3RTY2RTIzMjE3RTZFQjZDMDBGN0U3RkYgLyogV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRD
LmggKi87IH07CiAJCTdFN0RFMUZEMTk1Q0VGMjYwMDM1MzYzQiAvKiBSZXNvdXJjZVJlcXVlc3RD
b2NvYS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdF
N0RFMUZDMTk1Q0VGMjYwMDM1MzYzQiAvKiBSZXNvdXJjZVJlcXVlc3RDb2NvYS5tbSAqLzsgfTsK
LQkJN0U3REUyMDIxOTVDRUZDRDAwMzUzNjNCIC8qIFJlc291cmNlUmVxdWVzdElPUy5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFN0RFMjAxMTk1Q0VG
Q0QwMDM1MzYzQiAvKiBSZXNvdXJjZVJlcXVlc3RJT1MubW0gKi87IH07CiAJCTdFOEZBREM0MTk5
QTk1QjEwMDcxNDk2OCAvKiBTdWJyZXNvdXJjZUxvYWRlckNvY29hLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0U4RkFEQzMxOTlBOTVCMTAwNzE0OTY4
IC8qIFN1YnJlc291cmNlTG9hZGVyQ29jb2EubW0gKi87IH07CiAJCTdFOTlBRjUxMEIxMzg0NjQ2
OEZCMDFBNSAvKiBXaW5kb3dGb2N1c0FsbG93ZWRJbmRpY2F0b3IuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0U5OUFGNTIwQjEzODQ2NDY4RkIwMUE1
IC8qIFdpbmRvd0ZvY3VzQWxsb3dlZEluZGljYXRvci5jcHAgKi87IH07CiAJCTdFOTlBRjUzMEIx
Mzg0NjQ2OEZCMDFBNSAvKiBXaW5kb3dGb2N1c0FsbG93ZWRJbmRpY2F0b3IuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFOTlBRjU0MEIxMzg0NjQ2OEZC
MDFBNSAvKiBXaW5kb3dGb2N1c0FsbG93ZWRJbmRpY2F0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMjg0Nyw3ICsyODQ0LDYgQEAKIAkJN0VF
Njg0NjkxMkQyNkUzODAwRTc5NDE1IC8qIExvYWRlclJ1bkxvb3BDRi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0VFNjg0NTYxMkQyNkUzODAwRTc5NDE1
IC8qIExvYWRlclJ1bkxvb3BDRi5oICovOyB9OwogCQk3RUU2ODQ2QTEyRDI2RTM4MDBFNzk0MTUg
LyogUmVzb3VyY2VFcnJvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0VFNjg0NTcxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlRXJyb3IuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3RUU2ODQ2QjEy
RDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VFcnJvckNGLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFRTY4NDU4MTJEMjZFMzgwMEU3OTQxNSAvKiBS
ZXNvdXJjZUVycm9yQ0YuY3BwICovOyB9OwotCQk3RUU2ODQ2QzEyRDI2RTM4MDBFNzk0MTUgLyog
UmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3RUU2ODQ1OTEyRDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VIYW5kbGVD
Rk5ldC5jcHAgKi87IH07CiAJCTdFRTY4NDZEMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJl
cXVlc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdF
RTY4NDVBMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlcXVlc3QuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3RUU2ODQ2RTEyRDI2RTM4MDBF
Nzk0MTUgLyogUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0VFNjg0NUIxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291
cmNlUmVxdWVzdENGTmV0LmNwcCAqLzsgfTsKIAkJN0VFNjg0NkYxMkQyNkUzODAwRTc5NDE1IC8q
IFJlc291cmNlUmVxdWVzdENGTmV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3RUU2ODQ1QzEyRDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VSZXF1ZXN0
Q0ZOZXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpA
QCAtOTA2Miw3ICs5MDU4LDYgQEAKIAkJNTE0Qzc2NDUwQ0U5MjM0RTAwN0VGM0NEIC8qIEZvcm1E
YXRhU3RyZWFtTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
Rm9ybURhdGFTdHJlYW1NYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNEM3
NjQ2MENFOTIzNEUwMDdFRjNDRCAvKiBSZXNvdXJjZUVycm9yTWFjLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUmVzb3VyY2VFcnJvck1hYy5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE0Qzc2NDcwQ0U5MjM0RTAwN0VGM0NEIC8qIFJlc291cmNl
SGFuZGxlTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUmVz
b3VyY2VIYW5kbGVNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUxNEM3NjQ5
MENFOTIzNEUwMDdFRjNDRCAvKiBSZXNvdXJjZVJlcXVlc3RNYWMubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBSZXNvdXJjZVJlcXVlc3RNYWMubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNEM3NjU4MENFOTIzQTEwMDdFRjNDRCAvKiBDcmVkZW50
aWFsQmFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDcmVkZW50
aWFsQmFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNEM3NjU5MENFOTIz
QTEwMDdFRjNDRCAvKiBDcmVkZW50aWFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IENyZWRlbnRpYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE0Qzc2NUEw
Q0U5MjNBMTAwN0VGM0NEIC8qIEZvcm1EYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEZvcm1EYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTk5NDYsNyArOTk0MSw2IEBACiAJCTdENEM5NkQ4MUFENDQ4MzUwMDM2NUE1MCAvKiBKU0ZldGNo
SGVhZGVycy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0ZldGNo
SGVhZGVycy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdENEM5NkQ5MUFENDQ4
MzUwMDM2NUE1MCAvKiBKU0ZldGNoSGVhZGVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBKU0ZldGNoSGVhZGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
RTM3RUYyRDEzMzkyMDg4MDBCMjkyNTAgLyogU3VicmVzb3VyY2VMb2FkZXJDRi5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdWJyZXNvdXJjZUxvYWRlckNGLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJN0U0MjhDRTQxM0UzNDA3RjAwM0I2NjFDIC8q
IFJlc291cmNlSGFuZGxlSU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gUmVzb3VyY2VIYW5kbGVJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTdFNDZGNkY4MTYyN0EyQzkwMDA2MjIyMyAvKiBKU09FU0VsZW1lbnRJbmRleFVpbnQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNPRVNFbGVtZW50SW5kZXhVaW50
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0U0NkY2RjkxNjI3QTJDOTAwMDYy
MjIzIC8qIEpTT0VTRWxlbWVudEluZGV4VWludC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBKU09FU0VsZW1lbnRJbmRleFVpbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJN0U0NzRFMUIxMjQ5NERDOTAwMjM1MzY0IC8qIFNRTGl0ZURhdGFiYXNlVHJhY2tlckNs
aWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTUUxpdGVEYXRhYmFzZVRy
YWNrZXJDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTk5NjQsNyArOTk1
OCw2IEBACiAJCTdFNjZFMjMyMTZENkVCNkMwMEY3RTdGRiAvKiBXZWJHTENvbXByZXNzZWRUZXh0
dXJlQVRDLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdMQ29tcHJlc3Nl
ZFRleHR1cmVBVEMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0U2NkUyMzIxN0U2
RUI2QzAwRjdFN0ZGIC8qIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0U3REUxRkMxOTVDRUYyNjAwMzUzNjNCIC8qIFJl
c291cmNlUmVxdWVzdENvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCTdFN0RFMjAxMTk1Q0VGQ0QwMDM1MzYzQiAvKiBSZXNvdXJjZVJlcXVlc3RJT1MubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBSZXNvdXJjZVJlcXVlc3RJT1Mu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFOEZBREMzMTk5QTk1QjEwMDcxNDk2
OCAvKiBTdWJyZXNvdXJjZUxvYWRlckNvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gU3VicmVzb3VyY2VMb2FkZXJDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJN0U5OUFGNTIwQjEzODQ2NDY4RkIwMUE1IC8qIFdpbmRvd0ZvY3VzQWxs
b3dlZEluZGljYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBX
aW5kb3dGb2N1c0FsbG93ZWRJbmRpY2F0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk3RTk5QUY1NDBCMTM4NDY0NjhGQjAxQTUgLyogV2luZG93Rm9jdXNBbGxvd2VkSW5kaWNh
dG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdpbmRvd0ZvY3VzQWxsb3dl
ZEluZGljYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTk4Nyw3ICs5OTgw
LDYgQEAKIAkJN0VFNjg0NTYxMkQyNkUzODAwRTc5NDE1IC8qIExvYWRlclJ1bkxvb3BDRi5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMb2FkZXJSdW5Mb29wQ0YuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0VFNjg0NTcxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291
cmNlRXJyb3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVzb3VyY2VFcnJv
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3RUU2ODQ1ODEyRDI2RTM4MDBFNzk0
MTUgLyogUmVzb3VyY2VFcnJvckNGLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFJlc291cmNlRXJyb3JDRi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTdFRTY4NDU5MTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZUhhbmRsZUNGTmV0LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlc291cmNlSGFuZGxlQ0ZOZXQuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3RUU2ODQ1QTEyRDI2RTM4MDBFNzk0MTUg
LyogUmVzb3VyY2VSZXF1ZXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJl
c291cmNlUmVxdWVzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3RUU2ODQ1QjEy
RDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3RUU2ODQ1QzEyRDI2RTM4MDBFNzk0MTUgLyogUmVzb3Vy
Y2VSZXF1ZXN0Q0ZOZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVzb3Vy
Y2VSZXF1ZXN0Q0ZOZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE2MjM0LDgg
KzE2MjI2LDYgQEAKIAkJCQk0NDJBRjdBNzEwMkNEREVBMDA4RkQ0RDMgLyogUXVpY2tMb29rLmgg
Ki8sCiAJCQkJNDQyQUY3QTgxMDJDRERFQTAwOEZENEQzIC8qIFF1aWNrTG9vay5tbSAqLywKIAkJ
CQlBMTBEQkY0NjE4RjkyMzE3MDAwRDcwQzYgLyogUXVpY2tMb29rSGFuZGxlQ2xpZW50LmggKi8s
Ci0JCQkJN0U0MjhDRTQxM0UzNDA3RjAwM0I2NjFDIC8qIFJlc291cmNlSGFuZGxlSU9TLm1tICov
LAotCQkJCTdFN0RFMjAxMTk1Q0VGQ0QwMDM1MzYzQiAvKiBSZXNvdXJjZVJlcXVlc3RJT1MubW0g
Ki8sCiAJCQkJNDRBMjBEQjgwRjg0MTY2QzAwQjNFMUZFIC8qIFdlYkNvcmVVUkxSZXNwb25zZUlP
Uy5oICovLAogCQkJCTQ0NEQ0RTIxMEY3MDhCMkUwMDMxNThFMCAvKiBXZWJDb3JlVVJMUmVzcG9u
c2VJT1MubW0gKi8sCiAJCQkpOwpAQCAtMTcxNTAsNyArMTcxNDAsNiBAQAogCQkJCTFBN0ZBNjQ3
MEREQTNDQkEwMDI4RjhBNSAvKiBOZXR3b3JrU3RhdGVOb3RpZmllck1hYy5jcHAgKi8sCiAJCQkJ
NTE0Qzc2NDYwQ0U5MjM0RTAwN0VGM0NEIC8qIFJlc291cmNlRXJyb3JNYWMubW0gKi8sCiAJCQkJ
NTE0Qzc2NDcwQ0U5MjM0RTAwN0VGM0NEIC8qIFJlc291cmNlSGFuZGxlTWFjLm1tICovLAotCQkJ
CTUxNEM3NjQ5MENFOTIzNEUwMDdFRjNDRCAvKiBSZXNvdXJjZVJlcXVlc3RNYWMubW0gKi8sCiAJ
CQkJRTE4MDgxMTQxNkZDRjlDQjAwQjgwRDA3IC8qIFN5bmNocm9ub3VzTG9hZGVyQ2xpZW50Lm1t
ICovLAogCQkJCTFGQUZCRjE2MTVBNUZBNTIwMDA4M0EyMCAvKiBVVElVdGlsaXRpZXMuaCAqLywK
IAkJCQkxRkFGQkYxNzE1QTVGQTUyMDAwODNBMjAgLyogVVRJVXRpbGl0aWVzLm1tICovLApAQCAt
MjEwMTIsNyArMjEwMDEsNiBAQAogCQkJCTFBRjhFMUMxMTI1NjczRTAwMDIzMEZGNyAvKiBQcm94
eVNlcnZlckNGTmV0LmNwcCAqLywKIAkJCQk3RUU2ODQ1NzEyRDI2RTM4MDBFNzk0MTUgLyogUmVz
b3VyY2VFcnJvci5oICovLAogCQkJCTdFRTY4NDU4MTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJj
ZUVycm9yQ0YuY3BwICovLAotCQkJCTdFRTY4NDU5MTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJj
ZUhhbmRsZUNGTmV0LmNwcCAqLywKIAkJCQkyNkZBRTRDODE4NTJFM0E1MDA0QzhDNDYgLyogUmVz
b3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5jcHAgKi8sCiAJCQkJMjZGQUU0Qzkx
ODUyRTNBNTAwNEM4QzQ2IC8qIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUu
aCAqLywKIAkJCQkyNkMxNUNGNDE4NTdFMTVEMDBGMTVDMDMgLyogUmVzb3VyY2VIYW5kbGVDRlVS
TENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5jcHAgKi8sCkBAIC0yOTkxNiwx
MSArMjk5MDQsOSBAQAogCQkJCTdFRTY4NDZCMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZUVy
cm9yQ0YuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE0Qzc2NTAwQ0U5MjM0RTAwN0VGM0NEIC8q
IFJlc291cmNlRXJyb3JNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MTRDNzY3ODBDRTkyM0Ex
MDA3RUYzQ0QgLyogUmVzb3VyY2VIYW5kbGUuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJN0VFNjg0
NkMxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlSGFuZGxlQ0ZOZXQuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMjZGQUU0Q0MxODUyRTNBNTAwNEM4QzQ2IC8qIFJlc291cmNlSGFuZGxlQ0ZVUkxD
b25uZWN0aW9uRGVsZWdhdGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMjZDMTVDRjYxODU3RTE1
RDAwRjE1QzAzIC8qIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3Bl
cmF0aW9uUXVldWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTFCQTAwMzExNkZCOTJBQzAwQkE3
QTM1IC8qIFJlc291cmNlSGFuZGxlQ2xpZW50LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTdFNDI4
Q0U1MTNFMzQwN0YwMDNCNjYxQyAvKiBSZXNvdXJjZUhhbmRsZUlPUy5tbSBpbiBTb3VyY2VzICov
LAogCQkJCTUxNEM3NjUxMENFOTIzNEUwMDdFRjNDRCAvKiBSZXNvdXJjZUhhbmRsZU1hYy5tbSBp
biBTb3VyY2VzICovLAogCQkJCTkzRTIyN0UzMEFGNTg5QUQwMEQ0ODMyNCAvKiBSZXNvdXJjZUxv
YWRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3RUU2ODQ3NTEyRDI2RTcwMDBFNzk0MTUgLyog
UmVzb3VyY2VMb2FkZXJDRk5ldC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI5OTMzLDggKzI5OTE5
LDYgQEAKIAkJCQk1MTRDNzY3QzBDRTkyM0ExMDA3RUYzQ0QgLyogUmVzb3VyY2VSZXF1ZXN0QmFz
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3RUU2ODQ2RTEyRDI2RTM4MDBFNzk0MTUgLyogUmVz
b3VyY2VSZXF1ZXN0Q0ZOZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0U3REUxRkQxOTVDRUYy
NjAwMzUzNjNCIC8qIFJlc291cmNlUmVxdWVzdENvY29hLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJ
N0U3REUyMDIxOTVDRUZDRDAwMzUzNjNCIC8qIFJlc291cmNlUmVxdWVzdElPUy5tbSBpbiBTb3Vy
Y2VzICovLAotCQkJCTUxNEM3NjUzMENFOTIzNEUwMDdFRjNDRCAvKiBSZXNvdXJjZVJlcXVlc3RN
YWMubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MTRDNzY3RTBDRTkyM0ExMDA3RUYzQ0QgLyogUmVz
b3VyY2VSZXNwb25zZUJhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0VFNjg0NzExMkQyNkUz
ODAwRTc5NDE1IC8qIFJlc291cmNlUmVzcG9uc2VDRk5ldC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlBMUY3OEQwQzFDMjU0MjRDMDAyNDU0NDYgLyogUmVzb3VyY2VSZXNwb25zZUNvY29hLm1tIGlu
IFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAko
cmV2aXNpb24gMjA3MDM1KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTU1LDcgKzU1LDcgQEAKICNpbmNsdWRlICJRdWlja0xvb2su
aCIKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oQ09DT0EpICYmICFVU0UoQ0ZORVRXT1JLKQorI2lm
IFBMQVRGT1JNKENPQ09BKQogI2luY2x1ZGUgPHd0Zi9TY2hlZHVsZVBhaXIuaD4KICNlbmRpZgog
CkBAIC0xNDUsNyArMTQ1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHNldFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mKTsKICAgICAg
ICAgY29uc3QgU3RyaW5nJiBvdmVycmlkZUVuY29kaW5nKCkgY29uc3QgeyByZXR1cm4gbV9vdmVy
cmlkZUVuY29kaW5nOyB9CiAKLSNpZiBQTEFURk9STShDT0NPQSkgJiYgIVVTRShDRk5FVFdPUksp
CisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgICAgIHZvaWQgc2NoZWR1bGUoU2NoZWR1bGVQYWly
Jik7CiAgICAgICAgIHZvaWQgdW5zY2hlZHVsZShTY2hlZHVsZVBhaXImKTsKICNlbmRpZgpJbmRl
eDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAkocmV2aXNpb24gMjA3MDM1KQorKysg
U291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCSh3b3JraW5nIGNvcHkpCkBAIC00
MDMsNyArNDAzLDcgQEAgcHVibGljOgogICAgIFJlbW90ZUFYT2JqZWN0UmVmIGFjY2Vzc2liaWxp
dHlSZW1vdGVPYmplY3QoKSBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9CiAgICAgTlNDYWNo
ZWRVUkxSZXNwb25zZSogd2lsbENhY2hlUmVzcG9uc2UoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25l
ZCBsb25nLCBOU0NhY2hlZFVSTFJlc3BvbnNlKiByZXNwb25zZSkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gcmVzcG9uc2U7IH0KICNlbmRpZgotI2lmIFBMQVRGT1JNKFdJTikgJiYgVVNFKENGTkVU
V09SSykKKyNpZiBQTEFURk9STShXSU4pICYmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAgICAgLy8g
RklYTUU6IFdpbmRvd3Mgc2hvdWxkIHVzZSB3aWxsQ2FjaGVSZXNwb25zZSAtIDxodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTcyNTc+LgogICAgIGJvb2wgc2hvdWxkQ2Fj
aGVSZXNwb25zZShEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcsIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmLCBjb25zdCB1bnNpZ25lZCBjaGFyKiwgdW5zaWduZWQgbG9uZyBsb25nKSBvdmVy
cmlkZSB7IHJldHVybiB0cnVlOyB9CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9GcmFtZUxvYWRlckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9GcmFtZUxvYWRlckNsaWVudC5oCShyZXZpc2lvbiAyMDcwMzUpCisrKyBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjk3LDcgKzI5
Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCBOU0NhY2hlZFVSTFJl
c3BvbnNlKiB3aWxsQ2FjaGVSZXNwb25zZShEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcg
aWRlbnRpZmllciwgTlNDYWNoZWRVUkxSZXNwb25zZSopIGNvbnN0ID0gMDsKICAgICAgICAgdmly
dHVhbCBOU0RpY3Rpb25hcnkgKmRhdGFEZXRlY3Rpb25Db250ZXh0KCkgeyByZXR1cm4gbnVsbHB0
cjsgfQogI2VuZGlmCi0jaWYgUExBVEZPUk0oV0lOKSAmJiBVU0UoQ0ZORVRXT1JLKQorI2lmIFBM
QVRGT1JNKFdJTikgJiYgVVNFKENGVVJMQ09OTkVDVElPTikKICAgICAgICAgLy8gRklYTUU6IFdp
bmRvd3Mgc2hvdWxkIHVzZSB3aWxsQ2FjaGVSZXNwb25zZSAtIDxodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTcyNTc+LgogICAgICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxk
Q2FjaGVSZXNwb25zZShEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGRhdGEsIHVuc2ln
bmVkIGxvbmcgbG9uZyBsZW5ndGgpID0gMDsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUv
bG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiAyMDcwMzUpCisrKyBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MTUsMTIg
KzcxNSw4IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVBdXRoZW50aWMKICAgICB9
CiAgICAgLy8gT25seSB0aGVzZSBwbGF0Zm9ybXMgcHJvdmlkZSBhIHdheSB0byBjb250aW51ZSB3
aXRob3V0IGNyZWRlbnRpYWxzLgogICAgIC8vIElmIHdlIGNhbid0IGNvbnRpbnVlIHdpdGggY3Jl
ZGVudGlhbHMsIHdlIG5lZWQgdG8gY2FuY2VsIHRoZSBsb2FkIGFsdG9nZXRoZXIuCi0jaWYgUExB
VEZPUk0oQ09DT0EpIHx8IFVTRShDRk5FVFdPUkspIHx8IFVTRShDVVJMKSB8fCBQTEFURk9STShH
VEspIHx8IFBMQVRGT1JNKEVGTCkKICAgICBjaGFsbGVuZ2UuYXV0aGVudGljYXRpb25DbGllbnQo
KS0+cmVjZWl2ZWRSZXF1ZXN0VG9Db250aW51ZVdpdGhvdXRDcmVkZW50aWFsKGNoYWxsZW5nZSk7
CiAgICAgQVNTRVJUKCFtX2hhbmRsZSB8fCAhbV9oYW5kbGUtPmhhc0F1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlKCkpOwotI2Vsc2UKLSAgICBkaWRGYWlsKGJsb2NrZWRFcnJvcigpKTsKLSNlbmRpZgog
fQogCiAjaWYgVVNFKFBST1RFQ1RJT05fU1BBQ0VfQVVUSF9DQUxMQkFDSykKQEAgLTc0Nyw3ICs3
NDMsNyBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpyZWNlaXZlZENhbmNlbGxhdGlvCiAgICAgY2Fu
Y2VsKCk7CiB9CiAKLSNpZiBQTEFURk9STShDT0NPQSkgJiYgIVVTRShDRk5FVFdPUkspCisjaWYg
UExBVEZPUk0oQ09DT0EpCiAKIHZvaWQgUmVzb3VyY2VMb2FkZXI6OnNjaGVkdWxlKFNjaGVkdWxl
UGFpciYgcGFpcikKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5o
CShyZXZpc2lvbiAyMDcwMzUpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2Fk
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTQzLDcgKzE0Myw3IEBAIHB1YmxpYzoKIAogICAgIGNv
bnN0IExvYWRUaW1pbmcmIGxvYWRUaW1pbmcoKSB7IHJldHVybiBtX2xvYWRUaW1pbmc7IH0KIAot
I2lmIFBMQVRGT1JNKENPQ09BKSAmJiAhVVNFKENGTkVUV09SSykKKyNpZiBQTEFURk9STShDT0NP
QSkKICAgICB2b2lkIHNjaGVkdWxlKFdURjo6U2NoZWR1bGVQYWlyJik7CiAgICAgdm9pZCB1bnNj
aGVkdWxlKFdURjo6U2NoZWR1bGVQYWlyJik7CiAjZW5kaWYKQEAgLTE2MywxMiArMTYzLDkgQEAg
cHJvdGVjdGVkOgogCiAgICAgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJiBvcHRpb25zKCkg
eyByZXR1cm4gbV9vcHRpb25zOyB9CiAKLSNpZiBQTEFURk9STShDT0NPQSkgJiYgIVVTRShDRk5F
VFdPUkspCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgTlNDYWNoZWRVUkxSZXNwb25zZSogd2ls
bENhY2hlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqLCBOU0NhY2hlZFVSTFJlc3BvbnNlKikgb3Zl
cnJpZGU7CiAjZW5kaWYKLSNpZiBQTEFURk9STShDT0NPQSkgJiYgVVNFKENGTkVUV09SSykKLSAg
ICBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmIHdpbGxDYWNoZVJlc3BvbnNlKFJlc291cmNlSGFuZGxl
KiwgQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZikgb3ZlcnJpZGU7Ci0jZW5kaWYKIAogICAgIHZpcnR1
YWwgdm9pZCB3aWxsU2VuZFJlcXVlc3RJbnRlcm5hbChSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKTsKIApAQCAtMjA4LDcgKzIwNSw3IEBA
IHByaXZhdGU6CiAjaWYgUExBVEZPUk0oSU9TKQogICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlS
ZWY+IGNvbm5lY3Rpb25Qcm9wZXJ0aWVzKFJlc291cmNlSGFuZGxlKikgb3ZlcnJpZGU7CiAjZW5k
aWYKLSNpZiBQTEFURk9STShXSU4pICYmIFVTRShDRk5FVFdPUkspCisjaWYgUExBVEZPUk0oV0lO
KSAmJiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogICAgIC8vIEZJWE1FOiBXaW5kb3dzIHNob3VsZCB1
c2Ugd2lsbENhY2hlUmVzcG9uc2UgLSA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTU3MjU3Pi4KICAgICBib29sIHNob3VsZENhY2hlUmVzcG9uc2UoUmVzb3VyY2VIYW5k
bGUqLCBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmKSBvdmVycmlkZTsKICNlbmRpZgpJbmRleDogU291
cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmgJKHJldmlzaW9uIDIwNzAzNSkK
KysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC03NCwxMiArNzQsOSBAQCBwcml2YXRlOgogICAgIHZvaWQgd2lsbENhbmNlbChjb25z
dCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRDYW5jZWwoY29uc3QgUmVz
b3VyY2VFcnJvciYpIG92ZXJyaWRlOwogCi0jaWYgUExBVEZPUk0oQ09DT0EpICYmICFVU0UoQ0ZO
RVRXT1JLKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIE5TQ2FjaGVkVVJMUmVzcG9uc2UgKndp
bGxDYWNoZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlKiwgTlNDYWNoZWRVUkxSZXNwb25zZSopIG92
ZXJyaWRlOwogI2VuZGlmCi0jaWYgUExBVEZPUk0oQ09DT0EpICYmIFVTRShDRk5FVFdPUkspCi0g
ICAgQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZiB3aWxsQ2FjaGVSZXNwb25zZShSZXNvdXJjZUhhbmRs
ZSosIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYpIG92ZXJyaWRlOwotI2VuZGlmCiAKICNpZiBVU0Uo
TkVUV09SS19DRkRBVEFfQVJSQVlfQ0FMTEJBQ0spCiAgICAgYm9vbCBzdXBwb3J0c0RhdGFBcnJh
eSgpIG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jZi9SZXNvdXJjZUxvYWRlckNGTmV0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2YvUmVzb3VyY2VMb2FkZXJDRk5ldC5jcHAJKHJldmlzaW9uIDIwNzAzNSkKKysr
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jZi9SZXNvdXJjZUxvYWRlckNGTmV0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjYsMTUgKzI2LDEzIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiUmVzb3VyY2VMb2FkZXIuaCIKIAotI2lmIFVTRShDRk5FVFdPUkspCisjaWYgVVNFKENGVVJM
Q09OTkVDVElPTikKIAogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiRnJhbWVM
b2FkZXJDbGllbnQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0jaWYgUExBVEZPUk0oV0lO
KQotCiBib29sIFJlc291cmNlTG9hZGVyOjpzaG91bGRDYWNoZVJlc3BvbnNlKFJlc291cmNlSGFu
ZGxlKiwgQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZiBjYWNoZWRSZXNwb25zZSkKIHsKICAgICBpZiAo
bV9vcHRpb25zLnNlbmRMb2FkQ2FsbGJhY2tzID09IERvTm90U2VuZENhbGxiYWNrcykKQEAgLTQ1
LDggKzQzLDYgQEAgYm9vbCBSZXNvdXJjZUxvYWRlcjo6c2hvdWxkQ2FjaGVSZXNwb25zZQogICAg
IHJldHVybiBmcmFtZUxvYWRlcigpLT5jbGllbnQoKS5zaG91bGRDYWNoZVJlc3BvbnNlKGRvY3Vt
ZW50TG9hZGVyKCksIGlkZW50aWZpZXIoKSwgcmVzcG9uc2UsIENGRGF0YUdldEJ5dGVQdHIoZGF0
YSksIENGRGF0YUdldExlbmd0aChkYXRhKSk7CiB9CiAKLSNlbmRpZgotCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCiAKLSNlbmRpZiAvLyBVU0UoQ0ZORVRXT1JLKQorI2VuZGlmIC8vIFVTRShDRlVS
TENPTk5FQ1RJT04pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvU3VicmVzb3Vy
Y2VMb2FkZXJDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29j
b2EvU3VicmVzb3VyY2VMb2FkZXJDb2NvYS5tbQkocmV2aXNpb24gMjA3MDM1KQorKysgU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NvY29hL1N1YnJlc291cmNlTG9hZGVyQ29jb2EubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTM1LDE4ICszNSw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotI2lmIFVT
RShDRk5FVFdPUkspCi0KLUNGQ2FjaGVkVVJMUmVzcG9uc2VSZWYgU3VicmVzb3VyY2VMb2FkZXI6
OndpbGxDYWNoZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIENGQ2FjaGVkVVJMUmVz
cG9uc2VSZWYgY2FjaGVkUmVzcG9uc2UpCi17Ci0gICAgRGlza0NhY2hlTW9uaXRvcjo6bW9uaXRv
ckZpbGVCYWNraW5nU3RvcmVDcmVhdGlvbihyZXF1ZXN0KCksIG1fcmVzb3VyY2UtPnNlc3Npb25J
RCgpLCBjYWNoZWRSZXNwb25zZSk7Ci0gICAgaWYgKCFtX3Jlc291cmNlLT5zaG91bGRDYWNoZVJl
c3BvbnNlKENGQ2FjaGVkVVJMUmVzcG9uc2VHZXRXcmFwcGVkUmVzcG9uc2UoY2FjaGVkUmVzcG9u
c2UpKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIFJlc291cmNlTG9hZGVy
Ojp3aWxsQ2FjaGVSZXNwb25zZShoYW5kbGUsIGNhY2hlZFJlc3BvbnNlKTsKLX0KLQotI2Vsc2UK
LQogTlNDYWNoZWRVUkxSZXNwb25zZSogU3VicmVzb3VyY2VMb2FkZXI6OndpbGxDYWNoZVJlc3Bv
bnNlKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIE5TQ2FjaGVkVVJMUmVzcG9uc2UqIHJlc3BvbnNl
KQogewogICAgIERpc2tDYWNoZU1vbml0b3I6Om1vbml0b3JGaWxlQmFja2luZ1N0b3JlQ3JlYXRp
b24ocmVxdWVzdCgpLCBtX3Jlc291cmNlLT5zZXNzaW9uSUQoKSwgW3Jlc3BvbnNlIF9DRkNhY2hl
ZFVSTFJlc3BvbnNlXSk7CkBAIC01NSw2ICs0Myw0IEBAIE5TQ2FjaGVkVVJMUmVzcG9uc2UqIFN1
YnJlc291cmNlTG9hZGVyOjoKICAgICByZXR1cm4gUmVzb3VyY2VMb2FkZXI6OndpbGxDYWNoZVJl
c3BvbnNlKGhhbmRsZSwgcmVzcG9uc2UpOwogfQogCi0jZW5kaWYKLQogfQpJbmRleDogU291cmNl
L1dlYkNvcmUvbG9hZGVyL21hYy9Eb2N1bWVudExvYWRlck1hYy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvbG9hZGVyL21hYy9Eb2N1bWVudExvYWRlck1hYy5jcHAJKHJldmlzaW9u
IDIwNzAzNSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9tYWMvRG9jdW1lbnRMb2FkZXJNYWMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw4ICszMyw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotI2lmICFVU0UoQ0ZORVRXT1JLKQotCiBzdGF0aWMgdm9pZCBzY2hlZHVsZUFsbChjb25z
dCBSZXNvdXJjZUxvYWRlck1hcCYgbG9hZGVycywgU2NoZWR1bGVQYWlyJiBwYWlyKQogewogICAg
IFZlY3RvcjxSZWZQdHI8UmVzb3VyY2VMb2FkZXI+PiBsb2FkZXJzQ29weTsKQEAgLTY5LDYgKzY3
LDQgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6dW5zY2hlZHVsZShTY2hlZHVsZQogICAgIHVuc2No
ZWR1bGVBbGwobV9tdWx0aXBhcnRTdWJyZXNvdXJjZUxvYWRlcnMsIHBhaXIpOwogfQogCi0jZW5k
aWYKLQotfSAvLyBuYW1lc3BhY2UKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9tYWMvUmVzb3VyY2VMb2FkZXJNYWMubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvbG9hZGVyL21hYy9SZXNvdXJjZUxvYWRlck1hYy5tbQkocmV2aXNpb24g
MjA3MDM1KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL21hYy9SZXNvdXJjZUxvYWRlck1hYy5t
bQkod29ya2luZyBjb3B5KQpAQCAtMzYsMTkgKzM2LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi0jaWYgVVNFKENGTkVUV09SSykKLQotQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZiBSZXNvdXJj
ZUxvYWRlcjo6d2lsbENhY2hlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqLCBDRkNhY2hlZFVSTFJl
c3BvbnNlUmVmIGNhY2hlZFJlc3BvbnNlKQotewotICAgIGlmIChtX29wdGlvbnMuc2VuZExvYWRD
YWxsYmFja3MgPT0gRG9Ob3RTZW5kQ2FsbGJhY2tzKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LQotICAgIFJldGFpblB0cjxOU0NhY2hlZFVSTFJlc3BvbnNlPiBuc0NhY2hlZFJlc3BvbnNlID0g
YWRvcHROUyhbW05TQ2FjaGVkVVJMUmVzcG9uc2UgYWxsb2NdIF9pbml0V2l0aENGQ2FjaGVkVVJM
UmVzcG9uc2U6Y2FjaGVkUmVzcG9uc2VdKTsKLSAgICByZXR1cm4gW2ZyYW1lTG9hZGVyKCktPmNs
aWVudCgpLndpbGxDYWNoZVJlc3BvbnNlKGRvY3VtZW50TG9hZGVyKCksIGlkZW50aWZpZXIoKSwg
bnNDYWNoZWRSZXNwb25zZS5nZXQoKSkgX0NGQ2FjaGVkVVJMUmVzcG9uc2VdOwotfQotCi0jZWxz
ZQotCiBOU0NhY2hlZFVSTFJlc3BvbnNlKiBSZXNvdXJjZUxvYWRlcjo6d2lsbENhY2hlUmVzcG9u
c2UoUmVzb3VyY2VIYW5kbGUqLCBOU0NhY2hlZFVSTFJlc3BvbnNlKiByZXNwb25zZSkKIHsKICAg
ICBpZiAobV9vcHRpb25zLnNlbmRMb2FkQ2FsbGJhY2tzID09IERvTm90U2VuZENhbGxiYWNrcykK
QEAgLTU2LDggKzQzLDYgQEAgTlNDYWNoZWRVUkxSZXNwb25zZSogUmVzb3VyY2VMb2FkZXI6Ondp
bAogICAgIHJldHVybiBmcmFtZUxvYWRlcigpLT5jbGllbnQoKS53aWxsQ2FjaGVSZXNwb25zZShk
b2N1bWVudExvYWRlcigpLCBpZGVudGlmaWVyKCksIHJlc3BvbnNlKTsKIH0KIAotI2VuZGlmCi0K
ICNpZiBVU0UoTkVUV09SS19DRkRBVEFfQVJSQVlfQ0FMTEJBQ0spCiAKIHZvaWQgUmVzb3VyY2VM
b2FkZXI6OmRpZFJlY2VpdmVEYXRhQXJyYXkoQ0ZBcnJheVJlZiBkYXRhQXJyYXkpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wYWdlL21hYy9QYWdlTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvbWFjL1BhZ2VNYWMubW0JKHJldmlzaW9uIDIwNzAzNSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvbWFjL1BhZ2VNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTQ1LDExICs0NSw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHZvaWQgUGFnZTo6cGxhdGZvcm1Jbml0aWFsaXplKCkK
IHsKICNpZiBQTEFURk9STShJT1MpCi0jaWYgVVNFKENGTkVUV09SSykKLSAgICBhZGRTY2hlZHVs
ZVBhaXIoU2NoZWR1bGVQYWlyOjpjcmVhdGUoV2ViVGhyZWFkUnVuTG9vcCgpLCBrQ0ZSdW5Mb29w
Q29tbW9uTW9kZXMpKTsKLSNlbHNlCiAgICAgYWRkU2NoZWR1bGVQYWlyKFNjaGVkdWxlUGFpcjo6
Y3JlYXRlKFdlYlRocmVhZE5TUnVuTG9vcCgpLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpKTsKLSNl
bmRpZiAvLyBVU0UoQ0ZORVRXT1JLKQogI2Vsc2UKICAgICBhZGRTY2hlZHVsZVBhaXIoU2NoZWR1
bGVQYWlyOjpjcmVhdGUoW05TUnVuTG9vcCBjdXJyZW50UnVuTG9vcF0sIGtDRlJ1bkxvb3BDb21t
b25Nb2RlcykpOwogI2VuZGlmCkBAIC02OSwxNCArNjUsMTIgQEAgdm9pZCBQYWdlOjphZGRTY2hl
ZHVsZVBhaXIoUmVmPFNjaGVkdWxlUAogICAgICAgICBtX3NjaGVkdWxlZFJ1bkxvb3BQYWlycyA9
IHN0ZDo6bWFrZV91bmlxdWU8U2NoZWR1bGVQYWlySGFzaFNldD4oKTsKICAgICBtX3NjaGVkdWxl
ZFJ1bkxvb3BQYWlycy0+YWRkKHBhaXIucHRyKCkpOwogCi0jaWYgIVVTRShDRk5FVFdPUkspCiAg
ICAgZm9yIChGcmFtZSogZnJhbWUgPSAmbV9tYWluRnJhbWUuZ2V0KCk7IGZyYW1lOyBmcmFtZSA9
IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KCkpIHsKICAgICAgICAgaWYgKERvY3VtZW50TG9h
ZGVyKiBkb2N1bWVudExvYWRlciA9IGZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpKQog
ICAgICAgICAgICAgZG9jdW1lbnRMb2FkZXItPnNjaGVkdWxlKHBhaXIpOwogICAgICAgICBpZiAo
RG9jdW1lbnRMb2FkZXIqIGRvY3VtZW50TG9hZGVyID0gZnJhbWUtPmxvYWRlcigpLnByb3Zpc2lv
bmFsRG9jdW1lbnRMb2FkZXIoKSkKICAgICAgICAgICAgIGRvY3VtZW50TG9hZGVyLT5zY2hlZHVs
ZShwYWlyKTsKICAgICB9Ci0jZW5kaWYKIAogICAgIC8vIEZJWE1FOiBtYWtlIFNoYXJlZFRpbWVy
TWFjIHVzZSB0aGVzZSBTY2hlZHVsZVBhaXJzLgogfQpAQCAtODksMTQgKzgzLDEyIEBAIHZvaWQg
UGFnZTo6cmVtb3ZlU2NoZWR1bGVQYWlyKFJlZjxTY2hlZHUKIAogICAgIG1fc2NoZWR1bGVkUnVu
TG9vcFBhaXJzLT5yZW1vdmUocGFpci5wdHIoKSk7CiAKLSNpZiAhVVNFKENGTkVUV09SSykKICAg
ICBmb3IgKEZyYW1lKiBmcmFtZSA9ICZtX21haW5GcmFtZS5nZXQoKTsgZnJhbWU7IGZyYW1lID0g
ZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoKSkgewogICAgICAgICBpZiAoRG9jdW1lbnRMb2Fk
ZXIqIGRvY3VtZW50TG9hZGVyID0gZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCkpCiAg
ICAgICAgICAgICBkb2N1bWVudExvYWRlci0+dW5zY2hlZHVsZShwYWlyKTsKICAgICAgICAgaWYg
KERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlciA9IGZyYW1lLT5sb2FkZXIoKS5wcm92aXNp
b25hbERvY3VtZW50TG9hZGVyKCkpCiAgICAgICAgICAgICBkb2N1bWVudExvYWRlci0+dW5zY2hl
ZHVsZShwYWlyKTsKICAgICB9Ci0jZW5kaWYKIH0KIAogfSAvLyBuYW1lc3BhY2UKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQy5tbQkocmV2aXNpb24gMjA3MDM1KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTA5LDEwICsxMDksNiBAQAogI2lt
cG9ydCA8VmlkZW9Ub29sYm94L1ZpZGVvVG9vbGJveC5oPgogI2VuZGlmCiAKLSNpZiBVU0UoQ0ZO
RVRXT1JLKQotI2luY2x1ZGUgIkNGTlNVUkxDb25uZWN0aW9uU1BJLmgiCi0jZW5kaWYKLQogI2lt
cG9ydCAiQ29yZVZpZGVvU29mdExpbmsuaCIKIAogbmFtZXNwYWNlIHN0ZCB7CkBAIC0zNzIsNTgg
KzM2OCw2IEBAIHN0YXRpYyBkaXNwYXRjaF9xdWV1ZV90IGdsb2JhbFB1bGxEZWxlZ2EKIH0KICNl
bmRpZgogCi0jaWYgVVNFKENGTkVUV09SSykKLWNsYXNzIFdlYkNvcmVOU1VSTEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlQ2xpZW50IDogcHVibGljIFJlZkNvdW50ZWQ8V2ViQ29yZU5TVVJMQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2VDbGllbnQ+LCBwdWJsaWMgQXV0aGVudGljYXRpb25DbGllbnQgewot
cHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8V2ViQ29yZU5TVVJMQXV0aGVudGljYXRpb25DaGFs
bGVuZ2VDbGllbnQ+IGNyZWF0ZShOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICpjaGFsbGVu
Z2UpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkNvcmVOU1VSTEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlQ2xpZW50KGNoYWxsZW5nZSkpOwotICAgIH0KLQotICAgIHVzaW5n
IFJlZkNvdW50ZWQ8V2ViQ29yZU5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VDbGllbnQ+Ojpy
ZWY7Ci0gICAgdXNpbmcgUmVmQ291bnRlZDxXZWJDb3JlTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZUNsaWVudD46OmRlcmVmOwotCi1wcml2YXRlOgotICAgIFdlYkNvcmVOU1VSTEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlQ2xpZW50KE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKmNoYWxs
ZW5nZSkKLSAgICAgICAgOiBtX2NoYWxsZW5nZShjaGFsbGVuZ2UpCi0gICAgewotICAgICAgICBB
U1NFUlQobV9jaGFsbGVuZ2UpOwotICAgIH0KLQotICAgIHZvaWQgcmVmQXV0aGVudGljYXRpb25D
bGllbnQoKSBvdmVycmlkZSB7IHJlZigpOyB9Ci0gICAgdm9pZCBkZXJlZkF1dGhlbnRpY2F0aW9u
Q2xpZW50KCkgb3ZlcnJpZGUgeyBkZXJlZigpOyB9Ci0KLSAgICB2b2lkIHJlY2VpdmVkQ3JlZGVu
dGlhbChjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYsIGNvbnN0IENyZWRlbnRpYWwmIGNy
ZWRlbnRpYWwpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBbW21fY2hhbGxlbmdlIHNlbmRlcl0g
dXNlQ3JlZGVudGlhbDpjcmVkZW50aWFsLm5zQ3JlZGVudGlhbCgpIGZvckF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlOm1fY2hhbGxlbmdlLmdldCgpXTsKLSAgICB9Ci0KLSAgICB2b2lkIHJlY2VpdmVk
UmVxdWVzdFRvQ29udGludWVXaXRob3V0Q3JlZGVudGlhbChjb25zdCBBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSYpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBbW21fY2hhbGxlbmdlIHNlbmRlcl0g
Y29udGludWVXaXRob3V0Q3JlZGVudGlhbEZvckF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOm1fY2hh
bGxlbmdlLmdldCgpXTsKLSAgICB9Ci0KLSAgICB2b2lkIHJlY2VpdmVkQ2FuY2VsbGF0aW9uKGNv
bnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIFtb
bV9jaGFsbGVuZ2Ugc2VuZGVyXSBjYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTptX2NoYWxs
ZW5nZS5nZXQoKV07Ci0gICAgfQotCi0gICAgdm9pZCByZWNlaXZlZFJlcXVlc3RUb1BlcmZvcm1E
ZWZhdWx0SGFuZGxpbmcoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKSBvdmVycmlkZQot
ICAgIHsKLSAgICAgICAgaWYgKFtbbV9jaGFsbGVuZ2Ugc2VuZGVyXSByZXNwb25kc1RvU2VsZWN0
b3I6QHNlbGVjdG9yKHBlcmZvcm1EZWZhdWx0SGFuZGxpbmdGb3JBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZTopXSkKLSAgICAgICAgICAgIFtbbV9jaGFsbGVuZ2Ugc2VuZGVyXSBwZXJmb3JtRGVmYXVs
dEhhbmRsaW5nRm9yQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6bV9jaGFsbGVuZ2UuZ2V0KCldOwot
ICAgIH0KLQotICAgIHZvaWQgcmVjZWl2ZWRDaGFsbGVuZ2VSZWplY3Rpb24oY29uc3QgQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UmKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgaWYgKFtbbV9jaGFs
bGVuZ2Ugc2VuZGVyXSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHJlamVjdFByb3RlY3Rp
b25TcGFjZUFuZENvbnRpbnVlV2l0aENoYWxsZW5nZTopXSkKLSAgICAgICAgICAgIFtbbV9jaGFs
bGVuZ2Ugc2VuZGVyXSByZWplY3RQcm90ZWN0aW9uU3BhY2VBbmRDb250aW51ZVdpdGhDaGFsbGVu
Z2U6bV9jaGFsbGVuZ2UuZ2V0KCldOwotICAgIH0KLQotICAgIFJldGFpblB0cjxOU1VSTEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlPiBtX2NoYWxsZW5nZTsKLX07Ci0jZW5kaWYKLQogdm9pZCBNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpyZWdpc3Rlck1lZGlhRW5naW5lKE1lZGlh
RW5naW5lUmVnaXN0cmFyIHJlZ2lzdHJhcikKIHsKICAgICBpZiAoIWlzQXZhaWxhYmxlKCkpCkBA
IC0xNzk3LDE1ICsxNzQxLDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDOgogCiBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNob3VsZFdh
aXRGb3JSZXNwb25zZVRvQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoTlNVUkxBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSogbnNDaGFsbGVuZ2UpCiB7Ci0jaWYgVVNFKENGTkVUV09SSykKLSAgICBSZWZQ
dHI8V2ViQ29yZU5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VDbGllbnQ+IGNsaWVudCA9IFdl
YkNvcmVOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQ2xpZW50OjpjcmVhdGUobnNDaGFsbGVu
Z2UpOwotICAgIFJldGFpblB0cjxDRlVSTEF1dGhDaGFsbGVuZ2VSZWY+IGNmQ2hhbGxlbmdlID0g
YWRvcHRDRihbbnNDaGFsbGVuZ2UgX2NyZWF0ZUNGQXV0aENoYWxsZW5nZV0pOwotICAgIEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlIGNoYWxsZW5nZShjZkNoYWxsZW5nZS5nZXQoKSwgY2xpZW50Lmdl
dCgpKTsKLSNlbHNlCi0gICAgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgY2hhbGxlbmdlKG5zQ2hh
bGxlbmdlKTsKLSNlbmRpZgotCi0gICAgcmV0dXJuIHBsYXllcigpLT5zaG91bGRXYWl0Rm9yUmVz
cG9uc2VUb0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNoYWxsZW5nZSk7CisgICAgcmV0dXJuIHBs
YXllcigpLT5zaG91bGRXYWl0Rm9yUmVzcG9uc2VUb0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKG5zQ2hhbGxlbmdlKSk7CiB9CiAKIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6ZGlkQ2FuY2VsTG9hZGluZ1JlcXVlc3QoQVZBc3Nl
dFJlc291cmNlTG9hZGluZ1JlcXVlc3QqIGF2UmVxdWVzdCkKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaAkocmV2aXNp
b24gMjA3MDM1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1J
bnRlcmZhY2UuaAkod29ya2luZyBjb3B5KQpAQCAtNzcsNyArNzcsNyBAQCB0eXBlZGVmIHN0cnVj
dCBfTlNSZWN0IE5TUmVjdDsKICNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ29yZUdyYXBoaWNzLmg+
CiAjZW5kaWYKIAotI2lmIFVTRShDRk5FVFdPUkspCisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikK
IHR5cGVkZWYgc3RydWN0IE9wYXF1ZUNGSFRUUENvb2tpZVN0b3JhZ2UqICBDRkhUVFBDb29raWVT
dG9yYWdlUmVmOwogdHlwZWRlZiBzdHJ1Y3QgX0NGVVJMUHJvdGVjdGlvblNwYWNlKiBDRlVSTFBy
b3RlY3Rpb25TcGFjZVJlZjsKIHR5cGVkZWYgc3RydWN0IF9DRlVSTENyZWRlbnRpYWwqIFdLQ0ZV
UkxDcmVkZW50aWFsUmVmOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9O
ZXR3b3JrU3RvcmFnZVNlc3Npb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oCShyZXZpc2lvbiAyMDcwMzUpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw3IEBACiAjaW5jbHVkZSAiU2Vzc2lvbklELmgi
CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKLSNpZiBQTEFURk9STShDT0NPQSkg
fHwgVVNFKENGTkVUV09SSykKKyNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKENGVVJMQ09OTkVD
VElPTikKICNpbmNsdWRlICJDRk5ldHdvcmtTUEkuaCIKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRy
Lmg+CiAjZW5kaWYKQEAgLTU5LDcgKzU5LDcgQEAgcHVibGljOgogICAgIFNlc3Npb25JRCBzZXNz
aW9uSUQoKSBjb25zdCB7IHJldHVybiBtX3Nlc3Npb25JRDsgfQogICAgIENyZWRlbnRpYWxTdG9y
YWdlJiBjcmVkZW50aWFsU3RvcmFnZSgpIHsgcmV0dXJuIG1fY3JlZGVudGlhbFN0b3JhZ2U7IH0K
IAotI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZORVRXT1JLKQorI2lmIFBMQVRGT1JNKENP
Q09BKSB8fCBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbihT
ZXNzaW9uSUQsIFJldGFpblB0cjxDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmPik7CiAKICAgICAvLyBN
YXkgYmUgbnVsbCwgaW4gd2hpY2ggY2FzZSBhIEZvdW5kYXRpb24gZGVmYXVsdCBzaG91bGQgYmUg
dXNlZC4KQEAgLTg0LDcgKzg0LDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgSGFzaE1hcDxTZXNz
aW9uSUQsIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrU3RvcmFnZVNlc3Npb24+PiYgZ2xvYmFsU2Vz
c2lvbk1hcCgpOwogICAgIFNlc3Npb25JRCBtX3Nlc3Npb25JRDsKIAotI2lmIFBMQVRGT1JNKENP
Q09BKSB8fCBVU0UoQ0ZORVRXT1JLKQorI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZVUkxD
T05ORUNUSU9OKQogICAgIFJldGFpblB0cjxDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmPiBtX3BsYXRm
b3JtU2Vzc2lvbjsKICNlbGlmIFVTRShTT1VQKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxTb3VwTmV0
d29ya1Nlc3Npb24+IG1fc2Vzc2lvbjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvUHJvdGVjdGlvblNwYWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9Qcm90ZWN0aW9uU3BhY2UuaAkocmV2aXNpb24gMjA3MDM1KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Qcm90ZWN0aW9uU3BhY2UuaAkod29ya2luZyBj
b3B5KQpAQCAtMjMsMTIgKzIzLDExIEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCi0jaWZuZGVm
IFByb3RlY3Rpb25TcGFjZV9oCi0jZGVmaW5lIFByb3RlY3Rpb25TcGFjZV9oCisjcHJhZ21hIG9u
Y2UKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogI2luY2x1ZGUgIlByb3RlY3Rpb25TcGFjZUNvY29h
LmgiCi0jZWxpZiBVU0UoQ0ZORVRXT1JLKQorI2VsaWYgVVNFKENGVVJMQ09OTkVDVElPTikKICNp
bmNsdWRlICJQcm90ZWN0aW9uU3BhY2VDRk5ldC5oIgogI2Vsc2UKIApAQCAtNTAsNSArNDksMyBA
QCBwdWJsaWM6CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZgotCi0jZW5kaWYgLy8g
UHJvdGVjdGlvblNwYWNlX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
UHJvdGVjdGlvblNwYWNlQmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9Qcm90ZWN0aW9uU3BhY2VCYXNlLmNwcAkocmV2aXNpb24gMjA3MDM1KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Qcm90ZWN0aW9uU3BhY2VCYXNlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjcsMTEgKzI3LDYgQEAKIAogI2luY2x1ZGUgIlByb3RlY3Rp
b25TcGFjZS5oIgogCi0jaWYgVVNFKENGTkVUV09SSykgJiYgIVBMQVRGT1JNKENPQ09BKQotI2lu
Y2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ0YuaCIKLSNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZVUkxQcm90
ZWN0aW9uU3BhY2VQcml2Lmg+Ci0jZW5kaWYKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAvLyBO
ZWVkIHRvIGVuZm9yY2UgZW1wdHksIG5vbi1udWxsIHN0cmluZ3MgZHVlIHRvIHRoZSBwaWNraW5l
c3Mgb2YgdGhlIFN0cmluZyA9PSBTdHJpbmcgb3BlcmF0b3IKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuY3BwCShyZXZpc2lvbiAy
MDcwMzUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU0LDcgKzE1NCw3IEBAIHZvaWQgUmVzb3VyY2VIYW5k
bGU6OmNsZWFyQ2xpZW50KCkKICAgICBkLT5tX2NsaWVudCA9IG51bGxwdHI7CiB9CiAKLSNpZiAh
UExBVEZPUk0oQ09DT0EpICYmICFVU0UoQ0ZORVRXT1JLKSAmJiAhVVNFKFNPVVApCisjaWYgIVBM
QVRGT1JNKENPQ09BKSAmJiAhVVNFKENGVVJMQ09OTkVDVElPTikgJiYgIVVTRShTT1VQKQogLy8g
UmVzb3VyY2VIYW5kbGUgbmV2ZXIgdXNlcyBhc3luYyBjbGllbnQgY2FsbHMgb24gdGhlc2UgcGxh
dGZvcm1zIHlldC4KIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0
KFJlc291cmNlUmVxdWVzdCYmKQogewpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9SZXNvdXJjZUhhbmRsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaAkocmV2aXNpb24gMjA3MDM1KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zMSw3ICszMSw3IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkUHJpb3JpdHkuaCIKICNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCi0jaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShD
Rk5FVFdPUkspCisjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRlVSTENPTk5FQ1RJT04pCiAj
aW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2VuZGlmCiAKQEAgLTYwLDE0ICs2MCwxNCBAQCB0
eXBlZGVmIHN0cnVjdCBvYmpjX29iamVjdCAqaWQ7CiAjZW5kaWYKICNlbmRpZgogCi0jaWYgVVNF
KENGTkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogdHlwZWRlZiBjb25zdCBzdHJ1
Y3QgX0NGQ2FjaGVkVVJMUmVzcG9uc2UqIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWY7CiB0eXBlZGVm
IHN0cnVjdCBfQ0ZVUkxDb25uZWN0aW9uKiBDRlVSTENvbm5lY3Rpb25SZWY7CiB0eXBlZGVmIGlu
dCBDRkhUVFBDb29raWVTdG9yYWdlQWNjZXB0UG9saWN5OwogdHlwZWRlZiBzdHJ1Y3QgT3BhcXVl
Q0ZIVFRQQ29va2llU3RvcmFnZSogQ0ZIVFRQQ29va2llU3RvcmFnZVJlZjsKICNlbmRpZgogCi0j
aWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRk5FVFdPUkspCisjaWYgUExBVEZPUk0oQ09DT0Ep
IHx8IFVTRShDRlVSTENPTk5FQ1RJT04pCiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBfX0NGVVJMU3Rv
cmFnZVNlc3Npb24qIENGVVJMU3RvcmFnZVNlc3Npb25SZWY7CiAjZW5kaWYKIApAQCAtOTIsMjIg
KzkyLDE3IEBAIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiBj
bGFzcyBUaW1lcjsKIAotY2xhc3MgUmVzb3VyY2VIYW5kbGUgOiBwdWJsaWMgUmVmQ291bnRlZDxS
ZXNvdXJjZUhhbmRsZT4KLSNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKENGTkVUV09SSykgfHwg
VVNFKENVUkwpIHx8IFVTRShTT1VQKQotICAgICwgcHVibGljIEF1dGhlbnRpY2F0aW9uQ2xpZW50
Ci0jZW5kaWYKLSAgICB7CitjbGFzcyBSZXNvdXJjZUhhbmRsZSA6IHB1YmxpYyBSZWZDb3VudGVk
PFJlc291cmNlSGFuZGxlPiAsIHB1YmxpYyBBdXRoZW50aWNhdGlvbkNsaWVudCB7CiBwdWJsaWM6
CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxSZXNvdXJjZUhhbmRsZT4gY3JlYXRl
KE5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUmVzb3VyY2VIYW5k
bGVDbGllbnQqLCBib29sIGRlZmVyc0xvYWRpbmcsIGJvb2wgc2hvdWxkQ29udGVudFNuaWZmKTsK
ICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5
KE5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgU3RvcmVkQ3JlZGVu
dGlhbHMsIFJlc291cmNlRXJyb3ImLCBSZXNvdXJjZVJlc3BvbnNlJiwgVmVjdG9yPGNoYXI+JiBk
YXRhKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgflJlc291cmNlSGFuZGxlKCk7CiAK
LSNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKENGTkVUV09SSykKKyNpZiBQTEFURk9STShDT0NP
QSkgfHwgVVNFKENGVVJMQ09OTkVDVElPTikKICAgICBSZXNvdXJjZVJlcXVlc3Qgd2lsbFNlbmRS
ZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmLCBSZXNvdXJjZVJlc3BvbnNlJiYpOwogI2VuZGlmCiAK
LSNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKENGTkVUV09SSykgfHwgVVNFKENVUkwpIHx8IFVT
RShTT1VQKQogICAgIGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UoKTsKICAgICB2b2lk
IGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShjb25zdCBBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSYpOwogICAgIHZvaWQgcmVjZWl2ZWRDcmVkZW50aWFsKGNvbnN0IEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlJiwgY29uc3QgQ3JlZGVudGlhbCYpIG92ZXJyaWRlOwpAQCAtMTE1LDkgKzEx
MCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlY2VpdmVkQ2FuY2VsbGF0aW9uKGNvbnN0IEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlJikgb3ZlcnJpZGU7CiAgICAgdm9pZCByZWNlaXZlZFJlcXVlc3RU
b1BlcmZvcm1EZWZhdWx0SGFuZGxpbmcoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKSBv
dmVycmlkZTsKICAgICB2b2lkIHJlY2VpdmVkQ2hhbGxlbmdlUmVqZWN0aW9uKGNvbnN0IEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlJikgb3ZlcnJpZGU7Ci0jZW5kaWYKIAotI2lmIFBMQVRGT1JNKENP
Q09BKSB8fCBVU0UoQ0ZORVRXT1JLKQorI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZVUkxD
T05ORUNUSU9OKQogICAgIGJvb2wgdHJ5SGFuZGxlUGFzc3dvcmRCYXNlZEF1dGhlbnRpY2F0aW9u
KGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJik7CiAjZW5kaWYKIApAQCAtMTI1LDcgKzEx
OSw3IEBAIHB1YmxpYzoKICAgICBib29sIGNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9u
U3BhY2UoY29uc3QgUHJvdGVjdGlvblNwYWNlJik7CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKENP
Q09BKSAmJiAhVVNFKENGTkVUV09SSykKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICBXRUJDT1JF
X0VYUE9SVCBOU1VSTENvbm5lY3Rpb24gKmNvbm5lY3Rpb24oKSBjb25zdDsKICAgICBpZCBtYWtl
RGVsZWdhdGUoYm9vbCk7CiAgICAgaWQgZGVsZWdhdGUoKTsKQEAgLTEzMywxOSArMTI3LDE1IEBA
IHB1YmxpYzoKICNlbmRpZgogICAgICAgICAKICNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxF
KFdFQl9USU1JTkcpCi0jaWYgVVNFKENGTkVUV09SSykKLSAgICBzdGF0aWMgdm9pZCBnZXRDb25u
ZWN0aW9uVGltaW5nRGF0YShDRlVSTENvbm5lY3Rpb25SZWYsIE5ldHdvcmtMb2FkVGltaW5nJik7
Ci0jZWxzZQogICAgIHN0YXRpYyB2b2lkIGdldENvbm5lY3Rpb25UaW1pbmdEYXRhKE5TVVJMQ29u
bmVjdGlvbiAqLCBOZXR3b3JrTG9hZFRpbWluZyYpOwogI2VuZGlmCi0jZW5kaWYKICAgICAgICAg
CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdm9pZCBzY2hlZHVsZShXVEY6OlNjaGVkdWxlUGFp
ciYpOwogICAgIHZvaWQgdW5zY2hlZHVsZShXVEY6OlNjaGVkdWxlUGFpciYpOwogI2VuZGlmCiAK
LSNpZiBVU0UoQ0ZORVRXT1JLKQorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAgICAgQ0ZVUkxT
dG9yYWdlU2Vzc2lvblJlZiBzdG9yYWdlU2Vzc2lvbigpIGNvbnN0OwogICAgIENGVVJMQ29ubmVj
dGlvblJlZiBjb25uZWN0aW9uKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRy
PENGVVJMQ29ubmVjdGlvblJlZj4gcmVsZWFzZUNvbm5lY3Rpb25Gb3JEb3dubG9hZCgpOwpAQCAt
MjA4LDEwICsxOTgsMTAgQEAgcHVibGljOgogI2VuZGlmCiAKICAgICAvLyBDYWxsZWQgaW4gcmVz
cG9uc2UgdG8gUmVzb3VyY2VIYW5kbGVDbGllbnQ6OndpbGxDYWNoZVJlc3BvbnNlQXN5bmMoKS4K
LSNpZiBVU0UoQ0ZORVRXT1JLKQorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBjb250aW51ZVdpbGxDYWNoZVJlc3BvbnNlKENGQ2FjaGVkVVJMUmVzcG9u
c2VSZWYpOwogI2VuZGlmCi0jaWYgUExBVEZPUk0oQ09DT0EpICYmICFVU0UoQ0ZORVRXT1JLKQor
I2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29udGludWVXaWxs
Q2FjaGVSZXNwb25zZShOU0NhY2hlZFVSTFJlc3BvbnNlICopOwogI2VuZGlmCiAKQEAgLTIyNywx
NCArMjE3LDEwIEBAIHB1YmxpYzoKICAgICB1c2luZyBSZWZDb3VudGVkPFJlc291cmNlSGFuZGxl
Pjo6cmVmOwogICAgIHVzaW5nIFJlZkNvdW50ZWQ8UmVzb3VyY2VIYW5kbGU+OjpkZXJlZjsKIAot
I2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZORVRXT1JLKQorI2lmIFBMQVRGT1JNKENPQ09B
KSB8fCBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBDRlN0
cmluZ1JlZiBzeW5jaHJvbm91c0xvYWRSdW5Mb29wTW9kZSgpOwogI2VuZGlmCiAKLSNpZiBQTEFU
Rk9STShJT1MpICYmIFVTRShDRk5FVFdPUkspCi0gICAgc3RhdGljIENGTXV0YWJsZURpY3Rpb25h
cnlSZWYgY3JlYXRlU1NMUHJvcGVydGllc0Zyb21OU1VSTFJlcXVlc3QoY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0Jik7Ci0jZW5kaWYKLQogICAgIHR5cGVkZWYgUmVmPFJlc291cmNlSGFuZGxlPiAoKkJ1
aWx0aW5Db25zdHJ1Y3RvcikoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBSZXNvdXJj
ZUhhbmRsZUNsaWVudCogY2xpZW50KTsKICAgICBzdGF0aWMgdm9pZCByZWdpc3RlckJ1aWx0aW5D
b25zdHJ1Y3Rvcihjb25zdCBBdG9taWNTdHJpbmcmIHByb3RvY29sLCBCdWlsdGluQ29uc3RydWN0
b3IpOwogCkBAIC0yNjMsMTkgKzI0OSwxOSBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVmQXV0aGVu
dGljYXRpb25DbGllbnQoKSBvdmVycmlkZSB7IHJlZigpOyB9CiAgICAgdm9pZCBkZXJlZkF1dGhl
bnRpY2F0aW9uQ2xpZW50KCkgb3ZlcnJpZGUgeyBkZXJlZigpOyB9CiAKLSNpZiBQTEFURk9STShD
T0NPQSkgfHwgVVNFKENGTkVUV09SSykKKyNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKENGVVJM
Q09OTkVDVElPTikKICAgICBlbnVtIGNsYXNzIFNjaGVkdWxpbmdCZWhhdmlvciB7IEFzeW5jaHJv
bm91cywgU3luY2hyb25vdXMgfTsKICNlbmRpZgogCi0jaWYgVVNFKENGTkVUV09SSykKKyNpZiBV
U0UoQ0ZVUkxDT05ORUNUSU9OKQogICAgIHZvaWQgY3JlYXRlQ0ZVUkxDb25uZWN0aW9uKGJvb2wg
c2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UsIGJvb2wgc2hvdWxkQ29udGVudFNuaWZmLCBTY2hl
ZHVsaW5nQmVoYXZpb3IsIENGRGljdGlvbmFyeVJlZiBjbGllbnRQcm9wZXJ0aWVzKTsKICNlbmRp
ZgogCi0jaWYgUExBVEZPUk0oTUFDKSAmJiAhVVNFKENGTkVUV09SSykKKyNpZiBQTEFURk9STShN
QUMpCiAgICAgdm9pZCBjcmVhdGVOU1VSTENvbm5lY3Rpb24oaWQgZGVsZWdhdGUsIGJvb2wgc2hv
dWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UsIGJvb2wgc2hvdWxkQ29udGVudFNuaWZmLCBTY2hlZHVs
aW5nQmVoYXZpb3IpOwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShJT1MpICYmICFVU0UoQ0ZORVRX
T1JLKQorI2lmIFBMQVRGT1JNKElPUykKICAgICB2b2lkIGNyZWF0ZU5TVVJMQ29ubmVjdGlvbihp
ZCBkZWxlZ2F0ZSwgYm9vbCBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSwgYm9vbCBzaG91bGRD
b250ZW50U25pZmYsIFNjaGVkdWxpbmdCZWhhdmlvciwgTlNEaWN0aW9uYXJ5ICpjb25uZWN0aW9u
UHJvcGVydGllcyk7CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAJKHJldmlzaW9uIDIw
NzAzNSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVD
bGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Miw3ICs2Miw3IEBAIHZvaWQgUmVzb3VyY2VI
YW5kbGVDbGllbnQ6OmNhbkF1dGhlbnRpY2EKIH0KICNlbmRpZgogCi0jaWYgVVNFKENGTkVUV09S
SykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogdm9pZCBSZXNvdXJjZUhhbmRsZUNsaWVudDo6
d2lsbENhY2hlUmVzcG9uc2VBc3luYyhSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBDRkNhY2hlZFVS
TFJlc3BvbnNlUmVmIHJlc3BvbnNlKQogewogICAgIGhhbmRsZS0+Y29udGludWVXaWxsQ2FjaGVS
ZXNwb25zZShyZXNwb25zZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1Jlc291cmNlSGFuZGxlQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5oCShyZXZpc2lvbiAyMDcwMzUpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI5LDEyICsyOSwxMiBAQAogI2luY2x1ZGUgIlBsYXRmb3JtRXhw
b3J0TWFjcm9zLmgiCiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogCi0jaWYgVVNFKENGTkVUV09SSykK
KyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogI2luY2x1ZGUgPENGTmV0d29yay9DRlVSTENhY2hl
UHJpdi5oPgogI2luY2x1ZGUgPENGTmV0d29yay9DRlVSTFJlc3BvbnNlUHJpdi5oPgogI2VuZGlm
CiAKLSNpZiBQTEFURk9STShJT1MpIHx8IFVTRShDRk5FVFdPUkspCisjaWYgUExBVEZPUk0oSU9T
KSB8fCBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNl
bmRpZgogCkBAIC05Niw3ICs5Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgV0VC
Q09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9u
U3BhY2VBc3luYyhSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFByb3RlY3Rpb25TcGFjZSYpOwogI2Vu
ZGlmCiAgICAgICAgIC8vIENsaWVudCB3aWxsIHBhc3MgYW4gdXBkYXRlZCByZXF1ZXN0IHVzaW5n
IFJlc291cmNlSGFuZGxlOjpjb250aW51ZVdpbGxDYWNoZVJlc3BvbnNlKCkgd2hlbiByZWFkeS4K
LSNpZiBVU0UoQ0ZORVRXT1JLKQorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAgICAgICAgIFdF
QkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCB3aWxsQ2FjaGVSZXNwb25zZUFzeW5jKFJlc291cmNl
SGFuZGxlKiwgQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZik7CiAjZWxpZiBQTEFURk9STShDT0NPQSkK
ICAgICAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHdpbGxDYWNoZVJlc3BvbnNlQXN5
bmMoUmVzb3VyY2VIYW5kbGUqLCBOU0NhY2hlZFVSTFJlc3BvbnNlICopOwpAQCAtMTE4LDE2ICsx
MTgsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2VuZGlmCiAgICAgICAgIHZpcnR1YWwgdm9p
ZCByZWNlaXZlZENhbmNlbGxhdGlvbihSZXNvdXJjZUhhbmRsZSosIGNvbnN0IEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlJikgeyB9CiAKLSNpZiBQTEFURk9STShJT1MpIHx8IFVTRShDRk5FVFdPUksp
CisjaWYgUExBVEZPUk0oSU9TKSB8fCBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogICAgICAgICB2aXJ0
dWFsIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IGNvbm5lY3Rpb25Qcm9wZXJ0aWVzKFJlc291
cmNlSGFuZGxlKikgeyByZXR1cm4gbnVsbHB0cjsgfQogI2VuZGlmCiAKLSNpZiBVU0UoQ0ZORVRX
T1JLKQorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAgICAgICAgIHZpcnR1YWwgQ0ZDYWNoZWRV
UkxSZXNwb25zZVJlZiB3aWxsQ2FjaGVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSosIENGQ2FjaGVk
VVJMUmVzcG9uc2VSZWYgcmVzcG9uc2UpIHsgcmV0dXJuIHJlc3BvbnNlOyB9Ci0jaWYgUExBVEZP
Uk0oV0lOKQogICAgICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2FjaGVSZXNwb25zZShSZXNvdXJj
ZUhhbmRsZSosIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYpIHsgcmV0dXJuIHRydWU7IH0KLSNlbmRp
ZiAvLyBQTEFURk9STShXSU4pCi0KICNlbGlmIFBMQVRGT1JNKENPQ09BKQogICAgICAgICB2aXJ0
dWFsIE5TQ2FjaGVkVVJMUmVzcG9uc2UgKndpbGxDYWNoZVJlc3BvbnNlKFJlc291cmNlSGFuZGxl
KiwgTlNDYWNoZWRVUkxSZXNwb25zZSAqcmVzcG9uc2UpIHsgcmV0dXJuIHJlc3BvbnNlOyB9CiAj
ZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5k
bGVJbnRlcm5hbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oCShyZXZpc2lvbiAyMDcwMzUpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzMsNyArMzMsNyBAQAogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKIAotI2lmIFVTRShDRk5FVFdPUkspCisjaWYgVVNF
KENGVVJMQ09OTkVDVElPTikKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlv
bkRlbGVnYXRlLmgiCiAjaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGVVJMQ29ubmVjdGlvblByaXYuaD4K
ICNlbmRpZgpAQCAtNjEsNyArNjEsNyBAQCBPQkpDX0NMQVNTIE5TVVJMQXV0aGVudGljYXRpb25D
aGFsbGVuZ2U7CiBPQkpDX0NMQVNTIE5TVVJMQ29ubmVjdGlvbjsKICNlbmRpZgogCi0jaWYgUExB
VEZPUk0oQ09DT0EpIHx8IFVTRShDRk5FVFdPUkspCisjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVT
RShDRlVSTENPTk5FQ1RJT04pCiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBfX0NGVVJMU3RvcmFnZVNl
c3Npb24qIENGVVJMU3RvcmFnZVNlc3Npb25SZWY7CiAjZW5kaWYKIApAQCAtODMsNyArODMsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICAsIG1fZGVmZXJzTG9hZGluZyhkZWZl
cnNMb2FkaW5nKQogICAgICAgICAgICAgLCBtX3Nob3VsZENvbnRlbnRTbmlmZihzaG91bGRDb250
ZW50U25pZmYpCiAgICAgICAgICAgICAsIG1fdXNlc0FzeW5jQ2FsbGJhY2tzKGNsaWVudCAmJiBj
bGllbnQtPnVzZXNBc3luY0NhbGxiYWNrcygpKQotI2lmIFVTRShDRk5FVFdPUkspCisjaWYgVVNF
KENGVVJMQ09OTkVDVElPTikKICAgICAgICAgICAgICwgbV9jdXJyZW50UmVxdWVzdChyZXF1ZXN0
KQogI2VuZGlmCiAjaWYgVVNFKENVUkwpCkBAIC0xMzEsMTkgKzEzMSwxOSBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgIGJvb2wgbV9kZWZlcnNMb2FkaW5nOwogICAgICAgICBib29sIG1f
c2hvdWxkQ29udGVudFNuaWZmOwogICAgICAgICBib29sIG1fdXNlc0FzeW5jQ2FsbGJhY2tzOwot
I2lmIFVTRShDRk5FVFdPUkspCisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKICAgICAgICAgUmV0
YWluUHRyPENGVVJMQ29ubmVjdGlvblJlZj4gbV9jb25uZWN0aW9uOwogICAgICAgICBSZXNvdXJj
ZVJlcXVlc3QgbV9jdXJyZW50UmVxdWVzdDsKICAgICAgICAgUmVmUHRyPFJlc291cmNlSGFuZGxl
Q0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU+IG1fY29ubmVjdGlvbkRlbGVnYXRlOwogI2VuZGlmCi0j
aWYgUExBVEZPUk0oQ09DT0EpICYmICFVU0UoQ0ZORVRXT1JLKQorI2lmIFBMQVRGT1JNKENPQ09B
KQogICAgICAgICBSZXRhaW5QdHI8TlNVUkxDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247CiAgICAg
ICAgIFJldGFpblB0cjxpZD4gbV9kZWxlZ2F0ZTsKICNlbmRpZgogI2lmIFBMQVRGT1JNKENPQ09B
KQogICAgICAgICBib29sIG1fc3RhcnRXaGVuU2NoZWR1bGVkOwogI2VuZGlmCi0jaWYgUExBVEZP
Uk0oQ09DT0EpIHx8IFVTRShDRk5FVFdPUkspCisjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShD
RlVSTENPTk5FQ1RJT04pCiAgICAgICAgIFJldGFpblB0cjxDRlVSTFN0b3JhZ2VTZXNzaW9uUmVm
PiBtX3N0b3JhZ2VTZXNzaW9uOwogI2VuZGlmCiAjaWYgVVNFKENVUkwpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFz
ZS5jcHAJKHJldmlzaW9uIDIwNzAzNSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDcg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0jaWYgIVVTRShTT1VQKSAmJiAoIVBMQVRGT1JN
KENPQ09BKSB8fCBVU0UoQ0ZORVRXT1JLKSkKKyNpZiAhVVNFKFNPVVApICYmICghUExBVEZPUk0o
Q09DT0EpIHx8IFVTRShDRlVSTENPTk5FQ1RJT04pKQogZG91YmxlIFJlc291cmNlUmVxdWVzdEJh
c2U6OnNfZGVmYXVsdFRpbWVvdXRJbnRlcnZhbCA9IElOVF9NQVg7CiAjZWxzZQogLy8gV2lsbCB1
c2UgTlNVUkxSZXF1ZXN0IGRlZmF1bHQgdGltZW91dCB1bmxlc3Mgc2V0IHRvIGEgbm9uLXplcm8g
dmFsdWUgd2l0aCBzZXREZWZhdWx0VGltZW91dEludGVydmFsKCkuCkBAIC02MDIsNyArNjAyLDcg
QEAgdm9pZCBSZXNvdXJjZVJlcXVlc3RCYXNlOjp1cGRhdGVSZXNvdXJjZQogICAgIH0KIH0KIAot
I2lmICFQTEFURk9STShDT0NPQSkgJiYgIVVTRShDRk5FVFdPUkspICYmICFVU0UoU09VUCkKKyNp
ZiAhUExBVEZPUk0oQ09DT0EpICYmICFVU0UoQ0ZVUkxDT05ORUNUSU9OKSAmJiAhVVNFKFNPVVAp
CiB1bnNpZ25lZCBpbml0aWFsaXplTWF4aW11bUhUVFBDb25uZWN0aW9uQ291bnRQZXJIb3N0KCkK
IHsKICAgICAvLyBUaGlzIGlzIHVzZWQgYnkgdGhlIGxvYWRlciB0byBjb250cm9sIHRoZSBudW1i
ZXIgb2YgaXNzdWVkIHBhcmFsbGVsIGxvYWQgcmVxdWVzdHMuIApJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9BdXRoZW50aWNhdGlvbkNGLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0F1dGhlbnRpY2F0aW9uQ0YuY3Bw
CShyZXZpc2lvbiAyMDcwMzUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L0F1dGhlbnRpY2F0aW9uQ0YuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25DRi5oIgogCi0jaWYg
VVNFKENGTkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogCiAjaW5jbHVkZSAiQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UuaCIKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNsaWVudC5o
IgpAQCAtNTEsMTggKzUxLDggQEAgQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6OkF1dGhlbnRpY2F0
aW9uQwogewogfQogCi1BdXRoZW50aWNhdGlvbkNoYWxsZW5nZTo6QXV0aGVudGljYXRpb25DaGFs
bGVuZ2UoQ0ZVUkxBdXRoQ2hhbGxlbmdlUmVmIGNmQ2hhbGxlbmdlLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEF1dGhlbnRpY2F0aW9uQ2xpZW50KiBh
dXRoZW50aWNhdGlvbkNsaWVudCkKLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICA6IEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlQmFzZShQcm90ZWN0aW9uU3BhY2UoQ0ZVUkxBdXRoQ2hhbGxlbmdlR2V0
UHJvdGVjdGlvblNwYWNlKGNmQ2hhbGxlbmdlKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQ3JlZGVudGlhbChDRlVSTEF1dGhDaGFsbGVuZ2VHZXRQcm9wb3NlZENyZWRlbnRp
YWwoY2ZDaGFsbGVuZ2UpKSwKLSNlbHNlCi0gICAgOiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJh
c2UoY29yZShDRlVSTEF1dGhDaGFsbGVuZ2VHZXRQcm90ZWN0aW9uU3BhY2UoY2ZDaGFsbGVuZ2Up
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3JlKENGVVJMQXV0aENoYWxs
ZW5nZUdldFByb3Bvc2VkQ3JlZGVudGlhbChjZkNoYWxsZW5nZSkpLAotI2VuZGlmCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0ZVUkxBdXRoQ2hhbGxlbmdlR2V0UHJldmlvdXNG
YWlsdXJlQ291bnQoY2ZDaGFsbGVuZ2UpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIChDRlVSTFJlc3BvbnNlUmVmKUNGVVJMQXV0aENoYWxsZW5nZUdldEZhaWx1cmVSZXNwb25z
ZShjZkNoYWxsZW5nZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0ZVUkxB
dXRoQ2hhbGxlbmdlR2V0RXJyb3IoY2ZDaGFsbGVuZ2UpKQorQXV0aGVudGljYXRpb25DaGFsbGVu
Z2U6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKENGVVJMQXV0aENoYWxsZW5nZVJlZiBjZkNoYWxs
ZW5nZSwgQXV0aGVudGljYXRpb25DbGllbnQqIGF1dGhlbnRpY2F0aW9uQ2xpZW50KQorICAgIDog
QXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlKGNvcmUoQ0ZVUkxBdXRoQ2hhbGxlbmdlR2V0UHJv
dGVjdGlvblNwYWNlKGNmQ2hhbGxlbmdlKSksIGNvcmUoQ0ZVUkxBdXRoQ2hhbGxlbmdlR2V0UHJv
cG9zZWRDcmVkZW50aWFsKGNmQ2hhbGxlbmdlKSksIENGVVJMQXV0aENoYWxsZW5nZUdldFByZXZp
b3VzRmFpbHVyZUNvdW50KGNmQ2hhbGxlbmdlKSwgKENGVVJMUmVzcG9uc2VSZWYpQ0ZVUkxBdXRo
Q2hhbGxlbmdlR2V0RmFpbHVyZVJlc3BvbnNlKGNmQ2hhbGxlbmdlKSwgQ0ZVUkxBdXRoQ2hhbGxl
bmdlR2V0RXJyb3IoY2ZDaGFsbGVuZ2UpKQogICAgICwgbV9hdXRoZW50aWNhdGlvbkNsaWVudChh
dXRoZW50aWNhdGlvbkNsaWVudCkKICAgICAsIG1fY2ZDaGFsbGVuZ2UoY2ZDaGFsbGVuZ2UpCiB7
CkBAIC05MywyMiArODMsMTIgQEAgQ0ZVUkxBdXRoQ2hhbGxlbmdlUmVmIGNyZWF0ZUNGKGNvbnN0
IEF1dAogewogICAgIC8vIEZJWE1FOiBXaHkgbm90IGNhY2hlIENGVVJMQXV0aENoYWxsZW5nZVJl
ZiBpbiBtX2NmQ2hhbGxlbmdlPyBGb3VuZGF0aW9uIGNvdW50ZXJwYXJ0IGRvZXMgdGhhdC4KIAot
I2lmIFBMQVRGT1JNKENPQ09BKQotICAgIENGVVJMQXV0aENoYWxsZW5nZVJlZiByZXN1bHQgPSBD
RlVSTEF1dGhDaGFsbGVuZ2VDcmVhdGUoMCwgY29yZUNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2Uo
KS5jZlNwYWNlKCksIGNvcmVDaGFsbGVuZ2UucHJvcG9zZWRDcmVkZW50aWFsKCkuY2ZDcmVkZW50
aWFsKCksCi0jZWxzZQogICAgIFJldGFpblB0cjxDRlVSTENyZWRlbnRpYWxSZWY+IGNyZWRlbnRp
YWwgPSBhZG9wdENGKGNyZWF0ZUNGKGNvcmVDaGFsbGVuZ2UucHJvcG9zZWRDcmVkZW50aWFsKCkp
KTsKICAgICBSZXRhaW5QdHI8Q0ZVUkxQcm90ZWN0aW9uU3BhY2VSZWY+IHByb3RlY3Rpb25TcGFj
ZSA9IGFkb3B0Q0YoY3JlYXRlQ0YoY29yZUNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UoKSkpOwog
Ci0gICAgQ0ZVUkxBdXRoQ2hhbGxlbmdlUmVmIHJlc3VsdCA9IENGVVJMQXV0aENoYWxsZW5nZUNy
ZWF0ZSgwLCBwcm90ZWN0aW9uU3BhY2UuZ2V0KCksIGNyZWRlbnRpYWwuZ2V0KCksCi0jZW5kaWYK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3JlQ2hhbGxlbmdlLnBy
ZXZpb3VzRmFpbHVyZUNvdW50KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29yZUNoYWxsZW5nZS5mYWlsdXJlUmVzcG9uc2UoKS5jZlVSTFJlc3BvbnNlKCksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29yZUNoYWxsZW5nZS5lcnJv
cigpKTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBDRlVSTEF1dGhDaGFsbGVuZ2VD
cmVhdGUoMCwgcHJvdGVjdGlvblNwYWNlLmdldCgpLCBjcmVkZW50aWFsLmdldCgpLCBjb3JlQ2hh
bGxlbmdlLnByZXZpb3VzRmFpbHVyZUNvdW50KCksIGNvcmVDaGFsbGVuZ2UuZmFpbHVyZVJlc3Bv
bnNlKCkuY2ZVUkxSZXNwb25zZSgpLCBjb3JlQ2hhbGxlbmdlLmVycm9yKCkpOwogfQogCi0jaWYg
UExBVEZPUk0oV0lOKQotCiBDRlVSTENyZWRlbnRpYWxSZWYgY3JlYXRlQ0YoY29uc3QgQ3JlZGVu
dGlhbCYgY29yZUNyZWRlbnRpYWwpCiB7CiAgICAgQ0ZVUkxDcmVkZW50aWFsUGVyc2lzdGVuY2Ug
cGVyc2lzdGVuY2UgPSBrQ0ZVUkxDcmVkZW50aWFsUGVyc2lzdGVuY2VOb25lOwpAQCAtMjkwLDgg
KzI3MCw3IEBAIFByb3RlY3Rpb25TcGFjZSBjb3JlKENGVVJMUHJvdGVjdGlvblNwYWMKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIENGVVJMUHJvdGVjdGlvblNwYWNlR2V0UmVhbG0oY2ZTcGFj
ZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY2hlbWUpOwogfQotI2VuZGlmIC8vIFBM
QVRGT1JNKFdJTikKIAogfTsKIAotI2VuZGlmIC8vIFVTRShDRk5FVFdPUkspCisjZW5kaWYgLy8g
VVNFKENGVVJMQ09OTkVDVElPTikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2YvQXV0aGVudGljYXRpb25DRi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY2YvQXV0aGVudGljYXRpb25DRi5oCShyZXZpc2lvbiAyMDcwMzUpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0F1dGhlbnRpY2F0aW9uQ0YuaAko
d29ya2luZyBjb3B5KQpAQCAtMjMsMTAgKzIzLDkgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICovCiAK
LSNpZm5kZWYgQXV0aGVudGljYXRpb25DRl9oCi0jZGVmaW5lIEF1dGhlbnRpY2F0aW9uQ0ZfaAor
I3ByYWdtYSBvbmNlCiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQorI2lmIFVTRShDRlVSTENPTk5FQ1RJ
T04pCiAKICNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZVUkxDcmVkZW50aWFsUHJpdi5oPgogCkBAIC00
MCwyMCArMzksMTAgQEAgY2xhc3MgQ3JlZGVudGlhbDsKIGNsYXNzIFByb3RlY3Rpb25TcGFjZTsK
IAogQ0ZVUkxBdXRoQ2hhbGxlbmdlUmVmIGNyZWF0ZUNGKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlJik7Ci0jaWYgUExBVEZPUk0oV0lOKQogQ0ZVUkxDcmVkZW50aWFsUmVmIGNyZWF0ZUNG
KGNvbnN0IENyZWRlbnRpYWwmKTsKIENGVVJMUHJvdGVjdGlvblNwYWNlUmVmIGNyZWF0ZUNGKGNv
bnN0IFByb3RlY3Rpb25TcGFjZSYpOwotI2VuZGlmCi0KLSNpZiBQTEFURk9STShDT0NPQSkKLUF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIGNvcmUoQ0ZVUkxBdXRoQ2hhbGxlbmdlUmVmKTsKLSNlbmRp
ZgotI2lmIFBMQVRGT1JNKFdJTikKIENyZWRlbnRpYWwgY29yZShDRlVSTENyZWRlbnRpYWxSZWYp
OwogUHJvdGVjdGlvblNwYWNlIGNvcmUoQ0ZVUkxQcm90ZWN0aW9uU3BhY2VSZWYpOwotI2VuZGlm
CiB9CiAKLSNlbmRpZiAvLyBVU0UoQ0ZORVRXT1JLKQotCi0jZW5kaWYgLy8gQXV0aGVudGljYXRp
b25DRl9oCisjZW5kaWYgLy8gVVNFKENGVVJMQ09OTkVDVElPTikKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0F1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlLmgJKHJldmlzaW9uIDIwNzAzNSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY2YvQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaAkod29ya2luZyBjb3B5KQpAQCAt
MjMsMTQgKzIzLDEzIEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCi0jaWZuZGVmIEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlX2gKLSNkZWZpbmUgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VfaAorI3By
YWdtYSBvbmNlCiAKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2UuaCIKICNp
bmNsdWRlICJBdXRoZW50aWNhdGlvbkNsaWVudC5oIgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4K
IAotI2lmIFVTRShDRk5FVFdPUkspCisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKIAogdHlwZWRl
ZiBzdHJ1Y3QgX0NGVVJMQXV0aENoYWxsZW5nZSogQ0ZVUkxBdXRoQ2hhbGxlbmdlUmVmOwogCkBA
IC01MCw3ICs0OSw3IEBAIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIDogcHVibGljIEEK
IHB1YmxpYzoKICAgICBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgpIHt9CiAgICAgV0VCQ09SRV9F
WFBPUlQgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY29uc3QgUHJvdGVjdGlvblNwYWNlJiwgY29u
c3QgQ3JlZGVudGlhbCYgcHJvcG9zZWRDcmVkZW50aWFsLCB1bnNpZ25lZCBwcmV2aW91c0ZhaWx1
cmVDb3VudCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFJlc291cmNlRXJyb3ImKTsK
LSNpZiBVU0UoQ0ZORVRXT1JLKQorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAgICAgQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UoQ0ZVUkxBdXRoQ2hhbGxlbmdlUmVmLCBBdXRoZW50aWNhdGlvbkNs
aWVudCopOwogCiAgICAgQ0ZVUkxBdXRoQ2hhbGxlbmdlUmVmIGNmVVJMQXV0aENoYWxsZW5nZVJl
ZigpIGNvbnN0IHsgcmV0dXJuIG1fY2ZDaGFsbGVuZ2UuZ2V0KCk7IH0KQEAgLTY5LDcgKzY4LDcg
QEAgcHJpdmF0ZToKICAgICBzdGF0aWMgYm9vbCBwbGF0Zm9ybUNvbXBhcmUoY29uc3QgQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UmIGEsIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBiKTsK
IAogICAgIC8vIFBsYXRmb3JtIGNoYWxsZW5nZSBtYXkgYmUgbnVsbC4gSWYgaXQncyBub24tbnVs
bCwgaXQncyBhbHdheXMgdXAgdG8gZGF0ZSB3aXRoIG90aGVyIGZpZWxkcy4KLSNpZiBVU0UoQ0ZO
RVRXT1JLKQorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAgICAgUmVmUHRyPEF1dGhlbnRpY2F0
aW9uQ2xpZW50PiBtX2F1dGhlbnRpY2F0aW9uQ2xpZW50OwogICAgIFJldGFpblB0cjxDRlVSTEF1
dGhDaGFsbGVuZ2VSZWY+IG1fY2ZDaGFsbGVuZ2U7CiAjZWxzZQpAQCAtNzksNSArNzgsMyBAQCBw
cml2YXRlOgogfTsKIAogfQotCi0jZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY2YvQ29va2llSmFyQ0ZOZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQ29va2llSmFyQ0ZOZXQuY3BwCShyZXZpc2lvbiAyMDcw
MzUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZUphckNGTmV0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIlBsYXRmb3JtQ29va2llSmFyLmgiCiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQor
I2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAKICNpbmNsdWRlICJDRk5ldHdvcmtTUEkuaCIKICNp
bmNsdWRlICJDb29raWUuaCIKQEAgLTI1NSw0ICsyNTUsNCBAQCB2b2lkIGRlbGV0ZUFsbENvb2tp
ZXNNb2RpZmllZFNpbmNlKGNvbnN0CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlm
IC8vIFVTRShDRk5FVFdPUkspCisjZW5kaWYgLy8gVVNFKENGVVJMQ09OTkVDVElPTikKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQ3JlZGVudGlhbFN0b3JhZ2VDRk5l
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9D
cmVkZW50aWFsU3RvcmFnZUNGTmV0LmNwcAkocmV2aXNpb24gMjA3MDM1KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9DcmVkZW50aWFsU3RvcmFnZUNGTmV0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjYsMjMgKzI2LDE0IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiQ3JlZGVudGlhbFN0b3JhZ2UuaCIKIAotI2lmIFVTRShDRk5FVFdPUkspCisjaWYgVVNF
KENGVVJMQ09OTkVDVElPTikKIAogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ0YuaCIKICNpbmNs
dWRlICJDRk5ldHdvcmtTUEkuaCIKICNpbmNsdWRlICJDcmVkZW50aWFsLmgiCiAjaW5jbHVkZSAi
UHJvdGVjdGlvblNwYWNlLmgiCi0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotCi0jaWYgUExB
VEZPUk0oQ09DT0EpCi0jaW5jbHVkZSAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgotI2VsaWYg
UExBVEZPUk0oV0lOKQogI2luY2x1ZGUgPFdlYktpdFN5c3RlbUludGVyZmFjZS9XZWJLaXRTeXN0
ZW1JbnRlcmZhY2UuaD4KLSNlbmRpZgotCi0jaWYgUExBVEZPUk0oSU9TKQotI2luY2x1ZGUgPENG
TmV0d29yay9DRlVSTENyZWRlbnRpYWxTdG9yYWdlLmg+Ci0jZW5kaWYKKyNpbmNsdWRlIDx3dGYv
UmV0YWluUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKQEAgLTU0LDI5ICs0NSwx
MSBAQCBzdGF0aWMgaW5saW5lIENGVVJMQ3JlZGVudGlhbFJlZiBjb3B5Q3JlCiAKIENyZWRlbnRp
YWwgQ3JlZGVudGlhbFN0b3JhZ2U6OmdldEZyb21QZXJzaXN0ZW50U3RvcmFnZShjb25zdCBQcm90
ZWN0aW9uU3BhY2UmIHByb3RlY3Rpb25TcGFjZSkKIHsKLSNpZiBQTEFURk9STShDT0NPQSkKLSAg
ICBhdXRvIGNyZWRlbnRpYWxDRiA9IGFkb3B0Q0YoY29weUNyZWRlbnRpYWxGcm9tUHJvdGVjdGlv
blNwYWNlKHByb3RlY3Rpb25TcGFjZS5jZlNwYWNlKCkpKTsKLSAgICByZXR1cm4gQ3JlZGVudGlh
bChjcmVkZW50aWFsQ0YuZ2V0KCkpOwotI2Vsc2UKICAgICBhdXRvIHByb3RlY3Rpb25TcGFjZUNG
ID0gYWRvcHRDRihjcmVhdGVDRihwcm90ZWN0aW9uU3BhY2UpKTsKICAgICBhdXRvIGNyZWRlbnRp
YWxDRiA9IGFkb3B0Q0YoY29weUNyZWRlbnRpYWxGcm9tUHJvdGVjdGlvblNwYWNlKHByb3RlY3Rp
b25TcGFjZUNGLmdldCgpKSk7CiAgICAgcmV0dXJuIGNvcmUoY3JlZGVudGlhbENGLmdldCgpKTsK
LSNlbmRpZgotfQotCi0jaWYgUExBVEZPUk0oSU9TKQotdm9pZCBDcmVkZW50aWFsU3RvcmFnZTo6
c2F2ZVRvUGVyc2lzdGVudFN0b3JhZ2UoY29uc3QgUHJvdGVjdGlvblNwYWNlJiBwcm90ZWN0aW9u
U3BhY2UsIGNvbnN0IENyZWRlbnRpYWwmIGNyZWRlbnRpYWwpCi17Ci0gICAgUmV0YWluUHRyPENG
VVJMQ3JlZGVudGlhbFN0b3JhZ2VSZWY+IHN0b3JhZ2VDRiA9IGFkb3B0Q0YoQ0ZVUkxDcmVkZW50
aWFsU3RvcmFnZUNyZWF0ZSgwKSk7Ci0KLSAgICBpZiAoY3JlZGVudGlhbC5wZXJzaXN0ZW5jZSgp
ID09IENyZWRlbnRpYWxQZXJzaXN0ZW5jZU5vbmUpIHsKLSAgICAgICAgQ3JlZGVudGlhbCBzZXNz
aW9uQ3JlZGVudGlhbChjcmVkZW50aWFsLCBDcmVkZW50aWFsUGVyc2lzdGVuY2VGb3JTZXNzaW9u
KTsKLSAgICAgICAgQ0ZVUkxDcmVkZW50aWFsU3RvcmFnZVNldERlZmF1bHRDcmVkZW50aWFsRm9y
UHJvdGVjdGlvblNwYWNlKHN0b3JhZ2VDRi5nZXQoKSwgc2Vzc2lvbkNyZWRlbnRpYWwuY2ZDcmVk
ZW50aWFsKCksIHByb3RlY3Rpb25TcGFjZS5jZlNwYWNlKCkpOwotICAgIH0gZWxzZQotICAgICAg
ICBDRlVSTENyZWRlbnRpYWxTdG9yYWdlU2V0RGVmYXVsdENyZWRlbnRpYWxGb3JQcm90ZWN0aW9u
U3BhY2Uoc3RvcmFnZUNGLmdldCgpLCBjcmVkZW50aWFsLmNmQ3JlZGVudGlhbCgpLCBwcm90ZWN0
aW9uU3BhY2UuY2ZTcGFjZSgpKTsKIH0KLSNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKLSNlbmRpZiAvLyBVU0UoQ0ZORVRXT1JLKQorI2VuZGlmIC8vIFVTRShDRlVSTENPTk5FQ1RJ
T04pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0xvYWRlclJ1bkxv
b3BDRi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
Zi9Mb2FkZXJSdW5Mb29wQ0YuY3BwCShyZXZpc2lvbiAyMDcwMzUpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0xvYWRlclJ1bkxvb3BDRi5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI2LDcgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJMb2FkZXJS
dW5Mb29wQ0YuaCIKIAotI2lmIFVTRShDRk5FVFdPUkspCisjaWYgVVNFKENGVVJMQ09OTkVDVElP
TikKIAogI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NvcmVGb3VuZGF0aW9uLmg+CiAjaW5jbHVk
ZSA8bGltaXRzPgpAQCAtODcsNCArODcsNCBAQCBDRlJ1bkxvb3BSZWYgbG9hZGVyUnVuTG9vcCgp
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vIFVTRShDRk5FVFdPUkspCisj
ZW5kaWYgLy8gVVNFKENGVVJMQ09OTkVDVElPTikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2YvTG9hZGVyUnVuTG9vcENGLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Mb2FkZXJSdW5Mb29wQ0YuaAkocmV2aXNpb24gMjA3
MDM1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Mb2FkZXJSdW5Mb29w
Q0YuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsMTAgKzIzLDkgQEAKICAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIExvYWRlclJ1bkxvb3BDRl9oCi0jZGVm
aW5lIExvYWRlclJ1bkxvb3BDRl9oCisjcHJhZ21hIG9uY2UKIAotI2lmIFVTRShDRk5FVFdPUksp
CisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKIAogdHlwZWRlZiBzdHJ1Y3QgX19DRlJ1bkxvb3Aq
IENGUnVuTG9vcFJlZjsKIApAQCAtMzYsNiArMzUsNCBAQCBDRlJ1bkxvb3BSZWYgbG9hZGVyUnVu
TG9vcCgpOwogCiB9CiAKLSNlbmRpZiAvLyBVU0UoQ0ZORVRXT1JLKQotCi0jZW5kaWYgLy8gTG9h
ZGVyUnVuTG9vcF9oCisjZW5kaWYgLy8gVVNFKENGVVJMQ09OTkVDVElPTikKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTmV0
d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXQuY3BwCShyZXZpc2lvbiAyMDcwMzUpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtOTMsMTEgKzkzLDExIEBAIFJldGFpblB0cjxDRkhUVFBDb29r
aWVTdG9yYWdlUmVmPiBOZXR3b3IKICAgICBpZiAobV9wbGF0Zm9ybVNlc3Npb24pCiAgICAgICAg
IHJldHVybiBhZG9wdENGKF9DRlVSTFN0b3JhZ2VTZXNzaW9uQ29weUNvb2tpZVN0b3JhZ2Uoa0NG
QWxsb2NhdG9yRGVmYXVsdCwgbV9wbGF0Zm9ybVNlc3Npb24uZ2V0KCkpKTsKIAotI2lmIFVTRShD
Rk5FVFdPUkspCisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKICAgICByZXR1cm4gX0NGSFRUUENv
b2tpZVN0b3JhZ2VHZXREZWZhdWx0KGtDRkFsbG9jYXRvckRlZmF1bHQpOwogI2Vsc2UKICAgICAv
LyBXaGVuIHVzaW5nIE5TVVJMQ29ubmVjdGlvbiwgd2UgYWxzbyB1c2UgaXRzIHNoYXJlZCBjb29r
aWUgc3RvcmFnZS4KLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbnVsbHB0cjsKICNlbmRpZgog
fQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Byb3RlY3Rpb25T
cGFjZUNGTmV0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NmL1Byb3RlY3Rpb25TcGFjZUNGTmV0LmNwcAkocmV2aXNpb24gMjA3MDM1KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Qcm90ZWN0aW9uU3BhY2VDRk5ldC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJQcm90ZWN0aW9uU3BhY2VDRk5ldC5oIgogCi0jaWYgVVNFKENGTkVUV09SSykKKyNp
ZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogCiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25DRi5oIgog
I2luY2x1ZGUgPENGTmV0d29yay9DRlVSTFByb3RlY3Rpb25TcGFjZVByaXYuaD4KQEAgLTQyLDQg
KzQyLDQgQEAgYm9vbCBQcm90ZWN0aW9uU3BhY2U6OnJlY2VpdmVzQ3JlZGVudGlhbAogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZiAvLyBVU0UoQ0ZORVRXT1JLKQorI2VuZGlmIC8v
IFVTRShDRlVSTENPTk5FQ1RJT04pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NmL1Byb3RlY3Rpb25TcGFjZUNGTmV0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9Qcm90ZWN0aW9uU3BhY2VDRk5ldC5oCShyZXZpc2lvbiAy
MDcwMzUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Byb3RlY3Rpb25T
cGFjZUNGTmV0LmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDExICsyMywxMCBAQAogICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCiAgKi8KIAotI2lmbmRlZiBQcm90ZWN0aW9uU3BhY2VDRk5ldF9oCi0jZGVmaW5lIFBy
b3RlY3Rpb25TcGFjZUNGTmV0X2gKKyNwcmFnbWEgb25jZQogCi0jaWYgIVBMQVRGT1JNKFdJTikg
fHwgIVVTRShDRk5FVFdPUkspCi0jZXJyb3IgVGhpcyBoZWFkZXIgc2hvdWxkIG9ubHkgYmUgaW5j
bHVkZWQgd2hlbiB0YXJnZXRpbmcgV2luZG93cyBhbmQgdXNpbmcgQ0ZOZXR3b3JrLgorI2lmICFQ
TEFURk9STShXSU4pIHx8ICFVU0UoQ0ZVUkxDT05ORUNUSU9OKQorI2Vycm9yIFRoaXMgaGVhZGVy
IHNob3VsZCBvbmx5IGJlIGluY2x1ZGVkIHdoZW4gdGFyZ2V0aW5nIFdpbmRvd3MgYW5kIHVzaW5n
IENGVVJMQ29ubmVjdGlvbi4KICNlbmRpZgogCiAjaW5jbHVkZSAiUHJvdGVjdGlvblNwYWNlQmFz
ZS5oIgpAQCAtNDgsNSArNDcsMyBAQCBwdWJsaWM6CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCi0KLSNlbmRpZiAvLyBQcm90ZWN0aW9uU3BhY2VDRk5ldF9oCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3IuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3IuaAkocmV2aXNp
b24gMjA3MDM1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJj
ZUVycm9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDEwICsyOCwxMSBAQAogI2luY2x1ZGUgIlJl
c291cmNlRXJyb3JCYXNlLmgiCiAKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Ci0jaWYgVVNF
KENGTkVUV09SSykKKworI2lmIFBMQVRGT1JNKFdJTikKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9O
KQogI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NGU3RyZWFtLmg+CiAjZW5kaWYKLSNpZiBQTEFU
Rk9STShXSU4pCiAjaW5jbHVkZSA8d2luZG93cy5oPgogI2luY2x1ZGUgPHdpbmNyeXB0Lmg+IC8v
IHdpbmRvd3MuaCBtdXN0IGJlIGluY2x1ZGVkIGJlZm9yZSB3aW5jcnlwdC5oLgogI2VuZGlmCkBA
IC02MSwxMiArNjIsMTAgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIENGRXJyb3JSZWYg
Y2ZFcnJvcigpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIG9wZXJhdG9yIENGRXJyb3JSZWYo
KSBjb25zdDsKIAotI2lmIFVTRShDRk5FVFdPUkspCi0jaWYgUExBVEZPUk0oV0lOKQorI2lmIFVT
RShDRlVSTENPTk5FQ1RJT04pCiAgICAgUmVzb3VyY2VFcnJvcihjb25zdCBTdHJpbmcmIGRvbWFp
biwgaW50IGVycm9yQ29kZSwgY29uc3QgVVJMJiBmYWlsaW5nVVJMLCBjb25zdCBTdHJpbmcmIGxv
Y2FsaXplZERlc2NyaXB0aW9uLCBDRkRhdGFSZWYgY2VydGlmaWNhdGUpOwogICAgIFBDQ0VSVF9D
T05URVhUIGNlcnRpZmljYXRlKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRDZXJ0aWZpY2F0ZShDRkRh
dGFSZWYpOwotI2VuZGlmCiAgICAgUmVzb3VyY2VFcnJvcihDRlN0cmVhbUVycm9yIGVycm9yKTsK
ICAgICBDRlN0cmVhbUVycm9yIGNmU3RyZWFtRXJyb3IoKSBjb25zdDsKICAgICBvcGVyYXRvciBD
RlN0cmVhbUVycm9yKCkgY29uc3Q7CkBAIC04OCwxNCArODcsMTMgQEAgcHJpdmF0ZToKICAgICB2
b2lkIGRvUGxhdGZvcm1Jc29sYXRlZENvcHkoY29uc3QgUmVzb3VyY2VFcnJvciYpOwogCiAgICAg
Ym9vbCBtX2RhdGFJc1VwVG9EYXRlOwotI2lmIFVTRShDRk5FVFdPUkspCisjaWYgVVNFKENGVVJM
Q09OTkVDVElPTikKICAgICBtdXRhYmxlIFJldGFpblB0cjxDRkVycm9yUmVmPiBtX3BsYXRmb3Jt
RXJyb3I7Ci0jaWYgUExBVEZPUk0oQ09DT0EpCisjZWxpZiBQTEFURk9STShDT0NPQSkKICAgICBt
dXRhYmxlIFJldGFpblB0cjxOU0Vycm9yPiBtX3BsYXRmb3JtTlNFcnJvcjsKICNlbmRpZgogI2lm
IFBMQVRGT1JNKFdJTikKICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBtX2NlcnRpZmljYXRlOwot
I2VuZGlmCiAjZWxzZQogICAgIG11dGFibGUgUmV0YWluUHRyPE5TRXJyb3I+IG1fcGxhdGZvcm1F
cnJvcjsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9S
ZXNvdXJjZUVycm9yQ0YuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY2YvUmVzb3VyY2VFcnJvckNGLmNwcAkocmV2aXNpb24gMjA3MDM1KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yQ0YuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNiwxNiArMjYsMTMgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJSZXNvdXJjZUVycm9yLmgiCiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQorI2lmIFVTRShDRlVS
TENPTk5FQ1RJT04pCiAKICNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxDb3JlRm91bmRhdGlv
bi9DRkVycm9yLmg+CiAjaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGTmV0d29ya0Vycm9ycy5oPgotI2lu
Y2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLQotI2lmIFBMQVRGT1JNKFdJTikKICNpbmNsdWRlIDxX
ZWJLaXRTeXN0ZW1JbnRlcmZhY2UvV2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+Ci0jZW5kaWYKKyNp
bmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMjE4
LDQgKzIxNSw0IEBAIFJlc291cmNlRXJyb3I6Om9wZXJhdG9yIENGU3RyZWFtRXJyb3IoKSAKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYgLy8gVVNFKENGTkVUV09SSykKKyNlbmRp
ZiAvLyBVU0UoQ0ZVUkxDT05ORUNUSU9OKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwCShyZXZp
c2lvbiAyMDcwMzUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291
cmNlSGFuZGxlQ0ZOZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Niw2ICs0Niw4IEBACiAjaW5j
bHVkZSAiU3luY2hyb25vdXNMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlICJTeW5jaHJvbm91c1Jl
c291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuaCIKICNpbmNsdWRlIDxDRk5ldHdv
cmsvQ0ZOZXR3b3JrLmg+CisjaW5jbHVkZSA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlL1dlYktpdFN5
c3RlbUludGVyZmFjZS5oPgorI2luY2x1ZGUgPHByb2Nlc3MuaD4KICNpbmNsdWRlIDxzeXMvc3Rh
dC5oPgogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBA
IC01NSwyMCArNTcsNiBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L0Jhc2U2NC5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAotI2lmIFBMQVRGT1JNKENPQ09BKQotI2luY2x1ZGUgIlJl
c291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuaCIK
LSNpbmNsdWRlICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgiCi0jaWYgVVNFKENGTkVUV09SSykK
LSNpbmNsdWRlICJXZWJDb3JlVVJMUmVzcG9uc2UuaCIKLSNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZV
UkxDb25uZWN0aW9uUHJpdi5oPgotI2luY2x1ZGUgPENGTmV0d29yay9DRlVSTFJlcXVlc3RQcml2
Lmg+Ci0jZW5kaWYKLSNlbmRpZgotCi0jaWYgUExBVEZPUk0oV0lOKQotI2luY2x1ZGUgPFdlYktp
dFN5c3RlbUludGVyZmFjZS9XZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaD4KLSNpbmNsdWRlIDxwcm9j
ZXNzLmg+Ci0KIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyBkZWNsYXJhdGlvbiBvbmNlIGl0J3MgaW4g
V2ViS2l0U3VwcG9ydExpYnJhcnkuCiBleHRlcm4gIkMiIHsKIF9fZGVjbHNwZWMoZGxsaW1wb3J0
KSBDRlVSTENvbm5lY3Rpb25SZWYgQ0ZVUkxDb25uZWN0aW9uQ3JlYXRlV2l0aFByb3BlcnRpZXMo
CkBAIC03NywxMSArNjUsMTAgQEAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIENGVVJMQ29ubmVjdGlv
blJlZgogICBDRlVSTENvbm5lY3Rpb25DbGllbnQgKiAgY2xpZW50LAogICBDRkRpY3Rpb25hcnlS
ZWYgcHJvcGVydGllcyk7CiB9Ci0jZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0jaWYg
VVNFKENGTkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogCiBzdGF0aWMgSGFzaFNl
dDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIGFsbG93c0FueUhUVFBTQ2VydGlm
aWNhdGVIb3N0cygpCiB7CkBAIC0xMjAsMTEgKzEwNyw3IEBAIFJlc291cmNlSGFuZGxlOjp+UmVz
b3VyY2VIYW5kbGUoKQogICAgIAogc3RhdGljIGlubGluZSBDRlN0cmluZ1JlZiBzaG91bGRTbmlm
ZkNvbm5lY3Rpb25Qcm9wZXJ0eSgpCiB7Ci0jaWYgUExBVEZPUk0oV0lOKQogICAgIHJldHVybiBD
RlNUUigiX2tDRlVSTENvbm5lY3Rpb25Qcm9wZXJ0eVNob3VsZFNuaWZmIik7Ci0jZWxzZQotICAg
IHJldHVybiBfa0NGVVJMQ29ubmVjdGlvblByb3BlcnR5U2hvdWxkU25pZmY7Ci0jZW5kaWYKIH0K
IAogdm9pZCBSZXNvdXJjZUhhbmRsZTo6Y3JlYXRlQ0ZVUkxDb25uZWN0aW9uKGJvb2wgc2hvdWxk
VXNlQ3JlZGVudGlhbFN0b3JhZ2UsIGJvb2wgc2hvdWxkQ29udGVudFNuaWZmLCBTY2hlZHVsaW5n
QmVoYXZpb3Igc2NoZWR1bGluZ0JlaGF2aW9yLCBDRkRpY3Rpb25hcnlSZWYgY2xpZW50UHJvcGVy
dGllcykKQEAgLTE2Niw5ICsxNDksNiBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpjcmVhdGVDRlVS
TENvbm5lY3RpCiAKICAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlRGljdGlvbmFyeVJlZj4gc3NsUHJv
cHM7CiAKLSNpZiBQTEFURk9STShJT1MpCi0gICAgc3NsUHJvcHMgPSBhZG9wdENGKFJlc291cmNl
SGFuZGxlOjpjcmVhdGVTU0xQcm9wZXJ0aWVzRnJvbU5TVVJMUmVxdWVzdChmaXJzdFJlcXVlc3Qo
KSkpOwotI2Vsc2UKICAgICBpZiAoYWxsb3dzQW55SFRUUFNDZXJ0aWZpY2F0ZUhvc3RzKCkuY29u
dGFpbnMoZmlyc3RSZXF1ZXN0KCkudXJsKCkuaG9zdCgpKSkgewogICAgICAgICBzc2xQcm9wcyA9
IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAw
LCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVl
Q2FsbEJhY2tzKSk7CiAgICAgICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKHNzbFByb3BzLmdldCgp
LCBrQ0ZTdHJlYW1TU0xBbGxvd3NBbnlSb290LCBrQ0ZCb29sZWFuVHJ1ZSk7CkBAIC0xODEsMTEg
KzE2MSw4IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmNyZWF0ZUNGVVJMQ29ubmVjdGkKICAgICBp
ZiAoY2xpZW50Q2VydCAhPSBjbGllbnRDZXJ0aWZpY2F0ZXMoKS5lbmQoKSkgewogICAgICAgICBp
ZiAoIXNzbFByb3BzKQogICAgICAgICAgICAgc3NsUHJvcHMgPSBhZG9wdENGKENGRGljdGlvbmFy
eUNyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMCwgJmtDRlR5cGVEaWN0aW9uYXJ5
S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykpOwotI2lmIFBM
QVRGT1JNKFdJTikKICAgICAgICAgd2tTZXRDbGllbnRDZXJ0aWZpY2F0ZUluU1NMUHJvcGVydGll
cyhzc2xQcm9wcy5nZXQoKSwgKGNsaWVudENlcnQtPnZhbHVlKS5nZXQoKSk7Ci0jZW5kaWYKICAg
ICB9Ci0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKQogCiAgICAgaWYgKHNzbFByb3BzKQogICAgICAg
ICBDRlVSTFJlcXVlc3RTZXRTU0xQcm9wZXJ0aWVzKHJlcXVlc3QuZ2V0KCksIHNzbFByb3BzLmdl
dCgpKTsKQEAgLTIwNiwxMiArMTgzLDYgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6Y3JlYXRlQ0ZV
UkxDb25uZWN0aQogICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShzdHJlYW1Qcm9wZXJ0aWVz
LCBDRlNUUigiX1dlYktpdFN5bmNocm9ub3VzUmVxdWVzdCIpLCBrQ0ZCb29sZWFuVHJ1ZSk7CiAg
ICAgfQogCi0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgUmV0YWluUHRyPENGRGF0YVJlZj4gc291
cmNlQXBwbGljYXRpb25BdWRpdERhdGEgPSBkLT5tX2NvbnRleHQtPnNvdXJjZUFwcGxpY2F0aW9u
QXVkaXREYXRhKCk7Ci0gICAgaWYgKHNvdXJjZUFwcGxpY2F0aW9uQXVkaXREYXRhKQotICAgICAg
ICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShzdHJlYW1Qcm9wZXJ0aWVzLCBDRlNUUigia0NGU3RyZWFt
UHJvcGVydHlTb3VyY2VBcHBsaWNhdGlvbiIpLCBzb3VyY2VBcHBsaWNhdGlvbkF1ZGl0RGF0YS5n
ZXQoKSk7Ci0jZW5kaWYKLQogICAgIHN0YXRpYyBjb25zdCBDRlN0cmluZ1JlZiBrQ0ZVUkxDb25u
ZWN0aW9uU29ja2V0U3RyZWFtUHJvcGVydGllcyA9IENGU1RSKCJrQ0ZVUkxDb25uZWN0aW9uU29j
a2V0U3RyZWFtUHJvcGVydGllcyIpOwogICAgIFJldGFpblB0cjxDRk11dGFibGVEaWN0aW9uYXJ5
UmVmPiBwcm9wZXJ0aWVzRGljdGlvbmFyeTsKICAgICBpZiAoY2xpZW50UHJvcGVydGllcykKQEAg
LTIzMCwxNCArMjAxLDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6Y3JlYXRlQ0ZVUkxDb25uZWN0
aQogICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKHByb3BlcnRpZXNEaWN0aW9uYXJ5LmdldCgpLCBr
Q0ZVUkxDb25uZWN0aW9uU29ja2V0U3RyZWFtUHJvcGVydGllcywgc3RyZWFtUHJvcGVydGllcyk7
CiAgICAgQ0ZSZWxlYXNlKHN0cmVhbVByb3BlcnRpZXMpOwogCi0jaWYgUExBVEZPUk0oQ09DT0Ep
Ci0gICAgaWYgKGQtPm1fdXNlc0FzeW5jQ2FsbGJhY2tzKQotICAgICAgICBkLT5tX2Nvbm5lY3Rp
b25EZWxlZ2F0ZSA9IGFkb3B0UmVmKG5ldyBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRl
bGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlKHRoaXMpKTsKLSAgICBlbHNlCi0gICAgICAgIGQtPm1f
Y29ubmVjdGlvbkRlbGVnYXRlID0gYWRvcHRSZWYobmV3IFN5bmNocm9ub3VzUmVzb3VyY2VIYW5k
bGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZSh0aGlzKSk7Ci0jZWxzZQogICAgIGQtPm1fY29ubmVj
dGlvbkRlbGVnYXRlID0gYWRvcHRSZWYobmV3IFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVS
TENvbm5lY3Rpb25EZWxlZ2F0ZSh0aGlzKSk7Ci0jZW5kaWYKICAgICBkLT5tX2Nvbm5lY3Rpb25E
ZWxlZ2F0ZS0+c2V0dXBSZXF1ZXN0KHJlcXVlc3QuZ2V0KCkpOwogCiAgICAgQ0ZVUkxDb25uZWN0
aW9uQ2xpZW50X1Y2IGNsaWVudCA9IGQtPm1fY29ubmVjdGlvbkRlbGVnYXRlLT5tYWtlQ29ubmVj
dGlvbkNsaWVudCgpOwpAQCAtMjY0LDEwICsyMjgsNiBAQCBib29sIFJlc291cmNlSGFuZGxlOjpz
dGFydCgpCiAKICAgICBib29sIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlID0gIWNsaWVudCgp
IHx8IGNsaWVudCgpLT5zaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSh0aGlzKTsKIAotI2lmIEVO
QUJMRShXRUJfVElNSU5HKSAmJiBQTEFURk9STShDT0NPQSkgJiYgIUhBVkUoVElNSU5HREFUQU9Q
VElPTlMpCi0gICAgc2V0Q29sbGVjdHNUaW1pbmdEYXRhKCk7Ci0jZW5kaWYKLQogICAgIFNjaGVk
dWxpbmdCZWhhdmlvciBzY2hlZHVsaW5nQmVoYXZpb3IgPSBjbGllbnQoKS0+bG9hZGluZ1N5bmNo
cm9ub3VzWEhSKCkgPyBTY2hlZHVsaW5nQmVoYXZpb3I6OlN5bmNocm9ub3VzIDogU2NoZWR1bGlu
Z0JlaGF2aW9yOjpBc3luY2hyb25vdXM7CiAKICAgICBjcmVhdGVDRlVSTENvbm5lY3Rpb24oc2hv
dWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UsIGQtPm1fc2hvdWxkQ29udGVudFNuaWZmLCBzY2hlZHVs
aW5nQmVoYXZpb3IsIGNsaWVudCgpLT5jb25uZWN0aW9uUHJvcGVydGllcyh0aGlzKS5nZXQoKSk7
CkBAIC0zNTEsMTYgKzMxMSw2IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmRpZFJlY2VpdmVBdXRo
ZW50aWMKICAgICBBU1NFUlQoY2hhbGxlbmdlLmNmVVJMQXV0aENoYWxsZW5nZVJlZigpKTsKICAg
ICBBU1NFUlQoY2hhbGxlbmdlLmF1dGhlbnRpY2F0aW9uQ2xpZW50KCkgPT0gdGhpcyk7IC8vIFNo
b3VsZCBiZSBhbHJlYWR5IHNldC4KIAotI2lmICFQTEFURk9STShXSU4pCi0gICAgLy8gUHJveHkg
YXV0aGVudGljYXRpb24gaXMgaGFuZGxlZCBieSBDRk5ldHdvcmsgaW50ZXJuYWxseS4gV2UgY2Fu
IGdldCBoZXJlIGlmIHRoZSB1c2VyIGNhbmNlbHMKLSAgICAvLyBDRk5ldHdvcmsgYXV0aGVudGlj
YXRpb24gZGlhbG9nLCBhbmQgd2Ugc2hvdWxkbid0IGFzayB0aGUgY2xpZW50IHRvIGRpc3BsYXkg
YW5vdGhlciBvbmUgaW4gdGhhdCBjYXNlLgotICAgIGlmIChjaGFsbGVuZ2UucHJvdGVjdGlvblNw
YWNlKCkuaXNQcm94eSgpKSB7Ci0gICAgICAgIC8vIENhbm5vdCB1c2UgcmVjZWl2ZWRSZXF1ZXN0
VG9Db250aW51ZVdpdGhvdXRDcmVkZW50aWFsKCksIGJlY2F1c2UgY3VycmVudCBjaGFsbGVuZ2Ug
aXMgbm90IHlldCBzZXQuCi0gICAgICAgIENGVVJMQ29ubmVjdGlvblVzZUNyZWRlbnRpYWwoZC0+
bV9jb25uZWN0aW9uLmdldCgpLCAwLCBjaGFsbGVuZ2UuY2ZVUkxBdXRoQ2hhbGxlbmdlUmVmKCkp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotI2VuZGlmCi0KICAgICBpZiAodHJ5SGFuZGxlUGFz
c3dvcmRCYXNlZEF1dGhlbnRpY2F0aW9uKGNoYWxsZW5nZSkpCiAgICAgICAgIHJldHVybjsKIApA
QCAtMzgxLDExICszMzEsNyBAQCBib29sIFJlc291cmNlSGFuZGxlOjp0cnlIYW5kbGVQYXNzd29y
ZEJhCiAKICAgICBpZiAoIWQtPm1fdXNlci5pc051bGwoKSAmJiAhZC0+bV9wYXNzLmlzTnVsbCgp
KSB7CiAgICAgICAgIFJldGFpblB0cjxDRlVSTENyZWRlbnRpYWxSZWY+IGNmQ3JlZGVudGlhbCA9
IGFkb3B0Q0YoQ0ZVUkxDcmVkZW50aWFsQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGQtPm1f
dXNlci5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBkLT5tX3Bhc3MuY3JlYXRlQ0ZTdHJpbmcoKS5n
ZXQoKSwgMCwga0NGVVJMQ3JlZGVudGlhbFBlcnNpc3RlbmNlTm9uZSkpOwotI2lmIFBMQVRGT1JN
KENPQ09BKQotICAgICAgICBDcmVkZW50aWFsIGNyZWRlbnRpYWwgPSBDcmVkZW50aWFsKGNmQ3Jl
ZGVudGlhbC5nZXQoKSk7Ci0jZWxzZQogICAgICAgICBDcmVkZW50aWFsIGNyZWRlbnRpYWwgPSBj
b3JlKGNmQ3JlZGVudGlhbC5nZXQoKSk7Ci0jZW5kaWYKICAgICAgICAgCiAgICAgICAgIFVSTCB1
cmxUb1N0b3JlOwogICAgICAgICBpZiAoY2hhbGxlbmdlLmZhaWx1cmVSZXNwb25zZSgpLmh0dHBT
dGF0dXNDb2RlKCkgPT0gNDAxKQpAQCAtNDE1LDEyICszNjEsOCBAQCBib29sIFJlc291cmNlSGFu
ZGxlOjp0cnlIYW5kbGVQYXNzd29yZEJhCiAgICAgICAgICAgICAgICAgICAgIC8vIFN0b3JlIHRo
ZSBjcmVkZW50aWFsIGJhY2ssIHBvc3NpYmx5IGFkZGluZyBpdCBhcyBhIGRlZmF1bHQgZm9yIHRo
aXMgZGlyZWN0b3J5LgogICAgICAgICAgICAgICAgICAgICBkLT5tX2NvbnRleHQtPnN0b3JhZ2VT
ZXNzaW9uKCkuY3JlZGVudGlhbFN0b3JhZ2UoKS5zZXQoY3JlZGVudGlhbCwgY2hhbGxlbmdlLnBy
b3RlY3Rpb25TcGFjZSgpLCBjaGFsbGVuZ2UuZmFpbHVyZVJlc3BvbnNlKCkudXJsKCkpOwogICAg
ICAgICAgICAgICAgIH0KLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICAgICAgICAgICAgICBDRlVS
TENvbm5lY3Rpb25Vc2VDcmVkZW50aWFsKGQtPm1fY29ubmVjdGlvbi5nZXQoKSwgY3JlZGVudGlh
bC5jZkNyZWRlbnRpYWwoKSwgY2hhbGxlbmdlLmNmVVJMQXV0aENoYWxsZW5nZVJlZigpKTsKLSNl
bHNlCiAgICAgICAgICAgICAgICAgUmV0YWluUHRyPENGVVJMQ3JlZGVudGlhbFJlZj4gY2ZDcmVk
ZW50aWFsID0gYWRvcHRDRihjcmVhdGVDRihjcmVkZW50aWFsKSk7CiAgICAgICAgICAgICAgICAg
Q0ZVUkxDb25uZWN0aW9uVXNlQ3JlZGVudGlhbChkLT5tX2Nvbm5lY3Rpb24uZ2V0KCksIGNmQ3Jl
ZGVudGlhbC5nZXQoKSwgY2hhbGxlbmdlLmNmVVJMQXV0aENoYWxsZW5nZVJlZigpKTsKLSNlbmRp
ZgogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgfQogICAgICAgICB9
CkBAIC00NzAsMjAgKzQxMiwxMCBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpyZWNlaXZlZENyZWRl
bnRpYWwoCiAgICAgICAgIGQtPm1fY29udGV4dC0+c3RvcmFnZVNlc3Npb24oKS5jcmVkZW50aWFs
U3RvcmFnZSgpLnNldCh3ZWJDcmVkZW50aWFsLCBjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlKCks
IHVybFRvU3RvcmUpOwogCiAgICAgICAgIGlmIChkLT5tX2Nvbm5lY3Rpb24pIHsKLSNpZiBQTEFU
Rk9STShDT0NPQSkKICAgICAgICAgICAgIENGVVJMQ29ubmVjdGlvblVzZUNyZWRlbnRpYWwoZC0+
bV9jb25uZWN0aW9uLmdldCgpLCB3ZWJDcmVkZW50aWFsLmNmQ3JlZGVudGlhbCgpLCBjaGFsbGVu
Z2UuY2ZVUkxBdXRoQ2hhbGxlbmdlUmVmKCkpOwotI2Vsc2UKLSAgICAgICAgICAgIFJldGFpblB0
cjxDRlVSTENyZWRlbnRpYWxSZWY+IGNmQ3JlZGVudGlhbCA9IGFkb3B0Q0YoY3JlYXRlQ0Yod2Vi
Q3JlZGVudGlhbCkpOwotICAgICAgICAgICAgQ0ZVUkxDb25uZWN0aW9uVXNlQ3JlZGVudGlhbChk
LT5tX2Nvbm5lY3Rpb24uZ2V0KCksIGNmQ3JlZGVudGlhbC5nZXQoKSwgY2hhbGxlbmdlLmNmVVJM
QXV0aENoYWxsZW5nZVJlZigpKTsKLSNlbmRpZgogICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChk
LT5tX2Nvbm5lY3Rpb24pIHsKLSNpZiBQTEFURk9STShDT0NPQSkKICAgICAgICAgQ0ZVUkxDb25u
ZWN0aW9uVXNlQ3JlZGVudGlhbChkLT5tX2Nvbm5lY3Rpb24uZ2V0KCksIGNyZWRlbnRpYWwuY2ZD
cmVkZW50aWFsKCksIGNoYWxsZW5nZS5jZlVSTEF1dGhDaGFsbGVuZ2VSZWYoKSk7Ci0jZWxzZQot
ICAgICAgICBSZXRhaW5QdHI8Q0ZVUkxDcmVkZW50aWFsUmVmPiBjZkNyZWRlbnRpYWwgPSBhZG9w
dENGKGNyZWF0ZUNGKGNyZWRlbnRpYWwpKTsKLSAgICAgICAgQ0ZVUkxDb25uZWN0aW9uVXNlQ3Jl
ZGVudGlhbChkLT5tX2Nvbm5lY3Rpb24uZ2V0KCksIGNmQ3JlZGVudGlhbC5nZXQoKSwgY2hhbGxl
bmdlLmNmVVJMQXV0aENoYWxsZW5nZVJlZigpKTsKLSNlbmRpZgogICAgIH0KIAogICAgIGNsZWFy
QXV0aGVudGljYXRpb24oKTsKQEAgLTYyNCwzMCArNTU2LDYgQEAgdm9pZCBSZXNvdXJjZUhhbmRs
ZTo6cGxhdGZvcm1TZXREZWZlcnNMbwogICAgICAgICBDRlVSTENvbm5lY3Rpb25SZXN1bWUoZC0+
bV9jb25uZWN0aW9uLmdldCgpKTsKIH0KIAotI2lmIFBMQVRGT1JNKENPQ09BKQotdm9pZCBSZXNv
dXJjZUhhbmRsZTo6c2NoZWR1bGUoU2NoZWR1bGVQYWlyJiBwYWlyKQotewotICAgIENGUnVuTG9v
cFJlZiBydW5Mb29wID0gcGFpci5ydW5Mb29wKCk7Ci0gICAgaWYgKCFydW5Mb29wKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBDRlVSTENvbm5lY3Rpb25TY2hlZHVsZVdpdGhSdW5Mb29wKGQtPm1f
Y29ubmVjdGlvbi5nZXQoKSwgcnVuTG9vcCwgcGFpci5tb2RlKCkpOwotICAgIGlmIChkLT5tX3N0
YXJ0V2hlblNjaGVkdWxlZCkgewotICAgICAgICBDRlVSTENvbm5lY3Rpb25TdGFydChkLT5tX2Nv
bm5lY3Rpb24uZ2V0KCkpOwotICAgICAgICBkLT5tX3N0YXJ0V2hlblNjaGVkdWxlZCA9IGZhbHNl
OwotICAgIH0KLX0KLQotdm9pZCBSZXNvdXJjZUhhbmRsZTo6dW5zY2hlZHVsZShTY2hlZHVsZVBh
aXImIHBhaXIpCi17Ci0gICAgQ0ZSdW5Mb29wUmVmIHJ1bkxvb3AgPSBwYWlyLnJ1bkxvb3AoKTsK
LSAgICBpZiAoIXJ1bkxvb3ApCi0gICAgICAgIHJldHVybjsKLQotICAgIENGVVJMQ29ubmVjdGlv
blVuc2NoZWR1bGVGcm9tUnVuTG9vcChkLT5tX2Nvbm5lY3Rpb24uZ2V0KCksIHJ1bkxvb3AsIHBh
aXIubW9kZSgpKTsKLX0KLSNlbmRpZgotCiBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIFJlc291cmNl
SGFuZGxlOjpjdXJyZW50UmVxdWVzdCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGQtPm1fY3VycmVu
dFJlcXVlc3Q7CkBAIC02NzYsNiArNTg0LDYgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6Y29udGlu
dWVXaWxsQ2FjaGVSZQogewogICAgIGQtPm1fY29ubmVjdGlvbkRlbGVnYXRlLT5jb250aW51ZVdp
bGxDYWNoZVJlc3BvbnNlKHJlc3BvbnNlKTsKIH0KLSNlbmRpZiAvLyBVU0UoQ0ZORVRXT1JLKQor
I2VuZGlmIC8vIFVTRShDRlVSTENPTk5FQ1RJT04pCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVD
RlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRl
LmNwcAkocmV2aXNpb24gMjA3MDM1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjYsMjAgKzI2LDEzIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5oIgogCi0jaWYgVVNFKENGTkVU
V09SSykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogCiAjaW5jbHVkZSAiQ0ZOZXR3b3JrU1BJ
LmgiCiAjaW5jbHVkZSAiRm9ybURhdGFTdHJlYW1DRk5ldC5oIgogI2luY2x1ZGUgIk5ldHdvcmtp
bmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKLQotI2lmIFBMQVRGT1JN
KENPQ09BKQotI2luY2x1ZGUgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKLSNlbmRpZgotCi0j
aWYgUExBVEZPUk0oV0lOKQogI2luY2x1ZGUgPFdlYktpdFN5c3RlbUludGVyZmFjZS9XZWJLaXRT
eXN0ZW1JbnRlcmZhY2UuaD4KLSNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTIx
OCw0ICsyMTEsNCBAQCBDRlVSTENvbm5lY3Rpb25DbGllbnRfVjYgUmVzb3VyY2VIYW5kbGVDCiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUuCiAKLSNlbmRpZiAvLyBVU0UoQ0ZORVRXT1JLKQorI2Vu
ZGlmIC8vIFVTRShDRlVSTENPTk5FQ1RJT04pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFu
ZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuaAkocmV2aXNpb24gMjA3MDM1KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlv
bkRlbGVnYXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDEwICsyMyw5IEBACiAgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgogICovCiAKLSNpZm5kZWYgUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0
ZV9oCi0jZGVmaW5lIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVfaAorI3By
YWdtYSBvbmNlCiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04p
CiAKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZV
UkxDb25uZWN0aW9uUHJpdi5oPgpAQCAtMTAwLDYgKzk5LDQgQEAgcHJvdGVjdGVkOgogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlLgogCi0jZW5kaWYgLy8gVVNFKENGTkVUV09SSykKLQotI2VuZGlm
IC8vIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVfaAorI2VuZGlmIC8vIFVT
RShDRlVSTENPTk5FQ1RJT04pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVl
dWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2Yv
UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5j
cHAJKHJldmlzaW9uIDIwNzAzNSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9w
ZXJhdGlvblF1ZXVlLmgiCiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQorI2lmIFVTRShDRlVSTENPTk5F
Q1RJT04pCiAKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNGLmgiCiAjaW5jbHVkZSAiQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UuaCIKQEAgLTc1LDkgKzc1LDYgQEAgdm9pZCBSZXNvdXJjZUhhbmRs
ZUNGVVJMQ29ubmVjdGlvbkRlbGVnYQogCiB2b2lkIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0
aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OnNldHVwUmVxdWVzdChDRk11dGFibGVVUkxS
ZXF1ZXN0UmVmIHJlcXVlc3QpCiB7Ci0jaWYgUExBVEZPUk0oSU9TKQotICAgIENGVVJMUmVxdWVz
dFNldFNob3VsZFN0YXJ0U3luY2hyb25vdXNseShyZXF1ZXN0LCAxKTsKLSNlbmRpZgogICAgIENG
VVJMUmVmIHJlcXVlc3RVUkwgPSBDRlVSTFJlcXVlc3RHZXRVUkwocmVxdWVzdCk7CiAgICAgaWYg
KCFyZXF1ZXN0VVJMKQogICAgICAgICByZXR1cm47CkBAIC0xNDksMTAgKzE0Niw4IEBAIHZvaWQg
UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2EKICAgICAgICAgICAgIGFkanVzdE1J
TUVUeXBlSWZOZWNlc3NhcnkoY2ZSZXNwb25zZSwgaXNNYWluUmVzb3VyY2VMb2FkKTsKICAgICAg
ICAgfQogCi0jaWYgIVBMQVRGT1JNKElPUykKICAgICAgICAgaWYgKF9DRlVSTFJlcXVlc3RDb3B5
UHJvdG9jb2xQcm9wZXJ0eUZvcktleShtX2hhbmRsZS0+Zmlyc3RSZXF1ZXN0KCkuY2ZVUkxSZXF1
ZXN0KERvTm90VXBkYXRlSFRUUEJvZHkpLCBDRlNUUigiRm9yY2VIVE1MTUlNRVR5cGUiKSkpCiAg
ICAgICAgICAgICBDRlVSTFJlc3BvbnNlU2V0TUlNRVR5cGUoY2ZSZXNwb25zZSwgQ0ZTVFIoInRl
eHQvaHRtbCIpKTsKLSNlbmRpZiAvLyAhUExBVEZPUk0oSU9TKQogICAgICAgICAKICAgICAgICAg
UmVzb3VyY2VSZXNwb25zZSByZXNvdXJjZVJlc3BvbnNlKGNmUmVzcG9uc2UpOwogI2lmIEVOQUJM
RShXRUJfVElNSU5HKQpAQCAtMjg4LDE1ICsyODMsNyBAQCBCb29sZWFuIFJlc291cmNlSGFuZGxl
Q0ZVUkxDb25uZWN0aW9uRGVsCiAKICAgICAgICAgTE9HKE5ldHdvcmssICJDRk5ldCAtIFJlc291
cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OmNhblJl
c3BvbmRUb1Byb3RlY3Rpb25TcGFjZShoYW5kbGU9JXApICglcykiLCBtX2hhbmRsZSwgbV9oYW5k
bGUtPmZpcnN0UmVxdWVzdCgpLnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogCi0gICAg
ICAgIFByb3RlY3Rpb25TcGFjZSBjb3JlUHJvdGVjdGlvblNwYWNlID0gUHJvdGVjdGlvblNwYWNl
KHByb3RlY3Rpb25TcGFjZSk7Ci0jaWYgUExBVEZPUk0oSU9TKQotICAgICAgICBpZiAoY29yZVBy
b3RlY3Rpb25TcGFjZS5hdXRoZW50aWNhdGlvblNjaGVtZSgpID09IFByb3RlY3Rpb25TcGFjZUF1
dGhlbnRpY2F0aW9uU2NoZW1lVW5rbm93bikgewotICAgICAgICAgICAgbV9ib29sUmVzdWx0ID0g
ZmFsc2U7Ci0gICAgICAgICAgICBkaXNwYXRjaF9zZW1hcGhvcmVfc2lnbmFsKG1fc2VtYXBob3Jl
KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotI2VuZGlmIC8vIFBMQVRGT1JNKElP
UykKLSAgICAgICAgbV9oYW5kbGUtPmNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3Bh
Y2UoY29yZVByb3RlY3Rpb25TcGFjZSk7CisgICAgICAgIG1faGFuZGxlLT5jYW5BdXRoZW50aWNh
dGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKFByb3RlY3Rpb25TcGFjZShwcm90ZWN0aW9uU3BhY2Up
KTsKICAgICB9KTsKICAgICBkaXNwYXRjaF9zZW1hcGhvcmVfd2FpdChtX3NlbWFwaG9yZSwgRElT
UEFUQ0hfVElNRV9GT1JFVkVSKTsKICAgICByZXR1cm4gbV9ib29sUmVzdWx0OwpAQCAtMzQ3LDQg
KzMzNCw0IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2EKICNlbmRp
ZiAvLyBVU0UoUFJPVEVDVElPTl9TUEFDRV9BVVRIX0NBTExCQUNLKQogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCi0jZW5kaWYgLy8gVVNFKENGTkVUV09SSykKKyNlbmRpZiAvLyBVU0UoQ0ZVUkxD
T05ORUNUSU9OKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNv
dXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhh
bmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmgJKHJldmlzaW9u
IDIwNzAzNSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VI
YW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yMywxMCArMjMsOSBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVm
IFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWVf
aAotI2RlZmluZSBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJh
dGlvblF1ZXVlX2gKKyNwcmFnbWEgb25jZQogCi0jaWYgVVNFKENGTkVUV09SSykKKyNpZiBVU0Uo
Q0ZVUkxDT05ORUNUSU9OKQogCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rp
b25EZWxlZ2F0ZS5oIgogI2luY2x1ZGUgPENGTmV0d29yay9DRk5ldHdvcmsuaD4KQEAgLTgwLDYg
Kzc5LDQgQEAgcHJpdmF0ZToKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZS4KIAotI2VuZGlmIC8v
IFVTRShDRk5FVFdPUkspCi0KLSNlbmRpZiAvLyBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlv
bkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlX2gKKyNlbmRpZiAvLyBVU0UoQ0ZVUkxDT05ORUNU
SU9OKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJl
cXVlc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L1Jlc291cmNlUmVxdWVzdC5oCShyZXZpc2lvbiAyMDcwMzUpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
MSw3ICszMSw3IEBACiAKIE9CSkNfQ0xBU1MgTlNVUkxSZXF1ZXN0OwogCi0jaWYgUExBVEZPUk0o
Q09DT0EpIHx8IFVTRShDRk5FVFdPUkspCisjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRlVS
TENPTk5FQ1RJT04pCiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBfQ0ZVUkxSZXF1ZXN0KiBDRlVSTFJl
cXVlc3RSZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBfX0NGVVJMU3RvcmFnZVNlc3Npb24qIENG
VVJMU3RvcmFnZVNlc3Npb25SZWY7CiAjZW5kaWYKQEAgLTYxLDEzICs2MSw3IEBAIHB1YmxpYzoK
ICAgICB7CiAgICAgfQogICAgIAotI2lmIFVTRShDRk5FVFdPUkspCi0jaWYgUExBVEZPUk0oQ09D
T0EpCi0gICAgV0VCQ09SRV9FWFBPUlQgUmVzb3VyY2VSZXF1ZXN0KE5TVVJMUmVxdWVzdCAqKTsK
LSAgICB2b2lkIHVwZGF0ZU5TVVJMUmVxdWVzdCgpOwotICAgIHZvaWQgY2xlYXJPclVwZGF0ZU5T
VVJMUmVxdWVzdCgpOwotI2VuZGlmCi0KKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogICAgIFJl
c291cmNlUmVxdWVzdChDRlVSTFJlcXVlc3RSZWYgY2ZSZXF1ZXN0KQogICAgICAgICA6IFJlc291
cmNlUmVxdWVzdEJhc2UoKQogICAgICAgICAsIG1fY2ZSZXF1ZXN0KGNmUmVxdWVzdCkKQEAgLTg0
LDExICs3OCw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZUZyb21E
ZWxlZ2F0ZVByZXNlcnZpbmdPbGRQcm9wZXJ0aWVzKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwog
CiAjaWYgUExBVEZPUk0oQ09DT0EpCi0jaWYgVVNFKENGTkVUV09SSykKLSAgICBib29sIGVuY29k
aW5nUmVxdWlyZXNQbGF0Zm9ybURhdGEoKSBjb25zdCB7IHJldHVybiBtX2h0dHBCb2R5IHx8IG1f
Y2ZSZXF1ZXN0OyB9Ci0jZWxzZQogICAgIGJvb2wgZW5jb2RpbmdSZXF1aXJlc1BsYXRmb3JtRGF0
YSgpIGNvbnN0IHsgcmV0dXJuIG1faHR0cEJvZHkgfHwgbV9uc1JlcXVlc3Q7IH0KLSNlbmRpZgog
ICAgIFdFQkNPUkVfRVhQT1JUIE5TVVJMUmVxdWVzdCAqbnNVUkxSZXF1ZXN0KEhUVFBCb2R5VXBk
YXRlUG9saWN5KSBjb25zdDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBDRlN0cmluZ1Jl
ZiBpc1VzZXJJbml0aWF0ZWRLZXkoKTsKQEAgLTEwNSw3ICs5NSw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIHNldERvbWFpbkZvckNhY2hlUGFydGl0aW9uKGNvbnN0IFN0cmluZyYgZG9tYWluKSB7IG1f
Y2FjaGVQYXJ0aXRpb24gPSBwYXJ0aXRpb25OYW1lKGRvbWFpbik7IH0KICNlbmRpZgogCi0jaWYg
UExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRk5FVFdPUkspCisjaWYgUExBVEZPUk0oQ09DT0EpIHx8
IFVTRShDRlVSTENPTk5FQ1RJT04pCiAgICAgV0VCQ09SRV9FWFBPUlQgQ0ZVUkxSZXF1ZXN0UmVm
IGNmVVJMUmVxdWVzdChIVFRQQm9keVVwZGF0ZVBvbGljeSkgY29uc3Q7CiAgICAgdm9pZCBzZXRT
dG9yYWdlU2Vzc2lvbihDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmKTsKICNlbmRpZgpAQCAtMTI1LDcg
KzExNSw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGRvUGxhdGZvcm1TZXRBc0lzb2xhdGVkQ29w
eShjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKIAotI2lmIFVTRShDRk5FVFdPUkspCisjaWYgVVNF
KENGVVJMQ09OTkVDVElPTikKICAgICBSZXRhaW5QdHI8Q0ZVUkxSZXF1ZXN0UmVmPiBtX2NmUmVx
dWVzdDsKICNlbmRpZgogI2lmIFBMQVRGT1JNKENPQ09BKQpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5l
dC5jcHAJKHJldmlzaW9uIDIwNzAzNSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2YvUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICsz
NCw3IEBACiAjaW5jbHVkZSAiUHVibGljU3VmZml4LmgiCiAjZW5kaWYKIAotI2lmIFVTRShDRk5F
VFdPUkspCisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKICNpbmNsdWRlICJGb3JtRGF0YVN0cmVh
bUNGTmV0LmgiCiAjaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGVVJMUmVxdWVzdFByaXYuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CkBAIC01OSwxMiArNTksMTEgQEAgYm9vbCBSZXNvdXJj
ZVJlcXVlc3Q6OnNfaHR0cFBpcGVsaW5pbmdFbgogYm9vbCBSZXNvdXJjZVJlcXVlc3Q6OnNfaHR0
cFBpcGVsaW5pbmdFbmFibGVkID0gZmFsc2U7CiAjZW5kaWYKIAotI2lmIFVTRShDRk5FVFdPUksp
CisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKIAogdHlwZWRlZiB2b2lkICgqQ0ZVUkxSZXF1ZXN0
U2V0Q29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5RnVuY3Rpb24pKENGTXV0
YWJsZVVSTFJlcXVlc3RSZWYsIENGQXJyYXlSZWYpOwogdHlwZWRlZiBDRkFycmF5UmVmICgqQ0ZV
UkxSZXF1ZXN0Q29weUNvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheUZ1bmN0
aW9uKShDRlVSTFJlcXVlc3RSZWYpOwogCi0jaWYgUExBVEZPUk0oV0lOKQogc3RhdGljIEhNT0RV
TEUgZmluZENGTmV0d29ya01vZHVsZSgpCiB7CiAjaWZuZGVmIERFQlVHX0FMTApAQCAtODMsMTcg
KzgyLDYgQEAgc3RhdGljIENGVVJMUmVxdWVzdENvcHlDb250ZW50RGlzcG9zaXRpbwogewogICAg
IHJldHVybiByZWludGVycHJldF9jYXN0PENGVVJMUmVxdWVzdENvcHlDb250ZW50RGlzcG9zaXRp
b25FbmNvZGluZ0ZhbGxiYWNrQXJyYXlGdW5jdGlvbj4oR2V0UHJvY0FkZHJlc3MoZmluZENGTmV0
d29ya01vZHVsZSgpLCAiX0NGVVJMUmVxdWVzdENvcHlDb250ZW50RGlzcG9zaXRpb25FbmNvZGlu
Z0ZhbGxiYWNrQXJyYXkiKSk7CiB9Ci0jZWxpZiBQTEFURk9STShDT0NPQSkKLXN0YXRpYyBDRlVS
TFJlcXVlc3RTZXRDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXlGdW5jdGlv
biBmaW5kQ0ZVUkxSZXF1ZXN0U2V0Q29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0Fy
cmF5RnVuY3Rpb24oKQotewotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PENGVVJMUmVxdWVz
dFNldENvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheUZ1bmN0aW9uPihkbHN5
bShSVExEX0RFRkFVTFQsICJfQ0ZVUkxSZXF1ZXN0U2V0Q29udGVudERpc3Bvc2l0aW9uRW5jb2Rp
bmdGYWxsYmFja0FycmF5IikpOwotfQotCi1zdGF0aWMgQ0ZVUkxSZXF1ZXN0Q29weUNvbnRlbnRE
aXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheUZ1bmN0aW9uIGZpbmRDRlVSTFJlcXVlc3RD
b3B5Q29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5RnVuY3Rpb24oKQotewot
ICAgIHJldHVybiByZWludGVycHJldF9jYXN0PENGVVJMUmVxdWVzdENvcHlDb250ZW50RGlzcG9z
aXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXlGdW5jdGlvbj4oZGxzeW0oUlRMRF9ERUZBVUxULCAi
X0NGVVJMUmVxdWVzdENvcHlDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXki
KSk7Ci19Ci0jZW5kaWYKIAogc3RhdGljIHZvaWQgc2V0Q29udGVudERpc3Bvc2l0aW9uRW5jb2Rp
bmdGYWxsYmFja0FycmF5KENGTXV0YWJsZVVSTFJlcXVlc3RSZWYgcmVxdWVzdCwgQ0ZBcnJheVJl
ZiBmYWxsYmFja0FycmF5KQogewpAQCAtMTU2LDEwICsxNDQsNiBAQCB2b2lkIFJlc291cmNlUmVx
dWVzdDo6ZG9VcGRhdGVQbGF0Zm9ybVJlCiAgICAgaWYgKHJlc291cmNlUHJpb3JpdGllc0VuYWJs
ZWQoKSkKICAgICAgICAgQ0ZVUkxSZXF1ZXN0U2V0UmVxdWVzdFByaW9yaXR5KGNmUmVxdWVzdCwg
dG9QbGF0Zm9ybVJlcXVlc3RQcmlvcml0eShwcmlvcml0eSgpKSk7CiAKLSNpZiAhUExBVEZPUk0o
V0lOKQotICAgIF9DRlVSTFJlcXVlc3RTZXRQcm90b2NvbFByb3BlcnR5KGNmUmVxdWVzdCwga0NG
VVJMUmVxdWVzdEFsbG93QWxsUE9TVENhY2hpbmcsIGtDRkJvb2xlYW5UcnVlKTsKLSNlbmRpZgot
CiAgICAgc2V0SGVhZGVyRmllbGRzKGNmUmVxdWVzdCwgaHR0cEhlYWRlckZpZWxkcygpKTsKIAog
ICAgIENGVVJMUmVxdWVzdFNldFNob3VsZEhhbmRsZUhUVFBDb29raWVzKGNmUmVxdWVzdCwgYWxs
b3dDb29raWVzKCkpOwpAQCAtMTg0LDkgKzE2OCw2IEBAIHZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojpk
b1VwZGF0ZVBsYXRmb3JtUmUKICNlbmRpZgogCiAgICAgbV9jZlJlcXVlc3QgPSBhZG9wdENGKGNm
UmVxdWVzdCk7Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgY2xlYXJPclVwZGF0ZU5TVVJMUmVx
dWVzdCgpOwotI2VuZGlmCiB9CiAKIHZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVBsYXRm
b3JtSFRUUEJvZHkoKQpAQCAtMjE5LDMwICsyMDAsMTIgQEAgdm9pZCBSZXNvdXJjZVJlcXVlc3Q6
OmRvVXBkYXRlUGxhdGZvcm1IVAogICAgIH0KIAogICAgIG1fY2ZSZXF1ZXN0ID0gYWRvcHRDRihj
ZlJlcXVlc3QpOwotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIGNsZWFyT3JVcGRhdGVOU1VSTFJl
cXVlc3QoKTsKLSNlbmRpZgogfQogCiB2b2lkIFJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVSZXNv
dXJjZVJlcXVlc3QoKQogewogICAgIGlmICghbV9jZlJlcXVlc3QpIHsKLSNpZiBQTEFURk9STShJ
T1MpCi0gICAgICAgIC8vIDxyZGFyOi8vcHJvYmxlbS85OTEzNTI2PgotICAgICAgICAvLyBUaGlz
IGlzIGEgaGFjayB0byBtaW1pYyB0aGUgc3VidGxlIGJlaGF2aW91ciBvZiB0aGUgRm91bmRhdGlv
biBiYXNlZCBSZXNvdXJjZVJlcXVlc3QKLSAgICAgICAgLy8gY29kZS4gVGhhdCBjb2RlIGRvZXMg
bm90IHJlc2V0IG1faHR0cE1ldGhvZCBpZiB0aGUgTlNVUkxSZXF1ZXN0IGlzIG5pbC4gSSBmaWxl
ZAotICAgICAgICAvLyA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY2
MzM2PiB0byB0cmFjayB0aGF0LgotICAgICAgICAvLyBBbm90aGVyIHJlbGF0ZWQgYnVnIGlzIDxo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjYzNTA+LiBGaXhpbmcgdGhh
dAotICAgICAgICAvLyB3b3VsZCwgaWRlYWxseSwgYWxsb3cgdXMgdG8gbm90IGhhdmUgdGhpcyBo
YWNrLiBCdXQgdW5mb3J0dW5hdGVseSB0aGF0IGNhdXNlZCBsYXlvdXQgdGVzdAotICAgICAgICAv
LyBmYWlsdXJlcy4KLSAgICAgICAgLy8gUmVtb3ZhbCBvZiB0aGlzIGhhY2sgaXMgdHJhY2tlZCBi
eSA8cmRhcjovL3Byb2JsZW0vOTk3MDQ5OT4uCi0KLSAgICAgICAgU3RyaW5nIGh0dHBNZXRob2Qg
PSBtX2h0dHBNZXRob2Q7CiAgICAgICAgICp0aGlzID0gUmVzb3VyY2VSZXF1ZXN0KCk7Ci0gICAg
ICAgIG1faHR0cE1ldGhvZCA9IGh0dHBNZXRob2Q7Ci0jZWxzZQotICAgICAgICAqdGhpcyA9IFJl
c291cmNlUmVxdWVzdCgpOwotI2VuZGlmCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTMx
NywxMiArMjgwLDkgQEAgdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OnNldFN0b3JhZ2VTZXNzaW9uKAog
ICAgIGlmIChzdG9yYWdlU2Vzc2lvbikKICAgICAgICAgX0NGVVJMUmVxdWVzdFNldFN0b3JhZ2VT
ZXNzaW9uKGNmUmVxdWVzdCwgc3RvcmFnZVNlc3Npb24pOwogICAgIG1fY2ZSZXF1ZXN0ID0gYWRv
cHRDRihjZlJlcXVlc3QpOwotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIGNsZWFyT3JVcGRhdGVO
U1VSTFJlcXVlc3QoKTsKLSNlbmRpZgogfQogCi0jZW5kaWYgLy8gVVNFKENGTkVUV09SSykKKyNl
bmRpZiAvLyBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogCiB2b2lkIFJlc291cmNlUmVxdWVzdDo6dXBk
YXRlRnJvbURlbGVnYXRlUHJlc2VydmluZ09sZFByb3BlcnRpZXMoY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiBkZWxlZ2F0ZVByb3ZpZGVkUmVxdWVzdCkKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdENGTmV0LmgJ
KHJldmlzaW9uIDIwNzAzNSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2Yv
UmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsOCArMjMsNyBAQAog
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCiAgKi8KIAotI2lmbmRlZiBSZXNvdXJjZVJlcXVlc3RDRk5ldF9oCi0j
ZGVmaW5lIFJlc291cmNlUmVxdWVzdENGTmV0X2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAi
Q0ZOZXR3b3JrU1BJLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkUHJpb3JpdHkuaCIKQEAgLTMz
LDcgKzMyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7
CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiB2b2lkIGdl
dFJlc291cmNlUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmLCBDRlVSTFJlcXVlc3RSZWYpOwogQ0ZV
UkxSZXF1ZXN0UmVmIGNmVVJMUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICNlbmRp
ZgpAQCAtNzgsNSArNzcsMyBAQCBpbmxpbmUgQ0ZVUkxSZXF1ZXN0UHJpb3JpdHkgdG9QbGF0Zm9y
bVJlCiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIFJlc291cmNlUmVx
dWVzdENGTmV0X2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVz
b3VyY2VSZXNwb25zZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY2YvUmVzb3VyY2VSZXNwb25zZS5oCShyZXZpc2lvbiAyMDcwMzUpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVzcG9uc2UuaAkod29ya2luZyBj
b3B5KQpAQCAtMjgsNyArMjgsNyBAQAogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2VCYXNlLmgi
CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogCi0jaWYgVVNFKENGTkVUV09SSykKKyNpZiBV
U0UoQ0ZVUkxDT05ORUNUSU9OKQogI2luY2x1ZGUgIkNGTmV0d29ya1NQSS5oIgogI2VuZGlmCiAK
QEAgLTQzLDE2ICs0MywxMyBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotI2lmIFVTRShDRk5F
VFdPUkspCisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKICAgICBSZXNvdXJjZVJlc3BvbnNlKENG
VVJMUmVzcG9uc2VSZWYgY2ZSZXNwb25zZSkKICAgICAgICAgOiBtX2luaXRMZXZlbChVbmluaXRp
YWxpemVkKQogICAgICAgICAsIG1fY2ZSZXNwb25zZShjZlJlc3BvbnNlKQogICAgIHsKICAgICAg
ICAgbV9pc051bGwgPSAhY2ZSZXNwb25zZTsKICAgICB9Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0g
ICAgV0VCQ09SRV9FWFBPUlQgUmVzb3VyY2VSZXNwb25zZShOU1VSTFJlc3BvbnNlICopOwotI2Vu
ZGlmCiAjZWxzZQogICAgIFJlc291cmNlUmVzcG9uc2UoTlNVUkxSZXNwb25zZSAqbnNSZXNwb25z
ZSkKICAgICAgICAgOiBtX2luaXRMZXZlbChVbmluaXRpYWxpemVkKQpAQCAtODQsNyArODEsNyBA
QCBwdWJsaWM6CiAgICAgICAgICAqLwogICAgIH0KIAotI2lmIFVTRShDRk5FVFdPUkspCisjaWYg
VVNFKENGVVJMQ09OTkVDVElPTikKICAgICBXRUJDT1JFX0VYUE9SVCBDRlVSTFJlc3BvbnNlUmVm
IGNmVVJMUmVzcG9uc2UoKSBjb25zdDsKICNlbmRpZgogI2lmIFBMQVRGT1JNKENPQ09BKQpAQCAt
MTA4LDEwICsxMDUsOSBAQCBwcml2YXRlOgogCiAgICAgdW5zaWduZWQgbV9pbml0TGV2ZWwgOiAz
OwogCi0jaWYgVVNFKENGTkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogICAgIG11
dGFibGUgUmV0YWluUHRyPENGVVJMUmVzcG9uc2VSZWY+IG1fY2ZSZXNwb25zZTsKLSNlbmRpZgot
I2lmIFBMQVRGT1JNKENPQ09BKQorI2VsaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgbXV0YWJsZSBS
ZXRhaW5QdHI8TlNVUkxSZXNwb25zZT4gbV9uc1Jlc3BvbnNlOwogI2VuZGlmCiB9OwpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlc3BvbnNlQ0ZOZXQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVz
b3VyY2VSZXNwb25zZUNGTmV0LmNwcAkocmV2aXNpb24gMjA3MDM1KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlc3BvbnNlQ0ZOZXQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
UmVzb3VyY2VSZXNwb25zZS5oIgogCi0jaWYgVVNFKENGTkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxD
T05ORUNUSU9OKQogCiAjaW5jbHVkZSAiQ0ZOZXR3b3JrU1BJLmgiCiAKQEAgLTM0LDEwICszNCw2
IEBACiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5Q
dHIuaD4KIAotI2lmIFBMQVRGT1JNKENPQ09BKQotI2luY2x1ZGUgIldlYkNvcmVTeXN0ZW1JbnRl
cmZhY2UuaCIKLSNlbmRpZgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBDRlN0cmlu
Z1JlZiBjb25zdCBjb21tb25IZWFkZXJGaWVsZHNbXSA9IHsKQEAgLTQ3LDEzICs0Myw5IEBAIHN0
YXRpYyBDRlN0cmluZ1JlZiBjb25zdCBjb21tb25IZWFkZXJGaWUKIENGVVJMUmVzcG9uc2VSZWYg
UmVzb3VyY2VSZXNwb25zZTo6Y2ZVUkxSZXNwb25zZSgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2Nm
UmVzcG9uc2UgJiYgIW1faXNOdWxsKSB7Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgICAgIG5z
VVJMUmVzcG9uc2UoKTsKLSNlbHNlCiAgICAgICAgIFJldGFpblB0cjxDRlVSTFJlZj4gdXJsID0g
bV91cmwuY3JlYXRlQ0ZVUkwoKTsKICAgICAgICAgLy8gRklYTUU6IFRoaXMgY3JlYXRlcyBhIHZl
cnkgaW5jb21wbGV0ZSBDRlVSTFJlc3BvbnNlLCB3aGljaCBkb2VzIG5vdCBldmVuIGhhdmUgYSBz
dGF0dXMgY29kZS4KICAgICAgICAgbV9jZlJlc3BvbnNlID0gYWRvcHRDRihDRlVSTFJlc3BvbnNl
Q3JlYXRlKDAsIHVybC5nZXQoKSwgbV9taW1lVHlwZS5zdHJpbmcoKS5jcmVhdGVDRlN0cmluZygp
LmdldCgpLCBtX2V4cGVjdGVkQ29udGVudExlbmd0aCwgbV90ZXh0RW5jb2RpbmdOYW1lLnN0cmlu
ZygpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGtDRlVSTENhY2hlU3RvcmFnZUFsbG93ZWQpKTsK
LSNlbmRpZgogICAgIH0KIAogICAgIHJldHVybiBtX2NmUmVzcG9uc2UuZ2V0KCk7CkBAIC0xMTYs
MTIgKzEwOCwxMCBAQCB2b2lkIFJlc291cmNlUmVzcG9uc2U6OnBsYXRmb3JtTGF6eUluaXQoCiAg
ICAgbV9pbml0TGV2ZWwgPSBpbml0TGV2ZWw7CiB9CiAKLSNpZiAhUExBVEZPUk0oQ09DT0EpCiBD
ZXJ0aWZpY2F0ZUluZm8gUmVzb3VyY2VSZXNwb25zZTo6cGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm8o
KSBjb25zdAogewogICAgIHJldHVybiB7IH07CiB9Ci0jZW5kaWYKIAogU3RyaW5nIFJlc291cmNl
UmVzcG9uc2U6OnBsYXRmb3JtU3VnZ2VzdGVkRmlsZW5hbWUoKSBjb25zdAogewpAQCAtMTQyLDQg
KzEzMiw0IEBAIGJvb2wgUmVzb3VyY2VSZXNwb25zZTo6cGxhdGZvcm1Db21wYXJlKGMKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYgLy8gVVNFKENGTkVUV09SSykKKyNlbmRpZiAv
LyBVU0UoQ0ZVUkxDT05ORUNUSU9OKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jZi9TeW5jaHJvbm91c0xvYWRlckNsaWVudENGTmV0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50
Q0ZOZXQuY3BwCShyZXZpc2lvbiAyMDcwMzUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NmL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50Q0ZOZXQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU3luY2hy
b25vdXNMb2FkZXJDbGllbnQuaCIKIAotI2lmIFVTRShDRk5FVFdPUkspCisjaWYgVVNFKENGVVJM
Q09OTkVDVElPTikKIAogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmgiCiAjaW5j
bHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKQEAgLTQ4LDQgKzQ4LDQgQEAgUmVzb3VyY2VFcnJvciBT
eW5jaHJvbm91c0xvYWRlckNsaWVudDo6cAogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNl
bmRpZiAvLyBVU0UoQ0ZORVRXT1JLKQorI2VuZGlmIC8vIFVTRShDRlVSTENPTk5FQ1RJT04pCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1N5bmNocm9ub3VzUmVzb3Vy
Y2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9TeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZV
UkxDb25uZWN0aW9uRGVsZWdhdGUuY3BwCShyZXZpc2lvbiAyMDcwMzUpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1N5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENv
bm5lY3Rpb25EZWxlZ2F0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDEyICsyNiwxMyBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVD
RlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5oIgogCi0jaWYgVVNFKENGTkVUV09SSykKKyNpZiBVU0Uo
Q0ZVUkxDT05ORUNUSU9OKQogCiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25DRi5oIgogI2luY2x1
ZGUgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmgiCiAjaW5jbHVkZSAiTG9hZGVyUnVuTG9vcENG
LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIK
ICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlQ2xp
ZW50LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgpAQCAtNDAsMjAgKzQxLDYgQEAK
ICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CiAKLSNpZiBQTEFURk9STShDT0NPQSkKLSNpbmNsdWRlICJDRk5ldHdvcmtTUEkuaCIK
LSNpbmNsdWRlICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgiCi0jaW5jbHVkZSAiV2ViQ29yZVVS
TFJlc3BvbnNlLmgiCi0jZW5kaWYgLy8gUExBVEZPUk0oQ09DT0EpCi0KLSNpZiBQTEFURk9STShJ
T1MpCi0jaW5jbHVkZSAiV2ViQ29yZVRocmVhZC5oIgotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykK
LQotI2lmIFBMQVRGT1JNKFdJTikKLSNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCi0jZW5k
aWYgLy8gUExBVEZPUk0oV0lOKQotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFN5bmNocm9ub3Vz
UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZTo6U3luY2hyb25vdXNSZXNvdXJj
ZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlKFJlc291cmNlSGFuZGxlKiBoYW5kbGUpCkBA
IC02MywyMCArNTAsMTEgQEAgU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlv
bgogCiB2b2lkIFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0
ZTo6c2V0dXBSZXF1ZXN0KENGTXV0YWJsZVVSTFJlcXVlc3RSZWYgcmVxdWVzdCkKIHsKLSNpZiBQ
TEFURk9STShJT1MpCi0gICAgQ0ZVUkxSZXF1ZXN0U2V0U2hvdWxkU3RhcnRTeW5jaHJvbm91c2x5
KHJlcXVlc3QsIDEpOwotI2VuZGlmCiB9CiAKIHZvaWQgU3luY2hyb25vdXNSZXNvdXJjZUhhbmRs
ZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlOjpzZXR1cENvbm5lY3Rpb25TY2hlZHVsaW5nKENGVVJM
Q29ubmVjdGlvblJlZiBjb25uZWN0aW9uKQogewotI2lmIFBMQVRGT1JNKFdJTikKICAgICBDRlVS
TENvbm5lY3Rpb25TY2hlZHVsZVdpdGhDdXJyZW50TWVzc2FnZVF1ZXVlKGNvbm5lY3Rpb24pOwot
I2VsaWYgUExBVEZPUk0oSU9TKQotICAgIENGVVJMQ29ubmVjdGlvblNjaGVkdWxlV2l0aFJ1bkxv
b3AoY29ubmVjdGlvbiwgV2ViVGhyZWFkUnVuTG9vcCgpLCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUp
OwotI2Vsc2UKLSAgICBDRlVSTENvbm5lY3Rpb25TY2hlZHVsZVdpdGhSdW5Mb29wKGNvbm5lY3Rp
b24sIENGUnVuTG9vcEdldEN1cnJlbnQoKSwga0NGUnVuTG9vcERlZmF1bHRNb2RlKTsKLSNlbmRp
ZgogICAgIENGVVJMQ29ubmVjdGlvblNjaGVkdWxlRG93bmxvYWRXaXRoUnVuTG9vcChjb25uZWN0
aW9uLCBsb2FkZXJSdW5Mb29wKCksIGtDRlJ1bkxvb3BEZWZhdWx0TW9kZSk7CiB9CiAKQEAgLTEw
Myw3ICs4MSw2IEBAIENGVVJMUmVxdWVzdFJlZiBTeW5jaHJvbm91c1Jlc291cmNlSGFuZGwKICAg
ICByZXR1cm4gbmV3Q0ZSZXF1ZXN0OwogfQogCi0jaWYgIVBMQVRGT1JNKENPQ09BKQogc3RhdGlj
IHZvaWQgc2V0RGVmYXVsdE1JTUVUeXBlKENGVVJMUmVzcG9uc2VSZWYgcmVzcG9uc2UpCiB7CiAg
ICAgc3RhdGljIENGU3RyaW5nUmVmIGRlZmF1bHRNSU1FVHlwZVN0cmluZyA9IGRlZmF1bHRNSU1F
VHlwZSgpLmNyZWF0ZUNGU3RyaW5nKCkubGVha1JlZigpOwpAQCAtMTMzLDcgKzExMCw2IEBAIHN0
YXRpYyB2b2lkIGFkanVzdE1JTUVUeXBlSWZOZWNlc3NhcnkoQ0YKICAgICBpZiAocmVzdWx0ICE9
IG9yaWdpbmFsUmVzdWx0KQogICAgICAgICBDRlVSTFJlc3BvbnNlU2V0TUlNRVR5cGUoY2ZSZXNw
b25zZSwgcmVzdWx0LmdldCgpKTsKIH0KLSNlbmRpZiAvLyAhUExBVEZPUk0oQ09DT0EpCiAKIHZv
aWQgU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlOjpkaWRS
ZWNlaXZlUmVzcG9uc2UoQ0ZVUkxDb25uZWN0aW9uUmVmIGNvbm5lY3Rpb24sIENGVVJMUmVzcG9u
c2VSZWYgY2ZSZXNwb25zZSkKIHsKQEAgLTE0MiwyMSArMTE4LDYgQEAgdm9pZCBTeW5jaHJvbm91
c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZQogICAgIGlmICghbV9oYW5kbGUtPmNsaWVudCgpKQog
ICAgICAgICByZXR1cm47CiAKLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICAvLyBBdm9pZCBNSU1F
IHR5cGUgc25pZmZpbmcgaWYgdGhlIHJlc3BvbnNlIGNvbWVzIGJhY2sgYXMgMzA0IE5vdCBNb2Rp
ZmllZC4KLSAgICBhdXRvIG1zZyA9IENGVVJMUmVzcG9uc2VHZXRIVFRQUmVzcG9uc2UoY2ZSZXNw
b25zZSk7Ci0gICAgaW50IHN0YXR1c0NvZGUgPSBtc2cgPyBDRkhUVFBNZXNzYWdlR2V0UmVzcG9u
c2VTdGF0dXNDb2RlKG1zZykgOiAwOwotCi0gICAgaWYgKHN0YXR1c0NvZGUgIT0gMzA0KSB7Ci0g
ICAgICAgIGJvb2wgaXNNYWluUmVzb3VyY2VMb2FkID0gbV9oYW5kbGUtPmZpcnN0UmVxdWVzdCgp
LnJlcXVlc3RlcigpID09IFJlc291cmNlUmVxdWVzdDo6UmVxdWVzdGVyOjpNYWluOwotICAgICAg
ICBhZGp1c3RNSU1FVHlwZUlmTmVjZXNzYXJ5KGNmUmVzcG9uc2UsIGlzTWFpblJlc291cmNlTG9h
ZCk7Ci0gICAgfQotCi0jaWYgIVBMQVRGT1JNKElPUykKLSAgICBpZiAoX0NGVVJMUmVxdWVzdENv
cHlQcm90b2NvbFByb3BlcnR5Rm9yS2V5KG1faGFuZGxlLT5maXJzdFJlcXVlc3QoKS5jZlVSTFJl
cXVlc3QoRG9Ob3RVcGRhdGVIVFRQQm9keSksIENGU1RSKCJGb3JjZUhUTUxNSU1FVHlwZSIpKSkK
LSAgICAgICAgQ0ZVUkxSZXNwb25zZVNldE1JTUVUeXBlKGNmUmVzcG9uc2UsIENGU1RSKCJ0ZXh0
L2h0bWwiKSk7Ci0jZW5kaWYgLy8gIVBMQVRGT1JNKElPUykKLSNlbHNlCiAgICAgaWYgKCFDRlVS
TFJlc3BvbnNlR2V0TUlNRVR5cGUoY2ZSZXNwb25zZSkpCiAgICAgICAgIGFkanVzdE1JTUVUeXBl
SWZOZWNlc3NhcnkoY2ZSZXNwb25zZSk7CiAKQEAgLTE2NSw3ICsxMjYsNiBAQCB2b2lkIFN5bmNo
cm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lCiAgICAgICAgIEFTU0VSVCghbV9oYW5kbGUt
PnNob3VsZENvbnRlbnRTbmlmZigpKTsKICAgICAgICAgc2V0RGVmYXVsdE1JTUVUeXBlKGNmUmVz
cG9uc2UpOwogICAgIH0KLSNlbmRpZgogCiAjaWYgVVNFKFFVSUNLX0xPT0spCiAgICAgbV9oYW5k
bGUtPnNldFF1aWNrTG9va0hhbmRsZShRdWlja0xvb2tIYW5kbGU6OmNyZWF0ZShtX2hhbmRsZSwg
dGhpcywgY2ZSZXNwb25zZSkpOwpAQCAtMTc0LDcgKzEzNCw3IEBAIHZvaWQgU3luY2hyb25vdXNS
ZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmUKICNlbmRpZgogICAgIAogICAgIFJlc291cmNlUmVzcG9u
c2UgcmVzb3VyY2VSZXNwb25zZShjZlJlc3BvbnNlKTsKLSNpZiBQTEFURk9STShDT0NPQSkgJiYg
RU5BQkxFKFdFQl9USU1JTkcpCisjaWYgRU5BQkxFKFdFQl9USU1JTkcpCiAgICAgUmVzb3VyY2VI
YW5kbGU6OmdldENvbm5lY3Rpb25UaW1pbmdEYXRhKGNvbm5lY3Rpb24sIHJlc291cmNlUmVzcG9u
c2UubmV0d29ya0xvYWRUaW1pbmcoKSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShjb25uZWN0
aW9uKTsKQEAgLTIyNCw3ICsxODQsNiBAQCB2b2lkIFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVD
RlVSTENvbm5lCiAKIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYgU3luY2hyb25vdXNSZXNvdXJjZUhh
bmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlOjp3aWxsQ2FjaGVSZXNwb25zZShDRkNhY2hlZFVS
TFJlc3BvbnNlUmVmIGNhY2hlZFJlc3BvbnNlKQogewotI2lmIFBMQVRGT1JNKFdJTikKICAgICAv
LyBXb3JrYXJvdW5kIGZvciA8cmRhcjovL3Byb2JsZW0vNjMwMDk5MD4gQ2FjaGluZyBkb2VzIG5v
dCByZXNwZWN0IFZhcnkgSFRUUCBoZWFkZXIuCiAgICAgLy8gRklYTUU6IFdlYkNvcmUgY2FjaGUg
aGFzIGlzc3VlcyB3aXRoIFZhcnksIHRvbyAoYnVnIDU4Nzk3LCBidWcgNzE1MDkpLgogICAgIENG
VVJMUmVzcG9uc2VSZWYgd3JhcHBlZFJlc3BvbnNlID0gQ0ZDYWNoZWRVUkxSZXNwb25zZUdldFdy
YXBwZWRSZXNwb25zZShjYWNoZWRSZXNwb25zZSk7CkBAIC0yMzQsMTYgKzE5Myw4IEBAIENGQ2Fj
aGVkVVJMUmVzcG9uc2VSZWYgU3luY2hyb25vdXNSZXNvdXIKICAgICAgICAgaWYgKHZhcnlWYWx1
ZSkKICAgICAgICAgICAgIHJldHVybiAwOwogICAgIH0KLSNlbmRpZiAvLyBQTEFURk9STShXSU4p
Ci0KLSNpZiBQTEFURk9STShXSU4pCiAgICAgaWYgKG1faGFuZGxlLT5jbGllbnQoKSAmJiAhbV9o
YW5kbGUtPmNsaWVudCgpLT5zaG91bGRDYWNoZVJlc3BvbnNlKG1faGFuZGxlLCBjYWNoZWRSZXNw
b25zZSkpCiAgICAgICAgIHJldHVybiAwOwotI2Vsc2UKLSAgICBDRkNhY2hlZFVSTFJlc3BvbnNl
UmVmIG5ld1Jlc3BvbnNlID0gbV9oYW5kbGUtPmNsaWVudCgpLT53aWxsQ2FjaGVSZXNwb25zZSht
X2hhbmRsZSwgY2FjaGVkUmVzcG9uc2UpOwotICAgIGlmIChuZXdSZXNwb25zZSAhPSBjYWNoZWRS
ZXNwb25zZSkKLSAgICAgICAgcmV0dXJuIG5ld1Jlc3BvbnNlOwotI2VuZGlmCiAKICAgICBDRlJl
dGFpbihjYWNoZWRSZXNwb25zZSk7CiAgICAgcmV0dXJuIGNhY2hlZFJlc3BvbnNlOwpAQCAtMjgw
LDE0ICsyMzEsNyBAQCBCb29sZWFuIFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvCiAK
ICAgICBMT0coTmV0d29yaywgIkNGTmV0IC0gU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJM
Q29ubmVjdGlvbkRlbGVnYXRlOjpjYW5SZXNwb25kVG9Qcm90ZWN0aW9uU3BhY2UoaGFuZGxlPSVw
ICglcykiLCBtX2hhbmRsZSwgbV9oYW5kbGUtPmZpcnN0UmVxdWVzdCgpLnVybCgpLnN0cmluZygp
LnV0ZjgoKS5kYXRhKCkpOwogCi0jaWYgUExBVEZPUk0oSU9TKQotICAgIFByb3RlY3Rpb25TcGFj
ZSBjb3JlUHJvdGVjdGlvblNwYWNlID0gUHJvdGVjdGlvblNwYWNlKHByb3RlY3Rpb25TcGFjZSk7
Ci0gICAgaWYgKGNvcmVQcm90ZWN0aW9uU3BhY2UuYXV0aGVudGljYXRpb25TY2hlbWUoKSA9PSBQ
cm90ZWN0aW9uU3BhY2VBdXRoZW50aWNhdGlvblNjaGVtZVVua25vd24pCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICByZXR1cm4gbV9oYW5kbGUtPmNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90
ZWN0aW9uU3BhY2UoY29yZVByb3RlY3Rpb25TcGFjZSk7Ci0jZWxzZQogICAgIHJldHVybiBtX2hh
bmRsZS0+Y2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShjb3JlKHByb3RlY3Rp
b25TcGFjZSkpOwotI2VuZGlmCiB9CiAjZW5kaWYgLy8gVVNFKFBST1RFQ1RJT05fU1BBQ0VfQVVU
SF9DQUxMQkFDSykKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9T
eW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1N5bmNocm9ub3VzUmVz
b3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5oCShyZXZpc2lvbiAyMDcwMzUpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1N5bmNocm9ub3VzUmVzb3VyY2VI
YW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMywxMCAr
MjMsOSBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFN5bmNocm9ub3VzUmVzb3Vy
Y2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZV9oCi0jZGVmaW5lIFN5bmNocm9ub3VzUmVz
b3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZV9oCisjcHJhZ21hIG9uY2UKIAotI2lm
IFVTRShDRk5FVFdPUkspCisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKIAogI2luY2x1ZGUgIlJl
c291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuaCIKIApAQCAtNjcsNiArNjYsNCBA
QCBwcml2YXRlOgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlLgogCi0jZW5kaWYgLy8gVVNFKENG
TkVUV09SSykKLQotI2VuZGlmIC8vIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdh
dGVfaAorI2VuZGlmIC8vIFVTRShDRlVSTENPTk5FQ1RJT04pCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL0NyZWRlbnRpYWxDb2NvYS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvQ3JlZGVudGlhbENvY29hLmgJ
KHJldmlzaW9uIDIwNzAzNSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29j
b2EvQ3JlZGVudGlhbENvY29hLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDE3ICsyMywxMiBAQAog
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgQ3JlZGVu
dGlhbENvY29hX2gKLSNkZWZpbmUgQ3JlZGVudGlhbENvY29hX2gKKyNwcmFnbWEgb25jZQogCiAj
aW5jbHVkZSAiQ3JlZGVudGlhbEJhc2UuaCIKICNpbmNsdWRlIDxTZWN1cml0eS9TZWNCYXNlLmg+
CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogCi0jaWYgVVNFKENGTkVUV09SSykKLSNpbmNs
dWRlICJDRk5ldHdvcmtTUEkuaCIKLSNlbmRpZgotCiBPQkpDX0NMQVNTIE5TVVJMQ3JlZGVudGlh
bDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTIsMTggKzQ3LDEyIEBAIHB1YmxpYzoKIAog
ICAgIENyZWRlbnRpYWwoY29uc3QgQ3JlZGVudGlhbCYsIENyZWRlbnRpYWxQZXJzaXN0ZW5jZSk7
CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotICAgIGV4cGxpY2l0IENyZWRlbnRpYWwoQ0ZVUkxDcmVk
ZW50aWFsUmVmKTsKLSNlbmRpZgogICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IENyZWRlbnRp
YWwoTlNVUkxDcmVkZW50aWFsICopOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc0VtcHR5
KCkgY29uc3Q7CiAKICAgICBib29sIGVuY29kaW5nUmVxdWlyZXNQbGF0Zm9ybURhdGEoKSBjb25z
dCB7IHJldHVybiBtX25zQ3JlZGVudGlhbCAmJiBlbmNvZGluZ1JlcXVpcmVzUGxhdGZvcm1EYXRh
KG1fbnNDcmVkZW50aWFsLmdldCgpKTsgfQogCi0jaWYgVVNFKENGTkVUV09SSykKLSAgICBDRlVS
TENyZWRlbnRpYWxSZWYgY2ZDcmVkZW50aWFsKCkgY29uc3Q7Ci0jZW5kaWYKICAgICBXRUJDT1JF
X0VYUE9SVCBOU1VSTENyZWRlbnRpYWwgKm5zQ3JlZGVudGlhbCgpIGNvbnN0OwogCiAgICAgc3Rh
dGljIGJvb2wgcGxhdGZvcm1Db21wYXJlKGNvbnN0IENyZWRlbnRpYWwmLCBjb25zdCBDcmVkZW50
aWFsJik7CkBAIC03NSw1ICs2NCwzIEBAIHByaXZhdGU6CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCi0KLSNlbmRpZiAvLyBDcmVkZW50aWFsQ29jb2FfaApJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9DcmVkZW50aWFsQ29jb2EubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9DcmVkZW50aWFsQ29jb2Eu
bW0JKHJldmlzaW9uIDIwNzAzNSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y29jb2EvQ3JlZGVudGlhbENvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxMyArMjYsNiBA
QAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJDcmVkZW50aWFsQ29jb2EuaCIKIAotI2lm
IFVTRShDRk5FVFdPUkspCi1AaW50ZXJmYWNlIE5TVVJMQ3JlZGVudGlhbCAoV2ViRGV0YWlscykK
LS0gKGlkKV9pbml0V2l0aENGVVJMQ3JlZGVudGlhbDooQ0ZVUkxDcmVkZW50aWFsUmVmKWNyZWRl
bnRpYWw7Ci0tIChDRlVSTENyZWRlbnRpYWxSZWYpIF9DRlVSTENyZWRlbnRpYWw7Ci1AZW5kCi0j
ZW5kaWYKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgTlNVUkxDcmVkZW50aWFsUGVy
c2lzdGVuY2UgdG9OU1VSTENyZWRlbnRpYWxQZXJzaXN0ZW5jZShDcmVkZW50aWFsUGVyc2lzdGVu
Y2UgcGVyc2lzdGVuY2UpCkBAIC04NCwyNiArNzcsMTIgQEAgQ3JlZGVudGlhbDo6Q3JlZGVudGlh
bChjb25zdCBDcmVkZW50aWFsJgogICAgIH0KIH0KIAotI2lmIFVTRShDRk5FVFdPUkspCi1DcmVk
ZW50aWFsOjpDcmVkZW50aWFsKENGVVJMQ3JlZGVudGlhbFJlZiBjcmVkZW50aWFsKQotICAgIDog
Q3JlZGVudGlhbChhZG9wdE5TKFtbTlNVUkxDcmVkZW50aWFsIGFsbG9jXSBfaW5pdFdpdGhDRlVS
TENyZWRlbnRpYWw6Y3JlZGVudGlhbF0pLmdldCgpKQotewotfQotI2VuZGlmCi0KIENyZWRlbnRp
YWw6OkNyZWRlbnRpYWwoTlNVUkxDcmVkZW50aWFsICpjcmVkZW50aWFsKQogICAgIDogQ3JlZGVu
dGlhbEJhc2UoY3JlZGVudGlhbC51c2VyLCBjcmVkZW50aWFsLnBhc3N3b3JkLCB0b0NyZWRlbnRp
YWxQZXJzaXN0ZW5jZShjcmVkZW50aWFsLnBlcnNpc3RlbmNlKSkKICAgICAsIG1fbnNDcmVkZW50
aWFsKGNyZWRlbnRpYWwpCiB7CiB9CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotQ0ZVUkxDcmVkZW50
aWFsUmVmIENyZWRlbnRpYWw6OmNmQ3JlZGVudGlhbCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFtu
c0NyZWRlbnRpYWwoKSBfQ0ZVUkxDcmVkZW50aWFsXTsKLX0KLSNlbmRpZgotCiBOU1VSTENyZWRl
bnRpYWwgKkNyZWRlbnRpYWw6Om5zQ3JlZGVudGlhbCgpIGNvbnN0CiB7CiAgICAgaWYgKG1fbnND
cmVkZW50aWFsKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9Q
cm90ZWN0aW9uU3BhY2VDb2NvYS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY29jb2EvUHJvdGVjdGlvblNwYWNlQ29jb2EuaAkocmV2aXNpb24gMjA3MDM1
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9Qcm90ZWN0aW9uU3Bh
Y2VDb2NvYS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMywxNiArMjMsMTEgQEAKICAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFByb3RlY3Rpb25TcGFjZUNv
Y29hX2gKLSNkZWZpbmUgUHJvdGVjdGlvblNwYWNlQ29jb2FfaAorI3ByYWdtYSBvbmNlCiAKICNp
bmNsdWRlICJQcm90ZWN0aW9uU3BhY2VCYXNlLmgiCiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5o
PgogCi0jaWYgVVNFKENGTkVUV09SSykKLXR5cGVkZWYgc3RydWN0IF9DRlVSTFByb3RlY3Rpb25T
cGFjZSogQ0ZVUkxQcm90ZWN0aW9uU3BhY2VSZWY7Ci0jZW5kaWYKLQogT0JKQ19DTEFTUyBOU1VS
TFByb3RlY3Rpb25TcGFjZTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDcsOSArNDIsNiBA
QCBwdWJsaWM6CiAKICAgICBQcm90ZWN0aW9uU3BhY2UoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFs
dWVUeXBlIGRlbGV0ZWRWYWx1ZSkgOiBQcm90ZWN0aW9uU3BhY2VCYXNlKGRlbGV0ZWRWYWx1ZSkg
eyB9CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotICAgIGV4cGxpY2l0IFByb3RlY3Rpb25TcGFjZShD
RlVSTFByb3RlY3Rpb25TcGFjZVJlZik7Ci0jZW5kaWYKICAgICBXRUJDT1JFX0VYUE9SVCBleHBs
aWNpdCBQcm90ZWN0aW9uU3BhY2UoTlNVUkxQcm90ZWN0aW9uU3BhY2UgKik7CiAKICAgICBzdGF0
aWMgYm9vbCBwbGF0Zm9ybUNvbXBhcmUoY29uc3QgUHJvdGVjdGlvblNwYWNlJiBhLCBjb25zdCBQ
cm90ZWN0aW9uU3BhY2UmIGIpOwpAQCAtNTgsOSArNTAsNiBAQCBwdWJsaWM6CiAKICAgICBXRUJD
T1JFX0VYUE9SVCBib29sIHJlY2VpdmVzQ3JlZGVudGlhbFNlY3VyZWx5KCkgY29uc3Q7CiAKLSNp
ZiBVU0UoQ0ZORVRXT1JLKQotICAgIENGVVJMUHJvdGVjdGlvblNwYWNlUmVmIGNmU3BhY2UoKSBj
b25zdDsKLSNlbmRpZgogICAgIFdFQkNPUkVfRVhQT1JUIE5TVVJMUHJvdGVjdGlvblNwYWNlICpu
c1NwYWNlKCkgY29uc3Q7CiAKIHByaXZhdGU6CkBAIC03MCw1ICs1OSwzIEBAIHByaXZhdGU6CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBQcm90ZWN0aW9uU3BhY2VD
b2NvYV9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Byb3Rl
Y3Rpb25TcGFjZUNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY29jb2EvUHJvdGVjdGlvblNwYWNlQ29jb2EubW0JKHJldmlzaW9uIDIwNzAzNSkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUHJvdGVjdGlvblNwYWNl
Q29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDIyICsyNiw5IEBACiAjaW1wb3J0ICJjb25m
aWcuaCIKICNpbXBvcnQgIlByb3RlY3Rpb25TcGFjZUNvY29hLmgiCiAKLSNpZiBVU0UoQ0ZORVRX
T1JLKQotQGludGVyZmFjZSBOU1VSTFByb3RlY3Rpb25TcGFjZSAoV2ViRGV0YWlscykKLS0gKENG
VVJMUHJvdGVjdGlvblNwYWNlUmVmKSBfQ0ZVUkxQcm90ZWN0aW9uU3BhY2U7Ci0tIChpZClfaW5p
dFdpdGhDRlVSTFByb3RlY3Rpb25TcGFjZTooQ0ZVUkxQcm90ZWN0aW9uU3BhY2VSZWYpY2ZQcm90
U3BhY2U7Ci1AZW5kCi0jZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0jaWYgVVNFKENG
TkVUV09SSykKLVByb3RlY3Rpb25TcGFjZTo6UHJvdGVjdGlvblNwYWNlKENGVVJMUHJvdGVjdGlv
blNwYWNlUmVmIHNwYWNlKQotICAgIDogUHJvdGVjdGlvblNwYWNlKGFkb3B0TlMoW1tOU1VSTFBy
b3RlY3Rpb25TcGFjZSBhbGxvY10gX2luaXRXaXRoQ0ZVUkxQcm90ZWN0aW9uU3BhY2U6c3BhY2Vd
KS5nZXQoKSkKLXsKLX0KLSNlbmRpZgotCiBzdGF0aWMgUHJvdGVjdGlvblNwYWNlU2VydmVyVHlw
ZSB0eXBlKE5TVVJMUHJvdGVjdGlvblNwYWNlICpzcGFjZSkKIHsKICAgICBpZiAoW3NwYWNlIGlz
UHJveHldKSB7CkBAIC0xMDUsMTMgKzkyLDYgQEAgUHJvdGVjdGlvblNwYWNlOjpQcm90ZWN0aW9u
U3BhY2UoTlNVUkxQcgogICAgIG1fbnNTcGFjZSA9IHNwYWNlOwogfQogCi0jaWYgVVNFKENGTkVU
V09SSykKLUNGVVJMUHJvdGVjdGlvblNwYWNlUmVmIFByb3RlY3Rpb25TcGFjZTo6Y2ZTcGFjZSgp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIFtuc1NwYWNlKCkgX0NGVVJMUHJvdGVjdGlvblNwYWNlXTsK
LX0KLSNlbmRpZgotCiBOU1VSTFByb3RlY3Rpb25TcGFjZSAqUHJvdGVjdGlvblNwYWNlOjpuc1Nw
YWNlKCkgY29uc3QKIHsKICAgICBpZiAobV9uc1NwYWNlKQpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVxdWVz
dENvY29hLm1tCShyZXZpc2lvbiAyMDcwMzUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NvY29hL1Jlc291cmNlUmVxdWVzdENvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC01
MywxNSArNTMsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBOU1VSTFJlcXVlc3QgKlJlc291cmNl
UmVxdWVzdDo6bnNVUkxSZXF1ZXN0KEhUVFBCb2R5VXBkYXRlUG9saWN5IGJvZHlQb2xpY3kpIGNv
bnN0CiB7CiAgICAgdXBkYXRlUGxhdGZvcm1SZXF1ZXN0KGJvZHlQb2xpY3kpOwotI2lmIFVTRShD
Rk5FVFdPUkspCi0gICAgaWYgKCFtX25zUmVxdWVzdCkKLSAgICAgICAgY29uc3RfY2FzdDxSZXNv
dXJjZVJlcXVlc3QqPih0aGlzKS0+dXBkYXRlTlNVUkxSZXF1ZXN0KCk7Ci0jZW5kaWYKICAgICBy
ZXR1cm4gW1ttX25zUmVxdWVzdC5nZXQoKSByZXRhaW5dIGF1dG9yZWxlYXNlXTsKIH0KIAotI2lm
ICFVU0UoQ0ZORVRXT1JLKQotCiBDRlVSTFJlcXVlc3RSZWYgUmVzb3VyY2VSZXF1ZXN0OjpjZlVS
TFJlcXVlc3QoSFRUUEJvZHlVcGRhdGVQb2xpY3kgYm9keVBvbGljeSkgY29uc3QKIHsKICAgICBy
ZXR1cm4gW25zVVJMUmVxdWVzdChib2R5UG9saWN5KSBfQ0ZVUkxSZXF1ZXN0XTsKQEAgLTIxNCw4
ICsyMDgsNiBAQCB2b2lkIFJlc291cmNlUmVxdWVzdDo6c2V0U3RvcmFnZVNlc3Npb24oCiAgICAg
bV9uc1JlcXVlc3QgPSBhZG9wdE5TKHdrQ29weVJlcXVlc3RXaXRoU3RvcmFnZVNlc3Npb24oc3Rv
cmFnZVNlc3Npb24sIG1fbnNSZXF1ZXN0LmdldCgpKSk7CiB9CiAKLSNlbmRpZiAvLyBVU0UoQ0ZO
RVRXT1JLKQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBQTEFURk9STShD
T0NPQSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3Vy
Y2VSZXNwb25zZUNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXNwb25zZUNvY29hLm1tCShyZXZpc2lvbiAyMDcwMzUp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVzcG9u
c2VDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtNzUsMTMgKzc1LDggQEAgdm9pZCBSZXNvdXJj
ZVJlc3BvbnNlOjpkaXNhYmxlTGF6eUluaXRpYQogCiBDZXJ0aWZpY2F0ZUluZm8gUmVzb3VyY2VS
ZXNwb25zZTo6cGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm8oKSBjb25zdAogewotI2lmIFVTRShDRk5F
VFdPUkspCi0gICAgQVNTRVJUKG1fY2ZSZXNwb25zZSk7Ci0gICAgQ0ZVUkxSZXNwb25zZVJlZiBj
ZlJlc3BvbnNlID0gbV9jZlJlc3BvbnNlLmdldCgpOwotI2Vsc2UKICAgICBBU1NFUlQobV9uc1Jl
c3BvbnNlKTsKICAgICBDRlVSTFJlc3BvbnNlUmVmIGNmUmVzcG9uc2UgPSBbbV9uc1Jlc3BvbnNl
IF9DRlVSTFJlc3BvbnNlXTsKLSNlbmRpZgogCiAgICAgaWYgKCFjZlJlc3BvbnNlKQogICAgICAg
ICByZXR1cm4geyB9OwpAQCAtMTE0LDM1ICsxMDksNiBAQCBDZXJ0aWZpY2F0ZUluZm8gUmVzb3Vy
Y2VSZXNwb25zZTo6cGxhdGZvCiAjZW5kaWYKIH0KIAotI2lmIFVTRShDRk5FVFdPUkspCi0KLU5T
VVJMUmVzcG9uc2UgKlJlc291cmNlUmVzcG9uc2U6Om5zVVJMUmVzcG9uc2UoKSBjb25zdAotewot
ICAgIGlmICghbV9uc1Jlc3BvbnNlICYmICFtX2NmUmVzcG9uc2UgJiYgIW1faXNOdWxsKSB7Ci0g
ICAgICAgIGluaXROU1VSTFJlc3BvbnNlKCk7Ci0gICAgICAgIG1fY2ZSZXNwb25zZSA9IFttX25z
UmVzcG9uc2UuZ2V0KCkgX0NGVVJMUmVzcG9uc2VdOwotICAgICAgICByZXR1cm4gbV9uc1Jlc3Bv
bnNlLmdldCgpOwotICAgIH0KLQotICAgIGlmICghbV9jZlJlc3BvbnNlKQotICAgICAgICByZXR1
cm4gbmlsOwotCi0gICAgaWYgKCFtX25zUmVzcG9uc2UpCi0gICAgICAgIG1fbnNSZXNwb25zZSA9
IFtOU1VSTFJlc3BvbnNlIF9yZXNwb25zZVdpdGhDRlVSTFJlc3BvbnNlOm1fY2ZSZXNwb25zZS5n
ZXQoKV07Ci0KLSAgICByZXR1cm4gbV9uc1Jlc3BvbnNlLmdldCgpOwotfQotCi1SZXNvdXJjZVJl
c3BvbnNlOjpSZXNvdXJjZVJlc3BvbnNlKE5TVVJMUmVzcG9uc2UqIG5zUmVzcG9uc2UpCi0gICAg
OiBtX2luaXRMZXZlbChVbmluaXRpYWxpemVkKQotICAgICwgbV9jZlJlc3BvbnNlKFtuc1Jlc3Bv
bnNlIF9DRlVSTFJlc3BvbnNlXSkKLSAgICAsIG1fbnNSZXNwb25zZShuc1Jlc3BvbnNlKQotewot
ICAgIG1faXNOdWxsID0gIW5zUmVzcG9uc2U7Ci19Ci0KLSNlbHNlCi0KIHN0YXRpYyBOU1N0cmlu
ZyogY29uc3QgY29tbW9uSGVhZGVyRmllbGRzW10gPSB7CiAgICAgQCJBZ2UiLCBAIkNhY2hlLUNv
bnRyb2wiLCBAIkNvbnRlbnQtVHlwZSIsIEAiRGF0ZSIsIEAiRXRhZyIsIEAiRXhwaXJlcyIsIEAi
TGFzdC1Nb2RpZmllZCIsIEAiUHJhZ21hIgogfTsKQEAgLTI0Miw4ICsyMDgsNiBAQCBib29sIFJl
c291cmNlUmVzcG9uc2U6OnBsYXRmb3JtQ29tcGFyZShjCiAgICAgcmV0dXJuIGEubnNVUkxSZXNw
b25zZSgpID09IGIubnNVUkxSZXNwb25zZSgpOwogfQogCi0jZW5kaWYgLy8gVVNFKENGTkVUV09S
SykKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gUExBVEZPUk0oQ09DT0Ep
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9RdWlja0xvb2suaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9RdWlja0xv
b2suaAkocmV2aXNpb24gMjA3MDM1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9pb3MvUXVpY2tMb29rLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDEwICszMyw2IEBACiAjaW1w
b3J0IDxvYmpjL29iamMtcnVudGltZS5oPgogI2ltcG9ydCA8d3RmL1JlZlB0ci5oPgogCi0jaWYg
VVNFKENGTkVUV09SSykKLSNpbmNsdWRlICJDRk5ldHdvcmtTUEkuaCIKLSNlbmRpZgotCiBPQkpD
X0NMQVNTIE5TRGF0YTsKIE9CSkNfQ0xBU1MgTlNEaWN0aW9uYXJ5OwogT0JKQ19DTEFTUyBOU0Zp
bGVIYW5kbGU7CkBAIC04MSw5ICs3Nyw2IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgYm9vbCBzaG91bGRDcmVhdGVGb3JNSU1FVHlwZShjb25zdCBTdHJpbmcmKTsKIAogICAg
IHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UXVpY2tMb29rSGFuZGxlPiBjcmVhdGUoUmVzb3VyY2VI
YW5kbGUqLCBOU1VSTENvbm5lY3Rpb24gKiwgTlNVUkxSZXNwb25zZSAqLCBpZCBkZWxlZ2F0ZSk7
Ci0jaWYgVVNFKENGTkVUV09SSykKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFF1aWNrTG9v
a0hhbmRsZT4gY3JlYXRlKFJlc291cmNlSGFuZGxlKiwgU3luY2hyb25vdXNSZXNvdXJjZUhhbmRs
ZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlKiwgQ0ZVUkxSZXNwb25zZVJlZik7Ci0jZW5kaWYKICAg
ICAvLyBGSVhNRTogVXNlIG9mIFJlc291cmNlTG9hZGVyIGhlcmUgaXMgYSBwbGF0Zm9ybSB2aW9s
YXRpb24uCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxRdWlja0xv
b2tIYW5kbGU+IGNyZWF0ZShSZXNvdXJjZUxvYWRlciYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
KTsKIApAQCAtOTUsOSArODgsNiBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBk
aWRGYWlsKCk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBOU1VSTFJlc3BvbnNlICpuc1Jlc3BvbnNl
KCk7Ci0jaWYgVVNFKENGTkVUV09SSykKLSAgICBDRlVSTFJlc3BvbnNlUmVmIGNmUmVzcG9uc2Uo
KTsKLSNlbmRpZgogCiAgICAgdm9pZCBzZXRDbGllbnQoUGFzc1JlZlB0cjxRdWlja0xvb2tIYW5k
bGVDbGllbnQ+IGNsaWVudCkgeyBtX2NsaWVudCA9IGNsaWVudDsgfQogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9RdWlja0xvb2subW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUXVpY2tMb29rLm1tCShyZXZpc2lv
biAyMDcwMzUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9RdWlja0xv
b2subW0JKHdvcmtpbmcgY29weSkKQEAgLTE4NSw4MSArMTg1LDYgQEAgY29uc3QgY2hhciogV2Vi
Q29yZTo6UUxQcmV2aWV3UHJvdG9jb2woKQogICAgIHJldHVybiBwcmV2aWV3UHJvdG9jb2wuZ2V0
KCkuZGF0YSgpOwogfQogCi0jaWYgVVNFKENGTkVUV09SSykKLS8vIFRoZSB3YXkgUXVpY2tMb29r
IHdvcmtzIGlzIHdlIHBhc3MgaXQgYW4gTlNVUkxDb25uZWN0aW9uRGVsZWdhdGUgY2FsbGJhY2sg
b2JqZWN0IGF0IGNyZWF0aW9uCi0vLyB0aW1lLiBUaGVuIHdlIHBhc3MgaXQgYWxsIHRoZSBkYXRh
IGFzIHdlIHJlY2VpdmUgaXQuIE9uY2Ugd2UndmUgZG93bmxvYWRlZCB0aGUgZnVsbCBVUkwsCi0v
LyBRdWlja0xvb2sgdHVybnMgYXJvdW5kIGFuZCBzZW5kIHVzLCB0aHJvdWdoIHRoaXMgZGVsZWdh
dGUsIHRoZSBIVE1MIHZlcnNpb24gb2YgdGhlIGZpbGUgd2hpY2ggd2UKLS8vIHBhc3Mgb24gdG8g
V2ViQ29yZS4gVGhlIGZsYWcgbV9maW5pc2hlZExvYWRpbmdEYXRhSW50b0NvbnZlcnRlciBpbiBR
dWlja0xvb2tIYW5kbGUgZGVjaWRlcwotLy8gd2hldGhlciB0byBwYXNzIHRoZSBkYXRhIHRvIFF1
aWNrTG9vayBvciBXZWJDb3JlLgotLy8KLS8vIFRoaXMgd29ya3MgZmluZSB3aGVuIHVzaW5nIE5T
IEFQSXMsIGJ1dCB3aGVuIHVzaW5nIENGTmV0d29yaywgd2UgZG9uJ3QgaGF2ZSBhIE5TVVJMQ29u
bmVjdGlvbkRlbGVnYXRlLgotLy8gU28gd2UgY3JlYXRlIFdlYlF1aWNrTG9va0hhbmRsZUFzRGVs
ZWdhdGUgYXMgYW4gaW50ZXJtZWRpYXRlIGRlbGVnYXRlIG9iamVjdCBhbmQgcGFzcyBpdCB0bwot
Ly8gUUxQcmV2aWV3Q29udmVydGVyLiBUaGUgcHJveHkgZGVsZWdhdGUgdGhlbiBmb3J3YXJkcyB0
aGUgbWVzc2FnZXMgb24gdG8gdGhlIENGTmV0d29yayBjb2RlLgotQGludGVyZmFjZSBXZWJRdWlj
a0xvb2tIYW5kbGVBc0RlbGVnYXRlIDogTlNPYmplY3QgPE5TVVJMQ29ubmVjdGlvbkRlbGVnYXRl
LCBXZWJDb3JlUmVzb3VyY2VMb2FkZXJEZWxlZ2F0ZT4gewotICAgIFJlZlB0cjxTeW5jaHJvbm91
c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU+IG1fY29ubmVjdGlvbkRlbGVn
YXRlOwotfQotCi0tIChpZClpbml0V2l0aENvbm5lY3Rpb25EZWxlZ2F0ZTooU3luY2hyb25vdXNS
ZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlKiljb25uZWN0aW9uRGVsZWdhdGU7
Ci1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBXZWJRdWlja0xvb2tIYW5kbGVBc0RlbGVnYXRlCi0t
IChpZClpbml0V2l0aENvbm5lY3Rpb25EZWxlZ2F0ZTooU3luY2hyb25vdXNSZXNvdXJjZUhhbmRs
ZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlKiljb25uZWN0aW9uRGVsZWdhdGUKLXsKLSAgICBzZWxm
ID0gW3N1cGVyIGluaXRdOwotICAgIGlmICghc2VsZikKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAg
ICBtX2Nvbm5lY3Rpb25EZWxlZ2F0ZSA9IGNvbm5lY3Rpb25EZWxlZ2F0ZTsKLSAgICByZXR1cm4g
c2VsZjsKLX0KLQotLSAodm9pZCljb25uZWN0aW9uOihOU1VSTENvbm5lY3Rpb24gKiljb25uZWN0
aW9uIGRpZFJlY2VpdmVEYXRhQXJyYXk6KE5TQXJyYXkgKilkYXRhQXJyYXkKLXsKLSAgICBVTlVT
RURfUEFSQU0oY29ubmVjdGlvbik7Ci0gICAgaWYgKCFtX2Nvbm5lY3Rpb25EZWxlZ2F0ZSkKLSAg
ICAgICAgcmV0dXJuOwotICAgIExPRyhOZXR3b3JrLCAiV2ViUXVpY2tMb29rSGFuZGxlQXNEZWxl
Z2F0ZTo6ZGlkUmVjZWl2ZURhdGFBcnJheSgpIik7Ci0gICAgbV9jb25uZWN0aW9uRGVsZWdhdGUt
PmRpZFJlY2VpdmVEYXRhQXJyYXkocmVpbnRlcnByZXRfY2FzdDxDRkFycmF5UmVmPihkYXRhQXJy
YXkpKTsKLX0KLQotLSAodm9pZCljb25uZWN0aW9uOihOU1VSTENvbm5lY3Rpb24gKiljb25uZWN0
aW9uIGRpZFJlY2VpdmVEYXRhOihOU0RhdGEgKilkYXRhIGxlbmd0aFJlY2VpdmVkOihsb25nIGxv
bmcpbGVuZ3RoUmVjZWl2ZWQKLXsKLSAgICBVTlVTRURfUEFSQU0oY29ubmVjdGlvbik7Ci0gICAg
aWYgKCFtX2Nvbm5lY3Rpb25EZWxlZ2F0ZSkKLSAgICAgICAgcmV0dXJuOwotICAgIExPRyhOZXR3
b3JrLCAiV2ViUXVpY2tMb29rSGFuZGxlQXNEZWxlZ2F0ZTo6ZGlkUmVjZWl2ZURhdGEoKSAtIGRh
dGEgbGVuZ3RoID0gJWxkIiwgKGxvbmcpW2RhdGEgbGVuZ3RoXSk7Ci0KLSAgICAvLyBRdWlja0xv
b2sgY29kZSBzZW5kcyB1cyBhIG5pbCBkYXRhIGF0IHRpbWVzLiBUaGUgY2hlY2sgYmVsb3cgaXMg
dGhlIHNhbWUgYXMgdGhlIG9uZSBpbgotICAgIC8vIFJlc291cmNlSGFuZGxlTWFjLmNwcCBhZGRl
ZCBmb3IgYSBkaWZmZXJlbnQgYnVnLgotICAgIGlmICghW2RhdGEgbGVuZ3RoXSkKLSAgICAgICAg
cmV0dXJuOwotICAgIG1fY29ubmVjdGlvbkRlbGVnYXRlLT5kaWRSZWNlaXZlRGF0YShyZWludGVy
cHJldF9jYXN0PENGRGF0YVJlZj4oZGF0YSksIHN0YXRpY19jYXN0PGludD4obGVuZ3RoUmVjZWl2
ZWQpKTsKLX0KLQotLSAodm9pZCljb25uZWN0aW9uRGlkRmluaXNoTG9hZGluZzooTlNVUkxDb25u
ZWN0aW9uICopY29ubmVjdGlvbgotewotICAgIFVOVVNFRF9QQVJBTShjb25uZWN0aW9uKTsKLSAg
ICBpZiAoIW1fY29ubmVjdGlvbkRlbGVnYXRlKQotICAgICAgICByZXR1cm47Ci0gICAgTE9HKE5l
dHdvcmssICJXZWJRdWlja0xvb2tIYW5kbGVBc0RlbGVnYXRlOjpkaWRGaW5pc2hMb2FkaW5nKCki
KTsKLSAgICBtX2Nvbm5lY3Rpb25EZWxlZ2F0ZS0+ZGlkRmluaXNoTG9hZGluZygpOwotfQotCi0t
ICh2b2lkKWNvbm5lY3Rpb246KE5TVVJMQ29ubmVjdGlvbiAqKWNvbm5lY3Rpb24gZGlkRmFpbFdp
dGhFcnJvcjooTlNFcnJvciAqKWVycm9yCi17Ci0gICAgVU5VU0VEX1BBUkFNKGNvbm5lY3Rpb24p
OwotICAgIGlmICghbV9jb25uZWN0aW9uRGVsZWdhdGUpCi0gICAgICAgIHJldHVybjsKLSAgICBM
T0coTmV0d29yaywgIldlYlF1aWNrTG9va0hhbmRsZUFzRGVsZWdhdGU6OmRpZEZhaWwoKSIpOwot
ICAgIG1fY29ubmVjdGlvbkRlbGVnYXRlLT5kaWRGYWlsKHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZFcnJv
clJlZj4oZXJyb3IpKTsKLX0KLQotLSAodm9pZClkZXRhY2hIYW5kbGUKLXsKLSAgICBtX2Nvbm5l
Y3Rpb25EZWxlZ2F0ZSA9IG51bGxwdHI7Ci19Ci1AZW5kCi0jZW5kaWYKLQogQGludGVyZmFjZSBX
ZWJSZXNvdXJjZUxvYWRlclF1aWNrTG9va0RlbGVnYXRlIDogTlNPYmplY3QgPE5TVVJMQ29ubmVj
dGlvbkRlbGVnYXRlLCBXZWJDb3JlUmVzb3VyY2VMb2FkZXJEZWxlZ2F0ZT4gewogICAgIFJlZlB0
cjxSZXNvdXJjZUxvYWRlcj4gX3Jlc291cmNlTG9hZGVyOwogICAgIEJPT0wgX2hhc1NlbnREaWRS
ZWNlaXZlUmVzcG9uc2U7CkBAIC00MTEsMjYgKzMzNiw2IEBAIHN0ZDo6dW5pcXVlX3B0cjxRdWlj
a0xvb2tIYW5kbGU+IFF1aWNrTG8KICAgICByZXR1cm4gcXVpY2tMb29rSGFuZGxlOwogfQogCi0j
aWYgVVNFKENGTkVUV09SSykKLXN0ZDo6dW5pcXVlX3B0cjxRdWlja0xvb2tIYW5kbGU+IFF1aWNr
TG9va0hhbmRsZTo6Y3JlYXRlKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIFN5bmNocm9ub3VzUmVz
b3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZSogY29ubmVjdGlvbkRlbGVnYXRlLCBD
RlVSTFJlc3BvbnNlUmVmIGNmUmVzcG9uc2UpCi17Ci0gICAgQVNTRVJUX0FSRyhoYW5kbGUsIGhh
bmRsZSk7Ci0gICAgaWYgKGhhbmRsZS0+Zmlyc3RSZXF1ZXN0KCkucmVxdWVzdGVyKCkgIT0gUmVz
b3VyY2VSZXF1ZXN0OjpSZXF1ZXN0ZXI6Ok1haW4gfHwgIVtRTFByZXZpZXdHZXRTdXBwb3J0ZWRN
SU1FVHlwZXNTZXQoKSBjb250YWluc09iamVjdDooTlNTdHJpbmcgKilDRlVSTFJlc3BvbnNlR2V0
TUlNRVR5cGUoY2ZSZXNwb25zZSldKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIE5T
VVJMUmVzcG9uc2UgKm5zUmVzcG9uc2UgPSBbTlNVUkxSZXNwb25zZSBfcmVzcG9uc2VXaXRoQ0ZV
UkxSZXNwb25zZTpjZlJlc3BvbnNlXTsKLSAgICBXZWJRdWlja0xvb2tIYW5kbGVBc0RlbGVnYXRl
ICpkZWxlZ2F0ZSA9IFtbW1dlYlF1aWNrTG9va0hhbmRsZUFzRGVsZWdhdGUgYWxsb2NdIGluaXRX
aXRoQ29ubmVjdGlvbkRlbGVnYXRlOmNvbm5lY3Rpb25EZWxlZ2F0ZV0gYXV0b3JlbGVhc2VdOwot
ICAgIHN0ZDo6dW5pcXVlX3B0cjxRdWlja0xvb2tIYW5kbGU+IHF1aWNrTG9va0hhbmRsZShuZXcg
UXVpY2tMb29rSGFuZGxlKFtoYW5kbGUtPmZpcnN0UmVxdWVzdCgpLm5zVVJMUmVxdWVzdChEb05v
dFVwZGF0ZUhUVFBCb2R5KSBVUkxdLCBuaWwsIG5zUmVzcG9uc2UsIGRlbGVnYXRlKSk7Ci0gICAg
aGFuZGxlLT5jbGllbnQoKS0+ZGlkQ3JlYXRlUXVpY2tMb29rSGFuZGxlKCpxdWlja0xvb2tIYW5k
bGUpOwotICAgIHJldHVybiBxdWlja0xvb2tIYW5kbGU7Ci19Ci0KLUNGVVJMUmVzcG9uc2VSZWYg
UXVpY2tMb29rSGFuZGxlOjpjZlJlc3BvbnNlKCkKLXsKLSAgICByZXR1cm4gW21fbnNSZXNwb25z
ZSBfQ0ZVUkxSZXNwb25zZV07Ci19Ci0jZW5kaWYKLQogYm9vbCBRdWlja0xvb2tIYW5kbGU6OnNo
b3VsZENyZWF0ZUZvck1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiB7CiAgICAgcmV0
dXJuIFtRTFByZXZpZXdHZXRTdXBwb3J0ZWRNSU1FVHlwZXNTZXQoKSBjb250YWluc09iamVjdDpt
aW1lVHlwZV07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9SZXNv
dXJjZUhhbmRsZUlPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2lvcy9SZXNvdXJjZUhhbmRsZUlPUy5tbQkocmV2aXNpb24gMjA3MDM1KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUmVzb3VyY2VIYW5kbGVJT1MubW0JKHdv
cmtpbmcgY29weSkKQEAgLTEsMzkgKzAsMCBAQAotLy8KLS8vICBSZXNvdXJjZUhhbmRsZUlQaG9u
ZS5tbQotLy8gIFdlYkNvcmUKLS8vCi0vLyAgQ29weXJpZ2h0IDIwMTEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotLy8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJSZXNv
dXJjZUhhbmRsZUludGVybmFsLmgiCi0KLSNpZiBVU0UoQ0ZORVRXT1JLKQotCi0jaW1wb3J0IDxD
Rk5ldHdvcmsvQ0ZTb2NrZXRTdHJlYW1Qcml2Lmg+Ci0jaW1wb3J0IDxGb3VuZGF0aW9uL05TVVJM
UmVxdWVzdFByaXZhdGUuaD4KLQotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotQ0ZNdXRhYmxlRGljdGlvbmFyeVJlZiBSZXNvdXJjZUhhbmRsZTo6Y3Jl
YXRlU1NMUHJvcGVydGllc0Zyb21OU1VSTFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0KQotewotICAgIE5TU3RyaW5nICpob3N0ID0gcmVxdWVzdC51cmwoKS5ob3N0KCk7Ci0g
ICAgTlNBcnJheSAqY2VydEFycmF5ID0gW05TVVJMUmVxdWVzdCBhbGxvd3NTcGVjaWZpY0hUVFBT
Q2VydGlmaWNhdGVGb3JIb3N0Omhvc3RdOwotICAgIEJPT0wgYWxsb3dzQW55Q2VydGlmaWNhdGUg
PSBbTlNVUkxSZXF1ZXN0IGFsbG93c0FueUhUVFBTQ2VydGlmaWNhdGVGb3JIb3N0Omhvc3RdOwot
ICAgIGlmICghY2VydEFycmF5ICYmICFhbGxvd3NBbnlDZXJ0aWZpY2F0ZSkKLSAgICAgICAgcmV0
dXJuIDA7Ci0KLSAgICBDRk11dGFibGVEaWN0aW9uYXJ5UmVmIHNzbFByb3BzID0gQ0ZEaWN0aW9u
YXJ5Q3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwLCAma0NGVHlwZURpY3Rpb25h
cnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKTsKLSAgICBp
ZiAoY2VydEFycmF5KQotICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShzc2xQcm9wcywgX2tD
RlN0cmVhbVNTTFRydXN0ZWRMZWFmQ2VydGlmaWNhdGVzLCAoQ0ZUeXBlUmVmKSBjZXJ0QXJyYXkp
OwotCi0gICAgaWYgKGFsbG93c0FueUNlcnRpZmljYXRlKQotICAgICAgICBDRkRpY3Rpb25hcnlT
ZXRWYWx1ZShzc2xQcm9wcywga0NGU3RyZWFtU1NMVmFsaWRhdGVzQ2VydGlmaWNhdGVDaGFpbiwg
a0NGQm9vbGVhbkZhbHNlKTsKLSAgICByZXR1cm4gc3NsUHJvcHM7Ci19Ci0KLX0KLQotI2VuZGlm
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9SZXNvdXJjZVJlcXVl
c3RJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9p
b3MvUmVzb3VyY2VSZXF1ZXN0SU9TLm1tCShyZXZpc2lvbiAyMDcwMzUpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9SZXNvdXJjZVJlcXVlc3RJT1MubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTEsNzcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSwg
SW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
Ci0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJSZXNvdXJjZVJlcXVl
c3QuaCIKLQotI2lmIFBMQVRGT1JNKElPUykKLQotQGludGVyZmFjZSBOU1VSTFJlcXVlc3QgKFdl
Yk5TVVJMUmVxdWVzdERldGFpbHMpCi0tIChDRlVSTFJlcXVlc3RSZWYpX0NGVVJMUmVxdWVzdDsK
LS0gKGlkKV9pbml0V2l0aENGVVJMUmVxdWVzdDooQ0ZVUkxSZXF1ZXN0UmVmKXJlcXVlc3Q7Ci1A
ZW5kCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotI2lmIFVTRShDRk5FVFdPUkspCi0KLVJlc291
cmNlUmVxdWVzdDo6UmVzb3VyY2VSZXF1ZXN0KE5TVVJMUmVxdWVzdCAqbnNSZXF1ZXN0KQotICAg
IDogUmVzb3VyY2VSZXF1ZXN0QmFzZSgpCi0gICAgLCBtX2NmUmVxdWVzdChbbnNSZXF1ZXN0IF9D
RlVSTFJlcXVlc3RdKQotICAgICwgbV9uc1JlcXVlc3QobnNSZXF1ZXN0KQotewotfQotCi12b2lk
IFJlc291cmNlUmVxdWVzdDo6dXBkYXRlTlNVUkxSZXF1ZXN0KCkKLXsKLSAgICBpZiAobV9jZlJl
cXVlc3QpCi0gICAgICAgIG1fbnNSZXF1ZXN0ID0gYWRvcHROUyhbW05TTXV0YWJsZVVSTFJlcXVl
c3QgYWxsb2NdIF9pbml0V2l0aENGVVJMUmVxdWVzdDptX2NmUmVxdWVzdC5nZXQoKV0pOwotfQot
Ci12b2lkIFJlc291cmNlUmVxdWVzdDo6Y2xlYXJPclVwZGF0ZU5TVVJMUmVxdWVzdCgpCi17Ci0g
ICAgLy8gVGhlcmUgaXMgY2xpZW50IGNvZGUgdGhhdCBleHRlbmRzIE5TVVJMUmVxdWVzdCBhbmQg
ZXhwZWN0cyB0byBnZXQgYmFjaywgaW4gdGhlIGRlbGVnYXRlCi0gICAgLy8gY2FsbGJhY2tzLCBh
biBvYmplY3Qgb2YgdGhlIHNhbWUgdHlwZSB0aGF0IHRoZXkgcGFzc2VkIGludG8gV2ViS2l0LiBU
byBrZWVwIHRoZW4gcnVubmluZywgd2UKLSAgICAvLyBjcmVhdGUgYW4gb2JqZWN0IG9mIHRoZSBz
YW1lIHR5cGUgYW5kIHJldHVybiB0aGF0LiBTZWUgPHJkYXI6Ly85ODQzNTgyPi4KLSAgICAvLyBB
bHNvLCBkZXZlbG9wZXJzIHJlYWxseSByZWFsbHkgd2FudCBhbiBOU011dGFibGVVUkxSZXF1ZXN0
IHNvIHRyeSB0byBjcmVhdGUgYW4KLSAgICAvLyBOU011dGFibGVVUkxSZXF1ZXN0IGluc3RlYWQg
b2YgTlNVUkxSZXF1ZXN0LgotICAgIHN0YXRpYyBDbGFzcyBuc1VSTFJlcXVlc3RDbGFzcyA9IFtO
U1VSTFJlcXVlc3QgY2xhc3NdOwotICAgIHN0YXRpYyBDbGFzcyBuc011dGFibGVVUkxSZXF1ZXN0
Q2xhc3MgPSBbTlNNdXRhYmxlVVJMUmVxdWVzdCBjbGFzc107Ci0gICAgQ2xhc3MgcmVxdWVzdENs
YXNzID0gW21fbnNSZXF1ZXN0LmdldCgpIGNsYXNzXTsKLQotICAgIGlmICghbV9jZlJlcXVlc3Qp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChyZXF1ZXN0Q2xhc3MgJiYgcmVxdWVzdENsYXNz
ICE9IG5zVVJMUmVxdWVzdENsYXNzICYmIHJlcXVlc3RDbGFzcyAhPSBuc011dGFibGVVUkxSZXF1
ZXN0Q2xhc3MpCi0gICAgICAgIG1fbnNSZXF1ZXN0ID0gYWRvcHROUyhbW3JlcXVlc3RDbGFzcyBh
bGxvY10gX2luaXRXaXRoQ0ZVUkxSZXF1ZXN0Om1fY2ZSZXF1ZXN0LmdldCgpXSk7Ci0gICAgZWxz
ZQotICAgICAgICBtX25zUmVxdWVzdCA9IG51bGxwdHI7Ci19Ci0KLSNlbmRpZiAvLyBVU0UoQ0ZO
RVRXT1JLKQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBQTEFURk9STShJ
T1MpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9BdXRoZW50aWNh
dGlvbk1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L21hYy9BdXRoZW50aWNhdGlvbk1hYy5tbQkocmV2aXNpb24gMjA3MDM1KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQXV0aGVudGljYXRpb25NYWMubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTMyLDE4ICszMiwxMSBAQAogI2ltcG9ydCA8Rm91bmRhdGlvbi9OU1VSTEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlLmg+CiAjaW1wb3J0IDxGb3VuZGF0aW9uL05TVVJMUHJvdGVjdGlv
blNwYWNlLmg+CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotI2ltcG9ydCAiQ0ZOU1VSTENvbm5lY3Rp
b25TUEkuaCIKLSNlbmRpZgotCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogQGludGVyZmFj
ZSBXZWJDb3JlQXV0aGVudGljYXRpb25DbGllbnRBc0NoYWxsZW5nZVNlbmRlciA6IE5TT2JqZWN0
IDxOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyPgogewogICAgIEF1dGhlbnRpY2F0
aW9uQ2xpZW50KiBtX2NsaWVudDsKLSNpZiBVU0UoQ0ZORVRXT1JLKQotICAgIENGVVJMQXV0aENo
YWxsZW5nZVJlZiBtX2NmQ2hhbGxlbmdlOwotI2VuZGlmCiB9CiAtIChpZClpbml0V2l0aEF1dGhl
bnRpY2F0aW9uQ2xpZW50OihBdXRoZW50aWNhdGlvbkNsaWVudCopY2xpZW50OwogLSAoQXV0aGVu
dGljYXRpb25DbGllbnQqKWNsaWVudDsKQEAgLTEwMSw0NyArOTQsMTAgQEAgLSAodm9pZCljYW5j
ZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTooTgogICAgICAgICBtX2NsaWVudC0+cmVjZWl2ZWRD
YW5jZWxsYXRpb24oY29yZShjaGFsbGVuZ2UpKTsKIH0KIAotI2lmIFVTRShDRk5FVFdPUkspCi0t
ICh2b2lkKXNldENGQ2hhbGxlbmdlOihDRlVSTEF1dGhDaGFsbGVuZ2VSZWYpY2hhbGxlbmdlCi17
Ci0gICAgbV9jZkNoYWxsZW5nZSA9IGNoYWxsZW5nZTsKLX0KLQotLSAoQ0ZVUkxBdXRoQ2hhbGxl
bmdlUmVmKWNmQ2hhbGxlbmdlCi17Ci0gICAgcmV0dXJuIG1fY2ZDaGFsbGVuZ2U7Ci19Ci0jZW5k
aWYKLQogQGVuZAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQot
Ci1BdXRoZW50aWNhdGlvbkNoYWxsZW5nZSBjb3JlKE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UgKm1hY0NoYWxsZW5nZSkKLXsKLSAgICBXZWJDb3JlQXV0aGVudGljYXRpb25DbGllbnRBc0No
YWxsZW5nZVNlbmRlciAqY2hhbGxlbmdlU2VuZGVyID0gKFdlYkNvcmVBdXRoZW50aWNhdGlvbkNs
aWVudEFzQ2hhbGxlbmdlU2VuZGVyKikgW21hY0NoYWxsZW5nZSBzZW5kZXJdOwotICAgIHJldHVy
biBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShbY2hhbGxlbmdlU2VuZGVyIGNmQ2hhbGxlbmdlXSwg
W2NoYWxsZW5nZVNlbmRlciBjbGllbnRdKTsKLX0KLQotTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSAqbWFjKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjb3JlQ2hhbGxlbmdlKQot
ewotICAgIEF1dGhlbnRpY2F0aW9uQ2xpZW50KiBhdXRoQ2xpZW50ID0gY29yZUNoYWxsZW5nZS5h
dXRoZW50aWNhdGlvbkNsaWVudCgpOwotICAgIFJldGFpblB0cjxXZWJDb3JlQXV0aGVudGljYXRp
b25DbGllbnRBc0NoYWxsZW5nZVNlbmRlcj4gY2hhbGxlbmdlU2VuZGVyID0gYWRvcHROUyhbW1dl
YkNvcmVBdXRoZW50aWNhdGlvbkNsaWVudEFzQ2hhbGxlbmdlU2VuZGVyIGFsbG9jXSBpbml0V2l0
aEF1dGhlbnRpY2F0aW9uQ2xpZW50OmF1dGhDbGllbnRdKTsKLSAgICBSZXRhaW5QdHI8Q0ZVUkxB
dXRoQ2hhbGxlbmdlUmVmPiBhdXRoQ2hhbGxlbmdlID0gY29yZUNoYWxsZW5nZS5jZlVSTEF1dGhD
aGFsbGVuZ2VSZWYoKTsKLSAgICBpZiAoIWF1dGhDaGFsbGVuZ2UpCi0gICAgICAgIGF1dGhDaGFs
bGVuZ2UgPSBhZG9wdENGKGNyZWF0ZUNGKGNvcmVDaGFsbGVuZ2UpKTsKLSAgICBbY2hhbGxlbmdl
U2VuZGVyLmdldCgpIHNldENGQ2hhbGxlbmdlOmF1dGhDaGFsbGVuZ2UuZ2V0KCldOwotI2lmIFBM
QVRGT1JNKElPUykKLSAgICByZXR1cm4gW1tOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIF9j
cmVhdGVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUZvckNGQXV0aENoYWxsZW5nZTphdXRoQ2hhbGxl
bmdlLmdldCgpIHNlbmRlcjpjaGFsbGVuZ2VTZW5kZXIuZ2V0KCldIGF1dG9yZWxlYXNlXTsKLSNl
bHNlCi0gICAgcmV0dXJuIFtbTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSBfYXV0aGVudGlj
YXRpb25DaGFsbGVuZ2VGb3JDRkF1dGhDaGFsbGVuZ2U6YXV0aENoYWxsZW5nZS5nZXQoKSBzZW5k
ZXI6Y2hhbGxlbmdlU2VuZGVyLmdldCgpXSBhdXRvcmVsZWFzZV07Ci0jZW5kaWYKLX0KLQotI2Vs
c2UKLQogQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNv
bnN0IFByb3RlY3Rpb25TcGFjZSYgcHJvdGVjdGlvblNwYWNlLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENyZWRlbnRpYWwmIHByb3Bvc2Vk
Q3JlZGVudGlhbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBwcmV2aW91c0ZhaWx1cmVDb3VudCwKQEAgLTIxNSw2ICsxNzEsNCBAQCBB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSBjb3JlKE5TVVJMQXV0aGVuCiAgICAgcmV0dXJuIEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlKG1hY0NoYWxsZW5nZSk7CiB9CiAKLSNlbmRpZiAvLyBVU0UoQ0ZO
RVRXT1JLKQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL21hYy9Db29raWVKYXJNYWMubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQ29va2llSmFyTWFjLm1tCShyZXZpc2lvbiAy
MDcwMzUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9Db29raWVKYXJN
YWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTI3LDE5ICsyNywxMiBAQAogI2ltcG9ydCAiUGxhdGZv
cm1Db29raWVKYXIuaCIKIAogI2ltcG9ydCAiQ0ZOZXR3b3JrU1BJLmgiCi0jaW1wb3J0ICJOZXR3
b3JrU3RvcmFnZVNlc3Npb24uaCIKLSNpbXBvcnQgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIK
LSNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLXN0YXRpYyBOU0hUVFBDb29raWVTdG9yYWdlICpjb29raWVTdG9yYWdlKGNvbnN0IE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiYpOwotfQotCi0jaWYgIVVTRShDRk5FVFdPUkspCi0KICNpbXBvcnQg
IkNvb2tpZS5oIgogI2ltcG9ydCAiQ29va2llU3RvcmFnZS5oIgorI2ltcG9ydCAiTmV0d29ya1N0
b3JhZ2VTZXNzaW9uLmgiCiAjaW1wb3J0ICJVUkwuaCIKKyNpbXBvcnQgIldlYkNvcmVTeXN0ZW1J
bnRlcmZhY2UuaCIKKyNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+CiAjaW1wb3J0
IDx3dGYvT3B0aW9uYWwuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIApA
QCAtMTkxLDYgKzE4NCw3IEBAIHZvaWQgc2V0Q29va2llc0Zyb21ET00oY29uc3QgTmV0d29ya1N0
b3IKICAgICBOU1VSTCAqY29va2llVVJMID0gdXJsOwogICAgIE5TRGljdGlvbmFyeSAqaGVhZGVy
RmllbGRzID0gW05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdDpjb29raWVTdHJpbmcg
Zm9yS2V5OkAiU2V0LUNvb2tpZSJdOwogCisgICAgLy8gRklYTUU6IElzIHRoaXMgbmVlZGVkIG9u
IGlPUywgdG9vPwogI2lmIFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9S
RVFVSVJFRCA+PSAxMDExMDAKICAgICBOU0FycmF5ICp1bmZpbHRlcmVkQ29va2llcyA9IFtOU0hU
VFBDb29raWUgX3BhcnNlZENvb2tpZXNXaXRoUmVzcG9uc2VIZWFkZXJGaWVsZHM6aGVhZGVyRmll
bGRzIGZvclVSTDpjb29raWVVUkxdOwogI2Vsc2UKQEAgLTI2MCw2ICsyNTQsMTUgQEAgdm9pZCBk
ZWxldGVDb29raWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZQogICAgIEVORF9CTE9DS19PQkpDX0VY
Q0VQVElPTlM7CiB9CiAKK3N0YXRpYyBOU0hUVFBDb29raWVTdG9yYWdlICpjb29raWVTdG9yYWdl
KGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbikKK3sKKyAgICBhdXRvIGNvb2tp
ZVN0b3JhZ2UgPSBzZXNzaW9uLmNvb2tpZVN0b3JhZ2UoKTsKKyAgICBpZiAoIWNvb2tpZVN0b3Jh
Z2UgfHwgW05TSFRUUENvb2tpZVN0b3JhZ2Ugc2hhcmVkSFRUUENvb2tpZVN0b3JhZ2VdLl9jb29r
aWVTdG9yYWdlID09IGNvb2tpZVN0b3JhZ2UpCisgICAgICAgIHJldHVybiBbTlNIVFRQQ29va2ll
U3RvcmFnZSBzaGFyZWRIVFRQQ29va2llU3RvcmFnZV07CisgICAgCisgICAgcmV0dXJuIFtbW05T
SFRUUENvb2tpZVN0b3JhZ2UgYWxsb2NdIF9pbml0V2l0aENGSFRUUENvb2tpZVN0b3JhZ2U6Y29v
a2llU3RvcmFnZS5nZXQoKV0gYXV0b3JlbGVhc2VdOworfQorCiB2b2lkIGFkZENvb2tpZShjb25z
dCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBD
b29raWUmIGNvb2tpZSkKIHsKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CkBAIC0y
ODAsMTIgKzI4MywxMCBAQCB2b2lkIGFkZENvb2tpZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Np
CiAgICAgICAgIE5TSFRUUENvb2tpZUV4cGlyZXM6IFtOU0RhdGUgZGF0ZVdpdGhUaW1lSW50ZXJ2
YWxTaW5jZTE5NzA6Y29va2llLmV4cGlyZXMgLyAxMDAwLjBdLAogICAgIH1dOwogCi0jaWYgIVVT
RShDRk5FVFdPUkspCiAgICAgaWYgKCFjb29raWVTdG9yYWdlKSB7CiAgICAgICAgIFtXZWJDb3Jl
Ojpjb29raWVTdG9yYWdlKHNlc3Npb24pIHNldENvb2tpZTpodHRwQ29va2llXTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KLSNlbmRpZiAvLyAhVVNFKENGTkVUV09SSykKIAogICAgIENGSFRUUENv
b2tpZVN0b3JhZ2VTZXRDb29raWUoY29va2llU3RvcmFnZS5nZXQoKSwgW2h0dHBDb29raWUgX0NG
SFRUUENvb2tpZV0pOwogCkBAIC0zMDksMjEgKzMxMCw2IEBAIHZvaWQgZGVsZXRlQWxsQ29va2ll
cyhjb25zdCBOZXR3b3JrU3RvcmEKICAgICB3a0RlbGV0ZUFsbEhUVFBDb29raWVzKHNlc3Npb24u
Y29va2llU3RvcmFnZSgpLmdldCgpKTsKIH0KIAotfQotCi0jZW5kaWYgLy8gIVVTRShDRk5FVFdP
UkspCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RhdGljIE5TSFRUUENvb2tpZVN0b3JhZ2Ug
KmNvb2tpZVN0b3JhZ2UoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uKQotewot
ICAgIGF1dG8gY29va2llU3RvcmFnZSA9IHNlc3Npb24uY29va2llU3RvcmFnZSgpOwotICAgIGlm
ICghY29va2llU3RvcmFnZSB8fCBbTlNIVFRQQ29va2llU3RvcmFnZSBzaGFyZWRIVFRQQ29va2ll
U3RvcmFnZV0uX2Nvb2tpZVN0b3JhZ2UgPT0gY29va2llU3RvcmFnZSkKLSAgICAgICAgcmV0dXJu
IFtOU0hUVFBDb29raWVTdG9yYWdlIHNoYXJlZEhUVFBDb29raWVTdG9yYWdlXTsKLQotICAgIHJl
dHVybiBbW1tOU0hUVFBDb29raWVTdG9yYWdlIGFsbG9jXSBfaW5pdFdpdGhDRkhUVFBDb29raWVT
dG9yYWdlOmNvb2tpZVN0b3JhZ2UuZ2V0KCldIGF1dG9yZWxlYXNlXTsKLX0KLQogdm9pZCBkZWxl
dGVDb29raWVzRm9ySG9zdG5hbWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lv
biwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGhvc3RuYW1lcykKIHsKICAgICBCRUdJTl9CTE9DS19P
QkpDX0VYQ0VQVElPTlM7CkBAIC0zNTMsNyArMzM5LDYgQEAgdm9pZCBkZWxldGVDb29raWVzRm9y
SG9zdG5hbWVzKGNvbnN0IE5ldAogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CiB9CiAK
LQogdm9pZCBkZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZShjb25zdCBOZXR3b3JrU3RvcmFn
ZVNlc3Npb24mIHNlc3Npb24sIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQg
dGltZVBvaW50KQogewogICAgIGlmICghW05TSFRUUENvb2tpZVN0b3JhZ2UgaW5zdGFuY2VzUmVz
cG9uZFRvU2VsZWN0b3I6QHNlbGVjdG9yKHJlbW92ZUNvb2tpZXNTaW5jZURhdGU6KV0pCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9DcmVkZW50aWFsU3RvcmFnZU1h
Yy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9D
cmVkZW50aWFsU3RvcmFnZU1hYy5tbQkocmV2aXNpb24gMjA3MDM1KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQ3JlZGVudGlhbFN0b3JhZ2VNYWMubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTI2LDggKzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJD
cmVkZW50aWFsU3RvcmFnZS5oIgogCi0jaWYgIVVTRShDRk5FVFdPUkspCi0KICNpbmNsdWRlICJB
dXRoZW50aWNhdGlvbk1hYy5oIgogI2luY2x1ZGUgIkNyZWRlbnRpYWwuaCIKICNpbmNsdWRlICJQ
cm90ZWN0aW9uU3BhY2UuaCIKQEAgLTUyLDUgKzUwLDMgQEAgdm9pZCBDcmVkZW50aWFsU3RvcmFn
ZTo6c2F2ZVRvUGVyc2lzdGVudAogI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQot
I2VuZGlmIC8vICFVU0UoQ0ZORVRXT1JLKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9tYWMvRm9ybURhdGFTdHJlYW1NYWMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9Gb3JtRGF0YVN0cmVhbU1hYy5oCShyZXZpc2lvbiAy
MDcwMzUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9Gb3JtRGF0YVN0
cmVhbU1hYy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxMCArMjYsNyBAQAogICogVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
ICAqLwogCi0jaWZuZGVmIEZvcm1EYXRhU3RyZWFtTWFjX2gKLSNkZWZpbmUgRm9ybURhdGFTdHJl
YW1NYWNfaAotCi0jaWYgIVVTRShDRk5FVFdPUkspCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUg
PHd0Zi9Gb3J3YXJkLmg+CiAKQEAgLTQwLDE1ICszNywxMSBAQCB0eXBlZGVmIGNvbnN0IHN0cnVj
dCBfQ0ZVUkxSZXF1ZXN0KiBDRlVSCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotICAgIGNsYXNz
IEZvcm1EYXRhOworY2xhc3MgRm9ybURhdGE7CiAKLSAgICB2b2lkIHNldEhUVFBCb2R5KE5TTXV0
YWJsZVVSTFJlcXVlc3QgKiwgRm9ybURhdGEqKTsKLSAgICBGb3JtRGF0YSogaHR0cEJvZHlGcm9t
U3RyZWFtKE5TSW5wdXRTdHJlYW0gKik7Cit2b2lkIHNldEhUVFBCb2R5KE5TTXV0YWJsZVVSTFJl
cXVlc3QgKiwgRm9ybURhdGEqKTsKK0Zvcm1EYXRhKiBodHRwQm9keUZyb21TdHJlYW0oTlNJbnB1
dFN0cmVhbSAqKTsKIAotICAgIENGU3RyaW5nUmVmIGZvcm1EYXRhU3RyZWFtTGVuZ3RoUHJvcGVy
dHlOYW1lKCk7CitDRlN0cmluZ1JlZiBmb3JtRGF0YVN0cmVhbUxlbmd0aFByb3BlcnR5TmFtZSgp
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyAhVVNFKENGTkVUV09SSykK
LQotI2VuZGlmIC8vIEZvcm1EYXRhU3RyZWFtTWFjX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvbWFjL0Zvcm1EYXRhU3RyZWFtTWFjLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Zvcm1EYXRhU3RyZWFtTWFjLm1tCShy
ZXZpc2lvbiAyMDcwMzUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9G
b3JtRGF0YVN0cmVhbU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjksOCArMjksNiBAQAogI2lt
cG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJGb3JtRGF0YVN0cmVhbU1hYy5oIgogCi0jaWYgIVVT
RShDRk5FVFdPUkspCi0KICNpbXBvcnQgIkZvcm1EYXRhLmgiCiAjaW1wb3J0ICJGb3JtRGF0YVN0
cmVhbUNGTmV0LmgiCiAKQEAgLTUxLDUgKzQ5LDMgQEAgRm9ybURhdGEqIGh0dHBCb2R5RnJvbVN0
cmVhbShOU0lucHV0U3RyZQogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAv
LyAhVVNFKENGTkVUV09SSykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
bWFjL1Jlc291cmNlRXJyb3JNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VFcnJvck1hYy5tbQkocmV2aXNpb24gMjA3MDM1KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VFcnJvck1hYy5t
bQkod29ya2luZyBjb3B5KQpAQCAtMzEsMTAgKzMxLDYgQEAKICNpbXBvcnQgPEZvdW5kYXRpb24v
Rm91bmRhdGlvbi5oPgogI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KIAotI2lm
IFBMQVRGT1JNKElPUykgJiYgVVNFKENGTkVUV09SSykKLSNpbXBvcnQgPENGTmV0d29yay9DRlNv
Y2tldFN0cmVhbVByaXYuaD4KLSNlbmRpZgotCiBAaW50ZXJmYWNlIE5TRXJyb3IgKFdlYkV4dHJh
cykKIC0gKE5TU3RyaW5nICopX3dlYl9sb2NhbGl6ZWREZXNjcmlwdGlvbjsKIEBlbmQKQEAgLTkx
LDg1ICs4Nyw2IEBAIC0gKHZvaWQpZW5jb2RlV2l0aENvZGVyOihOU0NvZGVyICopY29kZXIKIAog
QGVuZAogCi0KLSNpZiBVU0UoQ0ZORVRXT1JLKQotc3RhdGljIE5TRXJyb3IgKk5TRXJyb3JGcm9t
Q0ZFcnJvcihDRkVycm9yUmVmIGNmRXJyb3IsIE5TVVJMICp1cmwpCi17Ci0gICAgQ0ZJbmRleCBl
cnJDb2RlID0gQ0ZFcnJvckdldENvZGUoY2ZFcnJvcik7Ci0gICAgaWYgKENGRXF1YWwoQ0ZFcnJv
ckdldERvbWFpbihjZkVycm9yKSwga0NGRXJyb3JEb21haW5DRk5ldHdvcmspICYmIGVyckNvZGUg
PD0ga0NGVVJMRXJyb3JVbmtub3duICYmIGVyckNvZGUgPiAtNDAwMCkgewotICAgICAgICAvLyBU
aGlzIGlzIGFuIFVSTCBlcnJvciBhbmQgbmVlZHMgdG8gYmUgdHJhbnNsYXRlZCB0byB0aGUgTlNV
UkxFcnJvckRvbWFpbgotICAgICAgICBpZCBrZXlzWzEwXSwgdmFsdWVzWzEwXTsKLSAgICAgICAg
Q0ZEaWN0aW9uYXJ5UmVmIHVzZXJJbmZvID0gQ0ZFcnJvckNvcHlVc2VySW5mbyhjZkVycm9yKTsK
LSAgICAgICAgTlNFcnJvciAqcmVzdWx0OwotICAgICAgICBOU0ludGVnZXIgY291bnQgPSAwOwot
Ci0gICAgICAgIGlmICh1cmwpIHsKLSAgICAgICAgICAgIGtleXNbY291bnRdID0gTlNVUkxFcnJv
ckZhaWxpbmdVUkxFcnJvcktleTsKLSAgICAgICAgICAgIHZhbHVlc1tjb3VudF0gPSB1cmw7Ci0g
ICAgICAgICAgICBjb3VudCArKzsKLQotICAgICAgICAgICAga2V5c1tjb3VudF0gPSBOU1VSTEVy
cm9yRmFpbGluZ1VSTFN0cmluZ0Vycm9yS2V5OwotICAgICAgICAgICAgdmFsdWVzW2NvdW50XSA9
IFt1cmwgYWJzb2x1dGVTdHJpbmddOwotICAgICAgICAgICAgY291bnQgKys7Ci0gICAgICAgIH0K
LQotICAgICAgICB2YWx1ZXNbY291bnRdID0gKGlkKUNGRGljdGlvbmFyeUdldFZhbHVlKHVzZXJJ
bmZvLCBrQ0ZFcnJvckxvY2FsaXplZERlc2NyaXB0aW9uS2V5KTsKLSAgICAgICAgaWYgKHZhbHVl
c1tjb3VudF0pIHsKLSAgICAgICAgICAgIGtleXNbY291bnRdID0gTlNMb2NhbGl6ZWREZXNjcmlw
dGlvbktleTsKLSAgICAgICAgICAgIGNvdW50ICsrOwotICAgICAgICB9Ci0KLSAgICAgICAgdmFs
dWVzW2NvdW50XSA9IChpZClDRkRpY3Rpb25hcnlHZXRWYWx1ZSh1c2VySW5mbywga0NGRXJyb3JM
b2NhbGl6ZWRGYWlsdXJlUmVhc29uS2V5KTsKLSAgICAgICAgaWYgKHZhbHVlc1tjb3VudF0pIHsK
LSAgICAgICAgICAgIGtleXNbY291bnRdID0gTlNMb2NhbGl6ZWRGYWlsdXJlUmVhc29uRXJyb3JL
ZXk7Ci0gICAgICAgICAgICBjb3VudCArKzsKLSAgICAgICAgfQotCi0gICAgICAgIHZhbHVlc1tj
b3VudF0gPSAoaWQpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUodXNlckluZm8sIGtDRkVycm9yTG9jYWxp
emVkUmVjb3ZlcnlTdWdnZXN0aW9uS2V5KTsKLSAgICAgICAgaWYgKHZhbHVlc1tjb3VudF0pIHsK
LSAgICAgICAgICAgIGtleXNbY291bnRdID0gTlNMb2NhbGl6ZWRSZWNvdmVyeVN1Z2dlc3Rpb25F
cnJvcktleTsKLSAgICAgICAgICAgIGNvdW50ICsrOwotICAgICAgICB9Ci0KLSNwcmFnbWEgY2xh
bmcgZGlhZ25vc3RpYyBwdXNoCi0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdk
ZXByZWNhdGVkLWRlY2xhcmF0aW9ucyIKLSAgICAgICAgaWYgKHVzZXJJbmZvICYmICh2YWx1ZXNb
Y291bnRdID0gKGlkKUNGRGljdGlvbmFyeUdldFZhbHVlKHVzZXJJbmZvLCBrQ0ZTdHJlYW1Qcm9w
ZXJ0eVNTTFBlZXJDZXJ0aWZpY2F0ZXMpKSAhPSBuaWwpIHsKLSAgICAgICAgICAgIC8vIE5lZWQg
dG8gdHJhbnNsYXRlIHRoZSBjZXJ0Ci0gICAgICAgICAgICBrZXlzW2NvdW50XSA9IEAiTlNFcnJv
clBlZXJDZXJ0aWZpY2F0ZUNoYWluS2V5IjsKLSAgICAgICAgICAgIGNvdW50ICsrOwotCi0gICAg
ICAgICAgICB2YWx1ZXNbY291bnRdID0gKGlkKUNGRGljdGlvbmFyeUdldFZhbHVlKHVzZXJJbmZv
LCBfa0NGU3RyZWFtUHJvcGVydHlTU0xDbGllbnRDZXJ0aWZpY2F0ZXMpOwotICAgICAgICAgICAg
aWYgKHZhbHVlc1tjb3VudF0pIHsKLSAgICAgICAgICAgICAgICBrZXlzW2NvdW50XSA9IEAiTlNF
cnJvckNsaWVudENlcnRpZmljYXRlQ2hhaW5LZXkiOwotICAgICAgICAgICAgICAgIGNvdW50ICsr
OwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB2YWx1ZXNbY291bnRdID0gKGlkKUNGRGlj
dGlvbmFyeUdldFZhbHVlKHVzZXJJbmZvLCBfa0NGU3RyZWFtUHJvcGVydHlTU0xDbGllbnRDZXJ0
aWZpY2F0ZVN0YXRlKTsKLSAgICAgICAgICAgIGlmICh2YWx1ZXNbY291bnRdKSB7Ci0gICAgICAg
ICAgICAgICAga2V5c1tjb3VudF0gPSBAIk5TRXJyb3JDbGllbnRDZXJ0aWZpY2F0ZVN0YXRlS2V5
IjsKLSAgICAgICAgICAgICAgICBjb3VudCArKzsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQot
I3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAotCi0gICAgICAgIGlmICh1c2VySW5mbyAmJiAo
dmFsdWVzW2NvdW50XSA9IChpZClDRkRpY3Rpb25hcnlHZXRWYWx1ZSh1c2VySW5mbywga0NGU3Ry
ZWFtUHJvcGVydHlTU0xQZWVyVHJ1c3QpKSAhPSBuaWwpIHsKLSAgICAgICAgICAgIGtleXNbY291
bnRdID0gTlNVUkxFcnJvckZhaWxpbmdVUkxQZWVyVHJ1c3RFcnJvcktleTsKLSAgICAgICAgICAg
IGNvdW50Kys7Ci0gICAgICAgIH0KLQotICAgICAgICBrZXlzW2NvdW50XSA9IE5TVW5kZXJseWlu
Z0Vycm9yS2V5OwotICAgICAgICB2YWx1ZXNbY291bnRdID0gKGlkKWNmRXJyb3I7Ci0gICAgICAg
IGNvdW50ICsrOwotCi0gICAgICAgIHJlc3VsdCA9IFtXZWJDdXN0b21OU1VSTEVycm9yIGVycm9y
V2l0aERvbWFpbjpOU1VSTEVycm9yRG9tYWluIGNvZGU6KGVyckNvZGUgPT0ga0NGVVJMRXJyb3JV
bmtub3duID8gKENGSW5kZXgpTlNVUkxFcnJvclVua25vd24gOiBlcnJDb2RlKSB1c2VySW5mbzpb
TlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0czp2YWx1ZXMgZm9yS2V5czprZXlzIGNv
dW50OmNvdW50XV07Ci0gICAgICAgIGlmICh1c2VySW5mbykKLSAgICAgICAgICAgIENGUmVsZWFz
ZSh1c2VySW5mbyk7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQotICAgIHJldHVybiAo
TlNFcnJvciAqKWNmRXJyb3I7Ci19Ci0jZW5kaWYgLy8gVVNFKENGTkVUV09SSykKLQogI2VuZGlm
IC8vIFBMQVRGT1JNKElPUykKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTkwLDUzICsxMDcs
NiBAQCBzdGF0aWMgUmV0YWluUHRyPE5TRXJyb3I+IGNyZWF0ZU5TRXJyb3JGCiAgICAgcmV0dXJu
IGFkb3B0TlMoW1tOU0Vycm9yIGFsbG9jXSBpbml0V2l0aERvbWFpbjpyZXNvdXJjZUVycm9yLmRv
bWFpbigpIGNvZGU6cmVzb3VyY2VFcnJvci5lcnJvckNvZGUoKSB1c2VySW5mbzp1c2VySW5mby5n
ZXQoKV0pOwogfQogCi0jaWYgVVNFKENGTkVUV09SSykKLQotUmVzb3VyY2VFcnJvcjo6UmVzb3Vy
Y2VFcnJvcihOU0Vycm9yICplcnJvcikKLSAgICA6IFJlc291cmNlRXJyb3JCYXNlKFR5cGU6Ok51
bGwpCi0gICAgLCBtX2RhdGFJc1VwVG9EYXRlKGZhbHNlKQotICAgICwgbV9wbGF0Zm9ybUVycm9y
KHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZFcnJvclJlZj4oZXJyb3IpKQotewotICAgIGlmIChlcnJvcikK
LSAgICAgICAgc2V0VHlwZSgoW2Vycm9yIGNvZGVdID09IE5TVVJMRXJyb3JUaW1lZE91dCkgPyBU
eXBlOjpUaW1lb3V0IDogVHlwZTo6R2VuZXJhbCk7Ci19Ci0KLU5TRXJyb3IgKlJlc291cmNlRXJy
b3I6Om5zRXJyb3IoKSBjb25zdAotewotICAgIGlmIChpc051bGwoKSkgewotICAgICAgICBBU1NF
UlQoIW1fcGxhdGZvcm1FcnJvcik7Ci0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgfQotCi0gICAg
aWYgKG1fcGxhdGZvcm1OU0Vycm9yKQotICAgICAgICByZXR1cm4gbV9wbGF0Zm9ybU5TRXJyb3Iu
Z2V0KCk7Ci0KLSAgICBpZiAobV9wbGF0Zm9ybUVycm9yKSB7Ci0gICAgICAgIENGRXJyb3JSZWYg
ZXJyb3IgPSBtX3BsYXRmb3JtRXJyb3IuZ2V0KCk7Ci0gICAgICAgIFJldGFpblB0cjxDRkRpY3Rp
b25hcnlSZWY+IHVzZXJJbmZvID0gYWRvcHRDRihDRkVycm9yQ29weVVzZXJJbmZvKGVycm9yKSk7
Ci0jaWYgUExBVEZPUk0oSU9TKQotICAgICAgICBtX3BsYXRmb3JtTlNFcnJvciA9IE5TRXJyb3JG
cm9tQ0ZFcnJvcihlcnJvciwgKE5TVVJMICopWyhOU0RpY3Rpb25hcnkgKil1c2VySW5mby5nZXQo
KSBvYmplY3RGb3JLZXk6KGlkKSBrQ0ZVUkxFcnJvckZhaWxpbmdVUkxFcnJvcktleV0pOwotICAg
ICAgICAvLyBJZiBOU0Vycm9yRnJvbUNGRXJyb3IgY3JlYXRlZCBhIG5ldyBOU0Vycm9yIGZvciB1
cywgcmV0dXJuIHRoYXQuCi0gICAgICAgIGlmIChtX3BsYXRmb3JtTlNFcnJvci5nZXQoKSAhPSAo
TlNFcnJvciAqKWVycm9yKQotICAgICAgICAgICAgcmV0dXJuIG1fcGxhdGZvcm1OU0Vycm9yLmdl
dCgpOwotCi0gICAgICAgIC8vIE90aGVyd2lzZSBmYWxsIHRocm91Z2ggdG8gY3JlYXRlIGEgbmV3
IE5TRXJyb3IgZnJvbSB0aGUgQ0ZFcnJvci4KLSNlbmRpZgotICAgICAgICBtX3BsYXRmb3JtTlNF
cnJvciA9IGFkb3B0TlMoW1tOU0Vycm9yIGFsbG9jXSBpbml0V2l0aERvbWFpbjooTlNTdHJpbmcg
KilDRkVycm9yR2V0RG9tYWluKGVycm9yKSBjb2RlOkNGRXJyb3JHZXRDb2RlKGVycm9yKSB1c2Vy
SW5mbzooTlNEaWN0aW9uYXJ5ICopdXNlckluZm8uZ2V0KCldKTsKLSAgICAgICAgcmV0dXJuIG1f
cGxhdGZvcm1OU0Vycm9yLmdldCgpOwotICAgIH0KLQotICAgIG1fcGxhdGZvcm1OU0Vycm9yID0g
Y3JlYXRlTlNFcnJvckZyb21SZXNvdXJjZUVycm9yQmFzZSgqdGhpcyk7Ci0gICAgcmV0dXJuIG1f
cGxhdGZvcm1OU0Vycm9yLmdldCgpOwotfQotCi1SZXNvdXJjZUVycm9yOjpvcGVyYXRvciBOU0Vy
cm9yICooKSBjb25zdAotewotICAgIHJldHVybiBuc0Vycm9yKCk7Ci19Ci0KLSNlbHNlCi0KIFJl
c291cmNlRXJyb3I6OlJlc291cmNlRXJyb3IoTlNFcnJvciAqbnNFcnJvcikKICAgICA6IFJlc291
cmNlRXJyb3JCYXNlKFR5cGU6Ok51bGwpCiAgICAgLCBtX2RhdGFJc1VwVG9EYXRlKGZhbHNlKQpA
QCAtMzA5LDYgKzE3OSw0IEBAIFJlc291cmNlRXJyb3I6Om9wZXJhdG9yIENGRXJyb3JSZWYoKSBj
b24KICAgICByZXR1cm4gY2ZFcnJvcigpOwogfQogCi0jZW5kaWYgLy8gVVNFKENGTkVUV09SSykK
LQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW0JKHJldmlzaW9u
IDIwNzAzNSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNl
SGFuZGxlTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC01OCwxNiArNTgsNiBAQAogI2ltcG9ydCA8
d3RmL3RleHQvQmFzZTY0Lmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKLSNpZiBV
U0UoQ0ZORVRXT1JLKQotI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCi0jaW1wb3J0IDxDRk5l
dHdvcmsvQ0ZVUkxDb25uZWN0aW9uUHJpdi5oPgotI2VuZGlmCi10eXBlZGVmIHN0cnVjdCBfQ0ZV
UkxDb25uZWN0aW9uKiBDRlVSTENvbm5lY3Rpb25SZWY7Ci1leHRlcm4gIkMiIHsKLUNGRGljdGlv
bmFyeVJlZiBfQ0ZVUkxDb25uZWN0aW9uQ29weVRpbWluZ0RhdGEoQ0ZVUkxDb25uZWN0aW9uUmVm
KTsKLX0KLSNlbmRpZiAvLyBVU0UoQ0ZORVRXT1JLKQotCiAjaWYgUExBVEZPUk0oSU9TKQogI2lt
cG9ydCAiQ0ZOZXR3b3JrU1BJLmgiCiAjaW1wb3J0ICJSdW50aW1lQXBwbGljYXRpb25DaGVja3Mu
aCIKQEAgLTkwLDggKzgwLDYgQEAgLShpZClfaW5pdFdpdGhSZXF1ZXN0OihOU1VSTFJlcXVlc3Qg
KilyZQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCi0jaWYgIVVTRShDRk5FVFdPUkspCi0g
ICAgCiBzdGF0aWMgdm9pZCBhcHBseUJhc2ljQXV0aG9yaXphdGlvbkhlYWRlcihSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QsIGNvbnN0IENyZWRlbnRpYWwmIGNyZWRlbnRpYWwpCiB7CiAgICAgU3Ry
aW5nIGF1dGhlbnRpY2F0aW9uSGVhZGVyID0gIkJhc2ljICIgKyBiYXNlNjRFbmNvZGUoU3RyaW5n
KGNyZWRlbnRpYWwudXNlcigpICsgIjoiICsgY3JlZGVudGlhbC5wYXNzd29yZCgpKS51dGY4KCkp
OwpAQCAtMzI5LDggKzMxNyw2IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OnBsYXRmb3JtU2V0RGVm
ZXJzTG8KICAgICAgICAgW2QtPm1fY29ubmVjdGlvbiBzZXREZWZlcnNDYWxsYmFja3M6ZGVmZXJz
XTsKIH0KIAotI2lmICFVU0UoQ0ZORVRXT1JLKQotCiB2b2lkIFJlc291cmNlSGFuZGxlOjpzY2hl
ZHVsZShTY2hlZHVsZVBhaXImIHBhaXIpCiB7CiAgICAgTlNSdW5Mb29wICpydW5Mb29wID0gcGFp
ci5uc1J1bkxvb3AoKTsKQEAgLTM0OSw4ICszMzUsNiBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjp1
bnNjaGVkdWxlKFNjaGVkdWxlCiAgICAgICAgIFtkLT5tX2Nvbm5lY3Rpb24uZ2V0KCkgdW5zY2hl
ZHVsZUZyb21SdW5Mb29wOnJ1bkxvb3AgZm9yTW9kZTooTlNTdHJpbmcgKilwYWlyLm1vZGUoKV07
CiB9CiAKLSNlbmRpZgotCiBpZCBSZXNvdXJjZUhhbmRsZTo6bWFrZURlbGVnYXRlKGJvb2wgc2hv
dWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UpCiB7CiAgICAgQVNTRVJUKCFkLT5tX2RlbGVnYXRlKTsK
QEAgLTczMCwyNyArNzE0LDE0IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmNvbnRpbnVlV2lsbENh
Y2hlUmUKIAogICAgIFsoaWQpZGVsZWdhdGUoKSBjb250aW51ZVdpbGxDYWNoZVJlc3BvbnNlOnJl
c3BvbnNlXTsKIH0KLSAgICAKLSNlbmRpZiAvLyAhVVNFKENGTkVUV09SSykKLSAgICAKLSNpZiBF
TkFCTEUoV0VCX1RJTUlORykKIAotI2lmIFVTRShDRk5FVFdPUkspCi0gICAgCi12b2lkIFJlc291
cmNlSGFuZGxlOjpnZXRDb25uZWN0aW9uVGltaW5nRGF0YShDRlVSTENvbm5lY3Rpb25SZWYgY29u
bmVjdGlvbiwgTmV0d29ya0xvYWRUaW1pbmcmIHRpbWluZykKLXsKLSAgICBjb3B5VGltaW5nRGF0
YSgoX19icmlkZ2UgTlNEaWN0aW9uYXJ5KilhZG9wdENGKF9DRlVSTENvbm5lY3Rpb25Db3B5VGlt
aW5nRGF0YShjb25uZWN0aW9uKSkuZ2V0KCksIHRpbWluZyk7Ci19Ci0gICAgCi0jZWxzZQorI2lm
IEVOQUJMRShXRUJfVElNSU5HKQogICAgIAogdm9pZCBSZXNvdXJjZUhhbmRsZTo6Z2V0Q29ubmVj
dGlvblRpbWluZ0RhdGEoTlNVUkxDb25uZWN0aW9uICpjb25uZWN0aW9uLCBOZXR3b3JrTG9hZFRp
bWluZyYgdGltaW5nKQogewogICAgIGNvcHlUaW1pbmdEYXRhKFtjb25uZWN0aW9uIF90aW1pbmdE
YXRhXSwgdGltaW5nKTsKIH0KICAgICAKLSNlbmRpZgotICAgIAogI2VuZGlmIC8vIEVOQUJMRShX
RUJfVElNSU5HKQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZVJlcXVlc3RNYWMubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VSZXF1ZXN0TWFj
Lm1tCShyZXZpc2lvbiAyMDcwMzUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L21hYy9SZXNvdXJjZVJlcXVlc3RNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTEsNTkgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAwOCBBcHBsZSwgSW5jLiAgQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgot
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAot
ICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiUmVzb3VyY2VSZXF1ZXN0LmgiCi0K
LSNpZiBQTEFURk9STShNQUMpCi0KLSNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgot
Ci1AaW50ZXJmYWNlIE5TVVJMUmVxdWVzdCAoV2ViTlNVUkxSZXF1ZXN0RGV0YWlscykKLS0gKENG
VVJMUmVxdWVzdFJlZilfQ0ZVUkxSZXF1ZXN0OwotLSAoaWQpX2luaXRXaXRoQ0ZVUkxSZXF1ZXN0
OihDRlVSTFJlcXVlc3RSZWYpcmVxdWVzdDsKLUBlbmQKLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci0jaWYgVVNFKENGTkVUV09SSykKLQotUmVzb3VyY2VSZXF1ZXN0OjpSZXNvdXJjZVJlcXVlc3Qo
TlNVUkxSZXF1ZXN0ICpuc1JlcXVlc3QpCi0gICAgOiBSZXNvdXJjZVJlcXVlc3RCYXNlKCkKLSAg
ICAsIG1fY2ZSZXF1ZXN0KFtuc1JlcXVlc3QgX0NGVVJMUmVxdWVzdF0pCi0gICAgLCBtX25zUmVx
dWVzdChuc1JlcXVlc3QpCi17Ci19Ci0KLXZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojp1cGRhdGVOU1VS
TFJlcXVlc3QoKQotewotICAgIGlmIChtX2NmUmVxdWVzdCkKLSAgICAgICAgbV9uc1JlcXVlc3Qg
PSBhZG9wdE5TKFtbTlNVUkxSZXF1ZXN0IGFsbG9jXSBfaW5pdFdpdGhDRlVSTFJlcXVlc3Q6bV9j
ZlJlcXVlc3QuZ2V0KCldKTsKLX0KLQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
LQotI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9TeW5j
aHJvbm91c0xvYWRlckNsaWVudC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL21hYy9TeW5jaHJvbm91c0xvYWRlckNsaWVudC5tbQkocmV2aXNpb24gMjA3
MDM1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvU3luY2hyb25vdXNM
b2FkZXJDbGllbnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDggKzI2LDYgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJTeW5jaHJvbm91c0xvYWRlckNsaWVudC5oIgogCi0jaWYg
IVVTRShDRk5FVFdPUkspCi0KICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oIgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zOCwxNCArMzYsMTAgQEAgdm9pZCBTeW5jaHJvbm91
c0xvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZQogICAgIFtjaGFsbGVuZ2Uuc2VuZGVyKCkgY29udGlu
dWVXaXRob3V0Q3JlZGVudGlhbEZvckF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOmNoYWxsZW5nZS5u
c1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCldOwogfQogCi0jaWYgIVVTRShDRk5FVFdPUksp
CiBSZXNvdXJjZUVycm9yIFN5bmNocm9ub3VzTG9hZGVyQ2xpZW50OjpwbGF0Zm9ybUJhZFJlc3Bv
bnNlRXJyb3IoKQogewogICAgIFJldGFpblB0cjxOU0Vycm9yPiBlcnJvciA9IGFkb3B0TlMoW1tO
U0Vycm9yIGFsbG9jXSBpbml0V2l0aERvbWFpbjpOU1VSTEVycm9yRG9tYWluIGNvZGU6TlNVUkxF
cnJvckJhZFNlcnZlclJlc3BvbnNlIHVzZXJJbmZvOm5pbF0pOwogICAgIHJldHVybiBlcnJvci5n
ZXQoKTsKIH0KLSNlbmRpZgogCiB9Ci0KLSNlbmRpZiAvLyAhVVNFKENGTkVUV09SSykKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRs
ZUFzRGVsZWdhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlLmgJKHJldmlzaW9uIDIwNzAz
NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJj
ZUhhbmRsZUFzRGVsZWdhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsOCArMjMsNyBAQAogICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgV2ViQ29yZVJl
c291cmNlSGFuZGxlQXNEZWxlZ2F0ZV9oCi0jZGVmaW5lIFdlYkNvcmVSZXNvdXJjZUhhbmRsZUFz
RGVsZWdhdGVfaAorI3ByYWdtYSBvbmNlCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJl
c291cmNlSGFuZGxlOwpAQCAtMzQsMTMgKzMzLDggQEAgY2xhc3MgUmVzb3VyY2VIYW5kbGU7CiAt
ICh2b2lkKWRldGFjaEhhbmRsZTsKIEBlbmQKIAotI2lmICFVU0UoQ0ZORVRXT1JLKQotCiBAaW50
ZXJmYWNlIFdlYkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGUgOiBOU09iamVjdCA8TlNVUkxD
b25uZWN0aW9uRGVsZWdhdGUsIFdlYkNvcmVSZXNvdXJjZUxvYWRlckRlbGVnYXRlPiB7CiAgICAg
V2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqIG1faGFuZGxlOwogfQogLSAoaWQpaW5pdFdpdGhIYW5k
bGU6KFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiloYW5kbGU7CiBAZW5kCi0KLSNlbmRpZiAvLyAh
VVNFKENGTkVUV09SSykKLSNlbmRpZiAvLyBXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRl
X2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNv
dXJjZUhhbmRsZUFzRGVsZWdhdGUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZS5tbQkocmV2
aXNpb24gMjA3MDM1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2Vi
Q29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYsOCAr
MjYsNiBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJXZWJDb3JlUmVzb3VyY2VIYW5k
bGVBc0RlbGVnYXRlLmgiCiAKLSNpZiAhVVNFKENGTkVUV09SSykKLQogI2ltcG9ydCAiQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UuaCIKICNpbXBvcnQgIkF1dGhlbnRpY2F0aW9uTWFjLmgiCiAjaW1w
b3J0ICJMb2dnaW5nLmgiCkBAIC0yNzAsNiArMjY4LDMgQEAgLSAoTlNDYWNoZWRVUkxSZXNwb25z
ZSAqKWNvbm5lY3Rpb246KE5TVQogfQogCiBAZW5kCi0KLSNlbmRpZiAvLyAhVVNFKENGTkVUV09S
SykKLQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJl
c291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNP
cGVyYXRpb25RdWV1ZURlbGVnYXRlLmgJKHJldmlzaW9uIDIwNzAzNSkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9u
UXVldWVEZWxlZ2F0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMywxMCArMjMsNyBAQAogICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgV2ViQ29yZVJlc291
cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlX2gKLSNkZWZpbmUgV2ViQ29yZVJlc291
cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlX2gKLQotI2lmICFVU0UoQ0ZORVRXT1JL
KQorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVn
YXRlLmgiCiAjaW5jbHVkZSA8ZGlzcGF0Y2gvZGlzcGF0Y2guaD4KQEAgLTU4LDYgKzU1LDMgQEAg
QGludGVyZmFjZSBXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdAogQGludGVyZmFjZSBXZWJD
b3JlUmVzb3VyY2VIYW5kbGVXaXRoQ3JlZGVudGlhbFN0b3JhZ2VBc09wZXJhdGlvblF1ZXVlRGVs
ZWdhdGUgOiBXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUKIAog
QGVuZAotCi0jZW5kaWYgLy8gIVVTRShDRk5FVFdPUkspCi0jZW5kaWYgLy8gV2ViQ29yZVJlc291
cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVl
dWVEZWxlZ2F0ZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUubW0J
KHJldmlzaW9uIDIwNzAzNSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFj
L1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMjYsOCArMjYsNiBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJX
ZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUuaCIKIAotI2lmICFV
U0UoQ0ZORVRXT1JLKQotCiAjaW1wb3J0ICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oIgogI2lt
cG9ydCAiQXV0aGVudGljYXRpb25NYWMuaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKQEAgLTMyOSw2
ICszMjcsMyBAQCAtIChCT09MKWNvbm5lY3Rpb25TaG91bGRVc2VDcmVkZW50aWFsU3RvCiB9CiAK
IEBlbmQKLQotI2VuZGlmIC8vICFVU0UoQ0ZORVRXT1JLKQotCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlVVJMUmVzcG9uc2UubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVVSTFJlc3BvbnNl
Lm1tCShyZXZpc2lvbiAyMDcwMzUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L21hYy9XZWJDb3JlVVJMUmVzcG9uc2UubW0JKHdvcmtpbmcgY29weSkKQEAgLTMyNSw3ICszMjUs
NiBAQCB2b2lkIGFkanVzdE1JTUVUeXBlSWZOZWNlc3NhcnkoQ0ZVUkxSZXNwCiB9CiAjZW5kaWYK
IAotI2lmICFVU0UoQ0ZORVRXT1JLKQogTlNVUkxSZXNwb25zZSAqc3ludGhlc2l6ZVJlZGlyZWN0
UmVzcG9uc2VJZk5lY2Vzc2FyeShOU1VSTFJlcXVlc3QgKmN1cnJlbnRSZXF1ZXN0LCBOU1VSTFJl
cXVlc3QgKm5ld1JlcXVlc3QsIE5TVVJMUmVzcG9uc2UgKnJlZGlyZWN0UmVzcG9uc2UpCiB7CiAg
ICAgaWYgKHJlZGlyZWN0UmVzcG9uc2UpCkBAIC0zMzksNiArMzM4LDUgQEAgTlNVUkxSZXNwb25z
ZSAqc3ludGhlc2l6ZVJlZGlyZWN0UmVzcG9ucwogICAgIE5TRGljdGlvbmFyeSAqc3ludGhlc2l6
ZWRSZXNwb25zZUhlYWRlckZpZWxkcyA9IEB7IEAiTG9jYXRpb24iOiBbW25ld1JlcXVlc3QgVVJM
XSBhYnNvbHV0ZVN0cmluZ10sIEAiQ2FjaGUtQ29udHJvbCI6IEAibm8tc3RvcmUiIH07CiAgICAg
cmV0dXJuIFtbW05TSFRUUFVSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDpbY3VycmVudFJl
cXVlc3QgVVJMXSBzdGF0dXNDb2RlOjMwMiBIVFRQVmVyc2lvbjooTlNTdHJpbmcgKilrQ0ZIVFRQ
VmVyc2lvbjFfMSBoZWFkZXJGaWVsZHM6c3ludGhlc2l6ZWRSZXNwb25zZUhlYWRlckZpZWxkc10g
YXV0b3JlbGVhc2VdOwogfQotI2VuZGlmCiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3dpbi9UZW1wb3JhcnlMaW5rU3R1YnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3dpbi9UZW1wb3JhcnlMaW5rU3R1YnMuY3BwCShyZXZpc2lvbiAyMDcwMzUp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vVGVtcG9yYXJ5TGlua1N0dWJzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcsNyBAQAogCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50
ZWQuaCIKICNpbmNsdWRlICJTU0xLZXlHZW5lcmF0b3IuaCIKLSNpZiAhVVNFKENGTkVUV09SSykK
KyNpZiAhVVNFKENGVVJMQ09OTkVDVElPTikKICNpbmNsdWRlICJDb29raWVTdG9yYWdlLmgiCiAj
ZW5kaWYKIApAQCAtMzcsNyArMzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBTdHJpbmcgc2ln
bmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKHVuc2lnbmVkLCBjb25zdCBTdHJpbmcmLCBj
b25zdCBVUkwmKSB7IG5vdEltcGxlbWVudGVkKCk7IHJldHVybiBTdHJpbmcoKTsgfQogdm9pZCBn
ZXRTdXBwb3J0ZWRLZXlTaXplcyhWZWN0b3I8U3RyaW5nPiYpIHsgbm90SW1wbGVtZW50ZWQoKTsg
fQogCi0jaWYgIVVTRShDRk5FVFdPUkspCisjaWYgIVVTRShDRlVSTENPTk5FQ1RJT04pCiB2b2lk
IHN0YXJ0T2JzZXJ2aW5nQ29va2llQ2hhbmdlcyhDb29raWVDaGFuZ2VDYWxsYmFja1B0cikgeyBu
b3RJbXBsZW1lbnRlZCgpOyB9CiB2b2lkIHN0b3BPYnNlcnZpbmdDb29raWVDaGFuZ2VzKCkgeyBu
b3RJbXBsZW1lbnRlZCgpOyB9CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
anMvV2ViQ29yZVRlc3RTdXBwb3J0UHJlZml4LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvdGVzdGluZy9qcy9XZWJDb3JlVGVzdFN1cHBvcnRQcmVmaXguaAkocmV2aXNpb24gMjA3MDM1
KQorKysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9qcy9XZWJDb3JlVGVzdFN1cHBvcnRQcmVmaXgu
aAkod29ya2luZyBjb3B5KQpAQCAtMTgsNiArMTgsOCBAQAogICoKICAqLwogCisjcHJhZ21hIG9u
Y2UKKwogLyogVGhpcyBwcmVmaXggZmlsZSBzaG91bGQgY29udGFpbiBvbmx5OiAKICAqICAgIDEp
IGZpbGVzIHRvIHByZWNvbXBpbGUgZm9yIGZhc3RlciBidWlsZHMKICAqICAgIDIpIGluIG9uZSBj
YXNlIGF0IGxlYXN0OiBPUy1YLXNwZWNpZmljIHBlcmZvcm1hbmNlIGJ1ZyB3b3JrYXJvdW5kcwpA
QCAtMTIwLDkgKzEyMiw3IEBACiAjZGVmaW5lIE9CU09MRVRFX0NPTE9SU1lOQ19BUEkKICNlbmRp
ZgogI2VuZGlmCi0jaWYgVVNFKENGTkVUV09SSykKLS8qIFdpbmRvd3MgZG9lc24ndCBpbmNsdWRl
IENGTmV0d29yay5oIHZpYSBDb3JlU2VydmljZXMuaCwgc28gd2UgZG8KLSAgIGl0IGV4cGxpY2l0
bHkgaGVyZSB0byBtYWtlIFdpbmRvd3MgbW9yZSBjb25zaXN0ZW50IHdpdGggTWFjLiAqLworI2lm
IFVTRShDRlVSTENPTk5FQ1RJT04pCiAjaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGTmV0d29yay5oPgog
Ly8gT24gV2luZG93cywgZGlzcGF0Y2guaCBuZWVkcyB0byBiZSBpbmNsdWRlZCBiZWZvcmUgY2Vy
dGFpbiBDRk5ldHdvcmsgaGVhZGVycy4KICNpbmNsdWRlIDxkaXNwYXRjaC9kaXNwYXRjaC5oPgpJ
bmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZwkocmV2aXNpb24gMjA3MDM1KQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzEgQEAKKzIwMTYtMTAtMTAgIEFsZXggQ2hy
aXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZW1vdmUgZGVh
ZCBuZXR3b3JraW5nIGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE2MzI2MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmg6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL2lvcy9Eb3dubG9hZElPUy5tbTogUmVtb3ZlZC4K
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvbWFjL0Rvd25sb2FkTWFjLm1tOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmg6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvbWFjL05ldHdvcmtMb2FkTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
TG9hZDo6d2lsbENhY2hlUmVzcG9uc2VBc3luYyk6IERlbGV0ZWQuCisgICAgICAgICogU2hhcmVk
L0F1dGhlbnRpY2F0aW9uL2NvY29hL0F1dGhlbnRpY2F0aW9uTWFuYWdlckNvY29hLm1tOgorICAg
ICAgICAoV2ViS2l0OjpBdXRoZW50aWNhdGlvbk1hbmFnZXI6OnJlY2VpdmVkQ3JlZGVudGlhbCk6
CisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6cmVjZWl2ZWRSZXF1ZXN0
VG9Db250aW51ZVdpdGhvdXRDcmVkZW50aWFsKToKKyAgICAgICAgKFdlYktpdDo6QXV0aGVudGlj
YXRpb25NYW5hZ2VyOjpyZWNlaXZlZENhbmNlbGxhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OkF1
dGhlbnRpY2F0aW9uTWFuYWdlcjo6cmVjZWl2ZWRSZXF1ZXN0VG9QZXJmb3JtRGVmYXVsdEhhbmRs
aW5nKToKKyAgICAgICAgKFdlYktpdDo6QXV0aGVudGljYXRpb25NYW5hZ2VyOjpyZWNlaXZlZENo
YWxsZW5nZVJlamVjdGlvbik6CisgICAgICAgICogU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzOjplbmNvZGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzLmg6CisgICAgICAgICogU2hhcmVkL21hYy9XZWJDb3JlQXJndW1lbnRDb2RlcnNNYWMubW06
CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVzb3VyY2VSZXF1ZXN0Pjo6ZW5jb2RlUGxh
dGZvcm1EYXRhKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlcXVlc3Q+
OjpkZWNvZGVQbGF0Zm9ybURhdGEpOgorICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKwogMjAxNi0xMC0xMCAgS29uc3RhbnRpbiBUb2thcmV2ICA8YW5udWxlbkB5
YW5kZXgucnU+CiAKICAgICAgICAgQWRkZWQgZmluYWwgc3BlY2lmaWVyIHRvIFdlYkluc3BlY3Rv
clNlcnZlciBhbmQgdG8gaXRzIG92ZXJyaWRkZW4gbWV0aG9kcwpJbmRleDogU291cmNlL1dlYktp
dDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oCShyZXZpc2lvbiAyMDcwMzUpCisrKyBT
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oCSh3b3JraW5nIGNvcHkp
CkBAIC03OSwxMiArNzksOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YUFycmF5
KFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwgQ0ZBcnJheVJlZikgb3ZlcnJpZGU7CiAjZW5kaWYK
ICNpZiBQTEFURk9STShDT0NPQSkKLSNpZiBVU0UoQ0ZORVRXT1JLKQotICAgIHZvaWQgd2lsbENh
Y2hlUmVzcG9uc2VBc3luYyhXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIENGQ2FjaGVkVVJMUmVz
cG9uc2VSZWYpIG92ZXJyaWRlOwotI2Vsc2UKICAgICB2b2lkIHdpbGxDYWNoZVJlc3BvbnNlQXN5
bmMoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBOU0NhY2hlZFVSTFJlc3BvbnNlICopIG92ZXJy
aWRlOwogI2VuZGlmCi0jZW5kaWYKIAogI2lmIFVTRShQUk9URUNUSU9OX1NQQUNFX0FVVEhfQ0FM
TEJBQ0spCiAgICAgdm9pZCBjb250aW51ZUNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9u
U3BhY2UoYm9vbCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9h
ZHMvRG93bmxvYWQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9Eb3dubG9hZHMvRG93bmxvYWQuaAkocmV2aXNpb24gMjA3MDM1KQorKysgU291cmNlL1dlYktp
dDIvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQ3LDEwICs0Nyw2IEBAIE9CSkNfQ0xBU1MgV0tEb3dubG9hZEFzRGVsZWdhdGU7CiAjZW5kaWYK
ICNlbmRpZgogCi0jaWYgVVNFKENGTkVUV09SSykKLSNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZVUkxE
b3dubG9hZFByaXYuaD4KLSNlbmRpZgotCiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIERhdGFSZWZl
cmVuY2U7CiB9CkBAIC0xMzksOSArMTM1LDYgQEAgcHJpdmF0ZToKICAgICBSZXRhaW5QdHI8V0tE
b3dubG9hZEFzRGVsZWdhdGU+IG1fZGVsZWdhdGU7CiAjZW5kaWYKICNlbmRpZgotI2lmIFVTRShD
Rk5FVFdPUkspCi0gICAgUmV0YWluUHRyPENGVVJMRG93bmxvYWRSZWY+IG1fZG93bmxvYWQ7Ci0j
ZW5kaWYKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDbGllbnQ+
IG1fZG93bmxvYWRDbGllbnQ7CiAgICAgUmVmUHRyPFdlYkNvcmU6OlJlc291cmNlSGFuZGxlPiBt
X3Jlc291cmNlSGFuZGxlOwogICAgIFN0cmluZyBtX3N1Z2dlc3RlZE5hbWU7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvaW9zL0Rvd25sb2FkSU9TLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9pb3Mv
RG93bmxvYWRJT1MubW0JKHJldmlzaW9uIDIwNzAzNSkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL0Rvd25sb2Fkcy9pb3MvRG93bmxvYWRJT1MubW0JKHdvcmtpbmcgY29weSkKQEAg
LTEsMTYyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQg
IkRvd25sb2FkLmgiCi0KLSNpZiBVU0UoQ0ZORVRXT1JLKSAmJiAhVVNFKE5FVFdPUktfU0VTU0lP
TikKLQotI2ltcG9ydCAiRGF0YVJlZmVyZW5jZS5oIgotI2ltcG9ydCA8Q0ZOZXR3b3JrL0NGVVJM
RG93bmxvYWQuaD4KLSNpbXBvcnQgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KLSNpbXBvcnQg
PFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgotI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZUhhbmRs
ZS5oPgotI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+Ci0jaW1wb3J0IDx3dGYv
UmV0YWluUHRyLmg+Ci0jaW1wb3J0IDx3dGYvUnVuTG9vcC5oPgotCi11c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLS8vIEZJWE1FOiBJZiBwb3NzaWJsZSwg
d2Ugc2hvdWxkIGNvbnNpZGVyIG1vdmluZyBzb21lIGNhbGxiYWNrcyBvZmYgdGhlIG1haW4gdGhy
ZWFkIG9yIGF0IGxlYXN0Ci0vLyBtYWtpbmcgdGhlbSBhc3luY2hvbm91cyBjYWxscy4KLXN0YXRp
YyB2b2lkIGRpc3BhdGNoT25NYWluVGhyZWFkKHZvaWQoXmJsb2NrKSgpKQotewotICAgIGlmIChS
dW5Mb29wOjppc01haW4oKSkgewotICAgICAgICBibG9jaygpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotCi0gICAgZGlzcGF0Y2hfc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBibG9j
ayk7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgRG93bmxvYWQqIHRvRG93bmxvYWQoY29uc3Qgdm9pZCog
Y2xpZW50SW5mbykKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RG93bmxvYWQqPihjb25zdF9j
YXN0PHZvaWQqPihjbGllbnRJbmZvKSk7Ci19Ci0KLXN0YXRpYyB2b2lkIHNldFVwRG93bmxvYWRD
bGllbnQoQ0ZVUkxEb3dubG9hZENsaWVudCYgY2xpZW50LCBEb3dubG9hZCYgZG93bmxvYWQpCi17
Ci0gICAgbWVtc2V0KCZjbGllbnQsIDAsIHNpemVvZihjbGllbnQpKTsKLSAgICBjbGllbnQuY2xp
ZW50SW5mbyA9ICZkb3dubG9hZDsKLQotICAgIGNsaWVudC5kaWRTdGFydCA9IFtdKENGVVJMRG93
bmxvYWRSZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pIHsKLSAgICAgICAgZGlzcGF0Y2hPbk1h
aW5UaHJlYWQoXnsKLSAgICAgICAgICAgIHRvRG93bmxvYWQoY2xpZW50SW5mbyktPmRpZFN0YXJ0
KCk7Ci0gICAgICAgIH0pOwotICAgIH07Ci0KLSAgICBjbGllbnQud2lsbFNlbmRSZXF1ZXN0ID0g
W10oQ0ZVUkxEb3dubG9hZFJlZiwgQ0ZVUkxSZXF1ZXN0UmVmIHJlcXVlc3QsIENGVVJMUmVzcG9u
c2VSZWYsIGNvbnN0IHZvaWQqKSAtPiBDRlVSTFJlcXVlc3RSZWYgewotICAgICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8Q0ZVUkxSZXF1ZXN0UmVmPihDRlJldGFpbihyZXF1ZXN0KSk7Ci0gICAgfTsK
LQotICAgIGNsaWVudC5kaWRSZWNlaXZlUmVzcG9uc2UgPSBbXShDRlVSTERvd25sb2FkUmVmLCBD
RlVSTFJlc3BvbnNlUmVmIHJlc3BvbnNlLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKSB7Ci0gICAg
ICAgIGRpc3BhdGNoT25NYWluVGhyZWFkKF57Ci0gICAgICAgICAgICB0b0Rvd25sb2FkKGNsaWVu
dEluZm8pLT5kaWRSZWNlaXZlUmVzcG9uc2UocmVzcG9uc2UpOwotICAgICAgICB9KTsKLSAgICB9
OwotCi0gICAgY2xpZW50LmRpZFJlY2VpdmVEYXRhID0gW10oQ0ZVUkxEb3dubG9hZFJlZiwgQ0ZJ
bmRleCBsZW5ndGgsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pIHsKLSAgICAgICAgZGlzcGF0Y2hP
bk1haW5UaHJlYWQoXnsKLSAgICAgICAgICAgIHRvRG93bmxvYWQoY2xpZW50SW5mbyktPmRpZFJl
Y2VpdmVEYXRhKGxlbmd0aCk7Ci0gICAgICAgIH0pOwotICAgIH07Ci0KLSAgICBjbGllbnQuc2hv
dWxkRGVjb2RlRGF0YU9mTUlNRVR5cGUgPSBbXShDRlVSTERvd25sb2FkUmVmLCBDRlN0cmluZ1Jl
ZiBlbmNvZGluZ1R5cGUsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pIC0+IEJvb2xlYW4gewotICAg
ICAgICBfX2Jsb2NrIEJPT0wgcmV0dXJuVmFsdWUgPSBOTzsKLSAgICAgICAgZGlzcGF0Y2hPbk1h
aW5UaHJlYWQoXnsKLSAgICAgICAgICAgIHJldHVyblZhbHVlID0gdG9Eb3dubG9hZChjbGllbnRJ
bmZvKS0+c2hvdWxkRGVjb2RlU291cmNlRGF0YU9mTUlNRVR5cGUoZW5jb2RpbmdUeXBlKTsKLSAg
ICAgICAgfSk7Ci0gICAgICAgIHJldHVybiByZXR1cm5WYWx1ZTsKLSAgICB9OwotCi0gICAgY2xp
ZW50LmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZE9iamVjdE5hbWUgPSBbXShDRlVSTERv
d25sb2FkUmVmIGRvd25sb2FkUmVmLCBDRlN0cmluZ1JlZiBvYmplY3ROYW1lLCBjb25zdCB2b2lk
KiBjbGllbnRJbmZvKSB7Ci0gICAgICAgIGRpc3BhdGNoT25NYWluVGhyZWFkKF57Ci0gICAgICAg
ICAgICBib29sIGFsbG93T3ZlcndyaXRlOwotICAgICAgICAgICAgU3RyaW5nIGRlc3RpbmF0aW9u
ID0gdG9Eb3dubG9hZChjbGllbnRJbmZvKS0+ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVk
RmlsZW5hbWUob2JqZWN0TmFtZSwgYWxsb3dPdmVyd3JpdGUpOwotICAgICAgICAgICAgaWYgKCFk
ZXN0aW5hdGlvbi5pc051bGwoKSkKLSAgICAgICAgICAgICAgICBDRlVSTERvd25sb2FkU2V0RGVz
dGluYXRpb24oZG93bmxvYWRSZWYsIHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZVUkxSZWY+KFtOU1VSTCBm
aWxlVVJMV2l0aFBhdGg6ZGVzdGluYXRpb25dKSwgYWxsb3dPdmVyd3JpdGUpOwotICAgICAgICB9
KTsKLSAgICB9OwotCi0gICAgY2xpZW50LmRpZENyZWF0ZURlc3RpbmF0aW9uID0gW10oQ0ZVUkxE
b3dubG9hZFJlZiwgQ0ZVUkxSZWYgcGF0aCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykgewotICAg
ICAgICBkaXNwYXRjaE9uTWFpblRocmVhZCheewotICAgICAgICAgICAgdG9Eb3dubG9hZChjbGll
bnRJbmZvKS0+ZGlkQ3JlYXRlRGVzdGluYXRpb24oQ0ZVUkxHZXRTdHJpbmcocGF0aCkpOwotICAg
ICAgICB9KTsKLSAgICB9OwotCi0gICAgY2xpZW50LmRpZEZpbmlzaCA9IFtdKENGVVJMRG93bmxv
YWRSZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pIHsKLSAgICAgICAgZGlzcGF0Y2hPbk1haW5U
aHJlYWQoXnsKLSAgICAgICAgICAgIHRvRG93bmxvYWQoY2xpZW50SW5mbyktPmRpZEZpbmlzaCgp
OwotICAgICAgICB9KTsKLSAgICB9OwotCi0gICAgY2xpZW50LmRpZEZhaWwgPSBbXShDRlVSTERv
d25sb2FkUmVmIGRvd25sb2FkUmVmLCBDRkVycm9yUmVmIGVycm9yLCBjb25zdCB2b2lkKiBjbGll
bnRJbmZvKSB7Ci0gICAgICAgIGRpc3BhdGNoT25NYWluVGhyZWFkKF57Ci0gICAgICAgICAgICBh
dXRvIHJlc3VtZURhdGEgPSBhZG9wdENGKENGVVJMRG93bmxvYWRDb3B5UmVzdW1lRGF0YShkb3du
bG9hZFJlZikpOwotICAgICAgICAgICAgdG9Eb3dubG9hZChjbGllbnRJbmZvKS0+ZGlkRmFpbChl
cnJvciwgSVBDOjpEYXRhUmVmZXJlbmNlKHJlc3VtZURhdGEgPyBDRkRhdGFHZXRCeXRlUHRyKHJl
c3VtZURhdGEuZ2V0KCkpIDogbnVsbHB0ciwgcmVzdW1lRGF0YSA/IENGRGF0YUdldExlbmd0aChy
ZXN1bWVEYXRhLmdldCgpKSA6IDApKTsKLSAgICAgICAgfSk7Ci0gICAgfTsKLX0KLQotdm9pZCBE
b3dubG9hZDo6c3RhcnROZXR3b3JrTG9hZCgpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0K
LQotdm9pZCBEb3dubG9hZDo6cmVzdW1lKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGNvbnN0
IFN0cmluZyYsIGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYpCi17Ci0gICAgbm90SW1w
bGVtZW50ZWQoKTsKLX0KLQotdm9pZCBEb3dubG9hZDo6c3RhcnROZXR3b3JrTG9hZFdpdGhIYW5k
bGUoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9u
c2UpCi17Ci0gICAgQ0ZVUkxEb3dubG9hZENsaWVudCBjbGllbnQ7Ci0gICAgc2V0VXBEb3dubG9h
ZENsaWVudChjbGllbnQsICp0aGlzKTsKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCi0j
cHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdkZXByZWNhdGVkLWRlY2xhcmF0aW9u
cyIKLSAgICBtX2Rvd25sb2FkID0gYWRvcHRDRihDRlVSTERvd25sb2FkQ3JlYXRlQW5kU3RhcnRX
aXRoTG9hZGluZ0Nvbm5lY3Rpb24oTlVMTCwgaGFuZGxlLT5yZWxlYXNlQ29ubmVjdGlvbkZvckRv
d25sb2FkKCkuZ2V0KCksIG1fcmVxdWVzdC5jZlVSTFJlcXVlc3QoVXBkYXRlSFRUUEJvZHkpLCBy
ZXNwb25zZS5jZlVSTFJlc3BvbnNlKCksICZjbGllbnQpKTsKLSNwcmFnbWEgY2xhbmcgZGlhZ25v
c3RpYyBwb3AKLX0KLQotdm9pZCBEb3dubG9hZDo6Y2FuY2VsTmV0d29ya0xvYWQoKQotewotICAg
IG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgRG93bmxvYWQ6OnBsYXRmb3JtSW52YWxpZGF0
ZSgpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBEb3dubG9hZDo6cGxhdGZv
cm1EaWRGaW5pc2goKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYktpdAotCi0jZW5kaWYgLy8gVVNFKENGTkVUV09SSykgJiYgIVVTRShORVRXT1JLX1NF
U1NJT04pCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvbWFj
L0Rvd25sb2FkTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9j
ZXNzL0Rvd25sb2Fkcy9tYWMvRG93bmxvYWRNYWMubW0JKHJldmlzaW9uIDIwNzAzNSkKKysrIFNv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9tYWMvRG93bmxvYWRNYWMubW0J
KHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2lt
cG9ydCAiRG93bmxvYWQuaCIKIAotI2lmICFVU0UoQ0ZORVRXT1JLKSAmJiAhVVNFKE5FVFdPUktf
U0VTU0lPTikKKyNpZiAhVVNFKE5FVFdPUktfU0VTU0lPTikKIAogI2ltcG9ydCA8V2ViQ29yZS9B
dXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9BdXRoZW50aWNhdGlv
bk1hYy5oPgpAQCAtMjcyLDQgKzI3Miw0IEBAIC0gKHZvaWQpZG93bmxvYWQ6KE5TVVJMRG93bmxv
YWQgKilkb3dubG8KIAogQGVuZAogCi0jZW5kaWYgLy8gIVVTRShDRk5FVFdPUkspICYmICFVU0Uo
TkVUV09SS19TRVNTSU9OKQorI2VuZGlmIC8vICFVU0UoTkVUV09SS19TRVNTSU9OKQpJbmRleDog
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtMb2FkTWFjLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL21hYy9OZXR3b3JrTG9hZE1h
Yy5tbQkocmV2aXNpb24gMjA3MDM1KQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mv
bWFjL05ldHdvcmtMb2FkTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw3ICsyNCw2IEBACiAg
Ki8KIAogI2ltcG9ydCAiY29uZmlnLmgiCi0KICNpbXBvcnQgIk5ldHdvcmtMb2FkLmgiCiAKICNp
bXBvcnQgPFdlYkNvcmUvQ0ZOZXR3b3JrU1BJLmg+CkBAIC0zNCwxNyArMzMsNiBAQCBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLSNpZiBVU0UoQ0ZORVRX
T1JLKQotCi12b2lkIE5ldHdvcmtMb2FkOjp3aWxsQ2FjaGVSZXNwb25zZUFzeW5jKFJlc291cmNl
SGFuZGxlKiBoYW5kbGUsIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYgY2ZSZXNwb25zZSkKLXsKLSAg
ICBBU1NFUlRfVU5VU0VEKGhhbmRsZSwgaGFuZGxlID09IG1faGFuZGxlKTsKLQotICAgIG1faGFu
ZGxlLT5jb250aW51ZVdpbGxDYWNoZVJlc3BvbnNlKGNmUmVzcG9uc2UpOwotfQotCi0jZWxzZQot
CiB2b2lkIE5ldHdvcmtMb2FkOjp3aWxsQ2FjaGVSZXNwb25zZUFzeW5jKFJlc291cmNlSGFuZGxl
KiBoYW5kbGUsIE5TQ2FjaGVkVVJMUmVzcG9uc2UgKm5zUmVzcG9uc2UpCiB7CiAgICAgQVNTRVJU
X1VOVVNFRChoYW5kbGUsIGhhbmRsZSA9PSBtX2hhbmRsZSk7CkBAIC01Miw2ICs0MCw0IEBAIHZv
aWQgTmV0d29ya0xvYWQ6OndpbGxDYWNoZVJlc3BvbnNlQXN5bmMKICAgICBtX2hhbmRsZS0+Y29u
dGludWVXaWxsQ2FjaGVSZXNwb25zZShuc1Jlc3BvbnNlKTsKIH0KIAotI2VuZGlmIC8vICFVU0Uo
Q0ZORVRXT1JLKQotCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAJKHJl
dmlzaW9uIDIwNzAzNSkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA0LDcgKzEwNCw3IEBAIHZvaWQg
V2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2QKICAgICBlbmNvZGVyIDw8IHRleHRD
aGVja2VyU3RhdGU7CiAgICAgZW5jb2RlciA8PCBmdWxsS2V5Ym9hcmRBY2Nlc3NFbmFibGVkOwog
ICAgIGVuY29kZXIgPDwgZGVmYXVsdFJlcXVlc3RUaW1lb3V0SW50ZXJ2YWw7Ci0jaWYgUExBVEZP
Uk0oQ09DT0EpIHx8IFVTRShDRk5FVFdPUkspCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgZW5j
b2RlciA8PCB1aVByb2Nlc3NCdW5kbGVJZGVudGlmaWVyOwogI2VuZGlmCiAjaWYgUExBVEZPUk0o
Q09DT0EpCkBAIC0yNDAsNyArMjQwLDcgQEAgYm9vbCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzOjpkZWNvZAogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShwYXJhbWV0ZXJzLmRlZmF1bHRSZXF1ZXN0VGltZW91dEludGVydmFsKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwotI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZORVRXT1JLKQorI2lmIFBM
QVRGT1JNKENPQ09BKQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy51aVByb2Nl
c3NCdW5kbGVJZGVudGlmaWVyKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogI2VuZGlmCkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzLmgJKHJldmlzaW9uIDIwNzAzNSkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMyw3ICsxMjMs
NyBAQCBzdHJ1Y3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyB7CiAKICAgICBkb3VibGUg
ZGVmYXVsdFJlcXVlc3RUaW1lb3V0SW50ZXJ2YWw7CiAKLSNpZiBQTEFURk9STShDT0NPQSkgfHwg
VVNFKENGTkVUV09SSykKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICBTdHJpbmcgdWlQcm9jZXNz
QnVuZGxlSWRlbnRpZmllcjsKICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
QXV0aGVudGljYXRpb24vY29jb2EvQXV0aGVudGljYXRpb25NYW5hZ2VyQ29jb2EubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL2NvY29hL0F1dGhl
bnRpY2F0aW9uTWFuYWdlckNvY29hLm1tCShyZXZpc2lvbiAyMDcwMzUpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvQXV0aGVudGljYXRpb24vY29jb2EvQXV0aGVudGljYXRpb25NYW5hZ2VyQ29j
b2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTMyLDM3ICszMiwyNyBAQCBuYW1lc3BhY2UgV2ViS2l0
IHsKIAogdm9pZCBBdXRoZW50aWNhdGlvbk1hbmFnZXI6OnJlY2VpdmVkQ3JlZGVudGlhbChjb25z
dCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UsIGNvbnN0
IENyZWRlbnRpYWwmIGNyZWRlbnRpYWwpCiB7Ci0jaWYgIVVTRShDRk5FVFdPUkspCiAgICAgW2F1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLnNlbmRlcigpIHVzZUNyZWRlbnRpYWw6Y3JlZGVudGlhbC5u
c0NyZWRlbnRpYWwoKSBmb3JBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTphdXRoZW50aWNhdGlvbkNo
YWxsZW5nZS5uc1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCldOwotI2VuZGlmCiB9CiAKIHZv
aWQgQXV0aGVudGljYXRpb25NYW5hZ2VyOjpyZWNlaXZlZFJlcXVlc3RUb0NvbnRpbnVlV2l0aG91
dENyZWRlbnRpYWwoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlKQogewotI2lmICFVU0UoQ0ZORVRXT1JLKQogICAgIFthdXRoZW50aWNhdGlvbkNo
YWxsZW5nZS5zZW5kZXIoKSBjb250aW51ZVdpdGhvdXRDcmVkZW50aWFsRm9yQXV0aGVudGljYXRp
b25DaGFsbGVuZ2U6YXV0aGVudGljYXRpb25DaGFsbGVuZ2UubnNVUkxBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSgpXTsKLSNlbmRpZgogfQogCiB2b2lkIEF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6cmVj
ZWl2ZWRDYW5jZWxsYXRpb24oY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlKQogewotI2lmICFVU0UoQ0ZORVRXT1JLKQogICAgIFthdXRoZW50aWNh
dGlvbkNoYWxsZW5nZS5zZW5kZXIoKSBjYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTphdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZS5uc1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCldOwotI2Vu
ZGlmCiB9CiAKIHZvaWQgQXV0aGVudGljYXRpb25NYW5hZ2VyOjpyZWNlaXZlZFJlcXVlc3RUb1Bl
cmZvcm1EZWZhdWx0SGFuZGxpbmcoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlKQogewotI2lmICFVU0UoQ0ZORVRXT1JLKQogICAgIFthdXRoZW50
aWNhdGlvbkNoYWxsZW5nZS5zZW5kZXIoKSBwZXJmb3JtRGVmYXVsdEhhbmRsaW5nRm9yQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2U6YXV0aGVudGljYXRpb25DaGFsbGVuZ2UubnNVUkxBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSgpXTsKLSNlbmRpZgogfQogCiB2b2lkIEF1dGhlbnRpY2F0aW9uTWFuYWdl
cjo6cmVjZWl2ZWRDaGFsbGVuZ2VSZWplY3Rpb24oY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UmIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKQogewotI2lmICFVU0UoQ0ZORVRXT1JLKQogICAg
IFthdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5zZW5kZXIoKSByZWplY3RQcm90ZWN0aW9uU3BhY2VB
bmRDb250aW51ZVdpdGhDaGFsbGVuZ2U6YXV0aGVudGljYXRpb25DaGFsbGVuZ2UubnNVUkxBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSgpXTsKLSNlbmRpZgogfQogCiB9CkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvbWFjL1dlYkNvcmVBcmd1bWVudENvZGVyc01hYy5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1dlYkNvcmVBcmd1bWVudENvZGVyc01hYy5tbQko
cmV2aXNpb24gMjA3MDM1KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9XZWJDb3JlQXJn
dW1lbnRDb2RlcnNNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTM5LDEwICszOSw2IEBACiAjaW1w
b3J0IDxXZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4KICNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VS
ZXF1ZXN0Lmg+CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotI2ltcG9ydCA8Q0ZOZXR3b3JrL0NGVVJM
UmVxdWVzdC5oPgotI2VuZGlmCi0KICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VU
KQogI2ltcG9ydCA8V2ViQ29yZS9BVkZvdW5kYXRpb25TUEkuaD4KICNpbXBvcnQgPFdlYkNvcmUv
TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQuaD4KQEAgLTU3LDM2ICs1Myw2IEBAIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgSVBDIHsKIAotI2lmIFVTRShDRk5FVFdPUksp
Ci12b2lkIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VSZXF1ZXN0Pjo6ZW5jb2RlUGxhdGZvcm1EYXRh
KEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0
KQotewotICAgIFJldGFpblB0cjxDRlVSTFJlcXVlc3RSZWY+IHJlcXVlc3RUb1NlcmlhbGl6ZSA9
IHJlc291cmNlUmVxdWVzdC5jZlVSTFJlcXVlc3QoRG9Ob3RVcGRhdGVIVFRQQm9keSk7Ci0KLSAg
ICBib29sIHJlcXVlc3RJc1ByZXNlbnQgPSByZXF1ZXN0VG9TZXJpYWxpemU7Ci0gICAgZW5jb2Rl
ciA8PCByZXF1ZXN0SXNQcmVzZW50OwotCi0gICAgaWYgKCFyZXF1ZXN0SXNQcmVzZW50KQotICAg
ICAgICByZXR1cm47Ci0KLSAgICAvLyBXZSBkb24ndCBzZW5kIEhUVFAgYm9keSBvdmVyIElQQyBm
b3IgYmV0dGVyIHBlcmZvcm1hbmNlLgotICAgIC8vIEFsc28sIGl0J3Mgbm90IGFsd2F5cyBwb3Nz
aWJsZSB0byBkbywgYXMgc3RyZWFtcyBjYW4gb25seSBiZSBjcmVhdGVkIGluIHByb2Nlc3MgdGhh
dCBkb2VzIG5ldHdvcmtpbmcuCi0gICAgUmV0YWluUHRyPENGRGF0YVJlZj4gcmVxdWVzdEhUVFBC
b2R5ID0gYWRvcHRDRihDRlVSTFJlcXVlc3RDb3B5SFRUUFJlcXVlc3RCb2R5KHJlcXVlc3RUb1Nl
cmlhbGl6ZS5nZXQoKSkpOwotICAgIFJldGFpblB0cjxDRlJlYWRTdHJlYW1SZWY+IHJlcXVlc3RI
VFRQQm9keVN0cmVhbSA9IGFkb3B0Q0YoQ0ZVUkxSZXF1ZXN0Q29weUhUVFBSZXF1ZXN0Qm9keVN0
cmVhbShyZXF1ZXN0VG9TZXJpYWxpemUuZ2V0KCkpKTsKLSAgICBpZiAocmVxdWVzdEhUVFBCb2R5
IHx8IHJlcXVlc3RIVFRQQm9keVN0cmVhbSkgewotICAgICAgICBDRk11dGFibGVVUkxSZXF1ZXN0
UmVmIG11dGFibGVSZXF1ZXN0ID0gQ0ZVUkxSZXF1ZXN0Q3JlYXRlTXV0YWJsZUNvcHkoMCwgcmVx
dWVzdFRvU2VyaWFsaXplLmdldCgpKTsKLSAgICAgICAgcmVxdWVzdFRvU2VyaWFsaXplID0gYWRv
cHRDRihtdXRhYmxlUmVxdWVzdCk7Ci0gICAgICAgIENGVVJMUmVxdWVzdFNldEhUVFBSZXF1ZXN0
Qm9keShtdXRhYmxlUmVxdWVzdCwgbmlsKTsKLSAgICAgICAgQ0ZVUkxSZXF1ZXN0U2V0SFRUUFJl
cXVlc3RCb2R5U3RyZWFtKG11dGFibGVSZXF1ZXN0LCBuaWwpOwotICAgIH0KLQotICAgIFJldGFp
blB0cjxDRkRpY3Rpb25hcnlSZWY+IGRpY3Rpb25hcnkgPSBhZG9wdENGKFdLQ0ZVUkxSZXF1ZXN0
Q3JlYXRlU2VyaWFsaXphYmxlUmVwcmVzZW50YXRpb24ocmVxdWVzdFRvU2VyaWFsaXplLmdldCgp
LCBJUEM6OnRva2VuTnVsbFR5cGVSZWYoKSkpOwotICAgIElQQzo6ZW5jb2RlKGVuY29kZXIsIGRp
Y3Rpb25hcnkuZ2V0KCkpOwotCi0gICAgLy8gVGhlIGZhbGxiYWNrIGFycmF5IGlzIHBhcnQgb2Yg
Q0ZVUkxSZXF1ZXN0LCBidXQgaXQgaXMgbm90IGVuY29kZWQgYnkgV0tDRlVSTFJlcXVlc3RDcmVh
dGVTZXJpYWxpemFibGVSZXByZXNlbnRhdGlvbi4KLSAgICBlbmNvZGVyIDw8IHJlc291cmNlUmVx
dWVzdC5yZXNwb25zZUNvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheSgpOwot
ICAgIGVuY29kZXIuZW5jb2RlRW51bShyZXNvdXJjZVJlcXVlc3QucmVxdWVzdGVyKCkpOwotfQot
I2Vsc2UKIHZvaWQgQXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlcXVlc3Q+OjplbmNvZGVQbGF0Zm9y
bURhdGEoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJl
cXVlc3QpCiB7CiAgICAgUmV0YWluUHRyPE5TVVJMUmVxdWVzdD4gcmVxdWVzdFRvU2VyaWFsaXpl
ID0gcmVzb3VyY2VSZXF1ZXN0Lm5zVVJMUmVxdWVzdChEb05vdFVwZGF0ZUhUVFBCb2R5KTsKQEAg
LTExMiw3ICs3OCw2IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlcXVlc3Q+OjplbmMK
ICAgICBlbmNvZGVyIDw8IHJlc291cmNlUmVxdWVzdC5yZXNwb25zZUNvbnRlbnREaXNwb3NpdGlv
bkVuY29kaW5nRmFsbGJhY2tBcnJheSgpOwogICAgIGVuY29kZXIuZW5jb2RlRW51bShyZXNvdXJj
ZVJlcXVlc3QucmVxdWVzdGVyKCkpOwogfQotI2VuZGlmCiAKIGJvb2wgQXJndW1lbnRDb2RlcjxS
ZXNvdXJjZVJlcXVlc3Q+OjpkZWNvZGVQbGF0Zm9ybURhdGEoRGVjb2RlciYgZGVjb2RlciwgUmVz
b3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QpCiB7CkBAIC0xMjksMTkgKzk0LDExIEBAIGJv
b2wgQXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlcXVlc3Q+OjpkZWMKICAgICBpZiAoIUlQQzo6ZGVj
b2RlKGRlY29kZXIsIGRpY3Rpb25hcnkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSNpZiBV
U0UoQ0ZORVRXT1JLKQotICAgIFJldGFpblB0cjxDRlVSTFJlcXVlc3RSZWY+IGNmVVJMUmVxdWVz
dCA9IGFkb3B0Q0YoV0tDcmVhdGVDRlVSTFJlcXVlc3RGcm9tU2VyaWFsaXphYmxlUmVwcmVzZW50
YXRpb24oZGljdGlvbmFyeS5nZXQoKSwgSVBDOjp0b2tlbk51bGxUeXBlUmVmKCkpKTsKLSAgICBp
ZiAoIWNmVVJMUmVxdWVzdCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmVzb3VyY2VS
ZXF1ZXN0ID0gUmVzb3VyY2VSZXF1ZXN0KGNmVVJMUmVxdWVzdC5nZXQoKSk7Ci0jZWxzZQogICAg
IFJldGFpblB0cjxOU1VSTFJlcXVlc3Q+IG5zVVJMUmVxdWVzdCA9IFdLTlNVUkxSZXF1ZXN0RnJv
bVNlcmlhbGl6YWJsZVJlcHJlc2VudGF0aW9uKGRpY3Rpb25hcnkuZ2V0KCksIElQQzo6dG9rZW5O
dWxsVHlwZVJlZigpKTsKICAgICBpZiAoIW5zVVJMUmVxdWVzdCkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCiAgICAgcmVzb3VyY2VSZXF1ZXN0ID0gUmVzb3VyY2VSZXF1ZXN0KG5zVVJMUmVxdWVz
dC5nZXQoKSk7Ci0jZW5kaWYKICAgICAKICAgICBWZWN0b3I8U3RyaW5nPiByZXNwb25zZUNvbnRl
bnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheTsKICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKHJlc3BvbnNlQ29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5KSkKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oJKHJldmlzaW9uIDIwNzAzNSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTA1MSw3ICsxMDUxLDYgQEAKIAkJ
NUMxNDI3MDUxQzIzRjg0QzAwRDQxMTgzIC8qIERvd25sb2FkSUQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDMTQyNkY3MUMyM0Y4NDMwMEQ0MTE4MyAv
KiBEb3dubG9hZElELmggKi87IH07CiAJCTVDMTQyNzA2MUMyM0Y4NEMwMEQ0MTE4MyAvKiBEb3du
bG9hZE1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNUMxNDI2RjgxQzIzRjg0MzAwRDQxMTgzIC8qIERvd25sb2FkTWFuYWdlci5jcHAgKi87
IH07CiAJCTVDMTQyNzA3MUMyM0Y4NEMwMEQ0MTE4MyAvKiBEb3dubG9hZE1hbmFnZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDMTQyNkY5MUMyM0Y4
NDMwMEQ0MTE4MyAvKiBEb3dubG9hZE1hbmFnZXIuaCAqLzsgfTsKLQkJNUMxNDI3MTExQzIzRjg5
RTAwRDQxMTgzIC8qIERvd25sb2FkSU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNUMxNDI3MEQxQzIzRjg4NTAwRDQxMTgzIC8qIERvd25sb2FkSU9T
Lm1tICovOyB9OwogCQk1QzE0MjcxMjFDMjNGODlFMDBENDExODMgLyogRG93bmxvYWRNYWMubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzE0MjcwRjFD
MjNGODk5MDBENDExODMgLyogRG93bmxvYWRNYWMubW0gKi87IH07CiAJCTVDMTQyNzEzMUMyM0Y4
OUUwMEQ0MTE4MyAvKiBEb3dubG9hZENvY29hLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNUMxNDI3MDkxQzIzRjg2OTAwRDQxMTgzIC8qIERvd25sb2Fk
Q29jb2EubW0gKi87IH07CiAJCTVDMTQyNzE4MUMyM0Y4QjcwMEQ0MTE4MyAvKiBDdXN0b21Qcm90
b2NvbE1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDVDMTQyNzE0MUMyM0Y4QjAwMEQ0MTE4MyAvKiBDdXN0b21Qcm90b2NvbE1hbmFnZXIuaCAq
LzsgfTsKQEAgLTMxMzAsNyArMzEyOSw2IEBACiAJCTVDMTQyNkY4MUMyM0Y4NDMwMEQ0MTE4MyAv
KiBEb3dubG9hZE1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gRG93bmxvYWRNYW5hZ2VyLmNwcDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9E
b3dubG9hZE1hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzE0MjZG
OTFDMjNGODQzMDBENDExODMgLyogRG93bmxvYWRNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IERvd25sb2FkTWFuYWdlci5oOyBwYXRoID0gTmV0d29ya1Byb2Nlc3Mv
RG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1QzE0MjcwOTFDMjNGODY5MDBENDExODMgLyogRG93bmxvYWRDb2NvYS5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IERvd25sb2FkQ29jb2EubW07IHBhdGggPSBO
ZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvY29jb2EvRG93bmxvYWRDb2NvYS5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNUMxNDI3MEQxQzIzRjg4NTAwRDQxMTgzIC8qIERvd25sb2Fk
SU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gRG93bmxvYWRJ
T1MubW07IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvaW9zL0Rvd25sb2FkSU9TLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzE0MjcwRjFDMjNGODk5MDBENDExODMg
LyogRG93bmxvYWRNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUg
PSBEb3dubG9hZE1hYy5tbTsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9tYWMvRG93
bmxvYWRNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDMTQyNzE0MUMyM0Y4
QjAwMEQ0MTE4MyAvKiBDdXN0b21Qcm90b2NvbE1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmg7IHBhdGggPSBOZXR3b3JrUHJv
Y2Vzcy9DdXN0b21Qcm90b2NvbHMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTVDMTQyNzE1MUMyM0Y4QjAwMEQ0MTE4MyAvKiBDdXN0b21Qcm90
b2NvbE1hbmFnZXIubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gQ3VzdG9tUHJv
dG9jb2xNYW5hZ2VyLm1lc3NhZ2VzLmluOyBwYXRoID0gTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJv
dG9jb2xzL0N1c3RvbVByb3RvY29sTWFuYWdlci5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTU3MzgsNyArNTczNiw2IEBACiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJ
CWNoaWxkcmVuID0gKAogCQkJCTVDMTQyNzA4MUMyM0Y4NTIwMEQ0MTE4MyAvKiBjb2NvYSAqLywK
LQkJCQk1QzE0MjcwQzFDMjNGODc3MDBENDExODMgLyogaW9zICovLAogCQkJCTVDMTQyNzBCMUMy
M0Y4NzEwMEQ0MTE4MyAvKiBtYWMgKi8sCiAJCQkJODNCRkFDNDAxRDk2MTM2MDAwNDMzNDkwIC8q
IEJsb2JEb3dubG9hZENsaWVudC5oICovLAogCQkJCTgzQkZBQzQxMUQ5NjEzNjAwMDQzMzQ5MCAv
KiBCbG9iRG93bmxvYWRDbGllbnQuY3BwICovLApAQCAtNTc3OSwxNCArNTc3Niw2IEBACiAJCQlu
YW1lID0gbWFjOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKLQkJNUMxNDI3MEMx
QzIzRjg3NzAwRDQxMTgzIC8qIGlvcyAqLyA9IHsKLQkJCWlzYSA9IFBCWEdyb3VwOwotCQkJY2hp
bGRyZW4gPSAoCi0JCQkJNUMxNDI3MEQxQzIzRjg4NTAwRDQxMTgzIC8qIERvd25sb2FkSU9TLm1t
ICovLAotCQkJKTsKLQkJCW5hbWUgPSBpb3M7Ci0JCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwot
CQl9OwogCQk1QzE0MjcxQTFDMjNGOEJGMDBENDExODMgLyogQ29jb2EgKi8gPSB7CiAJCQlpc2Eg
PSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtOTA4OCw3ICs5MDc3LDYgQEAKIAkJCQk1
QzE0MjcwMTFDMjNGODRDMDBENDExODMgLyogRG93bmxvYWQuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQTFERjYzMTIxOEUwQjdDODAwM0EzRTJBIC8qIERvd25sb2FkQ2xpZW50Lm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNUMxNDI3MTMxQzIzRjg5RTAwRDQxMTgzIC8qIERvd25sb2FkQ29jb2EubW0g
aW4gU291cmNlcyAqLywKLQkJCQk1QzE0MjcxMTFDMjNGODlFMDBENDExODMgLyogRG93bmxvYWRJ
T1MubW0gaW4gU291cmNlcyAqLywKIAkJCQk1QzE0MjcxMjFDMjNGODlFMDBENDExODMgLyogRG93
bmxvYWRNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQk1QzE0MjcwNjFDMjNGODRDMDBENDExODMg
LyogRG93bmxvYWRNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBQjdENENCMTI4OEFB
QTcwMENGRDA4QyAvKiBEb3dubG9hZFByb3h5LmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cJKHJldmlzaW9uIDIwNzAzNSkKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTYtMTAtMTAgIEFsZXggQ2hyaXN0ZW5zZW4gIDxh
Y2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZW1vdmUgZGVhZCBuZXR3b3JraW5n
IGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2
MzI2MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcDoKKyAgICAgICAgKFdl
YlJlc291cmNlTG9hZFNjaGVkdWxlcjo6c2NoZWR1bGVMb2FkKToKKwogMjAxNi0xMC0wNiAgQnJl
bnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIGJ1
aWxkIGZpeCB3aGVuIGJ1aWxkaW5nIHdpdGggRGlyZWN0MkQuCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIu
Y3BwCShyZXZpc2lvbiAyMDcwMzUpCisrKyBTb3VyY2UvV2ViS2l0L1dlYkNvcmVTdXBwb3J0L1dl
YlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0OSw3ICsxNDks
NyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFNjaGVkdWxlcjo6c2NoZWR1bGVMCiAgICAgYm9vbCBo
YWRSZXF1ZXN0cyA9IGhvc3QtPmhhc1JlcXVlc3RzKCk7CiAgICAgaG9zdC0+c2NoZWR1bGUocmVz
b3VyY2VMb2FkZXIsIHByaW9yaXR5KTsKIAotI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZO
RVRXT1JLKQorI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogICAg
IGlmIChSZXNvdXJjZVJlcXVlc3Q6OnJlc291cmNlUHJpb3JpdGllc0VuYWJsZWQoKSAmJiAhaXNT
dXNwZW5kaW5nUGVuZGluZ1JlcXVlc3RzKCkpIHsKICAgICAgICAgLy8gU2VydmUgYWxsIHJlcXVl
c3RzIGF0IG9uY2UgdG8ga2VlcCB0aGUgcGlwZWxpbmUgZnVsbCBhdCB0aGUgbmV0d29yayBsYXll
ci4KICAgICAgICAgLy8gRklYTUU6IERvZXMgdGhpcyBjb2RlIGRvIGFueXRoaW5nIHVzZWZ1bCwg
Z2l2ZW4gdGhhdCB3ZSBhbHNvIHNldCBtYXhSZXF1ZXN0c0luRmxpZ2h0UGVySG9zdCB0byBlZmZl
Y3RpdmVseSB1bmxpbWl0ZWQgb24gdGhlc2UgcGxhdGZvcm1zPwpJbmRleDogU291cmNlL1dlYktp
dC9jZi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jZi9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDIwNzAzNSkKKysrIFNvdXJjZS9XZWJLaXQvY2YvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTYtMTAtMTAgIEFsZXggQ2hyaXN0ZW5zZW4gIDxh
Y2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZW1vdmUgZGVhZCBuZXR3b3JraW5n
IGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2
MzI2MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3BwOgorCiAyMDE2LTA4LTE1ICBK
b3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIHVu
dXNlZCBpbmNsdWRlcyBvZiB3dGYgaGVhZGVycwpJbmRleDogU291cmNlL1dlYktpdC9jZi9XZWJD
b3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRDRi5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9jZi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRDRi5jcHAJKHJldmlz
aW9uIDIwNzAzNSkKKysrIFNvdXJjZS9XZWJLaXQvY2YvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVj
dG9yQ2xpZW50Q0YuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw4ICsyNyw4IEBACiAvLyBiZWZv
cmUgaW5jbHVkaW5nIGFueSBvdGhlciBmaWxlcy4gRmFpbGluZyB0byBpbmNsdWRlIGNvbmZpZy5o
IHdpbGwgbGVhdmUKIC8vIFVTRV9DRiB1bmRlZmluZWQsIGNhdXNpbmcgYnVpbGQgZmFpbHVyZXMg
aW4gdGhpcwogLy8gZmlsZS4gQnV0IE1hYyBkb2Vzbid0IGhhdmUgYSBjb25maWcuaCBmb3IgV2Vi
S2l0LCBzbyB3ZSBjYW4ndCBpbmNsdWRlIHRoZQotLy8gV2luZG93cyBvbmUgaGVyZS4gRm9yIG5v
dyB3ZSBjYW4ganVzdCBkZWZpbmUgVVNFX0NGIGFuZAotLy8gVVNFX0NGTkVUV09SSyBtYW51YWxs
eSwgYnV0IHdlIG5lZWQgYSBiZXR0ZXIgbG9uZy10ZXJtIHNvbHV0aW9uLgorLy8gV2luZG93cyBv
bmUgaGVyZS4gRm9yIG5vdyB3ZSBjYW4ganVzdCBkZWZpbmUgVVNFX0NGIG1hbnVhbGx5LAorLy8g
YnV0IHdlIG5lZWQgYSBiZXR0ZXIgbG9uZy10ZXJtIHNvbHV0aW9uLgogI2lmbmRlZiBVU0VfQ0YK
ICNkZWZpbmUgVVNFX0NGIDEKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9tYWMvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24g
MjA3MDM1KQorKysgU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjEgQEAKKzIwMTYtMTAtMTAgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5z
ZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZW1vdmUgZGVhZCBuZXR3b3JraW5nIGNvZGUKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzI2MworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTWlzYy9XZWJE
b3dubG9hZC5tbToKKyAgICAgICAgKC1bV2ViRG93bmxvYWQgX2luaXRXaXRoTG9hZGluZ0NGVVJM
Q29ubmVjdGlvbjpyZXF1ZXN0OnJlc3BvbnNlOmRlbGVnYXRlOnByb3h5Ol0pOiBEZWxldGVkLgor
ICAgICAgICAqIE1pc2MvV2ViRG93bmxvYWRJbnRlcm5hbC5oOgorICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJD
bGllbnQ6OmNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZCk6CisgICAgICAgICogV2Vi
Vmlldy9XZWJQcmVmZXJlbmNlcy5tbToKKyAgICAgICAgKCtbV2ViUHJlZmVyZW5jZXMgX3NldEN1
cnJlbnROZXR3b3JrTG9hZGVyU2Vzc2lvbkNvb2tpZUFjY2VwdFBvbGljeTpdKToKKyAgICAgICAg
KiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgICgtW1dlYlZpZXcgc2NoZWR1bGVJblJ1bkxv
b3A6Zm9yTW9kZTpdKToKKyAgICAgICAgKC1bV2ViVmlldyB1bnNjaGVkdWxlRnJvbVJ1bkxvb3A6
Zm9yTW9kZTpdKToKKwogMjAxNi0xMC0xMCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+
CiAKICAgICAgICAgTW92ZSBOb3RpZmljYXRpb25DZW50ZXIgZnJvbSBsZWdhY3kgdG8gbmV3IERP
TSBleGNlcHRpb25zCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYkRvd25sb2FkLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViRG93bmxvYWQubW0JKHJl
dmlzaW9uIDIwNzAzNSkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViRG93bmxvYWQubW0J
KHdvcmtpbmcgY29weSkKQEAgLTQwLDExICs0MCw2IEBACiAKICNpbXBvcnQgIldlYlR5cGVzSW50
ZXJuYWwuaCIKIAotI2lmIFVTRShDRk5FVFdPUkspCi0jaW1wb3J0IDxDRk5ldHdvcmsvQ0ZOZXR3
b3JrLmg+Ci0jaW1wb3J0IDxDRk5ldHdvcmsvQ0ZVUkxDb25uZWN0aW9uLmg+Ci0jZW5kaWYKLQog
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIEBjbGFzcyBOU1VSTENvbm5lY3Rpb25EZWxlZ2F0
ZVByb3h5OwpAQCAtNjEsMTQgKzU2LDYgQEAgLSAoaWQpX2luaXRXaXRoUmVxdWVzdDooTlNVUkxS
ZXF1ZXN0ICopcgogICAgICAgICAgICAgICBkZWxlZ2F0ZTooaWQpZGVsZWdhdGUKICAgICAgICAg
ICAgICBkaXJlY3Rvcnk6KE5TU3RyaW5nICopZGlyZWN0b3J5OwogCi0jaWYgVVNFKENGTkVUV09S
SykKLS0gKGlkKV9pbml0V2l0aExvYWRpbmdDRlVSTENvbm5lY3Rpb246KENGVVJMQ29ubmVjdGlv
blJlZiljb25uZWN0aW9uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0OihD
RlVSTFJlcXVlc3RSZWYpcmVxdWVzdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNw
b25zZTooQ0ZVUkxSZXNwb25zZVJlZilyZXNwb25zZQotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBkZWxlZ2F0ZTooaWQpZGVsZWdhdGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcHJveHk6KE5TVVJMQ29ubmVjdGlvbkRlbGVnYXRlUHJveHkgKilwcm94eTsKLSNlbmRpZgot
CiBAZW5kCiAKIEBpbnRlcmZhY2UgV2ViRG93bmxvYWRJbnRlcm5hbCA6IE5TT2JqZWN0IDxOU1VS
TERvd25sb2FkRGVsZWdhdGU+CkBAIC0yMzEsMTggKzIxOCw2IEBAIC0gKGlkKV9pbml0V2l0aExv
YWRpbmdDb25uZWN0aW9uOihOU1VSTEMKICAgICByZXR1cm4gW3N1cGVyIF9pbml0V2l0aExvYWRp
bmdDb25uZWN0aW9uOmNvbm5lY3Rpb24gcmVxdWVzdDpyZXF1ZXN0IHJlc3BvbnNlOnJlc3BvbnNl
IGRlbGVnYXRlOl93ZWJJbnRlcm5hbCBwcm94eTpwcm94eV07CiB9CiAKLSNpZiBVU0UoQ0ZORVRX
T1JLKQotLSAoaWQpX2luaXRXaXRoTG9hZGluZ0NGVVJMQ29ubmVjdGlvbjooQ0ZVUkxDb25uZWN0
aW9uUmVmKWNvbm5lY3Rpb24KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Q6
KENGVVJMUmVxdWVzdFJlZilyZXF1ZXN0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl
c3BvbnNlOihDRlVSTFJlc3BvbnNlUmVmKXJlc3BvbnNlCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGRlbGVnYXRlOihpZClkZWxlZ2F0ZQotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBwcm94eTooTlNVUkxDb25uZWN0aW9uRGVsZWdhdGVQcm94eSAqKXByb3h5Ci17Ci0gICAg
W3NlbGYgX3NldFJlYWxEZWxlZ2F0ZTpkZWxlZ2F0ZV07Ci0gICAgcmV0dXJuIFtzdXBlciBfaW5p
dFdpdGhMb2FkaW5nQ0ZVUkxDb25uZWN0aW9uOmNvbm5lY3Rpb24gcmVxdWVzdDpyZXF1ZXN0IHJl
c3BvbnNlOnJlc3BvbnNlIGRlbGVnYXRlOl93ZWJJbnRlcm5hbCBwcm94eTpwcm94eV07Ci19Ci0j
ZW5kaWYKLQogLSAoaWQpX2luaXRXaXRoUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdAog
ICAgICAgICAgICAgICBkZWxlZ2F0ZTooaWQpZGVsZWdhdGUKICAgICAgICAgICAgICBkaXJlY3Rv
cnk6KE5TU3RyaW5nICopZGlyZWN0b3J5CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dl
YkRvd25sb2FkSW50ZXJuYWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9NaXNj
L1dlYkRvd25sb2FkSW50ZXJuYWwuaAkocmV2aXNpb24gMjA3MDM1KQorKysgU291cmNlL1dlYktp
dC9tYWMvTWlzYy9XZWJEb3dubG9hZEludGVybmFsLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDEw
ICsyNyw2IEBACiAqLwogIAogI2ltcG9ydCA8V2ViS2l0TGVnYWN5L1dlYkRvd25sb2FkLmg+Ci0K
LSNpZiBVU0UoQ0ZORVRXT1JLKQotI2ltcG9ydCA8Q0ZOZXR3b3JrL0NGVVJMQ29ubmVjdGlvbi5o
PgotI2VuZGlmCiAgCiBAaW50ZXJmYWNlIFdlYkRvd25sb2FkIChXZWJEb3dubG9hZENyZWF0aW9u
KQogKyhpZClfZG93bmxvYWRXaXRoTG9hZGluZ0Nvbm5lY3Rpb246KE5TVVJMQ29ubmVjdGlvbiAq
KWNvbm5lY3Rpb24KQEAgLTQzLDEyICszOSw0IEBAIEBpbnRlcmZhY2UgV2ViRG93bmxvYWQgKFdl
YkRvd25sb2FkQ3JlYXQKICAgICAgICAgICAgICAgICAgZGVsZWdhdGU6KGlkKWRlbGVnYXRlCiAg
ICAgICAgICAgICAgICAgZGlyZWN0b3J5OihOU1N0cmluZyAqKWRpcmVjdG9yeTsKIAotI2lmIFVT
RShDRk5FVFdPUkspCi0rIChpZClfZG93bmxvYWRXaXRoTG9hZGluZ0NGVVJMQ29ubmVjdGlvbjoo
Q0ZVUkxDb25uZWN0aW9uUmVmKWNvbm5lY3Rpb24KLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXF1ZXN0OihDRlVSTFJlcXVlc3RSZWYpcmVxdWVzdAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmVzcG9uc2U6KENGVVJMUmVzcG9uc2VSZWYpcmVzcG9uc2UKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGVnYXRlOihpZClkZWxlZ2F0ZQotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJveHk6KGlkKXByb3h5OwotI2VuZGlm
Ci0KIEBlbmQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCShyZXZpc2lvbiAyMDcwMzUpCisrKyBTb3Vy
Y2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQkod29y
a2luZyBjb3B5KQpAQCAtMzA0LDEzICszMDQsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50
Ojpjb252ZXJ0TWFpblJlCiAKICAgICBSZXNvdXJjZUhhbmRsZSogaGFuZGxlID0gbWFpblJlc291
cmNlTG9hZGVyLT5oYW5kbGUoKTsKIAotI2lmIFVTRShDRk5FVFdPUkspCi0gICAgQVNTRVJUKFtX
ZWJEb3dubG9hZCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF9kb3dubG9hZFdpdGhMb2Fk
aW5nQ0ZVUkxDb25uZWN0aW9uOnJlcXVlc3Q6cmVzcG9uc2U6ZGVsZWdhdGU6cHJveHk6KV0pOwot
ICAgIGF1dG8gY29ubmVjdGlvbiA9IGhhbmRsZS0+cmVsZWFzZUNvbm5lY3Rpb25Gb3JEb3dubG9h
ZCgpOwotICAgIFtXZWJEb3dubG9hZCBfZG93bmxvYWRXaXRoTG9hZGluZ0NGVVJMQ29ubmVjdGlv
bjpjb25uZWN0aW9uLmdldCgpIHJlcXVlc3Q6cmVxdWVzdC5jZlVSTFJlcXVlc3QoVXBkYXRlSFRU
UEJvZHkpIHJlc3BvbnNlOnJlc3BvbnNlLmNmVVJMUmVzcG9uc2UoKSBkZWxlZ2F0ZTpbd2ViVmll
dyBkb3dubG9hZERlbGVnYXRlXSBwcm94eTpuaWxdOwotI2Vsc2UKICAgICBbV2ViRG93bmxvYWQg
X2Rvd25sb2FkV2l0aExvYWRpbmdDb25uZWN0aW9uOmhhbmRsZS0+Y29ubmVjdGlvbigpIHJlcXVl
c3Q6cmVxdWVzdC5uc1VSTFJlcXVlc3QoVXBkYXRlSFRUUEJvZHkpIHJlc3BvbnNlOnJlc3BvbnNl
Lm5zVVJMUmVzcG9uc2UoKSBkZWxlZ2F0ZTpbd2ViVmlldyBkb3dubG9hZERlbGVnYXRlXSBwcm94
eTpuaWxdOwotI2VuZGlmCiB9CiAKIGJvb2wgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNo
RGlkTG9hZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVz
cG9uc2UsIGludCBsZW5ndGgpCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlBy
ZWZlcmVuY2VzLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
UHJlZmVyZW5jZXMubW0JKHJldmlzaW9uIDIwNzAzNSkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViUHJlZmVyZW5jZXMubW0JKHdvcmtpbmcgY29weSkKQEAgLTE4MDAsNyArMTgwMCw3
IEBAICsgKHZvaWQpX2NsZWFyTmV0d29ya0xvYWRlclNlc3Npb24KICsgKHZvaWQpX3NldEN1cnJl
bnROZXR3b3JrTG9hZGVyU2Vzc2lvbkNvb2tpZUFjY2VwdFBvbGljeTooTlNIVFRQQ29va2llQWNj
ZXB0UG9saWN5KXBvbGljeQogewogICAgIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVm
PiBjb29raWVTdG9yYWdlID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNl
c3Npb24oKS5jb29raWVTdG9yYWdlKCk7Ci0gICAgQVNTRVJUKGNvb2tpZVN0b3JhZ2UpOyAvLyBX
aWxsIGZhaWwgd2hlbiBidWlsZGluZyB3aXRob3V0IFVTRShDRk5FVFdPUkspIGFuZCBOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OnN3aXRjaFRvTmV3VGVzdGluZ1Nlc3Npb24oKSB3YXMgbm90IGNhbGxl
ZCBiZWZvcmVoYW5kLgorICAgIEFTU0VSVChjb29raWVTdG9yYWdlKTsgLy8gV2lsbCBmYWlsIHdo
ZW4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzd2l0Y2hUb05ld1Rlc3RpbmdTZXNzaW9uKCkgd2Fz
IG5vdCBjYWxsZWQgYmVmb3JlaGFuZC4KICAgICBDRkhUVFBDb29raWVTdG9yYWdlU2V0Q29va2ll
QWNjZXB0UG9saWN5KGNvb2tpZVN0b3JhZ2UuZ2V0KCksIHBvbGljeSk7CiB9CiAKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHJldmlzaW9uIDIwNzAzNSkKKysrIFNvdXJj
ZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtNjc3OSwy
NCArNjc3OSwxNCBAQCAtIChpZCljYW5kaWRhdGVMaXN0CiAKIC0gKHZvaWQpc2NoZWR1bGVJblJ1
bkxvb3A6KE5TUnVuTG9vcCAqKXJ1bkxvb3AgZm9yTW9kZTooTlNTdHJpbmcgKiltb2RlCiB7Ci0j
aWYgVVNFKENGTkVUV09SSykKLSAgICBDRlJ1bkxvb3BSZWYgc2NoZWR1bGVQYWlyUnVuTG9vcCA9
IFtydW5Mb29wIGdldENGUnVuTG9vcF07Ci0jZWxzZQotICAgIE5TUnVuTG9vcCAqc2NoZWR1bGVQ
YWlyUnVuTG9vcCA9IHJ1bkxvb3A7Ci0jZW5kaWYKICAgICBpZiAocnVuTG9vcCAmJiBtb2RlKQot
ICAgICAgICBjb3JlKHNlbGYpLT5hZGRTY2hlZHVsZVBhaXIoU2NoZWR1bGVQYWlyOjpjcmVhdGUo
c2NoZWR1bGVQYWlyUnVuTG9vcCwgKENGU3RyaW5nUmVmKW1vZGUpKTsKKyAgICAgICAgY29yZShz
ZWxmKS0+YWRkU2NoZWR1bGVQYWlyKFNjaGVkdWxlUGFpcjo6Y3JlYXRlKHJ1bkxvb3AsIChDRlN0
cmluZ1JlZiltb2RlKSk7CiB9CiAKIC0gKHZvaWQpdW5zY2hlZHVsZUZyb21SdW5Mb29wOihOU1J1
bkxvb3AgKilydW5Mb29wIGZvck1vZGU6KE5TU3RyaW5nICopbW9kZQogewotI2lmIFVTRShDRk5F
VFdPUkspCi0gICAgQ0ZSdW5Mb29wUmVmIHNjaGVkdWxlUGFpclJ1bkxvb3AgPSBbcnVuTG9vcCBn
ZXRDRlJ1bkxvb3BdOwotI2Vsc2UKLSAgICBOU1J1bkxvb3AgKnNjaGVkdWxlUGFpclJ1bkxvb3Ag
PSBydW5Mb29wOwotI2VuZGlmCiAgICAgaWYgKHJ1bkxvb3AgJiYgbW9kZSkKLSAgICAgICAgY29y
ZShzZWxmKS0+cmVtb3ZlU2NoZWR1bGVQYWlyKFNjaGVkdWxlUGFpcjo6Y3JlYXRlKHNjaGVkdWxl
UGFpclJ1bkxvb3AsIChDRlN0cmluZ1JlZiltb2RlKSk7CisgICAgICAgIGNvcmUoc2VsZiktPnJl
bW92ZVNjaGVkdWxlUGFpcihTY2hlZHVsZVBhaXI6OmNyZWF0ZShydW5Mb29wLCAoQ0ZTdHJpbmdS
ZWYpbW9kZSkpOwogfQogCiBzdGF0aWMgQk9PTCBmaW5kU3RyaW5nKE5TVmlldyA8V2ViRG9jdW1l
bnRTZWFyY2hpbmc+ICpzZWFyY2hWaWV3LCBOU1N0cmluZyAqc3RyaW5nLCBXZWJGaW5kT3B0aW9u
cyBvcHRpb25zKQpJbmRleDogU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwkocmV2aXNpb24gMjA3MDM1KQorKysgU291
cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzYgQEAK
KzIwMTYtMTAtMTAgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4K
KworICAgICAgICBSZW1vdmUgZGVhZCBuZXR3b3JraW5nIGNvZGUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzI2MworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogRGVmYXVsdERvd25sb2FkRGVsZWdhdGUu
aDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6Cisg
ICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6c2F2ZVBsYXRmb3JtRGF0YVRvQ2FjaGVkRnJh
bWUpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQu
Y3BwOgorICAgICAgICAoV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlUHJpdmF0ZUJy
b3dzaW5nU2Vzc2lvbik6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVOZXR3b3Jr
aW5nQ29udGV4dC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRl
Z2llcy5jcHA6CisgICAgICAgICogV2ViRG93bmxvYWQuaDoKKyAgICAgICAgKiBXZWJFcnJvci5j
cHA6CisgICAgICAgIChXZWJFcnJvcjo6bG9jYWxpemVkRGVzY3JpcHRpb24pOgorICAgICAgICAo
V2ViRXJyb3I6OnNzbFBlZXJDZXJ0aWZpY2F0ZSk6CisgICAgICAgICogV2ViRXJyb3IuaDoKKyAg
ICAgICAgKiBXZWJNdXRhYmxlVVJMUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJNdXRhYmxlVVJM
UmVxdWVzdDo6bXV0YWJsZUNvcHkpOgorICAgICAgICAqIFdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlLmNwcDoKKyAgICAgICAgKFdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjppbml0
V2l0aFByb3RlY3Rpb25TcGFjZSk6CisgICAgICAgIChXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZTo6aW5pdFdpdGhBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6CisgICAgICAgICogV2ViVVJM
UmVzcG9uc2UuY3BwOgorICAgICAgICAoV2ViVVJMUmVzcG9uc2U6OnNzbFBlZXJDZXJ0aWZpY2F0
ZSk6CisgICAgICAgICogV2ViVVJMUmVzcG9uc2UuaDoKKyAgICAgICAgKiBXZWJWaWV3LmNwcDoK
KyAgICAgICAgKFdlYlZpZXc6OnNldENhY2hlTW9kZWwpOgorICAgICAgICAoV2ViVmlldzo6Y2Fu
SGFuZGxlUmVxdWVzdCk6CisgICAgICAgIChXZWJWaWV3Ojpub3RpZnlQcmVmZXJlbmNlc0NoYW5n
ZWQpOgorICAgICAgICAodXBkYXRlU2hhcmVkU2V0dGluZ3NGcm9tUHJlZmVyZW5jZXNJZk5lZWRl
ZCk6CisKIDIwMTYtMTAtMDkgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+
CiAKICAgICAgICAgU3VwcG9ydCBJbnB1dEV2ZW50LmlucHV0VHlwZSBmb3IgdGhlIG5ldyBJbnB1
dEV2ZW50IHNwZWMKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL0RlZmF1bHREb3dubG9hZERlbGVn
YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vRGVmYXVsdERvd25sb2FkRGVs
ZWdhdGUuaAkocmV2aXNpb24gMjA3MDM1KQorKysgU291cmNlL1dlYktpdC93aW4vRGVmYXVsdERv
d25sb2FkRGVsZWdhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNyBAQAogI2luY2x1
ZGUgIldlYktpdC5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAKLSNpZiBVU0UoQ0ZORVRX
T1JLKQorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAjaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGVVJM
RG93bmxvYWRQcml2Lmg+CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViRG93
bmxvYWQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJEb3dubG9hZC5oCShy
ZXZpc2lvbiAyMDcwMzUpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJEb3dubG9hZC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMywxNSArMjMsMTQgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICovCiAKLSNp
Zm5kZWYgV2ViRG93bmxvYWRfaAotI2RlZmluZSBXZWJEb3dubG9hZF9oCisjcHJhZ21hIG9uY2UK
IAogI2luY2x1ZGUgIldlYktpdC5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ09NUHRyLmg+CiAjaW5j
bHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgog
Ci0jaWYgVVNFKENGTkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogI2luY2x1ZGUg
PENGTmV0d29yay9DRlVSTERvd25sb2FkUHJpdi5oPgogI2VsaWYgVVNFKENVUkwpCiAjaW5jbHVk
ZSA8V2ViQ29yZS9DdXJsRG93bmxvYWQuaD4KQEAgLTg0LDcgKzgzLDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBjb250aW51ZVdpdGhvdXRDcmVkZW50
aWFsRm9yQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoX0luX29wdF8gSVdlYlVSTEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlKik7CiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHVz
ZUNyZWRlbnRpYWwoX0luX29wdF8gSVdlYlVSTENyZWRlbnRpYWwqLCBfSW5fb3B0XyBJV2ViVVJM
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UqKTsKIAotI2lmIFVTRShDRk5FVFdPUkspCisjaWYgVVNF
KENGVVJMQ09OTkVDVElPTikKICAgICAvLyBDRlVSTERvd25sb2FkIENhbGxiYWNrcwogICAgIHZv
aWQgZGlkU3RhcnQoKTsKICAgICBDRlVSTFJlcXVlc3RSZWYgd2lsbFNlbmRSZXF1ZXN0KENGVVJM
UmVxdWVzdFJlZiwgQ0ZVUkxSZXNwb25zZVJlZik7CkBAIC0xMDksNyArMTA4LDcgQEAgcHJvdGVj
dGVkOgogCiAgICAgV1RGOjpTdHJpbmcgbV9kZXN0aW5hdGlvbjsKICAgICBXVEY6OlN0cmluZyBt
X2J1bmRsZVBhdGg7Ci0jaWYgVVNFKENGTkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9O
KQogICAgIFJldGFpblB0cjxDRlVSTERvd25sb2FkUmVmPiBtX2Rvd25sb2FkOwogI2VsaWYgVVNF
KENVUkwpCiAgICAgUmVmUHRyPFdlYkNvcmU6OkN1cmxEb3dubG9hZD4gbV9kb3dubG9hZDsKQEAg
LTEyMyw2ICsxMjIsMyBAQCBwcm90ZWN0ZWQ6CiAgICAgaW50IG1fcmVjZWl2ZWQ7CiAjZW5kaWYK
IH07Ci0KLQotI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJFcnJvci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViRXJyb3IuY3BwCShyZXZpc2lvbiAyMDcw
MzUpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJFcnJvci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTMzLDcgKzMzLDcgQEAKICNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ29yZUdyYXBoaWNzLmg+CiAj
ZW5kaWYKIAotI2lmIFVTRShDRk5FVFdPUkspCisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKICNp
bmNsdWRlIDxXZWJLaXRTeXN0ZW1JbnRlcmZhY2UvV2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+CiAj
ZW5kaWYKIApAQCAtMTM1LDcgKzEzNSw3IEBAIEhSRVNVTFQgV2ViRXJyb3I6OmxvY2FsaXplZERl
c2NyaXB0aW9uKF8KIAogICAgICpyZXN1bHQgPSBCU3RyaW5nKG1fZXJyb3IubG9jYWxpemVkRGVz
Y3JpcHRpb24oKSkucmVsZWFzZSgpOwogCi0jaWYgVVNFKENGTkVUV09SSykKKyNpZiBVU0UoQ0ZV
UkxDT05ORUNUSU9OKQogICAgIGlmICghKnJlc3VsdCkgewogICAgICAgICBpZiAoaW50IGNvZGUg
PSBtX2Vycm9yLmVycm9yQ29kZSgpKQogICAgICAgICAgICAgKnJlc3VsdCA9IEJTdHJpbmcod2tD
Rk5ldHdvcmtFcnJvckdldExvY2FsaXplZERlc2NyaXB0aW9uKGNvZGUpKS5yZWxlYXNlKCk7CkBA
IC0yMTksNyArMjE5LDcgQEAgSFJFU1VMVCBXZWJFcnJvcjo6c3NsUGVlckNlcnRpZmljYXRlKF9P
dQogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwogICAgICpyZXN1bHQgPSAwOwogCi0jaWYgVVNF
KENGTkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogICAgIGlmICghbV9jZkVycm9y
VXNlckluZm9EaWN0KSB7CiAgICAgICAgIC8vIGNvcHkgdXNlcmluZm8gZnJvbSBDRkVycm9yUmVm
CiAgICAgICAgIENGRXJyb3JSZWYgY2ZFcnJvciA9IG1fZXJyb3I7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L3dpbi9XZWJFcnJvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYkVy
cm9yLmgJKHJldmlzaW9uIDIwNzAzNSkKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYkVycm9yLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTIzLDggKzIzLDcgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICovCiAK
LSNpZm5kZWYgV2ViRXJyb3JfaAotI2RlZmluZSBXZWJFcnJvcl9oCisjcHJhZ21hIG9uY2UKIAog
I2luY2x1ZGUgIldlYktpdC5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ09NUHRyLmg+CkBAIC02Niwx
MCArNjUsOCBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFVMT05HIG1fcmVmQ291bnQgeyAwIH07
CiAgICAgQ09NUHRyPElQcm9wZXJ0eUJhZz4gbV91c2VySW5mbzsKLSNpZiBVU0UoQ0ZORVRXT1JL
KQorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAgICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJl
Zj4gbV9jZkVycm9yVXNlckluZm9EaWN0OwogI2VuZGlmCiAgICAgV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciBtX2Vycm9yOwogfTsKLQotI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJN
dXRhYmxlVVJMUmVxdWVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vV2Vi
TXV0YWJsZVVSTFJlcXVlc3QuY3BwCShyZXZpc2lvbiAyMDcwMzUpCisrKyBTb3VyY2UvV2ViS2l0
L3dpbi9XZWJNdXRhYmxlVVJMUmVxdWVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQw
LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0NlcnRpZmljYXRlQ0ZXaW4uaD4KICNlbmRpZgogCi0j
aWYgVVNFKENGTkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogI2luY2x1ZGUgPENG
TmV0d29yay9DRlVSTFJlcXVlc3RQcml2Lmg+CiAjZW5kaWYKIApAQCAtMzgyLDcgKzM4Miw3IEBA
IEhSRVNVTFQgV2ViTXV0YWJsZVVSTFJlcXVlc3Q6Om11dGFibGVDb3AKICAgICBpZiAoIXJlc3Vs
dCkKICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKIAotI2lmIFVTRShDRk5FVFdPUkspCisjaWYg
VVNFKENGVVJMQ09OTkVDVElPTikKICAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlVVJMUmVxdWVzdFJl
Zj4gbXV0YWJsZVJlcXVlc3QgPSBhZG9wdENGKENGVVJMUmVxdWVzdENyZWF0ZU11dGFibGVDb3B5
KGtDRkFsbG9jYXRvckRlZmF1bHQsIG1fcmVxdWVzdC5jZlVSTFJlcXVlc3QoVXBkYXRlSFRUUEJv
ZHkpKSk7CiAgICAgKnJlc3VsdCA9IGNyZWF0ZUluc3RhbmNlKFJlc291cmNlUmVxdWVzdChtdXRh
YmxlUmVxdWVzdC5nZXQoKSkpOwogICAgIHJldHVybiBTX09LOwpJbmRleDogU291cmNlL1dlYktp
dC93aW4vV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvd2luL1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmNwcAkocmV2aXNp
b24gMjA3MDM1KQorKysgU291cmNlL1dlYktpdC93aW4vV2ViVVJMQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDEsNyArMTQxLDcgQEAgSFJFU1VMVCBXZWJV
UkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTo6aQogCiAgICAgLy8gRklYTUU6IEFmdGVyIHdlIGNo
YW5nZSBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSB0byB1c2UgIlJlc291cmNlSGFuZGxlIiBhcyB0
aGUgYWJzdHJhY3QgIlNlbmRlciIgb3IgIlNvdXJjZSBvZiB0aGlzIEF1dGggQ2hhbGxlbmdlIiwg
dGhlbiB3ZSdsbAogICAgIC8vIGNvbnN0cnVjdCB0aGUgQXV0aGVudGljYXRpb25DaGFsbGVuZ2Ug
d2l0aCB0aGF0IGFzIG9idGFpbmVkIGZyb20gdGhlIHdlYlNlbmRlcgotI2lmIFVTRShDRk5FVFdP
UkspCisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKICAgICBtX2F1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlID0gQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uod2ViU3BhY2UtPnByb3RlY3Rpb25TcGFjZSgp
LCB3ZWJDcmVkZW50aWFsLT5jcmVkZW50aWFsKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBwcmV2aW91c0ZhaWx1cmVDb3VudCwgd2ViUmVzcG9uc2UtPnJlc291cmNlUmVz
cG9uc2UoKSwgd2ViRXJyb3ItPnJlc291cmNlRXJyb3IoKSk7CiAjZW5kaWYKQEAgLTE2Miw3ICsx
NjIsNyBAQCBIUkVTVUxUIFdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjppCiAgICAgaWYg
KCF3ZWJTZW5kZXIpCiAgICAgICAgIHJldHVybiBFX05PSU5URVJGQUNFOwogCi0jaWYgVVNFKENG
TkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogICAgIG1fYXV0aGVudGljYXRpb25D
aGFsbGVuZ2UgPSBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSh3ZWJDaGFsbGVuZ2UtPmF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlKCkuY2ZVUkxBdXRoQ2hhbGxlbmdlUmVmKCksIHdlYlNlbmRlci0+YXV0
aGVudGljYXRpb25DbGllbnQoKSk7CiAKICAgICByZXR1cm4gU19PSzsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvd2luL1dlYlVSTFJlc3BvbnNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L3dpbi9XZWJVUkxSZXNwb25zZS5jcHAJKHJldmlzaW9uIDIwNzAzNSkKKysrIFNvdXJjZS9XZWJL
aXQvd2luL1dlYlVSTFJlc3BvbnNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBA
QAogI2luY2x1ZGUgPENvcmVHcmFwaGljcy9Db3JlR3JhcGhpY3MuaD4KICNlbmRpZgogCi0jaWYg
VVNFKENGTkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogI2luY2x1ZGUgPFdlYktp
dFN5c3RlbUludGVyZmFjZS9XZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaD4KICNlbmRpZgogCkBAIC00
MDYsNyArNDA2LDcgQEAgSFJFU1VMVCBXZWJVUkxSZXNwb25zZTo6c3NsUGVlckNlcnRpZmljYQog
ICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwogICAgICpyZXN1bHQgPSAwOwogCi0jaWYgVVNFKENG
TkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogICAgIENGRGljdGlvbmFyeVJlZiBk
aWN0ID0gY2VydGlmaWNhdGVEaWN0aW9uYXJ5KCk7CiAgICAgaWYgKCFkaWN0KQogICAgICAgICBy
ZXR1cm4gRV9GQUlMOwpAQCAtNDc1LDcgKzQ3NSw3IEBAIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IFdlYlVSTFJlc3BvbnNlOjoKICAgICByZXR1cm4gbV9yZXNwb25zZTsKIH0KIAotI2lmIFVTRShD
Rk5FVFdPUkspCisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKIENGRGljdGlvbmFyeVJlZiBXZWJV
UkxSZXNwb25zZTo6Y2VydGlmaWNhdGVEaWN0aW9uYXJ5KCkgY29uc3QKIHsKICAgICBpZiAobV9T
U0xDZXJ0aWZpY2F0ZUluZm8pCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJVUkxSZXNwb25z
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYlVSTFJlc3BvbnNlLmgJKHJl
dmlzaW9uIDIwNzAzNSkKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYlVSTFJlc3BvbnNlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTIzLDggKzIzLDcgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICovCiAKLSNp
Zm5kZWYgV2ViVVJMUmVzcG9uc2VfSAotI2RlZmluZSBXZWJVUkxSZXNwb25zZV9ICisjcHJhZ21h
IG9uY2UKIAogI2luY2x1ZGUgIldlYktpdC5oIgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VS
ZXNwb25zZS5oPgpAQCAtNjYsNyArNjUsNyBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgSFJF
U1VMVCBzdWdnZXN0ZWRGaWxlRXh0ZW5zaW9uKEJTVFIqIHJlc3VsdCk7CiAKLSNpZiBVU0UoQ0ZO
RVRXT1JLKQorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAgICAgQ0ZEaWN0aW9uYXJ5UmVmIGNl
cnRpZmljYXRlRGljdGlvbmFyeSgpIGNvbnN0OwogI2VuZGlmCiAKQEAgLTc0LDkgKzczLDcgQEAg
cHJvdGVjdGVkOgogICAgIFVMT05HIG1fcmVmQ291bnQgeyAwIH07CiAgICAgV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSBtX3Jlc3BvbnNlOwogCi0jaWYgVVNFKENGTkVUV09SSykKKyNpZiBVU0Uo
Q0ZVUkxDT05ORUNUSU9OKQogICAgIG11dGFibGUgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4g
bV9TU0xDZXJ0aWZpY2F0ZUluZm87ICAgIC8vIHRoaXMgZW5zdXJlcyBjZXJ0aWZpY2F0ZSBjb250
ZXh0cyBhcmUgdmFsaWQgZm9yIHRoZSBsaWZldGltZSBvZiB0aGlzIFdlYlVSTFJlc3BvbnNlLgog
I2VuZGlmCiB9OwotCi0jZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCShyZXZpc2lvbiAy
MDcwMzUpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTc4LDcgKzE3OCw3IEBACiAjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRp
b24uaD4KICNlbmRpZgogCi0jaWYgVVNFKENGTkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNU
SU9OKQogI2luY2x1ZGUgPENGTmV0d29yay9DRlVSTENhY2hlUHJpdi5oPgogI2luY2x1ZGUgPENG
TmV0d29yay9DRlVSTFByb3RvY29sUHJpdi5oPgogI2luY2x1ZGUgPFdlYktpdFN5c3RlbUludGVy
ZmFjZS9XZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaD4KQEAgLTQ5Nyw3ICs0OTcsNyBAQCB2b2lkIFdl
YlZpZXc6OnNldENhY2hlTW9kZWwoV2ViQ2FjaGVNb2RlCiAKICAgICBTdHJpbmcgY2FjaGVEaXJl
Y3Rvcnk7CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAg
ICAgUmV0YWluUHRyPENGVVJMQ2FjaGVSZWY+IGNmdXJsQ2FjaGUgPSBhZG9wdENGKENGVVJMQ2Fj
aGVDb3B5U2hhcmVkVVJMQ2FjaGUoKSk7CiAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjZnVy
bENhY2hlRGlyZWN0b3J5ID0gYWRvcHRDRih3a0NvcHlGb3VuZGF0aW9uQ2FjaGVEaXJlY3Rvcnko
MCkpOwogICAgIGlmICghY2Z1cmxDYWNoZURpcmVjdG9yeSkgewpAQCAtNTUxLDcgKzU1MSw3IEBA
IHZvaWQgV2ViVmlldzo6c2V0Q2FjaGVNb2RlbChXZWJDYWNoZU1vZGUKICAgICAgICAgLy8gTWVt
b3J5IGNhY2hlIGNhcGFjaXR5IChpbiBieXRlcykKICAgICAgICAgY2FjaGVNZW1vcnlDYXBhY2l0
eSA9IDA7CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAg
ICAgICAgIC8vIEZvdW5kYXRpb24gZGlzayBjYWNoZSBjYXBhY2l0eSAoaW4gYnl0ZXMpCiAgICAg
ICAgIGNhY2hlRGlza0NhcGFjaXR5ID0gQ0ZVUkxDYWNoZURpc2tDYXBhY2l0eShjZnVybENhY2hl
LmdldCgpKTsKICNlbmRpZgpAQCAtNjc1LDcgKzY3NSw3IEBAIHZvaWQgV2ViVmlldzo6c2V0Q2Fj
aGVNb2RlbChXZWJDYWNoZU1vZGUKICAgICBtZW1vcnlDYWNoZS5zZXREZWFkRGVjb2RlZERhdGFE
ZWxldGlvbkludGVydmFsKGRlYWREZWNvZGVkRGF0YURlbGV0aW9uSW50ZXJ2YWwpOwogICAgIFBh
Z2VDYWNoZTo6c2luZ2xldG9uKCkuc2V0TWF4U2l6ZShwYWdlQ2FjaGVTaXplKTsKIAotI2lmIFVT
RShDRk5FVFdPUkspCisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKICAgICAvLyBEb24ndCBzaHJp
bmsgYSBiaWcgZGlzayBjYWNoZSwgc2luY2UgdGhhdCB3b3VsZCBjYXVzZSBjaHVybi4KICAgICBj
YWNoZURpc2tDYXBhY2l0eSA9IG1heChjYWNoZURpc2tDYXBhY2l0eSwgQ0ZVUkxDYWNoZURpc2tD
YXBhY2l0eShjZnVybENhY2hlLmdldCgpKSk7CiAKQEAgLTE1NDcsNyArMTU0Nyw3IEBAIHZvaWQg
V2ViVmlldzo6Y2xvc2VXaW5kb3coKQogCiBib29sIFdlYlZpZXc6OmNhbkhhbmRsZVJlcXVlc3Qo
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewotI2lmIFVTRShDRk5F
VFdPUkspCisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKICAgICAvLyBPbiB0aGUgTWFjIHRoZXJl
J3MgYW4gYWJvdXQgVVJMIHByb3RvY29sIGltcGxlbWVudGF0aW9uIGJ1dCBXaW5kb3dzIENGTmV0
d29yayBkb2Vzbid0IGhhdmUgdGhhdC4KICAgICBpZiAocmVxdWVzdC51cmwoKS5wcm90b2NvbElz
KCJhYm91dCIpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTUyNjEsNyArNTI2MSw3IEBAIEhS
RVNVTFQgV2ViVmlldzo6bm90aWZ5UHJlZmVyZW5jZXNDaGFuZ2UKICAgICBociA9IHByZWZlcmVu
Y2VzLT5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCZlbmFibGVkKTsKICAgICBpZiAoRkFJTEVEKGhy
KSkKICAgICAgICAgcmV0dXJuIGhyOwotI2lmIFBMQVRGT1JNKFdJTikgfHwgVVNFKENGTkVUV09S
SykKKyNpZiBQTEFURk9STShXSU4pIHx8IFVTRShDRlVSTENPTk5FQ1RJT04pCiAgICAgaWYgKGVu
YWJsZWQpCiAgICAgICAgIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVByaXZhdGVC
cm93c2luZ1Nlc3Npb24oKTsKICAgICBlbHNlCkBAIC01NTYwLDcgKzU1NjAsNyBAQCBIUkVTVUxU
IHVwZGF0ZVNoYXJlZFNldHRpbmdzRnJvbVByZWZlcmVuCiAgICAgaWYgKEZBSUxFRChocikpCiAg
ICAgICAgIHJldHVybiBocjsKIAotI2lmIFVTRShDRk5FVFdPUkspCisjaWYgVVNFKENGVVJMQ09O
TkVDVElPTikKICAgICBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpzZXRDb29raWVBY2NlcHRQ
b2xpY3lGb3JBbGxDb250ZXh0cyhhY2NlcHRQb2xpY3kpOwogI2VuZGlmCiAKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5jcHAJKHJldmlzaW9uIDIwNzAzNSkKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTc0
LDcgKzk3NCw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNldFRpdGxlKGNvbnMKIAog
dm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6c2F2ZVBsYXRmb3JtRGF0YVRvQ2FjaGVkRnJhbWUo
Q2FjaGVkRnJhbWUqIGNhY2hlZEZyYW1lKQogewotI2lmIFVTRShDRk5FVFdPUkspCisjaWYgVVNF
KENGVVJMQ09OTkVDVElPTikKICAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZShtX3dlYkZyYW1l
KTsKICAgICBpZiAoIWNvcmVGcmFtZSkKICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL1dl
YktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVOZXR3
b3JraW5nQ29udGV4dC5jcHAJKHJldmlzaW9uIDIwNzAzNSkKKysrIFNvdXJjZS9XZWJLaXQvd2lu
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zNCw3ICszNCw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9TZXR0aW5ncy5oPgogI2lu
Y2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCi0jaWYgVVNFKENGTkVUV09SSykKKyNpZiBV
U0UoQ0ZVUkxDT05ORUNUSU9OKQogI2luY2x1ZGUgPENGTmV0d29yay9DRkhUVFBDb29raWVzUHJp
di5oPgogI2luY2x1ZGUgPFdlYktpdFN5c3RlbUludGVyZmFjZS9XZWJLaXRTeXN0ZW1JbnRlcmZh
Y2UuaD4KICNlbmRpZgpAQCAtNDcsNyArNDcsNyBAQCBzdGF0aWMgU3RyaW5nJiBpZGVudGlmaWVy
QmFzZSgpCiAgICAgcmV0dXJuIGJhc2U7CiB9CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQorI2lmIFVT
RShDRlVSTENPTk5FQ1RJT04pCiB2b2lkIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OnNldENv
b2tpZUFjY2VwdFBvbGljeUZvckFsbENvbnRleHRzKFdlYktpdENvb2tpZVN0b3JhZ2VBY2NlcHRQ
b2xpY3kgcG9saWN5KQogewogICAgIGlmIChSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJl
Zj4gY29va2llU3RvcmFnZSA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VT
ZXNzaW9uKCkuY29va2llU3RvcmFnZSgpKQpAQCAtNjcsNyArNjcsNyBAQCB2b2lkIFdlYkZyYW1l
TmV0d29ya2luZ0NvbnRleHQ6OnNldFByaXZhCiAKIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgV2Vi
RnJhbWVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpCiB7
Ci0jaWYgVVNFKENGTkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CiAKICAgICBpZiAoYXV0byBwcml2YXRlU2Vzc2lvbiA9IE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oU2Vzc2lvbklEOjpsZWdhY3lQcml2YXRl
U2Vzc2lvbklEKCkpKQpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVOZXR3b3JraW5nQ29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2lu
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaAkocmV2aXNpb24gMjA3
MDM1KQorKysgU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVOZXR3b3Jr
aW5nQ29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMiw4ICsyMiw3IEBACiAgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KLSNpZm5kZWYg
V2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dF9oCi0jZGVmaW5lIFdlYkZyYW1lTmV0d29ya2luZ0Nv
bnRleHRfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lTmV0d29ya2lu
Z0NvbnRleHQuaD4KIApAQCAtMzQsNyArMzMsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dChmcmFtZSkpOwogICAgIH0KIAot
I2lmIFVTRShDRk5FVFdPUkspCisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKICAgICBzdGF0aWMg
dm9pZCBzZXRDb29raWVBY2NlcHRQb2xpY3lGb3JBbGxDb250ZXh0cyhXZWJLaXRDb29raWVTdG9y
YWdlQWNjZXB0UG9saWN5KTsKICNlbmRpZgogICAgIHN0YXRpYyB2b2lkIHNldFByaXZhdGVCcm93
c2luZ1N0b3JhZ2VTZXNzaW9uSWRlbnRpZmllckJhc2UoY29uc3QgU3RyaW5nJik7CkBAIC01MCw1
ICs0OSwzIEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBibG9ja2VkRXJy
b3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JikgY29uc3Qgb3ZlcnJpZGU7CiAgICAg
V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzdG9yYWdlU2Vzc2lvbigpIGNvbnN0IG92
ZXJyaWRlOwogfTsKLQotI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3Vw
cG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAJKHJldmlzaW9u
IDIwNzAzNSkKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3Jt
U3RyYXRlZ2llcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDcgQEAKICNpbmNsdWRl
IDxXZWJDb3JlL1BhZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VHcm91cC5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvUGxhdGZvcm1Db29raWVKYXIuaD4KLSNpZiBVU0UoQ0ZORVRXT1JLKQorI2lm
IFVTRShDRlVSTENPTk5FQ1RJT04pCiAjaW5jbHVkZSA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlL1dl
YktpdFN5c3RlbUludGVyZmFjZS5oPgogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9jbWFrZS9PcHRp
b25zQXBwbGVXaW4uY21ha2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL2NtYWtlL09wdGlvbnNBcHBs
ZVdpbi5jbWFrZQkocmV2aXNpb24gMjA3MDM1KQorKysgU291cmNlL2NtYWtlL09wdGlvbnNBcHBs
ZVdpbi5jbWFrZQkod29ya2luZyBjb3B5KQpAQCAtMiw3ICsyLDcgQEAgaW5jbHVkZShPcHRpb25z
V2luKQogCiBzZXQoVVNFX0NHIDEpCiBzZXQoVVNFX0NBIDEpCi1zZXQoVVNFX0NGTkVUV09SSyAx
KQorc2V0KFVTRV9DRlVSTENPTk5FQ1RJT04gMSkKIHNldChVU0VfSUNVX1VOSUNPREUgMSkKIAog
IyBVbmNvbW1lbnQgdGhlIGZvbGxvd2luZyBsaW5lIHRvIHRyeSB0aGUgRGlyZWN0MkQgYmFja2Vu
ZC4KSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDIwNzAzNikKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDE1IEBACisyMDE2LTEwLTEwICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2Vu
QHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVtb3ZlIGRlYWQgbmV0d29ya2luZyBjb2RlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjMyNjMKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIER1bXBSZW5kZXJU
cmVlL0R1bXBSZW5kZXJUcmVlLmg6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY29uZmlnLmg6
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNwcDoKKyAgICAg
ICAgKG1haW4pOgorCiAyMDE2LTEwLTEwICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Vi
a2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjA2OTcyLgpJbmRl
eDogVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5oCShyZXZpc2lvbiAyMDcwMzUpCisr
KyBUb29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yNiwxMyArMjYsNyBAQAogICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIER1bXBSZW5kZXJU
cmVlX2gKLSNkZWZpbmUgRHVtcFJlbmRlclRyZWVfaAotCi0vLyBGSVhNRTogUmVtb3ZlIHRoaXMg
d2hlbiBhbGwgcGxhdGZvcm1zIGFyZSB1c2luZyBjb25maWcuaAotI2lmbmRlZiBDb25maWdfSAot
I2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgotI2VuZGlmCisjcHJhZ21hIG9uY2UKIAogI2lmIFBM
QVRGT1JNKENPQ09BKQogI2luY2x1ZGUgIkR1bXBSZW5kZXJUcmVlTWFjLmgiCkBAIC00NSw2ICsz
OSw3IEBACiAjZW5kaWYKIAogI2luY2x1ZGUgPHN0cmluZz4KKyNpbmNsdWRlIDx3dGYvUGxhdGZv
cm0uaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKICNpZiAhT1MoT1BFTkJTRCkKSW5kZXg6
IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2NvbmZpZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL2NvbmZpZy5oCShyZXZpc2lvbiAyMDcwMzUpCisrKyBUb29scy9EdW1wUmVuZGVy
VHJlZS9jb25maWcuaAkod29ya2luZyBjb3B5KQpAQCAtMTgsNyArMTgsNyBAQAogICoKICAqLwog
Ci0jZGVmaW5lIENvbmZpZ19ICisjcHJhZ21hIG9uY2UKIAogI2lmIGRlZmluZWQoSEFWRV9DT05G
SUdfSCkgJiYgSEFWRV9DT05GSUdfSCAmJiBkZWZpbmVkKEJVSUxESU5HX1dJVEhfQ01BS0UpCiAj
aW5jbHVkZSAiY21ha2Vjb25maWcuaCIKQEAgLTQ0LDcgKzQ0LDcgQEAKICNkZWZpbmUgVVNFX0NV
UkwgMQogI2Vsc2UKICNkZWZpbmUgVVNFX0NHIDEKLSNkZWZpbmUgVVNFX0NGTkVUV09SSyAxCisj
ZGVmaW5lIFVTRV9DRlVSTENPTk5FQ1RJT04gMQogI2VuZGlmCiAKICN1bmRlZiBfV0lOMzJfV0lO
TlQKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNwcAko
cmV2aXNpb24gMjA3MDM1KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJU
cmVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjEsNyArNjEsNyBAQAogI2luY2x1ZGUgPFdlYktp
dC9XZWJLaXQuaD4KICNpbmNsdWRlIDxXZWJLaXQvV2ViS2l0Q09NQVBJLmg+CiAKLSNpZiBVU0Uo
Q0ZORVRXT1JLKQorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAjaW5jbHVkZSA8Q0ZOZXR3b3Jr
L0NGSFRUUENvb2tpZXNQcml2Lmg+CiAjaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGVVJMQ2FjaGVQcml2
Lmg+CiAjZW5kaWYKQEAgLTEyODcsNyArMTI4Nyw3IEBAIElXZWJWaWV3KiBjcmVhdGVXZWJWaWV3
QW5kT2Zmc2NyZWVuV2luZG8KICAgICByZXR1cm4gd2ViVmlldzsKIH0KIAotI2lmIFVTRShDRk5F
VFdPUkspCisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKIFJldGFpblB0cjxDRlVSTENhY2hlUmVm
PiBzaGFyZWRDRlVSTENhY2hlKCkKIHsKICNpZm5kZWYgREVCVUdfQUxMCkBAIC0xNDY1LDcgKzE0
NjUsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY29uc3QgY2hhciogYXJndltdKQogICAgIGlmIChG
QUlMRUQod2ViVmlldy0+bWFpbkZyYW1lKCZmcmFtZSkpKQogICAgICAgICByZXR1cm4gLTc7CiAK
LSNpZiBVU0UoQ0ZORVRXT1JLKQorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAgICAgUmV0YWlu
UHRyPENGVVJMQ2FjaGVSZWY+IHVybENhY2hlID0gc2hhcmVkQ0ZVUkxDYWNoZSgpOwogICAgIENG
VVJMQ2FjaGVSZW1vdmVBbGxDYWNoZWRSZXNwb25zZXModXJsQ2FjaGUuZ2V0KCkpOwogI2VuZGlm
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>291210</attachid>
            <date>2016-10-10 19:24:09 -0700</date>
            <delta_ts>2016-10-10 19:34:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-163263-20161010192048.patch</filename>
            <type>text/plain</type>
            <size>200932</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDIwNzAz
NSkKKysrIENoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDE2LTEw
LTEwICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgUmVtb3ZlIGRlYWQgbmV0d29ya2luZyBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjMyNjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFNvdXJjZS9jbWFrZS9PcHRpb25zQXBwbGVXaW4uY21h
a2U6CisKIDIwMTYtMTAtMTAgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3Jn
PgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyMDY5NzIuCkluZGV4OiBTb3Vy
Y2UvV1RGL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL0NoYW5nZUxvZwkocmV2
aXNpb24gMjA3MDM1KQorKysgU291cmNlL1dURi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwxNCBAQAorMjAxNi0xMC0xMCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNl
bkB3ZWJraXQub3JnPgorCisgICAgICAgIFJlbW92ZSBkZWFkIG5ldHdvcmtpbmcgY29kZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzMjYzCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvUGxhdGZv
cm0uaDoKKyAgICAgICAgKiB3dGYvU2NoZWR1bGVQYWlyLmg6CisgICAgICAgICogd3RmL1NjaGVk
dWxlUGFpck1hYy5tbToKKwogMjAxNi0xMC0xMCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVh
QGdtYWlsLmNvbT4KIAogICAgICAgICBbRE9NSklUXSBJbXBsZW1lbnQgTm9kZSBhY2Nlc3NvcnMg
aW4gRE9NSklUCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgJKHJldmlzaW9uIDIwNzAzNSkKKysrIFNvdXJjZS9X
VEYvd3RmL1BsYXRmb3JtLmgJKHdvcmtpbmcgY29weSkKQEAgLTU1OSwxMCArNTU5LDYgQEAKIAog
I2lmIFBMQVRGT1JNKElPUykKIAotI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspICYmIF9fSVBI
T05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTAwMDAwCi0jZGVmaW5lIFVTRV9DRk5FVFdP
UksgMQotI2VuZGlmCi0KICNkZWZpbmUgSEFWRV9ORVRXT1JLX0VYVEVOU0lPTiAxCiAjZGVmaW5l
IEhBVkVfUkVBRExJTkUgMQogI2RlZmluZSBVU0VfVUlLSVRfRURJVElORyAxCkBAIC01OTIsMTAg
KzU4OCwxMCBAQAogI2VuZGlmCiAKICNpZiBQTEFURk9STShXSU4pICYmICFVU0UoV0lOR0RJKSAm
JiAhUExBVEZPUk0oV0lOX0NBSVJPKQotI2RlZmluZSBVU0VfQ0ZORVRXT1JLIDEKKyNkZWZpbmUg
VVNFX0NGVVJMQ09OTkVDVElPTiAxCiAjZW5kaWYKIAotI2lmIFVTRShDRk5FVFdPUkspIHx8IFBM
QVRGT1JNKENPQ09BKQorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pIHx8IFBMQVRGT1JNKENPQ09B
KQogI2RlZmluZSBVU0VfQ0ZVUkxDQUNIRSAxCiAjZW5kaWYKIApAQCAtOTUxLDkgKzk0Nyw2IEBA
CiAjZGVmaW5lIFVTRV9QUk9URUNUSU9OX1NQQUNFX0FVVEhfQ0FMTEJBQ0sgMQogI2VuZGlmCiAK
LS8qIFNldCB1cCBhIGRlZmluZSBmb3IgYSBjb21tb24gZXJyb3IgdGhhdCBpcyBpbnRlbmRlZCB0
byBjYXVzZSBhIGJ1aWxkIGVycm9yIC0tIHRodXMgdGhlIHNwYWNlIGFmdGVyIEVycm9yLiAqLwot
I2RlZmluZSBXVEZfUExBVEZPUk1fQ0ZORVRXT1JLIEVycm9yIFVTRV9tYWNyb19zaG91bGRfYmVf
dXNlZF93aXRoX0NGTkVUV09SSwotCiAjaWYgUExBVEZPUk0oQ09DT0EpICYmIEhBVkUoQUNDRVNT
SUJJTElUWSkKICNkZWZpbmUgVVNFX0FDQ0VTU0lCSUxJVFlfQ09OVEVYVF9NRU5VUyAxCiAjZW5k
aWYKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1NjaGVkdWxlUGFpci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XVEYvd3RmL1NjaGVkdWxlUGFpci5oCShyZXZpc2lvbiAyMDcwMzUpCisrKyBTb3VyY2Uv
V1RGL3d0Zi9TY2hlZHVsZVBhaXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQAog
I2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KIAotI2lmIFBMQVRGT1JNKENPQ09BKSAmJiAhVVNFKENGTkVUV09SSykKKyNpZiBQ
TEFURk9STShDT0NPQSkKIE9CSkNfQ0xBU1MgTlNSdW5Mb29wOwogI2VuZGlmCiAKQEAgLTQ1LDcg
KzQ1LDcgQEAgY2xhc3MgU2NoZWR1bGVQYWlyIDogcHVibGljIFRocmVhZFNhZmVSZQogcHVibGlj
OgogICAgIHN0YXRpYyBSZWY8U2NoZWR1bGVQYWlyPiBjcmVhdGUoQ0ZSdW5Mb29wUmVmIHJ1bkxv
b3AsIENGU3RyaW5nUmVmIG1vZGUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2NoZWR1bGVQYWly
KHJ1bkxvb3AsIG1vZGUpKTsgfQogCi0jaWYgUExBVEZPUk0oQ09DT0EpICYmICFVU0UoQ0ZORVRX
T1JLKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHN0YXRpYyBSZWY8U2NoZWR1bGVQYWlyPiBj
cmVhdGUoTlNSdW5Mb29wKiBydW5Mb29wLCBDRlN0cmluZ1JlZiBtb2RlKSB7IHJldHVybiBhZG9w
dFJlZigqbmV3IFNjaGVkdWxlUGFpcihydW5Mb29wLCBtb2RlKSk7IH0KICAgICBOU1J1bkxvb3Aq
IG5zUnVuTG9vcCgpIGNvbnN0IHsgcmV0dXJuIG1fbnNSdW5Mb29wLmdldCgpOyB9CiAjZW5kaWYK
QEAgLTYzLDcgKzYzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIG1fbW9kZSA9IGFkb3B0Q0Yo
Q0ZTdHJpbmdDcmVhdGVDb3B5KDAsIG1vZGUpKTsKICAgICB9CiAKLSNpZiBQTEFURk9STShDT0NP
QSkgJiYgIVVTRShDRk5FVFdPUkspCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgV1RGX0VYUE9S
VF9QUklWQVRFIFNjaGVkdWxlUGFpcihOU1J1bkxvb3AqLCBDRlN0cmluZ1JlZik7CiAgICAgUmV0
YWluUHRyPE5TUnVuTG9vcCo+IG1fbnNSdW5Mb29wOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV1RG
L3d0Zi9TY2hlZHVsZVBhaXJNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvU2No
ZWR1bGVQYWlyTWFjLm1tCShyZXZpc2lvbiAyMDcwMzUpCisrKyBTb3VyY2UvV1RGL3d0Zi9TY2hl
ZHVsZVBhaXJNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTI5LDggKzI5LDYgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJTY2hlZHVsZVBhaXIuaCIKIAotI2lmICFVU0UoQ0ZORVRX
T1JLKQotCiBuYW1lc3BhY2UgV1RGIHsKIAogU2NoZWR1bGVQYWlyOjpTY2hlZHVsZVBhaXIoTlNS
dW5Mb29wKiBydW5Mb29wLCBDRlN0cmluZ1JlZiBtb2RlKQpAQCAtNDIsNSArNDAsMyBAQCBTY2hl
ZHVsZVBhaXI6OlNjaGVkdWxlUGFpcihOU1J1bkxvb3AqIHJ1CiB9CiAKIH0gLy8gbmFtZXNwYWNl
Ci0KLSNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjA3MDM1KQorKysgU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTY3IEBACisyMDE2LTEw
LTEwICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgUmVtb3ZlIGRlYWQgbmV0d29ya2luZyBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjMyNjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUaGVyZSBhcmUgbm8gbW9yZSBDb2NvYSBwbGF0Zm9ybXMg
dXNpbmcgQ0ZVUkxDb25uZWN0aW9uLgorICAgICAgICBVU0UoQ0ZORVRXT1JLKSBpcyBiZWluZyBy
ZXBsYWNlZCBieSBVU0UoQ0ZVUkxDT05ORUNUSU9OKSBhbmQgaXQgaXMgb25seSB1c2VkIG9uIHRo
ZSBBcHBsZVdpbiBwb3J0LgorCisgICAgICAgIE5vIGNoYW5nZSBpbiBiZWhhdmlvci4KKworICAg
ICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJD
b3JlUHJlZml4Lmg6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmg6CisgICAgICAg
ICogbG9hZGVyL0VtcHR5Q2xpZW50cy5oOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlckNs
aWVudC5oOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
KToKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIv
U3VicmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvY2YvUmVzb3VyY2VMb2FkZXJD
Rk5ldC5jcHA6CisgICAgICAgICogbG9hZGVyL2NvY29hL1N1YnJlc291cmNlTG9hZGVyQ29jb2Eu
bW06CisgICAgICAgIChXZWJDb3JlOjpTdWJyZXNvdXJjZUxvYWRlcjo6d2lsbENhY2hlUmVzcG9u
c2UpOiBEZWxldGVkLgorICAgICAgICAqIGxvYWRlci9tYWMvRG9jdW1lbnRMb2FkZXJNYWMuY3Bw
OgorICAgICAgICAqIGxvYWRlci9tYWMvUmVzb3VyY2VMb2FkZXJNYWMubW06CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6d2lsbENhY2hlUmVzcG9uc2UpOiBEZWxldGVkLgorICAg
ICAgICAqIHBhZ2UvbWFjL1BhZ2VNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpwbGF0
Zm9ybUluaXRpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6YWRkU2NoZWR1bGVQYWly
KToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnJlbW92ZVNjaGVkdWxlUGFpcik6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakM6OnNob3VsZFdhaXRGb3JSZXNwb25zZVRvQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29yZU5TVVJMQXV0aGVudGljYXRpb25D
aGFsbGVuZ2VDbGllbnQ6OmNyZWF0ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXZWJD
b3JlTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUNsaWVudDo6V2ViQ29yZU5TVVJMQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2VDbGllbnQpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL21h
Yy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9O
ZXR3b3JrU3RvcmFnZVNlc3Npb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Byb3Rl
Y3Rpb25TcGFjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUHJvdGVjdGlvblNwYWNl
QmFzZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5jcHA6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlSGFuZGxlQ2xpZW50Ojp3aWxsQ2FjaGVSZXNwb25zZSk6CisgICAgICAgIChXZWJD
b3JlOjpSZXNvdXJjZUhhbmRsZUNsaWVudDo6c2hvdWxkQ2FjaGVSZXNwb25zZSk6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmg6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUludGVybmFsOjpSZXNvdXJjZUhhbmRsZUludGVybmFsKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvQXV0aGVudGljYXRpb25DRi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTo6QXV0aGVudGljYXRpb25DaGFsbGVu
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQ0YpOgorICAgICAgICAoV2ViQ29yZTo6Y29y
ZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9BdXRoZW50aWNhdGlvbkNGLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvQ29va2llSmFyQ0ZOZXQuY3BwOgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvQ3JlZGVudGlhbFN0b3JhZ2VDRk5ldC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDcmVkZW50aWFsU3RvcmFnZTo6Z2V0RnJvbVBlcnNpc3RlbnRTdG9yYWdl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNyZWRlbnRpYWxTdG9yYWdlOjpzYXZlVG9QZXJzaXN0ZW50
U3RvcmFnZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9Mb2FkZXJS
dW5Mb29wQ0YuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvTG9hZGVyUnVuTG9v
cENGLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Np
b25DRk5ldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNv
b2tpZVN0b3JhZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvUHJvdGVjdGlvblNw
YWNlQ0ZOZXQuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvUHJvdGVjdGlvblNw
YWNlQ0ZOZXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3Iu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHA6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnNob3VsZFNuaWZmQ29ubmVjdGlvblByb3BlcnR5KToKKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpjcmVhdGVDRlVSTENvbm5lY3Rpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OnN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlJl
c291cmNlSGFuZGxlOjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OnRyeUhhbmRsZVBhc3N3b3JkQmFzZWRBdXRoZW50
aWNhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRDcmVk
ZW50aWFsKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpzY2hlZHVsZSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6dW5zY2hlZHVsZSk6IERl
bGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJM
Q29ubmVjdGlvbkRlbGVnYXRlLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jl
c291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3Bl
cmF0aW9uUXVldWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDRlVSTENv
bm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZTo6c2V0dXBSZXF1ZXN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3Bl
cmF0aW9uUXVldWU6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlOjpjYW5S
ZXNwb25kVG9Qcm90ZWN0aW9uU3BhY2UpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2Yv
UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5o
OgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Lmg6CisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q6OmVuY29kaW5nUmVxdWlyZXNQbGF0Zm9ybURh
dGEpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6ZmluZENGVVJMUmVxdWVzdENvcHlDb250ZW50RGlzcG9z
aXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXlGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUGxhdGZvcm1SZXF1ZXN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVQbGF0Zm9ybUhUVFBCb2R5KToKKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVSZXNvdXJjZVJlcXVlc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0OjpzZXRTdG9yYWdlU2Vzc2lvbik6CisgICAg
ICAgIChXZWJDb3JlOjpmaW5kQ0ZVUkxSZXF1ZXN0U2V0Q29udGVudERpc3Bvc2l0aW9uRW5jb2Rp
bmdGYWxsYmFja0FycmF5RnVuY3Rpb24pOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL2NmL1Jlc291cmNlUmVzcG9uc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2U6OlJlc291cmNlUmVzcG9uc2UpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2Yv
UmVzb3VyY2VSZXNwb25zZUNGTmV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2U6OmNmVVJMUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZTo6cGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm8pOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
Y2YvU3luY2hyb25vdXNMb2FkZXJDbGllbnRDRk5ldC5jcHA6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9jZi9TeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdh
dGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJM
Q29ubmVjdGlvbkRlbGVnYXRlOjpzZXR1cFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3lu
Y2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlOjpzZXR1cENvbm5l
Y3Rpb25TY2hlZHVsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OmFkanVzdE1JTUVUeXBlSWZOZWNl
c3NhcnkpOgorICAgICAgICAoV2ViQ29yZTo6U3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJM
Q29ubmVjdGlvbkRlbGVnYXRlOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29y
ZTo6U3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlOjp3aWxs
Q2FjaGVSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpTeW5jaHJvbm91c1Jlc291cmNlSGFu
ZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OmNhblJlc3BvbmRUb1Byb3RlY3Rpb25TcGFjZSk6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9TeW5jaHJvbm91c1Jlc291cmNlSGFuZGxl
Q0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2Nv
Y29hL0NyZWRlbnRpYWxDb2NvYS5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2Ev
Q3JlZGVudGlhbENvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6Q3JlZGVudGlhbDo6Q3JlZGVu
dGlhbCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDcmVkZW50aWFsOjpjZkNyZWRlbnRp
YWwpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvUHJvdGVjdGlv
blNwYWNlQ29jb2EuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Byb3RlY3Rp
b25TcGFjZUNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6UHJvdGVjdGlvblNwYWNlOjpQcm90
ZWN0aW9uU3BhY2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UHJvdGVjdGlvblNwYWNl
OjpjZlNwYWNlKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jl
c291cmNlUmVxdWVzdENvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
Ojpuc1VSTFJlcXVlc3QpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3Vy
Y2VSZXNwb25zZUNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZTo6
cGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm8pOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZTo6bnNVUkxSZXNwb25zZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlOjpSZXNvdXJjZVJlc3BvbnNlKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL2lvcy9RdWlja0xvb2suaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2lv
cy9RdWlja0xvb2subW06CisgICAgICAgICgtW1dlYlF1aWNrTG9va0hhbmRsZUFzRGVsZWdhdGUg
aW5pdFdpdGhDb25uZWN0aW9uRGVsZWdhdGU6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYlF1
aWNrTG9va0hhbmRsZUFzRGVsZWdhdGUgY29ubmVjdGlvbjpkaWRSZWNlaXZlRGF0YUFycmF5Ol0p
OiBEZWxldGVkLgorICAgICAgICAoLVtXZWJRdWlja0xvb2tIYW5kbGVBc0RlbGVnYXRlIGNvbm5l
Y3Rpb246ZGlkUmVjZWl2ZURhdGE6bGVuZ3RoUmVjZWl2ZWQ6XSk6IERlbGV0ZWQuCisgICAgICAg
ICgtW1dlYlF1aWNrTG9va0hhbmRsZUFzRGVsZWdhdGUgY29ubmVjdGlvbkRpZEZpbmlzaExvYWRp
bmc6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYlF1aWNrTG9va0hhbmRsZUFzRGVsZWdhdGUg
Y29ubmVjdGlvbjpkaWRGYWlsV2l0aEVycm9yOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtXZWJR
dWlja0xvb2tIYW5kbGVBc0RlbGVnYXRlIGRldGFjaEhhbmRsZV0pOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6UXVpY2tMb29rSGFuZGxlOjpjcmVhdGUpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6UXVpY2tMb29rSGFuZGxlOjpjZlJlc3BvbnNlKTogRGVsZXRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL2lvcy9SZXNvdXJjZUhhbmRsZUlPUy5tbTogUmVtb3ZlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2lvcy9SZXNvdXJjZVJlcXVlc3RJT1MubW06IFJlbW92
ZWQuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvQXV0aGVudGljYXRpb25NYWMubW06
CisgICAgICAgICgtW1dlYkNvcmVBdXRoZW50aWNhdGlvbkNsaWVudEFzQ2hhbGxlbmdlU2VuZGVy
IHNldENGQ2hhbGxlbmdlOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtXZWJDb3JlQXV0aGVudGlj
YXRpb25DbGllbnRBc0NoYWxsZW5nZVNlbmRlciBjZkNoYWxsZW5nZV0pOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6Y29yZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjptYWMpOiBE
ZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL0Nvb2tpZUphck1hYy5tbToK
KyAgICAgICAgKFdlYkNvcmU6OnNldENvb2tpZXNGcm9tRE9NKToKKyAgICAgICAgKFdlYkNvcmU6
OmNvb2tpZVN0b3JhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6YWRkQ29va2llKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9DcmVkZW50aWFsU3RvcmFnZU1hYy5tbToKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9Gb3JtRGF0YVN0cmVhbU1hYy5oOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvbWFjL0Zvcm1EYXRhU3RyZWFtTWFjLm1tOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvbWFjL1Jlc291cmNlRXJyb3JNYWMubW06CisgICAgICAgIChOU0Vycm9yRnJv
bUNGRXJyb3IpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VFcnJvcjo6UmVz
b3VyY2VFcnJvcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUVycm9yOjpu
c0Vycm9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlRXJyb3I6Om9wZXJh
dG9yIE5TRXJyb3IgKik6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMv
UmVzb3VyY2VIYW5kbGVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6
Y29udGludWVXaWxsQ2FjaGVSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhh
bmRsZTo6Z2V0Q29ubmVjdGlvblRpbWluZ0RhdGEpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvbWFjL1Jlc291cmNlUmVxdWVzdE1hYy5tbTogUmVtb3ZlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9TeW5jaHJvbm91c0xvYWRlckNsaWVudC5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OlN5bmNocm9ub3VzTG9hZGVyQ2xpZW50OjpwbGF0Zm9ybUJhZFJlc3BvbnNl
RXJyb3IpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhh
bmRsZUFzRGVsZWdhdGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3Jl
UmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlLm1tOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
bWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5oOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0
aW9uUXVldWVEZWxlZ2F0ZS5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJD
b3JlVVJMUmVzcG9uc2UubW06CisgICAgICAgIChXZWJDb3JlOjpzeW50aGVzaXplUmVkaXJlY3RS
ZXNwb25zZUlmTmVjZXNzYXJ5KToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vVGVtcG9yYXJ5TGlu
a1N0dWJzLmNwcDoKKyAgICAgICAgKiB0ZXN0aW5nL2pzL1dlYkNvcmVUZXN0U3VwcG9ydFByZWZp
eC5oOgorCiAyMDE2LTEwLTEwICBOYW4gV2FuZyAgPG5fd2FuZ0BhcHBsZS5jb20+CiAKICAgICAg
ICAgQVg6IEV4cG9zZSBpbnZhbGlkIHN0YXR1cyBmb3IgaW5wdXQgdHlwZXMgd2l0aCB0aGF0IGlu
Zm9ybWF0aW9uCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlUHJlZml4LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZVByZWZpeC5oCShyZXZpc2lvbiAyMDcwMzUpCisr
KyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlUHJlZml4LmgJKHdvcmtpbmcgY29weSkKQEAgLTE4LDcg
KzE4LDkgQEAKICAqCiAgKi8KIAotLyogVGhpcyBwcmVmaXggZmlsZSBzaG91bGQgY29udGFpbiBv
bmx5OiAKKyNwcmFnbWEgb25jZQorCisvKiBUaGlzIHByZWZpeCBmaWxlIHNob3VsZCBjb250YWlu
IG9ubHk6CiAgKiAgICAxKSBmaWxlcyB0byBwcmVjb21waWxlIGZvciBmYXN0ZXIgYnVpbGRzCiAg
KiAgICAyKSBpbiBvbmUgY2FzZSBhdCBsZWFzdDogT1MtWC1zcGVjaWZpYyBwZXJmb3JtYW5jZSBi
dWcgd29ya2Fyb3VuZHMKICAqICAgIDMpIHRoZSBzcGVjaWFsIHRyaWNrIHRvIGNhdGNoIHVzIHVz
aW5nIG5ldyBvciBkZWxldGUgd2l0aG91dCBpbmNsdWRpbmcgImNvbmZpZy5oIgpAQCAtMTMzLDgg
KzEzNSw4IEBACiAjZWxzZQogCiAjaWYgT1MoV0lORE9XUykKLSNpZiBVU0UoQ0cpCiAKKyNpZiBV
U0UoQ0cpCiAvLyBGSVhNRSA8cmRhcjovL3Byb2JsZW0vODIwODg2OD4gUmVtb3ZlIHN1cHBvcnQg
Zm9yIG9ic29sZXRlIENvbG9yU3luYyBBUEksIENvcmVTZXJ2aWNlcyBoZWFkZXIgaW4gQ29yZUdy
YXBoaWNzCiAvLyBXZSBjYW4gcmVtb3ZlIHRoaXMgb25jZSB0aGUgbmV3IENvbG9yU3luYyBBUElz
IGFyZSBhdmFpbGFibGUgaW4gYW4gaW50ZXJuYWwgU2FmYXJpIFNESy4KICNpbmNsdWRlIDxDb2xv
clN5bmMvQ29sb3JTeW5jLmg+CkBAIC0xNDMsMTkgKzE0NSwyMSBAQAogI2RlZmluZSBPQlNPTEVU
RV9DT0xPUlNZTkNfQVBJCiAjZW5kaWYKICNlbmRpZgotI2lmIFVTRShDRk5FVFdPUkspCi0vKiBX
aW5kb3dzIGRvZXNuJ3QgaW5jbHVkZSBDRk5ldHdvcmsuaCB2aWEgQ29yZVNlcnZpY2VzLmgsIHNv
IHdlIGRvCi0gICBpdCBleHBsaWNpdGx5IGhlcmUgdG8gbWFrZSBXaW5kb3dzIG1vcmUgY29uc2lz
dGVudCB3aXRoIE1hYy4gKi8KKworI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAjaW5jbHVkZSA8
Q0ZOZXR3b3JrL0NGTmV0d29yay5oPgogLy8gT24gV2luZG93cywgZGlzcGF0Y2guaCBuZWVkcyB0
byBiZSBpbmNsdWRlZCBiZWZvcmUgY2VydGFpbiBDRk5ldHdvcmsgaGVhZGVycy4KICNpbmNsdWRl
IDxkaXNwYXRjaC9kaXNwYXRjaC5oPgogI2VuZGlmCisKICNpbmNsdWRlIDx3aW5kb3dzLmg+Ci0j
ZWxzZQotI2lmICFQTEFURk9STShJT1MpCisKKyNlbGlmICFQTEFURk9STShJT1MpCisKICNpbmNs
dWRlIDxDb3JlU2VydmljZXMvQ29yZVNlcnZpY2VzLmg+Ci0jZW5kaWYgLy8gIVBMQVRGT1JNKElP
UykKLSNlbmRpZiAvLyBPUyhXSU5ET1dTKQorCisjZW5kaWYKKwogCiAjZW5kaWYKIApJbmRleDog
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
cmV2aXNpb24gMjA3MDM1KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yMDIxLDcgKzIwMjEsNiBAQAogCQk1MTRD
NzY0RjBDRTkyMzRFMDA3RUYzQ0QgLyogRm9ybURhdGFTdHJlYW1NYWMubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTRDNzY0NTBDRTkyMzRFMDA3RUYz
Q0QgLyogRm9ybURhdGFTdHJlYW1NYWMubW0gKi87IH07CiAJCTUxNEM3NjUwMENFOTIzNEUwMDdF
RjNDRCAvKiBSZXNvdXJjZUVycm9yTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTE0Qzc2NDYwQ0U5MjM0RTAwN0VGM0NEIC8qIFJlc291cmNlRXJy
b3JNYWMubW0gKi87IH07CiAJCTUxNEM3NjUxMENFOTIzNEUwMDdFRjNDRCAvKiBSZXNvdXJjZUhh
bmRsZU1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxNEM3NjQ3MENFOTIzNEUwMDdFRjNDRCAvKiBSZXNvdXJjZUhhbmRsZU1hYy5tbSAqLzsgfTsK
LQkJNTE0Qzc2NTMwQ0U5MjM0RTAwN0VGM0NEIC8qIFJlc291cmNlUmVxdWVzdE1hYy5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNEM3NjQ5MENFOTIz
NEUwMDdFRjNDRCAvKiBSZXNvdXJjZVJlcXVlc3RNYWMubW0gKi87IH07CiAJCTUxNEM3NjZEMENF
OTIzQTEwMDdFRjNDRCAvKiBDcmVkZW50aWFsQmFzZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTRDNzY1ODBDRTkyM0ExMDA3RUYzQ0QgLyogQ3Jl
ZGVudGlhbEJhc2UuY3BwICovOyB9OwogCQk1MTRDNzY2RTBDRTkyM0ExMDA3RUYzQ0QgLyogQ3Jl
ZGVudGlhbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTE0Qzc2NTkwQ0U5MjNBMTAwN0VGM0NEIC8qIENyZWRlbnRpYWwuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTRDNzY2RjBDRTkyM0ExMDA3RUYz
Q0QgLyogRm9ybURhdGEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTE0Qzc2NUEwQ0U5MjNBMTAwN0VGM0NEIC8qIEZvcm1EYXRhLmNwcCAqLzsgfTsK
QEAgLTI4MDgsNyArMjgwNyw2IEBACiAJCTdENEM5NkREMUFENDQ4MzUwMDM2NUE1MCAvKiBKU0Zl
dGNoSGVhZGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gN0Q0Qzk2RDkxQUQ0NDgzNTAwMzY1QTUwIC8qIEpTRmV0Y2hIZWFkZXJzLmggKi87IH07CiAJ
CTdENzQxQkRBMTc3MjI2QUEwMDg1OTE3MCAvKiBDU1NWYWx1ZUtleXdvcmRzLmggaW4gQ29weSBH
ZW5lcmF0ZWQgSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTY1
ODE0ODA5RDEzMDQzMDAwRTYxRDcgLyogQ1NTVmFsdWVLZXl3b3Jkcy5oICovOyB9OwogCQk3RTM3
RUYyRTEzMzkyMDg4MDBCMjkyNTAgLyogU3VicmVzb3VyY2VMb2FkZXJDRi5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RTM3RUYyRDEzMzkyMDg4MDBC
MjkyNTAgLyogU3VicmVzb3VyY2VMb2FkZXJDRi5jcHAgKi87IH07Ci0JCTdFNDI4Q0U1MTNFMzQw
N0YwMDNCNjYxQyAvKiBSZXNvdXJjZUhhbmRsZUlPUy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFNDI4Q0U0MTNFMzQwN0YwMDNCNjYxQyAvKiBSZXNv
dXJjZUhhbmRsZUlPUy5tbSAqLzsgfTsKIAkJN0U0NkY2RkExNjI3QTJDQTAwMDYyMjIzIC8qIEpT
T0VTRWxlbWVudEluZGV4VWludC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3RTQ2RjZGODE2MjdBMkM5MDAwNjIyMjMgLyogSlNPRVNFbGVtZW50SW5k
ZXhVaW50LmNwcCAqLzsgfTsKIAkJN0U0NkY2RkIxNjI3QTJDQTAwMDYyMjIzIC8qIEpTT0VTRWxl
bWVudEluZGV4VWludC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gN0U0NkY2RjkxNjI3QTJDOTAwMDYyMjIzIC8qIEpTT0VTRWxlbWVudEluZGV4VWludC5o
ICovOyB9OwogCQk3RTQ3NEUxRTEyNDk0REM5MDAyMzUzNjQgLyogU1FMaXRlRGF0YWJhc2VUcmFj
a2VyQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3RTQ3NEUxQjEyNDk0REM5MDAyMzUzNjQgLyogU1FMaXRlRGF0YWJhc2VUcmFja2VyQ2xpZW50
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTI4
MjYsNyArMjgyNCw2IEBACiAJCTdFNjZFMjM0MTZENkVCNkMwMEY3RTdGRiAvKiBXZWJHTENvbXBy
ZXNzZWRUZXh0dXJlQVRDLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3RTY2RTIzMjE2RDZFQjZDMDBGN0U3RkYgLyogV2ViR0xDb21wcmVzc2VkVGV4dHVy
ZUFUQy5oICovOyB9OwogCQk3RTY2RTIzNDE3RTZFQjZDMDBGN0U3RkYgLyogV2ViR0xDb21wcmVz
c2VkVGV4dHVyZVBWUlRDLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3RTY2RTIzMjE3RTZFQjZDMDBGN0U3RkYgLyogV2ViR0xDb21wcmVzc2VkVGV4dHVy
ZVBWUlRDLmggKi87IH07CiAJCTdFN0RFMUZEMTk1Q0VGMjYwMDM1MzYzQiAvKiBSZXNvdXJjZVJl
cXVlc3RDb2NvYS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDdFN0RFMUZDMTk1Q0VGMjYwMDM1MzYzQiAvKiBSZXNvdXJjZVJlcXVlc3RDb2NvYS5tbSAq
LzsgfTsKLQkJN0U3REUyMDIxOTVDRUZDRDAwMzUzNjNCIC8qIFJlc291cmNlUmVxdWVzdElPUy5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFN0RFMjAx
MTk1Q0VGQ0QwMDM1MzYzQiAvKiBSZXNvdXJjZVJlcXVlc3RJT1MubW0gKi87IH07CiAJCTdFOEZB
REM0MTk5QTk1QjEwMDcxNDk2OCAvKiBTdWJyZXNvdXJjZUxvYWRlckNvY29hLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0U4RkFEQzMxOTlBOTVCMTAw
NzE0OTY4IC8qIFN1YnJlc291cmNlTG9hZGVyQ29jb2EubW0gKi87IH07CiAJCTdFOTlBRjUxMEIx
Mzg0NjQ2OEZCMDFBNSAvKiBXaW5kb3dGb2N1c0FsbG93ZWRJbmRpY2F0b3IuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0U5OUFGNTIwQjEzODQ2NDY4
RkIwMUE1IC8qIFdpbmRvd0ZvY3VzQWxsb3dlZEluZGljYXRvci5jcHAgKi87IH07CiAJCTdFOTlB
RjUzMEIxMzg0NjQ2OEZCMDFBNSAvKiBXaW5kb3dGb2N1c0FsbG93ZWRJbmRpY2F0b3IuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFOTlBRjU0MEIxMzg0
NjQ2OEZCMDFBNSAvKiBXaW5kb3dGb2N1c0FsbG93ZWRJbmRpY2F0b3IuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMjg0Nyw3ICsyODQ0LDYgQEAK
IAkJN0VFNjg0NjkxMkQyNkUzODAwRTc5NDE1IC8qIExvYWRlclJ1bkxvb3BDRi5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0VFNjg0NTYxMkQyNkUzODAw
RTc5NDE1IC8qIExvYWRlclJ1bkxvb3BDRi5oICovOyB9OwogCQk3RUU2ODQ2QTEyRDI2RTM4MDBF
Nzk0MTUgLyogUmVzb3VyY2VFcnJvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gN0VFNjg0NTcxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlRXJyb3Iu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3RUU2
ODQ2QjEyRDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VFcnJvckNGLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFRTY4NDU4MTJEMjZFMzgwMEU3OTQx
NSAvKiBSZXNvdXJjZUVycm9yQ0YuY3BwICovOyB9OwotCQk3RUU2ODQ2QzEyRDI2RTM4MDBFNzk0
MTUgLyogUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3RUU2ODQ1OTEyRDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VI
YW5kbGVDRk5ldC5jcHAgKi87IH07CiAJCTdFRTY4NDZEMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNv
dXJjZVJlcXVlc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDdFRTY4NDVBMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlcXVlc3QuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3RUU2ODQ2RTEyRDI2
RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0VFNjg0NUIxMkQyNkUzODAwRTc5NDE1IC8q
IFJlc291cmNlUmVxdWVzdENGTmV0LmNwcCAqLzsgfTsKIAkJN0VFNjg0NkYxMkQyNkUzODAwRTc5
NDE1IC8qIFJlc291cmNlUmVxdWVzdENGTmV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3RUU2ODQ1QzEyRDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VS
ZXF1ZXN0Q0ZOZXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwpAQCAtOTA2Miw3ICs5MDU4LDYgQEAKIAkJNTE0Qzc2NDUwQ0U5MjM0RTAwN0VGM0NEIC8q
IEZvcm1EYXRhU3RyZWFtTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gRm9ybURhdGFTdHJlYW1NYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTUxNEM3NjQ2MENFOTIzNEUwMDdFRjNDRCAvKiBSZXNvdXJjZUVycm9yTWFjLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUmVzb3VyY2VFcnJvck1hYy5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE0Qzc2NDcwQ0U5MjM0RTAwN0VGM0NEIC8qIFJl
c291cmNlSGFuZGxlTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gUmVzb3VyY2VIYW5kbGVNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUx
NEM3NjQ5MENFOTIzNEUwMDdFRjNDRCAvKiBSZXNvdXJjZVJlcXVlc3RNYWMubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBSZXNvdXJjZVJlcXVlc3RNYWMubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNEM3NjU4MENFOTIzQTEwMDdFRjNDRCAvKiBD
cmVkZW50aWFsQmFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBD
cmVkZW50aWFsQmFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNEM3NjU5
MENFOTIzQTEwMDdFRjNDRCAvKiBDcmVkZW50aWFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IENyZWRlbnRpYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE0
Qzc2NUEwQ0U5MjNBMTAwN0VGM0NEIC8qIEZvcm1EYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEZvcm1EYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTk5NDYsNyArOTk0MSw2IEBACiAJCTdENEM5NkQ4MUFENDQ4MzUwMDM2NUE1MCAvKiBK
U0ZldGNoSGVhZGVycy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U0ZldGNoSGVhZGVycy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdENEM5NkQ5
MUFENDQ4MzUwMDM2NUE1MCAvKiBKU0ZldGNoSGVhZGVycy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBKU0ZldGNoSGVhZGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk3RTM3RUYyRDEzMzkyMDg4MDBCMjkyNTAgLyogU3VicmVzb3VyY2VMb2FkZXJDRi5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdWJyZXNvdXJjZUxvYWRlckNG
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJN0U0MjhDRTQxM0UzNDA3RjAwM0I2
NjFDIC8qIFJlc291cmNlSGFuZGxlSU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gUmVzb3VyY2VIYW5kbGVJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTdFNDZGNkY4MTYyN0EyQzkwMDA2MjIyMyAvKiBKU09FU0VsZW1lbnRJbmRleFVpbnQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNPRVNFbGVtZW50SW5k
ZXhVaW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0U0NkY2RjkxNjI3QTJD
OTAwMDYyMjIzIC8qIEpTT0VTRWxlbWVudEluZGV4VWludC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBKU09FU0VsZW1lbnRJbmRleFVpbnQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJN0U0NzRFMUIxMjQ5NERDOTAwMjM1MzY0IC8qIFNRTGl0ZURhdGFiYXNlVHJh
Y2tlckNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTUUxpdGVEYXRh
YmFzZVRyYWNrZXJDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTk5NjQs
NyArOTk1OCw2IEBACiAJCTdFNjZFMjMyMTZENkVCNkMwMEY3RTdGRiAvKiBXZWJHTENvbXByZXNz
ZWRUZXh0dXJlQVRDLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdMQ29t
cHJlc3NlZFRleHR1cmVBVEMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0U2NkUy
MzIxN0U2RUI2QzAwRjdFN0ZGIC8qIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0U3REUxRkMxOTVDRUYyNjAwMzUzNjNC
IC8qIFJlc291cmNlUmVxdWVzdENvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCTdFN0RFMjAxMTk1Q0VGQ0QwMDM1MzYzQiAvKiBSZXNvdXJjZVJlcXVlc3RJT1Mu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBSZXNvdXJjZVJlcXVl
c3RJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFOEZBREMzMTk5QTk1QjEw
MDcxNDk2OCAvKiBTdWJyZXNvdXJjZUxvYWRlckNvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gU3VicmVzb3VyY2VMb2FkZXJDb2NvYS5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0U5OUFGNTIwQjEzODQ2NDY4RkIwMUE1IC8qIFdpbmRvd0Zv
Y3VzQWxsb3dlZEluZGljYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBXaW5kb3dGb2N1c0FsbG93ZWRJbmRpY2F0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3RTk5QUY1NDBCMTM4NDY0NjhGQjAxQTUgLyogV2luZG93Rm9jdXNBbGxvd2Vk
SW5kaWNhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdpbmRvd0ZvY3Vz
QWxsb3dlZEluZGljYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTk4Nyw3
ICs5OTgwLDYgQEAKIAkJN0VFNjg0NTYxMkQyNkUzODAwRTc5NDE1IC8qIExvYWRlclJ1bkxvb3BD
Ri5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMb2FkZXJSdW5Mb29wQ0YuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0VFNjg0NTcxMkQyNkUzODAwRTc5NDE1IC8q
IFJlc291cmNlRXJyb3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVzb3Vy
Y2VFcnJvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3RUU2ODQ1ODEyRDI2RTM4
MDBFNzk0MTUgLyogUmVzb3VyY2VFcnJvckNGLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFJlc291cmNlRXJyb3JDRi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCTdFRTY4NDU5MTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZUhhbmRsZUNGTmV0LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlc291cmNlSGFuZGxlQ0ZO
ZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3RUU2ODQ1QTEyRDI2RTM4MDBF
Nzk0MTUgLyogUmVzb3VyY2VSZXF1ZXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFJlc291cmNlUmVxdWVzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3RUU2
ODQ1QjEyRDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3RUU2ODQ1QzEyRDI2RTM4MDBFNzk0MTUgLyog
UmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE2
MjM0LDggKzE2MjI2LDYgQEAKIAkJCQk0NDJBRjdBNzEwMkNEREVBMDA4RkQ0RDMgLyogUXVpY2tM
b29rLmggKi8sCiAJCQkJNDQyQUY3QTgxMDJDRERFQTAwOEZENEQzIC8qIFF1aWNrTG9vay5tbSAq
LywKIAkJCQlBMTBEQkY0NjE4RjkyMzE3MDAwRDcwQzYgLyogUXVpY2tMb29rSGFuZGxlQ2xpZW50
LmggKi8sCi0JCQkJN0U0MjhDRTQxM0UzNDA3RjAwM0I2NjFDIC8qIFJlc291cmNlSGFuZGxlSU9T
Lm1tICovLAotCQkJCTdFN0RFMjAxMTk1Q0VGQ0QwMDM1MzYzQiAvKiBSZXNvdXJjZVJlcXVlc3RJ
T1MubW0gKi8sCiAJCQkJNDRBMjBEQjgwRjg0MTY2QzAwQjNFMUZFIC8qIFdlYkNvcmVVUkxSZXNw
b25zZUlPUy5oICovLAogCQkJCTQ0NEQ0RTIxMEY3MDhCMkUwMDMxNThFMCAvKiBXZWJDb3JlVVJM
UmVzcG9uc2VJT1MubW0gKi8sCiAJCQkpOwpAQCAtMTcxNTAsNyArMTcxNDAsNiBAQAogCQkJCTFB
N0ZBNjQ3MEREQTNDQkEwMDI4RjhBNSAvKiBOZXR3b3JrU3RhdGVOb3RpZmllck1hYy5jcHAgKi8s
CiAJCQkJNTE0Qzc2NDYwQ0U5MjM0RTAwN0VGM0NEIC8qIFJlc291cmNlRXJyb3JNYWMubW0gKi8s
CiAJCQkJNTE0Qzc2NDcwQ0U5MjM0RTAwN0VGM0NEIC8qIFJlc291cmNlSGFuZGxlTWFjLm1tICov
LAotCQkJCTUxNEM3NjQ5MENFOTIzNEUwMDdFRjNDRCAvKiBSZXNvdXJjZVJlcXVlc3RNYWMubW0g
Ki8sCiAJCQkJRTE4MDgxMTQxNkZDRjlDQjAwQjgwRDA3IC8qIFN5bmNocm9ub3VzTG9hZGVyQ2xp
ZW50Lm1tICovLAogCQkJCTFGQUZCRjE2MTVBNUZBNTIwMDA4M0EyMCAvKiBVVElVdGlsaXRpZXMu
aCAqLywKIAkJCQkxRkFGQkYxNzE1QTVGQTUyMDAwODNBMjAgLyogVVRJVXRpbGl0aWVzLm1tICov
LApAQCAtMjEwMTIsNyArMjEwMDEsNiBAQAogCQkJCTFBRjhFMUMxMTI1NjczRTAwMDIzMEZGNyAv
KiBQcm94eVNlcnZlckNGTmV0LmNwcCAqLywKIAkJCQk3RUU2ODQ1NzEyRDI2RTM4MDBFNzk0MTUg
LyogUmVzb3VyY2VFcnJvci5oICovLAogCQkJCTdFRTY4NDU4MTJEMjZFMzgwMEU3OTQxNSAvKiBS
ZXNvdXJjZUVycm9yQ0YuY3BwICovLAotCQkJCTdFRTY4NDU5MTJEMjZFMzgwMEU3OTQxNSAvKiBS
ZXNvdXJjZUhhbmRsZUNGTmV0LmNwcCAqLywKIAkJCQkyNkZBRTRDODE4NTJFM0E1MDA0QzhDNDYg
LyogUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5jcHAgKi8sCiAJCQkJMjZG
QUU0QzkxODUyRTNBNTAwNEM4QzQ2IC8qIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVs
ZWdhdGUuaCAqLywKIAkJCQkyNkMxNUNGNDE4NTdFMTVEMDBGMTVDMDMgLyogUmVzb3VyY2VIYW5k
bGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5jcHAgKi8sCkBAIC0y
OTkxNiwxMSArMjk5MDQsOSBAQAogCQkJCTdFRTY4NDZCMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNv
dXJjZUVycm9yQ0YuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE0Qzc2NTAwQ0U5MjM0RTAwN0VG
M0NEIC8qIFJlc291cmNlRXJyb3JNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MTRDNzY3ODBD
RTkyM0ExMDA3RUYzQ0QgLyogUmVzb3VyY2VIYW5kbGUuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJ
N0VFNjg0NkMxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlSGFuZGxlQ0ZOZXQuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMjZGQUU0Q0MxODUyRTNBNTAwNEM4QzQ2IC8qIFJlc291cmNlSGFuZGxl
Q0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMjZDMTVDRjYx
ODU3RTE1RDAwRjE1QzAzIC8qIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVX
aXRoT3BlcmF0aW9uUXVldWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTFCQTAwMzExNkZCOTJB
QzAwQkE3QTM1IC8qIFJlc291cmNlSGFuZGxlQ2xpZW50LmNwcCBpbiBTb3VyY2VzICovLAotCQkJ
CTdFNDI4Q0U1MTNFMzQwN0YwMDNCNjYxQyAvKiBSZXNvdXJjZUhhbmRsZUlPUy5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCTUxNEM3NjUxMENFOTIzNEUwMDdFRjNDRCAvKiBSZXNvdXJjZUhhbmRsZU1h
Yy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTkzRTIyN0UzMEFGNTg5QUQwMEQ0ODMyNCAvKiBSZXNv
dXJjZUxvYWRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3RUU2ODQ3NTEyRDI2RTcwMDBFNzk0
MTUgLyogUmVzb3VyY2VMb2FkZXJDRk5ldC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI5OTMzLDgg
KzI5OTE5LDYgQEAKIAkJCQk1MTRDNzY3QzBDRTkyM0ExMDA3RUYzQ0QgLyogUmVzb3VyY2VSZXF1
ZXN0QmFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3RUU2ODQ2RTEyRDI2RTM4MDBFNzk0MTUg
LyogUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0U3REUxRkQx
OTVDRUYyNjAwMzUzNjNCIC8qIFJlc291cmNlUmVxdWVzdENvY29hLm1tIGluIFNvdXJjZXMgKi8s
Ci0JCQkJN0U3REUyMDIxOTVDRUZDRDAwMzUzNjNCIC8qIFJlc291cmNlUmVxdWVzdElPUy5tbSBp
biBTb3VyY2VzICovLAotCQkJCTUxNEM3NjUzMENFOTIzNEUwMDdFRjNDRCAvKiBSZXNvdXJjZVJl
cXVlc3RNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MTRDNzY3RTBDRTkyM0ExMDA3RUYzQ0Qg
LyogUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0VFNjg0NzEx
MkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlUmVzcG9uc2VDRk5ldC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlBMUY3OEQwQzFDMjU0MjRDMDAyNDU0NDYgLyogUmVzb3VyY2VSZXNwb25zZUNvY29h
Lm1tIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRM
b2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2Fk
ZXIuaAkocmV2aXNpb24gMjA3MDM1KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50
TG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTU1LDcgKzU1LDcgQEAKICNpbmNsdWRlICJRdWlj
a0xvb2suaCIKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oQ09DT0EpICYmICFVU0UoQ0ZORVRXT1JL
KQorI2lmIFBMQVRGT1JNKENPQ09BKQogI2luY2x1ZGUgPHd0Zi9TY2hlZHVsZVBhaXIuaD4KICNl
bmRpZgogCkBAIC0xNDUsNyArMTQ1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHNldFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mKTsK
ICAgICAgICAgY29uc3QgU3RyaW5nJiBvdmVycmlkZUVuY29kaW5nKCkgY29uc3QgeyByZXR1cm4g
bV9vdmVycmlkZUVuY29kaW5nOyB9CiAKLSNpZiBQTEFURk9STShDT0NPQSkgJiYgIVVTRShDRk5F
VFdPUkspCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgICAgIHZvaWQgc2NoZWR1bGUoU2NoZWR1
bGVQYWlyJik7CiAgICAgICAgIHZvaWQgdW5zY2hlZHVsZShTY2hlZHVsZVBhaXImKTsKICNlbmRp
ZgpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAkocmV2aXNpb24gMjA3MDM1
KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCSh3b3JraW5nIGNvcHkp
CkBAIC00MDMsNyArNDAzLDcgQEAgcHVibGljOgogICAgIFJlbW90ZUFYT2JqZWN0UmVmIGFjY2Vz
c2liaWxpdHlSZW1vdGVPYmplY3QoKSBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9CiAgICAg
TlNDYWNoZWRVUkxSZXNwb25zZSogd2lsbENhY2hlUmVzcG9uc2UoRG9jdW1lbnRMb2FkZXIqLCB1
bnNpZ25lZCBsb25nLCBOU0NhY2hlZFVSTFJlc3BvbnNlKiByZXNwb25zZSkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gcmVzcG9uc2U7IH0KICNlbmRpZgotI2lmIFBMQVRGT1JNKFdJTikgJiYgVVNF
KENGTkVUV09SSykKKyNpZiBQTEFURk9STShXSU4pICYmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAg
ICAgLy8gRklYTUU6IFdpbmRvd3Mgc2hvdWxkIHVzZSB3aWxsQ2FjaGVSZXNwb25zZSAtIDxodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTcyNTc+LgogICAgIGJvb2wgc2hv
dWxkQ2FjaGVSZXNwb25zZShEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmLCBjb25zdCB1bnNpZ25lZCBjaGFyKiwgdW5zaWduZWQgbG9uZyBsb25n
KSBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCShyZXZpc2lvbiAyMDcwMzUpCisrKyBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjk3
LDcgKzI5Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCBOU0NhY2hl
ZFVSTFJlc3BvbnNlKiB3aWxsQ2FjaGVSZXNwb25zZShEb2N1bWVudExvYWRlciosIHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllciwgTlNDYWNoZWRVUkxSZXNwb25zZSopIGNvbnN0ID0gMDsKICAgICAg
ICAgdmlydHVhbCBOU0RpY3Rpb25hcnkgKmRhdGFEZXRlY3Rpb25Db250ZXh0KCkgeyByZXR1cm4g
bnVsbHB0cjsgfQogI2VuZGlmCi0jaWYgUExBVEZPUk0oV0lOKSAmJiBVU0UoQ0ZORVRXT1JLKQor
I2lmIFBMQVRGT1JNKFdJTikgJiYgVVNFKENGVVJMQ09OTkVDVElPTikKICAgICAgICAgLy8gRklY
TUU6IFdpbmRvd3Mgc2hvdWxkIHVzZSB3aWxsQ2FjaGVSZXNwb25zZSAtIDxodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTcyNTc+LgogICAgICAgICB2aXJ0dWFsIGJvb2wg
c2hvdWxkQ2FjaGVSZXNwb25zZShEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRp
ZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGRhdGEs
IHVuc2lnbmVkIGxvbmcgbG9uZyBsZW5ndGgpID0gMDsKICNlbmRpZgpJbmRleDogU291cmNlL1dl
YkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiAyMDcwMzUpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03
MTUsMTIgKzcxNSw4IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVBdXRoZW50aWMK
ICAgICB9CiAgICAgLy8gT25seSB0aGVzZSBwbGF0Zm9ybXMgcHJvdmlkZSBhIHdheSB0byBjb250
aW51ZSB3aXRob3V0IGNyZWRlbnRpYWxzLgogICAgIC8vIElmIHdlIGNhbid0IGNvbnRpbnVlIHdp
dGggY3JlZGVudGlhbHMsIHdlIG5lZWQgdG8gY2FuY2VsIHRoZSBsb2FkIGFsdG9nZXRoZXIuCi0j
aWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRk5FVFdPUkspIHx8IFVTRShDVVJMKSB8fCBQTEFU
Rk9STShHVEspIHx8IFBMQVRGT1JNKEVGTCkKICAgICBjaGFsbGVuZ2UuYXV0aGVudGljYXRpb25D
bGllbnQoKS0+cmVjZWl2ZWRSZXF1ZXN0VG9Db250aW51ZVdpdGhvdXRDcmVkZW50aWFsKGNoYWxs
ZW5nZSk7CiAgICAgQVNTRVJUKCFtX2hhbmRsZSB8fCAhbV9oYW5kbGUtPmhhc0F1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlKCkpOwotI2Vsc2UKLSAgICBkaWRGYWlsKGJsb2NrZWRFcnJvcigpKTsKLSNl
bmRpZgogfQogCiAjaWYgVVNFKFBST1RFQ1RJT05fU1BBQ0VfQVVUSF9DQUxMQkFDSykKQEAgLTc0
Nyw3ICs3NDMsNyBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpyZWNlaXZlZENhbmNlbGxhdGlvCiAg
ICAgY2FuY2VsKCk7CiB9CiAKLSNpZiBQTEFURk9STShDT0NPQSkgJiYgIVVTRShDRk5FVFdPUksp
CisjaWYgUExBVEZPUk0oQ09DT0EpCiAKIHZvaWQgUmVzb3VyY2VMb2FkZXI6OnNjaGVkdWxlKFNj
aGVkdWxlUGFpciYgcGFpcikKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJj
ZUxvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxv
YWRlci5oCShyZXZpc2lvbiAyMDcwMzUpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3Vy
Y2VMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTQzLDcgKzE0Myw3IEBAIHB1YmxpYzoKIAog
ICAgIGNvbnN0IExvYWRUaW1pbmcmIGxvYWRUaW1pbmcoKSB7IHJldHVybiBtX2xvYWRUaW1pbmc7
IH0KIAotI2lmIFBMQVRGT1JNKENPQ09BKSAmJiAhVVNFKENGTkVUV09SSykKKyNpZiBQTEFURk9S
TShDT0NPQSkKICAgICB2b2lkIHNjaGVkdWxlKFdURjo6U2NoZWR1bGVQYWlyJik7CiAgICAgdm9p
ZCB1bnNjaGVkdWxlKFdURjo6U2NoZWR1bGVQYWlyJik7CiAjZW5kaWYKQEAgLTE2MywxMiArMTYz
LDkgQEAgcHJvdGVjdGVkOgogCiAgICAgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJiBvcHRp
b25zKCkgeyByZXR1cm4gbV9vcHRpb25zOyB9CiAKLSNpZiBQTEFURk9STShDT0NPQSkgJiYgIVVT
RShDRk5FVFdPUkspCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgTlNDYWNoZWRVUkxSZXNwb25z
ZSogd2lsbENhY2hlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqLCBOU0NhY2hlZFVSTFJlc3BvbnNl
Kikgb3ZlcnJpZGU7CiAjZW5kaWYKLSNpZiBQTEFURk9STShDT0NPQSkgJiYgVVNFKENGTkVUV09S
SykKLSAgICBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmIHdpbGxDYWNoZVJlc3BvbnNlKFJlc291cmNl
SGFuZGxlKiwgQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZikgb3ZlcnJpZGU7Ci0jZW5kaWYKIAogICAg
IHZpcnR1YWwgdm9pZCB3aWxsU2VuZFJlcXVlc3RJbnRlcm5hbChSZXNvdXJjZVJlcXVlc3QmLCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKTsKIApAQCAtMjA4LDcgKzIw
NSw3IEBAIHByaXZhdGU6CiAjaWYgUExBVEZPUk0oSU9TKQogICAgIFJldGFpblB0cjxDRkRpY3Rp
b25hcnlSZWY+IGNvbm5lY3Rpb25Qcm9wZXJ0aWVzKFJlc291cmNlSGFuZGxlKikgb3ZlcnJpZGU7
CiAjZW5kaWYKLSNpZiBQTEFURk9STShXSU4pICYmIFVTRShDRk5FVFdPUkspCisjaWYgUExBVEZP
Uk0oV0lOKSAmJiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogICAgIC8vIEZJWE1FOiBXaW5kb3dzIHNo
b3VsZCB1c2Ugd2lsbENhY2hlUmVzcG9uc2UgLSA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTU3MjU3Pi4KICAgICBib29sIHNob3VsZENhY2hlUmVzcG9uc2UoUmVzb3Vy
Y2VIYW5kbGUqLCBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmKSBvdmVycmlkZTsKICNlbmRpZgpJbmRl
eDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmgJKHJldmlzaW9uIDIw
NzAzNSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC03NCwxMiArNzQsOSBAQCBwcml2YXRlOgogICAgIHZvaWQgd2lsbENhbmNl
bChjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRDYW5jZWwoY29u
c3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogCi0jaWYgUExBVEZPUk0oQ09DT0EpICYmICFV
U0UoQ0ZORVRXT1JLKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIE5TQ2FjaGVkVVJMUmVzcG9u
c2UgKndpbGxDYWNoZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlKiwgTlNDYWNoZWRVUkxSZXNwb25z
ZSopIG92ZXJyaWRlOwogI2VuZGlmCi0jaWYgUExBVEZPUk0oQ09DT0EpICYmIFVTRShDRk5FVFdP
UkspCi0gICAgQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZiB3aWxsQ2FjaGVSZXNwb25zZShSZXNvdXJj
ZUhhbmRsZSosIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYpIG92ZXJyaWRlOwotI2VuZGlmCiAKICNp
ZiBVU0UoTkVUV09SS19DRkRBVEFfQVJSQVlfQ0FMTEJBQ0spCiAgICAgYm9vbCBzdXBwb3J0c0Rh
dGFBcnJheSgpIG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jZi9SZXNvdXJjZUxvYWRlckNGTmV0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2YvUmVzb3VyY2VMb2FkZXJDRk5ldC5jcHAJKHJldmlzaW9uIDIwNzAz
NSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jZi9SZXNvdXJjZUxvYWRlckNGTmV0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjYsMTUgKzI2LDEzIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAiUmVzb3VyY2VMb2FkZXIuaCIKIAotI2lmIFVTRShDRk5FVFdPUkspCisjaWYgVVNF
KENGVVJMQ09OTkVDVElPTikKIAogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAi
RnJhbWVMb2FkZXJDbGllbnQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0jaWYgUExBVEZP
Uk0oV0lOKQotCiBib29sIFJlc291cmNlTG9hZGVyOjpzaG91bGRDYWNoZVJlc3BvbnNlKFJlc291
cmNlSGFuZGxlKiwgQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZiBjYWNoZWRSZXNwb25zZSkKIHsKICAg
ICBpZiAobV9vcHRpb25zLnNlbmRMb2FkQ2FsbGJhY2tzID09IERvTm90U2VuZENhbGxiYWNrcykK
QEAgLTQ1LDggKzQzLDYgQEAgYm9vbCBSZXNvdXJjZUxvYWRlcjo6c2hvdWxkQ2FjaGVSZXNwb25z
ZQogICAgIHJldHVybiBmcmFtZUxvYWRlcigpLT5jbGllbnQoKS5zaG91bGRDYWNoZVJlc3BvbnNl
KGRvY3VtZW50TG9hZGVyKCksIGlkZW50aWZpZXIoKSwgcmVzcG9uc2UsIENGRGF0YUdldEJ5dGVQ
dHIoZGF0YSksIENGRGF0YUdldExlbmd0aChkYXRhKSk7CiB9CiAKLSNlbmRpZgotCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZiAvLyBVU0UoQ0ZORVRXT1JLKQorI2VuZGlmIC8vIFVT
RShDRlVSTENPTk5FQ1RJT04pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvU3Vi
cmVzb3VyY2VMb2FkZXJDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY29jb2EvU3VicmVzb3VyY2VMb2FkZXJDb2NvYS5tbQkocmV2aXNpb24gMjA3MDM1KQorKysg
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL1N1YnJlc291cmNlTG9hZGVyQ29jb2EubW0JKHdv
cmtpbmcgY29weSkKQEAgLTM1LDE4ICszNSw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
I2lmIFVTRShDRk5FVFdPUkspCi0KLUNGQ2FjaGVkVVJMUmVzcG9uc2VSZWYgU3VicmVzb3VyY2VM
b2FkZXI6OndpbGxDYWNoZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIENGQ2FjaGVk
VVJMUmVzcG9uc2VSZWYgY2FjaGVkUmVzcG9uc2UpCi17Ci0gICAgRGlza0NhY2hlTW9uaXRvcjo6
bW9uaXRvckZpbGVCYWNraW5nU3RvcmVDcmVhdGlvbihyZXF1ZXN0KCksIG1fcmVzb3VyY2UtPnNl
c3Npb25JRCgpLCBjYWNoZWRSZXNwb25zZSk7Ci0gICAgaWYgKCFtX3Jlc291cmNlLT5zaG91bGRD
YWNoZVJlc3BvbnNlKENGQ2FjaGVkVVJMUmVzcG9uc2VHZXRXcmFwcGVkUmVzcG9uc2UoY2FjaGVk
UmVzcG9uc2UpKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIFJlc291cmNl
TG9hZGVyOjp3aWxsQ2FjaGVSZXNwb25zZShoYW5kbGUsIGNhY2hlZFJlc3BvbnNlKTsKLX0KLQot
I2Vsc2UKLQogTlNDYWNoZWRVUkxSZXNwb25zZSogU3VicmVzb3VyY2VMb2FkZXI6OndpbGxDYWNo
ZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIE5TQ2FjaGVkVVJMUmVzcG9uc2UqIHJl
c3BvbnNlKQogewogICAgIERpc2tDYWNoZU1vbml0b3I6Om1vbml0b3JGaWxlQmFja2luZ1N0b3Jl
Q3JlYXRpb24ocmVxdWVzdCgpLCBtX3Jlc291cmNlLT5zZXNzaW9uSUQoKSwgW3Jlc3BvbnNlIF9D
RkNhY2hlZFVSTFJlc3BvbnNlXSk7CkBAIC01NSw2ICs0Myw0IEBAIE5TQ2FjaGVkVVJMUmVzcG9u
c2UqIFN1YnJlc291cmNlTG9hZGVyOjoKICAgICByZXR1cm4gUmVzb3VyY2VMb2FkZXI6OndpbGxD
YWNoZVJlc3BvbnNlKGhhbmRsZSwgcmVzcG9uc2UpOwogfQogCi0jZW5kaWYKLQogfQpJbmRleDog
U291cmNlL1dlYkNvcmUvbG9hZGVyL21hYy9Eb2N1bWVudExvYWRlck1hYy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL21hYy9Eb2N1bWVudExvYWRlck1hYy5jcHAJKHJl
dmlzaW9uIDIwNzAzNSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9tYWMvRG9jdW1lbnRMb2Fk
ZXJNYWMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw4ICszMyw2IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotI2lmICFVU0UoQ0ZORVRXT1JLKQotCiBzdGF0aWMgdm9pZCBzY2hlZHVsZUFs
bChjb25zdCBSZXNvdXJjZUxvYWRlck1hcCYgbG9hZGVycywgU2NoZWR1bGVQYWlyJiBwYWlyKQog
ewogICAgIFZlY3RvcjxSZWZQdHI8UmVzb3VyY2VMb2FkZXI+PiBsb2FkZXJzQ29weTsKQEAgLTY5
LDYgKzY3LDQgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6dW5zY2hlZHVsZShTY2hlZHVsZQogICAg
IHVuc2NoZWR1bGVBbGwobV9tdWx0aXBhcnRTdWJyZXNvdXJjZUxvYWRlcnMsIHBhaXIpOwogfQog
Ci0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9tYWMvUmVzb3VyY2VMb2FkZXJNYWMubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL21hYy9SZXNvdXJjZUxvYWRlck1hYy5tbQkocmV2
aXNpb24gMjA3MDM1KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL21hYy9SZXNvdXJjZUxvYWRl
ck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzYsMTkgKzM2LDYgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi0jaWYgVVNFKENGTkVUV09SSykKLQotQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZiBS
ZXNvdXJjZUxvYWRlcjo6d2lsbENhY2hlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqLCBDRkNhY2hl
ZFVSTFJlc3BvbnNlUmVmIGNhY2hlZFJlc3BvbnNlKQotewotICAgIGlmIChtX29wdGlvbnMuc2Vu
ZExvYWRDYWxsYmFja3MgPT0gRG9Ob3RTZW5kQ2FsbGJhY2tzKQotICAgICAgICByZXR1cm4gbnVs
bHB0cjsKLQotICAgIFJldGFpblB0cjxOU0NhY2hlZFVSTFJlc3BvbnNlPiBuc0NhY2hlZFJlc3Bv
bnNlID0gYWRvcHROUyhbW05TQ2FjaGVkVVJMUmVzcG9uc2UgYWxsb2NdIF9pbml0V2l0aENGQ2Fj
aGVkVVJMUmVzcG9uc2U6Y2FjaGVkUmVzcG9uc2VdKTsKLSAgICByZXR1cm4gW2ZyYW1lTG9hZGVy
KCktPmNsaWVudCgpLndpbGxDYWNoZVJlc3BvbnNlKGRvY3VtZW50TG9hZGVyKCksIGlkZW50aWZp
ZXIoKSwgbnNDYWNoZWRSZXNwb25zZS5nZXQoKSkgX0NGQ2FjaGVkVVJMUmVzcG9uc2VdOwotfQot
Ci0jZWxzZQotCiBOU0NhY2hlZFVSTFJlc3BvbnNlKiBSZXNvdXJjZUxvYWRlcjo6d2lsbENhY2hl
UmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqLCBOU0NhY2hlZFVSTFJlc3BvbnNlKiByZXNwb25zZSkK
IHsKICAgICBpZiAobV9vcHRpb25zLnNlbmRMb2FkQ2FsbGJhY2tzID09IERvTm90U2VuZENhbGxi
YWNrcykKQEAgLTU2LDggKzQzLDYgQEAgTlNDYWNoZWRVUkxSZXNwb25zZSogUmVzb3VyY2VMb2Fk
ZXI6OndpbAogICAgIHJldHVybiBmcmFtZUxvYWRlcigpLT5jbGllbnQoKS53aWxsQ2FjaGVSZXNw
b25zZShkb2N1bWVudExvYWRlcigpLCBpZGVudGlmaWVyKCksIHJlc3BvbnNlKTsKIH0KIAotI2Vu
ZGlmCi0KICNpZiBVU0UoTkVUV09SS19DRkRBVEFfQVJSQVlfQ0FMTEJBQ0spCiAKIHZvaWQgUmVz
b3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhQXJyYXkoQ0ZBcnJheVJlZiBkYXRhQXJyYXkpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9QYWdlTWFjLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1BhZ2VNYWMubW0JKHJldmlzaW9uIDIwNzAzNSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1BhZ2VNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTQ1LDEx
ICs0NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHZvaWQgUGFnZTo6cGxhdGZvcm1Jbml0aWFs
aXplKCkKIHsKICNpZiBQTEFURk9STShJT1MpCi0jaWYgVVNFKENGTkVUV09SSykKLSAgICBhZGRT
Y2hlZHVsZVBhaXIoU2NoZWR1bGVQYWlyOjpjcmVhdGUoV2ViVGhyZWFkUnVuTG9vcCgpLCBrQ0ZS
dW5Mb29wQ29tbW9uTW9kZXMpKTsKLSNlbHNlCiAgICAgYWRkU2NoZWR1bGVQYWlyKFNjaGVkdWxl
UGFpcjo6Y3JlYXRlKFdlYlRocmVhZE5TUnVuTG9vcCgpLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMp
KTsKLSNlbmRpZiAvLyBVU0UoQ0ZORVRXT1JLKQogI2Vsc2UKICAgICBhZGRTY2hlZHVsZVBhaXIo
U2NoZWR1bGVQYWlyOjpjcmVhdGUoW05TUnVuTG9vcCBjdXJyZW50UnVuTG9vcF0sIGtDRlJ1bkxv
b3BDb21tb25Nb2RlcykpOwogI2VuZGlmCkBAIC02OSwxNCArNjUsMTIgQEAgdm9pZCBQYWdlOjph
ZGRTY2hlZHVsZVBhaXIoUmVmPFNjaGVkdWxlUAogICAgICAgICBtX3NjaGVkdWxlZFJ1bkxvb3BQ
YWlycyA9IHN0ZDo6bWFrZV91bmlxdWU8U2NoZWR1bGVQYWlySGFzaFNldD4oKTsKICAgICBtX3Nj
aGVkdWxlZFJ1bkxvb3BQYWlycy0+YWRkKHBhaXIucHRyKCkpOwogCi0jaWYgIVVTRShDRk5FVFdP
UkspCiAgICAgZm9yIChGcmFtZSogZnJhbWUgPSAmbV9tYWluRnJhbWUuZ2V0KCk7IGZyYW1lOyBm
cmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KCkpIHsKICAgICAgICAgaWYgKERvY3Vt
ZW50TG9hZGVyKiBkb2N1bWVudExvYWRlciA9IGZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRl
cigpKQogICAgICAgICAgICAgZG9jdW1lbnRMb2FkZXItPnNjaGVkdWxlKHBhaXIpOwogICAgICAg
ICBpZiAoRG9jdW1lbnRMb2FkZXIqIGRvY3VtZW50TG9hZGVyID0gZnJhbWUtPmxvYWRlcigpLnBy
b3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIoKSkKICAgICAgICAgICAgIGRvY3VtZW50TG9hZGVyLT5z
Y2hlZHVsZShwYWlyKTsKICAgICB9Ci0jZW5kaWYKIAogICAgIC8vIEZJWE1FOiBtYWtlIFNoYXJl
ZFRpbWVyTWFjIHVzZSB0aGVzZSBTY2hlZHVsZVBhaXJzLgogfQpAQCAtODksMTQgKzgzLDEyIEBA
IHZvaWQgUGFnZTo6cmVtb3ZlU2NoZWR1bGVQYWlyKFJlZjxTY2hlZHUKIAogICAgIG1fc2NoZWR1
bGVkUnVuTG9vcFBhaXJzLT5yZW1vdmUocGFpci5wdHIoKSk7CiAKLSNpZiAhVVNFKENGTkVUV09S
SykKICAgICBmb3IgKEZyYW1lKiBmcmFtZSA9ICZtX21haW5GcmFtZS5nZXQoKTsgZnJhbWU7IGZy
YW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoKSkgewogICAgICAgICBpZiAoRG9jdW1l
bnRMb2FkZXIqIGRvY3VtZW50TG9hZGVyID0gZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVy
KCkpCiAgICAgICAgICAgICBkb2N1bWVudExvYWRlci0+dW5zY2hlZHVsZShwYWlyKTsKICAgICAg
ICAgaWYgKERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlciA9IGZyYW1lLT5sb2FkZXIoKS5w
cm92aXNpb25hbERvY3VtZW50TG9hZGVyKCkpCiAgICAgICAgICAgICBkb2N1bWVudExvYWRlci0+
dW5zY2hlZHVsZShwYWlyKTsKICAgICB9Ci0jZW5kaWYKIH0KIAogfSAvLyBuYW1lc3BhY2UKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQkocmV2aXNpb24gMjA3MDM1KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTA5LDEwICsxMDksNiBA
QAogI2ltcG9ydCA8VmlkZW9Ub29sYm94L1ZpZGVvVG9vbGJveC5oPgogI2VuZGlmCiAKLSNpZiBV
U0UoQ0ZORVRXT1JLKQotI2luY2x1ZGUgIkNGTlNVUkxDb25uZWN0aW9uU1BJLmgiCi0jZW5kaWYK
LQogI2ltcG9ydCAiQ29yZVZpZGVvU29mdExpbmsuaCIKIAogbmFtZXNwYWNlIHN0ZCB7CkBAIC0z
NzIsNTggKzM2OCw2IEBAIHN0YXRpYyBkaXNwYXRjaF9xdWV1ZV90IGdsb2JhbFB1bGxEZWxlZ2EK
IH0KICNlbmRpZgogCi0jaWYgVVNFKENGTkVUV09SSykKLWNsYXNzIFdlYkNvcmVOU1VSTEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlQ2xpZW50IDogcHVibGljIFJlZkNvdW50ZWQ8V2ViQ29yZU5TVVJM
QXV0aGVudGljYXRpb25DaGFsbGVuZ2VDbGllbnQ+LCBwdWJsaWMgQXV0aGVudGljYXRpb25DbGll
bnQgewotcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8V2ViQ29yZU5TVVJMQXV0aGVudGljYXRp
b25DaGFsbGVuZ2VDbGllbnQ+IGNyZWF0ZShOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICpj
aGFsbGVuZ2UpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkNvcmVOU1VS
TEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQ2xpZW50KGNoYWxsZW5nZSkpOwotICAgIH0KLQotICAg
IHVzaW5nIFJlZkNvdW50ZWQ8V2ViQ29yZU5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VDbGll
bnQ+OjpyZWY7Ci0gICAgdXNpbmcgUmVmQ291bnRlZDxXZWJDb3JlTlNVUkxBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZUNsaWVudD46OmRlcmVmOwotCi1wcml2YXRlOgotICAgIFdlYkNvcmVOU1VSTEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQ2xpZW50KE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2Ug
KmNoYWxsZW5nZSkKLSAgICAgICAgOiBtX2NoYWxsZW5nZShjaGFsbGVuZ2UpCi0gICAgewotICAg
ICAgICBBU1NFUlQobV9jaGFsbGVuZ2UpOwotICAgIH0KLQotICAgIHZvaWQgcmVmQXV0aGVudGlj
YXRpb25DbGllbnQoKSBvdmVycmlkZSB7IHJlZigpOyB9Ci0gICAgdm9pZCBkZXJlZkF1dGhlbnRp
Y2F0aW9uQ2xpZW50KCkgb3ZlcnJpZGUgeyBkZXJlZigpOyB9Ci0KLSAgICB2b2lkIHJlY2VpdmVk
Q3JlZGVudGlhbChjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYsIGNvbnN0IENyZWRlbnRp
YWwmIGNyZWRlbnRpYWwpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBbW21fY2hhbGxlbmdlIHNl
bmRlcl0gdXNlQ3JlZGVudGlhbDpjcmVkZW50aWFsLm5zQ3JlZGVudGlhbCgpIGZvckF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlOm1fY2hhbGxlbmdlLmdldCgpXTsKLSAgICB9Ci0KLSAgICB2b2lkIHJl
Y2VpdmVkUmVxdWVzdFRvQ29udGludWVXaXRob3V0Q3JlZGVudGlhbChjb25zdCBBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSYpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBbW21fY2hhbGxlbmdlIHNl
bmRlcl0gY29udGludWVXaXRob3V0Q3JlZGVudGlhbEZvckF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
Om1fY2hhbGxlbmdlLmdldCgpXTsKLSAgICB9Ci0KLSAgICB2b2lkIHJlY2VpdmVkQ2FuY2VsbGF0
aW9uKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikgb3ZlcnJpZGUKLSAgICB7Ci0gICAg
ICAgIFtbbV9jaGFsbGVuZ2Ugc2VuZGVyXSBjYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTpt
X2NoYWxsZW5nZS5nZXQoKV07Ci0gICAgfQotCi0gICAgdm9pZCByZWNlaXZlZFJlcXVlc3RUb1Bl
cmZvcm1EZWZhdWx0SGFuZGxpbmcoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKSBvdmVy
cmlkZQotICAgIHsKLSAgICAgICAgaWYgKFtbbV9jaGFsbGVuZ2Ugc2VuZGVyXSByZXNwb25kc1Rv
U2VsZWN0b3I6QHNlbGVjdG9yKHBlcmZvcm1EZWZhdWx0SGFuZGxpbmdGb3JBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZTopXSkKLSAgICAgICAgICAgIFtbbV9jaGFsbGVuZ2Ugc2VuZGVyXSBwZXJmb3Jt
RGVmYXVsdEhhbmRsaW5nRm9yQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6bV9jaGFsbGVuZ2UuZ2V0
KCldOwotICAgIH0KLQotICAgIHZvaWQgcmVjZWl2ZWRDaGFsbGVuZ2VSZWplY3Rpb24oY29uc3Qg
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgaWYgKFtb
bV9jaGFsbGVuZ2Ugc2VuZGVyXSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHJlamVjdFBy
b3RlY3Rpb25TcGFjZUFuZENvbnRpbnVlV2l0aENoYWxsZW5nZTopXSkKLSAgICAgICAgICAgIFtb
bV9jaGFsbGVuZ2Ugc2VuZGVyXSByZWplY3RQcm90ZWN0aW9uU3BhY2VBbmRDb250aW51ZVdpdGhD
aGFsbGVuZ2U6bV9jaGFsbGVuZ2UuZ2V0KCldOwotICAgIH0KLQotICAgIFJldGFpblB0cjxOU1VS
TEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlPiBtX2NoYWxsZW5nZTsKLX07Ci0jZW5kaWYKLQogdm9p
ZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpyZWdpc3Rlck1lZGlhRW5naW5l
KE1lZGlhRW5naW5lUmVnaXN0cmFyIHJlZ2lzdHJhcikKIHsKICAgICBpZiAoIWlzQXZhaWxhYmxl
KCkpCkBAIC0xNzk3LDE1ICsxNzQxLDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDOgogCiBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNo
b3VsZFdhaXRGb3JSZXNwb25zZVRvQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoTlNVUkxBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSogbnNDaGFsbGVuZ2UpCiB7Ci0jaWYgVVNFKENGTkVUV09SSykKLSAg
ICBSZWZQdHI8V2ViQ29yZU5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VDbGllbnQ+IGNsaWVu
dCA9IFdlYkNvcmVOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQ2xpZW50OjpjcmVhdGUobnND
aGFsbGVuZ2UpOwotICAgIFJldGFpblB0cjxDRlVSTEF1dGhDaGFsbGVuZ2VSZWY+IGNmQ2hhbGxl
bmdlID0gYWRvcHRDRihbbnNDaGFsbGVuZ2UgX2NyZWF0ZUNGQXV0aENoYWxsZW5nZV0pOwotICAg
IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIGNoYWxsZW5nZShjZkNoYWxsZW5nZS5nZXQoKSwgY2xp
ZW50LmdldCgpKTsKLSNlbHNlCi0gICAgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgY2hhbGxlbmdl
KG5zQ2hhbGxlbmdlKTsKLSNlbmRpZgotCi0gICAgcmV0dXJuIHBsYXllcigpLT5zaG91bGRXYWl0
Rm9yUmVzcG9uc2VUb0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNoYWxsZW5nZSk7CisgICAgcmV0
dXJuIHBsYXllcigpLT5zaG91bGRXYWl0Rm9yUmVzcG9uc2VUb0F1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlKEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKG5zQ2hhbGxlbmdlKSk7CiB9CiAKIHZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6ZGlkQ2FuY2VsTG9hZGluZ1JlcXVlc3Qo
QVZBc3NldFJlc291cmNlTG9hZGluZ1JlcXVlc3QqIGF2UmVxdWVzdCkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaAko
cmV2aXNpb24gMjA3MDM1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVT
eXN0ZW1JbnRlcmZhY2UuaAkod29ya2luZyBjb3B5KQpAQCAtNzcsNyArNzcsNyBAQCB0eXBlZGVm
IHN0cnVjdCBfTlNSZWN0IE5TUmVjdDsKICNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ29yZUdyYXBo
aWNzLmg+CiAjZW5kaWYKIAotI2lmIFVTRShDRk5FVFdPUkspCisjaWYgVVNFKENGVVJMQ09OTkVD
VElPTikKIHR5cGVkZWYgc3RydWN0IE9wYXF1ZUNGSFRUUENvb2tpZVN0b3JhZ2UqICBDRkhUVFBD
b29raWVTdG9yYWdlUmVmOwogdHlwZWRlZiBzdHJ1Y3QgX0NGVVJMUHJvdGVjdGlvblNwYWNlKiBD
RlVSTFByb3RlY3Rpb25TcGFjZVJlZjsKIHR5cGVkZWYgc3RydWN0IF9DRlVSTENyZWRlbnRpYWwq
IFdLQ0ZVUkxDcmVkZW50aWFsUmVmOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oCShyZXZpc2lvbiAyMDcw
MzUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vz
c2lvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw3IEBACiAjaW5jbHVkZSAiU2Vzc2lv
bklELmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKLSNpZiBQTEFURk9STShD
T0NPQSkgfHwgVVNFKENGTkVUV09SSykKKyNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKENGVVJM
Q09OTkVDVElPTikKICNpbmNsdWRlICJDRk5ldHdvcmtTUEkuaCIKICNpbmNsdWRlIDx3dGYvUmV0
YWluUHRyLmg+CiAjZW5kaWYKQEAgLTU5LDcgKzU5LDcgQEAgcHVibGljOgogICAgIFNlc3Npb25J
RCBzZXNzaW9uSUQoKSBjb25zdCB7IHJldHVybiBtX3Nlc3Npb25JRDsgfQogICAgIENyZWRlbnRp
YWxTdG9yYWdlJiBjcmVkZW50aWFsU3RvcmFnZSgpIHsgcmV0dXJuIG1fY3JlZGVudGlhbFN0b3Jh
Z2U7IH0KIAotI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZORVRXT1JLKQorI2lmIFBMQVRG
T1JNKENPQ09BKSB8fCBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogICAgIE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbihTZXNzaW9uSUQsIFJldGFpblB0cjxDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmPik7CiAKICAg
ICAvLyBNYXkgYmUgbnVsbCwgaW4gd2hpY2ggY2FzZSBhIEZvdW5kYXRpb24gZGVmYXVsdCBzaG91
bGQgYmUgdXNlZC4KQEAgLTg0LDcgKzg0LDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgSGFzaE1h
cDxTZXNzaW9uSUQsIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrU3RvcmFnZVNlc3Npb24+PiYgZ2xv
YmFsU2Vzc2lvbk1hcCgpOwogICAgIFNlc3Npb25JRCBtX3Nlc3Npb25JRDsKIAotI2lmIFBMQVRG
T1JNKENPQ09BKSB8fCBVU0UoQ0ZORVRXT1JLKQorI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0Uo
Q0ZVUkxDT05ORUNUSU9OKQogICAgIFJldGFpblB0cjxDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmPiBt
X3BsYXRmb3JtU2Vzc2lvbjsKICNlbGlmIFVTRShTT1VQKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxT
b3VwTmV0d29ya1Nlc3Npb24+IG1fc2Vzc2lvbjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvUHJvdGVjdGlvblNwYWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9Qcm90ZWN0aW9uU3BhY2UuaAkocmV2aXNpb24gMjA3MDM1KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Qcm90ZWN0aW9uU3BhY2UuaAkod29y
a2luZyBjb3B5KQpAQCAtMjMsMTIgKzIzLDExIEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCi0j
aWZuZGVmIFByb3RlY3Rpb25TcGFjZV9oCi0jZGVmaW5lIFByb3RlY3Rpb25TcGFjZV9oCisjcHJh
Z21hIG9uY2UKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogI2luY2x1ZGUgIlByb3RlY3Rpb25TcGFj
ZUNvY29hLmgiCi0jZWxpZiBVU0UoQ0ZORVRXT1JLKQorI2VsaWYgVVNFKENGVVJMQ09OTkVDVElP
TikKICNpbmNsdWRlICJQcm90ZWN0aW9uU3BhY2VDRk5ldC5oIgogI2Vsc2UKIApAQCAtNTAsNSAr
NDksMyBAQCBwdWJsaWM6CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZgotCi0jZW5k
aWYgLy8gUHJvdGVjdGlvblNwYWNlX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvUHJvdGVjdGlvblNwYWNlQmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9Qcm90ZWN0aW9uU3BhY2VCYXNlLmNwcAkocmV2aXNpb24gMjA3
MDM1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Qcm90ZWN0aW9uU3BhY2VC
YXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsMTEgKzI3LDYgQEAKIAogI2luY2x1ZGUgIlBy
b3RlY3Rpb25TcGFjZS5oIgogCi0jaWYgVVNFKENGTkVUV09SSykgJiYgIVBMQVRGT1JNKENPQ09B
KQotI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ0YuaCIKLSNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZV
UkxQcm90ZWN0aW9uU3BhY2VQcml2Lmg+Ci0jZW5kaWYKLQogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiAvLyBOZWVkIHRvIGVuZm9yY2UgZW1wdHksIG5vbi1udWxsIHN0cmluZ3MgZHVlIHRvIHRoZSBw
aWNraW5lc3Mgb2YgdGhlIFN0cmluZyA9PSBTdHJpbmcgb3BlcmF0b3IKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuY3BwCShyZXZp
c2lvbiAyMDcwMzUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
SGFuZGxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU0LDcgKzE1NCw3IEBAIHZvaWQgUmVzb3Vy
Y2VIYW5kbGU6OmNsZWFyQ2xpZW50KCkKICAgICBkLT5tX2NsaWVudCA9IG51bGxwdHI7CiB9CiAK
LSNpZiAhUExBVEZPUk0oQ09DT0EpICYmICFVU0UoQ0ZORVRXT1JLKSAmJiAhVVNFKFNPVVApCisj
aWYgIVBMQVRGT1JNKENPQ09BKSAmJiAhVVNFKENGVVJMQ09OTkVDVElPTikgJiYgIVVTRShTT1VQ
KQogLy8gUmVzb3VyY2VIYW5kbGUgbmV2ZXIgdXNlcyBhc3luYyBjbGllbnQgY2FsbHMgb24gdGhl
c2UgcGxhdGZvcm1zIHlldC4KIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmNvbnRpbnVlV2lsbFNlbmRS
ZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmKQogewpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaAkocmV2aXNpb24gMjA3MDM1KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zMSw3ICszMSw3IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkUHJpb3JpdHku
aCIKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCi0jaWYgUExBVEZPUk0oQ09DT0EpIHx8
IFVTRShDRk5FVFdPUkspCisjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRlVSTENPTk5FQ1RJ
T04pCiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2VuZGlmCiAKQEAgLTYwLDE0ICs2MCwx
NCBAQCB0eXBlZGVmIHN0cnVjdCBvYmpjX29iamVjdCAqaWQ7CiAjZW5kaWYKICNlbmRpZgogCi0j
aWYgVVNFKENGTkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogdHlwZWRlZiBjb25z
dCBzdHJ1Y3QgX0NGQ2FjaGVkVVJMUmVzcG9uc2UqIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWY7CiB0
eXBlZGVmIHN0cnVjdCBfQ0ZVUkxDb25uZWN0aW9uKiBDRlVSTENvbm5lY3Rpb25SZWY7CiB0eXBl
ZGVmIGludCBDRkhUVFBDb29raWVTdG9yYWdlQWNjZXB0UG9saWN5OwogdHlwZWRlZiBzdHJ1Y3Qg
T3BhcXVlQ0ZIVFRQQ29va2llU3RvcmFnZSogQ0ZIVFRQQ29va2llU3RvcmFnZVJlZjsKICNlbmRp
ZgogCi0jaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRk5FVFdPUkspCisjaWYgUExBVEZPUk0o
Q09DT0EpIHx8IFVTRShDRlVSTENPTk5FQ1RJT04pCiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBfX0NG
VVJMU3RvcmFnZVNlc3Npb24qIENGVVJMU3RvcmFnZVNlc3Npb25SZWY7CiAjZW5kaWYKIApAQCAt
OTIsMjIgKzkyLDE3IEBAIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBTaGFyZWRCdWZm
ZXI7CiBjbGFzcyBUaW1lcjsKIAotY2xhc3MgUmVzb3VyY2VIYW5kbGUgOiBwdWJsaWMgUmVmQ291
bnRlZDxSZXNvdXJjZUhhbmRsZT4KLSNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKENGTkVUV09S
SykgfHwgVVNFKENVUkwpIHx8IFVTRShTT1VQKQotICAgICwgcHVibGljIEF1dGhlbnRpY2F0aW9u
Q2xpZW50Ci0jZW5kaWYKLSAgICB7CitjbGFzcyBSZXNvdXJjZUhhbmRsZSA6IHB1YmxpYyBSZWZD
b3VudGVkPFJlc291cmNlSGFuZGxlPiAsIHB1YmxpYyBBdXRoZW50aWNhdGlvbkNsaWVudCB7CiBw
dWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxSZXNvdXJjZUhhbmRsZT4g
Y3JlYXRlKE5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUmVzb3Vy
Y2VIYW5kbGVDbGllbnQqLCBib29sIGRlZmVyc0xvYWRpbmcsIGJvb2wgc2hvdWxkQ29udGVudFNu
aWZmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBsb2FkUmVzb3VyY2VTeW5jaHJv
bm91c2x5KE5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgU3RvcmVk
Q3JlZGVudGlhbHMsIFJlc291cmNlRXJyb3ImLCBSZXNvdXJjZVJlc3BvbnNlJiwgVmVjdG9yPGNo
YXI+JiBkYXRhKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgflJlc291cmNlSGFuZGxl
KCk7CiAKLSNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKENGTkVUV09SSykKKyNpZiBQTEFURk9S
TShDT0NPQSkgfHwgVVNFKENGVVJMQ09OTkVDVElPTikKICAgICBSZXNvdXJjZVJlcXVlc3Qgd2ls
bFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmLCBSZXNvdXJjZVJlc3BvbnNlJiYpOwogI2Vu
ZGlmCiAKLSNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKENGTkVUV09SSykgfHwgVVNFKENVUkwp
IHx8IFVTRShTT1VQKQogICAgIGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UoKTsKICAg
ICB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShjb25zdCBBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSYpOwogICAgIHZvaWQgcmVjZWl2ZWRDcmVkZW50aWFsKGNvbnN0IEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlJiwgY29uc3QgQ3JlZGVudGlhbCYpIG92ZXJyaWRlOwpAQCAtMTE1
LDkgKzExMCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlY2VpdmVkQ2FuY2VsbGF0aW9uKGNvbnN0
IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikgb3ZlcnJpZGU7CiAgICAgdm9pZCByZWNlaXZlZFJl
cXVlc3RUb1BlcmZvcm1EZWZhdWx0SGFuZGxpbmcoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UmKSBvdmVycmlkZTsKICAgICB2b2lkIHJlY2VpdmVkQ2hhbGxlbmdlUmVqZWN0aW9uKGNvbnN0
IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikgb3ZlcnJpZGU7Ci0jZW5kaWYKIAotI2lmIFBMQVRG
T1JNKENPQ09BKSB8fCBVU0UoQ0ZORVRXT1JLKQorI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0Uo
Q0ZVUkxDT05ORUNUSU9OKQogICAgIGJvb2wgdHJ5SGFuZGxlUGFzc3dvcmRCYXNlZEF1dGhlbnRp
Y2F0aW9uKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJik7CiAjZW5kaWYKIApAQCAtMTI1
LDcgKzExOSw3IEBAIHB1YmxpYzoKICAgICBib29sIGNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90
ZWN0aW9uU3BhY2UoY29uc3QgUHJvdGVjdGlvblNwYWNlJik7CiAjZW5kaWYKIAotI2lmIFBMQVRG
T1JNKENPQ09BKSAmJiAhVVNFKENGTkVUV09SSykKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICBX
RUJDT1JFX0VYUE9SVCBOU1VSTENvbm5lY3Rpb24gKmNvbm5lY3Rpb24oKSBjb25zdDsKICAgICBp
ZCBtYWtlRGVsZWdhdGUoYm9vbCk7CiAgICAgaWQgZGVsZWdhdGUoKTsKQEAgLTEzMywxOSArMTI3
LDE1IEBAIHB1YmxpYzoKICNlbmRpZgogICAgICAgICAKICNpZiBQTEFURk9STShDT0NPQSkgJiYg
RU5BQkxFKFdFQl9USU1JTkcpCi0jaWYgVVNFKENGTkVUV09SSykKLSAgICBzdGF0aWMgdm9pZCBn
ZXRDb25uZWN0aW9uVGltaW5nRGF0YShDRlVSTENvbm5lY3Rpb25SZWYsIE5ldHdvcmtMb2FkVGlt
aW5nJik7Ci0jZWxzZQogICAgIHN0YXRpYyB2b2lkIGdldENvbm5lY3Rpb25UaW1pbmdEYXRhKE5T
VVJMQ29ubmVjdGlvbiAqLCBOZXR3b3JrTG9hZFRpbWluZyYpOwogI2VuZGlmCi0jZW5kaWYKICAg
ICAgICAgCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdm9pZCBzY2hlZHVsZShXVEY6OlNjaGVk
dWxlUGFpciYpOwogICAgIHZvaWQgdW5zY2hlZHVsZShXVEY6OlNjaGVkdWxlUGFpciYpOwogI2Vu
ZGlmCiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAgICAg
Q0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBzdG9yYWdlU2Vzc2lvbigpIGNvbnN0OwogICAgIENGVVJM
Q29ubmVjdGlvblJlZiBjb25uZWN0aW9uKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgUmV0
YWluUHRyPENGVVJMQ29ubmVjdGlvblJlZj4gcmVsZWFzZUNvbm5lY3Rpb25Gb3JEb3dubG9hZCgp
OwpAQCAtMjA4LDEwICsxOTgsMTAgQEAgcHVibGljOgogI2VuZGlmCiAKICAgICAvLyBDYWxsZWQg
aW4gcmVzcG9uc2UgdG8gUmVzb3VyY2VIYW5kbGVDbGllbnQ6OndpbGxDYWNoZVJlc3BvbnNlQXN5
bmMoKS4KLSNpZiBVU0UoQ0ZORVRXT1JLKQorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBjb250aW51ZVdpbGxDYWNoZVJlc3BvbnNlKENGQ2FjaGVkVVJM
UmVzcG9uc2VSZWYpOwogI2VuZGlmCi0jaWYgUExBVEZPUk0oQ09DT0EpICYmICFVU0UoQ0ZORVRX
T1JLKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29udGlu
dWVXaWxsQ2FjaGVSZXNwb25zZShOU0NhY2hlZFVSTFJlc3BvbnNlICopOwogI2VuZGlmCiAKQEAg
LTIyNywxNCArMjE3LDEwIEBAIHB1YmxpYzoKICAgICB1c2luZyBSZWZDb3VudGVkPFJlc291cmNl
SGFuZGxlPjo6cmVmOwogICAgIHVzaW5nIFJlZkNvdW50ZWQ8UmVzb3VyY2VIYW5kbGU+OjpkZXJl
ZjsKIAotI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZORVRXT1JLKQorI2lmIFBMQVRGT1JN
KENPQ09BKSB8fCBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBDRlN0cmluZ1JlZiBzeW5jaHJvbm91c0xvYWRSdW5Mb29wTW9kZSgpOwogI2VuZGlmCiAKLSNp
ZiBQTEFURk9STShJT1MpICYmIFVTRShDRk5FVFdPUkspCi0gICAgc3RhdGljIENGTXV0YWJsZURp
Y3Rpb25hcnlSZWYgY3JlYXRlU1NMUHJvcGVydGllc0Zyb21OU1VSTFJlcXVlc3QoY29uc3QgUmVz
b3VyY2VSZXF1ZXN0Jik7Ci0jZW5kaWYKLQogICAgIHR5cGVkZWYgUmVmPFJlc291cmNlSGFuZGxl
PiAoKkJ1aWx0aW5Db25zdHJ1Y3RvcikoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBS
ZXNvdXJjZUhhbmRsZUNsaWVudCogY2xpZW50KTsKICAgICBzdGF0aWMgdm9pZCByZWdpc3RlckJ1
aWx0aW5Db25zdHJ1Y3Rvcihjb25zdCBBdG9taWNTdHJpbmcmIHByb3RvY29sLCBCdWlsdGluQ29u
c3RydWN0b3IpOwogCkBAIC0yNjMsMTkgKzI0OSwxOSBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVm
QXV0aGVudGljYXRpb25DbGllbnQoKSBvdmVycmlkZSB7IHJlZigpOyB9CiAgICAgdm9pZCBkZXJl
ZkF1dGhlbnRpY2F0aW9uQ2xpZW50KCkgb3ZlcnJpZGUgeyBkZXJlZigpOyB9CiAKLSNpZiBQTEFU
Rk9STShDT0NPQSkgfHwgVVNFKENGTkVUV09SSykKKyNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNF
KENGVVJMQ09OTkVDVElPTikKICAgICBlbnVtIGNsYXNzIFNjaGVkdWxpbmdCZWhhdmlvciB7IEFz
eW5jaHJvbm91cywgU3luY2hyb25vdXMgfTsKICNlbmRpZgogCi0jaWYgVVNFKENGTkVUV09SSykK
KyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogICAgIHZvaWQgY3JlYXRlQ0ZVUkxDb25uZWN0aW9u
KGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UsIGJvb2wgc2hvdWxkQ29udGVudFNuaWZm
LCBTY2hlZHVsaW5nQmVoYXZpb3IsIENGRGljdGlvbmFyeVJlZiBjbGllbnRQcm9wZXJ0aWVzKTsK
ICNlbmRpZgogCi0jaWYgUExBVEZPUk0oTUFDKSAmJiAhVVNFKENGTkVUV09SSykKKyNpZiBQTEFU
Rk9STShNQUMpCiAgICAgdm9pZCBjcmVhdGVOU1VSTENvbm5lY3Rpb24oaWQgZGVsZWdhdGUsIGJv
b2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UsIGJvb2wgc2hvdWxkQ29udGVudFNuaWZmLCBT
Y2hlZHVsaW5nQmVoYXZpb3IpOwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShJT1MpICYmICFVU0Uo
Q0ZORVRXT1JLKQorI2lmIFBMQVRGT1JNKElPUykKICAgICB2b2lkIGNyZWF0ZU5TVVJMQ29ubmVj
dGlvbihpZCBkZWxlZ2F0ZSwgYm9vbCBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSwgYm9vbCBz
aG91bGRDb250ZW50U25pZmYsIFNjaGVkdWxpbmdCZWhhdmlvciwgTlNEaWN0aW9uYXJ5ICpjb25u
ZWN0aW9uUHJvcGVydGllcyk7CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAJKHJldmlz
aW9uIDIwNzAzNSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VI
YW5kbGVDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Miw3ICs2Miw3IEBAIHZvaWQgUmVz
b3VyY2VIYW5kbGVDbGllbnQ6OmNhbkF1dGhlbnRpY2EKIH0KICNlbmRpZgogCi0jaWYgVVNFKENG
TkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogdm9pZCBSZXNvdXJjZUhhbmRsZUNs
aWVudDo6d2lsbENhY2hlUmVzcG9uc2VBc3luYyhSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBDRkNh
Y2hlZFVSTFJlc3BvbnNlUmVmIHJlc3BvbnNlKQogewogICAgIGhhbmRsZS0+Y29udGludWVXaWxs
Q2FjaGVSZXNwb25zZShyZXNwb25zZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5oCShyZXZpc2lvbiAyMDcw
MzUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xp
ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDEyICsyOSwxMiBAQAogI2luY2x1ZGUgIlBsYXRm
b3JtRXhwb3J0TWFjcm9zLmgiCiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogCi0jaWYgVVNFKENGTkVU
V09SSykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogI2luY2x1ZGUgPENGTmV0d29yay9DRlVS
TENhY2hlUHJpdi5oPgogI2luY2x1ZGUgPENGTmV0d29yay9DRlVSTFJlc3BvbnNlUHJpdi5oPgog
I2VuZGlmCiAKLSNpZiBQTEFURk9STShJT1MpIHx8IFVTRShDRk5FVFdPUkspCisjaWYgUExBVEZP
Uk0oSU9TKSB8fCBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIu
aD4KICNlbmRpZgogCkBAIC05Niw3ICs5Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90
ZWN0aW9uU3BhY2VBc3luYyhSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFByb3RlY3Rpb25TcGFjZSYp
OwogI2VuZGlmCiAgICAgICAgIC8vIENsaWVudCB3aWxsIHBhc3MgYW4gdXBkYXRlZCByZXF1ZXN0
IHVzaW5nIFJlc291cmNlSGFuZGxlOjpjb250aW51ZVdpbGxDYWNoZVJlc3BvbnNlKCkgd2hlbiBy
ZWFkeS4KLSNpZiBVU0UoQ0ZORVRXT1JLKQorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAgICAg
ICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCB3aWxsQ2FjaGVSZXNwb25zZUFzeW5jKFJl
c291cmNlSGFuZGxlKiwgQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZik7CiAjZWxpZiBQTEFURk9STShD
T0NPQSkKICAgICAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHdpbGxDYWNoZVJlc3Bv
bnNlQXN5bmMoUmVzb3VyY2VIYW5kbGUqLCBOU0NhY2hlZFVSTFJlc3BvbnNlICopOwpAQCAtMTE4
LDE2ICsxMTgsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2VuZGlmCiAgICAgICAgIHZpcnR1
YWwgdm9pZCByZWNlaXZlZENhbmNlbGxhdGlvbihSZXNvdXJjZUhhbmRsZSosIGNvbnN0IEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlJikgeyB9CiAKLSNpZiBQTEFURk9STShJT1MpIHx8IFVTRShDRk5F
VFdPUkspCisjaWYgUExBVEZPUk0oSU9TKSB8fCBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogICAgICAg
ICB2aXJ0dWFsIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IGNvbm5lY3Rpb25Qcm9wZXJ0aWVz
KFJlc291cmNlSGFuZGxlKikgeyByZXR1cm4gbnVsbHB0cjsgfQogI2VuZGlmCiAKLSNpZiBVU0Uo
Q0ZORVRXT1JLKQorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAgICAgICAgIHZpcnR1YWwgQ0ZD
YWNoZWRVUkxSZXNwb25zZVJlZiB3aWxsQ2FjaGVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSosIENG
Q2FjaGVkVVJMUmVzcG9uc2VSZWYgcmVzcG9uc2UpIHsgcmV0dXJuIHJlc3BvbnNlOyB9Ci0jaWYg
UExBVEZPUk0oV0lOKQogICAgICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2FjaGVSZXNwb25zZShS
ZXNvdXJjZUhhbmRsZSosIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYpIHsgcmV0dXJuIHRydWU7IH0K
LSNlbmRpZiAvLyBQTEFURk9STShXSU4pCi0KICNlbGlmIFBMQVRGT1JNKENPQ09BKQogICAgICAg
ICB2aXJ0dWFsIE5TQ2FjaGVkVVJMUmVzcG9uc2UgKndpbGxDYWNoZVJlc3BvbnNlKFJlc291cmNl
SGFuZGxlKiwgTlNDYWNoZWRVUkxSZXNwb25zZSAqcmVzcG9uc2UpIHsgcmV0dXJuIHJlc3BvbnNl
OyB9CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3Vy
Y2VIYW5kbGVJbnRlcm5hbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oCShyZXZpc2lvbiAyMDcwMzUpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaAko
d29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNyBAQAogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKIAotI2lmIFVTRShDRk5FVFdPUkspCisj
aWYgVVNFKENGVVJMQ09OTkVDVElPTikKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZUNGVVJMQ29u
bmVjdGlvbkRlbGVnYXRlLmgiCiAjaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGVVJMQ29ubmVjdGlvblBy
aXYuaD4KICNlbmRpZgpAQCAtNjEsNyArNjEsNyBAQCBPQkpDX0NMQVNTIE5TVVJMQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2U7CiBPQkpDX0NMQVNTIE5TVVJMQ29ubmVjdGlvbjsKICNlbmRpZgogCi0j
aWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRk5FVFdPUkspCisjaWYgUExBVEZPUk0oQ09DT0Ep
IHx8IFVTRShDRlVSTENPTk5FQ1RJT04pCiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBfX0NGVVJMU3Rv
cmFnZVNlc3Npb24qIENGVVJMU3RvcmFnZVNlc3Npb25SZWY7CiAjZW5kaWYKIApAQCAtODMsNyAr
ODMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICAsIG1fZGVmZXJzTG9hZGlu
ZyhkZWZlcnNMb2FkaW5nKQogICAgICAgICAgICAgLCBtX3Nob3VsZENvbnRlbnRTbmlmZihzaG91
bGRDb250ZW50U25pZmYpCiAgICAgICAgICAgICAsIG1fdXNlc0FzeW5jQ2FsbGJhY2tzKGNsaWVu
dCAmJiBjbGllbnQtPnVzZXNBc3luY0NhbGxiYWNrcygpKQotI2lmIFVTRShDRk5FVFdPUkspCisj
aWYgVVNFKENGVVJMQ09OTkVDVElPTikKICAgICAgICAgICAgICwgbV9jdXJyZW50UmVxdWVzdChy
ZXF1ZXN0KQogI2VuZGlmCiAjaWYgVVNFKENVUkwpCkBAIC0xMzEsMTkgKzEzMSwxOSBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wgbV9kZWZlcnNMb2FkaW5nOwogICAgICAgICBi
b29sIG1fc2hvdWxkQ29udGVudFNuaWZmOwogICAgICAgICBib29sIG1fdXNlc0FzeW5jQ2FsbGJh
Y2tzOwotI2lmIFVTRShDRk5FVFdPUkspCisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKICAgICAg
ICAgUmV0YWluUHRyPENGVVJMQ29ubmVjdGlvblJlZj4gbV9jb25uZWN0aW9uOwogICAgICAgICBS
ZXNvdXJjZVJlcXVlc3QgbV9jdXJyZW50UmVxdWVzdDsKICAgICAgICAgUmVmUHRyPFJlc291cmNl
SGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU+IG1fY29ubmVjdGlvbkRlbGVnYXRlOwogI2Vu
ZGlmCi0jaWYgUExBVEZPUk0oQ09DT0EpICYmICFVU0UoQ0ZORVRXT1JLKQorI2lmIFBMQVRGT1JN
KENPQ09BKQogICAgICAgICBSZXRhaW5QdHI8TlNVUkxDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247
CiAgICAgICAgIFJldGFpblB0cjxpZD4gbV9kZWxlZ2F0ZTsKICNlbmRpZgogI2lmIFBMQVRGT1JN
KENPQ09BKQogICAgICAgICBib29sIG1fc3RhcnRXaGVuU2NoZWR1bGVkOwogI2VuZGlmCi0jaWYg
UExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRk5FVFdPUkspCisjaWYgUExBVEZPUk0oQ09DT0EpIHx8
IFVTRShDRlVSTENPTk5FQ1RJT04pCiAgICAgICAgIFJldGFpblB0cjxDRlVSTFN0b3JhZ2VTZXNz
aW9uUmVmPiBtX3N0b3JhZ2VTZXNzaW9uOwogI2VuZGlmCiAjaWYgVVNFKENVUkwpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1
ZXN0QmFzZS5jcHAJKHJldmlzaW9uIDIwNzAzNSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcg
KzMyLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0jaWYgIVVTRShTT1VQKSAmJiAoIVBM
QVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZORVRXT1JLKSkKKyNpZiAhVVNFKFNPVVApICYmICghUExB
VEZPUk0oQ09DT0EpIHx8IFVTRShDRlVSTENPTk5FQ1RJT04pKQogZG91YmxlIFJlc291cmNlUmVx
dWVzdEJhc2U6OnNfZGVmYXVsdFRpbWVvdXRJbnRlcnZhbCA9IElOVF9NQVg7CiAjZWxzZQogLy8g
V2lsbCB1c2UgTlNVUkxSZXF1ZXN0IGRlZmF1bHQgdGltZW91dCB1bmxlc3Mgc2V0IHRvIGEgbm9u
LXplcm8gdmFsdWUgd2l0aCBzZXREZWZhdWx0VGltZW91dEludGVydmFsKCkuCkBAIC02MDIsNyAr
NjAyLDcgQEAgdm9pZCBSZXNvdXJjZVJlcXVlc3RCYXNlOjp1cGRhdGVSZXNvdXJjZQogICAgIH0K
IH0KIAotI2lmICFQTEFURk9STShDT0NPQSkgJiYgIVVTRShDRk5FVFdPUkspICYmICFVU0UoU09V
UCkKKyNpZiAhUExBVEZPUk0oQ09DT0EpICYmICFVU0UoQ0ZVUkxDT05ORUNUSU9OKSAmJiAhVVNF
KFNPVVApCiB1bnNpZ25lZCBpbml0aWFsaXplTWF4aW11bUhUVFBDb25uZWN0aW9uQ291bnRQZXJI
b3N0KCkKIHsKICAgICAvLyBUaGlzIGlzIHVzZWQgYnkgdGhlIGxvYWRlciB0byBjb250cm9sIHRo
ZSBudW1iZXIgb2YgaXNzdWVkIHBhcmFsbGVsIGxvYWQgcmVxdWVzdHMuIApJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9BdXRoZW50aWNhdGlvbkNGLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0F1dGhlbnRpY2F0aW9u
Q0YuY3BwCShyZXZpc2lvbiAyMDcwMzUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NmL0F1dGhlbnRpY2F0aW9uQ0YuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25DRi5oIgog
Ci0jaWYgVVNFKENGTkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogCiAjaW5jbHVk
ZSAiQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCIKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNs
aWVudC5oIgpAQCAtNTEsMTggKzUxLDggQEAgQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6OkF1dGhl
bnRpY2F0aW9uQwogewogfQogCi1BdXRoZW50aWNhdGlvbkNoYWxsZW5nZTo6QXV0aGVudGljYXRp
b25DaGFsbGVuZ2UoQ0ZVUkxBdXRoQ2hhbGxlbmdlUmVmIGNmQ2hhbGxlbmdlLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEF1dGhlbnRpY2F0aW9uQ2xp
ZW50KiBhdXRoZW50aWNhdGlvbkNsaWVudCkKLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICA6IEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZShQcm90ZWN0aW9uU3BhY2UoQ0ZVUkxBdXRoQ2hhbGxl
bmdlR2V0UHJvdGVjdGlvblNwYWNlKGNmQ2hhbGxlbmdlKSksCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgQ3JlZGVudGlhbChDRlVSTEF1dGhDaGFsbGVuZ2VHZXRQcm9wb3NlZENy
ZWRlbnRpYWwoY2ZDaGFsbGVuZ2UpKSwKLSNlbHNlCi0gICAgOiBBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZUJhc2UoY29yZShDRlVSTEF1dGhDaGFsbGVuZ2VHZXRQcm90ZWN0aW9uU3BhY2UoY2ZDaGFs
bGVuZ2UpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3JlKENGVVJMQXV0
aENoYWxsZW5nZUdldFByb3Bvc2VkQ3JlZGVudGlhbChjZkNoYWxsZW5nZSkpLAotI2VuZGlmCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0ZVUkxBdXRoQ2hhbGxlbmdlR2V0UHJl
dmlvdXNGYWlsdXJlQ291bnQoY2ZDaGFsbGVuZ2UpLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIChDRlVSTFJlc3BvbnNlUmVmKUNGVVJMQXV0aENoYWxsZW5nZUdldEZhaWx1cmVS
ZXNwb25zZShjZkNoYWxsZW5nZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Q0ZVUkxBdXRoQ2hhbGxlbmdlR2V0RXJyb3IoY2ZDaGFsbGVuZ2UpKQorQXV0aGVudGljYXRpb25D
aGFsbGVuZ2U6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKENGVVJMQXV0aENoYWxsZW5nZVJlZiBj
ZkNoYWxsZW5nZSwgQXV0aGVudGljYXRpb25DbGllbnQqIGF1dGhlbnRpY2F0aW9uQ2xpZW50KQor
ICAgIDogQXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlKGNvcmUoQ0ZVUkxBdXRoQ2hhbGxlbmdl
R2V0UHJvdGVjdGlvblNwYWNlKGNmQ2hhbGxlbmdlKSksIGNvcmUoQ0ZVUkxBdXRoQ2hhbGxlbmdl
R2V0UHJvcG9zZWRDcmVkZW50aWFsKGNmQ2hhbGxlbmdlKSksIENGVVJMQXV0aENoYWxsZW5nZUdl
dFByZXZpb3VzRmFpbHVyZUNvdW50KGNmQ2hhbGxlbmdlKSwgKENGVVJMUmVzcG9uc2VSZWYpQ0ZV
UkxBdXRoQ2hhbGxlbmdlR2V0RmFpbHVyZVJlc3BvbnNlKGNmQ2hhbGxlbmdlKSwgQ0ZVUkxBdXRo
Q2hhbGxlbmdlR2V0RXJyb3IoY2ZDaGFsbGVuZ2UpKQogICAgICwgbV9hdXRoZW50aWNhdGlvbkNs
aWVudChhdXRoZW50aWNhdGlvbkNsaWVudCkKICAgICAsIG1fY2ZDaGFsbGVuZ2UoY2ZDaGFsbGVu
Z2UpCiB7CkBAIC05MywyMiArODMsMTIgQEAgQ0ZVUkxBdXRoQ2hhbGxlbmdlUmVmIGNyZWF0ZUNG
KGNvbnN0IEF1dAogewogICAgIC8vIEZJWE1FOiBXaHkgbm90IGNhY2hlIENGVVJMQXV0aENoYWxs
ZW5nZVJlZiBpbiBtX2NmQ2hhbGxlbmdlPyBGb3VuZGF0aW9uIGNvdW50ZXJwYXJ0IGRvZXMgdGhh
dC4KIAotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIENGVVJMQXV0aENoYWxsZW5nZVJlZiByZXN1
bHQgPSBDRlVSTEF1dGhDaGFsbGVuZ2VDcmVhdGUoMCwgY29yZUNoYWxsZW5nZS5wcm90ZWN0aW9u
U3BhY2UoKS5jZlNwYWNlKCksIGNvcmVDaGFsbGVuZ2UucHJvcG9zZWRDcmVkZW50aWFsKCkuY2ZD
cmVkZW50aWFsKCksCi0jZWxzZQogICAgIFJldGFpblB0cjxDRlVSTENyZWRlbnRpYWxSZWY+IGNy
ZWRlbnRpYWwgPSBhZG9wdENGKGNyZWF0ZUNGKGNvcmVDaGFsbGVuZ2UucHJvcG9zZWRDcmVkZW50
aWFsKCkpKTsKICAgICBSZXRhaW5QdHI8Q0ZVUkxQcm90ZWN0aW9uU3BhY2VSZWY+IHByb3RlY3Rp
b25TcGFjZSA9IGFkb3B0Q0YoY3JlYXRlQ0YoY29yZUNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2Uo
KSkpOwogCi0gICAgQ0ZVUkxBdXRoQ2hhbGxlbmdlUmVmIHJlc3VsdCA9IENGVVJMQXV0aENoYWxs
ZW5nZUNyZWF0ZSgwLCBwcm90ZWN0aW9uU3BhY2UuZ2V0KCksIGNyZWRlbnRpYWwuZ2V0KCksCi0j
ZW5kaWYKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3JlQ2hhbGxl
bmdlLnByZXZpb3VzRmFpbHVyZUNvdW50KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29yZUNoYWxsZW5nZS5mYWlsdXJlUmVzcG9uc2UoKS5jZlVSTFJlc3BvbnNl
KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29yZUNoYWxsZW5n
ZS5lcnJvcigpKTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBDRlVSTEF1dGhDaGFs
bGVuZ2VDcmVhdGUoMCwgcHJvdGVjdGlvblNwYWNlLmdldCgpLCBjcmVkZW50aWFsLmdldCgpLCBj
b3JlQ2hhbGxlbmdlLnByZXZpb3VzRmFpbHVyZUNvdW50KCksIGNvcmVDaGFsbGVuZ2UuZmFpbHVy
ZVJlc3BvbnNlKCkuY2ZVUkxSZXNwb25zZSgpLCBjb3JlQ2hhbGxlbmdlLmVycm9yKCkpOwogfQog
Ci0jaWYgUExBVEZPUk0oV0lOKQotCiBDRlVSTENyZWRlbnRpYWxSZWYgY3JlYXRlQ0YoY29uc3Qg
Q3JlZGVudGlhbCYgY29yZUNyZWRlbnRpYWwpCiB7CiAgICAgQ0ZVUkxDcmVkZW50aWFsUGVyc2lz
dGVuY2UgcGVyc2lzdGVuY2UgPSBrQ0ZVUkxDcmVkZW50aWFsUGVyc2lzdGVuY2VOb25lOwpAQCAt
MjkwLDggKzI3MCw3IEBAIFByb3RlY3Rpb25TcGFjZSBjb3JlKENGVVJMUHJvdGVjdGlvblNwYWMK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIENGVVJMUHJvdGVjdGlvblNwYWNlR2V0UmVhbG0o
Y2ZTcGFjZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY2hlbWUpOwogfQotI2VuZGlm
IC8vIFBMQVRGT1JNKFdJTikKIAogfTsKIAotI2VuZGlmIC8vIFVTRShDRk5FVFdPUkspCisjZW5k
aWYgLy8gVVNFKENGVVJMQ09OTkVDVElPTikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY2YvQXV0aGVudGljYXRpb25DRi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQXV0aGVudGljYXRpb25DRi5oCShyZXZpc2lvbiAyMDcw
MzUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0F1dGhlbnRpY2F0aW9u
Q0YuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsMTAgKzIzLDkgQEAKICAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAog
ICovCiAKLSNpZm5kZWYgQXV0aGVudGljYXRpb25DRl9oCi0jZGVmaW5lIEF1dGhlbnRpY2F0aW9u
Q0ZfaAorI3ByYWdtYSBvbmNlCiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQorI2lmIFVTRShDRlVSTENP
Tk5FQ1RJT04pCiAKICNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZVUkxDcmVkZW50aWFsUHJpdi5oPgog
CkBAIC00MCwyMCArMzksMTAgQEAgY2xhc3MgQ3JlZGVudGlhbDsKIGNsYXNzIFByb3RlY3Rpb25T
cGFjZTsKIAogQ0ZVUkxBdXRoQ2hhbGxlbmdlUmVmIGNyZWF0ZUNGKGNvbnN0IEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlJik7Ci0jaWYgUExBVEZPUk0oV0lOKQogQ0ZVUkxDcmVkZW50aWFsUmVmIGNy
ZWF0ZUNGKGNvbnN0IENyZWRlbnRpYWwmKTsKIENGVVJMUHJvdGVjdGlvblNwYWNlUmVmIGNyZWF0
ZUNGKGNvbnN0IFByb3RlY3Rpb25TcGFjZSYpOwotI2VuZGlmCi0KLSNpZiBQTEFURk9STShDT0NP
QSkKLUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIGNvcmUoQ0ZVUkxBdXRoQ2hhbGxlbmdlUmVmKTsK
LSNlbmRpZgotI2lmIFBMQVRGT1JNKFdJTikKIENyZWRlbnRpYWwgY29yZShDRlVSTENyZWRlbnRp
YWxSZWYpOwogUHJvdGVjdGlvblNwYWNlIGNvcmUoQ0ZVUkxQcm90ZWN0aW9uU3BhY2VSZWYpOwot
I2VuZGlmCiB9CiAKLSNlbmRpZiAvLyBVU0UoQ0ZORVRXT1JLKQotCi0jZW5kaWYgLy8gQXV0aGVu
dGljYXRpb25DRl9oCisjZW5kaWYgLy8gVVNFKENGVVJMQ09OTkVDVElPTikKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0F1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlLmgJKHJldmlzaW9uIDIwNzAzNSkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY2YvQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaAkod29ya2luZyBjb3B5
KQpAQCAtMjMsMTQgKzIzLDEzIEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCi0jaWZuZGVmIEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlX2gKLSNkZWZpbmUgQXV0aGVudGljYXRpb25DaGFsbGVuZ2Vf
aAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2Uu
aCIKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNsaWVudC5oIgogI2luY2x1ZGUgPHd0Zi9SZWZQ
dHIuaD4KIAotI2lmIFVTRShDRk5FVFdPUkspCisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKIAog
dHlwZWRlZiBzdHJ1Y3QgX0NGVVJMQXV0aENoYWxsZW5nZSogQ0ZVUkxBdXRoQ2hhbGxlbmdlUmVm
OwogCkBAIC01MCw3ICs0OSw3IEBAIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIDogcHVi
bGljIEEKIHB1YmxpYzoKICAgICBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgpIHt9CiAgICAgV0VC
Q09SRV9FWFBPUlQgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY29uc3QgUHJvdGVjdGlvblNwYWNl
JiwgY29uc3QgQ3JlZGVudGlhbCYgcHJvcG9zZWRDcmVkZW50aWFsLCB1bnNpZ25lZCBwcmV2aW91
c0ZhaWx1cmVDb3VudCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFJlc291cmNlRXJy
b3ImKTsKLSNpZiBVU0UoQ0ZORVRXT1JLKQorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAgICAg
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UoQ0ZVUkxBdXRoQ2hhbGxlbmdlUmVmLCBBdXRoZW50aWNh
dGlvbkNsaWVudCopOwogCiAgICAgQ0ZVUkxBdXRoQ2hhbGxlbmdlUmVmIGNmVVJMQXV0aENoYWxs
ZW5nZVJlZigpIGNvbnN0IHsgcmV0dXJuIG1fY2ZDaGFsbGVuZ2UuZ2V0KCk7IH0KQEAgLTY5LDcg
KzY4LDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgYm9vbCBwbGF0Zm9ybUNvbXBhcmUoY29uc3Qg
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGEsIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
JiBiKTsKIAogICAgIC8vIFBsYXRmb3JtIGNoYWxsZW5nZSBtYXkgYmUgbnVsbC4gSWYgaXQncyBu
b24tbnVsbCwgaXQncyBhbHdheXMgdXAgdG8gZGF0ZSB3aXRoIG90aGVyIGZpZWxkcy4KLSNpZiBV
U0UoQ0ZORVRXT1JLKQorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAgICAgUmVmUHRyPEF1dGhl
bnRpY2F0aW9uQ2xpZW50PiBtX2F1dGhlbnRpY2F0aW9uQ2xpZW50OwogICAgIFJldGFpblB0cjxD
RlVSTEF1dGhDaGFsbGVuZ2VSZWY+IG1fY2ZDaGFsbGVuZ2U7CiAjZWxzZQpAQCAtNzksNSArNzgs
MyBAQCBwcml2YXRlOgogfTsKIAogfQotCi0jZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY2YvQ29va2llSmFyQ0ZOZXQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQ29va2llSmFyQ0ZOZXQuY3BwCShyZXZpc2lv
biAyMDcwMzUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZUph
ckNGTmV0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIlBsYXRmb3JtQ29va2llSmFyLmgiCiAKLSNpZiBVU0UoQ0ZORVRX
T1JLKQorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAKICNpbmNsdWRlICJDRk5ldHdvcmtTUEku
aCIKICNpbmNsdWRlICJDb29raWUuaCIKQEAgLTI1NSw0ICsyNTUsNCBAQCB2b2lkIGRlbGV0ZUFs
bENvb2tpZXNNb2RpZmllZFNpbmNlKGNvbnN0CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAot
I2VuZGlmIC8vIFVTRShDRk5FVFdPUkspCisjZW5kaWYgLy8gVVNFKENGVVJMQ09OTkVDVElPTikK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQ3JlZGVudGlhbFN0b3Jh
Z2VDRk5ldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jZi9DcmVkZW50aWFsU3RvcmFnZUNGTmV0LmNwcAkocmV2aXNpb24gMjA3MDM1KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9DcmVkZW50aWFsU3RvcmFnZUNGTmV0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjYsMjMgKzI2LDE0IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiQ3JlZGVudGlhbFN0b3JhZ2UuaCIKIAotI2lmIFVTRShDRk5FVFdPUkspCisj
aWYgVVNFKENGVVJMQ09OTkVDVElPTikKIAogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ0YuaCIK
ICNpbmNsdWRlICJDRk5ldHdvcmtTUEkuaCIKICNpbmNsdWRlICJDcmVkZW50aWFsLmgiCiAjaW5j
bHVkZSAiUHJvdGVjdGlvblNwYWNlLmgiCi0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotCi0j
aWYgUExBVEZPUk0oQ09DT0EpCi0jaW5jbHVkZSAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgot
I2VsaWYgUExBVEZPUk0oV0lOKQogI2luY2x1ZGUgPFdlYktpdFN5c3RlbUludGVyZmFjZS9XZWJL
aXRTeXN0ZW1JbnRlcmZhY2UuaD4KLSNlbmRpZgotCi0jaWYgUExBVEZPUk0oSU9TKQotI2luY2x1
ZGUgPENGTmV0d29yay9DRlVSTENyZWRlbnRpYWxTdG9yYWdlLmg+Ci0jZW5kaWYKKyNpbmNsdWRl
IDx3dGYvUmV0YWluUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKQEAgLTU0LDI5
ICs0NSwxMSBAQCBzdGF0aWMgaW5saW5lIENGVVJMQ3JlZGVudGlhbFJlZiBjb3B5Q3JlCiAKIENy
ZWRlbnRpYWwgQ3JlZGVudGlhbFN0b3JhZ2U6OmdldEZyb21QZXJzaXN0ZW50U3RvcmFnZShjb25z
dCBQcm90ZWN0aW9uU3BhY2UmIHByb3RlY3Rpb25TcGFjZSkKIHsKLSNpZiBQTEFURk9STShDT0NP
QSkKLSAgICBhdXRvIGNyZWRlbnRpYWxDRiA9IGFkb3B0Q0YoY29weUNyZWRlbnRpYWxGcm9tUHJv
dGVjdGlvblNwYWNlKHByb3RlY3Rpb25TcGFjZS5jZlNwYWNlKCkpKTsKLSAgICByZXR1cm4gQ3Jl
ZGVudGlhbChjcmVkZW50aWFsQ0YuZ2V0KCkpOwotI2Vsc2UKICAgICBhdXRvIHByb3RlY3Rpb25T
cGFjZUNGID0gYWRvcHRDRihjcmVhdGVDRihwcm90ZWN0aW9uU3BhY2UpKTsKICAgICBhdXRvIGNy
ZWRlbnRpYWxDRiA9IGFkb3B0Q0YoY29weUNyZWRlbnRpYWxGcm9tUHJvdGVjdGlvblNwYWNlKHBy
b3RlY3Rpb25TcGFjZUNGLmdldCgpKSk7CiAgICAgcmV0dXJuIGNvcmUoY3JlZGVudGlhbENGLmdl
dCgpKTsKLSNlbmRpZgotfQotCi0jaWYgUExBVEZPUk0oSU9TKQotdm9pZCBDcmVkZW50aWFsU3Rv
cmFnZTo6c2F2ZVRvUGVyc2lzdGVudFN0b3JhZ2UoY29uc3QgUHJvdGVjdGlvblNwYWNlJiBwcm90
ZWN0aW9uU3BhY2UsIGNvbnN0IENyZWRlbnRpYWwmIGNyZWRlbnRpYWwpCi17Ci0gICAgUmV0YWlu
UHRyPENGVVJMQ3JlZGVudGlhbFN0b3JhZ2VSZWY+IHN0b3JhZ2VDRiA9IGFkb3B0Q0YoQ0ZVUkxD
cmVkZW50aWFsU3RvcmFnZUNyZWF0ZSgwKSk7Ci0KLSAgICBpZiAoY3JlZGVudGlhbC5wZXJzaXN0
ZW5jZSgpID09IENyZWRlbnRpYWxQZXJzaXN0ZW5jZU5vbmUpIHsKLSAgICAgICAgQ3JlZGVudGlh
bCBzZXNzaW9uQ3JlZGVudGlhbChjcmVkZW50aWFsLCBDcmVkZW50aWFsUGVyc2lzdGVuY2VGb3JT
ZXNzaW9uKTsKLSAgICAgICAgQ0ZVUkxDcmVkZW50aWFsU3RvcmFnZVNldERlZmF1bHRDcmVkZW50
aWFsRm9yUHJvdGVjdGlvblNwYWNlKHN0b3JhZ2VDRi5nZXQoKSwgc2Vzc2lvbkNyZWRlbnRpYWwu
Y2ZDcmVkZW50aWFsKCksIHByb3RlY3Rpb25TcGFjZS5jZlNwYWNlKCkpOwotICAgIH0gZWxzZQot
ICAgICAgICBDRlVSTENyZWRlbnRpYWxTdG9yYWdlU2V0RGVmYXVsdENyZWRlbnRpYWxGb3JQcm90
ZWN0aW9uU3BhY2Uoc3RvcmFnZUNGLmdldCgpLCBjcmVkZW50aWFsLmNmQ3JlZGVudGlhbCgpLCBw
cm90ZWN0aW9uU3BhY2UuY2ZTcGFjZSgpKTsKIH0KLSNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKLSNlbmRpZiAvLyBVU0UoQ0ZORVRXT1JLKQorI2VuZGlmIC8vIFVTRShDRlVSTENP
Tk5FQ1RJT04pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0xvYWRl
clJ1bkxvb3BDRi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jZi9Mb2FkZXJSdW5Mb29wQ0YuY3BwCShyZXZpc2lvbiAyMDcwMzUpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0xvYWRlclJ1bkxvb3BDRi5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJM
b2FkZXJSdW5Mb29wQ0YuaCIKIAotI2lmIFVTRShDRk5FVFdPUkspCisjaWYgVVNFKENGVVJMQ09O
TkVDVElPTikKIAogI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NvcmVGb3VuZGF0aW9uLmg+CiAj
aW5jbHVkZSA8bGltaXRzPgpAQCAtODcsNCArODcsNCBAQCBDRlJ1bkxvb3BSZWYgbG9hZGVyUnVu
TG9vcCgpCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vIFVTRShDRk5FVFdP
UkspCisjZW5kaWYgLy8gVVNFKENGVVJMQ09OTkVDVElPTikKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY2YvTG9hZGVyUnVuTG9vcENGLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Mb2FkZXJSdW5Mb29wQ0YuaAkocmV2aXNp
b24gMjA3MDM1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Mb2FkZXJS
dW5Mb29wQ0YuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsMTAgKzIzLDkgQEAKICAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIExvYWRlclJ1bkxvb3BDRl9o
Ci0jZGVmaW5lIExvYWRlclJ1bkxvb3BDRl9oCisjcHJhZ21hIG9uY2UKIAotI2lmIFVTRShDRk5F
VFdPUkspCisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKIAogdHlwZWRlZiBzdHJ1Y3QgX19DRlJ1
bkxvb3AqIENGUnVuTG9vcFJlZjsKIApAQCAtMzYsNiArMzUsNCBAQCBDRlJ1bkxvb3BSZWYgbG9h
ZGVyUnVuTG9vcCgpOwogCiB9CiAKLSNlbmRpZiAvLyBVU0UoQ0ZORVRXT1JLKQotCi0jZW5kaWYg
Ly8gTG9hZGVyUnVuTG9vcF9oCisjZW5kaWYgLy8gVVNFKENGVVJMQ09OTkVDVElPTikKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9u
Q0ZOZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXQuY3BwCShyZXZpc2lvbiAyMDcwMzUpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNG
TmV0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTMsMTEgKzkzLDExIEBAIFJldGFpblB0cjxDRkhU
VFBDb29raWVTdG9yYWdlUmVmPiBOZXR3b3IKICAgICBpZiAobV9wbGF0Zm9ybVNlc3Npb24pCiAg
ICAgICAgIHJldHVybiBhZG9wdENGKF9DRlVSTFN0b3JhZ2VTZXNzaW9uQ29weUNvb2tpZVN0b3Jh
Z2Uoa0NGQWxsb2NhdG9yRGVmYXVsdCwgbV9wbGF0Zm9ybVNlc3Npb24uZ2V0KCkpKTsKIAotI2lm
IFVTRShDRk5FVFdPUkspCisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKICAgICByZXR1cm4gX0NG
SFRUUENvb2tpZVN0b3JhZ2VHZXREZWZhdWx0KGtDRkFsbG9jYXRvckRlZmF1bHQpOwogI2Vsc2UK
ICAgICAvLyBXaGVuIHVzaW5nIE5TVVJMQ29ubmVjdGlvbiwgd2UgYWxzbyB1c2UgaXRzIHNoYXJl
ZCBjb29raWUgc3RvcmFnZS4KLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbnVsbHB0cjsKICNl
bmRpZgogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Byb3Rl
Y3Rpb25TcGFjZUNGTmV0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NmL1Byb3RlY3Rpb25TcGFjZUNGTmV0LmNwcAkocmV2aXNpb24gMjA3MDM1KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Qcm90ZWN0aW9uU3BhY2VDRk5l
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJQcm90ZWN0aW9uU3BhY2VDRk5ldC5oIgogCi0jaWYgVVNFKENGTkVUV09S
SykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogCiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25D
Ri5oIgogI2luY2x1ZGUgPENGTmV0d29yay9DRlVSTFByb3RlY3Rpb25TcGFjZVByaXYuaD4KQEAg
LTQyLDQgKzQyLDQgQEAgYm9vbCBQcm90ZWN0aW9uU3BhY2U6OnJlY2VpdmVzQ3JlZGVudGlhbAog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZiAvLyBVU0UoQ0ZORVRXT1JLKQorI2Vu
ZGlmIC8vIFVTRShDRlVSTENPTk5FQ1RJT04pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NmL1Byb3RlY3Rpb25TcGFjZUNGTmV0LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Qcm90ZWN0aW9uU3BhY2VDRk5ldC5oCShyZXZp
c2lvbiAyMDcwMzUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Byb3Rl
Y3Rpb25TcGFjZUNGTmV0LmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDExICsyMywxMCBAQAogICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCiAgKi8KIAotI2lmbmRlZiBQcm90ZWN0aW9uU3BhY2VDRk5ldF9oCi0jZGVm
aW5lIFByb3RlY3Rpb25TcGFjZUNGTmV0X2gKKyNwcmFnbWEgb25jZQogCi0jaWYgIVBMQVRGT1JN
KFdJTikgfHwgIVVTRShDRk5FVFdPUkspCi0jZXJyb3IgVGhpcyBoZWFkZXIgc2hvdWxkIG9ubHkg
YmUgaW5jbHVkZWQgd2hlbiB0YXJnZXRpbmcgV2luZG93cyBhbmQgdXNpbmcgQ0ZOZXR3b3JrLgor
I2lmICFQTEFURk9STShXSU4pIHx8ICFVU0UoQ0ZVUkxDT05ORUNUSU9OKQorI2Vycm9yIFRoaXMg
aGVhZGVyIHNob3VsZCBvbmx5IGJlIGluY2x1ZGVkIHdoZW4gdGFyZ2V0aW5nIFdpbmRvd3MgYW5k
IHVzaW5nIENGVVJMQ29ubmVjdGlvbi4KICNlbmRpZgogCiAjaW5jbHVkZSAiUHJvdGVjdGlvblNw
YWNlQmFzZS5oIgpAQCAtNDgsNSArNDcsMyBAQCBwdWJsaWM6CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBQcm90ZWN0aW9uU3BhY2VDRk5ldF9oCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3IuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3IuaAko
cmV2aXNpb24gMjA3MDM1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9S
ZXNvdXJjZUVycm9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDEwICsyOCwxMSBAQAogI2luY2x1
ZGUgIlJlc291cmNlRXJyb3JCYXNlLmgiCiAKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Ci0j
aWYgVVNFKENGTkVUV09SSykKKworI2lmIFBMQVRGT1JNKFdJTikKKyNpZiBVU0UoQ0ZVUkxDT05O
RUNUSU9OKQogI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NGU3RyZWFtLmg+CiAjZW5kaWYKLSNp
ZiBQTEFURk9STShXSU4pCiAjaW5jbHVkZSA8d2luZG93cy5oPgogI2luY2x1ZGUgPHdpbmNyeXB0
Lmg+IC8vIHdpbmRvd3MuaCBtdXN0IGJlIGluY2x1ZGVkIGJlZm9yZSB3aW5jcnlwdC5oLgogI2Vu
ZGlmCkBAIC02MSwxMiArNjIsMTAgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIENGRXJy
b3JSZWYgY2ZFcnJvcigpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIG9wZXJhdG9yIENGRXJy
b3JSZWYoKSBjb25zdDsKIAotI2lmIFVTRShDRk5FVFdPUkspCi0jaWYgUExBVEZPUk0oV0lOKQor
I2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAgICAgUmVzb3VyY2VFcnJvcihjb25zdCBTdHJpbmcm
IGRvbWFpbiwgaW50IGVycm9yQ29kZSwgY29uc3QgVVJMJiBmYWlsaW5nVVJMLCBjb25zdCBTdHJp
bmcmIGxvY2FsaXplZERlc2NyaXB0aW9uLCBDRkRhdGFSZWYgY2VydGlmaWNhdGUpOwogICAgIFBD
Q0VSVF9DT05URVhUIGNlcnRpZmljYXRlKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRDZXJ0aWZpY2F0
ZShDRkRhdGFSZWYpOwotI2VuZGlmCiAgICAgUmVzb3VyY2VFcnJvcihDRlN0cmVhbUVycm9yIGVy
cm9yKTsKICAgICBDRlN0cmVhbUVycm9yIGNmU3RyZWFtRXJyb3IoKSBjb25zdDsKICAgICBvcGVy
YXRvciBDRlN0cmVhbUVycm9yKCkgY29uc3Q7CkBAIC04OCwxNCArODcsMTMgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGRvUGxhdGZvcm1Jc29sYXRlZENvcHkoY29uc3QgUmVzb3VyY2VFcnJvciYpOwog
CiAgICAgYm9vbCBtX2RhdGFJc1VwVG9EYXRlOwotI2lmIFVTRShDRk5FVFdPUkspCisjaWYgVVNF
KENGVVJMQ09OTkVDVElPTikKICAgICBtdXRhYmxlIFJldGFpblB0cjxDRkVycm9yUmVmPiBtX3Bs
YXRmb3JtRXJyb3I7Ci0jaWYgUExBVEZPUk0oQ09DT0EpCisjZWxpZiBQTEFURk9STShDT0NPQSkK
ICAgICBtdXRhYmxlIFJldGFpblB0cjxOU0Vycm9yPiBtX3BsYXRmb3JtTlNFcnJvcjsKICNlbmRp
ZgogI2lmIFBMQVRGT1JNKFdJTikKICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBtX2NlcnRpZmlj
YXRlOwotI2VuZGlmCiAjZWxzZQogICAgIG11dGFibGUgUmV0YWluUHRyPE5TRXJyb3I+IG1fcGxh
dGZvcm1FcnJvcjsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jZi9SZXNvdXJjZUVycm9yQ0YuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VFcnJvckNGLmNwcAkocmV2aXNpb24gMjA3MDM1KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yQ0YuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxNiArMjYsMTMgQEAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJSZXNvdXJjZUVycm9yLmgiCiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQorI2lmIFVT
RShDRlVSTENPTk5FQ1RJT04pCiAKICNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxDb3JlRm91
bmRhdGlvbi9DRkVycm9yLmg+CiAjaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGTmV0d29ya0Vycm9ycy5o
PgotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLQotI2lmIFBMQVRGT1JNKFdJTikKICNpbmNs
dWRlIDxXZWJLaXRTeXN0ZW1JbnRlcmZhY2UvV2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+Ci0jZW5k
aWYKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApA
QCAtMjE4LDQgKzIxNSw0IEBAIFJlc291cmNlRXJyb3I6Om9wZXJhdG9yIENGU3RyZWFtRXJyb3Io
KSAKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYgLy8gVVNFKENGTkVUV09SSykK
KyNlbmRpZiAvLyBVU0UoQ0ZVUkxDT05ORUNUSU9OKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3Bw
CShyZXZpc2lvbiAyMDcwMzUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Niw2ICs0Niw4IEBA
CiAjaW5jbHVkZSAiU3luY2hyb25vdXNMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlICJTeW5jaHJv
bm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuaCIKICNpbmNsdWRlIDxD
Rk5ldHdvcmsvQ0ZOZXR3b3JrLmg+CisjaW5jbHVkZSA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlL1dl
YktpdFN5c3RlbUludGVyZmFjZS5oPgorI2luY2x1ZGUgPHByb2Nlc3MuaD4KICNpbmNsdWRlIDxz
eXMvc3RhdC5oPgogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFw
Lmg+CkBAIC01NSwyMCArNTcsNiBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L0Jhc2U2NC5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAotI2lmIFBMQVRGT1JNKENPQ09BKQotI2luY2x1
ZGUgIlJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVl
dWUuaCIKLSNpbmNsdWRlICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgiCi0jaWYgVVNFKENGTkVU
V09SSykKLSNpbmNsdWRlICJXZWJDb3JlVVJMUmVzcG9uc2UuaCIKLSNpbmNsdWRlIDxDRk5ldHdv
cmsvQ0ZVUkxDb25uZWN0aW9uUHJpdi5oPgotI2luY2x1ZGUgPENGTmV0d29yay9DRlVSTFJlcXVl
c3RQcml2Lmg+Ci0jZW5kaWYKLSNlbmRpZgotCi0jaWYgUExBVEZPUk0oV0lOKQotI2luY2x1ZGUg
PFdlYktpdFN5c3RlbUludGVyZmFjZS9XZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaD4KLSNpbmNsdWRl
IDxwcm9jZXNzLmg+Ci0KIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyBkZWNsYXJhdGlvbiBvbmNlIGl0
J3MgaW4gV2ViS2l0U3VwcG9ydExpYnJhcnkuCiBleHRlcm4gIkMiIHsKIF9fZGVjbHNwZWMoZGxs
aW1wb3J0KSBDRlVSTENvbm5lY3Rpb25SZWYgQ0ZVUkxDb25uZWN0aW9uQ3JlYXRlV2l0aFByb3Bl
cnRpZXMoCkBAIC03NywxMSArNjUsMTAgQEAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIENGVVJMQ29u
bmVjdGlvblJlZgogICBDRlVSTENvbm5lY3Rpb25DbGllbnQgKiAgY2xpZW50LAogICBDRkRpY3Rp
b25hcnlSZWYgcHJvcGVydGllcyk7CiB9Ci0jZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci0jaWYgVVNFKENGTkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogCiBzdGF0aWMg
SGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIGFsbG93c0FueUhUVFBT
Q2VydGlmaWNhdGVIb3N0cygpCiB7CkBAIC0xMjAsMTEgKzEwNyw3IEBAIFJlc291cmNlSGFuZGxl
Ojp+UmVzb3VyY2VIYW5kbGUoKQogICAgIAogc3RhdGljIGlubGluZSBDRlN0cmluZ1JlZiBzaG91
bGRTbmlmZkNvbm5lY3Rpb25Qcm9wZXJ0eSgpCiB7Ci0jaWYgUExBVEZPUk0oV0lOKQogICAgIHJl
dHVybiBDRlNUUigiX2tDRlVSTENvbm5lY3Rpb25Qcm9wZXJ0eVNob3VsZFNuaWZmIik7Ci0jZWxz
ZQotICAgIHJldHVybiBfa0NGVVJMQ29ubmVjdGlvblByb3BlcnR5U2hvdWxkU25pZmY7Ci0jZW5k
aWYKIH0KIAogdm9pZCBSZXNvdXJjZUhhbmRsZTo6Y3JlYXRlQ0ZVUkxDb25uZWN0aW9uKGJvb2wg
c2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UsIGJvb2wgc2hvdWxkQ29udGVudFNuaWZmLCBTY2hl
ZHVsaW5nQmVoYXZpb3Igc2NoZWR1bGluZ0JlaGF2aW9yLCBDRkRpY3Rpb25hcnlSZWYgY2xpZW50
UHJvcGVydGllcykKQEAgLTE2Niw5ICsxNDksNiBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpjcmVh
dGVDRlVSTENvbm5lY3RpCiAKICAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlRGljdGlvbmFyeVJlZj4g
c3NsUHJvcHM7CiAKLSNpZiBQTEFURk9STShJT1MpCi0gICAgc3NsUHJvcHMgPSBhZG9wdENGKFJl
c291cmNlSGFuZGxlOjpjcmVhdGVTU0xQcm9wZXJ0aWVzRnJvbU5TVVJMUmVxdWVzdChmaXJzdFJl
cXVlc3QoKSkpOwotI2Vsc2UKICAgICBpZiAoYWxsb3dzQW55SFRUUFNDZXJ0aWZpY2F0ZUhvc3Rz
KCkuY29udGFpbnMoZmlyc3RSZXF1ZXN0KCkudXJsKCkuaG9zdCgpKSkgewogICAgICAgICBzc2xQ
cm9wcyA9IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JEZWZh
dWx0LCAwLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFy
eVZhbHVlQ2FsbEJhY2tzKSk7CiAgICAgICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKHNzbFByb3Bz
LmdldCgpLCBrQ0ZTdHJlYW1TU0xBbGxvd3NBbnlSb290LCBrQ0ZCb29sZWFuVHJ1ZSk7CkBAIC0x
ODEsMTEgKzE2MSw4IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmNyZWF0ZUNGVVJMQ29ubmVjdGkK
ICAgICBpZiAoY2xpZW50Q2VydCAhPSBjbGllbnRDZXJ0aWZpY2F0ZXMoKS5lbmQoKSkgewogICAg
ICAgICBpZiAoIXNzbFByb3BzKQogICAgICAgICAgICAgc3NsUHJvcHMgPSBhZG9wdENGKENGRGlj
dGlvbmFyeUNyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMCwgJmtDRlR5cGVEaWN0
aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykpOwot
I2lmIFBMQVRGT1JNKFdJTikKICAgICAgICAgd2tTZXRDbGllbnRDZXJ0aWZpY2F0ZUluU1NMUHJv
cGVydGllcyhzc2xQcm9wcy5nZXQoKSwgKGNsaWVudENlcnQtPnZhbHVlKS5nZXQoKSk7Ci0jZW5k
aWYKICAgICB9Ci0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKQogCiAgICAgaWYgKHNzbFByb3BzKQog
ICAgICAgICBDRlVSTFJlcXVlc3RTZXRTU0xQcm9wZXJ0aWVzKHJlcXVlc3QuZ2V0KCksIHNzbFBy
b3BzLmdldCgpKTsKQEAgLTIwNiwxMiArMTgzLDYgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6Y3Jl
YXRlQ0ZVUkxDb25uZWN0aQogICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShzdHJlYW1Qcm9w
ZXJ0aWVzLCBDRlNUUigiX1dlYktpdFN5bmNocm9ub3VzUmVxdWVzdCIpLCBrQ0ZCb29sZWFuVHJ1
ZSk7CiAgICAgfQogCi0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgUmV0YWluUHRyPENGRGF0YVJl
Zj4gc291cmNlQXBwbGljYXRpb25BdWRpdERhdGEgPSBkLT5tX2NvbnRleHQtPnNvdXJjZUFwcGxp
Y2F0aW9uQXVkaXREYXRhKCk7Ci0gICAgaWYgKHNvdXJjZUFwcGxpY2F0aW9uQXVkaXREYXRhKQot
ICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShzdHJlYW1Qcm9wZXJ0aWVzLCBDRlNUUigia0NG
U3RyZWFtUHJvcGVydHlTb3VyY2VBcHBsaWNhdGlvbiIpLCBzb3VyY2VBcHBsaWNhdGlvbkF1ZGl0
RGF0YS5nZXQoKSk7Ci0jZW5kaWYKLQogICAgIHN0YXRpYyBjb25zdCBDRlN0cmluZ1JlZiBrQ0ZV
UkxDb25uZWN0aW9uU29ja2V0U3RyZWFtUHJvcGVydGllcyA9IENGU1RSKCJrQ0ZVUkxDb25uZWN0
aW9uU29ja2V0U3RyZWFtUHJvcGVydGllcyIpOwogICAgIFJldGFpblB0cjxDRk11dGFibGVEaWN0
aW9uYXJ5UmVmPiBwcm9wZXJ0aWVzRGljdGlvbmFyeTsKICAgICBpZiAoY2xpZW50UHJvcGVydGll
cykKQEAgLTIzMCwxNCArMjAxLDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6Y3JlYXRlQ0ZVUkxD
b25uZWN0aQogICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKHByb3BlcnRpZXNEaWN0aW9uYXJ5Lmdl
dCgpLCBrQ0ZVUkxDb25uZWN0aW9uU29ja2V0U3RyZWFtUHJvcGVydGllcywgc3RyZWFtUHJvcGVy
dGllcyk7CiAgICAgQ0ZSZWxlYXNlKHN0cmVhbVByb3BlcnRpZXMpOwogCi0jaWYgUExBVEZPUk0o
Q09DT0EpCi0gICAgaWYgKGQtPm1fdXNlc0FzeW5jQ2FsbGJhY2tzKQotICAgICAgICBkLT5tX2Nv
bm5lY3Rpb25EZWxlZ2F0ZSA9IGFkb3B0UmVmKG5ldyBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVj
dGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlKHRoaXMpKTsKLSAgICBlbHNlCi0gICAgICAg
IGQtPm1fY29ubmVjdGlvbkRlbGVnYXRlID0gYWRvcHRSZWYobmV3IFN5bmNocm9ub3VzUmVzb3Vy
Y2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZSh0aGlzKSk7Ci0jZWxzZQogICAgIGQtPm1f
Y29ubmVjdGlvbkRlbGVnYXRlID0gYWRvcHRSZWYobmV3IFN5bmNocm9ub3VzUmVzb3VyY2VIYW5k
bGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZSh0aGlzKSk7Ci0jZW5kaWYKICAgICBkLT5tX2Nvbm5l
Y3Rpb25EZWxlZ2F0ZS0+c2V0dXBSZXF1ZXN0KHJlcXVlc3QuZ2V0KCkpOwogCiAgICAgQ0ZVUkxD
b25uZWN0aW9uQ2xpZW50X1Y2IGNsaWVudCA9IGQtPm1fY29ubmVjdGlvbkRlbGVnYXRlLT5tYWtl
Q29ubmVjdGlvbkNsaWVudCgpOwpAQCAtMjY0LDEwICsyMjgsNiBAQCBib29sIFJlc291cmNlSGFu
ZGxlOjpzdGFydCgpCiAKICAgICBib29sIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlID0gIWNs
aWVudCgpIHx8IGNsaWVudCgpLT5zaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSh0aGlzKTsKIAot
I2lmIEVOQUJMRShXRUJfVElNSU5HKSAmJiBQTEFURk9STShDT0NPQSkgJiYgIUhBVkUoVElNSU5H
REFUQU9QVElPTlMpCi0gICAgc2V0Q29sbGVjdHNUaW1pbmdEYXRhKCk7Ci0jZW5kaWYKLQogICAg
IFNjaGVkdWxpbmdCZWhhdmlvciBzY2hlZHVsaW5nQmVoYXZpb3IgPSBjbGllbnQoKS0+bG9hZGlu
Z1N5bmNocm9ub3VzWEhSKCkgPyBTY2hlZHVsaW5nQmVoYXZpb3I6OlN5bmNocm9ub3VzIDogU2No
ZWR1bGluZ0JlaGF2aW9yOjpBc3luY2hyb25vdXM7CiAKICAgICBjcmVhdGVDRlVSTENvbm5lY3Rp
b24oc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UsIGQtPm1fc2hvdWxkQ29udGVudFNuaWZmLCBz
Y2hlZHVsaW5nQmVoYXZpb3IsIGNsaWVudCgpLT5jb25uZWN0aW9uUHJvcGVydGllcyh0aGlzKS5n
ZXQoKSk7CkBAIC0zNTEsMTYgKzMxMSw2IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmRpZFJlY2Vp
dmVBdXRoZW50aWMKICAgICBBU1NFUlQoY2hhbGxlbmdlLmNmVVJMQXV0aENoYWxsZW5nZVJlZigp
KTsKICAgICBBU1NFUlQoY2hhbGxlbmdlLmF1dGhlbnRpY2F0aW9uQ2xpZW50KCkgPT0gdGhpcyk7
IC8vIFNob3VsZCBiZSBhbHJlYWR5IHNldC4KIAotI2lmICFQTEFURk9STShXSU4pCi0gICAgLy8g
UHJveHkgYXV0aGVudGljYXRpb24gaXMgaGFuZGxlZCBieSBDRk5ldHdvcmsgaW50ZXJuYWxseS4g
V2UgY2FuIGdldCBoZXJlIGlmIHRoZSB1c2VyIGNhbmNlbHMKLSAgICAvLyBDRk5ldHdvcmsgYXV0
aGVudGljYXRpb24gZGlhbG9nLCBhbmQgd2Ugc2hvdWxkbid0IGFzayB0aGUgY2xpZW50IHRvIGRp
c3BsYXkgYW5vdGhlciBvbmUgaW4gdGhhdCBjYXNlLgotICAgIGlmIChjaGFsbGVuZ2UucHJvdGVj
dGlvblNwYWNlKCkuaXNQcm94eSgpKSB7Ci0gICAgICAgIC8vIENhbm5vdCB1c2UgcmVjZWl2ZWRS
ZXF1ZXN0VG9Db250aW51ZVdpdGhvdXRDcmVkZW50aWFsKCksIGJlY2F1c2UgY3VycmVudCBjaGFs
bGVuZ2UgaXMgbm90IHlldCBzZXQuCi0gICAgICAgIENGVVJMQ29ubmVjdGlvblVzZUNyZWRlbnRp
YWwoZC0+bV9jb25uZWN0aW9uLmdldCgpLCAwLCBjaGFsbGVuZ2UuY2ZVUkxBdXRoQ2hhbGxlbmdl
UmVmKCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotI2VuZGlmCi0KICAgICBpZiAodHJ5SGFu
ZGxlUGFzc3dvcmRCYXNlZEF1dGhlbnRpY2F0aW9uKGNoYWxsZW5nZSkpCiAgICAgICAgIHJldHVy
bjsKIApAQCAtMzgxLDExICszMzEsNyBAQCBib29sIFJlc291cmNlSGFuZGxlOjp0cnlIYW5kbGVQ
YXNzd29yZEJhCiAKICAgICBpZiAoIWQtPm1fdXNlci5pc051bGwoKSAmJiAhZC0+bV9wYXNzLmlz
TnVsbCgpKSB7CiAgICAgICAgIFJldGFpblB0cjxDRlVSTENyZWRlbnRpYWxSZWY+IGNmQ3JlZGVu
dGlhbCA9IGFkb3B0Q0YoQ0ZVUkxDcmVkZW50aWFsQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQs
IGQtPm1fdXNlci5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBkLT5tX3Bhc3MuY3JlYXRlQ0ZTdHJp
bmcoKS5nZXQoKSwgMCwga0NGVVJMQ3JlZGVudGlhbFBlcnNpc3RlbmNlTm9uZSkpOwotI2lmIFBM
QVRGT1JNKENPQ09BKQotICAgICAgICBDcmVkZW50aWFsIGNyZWRlbnRpYWwgPSBDcmVkZW50aWFs
KGNmQ3JlZGVudGlhbC5nZXQoKSk7Ci0jZWxzZQogICAgICAgICBDcmVkZW50aWFsIGNyZWRlbnRp
YWwgPSBjb3JlKGNmQ3JlZGVudGlhbC5nZXQoKSk7Ci0jZW5kaWYKICAgICAgICAgCiAgICAgICAg
IFVSTCB1cmxUb1N0b3JlOwogICAgICAgICBpZiAoY2hhbGxlbmdlLmZhaWx1cmVSZXNwb25zZSgp
Lmh0dHBTdGF0dXNDb2RlKCkgPT0gNDAxKQpAQCAtNDE1LDEyICszNjEsOCBAQCBib29sIFJlc291
cmNlSGFuZGxlOjp0cnlIYW5kbGVQYXNzd29yZEJhCiAgICAgICAgICAgICAgICAgICAgIC8vIFN0
b3JlIHRoZSBjcmVkZW50aWFsIGJhY2ssIHBvc3NpYmx5IGFkZGluZyBpdCBhcyBhIGRlZmF1bHQg
Zm9yIHRoaXMgZGlyZWN0b3J5LgogICAgICAgICAgICAgICAgICAgICBkLT5tX2NvbnRleHQtPnN0
b3JhZ2VTZXNzaW9uKCkuY3JlZGVudGlhbFN0b3JhZ2UoKS5zZXQoY3JlZGVudGlhbCwgY2hhbGxl
bmdlLnByb3RlY3Rpb25TcGFjZSgpLCBjaGFsbGVuZ2UuZmFpbHVyZVJlc3BvbnNlKCkudXJsKCkp
OwogICAgICAgICAgICAgICAgIH0KLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICAgICAgICAgICAg
ICBDRlVSTENvbm5lY3Rpb25Vc2VDcmVkZW50aWFsKGQtPm1fY29ubmVjdGlvbi5nZXQoKSwgY3Jl
ZGVudGlhbC5jZkNyZWRlbnRpYWwoKSwgY2hhbGxlbmdlLmNmVVJMQXV0aENoYWxsZW5nZVJlZigp
KTsKLSNlbHNlCiAgICAgICAgICAgICAgICAgUmV0YWluUHRyPENGVVJMQ3JlZGVudGlhbFJlZj4g
Y2ZDcmVkZW50aWFsID0gYWRvcHRDRihjcmVhdGVDRihjcmVkZW50aWFsKSk7CiAgICAgICAgICAg
ICAgICAgQ0ZVUkxDb25uZWN0aW9uVXNlQ3JlZGVudGlhbChkLT5tX2Nvbm5lY3Rpb24uZ2V0KCks
IGNmQ3JlZGVudGlhbC5nZXQoKSwgY2hhbGxlbmdlLmNmVVJMQXV0aENoYWxsZW5nZVJlZigpKTsK
LSNlbmRpZgogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgfQogICAg
ICAgICB9CkBAIC00NzAsMjAgKzQxMiwxMCBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpyZWNlaXZl
ZENyZWRlbnRpYWwoCiAgICAgICAgIGQtPm1fY29udGV4dC0+c3RvcmFnZVNlc3Npb24oKS5jcmVk
ZW50aWFsU3RvcmFnZSgpLnNldCh3ZWJDcmVkZW50aWFsLCBjaGFsbGVuZ2UucHJvdGVjdGlvblNw
YWNlKCksIHVybFRvU3RvcmUpOwogCiAgICAgICAgIGlmIChkLT5tX2Nvbm5lY3Rpb24pIHsKLSNp
ZiBQTEFURk9STShDT0NPQSkKICAgICAgICAgICAgIENGVVJMQ29ubmVjdGlvblVzZUNyZWRlbnRp
YWwoZC0+bV9jb25uZWN0aW9uLmdldCgpLCB3ZWJDcmVkZW50aWFsLmNmQ3JlZGVudGlhbCgpLCBj
aGFsbGVuZ2UuY2ZVUkxBdXRoQ2hhbGxlbmdlUmVmKCkpOwotI2Vsc2UKLSAgICAgICAgICAgIFJl
dGFpblB0cjxDRlVSTENyZWRlbnRpYWxSZWY+IGNmQ3JlZGVudGlhbCA9IGFkb3B0Q0YoY3JlYXRl
Q0Yod2ViQ3JlZGVudGlhbCkpOwotICAgICAgICAgICAgQ0ZVUkxDb25uZWN0aW9uVXNlQ3JlZGVu
dGlhbChkLT5tX2Nvbm5lY3Rpb24uZ2V0KCksIGNmQ3JlZGVudGlhbC5nZXQoKSwgY2hhbGxlbmdl
LmNmVVJMQXV0aENoYWxsZW5nZVJlZigpKTsKLSNlbmRpZgogICAgICAgICB9CiAgICAgfSBlbHNl
IGlmIChkLT5tX2Nvbm5lY3Rpb24pIHsKLSNpZiBQTEFURk9STShDT0NPQSkKICAgICAgICAgQ0ZV
UkxDb25uZWN0aW9uVXNlQ3JlZGVudGlhbChkLT5tX2Nvbm5lY3Rpb24uZ2V0KCksIGNyZWRlbnRp
YWwuY2ZDcmVkZW50aWFsKCksIGNoYWxsZW5nZS5jZlVSTEF1dGhDaGFsbGVuZ2VSZWYoKSk7Ci0j
ZWxzZQotICAgICAgICBSZXRhaW5QdHI8Q0ZVUkxDcmVkZW50aWFsUmVmPiBjZkNyZWRlbnRpYWwg
PSBhZG9wdENGKGNyZWF0ZUNGKGNyZWRlbnRpYWwpKTsKLSAgICAgICAgQ0ZVUkxDb25uZWN0aW9u
VXNlQ3JlZGVudGlhbChkLT5tX2Nvbm5lY3Rpb24uZ2V0KCksIGNmQ3JlZGVudGlhbC5nZXQoKSwg
Y2hhbGxlbmdlLmNmVVJMQXV0aENoYWxsZW5nZVJlZigpKTsKLSNlbmRpZgogICAgIH0KIAogICAg
IGNsZWFyQXV0aGVudGljYXRpb24oKTsKQEAgLTYyNCwzMCArNTU2LDYgQEAgdm9pZCBSZXNvdXJj
ZUhhbmRsZTo6cGxhdGZvcm1TZXREZWZlcnNMbwogICAgICAgICBDRlVSTENvbm5lY3Rpb25SZXN1
bWUoZC0+bV9jb25uZWN0aW9uLmdldCgpKTsKIH0KIAotI2lmIFBMQVRGT1JNKENPQ09BKQotdm9p
ZCBSZXNvdXJjZUhhbmRsZTo6c2NoZWR1bGUoU2NoZWR1bGVQYWlyJiBwYWlyKQotewotICAgIENG
UnVuTG9vcFJlZiBydW5Mb29wID0gcGFpci5ydW5Mb29wKCk7Ci0gICAgaWYgKCFydW5Mb29wKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBDRlVSTENvbm5lY3Rpb25TY2hlZHVsZVdpdGhSdW5Mb29w
KGQtPm1fY29ubmVjdGlvbi5nZXQoKSwgcnVuTG9vcCwgcGFpci5tb2RlKCkpOwotICAgIGlmIChk
LT5tX3N0YXJ0V2hlblNjaGVkdWxlZCkgewotICAgICAgICBDRlVSTENvbm5lY3Rpb25TdGFydChk
LT5tX2Nvbm5lY3Rpb24uZ2V0KCkpOwotICAgICAgICBkLT5tX3N0YXJ0V2hlblNjaGVkdWxlZCA9
IGZhbHNlOwotICAgIH0KLX0KLQotdm9pZCBSZXNvdXJjZUhhbmRsZTo6dW5zY2hlZHVsZShTY2hl
ZHVsZVBhaXImIHBhaXIpCi17Ci0gICAgQ0ZSdW5Mb29wUmVmIHJ1bkxvb3AgPSBwYWlyLnJ1bkxv
b3AoKTsKLSAgICBpZiAoIXJ1bkxvb3ApCi0gICAgICAgIHJldHVybjsKLQotICAgIENGVVJMQ29u
bmVjdGlvblVuc2NoZWR1bGVGcm9tUnVuTG9vcChkLT5tX2Nvbm5lY3Rpb24uZ2V0KCksIHJ1bkxv
b3AsIHBhaXIubW9kZSgpKTsKLX0KLSNlbmRpZgotCiBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIFJl
c291cmNlSGFuZGxlOjpjdXJyZW50UmVxdWVzdCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGQtPm1f
Y3VycmVudFJlcXVlc3Q7CkBAIC02NzYsNiArNTg0LDYgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6
Y29udGludWVXaWxsQ2FjaGVSZQogewogICAgIGQtPm1fY29ubmVjdGlvbkRlbGVnYXRlLT5jb250
aW51ZVdpbGxDYWNoZVJlc3BvbnNlKHJlc3BvbnNlKTsKIH0KLSNlbmRpZiAvLyBVU0UoQ0ZORVRX
T1JLKQorI2VuZGlmIC8vIFVTRShDRlVSTENPTk5FQ1RJT04pCiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VI
YW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRl
bGVnYXRlLmNwcAkocmV2aXNpb24gMjA3MDM1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjYsMjAgKzI2LDEzIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5oIgogCi0jaWYgVVNF
KENGTkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogCiAjaW5jbHVkZSAiQ0ZOZXR3
b3JrU1BJLmgiCiAjaW5jbHVkZSAiRm9ybURhdGFTdHJlYW1DRk5ldC5oIgogI2luY2x1ZGUgIk5l
dHdvcmtpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKLQotI2lmIFBM
QVRGT1JNKENPQ09BKQotI2luY2x1ZGUgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKLSNlbmRp
ZgotCi0jaWYgUExBVEZPUk0oV0lOKQogI2luY2x1ZGUgPFdlYktpdFN5c3RlbUludGVyZmFjZS9X
ZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaD4KLSNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
QEAgLTIxOCw0ICsyMTEsNCBAQCBDRlVSTENvbm5lY3Rpb25DbGllbnRfVjYgUmVzb3VyY2VIYW5k
bGVDCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUuCiAKLSNlbmRpZiAvLyBVU0UoQ0ZORVRXT1JL
KQorI2VuZGlmIC8vIFVTRShDRlVSTENPTk5FQ1RJT04pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291
cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuaAkocmV2aXNpb24gMjA3MDM1KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29u
bmVjdGlvbkRlbGVnYXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDEwICsyMyw5IEBACiAgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25E
ZWxlZ2F0ZV9oCi0jZGVmaW5lIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVf
aAorI3ByYWdtYSBvbmNlCiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQorI2lmIFVTRShDRlVSTENPTk5F
Q1RJT04pCiAKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlIDxDRk5ldHdv
cmsvQ0ZVUkxDb25uZWN0aW9uUHJpdi5oPgpAQCAtMTAwLDYgKzk5LDQgQEAgcHJvdGVjdGVkOgog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlLgogCi0jZW5kaWYgLy8gVVNFKENGTkVUV09SSykKLQot
I2VuZGlmIC8vIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVfaAorI2VuZGlm
IC8vIFVTRShDRlVSTENPTk5FQ1RJT04pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0
aW9uUXVldWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25R
dWV1ZS5jcHAJKHJldmlzaW9uIDIwNzAzNSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRp
b25RdWV1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRl
V2l0aE9wZXJhdGlvblF1ZXVlLmgiCiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQorI2lmIFVTRShDRlVS
TENPTk5FQ1RJT04pCiAKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNGLmgiCiAjaW5jbHVkZSAi
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCIKQEAgLTc1LDkgKzc1LDYgQEAgdm9pZCBSZXNvdXJj
ZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYQogCiB2b2lkIFJlc291cmNlSGFuZGxlQ0ZVUkxD
b25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OnNldHVwUmVxdWVzdChDRk11dGFi
bGVVUkxSZXF1ZXN0UmVmIHJlcXVlc3QpCiB7Ci0jaWYgUExBVEZPUk0oSU9TKQotICAgIENGVVJM
UmVxdWVzdFNldFNob3VsZFN0YXJ0U3luY2hyb25vdXNseShyZXF1ZXN0LCAxKTsKLSNlbmRpZgog
ICAgIENGVVJMUmVmIHJlcXVlc3RVUkwgPSBDRlVSTFJlcXVlc3RHZXRVUkwocmVxdWVzdCk7CiAg
ICAgaWYgKCFyZXF1ZXN0VVJMKQogICAgICAgICByZXR1cm47CkBAIC0xNDksMTAgKzE0Niw4IEBA
IHZvaWQgUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2EKICAgICAgICAgICAgIGFk
anVzdE1JTUVUeXBlSWZOZWNlc3NhcnkoY2ZSZXNwb25zZSwgaXNNYWluUmVzb3VyY2VMb2FkKTsK
ICAgICAgICAgfQogCi0jaWYgIVBMQVRGT1JNKElPUykKICAgICAgICAgaWYgKF9DRlVSTFJlcXVl
c3RDb3B5UHJvdG9jb2xQcm9wZXJ0eUZvcktleShtX2hhbmRsZS0+Zmlyc3RSZXF1ZXN0KCkuY2ZV
UkxSZXF1ZXN0KERvTm90VXBkYXRlSFRUUEJvZHkpLCBDRlNUUigiRm9yY2VIVE1MTUlNRVR5cGUi
KSkpCiAgICAgICAgICAgICBDRlVSTFJlc3BvbnNlU2V0TUlNRVR5cGUoY2ZSZXNwb25zZSwgQ0ZT
VFIoInRleHQvaHRtbCIpKTsKLSNlbmRpZiAvLyAhUExBVEZPUk0oSU9TKQogICAgICAgICAKICAg
ICAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNvdXJjZVJlc3BvbnNlKGNmUmVzcG9uc2UpOwogI2lm
IEVOQUJMRShXRUJfVElNSU5HKQpAQCAtMjg4LDE1ICsyODMsNyBAQCBCb29sZWFuIFJlc291cmNl
SGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsCiAKICAgICAgICAgTE9HKE5ldHdvcmssICJDRk5ldCAt
IFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6
OmNhblJlc3BvbmRUb1Byb3RlY3Rpb25TcGFjZShoYW5kbGU9JXApICglcykiLCBtX2hhbmRsZSwg
bV9oYW5kbGUtPmZpcnN0UmVxdWVzdCgpLnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwog
Ci0gICAgICAgIFByb3RlY3Rpb25TcGFjZSBjb3JlUHJvdGVjdGlvblNwYWNlID0gUHJvdGVjdGlv
blNwYWNlKHByb3RlY3Rpb25TcGFjZSk7Ci0jaWYgUExBVEZPUk0oSU9TKQotICAgICAgICBpZiAo
Y29yZVByb3RlY3Rpb25TcGFjZS5hdXRoZW50aWNhdGlvblNjaGVtZSgpID09IFByb3RlY3Rpb25T
cGFjZUF1dGhlbnRpY2F0aW9uU2NoZW1lVW5rbm93bikgewotICAgICAgICAgICAgbV9ib29sUmVz
dWx0ID0gZmFsc2U7Ci0gICAgICAgICAgICBkaXNwYXRjaF9zZW1hcGhvcmVfc2lnbmFsKG1fc2Vt
YXBob3JlKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotI2VuZGlmIC8vIFBMQVRG
T1JNKElPUykKLSAgICAgICAgbV9oYW5kbGUtPmNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0
aW9uU3BhY2UoY29yZVByb3RlY3Rpb25TcGFjZSk7CisgICAgICAgIG1faGFuZGxlLT5jYW5BdXRo
ZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKFByb3RlY3Rpb25TcGFjZShwcm90ZWN0aW9u
U3BhY2UpKTsKICAgICB9KTsKICAgICBkaXNwYXRjaF9zZW1hcGhvcmVfd2FpdChtX3NlbWFwaG9y
ZSwgRElTUEFUQ0hfVElNRV9GT1JFVkVSKTsKICAgICByZXR1cm4gbV9ib29sUmVzdWx0OwpAQCAt
MzQ3LDQgKzMzNCw0IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2EK
ICNlbmRpZiAvLyBVU0UoUFJPVEVDVElPTl9TUEFDRV9BVVRIX0NBTExCQUNLKQogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCi0jZW5kaWYgLy8gVVNFKENGTkVUV09SSykKKyNlbmRpZiAvLyBVU0Uo
Q0ZVUkxDT05ORUNUSU9OKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
Zi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNv
dXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmgJKHJl
dmlzaW9uIDIwNzAzNSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVz
b3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yMywxMCArMjMsOSBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0j
aWZuZGVmIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9u
UXVldWVfaAotI2RlZmluZSBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0
aE9wZXJhdGlvblF1ZXVlX2gKKyNwcmFnbWEgb25jZQogCi0jaWYgVVNFKENGTkVUV09SSykKKyNp
ZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGVDRlVSTENv
bm5lY3Rpb25EZWxlZ2F0ZS5oIgogI2luY2x1ZGUgPENGTmV0d29yay9DRk5ldHdvcmsuaD4KQEAg
LTgwLDYgKzc5LDQgQEAgcHJpdmF0ZToKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZS4KIAotI2Vu
ZGlmIC8vIFVTRShDRk5FVFdPUkspCi0KLSNlbmRpZiAvLyBSZXNvdXJjZUhhbmRsZUNGVVJMQ29u
bmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlX2gKKyNlbmRpZiAvLyBVU0UoQ0ZVUkxD
T05ORUNUSU9OKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNv
dXJjZVJlcXVlc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NmL1Jlc291cmNlUmVxdWVzdC5oCShyZXZpc2lvbiAyMDcwMzUpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zMSw3ICszMSw3IEBACiAKIE9CSkNfQ0xBU1MgTlNVUkxSZXF1ZXN0OwogCi0jaWYgUExB
VEZPUk0oQ09DT0EpIHx8IFVTRShDRk5FVFdPUkspCisjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVT
RShDRlVSTENPTk5FQ1RJT04pCiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBfQ0ZVUkxSZXF1ZXN0KiBD
RlVSTFJlcXVlc3RSZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBfX0NGVVJMU3RvcmFnZVNlc3Np
b24qIENGVVJMU3RvcmFnZVNlc3Npb25SZWY7CiAjZW5kaWYKQEAgLTYxLDEzICs2MSw3IEBAIHB1
YmxpYzoKICAgICB7CiAgICAgfQogICAgIAotI2lmIFVTRShDRk5FVFdPUkspCi0jaWYgUExBVEZP
Uk0oQ09DT0EpCi0gICAgV0VCQ09SRV9FWFBPUlQgUmVzb3VyY2VSZXF1ZXN0KE5TVVJMUmVxdWVz
dCAqKTsKLSAgICB2b2lkIHVwZGF0ZU5TVVJMUmVxdWVzdCgpOwotICAgIHZvaWQgY2xlYXJPclVw
ZGF0ZU5TVVJMUmVxdWVzdCgpOwotI2VuZGlmCi0KKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQog
ICAgIFJlc291cmNlUmVxdWVzdChDRlVSTFJlcXVlc3RSZWYgY2ZSZXF1ZXN0KQogICAgICAgICA6
IFJlc291cmNlUmVxdWVzdEJhc2UoKQogICAgICAgICAsIG1fY2ZSZXF1ZXN0KGNmUmVxdWVzdCkK
QEAgLTg0LDExICs3OCw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0
ZUZyb21EZWxlZ2F0ZVByZXNlcnZpbmdPbGRQcm9wZXJ0aWVzKGNvbnN0IFJlc291cmNlUmVxdWVz
dCYpOwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0jaWYgVVNFKENGTkVUV09SSykKLSAgICBib29s
IGVuY29kaW5nUmVxdWlyZXNQbGF0Zm9ybURhdGEoKSBjb25zdCB7IHJldHVybiBtX2h0dHBCb2R5
IHx8IG1fY2ZSZXF1ZXN0OyB9Ci0jZWxzZQogICAgIGJvb2wgZW5jb2RpbmdSZXF1aXJlc1BsYXRm
b3JtRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1faHR0cEJvZHkgfHwgbV9uc1JlcXVlc3Q7IH0KLSNl
bmRpZgogICAgIFdFQkNPUkVfRVhQT1JUIE5TVVJMUmVxdWVzdCAqbnNVUkxSZXF1ZXN0KEhUVFBC
b2R5VXBkYXRlUG9saWN5KSBjb25zdDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBDRlN0
cmluZ1JlZiBpc1VzZXJJbml0aWF0ZWRLZXkoKTsKQEAgLTEwNSw3ICs5NSw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHNldERvbWFpbkZvckNhY2hlUGFydGl0aW9uKGNvbnN0IFN0cmluZyYgZG9tYWlu
KSB7IG1fY2FjaGVQYXJ0aXRpb24gPSBwYXJ0aXRpb25OYW1lKGRvbWFpbik7IH0KICNlbmRpZgog
Ci0jaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRk5FVFdPUkspCisjaWYgUExBVEZPUk0oQ09D
T0EpIHx8IFVTRShDRlVSTENPTk5FQ1RJT04pCiAgICAgV0VCQ09SRV9FWFBPUlQgQ0ZVUkxSZXF1
ZXN0UmVmIGNmVVJMUmVxdWVzdChIVFRQQm9keVVwZGF0ZVBvbGljeSkgY29uc3Q7CiAgICAgdm9p
ZCBzZXRTdG9yYWdlU2Vzc2lvbihDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmKTsKICNlbmRpZgpAQCAt
MTI1LDcgKzExNSw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGRvUGxhdGZvcm1TZXRBc0lzb2xh
dGVkQ29weShjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKIAotI2lmIFVTRShDRk5FVFdPUkspCisj
aWYgVVNFKENGVVJMQ09OTkVDVElPTikKICAgICBSZXRhaW5QdHI8Q0ZVUkxSZXF1ZXN0UmVmPiBt
X2NmUmVxdWVzdDsKICNlbmRpZgogI2lmIFBMQVRGT1JNKENPQ09BKQpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVl
c3RDRk5ldC5jcHAJKHJldmlzaW9uIDIwNzAzNSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
NCw3ICszNCw3IEBACiAjaW5jbHVkZSAiUHVibGljU3VmZml4LmgiCiAjZW5kaWYKIAotI2lmIFVT
RShDRk5FVFdPUkspCisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKICNpbmNsdWRlICJGb3JtRGF0
YVN0cmVhbUNGTmV0LmgiCiAjaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGVVJMUmVxdWVzdFByaXYuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CkBAIC01OSwxMiArNTksMTEgQEAgYm9vbCBS
ZXNvdXJjZVJlcXVlc3Q6OnNfaHR0cFBpcGVsaW5pbmdFbgogYm9vbCBSZXNvdXJjZVJlcXVlc3Q6
OnNfaHR0cFBpcGVsaW5pbmdFbmFibGVkID0gZmFsc2U7CiAjZW5kaWYKIAotI2lmIFVTRShDRk5F
VFdPUkspCisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKIAogdHlwZWRlZiB2b2lkICgqQ0ZVUkxS
ZXF1ZXN0U2V0Q29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5RnVuY3Rpb24p
KENGTXV0YWJsZVVSTFJlcXVlc3RSZWYsIENGQXJyYXlSZWYpOwogdHlwZWRlZiBDRkFycmF5UmVm
ICgqQ0ZVUkxSZXF1ZXN0Q29weUNvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJh
eUZ1bmN0aW9uKShDRlVSTFJlcXVlc3RSZWYpOwogCi0jaWYgUExBVEZPUk0oV0lOKQogc3RhdGlj
IEhNT0RVTEUgZmluZENGTmV0d29ya01vZHVsZSgpCiB7CiAjaWZuZGVmIERFQlVHX0FMTApAQCAt
ODMsMTcgKzgyLDYgQEAgc3RhdGljIENGVVJMUmVxdWVzdENvcHlDb250ZW50RGlzcG9zaXRpbwog
ewogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PENGVVJMUmVxdWVzdENvcHlDb250ZW50RGlz
cG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXlGdW5jdGlvbj4oR2V0UHJvY0FkZHJlc3MoZmlu
ZENGTmV0d29ya01vZHVsZSgpLCAiX0NGVVJMUmVxdWVzdENvcHlDb250ZW50RGlzcG9zaXRpb25F
bmNvZGluZ0ZhbGxiYWNrQXJyYXkiKSk7CiB9Ci0jZWxpZiBQTEFURk9STShDT0NPQSkKLXN0YXRp
YyBDRlVSTFJlcXVlc3RTZXRDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXlG
dW5jdGlvbiBmaW5kQ0ZVUkxSZXF1ZXN0U2V0Q29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxs
YmFja0FycmF5RnVuY3Rpb24oKQotewotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PENGVVJM
UmVxdWVzdFNldENvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheUZ1bmN0aW9u
PihkbHN5bShSVExEX0RFRkFVTFQsICJfQ0ZVUkxSZXF1ZXN0U2V0Q29udGVudERpc3Bvc2l0aW9u
RW5jb2RpbmdGYWxsYmFja0FycmF5IikpOwotfQotCi1zdGF0aWMgQ0ZVUkxSZXF1ZXN0Q29weUNv
bnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheUZ1bmN0aW9uIGZpbmRDRlVSTFJl
cXVlc3RDb3B5Q29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5RnVuY3Rpb24o
KQotewotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PENGVVJMUmVxdWVzdENvcHlDb250ZW50
RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXlGdW5jdGlvbj4oZGxzeW0oUlRMRF9ERUZB
VUxULCAiX0NGVVJMUmVxdWVzdENvcHlDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNr
QXJyYXkiKSk7Ci19Ci0jZW5kaWYKIAogc3RhdGljIHZvaWQgc2V0Q29udGVudERpc3Bvc2l0aW9u
RW5jb2RpbmdGYWxsYmFja0FycmF5KENGTXV0YWJsZVVSTFJlcXVlc3RSZWYgcmVxdWVzdCwgQ0ZB
cnJheVJlZiBmYWxsYmFja0FycmF5KQogewpAQCAtMTU2LDEwICsxNDQsNiBAQCB2b2lkIFJlc291
cmNlUmVxdWVzdDo6ZG9VcGRhdGVQbGF0Zm9ybVJlCiAgICAgaWYgKHJlc291cmNlUHJpb3JpdGll
c0VuYWJsZWQoKSkKICAgICAgICAgQ0ZVUkxSZXF1ZXN0U2V0UmVxdWVzdFByaW9yaXR5KGNmUmVx
dWVzdCwgdG9QbGF0Zm9ybVJlcXVlc3RQcmlvcml0eShwcmlvcml0eSgpKSk7CiAKLSNpZiAhUExB
VEZPUk0oV0lOKQotICAgIF9DRlVSTFJlcXVlc3RTZXRQcm90b2NvbFByb3BlcnR5KGNmUmVxdWVz
dCwga0NGVVJMUmVxdWVzdEFsbG93QWxsUE9TVENhY2hpbmcsIGtDRkJvb2xlYW5UcnVlKTsKLSNl
bmRpZgotCiAgICAgc2V0SGVhZGVyRmllbGRzKGNmUmVxdWVzdCwgaHR0cEhlYWRlckZpZWxkcygp
KTsKIAogICAgIENGVVJMUmVxdWVzdFNldFNob3VsZEhhbmRsZUhUVFBDb29raWVzKGNmUmVxdWVz
dCwgYWxsb3dDb29raWVzKCkpOwpAQCAtMTg0LDkgKzE2OCw2IEBAIHZvaWQgUmVzb3VyY2VSZXF1
ZXN0Ojpkb1VwZGF0ZVBsYXRmb3JtUmUKICNlbmRpZgogCiAgICAgbV9jZlJlcXVlc3QgPSBhZG9w
dENGKGNmUmVxdWVzdCk7Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgY2xlYXJPclVwZGF0ZU5T
VVJMUmVxdWVzdCgpOwotI2VuZGlmCiB9CiAKIHZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0
ZVBsYXRmb3JtSFRUUEJvZHkoKQpAQCAtMjE5LDMwICsyMDAsMTIgQEAgdm9pZCBSZXNvdXJjZVJl
cXVlc3Q6OmRvVXBkYXRlUGxhdGZvcm1IVAogICAgIH0KIAogICAgIG1fY2ZSZXF1ZXN0ID0gYWRv
cHRDRihjZlJlcXVlc3QpOwotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIGNsZWFyT3JVcGRhdGVO
U1VSTFJlcXVlc3QoKTsKLSNlbmRpZgogfQogCiB2b2lkIFJlc291cmNlUmVxdWVzdDo6ZG9VcGRh
dGVSZXNvdXJjZVJlcXVlc3QoKQogewogICAgIGlmICghbV9jZlJlcXVlc3QpIHsKLSNpZiBQTEFU
Rk9STShJT1MpCi0gICAgICAgIC8vIDxyZGFyOi8vcHJvYmxlbS85OTEzNTI2PgotICAgICAgICAv
LyBUaGlzIGlzIGEgaGFjayB0byBtaW1pYyB0aGUgc3VidGxlIGJlaGF2aW91ciBvZiB0aGUgRm91
bmRhdGlvbiBiYXNlZCBSZXNvdXJjZVJlcXVlc3QKLSAgICAgICAgLy8gY29kZS4gVGhhdCBjb2Rl
IGRvZXMgbm90IHJlc2V0IG1faHR0cE1ldGhvZCBpZiB0aGUgTlNVUkxSZXF1ZXN0IGlzIG5pbC4g
SSBmaWxlZAotICAgICAgICAvLyA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTY2MzM2PiB0byB0cmFjayB0aGF0LgotICAgICAgICAvLyBBbm90aGVyIHJlbGF0ZWQgYnVn
IGlzIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjYzNTA+LiBGaXhp
bmcgdGhhdAotICAgICAgICAvLyB3b3VsZCwgaWRlYWxseSwgYWxsb3cgdXMgdG8gbm90IGhhdmUg
dGhpcyBoYWNrLiBCdXQgdW5mb3J0dW5hdGVseSB0aGF0IGNhdXNlZCBsYXlvdXQgdGVzdAotICAg
ICAgICAvLyBmYWlsdXJlcy4KLSAgICAgICAgLy8gUmVtb3ZhbCBvZiB0aGlzIGhhY2sgaXMgdHJh
Y2tlZCBieSA8cmRhcjovL3Byb2JsZW0vOTk3MDQ5OT4uCi0KLSAgICAgICAgU3RyaW5nIGh0dHBN
ZXRob2QgPSBtX2h0dHBNZXRob2Q7CiAgICAgICAgICp0aGlzID0gUmVzb3VyY2VSZXF1ZXN0KCk7
Ci0gICAgICAgIG1faHR0cE1ldGhvZCA9IGh0dHBNZXRob2Q7Ci0jZWxzZQotICAgICAgICAqdGhp
cyA9IFJlc291cmNlUmVxdWVzdCgpOwotI2VuZGlmCiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
QEAgLTMxNywxMiArMjgwLDkgQEAgdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OnNldFN0b3JhZ2VTZXNz
aW9uKAogICAgIGlmIChzdG9yYWdlU2Vzc2lvbikKICAgICAgICAgX0NGVVJMUmVxdWVzdFNldFN0
b3JhZ2VTZXNzaW9uKGNmUmVxdWVzdCwgc3RvcmFnZVNlc3Npb24pOwogICAgIG1fY2ZSZXF1ZXN0
ID0gYWRvcHRDRihjZlJlcXVlc3QpOwotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIGNsZWFyT3JV
cGRhdGVOU1VSTFJlcXVlc3QoKTsKLSNlbmRpZgogfQogCi0jZW5kaWYgLy8gVVNFKENGTkVUV09S
SykKKyNlbmRpZiAvLyBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogCiB2b2lkIFJlc291cmNlUmVxdWVz
dDo6dXBkYXRlRnJvbURlbGVnYXRlUHJlc2VydmluZ09sZFByb3BlcnRpZXMoY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiBkZWxlZ2F0ZVByb3ZpZGVkUmVxdWVzdCkKIHsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdENG
TmV0LmgJKHJldmlzaW9uIDIwNzAzNSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2YvUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsOCArMjMs
NyBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAotI2lmbmRlZiBSZXNvdXJjZVJlcXVlc3RDRk5l
dF9oCi0jZGVmaW5lIFJlc291cmNlUmVxdWVzdENGTmV0X2gKKyNwcmFnbWEgb25jZQogCiAjaW5j
bHVkZSAiQ0ZOZXR3b3JrU1BJLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkUHJpb3JpdHkuaCIK
QEAgLTMzLDcgKzMyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBSZXNvdXJjZVJl
cXVlc3Q7CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiB2
b2lkIGdldFJlc291cmNlUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmLCBDRlVSTFJlcXVlc3RSZWYp
OwogQ0ZVUkxSZXF1ZXN0UmVmIGNmVVJMUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsK
ICNlbmRpZgpAQCAtNzgsNSArNzcsMyBAQCBpbmxpbmUgQ0ZVUkxSZXF1ZXN0UHJpb3JpdHkgdG9Q
bGF0Zm9ybVJlCiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIFJlc291
cmNlUmVxdWVzdENGTmV0X2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2YvUmVzb3VyY2VSZXNwb25zZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXNwb25zZS5oCShyZXZpc2lvbiAyMDcwMzUpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVzcG9uc2UuaAkod29y
a2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNyBAQAogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2VC
YXNlLmgiCiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogCi0jaWYgVVNFKENGTkVUV09SSykK
KyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogI2luY2x1ZGUgIkNGTmV0d29ya1NQSS5oIgogI2Vu
ZGlmCiAKQEAgLTQzLDE2ICs0MywxMyBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotI2lmIFVT
RShDRk5FVFdPUkspCisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKICAgICBSZXNvdXJjZVJlc3Bv
bnNlKENGVVJMUmVzcG9uc2VSZWYgY2ZSZXNwb25zZSkKICAgICAgICAgOiBtX2luaXRMZXZlbChV
bmluaXRpYWxpemVkKQogICAgICAgICAsIG1fY2ZSZXNwb25zZShjZlJlc3BvbnNlKQogICAgIHsK
ICAgICAgICAgbV9pc051bGwgPSAhY2ZSZXNwb25zZTsKICAgICB9Ci0jaWYgUExBVEZPUk0oQ09D
T0EpCi0gICAgV0VCQ09SRV9FWFBPUlQgUmVzb3VyY2VSZXNwb25zZShOU1VSTFJlc3BvbnNlICop
OwotI2VuZGlmCiAjZWxzZQogICAgIFJlc291cmNlUmVzcG9uc2UoTlNVUkxSZXNwb25zZSAqbnNS
ZXNwb25zZSkKICAgICAgICAgOiBtX2luaXRMZXZlbChVbmluaXRpYWxpemVkKQpAQCAtODQsNyAr
ODEsNyBAQCBwdWJsaWM6CiAgICAgICAgICAqLwogICAgIH0KIAotI2lmIFVTRShDRk5FVFdPUksp
CisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKICAgICBXRUJDT1JFX0VYUE9SVCBDRlVSTFJlc3Bv
bnNlUmVmIGNmVVJMUmVzcG9uc2UoKSBjb25zdDsKICNlbmRpZgogI2lmIFBMQVRGT1JNKENPQ09B
KQpAQCAtMTA4LDEwICsxMDUsOSBAQCBwcml2YXRlOgogCiAgICAgdW5zaWduZWQgbV9pbml0TGV2
ZWwgOiAzOwogCi0jaWYgVVNFKENGTkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQog
ICAgIG11dGFibGUgUmV0YWluUHRyPENGVVJMUmVzcG9uc2VSZWY+IG1fY2ZSZXNwb25zZTsKLSNl
bmRpZgotI2lmIFBMQVRGT1JNKENPQ09BKQorI2VsaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgbXV0
YWJsZSBSZXRhaW5QdHI8TlNVUkxSZXNwb25zZT4gbV9uc1Jlc3BvbnNlOwogI2VuZGlmCiB9OwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlc3BvbnNl
Q0ZOZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2YvUmVzb3VyY2VSZXNwb25zZUNGTmV0LmNwcAkocmV2aXNpb24gMjA3MDM1KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlc3BvbnNlQ0ZOZXQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgogCi0jaWYgVVNFKENGTkVUV09SSykKKyNpZiBVU0Uo
Q0ZVUkxDT05ORUNUSU9OKQogCiAjaW5jbHVkZSAiQ0ZOZXR3b3JrU1BJLmgiCiAKQEAgLTM0LDEw
ICszNCw2IEBACiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgogI2luY2x1ZGUgPHd0Zi9S
ZXRhaW5QdHIuaD4KIAotI2lmIFBMQVRGT1JNKENPQ09BKQotI2luY2x1ZGUgIldlYkNvcmVTeXN0
ZW1JbnRlcmZhY2UuaCIKLSNlbmRpZgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBD
RlN0cmluZ1JlZiBjb25zdCBjb21tb25IZWFkZXJGaWVsZHNbXSA9IHsKQEAgLTQ3LDEzICs0Myw5
IEBAIHN0YXRpYyBDRlN0cmluZ1JlZiBjb25zdCBjb21tb25IZWFkZXJGaWUKIENGVVJMUmVzcG9u
c2VSZWYgUmVzb3VyY2VSZXNwb25zZTo6Y2ZVUkxSZXNwb25zZSgpIGNvbnN0CiB7CiAgICAgaWYg
KCFtX2NmUmVzcG9uc2UgJiYgIW1faXNOdWxsKSB7Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAg
ICAgIG5zVVJMUmVzcG9uc2UoKTsKLSNlbHNlCiAgICAgICAgIFJldGFpblB0cjxDRlVSTFJlZj4g
dXJsID0gbV91cmwuY3JlYXRlQ0ZVUkwoKTsKICAgICAgICAgLy8gRklYTUU6IFRoaXMgY3JlYXRl
cyBhIHZlcnkgaW5jb21wbGV0ZSBDRlVSTFJlc3BvbnNlLCB3aGljaCBkb2VzIG5vdCBldmVuIGhh
dmUgYSBzdGF0dXMgY29kZS4KICAgICAgICAgbV9jZlJlc3BvbnNlID0gYWRvcHRDRihDRlVSTFJl
c3BvbnNlQ3JlYXRlKDAsIHVybC5nZXQoKSwgbV9taW1lVHlwZS5zdHJpbmcoKS5jcmVhdGVDRlN0
cmluZygpLmdldCgpLCBtX2V4cGVjdGVkQ29udGVudExlbmd0aCwgbV90ZXh0RW5jb2RpbmdOYW1l
LnN0cmluZygpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGtDRlVSTENhY2hlU3RvcmFnZUFsbG93
ZWQpKTsKLSNlbmRpZgogICAgIH0KIAogICAgIHJldHVybiBtX2NmUmVzcG9uc2UuZ2V0KCk7CkBA
IC0xMTYsMTIgKzEwOCwxMCBAQCB2b2lkIFJlc291cmNlUmVzcG9uc2U6OnBsYXRmb3JtTGF6eUlu
aXQoCiAgICAgbV9pbml0TGV2ZWwgPSBpbml0TGV2ZWw7CiB9CiAKLSNpZiAhUExBVEZPUk0oQ09D
T0EpCiBDZXJ0aWZpY2F0ZUluZm8gUmVzb3VyY2VSZXNwb25zZTo6cGxhdGZvcm1DZXJ0aWZpY2F0
ZUluZm8oKSBjb25zdAogewogICAgIHJldHVybiB7IH07CiB9Ci0jZW5kaWYKIAogU3RyaW5nIFJl
c291cmNlUmVzcG9uc2U6OnBsYXRmb3JtU3VnZ2VzdGVkRmlsZW5hbWUoKSBjb25zdAogewpAQCAt
MTQyLDQgKzEzMiw0IEBAIGJvb2wgUmVzb3VyY2VSZXNwb25zZTo6cGxhdGZvcm1Db21wYXJlKGMK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYgLy8gVVNFKENGTkVUV09SSykKKyNl
bmRpZiAvLyBVU0UoQ0ZVUkxDT05ORUNUSU9OKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9TeW5jaHJvbm91c0xvYWRlckNsaWVudENGTmV0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1N5bmNocm9ub3VzTG9hZGVy
Q2xpZW50Q0ZOZXQuY3BwCShyZXZpc2lvbiAyMDcwMzUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NmL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50Q0ZOZXQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
U3luY2hyb25vdXNMb2FkZXJDbGllbnQuaCIKIAotI2lmIFVTRShDRk5FVFdPUkspCisjaWYgVVNF
KENGVVJMQ09OTkVDVElPTikKIAogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmgi
CiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKQEAgLTQ4LDQgKzQ4LDQgQEAgUmVzb3VyY2VF
cnJvciBTeW5jaHJvbm91c0xvYWRlckNsaWVudDo6cAogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKLSNlbmRpZiAvLyBVU0UoQ0ZORVRXT1JLKQorI2VuZGlmIC8vIFVTRShDRlVSTENPTk5FQ1RJ
T04pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1N5bmNocm9ub3Vz
UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9TeW5jaHJvbm91c1Jlc291cmNlSGFu
ZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuY3BwCShyZXZpc2lvbiAyMDcwMzUpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1N5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVD
RlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDEyICsyNiwx
MyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlN5bmNocm9ub3VzUmVzb3VyY2VI
YW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5oIgogCi0jaWYgVVNFKENGTkVUV09SSykKKyNp
ZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogCiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25DRi5oIgog
I2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmgiCiAjaW5jbHVkZSAiTG9hZGVyUnVu
TG9vcENGLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0
cnkuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgIlJlc291cmNlSGFu
ZGxlQ2xpZW50LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgpAQCAtNDAsMjAgKzQx
LDYgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CiAKLSNpZiBQTEFURk9STShDT0NPQSkKLSNpbmNsdWRlICJDRk5ldHdvcmtT
UEkuaCIKLSNpbmNsdWRlICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgiCi0jaW5jbHVkZSAiV2Vi
Q29yZVVSTFJlc3BvbnNlLmgiCi0jZW5kaWYgLy8gUExBVEZPUk0oQ09DT0EpCi0KLSNpZiBQTEFU
Rk9STShJT1MpCi0jaW5jbHVkZSAiV2ViQ29yZVRocmVhZC5oIgotI2VuZGlmIC8vIFBMQVRGT1JN
KElPUykKLQotI2lmIFBMQVRGT1JNKFdJTikKLSNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5Lmgi
Ci0jZW5kaWYgLy8gUExBVEZPUk0oV0lOKQotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFN5bmNo
cm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZTo6U3luY2hyb25vdXNS
ZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlKFJlc291cmNlSGFuZGxlKiBoYW5k
bGUpCkBAIC02MywyMCArNTAsMTEgQEAgU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29u
bmVjdGlvbgogCiB2b2lkIFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25E
ZWxlZ2F0ZTo6c2V0dXBSZXF1ZXN0KENGTXV0YWJsZVVSTFJlcXVlc3RSZWYgcmVxdWVzdCkKIHsK
LSNpZiBQTEFURk9STShJT1MpCi0gICAgQ0ZVUkxSZXF1ZXN0U2V0U2hvdWxkU3RhcnRTeW5jaHJv
bm91c2x5KHJlcXVlc3QsIDEpOwotI2VuZGlmCiB9CiAKIHZvaWQgU3luY2hyb25vdXNSZXNvdXJj
ZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlOjpzZXR1cENvbm5lY3Rpb25TY2hlZHVsaW5n
KENGVVJMQ29ubmVjdGlvblJlZiBjb25uZWN0aW9uKQogewotI2lmIFBMQVRGT1JNKFdJTikKICAg
ICBDRlVSTENvbm5lY3Rpb25TY2hlZHVsZVdpdGhDdXJyZW50TWVzc2FnZVF1ZXVlKGNvbm5lY3Rp
b24pOwotI2VsaWYgUExBVEZPUk0oSU9TKQotICAgIENGVVJMQ29ubmVjdGlvblNjaGVkdWxlV2l0
aFJ1bkxvb3AoY29ubmVjdGlvbiwgV2ViVGhyZWFkUnVuTG9vcCgpLCBrQ0ZSdW5Mb29wRGVmYXVs
dE1vZGUpOwotI2Vsc2UKLSAgICBDRlVSTENvbm5lY3Rpb25TY2hlZHVsZVdpdGhSdW5Mb29wKGNv
bm5lY3Rpb24sIENGUnVuTG9vcEdldEN1cnJlbnQoKSwga0NGUnVuTG9vcERlZmF1bHRNb2RlKTsK
LSNlbmRpZgogICAgIENGVVJMQ29ubmVjdGlvblNjaGVkdWxlRG93bmxvYWRXaXRoUnVuTG9vcChj
b25uZWN0aW9uLCBsb2FkZXJSdW5Mb29wKCksIGtDRlJ1bkxvb3BEZWZhdWx0TW9kZSk7CiB9CiAK
QEAgLTEwMyw3ICs4MSw2IEBAIENGVVJMUmVxdWVzdFJlZiBTeW5jaHJvbm91c1Jlc291cmNlSGFu
ZGwKICAgICByZXR1cm4gbmV3Q0ZSZXF1ZXN0OwogfQogCi0jaWYgIVBMQVRGT1JNKENPQ09BKQog
c3RhdGljIHZvaWQgc2V0RGVmYXVsdE1JTUVUeXBlKENGVVJMUmVzcG9uc2VSZWYgcmVzcG9uc2Up
CiB7CiAgICAgc3RhdGljIENGU3RyaW5nUmVmIGRlZmF1bHRNSU1FVHlwZVN0cmluZyA9IGRlZmF1
bHRNSU1FVHlwZSgpLmNyZWF0ZUNGU3RyaW5nKCkubGVha1JlZigpOwpAQCAtMTMzLDcgKzExMCw2
IEBAIHN0YXRpYyB2b2lkIGFkanVzdE1JTUVUeXBlSWZOZWNlc3NhcnkoQ0YKICAgICBpZiAocmVz
dWx0ICE9IG9yaWdpbmFsUmVzdWx0KQogICAgICAgICBDRlVSTFJlc3BvbnNlU2V0TUlNRVR5cGUo
Y2ZSZXNwb25zZSwgcmVzdWx0LmdldCgpKTsKIH0KLSNlbmRpZiAvLyAhUExBVEZPUk0oQ09DT0Ep
CiAKIHZvaWQgU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRl
OjpkaWRSZWNlaXZlUmVzcG9uc2UoQ0ZVUkxDb25uZWN0aW9uUmVmIGNvbm5lY3Rpb24sIENGVVJM
UmVzcG9uc2VSZWYgY2ZSZXNwb25zZSkKIHsKQEAgLTE0MiwyMSArMTE4LDYgQEAgdm9pZCBTeW5j
aHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZQogICAgIGlmICghbV9oYW5kbGUtPmNsaWVu
dCgpKQogICAgICAgICByZXR1cm47CiAKLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICAvLyBBdm9p
ZCBNSU1FIHR5cGUgc25pZmZpbmcgaWYgdGhlIHJlc3BvbnNlIGNvbWVzIGJhY2sgYXMgMzA0IE5v
dCBNb2RpZmllZC4KLSAgICBhdXRvIG1zZyA9IENGVVJMUmVzcG9uc2VHZXRIVFRQUmVzcG9uc2Uo
Y2ZSZXNwb25zZSk7Ci0gICAgaW50IHN0YXR1c0NvZGUgPSBtc2cgPyBDRkhUVFBNZXNzYWdlR2V0
UmVzcG9uc2VTdGF0dXNDb2RlKG1zZykgOiAwOwotCi0gICAgaWYgKHN0YXR1c0NvZGUgIT0gMzA0
KSB7Ci0gICAgICAgIGJvb2wgaXNNYWluUmVzb3VyY2VMb2FkID0gbV9oYW5kbGUtPmZpcnN0UmVx
dWVzdCgpLnJlcXVlc3RlcigpID09IFJlc291cmNlUmVxdWVzdDo6UmVxdWVzdGVyOjpNYWluOwot
ICAgICAgICBhZGp1c3RNSU1FVHlwZUlmTmVjZXNzYXJ5KGNmUmVzcG9uc2UsIGlzTWFpblJlc291
cmNlTG9hZCk7Ci0gICAgfQotCi0jaWYgIVBMQVRGT1JNKElPUykKLSAgICBpZiAoX0NGVVJMUmVx
dWVzdENvcHlQcm90b2NvbFByb3BlcnR5Rm9yS2V5KG1faGFuZGxlLT5maXJzdFJlcXVlc3QoKS5j
ZlVSTFJlcXVlc3QoRG9Ob3RVcGRhdGVIVFRQQm9keSksIENGU1RSKCJGb3JjZUhUTUxNSU1FVHlw
ZSIpKSkKLSAgICAgICAgQ0ZVUkxSZXNwb25zZVNldE1JTUVUeXBlKGNmUmVzcG9uc2UsIENGU1RS
KCJ0ZXh0L2h0bWwiKSk7Ci0jZW5kaWYgLy8gIVBMQVRGT1JNKElPUykKLSNlbHNlCiAgICAgaWYg
KCFDRlVSTFJlc3BvbnNlR2V0TUlNRVR5cGUoY2ZSZXNwb25zZSkpCiAgICAgICAgIGFkanVzdE1J
TUVUeXBlSWZOZWNlc3NhcnkoY2ZSZXNwb25zZSk7CiAKQEAgLTE2NSw3ICsxMjYsNiBAQCB2b2lk
IFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lCiAgICAgICAgIEFTU0VSVCghbV9o
YW5kbGUtPnNob3VsZENvbnRlbnRTbmlmZigpKTsKICAgICAgICAgc2V0RGVmYXVsdE1JTUVUeXBl
KGNmUmVzcG9uc2UpOwogICAgIH0KLSNlbmRpZgogCiAjaWYgVVNFKFFVSUNLX0xPT0spCiAgICAg
bV9oYW5kbGUtPnNldFF1aWNrTG9va0hhbmRsZShRdWlja0xvb2tIYW5kbGU6OmNyZWF0ZShtX2hh
bmRsZSwgdGhpcywgY2ZSZXNwb25zZSkpOwpAQCAtMTc0LDcgKzEzNCw3IEBAIHZvaWQgU3luY2hy
b25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmUKICNlbmRpZgogICAgIAogICAgIFJlc291cmNl
UmVzcG9uc2UgcmVzb3VyY2VSZXNwb25zZShjZlJlc3BvbnNlKTsKLSNpZiBQTEFURk9STShDT0NP
QSkgJiYgRU5BQkxFKFdFQl9USU1JTkcpCisjaWYgRU5BQkxFKFdFQl9USU1JTkcpCiAgICAgUmVz
b3VyY2VIYW5kbGU6OmdldENvbm5lY3Rpb25UaW1pbmdEYXRhKGNvbm5lY3Rpb24sIHJlc291cmNl
UmVzcG9uc2UubmV0d29ya0xvYWRUaW1pbmcoKSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShj
b25uZWN0aW9uKTsKQEAgLTIyNCw3ICsxODQsNiBAQCB2b2lkIFN5bmNocm9ub3VzUmVzb3VyY2VI
YW5kbGVDRlVSTENvbm5lCiAKIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYgU3luY2hyb25vdXNSZXNv
dXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlOjp3aWxsQ2FjaGVSZXNwb25zZShDRkNh
Y2hlZFVSTFJlc3BvbnNlUmVmIGNhY2hlZFJlc3BvbnNlKQogewotI2lmIFBMQVRGT1JNKFdJTikK
ICAgICAvLyBXb3JrYXJvdW5kIGZvciA8cmRhcjovL3Byb2JsZW0vNjMwMDk5MD4gQ2FjaGluZyBk
b2VzIG5vdCByZXNwZWN0IFZhcnkgSFRUUCBoZWFkZXIuCiAgICAgLy8gRklYTUU6IFdlYkNvcmUg
Y2FjaGUgaGFzIGlzc3VlcyB3aXRoIFZhcnksIHRvbyAoYnVnIDU4Nzk3LCBidWcgNzE1MDkpLgog
ICAgIENGVVJMUmVzcG9uc2VSZWYgd3JhcHBlZFJlc3BvbnNlID0gQ0ZDYWNoZWRVUkxSZXNwb25z
ZUdldFdyYXBwZWRSZXNwb25zZShjYWNoZWRSZXNwb25zZSk7CkBAIC0yMzQsMTYgKzE5Myw4IEBA
IENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYgU3luY2hyb25vdXNSZXNvdXIKICAgICAgICAgaWYgKHZh
cnlWYWx1ZSkKICAgICAgICAgICAgIHJldHVybiAwOwogICAgIH0KLSNlbmRpZiAvLyBQTEFURk9S
TShXSU4pCi0KLSNpZiBQTEFURk9STShXSU4pCiAgICAgaWYgKG1faGFuZGxlLT5jbGllbnQoKSAm
JiAhbV9oYW5kbGUtPmNsaWVudCgpLT5zaG91bGRDYWNoZVJlc3BvbnNlKG1faGFuZGxlLCBjYWNo
ZWRSZXNwb25zZSkpCiAgICAgICAgIHJldHVybiAwOwotI2Vsc2UKLSAgICBDRkNhY2hlZFVSTFJl
c3BvbnNlUmVmIG5ld1Jlc3BvbnNlID0gbV9oYW5kbGUtPmNsaWVudCgpLT53aWxsQ2FjaGVSZXNw
b25zZShtX2hhbmRsZSwgY2FjaGVkUmVzcG9uc2UpOwotICAgIGlmIChuZXdSZXNwb25zZSAhPSBj
YWNoZWRSZXNwb25zZSkKLSAgICAgICAgcmV0dXJuIG5ld1Jlc3BvbnNlOwotI2VuZGlmCiAKICAg
ICBDRlJldGFpbihjYWNoZWRSZXNwb25zZSk7CiAgICAgcmV0dXJuIGNhY2hlZFJlc3BvbnNlOwpA
QCAtMjgwLDE0ICsyMzEsNyBAQCBCb29sZWFuIFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVS
TENvCiAKICAgICBMT0coTmV0d29yaywgIkNGTmV0IC0gU3luY2hyb25vdXNSZXNvdXJjZUhhbmRs
ZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlOjpjYW5SZXNwb25kVG9Qcm90ZWN0aW9uU3BhY2UoaGFu
ZGxlPSVwICglcykiLCBtX2hhbmRsZSwgbV9oYW5kbGUtPmZpcnN0UmVxdWVzdCgpLnVybCgpLnN0
cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogCi0jaWYgUExBVEZPUk0oSU9TKQotICAgIFByb3RlY3Rp
b25TcGFjZSBjb3JlUHJvdGVjdGlvblNwYWNlID0gUHJvdGVjdGlvblNwYWNlKHByb3RlY3Rpb25T
cGFjZSk7Ci0gICAgaWYgKGNvcmVQcm90ZWN0aW9uU3BhY2UuYXV0aGVudGljYXRpb25TY2hlbWUo
KSA9PSBQcm90ZWN0aW9uU3BhY2VBdXRoZW50aWNhdGlvblNjaGVtZVVua25vd24pCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gbV9oYW5kbGUtPmNhbkF1dGhlbnRpY2F0ZUFnYWlu
c3RQcm90ZWN0aW9uU3BhY2UoY29yZVByb3RlY3Rpb25TcGFjZSk7Ci0jZWxzZQogICAgIHJldHVy
biBtX2hhbmRsZS0+Y2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShjb3JlKHBy
b3RlY3Rpb25TcGFjZSkpOwotI2VuZGlmCiB9CiAjZW5kaWYgLy8gVVNFKFBST1RFQ1RJT05fU1BB
Q0VfQVVUSF9DQUxMQkFDSykKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jZi9TeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1N5bmNocm9u
b3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5oCShyZXZpc2lvbiAyMDcw
MzUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1N5bmNocm9ub3VzUmVz
b3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
MywxMCArMjMsOSBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFN5bmNocm9ub3Vz
UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZV9oCi0jZGVmaW5lIFN5bmNocm9u
b3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZV9oCisjcHJhZ21hIG9uY2UK
IAotI2lmIFVTRShDRk5FVFdPUkspCisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKIAogI2luY2x1
ZGUgIlJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuaCIKIApAQCAtNjcsNiAr
NjYsNCBAQCBwcml2YXRlOgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlLgogCi0jZW5kaWYgLy8g
VVNFKENGTkVUV09SSykKLQotI2VuZGlmIC8vIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9u
RGVsZWdhdGVfaAorI2VuZGlmIC8vIFVTRShDRlVSTENPTk5FQ1RJT04pCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL0NyZWRlbnRpYWxDb2NvYS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvQ3JlZGVudGlhbENv
Y29hLmgJKHJldmlzaW9uIDIwNzAzNSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY29jb2EvQ3JlZGVudGlhbENvY29hLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDE3ICsyMywx
MiBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYg
Q3JlZGVudGlhbENvY29hX2gKLSNkZWZpbmUgQ3JlZGVudGlhbENvY29hX2gKKyNwcmFnbWEgb25j
ZQogCiAjaW5jbHVkZSAiQ3JlZGVudGlhbEJhc2UuaCIKICNpbmNsdWRlIDxTZWN1cml0eS9TZWNC
YXNlLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogCi0jaWYgVVNFKENGTkVUV09SSykK
LSNpbmNsdWRlICJDRk5ldHdvcmtTUEkuaCIKLSNlbmRpZgotCiBPQkpDX0NMQVNTIE5TVVJMQ3Jl
ZGVudGlhbDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTIsMTggKzQ3LDEyIEBAIHB1Ymxp
YzoKIAogICAgIENyZWRlbnRpYWwoY29uc3QgQ3JlZGVudGlhbCYsIENyZWRlbnRpYWxQZXJzaXN0
ZW5jZSk7CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotICAgIGV4cGxpY2l0IENyZWRlbnRpYWwoQ0ZV
UkxDcmVkZW50aWFsUmVmKTsKLSNlbmRpZgogICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IENy
ZWRlbnRpYWwoTlNVUkxDcmVkZW50aWFsICopOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBp
c0VtcHR5KCkgY29uc3Q7CiAKICAgICBib29sIGVuY29kaW5nUmVxdWlyZXNQbGF0Zm9ybURhdGEo
KSBjb25zdCB7IHJldHVybiBtX25zQ3JlZGVudGlhbCAmJiBlbmNvZGluZ1JlcXVpcmVzUGxhdGZv
cm1EYXRhKG1fbnNDcmVkZW50aWFsLmdldCgpKTsgfQogCi0jaWYgVVNFKENGTkVUV09SSykKLSAg
ICBDRlVSTENyZWRlbnRpYWxSZWYgY2ZDcmVkZW50aWFsKCkgY29uc3Q7Ci0jZW5kaWYKICAgICBX
RUJDT1JFX0VYUE9SVCBOU1VSTENyZWRlbnRpYWwgKm5zQ3JlZGVudGlhbCgpIGNvbnN0OwogCiAg
ICAgc3RhdGljIGJvb2wgcGxhdGZvcm1Db21wYXJlKGNvbnN0IENyZWRlbnRpYWwmLCBjb25zdCBD
cmVkZW50aWFsJik7CkBAIC03NSw1ICs2NCwzIEBAIHByaXZhdGU6CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBDcmVkZW50aWFsQ29jb2FfaApJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9DcmVkZW50aWFsQ29jb2EubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9DcmVkZW50aWFs
Q29jb2EubW0JKHJldmlzaW9uIDIwNzAzNSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY29jb2EvQ3JlZGVudGlhbENvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxMyAr
MjYsNiBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJDcmVkZW50aWFsQ29jb2EuaCIK
IAotI2lmIFVTRShDRk5FVFdPUkspCi1AaW50ZXJmYWNlIE5TVVJMQ3JlZGVudGlhbCAoV2ViRGV0
YWlscykKLS0gKGlkKV9pbml0V2l0aENGVVJMQ3JlZGVudGlhbDooQ0ZVUkxDcmVkZW50aWFsUmVm
KWNyZWRlbnRpYWw7Ci0tIChDRlVSTENyZWRlbnRpYWxSZWYpIF9DRlVSTENyZWRlbnRpYWw7Ci1A
ZW5kCi0jZW5kaWYKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgTlNVUkxDcmVkZW50
aWFsUGVyc2lzdGVuY2UgdG9OU1VSTENyZWRlbnRpYWxQZXJzaXN0ZW5jZShDcmVkZW50aWFsUGVy
c2lzdGVuY2UgcGVyc2lzdGVuY2UpCkBAIC04NCwyNiArNzcsMTIgQEAgQ3JlZGVudGlhbDo6Q3Jl
ZGVudGlhbChjb25zdCBDcmVkZW50aWFsJgogICAgIH0KIH0KIAotI2lmIFVTRShDRk5FVFdPUksp
Ci1DcmVkZW50aWFsOjpDcmVkZW50aWFsKENGVVJMQ3JlZGVudGlhbFJlZiBjcmVkZW50aWFsKQot
ICAgIDogQ3JlZGVudGlhbChhZG9wdE5TKFtbTlNVUkxDcmVkZW50aWFsIGFsbG9jXSBfaW5pdFdp
dGhDRlVSTENyZWRlbnRpYWw6Y3JlZGVudGlhbF0pLmdldCgpKQotewotfQotI2VuZGlmCi0KIENy
ZWRlbnRpYWw6OkNyZWRlbnRpYWwoTlNVUkxDcmVkZW50aWFsICpjcmVkZW50aWFsKQogICAgIDog
Q3JlZGVudGlhbEJhc2UoY3JlZGVudGlhbC51c2VyLCBjcmVkZW50aWFsLnBhc3N3b3JkLCB0b0Ny
ZWRlbnRpYWxQZXJzaXN0ZW5jZShjcmVkZW50aWFsLnBlcnNpc3RlbmNlKSkKICAgICAsIG1fbnND
cmVkZW50aWFsKGNyZWRlbnRpYWwpCiB7CiB9CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotQ0ZVUkxD
cmVkZW50aWFsUmVmIENyZWRlbnRpYWw6OmNmQ3JlZGVudGlhbCgpIGNvbnN0Ci17Ci0gICAgcmV0
dXJuIFtuc0NyZWRlbnRpYWwoKSBfQ0ZVUkxDcmVkZW50aWFsXTsKLX0KLSNlbmRpZgotCiBOU1VS
TENyZWRlbnRpYWwgKkNyZWRlbnRpYWw6Om5zQ3JlZGVudGlhbCgpIGNvbnN0CiB7CiAgICAgaWYg
KG1fbnNDcmVkZW50aWFsKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
b2NvYS9Qcm90ZWN0aW9uU3BhY2VDb2NvYS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUHJvdGVjdGlvblNwYWNlQ29jb2EuaAkocmV2aXNpb24g
MjA3MDM1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9Qcm90ZWN0
aW9uU3BhY2VDb2NvYS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMywxNiArMjMsMTEgQEAKICAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFByb3RlY3Rpb25T
cGFjZUNvY29hX2gKLSNkZWZpbmUgUHJvdGVjdGlvblNwYWNlQ29jb2FfaAorI3ByYWdtYSBvbmNl
CiAKICNpbmNsdWRlICJQcm90ZWN0aW9uU3BhY2VCYXNlLmgiCiAjaW5jbHVkZSA8d3RmL1JldGFp
blB0ci5oPgogCi0jaWYgVVNFKENGTkVUV09SSykKLXR5cGVkZWYgc3RydWN0IF9DRlVSTFByb3Rl
Y3Rpb25TcGFjZSogQ0ZVUkxQcm90ZWN0aW9uU3BhY2VSZWY7Ci0jZW5kaWYKLQogT0JKQ19DTEFT
UyBOU1VSTFByb3RlY3Rpb25TcGFjZTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDcsOSAr
NDIsNiBAQCBwdWJsaWM6CiAKICAgICBQcm90ZWN0aW9uU3BhY2UoV1RGOjpIYXNoVGFibGVEZWxl
dGVkVmFsdWVUeXBlIGRlbGV0ZWRWYWx1ZSkgOiBQcm90ZWN0aW9uU3BhY2VCYXNlKGRlbGV0ZWRW
YWx1ZSkgeyB9CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotICAgIGV4cGxpY2l0IFByb3RlY3Rpb25T
cGFjZShDRlVSTFByb3RlY3Rpb25TcGFjZVJlZik7Ci0jZW5kaWYKICAgICBXRUJDT1JFX0VYUE9S
VCBleHBsaWNpdCBQcm90ZWN0aW9uU3BhY2UoTlNVUkxQcm90ZWN0aW9uU3BhY2UgKik7CiAKICAg
ICBzdGF0aWMgYm9vbCBwbGF0Zm9ybUNvbXBhcmUoY29uc3QgUHJvdGVjdGlvblNwYWNlJiBhLCBj
b25zdCBQcm90ZWN0aW9uU3BhY2UmIGIpOwpAQCAtNTgsOSArNTAsNiBAQCBwdWJsaWM6CiAKICAg
ICBXRUJDT1JFX0VYUE9SVCBib29sIHJlY2VpdmVzQ3JlZGVudGlhbFNlY3VyZWx5KCkgY29uc3Q7
CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotICAgIENGVVJMUHJvdGVjdGlvblNwYWNlUmVmIGNmU3Bh
Y2UoKSBjb25zdDsKLSNlbmRpZgogICAgIFdFQkNPUkVfRVhQT1JUIE5TVVJMUHJvdGVjdGlvblNw
YWNlICpuc1NwYWNlKCkgY29uc3Q7CiAKIHByaXZhdGU6CkBAIC03MCw1ICs1OSwzIEBAIHByaXZh
dGU6CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBQcm90ZWN0aW9u
U3BhY2VDb2NvYV9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29h
L1Byb3RlY3Rpb25TcGFjZUNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY29jb2EvUHJvdGVjdGlvblNwYWNlQ29jb2EubW0JKHJldmlzaW9uIDIw
NzAzNSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUHJvdGVjdGlv
blNwYWNlQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDIyICsyNiw5IEBACiAjaW1wb3J0
ICJjb25maWcuaCIKICNpbXBvcnQgIlByb3RlY3Rpb25TcGFjZUNvY29hLmgiCiAKLSNpZiBVU0Uo
Q0ZORVRXT1JLKQotQGludGVyZmFjZSBOU1VSTFByb3RlY3Rpb25TcGFjZSAoV2ViRGV0YWlscykK
LS0gKENGVVJMUHJvdGVjdGlvblNwYWNlUmVmKSBfQ0ZVUkxQcm90ZWN0aW9uU3BhY2U7Ci0tIChp
ZClfaW5pdFdpdGhDRlVSTFByb3RlY3Rpb25TcGFjZTooQ0ZVUkxQcm90ZWN0aW9uU3BhY2VSZWYp
Y2ZQcm90U3BhY2U7Ci1AZW5kCi0jZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0jaWYg
VVNFKENGTkVUV09SSykKLVByb3RlY3Rpb25TcGFjZTo6UHJvdGVjdGlvblNwYWNlKENGVVJMUHJv
dGVjdGlvblNwYWNlUmVmIHNwYWNlKQotICAgIDogUHJvdGVjdGlvblNwYWNlKGFkb3B0TlMoW1tO
U1VSTFByb3RlY3Rpb25TcGFjZSBhbGxvY10gX2luaXRXaXRoQ0ZVUkxQcm90ZWN0aW9uU3BhY2U6
c3BhY2VdKS5nZXQoKSkKLXsKLX0KLSNlbmRpZgotCiBzdGF0aWMgUHJvdGVjdGlvblNwYWNlU2Vy
dmVyVHlwZSB0eXBlKE5TVVJMUHJvdGVjdGlvblNwYWNlICpzcGFjZSkKIHsKICAgICBpZiAoW3Nw
YWNlIGlzUHJveHldKSB7CkBAIC0xMDUsMTMgKzkyLDYgQEAgUHJvdGVjdGlvblNwYWNlOjpQcm90
ZWN0aW9uU3BhY2UoTlNVUkxQcgogICAgIG1fbnNTcGFjZSA9IHNwYWNlOwogfQogCi0jaWYgVVNF
KENGTkVUV09SSykKLUNGVVJMUHJvdGVjdGlvblNwYWNlUmVmIFByb3RlY3Rpb25TcGFjZTo6Y2ZT
cGFjZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFtuc1NwYWNlKCkgX0NGVVJMUHJvdGVjdGlvblNw
YWNlXTsKLX0KLSNlbmRpZgotCiBOU1VSTFByb3RlY3Rpb25TcGFjZSAqUHJvdGVjdGlvblNwYWNl
Ojpuc1NwYWNlKCkgY29uc3QKIHsKICAgICBpZiAobV9uc1NwYWNlKQpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNl
UmVxdWVzdENvY29hLm1tCShyZXZpc2lvbiAyMDcwMzUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVxdWVzdENvY29hLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC01MywxNSArNTMsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBOU1VSTFJlcXVlc3QgKlJl
c291cmNlUmVxdWVzdDo6bnNVUkxSZXF1ZXN0KEhUVFBCb2R5VXBkYXRlUG9saWN5IGJvZHlQb2xp
Y3kpIGNvbnN0CiB7CiAgICAgdXBkYXRlUGxhdGZvcm1SZXF1ZXN0KGJvZHlQb2xpY3kpOwotI2lm
IFVTRShDRk5FVFdPUkspCi0gICAgaWYgKCFtX25zUmVxdWVzdCkKLSAgICAgICAgY29uc3RfY2Fz
dDxSZXNvdXJjZVJlcXVlc3QqPih0aGlzKS0+dXBkYXRlTlNVUkxSZXF1ZXN0KCk7Ci0jZW5kaWYK
ICAgICByZXR1cm4gW1ttX25zUmVxdWVzdC5nZXQoKSByZXRhaW5dIGF1dG9yZWxlYXNlXTsKIH0K
IAotI2lmICFVU0UoQ0ZORVRXT1JLKQotCiBDRlVSTFJlcXVlc3RSZWYgUmVzb3VyY2VSZXF1ZXN0
OjpjZlVSTFJlcXVlc3QoSFRUUEJvZHlVcGRhdGVQb2xpY3kgYm9keVBvbGljeSkgY29uc3QKIHsK
ICAgICByZXR1cm4gW25zVVJMUmVxdWVzdChib2R5UG9saWN5KSBfQ0ZVUkxSZXF1ZXN0XTsKQEAg
LTIxNCw4ICsyMDgsNiBAQCB2b2lkIFJlc291cmNlUmVxdWVzdDo6c2V0U3RvcmFnZVNlc3Npb24o
CiAgICAgbV9uc1JlcXVlc3QgPSBhZG9wdE5TKHdrQ29weVJlcXVlc3RXaXRoU3RvcmFnZVNlc3Np
b24oc3RvcmFnZVNlc3Npb24sIG1fbnNSZXF1ZXN0LmdldCgpKSk7CiB9CiAKLSNlbmRpZiAvLyBV
U0UoQ0ZORVRXT1JLKQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBQTEFU
Rk9STShDT0NPQSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2Ev
UmVzb3VyY2VSZXNwb25zZUNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXNwb25zZUNvY29hLm1tCShyZXZpc2lvbiAy
MDcwMzUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNl
UmVzcG9uc2VDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtNzUsMTMgKzc1LDggQEAgdm9pZCBS
ZXNvdXJjZVJlc3BvbnNlOjpkaXNhYmxlTGF6eUluaXRpYQogCiBDZXJ0aWZpY2F0ZUluZm8gUmVz
b3VyY2VSZXNwb25zZTo6cGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm8oKSBjb25zdAogewotI2lmIFVT
RShDRk5FVFdPUkspCi0gICAgQVNTRVJUKG1fY2ZSZXNwb25zZSk7Ci0gICAgQ0ZVUkxSZXNwb25z
ZVJlZiBjZlJlc3BvbnNlID0gbV9jZlJlc3BvbnNlLmdldCgpOwotI2Vsc2UKICAgICBBU1NFUlQo
bV9uc1Jlc3BvbnNlKTsKICAgICBDRlVSTFJlc3BvbnNlUmVmIGNmUmVzcG9uc2UgPSBbbV9uc1Jl
c3BvbnNlIF9DRlVSTFJlc3BvbnNlXTsKLSNlbmRpZgogCiAgICAgaWYgKCFjZlJlc3BvbnNlKQog
ICAgICAgICByZXR1cm4geyB9OwpAQCAtMTE0LDM1ICsxMDksNiBAQCBDZXJ0aWZpY2F0ZUluZm8g
UmVzb3VyY2VSZXNwb25zZTo6cGxhdGZvCiAjZW5kaWYKIH0KIAotI2lmIFVTRShDRk5FVFdPUksp
Ci0KLU5TVVJMUmVzcG9uc2UgKlJlc291cmNlUmVzcG9uc2U6Om5zVVJMUmVzcG9uc2UoKSBjb25z
dAotewotICAgIGlmICghbV9uc1Jlc3BvbnNlICYmICFtX2NmUmVzcG9uc2UgJiYgIW1faXNOdWxs
KSB7Ci0gICAgICAgIGluaXROU1VSTFJlc3BvbnNlKCk7Ci0gICAgICAgIG1fY2ZSZXNwb25zZSA9
IFttX25zUmVzcG9uc2UuZ2V0KCkgX0NGVVJMUmVzcG9uc2VdOwotICAgICAgICByZXR1cm4gbV9u
c1Jlc3BvbnNlLmdldCgpOwotICAgIH0KLQotICAgIGlmICghbV9jZlJlc3BvbnNlKQotICAgICAg
ICByZXR1cm4gbmlsOwotCi0gICAgaWYgKCFtX25zUmVzcG9uc2UpCi0gICAgICAgIG1fbnNSZXNw
b25zZSA9IFtOU1VSTFJlc3BvbnNlIF9yZXNwb25zZVdpdGhDRlVSTFJlc3BvbnNlOm1fY2ZSZXNw
b25zZS5nZXQoKV07Ci0KLSAgICByZXR1cm4gbV9uc1Jlc3BvbnNlLmdldCgpOwotfQotCi1SZXNv
dXJjZVJlc3BvbnNlOjpSZXNvdXJjZVJlc3BvbnNlKE5TVVJMUmVzcG9uc2UqIG5zUmVzcG9uc2Up
Ci0gICAgOiBtX2luaXRMZXZlbChVbmluaXRpYWxpemVkKQotICAgICwgbV9jZlJlc3BvbnNlKFtu
c1Jlc3BvbnNlIF9DRlVSTFJlc3BvbnNlXSkKLSAgICAsIG1fbnNSZXNwb25zZShuc1Jlc3BvbnNl
KQotewotICAgIG1faXNOdWxsID0gIW5zUmVzcG9uc2U7Ci19Ci0KLSNlbHNlCi0KIHN0YXRpYyBO
U1N0cmluZyogY29uc3QgY29tbW9uSGVhZGVyRmllbGRzW10gPSB7CiAgICAgQCJBZ2UiLCBAIkNh
Y2hlLUNvbnRyb2wiLCBAIkNvbnRlbnQtVHlwZSIsIEAiRGF0ZSIsIEAiRXRhZyIsIEAiRXhwaXJl
cyIsIEAiTGFzdC1Nb2RpZmllZCIsIEAiUHJhZ21hIgogfTsKQEAgLTI0Miw4ICsyMDgsNiBAQCBi
b29sIFJlc291cmNlUmVzcG9uc2U6OnBsYXRmb3JtQ29tcGFyZShjCiAgICAgcmV0dXJuIGEubnNV
UkxSZXNwb25zZSgpID09IGIubnNVUkxSZXNwb25zZSgpOwogfQogCi0jZW5kaWYgLy8gVVNFKENG
TkVUV09SSykKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gUExBVEZPUk0o
Q09DT0EpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9RdWlja0xv
b2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9R
dWlja0xvb2suaAkocmV2aXNpb24gMjA3MDM1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9pb3MvUXVpY2tMb29rLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDEwICszMyw2IEBA
CiAjaW1wb3J0IDxvYmpjL29iamMtcnVudGltZS5oPgogI2ltcG9ydCA8d3RmL1JlZlB0ci5oPgog
Ci0jaWYgVVNFKENGTkVUV09SSykKLSNpbmNsdWRlICJDRk5ldHdvcmtTUEkuaCIKLSNlbmRpZgot
CiBPQkpDX0NMQVNTIE5TRGF0YTsKIE9CSkNfQ0xBU1MgTlNEaWN0aW9uYXJ5OwogT0JKQ19DTEFT
UyBOU0ZpbGVIYW5kbGU7CkBAIC04MSw5ICs3Nyw2IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgYm9vbCBzaG91bGRDcmVhdGVGb3JNSU1FVHlwZShjb25zdCBTdHJpbmcmKTsK
IAogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UXVpY2tMb29rSGFuZGxlPiBjcmVhdGUoUmVz
b3VyY2VIYW5kbGUqLCBOU1VSTENvbm5lY3Rpb24gKiwgTlNVUkxSZXNwb25zZSAqLCBpZCBkZWxl
Z2F0ZSk7Ci0jaWYgVVNFKENGTkVUV09SSykKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFF1
aWNrTG9va0hhbmRsZT4gY3JlYXRlKFJlc291cmNlSGFuZGxlKiwgU3luY2hyb25vdXNSZXNvdXJj
ZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlKiwgQ0ZVUkxSZXNwb25zZVJlZik7Ci0jZW5k
aWYKICAgICAvLyBGSVhNRTogVXNlIG9mIFJlc291cmNlTG9hZGVyIGhlcmUgaXMgYSBwbGF0Zm9y
bSB2aW9sYXRpb24uCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxR
dWlja0xvb2tIYW5kbGU+IGNyZWF0ZShSZXNvdXJjZUxvYWRlciYsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmKTsKIApAQCAtOTUsOSArODgsNiBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBkaWRGYWlsKCk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBOU1VSTFJlc3BvbnNlICpuc1Jl
c3BvbnNlKCk7Ci0jaWYgVVNFKENGTkVUV09SSykKLSAgICBDRlVSTFJlc3BvbnNlUmVmIGNmUmVz
cG9uc2UoKTsKLSNlbmRpZgogCiAgICAgdm9pZCBzZXRDbGllbnQoUGFzc1JlZlB0cjxRdWlja0xv
b2tIYW5kbGVDbGllbnQ+IGNsaWVudCkgeyBtX2NsaWVudCA9IGNsaWVudDsgfQogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9RdWlja0xvb2subW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUXVpY2tMb29rLm1tCShy
ZXZpc2lvbiAyMDcwMzUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9R
dWlja0xvb2subW0JKHdvcmtpbmcgY29weSkKQEAgLTE4NSw4MSArMTg1LDYgQEAgY29uc3QgY2hh
ciogV2ViQ29yZTo6UUxQcmV2aWV3UHJvdG9jb2woKQogICAgIHJldHVybiBwcmV2aWV3UHJvdG9j
b2wuZ2V0KCkuZGF0YSgpOwogfQogCi0jaWYgVVNFKENGTkVUV09SSykKLS8vIFRoZSB3YXkgUXVp
Y2tMb29rIHdvcmtzIGlzIHdlIHBhc3MgaXQgYW4gTlNVUkxDb25uZWN0aW9uRGVsZWdhdGUgY2Fs
bGJhY2sgb2JqZWN0IGF0IGNyZWF0aW9uCi0vLyB0aW1lLiBUaGVuIHdlIHBhc3MgaXQgYWxsIHRo
ZSBkYXRhIGFzIHdlIHJlY2VpdmUgaXQuIE9uY2Ugd2UndmUgZG93bmxvYWRlZCB0aGUgZnVsbCBV
UkwsCi0vLyBRdWlja0xvb2sgdHVybnMgYXJvdW5kIGFuZCBzZW5kIHVzLCB0aHJvdWdoIHRoaXMg
ZGVsZWdhdGUsIHRoZSBIVE1MIHZlcnNpb24gb2YgdGhlIGZpbGUgd2hpY2ggd2UKLS8vIHBhc3Mg
b24gdG8gV2ViQ29yZS4gVGhlIGZsYWcgbV9maW5pc2hlZExvYWRpbmdEYXRhSW50b0NvbnZlcnRl
ciBpbiBRdWlja0xvb2tIYW5kbGUgZGVjaWRlcwotLy8gd2hldGhlciB0byBwYXNzIHRoZSBkYXRh
IHRvIFF1aWNrTG9vayBvciBXZWJDb3JlLgotLy8KLS8vIFRoaXMgd29ya3MgZmluZSB3aGVuIHVz
aW5nIE5TIEFQSXMsIGJ1dCB3aGVuIHVzaW5nIENGTmV0d29yaywgd2UgZG9uJ3QgaGF2ZSBhIE5T
VVJMQ29ubmVjdGlvbkRlbGVnYXRlLgotLy8gU28gd2UgY3JlYXRlIFdlYlF1aWNrTG9va0hhbmRs
ZUFzRGVsZWdhdGUgYXMgYW4gaW50ZXJtZWRpYXRlIGRlbGVnYXRlIG9iamVjdCBhbmQgcGFzcyBp
dCB0bwotLy8gUUxQcmV2aWV3Q29udmVydGVyLiBUaGUgcHJveHkgZGVsZWdhdGUgdGhlbiBmb3J3
YXJkcyB0aGUgbWVzc2FnZXMgb24gdG8gdGhlIENGTmV0d29yayBjb2RlLgotQGludGVyZmFjZSBX
ZWJRdWlja0xvb2tIYW5kbGVBc0RlbGVnYXRlIDogTlNPYmplY3QgPE5TVVJMQ29ubmVjdGlvbkRl
bGVnYXRlLCBXZWJDb3JlUmVzb3VyY2VMb2FkZXJEZWxlZ2F0ZT4gewotICAgIFJlZlB0cjxTeW5j
aHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU+IG1fY29ubmVjdGlv
bkRlbGVnYXRlOwotfQotCi0tIChpZClpbml0V2l0aENvbm5lY3Rpb25EZWxlZ2F0ZTooU3luY2hy
b25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlKiljb25uZWN0aW9uRGVs
ZWdhdGU7Ci1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBXZWJRdWlja0xvb2tIYW5kbGVBc0RlbGVn
YXRlCi0tIChpZClpbml0V2l0aENvbm5lY3Rpb25EZWxlZ2F0ZTooU3luY2hyb25vdXNSZXNvdXJj
ZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlKiljb25uZWN0aW9uRGVsZWdhdGUKLXsKLSAg
ICBzZWxmID0gW3N1cGVyIGluaXRdOwotICAgIGlmICghc2VsZikKLSAgICAgICAgcmV0dXJuIG5p
bDsKLSAgICBtX2Nvbm5lY3Rpb25EZWxlZ2F0ZSA9IGNvbm5lY3Rpb25EZWxlZ2F0ZTsKLSAgICBy
ZXR1cm4gc2VsZjsKLX0KLQotLSAodm9pZCljb25uZWN0aW9uOihOU1VSTENvbm5lY3Rpb24gKilj
b25uZWN0aW9uIGRpZFJlY2VpdmVEYXRhQXJyYXk6KE5TQXJyYXkgKilkYXRhQXJyYXkKLXsKLSAg
ICBVTlVTRURfUEFSQU0oY29ubmVjdGlvbik7Ci0gICAgaWYgKCFtX2Nvbm5lY3Rpb25EZWxlZ2F0
ZSkKLSAgICAgICAgcmV0dXJuOwotICAgIExPRyhOZXR3b3JrLCAiV2ViUXVpY2tMb29rSGFuZGxl
QXNEZWxlZ2F0ZTo6ZGlkUmVjZWl2ZURhdGFBcnJheSgpIik7Ci0gICAgbV9jb25uZWN0aW9uRGVs
ZWdhdGUtPmRpZFJlY2VpdmVEYXRhQXJyYXkocmVpbnRlcnByZXRfY2FzdDxDRkFycmF5UmVmPihk
YXRhQXJyYXkpKTsKLX0KLQotLSAodm9pZCljb25uZWN0aW9uOihOU1VSTENvbm5lY3Rpb24gKilj
b25uZWN0aW9uIGRpZFJlY2VpdmVEYXRhOihOU0RhdGEgKilkYXRhIGxlbmd0aFJlY2VpdmVkOihs
b25nIGxvbmcpbGVuZ3RoUmVjZWl2ZWQKLXsKLSAgICBVTlVTRURfUEFSQU0oY29ubmVjdGlvbik7
Ci0gICAgaWYgKCFtX2Nvbm5lY3Rpb25EZWxlZ2F0ZSkKLSAgICAgICAgcmV0dXJuOwotICAgIExP
RyhOZXR3b3JrLCAiV2ViUXVpY2tMb29rSGFuZGxlQXNEZWxlZ2F0ZTo6ZGlkUmVjZWl2ZURhdGEo
KSAtIGRhdGEgbGVuZ3RoID0gJWxkIiwgKGxvbmcpW2RhdGEgbGVuZ3RoXSk7Ci0KLSAgICAvLyBR
dWlja0xvb2sgY29kZSBzZW5kcyB1cyBhIG5pbCBkYXRhIGF0IHRpbWVzLiBUaGUgY2hlY2sgYmVs
b3cgaXMgdGhlIHNhbWUgYXMgdGhlIG9uZSBpbgotICAgIC8vIFJlc291cmNlSGFuZGxlTWFjLmNw
cCBhZGRlZCBmb3IgYSBkaWZmZXJlbnQgYnVnLgotICAgIGlmICghW2RhdGEgbGVuZ3RoXSkKLSAg
ICAgICAgcmV0dXJuOwotICAgIG1fY29ubmVjdGlvbkRlbGVnYXRlLT5kaWRSZWNlaXZlRGF0YShy
ZWludGVycHJldF9jYXN0PENGRGF0YVJlZj4oZGF0YSksIHN0YXRpY19jYXN0PGludD4obGVuZ3Ro
UmVjZWl2ZWQpKTsKLX0KLQotLSAodm9pZCljb25uZWN0aW9uRGlkRmluaXNoTG9hZGluZzooTlNV
UkxDb25uZWN0aW9uICopY29ubmVjdGlvbgotewotICAgIFVOVVNFRF9QQVJBTShjb25uZWN0aW9u
KTsKLSAgICBpZiAoIW1fY29ubmVjdGlvbkRlbGVnYXRlKQotICAgICAgICByZXR1cm47Ci0gICAg
TE9HKE5ldHdvcmssICJXZWJRdWlja0xvb2tIYW5kbGVBc0RlbGVnYXRlOjpkaWRGaW5pc2hMb2Fk
aW5nKCkiKTsKLSAgICBtX2Nvbm5lY3Rpb25EZWxlZ2F0ZS0+ZGlkRmluaXNoTG9hZGluZygpOwot
fQotCi0tICh2b2lkKWNvbm5lY3Rpb246KE5TVVJMQ29ubmVjdGlvbiAqKWNvbm5lY3Rpb24gZGlk
RmFpbFdpdGhFcnJvcjooTlNFcnJvciAqKWVycm9yCi17Ci0gICAgVU5VU0VEX1BBUkFNKGNvbm5l
Y3Rpb24pOwotICAgIGlmICghbV9jb25uZWN0aW9uRGVsZWdhdGUpCi0gICAgICAgIHJldHVybjsK
LSAgICBMT0coTmV0d29yaywgIldlYlF1aWNrTG9va0hhbmRsZUFzRGVsZWdhdGU6OmRpZEZhaWwo
KSIpOwotICAgIG1fY29ubmVjdGlvbkRlbGVnYXRlLT5kaWRGYWlsKHJlaW50ZXJwcmV0X2Nhc3Q8
Q0ZFcnJvclJlZj4oZXJyb3IpKTsKLX0KLQotLSAodm9pZClkZXRhY2hIYW5kbGUKLXsKLSAgICBt
X2Nvbm5lY3Rpb25EZWxlZ2F0ZSA9IG51bGxwdHI7Ci19Ci1AZW5kCi0jZW5kaWYKLQogQGludGVy
ZmFjZSBXZWJSZXNvdXJjZUxvYWRlclF1aWNrTG9va0RlbGVnYXRlIDogTlNPYmplY3QgPE5TVVJM
Q29ubmVjdGlvbkRlbGVnYXRlLCBXZWJDb3JlUmVzb3VyY2VMb2FkZXJEZWxlZ2F0ZT4gewogICAg
IFJlZlB0cjxSZXNvdXJjZUxvYWRlcj4gX3Jlc291cmNlTG9hZGVyOwogICAgIEJPT0wgX2hhc1Nl
bnREaWRSZWNlaXZlUmVzcG9uc2U7CkBAIC00MTEsMjYgKzMzNiw2IEBAIHN0ZDo6dW5pcXVlX3B0
cjxRdWlja0xvb2tIYW5kbGU+IFF1aWNrTG8KICAgICByZXR1cm4gcXVpY2tMb29rSGFuZGxlOwog
fQogCi0jaWYgVVNFKENGTkVUV09SSykKLXN0ZDo6dW5pcXVlX3B0cjxRdWlja0xvb2tIYW5kbGU+
IFF1aWNrTG9va0hhbmRsZTo6Y3JlYXRlKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIFN5bmNocm9u
b3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZSogY29ubmVjdGlvbkRlbGVn
YXRlLCBDRlVSTFJlc3BvbnNlUmVmIGNmUmVzcG9uc2UpCi17Ci0gICAgQVNTRVJUX0FSRyhoYW5k
bGUsIGhhbmRsZSk7Ci0gICAgaWYgKGhhbmRsZS0+Zmlyc3RSZXF1ZXN0KCkucmVxdWVzdGVyKCkg
IT0gUmVzb3VyY2VSZXF1ZXN0OjpSZXF1ZXN0ZXI6Ok1haW4gfHwgIVtRTFByZXZpZXdHZXRTdXBw
b3J0ZWRNSU1FVHlwZXNTZXQoKSBjb250YWluc09iamVjdDooTlNTdHJpbmcgKilDRlVSTFJlc3Bv
bnNlR2V0TUlNRVR5cGUoY2ZSZXNwb25zZSldKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQot
ICAgIE5TVVJMUmVzcG9uc2UgKm5zUmVzcG9uc2UgPSBbTlNVUkxSZXNwb25zZSBfcmVzcG9uc2VX
aXRoQ0ZVUkxSZXNwb25zZTpjZlJlc3BvbnNlXTsKLSAgICBXZWJRdWlja0xvb2tIYW5kbGVBc0Rl
bGVnYXRlICpkZWxlZ2F0ZSA9IFtbW1dlYlF1aWNrTG9va0hhbmRsZUFzRGVsZWdhdGUgYWxsb2Nd
IGluaXRXaXRoQ29ubmVjdGlvbkRlbGVnYXRlOmNvbm5lY3Rpb25EZWxlZ2F0ZV0gYXV0b3JlbGVh
c2VdOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxRdWlja0xvb2tIYW5kbGU+IHF1aWNrTG9va0hhbmRs
ZShuZXcgUXVpY2tMb29rSGFuZGxlKFtoYW5kbGUtPmZpcnN0UmVxdWVzdCgpLm5zVVJMUmVxdWVz
dChEb05vdFVwZGF0ZUhUVFBCb2R5KSBVUkxdLCBuaWwsIG5zUmVzcG9uc2UsIGRlbGVnYXRlKSk7
Ci0gICAgaGFuZGxlLT5jbGllbnQoKS0+ZGlkQ3JlYXRlUXVpY2tMb29rSGFuZGxlKCpxdWlja0xv
b2tIYW5kbGUpOwotICAgIHJldHVybiBxdWlja0xvb2tIYW5kbGU7Ci19Ci0KLUNGVVJMUmVzcG9u
c2VSZWYgUXVpY2tMb29rSGFuZGxlOjpjZlJlc3BvbnNlKCkKLXsKLSAgICByZXR1cm4gW21fbnNS
ZXNwb25zZSBfQ0ZVUkxSZXNwb25zZV07Ci19Ci0jZW5kaWYKLQogYm9vbCBRdWlja0xvb2tIYW5k
bGU6OnNob3VsZENyZWF0ZUZvck1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiB7CiAg
ICAgcmV0dXJuIFtRTFByZXZpZXdHZXRTdXBwb3J0ZWRNSU1FVHlwZXNTZXQoKSBjb250YWluc09i
amVjdDptaW1lVHlwZV07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lv
cy9SZXNvdXJjZUhhbmRsZUlPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2lvcy9SZXNvdXJjZUhhbmRsZUlPUy5tbQkocmV2aXNpb24gMjA3MDM1KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUmVzb3VyY2VIYW5kbGVJT1Mu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTEsMzkgKzAsMCBAQAotLy8KLS8vICBSZXNvdXJjZUhhbmRs
ZUlQaG9uZS5tbQotLy8gIFdlYkNvcmUKLS8vCi0vLyAgQ29weXJpZ2h0IDIwMTEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0
ICJSZXNvdXJjZUhhbmRsZUludGVybmFsLmgiCi0KLSNpZiBVU0UoQ0ZORVRXT1JLKQotCi0jaW1w
b3J0IDxDRk5ldHdvcmsvQ0ZTb2NrZXRTdHJlYW1Qcml2Lmg+Ci0jaW1wb3J0IDxGb3VuZGF0aW9u
L05TVVJMUmVxdWVzdFByaXZhdGUuaD4KLQotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQotQ0ZNdXRhYmxlRGljdGlvbmFyeVJlZiBSZXNvdXJjZUhhbmRs
ZTo6Y3JlYXRlU1NMUHJvcGVydGllc0Zyb21OU1VSTFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0KQotewotICAgIE5TU3RyaW5nICpob3N0ID0gcmVxdWVzdC51cmwoKS5ob3N0
KCk7Ci0gICAgTlNBcnJheSAqY2VydEFycmF5ID0gW05TVVJMUmVxdWVzdCBhbGxvd3NTcGVjaWZp
Y0hUVFBTQ2VydGlmaWNhdGVGb3JIb3N0Omhvc3RdOwotICAgIEJPT0wgYWxsb3dzQW55Q2VydGlm
aWNhdGUgPSBbTlNVUkxSZXF1ZXN0IGFsbG93c0FueUhUVFBTQ2VydGlmaWNhdGVGb3JIb3N0Omhv
c3RdOwotICAgIGlmICghY2VydEFycmF5ICYmICFhbGxvd3NBbnlDZXJ0aWZpY2F0ZSkKLSAgICAg
ICAgcmV0dXJuIDA7Ci0KLSAgICBDRk11dGFibGVEaWN0aW9uYXJ5UmVmIHNzbFByb3BzID0gQ0ZE
aWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwLCAma0NGVHlwZURp
Y3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKTsK
LSAgICBpZiAoY2VydEFycmF5KQotICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShzc2xQcm9w
cywgX2tDRlN0cmVhbVNTTFRydXN0ZWRMZWFmQ2VydGlmaWNhdGVzLCAoQ0ZUeXBlUmVmKSBjZXJ0
QXJyYXkpOwotCi0gICAgaWYgKGFsbG93c0FueUNlcnRpZmljYXRlKQotICAgICAgICBDRkRpY3Rp
b25hcnlTZXRWYWx1ZShzc2xQcm9wcywga0NGU3RyZWFtU1NMVmFsaWRhdGVzQ2VydGlmaWNhdGVD
aGFpbiwga0NGQm9vbGVhbkZhbHNlKTsKLSAgICByZXR1cm4gc3NsUHJvcHM7Ci19Ci0KLX0KLQot
I2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9SZXNvdXJj
ZVJlcXVlc3RJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9pb3MvUmVzb3VyY2VSZXF1ZXN0SU9TLm1tCShyZXZpc2lvbiAyMDcwMzUpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9SZXNvdXJjZVJlcXVlc3RJT1MubW0JKHdv
cmtpbmcgY29weSkKQEAgLTEsNzcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBB
cHBsZSwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJSZXNvdXJj
ZVJlcXVlc3QuaCIKLQotI2lmIFBMQVRGT1JNKElPUykKLQotQGludGVyZmFjZSBOU1VSTFJlcXVl
c3QgKFdlYk5TVVJMUmVxdWVzdERldGFpbHMpCi0tIChDRlVSTFJlcXVlc3RSZWYpX0NGVVJMUmVx
dWVzdDsKLS0gKGlkKV9pbml0V2l0aENGVVJMUmVxdWVzdDooQ0ZVUkxSZXF1ZXN0UmVmKXJlcXVl
c3Q7Ci1AZW5kCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotI2lmIFVTRShDRk5FVFdPUkspCi0K
LVJlc291cmNlUmVxdWVzdDo6UmVzb3VyY2VSZXF1ZXN0KE5TVVJMUmVxdWVzdCAqbnNSZXF1ZXN0
KQotICAgIDogUmVzb3VyY2VSZXF1ZXN0QmFzZSgpCi0gICAgLCBtX2NmUmVxdWVzdChbbnNSZXF1
ZXN0IF9DRlVSTFJlcXVlc3RdKQotICAgICwgbV9uc1JlcXVlc3QobnNSZXF1ZXN0KQotewotfQot
Ci12b2lkIFJlc291cmNlUmVxdWVzdDo6dXBkYXRlTlNVUkxSZXF1ZXN0KCkKLXsKLSAgICBpZiAo
bV9jZlJlcXVlc3QpCi0gICAgICAgIG1fbnNSZXF1ZXN0ID0gYWRvcHROUyhbW05TTXV0YWJsZVVS
TFJlcXVlc3QgYWxsb2NdIF9pbml0V2l0aENGVVJMUmVxdWVzdDptX2NmUmVxdWVzdC5nZXQoKV0p
OwotfQotCi12b2lkIFJlc291cmNlUmVxdWVzdDo6Y2xlYXJPclVwZGF0ZU5TVVJMUmVxdWVzdCgp
Ci17Ci0gICAgLy8gVGhlcmUgaXMgY2xpZW50IGNvZGUgdGhhdCBleHRlbmRzIE5TVVJMUmVxdWVz
dCBhbmQgZXhwZWN0cyB0byBnZXQgYmFjaywgaW4gdGhlIGRlbGVnYXRlCi0gICAgLy8gY2FsbGJh
Y2tzLCBhbiBvYmplY3Qgb2YgdGhlIHNhbWUgdHlwZSB0aGF0IHRoZXkgcGFzc2VkIGludG8gV2Vi
S2l0LiBUbyBrZWVwIHRoZW4gcnVubmluZywgd2UKLSAgICAvLyBjcmVhdGUgYW4gb2JqZWN0IG9m
IHRoZSBzYW1lIHR5cGUgYW5kIHJldHVybiB0aGF0LiBTZWUgPHJkYXI6Ly85ODQzNTgyPi4KLSAg
ICAvLyBBbHNvLCBkZXZlbG9wZXJzIHJlYWxseSByZWFsbHkgd2FudCBhbiBOU011dGFibGVVUkxS
ZXF1ZXN0IHNvIHRyeSB0byBjcmVhdGUgYW4KLSAgICAvLyBOU011dGFibGVVUkxSZXF1ZXN0IGlu
c3RlYWQgb2YgTlNVUkxSZXF1ZXN0LgotICAgIHN0YXRpYyBDbGFzcyBuc1VSTFJlcXVlc3RDbGFz
cyA9IFtOU1VSTFJlcXVlc3QgY2xhc3NdOwotICAgIHN0YXRpYyBDbGFzcyBuc011dGFibGVVUkxS
ZXF1ZXN0Q2xhc3MgPSBbTlNNdXRhYmxlVVJMUmVxdWVzdCBjbGFzc107Ci0gICAgQ2xhc3MgcmVx
dWVzdENsYXNzID0gW21fbnNSZXF1ZXN0LmdldCgpIGNsYXNzXTsKLQotICAgIGlmICghbV9jZlJl
cXVlc3QpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChyZXF1ZXN0Q2xhc3MgJiYgcmVxdWVz
dENsYXNzICE9IG5zVVJMUmVxdWVzdENsYXNzICYmIHJlcXVlc3RDbGFzcyAhPSBuc011dGFibGVV
UkxSZXF1ZXN0Q2xhc3MpCi0gICAgICAgIG1fbnNSZXF1ZXN0ID0gYWRvcHROUyhbW3JlcXVlc3RD
bGFzcyBhbGxvY10gX2luaXRXaXRoQ0ZVUkxSZXF1ZXN0Om1fY2ZSZXF1ZXN0LmdldCgpXSk7Ci0g
ICAgZWxzZQotICAgICAgICBtX25zUmVxdWVzdCA9IG51bGxwdHI7Ci19Ci0KLSNlbmRpZiAvLyBV
U0UoQ0ZORVRXT1JLKQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBQTEFU
Rk9STShJT1MpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9BdXRo
ZW50aWNhdGlvbk1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL21hYy9BdXRoZW50aWNhdGlvbk1hYy5tbQkocmV2aXNpb24gMjA3MDM1KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQXV0aGVudGljYXRpb25NYWMubW0JKHdv
cmtpbmcgY29weSkKQEAgLTMyLDE4ICszMiwxMSBAQAogI2ltcG9ydCA8Rm91bmRhdGlvbi9OU1VS
TEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmg+CiAjaW1wb3J0IDxGb3VuZGF0aW9uL05TVVJMUHJv
dGVjdGlvblNwYWNlLmg+CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotI2ltcG9ydCAiQ0ZOU1VSTENv
bm5lY3Rpb25TUEkuaCIKLSNlbmRpZgotCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogQGlu
dGVyZmFjZSBXZWJDb3JlQXV0aGVudGljYXRpb25DbGllbnRBc0NoYWxsZW5nZVNlbmRlciA6IE5T
T2JqZWN0IDxOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyPgogewogICAgIEF1dGhl
bnRpY2F0aW9uQ2xpZW50KiBtX2NsaWVudDsKLSNpZiBVU0UoQ0ZORVRXT1JLKQotICAgIENGVVJM
QXV0aENoYWxsZW5nZVJlZiBtX2NmQ2hhbGxlbmdlOwotI2VuZGlmCiB9CiAtIChpZClpbml0V2l0
aEF1dGhlbnRpY2F0aW9uQ2xpZW50OihBdXRoZW50aWNhdGlvbkNsaWVudCopY2xpZW50OwogLSAo
QXV0aGVudGljYXRpb25DbGllbnQqKWNsaWVudDsKQEAgLTEwMSw0NyArOTQsMTAgQEAgLSAodm9p
ZCljYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTooTgogICAgICAgICBtX2NsaWVudC0+cmVj
ZWl2ZWRDYW5jZWxsYXRpb24oY29yZShjaGFsbGVuZ2UpKTsKIH0KIAotI2lmIFVTRShDRk5FVFdP
UkspCi0tICh2b2lkKXNldENGQ2hhbGxlbmdlOihDRlVSTEF1dGhDaGFsbGVuZ2VSZWYpY2hhbGxl
bmdlCi17Ci0gICAgbV9jZkNoYWxsZW5nZSA9IGNoYWxsZW5nZTsKLX0KLQotLSAoQ0ZVUkxBdXRo
Q2hhbGxlbmdlUmVmKWNmQ2hhbGxlbmdlCi17Ci0gICAgcmV0dXJuIG1fY2ZDaGFsbGVuZ2U7Ci19
Ci0jZW5kaWYKLQogQGVuZAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSNpZiBVU0UoQ0ZORVRX
T1JLKQotCi1BdXRoZW50aWNhdGlvbkNoYWxsZW5nZSBjb3JlKE5TVVJMQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UgKm1hY0NoYWxsZW5nZSkKLXsKLSAgICBXZWJDb3JlQXV0aGVudGljYXRpb25DbGll
bnRBc0NoYWxsZW5nZVNlbmRlciAqY2hhbGxlbmdlU2VuZGVyID0gKFdlYkNvcmVBdXRoZW50aWNh
dGlvbkNsaWVudEFzQ2hhbGxlbmdlU2VuZGVyKikgW21hY0NoYWxsZW5nZSBzZW5kZXJdOwotICAg
IHJldHVybiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShbY2hhbGxlbmdlU2VuZGVyIGNmQ2hhbGxl
bmdlXSwgW2NoYWxsZW5nZVNlbmRlciBjbGllbnRdKTsKLX0KLQotTlNVUkxBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSAqbWFjKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjb3JlQ2hhbGxl
bmdlKQotewotICAgIEF1dGhlbnRpY2F0aW9uQ2xpZW50KiBhdXRoQ2xpZW50ID0gY29yZUNoYWxs
ZW5nZS5hdXRoZW50aWNhdGlvbkNsaWVudCgpOwotICAgIFJldGFpblB0cjxXZWJDb3JlQXV0aGVu
dGljYXRpb25DbGllbnRBc0NoYWxsZW5nZVNlbmRlcj4gY2hhbGxlbmdlU2VuZGVyID0gYWRvcHRO
UyhbW1dlYkNvcmVBdXRoZW50aWNhdGlvbkNsaWVudEFzQ2hhbGxlbmdlU2VuZGVyIGFsbG9jXSBp
bml0V2l0aEF1dGhlbnRpY2F0aW9uQ2xpZW50OmF1dGhDbGllbnRdKTsKLSAgICBSZXRhaW5QdHI8
Q0ZVUkxBdXRoQ2hhbGxlbmdlUmVmPiBhdXRoQ2hhbGxlbmdlID0gY29yZUNoYWxsZW5nZS5jZlVS
TEF1dGhDaGFsbGVuZ2VSZWYoKTsKLSAgICBpZiAoIWF1dGhDaGFsbGVuZ2UpCi0gICAgICAgIGF1
dGhDaGFsbGVuZ2UgPSBhZG9wdENGKGNyZWF0ZUNGKGNvcmVDaGFsbGVuZ2UpKTsKLSAgICBbY2hh
bGxlbmdlU2VuZGVyLmdldCgpIHNldENGQ2hhbGxlbmdlOmF1dGhDaGFsbGVuZ2UuZ2V0KCldOwot
I2lmIFBMQVRGT1JNKElPUykKLSAgICByZXR1cm4gW1tOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlIF9jcmVhdGVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUZvckNGQXV0aENoYWxsZW5nZTphdXRo
Q2hhbGxlbmdlLmdldCgpIHNlbmRlcjpjaGFsbGVuZ2VTZW5kZXIuZ2V0KCldIGF1dG9yZWxlYXNl
XTsKLSNlbHNlCi0gICAgcmV0dXJuIFtbTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSBfYXV0
aGVudGljYXRpb25DaGFsbGVuZ2VGb3JDRkF1dGhDaGFsbGVuZ2U6YXV0aENoYWxsZW5nZS5nZXQo
KSBzZW5kZXI6Y2hhbGxlbmdlU2VuZGVyLmdldCgpXSBhdXRvcmVsZWFzZV07Ci0jZW5kaWYKLX0K
LQotI2Vsc2UKLQogQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6OkF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlKGNvbnN0IFByb3RlY3Rpb25TcGFjZSYgcHJvdGVjdGlvblNwYWNlLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENyZWRlbnRpYWwmIHBy
b3Bvc2VkQ3JlZGVudGlhbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB1bnNpZ25lZCBwcmV2aW91c0ZhaWx1cmVDb3VudCwKQEAgLTIxNSw2ICsxNzEs
NCBAQCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSBjb3JlKE5TVVJMQXV0aGVuCiAgICAgcmV0dXJu
IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKG1hY0NoYWxsZW5nZSk7CiB9CiAKLSNlbmRpZiAvLyBV
U0UoQ0ZORVRXT1JLKQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9Db29raWVKYXJNYWMubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQ29va2llSmFyTWFjLm1tCShyZXZp
c2lvbiAyMDcwMzUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9Db29r
aWVKYXJNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTI3LDE5ICsyNywxMiBAQAogI2ltcG9ydCAi
UGxhdGZvcm1Db29raWVKYXIuaCIKIAogI2ltcG9ydCAiQ0ZOZXR3b3JrU1BJLmgiCi0jaW1wb3J0
ICJOZXR3b3JrU3RvcmFnZVNlc3Npb24uaCIKLSNpbXBvcnQgIldlYkNvcmVTeXN0ZW1JbnRlcmZh
Y2UuaCIKLSNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+Ci0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLXN0YXRpYyBOU0hUVFBDb29raWVTdG9yYWdlICpjb29raWVTdG9yYWdlKGNvbnN0
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYpOwotfQotCi0jaWYgIVVTRShDRk5FVFdPUkspCi0KICNp
bXBvcnQgIkNvb2tpZS5oIgogI2ltcG9ydCAiQ29va2llU3RvcmFnZS5oIgorI2ltcG9ydCAiTmV0
d29ya1N0b3JhZ2VTZXNzaW9uLmgiCiAjaW1wb3J0ICJVUkwuaCIKKyNpbXBvcnQgIldlYkNvcmVT
eXN0ZW1JbnRlcmZhY2UuaCIKKyNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+CiAj
aW1wb3J0IDx3dGYvT3B0aW9uYWwuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIu
aD4KIApAQCAtMTkxLDYgKzE4NCw3IEBAIHZvaWQgc2V0Q29va2llc0Zyb21ET00oY29uc3QgTmV0
d29ya1N0b3IKICAgICBOU1VSTCAqY29va2llVVJMID0gdXJsOwogICAgIE5TRGljdGlvbmFyeSAq
aGVhZGVyRmllbGRzID0gW05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdDpjb29raWVT
dHJpbmcgZm9yS2V5OkAiU2V0LUNvb2tpZSJdOwogCisgICAgLy8gRklYTUU6IElzIHRoaXMgbmVl
ZGVkIG9uIGlPUywgdG9vPwogI2lmIFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9O
X01JTl9SRVFVSVJFRCA+PSAxMDExMDAKICAgICBOU0FycmF5ICp1bmZpbHRlcmVkQ29va2llcyA9
IFtOU0hUVFBDb29raWUgX3BhcnNlZENvb2tpZXNXaXRoUmVzcG9uc2VIZWFkZXJGaWVsZHM6aGVh
ZGVyRmllbGRzIGZvclVSTDpjb29raWVVUkxdOwogI2Vsc2UKQEAgLTI2MCw2ICsyNTQsMTUgQEAg
dm9pZCBkZWxldGVDb29raWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZQogICAgIEVORF9CTE9DS19P
QkpDX0VYQ0VQVElPTlM7CiB9CiAKK3N0YXRpYyBOU0hUVFBDb29raWVTdG9yYWdlICpjb29raWVT
dG9yYWdlKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbikKK3sKKyAgICBhdXRv
IGNvb2tpZVN0b3JhZ2UgPSBzZXNzaW9uLmNvb2tpZVN0b3JhZ2UoKTsKKyAgICBpZiAoIWNvb2tp
ZVN0b3JhZ2UgfHwgW05TSFRUUENvb2tpZVN0b3JhZ2Ugc2hhcmVkSFRUUENvb2tpZVN0b3JhZ2Vd
Ll9jb29raWVTdG9yYWdlID09IGNvb2tpZVN0b3JhZ2UpCisgICAgICAgIHJldHVybiBbTlNIVFRQ
Q29va2llU3RvcmFnZSBzaGFyZWRIVFRQQ29va2llU3RvcmFnZV07CisgICAgCisgICAgcmV0dXJu
IFtbW05TSFRUUENvb2tpZVN0b3JhZ2UgYWxsb2NdIF9pbml0V2l0aENGSFRUUENvb2tpZVN0b3Jh
Z2U6Y29va2llU3RvcmFnZS5nZXQoKV0gYXV0b3JlbGVhc2VdOworfQorCiB2b2lkIGFkZENvb2tp
ZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgdXJsLCBj
b25zdCBDb29raWUmIGNvb2tpZSkKIHsKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7
CkBAIC0yODAsMTIgKzI4MywxMCBAQCB2b2lkIGFkZENvb2tpZShjb25zdCBOZXR3b3JrU3RvcmFn
ZVNlc3NpCiAgICAgICAgIE5TSFRUUENvb2tpZUV4cGlyZXM6IFtOU0RhdGUgZGF0ZVdpdGhUaW1l
SW50ZXJ2YWxTaW5jZTE5NzA6Y29va2llLmV4cGlyZXMgLyAxMDAwLjBdLAogICAgIH1dOwogCi0j
aWYgIVVTRShDRk5FVFdPUkspCiAgICAgaWYgKCFjb29raWVTdG9yYWdlKSB7CiAgICAgICAgIFtX
ZWJDb3JlOjpjb29raWVTdG9yYWdlKHNlc3Npb24pIHNldENvb2tpZTpodHRwQ29va2llXTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KLSNlbmRpZiAvLyAhVVNFKENGTkVUV09SSykKIAogICAgIENG
SFRUUENvb2tpZVN0b3JhZ2VTZXRDb29raWUoY29va2llU3RvcmFnZS5nZXQoKSwgW2h0dHBDb29r
aWUgX0NGSFRUUENvb2tpZV0pOwogCkBAIC0zMDksMjEgKzMxMCw2IEBAIHZvaWQgZGVsZXRlQWxs
Q29va2llcyhjb25zdCBOZXR3b3JrU3RvcmEKICAgICB3a0RlbGV0ZUFsbEhUVFBDb29raWVzKHNl
c3Npb24uY29va2llU3RvcmFnZSgpLmdldCgpKTsKIH0KIAotfQotCi0jZW5kaWYgLy8gIVVTRShD
Rk5FVFdPUkspCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RhdGljIE5TSFRUUENvb2tpZVN0
b3JhZ2UgKmNvb2tpZVN0b3JhZ2UoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9u
KQotewotICAgIGF1dG8gY29va2llU3RvcmFnZSA9IHNlc3Npb24uY29va2llU3RvcmFnZSgpOwot
ICAgIGlmICghY29va2llU3RvcmFnZSB8fCBbTlNIVFRQQ29va2llU3RvcmFnZSBzaGFyZWRIVFRQ
Q29va2llU3RvcmFnZV0uX2Nvb2tpZVN0b3JhZ2UgPT0gY29va2llU3RvcmFnZSkKLSAgICAgICAg
cmV0dXJuIFtOU0hUVFBDb29raWVTdG9yYWdlIHNoYXJlZEhUVFBDb29raWVTdG9yYWdlXTsKLQot
ICAgIHJldHVybiBbW1tOU0hUVFBDb29raWVTdG9yYWdlIGFsbG9jXSBfaW5pdFdpdGhDRkhUVFBD
b29raWVTdG9yYWdlOmNvb2tpZVN0b3JhZ2UuZ2V0KCldIGF1dG9yZWxlYXNlXTsKLX0KLQogdm9p
ZCBkZWxldGVDb29raWVzRm9ySG9zdG5hbWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYg
c2Vzc2lvbiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGhvc3RuYW1lcykKIHsKICAgICBCRUdJTl9C
TE9DS19PQkpDX0VYQ0VQVElPTlM7CkBAIC0zNTMsNyArMzM5LDYgQEAgdm9pZCBkZWxldGVDb29r
aWVzRm9ySG9zdG5hbWVzKGNvbnN0IE5ldAogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7
CiB9CiAKLQogdm9pZCBkZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZShjb25zdCBOZXR3b3Jr
U3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVf
cG9pbnQgdGltZVBvaW50KQogewogICAgIGlmICghW05TSFRUUENvb2tpZVN0b3JhZ2UgaW5zdGFu
Y2VzUmVzcG9uZFRvU2VsZWN0b3I6QHNlbGVjdG9yKHJlbW92ZUNvb2tpZXNTaW5jZURhdGU6KV0p
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9DcmVkZW50aWFsU3Rv
cmFnZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L21hYy9DcmVkZW50aWFsU3RvcmFnZU1hYy5tbQkocmV2aXNpb24gMjA3MDM1KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQ3JlZGVudGlhbFN0b3JhZ2VNYWMubW0JKHdv
cmtpbmcgY29weSkKQEAgLTI2LDggKzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJDcmVkZW50aWFsU3RvcmFnZS5oIgogCi0jaWYgIVVTRShDRk5FVFdPUkspCi0KICNpbmNs
dWRlICJBdXRoZW50aWNhdGlvbk1hYy5oIgogI2luY2x1ZGUgIkNyZWRlbnRpYWwuaCIKICNpbmNs
dWRlICJQcm90ZWN0aW9uU3BhY2UuaCIKQEAgLTUyLDUgKzUwLDMgQEAgdm9pZCBDcmVkZW50aWFs
U3RvcmFnZTo6c2F2ZVRvUGVyc2lzdGVudAogI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKLQotI2VuZGlmIC8vICFVU0UoQ0ZORVRXT1JLKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9tYWMvRm9ybURhdGFTdHJlYW1NYWMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9Gb3JtRGF0YVN0cmVhbU1hYy5oCShyZXZp
c2lvbiAyMDcwMzUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9Gb3Jt
RGF0YVN0cmVhbU1hYy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxMCArMjYsNyBAQAogICogVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KICAqLwogCi0jaWZuZGVmIEZvcm1EYXRhU3RyZWFtTWFjX2gKLSNkZWZpbmUgRm9ybURh
dGFTdHJlYW1NYWNfaAotCi0jaWYgIVVTRShDRk5FVFdPUkspCisjcHJhZ21hIG9uY2UKIAogI2lu
Y2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKQEAgLTQwLDE1ICszNywxMSBAQCB0eXBlZGVmIGNvbnN0
IHN0cnVjdCBfQ0ZVUkxSZXF1ZXN0KiBDRlVSCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotICAg
IGNsYXNzIEZvcm1EYXRhOworY2xhc3MgRm9ybURhdGE7CiAKLSAgICB2b2lkIHNldEhUVFBCb2R5
KE5TTXV0YWJsZVVSTFJlcXVlc3QgKiwgRm9ybURhdGEqKTsKLSAgICBGb3JtRGF0YSogaHR0cEJv
ZHlGcm9tU3RyZWFtKE5TSW5wdXRTdHJlYW0gKik7Cit2b2lkIHNldEhUVFBCb2R5KE5TTXV0YWJs
ZVVSTFJlcXVlc3QgKiwgRm9ybURhdGEqKTsKK0Zvcm1EYXRhKiBodHRwQm9keUZyb21TdHJlYW0o
TlNJbnB1dFN0cmVhbSAqKTsKIAotICAgIENGU3RyaW5nUmVmIGZvcm1EYXRhU3RyZWFtTGVuZ3Ro
UHJvcGVydHlOYW1lKCk7CitDRlN0cmluZ1JlZiBmb3JtRGF0YVN0cmVhbUxlbmd0aFByb3BlcnR5
TmFtZSgpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyAhVVNFKENGTkVU
V09SSykKLQotI2VuZGlmIC8vIEZvcm1EYXRhU3RyZWFtTWFjX2gKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Zvcm1EYXRhU3RyZWFtTWFjLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Zvcm1EYXRhU3RyZWFtTWFj
Lm1tCShyZXZpc2lvbiAyMDcwMzUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L21hYy9Gb3JtRGF0YVN0cmVhbU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjksOCArMjksNiBA
QAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJGb3JtRGF0YVN0cmVhbU1hYy5oIgogCi0j
aWYgIVVTRShDRk5FVFdPUkspCi0KICNpbXBvcnQgIkZvcm1EYXRhLmgiCiAjaW1wb3J0ICJGb3Jt
RGF0YVN0cmVhbUNGTmV0LmgiCiAKQEAgLTUxLDUgKzQ5LDMgQEAgRm9ybURhdGEqIGh0dHBCb2R5
RnJvbVN0cmVhbShOU0lucHV0U3RyZQogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNl
bmRpZiAvLyAhVVNFKENGTkVUV09SSykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvbWFjL1Jlc291cmNlRXJyb3JNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VFcnJvck1hYy5tbQkocmV2aXNpb24gMjA3
MDM1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VFcnJv
ck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzEsMTAgKzMxLDYgQEAKICNpbXBvcnQgPEZvdW5k
YXRpb24vRm91bmRhdGlvbi5oPgogI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4K
IAotI2lmIFBMQVRGT1JNKElPUykgJiYgVVNFKENGTkVUV09SSykKLSNpbXBvcnQgPENGTmV0d29y
ay9DRlNvY2tldFN0cmVhbVByaXYuaD4KLSNlbmRpZgotCiBAaW50ZXJmYWNlIE5TRXJyb3IgKFdl
YkV4dHJhcykKIC0gKE5TU3RyaW5nICopX3dlYl9sb2NhbGl6ZWREZXNjcmlwdGlvbjsKIEBlbmQK
QEAgLTkxLDg1ICs4Nyw2IEBAIC0gKHZvaWQpZW5jb2RlV2l0aENvZGVyOihOU0NvZGVyICopY29k
ZXIKIAogQGVuZAogCi0KLSNpZiBVU0UoQ0ZORVRXT1JLKQotc3RhdGljIE5TRXJyb3IgKk5TRXJy
b3JGcm9tQ0ZFcnJvcihDRkVycm9yUmVmIGNmRXJyb3IsIE5TVVJMICp1cmwpCi17Ci0gICAgQ0ZJ
bmRleCBlcnJDb2RlID0gQ0ZFcnJvckdldENvZGUoY2ZFcnJvcik7Ci0gICAgaWYgKENGRXF1YWwo
Q0ZFcnJvckdldERvbWFpbihjZkVycm9yKSwga0NGRXJyb3JEb21haW5DRk5ldHdvcmspICYmIGVy
ckNvZGUgPD0ga0NGVVJMRXJyb3JVbmtub3duICYmIGVyckNvZGUgPiAtNDAwMCkgewotICAgICAg
ICAvLyBUaGlzIGlzIGFuIFVSTCBlcnJvciBhbmQgbmVlZHMgdG8gYmUgdHJhbnNsYXRlZCB0byB0
aGUgTlNVUkxFcnJvckRvbWFpbgotICAgICAgICBpZCBrZXlzWzEwXSwgdmFsdWVzWzEwXTsKLSAg
ICAgICAgQ0ZEaWN0aW9uYXJ5UmVmIHVzZXJJbmZvID0gQ0ZFcnJvckNvcHlVc2VySW5mbyhjZkVy
cm9yKTsKLSAgICAgICAgTlNFcnJvciAqcmVzdWx0OwotICAgICAgICBOU0ludGVnZXIgY291bnQg
PSAwOwotCi0gICAgICAgIGlmICh1cmwpIHsKLSAgICAgICAgICAgIGtleXNbY291bnRdID0gTlNV
UkxFcnJvckZhaWxpbmdVUkxFcnJvcktleTsKLSAgICAgICAgICAgIHZhbHVlc1tjb3VudF0gPSB1
cmw7Ci0gICAgICAgICAgICBjb3VudCArKzsKLQotICAgICAgICAgICAga2V5c1tjb3VudF0gPSBO
U1VSTEVycm9yRmFpbGluZ1VSTFN0cmluZ0Vycm9yS2V5OwotICAgICAgICAgICAgdmFsdWVzW2Nv
dW50XSA9IFt1cmwgYWJzb2x1dGVTdHJpbmddOwotICAgICAgICAgICAgY291bnQgKys7Ci0gICAg
ICAgIH0KLQotICAgICAgICB2YWx1ZXNbY291bnRdID0gKGlkKUNGRGljdGlvbmFyeUdldFZhbHVl
KHVzZXJJbmZvLCBrQ0ZFcnJvckxvY2FsaXplZERlc2NyaXB0aW9uS2V5KTsKLSAgICAgICAgaWYg
KHZhbHVlc1tjb3VudF0pIHsKLSAgICAgICAgICAgIGtleXNbY291bnRdID0gTlNMb2NhbGl6ZWRE
ZXNjcmlwdGlvbktleTsKLSAgICAgICAgICAgIGNvdW50ICsrOwotICAgICAgICB9Ci0KLSAgICAg
ICAgdmFsdWVzW2NvdW50XSA9IChpZClDRkRpY3Rpb25hcnlHZXRWYWx1ZSh1c2VySW5mbywga0NG
RXJyb3JMb2NhbGl6ZWRGYWlsdXJlUmVhc29uS2V5KTsKLSAgICAgICAgaWYgKHZhbHVlc1tjb3Vu
dF0pIHsKLSAgICAgICAgICAgIGtleXNbY291bnRdID0gTlNMb2NhbGl6ZWRGYWlsdXJlUmVhc29u
RXJyb3JLZXk7Ci0gICAgICAgICAgICBjb3VudCArKzsKLSAgICAgICAgfQotCi0gICAgICAgIHZh
bHVlc1tjb3VudF0gPSAoaWQpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUodXNlckluZm8sIGtDRkVycm9y
TG9jYWxpemVkUmVjb3ZlcnlTdWdnZXN0aW9uS2V5KTsKLSAgICAgICAgaWYgKHZhbHVlc1tjb3Vu
dF0pIHsKLSAgICAgICAgICAgIGtleXNbY291bnRdID0gTlNMb2NhbGl6ZWRSZWNvdmVyeVN1Z2dl
c3Rpb25FcnJvcktleTsKLSAgICAgICAgICAgIGNvdW50ICsrOwotICAgICAgICB9Ci0KLSNwcmFn
bWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCi0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3Jl
ZCAiLVdkZXByZWNhdGVkLWRlY2xhcmF0aW9ucyIKLSAgICAgICAgaWYgKHVzZXJJbmZvICYmICh2
YWx1ZXNbY291bnRdID0gKGlkKUNGRGljdGlvbmFyeUdldFZhbHVlKHVzZXJJbmZvLCBrQ0ZTdHJl
YW1Qcm9wZXJ0eVNTTFBlZXJDZXJ0aWZpY2F0ZXMpKSAhPSBuaWwpIHsKLSAgICAgICAgICAgIC8v
IE5lZWQgdG8gdHJhbnNsYXRlIHRoZSBjZXJ0Ci0gICAgICAgICAgICBrZXlzW2NvdW50XSA9IEAi
TlNFcnJvclBlZXJDZXJ0aWZpY2F0ZUNoYWluS2V5IjsKLSAgICAgICAgICAgIGNvdW50ICsrOwot
Ci0gICAgICAgICAgICB2YWx1ZXNbY291bnRdID0gKGlkKUNGRGljdGlvbmFyeUdldFZhbHVlKHVz
ZXJJbmZvLCBfa0NGU3RyZWFtUHJvcGVydHlTU0xDbGllbnRDZXJ0aWZpY2F0ZXMpOwotICAgICAg
ICAgICAgaWYgKHZhbHVlc1tjb3VudF0pIHsKLSAgICAgICAgICAgICAgICBrZXlzW2NvdW50XSA9
IEAiTlNFcnJvckNsaWVudENlcnRpZmljYXRlQ2hhaW5LZXkiOwotICAgICAgICAgICAgICAgIGNv
dW50ICsrOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB2YWx1ZXNbY291bnRdID0gKGlk
KUNGRGljdGlvbmFyeUdldFZhbHVlKHVzZXJJbmZvLCBfa0NGU3RyZWFtUHJvcGVydHlTU0xDbGll
bnRDZXJ0aWZpY2F0ZVN0YXRlKTsKLSAgICAgICAgICAgIGlmICh2YWx1ZXNbY291bnRdKSB7Ci0g
ICAgICAgICAgICAgICAga2V5c1tjb3VudF0gPSBAIk5TRXJyb3JDbGllbnRDZXJ0aWZpY2F0ZVN0
YXRlS2V5IjsKLSAgICAgICAgICAgICAgICBjb3VudCArKzsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgfQotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAotCi0gICAgICAgIGlmICh1c2VySW5m
byAmJiAodmFsdWVzW2NvdW50XSA9IChpZClDRkRpY3Rpb25hcnlHZXRWYWx1ZSh1c2VySW5mbywg
a0NGU3RyZWFtUHJvcGVydHlTU0xQZWVyVHJ1c3QpKSAhPSBuaWwpIHsKLSAgICAgICAgICAgIGtl
eXNbY291bnRdID0gTlNVUkxFcnJvckZhaWxpbmdVUkxQZWVyVHJ1c3RFcnJvcktleTsKLSAgICAg
ICAgICAgIGNvdW50Kys7Ci0gICAgICAgIH0KLQotICAgICAgICBrZXlzW2NvdW50XSA9IE5TVW5k
ZXJseWluZ0Vycm9yS2V5OwotICAgICAgICB2YWx1ZXNbY291bnRdID0gKGlkKWNmRXJyb3I7Ci0g
ICAgICAgIGNvdW50ICsrOwotCi0gICAgICAgIHJlc3VsdCA9IFtXZWJDdXN0b21OU1VSTEVycm9y
IGVycm9yV2l0aERvbWFpbjpOU1VSTEVycm9yRG9tYWluIGNvZGU6KGVyckNvZGUgPT0ga0NGVVJM
RXJyb3JVbmtub3duID8gKENGSW5kZXgpTlNVUkxFcnJvclVua25vd24gOiBlcnJDb2RlKSB1c2Vy
SW5mbzpbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0czp2YWx1ZXMgZm9yS2V5czpr
ZXlzIGNvdW50OmNvdW50XV07Ci0gICAgICAgIGlmICh1c2VySW5mbykKLSAgICAgICAgICAgIENG
UmVsZWFzZSh1c2VySW5mbyk7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQotICAgIHJl
dHVybiAoTlNFcnJvciAqKWNmRXJyb3I7Ci19Ci0jZW5kaWYgLy8gVVNFKENGTkVUV09SSykKLQog
I2VuZGlmIC8vIFBMQVRGT1JNKElPUykKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTkwLDUz
ICsxMDcsNiBAQCBzdGF0aWMgUmV0YWluUHRyPE5TRXJyb3I+IGNyZWF0ZU5TRXJyb3JGCiAgICAg
cmV0dXJuIGFkb3B0TlMoW1tOU0Vycm9yIGFsbG9jXSBpbml0V2l0aERvbWFpbjpyZXNvdXJjZUVy
cm9yLmRvbWFpbigpIGNvZGU6cmVzb3VyY2VFcnJvci5lcnJvckNvZGUoKSB1c2VySW5mbzp1c2Vy
SW5mby5nZXQoKV0pOwogfQogCi0jaWYgVVNFKENGTkVUV09SSykKLQotUmVzb3VyY2VFcnJvcjo6
UmVzb3VyY2VFcnJvcihOU0Vycm9yICplcnJvcikKLSAgICA6IFJlc291cmNlRXJyb3JCYXNlKFR5
cGU6Ok51bGwpCi0gICAgLCBtX2RhdGFJc1VwVG9EYXRlKGZhbHNlKQotICAgICwgbV9wbGF0Zm9y
bUVycm9yKHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZFcnJvclJlZj4oZXJyb3IpKQotewotICAgIGlmIChl
cnJvcikKLSAgICAgICAgc2V0VHlwZSgoW2Vycm9yIGNvZGVdID09IE5TVVJMRXJyb3JUaW1lZE91
dCkgPyBUeXBlOjpUaW1lb3V0IDogVHlwZTo6R2VuZXJhbCk7Ci19Ci0KLU5TRXJyb3IgKlJlc291
cmNlRXJyb3I6Om5zRXJyb3IoKSBjb25zdAotewotICAgIGlmIChpc051bGwoKSkgewotICAgICAg
ICBBU1NFUlQoIW1fcGxhdGZvcm1FcnJvcik7Ci0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgfQot
Ci0gICAgaWYgKG1fcGxhdGZvcm1OU0Vycm9yKQotICAgICAgICByZXR1cm4gbV9wbGF0Zm9ybU5T
RXJyb3IuZ2V0KCk7Ci0KLSAgICBpZiAobV9wbGF0Zm9ybUVycm9yKSB7Ci0gICAgICAgIENGRXJy
b3JSZWYgZXJyb3IgPSBtX3BsYXRmb3JtRXJyb3IuZ2V0KCk7Ci0gICAgICAgIFJldGFpblB0cjxD
RkRpY3Rpb25hcnlSZWY+IHVzZXJJbmZvID0gYWRvcHRDRihDRkVycm9yQ29weVVzZXJJbmZvKGVy
cm9yKSk7Ci0jaWYgUExBVEZPUk0oSU9TKQotICAgICAgICBtX3BsYXRmb3JtTlNFcnJvciA9IE5T
RXJyb3JGcm9tQ0ZFcnJvcihlcnJvciwgKE5TVVJMICopWyhOU0RpY3Rpb25hcnkgKil1c2VySW5m
by5nZXQoKSBvYmplY3RGb3JLZXk6KGlkKSBrQ0ZVUkxFcnJvckZhaWxpbmdVUkxFcnJvcktleV0p
OwotICAgICAgICAvLyBJZiBOU0Vycm9yRnJvbUNGRXJyb3IgY3JlYXRlZCBhIG5ldyBOU0Vycm9y
IGZvciB1cywgcmV0dXJuIHRoYXQuCi0gICAgICAgIGlmIChtX3BsYXRmb3JtTlNFcnJvci5nZXQo
KSAhPSAoTlNFcnJvciAqKWVycm9yKQotICAgICAgICAgICAgcmV0dXJuIG1fcGxhdGZvcm1OU0Vy
cm9yLmdldCgpOwotCi0gICAgICAgIC8vIE90aGVyd2lzZSBmYWxsIHRocm91Z2ggdG8gY3JlYXRl
IGEgbmV3IE5TRXJyb3IgZnJvbSB0aGUgQ0ZFcnJvci4KLSNlbmRpZgotICAgICAgICBtX3BsYXRm
b3JtTlNFcnJvciA9IGFkb3B0TlMoW1tOU0Vycm9yIGFsbG9jXSBpbml0V2l0aERvbWFpbjooTlNT
dHJpbmcgKilDRkVycm9yR2V0RG9tYWluKGVycm9yKSBjb2RlOkNGRXJyb3JHZXRDb2RlKGVycm9y
KSB1c2VySW5mbzooTlNEaWN0aW9uYXJ5ICopdXNlckluZm8uZ2V0KCldKTsKLSAgICAgICAgcmV0
dXJuIG1fcGxhdGZvcm1OU0Vycm9yLmdldCgpOwotICAgIH0KLQotICAgIG1fcGxhdGZvcm1OU0Vy
cm9yID0gY3JlYXRlTlNFcnJvckZyb21SZXNvdXJjZUVycm9yQmFzZSgqdGhpcyk7Ci0gICAgcmV0
dXJuIG1fcGxhdGZvcm1OU0Vycm9yLmdldCgpOwotfQotCi1SZXNvdXJjZUVycm9yOjpvcGVyYXRv
ciBOU0Vycm9yICooKSBjb25zdAotewotICAgIHJldHVybiBuc0Vycm9yKCk7Ci19Ci0KLSNlbHNl
Ci0KIFJlc291cmNlRXJyb3I6OlJlc291cmNlRXJyb3IoTlNFcnJvciAqbnNFcnJvcikKICAgICA6
IFJlc291cmNlRXJyb3JCYXNlKFR5cGU6Ok51bGwpCiAgICAgLCBtX2RhdGFJc1VwVG9EYXRlKGZh
bHNlKQpAQCAtMzA5LDYgKzE3OSw0IEBAIFJlc291cmNlRXJyb3I6Om9wZXJhdG9yIENGRXJyb3JS
ZWYoKSBjb24KICAgICByZXR1cm4gY2ZFcnJvcigpOwogfQogCi0jZW5kaWYgLy8gVVNFKENGTkVU
V09SSykKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW0JKHJl
dmlzaW9uIDIwNzAzNSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jl
c291cmNlSGFuZGxlTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC01OCwxNiArNTgsNiBAQAogI2lt
cG9ydCA8d3RmL3RleHQvQmFzZTY0Lmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAK
LSNpZiBVU0UoQ0ZORVRXT1JLKQotI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCi0jaW1wb3J0
IDxDRk5ldHdvcmsvQ0ZVUkxDb25uZWN0aW9uUHJpdi5oPgotI2VuZGlmCi10eXBlZGVmIHN0cnVj
dCBfQ0ZVUkxDb25uZWN0aW9uKiBDRlVSTENvbm5lY3Rpb25SZWY7Ci1leHRlcm4gIkMiIHsKLUNG
RGljdGlvbmFyeVJlZiBfQ0ZVUkxDb25uZWN0aW9uQ29weVRpbWluZ0RhdGEoQ0ZVUkxDb25uZWN0
aW9uUmVmKTsKLX0KLSNlbmRpZiAvLyBVU0UoQ0ZORVRXT1JLKQotCiAjaWYgUExBVEZPUk0oSU9T
KQogI2ltcG9ydCAiQ0ZOZXR3b3JrU1BJLmgiCiAjaW1wb3J0ICJSdW50aW1lQXBwbGljYXRpb25D
aGVja3MuaCIKQEAgLTkwLDggKzgwLDYgQEAgLShpZClfaW5pdFdpdGhSZXF1ZXN0OihOU1VSTFJl
cXVlc3QgKilyZQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCi0jaWYgIVVTRShDRk5FVFdP
UkspCi0gICAgCiBzdGF0aWMgdm9pZCBhcHBseUJhc2ljQXV0aG9yaXphdGlvbkhlYWRlcihSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IENyZWRlbnRpYWwmIGNyZWRlbnRpYWwpCiB7CiAg
ICAgU3RyaW5nIGF1dGhlbnRpY2F0aW9uSGVhZGVyID0gIkJhc2ljICIgKyBiYXNlNjRFbmNvZGUo
U3RyaW5nKGNyZWRlbnRpYWwudXNlcigpICsgIjoiICsgY3JlZGVudGlhbC5wYXNzd29yZCgpKS51
dGY4KCkpOwpAQCAtMzI5LDggKzMxNyw2IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OnBsYXRmb3Jt
U2V0RGVmZXJzTG8KICAgICAgICAgW2QtPm1fY29ubmVjdGlvbiBzZXREZWZlcnNDYWxsYmFja3M6
ZGVmZXJzXTsKIH0KIAotI2lmICFVU0UoQ0ZORVRXT1JLKQotCiB2b2lkIFJlc291cmNlSGFuZGxl
OjpzY2hlZHVsZShTY2hlZHVsZVBhaXImIHBhaXIpCiB7CiAgICAgTlNSdW5Mb29wICpydW5Mb29w
ID0gcGFpci5uc1J1bkxvb3AoKTsKQEAgLTM0OSw4ICszMzUsNiBAQCB2b2lkIFJlc291cmNlSGFu
ZGxlOjp1bnNjaGVkdWxlKFNjaGVkdWxlCiAgICAgICAgIFtkLT5tX2Nvbm5lY3Rpb24uZ2V0KCkg
dW5zY2hlZHVsZUZyb21SdW5Mb29wOnJ1bkxvb3AgZm9yTW9kZTooTlNTdHJpbmcgKilwYWlyLm1v
ZGUoKV07CiB9CiAKLSNlbmRpZgotCiBpZCBSZXNvdXJjZUhhbmRsZTo6bWFrZURlbGVnYXRlKGJv
b2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UpCiB7CiAgICAgQVNTRVJUKCFkLT5tX2RlbGVn
YXRlKTsKQEAgLTczMCwyNyArNzE0LDE0IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmNvbnRpbnVl
V2lsbENhY2hlUmUKIAogICAgIFsoaWQpZGVsZWdhdGUoKSBjb250aW51ZVdpbGxDYWNoZVJlc3Bv
bnNlOnJlc3BvbnNlXTsKIH0KLSAgICAKLSNlbmRpZiAvLyAhVVNFKENGTkVUV09SSykKLSAgICAK
LSNpZiBFTkFCTEUoV0VCX1RJTUlORykKIAotI2lmIFVTRShDRk5FVFdPUkspCi0gICAgCi12b2lk
IFJlc291cmNlSGFuZGxlOjpnZXRDb25uZWN0aW9uVGltaW5nRGF0YShDRlVSTENvbm5lY3Rpb25S
ZWYgY29ubmVjdGlvbiwgTmV0d29ya0xvYWRUaW1pbmcmIHRpbWluZykKLXsKLSAgICBjb3B5VGlt
aW5nRGF0YSgoX19icmlkZ2UgTlNEaWN0aW9uYXJ5KilhZG9wdENGKF9DRlVSTENvbm5lY3Rpb25D
b3B5VGltaW5nRGF0YShjb25uZWN0aW9uKSkuZ2V0KCksIHRpbWluZyk7Ci19Ci0gICAgCi0jZWxz
ZQorI2lmIEVOQUJMRShXRUJfVElNSU5HKQogICAgIAogdm9pZCBSZXNvdXJjZUhhbmRsZTo6Z2V0
Q29ubmVjdGlvblRpbWluZ0RhdGEoTlNVUkxDb25uZWN0aW9uICpjb25uZWN0aW9uLCBOZXR3b3Jr
TG9hZFRpbWluZyYgdGltaW5nKQogewogICAgIGNvcHlUaW1pbmdEYXRhKFtjb25uZWN0aW9uIF90
aW1pbmdEYXRhXSwgdGltaW5nKTsKIH0KICAgICAKLSNlbmRpZgotICAgIAogI2VuZGlmIC8vIEVO
QUJMRShXRUJfVElNSU5HKQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZVJlcXVlc3RNYWMubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VSZXF1
ZXN0TWFjLm1tCShyZXZpc2lvbiAyMDcwMzUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL21hYy9SZXNvdXJjZVJlcXVlc3RNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTEsNTkg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAwOCBBcHBsZSwgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0g
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiUmVzb3VyY2VSZXF1ZXN0
LmgiCi0KLSNpZiBQTEFURk9STShNQUMpCi0KLSNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlv
bi5oPgotCi1AaW50ZXJmYWNlIE5TVVJMUmVxdWVzdCAoV2ViTlNVUkxSZXF1ZXN0RGV0YWlscykK
LS0gKENGVVJMUmVxdWVzdFJlZilfQ0ZVUkxSZXF1ZXN0OwotLSAoaWQpX2luaXRXaXRoQ0ZVUkxS
ZXF1ZXN0OihDRlVSTFJlcXVlc3RSZWYpcmVxdWVzdDsKLUBlbmQKLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi0jaWYgVVNFKENGTkVUV09SSykKLQotUmVzb3VyY2VSZXF1ZXN0OjpSZXNvdXJjZVJl
cXVlc3QoTlNVUkxSZXF1ZXN0ICpuc1JlcXVlc3QpCi0gICAgOiBSZXNvdXJjZVJlcXVlc3RCYXNl
KCkKLSAgICAsIG1fY2ZSZXF1ZXN0KFtuc1JlcXVlc3QgX0NGVVJMUmVxdWVzdF0pCi0gICAgLCBt
X25zUmVxdWVzdChuc1JlcXVlc3QpCi17Ci19Ci0KLXZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojp1cGRh
dGVOU1VSTFJlcXVlc3QoKQotewotICAgIGlmIChtX2NmUmVxdWVzdCkKLSAgICAgICAgbV9uc1Jl
cXVlc3QgPSBhZG9wdE5TKFtbTlNVUkxSZXF1ZXN0IGFsbG9jXSBfaW5pdFdpdGhDRlVSTFJlcXVl
c3Q6bV9jZlJlcXVlc3QuZ2V0KCldKTsKLX0KLQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKLQotI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21h
Yy9TeW5jaHJvbm91c0xvYWRlckNsaWVudC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9TeW5jaHJvbm91c0xvYWRlckNsaWVudC5tbQkocmV2aXNp
b24gMjA3MDM1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvU3luY2hy
b25vdXNMb2FkZXJDbGllbnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDggKzI2LDYgQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTeW5jaHJvbm91c0xvYWRlckNsaWVudC5oIgog
Ci0jaWYgIVVTRShDRk5FVFdPUkspCi0KICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zOCwxNCArMzYsMTAgQEAgdm9pZCBTeW5j
aHJvbm91c0xvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZQogICAgIFtjaGFsbGVuZ2Uuc2VuZGVyKCkg
Y29udGludWVXaXRob3V0Q3JlZGVudGlhbEZvckF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOmNoYWxs
ZW5nZS5uc1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCldOwogfQogCi0jaWYgIVVTRShDRk5F
VFdPUkspCiBSZXNvdXJjZUVycm9yIFN5bmNocm9ub3VzTG9hZGVyQ2xpZW50OjpwbGF0Zm9ybUJh
ZFJlc3BvbnNlRXJyb3IoKQogewogICAgIFJldGFpblB0cjxOU0Vycm9yPiBlcnJvciA9IGFkb3B0
TlMoW1tOU0Vycm9yIGFsbG9jXSBpbml0V2l0aERvbWFpbjpOU1VSTEVycm9yRG9tYWluIGNvZGU6
TlNVUkxFcnJvckJhZFNlcnZlclJlc3BvbnNlIHVzZXJJbmZvOm5pbF0pOwogICAgIHJldHVybiBl
cnJvci5nZXQoKTsKIH0KLSNlbmRpZgogCiB9Ci0KLSNlbmRpZiAvLyAhVVNFKENGTkVUV09SSykK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJj
ZUhhbmRsZUFzRGVsZWdhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlLmgJKHJldmlzaW9u
IDIwNzAzNSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVS
ZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsOCArMjMsNyBA
QAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgV2Vi
Q29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZV9oCi0jZGVmaW5lIFdlYkNvcmVSZXNvdXJjZUhh
bmRsZUFzRGVsZWdhdGVfaAorI3ByYWdtYSBvbmNlCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNs
YXNzIFJlc291cmNlSGFuZGxlOwpAQCAtMzQsMTMgKzMzLDggQEAgY2xhc3MgUmVzb3VyY2VIYW5k
bGU7CiAtICh2b2lkKWRldGFjaEhhbmRsZTsKIEBlbmQKIAotI2lmICFVU0UoQ0ZORVRXT1JLKQot
CiBAaW50ZXJmYWNlIFdlYkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGUgOiBOU09iamVjdCA8
TlNVUkxDb25uZWN0aW9uRGVsZWdhdGUsIFdlYkNvcmVSZXNvdXJjZUxvYWRlckRlbGVnYXRlPiB7
CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqIG1faGFuZGxlOwogfQogLSAoaWQpaW5pdFdp
dGhIYW5kbGU6KFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiloYW5kbGU7CiBAZW5kCi0KLSNlbmRp
ZiAvLyAhVVNFKENGTkVUV09SSykKLSNlbmRpZiAvLyBXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0Rl
bGVnYXRlX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNv
cmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZS5t
bQkocmV2aXNpb24gMjA3MDM1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9t
YWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZS5tbQkod29ya2luZyBjb3B5KQpAQCAt
MjYsOCArMjYsNiBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJXZWJDb3JlUmVzb3Vy
Y2VIYW5kbGVBc0RlbGVnYXRlLmgiCiAKLSNpZiAhVVNFKENGTkVUV09SSykKLQogI2ltcG9ydCAi
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCIKICNpbXBvcnQgIkF1dGhlbnRpY2F0aW9uTWFjLmgi
CiAjaW1wb3J0ICJMb2dnaW5nLmgiCkBAIC0yNzAsNiArMjY4LDMgQEAgLSAoTlNDYWNoZWRVUkxS
ZXNwb25zZSAqKWNvbm5lY3Rpb246KE5TVQogfQogCiBAZW5kCi0KLSNlbmRpZiAvLyAhVVNFKENG
TkVUV09SSykKLQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2Vi
Q29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFu
ZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLmgJKHJldmlzaW9uIDIwNzAzNSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3Bl
cmF0aW9uUXVldWVEZWxlZ2F0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMywxMCArMjMsNyBAQAog
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgV2ViQ29y
ZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlX2gKLSNkZWZpbmUgV2ViQ29y
ZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlX2gKLQotI2lmICFVU0UoQ0ZO
RVRXT1JLKQorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJXZWJDb3JlUmVzb3VyY2VIYW5kbGVB
c0RlbGVnYXRlLmgiCiAjaW5jbHVkZSA8ZGlzcGF0Y2gvZGlzcGF0Y2guaD4KQEAgLTU4LDYgKzU1
LDMgQEAgQGludGVyZmFjZSBXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdAogQGludGVyZmFj
ZSBXZWJDb3JlUmVzb3VyY2VIYW5kbGVXaXRoQ3JlZGVudGlhbFN0b3JhZ2VBc09wZXJhdGlvblF1
ZXVlRGVsZWdhdGUgOiBXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdh
dGUKIAogQGVuZAotCi0jZW5kaWYgLy8gIVVTRShDRk5FVFdPUkspCi0jZW5kaWYgLy8gV2ViQ29y
ZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlX2gKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0
aW9uUXVldWVEZWxlZ2F0ZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdh
dGUubW0JKHJldmlzaW9uIDIwNzAzNSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5tbQko
d29ya2luZyBjb3B5KQpAQCAtMjYsOCArMjYsNiBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1w
b3J0ICJXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUuaCIKIAot
I2lmICFVU0UoQ0ZORVRXT1JLKQotCiAjaW1wb3J0ICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5o
IgogI2ltcG9ydCAiQXV0aGVudGljYXRpb25NYWMuaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKQEAg
LTMyOSw2ICszMjcsMyBAQCAtIChCT09MKWNvbm5lY3Rpb25TaG91bGRVc2VDcmVkZW50aWFsU3Rv
CiB9CiAKIEBlbmQKLQotI2VuZGlmIC8vICFVU0UoQ0ZORVRXT1JLKQotCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlVVJMUmVzcG9uc2UubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVVSTFJl
c3BvbnNlLm1tCShyZXZpc2lvbiAyMDcwMzUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL21hYy9XZWJDb3JlVVJMUmVzcG9uc2UubW0JKHdvcmtpbmcgY29weSkKQEAgLTMyNSw3
ICszMjUsNiBAQCB2b2lkIGFkanVzdE1JTUVUeXBlSWZOZWNlc3NhcnkoQ0ZVUkxSZXNwCiB9CiAj
ZW5kaWYKIAotI2lmICFVU0UoQ0ZORVRXT1JLKQogTlNVUkxSZXNwb25zZSAqc3ludGhlc2l6ZVJl
ZGlyZWN0UmVzcG9uc2VJZk5lY2Vzc2FyeShOU1VSTFJlcXVlc3QgKmN1cnJlbnRSZXF1ZXN0LCBO
U1VSTFJlcXVlc3QgKm5ld1JlcXVlc3QsIE5TVVJMUmVzcG9uc2UgKnJlZGlyZWN0UmVzcG9uc2Up
CiB7CiAgICAgaWYgKHJlZGlyZWN0UmVzcG9uc2UpCkBAIC0zMzksNiArMzM4LDUgQEAgTlNVUkxS
ZXNwb25zZSAqc3ludGhlc2l6ZVJlZGlyZWN0UmVzcG9ucwogICAgIE5TRGljdGlvbmFyeSAqc3lu
dGhlc2l6ZWRSZXNwb25zZUhlYWRlckZpZWxkcyA9IEB7IEAiTG9jYXRpb24iOiBbW25ld1JlcXVl
c3QgVVJMXSBhYnNvbHV0ZVN0cmluZ10sIEAiQ2FjaGUtQ29udHJvbCI6IEAibm8tc3RvcmUiIH07
CiAgICAgcmV0dXJuIFtbW05TSFRUUFVSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDpbY3Vy
cmVudFJlcXVlc3QgVVJMXSBzdGF0dXNDb2RlOjMwMiBIVFRQVmVyc2lvbjooTlNTdHJpbmcgKilr
Q0ZIVFRQVmVyc2lvbjFfMSBoZWFkZXJGaWVsZHM6c3ludGhlc2l6ZWRSZXNwb25zZUhlYWRlckZp
ZWxkc10gYXV0b3JlbGVhc2VdOwogfQotI2VuZGlmCiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3dpbi9UZW1wb3JhcnlMaW5rU3R1YnMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9UZW1wb3JhcnlMaW5rU3R1YnMuY3BwCShyZXZpc2lvbiAy
MDcwMzUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vVGVtcG9yYXJ5TGlua1N0dWJz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcsNyBAQAogCiAjaW5jbHVkZSAiTm90SW1w
bGVtZW50ZWQuaCIKICNpbmNsdWRlICJTU0xLZXlHZW5lcmF0b3IuaCIKLSNpZiAhVVNFKENGTkVU
V09SSykKKyNpZiAhVVNFKENGVVJMQ09OTkVDVElPTikKICNpbmNsdWRlICJDb29raWVTdG9yYWdl
LmgiCiAjZW5kaWYKIApAQCAtMzcsNyArMzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBTdHJp
bmcgc2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKHVuc2lnbmVkLCBjb25zdCBTdHJp
bmcmLCBjb25zdCBVUkwmKSB7IG5vdEltcGxlbWVudGVkKCk7IHJldHVybiBTdHJpbmcoKTsgfQog
dm9pZCBnZXRTdXBwb3J0ZWRLZXlTaXplcyhWZWN0b3I8U3RyaW5nPiYpIHsgbm90SW1wbGVtZW50
ZWQoKTsgfQogCi0jaWYgIVVTRShDRk5FVFdPUkspCisjaWYgIVVTRShDRlVSTENPTk5FQ1RJT04p
CiB2b2lkIHN0YXJ0T2JzZXJ2aW5nQ29va2llQ2hhbmdlcyhDb29raWVDaGFuZ2VDYWxsYmFja1B0
cikgeyBub3RJbXBsZW1lbnRlZCgpOyB9CiB2b2lkIHN0b3BPYnNlcnZpbmdDb29raWVDaGFuZ2Vz
KCkgeyBub3RJbXBsZW1lbnRlZCgpOyB9CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvanMvV2ViQ29yZVRlc3RTdXBwb3J0UHJlZml4LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvdGVzdGluZy9qcy9XZWJDb3JlVGVzdFN1cHBvcnRQcmVmaXguaAkocmV2aXNpb24g
MjA3MDM1KQorKysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9qcy9XZWJDb3JlVGVzdFN1cHBvcnRQ
cmVmaXguaAkod29ya2luZyBjb3B5KQpAQCAtMTgsNiArMTgsOCBAQAogICoKICAqLwogCisjcHJh
Z21hIG9uY2UKKwogLyogVGhpcyBwcmVmaXggZmlsZSBzaG91bGQgY29udGFpbiBvbmx5OiAKICAq
ICAgIDEpIGZpbGVzIHRvIHByZWNvbXBpbGUgZm9yIGZhc3RlciBidWlsZHMKICAqICAgIDIpIGlu
IG9uZSBjYXNlIGF0IGxlYXN0OiBPUy1YLXNwZWNpZmljIHBlcmZvcm1hbmNlIGJ1ZyB3b3JrYXJv
dW5kcwpAQCAtMTIwLDkgKzEyMiw3IEBACiAjZGVmaW5lIE9CU09MRVRFX0NPTE9SU1lOQ19BUEkK
ICNlbmRpZgogI2VuZGlmCi0jaWYgVVNFKENGTkVUV09SSykKLS8qIFdpbmRvd3MgZG9lc24ndCBp
bmNsdWRlIENGTmV0d29yay5oIHZpYSBDb3JlU2VydmljZXMuaCwgc28gd2UgZG8KLSAgIGl0IGV4
cGxpY2l0bHkgaGVyZSB0byBtYWtlIFdpbmRvd3MgbW9yZSBjb25zaXN0ZW50IHdpdGggTWFjLiAq
LworI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAjaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGTmV0d29y
ay5oPgogLy8gT24gV2luZG93cywgZGlzcGF0Y2guaCBuZWVkcyB0byBiZSBpbmNsdWRlZCBiZWZv
cmUgY2VydGFpbiBDRk5ldHdvcmsgaGVhZGVycy4KICNpbmNsdWRlIDxkaXNwYXRjaC9kaXNwYXRj
aC5oPgpJbmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24gMjA3MDM1KQorKysgU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzEgQEAKKzIwMTYtMTAtMTAgIEFs
ZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZW1v
dmUgZGVhZCBuZXR3b3JraW5nIGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE2MzI2MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmg6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL2lvcy9Eb3dubG9hZElPUy5tbTogUmVt
b3ZlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvbWFjL0Rvd25sb2FkTWFj
Lm1tOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmg6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtMb2FkTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrTG9hZDo6d2lsbENhY2hlUmVzcG9uc2VBc3luYyk6IERlbGV0ZWQuCisgICAgICAgICog
U2hhcmVkL0F1dGhlbnRpY2F0aW9uL2NvY29hL0F1dGhlbnRpY2F0aW9uTWFuYWdlckNvY29hLm1t
OgorICAgICAgICAoV2ViS2l0OjpBdXRoZW50aWNhdGlvbk1hbmFnZXI6OnJlY2VpdmVkQ3JlZGVu
dGlhbCk6CisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6cmVjZWl2ZWRS
ZXF1ZXN0VG9Db250aW51ZVdpdGhvdXRDcmVkZW50aWFsKToKKyAgICAgICAgKFdlYktpdDo6QXV0
aGVudGljYXRpb25NYW5hZ2VyOjpyZWNlaXZlZENhbmNlbGxhdGlvbik6CisgICAgICAgIChXZWJL
aXQ6OkF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6cmVjZWl2ZWRSZXF1ZXN0VG9QZXJmb3JtRGVmYXVs
dEhhbmRsaW5nKToKKyAgICAgICAgKFdlYktpdDo6QXV0aGVudGljYXRpb25NYW5hZ2VyOjpyZWNl
aXZlZENoYWxsZW5nZVJlamVjdGlvbik6CisgICAgICAgICogU2hhcmVkL1dlYlByb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzOjplbmNvZGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzLmg6CisgICAgICAgICogU2hhcmVkL21hYy9XZWJDb3JlQXJndW1lbnRDb2RlcnNN
YWMubW06CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVzb3VyY2VSZXF1ZXN0Pjo6ZW5j
b2RlUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZXNvdXJjZVJl
cXVlc3Q+OjpkZWNvZGVQbGF0Zm9ybURhdGEpOgorICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKwogMjAxNi0xMC0xMCAgS29uc3RhbnRpbiBUb2thcmV2ICA8YW5u
dWxlbkB5YW5kZXgucnU+CiAKICAgICAgICAgQWRkZWQgZmluYWwgc3BlY2lmaWVyIHRvIFdlYklu
c3BlY3RvclNlcnZlciBhbmQgdG8gaXRzIG92ZXJyaWRkZW4gbWV0aG9kcwpJbmRleDogU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oCShyZXZpc2lvbiAyMDcwMzUp
CisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oCSh3b3JraW5n
IGNvcHkpCkBAIC03OSwxMiArNzksOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRSZWNlaXZlRGF0
YUFycmF5KFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwgQ0ZBcnJheVJlZikgb3ZlcnJpZGU7CiAj
ZW5kaWYKICNpZiBQTEFURk9STShDT0NPQSkKLSNpZiBVU0UoQ0ZORVRXT1JLKQotICAgIHZvaWQg
d2lsbENhY2hlUmVzcG9uc2VBc3luYyhXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIENGQ2FjaGVk
VVJMUmVzcG9uc2VSZWYpIG92ZXJyaWRlOwotI2Vsc2UKICAgICB2b2lkIHdpbGxDYWNoZVJlc3Bv
bnNlQXN5bmMoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBOU0NhY2hlZFVSTFJlc3BvbnNlICop
IG92ZXJyaWRlOwogI2VuZGlmCi0jZW5kaWYKIAogI2lmIFVTRShQUk9URUNUSU9OX1NQQUNFX0FV
VEhfQ0FMTEJBQ0spCiAgICAgdm9pZCBjb250aW51ZUNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90
ZWN0aW9uU3BhY2UoYm9vbCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9E
b3dubG9hZHMvRG93bmxvYWQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuaAkocmV2aXNpb24gMjA3MDM1KQorKysgU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQ3LDEwICs0Nyw2IEBAIE9CSkNfQ0xBU1MgV0tEb3dubG9hZEFzRGVsZWdhdGU7CiAj
ZW5kaWYKICNlbmRpZgogCi0jaWYgVVNFKENGTkVUV09SSykKLSNpbmNsdWRlIDxDRk5ldHdvcmsv
Q0ZVUkxEb3dubG9hZFByaXYuaD4KLSNlbmRpZgotCiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIERh
dGFSZWZlcmVuY2U7CiB9CkBAIC0xMzksOSArMTM1LDYgQEAgcHJpdmF0ZToKICAgICBSZXRhaW5Q
dHI8V0tEb3dubG9hZEFzRGVsZWdhdGU+IG1fZGVsZWdhdGU7CiAjZW5kaWYKICNlbmRpZgotI2lm
IFVTRShDRk5FVFdPUkspCi0gICAgUmV0YWluUHRyPENGVVJMRG93bmxvYWRSZWY+IG1fZG93bmxv
YWQ7Ci0jZW5kaWYKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVD
bGllbnQ+IG1fZG93bmxvYWRDbGllbnQ7CiAgICAgUmVmUHRyPFdlYkNvcmU6OlJlc291cmNlSGFu
ZGxlPiBtX3Jlc291cmNlSGFuZGxlOwogICAgIFN0cmluZyBtX3N1Z2dlc3RlZE5hbWU7CkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvaW9zL0Rvd25sb2FkSU9T
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fk
cy9pb3MvRG93bmxvYWRJT1MubW0JKHJldmlzaW9uIDIwNzAzNSkKKysrIFNvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9pb3MvRG93bmxvYWRJT1MubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTEsMTYyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNp
bXBvcnQgIkRvd25sb2FkLmgiCi0KLSNpZiBVU0UoQ0ZORVRXT1JLKSAmJiAhVVNFKE5FVFdPUktf
U0VTU0lPTikKLQotI2ltcG9ydCAiRGF0YVJlZmVyZW5jZS5oIgotI2ltcG9ydCA8Q0ZOZXR3b3Jr
L0NGVVJMRG93bmxvYWQuaD4KLSNpbXBvcnQgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KLSNp
bXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgotI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJj
ZUhhbmRsZS5oPgotI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+Ci0jaW1wb3J0
IDx3dGYvUmV0YWluUHRyLmg+Ci0jaW1wb3J0IDx3dGYvUnVuTG9vcC5oPgotCi11c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLS8vIEZJWE1FOiBJZiBwb3Nz
aWJsZSwgd2Ugc2hvdWxkIGNvbnNpZGVyIG1vdmluZyBzb21lIGNhbGxiYWNrcyBvZmYgdGhlIG1h
aW4gdGhyZWFkIG9yIGF0IGxlYXN0Ci0vLyBtYWtpbmcgdGhlbSBhc3luY2hvbm91cyBjYWxscy4K
LXN0YXRpYyB2b2lkIGRpc3BhdGNoT25NYWluVGhyZWFkKHZvaWQoXmJsb2NrKSgpKQotewotICAg
IGlmIChSdW5Mb29wOjppc01haW4oKSkgewotICAgICAgICBibG9jaygpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgZGlzcGF0Y2hfc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgp
LCBibG9jayk7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgRG93bmxvYWQqIHRvRG93bmxvYWQoY29uc3Qg
dm9pZCogY2xpZW50SW5mbykKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RG93bmxvYWQqPihj
b25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSk7Ci19Ci0KLXN0YXRpYyB2b2lkIHNldFVwRG93
bmxvYWRDbGllbnQoQ0ZVUkxEb3dubG9hZENsaWVudCYgY2xpZW50LCBEb3dubG9hZCYgZG93bmxv
YWQpCi17Ci0gICAgbWVtc2V0KCZjbGllbnQsIDAsIHNpemVvZihjbGllbnQpKTsKLSAgICBjbGll
bnQuY2xpZW50SW5mbyA9ICZkb3dubG9hZDsKLQotICAgIGNsaWVudC5kaWRTdGFydCA9IFtdKENG
VVJMRG93bmxvYWRSZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pIHsKLSAgICAgICAgZGlzcGF0
Y2hPbk1haW5UaHJlYWQoXnsKLSAgICAgICAgICAgIHRvRG93bmxvYWQoY2xpZW50SW5mbyktPmRp
ZFN0YXJ0KCk7Ci0gICAgICAgIH0pOwotICAgIH07Ci0KLSAgICBjbGllbnQud2lsbFNlbmRSZXF1
ZXN0ID0gW10oQ0ZVUkxEb3dubG9hZFJlZiwgQ0ZVUkxSZXF1ZXN0UmVmIHJlcXVlc3QsIENGVVJM
UmVzcG9uc2VSZWYsIGNvbnN0IHZvaWQqKSAtPiBDRlVSTFJlcXVlc3RSZWYgewotICAgICAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8Q0ZVUkxSZXF1ZXN0UmVmPihDRlJldGFpbihyZXF1ZXN0KSk7Ci0g
ICAgfTsKLQotICAgIGNsaWVudC5kaWRSZWNlaXZlUmVzcG9uc2UgPSBbXShDRlVSTERvd25sb2Fk
UmVmLCBDRlVSTFJlc3BvbnNlUmVmIHJlc3BvbnNlLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKSB7
Ci0gICAgICAgIGRpc3BhdGNoT25NYWluVGhyZWFkKF57Ci0gICAgICAgICAgICB0b0Rvd25sb2Fk
KGNsaWVudEluZm8pLT5kaWRSZWNlaXZlUmVzcG9uc2UocmVzcG9uc2UpOwotICAgICAgICB9KTsK
LSAgICB9OwotCi0gICAgY2xpZW50LmRpZFJlY2VpdmVEYXRhID0gW10oQ0ZVUkxEb3dubG9hZFJl
ZiwgQ0ZJbmRleCBsZW5ndGgsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pIHsKLSAgICAgICAgZGlz
cGF0Y2hPbk1haW5UaHJlYWQoXnsKLSAgICAgICAgICAgIHRvRG93bmxvYWQoY2xpZW50SW5mbykt
PmRpZFJlY2VpdmVEYXRhKGxlbmd0aCk7Ci0gICAgICAgIH0pOwotICAgIH07Ci0KLSAgICBjbGll
bnQuc2hvdWxkRGVjb2RlRGF0YU9mTUlNRVR5cGUgPSBbXShDRlVSTERvd25sb2FkUmVmLCBDRlN0
cmluZ1JlZiBlbmNvZGluZ1R5cGUsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pIC0+IEJvb2xlYW4g
ewotICAgICAgICBfX2Jsb2NrIEJPT0wgcmV0dXJuVmFsdWUgPSBOTzsKLSAgICAgICAgZGlzcGF0
Y2hPbk1haW5UaHJlYWQoXnsKLSAgICAgICAgICAgIHJldHVyblZhbHVlID0gdG9Eb3dubG9hZChj
bGllbnRJbmZvKS0+c2hvdWxkRGVjb2RlU291cmNlRGF0YU9mTUlNRVR5cGUoZW5jb2RpbmdUeXBl
KTsKLSAgICAgICAgfSk7Ci0gICAgICAgIHJldHVybiByZXR1cm5WYWx1ZTsKLSAgICB9OwotCi0g
ICAgY2xpZW50LmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZE9iamVjdE5hbWUgPSBbXShD
RlVSTERvd25sb2FkUmVmIGRvd25sb2FkUmVmLCBDRlN0cmluZ1JlZiBvYmplY3ROYW1lLCBjb25z
dCB2b2lkKiBjbGllbnRJbmZvKSB7Ci0gICAgICAgIGRpc3BhdGNoT25NYWluVGhyZWFkKF57Ci0g
ICAgICAgICAgICBib29sIGFsbG93T3ZlcndyaXRlOwotICAgICAgICAgICAgU3RyaW5nIGRlc3Rp
bmF0aW9uID0gdG9Eb3dubG9hZChjbGllbnRJbmZvKS0+ZGVjaWRlRGVzdGluYXRpb25XaXRoU3Vn
Z2VzdGVkRmlsZW5hbWUob2JqZWN0TmFtZSwgYWxsb3dPdmVyd3JpdGUpOwotICAgICAgICAgICAg
aWYgKCFkZXN0aW5hdGlvbi5pc051bGwoKSkKLSAgICAgICAgICAgICAgICBDRlVSTERvd25sb2Fk
U2V0RGVzdGluYXRpb24oZG93bmxvYWRSZWYsIHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZVUkxSZWY+KFtO
U1VSTCBmaWxlVVJMV2l0aFBhdGg6ZGVzdGluYXRpb25dKSwgYWxsb3dPdmVyd3JpdGUpOwotICAg
ICAgICB9KTsKLSAgICB9OwotCi0gICAgY2xpZW50LmRpZENyZWF0ZURlc3RpbmF0aW9uID0gW10o
Q0ZVUkxEb3dubG9hZFJlZiwgQ0ZVUkxSZWYgcGF0aCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykg
ewotICAgICAgICBkaXNwYXRjaE9uTWFpblRocmVhZCheewotICAgICAgICAgICAgdG9Eb3dubG9h
ZChjbGllbnRJbmZvKS0+ZGlkQ3JlYXRlRGVzdGluYXRpb24oQ0ZVUkxHZXRTdHJpbmcocGF0aCkp
OwotICAgICAgICB9KTsKLSAgICB9OwotCi0gICAgY2xpZW50LmRpZEZpbmlzaCA9IFtdKENGVVJM
RG93bmxvYWRSZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pIHsKLSAgICAgICAgZGlzcGF0Y2hP
bk1haW5UaHJlYWQoXnsKLSAgICAgICAgICAgIHRvRG93bmxvYWQoY2xpZW50SW5mbyktPmRpZEZp
bmlzaCgpOwotICAgICAgICB9KTsKLSAgICB9OwotCi0gICAgY2xpZW50LmRpZEZhaWwgPSBbXShD
RlVSTERvd25sb2FkUmVmIGRvd25sb2FkUmVmLCBDRkVycm9yUmVmIGVycm9yLCBjb25zdCB2b2lk
KiBjbGllbnRJbmZvKSB7Ci0gICAgICAgIGRpc3BhdGNoT25NYWluVGhyZWFkKF57Ci0gICAgICAg
ICAgICBhdXRvIHJlc3VtZURhdGEgPSBhZG9wdENGKENGVVJMRG93bmxvYWRDb3B5UmVzdW1lRGF0
YShkb3dubG9hZFJlZikpOwotICAgICAgICAgICAgdG9Eb3dubG9hZChjbGllbnRJbmZvKS0+ZGlk
RmFpbChlcnJvciwgSVBDOjpEYXRhUmVmZXJlbmNlKHJlc3VtZURhdGEgPyBDRkRhdGFHZXRCeXRl
UHRyKHJlc3VtZURhdGEuZ2V0KCkpIDogbnVsbHB0ciwgcmVzdW1lRGF0YSA/IENGRGF0YUdldExl
bmd0aChyZXN1bWVEYXRhLmdldCgpKSA6IDApKTsKLSAgICAgICAgfSk7Ci0gICAgfTsKLX0KLQot
dm9pZCBEb3dubG9hZDo6c3RhcnROZXR3b3JrTG9hZCgpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQo
KTsKLX0KLQotdm9pZCBEb3dubG9hZDo6cmVzdW1lKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYs
IGNvbnN0IFN0cmluZyYsIGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYpCi17Ci0gICAg
bm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBEb3dubG9hZDo6c3RhcnROZXR3b3JrTG9hZFdp
dGhIYW5kbGUoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UpCi17Ci0gICAgQ0ZVUkxEb3dubG9hZENsaWVudCBjbGllbnQ7Ci0gICAgc2V0VXBE
b3dubG9hZENsaWVudChjbGllbnQsICp0aGlzKTsKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBw
dXNoCi0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdkZXByZWNhdGVkLWRlY2xh
cmF0aW9ucyIKLSAgICBtX2Rvd25sb2FkID0gYWRvcHRDRihDRlVSTERvd25sb2FkQ3JlYXRlQW5k
U3RhcnRXaXRoTG9hZGluZ0Nvbm5lY3Rpb24oTlVMTCwgaGFuZGxlLT5yZWxlYXNlQ29ubmVjdGlv
bkZvckRvd25sb2FkKCkuZ2V0KCksIG1fcmVxdWVzdC5jZlVSTFJlcXVlc3QoVXBkYXRlSFRUUEJv
ZHkpLCByZXNwb25zZS5jZlVSTFJlc3BvbnNlKCksICZjbGllbnQpKTsKLSNwcmFnbWEgY2xhbmcg
ZGlhZ25vc3RpYyBwb3AKLX0KLQotdm9pZCBEb3dubG9hZDo6Y2FuY2VsTmV0d29ya0xvYWQoKQot
ewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgRG93bmxvYWQ6OnBsYXRmb3JtSW52
YWxpZGF0ZSgpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBEb3dubG9hZDo6
cGxhdGZvcm1EaWRGaW5pc2goKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLX0gLy8g
bmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gVVNFKENGTkVUV09SSykgJiYgIVVTRShORVRX
T1JLX1NFU1NJT04pCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9h
ZHMvbWFjL0Rvd25sb2FkTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL0Rvd25sb2Fkcy9tYWMvRG93bmxvYWRNYWMubW0JKHJldmlzaW9uIDIwNzAzNSkK
KysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9tYWMvRG93bmxvYWRN
YWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpbXBvcnQgImNvbmZpZy5o
IgogI2ltcG9ydCAiRG93bmxvYWQuaCIKIAotI2lmICFVU0UoQ0ZORVRXT1JLKSAmJiAhVVNFKE5F
VFdPUktfU0VTU0lPTikKKyNpZiAhVVNFKE5FVFdPUktfU0VTU0lPTikKIAogI2ltcG9ydCA8V2Vi
Q29yZS9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9BdXRoZW50
aWNhdGlvbk1hYy5oPgpAQCAtMjcyLDQgKzI3Miw0IEBAIC0gKHZvaWQpZG93bmxvYWQ6KE5TVVJM
RG93bmxvYWQgKilkb3dubG8KIAogQGVuZAogCi0jZW5kaWYgLy8gIVVTRShDRk5FVFdPUkspICYm
ICFVU0UoTkVUV09SS19TRVNTSU9OKQorI2VuZGlmIC8vICFVU0UoTkVUV09SS19TRVNTSU9OKQpJ
bmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtMb2FkTWFjLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL21hYy9OZXR3b3Jr
TG9hZE1hYy5tbQkocmV2aXNpb24gMjA3MDM1KQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvbWFjL05ldHdvcmtMb2FkTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw3ICsyNCw2
IEBACiAgKi8KIAogI2ltcG9ydCAiY29uZmlnLmgiCi0KICNpbXBvcnQgIk5ldHdvcmtMb2FkLmgi
CiAKICNpbXBvcnQgPFdlYkNvcmUvQ0ZOZXR3b3JrU1BJLmg+CkBAIC0zNCwxNyArMzMsNiBAQCBu
YW1lc3BhY2UgV2ViS2l0IHsKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLSNpZiBVU0Uo
Q0ZORVRXT1JLKQotCi12b2lkIE5ldHdvcmtMb2FkOjp3aWxsQ2FjaGVSZXNwb25zZUFzeW5jKFJl
c291cmNlSGFuZGxlKiBoYW5kbGUsIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYgY2ZSZXNwb25zZSkK
LXsKLSAgICBBU1NFUlRfVU5VU0VEKGhhbmRsZSwgaGFuZGxlID09IG1faGFuZGxlKTsKLQotICAg
IG1faGFuZGxlLT5jb250aW51ZVdpbGxDYWNoZVJlc3BvbnNlKGNmUmVzcG9uc2UpOwotfQotCi0j
ZWxzZQotCiB2b2lkIE5ldHdvcmtMb2FkOjp3aWxsQ2FjaGVSZXNwb25zZUFzeW5jKFJlc291cmNl
SGFuZGxlKiBoYW5kbGUsIE5TQ2FjaGVkVVJMUmVzcG9uc2UgKm5zUmVzcG9uc2UpCiB7CiAgICAg
QVNTRVJUX1VOVVNFRChoYW5kbGUsIGhhbmRsZSA9PSBtX2hhbmRsZSk7CkBAIC01Miw2ICs0MCw0
IEBAIHZvaWQgTmV0d29ya0xvYWQ6OndpbGxDYWNoZVJlc3BvbnNlQXN5bmMKICAgICBtX2hhbmRs
ZS0+Y29udGludWVXaWxsQ2FjaGVSZXNwb25zZShuc1Jlc3BvbnNlKTsKIH0KIAotI2VuZGlmIC8v
ICFVU0UoQ0ZORVRXT1JLKQotCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5j
cHAJKHJldmlzaW9uIDIwNzAzNSkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA0LDcgKzEwNCw3IEBA
IHZvaWQgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2QKICAgICBlbmNvZGVyIDw8
IHRleHRDaGVja2VyU3RhdGU7CiAgICAgZW5jb2RlciA8PCBmdWxsS2V5Ym9hcmRBY2Nlc3NFbmFi
bGVkOwogICAgIGVuY29kZXIgPDwgZGVmYXVsdFJlcXVlc3RUaW1lb3V0SW50ZXJ2YWw7Ci0jaWYg
UExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRk5FVFdPUkspCisjaWYgUExBVEZPUk0oQ09DT0EpCiAg
ICAgZW5jb2RlciA8PCB1aVByb2Nlc3NCdW5kbGVJZGVudGlmaWVyOwogI2VuZGlmCiAjaWYgUExB
VEZPUk0oQ09DT0EpCkBAIC0yNDAsNyArMjQwLDcgQEAgYm9vbCBXZWJQcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzOjpkZWNvZAogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShwYXJhbWV0ZXJzLmRlZmF1bHRSZXF1ZXN0VGltZW91dEludGVydmFsKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZORVRXT1JLKQor
I2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy51
aVByb2Nlc3NCdW5kbGVJZGVudGlmaWVyKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogI2VuZGlm
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzLmgJKHJldmlzaW9uIDIwNzAzNSkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMyw3
ICsxMjMsNyBAQCBzdHJ1Y3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyB7CiAKICAgICBk
b3VibGUgZGVmYXVsdFJlcXVlc3RUaW1lb3V0SW50ZXJ2YWw7CiAKLSNpZiBQTEFURk9STShDT0NP
QSkgfHwgVVNFKENGTkVUV09SSykKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICBTdHJpbmcgdWlQ
cm9jZXNzQnVuZGxlSWRlbnRpZmllcjsKICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvQXV0aGVudGljYXRpb24vY29jb2EvQXV0aGVudGljYXRpb25NYW5hZ2VyQ29jb2EubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL2NvY29h
L0F1dGhlbnRpY2F0aW9uTWFuYWdlckNvY29hLm1tCShyZXZpc2lvbiAyMDcwMzUpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvQXV0aGVudGljYXRpb24vY29jb2EvQXV0aGVudGljYXRpb25NYW5h
Z2VyQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTMyLDM3ICszMiwyNyBAQCBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAogdm9pZCBBdXRoZW50aWNhdGlvbk1hbmFnZXI6OnJlY2VpdmVkQ3JlZGVudGlh
bChjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgYXV0aGVudGljYXRpb25DaGFsbGVuZ2Us
IGNvbnN0IENyZWRlbnRpYWwmIGNyZWRlbnRpYWwpCiB7Ci0jaWYgIVVTRShDRk5FVFdPUkspCiAg
ICAgW2F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLnNlbmRlcigpIHVzZUNyZWRlbnRpYWw6Y3JlZGVu
dGlhbC5uc0NyZWRlbnRpYWwoKSBmb3JBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTphdXRoZW50aWNh
dGlvbkNoYWxsZW5nZS5uc1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCldOwotI2VuZGlmCiB9
CiAKIHZvaWQgQXV0aGVudGljYXRpb25NYW5hZ2VyOjpyZWNlaXZlZFJlcXVlc3RUb0NvbnRpbnVl
V2l0aG91dENyZWRlbnRpYWwoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlKQogewotI2lmICFVU0UoQ0ZORVRXT1JLKQogICAgIFthdXRoZW50aWNh
dGlvbkNoYWxsZW5nZS5zZW5kZXIoKSBjb250aW51ZVdpdGhvdXRDcmVkZW50aWFsRm9yQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2U6YXV0aGVudGljYXRpb25DaGFsbGVuZ2UubnNVUkxBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSgpXTsKLSNlbmRpZgogfQogCiB2b2lkIEF1dGhlbnRpY2F0aW9uTWFuYWdl
cjo6cmVjZWl2ZWRDYW5jZWxsYXRpb24oY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKQogewotI2lmICFVU0UoQ0ZORVRXT1JLKQogICAgIFthdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZS5zZW5kZXIoKSBjYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZTphdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5uc1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCld
OwotI2VuZGlmCiB9CiAKIHZvaWQgQXV0aGVudGljYXRpb25NYW5hZ2VyOjpyZWNlaXZlZFJlcXVl
c3RUb1BlcmZvcm1EZWZhdWx0SGFuZGxpbmcoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2Um
IGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKQogewotI2lmICFVU0UoQ0ZORVRXT1JLKQogICAgIFth
dXRoZW50aWNhdGlvbkNoYWxsZW5nZS5zZW5kZXIoKSBwZXJmb3JtRGVmYXVsdEhhbmRsaW5nRm9y
QXV0aGVudGljYXRpb25DaGFsbGVuZ2U6YXV0aGVudGljYXRpb25DaGFsbGVuZ2UubnNVUkxBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSgpXTsKLSNlbmRpZgogfQogCiB2b2lkIEF1dGhlbnRpY2F0aW9u
TWFuYWdlcjo6cmVjZWl2ZWRDaGFsbGVuZ2VSZWplY3Rpb24oY29uc3QgQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UmIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKQogewotI2lmICFVU0UoQ0ZORVRXT1JL
KQogICAgIFthdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5zZW5kZXIoKSByZWplY3RQcm90ZWN0aW9u
U3BhY2VBbmRDb250aW51ZVdpdGhDaGFsbGVuZ2U6YXV0aGVudGljYXRpb25DaGFsbGVuZ2UubnNV
UkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgpXTsKLSNlbmRpZgogfQogCiB9CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1dlYkNvcmVBcmd1bWVudENvZGVyc01hYy5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1dlYkNvcmVBcmd1bWVudENvZGVyc01h
Yy5tbQkocmV2aXNpb24gMjA3MDM1KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9XZWJD
b3JlQXJndW1lbnRDb2RlcnNNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTM5LDEwICszOSw2IEBA
CiAjaW1wb3J0IDxXZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4KICNpbXBvcnQgPFdlYkNvcmUvUmVz
b3VyY2VSZXF1ZXN0Lmg+CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotI2ltcG9ydCA8Q0ZOZXR3b3Jr
L0NGVVJMUmVxdWVzdC5oPgotI2VuZGlmCi0KICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tf
VEFSR0VUKQogI2ltcG9ydCA8V2ViQ29yZS9BVkZvdW5kYXRpb25TUEkuaD4KICNpbXBvcnQgPFdl
YkNvcmUvTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQuaD4KQEAgLTU3LDM2ICs1Myw2IEBAIHVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgSVBDIHsKIAotI2lmIFVTRShDRk5F
VFdPUkspCi12b2lkIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VSZXF1ZXN0Pjo6ZW5jb2RlUGxhdGZv
cm1EYXRhKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VS
ZXF1ZXN0KQotewotICAgIFJldGFpblB0cjxDRlVSTFJlcXVlc3RSZWY+IHJlcXVlc3RUb1Nlcmlh
bGl6ZSA9IHJlc291cmNlUmVxdWVzdC5jZlVSTFJlcXVlc3QoRG9Ob3RVcGRhdGVIVFRQQm9keSk7
Ci0KLSAgICBib29sIHJlcXVlc3RJc1ByZXNlbnQgPSByZXF1ZXN0VG9TZXJpYWxpemU7Ci0gICAg
ZW5jb2RlciA8PCByZXF1ZXN0SXNQcmVzZW50OwotCi0gICAgaWYgKCFyZXF1ZXN0SXNQcmVzZW50
KQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBXZSBkb24ndCBzZW5kIEhUVFAgYm9keSBvdmVy
IElQQyBmb3IgYmV0dGVyIHBlcmZvcm1hbmNlLgotICAgIC8vIEFsc28sIGl0J3Mgbm90IGFsd2F5
cyBwb3NzaWJsZSB0byBkbywgYXMgc3RyZWFtcyBjYW4gb25seSBiZSBjcmVhdGVkIGluIHByb2Nl
c3MgdGhhdCBkb2VzIG5ldHdvcmtpbmcuCi0gICAgUmV0YWluUHRyPENGRGF0YVJlZj4gcmVxdWVz
dEhUVFBCb2R5ID0gYWRvcHRDRihDRlVSTFJlcXVlc3RDb3B5SFRUUFJlcXVlc3RCb2R5KHJlcXVl
c3RUb1NlcmlhbGl6ZS5nZXQoKSkpOwotICAgIFJldGFpblB0cjxDRlJlYWRTdHJlYW1SZWY+IHJl
cXVlc3RIVFRQQm9keVN0cmVhbSA9IGFkb3B0Q0YoQ0ZVUkxSZXF1ZXN0Q29weUhUVFBSZXF1ZXN0
Qm9keVN0cmVhbShyZXF1ZXN0VG9TZXJpYWxpemUuZ2V0KCkpKTsKLSAgICBpZiAocmVxdWVzdEhU
VFBCb2R5IHx8IHJlcXVlc3RIVFRQQm9keVN0cmVhbSkgewotICAgICAgICBDRk11dGFibGVVUkxS
ZXF1ZXN0UmVmIG11dGFibGVSZXF1ZXN0ID0gQ0ZVUkxSZXF1ZXN0Q3JlYXRlTXV0YWJsZUNvcHko
MCwgcmVxdWVzdFRvU2VyaWFsaXplLmdldCgpKTsKLSAgICAgICAgcmVxdWVzdFRvU2VyaWFsaXpl
ID0gYWRvcHRDRihtdXRhYmxlUmVxdWVzdCk7Ci0gICAgICAgIENGVVJMUmVxdWVzdFNldEhUVFBS
ZXF1ZXN0Qm9keShtdXRhYmxlUmVxdWVzdCwgbmlsKTsKLSAgICAgICAgQ0ZVUkxSZXF1ZXN0U2V0
SFRUUFJlcXVlc3RCb2R5U3RyZWFtKG11dGFibGVSZXF1ZXN0LCBuaWwpOwotICAgIH0KLQotICAg
IFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IGRpY3Rpb25hcnkgPSBhZG9wdENGKFdLQ0ZVUkxS
ZXF1ZXN0Q3JlYXRlU2VyaWFsaXphYmxlUmVwcmVzZW50YXRpb24ocmVxdWVzdFRvU2VyaWFsaXpl
LmdldCgpLCBJUEM6OnRva2VuTnVsbFR5cGVSZWYoKSkpOwotICAgIElQQzo6ZW5jb2RlKGVuY29k
ZXIsIGRpY3Rpb25hcnkuZ2V0KCkpOwotCi0gICAgLy8gVGhlIGZhbGxiYWNrIGFycmF5IGlzIHBh
cnQgb2YgQ0ZVUkxSZXF1ZXN0LCBidXQgaXQgaXMgbm90IGVuY29kZWQgYnkgV0tDRlVSTFJlcXVl
c3RDcmVhdGVTZXJpYWxpemFibGVSZXByZXNlbnRhdGlvbi4KLSAgICBlbmNvZGVyIDw8IHJlc291
cmNlUmVxdWVzdC5yZXNwb25zZUNvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJh
eSgpOwotICAgIGVuY29kZXIuZW5jb2RlRW51bShyZXNvdXJjZVJlcXVlc3QucmVxdWVzdGVyKCkp
OwotfQotI2Vsc2UKIHZvaWQgQXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlcXVlc3Q+OjplbmNvZGVQ
bGF0Zm9ybURhdGEoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNv
dXJjZVJlcXVlc3QpCiB7CiAgICAgUmV0YWluUHRyPE5TVVJMUmVxdWVzdD4gcmVxdWVzdFRvU2Vy
aWFsaXplID0gcmVzb3VyY2VSZXF1ZXN0Lm5zVVJMUmVxdWVzdChEb05vdFVwZGF0ZUhUVFBCb2R5
KTsKQEAgLTExMiw3ICs3OCw2IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlcXVlc3Q+
OjplbmMKICAgICBlbmNvZGVyIDw8IHJlc291cmNlUmVxdWVzdC5yZXNwb25zZUNvbnRlbnREaXNw
b3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheSgpOwogICAgIGVuY29kZXIuZW5jb2RlRW51bShy
ZXNvdXJjZVJlcXVlc3QucmVxdWVzdGVyKCkpOwogfQotI2VuZGlmCiAKIGJvb2wgQXJndW1lbnRD
b2RlcjxSZXNvdXJjZVJlcXVlc3Q+OjpkZWNvZGVQbGF0Zm9ybURhdGEoRGVjb2RlciYgZGVjb2Rl
ciwgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QpCiB7CkBAIC0xMjksMTkgKzk0LDEx
IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlcXVlc3Q+OjpkZWMKICAgICBpZiAoIUlQ
Qzo6ZGVjb2RlKGRlY29kZXIsIGRpY3Rpb25hcnkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
LSNpZiBVU0UoQ0ZORVRXT1JLKQotICAgIFJldGFpblB0cjxDRlVSTFJlcXVlc3RSZWY+IGNmVVJM
UmVxdWVzdCA9IGFkb3B0Q0YoV0tDcmVhdGVDRlVSTFJlcXVlc3RGcm9tU2VyaWFsaXphYmxlUmVw
cmVzZW50YXRpb24oZGljdGlvbmFyeS5nZXQoKSwgSVBDOjp0b2tlbk51bGxUeXBlUmVmKCkpKTsK
LSAgICBpZiAoIWNmVVJMUmVxdWVzdCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmVz
b3VyY2VSZXF1ZXN0ID0gUmVzb3VyY2VSZXF1ZXN0KGNmVVJMUmVxdWVzdC5nZXQoKSk7Ci0jZWxz
ZQogICAgIFJldGFpblB0cjxOU1VSTFJlcXVlc3Q+IG5zVVJMUmVxdWVzdCA9IFdLTlNVUkxSZXF1
ZXN0RnJvbVNlcmlhbGl6YWJsZVJlcHJlc2VudGF0aW9uKGRpY3Rpb25hcnkuZ2V0KCksIElQQzo6
dG9rZW5OdWxsVHlwZVJlZigpKTsKICAgICBpZiAoIW5zVVJMUmVxdWVzdCkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCiAgICAgcmVzb3VyY2VSZXF1ZXN0ID0gUmVzb3VyY2VSZXF1ZXN0KG5zVVJM
UmVxdWVzdC5nZXQoKSk7Ci0jZW5kaWYKICAgICAKICAgICBWZWN0b3I8U3RyaW5nPiByZXNwb25z
ZUNvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheTsKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKHJlc3BvbnNlQ29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5
KSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oJKHJldmlzaW9uIDIwNzAzNSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTA1MSw3ICsxMDUxLDYg
QEAKIAkJNUMxNDI3MDUxQzIzRjg0QzAwRDQxMTgzIC8qIERvd25sb2FkSUQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDMTQyNkY3MUMyM0Y4NDMwMEQ0
MTE4MyAvKiBEb3dubG9hZElELmggKi87IH07CiAJCTVDMTQyNzA2MUMyM0Y4NEMwMEQ0MTE4MyAv
KiBEb3dubG9hZE1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNUMxNDI2RjgxQzIzRjg0MzAwRDQxMTgzIC8qIERvd25sb2FkTWFuYWdlci5j
cHAgKi87IH07CiAJCTVDMTQyNzA3MUMyM0Y4NEMwMEQ0MTE4MyAvKiBEb3dubG9hZE1hbmFnZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDMTQyNkY5
MUMyM0Y4NDMwMEQ0MTE4MyAvKiBEb3dubG9hZE1hbmFnZXIuaCAqLzsgfTsKLQkJNUMxNDI3MTEx
QzIzRjg5RTAwRDQxMTgzIC8qIERvd25sb2FkSU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMxNDI3MEQxQzIzRjg4NTAwRDQxMTgzIC8qIERvd25s
b2FkSU9TLm1tICovOyB9OwogCQk1QzE0MjcxMjFDMjNGODlFMDBENDExODMgLyogRG93bmxvYWRN
YWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzE0
MjcwRjFDMjNGODk5MDBENDExODMgLyogRG93bmxvYWRNYWMubW0gKi87IH07CiAJCTVDMTQyNzEz
MUMyM0Y4OUUwMEQ0MTE4MyAvKiBEb3dubG9hZENvY29hLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMxNDI3MDkxQzIzRjg2OTAwRDQxMTgzIC8qIERv
d25sb2FkQ29jb2EubW0gKi87IH07CiAJCTVDMTQyNzE4MUMyM0Y4QjcwMEQ0MTE4MyAvKiBDdXN0
b21Qcm90b2NvbE1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDVDMTQyNzE0MUMyM0Y4QjAwMEQ0MTE4MyAvKiBDdXN0b21Qcm90b2NvbE1hbmFn
ZXIuaCAqLzsgfTsKQEAgLTMxMzAsNyArMzEyOSw2IEBACiAJCTVDMTQyNkY4MUMyM0Y4NDMwMEQ0
MTE4MyAvKiBEb3dubG9hZE1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBuYW1lID0gRG93bmxvYWRNYW5hZ2VyLmNwcDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL0Rvd25s
b2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
QzE0MjZGOTFDMjNGODQzMDBENDExODMgLyogRG93bmxvYWRNYW5hZ2VyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERvd25sb2FkTWFuYWdlci5oOyBwYXRoID0gTmV0d29ya1By
b2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1QzE0MjcwOTFDMjNGODY5MDBENDExODMgLyogRG93bmxvYWRDb2NvYS5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IERvd25sb2FkQ29jb2EubW07IHBh
dGggPSBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvY29jb2EvRG93bmxvYWRDb2NvYS5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNUMxNDI3MEQxQzIzRjg4NTAwRDQxMTgzIC8qIERv
d25sb2FkSU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gRG93
bmxvYWRJT1MubW07IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvaW9zL0Rvd25sb2Fk
SU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzE0MjcwRjFDMjNGODk5MDBE
NDExODMgLyogRG93bmxvYWRNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IG5hbWUgPSBEb3dubG9hZE1hYy5tbTsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9t
YWMvRG93bmxvYWRNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDMTQyNzE0
MUMyM0Y4QjAwMEQ0MTE4MyAvKiBDdXN0b21Qcm90b2NvbE1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmg7IHBhdGggPSBOZXR3
b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDMTQyNzE1MUMyM0Y4QjAwMEQ0MTE4MyAvKiBDdXN0
b21Qcm90b2NvbE1hbmFnZXIubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gQ3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyLm1lc3NhZ2VzLmluOyBwYXRoID0gTmV0d29ya1Byb2Nlc3MvQ3Vz
dG9tUHJvdG9jb2xzL0N1c3RvbVByb3RvY29sTWFuYWdlci5tZXNzYWdlcy5pbjsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTU3MzgsNyArNTczNiw2IEBACiAJCQlpc2EgPSBQQlhHcm91
cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCTVDMTQyNzA4MUMyM0Y4NTIwMEQ0MTE4MyAvKiBjb2Nv
YSAqLywKLQkJCQk1QzE0MjcwQzFDMjNGODc3MDBENDExODMgLyogaW9zICovLAogCQkJCTVDMTQy
NzBCMUMyM0Y4NzEwMEQ0MTE4MyAvKiBtYWMgKi8sCiAJCQkJODNCRkFDNDAxRDk2MTM2MDAwNDMz
NDkwIC8qIEJsb2JEb3dubG9hZENsaWVudC5oICovLAogCQkJCTgzQkZBQzQxMUQ5NjEzNjAwMDQz
MzQ5MCAvKiBCbG9iRG93bmxvYWRDbGllbnQuY3BwICovLApAQCAtNTc3OSwxNCArNTc3Niw2IEBA
CiAJCQluYW1lID0gbWFjOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKLQkJNUMx
NDI3MEMxQzIzRjg3NzAwRDQxMTgzIC8qIGlvcyAqLyA9IHsKLQkJCWlzYSA9IFBCWEdyb3VwOwot
CQkJY2hpbGRyZW4gPSAoCi0JCQkJNUMxNDI3MEQxQzIzRjg4NTAwRDQxMTgzIC8qIERvd25sb2Fk
SU9TLm1tICovLAotCQkJKTsKLQkJCW5hbWUgPSBpb3M7Ci0JCQlzb3VyY2VUcmVlID0gIjxncm91
cD4iOwotCQl9OwogCQk1QzE0MjcxQTFDMjNGOEJGMDBENDExODMgLyogQ29jb2EgKi8gPSB7CiAJ
CQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtOTA4OCw3ICs5MDc3LDYgQEAK
IAkJCQk1QzE0MjcwMTFDMjNGODRDMDBENDExODMgLyogRG93bmxvYWQuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQTFERjYzMTIxOEUwQjdDODAwM0EzRTJBIC8qIERvd25sb2FkQ2xpZW50Lm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNUMxNDI3MTMxQzIzRjg5RTAwRDQxMTgzIC8qIERvd25sb2FkQ29j
b2EubW0gaW4gU291cmNlcyAqLywKLQkJCQk1QzE0MjcxMTFDMjNGODlFMDBENDExODMgLyogRG93
bmxvYWRJT1MubW0gaW4gU291cmNlcyAqLywKIAkJCQk1QzE0MjcxMjFDMjNGODlFMDBENDExODMg
LyogRG93bmxvYWRNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQk1QzE0MjcwNjFDMjNGODRDMDBE
NDExODMgLyogRG93bmxvYWRNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBQjdENENC
MTI4OEFBQTcwMENGRDA4QyAvKiBEb3dubG9hZFByb3h5LmNwcCBpbiBTb3VyY2VzICovLApJbmRl
eDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cJKHJldmlzaW9uIDIwNzAzNSkKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTYtMTAtMTAgIEFsZXggQ2hyaXN0ZW5z
ZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZW1vdmUgZGVhZCBuZXR3
b3JraW5nIGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE2MzI2MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcDoKKyAgICAg
ICAgKFdlYlJlc291cmNlTG9hZFNjaGVkdWxlcjo6c2NoZWR1bGVMb2FkKToKKwogMjAxNi0xMC0w
NiAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmll
d2VkIGJ1aWxkIGZpeCB3aGVuIGJ1aWxkaW5nIHdpdGggRGlyZWN0MkQuCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hl
ZHVsZXIuY3BwCShyZXZpc2lvbiAyMDcwMzUpCisrKyBTb3VyY2UvV2ViS2l0L1dlYkNvcmVTdXBw
b3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0OSw3
ICsxNDksNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFNjaGVkdWxlcjo6c2NoZWR1bGVMCiAgICAg
Ym9vbCBoYWRSZXF1ZXN0cyA9IGhvc3QtPmhhc1JlcXVlc3RzKCk7CiAgICAgaG9zdC0+c2NoZWR1
bGUocmVzb3VyY2VMb2FkZXIsIHByaW9yaXR5KTsKIAotI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBV
U0UoQ0ZORVRXT1JLKQorI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZVUkxDT05ORUNUSU9O
KQogICAgIGlmIChSZXNvdXJjZVJlcXVlc3Q6OnJlc291cmNlUHJpb3JpdGllc0VuYWJsZWQoKSAm
JiAhaXNTdXNwZW5kaW5nUGVuZGluZ1JlcXVlc3RzKCkpIHsKICAgICAgICAgLy8gU2VydmUgYWxs
IHJlcXVlc3RzIGF0IG9uY2UgdG8ga2VlcCB0aGUgcGlwZWxpbmUgZnVsbCBhdCB0aGUgbmV0d29y
ayBsYXllci4KICAgICAgICAgLy8gRklYTUU6IERvZXMgdGhpcyBjb2RlIGRvIGFueXRoaW5nIHVz
ZWZ1bCwgZ2l2ZW4gdGhhdCB3ZSBhbHNvIHNldCBtYXhSZXF1ZXN0c0luRmxpZ2h0UGVySG9zdCB0
byBlZmZlY3RpdmVseSB1bmxpbWl0ZWQgb24gdGhlc2UgcGxhdGZvcm1zPwpJbmRleDogU291cmNl
L1dlYktpdC9jZi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jZi9DaGFu
Z2VMb2cJKHJldmlzaW9uIDIwNzAzNSkKKysrIFNvdXJjZS9XZWJLaXQvY2YvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTYtMTAtMTAgIEFsZXggQ2hyaXN0ZW5z
ZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZW1vdmUgZGVhZCBuZXR3
b3JraW5nIGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE2MzI2MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3BwOgorCiAyMDE2LTA4
LTE1ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAgUmVt
b3ZlIHVudXNlZCBpbmNsdWRlcyBvZiB3dGYgaGVhZGVycwpJbmRleDogU291cmNlL1dlYktpdC9j
Zi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRDRi5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9jZi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRDRi5jcHAJ
KHJldmlzaW9uIDIwNzAzNSkKKysrIFNvdXJjZS9XZWJLaXQvY2YvV2ViQ29yZVN1cHBvcnQvV2Vi
SW5zcGVjdG9yQ2xpZW50Q0YuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw4ICsyNyw4IEBACiAv
LyBiZWZvcmUgaW5jbHVkaW5nIGFueSBvdGhlciBmaWxlcy4gRmFpbGluZyB0byBpbmNsdWRlIGNv
bmZpZy5oIHdpbGwgbGVhdmUKIC8vIFVTRV9DRiB1bmRlZmluZWQsIGNhdXNpbmcgYnVpbGQgZmFp
bHVyZXMgaW4gdGhpcwogLy8gZmlsZS4gQnV0IE1hYyBkb2Vzbid0IGhhdmUgYSBjb25maWcuaCBm
b3IgV2ViS2l0LCBzbyB3ZSBjYW4ndCBpbmNsdWRlIHRoZQotLy8gV2luZG93cyBvbmUgaGVyZS4g
Rm9yIG5vdyB3ZSBjYW4ganVzdCBkZWZpbmUgVVNFX0NGIGFuZAotLy8gVVNFX0NGTkVUV09SSyBt
YW51YWxseSwgYnV0IHdlIG5lZWQgYSBiZXR0ZXIgbG9uZy10ZXJtIHNvbHV0aW9uLgorLy8gV2lu
ZG93cyBvbmUgaGVyZS4gRm9yIG5vdyB3ZSBjYW4ganVzdCBkZWZpbmUgVVNFX0NGIG1hbnVhbGx5
LAorLy8gYnV0IHdlIG5lZWQgYSBiZXR0ZXIgbG9uZy10ZXJtIHNvbHV0aW9uLgogI2lmbmRlZiBV
U0VfQ0YKICNkZWZpbmUgVVNFX0NGIDEKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9tYWMv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2
aXNpb24gMjA3MDM1KQorKysgU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTYtMTAtMTAgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hy
aXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZW1vdmUgZGVhZCBuZXR3b3JraW5nIGNv
ZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzI2
MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTWlz
Yy9XZWJEb3dubG9hZC5tbToKKyAgICAgICAgKC1bV2ViRG93bmxvYWQgX2luaXRXaXRoTG9hZGlu
Z0NGVVJMQ29ubmVjdGlvbjpyZXF1ZXN0OnJlc3BvbnNlOmRlbGVnYXRlOnByb3h5Ol0pOiBEZWxl
dGVkLgorICAgICAgICAqIE1pc2MvV2ViRG93bmxvYWRJbnRlcm5hbC5oOgorICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tOgorICAgICAgICAoV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZCk6CisgICAgICAg
ICogV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbToKKyAgICAgICAgKCtbV2ViUHJlZmVyZW5jZXMg
X3NldEN1cnJlbnROZXR3b3JrTG9hZGVyU2Vzc2lvbkNvb2tpZUFjY2VwdFBvbGljeTpdKToKKyAg
ICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgICgtW1dlYlZpZXcgc2NoZWR1bGVJ
blJ1bkxvb3A6Zm9yTW9kZTpdKToKKyAgICAgICAgKC1bV2ViVmlldyB1bnNjaGVkdWxlRnJvbVJ1
bkxvb3A6Zm9yTW9kZTpdKToKKwogMjAxNi0xMC0xMCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBs
ZS5jb20+CiAKICAgICAgICAgTW92ZSBOb3RpZmljYXRpb25DZW50ZXIgZnJvbSBsZWdhY3kgdG8g
bmV3IERPTSBleGNlcHRpb25zCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYkRvd25s
b2FkLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViRG93bmxvYWQu
bW0JKHJldmlzaW9uIDIwNzAzNSkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViRG93bmxv
YWQubW0JKHdvcmtpbmcgY29weSkKQEAgLTQwLDExICs0MCw2IEBACiAKICNpbXBvcnQgIldlYlR5
cGVzSW50ZXJuYWwuaCIKIAotI2lmIFVTRShDRk5FVFdPUkspCi0jaW1wb3J0IDxDRk5ldHdvcmsv
Q0ZOZXR3b3JrLmg+Ci0jaW1wb3J0IDxDRk5ldHdvcmsvQ0ZVUkxDb25uZWN0aW9uLmg+Ci0jZW5k
aWYKLQogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIEBjbGFzcyBOU1VSTENvbm5lY3Rpb25E
ZWxlZ2F0ZVByb3h5OwpAQCAtNjEsMTQgKzU2LDYgQEAgLSAoaWQpX2luaXRXaXRoUmVxdWVzdDoo
TlNVUkxSZXF1ZXN0ICopcgogICAgICAgICAgICAgICBkZWxlZ2F0ZTooaWQpZGVsZWdhdGUKICAg
ICAgICAgICAgICBkaXJlY3Rvcnk6KE5TU3RyaW5nICopZGlyZWN0b3J5OwogCi0jaWYgVVNFKENG
TkVUV09SSykKLS0gKGlkKV9pbml0V2l0aExvYWRpbmdDRlVSTENvbm5lY3Rpb246KENGVVJMQ29u
bmVjdGlvblJlZiljb25uZWN0aW9uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1
ZXN0OihDRlVSTFJlcXVlc3RSZWYpcmVxdWVzdAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZXNwb25zZTooQ0ZVUkxSZXNwb25zZVJlZilyZXNwb25zZQotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBkZWxlZ2F0ZTooaWQpZGVsZWdhdGUKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcHJveHk6KE5TVVJMQ29ubmVjdGlvbkRlbGVnYXRlUHJveHkgKilwcm94eTsKLSNl
bmRpZgotCiBAZW5kCiAKIEBpbnRlcmZhY2UgV2ViRG93bmxvYWRJbnRlcm5hbCA6IE5TT2JqZWN0
IDxOU1VSTERvd25sb2FkRGVsZWdhdGU+CkBAIC0yMzEsMTggKzIxOCw2IEBAIC0gKGlkKV9pbml0
V2l0aExvYWRpbmdDb25uZWN0aW9uOihOU1VSTEMKICAgICByZXR1cm4gW3N1cGVyIF9pbml0V2l0
aExvYWRpbmdDb25uZWN0aW9uOmNvbm5lY3Rpb24gcmVxdWVzdDpyZXF1ZXN0IHJlc3BvbnNlOnJl
c3BvbnNlIGRlbGVnYXRlOl93ZWJJbnRlcm5hbCBwcm94eTpwcm94eV07CiB9CiAKLSNpZiBVU0Uo
Q0ZORVRXT1JLKQotLSAoaWQpX2luaXRXaXRoTG9hZGluZ0NGVVJMQ29ubmVjdGlvbjooQ0ZVUkxD
b25uZWN0aW9uUmVmKWNvbm5lY3Rpb24KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl
cXVlc3Q6KENGVVJMUmVxdWVzdFJlZilyZXF1ZXN0Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJlc3BvbnNlOihDRlVSTFJlc3BvbnNlUmVmKXJlc3BvbnNlCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGRlbGVnYXRlOihpZClkZWxlZ2F0ZQotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBwcm94eTooTlNVUkxDb25uZWN0aW9uRGVsZWdhdGVQcm94eSAqKXByb3h5Ci17
Ci0gICAgW3NlbGYgX3NldFJlYWxEZWxlZ2F0ZTpkZWxlZ2F0ZV07Ci0gICAgcmV0dXJuIFtzdXBl
ciBfaW5pdFdpdGhMb2FkaW5nQ0ZVUkxDb25uZWN0aW9uOmNvbm5lY3Rpb24gcmVxdWVzdDpyZXF1
ZXN0IHJlc3BvbnNlOnJlc3BvbnNlIGRlbGVnYXRlOl93ZWJJbnRlcm5hbCBwcm94eTpwcm94eV07
Ci19Ci0jZW5kaWYKLQogLSAoaWQpX2luaXRXaXRoUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVx
dWVzdAogICAgICAgICAgICAgICBkZWxlZ2F0ZTooaWQpZGVsZWdhdGUKICAgICAgICAgICAgICBk
aXJlY3Rvcnk6KE5TU3RyaW5nICopZGlyZWN0b3J5CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9N
aXNjL1dlYkRvd25sb2FkSW50ZXJuYWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21h
Yy9NaXNjL1dlYkRvd25sb2FkSW50ZXJuYWwuaAkocmV2aXNpb24gMjA3MDM1KQorKysgU291cmNl
L1dlYktpdC9tYWMvTWlzYy9XZWJEb3dubG9hZEludGVybmFsLmgJKHdvcmtpbmcgY29weSkKQEAg
LTI3LDEwICsyNyw2IEBACiAqLwogIAogI2ltcG9ydCA8V2ViS2l0TGVnYWN5L1dlYkRvd25sb2Fk
Lmg+Ci0KLSNpZiBVU0UoQ0ZORVRXT1JLKQotI2ltcG9ydCA8Q0ZOZXR3b3JrL0NGVVJMQ29ubmVj
dGlvbi5oPgotI2VuZGlmCiAgCiBAaW50ZXJmYWNlIFdlYkRvd25sb2FkIChXZWJEb3dubG9hZENy
ZWF0aW9uKQogKyhpZClfZG93bmxvYWRXaXRoTG9hZGluZ0Nvbm5lY3Rpb246KE5TVVJMQ29ubmVj
dGlvbiAqKWNvbm5lY3Rpb24KQEAgLTQzLDEyICszOSw0IEBAIEBpbnRlcmZhY2UgV2ViRG93bmxv
YWQgKFdlYkRvd25sb2FkQ3JlYXQKICAgICAgICAgICAgICAgICAgZGVsZWdhdGU6KGlkKWRlbGVn
YXRlCiAgICAgICAgICAgICAgICAgZGlyZWN0b3J5OihOU1N0cmluZyAqKWRpcmVjdG9yeTsKIAot
I2lmIFVTRShDRk5FVFdPUkspCi0rIChpZClfZG93bmxvYWRXaXRoTG9hZGluZ0NGVVJMQ29ubmVj
dGlvbjooQ0ZVUkxDb25uZWN0aW9uUmVmKWNvbm5lY3Rpb24KLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByZXF1ZXN0OihDRlVSTFJlcXVlc3RSZWYpcmVxdWVzdAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2U6KENGVVJMUmVzcG9uc2VSZWYpcmVzcG9u
c2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGVnYXRlOihpZClkZWxlZ2F0
ZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJveHk6KGlkKXByb3h5Owot
I2VuZGlmCi0KIEBlbmQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCShyZXZpc2lvbiAyMDcwMzUpCisr
KyBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5t
bQkod29ya2luZyBjb3B5KQpAQCAtMzA0LDEzICszMDQsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVy
Q2xpZW50Ojpjb252ZXJ0TWFpblJlCiAKICAgICBSZXNvdXJjZUhhbmRsZSogaGFuZGxlID0gbWFp
blJlc291cmNlTG9hZGVyLT5oYW5kbGUoKTsKIAotI2lmIFVTRShDRk5FVFdPUkspCi0gICAgQVNT
RVJUKFtXZWJEb3dubG9hZCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF9kb3dubG9hZFdp
dGhMb2FkaW5nQ0ZVUkxDb25uZWN0aW9uOnJlcXVlc3Q6cmVzcG9uc2U6ZGVsZWdhdGU6cHJveHk6
KV0pOwotICAgIGF1dG8gY29ubmVjdGlvbiA9IGhhbmRsZS0+cmVsZWFzZUNvbm5lY3Rpb25Gb3JE
b3dubG9hZCgpOwotICAgIFtXZWJEb3dubG9hZCBfZG93bmxvYWRXaXRoTG9hZGluZ0NGVVJMQ29u
bmVjdGlvbjpjb25uZWN0aW9uLmdldCgpIHJlcXVlc3Q6cmVxdWVzdC5jZlVSTFJlcXVlc3QoVXBk
YXRlSFRUUEJvZHkpIHJlc3BvbnNlOnJlc3BvbnNlLmNmVVJMUmVzcG9uc2UoKSBkZWxlZ2F0ZTpb
d2ViVmlldyBkb3dubG9hZERlbGVnYXRlXSBwcm94eTpuaWxdOwotI2Vsc2UKICAgICBbV2ViRG93
bmxvYWQgX2Rvd25sb2FkV2l0aExvYWRpbmdDb25uZWN0aW9uOmhhbmRsZS0+Y29ubmVjdGlvbigp
IHJlcXVlc3Q6cmVxdWVzdC5uc1VSTFJlcXVlc3QoVXBkYXRlSFRUUEJvZHkpIHJlc3BvbnNlOnJl
c3BvbnNlLm5zVVJMUmVzcG9uc2UoKSBkZWxlZ2F0ZTpbd2ViVmlldyBkb3dubG9hZERlbGVnYXRl
XSBwcm94eTpuaWxdOwotI2VuZGlmCiB9CiAKIGJvb2wgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRp
c3BhdGNoRGlkTG9hZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlKERvY3VtZW50TG9hZGVyKiBsb2Fk
ZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYgcmVzcG9uc2UsIGludCBsZW5ndGgpCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3
L1dlYlByZWZlcmVuY2VzLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZp
ZXcvV2ViUHJlZmVyZW5jZXMubW0JKHJldmlzaW9uIDIwNzAzNSkKKysrIFNvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW0JKHdvcmtpbmcgY29weSkKQEAgLTE4MDAsNyAr
MTgwMCw3IEBAICsgKHZvaWQpX2NsZWFyTmV0d29ya0xvYWRlclNlc3Npb24KICsgKHZvaWQpX3Nl
dEN1cnJlbnROZXR3b3JrTG9hZGVyU2Vzc2lvbkNvb2tpZUFjY2VwdFBvbGljeTooTlNIVFRQQ29v
a2llQWNjZXB0UG9saWN5KXBvbGljeQogewogICAgIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9y
YWdlUmVmPiBjb29raWVTdG9yYWdlID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3Rv
cmFnZVNlc3Npb24oKS5jb29raWVTdG9yYWdlKCk7Ci0gICAgQVNTRVJUKGNvb2tpZVN0b3JhZ2Up
OyAvLyBXaWxsIGZhaWwgd2hlbiBidWlsZGluZyB3aXRob3V0IFVTRShDRk5FVFdPUkspIGFuZCBO
ZXR3b3JrU3RvcmFnZVNlc3Npb246OnN3aXRjaFRvTmV3VGVzdGluZ1Nlc3Npb24oKSB3YXMgbm90
IGNhbGxlZCBiZWZvcmVoYW5kLgorICAgIEFTU0VSVChjb29raWVTdG9yYWdlKTsgLy8gV2lsbCBm
YWlsIHdoZW4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzd2l0Y2hUb05ld1Rlc3RpbmdTZXNzaW9u
KCkgd2FzIG5vdCBjYWxsZWQgYmVmb3JlaGFuZC4KICAgICBDRkhUVFBDb29raWVTdG9yYWdlU2V0
Q29va2llQWNjZXB0UG9saWN5KGNvb2tpZVN0b3JhZ2UuZ2V0KCksIHBvbGljeSk7CiB9CiAKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHJldmlzaW9uIDIwNzAzNSkKKysr
IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAt
Njc3OSwyNCArNjc3OSwxNCBAQCAtIChpZCljYW5kaWRhdGVMaXN0CiAKIC0gKHZvaWQpc2NoZWR1
bGVJblJ1bkxvb3A6KE5TUnVuTG9vcCAqKXJ1bkxvb3AgZm9yTW9kZTooTlNTdHJpbmcgKiltb2Rl
CiB7Ci0jaWYgVVNFKENGTkVUV09SSykKLSAgICBDRlJ1bkxvb3BSZWYgc2NoZWR1bGVQYWlyUnVu
TG9vcCA9IFtydW5Mb29wIGdldENGUnVuTG9vcF07Ci0jZWxzZQotICAgIE5TUnVuTG9vcCAqc2No
ZWR1bGVQYWlyUnVuTG9vcCA9IHJ1bkxvb3A7Ci0jZW5kaWYKICAgICBpZiAocnVuTG9vcCAmJiBt
b2RlKQotICAgICAgICBjb3JlKHNlbGYpLT5hZGRTY2hlZHVsZVBhaXIoU2NoZWR1bGVQYWlyOjpj
cmVhdGUoc2NoZWR1bGVQYWlyUnVuTG9vcCwgKENGU3RyaW5nUmVmKW1vZGUpKTsKKyAgICAgICAg
Y29yZShzZWxmKS0+YWRkU2NoZWR1bGVQYWlyKFNjaGVkdWxlUGFpcjo6Y3JlYXRlKHJ1bkxvb3As
IChDRlN0cmluZ1JlZiltb2RlKSk7CiB9CiAKIC0gKHZvaWQpdW5zY2hlZHVsZUZyb21SdW5Mb29w
OihOU1J1bkxvb3AgKilydW5Mb29wIGZvck1vZGU6KE5TU3RyaW5nICopbW9kZQogewotI2lmIFVT
RShDRk5FVFdPUkspCi0gICAgQ0ZSdW5Mb29wUmVmIHNjaGVkdWxlUGFpclJ1bkxvb3AgPSBbcnVu
TG9vcCBnZXRDRlJ1bkxvb3BdOwotI2Vsc2UKLSAgICBOU1J1bkxvb3AgKnNjaGVkdWxlUGFpclJ1
bkxvb3AgPSBydW5Mb29wOwotI2VuZGlmCiAgICAgaWYgKHJ1bkxvb3AgJiYgbW9kZSkKLSAgICAg
ICAgY29yZShzZWxmKS0+cmVtb3ZlU2NoZWR1bGVQYWlyKFNjaGVkdWxlUGFpcjo6Y3JlYXRlKHNj
aGVkdWxlUGFpclJ1bkxvb3AsIChDRlN0cmluZ1JlZiltb2RlKSk7CisgICAgICAgIGNvcmUoc2Vs
ZiktPnJlbW92ZVNjaGVkdWxlUGFpcihTY2hlZHVsZVBhaXI6OmNyZWF0ZShydW5Mb29wLCAoQ0ZT
dHJpbmdSZWYpbW9kZSkpOwogfQogCiBzdGF0aWMgQk9PTCBmaW5kU3RyaW5nKE5TVmlldyA8V2Vi
RG9jdW1lbnRTZWFyY2hpbmc+ICpzZWFyY2hWaWV3LCBOU1N0cmluZyAqc3RyaW5nLCBXZWJGaW5k
T3B0aW9ucyBvcHRpb25zKQpJbmRleDogU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwkocmV2aXNpb24gMjA3MDM1KQor
KysgU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MzYgQEAKKzIwMTYtMTAtMTAgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0
Lm9yZz4KKworICAgICAgICBSZW1vdmUgZGVhZCBuZXR3b3JraW5nIGNvZGUKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzI2MworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogRGVmYXVsdERvd25sb2FkRGVs
ZWdhdGUuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5j
cHA6CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6c2F2ZVBsYXRmb3JtRGF0YVRvQ2Fj
aGVkRnJhbWUpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTmV0d29ya2luZ0Nv
bnRleHQuY3BwOgorICAgICAgICAoV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlUHJp
dmF0ZUJyb3dzaW5nU2Vzc2lvbik6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVO
ZXR3b3JraW5nQ29udGV4dC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3Jt
U3RyYXRlZ2llcy5jcHA6CisgICAgICAgICogV2ViRG93bmxvYWQuaDoKKyAgICAgICAgKiBXZWJF
cnJvci5jcHA6CisgICAgICAgIChXZWJFcnJvcjo6bG9jYWxpemVkRGVzY3JpcHRpb24pOgorICAg
ICAgICAoV2ViRXJyb3I6OnNzbFBlZXJDZXJ0aWZpY2F0ZSk6CisgICAgICAgICogV2ViRXJyb3Iu
aDoKKyAgICAgICAgKiBXZWJNdXRhYmxlVVJMUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJNdXRh
YmxlVVJMUmVxdWVzdDo6bXV0YWJsZUNvcHkpOgorICAgICAgICAqIFdlYlVSTEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlLmNwcDoKKyAgICAgICAgKFdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
Ojppbml0V2l0aFByb3RlY3Rpb25TcGFjZSk6CisgICAgICAgIChXZWJVUkxBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZTo6aW5pdFdpdGhBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6CisgICAgICAgICog
V2ViVVJMUmVzcG9uc2UuY3BwOgorICAgICAgICAoV2ViVVJMUmVzcG9uc2U6OnNzbFBlZXJDZXJ0
aWZpY2F0ZSk6CisgICAgICAgICogV2ViVVJMUmVzcG9uc2UuaDoKKyAgICAgICAgKiBXZWJWaWV3
LmNwcDoKKyAgICAgICAgKFdlYlZpZXc6OnNldENhY2hlTW9kZWwpOgorICAgICAgICAoV2ViVmll
dzo6Y2FuSGFuZGxlUmVxdWVzdCk6CisgICAgICAgIChXZWJWaWV3Ojpub3RpZnlQcmVmZXJlbmNl
c0NoYW5nZWQpOgorICAgICAgICAodXBkYXRlU2hhcmVkU2V0dGluZ3NGcm9tUHJlZmVyZW5jZXNJ
Zk5lZWRlZCk6CisKIDIwMTYtMTAtMDkgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBs
ZS5jb20+CiAKICAgICAgICAgU3VwcG9ydCBJbnB1dEV2ZW50LmlucHV0VHlwZSBmb3IgdGhlIG5l
dyBJbnB1dEV2ZW50IHNwZWMKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL0RlZmF1bHREb3dubG9h
ZERlbGVnYXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vRGVmYXVsdERvd25s
b2FkRGVsZWdhdGUuaAkocmV2aXNpb24gMjA3MDM1KQorKysgU291cmNlL1dlYktpdC93aW4vRGVm
YXVsdERvd25sb2FkRGVsZWdhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNyBAQAog
I2luY2x1ZGUgIldlYktpdC5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAKLSNpZiBVU0Uo
Q0ZORVRXT1JLKQorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAjaW5jbHVkZSA8Q0ZOZXR3b3Jr
L0NGVVJMRG93bmxvYWRQcml2Lmg+CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYktpdC93aW4v
V2ViRG93bmxvYWQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJEb3dubG9h
ZC5oCShyZXZpc2lvbiAyMDcwMzUpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJEb3dubG9hZC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yMywxNSArMjMsMTQgQEAKICAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICov
CiAKLSNpZm5kZWYgV2ViRG93bmxvYWRfaAotI2RlZmluZSBXZWJEb3dubG9hZF9oCisjcHJhZ21h
IG9uY2UKIAogI2luY2x1ZGUgIldlYktpdC5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ09NUHRyLmg+
CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgogCi0jaWYgVVNFKENGTkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogI2lu
Y2x1ZGUgPENGTmV0d29yay9DRlVSTERvd25sb2FkUHJpdi5oPgogI2VsaWYgVVNFKENVUkwpCiAj
aW5jbHVkZSA8V2ViQ29yZS9DdXJsRG93bmxvYWQuaD4KQEAgLTg0LDcgKzgzLDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBjb250aW51ZVdpdGhvdXRD
cmVkZW50aWFsRm9yQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoX0luX29wdF8gSVdlYlVSTEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlKik7CiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIHVzZUNyZWRlbnRpYWwoX0luX29wdF8gSVdlYlVSTENyZWRlbnRpYWwqLCBfSW5fb3B0XyBJ
V2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UqKTsKIAotI2lmIFVTRShDRk5FVFdPUkspCisj
aWYgVVNFKENGVVJMQ09OTkVDVElPTikKICAgICAvLyBDRlVSTERvd25sb2FkIENhbGxiYWNrcwog
ICAgIHZvaWQgZGlkU3RhcnQoKTsKICAgICBDRlVSTFJlcXVlc3RSZWYgd2lsbFNlbmRSZXF1ZXN0
KENGVVJMUmVxdWVzdFJlZiwgQ0ZVUkxSZXNwb25zZVJlZik7CkBAIC0xMDksNyArMTA4LDcgQEAg
cHJvdGVjdGVkOgogCiAgICAgV1RGOjpTdHJpbmcgbV9kZXN0aW5hdGlvbjsKICAgICBXVEY6OlN0
cmluZyBtX2J1bmRsZVBhdGg7Ci0jaWYgVVNFKENGTkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxDT05O
RUNUSU9OKQogICAgIFJldGFpblB0cjxDRlVSTERvd25sb2FkUmVmPiBtX2Rvd25sb2FkOwogI2Vs
aWYgVVNFKENVUkwpCiAgICAgUmVmUHRyPFdlYkNvcmU6OkN1cmxEb3dubG9hZD4gbV9kb3dubG9h
ZDsKQEAgLTEyMyw2ICsxMjIsMyBAQCBwcm90ZWN0ZWQ6CiAgICAgaW50IG1fcmVjZWl2ZWQ7CiAj
ZW5kaWYKIH07Ci0KLQotI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJFcnJvci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViRXJyb3IuY3BwCShyZXZpc2lv
biAyMDcwMzUpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJFcnJvci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTMzLDcgKzMzLDcgQEAKICNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ29yZUdyYXBoaWNz
Lmg+CiAjZW5kaWYKIAotI2lmIFVTRShDRk5FVFdPUkspCisjaWYgVVNFKENGVVJMQ09OTkVDVElP
TikKICNpbmNsdWRlIDxXZWJLaXRTeXN0ZW1JbnRlcmZhY2UvV2ViS2l0U3lzdGVtSW50ZXJmYWNl
Lmg+CiAjZW5kaWYKIApAQCAtMTM1LDcgKzEzNSw3IEBAIEhSRVNVTFQgV2ViRXJyb3I6OmxvY2Fs
aXplZERlc2NyaXB0aW9uKF8KIAogICAgICpyZXN1bHQgPSBCU3RyaW5nKG1fZXJyb3IubG9jYWxp
emVkRGVzY3JpcHRpb24oKSkucmVsZWFzZSgpOwogCi0jaWYgVVNFKENGTkVUV09SSykKKyNpZiBV
U0UoQ0ZVUkxDT05ORUNUSU9OKQogICAgIGlmICghKnJlc3VsdCkgewogICAgICAgICBpZiAoaW50
IGNvZGUgPSBtX2Vycm9yLmVycm9yQ29kZSgpKQogICAgICAgICAgICAgKnJlc3VsdCA9IEJTdHJp
bmcod2tDRk5ldHdvcmtFcnJvckdldExvY2FsaXplZERlc2NyaXB0aW9uKGNvZGUpKS5yZWxlYXNl
KCk7CkBAIC0yMTksNyArMjE5LDcgQEAgSFJFU1VMVCBXZWJFcnJvcjo6c3NsUGVlckNlcnRpZmlj
YXRlKF9PdQogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwogICAgICpyZXN1bHQgPSAwOwogCi0j
aWYgVVNFKENGTkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogICAgIGlmICghbV9j
ZkVycm9yVXNlckluZm9EaWN0KSB7CiAgICAgICAgIC8vIGNvcHkgdXNlcmluZm8gZnJvbSBDRkVy
cm9yUmVmCiAgICAgICAgIENGRXJyb3JSZWYgY2ZFcnJvciA9IG1fZXJyb3I7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L3dpbi9XZWJFcnJvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2lu
L1dlYkVycm9yLmgJKHJldmlzaW9uIDIwNzAzNSkKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYkVy
cm9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDggKzIzLDcgQEAKICAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAog
ICovCiAKLSNpZm5kZWYgV2ViRXJyb3JfaAotI2RlZmluZSBXZWJFcnJvcl9oCisjcHJhZ21hIG9u
Y2UKIAogI2luY2x1ZGUgIldlYktpdC5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ09NUHRyLmg+CkBA
IC02NiwxMCArNjUsOCBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFVMT05HIG1fcmVmQ291bnQg
eyAwIH07CiAgICAgQ09NUHRyPElQcm9wZXJ0eUJhZz4gbV91c2VySW5mbzsKLSNpZiBVU0UoQ0ZO
RVRXT1JLKQorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAgICAgUmV0YWluUHRyPENGRGljdGlv
bmFyeVJlZj4gbV9jZkVycm9yVXNlckluZm9EaWN0OwogI2VuZGlmCiAgICAgV2ViQ29yZTo6UmVz
b3VyY2VFcnJvciBtX2Vycm9yOwogfTsKLQotI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dp
bi9XZWJNdXRhYmxlVVJMUmVxdWVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93
aW4vV2ViTXV0YWJsZVVSTFJlcXVlc3QuY3BwCShyZXZpc2lvbiAyMDcwMzUpCisrKyBTb3VyY2Uv
V2ViS2l0L3dpbi9XZWJNdXRhYmxlVVJMUmVxdWVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQw
LDcgKzQwLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0NlcnRpZmljYXRlQ0ZXaW4uaD4KICNlbmRp
ZgogCi0jaWYgVVNFKENGTkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogI2luY2x1
ZGUgPENGTmV0d29yay9DRlVSTFJlcXVlc3RQcml2Lmg+CiAjZW5kaWYKIApAQCAtMzgyLDcgKzM4
Miw3IEBAIEhSRVNVTFQgV2ViTXV0YWJsZVVSTFJlcXVlc3Q6Om11dGFibGVDb3AKICAgICBpZiAo
IXJlc3VsdCkKICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKIAotI2lmIFVTRShDRk5FVFdPUksp
CisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKICAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlVVJMUmVx
dWVzdFJlZj4gbXV0YWJsZVJlcXVlc3QgPSBhZG9wdENGKENGVVJMUmVxdWVzdENyZWF0ZU11dGFi
bGVDb3B5KGtDRkFsbG9jYXRvckRlZmF1bHQsIG1fcmVxdWVzdC5jZlVSTFJlcXVlc3QoVXBkYXRl
SFRUUEJvZHkpKSk7CiAgICAgKnJlc3VsdCA9IGNyZWF0ZUluc3RhbmNlKFJlc291cmNlUmVxdWVz
dChtdXRhYmxlUmVxdWVzdC5nZXQoKSkpOwogICAgIHJldHVybiBTX09LOwpJbmRleDogU291cmNl
L1dlYktpdC93aW4vV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmNwcAko
cmV2aXNpb24gMjA3MDM1KQorKysgU291cmNlL1dlYktpdC93aW4vV2ViVVJMQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDEsNyArMTQxLDcgQEAgSFJFU1VM
VCBXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTo6aQogCiAgICAgLy8gRklYTUU6IEFmdGVy
IHdlIGNoYW5nZSBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSB0byB1c2UgIlJlc291cmNlSGFuZGxl
IiBhcyB0aGUgYWJzdHJhY3QgIlNlbmRlciIgb3IgIlNvdXJjZSBvZiB0aGlzIEF1dGggQ2hhbGxl
bmdlIiwgdGhlbiB3ZSdsbAogICAgIC8vIGNvbnN0cnVjdCB0aGUgQXV0aGVudGljYXRpb25DaGFs
bGVuZ2Ugd2l0aCB0aGF0IGFzIG9idGFpbmVkIGZyb20gdGhlIHdlYlNlbmRlcgotI2lmIFVTRShD
Rk5FVFdPUkspCisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKICAgICBtX2F1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlID0gQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uod2ViU3BhY2UtPnByb3RlY3Rpb25T
cGFjZSgpLCB3ZWJDcmVkZW50aWFsLT5jcmVkZW50aWFsKCksCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBwcmV2aW91c0ZhaWx1cmVDb3VudCwgd2ViUmVzcG9uc2UtPnJlc291
cmNlUmVzcG9uc2UoKSwgd2ViRXJyb3ItPnJlc291cmNlRXJyb3IoKSk7CiAjZW5kaWYKQEAgLTE2
Miw3ICsxNjIsNyBAQCBIUkVTVUxUIFdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjppCiAg
ICAgaWYgKCF3ZWJTZW5kZXIpCiAgICAgICAgIHJldHVybiBFX05PSU5URVJGQUNFOwogCi0jaWYg
VVNFKENGTkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogICAgIG1fYXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UgPSBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSh3ZWJDaGFsbGVuZ2UtPmF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCkuY2ZVUkxBdXRoQ2hhbGxlbmdlUmVmKCksIHdlYlNlbmRl
ci0+YXV0aGVudGljYXRpb25DbGllbnQoKSk7CiAKICAgICByZXR1cm4gU19PSzsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvd2luL1dlYlVSTFJlc3BvbnNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L3dpbi9XZWJVUkxSZXNwb25zZS5jcHAJKHJldmlzaW9uIDIwNzAzNSkKKysrIFNvdXJj
ZS9XZWJLaXQvd2luL1dlYlVSTFJlc3BvbnNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyAr
MzUsNyBAQAogI2luY2x1ZGUgPENvcmVHcmFwaGljcy9Db3JlR3JhcGhpY3MuaD4KICNlbmRpZgog
Ci0jaWYgVVNFKENGTkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogI2luY2x1ZGUg
PFdlYktpdFN5c3RlbUludGVyZmFjZS9XZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaD4KICNlbmRpZgog
CkBAIC00MDYsNyArNDA2LDcgQEAgSFJFU1VMVCBXZWJVUkxSZXNwb25zZTo6c3NsUGVlckNlcnRp
ZmljYQogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwogICAgICpyZXN1bHQgPSAwOwogCi0jaWYg
VVNFKENGTkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogICAgIENGRGljdGlvbmFy
eVJlZiBkaWN0ID0gY2VydGlmaWNhdGVEaWN0aW9uYXJ5KCk7CiAgICAgaWYgKCFkaWN0KQogICAg
ICAgICByZXR1cm4gRV9GQUlMOwpAQCAtNDc1LDcgKzQ3NSw3IEBAIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIFdlYlVSTFJlc3BvbnNlOjoKICAgICByZXR1cm4gbV9yZXNwb25zZTsKIH0KIAotI2lm
IFVTRShDRk5FVFdPUkspCisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKIENGRGljdGlvbmFyeVJl
ZiBXZWJVUkxSZXNwb25zZTo6Y2VydGlmaWNhdGVEaWN0aW9uYXJ5KCkgY29uc3QKIHsKICAgICBp
ZiAobV9TU0xDZXJ0aWZpY2F0ZUluZm8pCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJVUkxS
ZXNwb25zZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYlVSTFJlc3BvbnNl
LmgJKHJldmlzaW9uIDIwNzAzNSkKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYlVSTFJlc3BvbnNl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDggKzIzLDcgQEAKICAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICov
CiAKLSNpZm5kZWYgV2ViVVJMUmVzcG9uc2VfSAotI2RlZmluZSBXZWJVUkxSZXNwb25zZV9ICisj
cHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIldlYktpdC5oIgogI2luY2x1ZGUgPFdlYkNvcmUvUmVz
b3VyY2VSZXNwb25zZS5oPgpAQCAtNjYsNyArNjUsNyBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAg
ICAgSFJFU1VMVCBzdWdnZXN0ZWRGaWxlRXh0ZW5zaW9uKEJTVFIqIHJlc3VsdCk7CiAKLSNpZiBV
U0UoQ0ZORVRXT1JLKQorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAgICAgQ0ZEaWN0aW9uYXJ5
UmVmIGNlcnRpZmljYXRlRGljdGlvbmFyeSgpIGNvbnN0OwogI2VuZGlmCiAKQEAgLTc0LDkgKzcz
LDcgQEAgcHJvdGVjdGVkOgogICAgIFVMT05HIG1fcmVmQ291bnQgeyAwIH07CiAgICAgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSBtX3Jlc3BvbnNlOwogCi0jaWYgVVNFKENGTkVUV09SSykKKyNp
ZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogICAgIG11dGFibGUgUmV0YWluUHRyPENGRGljdGlvbmFy
eVJlZj4gbV9TU0xDZXJ0aWZpY2F0ZUluZm87ICAgIC8vIHRoaXMgZW5zdXJlcyBjZXJ0aWZpY2F0
ZSBjb250ZXh0cyBhcmUgdmFsaWQgZm9yIHRoZSBsaWZldGltZSBvZiB0aGlzIFdlYlVSTFJlc3Bv
bnNlLgogI2VuZGlmCiB9OwotCi0jZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYlZp
ZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCShyZXZp
c2lvbiAyMDcwMzUpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTc4LDcgKzE3OCw3IEBACiAjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ29yZUZv
dW5kYXRpb24uaD4KICNlbmRpZgogCi0jaWYgVVNFKENGTkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxD
T05ORUNUSU9OKQogI2luY2x1ZGUgPENGTmV0d29yay9DRlVSTENhY2hlUHJpdi5oPgogI2luY2x1
ZGUgPENGTmV0d29yay9DRlVSTFByb3RvY29sUHJpdi5oPgogI2luY2x1ZGUgPFdlYktpdFN5c3Rl
bUludGVyZmFjZS9XZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaD4KQEAgLTQ5Nyw3ICs0OTcsNyBAQCB2
b2lkIFdlYlZpZXc6OnNldENhY2hlTW9kZWwoV2ViQ2FjaGVNb2RlCiAKICAgICBTdHJpbmcgY2Fj
aGVEaXJlY3Rvcnk7CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQorI2lmIFVTRShDRlVSTENPTk5FQ1RJ
T04pCiAgICAgUmV0YWluUHRyPENGVVJMQ2FjaGVSZWY+IGNmdXJsQ2FjaGUgPSBhZG9wdENGKENG
VVJMQ2FjaGVDb3B5U2hhcmVkVVJMQ2FjaGUoKSk7CiAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVm
PiBjZnVybENhY2hlRGlyZWN0b3J5ID0gYWRvcHRDRih3a0NvcHlGb3VuZGF0aW9uQ2FjaGVEaXJl
Y3RvcnkoMCkpOwogICAgIGlmICghY2Z1cmxDYWNoZURpcmVjdG9yeSkgewpAQCAtNTUxLDcgKzU1
MSw3IEBAIHZvaWQgV2ViVmlldzo6c2V0Q2FjaGVNb2RlbChXZWJDYWNoZU1vZGUKICAgICAgICAg
Ly8gTWVtb3J5IGNhY2hlIGNhcGFjaXR5IChpbiBieXRlcykKICAgICAgICAgY2FjaGVNZW1vcnlD
YXBhY2l0eSA9IDA7CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQorI2lmIFVTRShDRlVSTENPTk5FQ1RJ
T04pCiAgICAgICAgIC8vIEZvdW5kYXRpb24gZGlzayBjYWNoZSBjYXBhY2l0eSAoaW4gYnl0ZXMp
CiAgICAgICAgIGNhY2hlRGlza0NhcGFjaXR5ID0gQ0ZVUkxDYWNoZURpc2tDYXBhY2l0eShjZnVy
bENhY2hlLmdldCgpKTsKICNlbmRpZgpAQCAtNjc1LDcgKzY3NSw3IEBAIHZvaWQgV2ViVmlldzo6
c2V0Q2FjaGVNb2RlbChXZWJDYWNoZU1vZGUKICAgICBtZW1vcnlDYWNoZS5zZXREZWFkRGVjb2Rl
ZERhdGFEZWxldGlvbkludGVydmFsKGRlYWREZWNvZGVkRGF0YURlbGV0aW9uSW50ZXJ2YWwpOwog
ICAgIFBhZ2VDYWNoZTo6c2luZ2xldG9uKCkuc2V0TWF4U2l6ZShwYWdlQ2FjaGVTaXplKTsKIAot
I2lmIFVTRShDRk5FVFdPUkspCisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKICAgICAvLyBEb24n
dCBzaHJpbmsgYSBiaWcgZGlzayBjYWNoZSwgc2luY2UgdGhhdCB3b3VsZCBjYXVzZSBjaHVybi4K
ICAgICBjYWNoZURpc2tDYXBhY2l0eSA9IG1heChjYWNoZURpc2tDYXBhY2l0eSwgQ0ZVUkxDYWNo
ZURpc2tDYXBhY2l0eShjZnVybENhY2hlLmdldCgpKSk7CiAKQEAgLTE1NDcsNyArMTU0Nyw3IEBA
IHZvaWQgV2ViVmlldzo6Y2xvc2VXaW5kb3coKQogCiBib29sIFdlYlZpZXc6OmNhbkhhbmRsZVJl
cXVlc3QoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewotI2lmIFVT
RShDRk5FVFdPUkspCisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKICAgICAvLyBPbiB0aGUgTWFj
IHRoZXJlJ3MgYW4gYWJvdXQgVVJMIHByb3RvY29sIGltcGxlbWVudGF0aW9uIGJ1dCBXaW5kb3dz
IENGTmV0d29yayBkb2Vzbid0IGhhdmUgdGhhdC4KICAgICBpZiAocmVxdWVzdC51cmwoKS5wcm90
b2NvbElzKCJhYm91dCIpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTUyNjEsNyArNTI2MSw3
IEBAIEhSRVNVTFQgV2ViVmlldzo6bm90aWZ5UHJlZmVyZW5jZXNDaGFuZ2UKICAgICBociA9IHBy
ZWZlcmVuY2VzLT5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCZlbmFibGVkKTsKICAgICBpZiAoRkFJ
TEVEKGhyKSkKICAgICAgICAgcmV0dXJuIGhyOwotI2lmIFBMQVRGT1JNKFdJTikgfHwgVVNFKENG
TkVUV09SSykKKyNpZiBQTEFURk9STShXSU4pIHx8IFVTRShDRlVSTENPTk5FQ1RJT04pCiAgICAg
aWYgKGVuYWJsZWQpCiAgICAgICAgIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVBy
aXZhdGVCcm93c2luZ1Nlc3Npb24oKTsKICAgICBlbHNlCkBAIC01NTYwLDcgKzU1NjAsNyBAQCBI
UkVTVUxUIHVwZGF0ZVNoYXJlZFNldHRpbmdzRnJvbVByZWZlcmVuCiAgICAgaWYgKEZBSUxFRCho
cikpCiAgICAgICAgIHJldHVybiBocjsKIAotI2lmIFVTRShDRk5FVFdPUkspCisjaWYgVVNFKENG
VVJMQ09OTkVDVElPTikKICAgICBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpzZXRDb29raWVB
Y2NlcHRQb2xpY3lGb3JBbGxDb250ZXh0cyhhY2NlcHRQb2xpY3kpOwogI2VuZGlmCiAKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5jcHAJKHJldmlzaW9uIDIwNzAzNSkKKysrIFNvdXJjZS9XZWJLaXQvd2lu
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtOTc0LDcgKzk3NCw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNldFRpdGxlKGNv
bnMKIAogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6c2F2ZVBsYXRmb3JtRGF0YVRvQ2FjaGVk
RnJhbWUoQ2FjaGVkRnJhbWUqIGNhY2hlZEZyYW1lKQogewotI2lmIFVTRShDRk5FVFdPUkspCisj
aWYgVVNFKENGVVJMQ09OTkVDVElPTikKICAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZShtX3dl
YkZyYW1lKTsKICAgICBpZiAoIWNvcmVGcmFtZSkKICAgICAgICAgcmV0dXJuOwpJbmRleDogU291
cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVOZXR3b3JraW5nQ29udGV4dC5jcHAJKHJldmlzaW9uIDIwNzAzNSkKKysrIFNvdXJjZS9XZWJL
aXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9TZXR0aW5ncy5o
PgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCi0jaWYgVVNFKENGTkVUV09SSykK
KyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogI2luY2x1ZGUgPENGTmV0d29yay9DRkhUVFBDb29r
aWVzUHJpdi5oPgogI2luY2x1ZGUgPFdlYktpdFN5c3RlbUludGVyZmFjZS9XZWJLaXRTeXN0ZW1J
bnRlcmZhY2UuaD4KICNlbmRpZgpAQCAtNDcsNyArNDcsNyBAQCBzdGF0aWMgU3RyaW5nJiBpZGVu
dGlmaWVyQmFzZSgpCiAgICAgcmV0dXJuIGJhc2U7CiB9CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQor
I2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiB2b2lkIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6
OnNldENvb2tpZUFjY2VwdFBvbGljeUZvckFsbENvbnRleHRzKFdlYktpdENvb2tpZVN0b3JhZ2VB
Y2NlcHRQb2xpY3kgcG9saWN5KQogewogICAgIGlmIChSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3Rv
cmFnZVJlZj4gY29va2llU3RvcmFnZSA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0
b3JhZ2VTZXNzaW9uKCkuY29va2llU3RvcmFnZSgpKQpAQCAtNjcsNyArNjcsNyBAQCB2b2lkIFdl
YkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OnNldFByaXZhCiAKIE5ldHdvcmtTdG9yYWdlU2Vzc2lv
biYgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lv
bigpCiB7Ci0jaWYgVVNFKENGTkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKICAgICBpZiAoYXV0byBwcml2YXRlU2Vzc2lvbiA9
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oU2Vzc2lvbklEOjpsZWdhY3lQ
cml2YXRlU2Vzc2lvbklEKCkpKQpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaAkocmV2aXNp
b24gMjA3MDM1KQorKysgU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVO
ZXR3b3JraW5nQ29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMiw4ICsyMiw3IEBACiAgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KLSNp
Zm5kZWYgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dF9oCi0jZGVmaW5lIFdlYkZyYW1lTmV0d29y
a2luZ0NvbnRleHRfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lTmV0
d29ya2luZ0NvbnRleHQuaD4KIApAQCAtMzQsNyArMzMsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dChmcmFtZSkpOwogICAg
IH0KIAotI2lmIFVTRShDRk5FVFdPUkspCisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKICAgICBz
dGF0aWMgdm9pZCBzZXRDb29raWVBY2NlcHRQb2xpY3lGb3JBbGxDb250ZXh0cyhXZWJLaXRDb29r
aWVTdG9yYWdlQWNjZXB0UG9saWN5KTsKICNlbmRpZgogICAgIHN0YXRpYyB2b2lkIHNldFByaXZh
dGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uSWRlbnRpZmllckJhc2UoY29uc3QgU3RyaW5nJik7CkBA
IC01MCw1ICs0OSwzIEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBibG9j
a2VkRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JikgY29uc3Qgb3ZlcnJpZGU7
CiAgICAgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzdG9yYWdlU2Vzc2lvbigpIGNv
bnN0IG92ZXJyaWRlOwogfTsKLQotI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJD
b3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAJKHJl
dmlzaW9uIDIwNzAzNSkKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlBs
YXRmb3JtU3RyYXRlZ2llcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDcgQEAKICNp
bmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VHcm91cC5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1Db29raWVKYXIuaD4KLSNpZiBVU0UoQ0ZORVRXT1JL
KQorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAjaW5jbHVkZSA8V2ViS2l0U3lzdGVtSW50ZXJm
YWNlL1dlYktpdFN5c3RlbUludGVyZmFjZS5oPgogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9jbWFr
ZS9PcHRpb25zQXBwbGVXaW4uY21ha2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL2NtYWtlL09wdGlv
bnNBcHBsZVdpbi5jbWFrZQkocmV2aXNpb24gMjA3MDM1KQorKysgU291cmNlL2NtYWtlL09wdGlv
bnNBcHBsZVdpbi5jbWFrZQkod29ya2luZyBjb3B5KQpAQCAtMiw3ICsyLDcgQEAgaW5jbHVkZShP
cHRpb25zV2luKQogCiBzZXQoVVNFX0NHIDEpCiBzZXQoVVNFX0NBIDEpCi1zZXQoVVNFX0NGTkVU
V09SSyAxKQorc2V0KFVTRV9DRlVSTENPTk5FQ1RJT04gMSkKIHNldChVU0VfSUNVX1VOSUNPREUg
MSkKIAogIyBVbmNvbW1lbnQgdGhlIGZvbGxvd2luZyBsaW5lIHRvIHRyeSB0aGUgRGlyZWN0MkQg
YmFja2VuZC4KSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFu
Z2VMb2cJKHJldmlzaW9uIDIwNzAzNikKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDE1IEBACisyMDE2LTEwLTEwICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlz
dGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVtb3ZlIGRlYWQgbmV0d29ya2luZyBjb2Rl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjMyNjMK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIER1bXBS
ZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmg6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY29u
ZmlnLmg6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNwcDoK
KyAgICAgICAgKG1haW4pOgorCiAyMDE2LTEwLTEwICBDb21taXQgUXVldWUgIDxjb21taXQtcXVl
dWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjA2OTcy
LgpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5oCShyZXZpc2lvbiAyMDcw
MzUpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yNiwxMyArMjYsNyBAQAogICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIER1bXBS
ZW5kZXJUcmVlX2gKLSNkZWZpbmUgRHVtcFJlbmRlclRyZWVfaAotCi0vLyBGSVhNRTogUmVtb3Zl
IHRoaXMgd2hlbiBhbGwgcGxhdGZvcm1zIGFyZSB1c2luZyBjb25maWcuaAotI2lmbmRlZiBDb25m
aWdfSAotI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgotI2VuZGlmCisjcHJhZ21hIG9uY2UKIAog
I2lmIFBMQVRGT1JNKENPQ09BKQogI2luY2x1ZGUgIkR1bXBSZW5kZXJUcmVlTWFjLmgiCkBAIC00
NSw2ICszOSw3IEBACiAjZW5kaWYKIAogI2luY2x1ZGUgPHN0cmluZz4KKyNpbmNsdWRlIDx3dGYv
UGxhdGZvcm0uaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKICNpZiAhT1MoT1BFTkJTRCkK
SW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2NvbmZpZy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L0R1bXBSZW5kZXJUcmVlL2NvbmZpZy5oCShyZXZpc2lvbiAyMDcwMzUpCisrKyBUb29scy9EdW1w
UmVuZGVyVHJlZS9jb25maWcuaAkod29ya2luZyBjb3B5KQpAQCAtMTgsNyArMTgsNyBAQAogICoK
ICAqLwogCi0jZGVmaW5lIENvbmZpZ19ICisjcHJhZ21hIG9uY2UKIAogI2lmIGRlZmluZWQoSEFW
RV9DT05GSUdfSCkgJiYgSEFWRV9DT05GSUdfSCAmJiBkZWZpbmVkKEJVSUxESU5HX1dJVEhfQ01B
S0UpCiAjaW5jbHVkZSAiY21ha2Vjb25maWcuaCIKQEAgLTQ0LDcgKzQ0LDcgQEAKICNkZWZpbmUg
VVNFX0NVUkwgMQogI2Vsc2UKICNkZWZpbmUgVVNFX0NHIDEKLSNkZWZpbmUgVVNFX0NGTkVUV09S
SyAxCisjZGVmaW5lIFVTRV9DRlVSTENPTk5FQ1RJT04gMQogI2VuZGlmCiAKICN1bmRlZiBfV0lO
MzJfV0lOTlQKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVl
LmNwcAkocmV2aXNpb24gMjA3MDM1KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0R1bXBS
ZW5kZXJUcmVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjEsNyArNjEsNyBAQAogI2luY2x1ZGUg
PFdlYktpdC9XZWJLaXQuaD4KICNpbmNsdWRlIDxXZWJLaXQvV2ViS2l0Q09NQVBJLmg+CiAKLSNp
ZiBVU0UoQ0ZORVRXT1JLKQorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAjaW5jbHVkZSA8Q0ZO
ZXR3b3JrL0NGSFRUUENvb2tpZXNQcml2Lmg+CiAjaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGVVJMQ2Fj
aGVQcml2Lmg+CiAjZW5kaWYKQEAgLTEyODcsNyArMTI4Nyw3IEBAIElXZWJWaWV3KiBjcmVhdGVX
ZWJWaWV3QW5kT2Zmc2NyZWVuV2luZG8KICAgICByZXR1cm4gd2ViVmlldzsKIH0KIAotI2lmIFVT
RShDRk5FVFdPUkspCisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKIFJldGFpblB0cjxDRlVSTENh
Y2hlUmVmPiBzaGFyZWRDRlVSTENhY2hlKCkKIHsKICNpZm5kZWYgREVCVUdfQUxMCkBAIC0xNDY1
LDcgKzE0NjUsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY29uc3QgY2hhciogYXJndltdKQogICAg
IGlmIChGQUlMRUQod2ViVmlldy0+bWFpbkZyYW1lKCZmcmFtZSkpKQogICAgICAgICByZXR1cm4g
LTc7CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAgICAg
UmV0YWluUHRyPENGVVJMQ2FjaGVSZWY+IHVybENhY2hlID0gc2hhcmVkQ0ZVUkxDYWNoZSgpOwog
ICAgIENGVVJMQ2FjaGVSZW1vdmVBbGxDYWNoZWRSZXNwb25zZXModXJsQ2FjaGUuZ2V0KCkpOwog
I2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>291213</attachid>
            <date>2016-10-10 19:34:10 -0700</date>
            <delta_ts>2016-10-10 21:10:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-163263-20161010193048.patch</filename>
            <type>text/plain</type>
            <size>206920</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDIwNzAz
NykKKysrIENoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDE2LTEw
LTEwICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgUmVtb3ZlIGRlYWQgbmV0d29ya2luZyBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjMyNjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFNvdXJjZS9jbWFrZS9PcHRpb25zQXBwbGVXaW4uY21h
a2U6CisKIDIwMTYtMTAtMTAgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3Jn
PgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyMDY5NzIuCkluZGV4OiBTb3Vy
Y2UvV1RGL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL0NoYW5nZUxvZwkocmV2
aXNpb24gMjA3MDM3KQorKysgU291cmNlL1dURi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwxNCBAQAorMjAxNi0xMC0xMCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNl
bkB3ZWJraXQub3JnPgorCisgICAgICAgIFJlbW92ZSBkZWFkIG5ldHdvcmtpbmcgY29kZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzMjYzCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvUGxhdGZv
cm0uaDoKKyAgICAgICAgKiB3dGYvU2NoZWR1bGVQYWlyLmg6CisgICAgICAgICogd3RmL1NjaGVk
dWxlUGFpck1hYy5tbToKKwogMjAxNi0xMC0xMCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVh
QGdtYWlsLmNvbT4KIAogICAgICAgICBbRE9NSklUXSBJbXBsZW1lbnQgTm9kZSBhY2Nlc3NvcnMg
aW4gRE9NSklUCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgJKHJldmlzaW9uIDIwNzAzNykKKysrIFNvdXJjZS9X
VEYvd3RmL1BsYXRmb3JtLmgJKHdvcmtpbmcgY29weSkKQEAgLTU1OSwxMCArNTU5LDYgQEAKIAog
I2lmIFBMQVRGT1JNKElPUykKIAotI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspICYmIF9fSVBI
T05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTAwMDAwCi0jZGVmaW5lIFVTRV9DRk5FVFdP
UksgMQotI2VuZGlmCi0KICNkZWZpbmUgSEFWRV9ORVRXT1JLX0VYVEVOU0lPTiAxCiAjZGVmaW5l
IEhBVkVfUkVBRExJTkUgMQogI2RlZmluZSBVU0VfVUlLSVRfRURJVElORyAxCkBAIC01OTIsMTAg
KzU4OCwxMCBAQAogI2VuZGlmCiAKICNpZiBQTEFURk9STShXSU4pICYmICFVU0UoV0lOR0RJKSAm
JiAhUExBVEZPUk0oV0lOX0NBSVJPKQotI2RlZmluZSBVU0VfQ0ZORVRXT1JLIDEKKyNkZWZpbmUg
VVNFX0NGVVJMQ09OTkVDVElPTiAxCiAjZW5kaWYKIAotI2lmIFVTRShDRk5FVFdPUkspIHx8IFBM
QVRGT1JNKENPQ09BKQorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pIHx8IFBMQVRGT1JNKENPQ09B
KQogI2RlZmluZSBVU0VfQ0ZVUkxDQUNIRSAxCiAjZW5kaWYKIApAQCAtOTUxLDkgKzk0Nyw2IEBA
CiAjZGVmaW5lIFVTRV9QUk9URUNUSU9OX1NQQUNFX0FVVEhfQ0FMTEJBQ0sgMQogI2VuZGlmCiAK
LS8qIFNldCB1cCBhIGRlZmluZSBmb3IgYSBjb21tb24gZXJyb3IgdGhhdCBpcyBpbnRlbmRlZCB0
byBjYXVzZSBhIGJ1aWxkIGVycm9yIC0tIHRodXMgdGhlIHNwYWNlIGFmdGVyIEVycm9yLiAqLwot
I2RlZmluZSBXVEZfUExBVEZPUk1fQ0ZORVRXT1JLIEVycm9yIFVTRV9tYWNyb19zaG91bGRfYmVf
dXNlZF93aXRoX0NGTkVUV09SSwotCiAjaWYgUExBVEZPUk0oQ09DT0EpICYmIEhBVkUoQUNDRVNT
SUJJTElUWSkKICNkZWZpbmUgVVNFX0FDQ0VTU0lCSUxJVFlfQ09OVEVYVF9NRU5VUyAxCiAjZW5k
aWYKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1NjaGVkdWxlUGFpci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XVEYvd3RmL1NjaGVkdWxlUGFpci5oCShyZXZpc2lvbiAyMDcwMzcpCisrKyBTb3VyY2Uv
V1RGL3d0Zi9TY2hlZHVsZVBhaXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQAog
I2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KIAotI2lmIFBMQVRGT1JNKENPQ09BKSAmJiAhVVNFKENGTkVUV09SSykKKyNpZiBQ
TEFURk9STShDT0NPQSkKIE9CSkNfQ0xBU1MgTlNSdW5Mb29wOwogI2VuZGlmCiAKQEAgLTQ1LDcg
KzQ1LDcgQEAgY2xhc3MgU2NoZWR1bGVQYWlyIDogcHVibGljIFRocmVhZFNhZmVSZQogcHVibGlj
OgogICAgIHN0YXRpYyBSZWY8U2NoZWR1bGVQYWlyPiBjcmVhdGUoQ0ZSdW5Mb29wUmVmIHJ1bkxv
b3AsIENGU3RyaW5nUmVmIG1vZGUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2NoZWR1bGVQYWly
KHJ1bkxvb3AsIG1vZGUpKTsgfQogCi0jaWYgUExBVEZPUk0oQ09DT0EpICYmICFVU0UoQ0ZORVRX
T1JLKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHN0YXRpYyBSZWY8U2NoZWR1bGVQYWlyPiBj
cmVhdGUoTlNSdW5Mb29wKiBydW5Mb29wLCBDRlN0cmluZ1JlZiBtb2RlKSB7IHJldHVybiBhZG9w
dFJlZigqbmV3IFNjaGVkdWxlUGFpcihydW5Mb29wLCBtb2RlKSk7IH0KICAgICBOU1J1bkxvb3Aq
IG5zUnVuTG9vcCgpIGNvbnN0IHsgcmV0dXJuIG1fbnNSdW5Mb29wLmdldCgpOyB9CiAjZW5kaWYK
QEAgLTYzLDcgKzYzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIG1fbW9kZSA9IGFkb3B0Q0Yo
Q0ZTdHJpbmdDcmVhdGVDb3B5KDAsIG1vZGUpKTsKICAgICB9CiAKLSNpZiBQTEFURk9STShDT0NP
QSkgJiYgIVVTRShDRk5FVFdPUkspCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgV1RGX0VYUE9S
VF9QUklWQVRFIFNjaGVkdWxlUGFpcihOU1J1bkxvb3AqLCBDRlN0cmluZ1JlZik7CiAgICAgUmV0
YWluUHRyPE5TUnVuTG9vcCo+IG1fbnNSdW5Mb29wOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV1RG
L3d0Zi9TY2hlZHVsZVBhaXJNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvU2No
ZWR1bGVQYWlyTWFjLm1tCShyZXZpc2lvbiAyMDcwMzcpCisrKyBTb3VyY2UvV1RGL3d0Zi9TY2hl
ZHVsZVBhaXJNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTI5LDggKzI5LDYgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJTY2hlZHVsZVBhaXIuaCIKIAotI2lmICFVU0UoQ0ZORVRX
T1JLKQotCiBuYW1lc3BhY2UgV1RGIHsKIAogU2NoZWR1bGVQYWlyOjpTY2hlZHVsZVBhaXIoTlNS
dW5Mb29wKiBydW5Mb29wLCBDRlN0cmluZ1JlZiBtb2RlKQpAQCAtNDIsNSArNDAsMyBAQCBTY2hl
ZHVsZVBhaXI6OlNjaGVkdWxlUGFpcihOU1J1bkxvb3AqIHJ1CiB9CiAKIH0gLy8gbmFtZXNwYWNl
Ci0KLSNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjA3MDM3KQorKysgU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTY3IEBACisyMDE2LTEw
LTEwICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgUmVtb3ZlIGRlYWQgbmV0d29ya2luZyBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjMyNjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUaGVyZSBhcmUgbm8gbW9yZSBDb2NvYSBwbGF0Zm9ybXMg
dXNpbmcgQ0ZVUkxDb25uZWN0aW9uLgorICAgICAgICBVU0UoQ0ZORVRXT1JLKSBpcyBiZWluZyBy
ZXBsYWNlZCBieSBVU0UoQ0ZVUkxDT05ORUNUSU9OKSBhbmQgaXQgaXMgb25seSB1c2VkIG9uIHRo
ZSBBcHBsZVdpbiBwb3J0LgorCisgICAgICAgIE5vIGNoYW5nZSBpbiBiZWhhdmlvci4KKworICAg
ICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJD
b3JlUHJlZml4Lmg6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmg6CisgICAgICAg
ICogbG9hZGVyL0VtcHR5Q2xpZW50cy5oOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlckNs
aWVudC5oOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
KToKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIv
U3VicmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvY2YvUmVzb3VyY2VMb2FkZXJD
Rk5ldC5jcHA6CisgICAgICAgICogbG9hZGVyL2NvY29hL1N1YnJlc291cmNlTG9hZGVyQ29jb2Eu
bW06CisgICAgICAgIChXZWJDb3JlOjpTdWJyZXNvdXJjZUxvYWRlcjo6d2lsbENhY2hlUmVzcG9u
c2UpOiBEZWxldGVkLgorICAgICAgICAqIGxvYWRlci9tYWMvRG9jdW1lbnRMb2FkZXJNYWMuY3Bw
OgorICAgICAgICAqIGxvYWRlci9tYWMvUmVzb3VyY2VMb2FkZXJNYWMubW06CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6d2lsbENhY2hlUmVzcG9uc2UpOiBEZWxldGVkLgorICAg
ICAgICAqIHBhZ2UvbWFjL1BhZ2VNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpwbGF0
Zm9ybUluaXRpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6YWRkU2NoZWR1bGVQYWly
KToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnJlbW92ZVNjaGVkdWxlUGFpcik6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakM6OnNob3VsZFdhaXRGb3JSZXNwb25zZVRvQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29yZU5TVVJMQXV0aGVudGljYXRpb25D
aGFsbGVuZ2VDbGllbnQ6OmNyZWF0ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXZWJD
b3JlTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUNsaWVudDo6V2ViQ29yZU5TVVJMQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2VDbGllbnQpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL21h
Yy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9O
ZXR3b3JrU3RvcmFnZVNlc3Npb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Byb3Rl
Y3Rpb25TcGFjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUHJvdGVjdGlvblNwYWNl
QmFzZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5jcHA6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlSGFuZGxlQ2xpZW50Ojp3aWxsQ2FjaGVSZXNwb25zZSk6CisgICAgICAgIChXZWJD
b3JlOjpSZXNvdXJjZUhhbmRsZUNsaWVudDo6c2hvdWxkQ2FjaGVSZXNwb25zZSk6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmg6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUludGVybmFsOjpSZXNvdXJjZUhhbmRsZUludGVybmFsKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvQXV0aGVudGljYXRpb25DRi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTo6QXV0aGVudGljYXRpb25DaGFsbGVu
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQ0YpOgorICAgICAgICAoV2ViQ29yZTo6Y29y
ZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9BdXRoZW50aWNhdGlvbkNGLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvQ29va2llSmFyQ0ZOZXQuY3BwOgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvQ3JlZGVudGlhbFN0b3JhZ2VDRk5ldC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDcmVkZW50aWFsU3RvcmFnZTo6Z2V0RnJvbVBlcnNpc3RlbnRTdG9yYWdl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNyZWRlbnRpYWxTdG9yYWdlOjpzYXZlVG9QZXJzaXN0ZW50
U3RvcmFnZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9Mb2FkZXJS
dW5Mb29wQ0YuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvTG9hZGVyUnVuTG9v
cENGLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Np
b25DRk5ldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNv
b2tpZVN0b3JhZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvUHJvdGVjdGlvblNw
YWNlQ0ZOZXQuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvUHJvdGVjdGlvblNw
YWNlQ0ZOZXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3Iu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHA6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnNob3VsZFNuaWZmQ29ubmVjdGlvblByb3BlcnR5KToKKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpjcmVhdGVDRlVSTENvbm5lY3Rpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OnN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlJl
c291cmNlSGFuZGxlOjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OnRyeUhhbmRsZVBhc3N3b3JkQmFzZWRBdXRoZW50
aWNhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRDcmVk
ZW50aWFsKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpzY2hlZHVsZSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6dW5zY2hlZHVsZSk6IERl
bGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJM
Q29ubmVjdGlvbkRlbGVnYXRlLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jl
c291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3Bl
cmF0aW9uUXVldWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDRlVSTENv
bm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZTo6c2V0dXBSZXF1ZXN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3Bl
cmF0aW9uUXVldWU6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlOjpjYW5S
ZXNwb25kVG9Qcm90ZWN0aW9uU3BhY2UpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2Yv
UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5o
OgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Lmg6CisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q6OmVuY29kaW5nUmVxdWlyZXNQbGF0Zm9ybURh
dGEpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6ZmluZENGVVJMUmVxdWVzdENvcHlDb250ZW50RGlzcG9z
aXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXlGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUGxhdGZvcm1SZXF1ZXN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVQbGF0Zm9ybUhUVFBCb2R5KToKKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVSZXNvdXJjZVJlcXVlc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0OjpzZXRTdG9yYWdlU2Vzc2lvbik6CisgICAg
ICAgIChXZWJDb3JlOjpmaW5kQ0ZVUkxSZXF1ZXN0U2V0Q29udGVudERpc3Bvc2l0aW9uRW5jb2Rp
bmdGYWxsYmFja0FycmF5RnVuY3Rpb24pOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL2NmL1Jlc291cmNlUmVzcG9uc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2U6OlJlc291cmNlUmVzcG9uc2UpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2Yv
UmVzb3VyY2VSZXNwb25zZUNGTmV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2U6OmNmVVJMUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZTo6cGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm8pOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
Y2YvU3luY2hyb25vdXNMb2FkZXJDbGllbnRDRk5ldC5jcHA6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9jZi9TeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdh
dGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJM
Q29ubmVjdGlvbkRlbGVnYXRlOjpzZXR1cFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3lu
Y2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlOjpzZXR1cENvbm5l
Y3Rpb25TY2hlZHVsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OmFkanVzdE1JTUVUeXBlSWZOZWNl
c3NhcnkpOgorICAgICAgICAoV2ViQ29yZTo6U3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJM
Q29ubmVjdGlvbkRlbGVnYXRlOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29y
ZTo6U3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlOjp3aWxs
Q2FjaGVSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpTeW5jaHJvbm91c1Jlc291cmNlSGFu
ZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OmNhblJlc3BvbmRUb1Byb3RlY3Rpb25TcGFjZSk6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9TeW5jaHJvbm91c1Jlc291cmNlSGFuZGxl
Q0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2Nv
Y29hL0NyZWRlbnRpYWxDb2NvYS5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2Ev
Q3JlZGVudGlhbENvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6Q3JlZGVudGlhbDo6Q3JlZGVu
dGlhbCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDcmVkZW50aWFsOjpjZkNyZWRlbnRp
YWwpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvUHJvdGVjdGlv
blNwYWNlQ29jb2EuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Byb3RlY3Rp
b25TcGFjZUNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6UHJvdGVjdGlvblNwYWNlOjpQcm90
ZWN0aW9uU3BhY2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UHJvdGVjdGlvblNwYWNl
OjpjZlNwYWNlKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jl
c291cmNlUmVxdWVzdENvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
Ojpuc1VSTFJlcXVlc3QpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3Vy
Y2VSZXNwb25zZUNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZTo6
cGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm8pOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZTo6bnNVUkxSZXNwb25zZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlOjpSZXNvdXJjZVJlc3BvbnNlKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL2lvcy9RdWlja0xvb2suaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2lv
cy9RdWlja0xvb2subW06CisgICAgICAgICgtW1dlYlF1aWNrTG9va0hhbmRsZUFzRGVsZWdhdGUg
aW5pdFdpdGhDb25uZWN0aW9uRGVsZWdhdGU6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYlF1
aWNrTG9va0hhbmRsZUFzRGVsZWdhdGUgY29ubmVjdGlvbjpkaWRSZWNlaXZlRGF0YUFycmF5Ol0p
OiBEZWxldGVkLgorICAgICAgICAoLVtXZWJRdWlja0xvb2tIYW5kbGVBc0RlbGVnYXRlIGNvbm5l
Y3Rpb246ZGlkUmVjZWl2ZURhdGE6bGVuZ3RoUmVjZWl2ZWQ6XSk6IERlbGV0ZWQuCisgICAgICAg
ICgtW1dlYlF1aWNrTG9va0hhbmRsZUFzRGVsZWdhdGUgY29ubmVjdGlvbkRpZEZpbmlzaExvYWRp
bmc6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYlF1aWNrTG9va0hhbmRsZUFzRGVsZWdhdGUg
Y29ubmVjdGlvbjpkaWRGYWlsV2l0aEVycm9yOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtXZWJR
dWlja0xvb2tIYW5kbGVBc0RlbGVnYXRlIGRldGFjaEhhbmRsZV0pOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6UXVpY2tMb29rSGFuZGxlOjpjcmVhdGUpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6UXVpY2tMb29rSGFuZGxlOjpjZlJlc3BvbnNlKTogRGVsZXRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL2lvcy9SZXNvdXJjZUhhbmRsZUlPUy5tbTogUmVtb3ZlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2lvcy9SZXNvdXJjZVJlcXVlc3RJT1MubW06IFJlbW92
ZWQuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvQXV0aGVudGljYXRpb25NYWMubW06
CisgICAgICAgICgtW1dlYkNvcmVBdXRoZW50aWNhdGlvbkNsaWVudEFzQ2hhbGxlbmdlU2VuZGVy
IHNldENGQ2hhbGxlbmdlOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtXZWJDb3JlQXV0aGVudGlj
YXRpb25DbGllbnRBc0NoYWxsZW5nZVNlbmRlciBjZkNoYWxsZW5nZV0pOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6Y29yZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjptYWMpOiBE
ZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL0Nvb2tpZUphck1hYy5tbToK
KyAgICAgICAgKFdlYkNvcmU6OnNldENvb2tpZXNGcm9tRE9NKToKKyAgICAgICAgKFdlYkNvcmU6
OmNvb2tpZVN0b3JhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6YWRkQ29va2llKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9DcmVkZW50aWFsU3RvcmFnZU1hYy5tbToKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9Gb3JtRGF0YVN0cmVhbU1hYy5oOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvbWFjL0Zvcm1EYXRhU3RyZWFtTWFjLm1tOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvbWFjL1Jlc291cmNlRXJyb3JNYWMubW06CisgICAgICAgIChOU0Vycm9yRnJv
bUNGRXJyb3IpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VFcnJvcjo6UmVz
b3VyY2VFcnJvcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUVycm9yOjpu
c0Vycm9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlRXJyb3I6Om9wZXJh
dG9yIE5TRXJyb3IgKik6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMv
UmVzb3VyY2VIYW5kbGVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6
Y29udGludWVXaWxsQ2FjaGVSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhh
bmRsZTo6Z2V0Q29ubmVjdGlvblRpbWluZ0RhdGEpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvbWFjL1Jlc291cmNlUmVxdWVzdE1hYy5tbTogUmVtb3ZlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9TeW5jaHJvbm91c0xvYWRlckNsaWVudC5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OlN5bmNocm9ub3VzTG9hZGVyQ2xpZW50OjpwbGF0Zm9ybUJhZFJlc3BvbnNl
RXJyb3IpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhh
bmRsZUFzRGVsZWdhdGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3Jl
UmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlLm1tOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
bWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5oOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0
aW9uUXVldWVEZWxlZ2F0ZS5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJD
b3JlVVJMUmVzcG9uc2UubW06CisgICAgICAgIChXZWJDb3JlOjpzeW50aGVzaXplUmVkaXJlY3RS
ZXNwb25zZUlmTmVjZXNzYXJ5KToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vVGVtcG9yYXJ5TGlu
a1N0dWJzLmNwcDoKKyAgICAgICAgKiB0ZXN0aW5nL2pzL1dlYkNvcmVUZXN0U3VwcG9ydFByZWZp
eC5oOgorCiAyMDE2LTEwLTEwICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAg
ICAgICBNb3ZlIEZldGNoIGZyb20gbGVnYWN5IHRvIG5ldyBET00gZXhjZXB0aW9ucwpJbmRleDog
U291cmNlL1dlYkNvcmUvV2ViQ29yZVByZWZpeC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmVQcmVmaXguaAkocmV2aXNpb24gMjA3MDM3KQorKysgU291cmNlL1dlYkNvcmUv
V2ViQ29yZVByZWZpeC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOCw3ICsxOCw3IEBACiAgKgogICov
CiAKLS8qIFRoaXMgcHJlZml4IGZpbGUgc2hvdWxkIGNvbnRhaW4gb25seTogCisvKiBUaGlzIHBy
ZWZpeCBmaWxlIHNob3VsZCBjb250YWluIG9ubHk6CiAgKiAgICAxKSBmaWxlcyB0byBwcmVjb21w
aWxlIGZvciBmYXN0ZXIgYnVpbGRzCiAgKiAgICAyKSBpbiBvbmUgY2FzZSBhdCBsZWFzdDogT1Mt
WC1zcGVjaWZpYyBwZXJmb3JtYW5jZSBidWcgd29ya2Fyb3VuZHMKICAqICAgIDMpIHRoZSBzcGVj
aWFsIHRyaWNrIHRvIGNhdGNoIHVzIHVzaW5nIG5ldyBvciBkZWxldGUgd2l0aG91dCBpbmNsdWRp
bmcgImNvbmZpZy5oIgpAQCAtMTMzLDggKzEzMyw4IEBACiAjZWxzZQogCiAjaWYgT1MoV0lORE9X
UykKLSNpZiBVU0UoQ0cpCiAKKyNpZiBVU0UoQ0cpCiAvLyBGSVhNRSA8cmRhcjovL3Byb2JsZW0v
ODIwODg2OD4gUmVtb3ZlIHN1cHBvcnQgZm9yIG9ic29sZXRlIENvbG9yU3luYyBBUEksIENvcmVT
ZXJ2aWNlcyBoZWFkZXIgaW4gQ29yZUdyYXBoaWNzCiAvLyBXZSBjYW4gcmVtb3ZlIHRoaXMgb25j
ZSB0aGUgbmV3IENvbG9yU3luYyBBUElzIGFyZSBhdmFpbGFibGUgaW4gYW4gaW50ZXJuYWwgU2Fm
YXJpIFNESy4KICNpbmNsdWRlIDxDb2xvclN5bmMvQ29sb3JTeW5jLmg+CkBAIC0xNDMsMTkgKzE0
MywyMSBAQAogI2RlZmluZSBPQlNPTEVURV9DT0xPUlNZTkNfQVBJCiAjZW5kaWYKICNlbmRpZgot
I2lmIFVTRShDRk5FVFdPUkspCi0vKiBXaW5kb3dzIGRvZXNuJ3QgaW5jbHVkZSBDRk5ldHdvcmsu
aCB2aWEgQ29yZVNlcnZpY2VzLmgsIHNvIHdlIGRvCi0gICBpdCBleHBsaWNpdGx5IGhlcmUgdG8g
bWFrZSBXaW5kb3dzIG1vcmUgY29uc2lzdGVudCB3aXRoIE1hYy4gKi8KKworI2lmIFVTRShDRlVS
TENPTk5FQ1RJT04pCiAjaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGTmV0d29yay5oPgogLy8gT24gV2lu
ZG93cywgZGlzcGF0Y2guaCBuZWVkcyB0byBiZSBpbmNsdWRlZCBiZWZvcmUgY2VydGFpbiBDRk5l
dHdvcmsgaGVhZGVycy4KICNpbmNsdWRlIDxkaXNwYXRjaC9kaXNwYXRjaC5oPgogI2VuZGlmCisK
ICNpbmNsdWRlIDx3aW5kb3dzLmg+Ci0jZWxzZQotI2lmICFQTEFURk9STShJT1MpCisKKyNlbGlm
ICFQTEFURk9STShJT1MpCisKICNpbmNsdWRlIDxDb3JlU2VydmljZXMvQ29yZVNlcnZpY2VzLmg+
Ci0jZW5kaWYgLy8gIVBMQVRGT1JNKElPUykKLSNlbmRpZiAvLyBPUyhXSU5ET1dTKQorCisjZW5k
aWYKKwogCiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjA3MDM3KQorKysgU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0y
MDIxLDcgKzIwMjEsNiBAQAogCQk1MTRDNzY0RjBDRTkyMzRFMDA3RUYzQ0QgLyogRm9ybURhdGFT
dHJlYW1NYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MTRDNzY0NTBDRTkyMzRFMDA3RUYzQ0QgLyogRm9ybURhdGFTdHJlYW1NYWMubW0gKi87IH07
CiAJCTUxNEM3NjUwMENFOTIzNEUwMDdFRjNDRCAvKiBSZXNvdXJjZUVycm9yTWFjLm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE0Qzc2NDYwQ0U5MjM0
RTAwN0VGM0NEIC8qIFJlc291cmNlRXJyb3JNYWMubW0gKi87IH07CiAJCTUxNEM3NjUxMENFOTIz
NEUwMDdFRjNDRCAvKiBSZXNvdXJjZUhhbmRsZU1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNEM3NjQ3MENFOTIzNEUwMDdFRjNDRCAvKiBSZXNv
dXJjZUhhbmRsZU1hYy5tbSAqLzsgfTsKLQkJNTE0Qzc2NTMwQ0U5MjM0RTAwN0VGM0NEIC8qIFJl
c291cmNlUmVxdWVzdE1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUxNEM3NjQ5MENFOTIzNEUwMDdFRjNDRCAvKiBSZXNvdXJjZVJlcXVlc3RNYWMu
bW0gKi87IH07CiAJCTUxNEM3NjZEMENFOTIzQTEwMDdFRjNDRCAvKiBDcmVkZW50aWFsQmFzZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTRDNzY1
ODBDRTkyM0ExMDA3RUYzQ0QgLyogQ3JlZGVudGlhbEJhc2UuY3BwICovOyB9OwogCQk1MTRDNzY2
RTBDRTkyM0ExMDA3RUYzQ0QgLyogQ3JlZGVudGlhbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE0Qzc2NTkwQ0U5MjNBMTAwN0VGM0NEIC8qIENyZWRl
bnRpYWwuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk1MTRDNzY2RjBDRTkyM0ExMDA3RUYzQ0QgLyogRm9ybURhdGEuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE0Qzc2NUEwQ0U5MjNBMTAwN0VGM0NE
IC8qIEZvcm1EYXRhLmNwcCAqLzsgfTsKQEAgLTI4MDgsNyArMjgwNyw2IEBACiAJCTdENEM5NkRE
MUFENDQ4MzUwMDM2NUE1MCAvKiBKU0ZldGNoSGVhZGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0Q0Qzk2RDkxQUQ0NDgzNTAwMzY1QTUwIC8qIEpT
RmV0Y2hIZWFkZXJzLmggKi87IH07CiAJCTdENzQxQkRBMTc3MjI2QUEwMDg1OTE3MCAvKiBDU1NW
YWx1ZUtleXdvcmRzLmggaW4gQ29weSBHZW5lcmF0ZWQgSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA2NTY1ODE0ODA5RDEzMDQzMDAwRTYxRDcgLyogQ1NTVmFsdWVL
ZXl3b3Jkcy5oICovOyB9OwogCQk3RTM3RUYyRTEzMzkyMDg4MDBCMjkyNTAgLyogU3VicmVzb3Vy
Y2VMb2FkZXJDRi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3RTM3RUYyRDEzMzkyMDg4MDBCMjkyNTAgLyogU3VicmVzb3VyY2VMb2FkZXJDRi5jcHAg
Ki87IH07Ci0JCTdFNDI4Q0U1MTNFMzQwN0YwMDNCNjYxQyAvKiBSZXNvdXJjZUhhbmRsZUlPUy5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFNDI4Q0U0
MTNFMzQwN0YwMDNCNjYxQyAvKiBSZXNvdXJjZUhhbmRsZUlPUy5tbSAqLzsgfTsKIAkJN0U0NkY2
RkExNjI3QTJDQTAwMDYyMjIzIC8qIEpTT0VTRWxlbWVudEluZGV4VWludC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RTQ2RjZGODE2MjdBMkM5MDAw
NjIyMjMgLyogSlNPRVNFbGVtZW50SW5kZXhVaW50LmNwcCAqLzsgfTsKIAkJN0U0NkY2RkIxNjI3
QTJDQTAwMDYyMjIzIC8qIEpTT0VTRWxlbWVudEluZGV4VWludC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0U0NkY2RjkxNjI3QTJDOTAwMDYyMjIzIC8q
IEpTT0VTRWxlbWVudEluZGV4VWludC5oICovOyB9OwogCQk3RTQ3NEUxRTEyNDk0REM5MDAyMzUz
NjQgLyogU1FMaXRlRGF0YWJhc2VUcmFja2VyQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RTQ3NEUxQjEyNDk0REM5MDAyMzUzNjQgLyogU1FM
aXRlRGF0YWJhc2VUcmFja2VyQ2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTI4MjYsNyArMjgyNCw2IEBACiAJCTdFNjZFMjM0MTZENkVC
NkMwMEY3RTdGRiAvKiBXZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RTY2RTIzMjE2RDZFQjZDMDBGN0U3RkYg
LyogV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQy5oICovOyB9OwogCQk3RTY2RTIzNDE3RTZFQjZD
MDBGN0U3RkYgLyogV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RTY2RTIzMjE3RTZFQjZDMDBGN0U3RkYg
LyogV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDLmggKi87IH07CiAJCTdFN0RFMUZEMTk1Q0VG
MjYwMDM1MzYzQiAvKiBSZXNvdXJjZVJlcXVlc3RDb2NvYS5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFN0RFMUZDMTk1Q0VGMjYwMDM1MzYzQiAvKiBS
ZXNvdXJjZVJlcXVlc3RDb2NvYS5tbSAqLzsgfTsKLQkJN0U3REUyMDIxOTVDRUZDRDAwMzUzNjNC
IC8qIFJlc291cmNlUmVxdWVzdElPUy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDdFN0RFMjAxMTk1Q0VGQ0QwMDM1MzYzQiAvKiBSZXNvdXJjZVJlcXVl
c3RJT1MubW0gKi87IH07CiAJCTdFOEZBREM0MTk5QTk1QjEwMDcxNDk2OCAvKiBTdWJyZXNvdXJj
ZUxvYWRlckNvY29hLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gN0U4RkFEQzMxOTlBOTVCMTAwNzE0OTY4IC8qIFN1YnJlc291cmNlTG9hZGVyQ29jb2Eu
bW0gKi87IH07CiAJCTdFOTlBRjUxMEIxMzg0NjQ2OEZCMDFBNSAvKiBXaW5kb3dGb2N1c0FsbG93
ZWRJbmRpY2F0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gN0U5OUFGNTIwQjEzODQ2NDY4RkIwMUE1IC8qIFdpbmRvd0ZvY3VzQWxsb3dlZEluZGlj
YXRvci5jcHAgKi87IH07CiAJCTdFOTlBRjUzMEIxMzg0NjQ2OEZCMDFBNSAvKiBXaW5kb3dGb2N1
c0FsbG93ZWRJbmRpY2F0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDdFOTlBRjU0MEIxMzg0NjQ2OEZCMDFBNSAvKiBXaW5kb3dGb2N1c0FsbG93ZWRJ
bmRpY2F0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwpAQCAtMjg0Nyw3ICsyODQ0LDYgQEAKIAkJN0VFNjg0NjkxMkQyNkUzODAwRTc5NDE1IC8qIExv
YWRlclJ1bkxvb3BDRi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gN0VFNjg0NTYxMkQyNkUzODAwRTc5NDE1IC8qIExvYWRlclJ1bkxvb3BDRi5oICovOyB9
OwogCQk3RUU2ODQ2QTEyRDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VFcnJvci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0VFNjg0NTcxMkQyNkUzODAw
RTc5NDE1IC8qIFJlc291cmNlRXJyb3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk3RUU2ODQ2QjEyRDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VF
cnJvckNGLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDdFRTY4NDU4MTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZUVycm9yQ0YuY3BwICovOyB9Owot
CQk3RUU2ODQ2QzEyRDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RUU2ODQ1OTEyRDI2
RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAgKi87IH07CiAJCTdFRTY4NDZE
MTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlcXVlc3QuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFRTY4NDVBMTJEMjZFMzgwMEU3OTQxNSAvKiBS
ZXNvdXJjZVJlcXVlc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk3RUU2ODQ2RTEyRDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VSZXF1ZXN0Q0ZO
ZXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0VF
Njg0NUIxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlUmVxdWVzdENGTmV0LmNwcCAqLzsgfTsK
IAkJN0VFNjg0NkYxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlUmVxdWVzdENGTmV0LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RUU2ODQ1QzEyRDI2
RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtOTA2Miw3ICs5MDU4LDYgQEAKIAkJNTE0
Qzc2NDUwQ0U5MjM0RTAwN0VGM0NEIC8qIEZvcm1EYXRhU3RyZWFtTWFjLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRm9ybURhdGFTdHJlYW1NYWMubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNEM3NjQ2MENFOTIzNEUwMDdFRjNDRCAvKiBSZXNv
dXJjZUVycm9yTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
UmVzb3VyY2VFcnJvck1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE0Qzc2
NDcwQ0U5MjM0RTAwN0VGM0NEIC8qIFJlc291cmNlSGFuZGxlTWFjLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUmVzb3VyY2VIYW5kbGVNYWMubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUxNEM3NjQ5MENFOTIzNEUwMDdFRjNDRCAvKiBSZXNvdXJj
ZVJlcXVlc3RNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBS
ZXNvdXJjZVJlcXVlc3RNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNEM3
NjU4MENFOTIzQTEwMDdFRjNDRCAvKiBDcmVkZW50aWFsQmFzZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDcmVkZW50aWFsQmFzZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTUxNEM3NjU5MENFOTIzQTEwMDdFRjNDRCAvKiBDcmVkZW50aWFsLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENyZWRlbnRpYWwuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE0Qzc2NUEwQ0U5MjNBMTAwN0VGM0NEIC8qIEZvcm1EYXRh
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZvcm1EYXRhLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTk5NDYsNyArOTk0MSw2IEBACiAJCTdENEM5
NkQ4MUFENDQ4MzUwMDM2NUE1MCAvKiBKU0ZldGNoSGVhZGVycy5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0ZldGNoSGVhZGVycy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTdENEM5NkQ5MUFENDQ4MzUwMDM2NUE1MCAvKiBKU0ZldGNoSGVhZGVy
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0ZldGNoSGVhZGVycy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3RTM3RUYyRDEzMzkyMDg4MDBCMjkyNTAgLyog
U3VicmVzb3VyY2VMb2FkZXJDRi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBTdWJyZXNvdXJjZUxvYWRlckNGLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJN0U0MjhDRTQxM0UzNDA3RjAwM0I2NjFDIC8qIFJlc291cmNlSGFuZGxlSU9TLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUmVzb3VyY2VIYW5kbGVJT1MubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFNDZGNkY4MTYyN0EyQzkwMDA2MjIyMyAv
KiBKU09FU0VsZW1lbnRJbmRleFVpbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSlNPRVNFbGVtZW50SW5kZXhVaW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJN0U0NkY2RjkxNjI3QTJDOTAwMDYyMjIzIC8qIEpTT0VTRWxlbWVudEluZGV4VWlu
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU09FU0VsZW1lbnRJbmRleFVp
bnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0U0NzRFMUIxMjQ5NERDOTAwMjM1
MzY0IC8qIFNRTGl0ZURhdGFiYXNlVHJhY2tlckNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTUUxpdGVEYXRhYmFzZVRyYWNrZXJDbGllbnQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTk5NjQsNyArOTk1OCw2IEBACiAJCTdFNjZFMjMyMTZENkVCNkMw
MEY3RTdGRiAvKiBXZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJN0U2NkUyMzIxN0U2RUI2QzAwRjdFN0ZGIC8qIFdlYkdMQ29tcHJl
c3NlZFRleHR1cmVQVlJUQy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJH
TENvbXByZXNzZWRUZXh0dXJlUFZSVEMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
N0U3REUxRkMxOTVDRUYyNjAwMzUzNjNCIC8qIFJlc291cmNlUmVxdWVzdENvY29hLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUmVzb3VyY2VSZXF1ZXN0Q29jb2Eu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTdFN0RFMjAxMTk1Q0VGQ0QwMDM1MzYz
QiAvKiBSZXNvdXJjZVJlcXVlc3RJT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBSZXNvdXJjZVJlcXVlc3RJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTdFOEZBREMzMTk5QTk1QjEwMDcxNDk2OCAvKiBTdWJyZXNvdXJjZUxvYWRlckNvY29h
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU3VicmVzb3VyY2VM
b2FkZXJDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0U5OUFGNTIwQjEz
ODQ2NDY4RkIwMUE1IC8qIFdpbmRvd0ZvY3VzQWxsb3dlZEluZGljYXRvci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXaW5kb3dGb2N1c0FsbG93ZWRJbmRpY2F0b3Iu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3RTk5QUY1NDBCMTM4NDY0NjhGQjAx
QTUgLyogV2luZG93Rm9jdXNBbGxvd2VkSW5kaWNhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdpbmRvd0ZvY3VzQWxsb3dlZEluZGljYXRvci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtOTk4Nyw3ICs5OTgwLDYgQEAKIAkJN0VFNjg0NTYxMkQyNkUzODAw
RTc5NDE1IC8qIExvYWRlclJ1bkxvb3BDRi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBMb2FkZXJSdW5Mb29wQ0YuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0VF
Njg0NTcxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlRXJyb3IuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUmVzb3VyY2VFcnJvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk3RUU2ODQ1ODEyRDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VFcnJvckNGLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlc291cmNlRXJyb3JDRi5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTdFRTY4NDU5MTJEMjZFMzgwMEU3OTQxNSAv
KiBSZXNvdXJjZUhhbmRsZUNGTmV0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFJlc291cmNlSGFuZGxlQ0ZOZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk3RUU2ODQ1QTEyRDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VSZXF1ZXN0LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlc291cmNlUmVxdWVzdC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3RUU2ODQ1QjEyRDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VS
ZXF1ZXN0Q0ZOZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVz
b3VyY2VSZXF1ZXN0Q0ZOZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3RUU2
ODQ1QzEyRDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE2MjM0LDggKzE2MjI2LDYgQEAKIAkJCQk0NDJBRjdBNzEw
MkNEREVBMDA4RkQ0RDMgLyogUXVpY2tMb29rLmggKi8sCiAJCQkJNDQyQUY3QTgxMDJDRERFQTAw
OEZENEQzIC8qIFF1aWNrTG9vay5tbSAqLywKIAkJCQlBMTBEQkY0NjE4RjkyMzE3MDAwRDcwQzYg
LyogUXVpY2tMb29rSGFuZGxlQ2xpZW50LmggKi8sCi0JCQkJN0U0MjhDRTQxM0UzNDA3RjAwM0I2
NjFDIC8qIFJlc291cmNlSGFuZGxlSU9TLm1tICovLAotCQkJCTdFN0RFMjAxMTk1Q0VGQ0QwMDM1
MzYzQiAvKiBSZXNvdXJjZVJlcXVlc3RJT1MubW0gKi8sCiAJCQkJNDRBMjBEQjgwRjg0MTY2QzAw
QjNFMUZFIC8qIFdlYkNvcmVVUkxSZXNwb25zZUlPUy5oICovLAogCQkJCTQ0NEQ0RTIxMEY3MDhC
MkUwMDMxNThFMCAvKiBXZWJDb3JlVVJMUmVzcG9uc2VJT1MubW0gKi8sCiAJCQkpOwpAQCAtMTcx
NTAsNyArMTcxNDAsNiBAQAogCQkJCTFBN0ZBNjQ3MEREQTNDQkEwMDI4RjhBNSAvKiBOZXR3b3Jr
U3RhdGVOb3RpZmllck1hYy5jcHAgKi8sCiAJCQkJNTE0Qzc2NDYwQ0U5MjM0RTAwN0VGM0NEIC8q
IFJlc291cmNlRXJyb3JNYWMubW0gKi8sCiAJCQkJNTE0Qzc2NDcwQ0U5MjM0RTAwN0VGM0NEIC8q
IFJlc291cmNlSGFuZGxlTWFjLm1tICovLAotCQkJCTUxNEM3NjQ5MENFOTIzNEUwMDdFRjNDRCAv
KiBSZXNvdXJjZVJlcXVlc3RNYWMubW0gKi8sCiAJCQkJRTE4MDgxMTQxNkZDRjlDQjAwQjgwRDA3
IC8qIFN5bmNocm9ub3VzTG9hZGVyQ2xpZW50Lm1tICovLAogCQkJCTFGQUZCRjE2MTVBNUZBNTIw
MDA4M0EyMCAvKiBVVElVdGlsaXRpZXMuaCAqLywKIAkJCQkxRkFGQkYxNzE1QTVGQTUyMDAwODNB
MjAgLyogVVRJVXRpbGl0aWVzLm1tICovLApAQCAtMjEwMTIsNyArMjEwMDEsNiBAQAogCQkJCTFB
RjhFMUMxMTI1NjczRTAwMDIzMEZGNyAvKiBQcm94eVNlcnZlckNGTmV0LmNwcCAqLywKIAkJCQk3
RUU2ODQ1NzEyRDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VFcnJvci5oICovLAogCQkJCTdFRTY4
NDU4MTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZUVycm9yQ0YuY3BwICovLAotCQkJCTdFRTY4
NDU5MTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZUhhbmRsZUNGTmV0LmNwcCAqLywKIAkJCQky
NkZBRTRDODE4NTJFM0E1MDA0QzhDNDYgLyogUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25E
ZWxlZ2F0ZS5jcHAgKi8sCiAJCQkJMjZGQUU0QzkxODUyRTNBNTAwNEM4QzQ2IC8qIFJlc291cmNl
SGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuaCAqLywKIAkJCQkyNkMxNUNGNDE4NTdFMTVE
MDBGMTVDMDMgLyogUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVy
YXRpb25RdWV1ZS5jcHAgKi8sCkBAIC0yOTkxNiwxMSArMjk5MDQsOSBAQAogCQkJCTdFRTY4NDZC
MTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZUVycm9yQ0YuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNTE0Qzc2NTAwQ0U5MjM0RTAwN0VGM0NEIC8qIFJlc291cmNlRXJyb3JNYWMubW0gaW4gU291
cmNlcyAqLywKIAkJCQk1MTRDNzY3ODBDRTkyM0ExMDA3RUYzQ0QgLyogUmVzb3VyY2VIYW5kbGUu
Y3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJN0VFNjg0NkMxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291
cmNlSGFuZGxlQ0ZOZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMjZGQUU0Q0MxODUyRTNBNTAw
NEM4QzQ2IC8qIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMjZDMTVDRjYxODU3RTE1RDAwRjE1QzAzIC8qIFJlc291cmNlSGFuZGxl
Q0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJRTFCQTAwMzExNkZCOTJBQzAwQkE3QTM1IC8qIFJlc291cmNlSGFuZGxlQ2xpZW50
LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTdFNDI4Q0U1MTNFMzQwN0YwMDNCNjYxQyAvKiBSZXNv
dXJjZUhhbmRsZUlPUy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUxNEM3NjUxMENFOTIzNEUwMDdF
RjNDRCAvKiBSZXNvdXJjZUhhbmRsZU1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTkzRTIyN0Uz
MEFGNTg5QUQwMEQ0ODMyNCAvKiBSZXNvdXJjZUxvYWRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk3RUU2ODQ3NTEyRDI2RTcwMDBFNzk0MTUgLyogUmVzb3VyY2VMb2FkZXJDRk5ldC5jcHAgaW4g
U291cmNlcyAqLywKQEAgLTI5OTMzLDggKzI5OTE5LDYgQEAKIAkJCQk1MTRDNzY3QzBDRTkyM0Ex
MDA3RUYzQ0QgLyogUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3
RUU2ODQ2RTEyRDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJN0U3REUxRkQxOTVDRUYyNjAwMzUzNjNCIC8qIFJlc291cmNlUmVxdWVz
dENvY29hLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJN0U3REUyMDIxOTVDRUZDRDAwMzUzNjNCIC8q
IFJlc291cmNlUmVxdWVzdElPUy5tbSBpbiBTb3VyY2VzICovLAotCQkJCTUxNEM3NjUzMENFOTIz
NEUwMDdFRjNDRCAvKiBSZXNvdXJjZVJlcXVlc3RNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQk1
MTRDNzY3RTBDRTkyM0ExMDA3RUYzQ0QgLyogUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJN0VFNjg0NzExMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlUmVzcG9u
c2VDRk5ldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBMUY3OEQwQzFDMjU0MjRDMDAyNDU0NDYg
LyogUmVzb3VyY2VSZXNwb25zZUNvY29hLm1tIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAkocmV2aXNpb24gMjA3MDM3KQorKysgU291cmNl
L1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTU1LDcg
KzU1LDcgQEAKICNpbmNsdWRlICJRdWlja0xvb2suaCIKICNlbmRpZgogCi0jaWYgUExBVEZPUk0o
Q09DT0EpICYmICFVU0UoQ0ZORVRXT1JLKQorI2lmIFBMQVRGT1JNKENPQ09BKQogI2luY2x1ZGUg
PHd0Zi9TY2hlZHVsZVBhaXIuaD4KICNlbmRpZgogCkBAIC0xNDUsNyArMTQ1LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFRpdGxlKGNvbnN0
IFN0cmluZ1dpdGhEaXJlY3Rpb24mKTsKICAgICAgICAgY29uc3QgU3RyaW5nJiBvdmVycmlkZUVu
Y29kaW5nKCkgY29uc3QgeyByZXR1cm4gbV9vdmVycmlkZUVuY29kaW5nOyB9CiAKLSNpZiBQTEFU
Rk9STShDT0NPQSkgJiYgIVVTRShDRk5FVFdPUkspCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAg
ICAgIHZvaWQgc2NoZWR1bGUoU2NoZWR1bGVQYWlyJik7CiAgICAgICAgIHZvaWQgdW5zY2hlZHVs
ZShTY2hlZHVsZVBhaXImKTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0Vt
cHR5Q2xpZW50cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNs
aWVudHMuaAkocmV2aXNpb24gMjA3MDM3KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5
Q2xpZW50cy5oCSh3b3JraW5nIGNvcHkpCkBAIC00MDMsNyArNDAzLDcgQEAgcHVibGljOgogICAg
IFJlbW90ZUFYT2JqZWN0UmVmIGFjY2Vzc2liaWxpdHlSZW1vdGVPYmplY3QoKSBvdmVycmlkZSB7
IHJldHVybiBudWxscHRyOyB9CiAgICAgTlNDYWNoZWRVUkxSZXNwb25zZSogd2lsbENhY2hlUmVz
cG9uc2UoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nLCBOU0NhY2hlZFVSTFJlc3BvbnNl
KiByZXNwb25zZSkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gcmVzcG9uc2U7IH0KICNlbmRpZgot
I2lmIFBMQVRGT1JNKFdJTikgJiYgVVNFKENGTkVUV09SSykKKyNpZiBQTEFURk9STShXSU4pICYm
IFVTRShDRlVSTENPTk5FQ1RJT04pCiAgICAgLy8gRklYTUU6IFdpbmRvd3Mgc2hvdWxkIHVzZSB3
aWxsQ2FjaGVSZXNwb25zZSAtIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NTcyNTc+LgogICAgIGJvb2wgc2hvdWxkQ2FjaGVSZXNwb25zZShEb2N1bWVudExvYWRlcios
IHVuc2lnbmVkIGxvbmcsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBjb25zdCB1bnNpZ25lZCBj
aGFyKiwgdW5zaWduZWQgbG9uZyBsb25nKSBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAjZW5k
aWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCShyZXZp
c2lvbiAyMDcwMzcpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtMjk3LDcgKzI5Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgdmlydHVhbCBOU0NhY2hlZFVSTFJlc3BvbnNlKiB3aWxsQ2FjaGVSZXNwb25zZShE
b2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgTlNDYWNoZWRVUkxSZXNw
b25zZSopIGNvbnN0ID0gMDsKICAgICAgICAgdmlydHVhbCBOU0RpY3Rpb25hcnkgKmRhdGFEZXRl
Y3Rpb25Db250ZXh0KCkgeyByZXR1cm4gbnVsbHB0cjsgfQogI2VuZGlmCi0jaWYgUExBVEZPUk0o
V0lOKSAmJiBVU0UoQ0ZORVRXT1JLKQorI2lmIFBMQVRGT1JNKFdJTikgJiYgVVNFKENGVVJMQ09O
TkVDVElPTikKICAgICAgICAgLy8gRklYTUU6IFdpbmRvd3Mgc2hvdWxkIHVzZSB3aWxsQ2FjaGVS
ZXNwb25zZSAtIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTcyNTc+
LgogICAgICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2FjaGVSZXNwb25zZShEb2N1bWVudExvYWRl
ciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIGNv
bnN0IHVuc2lnbmVkIGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxvbmcgbG9uZyBsZW5ndGgpID0gMDsK
ICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCShy
ZXZpc2lvbiAyMDcwMzcpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MTUsMTIgKzcxNSw4IEBAIHZvaWQgUmVzb3VyY2VMb2Fk
ZXI6OmRpZFJlY2VpdmVBdXRoZW50aWMKICAgICB9CiAgICAgLy8gT25seSB0aGVzZSBwbGF0Zm9y
bXMgcHJvdmlkZSBhIHdheSB0byBjb250aW51ZSB3aXRob3V0IGNyZWRlbnRpYWxzLgogICAgIC8v
IElmIHdlIGNhbid0IGNvbnRpbnVlIHdpdGggY3JlZGVudGlhbHMsIHdlIG5lZWQgdG8gY2FuY2Vs
IHRoZSBsb2FkIGFsdG9nZXRoZXIuCi0jaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRk5FVFdP
UkspIHx8IFVTRShDVVJMKSB8fCBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKEVGTCkKICAgICBj
aGFsbGVuZ2UuYXV0aGVudGljYXRpb25DbGllbnQoKS0+cmVjZWl2ZWRSZXF1ZXN0VG9Db250aW51
ZVdpdGhvdXRDcmVkZW50aWFsKGNoYWxsZW5nZSk7CiAgICAgQVNTRVJUKCFtX2hhbmRsZSB8fCAh
bV9oYW5kbGUtPmhhc0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCkpOwotI2Vsc2UKLSAgICBkaWRG
YWlsKGJsb2NrZWRFcnJvcigpKTsKLSNlbmRpZgogfQogCiAjaWYgVVNFKFBST1RFQ1RJT05fU1BB
Q0VfQVVUSF9DQUxMQkFDSykKQEAgLTc0Nyw3ICs3NDMsNyBAQCB2b2lkIFJlc291cmNlTG9hZGVy
OjpyZWNlaXZlZENhbmNlbGxhdGlvCiAgICAgY2FuY2VsKCk7CiB9CiAKLSNpZiBQTEFURk9STShD
T0NPQSkgJiYgIVVTRShDRk5FVFdPUkspCisjaWYgUExBVEZPUk0oQ09DT0EpCiAKIHZvaWQgUmVz
b3VyY2VMb2FkZXI6OnNjaGVkdWxlKFNjaGVkdWxlUGFpciYgcGFpcikKIHsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCShyZXZpc2lvbiAyMDcwMzcpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTQz
LDcgKzE0Myw3IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IExvYWRUaW1pbmcmIGxvYWRUaW1pbmco
KSB7IHJldHVybiBtX2xvYWRUaW1pbmc7IH0KIAotI2lmIFBMQVRGT1JNKENPQ09BKSAmJiAhVVNF
KENGTkVUV09SSykKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICB2b2lkIHNjaGVkdWxlKFdURjo6
U2NoZWR1bGVQYWlyJik7CiAgICAgdm9pZCB1bnNjaGVkdWxlKFdURjo6U2NoZWR1bGVQYWlyJik7
CiAjZW5kaWYKQEAgLTE2MywxMiArMTYzLDkgQEAgcHJvdGVjdGVkOgogCiAgICAgY29uc3QgUmVz
b3VyY2VMb2FkZXJPcHRpb25zJiBvcHRpb25zKCkgeyByZXR1cm4gbV9vcHRpb25zOyB9CiAKLSNp
ZiBQTEFURk9STShDT0NPQSkgJiYgIVVTRShDRk5FVFdPUkspCisjaWYgUExBVEZPUk0oQ09DT0Ep
CiAgICAgTlNDYWNoZWRVUkxSZXNwb25zZSogd2lsbENhY2hlUmVzcG9uc2UoUmVzb3VyY2VIYW5k
bGUqLCBOU0NhY2hlZFVSTFJlc3BvbnNlKikgb3ZlcnJpZGU7CiAjZW5kaWYKLSNpZiBQTEFURk9S
TShDT0NPQSkgJiYgVVNFKENGTkVUV09SSykKLSAgICBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmIHdp
bGxDYWNoZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlKiwgQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZikg
b3ZlcnJpZGU7Ci0jZW5kaWYKIAogICAgIHZpcnR1YWwgdm9pZCB3aWxsU2VuZFJlcXVlc3RJbnRl
cm5hbChSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJl
c3BvbnNlKTsKIApAQCAtMjA4LDcgKzIwNSw3IEBAIHByaXZhdGU6CiAjaWYgUExBVEZPUk0oSU9T
KQogICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IGNvbm5lY3Rpb25Qcm9wZXJ0aWVzKFJl
c291cmNlSGFuZGxlKikgb3ZlcnJpZGU7CiAjZW5kaWYKLSNpZiBQTEFURk9STShXSU4pICYmIFVT
RShDRk5FVFdPUkspCisjaWYgUExBVEZPUk0oV0lOKSAmJiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQog
ICAgIC8vIEZJWE1FOiBXaW5kb3dzIHNob3VsZCB1c2Ugd2lsbENhY2hlUmVzcG9uc2UgLSA8aHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU3MjU3Pi4KICAgICBib29sIHNo
b3VsZENhY2hlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqLCBDRkNhY2hlZFVSTFJlc3BvbnNlUmVm
KSBvdmVycmlkZTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291
cmNlTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291
cmNlTG9hZGVyLmgJKHJldmlzaW9uIDIwNzAzNykKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9T
dWJyZXNvdXJjZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC03NCwxMiArNzQsOSBAQCBwcml2
YXRlOgogICAgIHZvaWQgd2lsbENhbmNlbChjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7
CiAgICAgdm9pZCBkaWRDYW5jZWwoY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogCi0j
aWYgUExBVEZPUk0oQ09DT0EpICYmICFVU0UoQ0ZORVRXT1JLKQorI2lmIFBMQVRGT1JNKENPQ09B
KQogICAgIE5TQ2FjaGVkVVJMUmVzcG9uc2UgKndpbGxDYWNoZVJlc3BvbnNlKFJlc291cmNlSGFu
ZGxlKiwgTlNDYWNoZWRVUkxSZXNwb25zZSopIG92ZXJyaWRlOwogI2VuZGlmCi0jaWYgUExBVEZP
Uk0oQ09DT0EpICYmIFVTRShDRk5FVFdPUkspCi0gICAgQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZiB3
aWxsQ2FjaGVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSosIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYp
IG92ZXJyaWRlOwotI2VuZGlmCiAKICNpZiBVU0UoTkVUV09SS19DRkRBVEFfQVJSQVlfQ0FMTEJB
Q0spCiAgICAgYm9vbCBzdXBwb3J0c0RhdGFBcnJheSgpIG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7
IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jZi9SZXNvdXJjZUxvYWRlckNGTmV0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2YvUmVzb3VyY2VMb2FkZXJD
Rk5ldC5jcHAJKHJldmlzaW9uIDIwNzAzNykKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jZi9S
ZXNvdXJjZUxvYWRlckNGTmV0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsMTUgKzI2LDEzIEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkZXIuaCIKIAotI2lm
IFVTRShDRk5FVFdPUkspCisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKIAogI2luY2x1ZGUgIkZy
YW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi0jaWYgUExBVEZPUk0oV0lOKQotCiBib29sIFJlc291cmNlTG9hZGVyOjpz
aG91bGRDYWNoZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlKiwgQ0ZDYWNoZWRVUkxSZXNwb25zZVJl
ZiBjYWNoZWRSZXNwb25zZSkKIHsKICAgICBpZiAobV9vcHRpb25zLnNlbmRMb2FkQ2FsbGJhY2tz
ID09IERvTm90U2VuZENhbGxiYWNrcykKQEAgLTQ1LDggKzQzLDYgQEAgYm9vbCBSZXNvdXJjZUxv
YWRlcjo6c2hvdWxkQ2FjaGVSZXNwb25zZQogICAgIHJldHVybiBmcmFtZUxvYWRlcigpLT5jbGll
bnQoKS5zaG91bGRDYWNoZVJlc3BvbnNlKGRvY3VtZW50TG9hZGVyKCksIGlkZW50aWZpZXIoKSwg
cmVzcG9uc2UsIENGRGF0YUdldEJ5dGVQdHIoZGF0YSksIENGRGF0YUdldExlbmd0aChkYXRhKSk7
CiB9CiAKLSNlbmRpZgotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZiAvLyBVU0Uo
Q0ZORVRXT1JLKQorI2VuZGlmIC8vIFVTRShDRlVSTENPTk5FQ1RJT04pCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY29jb2EvU3VicmVzb3VyY2VMb2FkZXJDb2NvYS5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvU3VicmVzb3VyY2VMb2FkZXJDb2NvYS5t
bQkocmV2aXNpb24gMjA3MDM3KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL1N1YnJl
c291cmNlTG9hZGVyQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTM1LDE4ICszNSw2IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotI2lmIFVTRShDRk5FVFdPUkspCi0KLUNGQ2FjaGVkVVJM
UmVzcG9uc2VSZWYgU3VicmVzb3VyY2VMb2FkZXI6OndpbGxDYWNoZVJlc3BvbnNlKFJlc291cmNl
SGFuZGxlKiBoYW5kbGUsIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYgY2FjaGVkUmVzcG9uc2UpCi17
Ci0gICAgRGlza0NhY2hlTW9uaXRvcjo6bW9uaXRvckZpbGVCYWNraW5nU3RvcmVDcmVhdGlvbihy
ZXF1ZXN0KCksIG1fcmVzb3VyY2UtPnNlc3Npb25JRCgpLCBjYWNoZWRSZXNwb25zZSk7Ci0gICAg
aWYgKCFtX3Jlc291cmNlLT5zaG91bGRDYWNoZVJlc3BvbnNlKENGQ2FjaGVkVVJMUmVzcG9uc2VH
ZXRXcmFwcGVkUmVzcG9uc2UoY2FjaGVkUmVzcG9uc2UpKSkKLSAgICAgICAgcmV0dXJuIG51bGxw
dHI7Ci0gICAgcmV0dXJuIFJlc291cmNlTG9hZGVyOjp3aWxsQ2FjaGVSZXNwb25zZShoYW5kbGUs
IGNhY2hlZFJlc3BvbnNlKTsKLX0KLQotI2Vsc2UKLQogTlNDYWNoZWRVUkxSZXNwb25zZSogU3Vi
cmVzb3VyY2VMb2FkZXI6OndpbGxDYWNoZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlKiBoYW5kbGUs
IE5TQ2FjaGVkVVJMUmVzcG9uc2UqIHJlc3BvbnNlKQogewogICAgIERpc2tDYWNoZU1vbml0b3I6
Om1vbml0b3JGaWxlQmFja2luZ1N0b3JlQ3JlYXRpb24ocmVxdWVzdCgpLCBtX3Jlc291cmNlLT5z
ZXNzaW9uSUQoKSwgW3Jlc3BvbnNlIF9DRkNhY2hlZFVSTFJlc3BvbnNlXSk7CkBAIC01NSw2ICs0
Myw0IEBAIE5TQ2FjaGVkVVJMUmVzcG9uc2UqIFN1YnJlc291cmNlTG9hZGVyOjoKICAgICByZXR1
cm4gUmVzb3VyY2VMb2FkZXI6OndpbGxDYWNoZVJlc3BvbnNlKGhhbmRsZSwgcmVzcG9uc2UpOwog
fQogCi0jZW5kaWYKLQogfQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL21hYy9Eb2N1bWVu
dExvYWRlck1hYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL21hYy9E
b2N1bWVudExvYWRlck1hYy5jcHAJKHJldmlzaW9uIDIwNzAzNykKKysrIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9tYWMvRG9jdW1lbnRMb2FkZXJNYWMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw4
ICszMyw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotI2lmICFVU0UoQ0ZORVRXT1JLKQot
CiBzdGF0aWMgdm9pZCBzY2hlZHVsZUFsbChjb25zdCBSZXNvdXJjZUxvYWRlck1hcCYgbG9hZGVy
cywgU2NoZWR1bGVQYWlyJiBwYWlyKQogewogICAgIFZlY3RvcjxSZWZQdHI8UmVzb3VyY2VMb2Fk
ZXI+PiBsb2FkZXJzQ29weTsKQEAgLTY5LDYgKzY3LDQgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6
dW5zY2hlZHVsZShTY2hlZHVsZQogICAgIHVuc2NoZWR1bGVBbGwobV9tdWx0aXBhcnRTdWJyZXNv
dXJjZUxvYWRlcnMsIHBhaXIpOwogfQogCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9tYWMvUmVzb3Vy
Y2VMb2FkZXJNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL21hYy9S
ZXNvdXJjZUxvYWRlck1hYy5tbQkocmV2aXNpb24gMjA3MDM3KQorKysgU291cmNlL1dlYkNvcmUv
bG9hZGVyL21hYy9SZXNvdXJjZUxvYWRlck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzYsMTkg
KzM2LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0jaWYgVVNFKENGTkVUV09SSykKLQot
Q0ZDYWNoZWRVUkxSZXNwb25zZVJlZiBSZXNvdXJjZUxvYWRlcjo6d2lsbENhY2hlUmVzcG9uc2Uo
UmVzb3VyY2VIYW5kbGUqLCBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmIGNhY2hlZFJlc3BvbnNlKQot
ewotICAgIGlmIChtX29wdGlvbnMuc2VuZExvYWRDYWxsYmFja3MgPT0gRG9Ob3RTZW5kQ2FsbGJh
Y2tzKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIFJldGFpblB0cjxOU0NhY2hlZFVS
TFJlc3BvbnNlPiBuc0NhY2hlZFJlc3BvbnNlID0gYWRvcHROUyhbW05TQ2FjaGVkVVJMUmVzcG9u
c2UgYWxsb2NdIF9pbml0V2l0aENGQ2FjaGVkVVJMUmVzcG9uc2U6Y2FjaGVkUmVzcG9uc2VdKTsK
LSAgICByZXR1cm4gW2ZyYW1lTG9hZGVyKCktPmNsaWVudCgpLndpbGxDYWNoZVJlc3BvbnNlKGRv
Y3VtZW50TG9hZGVyKCksIGlkZW50aWZpZXIoKSwgbnNDYWNoZWRSZXNwb25zZS5nZXQoKSkgX0NG
Q2FjaGVkVVJMUmVzcG9uc2VdOwotfQotCi0jZWxzZQotCiBOU0NhY2hlZFVSTFJlc3BvbnNlKiBS
ZXNvdXJjZUxvYWRlcjo6d2lsbENhY2hlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqLCBOU0NhY2hl
ZFVSTFJlc3BvbnNlKiByZXNwb25zZSkKIHsKICAgICBpZiAobV9vcHRpb25zLnNlbmRMb2FkQ2Fs
bGJhY2tzID09IERvTm90U2VuZENhbGxiYWNrcykKQEAgLTU2LDggKzQzLDYgQEAgTlNDYWNoZWRV
UkxSZXNwb25zZSogUmVzb3VyY2VMb2FkZXI6OndpbAogICAgIHJldHVybiBmcmFtZUxvYWRlcigp
LT5jbGllbnQoKS53aWxsQ2FjaGVSZXNwb25zZShkb2N1bWVudExvYWRlcigpLCBpZGVudGlmaWVy
KCksIHJlc3BvbnNlKTsKIH0KIAotI2VuZGlmCi0KICNpZiBVU0UoTkVUV09SS19DRkRBVEFfQVJS
QVlfQ0FMTEJBQ0spCiAKIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhQXJyYXko
Q0ZBcnJheVJlZiBkYXRhQXJyYXkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9QYWdl
TWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1BhZ2VNYWMubW0J
KHJldmlzaW9uIDIwNzAzNykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1BhZ2VNYWMubW0J
KHdvcmtpbmcgY29weSkKQEAgLTQ1LDExICs0NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHZv
aWQgUGFnZTo6cGxhdGZvcm1Jbml0aWFsaXplKCkKIHsKICNpZiBQTEFURk9STShJT1MpCi0jaWYg
VVNFKENGTkVUV09SSykKLSAgICBhZGRTY2hlZHVsZVBhaXIoU2NoZWR1bGVQYWlyOjpjcmVhdGUo
V2ViVGhyZWFkUnVuTG9vcCgpLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpKTsKLSNlbHNlCiAgICAg
YWRkU2NoZWR1bGVQYWlyKFNjaGVkdWxlUGFpcjo6Y3JlYXRlKFdlYlRocmVhZE5TUnVuTG9vcCgp
LCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpKTsKLSNlbmRpZiAvLyBVU0UoQ0ZORVRXT1JLKQogI2Vs
c2UKICAgICBhZGRTY2hlZHVsZVBhaXIoU2NoZWR1bGVQYWlyOjpjcmVhdGUoW05TUnVuTG9vcCBj
dXJyZW50UnVuTG9vcF0sIGtDRlJ1bkxvb3BDb21tb25Nb2RlcykpOwogI2VuZGlmCkBAIC02OSwx
NCArNjUsMTIgQEAgdm9pZCBQYWdlOjphZGRTY2hlZHVsZVBhaXIoUmVmPFNjaGVkdWxlUAogICAg
ICAgICBtX3NjaGVkdWxlZFJ1bkxvb3BQYWlycyA9IHN0ZDo6bWFrZV91bmlxdWU8U2NoZWR1bGVQ
YWlySGFzaFNldD4oKTsKICAgICBtX3NjaGVkdWxlZFJ1bkxvb3BQYWlycy0+YWRkKHBhaXIucHRy
KCkpOwogCi0jaWYgIVVTRShDRk5FVFdPUkspCiAgICAgZm9yIChGcmFtZSogZnJhbWUgPSAmbV9t
YWluRnJhbWUuZ2V0KCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0
KCkpIHsKICAgICAgICAgaWYgKERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlciA9IGZyYW1l
LT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpKQogICAgICAgICAgICAgZG9jdW1lbnRMb2FkZXIt
PnNjaGVkdWxlKHBhaXIpOwogICAgICAgICBpZiAoRG9jdW1lbnRMb2FkZXIqIGRvY3VtZW50TG9h
ZGVyID0gZnJhbWUtPmxvYWRlcigpLnByb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIoKSkKICAgICAg
ICAgICAgIGRvY3VtZW50TG9hZGVyLT5zY2hlZHVsZShwYWlyKTsKICAgICB9Ci0jZW5kaWYKIAog
ICAgIC8vIEZJWE1FOiBtYWtlIFNoYXJlZFRpbWVyTWFjIHVzZSB0aGVzZSBTY2hlZHVsZVBhaXJz
LgogfQpAQCAtODksMTQgKzgzLDEyIEBAIHZvaWQgUGFnZTo6cmVtb3ZlU2NoZWR1bGVQYWlyKFJl
ZjxTY2hlZHUKIAogICAgIG1fc2NoZWR1bGVkUnVuTG9vcFBhaXJzLT5yZW1vdmUocGFpci5wdHIo
KSk7CiAKLSNpZiAhVVNFKENGTkVUV09SSykKICAgICBmb3IgKEZyYW1lKiBmcmFtZSA9ICZtX21h
aW5GcmFtZS5nZXQoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQo
KSkgewogICAgICAgICBpZiAoRG9jdW1lbnRMb2FkZXIqIGRvY3VtZW50TG9hZGVyID0gZnJhbWUt
PmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCkpCiAgICAgICAgICAgICBkb2N1bWVudExvYWRlci0+
dW5zY2hlZHVsZShwYWlyKTsKICAgICAgICAgaWYgKERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExv
YWRlciA9IGZyYW1lLT5sb2FkZXIoKS5wcm92aXNpb25hbERvY3VtZW50TG9hZGVyKCkpCiAgICAg
ICAgICAgICBkb2N1bWVudExvYWRlci0+dW5zY2hlZHVsZShwYWlyKTsKICAgICB9Ci0jZW5kaWYK
IH0KIAogfSAvLyBuYW1lc3BhY2UKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQkocmV2aXNp
b24gMjA3MDM3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQkod29ya2luZyBj
b3B5KQpAQCAtMTA5LDEwICsxMDksNiBAQAogI2ltcG9ydCA8VmlkZW9Ub29sYm94L1ZpZGVvVG9v
bGJveC5oPgogI2VuZGlmCiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotI2luY2x1ZGUgIkNGTlNVUkxD
b25uZWN0aW9uU1BJLmgiCi0jZW5kaWYKLQogI2ltcG9ydCAiQ29yZVZpZGVvU29mdExpbmsuaCIK
IAogbmFtZXNwYWNlIHN0ZCB7CkBAIC0zNzIsNTggKzM2OCw2IEBAIHN0YXRpYyBkaXNwYXRjaF9x
dWV1ZV90IGdsb2JhbFB1bGxEZWxlZ2EKIH0KICNlbmRpZgogCi0jaWYgVVNFKENGTkVUV09SSykK
LWNsYXNzIFdlYkNvcmVOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQ2xpZW50IDogcHVibGlj
IFJlZkNvdW50ZWQ8V2ViQ29yZU5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VDbGllbnQ+LCBw
dWJsaWMgQXV0aGVudGljYXRpb25DbGllbnQgewotcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8
V2ViQ29yZU5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VDbGllbnQ+IGNyZWF0ZShOU1VSTEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICpjaGFsbGVuZ2UpCi0gICAgewotICAgICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IFdlYkNvcmVOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQ2xpZW50KGNo
YWxsZW5nZSkpOwotICAgIH0KLQotICAgIHVzaW5nIFJlZkNvdW50ZWQ8V2ViQ29yZU5TVVJMQXV0
aGVudGljYXRpb25DaGFsbGVuZ2VDbGllbnQ+OjpyZWY7Ci0gICAgdXNpbmcgUmVmQ291bnRlZDxX
ZWJDb3JlTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUNsaWVudD46OmRlcmVmOwotCi1wcml2
YXRlOgotICAgIFdlYkNvcmVOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQ2xpZW50KE5TVVJM
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKmNoYWxsZW5nZSkKLSAgICAgICAgOiBtX2NoYWxsZW5n
ZShjaGFsbGVuZ2UpCi0gICAgewotICAgICAgICBBU1NFUlQobV9jaGFsbGVuZ2UpOwotICAgIH0K
LQotICAgIHZvaWQgcmVmQXV0aGVudGljYXRpb25DbGllbnQoKSBvdmVycmlkZSB7IHJlZigpOyB9
Ci0gICAgdm9pZCBkZXJlZkF1dGhlbnRpY2F0aW9uQ2xpZW50KCkgb3ZlcnJpZGUgeyBkZXJlZigp
OyB9Ci0KLSAgICB2b2lkIHJlY2VpdmVkQ3JlZGVudGlhbChjb25zdCBBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSYsIGNvbnN0IENyZWRlbnRpYWwmIGNyZWRlbnRpYWwpIG92ZXJyaWRlCi0gICAgewot
ICAgICAgICBbW21fY2hhbGxlbmdlIHNlbmRlcl0gdXNlQ3JlZGVudGlhbDpjcmVkZW50aWFsLm5z
Q3JlZGVudGlhbCgpIGZvckF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOm1fY2hhbGxlbmdlLmdldCgp
XTsKLSAgICB9Ci0KLSAgICB2b2lkIHJlY2VpdmVkUmVxdWVzdFRvQ29udGludWVXaXRob3V0Q3Jl
ZGVudGlhbChjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpIG92ZXJyaWRlCi0gICAgewot
ICAgICAgICBbW21fY2hhbGxlbmdlIHNlbmRlcl0gY29udGludWVXaXRob3V0Q3JlZGVudGlhbEZv
ckF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOm1fY2hhbGxlbmdlLmdldCgpXTsKLSAgICB9Ci0KLSAg
ICB2b2lkIHJlY2VpdmVkQ2FuY2VsbGF0aW9uKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
Jikgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIFtbbV9jaGFsbGVuZ2Ugc2VuZGVyXSBjYW5jZWxB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZTptX2NoYWxsZW5nZS5nZXQoKV07Ci0gICAgfQotCi0gICAg
dm9pZCByZWNlaXZlZFJlcXVlc3RUb1BlcmZvcm1EZWZhdWx0SGFuZGxpbmcoY29uc3QgQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UmKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgaWYgKFtbbV9jaGFs
bGVuZ2Ugc2VuZGVyXSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHBlcmZvcm1EZWZhdWx0
SGFuZGxpbmdGb3JBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTopXSkKLSAgICAgICAgICAgIFtbbV9j
aGFsbGVuZ2Ugc2VuZGVyXSBwZXJmb3JtRGVmYXVsdEhhbmRsaW5nRm9yQXV0aGVudGljYXRpb25D
aGFsbGVuZ2U6bV9jaGFsbGVuZ2UuZ2V0KCldOwotICAgIH0KLQotICAgIHZvaWQgcmVjZWl2ZWRD
aGFsbGVuZ2VSZWplY3Rpb24oY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKSBvdmVycmlk
ZQotICAgIHsKLSAgICAgICAgaWYgKFtbbV9jaGFsbGVuZ2Ugc2VuZGVyXSByZXNwb25kc1RvU2Vs
ZWN0b3I6QHNlbGVjdG9yKHJlamVjdFByb3RlY3Rpb25TcGFjZUFuZENvbnRpbnVlV2l0aENoYWxs
ZW5nZTopXSkKLSAgICAgICAgICAgIFtbbV9jaGFsbGVuZ2Ugc2VuZGVyXSByZWplY3RQcm90ZWN0
aW9uU3BhY2VBbmRDb250aW51ZVdpdGhDaGFsbGVuZ2U6bV9jaGFsbGVuZ2UuZ2V0KCldOwotICAg
IH0KLQotICAgIFJldGFpblB0cjxOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlPiBtX2NoYWxs
ZW5nZTsKLX07Ci0jZW5kaWYKLQogdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDOjpyZWdpc3Rlck1lZGlhRW5naW5lKE1lZGlhRW5naW5lUmVnaXN0cmFyIHJlZ2lzdHJhcikK
IHsKICAgICBpZiAoIWlzQXZhaWxhYmxlKCkpCkBAIC0xNzk3LDE1ICsxNzQxLDcgQEAgYm9vbCBN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOgogCiBib29sIE1lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakM6OnNob3VsZFdhaXRGb3JSZXNwb25zZVRvQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UoTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSogbnNDaGFsbGVuZ2UpCiB7
Ci0jaWYgVVNFKENGTkVUV09SSykKLSAgICBSZWZQdHI8V2ViQ29yZU5TVVJMQXV0aGVudGljYXRp
b25DaGFsbGVuZ2VDbGllbnQ+IGNsaWVudCA9IFdlYkNvcmVOU1VSTEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlQ2xpZW50OjpjcmVhdGUobnNDaGFsbGVuZ2UpOwotICAgIFJldGFpblB0cjxDRlVSTEF1
dGhDaGFsbGVuZ2VSZWY+IGNmQ2hhbGxlbmdlID0gYWRvcHRDRihbbnNDaGFsbGVuZ2UgX2NyZWF0
ZUNGQXV0aENoYWxsZW5nZV0pOwotICAgIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIGNoYWxsZW5n
ZShjZkNoYWxsZW5nZS5nZXQoKSwgY2xpZW50LmdldCgpKTsKLSNlbHNlCi0gICAgQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UgY2hhbGxlbmdlKG5zQ2hhbGxlbmdlKTsKLSNlbmRpZgotCi0gICAgcmV0
dXJuIHBsYXllcigpLT5zaG91bGRXYWl0Rm9yUmVzcG9uc2VUb0F1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlKGNoYWxsZW5nZSk7CisgICAgcmV0dXJuIHBsYXllcigpLT5zaG91bGRXYWl0Rm9yUmVzcG9u
c2VUb0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKG5zQ2hh
bGxlbmdlKSk7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6
ZGlkQ2FuY2VsTG9hZGluZ1JlcXVlc3QoQVZBc3NldFJlc291cmNlTG9hZGluZ1JlcXVlc3QqIGF2
UmVxdWVzdCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVt
SW50ZXJmYWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dl
YkNvcmVTeXN0ZW1JbnRlcmZhY2UuaAkocmV2aXNpb24gMjA3MDM3KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaAkod29ya2luZyBjb3B5KQpA
QCAtNzcsNyArNzcsNyBAQCB0eXBlZGVmIHN0cnVjdCBfTlNSZWN0IE5TUmVjdDsKICNpbmNsdWRl
IDxDb3JlR3JhcGhpY3MvQ29yZUdyYXBoaWNzLmg+CiAjZW5kaWYKIAotI2lmIFVTRShDRk5FVFdP
UkspCisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKIHR5cGVkZWYgc3RydWN0IE9wYXF1ZUNGSFRU
UENvb2tpZVN0b3JhZ2UqICBDRkhUVFBDb29raWVTdG9yYWdlUmVmOwogdHlwZWRlZiBzdHJ1Y3Qg
X0NGVVJMUHJvdGVjdGlvblNwYWNlKiBDRlVSTFByb3RlY3Rpb25TcGFjZVJlZjsKIHR5cGVkZWYg
c3RydWN0IF9DRlVSTENyZWRlbnRpYWwqIFdLQ0ZVUkxDcmVkZW50aWFsUmVmOwpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdl
U2Vzc2lvbi5oCShyZXZpc2lvbiAyMDcwMzcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsy
OSw3IEBACiAjaW5jbHVkZSAiU2Vzc2lvbklELmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CiAKLSNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKENGTkVUV09SSykKKyNpZiBQTEFU
Rk9STShDT0NPQSkgfHwgVVNFKENGVVJMQ09OTkVDVElPTikKICNpbmNsdWRlICJDRk5ldHdvcmtT
UEkuaCIKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjZW5kaWYKQEAgLTU5LDcgKzU5LDcg
QEAgcHVibGljOgogICAgIFNlc3Npb25JRCBzZXNzaW9uSUQoKSBjb25zdCB7IHJldHVybiBtX3Nl
c3Npb25JRDsgfQogICAgIENyZWRlbnRpYWxTdG9yYWdlJiBjcmVkZW50aWFsU3RvcmFnZSgpIHsg
cmV0dXJuIG1fY3JlZGVudGlhbFN0b3JhZ2U7IH0KIAotI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBV
U0UoQ0ZORVRXT1JLKQorI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZVUkxDT05ORUNUSU9O
KQogICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbihTZXNzaW9uSUQsIFJldGFpblB0cjxDRlVSTFN0
b3JhZ2VTZXNzaW9uUmVmPik7CiAKICAgICAvLyBNYXkgYmUgbnVsbCwgaW4gd2hpY2ggY2FzZSBh
IEZvdW5kYXRpb24gZGVmYXVsdCBzaG91bGQgYmUgdXNlZC4KQEAgLTg0LDcgKzg0LDcgQEAgcHJp
dmF0ZToKICAgICBzdGF0aWMgSGFzaE1hcDxTZXNzaW9uSUQsIHN0ZDo6dW5pcXVlX3B0cjxOZXR3
b3JrU3RvcmFnZVNlc3Npb24+PiYgZ2xvYmFsU2Vzc2lvbk1hcCgpOwogICAgIFNlc3Npb25JRCBt
X3Nlc3Npb25JRDsKIAotI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZORVRXT1JLKQorI2lm
IFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogICAgIFJldGFpblB0cjxD
RlVSTFN0b3JhZ2VTZXNzaW9uUmVmPiBtX3BsYXRmb3JtU2Vzc2lvbjsKICNlbGlmIFVTRShTT1VQ
KQogICAgIHN0ZDo6dW5pcXVlX3B0cjxTb3VwTmV0d29ya1Nlc3Npb24+IG1fc2Vzc2lvbjsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUHJvdGVjdGlvblNwYWNlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Qcm90ZWN0aW9uU3Bh
Y2UuaAkocmV2aXNpb24gMjA3MDM3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9Qcm90ZWN0aW9uU3BhY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsMTIgKzIzLDExIEBACiAg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKICAqLwogCi0jaWZuZGVmIFByb3RlY3Rpb25TcGFjZV9oCi0jZGVmaW5l
IFByb3RlY3Rpb25TcGFjZV9oCisjcHJhZ21hIG9uY2UKIAogI2lmIFBMQVRGT1JNKENPQ09BKQog
I2luY2x1ZGUgIlByb3RlY3Rpb25TcGFjZUNvY29hLmgiCi0jZWxpZiBVU0UoQ0ZORVRXT1JLKQor
I2VsaWYgVVNFKENGVVJMQ09OTkVDVElPTikKICNpbmNsdWRlICJQcm90ZWN0aW9uU3BhY2VDRk5l
dC5oIgogI2Vsc2UKIApAQCAtNTAsNSArNDksMyBAQCBwdWJsaWM6CiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKICNlbmRpZgotCi0jZW5kaWYgLy8gUHJvdGVjdGlvblNwYWNlX2gKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUHJvdGVjdGlvblNwYWNlQmFzZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Qcm90ZWN0aW9uU3Bh
Y2VCYXNlLmNwcAkocmV2aXNpb24gMjA3MDM3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9Qcm90ZWN0aW9uU3BhY2VCYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsMTEg
KzI3LDYgQEAKIAogI2luY2x1ZGUgIlByb3RlY3Rpb25TcGFjZS5oIgogCi0jaWYgVVNFKENGTkVU
V09SSykgJiYgIVBMQVRGT1JNKENPQ09BKQotI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ0YuaCIK
LSNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZVUkxQcm90ZWN0aW9uU3BhY2VQcml2Lmg+Ci0jZW5kaWYK
LQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAvLyBOZWVkIHRvIGVuZm9yY2UgZW1wdHksIG5vbi1u
dWxsIHN0cmluZ3MgZHVlIHRvIHRoZSBwaWNraW5lc3Mgb2YgdGhlIFN0cmluZyA9PSBTdHJpbmcg
b3BlcmF0b3IKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VI
YW5kbGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
UmVzb3VyY2VIYW5kbGUuY3BwCShyZXZpc2lvbiAyMDcwMzcpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU0
LDcgKzE1NCw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmNsZWFyQ2xpZW50KCkKICAgICBkLT5t
X2NsaWVudCA9IG51bGxwdHI7CiB9CiAKLSNpZiAhUExBVEZPUk0oQ09DT0EpICYmICFVU0UoQ0ZO
RVRXT1JLKSAmJiAhVVNFKFNPVVApCisjaWYgIVBMQVRGT1JNKENPQ09BKSAmJiAhVVNFKENGVVJM
Q09OTkVDVElPTikgJiYgIVVTRShTT1VQKQogLy8gUmVzb3VyY2VIYW5kbGUgbmV2ZXIgdXNlcyBh
c3luYyBjbGllbnQgY2FsbHMgb24gdGhlc2UgcGxhdGZvcm1zIHlldC4KIHZvaWQgUmVzb3VyY2VI
YW5kbGU6OmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmKQogewpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUu
aAkocmV2aXNpb24gMjA3MDM3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZUhhbmRsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3IEBACiAjaW5jbHVk
ZSAiUmVzb3VyY2VMb2FkUHJpb3JpdHkuaCIKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgog
Ci0jaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRk5FVFdPUkspCisjaWYgUExBVEZPUk0oQ09D
T0EpIHx8IFVTRShDRlVSTENPTk5FQ1RJT04pCiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgog
I2VuZGlmCiAKQEAgLTYwLDE0ICs2MCwxNCBAQCB0eXBlZGVmIHN0cnVjdCBvYmpjX29iamVjdCAq
aWQ7CiAjZW5kaWYKICNlbmRpZgogCi0jaWYgVVNFKENGTkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxD
T05ORUNUSU9OKQogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgX0NGQ2FjaGVkVVJMUmVzcG9uc2UqIENG
Q2FjaGVkVVJMUmVzcG9uc2VSZWY7CiB0eXBlZGVmIHN0cnVjdCBfQ0ZVUkxDb25uZWN0aW9uKiBD
RlVSTENvbm5lY3Rpb25SZWY7CiB0eXBlZGVmIGludCBDRkhUVFBDb29raWVTdG9yYWdlQWNjZXB0
UG9saWN5OwogdHlwZWRlZiBzdHJ1Y3QgT3BhcXVlQ0ZIVFRQQ29va2llU3RvcmFnZSogQ0ZIVFRQ
Q29va2llU3RvcmFnZVJlZjsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShD
Rk5FVFdPUkspCisjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRlVSTENPTk5FQ1RJT04pCiB0
eXBlZGVmIGNvbnN0IHN0cnVjdCBfX0NGVVJMU3RvcmFnZVNlc3Npb24qIENGVVJMU3RvcmFnZVNl
c3Npb25SZWY7CiAjZW5kaWYKIApAQCAtOTIsMjIgKzkyLDE3IEBAIGNsYXNzIFJlc291cmNlUmVz
cG9uc2U7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBUaW1lcjsKIAotY2xhc3MgUmVzb3Vy
Y2VIYW5kbGUgOiBwdWJsaWMgUmVmQ291bnRlZDxSZXNvdXJjZUhhbmRsZT4KLSNpZiBQTEFURk9S
TShDT0NPQSkgfHwgVVNFKENGTkVUV09SSykgfHwgVVNFKENVUkwpIHx8IFVTRShTT1VQKQotICAg
ICwgcHVibGljIEF1dGhlbnRpY2F0aW9uQ2xpZW50Ci0jZW5kaWYKLSAgICB7CitjbGFzcyBSZXNv
dXJjZUhhbmRsZSA6IHB1YmxpYyBSZWZDb3VudGVkPFJlc291cmNlSGFuZGxlPiAsIHB1YmxpYyBB
dXRoZW50aWNhdGlvbkNsaWVudCB7CiBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IFJlZlB0cjxSZXNvdXJjZUhhbmRsZT4gY3JlYXRlKE5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiwgUmVzb3VyY2VIYW5kbGVDbGllbnQqLCBib29sIGRlZmVyc0xvYWRp
bmcsIGJvb2wgc2hvdWxkQ29udGVudFNuaWZmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
dm9pZCBsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KE5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiwgU3RvcmVkQ3JlZGVudGlhbHMsIFJlc291cmNlRXJyb3ImLCBSZXNv
dXJjZVJlc3BvbnNlJiwgVmVjdG9yPGNoYXI+JiBkYXRhKTsKIAogICAgIFdFQkNPUkVfRVhQT1JU
IHZpcnR1YWwgflJlc291cmNlSGFuZGxlKCk7CiAKLSNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNF
KENGTkVUV09SSykKKyNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKENGVVJMQ09OTkVDVElPTikK
ICAgICBSZXNvdXJjZVJlcXVlc3Qgd2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmLCBS
ZXNvdXJjZVJlc3BvbnNlJiYpOwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNF
KENGTkVUV09SSykgfHwgVVNFKENVUkwpIHx8IFVTRShTT1VQKQogICAgIGJvb2wgc2hvdWxkVXNl
Q3JlZGVudGlhbFN0b3JhZ2UoKTsKICAgICB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZShjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpOwogICAgIHZvaWQgcmVjZWl2
ZWRDcmVkZW50aWFsKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiwgY29uc3QgQ3JlZGVu
dGlhbCYpIG92ZXJyaWRlOwpAQCAtMTE1LDkgKzExMCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHJl
Y2VpdmVkQ2FuY2VsbGF0aW9uKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikgb3ZlcnJp
ZGU7CiAgICAgdm9pZCByZWNlaXZlZFJlcXVlc3RUb1BlcmZvcm1EZWZhdWx0SGFuZGxpbmcoY29u
c3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKSBvdmVycmlkZTsKICAgICB2b2lkIHJlY2VpdmVk
Q2hhbGxlbmdlUmVqZWN0aW9uKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikgb3ZlcnJp
ZGU7Ci0jZW5kaWYKIAotI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZORVRXT1JLKQorI2lm
IFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogICAgIGJvb2wgdHJ5SGFu
ZGxlUGFzc3dvcmRCYXNlZEF1dGhlbnRpY2F0aW9uKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlJik7CiAjZW5kaWYKIApAQCAtMTI1LDcgKzExOSw3IEBAIHB1YmxpYzoKICAgICBib29sIGNh
bkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoY29uc3QgUHJvdGVjdGlvblNwYWNl
Jik7CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKENPQ09BKSAmJiAhVVNFKENGTkVUV09SSykKKyNp
ZiBQTEFURk9STShDT0NPQSkKICAgICBXRUJDT1JFX0VYUE9SVCBOU1VSTENvbm5lY3Rpb24gKmNv
bm5lY3Rpb24oKSBjb25zdDsKICAgICBpZCBtYWtlRGVsZWdhdGUoYm9vbCk7CiAgICAgaWQgZGVs
ZWdhdGUoKTsKQEAgLTEzMywxOSArMTI3LDE1IEBAIHB1YmxpYzoKICNlbmRpZgogICAgICAgICAK
ICNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKFdFQl9USU1JTkcpCi0jaWYgVVNFKENGTkVU
V09SSykKLSAgICBzdGF0aWMgdm9pZCBnZXRDb25uZWN0aW9uVGltaW5nRGF0YShDRlVSTENvbm5l
Y3Rpb25SZWYsIE5ldHdvcmtMb2FkVGltaW5nJik7Ci0jZWxzZQogICAgIHN0YXRpYyB2b2lkIGdl
dENvbm5lY3Rpb25UaW1pbmdEYXRhKE5TVVJMQ29ubmVjdGlvbiAqLCBOZXR3b3JrTG9hZFRpbWlu
ZyYpOwogI2VuZGlmCi0jZW5kaWYKICAgICAgICAgCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAg
dm9pZCBzY2hlZHVsZShXVEY6OlNjaGVkdWxlUGFpciYpOwogICAgIHZvaWQgdW5zY2hlZHVsZShX
VEY6OlNjaGVkdWxlUGFpciYpOwogI2VuZGlmCiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQorI2lmIFVT
RShDRlVSTENPTk5FQ1RJT04pCiAgICAgQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBzdG9yYWdlU2Vz
c2lvbigpIGNvbnN0OwogICAgIENGVVJMQ29ubmVjdGlvblJlZiBjb25uZWN0aW9uKCkgY29uc3Q7
CiAgICAgV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRyPENGVVJMQ29ubmVjdGlvblJlZj4gcmVsZWFz
ZUNvbm5lY3Rpb25Gb3JEb3dubG9hZCgpOwpAQCAtMjA4LDEwICsxOTgsMTAgQEAgcHVibGljOgog
I2VuZGlmCiAKICAgICAvLyBDYWxsZWQgaW4gcmVzcG9uc2UgdG8gUmVzb3VyY2VIYW5kbGVDbGll
bnQ6OndpbGxDYWNoZVJlc3BvbnNlQXN5bmMoKS4KLSNpZiBVU0UoQ0ZORVRXT1JLKQorI2lmIFVT
RShDRlVSTENPTk5FQ1RJT04pCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb250aW51ZVdpbGxD
YWNoZVJlc3BvbnNlKENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYpOwogI2VuZGlmCi0jaWYgUExBVEZP
Uk0oQ09DT0EpICYmICFVU0UoQ0ZORVRXT1JLKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgY29udGludWVXaWxsQ2FjaGVSZXNwb25zZShOU0NhY2hlZFVSTFJl
c3BvbnNlICopOwogI2VuZGlmCiAKQEAgLTIyNywxNCArMjE3LDEwIEBAIHB1YmxpYzoKICAgICB1
c2luZyBSZWZDb3VudGVkPFJlc291cmNlSGFuZGxlPjo6cmVmOwogICAgIHVzaW5nIFJlZkNvdW50
ZWQ8UmVzb3VyY2VIYW5kbGU+OjpkZXJlZjsKIAotI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0Uo
Q0ZORVRXT1JLKQorI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZVUkxDT05ORUNUSU9OKQog
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBDRlN0cmluZ1JlZiBzeW5jaHJvbm91c0xvYWRSdW5M
b29wTW9kZSgpOwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShJT1MpICYmIFVTRShDRk5FVFdPUksp
Ci0gICAgc3RhdGljIENGTXV0YWJsZURpY3Rpb25hcnlSZWYgY3JlYXRlU1NMUHJvcGVydGllc0Zy
b21OU1VSTFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7Ci0jZW5kaWYKLQogICAgIHR5
cGVkZWYgUmVmPFJlc291cmNlSGFuZGxlPiAoKkJ1aWx0aW5Db25zdHJ1Y3RvcikoY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBSZXNvdXJjZUhhbmRsZUNsaWVudCogY2xpZW50KTsKICAg
ICBzdGF0aWMgdm9pZCByZWdpc3RlckJ1aWx0aW5Db25zdHJ1Y3Rvcihjb25zdCBBdG9taWNTdHJp
bmcmIHByb3RvY29sLCBCdWlsdGluQ29uc3RydWN0b3IpOwogCkBAIC0yNjMsMTkgKzI0OSwxOSBA
QCBwcml2YXRlOgogICAgIHZvaWQgcmVmQXV0aGVudGljYXRpb25DbGllbnQoKSBvdmVycmlkZSB7
IHJlZigpOyB9CiAgICAgdm9pZCBkZXJlZkF1dGhlbnRpY2F0aW9uQ2xpZW50KCkgb3ZlcnJpZGUg
eyBkZXJlZigpOyB9CiAKLSNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKENGTkVUV09SSykKKyNp
ZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKENGVVJMQ09OTkVDVElPTikKICAgICBlbnVtIGNsYXNz
IFNjaGVkdWxpbmdCZWhhdmlvciB7IEFzeW5jaHJvbm91cywgU3luY2hyb25vdXMgfTsKICNlbmRp
ZgogCi0jaWYgVVNFKENGTkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogICAgIHZv
aWQgY3JlYXRlQ0ZVUkxDb25uZWN0aW9uKGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2Us
IGJvb2wgc2hvdWxkQ29udGVudFNuaWZmLCBTY2hlZHVsaW5nQmVoYXZpb3IsIENGRGljdGlvbmFy
eVJlZiBjbGllbnRQcm9wZXJ0aWVzKTsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oTUFDKSAmJiAh
VVNFKENGTkVUV09SSykKKyNpZiBQTEFURk9STShNQUMpCiAgICAgdm9pZCBjcmVhdGVOU1VSTENv
bm5lY3Rpb24oaWQgZGVsZWdhdGUsIGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UsIGJv
b2wgc2hvdWxkQ29udGVudFNuaWZmLCBTY2hlZHVsaW5nQmVoYXZpb3IpOwogI2VuZGlmCiAKLSNp
ZiBQTEFURk9STShJT1MpICYmICFVU0UoQ0ZORVRXT1JLKQorI2lmIFBMQVRGT1JNKElPUykKICAg
ICB2b2lkIGNyZWF0ZU5TVVJMQ29ubmVjdGlvbihpZCBkZWxlZ2F0ZSwgYm9vbCBzaG91bGRVc2VD
cmVkZW50aWFsU3RvcmFnZSwgYm9vbCBzaG91bGRDb250ZW50U25pZmYsIFNjaGVkdWxpbmdCZWhh
dmlvciwgTlNEaWN0aW9uYXJ5ICpjb25uZWN0aW9uUHJvcGVydGllcyk7CiAjZW5kaWYKIApJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJj
ZUhhbmRsZUNsaWVudC5jcHAJKHJldmlzaW9uIDIwNzAzNykKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC02Miw3ICs2Miw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGVDbGllbnQ6OmNhbkF1dGhlbnRpY2EK
IH0KICNlbmRpZgogCi0jaWYgVVNFKENGTkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9O
KQogdm9pZCBSZXNvdXJjZUhhbmRsZUNsaWVudDo6d2lsbENhY2hlUmVzcG9uc2VBc3luYyhSZXNv
dXJjZUhhbmRsZSogaGFuZGxlLCBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmIHJlc3BvbnNlKQogewog
ICAgIGhhbmRsZS0+Y29udGludWVXaWxsQ2FjaGVSZXNwb25zZShyZXNwb25zZSk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRs
ZUNsaWVudC5oCShyZXZpc2lvbiAyMDcwMzcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDEyICsy
OSwxMiBAQAogI2luY2x1ZGUgIlBsYXRmb3JtRXhwb3J0TWFjcm9zLmgiCiAjaW5jbHVkZSA8d3Rm
L1JlZi5oPgogCi0jaWYgVVNFKENGTkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQog
I2luY2x1ZGUgPENGTmV0d29yay9DRlVSTENhY2hlUHJpdi5oPgogI2luY2x1ZGUgPENGTmV0d29y
ay9DRlVSTFJlc3BvbnNlUHJpdi5oPgogI2VuZGlmCiAKLSNpZiBQTEFURk9STShJT1MpIHx8IFVT
RShDRk5FVFdPUkspCisjaWYgUExBVEZPUk0oSU9TKSB8fCBVU0UoQ0ZVUkxDT05ORUNUSU9OKQog
I2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNlbmRpZgogCkBAIC05Niw3ICs5Niw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGNh
bkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2VBc3luYyhSZXNvdXJjZUhhbmRsZSos
IGNvbnN0IFByb3RlY3Rpb25TcGFjZSYpOwogI2VuZGlmCiAgICAgICAgIC8vIENsaWVudCB3aWxs
IHBhc3MgYW4gdXBkYXRlZCByZXF1ZXN0IHVzaW5nIFJlc291cmNlSGFuZGxlOjpjb250aW51ZVdp
bGxDYWNoZVJlc3BvbnNlKCkgd2hlbiByZWFkeS4KLSNpZiBVU0UoQ0ZORVRXT1JLKQorI2lmIFVT
RShDRlVSTENPTk5FQ1RJT04pCiAgICAgICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCB3
aWxsQ2FjaGVSZXNwb25zZUFzeW5jKFJlc291cmNlSGFuZGxlKiwgQ0ZDYWNoZWRVUkxSZXNwb25z
ZVJlZik7CiAjZWxpZiBQTEFURk9STShDT0NPQSkKICAgICAgICAgV0VCQ09SRV9FWFBPUlQgdmly
dHVhbCB2b2lkIHdpbGxDYWNoZVJlc3BvbnNlQXN5bmMoUmVzb3VyY2VIYW5kbGUqLCBOU0NhY2hl
ZFVSTFJlc3BvbnNlICopOwpAQCAtMTE4LDE2ICsxMTgsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogI2VuZGlmCiAgICAgICAgIHZpcnR1YWwgdm9pZCByZWNlaXZlZENhbmNlbGxhdGlvbihSZXNv
dXJjZUhhbmRsZSosIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikgeyB9CiAKLSNpZiBQ
TEFURk9STShJT1MpIHx8IFVTRShDRk5FVFdPUkspCisjaWYgUExBVEZPUk0oSU9TKSB8fCBVU0Uo
Q0ZVUkxDT05ORUNUSU9OKQogICAgICAgICB2aXJ0dWFsIFJldGFpblB0cjxDRkRpY3Rpb25hcnlS
ZWY+IGNvbm5lY3Rpb25Qcm9wZXJ0aWVzKFJlc291cmNlSGFuZGxlKikgeyByZXR1cm4gbnVsbHB0
cjsgfQogI2VuZGlmCiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQorI2lmIFVTRShDRlVSTENPTk5FQ1RJ
T04pCiAgICAgICAgIHZpcnR1YWwgQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZiB3aWxsQ2FjaGVSZXNw
b25zZShSZXNvdXJjZUhhbmRsZSosIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYgcmVzcG9uc2UpIHsg
cmV0dXJuIHJlc3BvbnNlOyB9Ci0jaWYgUExBVEZPUk0oV0lOKQogICAgICAgICB2aXJ0dWFsIGJv
b2wgc2hvdWxkQ2FjaGVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSosIENGQ2FjaGVkVVJMUmVzcG9u
c2VSZWYpIHsgcmV0dXJuIHRydWU7IH0KLSNlbmRpZiAvLyBQTEFURk9STShXSU4pCi0KICNlbGlm
IFBMQVRGT1JNKENPQ09BKQogICAgICAgICB2aXJ0dWFsIE5TQ2FjaGVkVVJMUmVzcG9uc2UgKndp
bGxDYWNoZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlKiwgTlNDYWNoZWRVUkxSZXNwb25zZSAqcmVz
cG9uc2UpIHsgcmV0dXJuIHJlc3BvbnNlOyB9CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5o
CShyZXZpc2lvbiAyMDcwMzcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jl
c291cmNlSGFuZGxlSW50ZXJuYWwuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNyBAQAog
I2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIK
IAotI2lmIFVTRShDRk5FVFdPUkspCisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKICNpbmNsdWRl
ICJSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmgiCiAjaW5jbHVkZSA8Q0ZO
ZXR3b3JrL0NGVVJMQ29ubmVjdGlvblByaXYuaD4KICNlbmRpZgpAQCAtNjEsNyArNjEsNyBAQCBP
QkpDX0NMQVNTIE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2U7CiBPQkpDX0NMQVNTIE5TVVJM
Q29ubmVjdGlvbjsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRk5FVFdP
UkspCisjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRlVSTENPTk5FQ1RJT04pCiB0eXBlZGVm
IGNvbnN0IHN0cnVjdCBfX0NGVVJMU3RvcmFnZVNlc3Npb24qIENGVVJMU3RvcmFnZVNlc3Npb25S
ZWY7CiAjZW5kaWYKIApAQCAtODMsNyArODMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgICAgICAsIG1fZGVmZXJzTG9hZGluZyhkZWZlcnNMb2FkaW5nKQogICAgICAgICAgICAgLCBt
X3Nob3VsZENvbnRlbnRTbmlmZihzaG91bGRDb250ZW50U25pZmYpCiAgICAgICAgICAgICAsIG1f
dXNlc0FzeW5jQ2FsbGJhY2tzKGNsaWVudCAmJiBjbGllbnQtPnVzZXNBc3luY0NhbGxiYWNrcygp
KQotI2lmIFVTRShDRk5FVFdPUkspCisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKICAgICAgICAg
ICAgICwgbV9jdXJyZW50UmVxdWVzdChyZXF1ZXN0KQogI2VuZGlmCiAjaWYgVVNFKENVUkwpCkBA
IC0xMzEsMTkgKzEzMSwxOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wgbV9k
ZWZlcnNMb2FkaW5nOwogICAgICAgICBib29sIG1fc2hvdWxkQ29udGVudFNuaWZmOwogICAgICAg
ICBib29sIG1fdXNlc0FzeW5jQ2FsbGJhY2tzOwotI2lmIFVTRShDRk5FVFdPUkspCisjaWYgVVNF
KENGVVJMQ09OTkVDVElPTikKICAgICAgICAgUmV0YWluUHRyPENGVVJMQ29ubmVjdGlvblJlZj4g
bV9jb25uZWN0aW9uOwogICAgICAgICBSZXNvdXJjZVJlcXVlc3QgbV9jdXJyZW50UmVxdWVzdDsK
ICAgICAgICAgUmVmUHRyPFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU+IG1f
Y29ubmVjdGlvbkRlbGVnYXRlOwogI2VuZGlmCi0jaWYgUExBVEZPUk0oQ09DT0EpICYmICFVU0Uo
Q0ZORVRXT1JLKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgICAgICBSZXRhaW5QdHI8TlNVUkxD
b25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247CiAgICAgICAgIFJldGFpblB0cjxpZD4gbV9kZWxlZ2F0
ZTsKICNlbmRpZgogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgICAgICBib29sIG1fc3RhcnRXaGVu
U2NoZWR1bGVkOwogI2VuZGlmCi0jaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRk5FVFdPUksp
CisjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRlVSTENPTk5FQ1RJT04pCiAgICAgICAgIFJl
dGFpblB0cjxDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmPiBtX3N0b3JhZ2VTZXNzaW9uOwogI2VuZGlm
CiAjaWYgVVNFKENVUkwpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jl
c291cmNlUmVxdWVzdEJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAJKHJldmlzaW9uIDIwNzAzNykKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci0jaWYgIVVTRShTT1VQKSAmJiAoIVBMQVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZORVRXT1JLKSkK
KyNpZiAhVVNFKFNPVVApICYmICghUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRlVSTENPTk5FQ1RJ
T04pKQogZG91YmxlIFJlc291cmNlUmVxdWVzdEJhc2U6OnNfZGVmYXVsdFRpbWVvdXRJbnRlcnZh
bCA9IElOVF9NQVg7CiAjZWxzZQogLy8gV2lsbCB1c2UgTlNVUkxSZXF1ZXN0IGRlZmF1bHQgdGlt
ZW91dCB1bmxlc3Mgc2V0IHRvIGEgbm9uLXplcm8gdmFsdWUgd2l0aCBzZXREZWZhdWx0VGltZW91
dEludGVydmFsKCkuCkBAIC02MDIsNyArNjAyLDcgQEAgdm9pZCBSZXNvdXJjZVJlcXVlc3RCYXNl
Ojp1cGRhdGVSZXNvdXJjZQogICAgIH0KIH0KIAotI2lmICFQTEFURk9STShDT0NPQSkgJiYgIVVT
RShDRk5FVFdPUkspICYmICFVU0UoU09VUCkKKyNpZiAhUExBVEZPUk0oQ09DT0EpICYmICFVU0Uo
Q0ZVUkxDT05ORUNUSU9OKSAmJiAhVVNFKFNPVVApCiB1bnNpZ25lZCBpbml0aWFsaXplTWF4aW11
bUhUVFBDb25uZWN0aW9uQ291bnRQZXJIb3N0KCkKIHsKICAgICAvLyBUaGlzIGlzIHVzZWQgYnkg
dGhlIGxvYWRlciB0byBjb250cm9sIHRoZSBudW1iZXIgb2YgaXNzdWVkIHBhcmFsbGVsIGxvYWQg
cmVxdWVzdHMuIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9BdXRo
ZW50aWNhdGlvbkNGLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NmL0F1dGhlbnRpY2F0aW9uQ0YuY3BwCShyZXZpc2lvbiAyMDcwMzcpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0F1dGhlbnRpY2F0aW9uQ0YuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiQXV0aGVudGljYXRpb25DRi5oIgogCi0jaWYgVVNFKENGTkVUV09SSykKKyNpZiBVU0UoQ0ZV
UkxDT05ORUNUSU9OKQogCiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCIKICNp
bmNsdWRlICJBdXRoZW50aWNhdGlvbkNsaWVudC5oIgpAQCAtNTEsMTggKzUxLDggQEAgQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2U6OkF1dGhlbnRpY2F0aW9uQwogewogfQogCi1BdXRoZW50aWNhdGlv
bkNoYWxsZW5nZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UoQ0ZVUkxBdXRoQ2hhbGxlbmdlUmVm
IGNmQ2hhbGxlbmdlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEF1dGhlbnRpY2F0aW9uQ2xpZW50KiBhdXRoZW50aWNhdGlvbkNsaWVudCkKLSNpZiBQ
TEFURk9STShDT0NPQSkKLSAgICA6IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZShQcm90ZWN0
aW9uU3BhY2UoQ0ZVUkxBdXRoQ2hhbGxlbmdlR2V0UHJvdGVjdGlvblNwYWNlKGNmQ2hhbGxlbmdl
KSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ3JlZGVudGlhbChDRlVSTEF1
dGhDaGFsbGVuZ2VHZXRQcm9wb3NlZENyZWRlbnRpYWwoY2ZDaGFsbGVuZ2UpKSwKLSNlbHNlCi0g
ICAgOiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2UoY29yZShDRlVSTEF1dGhDaGFsbGVuZ2VH
ZXRQcm90ZWN0aW9uU3BhY2UoY2ZDaGFsbGVuZ2UpKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb3JlKENGVVJMQXV0aENoYWxsZW5nZUdldFByb3Bvc2VkQ3JlZGVudGlhbChj
ZkNoYWxsZW5nZSkpLAotI2VuZGlmCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Q0ZVUkxBdXRoQ2hhbGxlbmdlR2V0UHJldmlvdXNGYWlsdXJlQ291bnQoY2ZDaGFsbGVuZ2UpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDRlVSTFJlc3BvbnNlUmVmKUNGVVJM
QXV0aENoYWxsZW5nZUdldEZhaWx1cmVSZXNwb25zZShjZkNoYWxsZW5nZSksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQ0ZVUkxBdXRoQ2hhbGxlbmdlR2V0RXJyb3IoY2ZDaGFs
bGVuZ2UpKQorQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
KENGVVJMQXV0aENoYWxsZW5nZVJlZiBjZkNoYWxsZW5nZSwgQXV0aGVudGljYXRpb25DbGllbnQq
IGF1dGhlbnRpY2F0aW9uQ2xpZW50KQorICAgIDogQXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNl
KGNvcmUoQ0ZVUkxBdXRoQ2hhbGxlbmdlR2V0UHJvdGVjdGlvblNwYWNlKGNmQ2hhbGxlbmdlKSks
IGNvcmUoQ0ZVUkxBdXRoQ2hhbGxlbmdlR2V0UHJvcG9zZWRDcmVkZW50aWFsKGNmQ2hhbGxlbmdl
KSksIENGVVJMQXV0aENoYWxsZW5nZUdldFByZXZpb3VzRmFpbHVyZUNvdW50KGNmQ2hhbGxlbmdl
KSwgKENGVVJMUmVzcG9uc2VSZWYpQ0ZVUkxBdXRoQ2hhbGxlbmdlR2V0RmFpbHVyZVJlc3BvbnNl
KGNmQ2hhbGxlbmdlKSwgQ0ZVUkxBdXRoQ2hhbGxlbmdlR2V0RXJyb3IoY2ZDaGFsbGVuZ2UpKQog
ICAgICwgbV9hdXRoZW50aWNhdGlvbkNsaWVudChhdXRoZW50aWNhdGlvbkNsaWVudCkKICAgICAs
IG1fY2ZDaGFsbGVuZ2UoY2ZDaGFsbGVuZ2UpCiB7CkBAIC05MywyMiArODMsMTIgQEAgQ0ZVUkxB
dXRoQ2hhbGxlbmdlUmVmIGNyZWF0ZUNGKGNvbnN0IEF1dAogewogICAgIC8vIEZJWE1FOiBXaHkg
bm90IGNhY2hlIENGVVJMQXV0aENoYWxsZW5nZVJlZiBpbiBtX2NmQ2hhbGxlbmdlPyBGb3VuZGF0
aW9uIGNvdW50ZXJwYXJ0IGRvZXMgdGhhdC4KIAotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIENG
VVJMQXV0aENoYWxsZW5nZVJlZiByZXN1bHQgPSBDRlVSTEF1dGhDaGFsbGVuZ2VDcmVhdGUoMCwg
Y29yZUNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UoKS5jZlNwYWNlKCksIGNvcmVDaGFsbGVuZ2Uu
cHJvcG9zZWRDcmVkZW50aWFsKCkuY2ZDcmVkZW50aWFsKCksCi0jZWxzZQogICAgIFJldGFpblB0
cjxDRlVSTENyZWRlbnRpYWxSZWY+IGNyZWRlbnRpYWwgPSBhZG9wdENGKGNyZWF0ZUNGKGNvcmVD
aGFsbGVuZ2UucHJvcG9zZWRDcmVkZW50aWFsKCkpKTsKICAgICBSZXRhaW5QdHI8Q0ZVUkxQcm90
ZWN0aW9uU3BhY2VSZWY+IHByb3RlY3Rpb25TcGFjZSA9IGFkb3B0Q0YoY3JlYXRlQ0YoY29yZUNo
YWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UoKSkpOwogCi0gICAgQ0ZVUkxBdXRoQ2hhbGxlbmdlUmVm
IHJlc3VsdCA9IENGVVJMQXV0aENoYWxsZW5nZUNyZWF0ZSgwLCBwcm90ZWN0aW9uU3BhY2UuZ2V0
KCksIGNyZWRlbnRpYWwuZ2V0KCksCi0jZW5kaWYKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb3JlQ2hhbGxlbmdlLnByZXZpb3VzRmFpbHVyZUNvdW50KCksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29yZUNoYWxsZW5nZS5mYWlsdXJl
UmVzcG9uc2UoKS5jZlVSTFJlc3BvbnNlKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29yZUNoYWxsZW5nZS5lcnJvcigpKTsKLSAgICByZXR1cm4gcmVzdWx0Owor
ICAgIHJldHVybiBDRlVSTEF1dGhDaGFsbGVuZ2VDcmVhdGUoMCwgcHJvdGVjdGlvblNwYWNlLmdl
dCgpLCBjcmVkZW50aWFsLmdldCgpLCBjb3JlQ2hhbGxlbmdlLnByZXZpb3VzRmFpbHVyZUNvdW50
KCksIGNvcmVDaGFsbGVuZ2UuZmFpbHVyZVJlc3BvbnNlKCkuY2ZVUkxSZXNwb25zZSgpLCBjb3Jl
Q2hhbGxlbmdlLmVycm9yKCkpOwogfQogCi0jaWYgUExBVEZPUk0oV0lOKQotCiBDRlVSTENyZWRl
bnRpYWxSZWYgY3JlYXRlQ0YoY29uc3QgQ3JlZGVudGlhbCYgY29yZUNyZWRlbnRpYWwpCiB7CiAg
ICAgQ0ZVUkxDcmVkZW50aWFsUGVyc2lzdGVuY2UgcGVyc2lzdGVuY2UgPSBrQ0ZVUkxDcmVkZW50
aWFsUGVyc2lzdGVuY2VOb25lOwpAQCAtMjkwLDggKzI3MCw3IEBAIFByb3RlY3Rpb25TcGFjZSBj
b3JlKENGVVJMUHJvdGVjdGlvblNwYWMKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENGVVJM
UHJvdGVjdGlvblNwYWNlR2V0UmVhbG0oY2ZTcGFjZSksCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzY2hlbWUpOwogfQotI2VuZGlmIC8vIFBMQVRGT1JNKFdJTikKIAogfTsKIAotI2VuZGlm
IC8vIFVTRShDRk5FVFdPUkspCisjZW5kaWYgLy8gVVNFKENGVVJMQ09OTkVDVElPTikKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQXV0aGVudGljYXRpb25DRi5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQXV0aGVudGlj
YXRpb25DRi5oCShyZXZpc2lvbiAyMDcwMzcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NmL0F1dGhlbnRpY2F0aW9uQ0YuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsMTAgKzIz
LDkgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICovCiAKLSNpZm5kZWYgQXV0aGVudGljYXRpb25DRl9o
Ci0jZGVmaW5lIEF1dGhlbnRpY2F0aW9uQ0ZfaAorI3ByYWdtYSBvbmNlCiAKLSNpZiBVU0UoQ0ZO
RVRXT1JLKQorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAKICNpbmNsdWRlIDxDRk5ldHdvcmsv
Q0ZVUkxDcmVkZW50aWFsUHJpdi5oPgogCkBAIC00MCwyMCArMzksMTAgQEAgY2xhc3MgQ3JlZGVu
dGlhbDsKIGNsYXNzIFByb3RlY3Rpb25TcGFjZTsKIAogQ0ZVUkxBdXRoQ2hhbGxlbmdlUmVmIGNy
ZWF0ZUNGKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJik7Ci0jaWYgUExBVEZPUk0oV0lO
KQogQ0ZVUkxDcmVkZW50aWFsUmVmIGNyZWF0ZUNGKGNvbnN0IENyZWRlbnRpYWwmKTsKIENGVVJM
UHJvdGVjdGlvblNwYWNlUmVmIGNyZWF0ZUNGKGNvbnN0IFByb3RlY3Rpb25TcGFjZSYpOwotI2Vu
ZGlmCi0KLSNpZiBQTEFURk9STShDT0NPQSkKLUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIGNvcmUo
Q0ZVUkxBdXRoQ2hhbGxlbmdlUmVmKTsKLSNlbmRpZgotI2lmIFBMQVRGT1JNKFdJTikKIENyZWRl
bnRpYWwgY29yZShDRlVSTENyZWRlbnRpYWxSZWYpOwogUHJvdGVjdGlvblNwYWNlIGNvcmUoQ0ZV
UkxQcm90ZWN0aW9uU3BhY2VSZWYpOwotI2VuZGlmCiB9CiAKLSNlbmRpZiAvLyBVU0UoQ0ZORVRX
T1JLKQotCi0jZW5kaWYgLy8gQXV0aGVudGljYXRpb25DRl9oCisjZW5kaWYgLy8gVVNFKENGVVJM
Q09OTkVDVElPTikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NmL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmgJKHJldmlzaW9uIDIwNzAz
NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsMTQgKzIzLDEzIEBACiAgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKICAqLwogCi0jaWZuZGVmIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlX2gKLSNkZWZpbmUg
QXV0aGVudGljYXRpb25DaGFsbGVuZ2VfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZUJhc2UuaCIKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNsaWVu
dC5oIgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAotI2lmIFVTRShDRk5FVFdPUkspCisjaWYg
VVNFKENGVVJMQ09OTkVDVElPTikKIAogdHlwZWRlZiBzdHJ1Y3QgX0NGVVJMQXV0aENoYWxsZW5n
ZSogQ0ZVUkxBdXRoQ2hhbGxlbmdlUmVmOwogCkBAIC01MCw3ICs0OSw3IEBAIGNsYXNzIEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlIDogcHVibGljIEEKIHB1YmxpYzoKICAgICBBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSgpIHt9CiAgICAgV0VCQ09SRV9FWFBPUlQgQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UoY29uc3QgUHJvdGVjdGlvblNwYWNlJiwgY29uc3QgQ3JlZGVudGlhbCYgcHJvcG9zZWRDcmVk
ZW50aWFsLCB1bnNpZ25lZCBwcmV2aW91c0ZhaWx1cmVDb3VudCwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYsIGNvbnN0IFJlc291cmNlRXJyb3ImKTsKLSNpZiBVU0UoQ0ZORVRXT1JLKQorI2lmIFVT
RShDRlVSTENPTk5FQ1RJT04pCiAgICAgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoQ0ZVUkxBdXRo
Q2hhbGxlbmdlUmVmLCBBdXRoZW50aWNhdGlvbkNsaWVudCopOwogCiAgICAgQ0ZVUkxBdXRoQ2hh
bGxlbmdlUmVmIGNmVVJMQXV0aENoYWxsZW5nZVJlZigpIGNvbnN0IHsgcmV0dXJuIG1fY2ZDaGFs
bGVuZ2UuZ2V0KCk7IH0KQEAgLTY5LDcgKzY4LDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgYm9v
bCBwbGF0Zm9ybUNvbXBhcmUoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGEsIGNvbnN0
IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBiKTsKIAogICAgIC8vIFBsYXRmb3JtIGNoYWxsZW5n
ZSBtYXkgYmUgbnVsbC4gSWYgaXQncyBub24tbnVsbCwgaXQncyBhbHdheXMgdXAgdG8gZGF0ZSB3
aXRoIG90aGVyIGZpZWxkcy4KLSNpZiBVU0UoQ0ZORVRXT1JLKQorI2lmIFVTRShDRlVSTENPTk5F
Q1RJT04pCiAgICAgUmVmUHRyPEF1dGhlbnRpY2F0aW9uQ2xpZW50PiBtX2F1dGhlbnRpY2F0aW9u
Q2xpZW50OwogICAgIFJldGFpblB0cjxDRlVSTEF1dGhDaGFsbGVuZ2VSZWY+IG1fY2ZDaGFsbGVu
Z2U7CiAjZWxzZQpAQCAtNzksNSArNzgsMyBAQCBwcml2YXRlOgogfTsKIAogfQotCi0jZW5kaWYK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQ29va2llSmFyQ0ZOZXQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQ29v
a2llSmFyQ0ZOZXQuY3BwCShyZXZpc2lvbiAyMDcwMzcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZUphckNGTmV0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYs
NyArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlBsYXRmb3JtQ29va2ll
SmFyLmgiCiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAK
ICNpbmNsdWRlICJDRk5ldHdvcmtTUEkuaCIKICNpbmNsdWRlICJDb29raWUuaCIKQEAgLTI1NSw0
ICsyNTUsNCBAQCB2b2lkIGRlbGV0ZUFsbENvb2tpZXNNb2RpZmllZFNpbmNlKGNvbnN0CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vIFVTRShDRk5FVFdPUkspCisjZW5kaWYg
Ly8gVVNFKENGVVJMQ09OTkVDVElPTikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY2YvQ3JlZGVudGlhbFN0b3JhZ2VDRk5ldC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9DcmVkZW50aWFsU3RvcmFnZUNGTmV0LmNwcAko
cmV2aXNpb24gMjA3MDM3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9D
cmVkZW50aWFsU3RvcmFnZUNGTmV0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsMjMgKzI2LDE0
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ3JlZGVudGlhbFN0b3JhZ2UuaCIK
IAotI2lmIFVTRShDRk5FVFdPUkspCisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKIAogI2luY2x1
ZGUgIkF1dGhlbnRpY2F0aW9uQ0YuaCIKICNpbmNsdWRlICJDRk5ldHdvcmtTUEkuaCIKICNpbmNs
dWRlICJDcmVkZW50aWFsLmgiCiAjaW5jbHVkZSAiUHJvdGVjdGlvblNwYWNlLmgiCi0jaW5jbHVk
ZSA8d3RmL1JldGFpblB0ci5oPgotCi0jaWYgUExBVEZPUk0oQ09DT0EpCi0jaW5jbHVkZSAiV2Vi
Q29yZVN5c3RlbUludGVyZmFjZS5oIgotI2VsaWYgUExBVEZPUk0oV0lOKQogI2luY2x1ZGUgPFdl
YktpdFN5c3RlbUludGVyZmFjZS9XZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaD4KLSNlbmRpZgotCi0j
aWYgUExBVEZPUk0oSU9TKQotI2luY2x1ZGUgPENGTmV0d29yay9DRlVSTENyZWRlbnRpYWxTdG9y
YWdlLmg+Ci0jZW5kaWYKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAKQEAgLTU0LDI5ICs0NSwxMSBAQCBzdGF0aWMgaW5saW5lIENGVVJMQ3Jl
ZGVudGlhbFJlZiBjb3B5Q3JlCiAKIENyZWRlbnRpYWwgQ3JlZGVudGlhbFN0b3JhZ2U6OmdldEZy
b21QZXJzaXN0ZW50U3RvcmFnZShjb25zdCBQcm90ZWN0aW9uU3BhY2UmIHByb3RlY3Rpb25TcGFj
ZSkKIHsKLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICBhdXRvIGNyZWRlbnRpYWxDRiA9IGFkb3B0
Q0YoY29weUNyZWRlbnRpYWxGcm9tUHJvdGVjdGlvblNwYWNlKHByb3RlY3Rpb25TcGFjZS5jZlNw
YWNlKCkpKTsKLSAgICByZXR1cm4gQ3JlZGVudGlhbChjcmVkZW50aWFsQ0YuZ2V0KCkpOwotI2Vs
c2UKICAgICBhdXRvIHByb3RlY3Rpb25TcGFjZUNGID0gYWRvcHRDRihjcmVhdGVDRihwcm90ZWN0
aW9uU3BhY2UpKTsKICAgICBhdXRvIGNyZWRlbnRpYWxDRiA9IGFkb3B0Q0YoY29weUNyZWRlbnRp
YWxGcm9tUHJvdGVjdGlvblNwYWNlKHByb3RlY3Rpb25TcGFjZUNGLmdldCgpKSk7CiAgICAgcmV0
dXJuIGNvcmUoY3JlZGVudGlhbENGLmdldCgpKTsKLSNlbmRpZgotfQotCi0jaWYgUExBVEZPUk0o
SU9TKQotdm9pZCBDcmVkZW50aWFsU3RvcmFnZTo6c2F2ZVRvUGVyc2lzdGVudFN0b3JhZ2UoY29u
c3QgUHJvdGVjdGlvblNwYWNlJiBwcm90ZWN0aW9uU3BhY2UsIGNvbnN0IENyZWRlbnRpYWwmIGNy
ZWRlbnRpYWwpCi17Ci0gICAgUmV0YWluUHRyPENGVVJMQ3JlZGVudGlhbFN0b3JhZ2VSZWY+IHN0
b3JhZ2VDRiA9IGFkb3B0Q0YoQ0ZVUkxDcmVkZW50aWFsU3RvcmFnZUNyZWF0ZSgwKSk7Ci0KLSAg
ICBpZiAoY3JlZGVudGlhbC5wZXJzaXN0ZW5jZSgpID09IENyZWRlbnRpYWxQZXJzaXN0ZW5jZU5v
bmUpIHsKLSAgICAgICAgQ3JlZGVudGlhbCBzZXNzaW9uQ3JlZGVudGlhbChjcmVkZW50aWFsLCBD
cmVkZW50aWFsUGVyc2lzdGVuY2VGb3JTZXNzaW9uKTsKLSAgICAgICAgQ0ZVUkxDcmVkZW50aWFs
U3RvcmFnZVNldERlZmF1bHRDcmVkZW50aWFsRm9yUHJvdGVjdGlvblNwYWNlKHN0b3JhZ2VDRi5n
ZXQoKSwgc2Vzc2lvbkNyZWRlbnRpYWwuY2ZDcmVkZW50aWFsKCksIHByb3RlY3Rpb25TcGFjZS5j
ZlNwYWNlKCkpOwotICAgIH0gZWxzZQotICAgICAgICBDRlVSTENyZWRlbnRpYWxTdG9yYWdlU2V0
RGVmYXVsdENyZWRlbnRpYWxGb3JQcm90ZWN0aW9uU3BhY2Uoc3RvcmFnZUNGLmdldCgpLCBjcmVk
ZW50aWFsLmNmQ3JlZGVudGlhbCgpLCBwcm90ZWN0aW9uU3BhY2UuY2ZTcGFjZSgpKTsKIH0KLSNl
bmRpZgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZiAvLyBVU0UoQ0ZORVRXT1JL
KQorI2VuZGlmIC8vIFVTRShDRlVSTENPTk5FQ1RJT04pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NmL0xvYWRlclJ1bkxvb3BDRi5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Mb2FkZXJSdW5Mb29wQ0YuY3BwCShyZXZp
c2lvbiAyMDcwMzcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0xvYWRl
clJ1bkxvb3BDRi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJMb2FkZXJSdW5Mb29wQ0YuaCIKIAotI2lmIFVTRShDRk5F
VFdPUkspCisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKIAogI2luY2x1ZGUgPENvcmVGb3VuZGF0
aW9uL0NvcmVGb3VuZGF0aW9uLmg+CiAjaW5jbHVkZSA8bGltaXRzPgpAQCAtODcsNCArODcsNCBA
QCBDRlJ1bkxvb3BSZWYgbG9hZGVyUnVuTG9vcCgpCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IAotI2VuZGlmIC8vIFVTRShDRk5FVFdPUkspCisjZW5kaWYgLy8gVVNFKENGVVJMQ09OTkVDVElP
TikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTG9hZGVyUnVuTG9v
cENGLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9M
b2FkZXJSdW5Mb29wQ0YuaAkocmV2aXNpb24gMjA3MDM3KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jZi9Mb2FkZXJSdW5Mb29wQ0YuaAkod29ya2luZyBjb3B5KQpAQCAtMjMs
MTAgKzIzLDkgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0j
aWZuZGVmIExvYWRlclJ1bkxvb3BDRl9oCi0jZGVmaW5lIExvYWRlclJ1bkxvb3BDRl9oCisjcHJh
Z21hIG9uY2UKIAotI2lmIFVTRShDRk5FVFdPUkspCisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikK
IAogdHlwZWRlZiBzdHJ1Y3QgX19DRlJ1bkxvb3AqIENGUnVuTG9vcFJlZjsKIApAQCAtMzYsNiAr
MzUsNCBAQCBDRlJ1bkxvb3BSZWYgbG9hZGVyUnVuTG9vcCgpOwogCiB9CiAKLSNlbmRpZiAvLyBV
U0UoQ0ZORVRXT1JLKQotCi0jZW5kaWYgLy8gTG9hZGVyUnVuTG9vcF9oCisjZW5kaWYgLy8gVVNF
KENGVVJMQ09OTkVDVElPTikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXQuY3Bw
CShyZXZpc2lvbiAyMDcwMzcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTMsMTEg
KzkzLDExIEBAIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBOZXR3b3IKICAgICBp
ZiAobV9wbGF0Zm9ybVNlc3Npb24pCiAgICAgICAgIHJldHVybiBhZG9wdENGKF9DRlVSTFN0b3Jh
Z2VTZXNzaW9uQ29weUNvb2tpZVN0b3JhZ2Uoa0NGQWxsb2NhdG9yRGVmYXVsdCwgbV9wbGF0Zm9y
bVNlc3Npb24uZ2V0KCkpKTsKIAotI2lmIFVTRShDRk5FVFdPUkspCisjaWYgVVNFKENGVVJMQ09O
TkVDVElPTikKICAgICByZXR1cm4gX0NGSFRUUENvb2tpZVN0b3JhZ2VHZXREZWZhdWx0KGtDRkFs
bG9jYXRvckRlZmF1bHQpOwogI2Vsc2UKICAgICAvLyBXaGVuIHVzaW5nIE5TVVJMQ29ubmVjdGlv
biwgd2UgYWxzbyB1c2UgaXRzIHNoYXJlZCBjb29raWUgc3RvcmFnZS4KLSAgICByZXR1cm4gMDsK
KyAgICByZXR1cm4gbnVsbHB0cjsKICNlbmRpZgogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NmL1Byb3RlY3Rpb25TcGFjZUNGTmV0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Byb3RlY3Rpb25TcGFjZUNGTmV0
LmNwcAkocmV2aXNpb24gMjA3MDM3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jZi9Qcm90ZWN0aW9uU3BhY2VDRk5ldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2
LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJQcm90ZWN0aW9uU3BhY2VDRk5l
dC5oIgogCi0jaWYgVVNFKENGTkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogCiAj
aW5jbHVkZSAiQXV0aGVudGljYXRpb25DRi5oIgogI2luY2x1ZGUgPENGTmV0d29yay9DRlVSTFBy
b3RlY3Rpb25TcGFjZVByaXYuaD4KQEAgLTQyLDQgKzQyLDQgQEAgYm9vbCBQcm90ZWN0aW9uU3Bh
Y2U6OnJlY2VpdmVzQ3JlZGVudGlhbAogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRp
ZiAvLyBVU0UoQ0ZORVRXT1JLKQorI2VuZGlmIC8vIFVTRShDRlVSTENPTk5FQ1RJT04pCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Byb3RlY3Rpb25TcGFjZUNGTmV0
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Qcm90
ZWN0aW9uU3BhY2VDRk5ldC5oCShyZXZpc2lvbiAyMDcwMzcpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NmL1Byb3RlY3Rpb25TcGFjZUNGTmV0LmgJKHdvcmtpbmcgY29weSkK
QEAgLTIzLDExICsyMywxMCBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAotI2lmbmRlZiBQcm90
ZWN0aW9uU3BhY2VDRk5ldF9oCi0jZGVmaW5lIFByb3RlY3Rpb25TcGFjZUNGTmV0X2gKKyNwcmFn
bWEgb25jZQogCi0jaWYgIVBMQVRGT1JNKFdJTikgfHwgIVVTRShDRk5FVFdPUkspCi0jZXJyb3Ig
VGhpcyBoZWFkZXIgc2hvdWxkIG9ubHkgYmUgaW5jbHVkZWQgd2hlbiB0YXJnZXRpbmcgV2luZG93
cyBhbmQgdXNpbmcgQ0ZOZXR3b3JrLgorI2lmICFQTEFURk9STShXSU4pIHx8ICFVU0UoQ0ZVUkxD
T05ORUNUSU9OKQorI2Vycm9yIFRoaXMgaGVhZGVyIHNob3VsZCBvbmx5IGJlIGluY2x1ZGVkIHdo
ZW4gdGFyZ2V0aW5nIFdpbmRvd3MgYW5kIHVzaW5nIENGVVJMQ29ubmVjdGlvbi4KICNlbmRpZgog
CiAjaW5jbHVkZSAiUHJvdGVjdGlvblNwYWNlQmFzZS5oIgpAQCAtNDgsNSArNDcsMyBAQCBwdWJs
aWM6CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBQcm90ZWN0aW9u
U3BhY2VDRk5ldF9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jl
c291cmNlRXJyb3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NmL1Jlc291cmNlRXJyb3IuaAkocmV2aXNpb24gMjA3MDM3KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yLmgJKHdvcmtpbmcgY29weSkKQEAg
LTI4LDEwICsyOCwxMSBAQAogI2luY2x1ZGUgIlJlc291cmNlRXJyb3JCYXNlLmgiCiAKICNpbmNs
dWRlIDx3dGYvUmV0YWluUHRyLmg+Ci0jaWYgVVNFKENGTkVUV09SSykKKworI2lmIFBMQVRGT1JN
KFdJTikKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9u
L0NGU3RyZWFtLmg+CiAjZW5kaWYKLSNpZiBQTEFURk9STShXSU4pCiAjaW5jbHVkZSA8d2luZG93
cy5oPgogI2luY2x1ZGUgPHdpbmNyeXB0Lmg+IC8vIHdpbmRvd3MuaCBtdXN0IGJlIGluY2x1ZGVk
IGJlZm9yZSB3aW5jcnlwdC5oLgogI2VuZGlmCkBAIC02MSwxMiArNjIsMTAgQEAgcHVibGljOgog
ICAgIFdFQkNPUkVfRVhQT1JUIENGRXJyb3JSZWYgY2ZFcnJvcigpIGNvbnN0OwogICAgIFdFQkNP
UkVfRVhQT1JUIG9wZXJhdG9yIENGRXJyb3JSZWYoKSBjb25zdDsKIAotI2lmIFVTRShDRk5FVFdP
UkspCi0jaWYgUExBVEZPUk0oV0lOKQorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAgICAgUmVz
b3VyY2VFcnJvcihjb25zdCBTdHJpbmcmIGRvbWFpbiwgaW50IGVycm9yQ29kZSwgY29uc3QgVVJM
JiBmYWlsaW5nVVJMLCBjb25zdCBTdHJpbmcmIGxvY2FsaXplZERlc2NyaXB0aW9uLCBDRkRhdGFS
ZWYgY2VydGlmaWNhdGUpOwogICAgIFBDQ0VSVF9DT05URVhUIGNlcnRpZmljYXRlKCkgY29uc3Q7
CiAgICAgdm9pZCBzZXRDZXJ0aWZpY2F0ZShDRkRhdGFSZWYpOwotI2VuZGlmCiAgICAgUmVzb3Vy
Y2VFcnJvcihDRlN0cmVhbUVycm9yIGVycm9yKTsKICAgICBDRlN0cmVhbUVycm9yIGNmU3RyZWFt
RXJyb3IoKSBjb25zdDsKICAgICBvcGVyYXRvciBDRlN0cmVhbUVycm9yKCkgY29uc3Q7CkBAIC04
OCwxNCArODcsMTMgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRvUGxhdGZvcm1Jc29sYXRlZENvcHko
Y29uc3QgUmVzb3VyY2VFcnJvciYpOwogCiAgICAgYm9vbCBtX2RhdGFJc1VwVG9EYXRlOwotI2lm
IFVTRShDRk5FVFdPUkspCisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKICAgICBtdXRhYmxlIFJl
dGFpblB0cjxDRkVycm9yUmVmPiBtX3BsYXRmb3JtRXJyb3I7Ci0jaWYgUExBVEZPUk0oQ09DT0Ep
CisjZWxpZiBQTEFURk9STShDT0NPQSkKICAgICBtdXRhYmxlIFJldGFpblB0cjxOU0Vycm9yPiBt
X3BsYXRmb3JtTlNFcnJvcjsKICNlbmRpZgogI2lmIFBMQVRGT1JNKFdJTikKICAgICBSZXRhaW5Q
dHI8Q0ZEYXRhUmVmPiBtX2NlcnRpZmljYXRlOwotI2VuZGlmCiAjZWxzZQogICAgIG11dGFibGUg
UmV0YWluUHRyPE5TRXJyb3I+IG1fcGxhdGZvcm1FcnJvcjsKICNlbmRpZgpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yQ0YuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VFcnJvckNG
LmNwcAkocmV2aXNpb24gMjA3MDM3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jZi9SZXNvdXJjZUVycm9yQ0YuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxNiArMjYsMTMg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJSZXNvdXJjZUVycm9yLmgiCiAKLSNp
ZiBVU0UoQ0ZORVRXT1JLKQorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAKICNpbmNsdWRlICJV
UkwuaCIKICNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9DRkVycm9yLmg+CiAjaW5jbHVkZSA8Q0ZO
ZXR3b3JrL0NGTmV0d29ya0Vycm9ycy5oPgotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLQot
I2lmIFBMQVRGT1JNKFdJTikKICNpbmNsdWRlIDxXZWJLaXRTeXN0ZW1JbnRlcmZhY2UvV2ViS2l0
U3lzdGVtSW50ZXJmYWNlLmg+Ci0jZW5kaWYKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMjE4LDQgKzIxNSw0IEBAIFJlc291cmNlRXJyb3I6
Om9wZXJhdG9yIENGU3RyZWFtRXJyb3IoKSAKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0j
ZW5kaWYgLy8gVVNFKENGTkVUV09SSykKKyNlbmRpZiAvLyBVU0UoQ0ZVUkxDT05ORUNUSU9OKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNG
TmV0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwCShyZXZpc2lvbiAyMDcwMzcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00Niw2ICs0Niw4IEBACiAjaW5jbHVkZSAiU3luY2hyb25vdXNMb2FkZXJDbGll
bnQuaCIKICNpbmNsdWRlICJTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9u
RGVsZWdhdGUuaCIKICNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZOZXR3b3JrLmg+CisjaW5jbHVkZSA8
V2ViS2l0U3lzdGVtSW50ZXJmYWNlL1dlYktpdFN5c3RlbUludGVyZmFjZS5oPgorI2luY2x1ZGUg
PHByb2Nlc3MuaD4KICNpbmNsdWRlIDxzeXMvc3RhdC5oPgogI2luY2x1ZGUgPHN5cy90eXBlcy5o
PgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC01NSwyMCArNTcsNiBAQAogI2luY2x1ZGUg
PHd0Zi90ZXh0L0Jhc2U2NC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAotI2lm
IFBMQVRGT1JNKENPQ09BKQotI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9u
RGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuaCIKLSNpbmNsdWRlICJXZWJDb3JlU3lzdGVtSW50
ZXJmYWNlLmgiCi0jaWYgVVNFKENGTkVUV09SSykKLSNpbmNsdWRlICJXZWJDb3JlVVJMUmVzcG9u
c2UuaCIKLSNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZVUkxDb25uZWN0aW9uUHJpdi5oPgotI2luY2x1
ZGUgPENGTmV0d29yay9DRlVSTFJlcXVlc3RQcml2Lmg+Ci0jZW5kaWYKLSNlbmRpZgotCi0jaWYg
UExBVEZPUk0oV0lOKQotI2luY2x1ZGUgPFdlYktpdFN5c3RlbUludGVyZmFjZS9XZWJLaXRTeXN0
ZW1JbnRlcmZhY2UuaD4KLSNpbmNsdWRlIDxwcm9jZXNzLmg+Ci0KIC8vIEZJWE1FOiBSZW1vdmUg
dGhpcyBkZWNsYXJhdGlvbiBvbmNlIGl0J3MgaW4gV2ViS2l0U3VwcG9ydExpYnJhcnkuCiBleHRl
cm4gIkMiIHsKIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBDRlVSTENvbm5lY3Rpb25SZWYgQ0ZVUkxD
b25uZWN0aW9uQ3JlYXRlV2l0aFByb3BlcnRpZXMoCkBAIC03NywxMSArNjUsMTAgQEAgX19kZWNs
c3BlYyhkbGxpbXBvcnQpIENGVVJMQ29ubmVjdGlvblJlZgogICBDRlVSTENvbm5lY3Rpb25DbGll
bnQgKiAgY2xpZW50LAogICBDRkRpY3Rpb25hcnlSZWYgcHJvcGVydGllcyk7CiB9Ci0jZW5kaWYK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0jaWYgVVNFKENGTkVUV09SSykKKyNpZiBVU0UoQ0ZV
UkxDT05ORUNUSU9OKQogCiBzdGF0aWMgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0
aXZlSGFzaD4mIGFsbG93c0FueUhUVFBTQ2VydGlmaWNhdGVIb3N0cygpCiB7CkBAIC0xMjAsMTEg
KzEwNyw3IEBAIFJlc291cmNlSGFuZGxlOjp+UmVzb3VyY2VIYW5kbGUoKQogICAgIAogc3RhdGlj
IGlubGluZSBDRlN0cmluZ1JlZiBzaG91bGRTbmlmZkNvbm5lY3Rpb25Qcm9wZXJ0eSgpCiB7Ci0j
aWYgUExBVEZPUk0oV0lOKQogICAgIHJldHVybiBDRlNUUigiX2tDRlVSTENvbm5lY3Rpb25Qcm9w
ZXJ0eVNob3VsZFNuaWZmIik7Ci0jZWxzZQotICAgIHJldHVybiBfa0NGVVJMQ29ubmVjdGlvblBy
b3BlcnR5U2hvdWxkU25pZmY7Ci0jZW5kaWYKIH0KIAogdm9pZCBSZXNvdXJjZUhhbmRsZTo6Y3Jl
YXRlQ0ZVUkxDb25uZWN0aW9uKGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UsIGJvb2wg
c2hvdWxkQ29udGVudFNuaWZmLCBTY2hlZHVsaW5nQmVoYXZpb3Igc2NoZWR1bGluZ0JlaGF2aW9y
LCBDRkRpY3Rpb25hcnlSZWYgY2xpZW50UHJvcGVydGllcykKQEAgLTE2Niw5ICsxNDksNiBAQCB2
b2lkIFJlc291cmNlSGFuZGxlOjpjcmVhdGVDRlVSTENvbm5lY3RpCiAKICAgICBSZXRhaW5QdHI8
Q0ZNdXRhYmxlRGljdGlvbmFyeVJlZj4gc3NsUHJvcHM7CiAKLSNpZiBQTEFURk9STShJT1MpCi0g
ICAgc3NsUHJvcHMgPSBhZG9wdENGKFJlc291cmNlSGFuZGxlOjpjcmVhdGVTU0xQcm9wZXJ0aWVz
RnJvbU5TVVJMUmVxdWVzdChmaXJzdFJlcXVlc3QoKSkpOwotI2Vsc2UKICAgICBpZiAoYWxsb3dz
QW55SFRUUFNDZXJ0aWZpY2F0ZUhvc3RzKCkuY29udGFpbnMoZmlyc3RSZXF1ZXN0KCkudXJsKCku
aG9zdCgpKSkgewogICAgICAgICBzc2xQcm9wcyA9IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRl
TXV0YWJsZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxs
QmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CiAgICAgICAgIENGRGlj
dGlvbmFyeUFkZFZhbHVlKHNzbFByb3BzLmdldCgpLCBrQ0ZTdHJlYW1TU0xBbGxvd3NBbnlSb290
LCBrQ0ZCb29sZWFuVHJ1ZSk7CkBAIC0xODEsMTEgKzE2MSw4IEBAIHZvaWQgUmVzb3VyY2VIYW5k
bGU6OmNyZWF0ZUNGVVJMQ29ubmVjdGkKICAgICBpZiAoY2xpZW50Q2VydCAhPSBjbGllbnRDZXJ0
aWZpY2F0ZXMoKS5lbmQoKSkgewogICAgICAgICBpZiAoIXNzbFByb3BzKQogICAgICAgICAgICAg
c3NsUHJvcHMgPSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9y
RGVmYXVsdCwgMCwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rp
b25hcnlWYWx1ZUNhbGxCYWNrcykpOwotI2lmIFBMQVRGT1JNKFdJTikKICAgICAgICAgd2tTZXRD
bGllbnRDZXJ0aWZpY2F0ZUluU1NMUHJvcGVydGllcyhzc2xQcm9wcy5nZXQoKSwgKGNsaWVudENl
cnQtPnZhbHVlKS5nZXQoKSk7Ci0jZW5kaWYKICAgICB9Ci0jZW5kaWYgLy8gUExBVEZPUk0oSU9T
KQogCiAgICAgaWYgKHNzbFByb3BzKQogICAgICAgICBDRlVSTFJlcXVlc3RTZXRTU0xQcm9wZXJ0
aWVzKHJlcXVlc3QuZ2V0KCksIHNzbFByb3BzLmdldCgpKTsKQEAgLTIwNiwxMiArMTgzLDYgQEAg
dm9pZCBSZXNvdXJjZUhhbmRsZTo6Y3JlYXRlQ0ZVUkxDb25uZWN0aQogICAgICAgICBDRkRpY3Rp
b25hcnlTZXRWYWx1ZShzdHJlYW1Qcm9wZXJ0aWVzLCBDRlNUUigiX1dlYktpdFN5bmNocm9ub3Vz
UmVxdWVzdCIpLCBrQ0ZCb29sZWFuVHJ1ZSk7CiAgICAgfQogCi0jaWYgUExBVEZPUk0oQ09DT0Ep
Ci0gICAgUmV0YWluUHRyPENGRGF0YVJlZj4gc291cmNlQXBwbGljYXRpb25BdWRpdERhdGEgPSBk
LT5tX2NvbnRleHQtPnNvdXJjZUFwcGxpY2F0aW9uQXVkaXREYXRhKCk7Ci0gICAgaWYgKHNvdXJj
ZUFwcGxpY2F0aW9uQXVkaXREYXRhKQotICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShzdHJl
YW1Qcm9wZXJ0aWVzLCBDRlNUUigia0NGU3RyZWFtUHJvcGVydHlTb3VyY2VBcHBsaWNhdGlvbiIp
LCBzb3VyY2VBcHBsaWNhdGlvbkF1ZGl0RGF0YS5nZXQoKSk7Ci0jZW5kaWYKLQogICAgIHN0YXRp
YyBjb25zdCBDRlN0cmluZ1JlZiBrQ0ZVUkxDb25uZWN0aW9uU29ja2V0U3RyZWFtUHJvcGVydGll
cyA9IENGU1RSKCJrQ0ZVUkxDb25uZWN0aW9uU29ja2V0U3RyZWFtUHJvcGVydGllcyIpOwogICAg
IFJldGFpblB0cjxDRk11dGFibGVEaWN0aW9uYXJ5UmVmPiBwcm9wZXJ0aWVzRGljdGlvbmFyeTsK
ICAgICBpZiAoY2xpZW50UHJvcGVydGllcykKQEAgLTIzMCwxNCArMjAxLDcgQEAgdm9pZCBSZXNv
dXJjZUhhbmRsZTo6Y3JlYXRlQ0ZVUkxDb25uZWN0aQogICAgIENGRGljdGlvbmFyeUFkZFZhbHVl
KHByb3BlcnRpZXNEaWN0aW9uYXJ5LmdldCgpLCBrQ0ZVUkxDb25uZWN0aW9uU29ja2V0U3RyZWFt
UHJvcGVydGllcywgc3RyZWFtUHJvcGVydGllcyk7CiAgICAgQ0ZSZWxlYXNlKHN0cmVhbVByb3Bl
cnRpZXMpOwogCi0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgaWYgKGQtPm1fdXNlc0FzeW5jQ2Fs
bGJhY2tzKQotICAgICAgICBkLT5tX2Nvbm5lY3Rpb25EZWxlZ2F0ZSA9IGFkb3B0UmVmKG5ldyBS
ZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlKHRo
aXMpKTsKLSAgICBlbHNlCi0gICAgICAgIGQtPm1fY29ubmVjdGlvbkRlbGVnYXRlID0gYWRvcHRS
ZWYobmV3IFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZSh0
aGlzKSk7Ci0jZWxzZQogICAgIGQtPm1fY29ubmVjdGlvbkRlbGVnYXRlID0gYWRvcHRSZWYobmV3
IFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZSh0aGlzKSk7
Ci0jZW5kaWYKICAgICBkLT5tX2Nvbm5lY3Rpb25EZWxlZ2F0ZS0+c2V0dXBSZXF1ZXN0KHJlcXVl
c3QuZ2V0KCkpOwogCiAgICAgQ0ZVUkxDb25uZWN0aW9uQ2xpZW50X1Y2IGNsaWVudCA9IGQtPm1f
Y29ubmVjdGlvbkRlbGVnYXRlLT5tYWtlQ29ubmVjdGlvbkNsaWVudCgpOwpAQCAtMjY0LDEwICsy
MjgsNiBAQCBib29sIFJlc291cmNlSGFuZGxlOjpzdGFydCgpCiAKICAgICBib29sIHNob3VsZFVz
ZUNyZWRlbnRpYWxTdG9yYWdlID0gIWNsaWVudCgpIHx8IGNsaWVudCgpLT5zaG91bGRVc2VDcmVk
ZW50aWFsU3RvcmFnZSh0aGlzKTsKIAotI2lmIEVOQUJMRShXRUJfVElNSU5HKSAmJiBQTEFURk9S
TShDT0NPQSkgJiYgIUhBVkUoVElNSU5HREFUQU9QVElPTlMpCi0gICAgc2V0Q29sbGVjdHNUaW1p
bmdEYXRhKCk7Ci0jZW5kaWYKLQogICAgIFNjaGVkdWxpbmdCZWhhdmlvciBzY2hlZHVsaW5nQmVo
YXZpb3IgPSBjbGllbnQoKS0+bG9hZGluZ1N5bmNocm9ub3VzWEhSKCkgPyBTY2hlZHVsaW5nQmVo
YXZpb3I6OlN5bmNocm9ub3VzIDogU2NoZWR1bGluZ0JlaGF2aW9yOjpBc3luY2hyb25vdXM7CiAK
ICAgICBjcmVhdGVDRlVSTENvbm5lY3Rpb24oc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UsIGQt
Pm1fc2hvdWxkQ29udGVudFNuaWZmLCBzY2hlZHVsaW5nQmVoYXZpb3IsIGNsaWVudCgpLT5jb25u
ZWN0aW9uUHJvcGVydGllcyh0aGlzKS5nZXQoKSk7CkBAIC0zNTEsMTYgKzMxMSw2IEBAIHZvaWQg
UmVzb3VyY2VIYW5kbGU6OmRpZFJlY2VpdmVBdXRoZW50aWMKICAgICBBU1NFUlQoY2hhbGxlbmdl
LmNmVVJMQXV0aENoYWxsZW5nZVJlZigpKTsKICAgICBBU1NFUlQoY2hhbGxlbmdlLmF1dGhlbnRp
Y2F0aW9uQ2xpZW50KCkgPT0gdGhpcyk7IC8vIFNob3VsZCBiZSBhbHJlYWR5IHNldC4KIAotI2lm
ICFQTEFURk9STShXSU4pCi0gICAgLy8gUHJveHkgYXV0aGVudGljYXRpb24gaXMgaGFuZGxlZCBi
eSBDRk5ldHdvcmsgaW50ZXJuYWxseS4gV2UgY2FuIGdldCBoZXJlIGlmIHRoZSB1c2VyIGNhbmNl
bHMKLSAgICAvLyBDRk5ldHdvcmsgYXV0aGVudGljYXRpb24gZGlhbG9nLCBhbmQgd2Ugc2hvdWxk
bid0IGFzayB0aGUgY2xpZW50IHRvIGRpc3BsYXkgYW5vdGhlciBvbmUgaW4gdGhhdCBjYXNlLgot
ICAgIGlmIChjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlKCkuaXNQcm94eSgpKSB7Ci0gICAgICAg
IC8vIENhbm5vdCB1c2UgcmVjZWl2ZWRSZXF1ZXN0VG9Db250aW51ZVdpdGhvdXRDcmVkZW50aWFs
KCksIGJlY2F1c2UgY3VycmVudCBjaGFsbGVuZ2UgaXMgbm90IHlldCBzZXQuCi0gICAgICAgIENG
VVJMQ29ubmVjdGlvblVzZUNyZWRlbnRpYWwoZC0+bV9jb25uZWN0aW9uLmdldCgpLCAwLCBjaGFs
bGVuZ2UuY2ZVUkxBdXRoQ2hhbGxlbmdlUmVmKCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
I2VuZGlmCi0KICAgICBpZiAodHJ5SGFuZGxlUGFzc3dvcmRCYXNlZEF1dGhlbnRpY2F0aW9uKGNo
YWxsZW5nZSkpCiAgICAgICAgIHJldHVybjsKIApAQCAtMzgxLDExICszMzEsNyBAQCBib29sIFJl
c291cmNlSGFuZGxlOjp0cnlIYW5kbGVQYXNzd29yZEJhCiAKICAgICBpZiAoIWQtPm1fdXNlci5p
c051bGwoKSAmJiAhZC0+bV9wYXNzLmlzTnVsbCgpKSB7CiAgICAgICAgIFJldGFpblB0cjxDRlVS
TENyZWRlbnRpYWxSZWY+IGNmQ3JlZGVudGlhbCA9IGFkb3B0Q0YoQ0ZVUkxDcmVkZW50aWFsQ3Jl
YXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGQtPm1fdXNlci5jcmVhdGVDRlN0cmluZygpLmdldCgp
LCBkLT5tX3Bhc3MuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgMCwga0NGVVJMQ3JlZGVudGlhbFBl
cnNpc3RlbmNlTm9uZSkpOwotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgICAgICBDcmVkZW50aWFs
IGNyZWRlbnRpYWwgPSBDcmVkZW50aWFsKGNmQ3JlZGVudGlhbC5nZXQoKSk7Ci0jZWxzZQogICAg
ICAgICBDcmVkZW50aWFsIGNyZWRlbnRpYWwgPSBjb3JlKGNmQ3JlZGVudGlhbC5nZXQoKSk7Ci0j
ZW5kaWYKICAgICAgICAgCiAgICAgICAgIFVSTCB1cmxUb1N0b3JlOwogICAgICAgICBpZiAoY2hh
bGxlbmdlLmZhaWx1cmVSZXNwb25zZSgpLmh0dHBTdGF0dXNDb2RlKCkgPT0gNDAxKQpAQCAtNDE1
LDEyICszNjEsOCBAQCBib29sIFJlc291cmNlSGFuZGxlOjp0cnlIYW5kbGVQYXNzd29yZEJhCiAg
ICAgICAgICAgICAgICAgICAgIC8vIFN0b3JlIHRoZSBjcmVkZW50aWFsIGJhY2ssIHBvc3NpYmx5
IGFkZGluZyBpdCBhcyBhIGRlZmF1bHQgZm9yIHRoaXMgZGlyZWN0b3J5LgogICAgICAgICAgICAg
ICAgICAgICBkLT5tX2NvbnRleHQtPnN0b3JhZ2VTZXNzaW9uKCkuY3JlZGVudGlhbFN0b3JhZ2Uo
KS5zZXQoY3JlZGVudGlhbCwgY2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZSgpLCBjaGFsbGVuZ2Uu
ZmFpbHVyZVJlc3BvbnNlKCkudXJsKCkpOwogICAgICAgICAgICAgICAgIH0KLSNpZiBQTEFURk9S
TShDT0NPQSkKLSAgICAgICAgICAgICAgICBDRlVSTENvbm5lY3Rpb25Vc2VDcmVkZW50aWFsKGQt
Pm1fY29ubmVjdGlvbi5nZXQoKSwgY3JlZGVudGlhbC5jZkNyZWRlbnRpYWwoKSwgY2hhbGxlbmdl
LmNmVVJMQXV0aENoYWxsZW5nZVJlZigpKTsKLSNlbHNlCiAgICAgICAgICAgICAgICAgUmV0YWlu
UHRyPENGVVJMQ3JlZGVudGlhbFJlZj4gY2ZDcmVkZW50aWFsID0gYWRvcHRDRihjcmVhdGVDRihj
cmVkZW50aWFsKSk7CiAgICAgICAgICAgICAgICAgQ0ZVUkxDb25uZWN0aW9uVXNlQ3JlZGVudGlh
bChkLT5tX2Nvbm5lY3Rpb24uZ2V0KCksIGNmQ3JlZGVudGlhbC5nZXQoKSwgY2hhbGxlbmdlLmNm
VVJMQXV0aENoYWxsZW5nZVJlZigpKTsKLSNlbmRpZgogICAgICAgICAgICAgICAgIHJldHVybiB0
cnVlOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC00NzAsMjAgKzQxMiwxMCBAQCB2b2lk
IFJlc291cmNlSGFuZGxlOjpyZWNlaXZlZENyZWRlbnRpYWwoCiAgICAgICAgIGQtPm1fY29udGV4
dC0+c3RvcmFnZVNlc3Npb24oKS5jcmVkZW50aWFsU3RvcmFnZSgpLnNldCh3ZWJDcmVkZW50aWFs
LCBjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlKCksIHVybFRvU3RvcmUpOwogCiAgICAgICAgIGlm
IChkLT5tX2Nvbm5lY3Rpb24pIHsKLSNpZiBQTEFURk9STShDT0NPQSkKICAgICAgICAgICAgIENG
VVJMQ29ubmVjdGlvblVzZUNyZWRlbnRpYWwoZC0+bV9jb25uZWN0aW9uLmdldCgpLCB3ZWJDcmVk
ZW50aWFsLmNmQ3JlZGVudGlhbCgpLCBjaGFsbGVuZ2UuY2ZVUkxBdXRoQ2hhbGxlbmdlUmVmKCkp
OwotI2Vsc2UKLSAgICAgICAgICAgIFJldGFpblB0cjxDRlVSTENyZWRlbnRpYWxSZWY+IGNmQ3Jl
ZGVudGlhbCA9IGFkb3B0Q0YoY3JlYXRlQ0Yod2ViQ3JlZGVudGlhbCkpOwotICAgICAgICAgICAg
Q0ZVUkxDb25uZWN0aW9uVXNlQ3JlZGVudGlhbChkLT5tX2Nvbm5lY3Rpb24uZ2V0KCksIGNmQ3Jl
ZGVudGlhbC5nZXQoKSwgY2hhbGxlbmdlLmNmVVJMQXV0aENoYWxsZW5nZVJlZigpKTsKLSNlbmRp
ZgogICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChkLT5tX2Nvbm5lY3Rpb24pIHsKLSNpZiBQTEFU
Rk9STShDT0NPQSkKICAgICAgICAgQ0ZVUkxDb25uZWN0aW9uVXNlQ3JlZGVudGlhbChkLT5tX2Nv
bm5lY3Rpb24uZ2V0KCksIGNyZWRlbnRpYWwuY2ZDcmVkZW50aWFsKCksIGNoYWxsZW5nZS5jZlVS
TEF1dGhDaGFsbGVuZ2VSZWYoKSk7Ci0jZWxzZQotICAgICAgICBSZXRhaW5QdHI8Q0ZVUkxDcmVk
ZW50aWFsUmVmPiBjZkNyZWRlbnRpYWwgPSBhZG9wdENGKGNyZWF0ZUNGKGNyZWRlbnRpYWwpKTsK
LSAgICAgICAgQ0ZVUkxDb25uZWN0aW9uVXNlQ3JlZGVudGlhbChkLT5tX2Nvbm5lY3Rpb24uZ2V0
KCksIGNmQ3JlZGVudGlhbC5nZXQoKSwgY2hhbGxlbmdlLmNmVVJMQXV0aENoYWxsZW5nZVJlZigp
KTsKLSNlbmRpZgogICAgIH0KIAogICAgIGNsZWFyQXV0aGVudGljYXRpb24oKTsKQEAgLTYyNCwz
MCArNTU2LDYgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6cGxhdGZvcm1TZXREZWZlcnNMbwogICAg
ICAgICBDRlVSTENvbm5lY3Rpb25SZXN1bWUoZC0+bV9jb25uZWN0aW9uLmdldCgpKTsKIH0KIAot
I2lmIFBMQVRGT1JNKENPQ09BKQotdm9pZCBSZXNvdXJjZUhhbmRsZTo6c2NoZWR1bGUoU2NoZWR1
bGVQYWlyJiBwYWlyKQotewotICAgIENGUnVuTG9vcFJlZiBydW5Mb29wID0gcGFpci5ydW5Mb29w
KCk7Ci0gICAgaWYgKCFydW5Mb29wKQotICAgICAgICByZXR1cm47Ci0KLSAgICBDRlVSTENvbm5l
Y3Rpb25TY2hlZHVsZVdpdGhSdW5Mb29wKGQtPm1fY29ubmVjdGlvbi5nZXQoKSwgcnVuTG9vcCwg
cGFpci5tb2RlKCkpOwotICAgIGlmIChkLT5tX3N0YXJ0V2hlblNjaGVkdWxlZCkgewotICAgICAg
ICBDRlVSTENvbm5lY3Rpb25TdGFydChkLT5tX2Nvbm5lY3Rpb24uZ2V0KCkpOwotICAgICAgICBk
LT5tX3N0YXJ0V2hlblNjaGVkdWxlZCA9IGZhbHNlOwotICAgIH0KLX0KLQotdm9pZCBSZXNvdXJj
ZUhhbmRsZTo6dW5zY2hlZHVsZShTY2hlZHVsZVBhaXImIHBhaXIpCi17Ci0gICAgQ0ZSdW5Mb29w
UmVmIHJ1bkxvb3AgPSBwYWlyLnJ1bkxvb3AoKTsKLSAgICBpZiAoIXJ1bkxvb3ApCi0gICAgICAg
IHJldHVybjsKLQotICAgIENGVVJMQ29ubmVjdGlvblVuc2NoZWR1bGVGcm9tUnVuTG9vcChkLT5t
X2Nvbm5lY3Rpb24uZ2V0KCksIHJ1bkxvb3AsIHBhaXIubW9kZSgpKTsKLX0KLSNlbmRpZgotCiBj
b25zdCBSZXNvdXJjZVJlcXVlc3QmIFJlc291cmNlSGFuZGxlOjpjdXJyZW50UmVxdWVzdCgpIGNv
bnN0CiB7CiAgICAgcmV0dXJuIGQtPm1fY3VycmVudFJlcXVlc3Q7CkBAIC02NzYsNiArNTg0LDYg
QEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6Y29udGludWVXaWxsQ2FjaGVSZQogewogICAgIGQtPm1f
Y29ubmVjdGlvbkRlbGVnYXRlLT5jb250aW51ZVdpbGxDYWNoZVJlc3BvbnNlKHJlc3BvbnNlKTsK
IH0KLSNlbmRpZiAvLyBVU0UoQ0ZORVRXT1JLKQorI2VuZGlmIC8vIFVTRShDRlVSTENPTk5FQ1RJ
T04pCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJj
ZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmNwcAkocmV2aXNpb24gMjA3MDM3KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29u
bmVjdGlvbkRlbGVnYXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsMjAgKzI2LDEzIEBACiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rp
b25EZWxlZ2F0ZS5oIgogCi0jaWYgVVNFKENGTkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNU
SU9OKQogCiAjaW5jbHVkZSAiQ0ZOZXR3b3JrU1BJLmgiCiAjaW5jbHVkZSAiRm9ybURhdGFTdHJl
YW1DRk5ldC5oIgogI2luY2x1ZGUgIk5ldHdvcmtpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiUmVz
b3VyY2VIYW5kbGUuaCIKLQotI2lmIFBMQVRGT1JNKENPQ09BKQotI2luY2x1ZGUgIldlYkNvcmVT
eXN0ZW1JbnRlcmZhY2UuaCIKLSNlbmRpZgotCi0jaWYgUExBVEZPUk0oV0lOKQogI2luY2x1ZGUg
PFdlYktpdFN5c3RlbUludGVyZmFjZS9XZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaD4KLSNlbmRpZgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTIxOCw0ICsyMTEsNCBAQCBDRlVSTENvbm5lY3Rp
b25DbGllbnRfVjYgUmVzb3VyY2VIYW5kbGVDCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUuCiAK
LSNlbmRpZiAvLyBVU0UoQ0ZORVRXT1JLKQorI2VuZGlmIC8vIFVTRShDRlVSTENPTk5FQ1RJT04p
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxl
Q0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUu
aAkocmV2aXNpb24gMjA3MDM3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
Zi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTIzLDEwICsyMyw5IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgUmVzb3Vy
Y2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZV9oCi0jZGVmaW5lIFJlc291cmNlSGFuZGxl
Q0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVfaAorI3ByYWdtYSBvbmNlCiAKLSNpZiBVU0UoQ0ZORVRX
T1JLKQorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVl
c3QuaCIKICNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZVUkxDb25uZWN0aW9uUHJpdi5oPgpAQCAtMTAw
LDYgKzk5LDQgQEAgcHJvdGVjdGVkOgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlLgogCi0jZW5k
aWYgLy8gVVNFKENGTkVUV09SSykKLQotI2VuZGlmIC8vIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25u
ZWN0aW9uRGVsZWdhdGVfaAorI2VuZGlmIC8vIFVTRShDRlVSTENPTk5FQ1RJT04pCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25u
ZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rp
b25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5jcHAJKHJldmlzaW9uIDIwNzAzNykKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5l
Y3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2
LDcgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRs
ZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmgiCiAKLSNpZiBVU0Uo
Q0ZORVRXT1JLKQorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAKICNpbmNsdWRlICJBdXRoZW50
aWNhdGlvbkNGLmgiCiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCIKQEAgLTc1
LDkgKzc1LDYgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYQogCiB2
b2lkIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVl
dWU6OnNldHVwUmVxdWVzdChDRk11dGFibGVVUkxSZXF1ZXN0UmVmIHJlcXVlc3QpCiB7Ci0jaWYg
UExBVEZPUk0oSU9TKQotICAgIENGVVJMUmVxdWVzdFNldFNob3VsZFN0YXJ0U3luY2hyb25vdXNs
eShyZXF1ZXN0LCAxKTsKLSNlbmRpZgogICAgIENGVVJMUmVmIHJlcXVlc3RVUkwgPSBDRlVSTFJl
cXVlc3RHZXRVUkwocmVxdWVzdCk7CiAgICAgaWYgKCFyZXF1ZXN0VVJMKQogICAgICAgICByZXR1
cm47CkBAIC0xNDksMTAgKzE0Niw4IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rp
b25EZWxlZ2EKICAgICAgICAgICAgIGFkanVzdE1JTUVUeXBlSWZOZWNlc3NhcnkoY2ZSZXNwb25z
ZSwgaXNNYWluUmVzb3VyY2VMb2FkKTsKICAgICAgICAgfQogCi0jaWYgIVBMQVRGT1JNKElPUykK
ICAgICAgICAgaWYgKF9DRlVSTFJlcXVlc3RDb3B5UHJvdG9jb2xQcm9wZXJ0eUZvcktleShtX2hh
bmRsZS0+Zmlyc3RSZXF1ZXN0KCkuY2ZVUkxSZXF1ZXN0KERvTm90VXBkYXRlSFRUUEJvZHkpLCBD
RlNUUigiRm9yY2VIVE1MTUlNRVR5cGUiKSkpCiAgICAgICAgICAgICBDRlVSTFJlc3BvbnNlU2V0
TUlNRVR5cGUoY2ZSZXNwb25zZSwgQ0ZTVFIoInRleHQvaHRtbCIpKTsKLSNlbmRpZiAvLyAhUExB
VEZPUk0oSU9TKQogICAgICAgICAKICAgICAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNvdXJjZVJl
c3BvbnNlKGNmUmVzcG9uc2UpOwogI2lmIEVOQUJMRShXRUJfVElNSU5HKQpAQCAtMjg4LDE1ICsy
ODMsNyBAQCBCb29sZWFuIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsCiAKICAgICAg
ICAgTE9HKE5ldHdvcmssICJDRk5ldCAtIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVs
ZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OmNhblJlc3BvbmRUb1Byb3RlY3Rpb25TcGFjZShoYW5k
bGU9JXApICglcykiLCBtX2hhbmRsZSwgbV9oYW5kbGUtPmZpcnN0UmVxdWVzdCgpLnVybCgpLnN0
cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogCi0gICAgICAgIFByb3RlY3Rpb25TcGFjZSBjb3JlUHJv
dGVjdGlvblNwYWNlID0gUHJvdGVjdGlvblNwYWNlKHByb3RlY3Rpb25TcGFjZSk7Ci0jaWYgUExB
VEZPUk0oSU9TKQotICAgICAgICBpZiAoY29yZVByb3RlY3Rpb25TcGFjZS5hdXRoZW50aWNhdGlv
blNjaGVtZSgpID09IFByb3RlY3Rpb25TcGFjZUF1dGhlbnRpY2F0aW9uU2NoZW1lVW5rbm93bikg
ewotICAgICAgICAgICAgbV9ib29sUmVzdWx0ID0gZmFsc2U7Ci0gICAgICAgICAgICBkaXNwYXRj
aF9zZW1hcGhvcmVfc2lnbmFsKG1fc2VtYXBob3JlKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgfQotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKLSAgICAgICAgbV9oYW5kbGUtPmNhbkF1
dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoY29yZVByb3RlY3Rpb25TcGFjZSk7Cisg
ICAgICAgIG1faGFuZGxlLT5jYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKFBy
b3RlY3Rpb25TcGFjZShwcm90ZWN0aW9uU3BhY2UpKTsKICAgICB9KTsKICAgICBkaXNwYXRjaF9z
ZW1hcGhvcmVfd2FpdChtX3NlbWFwaG9yZSwgRElTUEFUQ0hfVElNRV9GT1JFVkVSKTsKICAgICBy
ZXR1cm4gbV9ib29sUmVzdWx0OwpAQCAtMzQ3LDQgKzMzNCw0IEBAIHZvaWQgUmVzb3VyY2VIYW5k
bGVDRlVSTENvbm5lY3Rpb25EZWxlZ2EKICNlbmRpZiAvLyBVU0UoUFJPVEVDVElPTl9TUEFDRV9B
VVRIX0NBTExCQUNLKQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYgLy8gVVNFKENG
TkVUV09SSykKKyNlbmRpZiAvLyBVU0UoQ0ZVUkxDT05ORUNUSU9OKQpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRl
bGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRl
V2l0aE9wZXJhdGlvblF1ZXVlLmgJKHJldmlzaW9uIDIwNzAzNykKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0
ZVdpdGhPcGVyYXRpb25RdWV1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMywxMCArMjMsOSBAQAog
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0
aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWVfaAotI2RlZmluZSBSZXNvdXJjZUhhbmRsZUNG
VVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlX2gKKyNwcmFnbWEgb25jZQog
Ci0jaWYgVVNFKENGTkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogCiAjaW5jbHVk
ZSAiUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5oIgogI2luY2x1ZGUgPENG
TmV0d29yay9DRk5ldHdvcmsuaD4KQEAgLTgwLDYgKzc5LDQgQEAgcHJpdmF0ZToKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZS4KIAotI2VuZGlmIC8vIFVTRShDRk5FVFdPUkspCi0KLSNlbmRpZiAv
LyBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVl
X2gKKyNlbmRpZiAvLyBVU0UoQ0ZVUkxDT05ORUNUSU9OKQpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3QuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdC5oCShyZXZpc2lv
biAyMDcwMzcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNl
UmVxdWVzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3IEBACiAKIE9CSkNfQ0xBU1Mg
TlNVUkxSZXF1ZXN0OwogCi0jaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRk5FVFdPUkspCisj
aWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRlVSTENPTk5FQ1RJT04pCiB0eXBlZGVmIGNvbnN0
IHN0cnVjdCBfQ0ZVUkxSZXF1ZXN0KiBDRlVSTFJlcXVlc3RSZWY7CiB0eXBlZGVmIGNvbnN0IHN0
cnVjdCBfX0NGVVJMU3RvcmFnZVNlc3Npb24qIENGVVJMU3RvcmFnZVNlc3Npb25SZWY7CiAjZW5k
aWYKQEAgLTYxLDEzICs2MSw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogICAgIAotI2lmIFVT
RShDRk5FVFdPUkspCi0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgV0VCQ09SRV9FWFBPUlQgUmVz
b3VyY2VSZXF1ZXN0KE5TVVJMUmVxdWVzdCAqKTsKLSAgICB2b2lkIHVwZGF0ZU5TVVJMUmVxdWVz
dCgpOwotICAgIHZvaWQgY2xlYXJPclVwZGF0ZU5TVVJMUmVxdWVzdCgpOwotI2VuZGlmCi0KKyNp
ZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogICAgIFJlc291cmNlUmVxdWVzdChDRlVSTFJlcXVlc3RS
ZWYgY2ZSZXF1ZXN0KQogICAgICAgICA6IFJlc291cmNlUmVxdWVzdEJhc2UoKQogICAgICAgICAs
IG1fY2ZSZXF1ZXN0KGNmUmVxdWVzdCkKQEAgLTg0LDExICs3OCw3IEBAIHB1YmxpYzoKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZUZyb21EZWxlZ2F0ZVByZXNlcnZpbmdPbGRQcm9wZXJ0
aWVzKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0jaWYg
VVNFKENGTkVUV09SSykKLSAgICBib29sIGVuY29kaW5nUmVxdWlyZXNQbGF0Zm9ybURhdGEoKSBj
b25zdCB7IHJldHVybiBtX2h0dHBCb2R5IHx8IG1fY2ZSZXF1ZXN0OyB9Ci0jZWxzZQogICAgIGJv
b2wgZW5jb2RpbmdSZXF1aXJlc1BsYXRmb3JtRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1faHR0cEJv
ZHkgfHwgbV9uc1JlcXVlc3Q7IH0KLSNlbmRpZgogICAgIFdFQkNPUkVfRVhQT1JUIE5TVVJMUmVx
dWVzdCAqbnNVUkxSZXF1ZXN0KEhUVFBCb2R5VXBkYXRlUG9saWN5KSBjb25zdDsKIAogICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBDRlN0cmluZ1JlZiBpc1VzZXJJbml0aWF0ZWRLZXkoKTsKQEAg
LTEwNSw3ICs5NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldERvbWFpbkZvckNhY2hlUGFydGl0
aW9uKGNvbnN0IFN0cmluZyYgZG9tYWluKSB7IG1fY2FjaGVQYXJ0aXRpb24gPSBwYXJ0aXRpb25O
YW1lKGRvbWFpbik7IH0KICNlbmRpZgogCi0jaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRk5F
VFdPUkspCisjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRlVSTENPTk5FQ1RJT04pCiAgICAg
V0VCQ09SRV9FWFBPUlQgQ0ZVUkxSZXF1ZXN0UmVmIGNmVVJMUmVxdWVzdChIVFRQQm9keVVwZGF0
ZVBvbGljeSkgY29uc3Q7CiAgICAgdm9pZCBzZXRTdG9yYWdlU2Vzc2lvbihDRlVSTFN0b3JhZ2VT
ZXNzaW9uUmVmKTsKICNlbmRpZgpAQCAtMTI1LDcgKzExNSw3IEBAIHByaXZhdGU6CiAKICAgICB2
b2lkIGRvUGxhdGZvcm1TZXRBc0lzb2xhdGVkQ29weShjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsK
IAotI2lmIFVTRShDRk5FVFdPUkspCisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKICAgICBSZXRh
aW5QdHI8Q0ZVUkxSZXF1ZXN0UmVmPiBtX2NmUmVxdWVzdDsKICNlbmRpZgogI2lmIFBMQVRGT1JN
KENPQ09BKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJj
ZVJlcXVlc3RDRk5ldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHAJKHJldmlzaW9uIDIwNzAzNykKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBACiAjaW5jbHVkZSAiUHVibGljU3Vm
Zml4LmgiCiAjZW5kaWYKIAotI2lmIFVTRShDRk5FVFdPUkspCisjaWYgVVNFKENGVVJMQ09OTkVD
VElPTikKICNpbmNsdWRlICJGb3JtRGF0YVN0cmVhbUNGTmV0LmgiCiAjaW5jbHVkZSA8Q0ZOZXR3
b3JrL0NGVVJMUmVxdWVzdFByaXYuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CkBA
IC01OSwxMiArNTksMTEgQEAgYm9vbCBSZXNvdXJjZVJlcXVlc3Q6OnNfaHR0cFBpcGVsaW5pbmdF
bgogYm9vbCBSZXNvdXJjZVJlcXVlc3Q6OnNfaHR0cFBpcGVsaW5pbmdFbmFibGVkID0gZmFsc2U7
CiAjZW5kaWYKIAotI2lmIFVTRShDRk5FVFdPUkspCisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikK
IAogdHlwZWRlZiB2b2lkICgqQ0ZVUkxSZXF1ZXN0U2V0Q29udGVudERpc3Bvc2l0aW9uRW5jb2Rp
bmdGYWxsYmFja0FycmF5RnVuY3Rpb24pKENGTXV0YWJsZVVSTFJlcXVlc3RSZWYsIENGQXJyYXlS
ZWYpOwogdHlwZWRlZiBDRkFycmF5UmVmICgqQ0ZVUkxSZXF1ZXN0Q29weUNvbnRlbnREaXNwb3Np
dGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheUZ1bmN0aW9uKShDRlVSTFJlcXVlc3RSZWYpOwogCi0j
aWYgUExBVEZPUk0oV0lOKQogc3RhdGljIEhNT0RVTEUgZmluZENGTmV0d29ya01vZHVsZSgpCiB7
CiAjaWZuZGVmIERFQlVHX0FMTApAQCAtODMsMTcgKzgyLDYgQEAgc3RhdGljIENGVVJMUmVxdWVz
dENvcHlDb250ZW50RGlzcG9zaXRpbwogewogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PENG
VVJMUmVxdWVzdENvcHlDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXlGdW5j
dGlvbj4oR2V0UHJvY0FkZHJlc3MoZmluZENGTmV0d29ya01vZHVsZSgpLCAiX0NGVVJMUmVxdWVz
dENvcHlDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXkiKSk7CiB9Ci0jZWxp
ZiBQTEFURk9STShDT0NPQSkKLXN0YXRpYyBDRlVSTFJlcXVlc3RTZXRDb250ZW50RGlzcG9zaXRp
b25FbmNvZGluZ0ZhbGxiYWNrQXJyYXlGdW5jdGlvbiBmaW5kQ0ZVUkxSZXF1ZXN0U2V0Q29udGVu
dERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5RnVuY3Rpb24oKQotewotICAgIHJldHVy
biByZWludGVycHJldF9jYXN0PENGVVJMUmVxdWVzdFNldENvbnRlbnREaXNwb3NpdGlvbkVuY29k
aW5nRmFsbGJhY2tBcnJheUZ1bmN0aW9uPihkbHN5bShSVExEX0RFRkFVTFQsICJfQ0ZVUkxSZXF1
ZXN0U2V0Q29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5IikpOwotfQotCi1z
dGF0aWMgQ0ZVUkxSZXF1ZXN0Q29weUNvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tB
cnJheUZ1bmN0aW9uIGZpbmRDRlVSTFJlcXVlc3RDb3B5Q29udGVudERpc3Bvc2l0aW9uRW5jb2Rp
bmdGYWxsYmFja0FycmF5RnVuY3Rpb24oKQotewotICAgIHJldHVybiByZWludGVycHJldF9jYXN0
PENGVVJMUmVxdWVzdENvcHlDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXlG
dW5jdGlvbj4oZGxzeW0oUlRMRF9ERUZBVUxULCAiX0NGVVJMUmVxdWVzdENvcHlDb250ZW50RGlz
cG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXkiKSk7Ci19Ci0jZW5kaWYKIAogc3RhdGljIHZv
aWQgc2V0Q29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5KENGTXV0YWJsZVVS
TFJlcXVlc3RSZWYgcmVxdWVzdCwgQ0ZBcnJheVJlZiBmYWxsYmFja0FycmF5KQogewpAQCAtMTU2
LDEwICsxNDQsNiBAQCB2b2lkIFJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVQbGF0Zm9ybVJlCiAg
ICAgaWYgKHJlc291cmNlUHJpb3JpdGllc0VuYWJsZWQoKSkKICAgICAgICAgQ0ZVUkxSZXF1ZXN0
U2V0UmVxdWVzdFByaW9yaXR5KGNmUmVxdWVzdCwgdG9QbGF0Zm9ybVJlcXVlc3RQcmlvcml0eShw
cmlvcml0eSgpKSk7CiAKLSNpZiAhUExBVEZPUk0oV0lOKQotICAgIF9DRlVSTFJlcXVlc3RTZXRQ
cm90b2NvbFByb3BlcnR5KGNmUmVxdWVzdCwga0NGVVJMUmVxdWVzdEFsbG93QWxsUE9TVENhY2hp
bmcsIGtDRkJvb2xlYW5UcnVlKTsKLSNlbmRpZgotCiAgICAgc2V0SGVhZGVyRmllbGRzKGNmUmVx
dWVzdCwgaHR0cEhlYWRlckZpZWxkcygpKTsKIAogICAgIENGVVJMUmVxdWVzdFNldFNob3VsZEhh
bmRsZUhUVFBDb29raWVzKGNmUmVxdWVzdCwgYWxsb3dDb29raWVzKCkpOwpAQCAtMTg0LDkgKzE2
OCw2IEBAIHZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVBsYXRmb3JtUmUKICNlbmRpZgog
CiAgICAgbV9jZlJlcXVlc3QgPSBhZG9wdENGKGNmUmVxdWVzdCk7Ci0jaWYgUExBVEZPUk0oQ09D
T0EpCi0gICAgY2xlYXJPclVwZGF0ZU5TVVJMUmVxdWVzdCgpOwotI2VuZGlmCiB9CiAKIHZvaWQg
UmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVBsYXRmb3JtSFRUUEJvZHkoKQpAQCAtMjE5LDMwICsy
MDAsMTIgQEAgdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUGxhdGZvcm1IVAogICAgIH0K
IAogICAgIG1fY2ZSZXF1ZXN0ID0gYWRvcHRDRihjZlJlcXVlc3QpOwotI2lmIFBMQVRGT1JNKENP
Q09BKQotICAgIGNsZWFyT3JVcGRhdGVOU1VSTFJlcXVlc3QoKTsKLSNlbmRpZgogfQogCiB2b2lk
IFJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVSZXNvdXJjZVJlcXVlc3QoKQogewogICAgIGlmICgh
bV9jZlJlcXVlc3QpIHsKLSNpZiBQTEFURk9STShJT1MpCi0gICAgICAgIC8vIDxyZGFyOi8vcHJv
YmxlbS85OTEzNTI2PgotICAgICAgICAvLyBUaGlzIGlzIGEgaGFjayB0byBtaW1pYyB0aGUgc3Vi
dGxlIGJlaGF2aW91ciBvZiB0aGUgRm91bmRhdGlvbiBiYXNlZCBSZXNvdXJjZVJlcXVlc3QKLSAg
ICAgICAgLy8gY29kZS4gVGhhdCBjb2RlIGRvZXMgbm90IHJlc2V0IG1faHR0cE1ldGhvZCBpZiB0
aGUgTlNVUkxSZXF1ZXN0IGlzIG5pbC4gSSBmaWxlZAotICAgICAgICAvLyA8aHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY2MzM2PiB0byB0cmFjayB0aGF0LgotICAgICAg
ICAvLyBBbm90aGVyIHJlbGF0ZWQgYnVnIGlzIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NjYzNTA+LiBGaXhpbmcgdGhhdAotICAgICAgICAvLyB3b3VsZCwgaWRlYWxs
eSwgYWxsb3cgdXMgdG8gbm90IGhhdmUgdGhpcyBoYWNrLiBCdXQgdW5mb3J0dW5hdGVseSB0aGF0
IGNhdXNlZCBsYXlvdXQgdGVzdAotICAgICAgICAvLyBmYWlsdXJlcy4KLSAgICAgICAgLy8gUmVt
b3ZhbCBvZiB0aGlzIGhhY2sgaXMgdHJhY2tlZCBieSA8cmRhcjovL3Byb2JsZW0vOTk3MDQ5OT4u
Ci0KLSAgICAgICAgU3RyaW5nIGh0dHBNZXRob2QgPSBtX2h0dHBNZXRob2Q7CiAgICAgICAgICp0
aGlzID0gUmVzb3VyY2VSZXF1ZXN0KCk7Ci0gICAgICAgIG1faHR0cE1ldGhvZCA9IGh0dHBNZXRo
b2Q7Ci0jZWxzZQotICAgICAgICAqdGhpcyA9IFJlc291cmNlUmVxdWVzdCgpOwotI2VuZGlmCiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTMxNywxMiArMjgwLDkgQEAgdm9pZCBSZXNvdXJj
ZVJlcXVlc3Q6OnNldFN0b3JhZ2VTZXNzaW9uKAogICAgIGlmIChzdG9yYWdlU2Vzc2lvbikKICAg
ICAgICAgX0NGVVJMUmVxdWVzdFNldFN0b3JhZ2VTZXNzaW9uKGNmUmVxdWVzdCwgc3RvcmFnZVNl
c3Npb24pOwogICAgIG1fY2ZSZXF1ZXN0ID0gYWRvcHRDRihjZlJlcXVlc3QpOwotI2lmIFBMQVRG
T1JNKENPQ09BKQotICAgIGNsZWFyT3JVcGRhdGVOU1VSTFJlcXVlc3QoKTsKLSNlbmRpZgogfQog
Ci0jZW5kaWYgLy8gVVNFKENGTkVUV09SSykKKyNlbmRpZiAvLyBVU0UoQ0ZVUkxDT05ORUNUSU9O
KQogCiB2b2lkIFJlc291cmNlUmVxdWVzdDo6dXBkYXRlRnJvbURlbGVnYXRlUHJlc2VydmluZ09s
ZFByb3BlcnRpZXMoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBkZWxlZ2F0ZVByb3ZpZGVkUmVxdWVz
dCkKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VS
ZXF1ZXN0Q0ZOZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NmL1Jlc291cmNlUmVxdWVzdENGTmV0LmgJKHJldmlzaW9uIDIwNzAzNykKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuaAkod29y
a2luZyBjb3B5KQpAQCAtMjMsOCArMjMsNyBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAotI2lm
bmRlZiBSZXNvdXJjZVJlcXVlc3RDRk5ldF9oCi0jZGVmaW5lIFJlc291cmNlUmVxdWVzdENGTmV0
X2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQ0ZOZXR3b3JrU1BJLmgiCiAjaW5jbHVkZSAi
UmVzb3VyY2VMb2FkUHJpb3JpdHkuaCIKQEAgLTMzLDcgKzMyLDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQorI2lm
IFVTRShDRlVSTENPTk5FQ1RJT04pCiB2b2lkIGdldFJlc291cmNlUmVxdWVzdChSZXNvdXJjZVJl
cXVlc3QmLCBDRlVSTFJlcXVlc3RSZWYpOwogQ0ZVUkxSZXF1ZXN0UmVmIGNmVVJMUmVxdWVzdChj
b25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICNlbmRpZgpAQCAtNzgsNSArNzcsMyBAQCBpbmxpbmUg
Q0ZVUkxSZXF1ZXN0UHJpb3JpdHkgdG9QbGF0Zm9ybVJlCiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKLQotI2VuZGlmIC8vIFJlc291cmNlUmVxdWVzdENGTmV0X2gKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXNwb25zZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXNwb25zZS5o
CShyZXZpc2lvbiAyMDcwMzcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L1Jlc291cmNlUmVzcG9uc2UuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNyBAQAogI2lu
Y2x1ZGUgIlJlc291cmNlUmVzcG9uc2VCYXNlLmgiCiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5o
PgogCi0jaWYgVVNFKENGTkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogI2luY2x1
ZGUgIkNGTmV0d29ya1NQSS5oIgogI2VuZGlmCiAKQEAgLTQzLDE2ICs0MywxMyBAQCBwdWJsaWM6
CiAgICAgewogICAgIH0KIAotI2lmIFVTRShDRk5FVFdPUkspCisjaWYgVVNFKENGVVJMQ09OTkVD
VElPTikKICAgICBSZXNvdXJjZVJlc3BvbnNlKENGVVJMUmVzcG9uc2VSZWYgY2ZSZXNwb25zZSkK
ICAgICAgICAgOiBtX2luaXRMZXZlbChVbmluaXRpYWxpemVkKQogICAgICAgICAsIG1fY2ZSZXNw
b25zZShjZlJlc3BvbnNlKQogICAgIHsKICAgICAgICAgbV9pc051bGwgPSAhY2ZSZXNwb25zZTsK
ICAgICB9Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgV0VCQ09SRV9FWFBPUlQgUmVzb3VyY2VS
ZXNwb25zZShOU1VSTFJlc3BvbnNlICopOwotI2VuZGlmCiAjZWxzZQogICAgIFJlc291cmNlUmVz
cG9uc2UoTlNVUkxSZXNwb25zZSAqbnNSZXNwb25zZSkKICAgICAgICAgOiBtX2luaXRMZXZlbChV
bmluaXRpYWxpemVkKQpAQCAtODQsNyArODEsNyBAQCBwdWJsaWM6CiAgICAgICAgICAqLwogICAg
IH0KIAotI2lmIFVTRShDRk5FVFdPUkspCisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKICAgICBX
RUJDT1JFX0VYUE9SVCBDRlVSTFJlc3BvbnNlUmVmIGNmVVJMUmVzcG9uc2UoKSBjb25zdDsKICNl
bmRpZgogI2lmIFBMQVRGT1JNKENPQ09BKQpAQCAtMTA4LDEwICsxMDUsOSBAQCBwcml2YXRlOgog
CiAgICAgdW5zaWduZWQgbV9pbml0TGV2ZWwgOiAzOwogCi0jaWYgVVNFKENGTkVUV09SSykKKyNp
ZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogICAgIG11dGFibGUgUmV0YWluUHRyPENGVVJMUmVzcG9u
c2VSZWY+IG1fY2ZSZXNwb25zZTsKLSNlbmRpZgotI2lmIFBMQVRGT1JNKENPQ09BKQorI2VsaWYg
UExBVEZPUk0oQ09DT0EpCiAgICAgbXV0YWJsZSBSZXRhaW5QdHI8TlNVUkxSZXNwb25zZT4gbV9u
c1Jlc3BvbnNlOwogI2VuZGlmCiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jZi9SZXNvdXJjZVJlc3BvbnNlQ0ZOZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXNwb25zZUNGTmV0LmNwcAkocmV2
aXNpb24gMjA3MDM3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNv
dXJjZVJlc3BvbnNlQ0ZOZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgogCi0jaWYg
VVNFKENGTkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogCiAjaW5jbHVkZSAiQ0ZO
ZXR3b3JrU1BJLmgiCiAKQEAgLTM0LDEwICszNCw2IEBACiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdp
c3RyeS5oIgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAotI2lmIFBMQVRGT1JNKENPQ09B
KQotI2luY2x1ZGUgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKLSNlbmRpZgotCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBDRlN0cmluZ1JlZiBjb25zdCBjb21tb25IZWFkZXJGaWVs
ZHNbXSA9IHsKQEAgLTQ3LDEzICs0Myw5IEBAIHN0YXRpYyBDRlN0cmluZ1JlZiBjb25zdCBjb21t
b25IZWFkZXJGaWUKIENGVVJMUmVzcG9uc2VSZWYgUmVzb3VyY2VSZXNwb25zZTo6Y2ZVUkxSZXNw
b25zZSgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2NmUmVzcG9uc2UgJiYgIW1faXNOdWxsKSB7Ci0j
aWYgUExBVEZPUk0oQ09DT0EpCi0gICAgICAgIG5zVVJMUmVzcG9uc2UoKTsKLSNlbHNlCiAgICAg
ICAgIFJldGFpblB0cjxDRlVSTFJlZj4gdXJsID0gbV91cmwuY3JlYXRlQ0ZVUkwoKTsKICAgICAg
ICAgLy8gRklYTUU6IFRoaXMgY3JlYXRlcyBhIHZlcnkgaW5jb21wbGV0ZSBDRlVSTFJlc3BvbnNl
LCB3aGljaCBkb2VzIG5vdCBldmVuIGhhdmUgYSBzdGF0dXMgY29kZS4KICAgICAgICAgbV9jZlJl
c3BvbnNlID0gYWRvcHRDRihDRlVSTFJlc3BvbnNlQ3JlYXRlKDAsIHVybC5nZXQoKSwgbV9taW1l
VHlwZS5zdHJpbmcoKS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBtX2V4cGVjdGVkQ29udGVudExl
bmd0aCwgbV90ZXh0RW5jb2RpbmdOYW1lLnN0cmluZygpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCks
IGtDRlVSTENhY2hlU3RvcmFnZUFsbG93ZWQpKTsKLSNlbmRpZgogICAgIH0KIAogICAgIHJldHVy
biBtX2NmUmVzcG9uc2UuZ2V0KCk7CkBAIC0xMTYsMTIgKzEwOCwxMCBAQCB2b2lkIFJlc291cmNl
UmVzcG9uc2U6OnBsYXRmb3JtTGF6eUluaXQoCiAgICAgbV9pbml0TGV2ZWwgPSBpbml0TGV2ZWw7
CiB9CiAKLSNpZiAhUExBVEZPUk0oQ09DT0EpCiBDZXJ0aWZpY2F0ZUluZm8gUmVzb3VyY2VSZXNw
b25zZTo6cGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm8oKSBjb25zdAogewogICAgIHJldHVybiB7IH07
CiB9Ci0jZW5kaWYKIAogU3RyaW5nIFJlc291cmNlUmVzcG9uc2U6OnBsYXRmb3JtU3VnZ2VzdGVk
RmlsZW5hbWUoKSBjb25zdAogewpAQCAtMTQyLDQgKzEzMiw0IEBAIGJvb2wgUmVzb3VyY2VSZXNw
b25zZTo6cGxhdGZvcm1Db21wYXJlKGMKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5k
aWYgLy8gVVNFKENGTkVUV09SSykKKyNlbmRpZiAvLyBVU0UoQ0ZVUkxDT05ORUNUSU9OKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9TeW5jaHJvbm91c0xvYWRlckNs
aWVudENGTmV0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NmL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50Q0ZOZXQuY3BwCShyZXZpc2lvbiAyMDcwMzcp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1N5bmNocm9ub3VzTG9hZGVy
Q2xpZW50Q0ZOZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU3luY2hyb25vdXNMb2FkZXJDbGllbnQuaCIKIAotI2lm
IFVTRShDRk5FVFdPUkspCisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKIAogI2luY2x1ZGUgIkF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKQEAg
LTQ4LDQgKzQ4LDQgQEAgUmVzb3VyY2VFcnJvciBTeW5jaHJvbm91c0xvYWRlckNsaWVudDo6cAog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZiAvLyBVU0UoQ0ZORVRXT1JLKQorI2Vu
ZGlmIC8vIFVTRShDRlVSTENPTk5FQ1RJT04pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NmL1N5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxl
Z2F0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
Zi9TeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuY3BwCShy
ZXZpc2lvbiAyMDcwMzcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1N5
bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI2LDEyICsyNiwxMyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIlN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5oIgog
Ci0jaWYgVVNFKENGTkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogCiAjaW5jbHVk
ZSAiQXV0aGVudGljYXRpb25DRi5oIgogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
LmgiCiAjaW5jbHVkZSAiTG9hZGVyUnVuTG9vcENGLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgor
I2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5o
IgogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlQ2xpZW50LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VS
ZXNwb25zZS5oIgpAQCAtNDAsMjAgKzQxLDYgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5n
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKLSNpZiBQTEFURk9STShDT0NP
QSkKLSNpbmNsdWRlICJDRk5ldHdvcmtTUEkuaCIKLSNpbmNsdWRlICJXZWJDb3JlU3lzdGVtSW50
ZXJmYWNlLmgiCi0jaW5jbHVkZSAiV2ViQ29yZVVSTFJlc3BvbnNlLmgiCi0jZW5kaWYgLy8gUExB
VEZPUk0oQ09DT0EpCi0KLSNpZiBQTEFURk9STShJT1MpCi0jaW5jbHVkZSAiV2ViQ29yZVRocmVh
ZC5oIgotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKLQotI2lmIFBMQVRGT1JNKFdJTikKLSNpbmNs
dWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCi0jZW5kaWYgLy8gUExBVEZPUk0oV0lOKQotCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rp
b25EZWxlZ2F0ZTo6U3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVn
YXRlKFJlc291cmNlSGFuZGxlKiBoYW5kbGUpCkBAIC02MywyMCArNTAsMTEgQEAgU3luY2hyb25v
dXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbgogCiB2b2lkIFN5bmNocm9ub3VzUmVzb3Vy
Y2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZTo6c2V0dXBSZXF1ZXN0KENGTXV0YWJsZVVS
TFJlcXVlc3RSZWYgcmVxdWVzdCkKIHsKLSNpZiBQTEFURk9STShJT1MpCi0gICAgQ0ZVUkxSZXF1
ZXN0U2V0U2hvdWxkU3RhcnRTeW5jaHJvbm91c2x5KHJlcXVlc3QsIDEpOwotI2VuZGlmCiB9CiAK
IHZvaWQgU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlOjpz
ZXR1cENvbm5lY3Rpb25TY2hlZHVsaW5nKENGVVJMQ29ubmVjdGlvblJlZiBjb25uZWN0aW9uKQog
ewotI2lmIFBMQVRGT1JNKFdJTikKICAgICBDRlVSTENvbm5lY3Rpb25TY2hlZHVsZVdpdGhDdXJy
ZW50TWVzc2FnZVF1ZXVlKGNvbm5lY3Rpb24pOwotI2VsaWYgUExBVEZPUk0oSU9TKQotICAgIENG
VVJMQ29ubmVjdGlvblNjaGVkdWxlV2l0aFJ1bkxvb3AoY29ubmVjdGlvbiwgV2ViVGhyZWFkUnVu
TG9vcCgpLCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUpOwotI2Vsc2UKLSAgICBDRlVSTENvbm5lY3Rp
b25TY2hlZHVsZVdpdGhSdW5Mb29wKGNvbm5lY3Rpb24sIENGUnVuTG9vcEdldEN1cnJlbnQoKSwg
a0NGUnVuTG9vcERlZmF1bHRNb2RlKTsKLSNlbmRpZgogICAgIENGVVJMQ29ubmVjdGlvblNjaGVk
dWxlRG93bmxvYWRXaXRoUnVuTG9vcChjb25uZWN0aW9uLCBsb2FkZXJSdW5Mb29wKCksIGtDRlJ1
bkxvb3BEZWZhdWx0TW9kZSk7CiB9CiAKQEAgLTEwMyw3ICs4MSw2IEBAIENGVVJMUmVxdWVzdFJl
ZiBTeW5jaHJvbm91c1Jlc291cmNlSGFuZGwKICAgICByZXR1cm4gbmV3Q0ZSZXF1ZXN0OwogfQog
Ci0jaWYgIVBMQVRGT1JNKENPQ09BKQogc3RhdGljIHZvaWQgc2V0RGVmYXVsdE1JTUVUeXBlKENG
VVJMUmVzcG9uc2VSZWYgcmVzcG9uc2UpCiB7CiAgICAgc3RhdGljIENGU3RyaW5nUmVmIGRlZmF1
bHRNSU1FVHlwZVN0cmluZyA9IGRlZmF1bHRNSU1FVHlwZSgpLmNyZWF0ZUNGU3RyaW5nKCkubGVh
a1JlZigpOwpAQCAtMTMzLDcgKzExMCw2IEBAIHN0YXRpYyB2b2lkIGFkanVzdE1JTUVUeXBlSWZO
ZWNlc3NhcnkoQ0YKICAgICBpZiAocmVzdWx0ICE9IG9yaWdpbmFsUmVzdWx0KQogICAgICAgICBD
RlVSTFJlc3BvbnNlU2V0TUlNRVR5cGUoY2ZSZXNwb25zZSwgcmVzdWx0LmdldCgpKTsKIH0KLSNl
bmRpZiAvLyAhUExBVEZPUk0oQ09DT0EpCiAKIHZvaWQgU3luY2hyb25vdXNSZXNvdXJjZUhhbmRs
ZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlOjpkaWRSZWNlaXZlUmVzcG9uc2UoQ0ZVUkxDb25uZWN0
aW9uUmVmIGNvbm5lY3Rpb24sIENGVVJMUmVzcG9uc2VSZWYgY2ZSZXNwb25zZSkKIHsKQEAgLTE0
MiwyMSArMTE4LDYgQEAgdm9pZCBTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZQog
ICAgIGlmICghbV9oYW5kbGUtPmNsaWVudCgpKQogICAgICAgICByZXR1cm47CiAKLSNpZiBQTEFU
Rk9STShDT0NPQSkKLSAgICAvLyBBdm9pZCBNSU1FIHR5cGUgc25pZmZpbmcgaWYgdGhlIHJlc3Bv
bnNlIGNvbWVzIGJhY2sgYXMgMzA0IE5vdCBNb2RpZmllZC4KLSAgICBhdXRvIG1zZyA9IENGVVJM
UmVzcG9uc2VHZXRIVFRQUmVzcG9uc2UoY2ZSZXNwb25zZSk7Ci0gICAgaW50IHN0YXR1c0NvZGUg
PSBtc2cgPyBDRkhUVFBNZXNzYWdlR2V0UmVzcG9uc2VTdGF0dXNDb2RlKG1zZykgOiAwOwotCi0g
ICAgaWYgKHN0YXR1c0NvZGUgIT0gMzA0KSB7Ci0gICAgICAgIGJvb2wgaXNNYWluUmVzb3VyY2VM
b2FkID0gbV9oYW5kbGUtPmZpcnN0UmVxdWVzdCgpLnJlcXVlc3RlcigpID09IFJlc291cmNlUmVx
dWVzdDo6UmVxdWVzdGVyOjpNYWluOwotICAgICAgICBhZGp1c3RNSU1FVHlwZUlmTmVjZXNzYXJ5
KGNmUmVzcG9uc2UsIGlzTWFpblJlc291cmNlTG9hZCk7Ci0gICAgfQotCi0jaWYgIVBMQVRGT1JN
KElPUykKLSAgICBpZiAoX0NGVVJMUmVxdWVzdENvcHlQcm90b2NvbFByb3BlcnR5Rm9yS2V5KG1f
aGFuZGxlLT5maXJzdFJlcXVlc3QoKS5jZlVSTFJlcXVlc3QoRG9Ob3RVcGRhdGVIVFRQQm9keSks
IENGU1RSKCJGb3JjZUhUTUxNSU1FVHlwZSIpKSkKLSAgICAgICAgQ0ZVUkxSZXNwb25zZVNldE1J
TUVUeXBlKGNmUmVzcG9uc2UsIENGU1RSKCJ0ZXh0L2h0bWwiKSk7Ci0jZW5kaWYgLy8gIVBMQVRG
T1JNKElPUykKLSNlbHNlCiAgICAgaWYgKCFDRlVSTFJlc3BvbnNlR2V0TUlNRVR5cGUoY2ZSZXNw
b25zZSkpCiAgICAgICAgIGFkanVzdE1JTUVUeXBlSWZOZWNlc3NhcnkoY2ZSZXNwb25zZSk7CiAK
QEAgLTE2NSw3ICsxMjYsNiBAQCB2b2lkIFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENv
bm5lCiAgICAgICAgIEFTU0VSVCghbV9oYW5kbGUtPnNob3VsZENvbnRlbnRTbmlmZigpKTsKICAg
ICAgICAgc2V0RGVmYXVsdE1JTUVUeXBlKGNmUmVzcG9uc2UpOwogICAgIH0KLSNlbmRpZgogCiAj
aWYgVVNFKFFVSUNLX0xPT0spCiAgICAgbV9oYW5kbGUtPnNldFF1aWNrTG9va0hhbmRsZShRdWlj
a0xvb2tIYW5kbGU6OmNyZWF0ZShtX2hhbmRsZSwgdGhpcywgY2ZSZXNwb25zZSkpOwpAQCAtMTc0
LDcgKzEzNCw3IEBAIHZvaWQgU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmUKICNl
bmRpZgogICAgIAogICAgIFJlc291cmNlUmVzcG9uc2UgcmVzb3VyY2VSZXNwb25zZShjZlJlc3Bv
bnNlKTsKLSNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKFdFQl9USU1JTkcpCisjaWYgRU5B
QkxFKFdFQl9USU1JTkcpCiAgICAgUmVzb3VyY2VIYW5kbGU6OmdldENvbm5lY3Rpb25UaW1pbmdE
YXRhKGNvbm5lY3Rpb24sIHJlc291cmNlUmVzcG9uc2UubmV0d29ya0xvYWRUaW1pbmcoKSk7CiAj
ZWxzZQogICAgIFVOVVNFRF9QQVJBTShjb25uZWN0aW9uKTsKQEAgLTIyNCw3ICsxODQsNiBAQCB2
b2lkIFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lCiAKIENGQ2FjaGVkVVJMUmVz
cG9uc2VSZWYgU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRl
Ojp3aWxsQ2FjaGVSZXNwb25zZShDRkNhY2hlZFVSTFJlc3BvbnNlUmVmIGNhY2hlZFJlc3BvbnNl
KQogewotI2lmIFBMQVRGT1JNKFdJTikKICAgICAvLyBXb3JrYXJvdW5kIGZvciA8cmRhcjovL3By
b2JsZW0vNjMwMDk5MD4gQ2FjaGluZyBkb2VzIG5vdCByZXNwZWN0IFZhcnkgSFRUUCBoZWFkZXIu
CiAgICAgLy8gRklYTUU6IFdlYkNvcmUgY2FjaGUgaGFzIGlzc3VlcyB3aXRoIFZhcnksIHRvbyAo
YnVnIDU4Nzk3LCBidWcgNzE1MDkpLgogICAgIENGVVJMUmVzcG9uc2VSZWYgd3JhcHBlZFJlc3Bv
bnNlID0gQ0ZDYWNoZWRVUkxSZXNwb25zZUdldFdyYXBwZWRSZXNwb25zZShjYWNoZWRSZXNwb25z
ZSk7CkBAIC0yMzQsMTYgKzE5Myw4IEBAIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYgU3luY2hyb25v
dXNSZXNvdXIKICAgICAgICAgaWYgKHZhcnlWYWx1ZSkKICAgICAgICAgICAgIHJldHVybiAwOwog
ICAgIH0KLSNlbmRpZiAvLyBQTEFURk9STShXSU4pCi0KLSNpZiBQTEFURk9STShXSU4pCiAgICAg
aWYgKG1faGFuZGxlLT5jbGllbnQoKSAmJiAhbV9oYW5kbGUtPmNsaWVudCgpLT5zaG91bGRDYWNo
ZVJlc3BvbnNlKG1faGFuZGxlLCBjYWNoZWRSZXNwb25zZSkpCiAgICAgICAgIHJldHVybiAwOwot
I2Vsc2UKLSAgICBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmIG5ld1Jlc3BvbnNlID0gbV9oYW5kbGUt
PmNsaWVudCgpLT53aWxsQ2FjaGVSZXNwb25zZShtX2hhbmRsZSwgY2FjaGVkUmVzcG9uc2UpOwot
ICAgIGlmIChuZXdSZXNwb25zZSAhPSBjYWNoZWRSZXNwb25zZSkKLSAgICAgICAgcmV0dXJuIG5l
d1Jlc3BvbnNlOwotI2VuZGlmCiAKICAgICBDRlJldGFpbihjYWNoZWRSZXNwb25zZSk7CiAgICAg
cmV0dXJuIGNhY2hlZFJlc3BvbnNlOwpAQCAtMjgwLDE0ICsyMzEsNyBAQCBCb29sZWFuIFN5bmNo
cm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvCiAKICAgICBMT0coTmV0d29yaywgIkNGTmV0IC0g
U3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlOjpjYW5SZXNw
b25kVG9Qcm90ZWN0aW9uU3BhY2UoaGFuZGxlPSVwICglcykiLCBtX2hhbmRsZSwgbV9oYW5kbGUt
PmZpcnN0UmVxdWVzdCgpLnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogCi0jaWYgUExB
VEZPUk0oSU9TKQotICAgIFByb3RlY3Rpb25TcGFjZSBjb3JlUHJvdGVjdGlvblNwYWNlID0gUHJv
dGVjdGlvblNwYWNlKHByb3RlY3Rpb25TcGFjZSk7Ci0gICAgaWYgKGNvcmVQcm90ZWN0aW9uU3Bh
Y2UuYXV0aGVudGljYXRpb25TY2hlbWUoKSA9PSBQcm90ZWN0aW9uU3BhY2VBdXRoZW50aWNhdGlv
blNjaGVtZVVua25vd24pCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gbV9oYW5k
bGUtPmNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoY29yZVByb3RlY3Rpb25T
cGFjZSk7Ci0jZWxzZQogICAgIHJldHVybiBtX2hhbmRsZS0+Y2FuQXV0aGVudGljYXRlQWdhaW5z
dFByb3RlY3Rpb25TcGFjZShjb3JlKHByb3RlY3Rpb25TcGFjZSkpOwotI2VuZGlmCiB9CiAjZW5k
aWYgLy8gVVNFKFBST1RFQ1RJT05fU1BBQ0VfQVVUSF9DQUxMQkFDSykKIApJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9TeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZV
UkxDb25uZWN0aW9uRGVsZWdhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NmL1N5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25E
ZWxlZ2F0ZS5oCShyZXZpc2lvbiAyMDcwMzcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NmL1N5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMywxMCArMjMsOSBAQAogICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAq
LwogCi0jaWZuZGVmIFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxl
Z2F0ZV9oCi0jZGVmaW5lIFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25E
ZWxlZ2F0ZV9oCisjcHJhZ21hIG9uY2UKIAotI2lmIFVTRShDRk5FVFdPUkspCisjaWYgVVNFKENG
VVJMQ09OTkVDVElPTikKIAogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9u
RGVsZWdhdGUuaCIKIApAQCAtNjcsNiArNjYsNCBAQCBwcml2YXRlOgogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlLgogCi0jZW5kaWYgLy8gVVNFKENGTkVUV09SSykKLQotI2VuZGlmIC8vIFJlc291
cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVfaAorI2VuZGlmIC8vIFVTRShDRlVSTENP
Tk5FQ1RJT04pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL0Ny
ZWRlbnRpYWxDb2NvYS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY29jb2EvQ3JlZGVudGlhbENvY29hLmgJKHJldmlzaW9uIDIwNzAzNykKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvQ3JlZGVudGlhbENvY29hLmgJKHdvcmtp
bmcgY29weSkKQEAgLTIzLDE3ICsyMywxMiBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgogICovCiAKLSNpZm5kZWYgQ3JlZGVudGlhbENvY29hX2gKLSNkZWZpbmUgQ3JlZGVu
dGlhbENvY29hX2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQ3JlZGVudGlhbEJhc2UuaCIK
ICNpbmNsdWRlIDxTZWN1cml0eS9TZWNCYXNlLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5o
PgogCi0jaWYgVVNFKENGTkVUV09SSykKLSNpbmNsdWRlICJDRk5ldHdvcmtTUEkuaCIKLSNlbmRp
ZgotCiBPQkpDX0NMQVNTIE5TVVJMQ3JlZGVudGlhbDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpA
QCAtNTIsMTggKzQ3LDEyIEBAIHB1YmxpYzoKIAogICAgIENyZWRlbnRpYWwoY29uc3QgQ3JlZGVu
dGlhbCYsIENyZWRlbnRpYWxQZXJzaXN0ZW5jZSk7CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotICAg
IGV4cGxpY2l0IENyZWRlbnRpYWwoQ0ZVUkxDcmVkZW50aWFsUmVmKTsKLSNlbmRpZgogICAgIFdF
QkNPUkVfRVhQT1JUIGV4cGxpY2l0IENyZWRlbnRpYWwoTlNVUkxDcmVkZW50aWFsICopOwogCiAg
ICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc0VtcHR5KCkgY29uc3Q7CiAKICAgICBib29sIGVuY29k
aW5nUmVxdWlyZXNQbGF0Zm9ybURhdGEoKSBjb25zdCB7IHJldHVybiBtX25zQ3JlZGVudGlhbCAm
JiBlbmNvZGluZ1JlcXVpcmVzUGxhdGZvcm1EYXRhKG1fbnNDcmVkZW50aWFsLmdldCgpKTsgfQog
Ci0jaWYgVVNFKENGTkVUV09SSykKLSAgICBDRlVSTENyZWRlbnRpYWxSZWYgY2ZDcmVkZW50aWFs
KCkgY29uc3Q7Ci0jZW5kaWYKICAgICBXRUJDT1JFX0VYUE9SVCBOU1VSTENyZWRlbnRpYWwgKm5z
Q3JlZGVudGlhbCgpIGNvbnN0OwogCiAgICAgc3RhdGljIGJvb2wgcGxhdGZvcm1Db21wYXJlKGNv
bnN0IENyZWRlbnRpYWwmLCBjb25zdCBDcmVkZW50aWFsJik7CkBAIC03NSw1ICs2NCwzIEBAIHBy
aXZhdGU6CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBDcmVkZW50
aWFsQ29jb2FfaApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9D
cmVkZW50aWFsQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jb2NvYS9DcmVkZW50aWFsQ29jb2EubW0JKHJldmlzaW9uIDIwNzAzNykKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvQ3JlZGVudGlhbENvY29hLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0yNiwxMyArMjYsNiBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1w
b3J0ICJDcmVkZW50aWFsQ29jb2EuaCIKIAotI2lmIFVTRShDRk5FVFdPUkspCi1AaW50ZXJmYWNl
IE5TVVJMQ3JlZGVudGlhbCAoV2ViRGV0YWlscykKLS0gKGlkKV9pbml0V2l0aENGVVJMQ3JlZGVu
dGlhbDooQ0ZVUkxDcmVkZW50aWFsUmVmKWNyZWRlbnRpYWw7Ci0tIChDRlVSTENyZWRlbnRpYWxS
ZWYpIF9DRlVSTENyZWRlbnRpYWw7Ci1AZW5kCi0jZW5kaWYKLQogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBzdGF0aWMgTlNVUkxDcmVkZW50aWFsUGVyc2lzdGVuY2UgdG9OU1VSTENyZWRlbnRpYWxQ
ZXJzaXN0ZW5jZShDcmVkZW50aWFsUGVyc2lzdGVuY2UgcGVyc2lzdGVuY2UpCkBAIC04NCwyNiAr
NzcsMTIgQEAgQ3JlZGVudGlhbDo6Q3JlZGVudGlhbChjb25zdCBDcmVkZW50aWFsJgogICAgIH0K
IH0KIAotI2lmIFVTRShDRk5FVFdPUkspCi1DcmVkZW50aWFsOjpDcmVkZW50aWFsKENGVVJMQ3Jl
ZGVudGlhbFJlZiBjcmVkZW50aWFsKQotICAgIDogQ3JlZGVudGlhbChhZG9wdE5TKFtbTlNVUkxD
cmVkZW50aWFsIGFsbG9jXSBfaW5pdFdpdGhDRlVSTENyZWRlbnRpYWw6Y3JlZGVudGlhbF0pLmdl
dCgpKQotewotfQotI2VuZGlmCi0KIENyZWRlbnRpYWw6OkNyZWRlbnRpYWwoTlNVUkxDcmVkZW50
aWFsICpjcmVkZW50aWFsKQogICAgIDogQ3JlZGVudGlhbEJhc2UoY3JlZGVudGlhbC51c2VyLCBj
cmVkZW50aWFsLnBhc3N3b3JkLCB0b0NyZWRlbnRpYWxQZXJzaXN0ZW5jZShjcmVkZW50aWFsLnBl
cnNpc3RlbmNlKSkKICAgICAsIG1fbnNDcmVkZW50aWFsKGNyZWRlbnRpYWwpCiB7CiB9CiAKLSNp
ZiBVU0UoQ0ZORVRXT1JLKQotQ0ZVUkxDcmVkZW50aWFsUmVmIENyZWRlbnRpYWw6OmNmQ3JlZGVu
dGlhbCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFtuc0NyZWRlbnRpYWwoKSBfQ0ZVUkxDcmVkZW50
aWFsXTsKLX0KLSNlbmRpZgotCiBOU1VSTENyZWRlbnRpYWwgKkNyZWRlbnRpYWw6Om5zQ3JlZGVu
dGlhbCgpIGNvbnN0CiB7CiAgICAgaWYgKG1fbnNDcmVkZW50aWFsKQpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9Qcm90ZWN0aW9uU3BhY2VDb2NvYS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUHJvdGVjdGlv
blNwYWNlQ29jb2EuaAkocmV2aXNpb24gMjA3MDM3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jb2NvYS9Qcm90ZWN0aW9uU3BhY2VDb2NvYS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yMywxNiArMjMsMTEgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAq
LwogCi0jaWZuZGVmIFByb3RlY3Rpb25TcGFjZUNvY29hX2gKLSNkZWZpbmUgUHJvdGVjdGlvblNw
YWNlQ29jb2FfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJQcm90ZWN0aW9uU3BhY2VCYXNl
LmgiCiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogCi0jaWYgVVNFKENGTkVUV09SSykKLXR5
cGVkZWYgc3RydWN0IF9DRlVSTFByb3RlY3Rpb25TcGFjZSogQ0ZVUkxQcm90ZWN0aW9uU3BhY2VS
ZWY7Ci0jZW5kaWYKLQogT0JKQ19DTEFTUyBOU1VSTFByb3RlY3Rpb25TcGFjZTsKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpAQCAtNDcsOSArNDIsNiBAQCBwdWJsaWM6CiAKICAgICBQcm90ZWN0aW9u
U3BhY2UoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlIGRlbGV0ZWRWYWx1ZSkgOiBQcm90
ZWN0aW9uU3BhY2VCYXNlKGRlbGV0ZWRWYWx1ZSkgeyB9CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQot
ICAgIGV4cGxpY2l0IFByb3RlY3Rpb25TcGFjZShDRlVSTFByb3RlY3Rpb25TcGFjZVJlZik7Ci0j
ZW5kaWYKICAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBQcm90ZWN0aW9uU3BhY2UoTlNVUkxQ
cm90ZWN0aW9uU3BhY2UgKik7CiAKICAgICBzdGF0aWMgYm9vbCBwbGF0Zm9ybUNvbXBhcmUoY29u
c3QgUHJvdGVjdGlvblNwYWNlJiBhLCBjb25zdCBQcm90ZWN0aW9uU3BhY2UmIGIpOwpAQCAtNTgs
OSArNTAsNiBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIHJlY2VpdmVzQ3Jl
ZGVudGlhbFNlY3VyZWx5KCkgY29uc3Q7CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotICAgIENGVVJM
UHJvdGVjdGlvblNwYWNlUmVmIGNmU3BhY2UoKSBjb25zdDsKLSNlbmRpZgogICAgIFdFQkNPUkVf
RVhQT1JUIE5TVVJMUHJvdGVjdGlvblNwYWNlICpuc1NwYWNlKCkgY29uc3Q7CiAKIHByaXZhdGU6
CkBAIC03MCw1ICs1OSwzIEBAIHByaXZhdGU6CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
Ci0KLSNlbmRpZiAvLyBQcm90ZWN0aW9uU3BhY2VDb2NvYV9oCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Byb3RlY3Rpb25TcGFjZUNvY29hLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUHJvdGVjdGlvblNw
YWNlQ29jb2EubW0JKHJldmlzaW9uIDIwNzAzNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY29jb2EvUHJvdGVjdGlvblNwYWNlQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAg
LTI2LDIyICsyNiw5IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIlByb3RlY3Rpb25T
cGFjZUNvY29hLmgiCiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotQGludGVyZmFjZSBOU1VSTFByb3Rl
Y3Rpb25TcGFjZSAoV2ViRGV0YWlscykKLS0gKENGVVJMUHJvdGVjdGlvblNwYWNlUmVmKSBfQ0ZV
UkxQcm90ZWN0aW9uU3BhY2U7Ci0tIChpZClfaW5pdFdpdGhDRlVSTFByb3RlY3Rpb25TcGFjZToo
Q0ZVUkxQcm90ZWN0aW9uU3BhY2VSZWYpY2ZQcm90U3BhY2U7Ci1AZW5kCi0jZW5kaWYKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi0jaWYgVVNFKENGTkVUV09SSykKLVByb3RlY3Rpb25TcGFjZTo6
UHJvdGVjdGlvblNwYWNlKENGVVJMUHJvdGVjdGlvblNwYWNlUmVmIHNwYWNlKQotICAgIDogUHJv
dGVjdGlvblNwYWNlKGFkb3B0TlMoW1tOU1VSTFByb3RlY3Rpb25TcGFjZSBhbGxvY10gX2luaXRX
aXRoQ0ZVUkxQcm90ZWN0aW9uU3BhY2U6c3BhY2VdKS5nZXQoKSkKLXsKLX0KLSNlbmRpZgotCiBz
dGF0aWMgUHJvdGVjdGlvblNwYWNlU2VydmVyVHlwZSB0eXBlKE5TVVJMUHJvdGVjdGlvblNwYWNl
ICpzcGFjZSkKIHsKICAgICBpZiAoW3NwYWNlIGlzUHJveHldKSB7CkBAIC0xMDUsMTMgKzkyLDYg
QEAgUHJvdGVjdGlvblNwYWNlOjpQcm90ZWN0aW9uU3BhY2UoTlNVUkxQcgogICAgIG1fbnNTcGFj
ZSA9IHNwYWNlOwogfQogCi0jaWYgVVNFKENGTkVUV09SSykKLUNGVVJMUHJvdGVjdGlvblNwYWNl
UmVmIFByb3RlY3Rpb25TcGFjZTo6Y2ZTcGFjZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFtuc1Nw
YWNlKCkgX0NGVVJMUHJvdGVjdGlvblNwYWNlXTsKLX0KLSNlbmRpZgotCiBOU1VSTFByb3RlY3Rp
b25TcGFjZSAqUHJvdGVjdGlvblNwYWNlOjpuc1NwYWNlKCkgY29uc3QKIHsKICAgICBpZiAobV9u
c1NwYWNlKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNv
dXJjZVJlcXVlc3RDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVxdWVzdENvY29hLm1tCShyZXZpc2lvbiAyMDcwMzcp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVxdWVz
dENvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC01MywxNSArNTMsOSBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiBOU1VSTFJlcXVlc3QgKlJlc291cmNlUmVxdWVzdDo6bnNVUkxSZXF1ZXN0KEhUVFBC
b2R5VXBkYXRlUG9saWN5IGJvZHlQb2xpY3kpIGNvbnN0CiB7CiAgICAgdXBkYXRlUGxhdGZvcm1S
ZXF1ZXN0KGJvZHlQb2xpY3kpOwotI2lmIFVTRShDRk5FVFdPUkspCi0gICAgaWYgKCFtX25zUmVx
dWVzdCkKLSAgICAgICAgY29uc3RfY2FzdDxSZXNvdXJjZVJlcXVlc3QqPih0aGlzKS0+dXBkYXRl
TlNVUkxSZXF1ZXN0KCk7Ci0jZW5kaWYKICAgICByZXR1cm4gW1ttX25zUmVxdWVzdC5nZXQoKSBy
ZXRhaW5dIGF1dG9yZWxlYXNlXTsKIH0KIAotI2lmICFVU0UoQ0ZORVRXT1JLKQotCiBDRlVSTFJl
cXVlc3RSZWYgUmVzb3VyY2VSZXF1ZXN0OjpjZlVSTFJlcXVlc3QoSFRUUEJvZHlVcGRhdGVQb2xp
Y3kgYm9keVBvbGljeSkgY29uc3QKIHsKICAgICByZXR1cm4gW25zVVJMUmVxdWVzdChib2R5UG9s
aWN5KSBfQ0ZVUkxSZXF1ZXN0XTsKQEAgLTIxNCw4ICsyMDgsNiBAQCB2b2lkIFJlc291cmNlUmVx
dWVzdDo6c2V0U3RvcmFnZVNlc3Npb24oCiAgICAgbV9uc1JlcXVlc3QgPSBhZG9wdE5TKHdrQ29w
eVJlcXVlc3RXaXRoU3RvcmFnZVNlc3Npb24oc3RvcmFnZVNlc3Npb24sIG1fbnNSZXF1ZXN0Lmdl
dCgpKSk7CiB9CiAKLSNlbmRpZiAvLyBVU0UoQ0ZORVRXT1JLKQotCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKICNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXNwb25zZUNvY29hLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXNw
b25zZUNvY29hLm1tCShyZXZpc2lvbiAyMDcwMzcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVzcG9uc2VDb2NvYS5tbQkod29ya2luZyBjb3B5KQpA
QCAtNzUsMTMgKzc1LDggQEAgdm9pZCBSZXNvdXJjZVJlc3BvbnNlOjpkaXNhYmxlTGF6eUluaXRp
YQogCiBDZXJ0aWZpY2F0ZUluZm8gUmVzb3VyY2VSZXNwb25zZTo6cGxhdGZvcm1DZXJ0aWZpY2F0
ZUluZm8oKSBjb25zdAogewotI2lmIFVTRShDRk5FVFdPUkspCi0gICAgQVNTRVJUKG1fY2ZSZXNw
b25zZSk7Ci0gICAgQ0ZVUkxSZXNwb25zZVJlZiBjZlJlc3BvbnNlID0gbV9jZlJlc3BvbnNlLmdl
dCgpOwotI2Vsc2UKICAgICBBU1NFUlQobV9uc1Jlc3BvbnNlKTsKICAgICBDRlVSTFJlc3BvbnNl
UmVmIGNmUmVzcG9uc2UgPSBbbV9uc1Jlc3BvbnNlIF9DRlVSTFJlc3BvbnNlXTsKLSNlbmRpZgog
CiAgICAgaWYgKCFjZlJlc3BvbnNlKQogICAgICAgICByZXR1cm4geyB9OwpAQCAtMTE0LDM1ICsx
MDksNiBAQCBDZXJ0aWZpY2F0ZUluZm8gUmVzb3VyY2VSZXNwb25zZTo6cGxhdGZvCiAjZW5kaWYK
IH0KIAotI2lmIFVTRShDRk5FVFdPUkspCi0KLU5TVVJMUmVzcG9uc2UgKlJlc291cmNlUmVzcG9u
c2U6Om5zVVJMUmVzcG9uc2UoKSBjb25zdAotewotICAgIGlmICghbV9uc1Jlc3BvbnNlICYmICFt
X2NmUmVzcG9uc2UgJiYgIW1faXNOdWxsKSB7Ci0gICAgICAgIGluaXROU1VSTFJlc3BvbnNlKCk7
Ci0gICAgICAgIG1fY2ZSZXNwb25zZSA9IFttX25zUmVzcG9uc2UuZ2V0KCkgX0NGVVJMUmVzcG9u
c2VdOwotICAgICAgICByZXR1cm4gbV9uc1Jlc3BvbnNlLmdldCgpOwotICAgIH0KLQotICAgIGlm
ICghbV9jZlJlc3BvbnNlKQotICAgICAgICByZXR1cm4gbmlsOwotCi0gICAgaWYgKCFtX25zUmVz
cG9uc2UpCi0gICAgICAgIG1fbnNSZXNwb25zZSA9IFtOU1VSTFJlc3BvbnNlIF9yZXNwb25zZVdp
dGhDRlVSTFJlc3BvbnNlOm1fY2ZSZXNwb25zZS5nZXQoKV07Ci0KLSAgICByZXR1cm4gbV9uc1Jl
c3BvbnNlLmdldCgpOwotfQotCi1SZXNvdXJjZVJlc3BvbnNlOjpSZXNvdXJjZVJlc3BvbnNlKE5T
VVJMUmVzcG9uc2UqIG5zUmVzcG9uc2UpCi0gICAgOiBtX2luaXRMZXZlbChVbmluaXRpYWxpemVk
KQotICAgICwgbV9jZlJlc3BvbnNlKFtuc1Jlc3BvbnNlIF9DRlVSTFJlc3BvbnNlXSkKLSAgICAs
IG1fbnNSZXNwb25zZShuc1Jlc3BvbnNlKQotewotICAgIG1faXNOdWxsID0gIW5zUmVzcG9uc2U7
Ci19Ci0KLSNlbHNlCi0KIHN0YXRpYyBOU1N0cmluZyogY29uc3QgY29tbW9uSGVhZGVyRmllbGRz
W10gPSB7CiAgICAgQCJBZ2UiLCBAIkNhY2hlLUNvbnRyb2wiLCBAIkNvbnRlbnQtVHlwZSIsIEAi
RGF0ZSIsIEAiRXRhZyIsIEAiRXhwaXJlcyIsIEAiTGFzdC1Nb2RpZmllZCIsIEAiUHJhZ21hIgog
fTsKQEAgLTI0Miw4ICsyMDgsNiBAQCBib29sIFJlc291cmNlUmVzcG9uc2U6OnBsYXRmb3JtQ29t
cGFyZShjCiAgICAgcmV0dXJuIGEubnNVUkxSZXNwb25zZSgpID09IGIubnNVUkxSZXNwb25zZSgp
OwogfQogCi0jZW5kaWYgLy8gVVNFKENGTkVUV09SSykKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQogCiAjZW5kaWYgLy8gUExBVEZPUk0oQ09DT0EpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2lvcy9RdWlja0xvb2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9RdWlja0xvb2suaAkocmV2aXNpb24gMjA3MDM3KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUXVpY2tMb29rLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTMzLDEwICszMyw2IEBACiAjaW1wb3J0IDxvYmpjL29iamMtcnVudGltZS5oPgog
I2ltcG9ydCA8d3RmL1JlZlB0ci5oPgogCi0jaWYgVVNFKENGTkVUV09SSykKLSNpbmNsdWRlICJD
Rk5ldHdvcmtTUEkuaCIKLSNlbmRpZgotCiBPQkpDX0NMQVNTIE5TRGF0YTsKIE9CSkNfQ0xBU1Mg
TlNEaWN0aW9uYXJ5OwogT0JKQ19DTEFTUyBOU0ZpbGVIYW5kbGU7CkBAIC04MSw5ICs3Nyw2IEBA
IHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBzaG91bGRDcmVhdGVGb3JN
SU1FVHlwZShjb25zdCBTdHJpbmcmKTsKIAogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UXVp
Y2tMb29rSGFuZGxlPiBjcmVhdGUoUmVzb3VyY2VIYW5kbGUqLCBOU1VSTENvbm5lY3Rpb24gKiwg
TlNVUkxSZXNwb25zZSAqLCBpZCBkZWxlZ2F0ZSk7Ci0jaWYgVVNFKENGTkVUV09SSykKLSAgICBz
dGF0aWMgc3RkOjp1bmlxdWVfcHRyPFF1aWNrTG9va0hhbmRsZT4gY3JlYXRlKFJlc291cmNlSGFu
ZGxlKiwgU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlKiwg
Q0ZVUkxSZXNwb25zZVJlZik7Ci0jZW5kaWYKICAgICAvLyBGSVhNRTogVXNlIG9mIFJlc291cmNl
TG9hZGVyIGhlcmUgaXMgYSBwbGF0Zm9ybSB2aW9sYXRpb24uCiAgICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxRdWlja0xvb2tIYW5kbGU+IGNyZWF0ZShSZXNvdXJjZUxv
YWRlciYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKIApAQCAtOTUsOSArODgsNiBAQCBwdWJs
aWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRGYWlsKCk7CiAKICAgICBXRUJDT1JFX0VY
UE9SVCBOU1VSTFJlc3BvbnNlICpuc1Jlc3BvbnNlKCk7Ci0jaWYgVVNFKENGTkVUV09SSykKLSAg
ICBDRlVSTFJlc3BvbnNlUmVmIGNmUmVzcG9uc2UoKTsKLSNlbmRpZgogCiAgICAgdm9pZCBzZXRD
bGllbnQoUGFzc1JlZlB0cjxRdWlja0xvb2tIYW5kbGVDbGllbnQ+IGNsaWVudCkgeyBtX2NsaWVu
dCA9IGNsaWVudDsgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lv
cy9RdWlja0xvb2subW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9pb3MvUXVpY2tMb29rLm1tCShyZXZpc2lvbiAyMDcwMzcpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9RdWlja0xvb2subW0JKHdvcmtpbmcgY29weSkKQEAgLTE4
NSw4MSArMTg1LDYgQEAgY29uc3QgY2hhciogV2ViQ29yZTo6UUxQcmV2aWV3UHJvdG9jb2woKQog
ICAgIHJldHVybiBwcmV2aWV3UHJvdG9jb2wuZ2V0KCkuZGF0YSgpOwogfQogCi0jaWYgVVNFKENG
TkVUV09SSykKLS8vIFRoZSB3YXkgUXVpY2tMb29rIHdvcmtzIGlzIHdlIHBhc3MgaXQgYW4gTlNV
UkxDb25uZWN0aW9uRGVsZWdhdGUgY2FsbGJhY2sgb2JqZWN0IGF0IGNyZWF0aW9uCi0vLyB0aW1l
LiBUaGVuIHdlIHBhc3MgaXQgYWxsIHRoZSBkYXRhIGFzIHdlIHJlY2VpdmUgaXQuIE9uY2Ugd2Un
dmUgZG93bmxvYWRlZCB0aGUgZnVsbCBVUkwsCi0vLyBRdWlja0xvb2sgdHVybnMgYXJvdW5kIGFu
ZCBzZW5kIHVzLCB0aHJvdWdoIHRoaXMgZGVsZWdhdGUsIHRoZSBIVE1MIHZlcnNpb24gb2YgdGhl
IGZpbGUgd2hpY2ggd2UKLS8vIHBhc3Mgb24gdG8gV2ViQ29yZS4gVGhlIGZsYWcgbV9maW5pc2hl
ZExvYWRpbmdEYXRhSW50b0NvbnZlcnRlciBpbiBRdWlja0xvb2tIYW5kbGUgZGVjaWRlcwotLy8g
d2hldGhlciB0byBwYXNzIHRoZSBkYXRhIHRvIFF1aWNrTG9vayBvciBXZWJDb3JlLgotLy8KLS8v
IFRoaXMgd29ya3MgZmluZSB3aGVuIHVzaW5nIE5TIEFQSXMsIGJ1dCB3aGVuIHVzaW5nIENGTmV0
d29yaywgd2UgZG9uJ3QgaGF2ZSBhIE5TVVJMQ29ubmVjdGlvbkRlbGVnYXRlLgotLy8gU28gd2Ug
Y3JlYXRlIFdlYlF1aWNrTG9va0hhbmRsZUFzRGVsZWdhdGUgYXMgYW4gaW50ZXJtZWRpYXRlIGRl
bGVnYXRlIG9iamVjdCBhbmQgcGFzcyBpdCB0bwotLy8gUUxQcmV2aWV3Q29udmVydGVyLiBUaGUg
cHJveHkgZGVsZWdhdGUgdGhlbiBmb3J3YXJkcyB0aGUgbWVzc2FnZXMgb24gdG8gdGhlIENGTmV0
d29yayBjb2RlLgotQGludGVyZmFjZSBXZWJRdWlja0xvb2tIYW5kbGVBc0RlbGVnYXRlIDogTlNP
YmplY3QgPE5TVVJMQ29ubmVjdGlvbkRlbGVnYXRlLCBXZWJDb3JlUmVzb3VyY2VMb2FkZXJEZWxl
Z2F0ZT4gewotICAgIFJlZlB0cjxTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0
aW9uRGVsZWdhdGU+IG1fY29ubmVjdGlvbkRlbGVnYXRlOwotfQotCi0tIChpZClpbml0V2l0aENv
bm5lY3Rpb25EZWxlZ2F0ZTooU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlv
bkRlbGVnYXRlKiljb25uZWN0aW9uRGVsZWdhdGU7Ci1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBX
ZWJRdWlja0xvb2tIYW5kbGVBc0RlbGVnYXRlCi0tIChpZClpbml0V2l0aENvbm5lY3Rpb25EZWxl
Z2F0ZTooU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlKilj
b25uZWN0aW9uRGVsZWdhdGUKLXsKLSAgICBzZWxmID0gW3N1cGVyIGluaXRdOwotICAgIGlmICgh
c2VsZikKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICBtX2Nvbm5lY3Rpb25EZWxlZ2F0ZSA9IGNv
bm5lY3Rpb25EZWxlZ2F0ZTsKLSAgICByZXR1cm4gc2VsZjsKLX0KLQotLSAodm9pZCljb25uZWN0
aW9uOihOU1VSTENvbm5lY3Rpb24gKiljb25uZWN0aW9uIGRpZFJlY2VpdmVEYXRhQXJyYXk6KE5T
QXJyYXkgKilkYXRhQXJyYXkKLXsKLSAgICBVTlVTRURfUEFSQU0oY29ubmVjdGlvbik7Ci0gICAg
aWYgKCFtX2Nvbm5lY3Rpb25EZWxlZ2F0ZSkKLSAgICAgICAgcmV0dXJuOwotICAgIExPRyhOZXR3
b3JrLCAiV2ViUXVpY2tMb29rSGFuZGxlQXNEZWxlZ2F0ZTo6ZGlkUmVjZWl2ZURhdGFBcnJheSgp
Iik7Ci0gICAgbV9jb25uZWN0aW9uRGVsZWdhdGUtPmRpZFJlY2VpdmVEYXRhQXJyYXkocmVpbnRl
cnByZXRfY2FzdDxDRkFycmF5UmVmPihkYXRhQXJyYXkpKTsKLX0KLQotLSAodm9pZCljb25uZWN0
aW9uOihOU1VSTENvbm5lY3Rpb24gKiljb25uZWN0aW9uIGRpZFJlY2VpdmVEYXRhOihOU0RhdGEg
KilkYXRhIGxlbmd0aFJlY2VpdmVkOihsb25nIGxvbmcpbGVuZ3RoUmVjZWl2ZWQKLXsKLSAgICBV
TlVTRURfUEFSQU0oY29ubmVjdGlvbik7Ci0gICAgaWYgKCFtX2Nvbm5lY3Rpb25EZWxlZ2F0ZSkK
LSAgICAgICAgcmV0dXJuOwotICAgIExPRyhOZXR3b3JrLCAiV2ViUXVpY2tMb29rSGFuZGxlQXNE
ZWxlZ2F0ZTo6ZGlkUmVjZWl2ZURhdGEoKSAtIGRhdGEgbGVuZ3RoID0gJWxkIiwgKGxvbmcpW2Rh
dGEgbGVuZ3RoXSk7Ci0KLSAgICAvLyBRdWlja0xvb2sgY29kZSBzZW5kcyB1cyBhIG5pbCBkYXRh
IGF0IHRpbWVzLiBUaGUgY2hlY2sgYmVsb3cgaXMgdGhlIHNhbWUgYXMgdGhlIG9uZSBpbgotICAg
IC8vIFJlc291cmNlSGFuZGxlTWFjLmNwcCBhZGRlZCBmb3IgYSBkaWZmZXJlbnQgYnVnLgotICAg
IGlmICghW2RhdGEgbGVuZ3RoXSkKLSAgICAgICAgcmV0dXJuOwotICAgIG1fY29ubmVjdGlvbkRl
bGVnYXRlLT5kaWRSZWNlaXZlRGF0YShyZWludGVycHJldF9jYXN0PENGRGF0YVJlZj4oZGF0YSks
IHN0YXRpY19jYXN0PGludD4obGVuZ3RoUmVjZWl2ZWQpKTsKLX0KLQotLSAodm9pZCljb25uZWN0
aW9uRGlkRmluaXNoTG9hZGluZzooTlNVUkxDb25uZWN0aW9uICopY29ubmVjdGlvbgotewotICAg
IFVOVVNFRF9QQVJBTShjb25uZWN0aW9uKTsKLSAgICBpZiAoIW1fY29ubmVjdGlvbkRlbGVnYXRl
KQotICAgICAgICByZXR1cm47Ci0gICAgTE9HKE5ldHdvcmssICJXZWJRdWlja0xvb2tIYW5kbGVB
c0RlbGVnYXRlOjpkaWRGaW5pc2hMb2FkaW5nKCkiKTsKLSAgICBtX2Nvbm5lY3Rpb25EZWxlZ2F0
ZS0+ZGlkRmluaXNoTG9hZGluZygpOwotfQotCi0tICh2b2lkKWNvbm5lY3Rpb246KE5TVVJMQ29u
bmVjdGlvbiAqKWNvbm5lY3Rpb24gZGlkRmFpbFdpdGhFcnJvcjooTlNFcnJvciAqKWVycm9yCi17
Ci0gICAgVU5VU0VEX1BBUkFNKGNvbm5lY3Rpb24pOwotICAgIGlmICghbV9jb25uZWN0aW9uRGVs
ZWdhdGUpCi0gICAgICAgIHJldHVybjsKLSAgICBMT0coTmV0d29yaywgIldlYlF1aWNrTG9va0hh
bmRsZUFzRGVsZWdhdGU6OmRpZEZhaWwoKSIpOwotICAgIG1fY29ubmVjdGlvbkRlbGVnYXRlLT5k
aWRGYWlsKHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZFcnJvclJlZj4oZXJyb3IpKTsKLX0KLQotLSAodm9p
ZClkZXRhY2hIYW5kbGUKLXsKLSAgICBtX2Nvbm5lY3Rpb25EZWxlZ2F0ZSA9IG51bGxwdHI7Ci19
Ci1AZW5kCi0jZW5kaWYKLQogQGludGVyZmFjZSBXZWJSZXNvdXJjZUxvYWRlclF1aWNrTG9va0Rl
bGVnYXRlIDogTlNPYmplY3QgPE5TVVJMQ29ubmVjdGlvbkRlbGVnYXRlLCBXZWJDb3JlUmVzb3Vy
Y2VMb2FkZXJEZWxlZ2F0ZT4gewogICAgIFJlZlB0cjxSZXNvdXJjZUxvYWRlcj4gX3Jlc291cmNl
TG9hZGVyOwogICAgIEJPT0wgX2hhc1NlbnREaWRSZWNlaXZlUmVzcG9uc2U7CkBAIC00MTEsMjYg
KzMzNiw2IEBAIHN0ZDo6dW5pcXVlX3B0cjxRdWlja0xvb2tIYW5kbGU+IFF1aWNrTG8KICAgICBy
ZXR1cm4gcXVpY2tMb29rSGFuZGxlOwogfQogCi0jaWYgVVNFKENGTkVUV09SSykKLXN0ZDo6dW5p
cXVlX3B0cjxRdWlja0xvb2tIYW5kbGU+IFF1aWNrTG9va0hhbmRsZTo6Y3JlYXRlKFJlc291cmNl
SGFuZGxlKiBoYW5kbGUsIFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25E
ZWxlZ2F0ZSogY29ubmVjdGlvbkRlbGVnYXRlLCBDRlVSTFJlc3BvbnNlUmVmIGNmUmVzcG9uc2Up
Ci17Ci0gICAgQVNTRVJUX0FSRyhoYW5kbGUsIGhhbmRsZSk7Ci0gICAgaWYgKGhhbmRsZS0+Zmly
c3RSZXF1ZXN0KCkucmVxdWVzdGVyKCkgIT0gUmVzb3VyY2VSZXF1ZXN0OjpSZXF1ZXN0ZXI6Ok1h
aW4gfHwgIVtRTFByZXZpZXdHZXRTdXBwb3J0ZWRNSU1FVHlwZXNTZXQoKSBjb250YWluc09iamVj
dDooTlNTdHJpbmcgKilDRlVSTFJlc3BvbnNlR2V0TUlNRVR5cGUoY2ZSZXNwb25zZSldKQotICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIE5TVVJMUmVzcG9uc2UgKm5zUmVzcG9uc2UgPSBb
TlNVUkxSZXNwb25zZSBfcmVzcG9uc2VXaXRoQ0ZVUkxSZXNwb25zZTpjZlJlc3BvbnNlXTsKLSAg
ICBXZWJRdWlja0xvb2tIYW5kbGVBc0RlbGVnYXRlICpkZWxlZ2F0ZSA9IFtbW1dlYlF1aWNrTG9v
a0hhbmRsZUFzRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoQ29ubmVjdGlvbkRlbGVnYXRlOmNvbm5l
Y3Rpb25EZWxlZ2F0ZV0gYXV0b3JlbGVhc2VdOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxRdWlja0xv
b2tIYW5kbGU+IHF1aWNrTG9va0hhbmRsZShuZXcgUXVpY2tMb29rSGFuZGxlKFtoYW5kbGUtPmZp
cnN0UmVxdWVzdCgpLm5zVVJMUmVxdWVzdChEb05vdFVwZGF0ZUhUVFBCb2R5KSBVUkxdLCBuaWws
IG5zUmVzcG9uc2UsIGRlbGVnYXRlKSk7Ci0gICAgaGFuZGxlLT5jbGllbnQoKS0+ZGlkQ3JlYXRl
UXVpY2tMb29rSGFuZGxlKCpxdWlja0xvb2tIYW5kbGUpOwotICAgIHJldHVybiBxdWlja0xvb2tI
YW5kbGU7Ci19Ci0KLUNGVVJMUmVzcG9uc2VSZWYgUXVpY2tMb29rSGFuZGxlOjpjZlJlc3BvbnNl
KCkKLXsKLSAgICByZXR1cm4gW21fbnNSZXNwb25zZSBfQ0ZVUkxSZXNwb25zZV07Ci19Ci0jZW5k
aWYKLQogYm9vbCBRdWlja0xvb2tIYW5kbGU6OnNob3VsZENyZWF0ZUZvck1JTUVUeXBlKGNvbnN0
IFN0cmluZyYgbWltZVR5cGUpCiB7CiAgICAgcmV0dXJuIFtRTFByZXZpZXdHZXRTdXBwb3J0ZWRN
SU1FVHlwZXNTZXQoKSBjb250YWluc09iamVjdDptaW1lVHlwZV07CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9SZXNvdXJjZUhhbmRsZUlPUy5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9SZXNvdXJjZUhhbmRsZUlP
Uy5tbQkocmV2aXNpb24gMjA3MDM3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9pb3MvUmVzb3VyY2VIYW5kbGVJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTEsMzkgKzAsMCBA
QAotLy8KLS8vICBSZXNvdXJjZUhhbmRsZUlQaG9uZS5tbQotLy8gIFdlYkNvcmUKLS8vCi0vLyAg
Q29weXJpZ2h0IDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLQotI2lt
cG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJSZXNvdXJjZUhhbmRsZUludGVybmFsLmgiCi0KLSNp
ZiBVU0UoQ0ZORVRXT1JLKQotCi0jaW1wb3J0IDxDRk5ldHdvcmsvQ0ZTb2NrZXRTdHJlYW1Qcml2
Lmg+Ci0jaW1wb3J0IDxGb3VuZGF0aW9uL05TVVJMUmVxdWVzdFByaXZhdGUuaD4KLQotdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotQ0ZNdXRhYmxlRGlj
dGlvbmFyeVJlZiBSZXNvdXJjZUhhbmRsZTo6Y3JlYXRlU1NMUHJvcGVydGllc0Zyb21OU1VSTFJl
cXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQotewotICAgIE5TU3RyaW5nICpo
b3N0ID0gcmVxdWVzdC51cmwoKS5ob3N0KCk7Ci0gICAgTlNBcnJheSAqY2VydEFycmF5ID0gW05T
VVJMUmVxdWVzdCBhbGxvd3NTcGVjaWZpY0hUVFBTQ2VydGlmaWNhdGVGb3JIb3N0Omhvc3RdOwot
ICAgIEJPT0wgYWxsb3dzQW55Q2VydGlmaWNhdGUgPSBbTlNVUkxSZXF1ZXN0IGFsbG93c0FueUhU
VFBTQ2VydGlmaWNhdGVGb3JIb3N0Omhvc3RdOwotICAgIGlmICghY2VydEFycmF5ICYmICFhbGxv
d3NBbnlDZXJ0aWZpY2F0ZSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBDRk11dGFibGVEaWN0
aW9uYXJ5UmVmIHNzbFByb3BzID0gQ0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0
b3JEZWZhdWx0LCAwLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGlj
dGlvbmFyeVZhbHVlQ2FsbEJhY2tzKTsKLSAgICBpZiAoY2VydEFycmF5KQotICAgICAgICBDRkRp
Y3Rpb25hcnlTZXRWYWx1ZShzc2xQcm9wcywgX2tDRlN0cmVhbVNTTFRydXN0ZWRMZWFmQ2VydGlm
aWNhdGVzLCAoQ0ZUeXBlUmVmKSBjZXJ0QXJyYXkpOwotCi0gICAgaWYgKGFsbG93c0FueUNlcnRp
ZmljYXRlKQotICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShzc2xQcm9wcywga0NGU3RyZWFt
U1NMVmFsaWRhdGVzQ2VydGlmaWNhdGVDaGFpbiwga0NGQm9vbGVhbkZhbHNlKTsKLSAgICByZXR1
cm4gc3NsUHJvcHM7Ci19Ci0KLX0KLQotI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2lvcy9SZXNvdXJjZVJlcXVlc3RJT1MubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUmVzb3VyY2VSZXF1ZXN0SU9TLm1tCShy
ZXZpc2lvbiAyMDcwMzcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9S
ZXNvdXJjZVJlcXVlc3RJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTEsNzcgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29u
ZmlnLmgiCi0jaW1wb3J0ICJSZXNvdXJjZVJlcXVlc3QuaCIKLQotI2lmIFBMQVRGT1JNKElPUykK
LQotQGludGVyZmFjZSBOU1VSTFJlcXVlc3QgKFdlYk5TVVJMUmVxdWVzdERldGFpbHMpCi0tIChD
RlVSTFJlcXVlc3RSZWYpX0NGVVJMUmVxdWVzdDsKLS0gKGlkKV9pbml0V2l0aENGVVJMUmVxdWVz
dDooQ0ZVUkxSZXF1ZXN0UmVmKXJlcXVlc3Q7Ci1AZW5kCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotI2lmIFVTRShDRk5FVFdPUkspCi0KLVJlc291cmNlUmVxdWVzdDo6UmVzb3VyY2VSZXF1ZXN0
KE5TVVJMUmVxdWVzdCAqbnNSZXF1ZXN0KQotICAgIDogUmVzb3VyY2VSZXF1ZXN0QmFzZSgpCi0g
ICAgLCBtX2NmUmVxdWVzdChbbnNSZXF1ZXN0IF9DRlVSTFJlcXVlc3RdKQotICAgICwgbV9uc1Jl
cXVlc3QobnNSZXF1ZXN0KQotewotfQotCi12b2lkIFJlc291cmNlUmVxdWVzdDo6dXBkYXRlTlNV
UkxSZXF1ZXN0KCkKLXsKLSAgICBpZiAobV9jZlJlcXVlc3QpCi0gICAgICAgIG1fbnNSZXF1ZXN0
ID0gYWRvcHROUyhbW05TTXV0YWJsZVVSTFJlcXVlc3QgYWxsb2NdIF9pbml0V2l0aENGVVJMUmVx
dWVzdDptX2NmUmVxdWVzdC5nZXQoKV0pOwotfQotCi12b2lkIFJlc291cmNlUmVxdWVzdDo6Y2xl
YXJPclVwZGF0ZU5TVVJMUmVxdWVzdCgpCi17Ci0gICAgLy8gVGhlcmUgaXMgY2xpZW50IGNvZGUg
dGhhdCBleHRlbmRzIE5TVVJMUmVxdWVzdCBhbmQgZXhwZWN0cyB0byBnZXQgYmFjaywgaW4gdGhl
IGRlbGVnYXRlCi0gICAgLy8gY2FsbGJhY2tzLCBhbiBvYmplY3Qgb2YgdGhlIHNhbWUgdHlwZSB0
aGF0IHRoZXkgcGFzc2VkIGludG8gV2ViS2l0LiBUbyBrZWVwIHRoZW4gcnVubmluZywgd2UKLSAg
ICAvLyBjcmVhdGUgYW4gb2JqZWN0IG9mIHRoZSBzYW1lIHR5cGUgYW5kIHJldHVybiB0aGF0LiBT
ZWUgPHJkYXI6Ly85ODQzNTgyPi4KLSAgICAvLyBBbHNvLCBkZXZlbG9wZXJzIHJlYWxseSByZWFs
bHkgd2FudCBhbiBOU011dGFibGVVUkxSZXF1ZXN0IHNvIHRyeSB0byBjcmVhdGUgYW4KLSAgICAv
LyBOU011dGFibGVVUkxSZXF1ZXN0IGluc3RlYWQgb2YgTlNVUkxSZXF1ZXN0LgotICAgIHN0YXRp
YyBDbGFzcyBuc1VSTFJlcXVlc3RDbGFzcyA9IFtOU1VSTFJlcXVlc3QgY2xhc3NdOwotICAgIHN0
YXRpYyBDbGFzcyBuc011dGFibGVVUkxSZXF1ZXN0Q2xhc3MgPSBbTlNNdXRhYmxlVVJMUmVxdWVz
dCBjbGFzc107Ci0gICAgQ2xhc3MgcmVxdWVzdENsYXNzID0gW21fbnNSZXF1ZXN0LmdldCgpIGNs
YXNzXTsKLQotICAgIGlmICghbV9jZlJlcXVlc3QpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlm
IChyZXF1ZXN0Q2xhc3MgJiYgcmVxdWVzdENsYXNzICE9IG5zVVJMUmVxdWVzdENsYXNzICYmIHJl
cXVlc3RDbGFzcyAhPSBuc011dGFibGVVUkxSZXF1ZXN0Q2xhc3MpCi0gICAgICAgIG1fbnNSZXF1
ZXN0ID0gYWRvcHROUyhbW3JlcXVlc3RDbGFzcyBhbGxvY10gX2luaXRXaXRoQ0ZVUkxSZXF1ZXN0
Om1fY2ZSZXF1ZXN0LmdldCgpXSk7Ci0gICAgZWxzZQotICAgICAgICBtX25zUmVxdWVzdCA9IG51
bGxwdHI7Ci19Ci0KLSNlbmRpZiAvLyBVU0UoQ0ZORVRXT1JLKQotCi19IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCi0KLSNlbmRpZiAvLyBQTEFURk9STShJT1MpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL21hYy9BdXRoZW50aWNhdGlvbk1hYy5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9BdXRoZW50aWNhdGlvbk1hYy5tbQko
cmV2aXNpb24gMjA3MDM3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMv
QXV0aGVudGljYXRpb25NYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTMyLDE4ICszMiwxMSBAQAog
I2ltcG9ydCA8Rm91bmRhdGlvbi9OU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmg+CiAjaW1w
b3J0IDxGb3VuZGF0aW9uL05TVVJMUHJvdGVjdGlvblNwYWNlLmg+CiAKLSNpZiBVU0UoQ0ZORVRX
T1JLKQotI2ltcG9ydCAiQ0ZOU1VSTENvbm5lY3Rpb25TUEkuaCIKLSNlbmRpZgotCiB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKIAogQGludGVyZmFjZSBXZWJDb3JlQXV0aGVudGljYXRpb25DbGll
bnRBc0NoYWxsZW5nZVNlbmRlciA6IE5TT2JqZWN0IDxOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlU2VuZGVyPgogewogICAgIEF1dGhlbnRpY2F0aW9uQ2xpZW50KiBtX2NsaWVudDsKLSNpZiBV
U0UoQ0ZORVRXT1JLKQotICAgIENGVVJMQXV0aENoYWxsZW5nZVJlZiBtX2NmQ2hhbGxlbmdlOwot
I2VuZGlmCiB9CiAtIChpZClpbml0V2l0aEF1dGhlbnRpY2F0aW9uQ2xpZW50OihBdXRoZW50aWNh
dGlvbkNsaWVudCopY2xpZW50OwogLSAoQXV0aGVudGljYXRpb25DbGllbnQqKWNsaWVudDsKQEAg
LTEwMSw0NyArOTQsMTAgQEAgLSAodm9pZCljYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZToo
TgogICAgICAgICBtX2NsaWVudC0+cmVjZWl2ZWRDYW5jZWxsYXRpb24oY29yZShjaGFsbGVuZ2Up
KTsKIH0KIAotI2lmIFVTRShDRk5FVFdPUkspCi0tICh2b2lkKXNldENGQ2hhbGxlbmdlOihDRlVS
TEF1dGhDaGFsbGVuZ2VSZWYpY2hhbGxlbmdlCi17Ci0gICAgbV9jZkNoYWxsZW5nZSA9IGNoYWxs
ZW5nZTsKLX0KLQotLSAoQ0ZVUkxBdXRoQ2hhbGxlbmdlUmVmKWNmQ2hhbGxlbmdlCi17Ci0gICAg
cmV0dXJuIG1fY2ZDaGFsbGVuZ2U7Ci19Ci0jZW5kaWYKLQogQGVuZAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotCi1BdXRoZW50aWNhdGlvbkNoYWxsZW5nZSBj
b3JlKE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKm1hY0NoYWxsZW5nZSkKLXsKLSAgICBX
ZWJDb3JlQXV0aGVudGljYXRpb25DbGllbnRBc0NoYWxsZW5nZVNlbmRlciAqY2hhbGxlbmdlU2Vu
ZGVyID0gKFdlYkNvcmVBdXRoZW50aWNhdGlvbkNsaWVudEFzQ2hhbGxlbmdlU2VuZGVyKikgW21h
Y0NoYWxsZW5nZSBzZW5kZXJdOwotICAgIHJldHVybiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShb
Y2hhbGxlbmdlU2VuZGVyIGNmQ2hhbGxlbmdlXSwgW2NoYWxsZW5nZVNlbmRlciBjbGllbnRdKTsK
LX0KLQotTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqbWFjKGNvbnN0IEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlJiBjb3JlQ2hhbGxlbmdlKQotewotICAgIEF1dGhlbnRpY2F0aW9uQ2xpZW50
KiBhdXRoQ2xpZW50ID0gY29yZUNoYWxsZW5nZS5hdXRoZW50aWNhdGlvbkNsaWVudCgpOwotICAg
IFJldGFpblB0cjxXZWJDb3JlQXV0aGVudGljYXRpb25DbGllbnRBc0NoYWxsZW5nZVNlbmRlcj4g
Y2hhbGxlbmdlU2VuZGVyID0gYWRvcHROUyhbW1dlYkNvcmVBdXRoZW50aWNhdGlvbkNsaWVudEFz
Q2hhbGxlbmdlU2VuZGVyIGFsbG9jXSBpbml0V2l0aEF1dGhlbnRpY2F0aW9uQ2xpZW50OmF1dGhD
bGllbnRdKTsKLSAgICBSZXRhaW5QdHI8Q0ZVUkxBdXRoQ2hhbGxlbmdlUmVmPiBhdXRoQ2hhbGxl
bmdlID0gY29yZUNoYWxsZW5nZS5jZlVSTEF1dGhDaGFsbGVuZ2VSZWYoKTsKLSAgICBpZiAoIWF1
dGhDaGFsbGVuZ2UpCi0gICAgICAgIGF1dGhDaGFsbGVuZ2UgPSBhZG9wdENGKGNyZWF0ZUNGKGNv
cmVDaGFsbGVuZ2UpKTsKLSAgICBbY2hhbGxlbmdlU2VuZGVyLmdldCgpIHNldENGQ2hhbGxlbmdl
OmF1dGhDaGFsbGVuZ2UuZ2V0KCldOwotI2lmIFBMQVRGT1JNKElPUykKLSAgICByZXR1cm4gW1tO
U1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIF9jcmVhdGVBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZUZvckNGQXV0aENoYWxsZW5nZTphdXRoQ2hhbGxlbmdlLmdldCgpIHNlbmRlcjpjaGFsbGVuZ2VT
ZW5kZXIuZ2V0KCldIGF1dG9yZWxlYXNlXTsKLSNlbHNlCi0gICAgcmV0dXJuIFtbTlNVUkxBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSBfYXV0aGVudGljYXRpb25DaGFsbGVuZ2VGb3JDRkF1dGhDaGFs
bGVuZ2U6YXV0aENoYWxsZW5nZS5nZXQoKSBzZW5kZXI6Y2hhbGxlbmdlU2VuZGVyLmdldCgpXSBh
dXRvcmVsZWFzZV07Ci0jZW5kaWYKLX0KLQotI2Vsc2UKLQogQXV0aGVudGljYXRpb25DaGFsbGVu
Z2U6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0IFByb3RlY3Rpb25TcGFjZSYgcHJvdGVj
dGlvblNwYWNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IENyZWRlbnRpYWwmIHByb3Bvc2VkQ3JlZGVudGlhbCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBwcmV2aW91c0ZhaWx1
cmVDb3VudCwKQEAgLTIxNSw2ICsxNzEsNCBAQCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSBjb3Jl
KE5TVVJMQXV0aGVuCiAgICAgcmV0dXJuIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKG1hY0NoYWxs
ZW5nZSk7CiB9CiAKLSNlbmRpZiAvLyBVU0UoQ0ZORVRXT1JLKQotCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9Db29raWVK
YXJNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9t
YWMvQ29va2llSmFyTWFjLm1tCShyZXZpc2lvbiAyMDcwMzcpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL21hYy9Db29raWVKYXJNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTI3
LDE5ICsyNywxMiBAQAogI2ltcG9ydCAiUGxhdGZvcm1Db29raWVKYXIuaCIKIAogI2ltcG9ydCAi
Q0ZOZXR3b3JrU1BJLmgiCi0jaW1wb3J0ICJOZXR3b3JrU3RvcmFnZVNlc3Npb24uaCIKLSNpbXBv
cnQgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKLSNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNl
cHRpb25zLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLXN0YXRpYyBOU0hUVFBDb29raWVTdG9y
YWdlICpjb29raWVTdG9yYWdlKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYpOwotfQotCi0j
aWYgIVVTRShDRk5FVFdPUkspCi0KICNpbXBvcnQgIkNvb2tpZS5oIgogI2ltcG9ydCAiQ29va2ll
U3RvcmFnZS5oIgorI2ltcG9ydCAiTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgiCiAjaW1wb3J0ICJV
UkwuaCIKKyNpbXBvcnQgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKKyNpbXBvcnQgPHd0Zi9C
bG9ja09iakNFeGNlcHRpb25zLmg+CiAjaW1wb3J0IDx3dGYvT3B0aW9uYWwuaD4KICNpbXBvcnQg
PHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIApAQCAtMTkxLDYgKzE4NCw3IEBAIHZvaWQgc2V0
Q29va2llc0Zyb21ET00oY29uc3QgTmV0d29ya1N0b3IKICAgICBOU1VSTCAqY29va2llVVJMID0g
dXJsOwogICAgIE5TRGljdGlvbmFyeSAqaGVhZGVyRmllbGRzID0gW05TRGljdGlvbmFyeSBkaWN0
aW9uYXJ5V2l0aE9iamVjdDpjb29raWVTdHJpbmcgZm9yS2V5OkAiU2V0LUNvb2tpZSJdOwogCisg
ICAgLy8gRklYTUU6IElzIHRoaXMgbmVlZGVkIG9uIGlPUywgdG9vPwogI2lmIFBMQVRGT1JNKE1B
QykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDExMDAKICAgICBOU0Fy
cmF5ICp1bmZpbHRlcmVkQ29va2llcyA9IFtOU0hUVFBDb29raWUgX3BhcnNlZENvb2tpZXNXaXRo
UmVzcG9uc2VIZWFkZXJGaWVsZHM6aGVhZGVyRmllbGRzIGZvclVSTDpjb29raWVVUkxdOwogI2Vs
c2UKQEAgLTI2MCw2ICsyNTQsMTUgQEAgdm9pZCBkZWxldGVDb29raWUoY29uc3QgTmV0d29ya1N0
b3JhZ2VTZQogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CiB9CiAKK3N0YXRpYyBOU0hU
VFBDb29raWVTdG9yYWdlICpjb29raWVTdG9yYWdlKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lv
biYgc2Vzc2lvbikKK3sKKyAgICBhdXRvIGNvb2tpZVN0b3JhZ2UgPSBzZXNzaW9uLmNvb2tpZVN0
b3JhZ2UoKTsKKyAgICBpZiAoIWNvb2tpZVN0b3JhZ2UgfHwgW05TSFRUUENvb2tpZVN0b3JhZ2Ug
c2hhcmVkSFRUUENvb2tpZVN0b3JhZ2VdLl9jb29raWVTdG9yYWdlID09IGNvb2tpZVN0b3JhZ2Up
CisgICAgICAgIHJldHVybiBbTlNIVFRQQ29va2llU3RvcmFnZSBzaGFyZWRIVFRQQ29va2llU3Rv
cmFnZV07CisgICAgCisgICAgcmV0dXJuIFtbW05TSFRUUENvb2tpZVN0b3JhZ2UgYWxsb2NdIF9p
bml0V2l0aENGSFRUUENvb2tpZVN0b3JhZ2U6Y29va2llU3RvcmFnZS5nZXQoKV0gYXV0b3JlbGVh
c2VdOworfQorCiB2b2lkIGFkZENvb2tpZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNl
c3Npb24sIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBDb29raWUmIGNvb2tpZSkKIHsKICAgICBCRUdJ
Tl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CkBAIC0yODAsMTIgKzI4MywxMCBAQCB2b2lkIGFkZENv
b2tpZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3NpCiAgICAgICAgIE5TSFRUUENvb2tpZUV4cGly
ZXM6IFtOU0RhdGUgZGF0ZVdpdGhUaW1lSW50ZXJ2YWxTaW5jZTE5NzA6Y29va2llLmV4cGlyZXMg
LyAxMDAwLjBdLAogICAgIH1dOwogCi0jaWYgIVVTRShDRk5FVFdPUkspCiAgICAgaWYgKCFjb29r
aWVTdG9yYWdlKSB7CiAgICAgICAgIFtXZWJDb3JlOjpjb29raWVTdG9yYWdlKHNlc3Npb24pIHNl
dENvb2tpZTpodHRwQ29va2llXTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSNlbmRpZiAvLyAh
VVNFKENGTkVUV09SSykKIAogICAgIENGSFRUUENvb2tpZVN0b3JhZ2VTZXRDb29raWUoY29va2ll
U3RvcmFnZS5nZXQoKSwgW2h0dHBDb29raWUgX0NGSFRUUENvb2tpZV0pOwogCkBAIC0zMDksMjEg
KzMxMCw2IEBAIHZvaWQgZGVsZXRlQWxsQ29va2llcyhjb25zdCBOZXR3b3JrU3RvcmEKICAgICB3
a0RlbGV0ZUFsbEhUVFBDb29raWVzKHNlc3Npb24uY29va2llU3RvcmFnZSgpLmdldCgpKTsKIH0K
IAotfQotCi0jZW5kaWYgLy8gIVVTRShDRk5FVFdPUkspCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotc3RhdGljIE5TSFRUUENvb2tpZVN0b3JhZ2UgKmNvb2tpZVN0b3JhZ2UoY29uc3QgTmV0d29y
a1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uKQotewotICAgIGF1dG8gY29va2llU3RvcmFnZSA9IHNl
c3Npb24uY29va2llU3RvcmFnZSgpOwotICAgIGlmICghY29va2llU3RvcmFnZSB8fCBbTlNIVFRQ
Q29va2llU3RvcmFnZSBzaGFyZWRIVFRQQ29va2llU3RvcmFnZV0uX2Nvb2tpZVN0b3JhZ2UgPT0g
Y29va2llU3RvcmFnZSkKLSAgICAgICAgcmV0dXJuIFtOU0hUVFBDb29raWVTdG9yYWdlIHNoYXJl
ZEhUVFBDb29raWVTdG9yYWdlXTsKLQotICAgIHJldHVybiBbW1tOU0hUVFBDb29raWVTdG9yYWdl
IGFsbG9jXSBfaW5pdFdpdGhDRkhUVFBDb29raWVTdG9yYWdlOmNvb2tpZVN0b3JhZ2UuZ2V0KCld
IGF1dG9yZWxlYXNlXTsKLX0KLQogdm9pZCBkZWxldGVDb29raWVzRm9ySG9zdG5hbWVzKGNvbnN0
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGhv
c3RuYW1lcykKIHsKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CkBAIC0zNTMsNyAr
MzM5LDYgQEAgdm9pZCBkZWxldGVDb29raWVzRm9ySG9zdG5hbWVzKGNvbnN0IE5ldAogICAgIEVO
RF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CiB9CiAKLQogdm9pZCBkZWxldGVBbGxDb29raWVzTW9k
aWZpZWRTaW5jZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIHN0ZDo6Y2hy
b25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgdGltZVBvaW50KQogewogICAgIGlmICghW05T
SFRUUENvb2tpZVN0b3JhZ2UgaW5zdGFuY2VzUmVzcG9uZFRvU2VsZWN0b3I6QHNlbGVjdG9yKHJl
bW92ZUNvb2tpZXNTaW5jZURhdGU6KV0pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL21hYy9DcmVkZW50aWFsU3RvcmFnZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9DcmVkZW50aWFsU3RvcmFnZU1hYy5tbQkocmV2
aXNpb24gMjA3MDM3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQ3Jl
ZGVudGlhbFN0b3JhZ2VNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDggKzI2LDYgQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDcmVkZW50aWFsU3RvcmFnZS5oIgogCi0jaWYg
IVVTRShDRk5FVFdPUkspCi0KICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbk1hYy5oIgogI2luY2x1
ZGUgIkNyZWRlbnRpYWwuaCIKICNpbmNsdWRlICJQcm90ZWN0aW9uU3BhY2UuaCIKQEAgLTUyLDUg
KzUwLDMgQEAgdm9pZCBDcmVkZW50aWFsU3RvcmFnZTo6c2F2ZVRvUGVyc2lzdGVudAogI2VuZGlm
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vICFVU0UoQ0ZORVRXT1JLKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvRm9ybURhdGFTdHJlYW1N
YWMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9G
b3JtRGF0YVN0cmVhbU1hYy5oCShyZXZpc2lvbiAyMDcwMzcpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL21hYy9Gb3JtRGF0YVN0cmVhbU1hYy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yNiwxMCArMjYsNyBAQAogICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIEZvcm1EYXRhU3Ry
ZWFtTWFjX2gKLSNkZWZpbmUgRm9ybURhdGFTdHJlYW1NYWNfaAotCi0jaWYgIVVTRShDRk5FVFdP
UkspCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKQEAgLTQwLDE1
ICszNywxMSBAQCB0eXBlZGVmIGNvbnN0IHN0cnVjdCBfQ0ZVUkxSZXF1ZXN0KiBDRlVSCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotICAgIGNsYXNzIEZvcm1EYXRhOworY2xhc3MgRm9ybURhdGE7
CiAKLSAgICB2b2lkIHNldEhUVFBCb2R5KE5TTXV0YWJsZVVSTFJlcXVlc3QgKiwgRm9ybURhdGEq
KTsKLSAgICBGb3JtRGF0YSogaHR0cEJvZHlGcm9tU3RyZWFtKE5TSW5wdXRTdHJlYW0gKik7Cit2
b2lkIHNldEhUVFBCb2R5KE5TTXV0YWJsZVVSTFJlcXVlc3QgKiwgRm9ybURhdGEqKTsKK0Zvcm1E
YXRhKiBodHRwQm9keUZyb21TdHJlYW0oTlNJbnB1dFN0cmVhbSAqKTsKIAotICAgIENGU3RyaW5n
UmVmIGZvcm1EYXRhU3RyZWFtTGVuZ3RoUHJvcGVydHlOYW1lKCk7CitDRlN0cmluZ1JlZiBmb3Jt
RGF0YVN0cmVhbUxlbmd0aFByb3BlcnR5TmFtZSgpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
Ci0KLSNlbmRpZiAvLyAhVVNFKENGTkVUV09SSykKLQotI2VuZGlmIC8vIEZvcm1EYXRhU3RyZWFt
TWFjX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Zvcm1EYXRh
U3RyZWFtTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvbWFjL0Zvcm1EYXRhU3RyZWFtTWFjLm1tCShyZXZpc2lvbiAyMDcwMzcpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9Gb3JtRGF0YVN0cmVhbU1hYy5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMjksOCArMjksNiBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJG
b3JtRGF0YVN0cmVhbU1hYy5oIgogCi0jaWYgIVVTRShDRk5FVFdPUkspCi0KICNpbXBvcnQgIkZv
cm1EYXRhLmgiCiAjaW1wb3J0ICJGb3JtRGF0YVN0cmVhbUNGTmV0LmgiCiAKQEAgLTUxLDUgKzQ5
LDMgQEAgRm9ybURhdGEqIGh0dHBCb2R5RnJvbVN0cmVhbShOU0lucHV0U3RyZQogfQogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyAhVVNFKENGTkVUV09SSykKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlRXJyb3JNYWMubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VF
cnJvck1hYy5tbQkocmV2aXNpb24gMjA3MDM3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9tYWMvUmVzb3VyY2VFcnJvck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzEsMTAg
KzMxLDYgQEAKICNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgogI2ltcG9ydCA8d3Rm
L0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KIAotI2lmIFBMQVRGT1JNKElPUykgJiYgVVNFKENGTkVU
V09SSykKLSNpbXBvcnQgPENGTmV0d29yay9DRlNvY2tldFN0cmVhbVByaXYuaD4KLSNlbmRpZgot
CiBAaW50ZXJmYWNlIE5TRXJyb3IgKFdlYkV4dHJhcykKIC0gKE5TU3RyaW5nICopX3dlYl9sb2Nh
bGl6ZWREZXNjcmlwdGlvbjsKIEBlbmQKQEAgLTkxLDg1ICs4Nyw2IEBAIC0gKHZvaWQpZW5jb2Rl
V2l0aENvZGVyOihOU0NvZGVyICopY29kZXIKIAogQGVuZAogCi0KLSNpZiBVU0UoQ0ZORVRXT1JL
KQotc3RhdGljIE5TRXJyb3IgKk5TRXJyb3JGcm9tQ0ZFcnJvcihDRkVycm9yUmVmIGNmRXJyb3Is
IE5TVVJMICp1cmwpCi17Ci0gICAgQ0ZJbmRleCBlcnJDb2RlID0gQ0ZFcnJvckdldENvZGUoY2ZF
cnJvcik7Ci0gICAgaWYgKENGRXF1YWwoQ0ZFcnJvckdldERvbWFpbihjZkVycm9yKSwga0NGRXJy
b3JEb21haW5DRk5ldHdvcmspICYmIGVyckNvZGUgPD0ga0NGVVJMRXJyb3JVbmtub3duICYmIGVy
ckNvZGUgPiAtNDAwMCkgewotICAgICAgICAvLyBUaGlzIGlzIGFuIFVSTCBlcnJvciBhbmQgbmVl
ZHMgdG8gYmUgdHJhbnNsYXRlZCB0byB0aGUgTlNVUkxFcnJvckRvbWFpbgotICAgICAgICBpZCBr
ZXlzWzEwXSwgdmFsdWVzWzEwXTsKLSAgICAgICAgQ0ZEaWN0aW9uYXJ5UmVmIHVzZXJJbmZvID0g
Q0ZFcnJvckNvcHlVc2VySW5mbyhjZkVycm9yKTsKLSAgICAgICAgTlNFcnJvciAqcmVzdWx0Owot
ICAgICAgICBOU0ludGVnZXIgY291bnQgPSAwOwotCi0gICAgICAgIGlmICh1cmwpIHsKLSAgICAg
ICAgICAgIGtleXNbY291bnRdID0gTlNVUkxFcnJvckZhaWxpbmdVUkxFcnJvcktleTsKLSAgICAg
ICAgICAgIHZhbHVlc1tjb3VudF0gPSB1cmw7Ci0gICAgICAgICAgICBjb3VudCArKzsKLQotICAg
ICAgICAgICAga2V5c1tjb3VudF0gPSBOU1VSTEVycm9yRmFpbGluZ1VSTFN0cmluZ0Vycm9yS2V5
OwotICAgICAgICAgICAgdmFsdWVzW2NvdW50XSA9IFt1cmwgYWJzb2x1dGVTdHJpbmddOwotICAg
ICAgICAgICAgY291bnQgKys7Ci0gICAgICAgIH0KLQotICAgICAgICB2YWx1ZXNbY291bnRdID0g
KGlkKUNGRGljdGlvbmFyeUdldFZhbHVlKHVzZXJJbmZvLCBrQ0ZFcnJvckxvY2FsaXplZERlc2Ny
aXB0aW9uS2V5KTsKLSAgICAgICAgaWYgKHZhbHVlc1tjb3VudF0pIHsKLSAgICAgICAgICAgIGtl
eXNbY291bnRdID0gTlNMb2NhbGl6ZWREZXNjcmlwdGlvbktleTsKLSAgICAgICAgICAgIGNvdW50
ICsrOwotICAgICAgICB9Ci0KLSAgICAgICAgdmFsdWVzW2NvdW50XSA9IChpZClDRkRpY3Rpb25h
cnlHZXRWYWx1ZSh1c2VySW5mbywga0NGRXJyb3JMb2NhbGl6ZWRGYWlsdXJlUmVhc29uS2V5KTsK
LSAgICAgICAgaWYgKHZhbHVlc1tjb3VudF0pIHsKLSAgICAgICAgICAgIGtleXNbY291bnRdID0g
TlNMb2NhbGl6ZWRGYWlsdXJlUmVhc29uRXJyb3JLZXk7Ci0gICAgICAgICAgICBjb3VudCArKzsK
LSAgICAgICAgfQotCi0gICAgICAgIHZhbHVlc1tjb3VudF0gPSAoaWQpQ0ZEaWN0aW9uYXJ5R2V0
VmFsdWUodXNlckluZm8sIGtDRkVycm9yTG9jYWxpemVkUmVjb3ZlcnlTdWdnZXN0aW9uS2V5KTsK
LSAgICAgICAgaWYgKHZhbHVlc1tjb3VudF0pIHsKLSAgICAgICAgICAgIGtleXNbY291bnRdID0g
TlNMb2NhbGl6ZWRSZWNvdmVyeVN1Z2dlc3Rpb25FcnJvcktleTsKLSAgICAgICAgICAgIGNvdW50
ICsrOwotICAgICAgICB9Ci0KLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCi0jcHJhZ21h
IGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdkZXByZWNhdGVkLWRlY2xhcmF0aW9ucyIKLSAg
ICAgICAgaWYgKHVzZXJJbmZvICYmICh2YWx1ZXNbY291bnRdID0gKGlkKUNGRGljdGlvbmFyeUdl
dFZhbHVlKHVzZXJJbmZvLCBrQ0ZTdHJlYW1Qcm9wZXJ0eVNTTFBlZXJDZXJ0aWZpY2F0ZXMpKSAh
PSBuaWwpIHsKLSAgICAgICAgICAgIC8vIE5lZWQgdG8gdHJhbnNsYXRlIHRoZSBjZXJ0Ci0gICAg
ICAgICAgICBrZXlzW2NvdW50XSA9IEAiTlNFcnJvclBlZXJDZXJ0aWZpY2F0ZUNoYWluS2V5IjsK
LSAgICAgICAgICAgIGNvdW50ICsrOwotCi0gICAgICAgICAgICB2YWx1ZXNbY291bnRdID0gKGlk
KUNGRGljdGlvbmFyeUdldFZhbHVlKHVzZXJJbmZvLCBfa0NGU3RyZWFtUHJvcGVydHlTU0xDbGll
bnRDZXJ0aWZpY2F0ZXMpOwotICAgICAgICAgICAgaWYgKHZhbHVlc1tjb3VudF0pIHsKLSAgICAg
ICAgICAgICAgICBrZXlzW2NvdW50XSA9IEAiTlNFcnJvckNsaWVudENlcnRpZmljYXRlQ2hhaW5L
ZXkiOwotICAgICAgICAgICAgICAgIGNvdW50ICsrOwotICAgICAgICAgICAgfQotCi0gICAgICAg
ICAgICB2YWx1ZXNbY291bnRdID0gKGlkKUNGRGljdGlvbmFyeUdldFZhbHVlKHVzZXJJbmZvLCBf
a0NGU3RyZWFtUHJvcGVydHlTU0xDbGllbnRDZXJ0aWZpY2F0ZVN0YXRlKTsKLSAgICAgICAgICAg
IGlmICh2YWx1ZXNbY291bnRdKSB7Ci0gICAgICAgICAgICAgICAga2V5c1tjb3VudF0gPSBAIk5T
RXJyb3JDbGllbnRDZXJ0aWZpY2F0ZVN0YXRlS2V5IjsKLSAgICAgICAgICAgICAgICBjb3VudCAr
KzsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBv
cAotCi0gICAgICAgIGlmICh1c2VySW5mbyAmJiAodmFsdWVzW2NvdW50XSA9IChpZClDRkRpY3Rp
b25hcnlHZXRWYWx1ZSh1c2VySW5mbywga0NGU3RyZWFtUHJvcGVydHlTU0xQZWVyVHJ1c3QpKSAh
PSBuaWwpIHsKLSAgICAgICAgICAgIGtleXNbY291bnRdID0gTlNVUkxFcnJvckZhaWxpbmdVUkxQ
ZWVyVHJ1c3RFcnJvcktleTsKLSAgICAgICAgICAgIGNvdW50Kys7Ci0gICAgICAgIH0KLQotICAg
ICAgICBrZXlzW2NvdW50XSA9IE5TVW5kZXJseWluZ0Vycm9yS2V5OwotICAgICAgICB2YWx1ZXNb
Y291bnRdID0gKGlkKWNmRXJyb3I7Ci0gICAgICAgIGNvdW50ICsrOwotCi0gICAgICAgIHJlc3Vs
dCA9IFtXZWJDdXN0b21OU1VSTEVycm9yIGVycm9yV2l0aERvbWFpbjpOU1VSTEVycm9yRG9tYWlu
IGNvZGU6KGVyckNvZGUgPT0ga0NGVVJMRXJyb3JVbmtub3duID8gKENGSW5kZXgpTlNVUkxFcnJv
clVua25vd24gOiBlcnJDb2RlKSB1c2VySW5mbzpbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRo
T2JqZWN0czp2YWx1ZXMgZm9yS2V5czprZXlzIGNvdW50OmNvdW50XV07Ci0gICAgICAgIGlmICh1
c2VySW5mbykKLSAgICAgICAgICAgIENGUmVsZWFzZSh1c2VySW5mbyk7Ci0gICAgICAgIHJldHVy
biByZXN1bHQ7Ci0gICAgfQotICAgIHJldHVybiAoTlNFcnJvciAqKWNmRXJyb3I7Ci19Ci0jZW5k
aWYgLy8gVVNFKENGTkVUV09SSykKLQogI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpAQCAtMTkwLDUzICsxMDcsNiBAQCBzdGF0aWMgUmV0YWluUHRyPE5TRXJy
b3I+IGNyZWF0ZU5TRXJyb3JGCiAgICAgcmV0dXJuIGFkb3B0TlMoW1tOU0Vycm9yIGFsbG9jXSBp
bml0V2l0aERvbWFpbjpyZXNvdXJjZUVycm9yLmRvbWFpbigpIGNvZGU6cmVzb3VyY2VFcnJvci5l
cnJvckNvZGUoKSB1c2VySW5mbzp1c2VySW5mby5nZXQoKV0pOwogfQogCi0jaWYgVVNFKENGTkVU
V09SSykKLQotUmVzb3VyY2VFcnJvcjo6UmVzb3VyY2VFcnJvcihOU0Vycm9yICplcnJvcikKLSAg
ICA6IFJlc291cmNlRXJyb3JCYXNlKFR5cGU6Ok51bGwpCi0gICAgLCBtX2RhdGFJc1VwVG9EYXRl
KGZhbHNlKQotICAgICwgbV9wbGF0Zm9ybUVycm9yKHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZFcnJvclJl
Zj4oZXJyb3IpKQotewotICAgIGlmIChlcnJvcikKLSAgICAgICAgc2V0VHlwZSgoW2Vycm9yIGNv
ZGVdID09IE5TVVJMRXJyb3JUaW1lZE91dCkgPyBUeXBlOjpUaW1lb3V0IDogVHlwZTo6R2VuZXJh
bCk7Ci19Ci0KLU5TRXJyb3IgKlJlc291cmNlRXJyb3I6Om5zRXJyb3IoKSBjb25zdAotewotICAg
IGlmIChpc051bGwoKSkgewotICAgICAgICBBU1NFUlQoIW1fcGxhdGZvcm1FcnJvcik7Ci0gICAg
ICAgIHJldHVybiBuaWw7Ci0gICAgfQotCi0gICAgaWYgKG1fcGxhdGZvcm1OU0Vycm9yKQotICAg
ICAgICByZXR1cm4gbV9wbGF0Zm9ybU5TRXJyb3IuZ2V0KCk7Ci0KLSAgICBpZiAobV9wbGF0Zm9y
bUVycm9yKSB7Ci0gICAgICAgIENGRXJyb3JSZWYgZXJyb3IgPSBtX3BsYXRmb3JtRXJyb3IuZ2V0
KCk7Ci0gICAgICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IHVzZXJJbmZvID0gYWRvcHRD
RihDRkVycm9yQ29weVVzZXJJbmZvKGVycm9yKSk7Ci0jaWYgUExBVEZPUk0oSU9TKQotICAgICAg
ICBtX3BsYXRmb3JtTlNFcnJvciA9IE5TRXJyb3JGcm9tQ0ZFcnJvcihlcnJvciwgKE5TVVJMICop
WyhOU0RpY3Rpb25hcnkgKil1c2VySW5mby5nZXQoKSBvYmplY3RGb3JLZXk6KGlkKSBrQ0ZVUkxF
cnJvckZhaWxpbmdVUkxFcnJvcktleV0pOwotICAgICAgICAvLyBJZiBOU0Vycm9yRnJvbUNGRXJy
b3IgY3JlYXRlZCBhIG5ldyBOU0Vycm9yIGZvciB1cywgcmV0dXJuIHRoYXQuCi0gICAgICAgIGlm
IChtX3BsYXRmb3JtTlNFcnJvci5nZXQoKSAhPSAoTlNFcnJvciAqKWVycm9yKQotICAgICAgICAg
ICAgcmV0dXJuIG1fcGxhdGZvcm1OU0Vycm9yLmdldCgpOwotCi0gICAgICAgIC8vIE90aGVyd2lz
ZSBmYWxsIHRocm91Z2ggdG8gY3JlYXRlIGEgbmV3IE5TRXJyb3IgZnJvbSB0aGUgQ0ZFcnJvci4K
LSNlbmRpZgotICAgICAgICBtX3BsYXRmb3JtTlNFcnJvciA9IGFkb3B0TlMoW1tOU0Vycm9yIGFs
bG9jXSBpbml0V2l0aERvbWFpbjooTlNTdHJpbmcgKilDRkVycm9yR2V0RG9tYWluKGVycm9yKSBj
b2RlOkNGRXJyb3JHZXRDb2RlKGVycm9yKSB1c2VySW5mbzooTlNEaWN0aW9uYXJ5ICopdXNlcklu
Zm8uZ2V0KCldKTsKLSAgICAgICAgcmV0dXJuIG1fcGxhdGZvcm1OU0Vycm9yLmdldCgpOwotICAg
IH0KLQotICAgIG1fcGxhdGZvcm1OU0Vycm9yID0gY3JlYXRlTlNFcnJvckZyb21SZXNvdXJjZUVy
cm9yQmFzZSgqdGhpcyk7Ci0gICAgcmV0dXJuIG1fcGxhdGZvcm1OU0Vycm9yLmdldCgpOwotfQot
Ci1SZXNvdXJjZUVycm9yOjpvcGVyYXRvciBOU0Vycm9yICooKSBjb25zdAotewotICAgIHJldHVy
biBuc0Vycm9yKCk7Ci19Ci0KLSNlbHNlCi0KIFJlc291cmNlRXJyb3I6OlJlc291cmNlRXJyb3Io
TlNFcnJvciAqbnNFcnJvcikKICAgICA6IFJlc291cmNlRXJyb3JCYXNlKFR5cGU6Ok51bGwpCiAg
ICAgLCBtX2RhdGFJc1VwVG9EYXRlKGZhbHNlKQpAQCAtMzA5LDYgKzE3OSw0IEBAIFJlc291cmNl
RXJyb3I6Om9wZXJhdG9yIENGRXJyb3JSZWYoKSBjb24KICAgICByZXR1cm4gY2ZFcnJvcigpOwog
fQogCi0jZW5kaWYgLy8gVVNFKENGTkVUV09SSykKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVN
YWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMv
UmVzb3VyY2VIYW5kbGVNYWMubW0JKHJldmlzaW9uIDIwNzAzNykKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC01OCwxNiArNTgsNiBAQAogI2ltcG9ydCA8d3RmL3RleHQvQmFzZTY0Lmg+CiAjaW1wb3J0
IDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotI2lmIFVTRShBUFBM
RV9JTlRFUk5BTF9TREspCi0jaW1wb3J0IDxDRk5ldHdvcmsvQ0ZVUkxDb25uZWN0aW9uUHJpdi5o
PgotI2VuZGlmCi10eXBlZGVmIHN0cnVjdCBfQ0ZVUkxDb25uZWN0aW9uKiBDRlVSTENvbm5lY3Rp
b25SZWY7Ci1leHRlcm4gIkMiIHsKLUNGRGljdGlvbmFyeVJlZiBfQ0ZVUkxDb25uZWN0aW9uQ29w
eVRpbWluZ0RhdGEoQ0ZVUkxDb25uZWN0aW9uUmVmKTsKLX0KLSNlbmRpZiAvLyBVU0UoQ0ZORVRX
T1JLKQotCiAjaWYgUExBVEZPUk0oSU9TKQogI2ltcG9ydCAiQ0ZOZXR3b3JrU1BJLmgiCiAjaW1w
b3J0ICJSdW50aW1lQXBwbGljYXRpb25DaGVja3MuaCIKQEAgLTkwLDggKzgwLDYgQEAgLShpZClf
aW5pdFdpdGhSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgCi0jaWYgIVVTRShDRk5FVFdPUkspCi0gICAgCiBzdGF0aWMgdm9pZCBhcHBseUJhc2lj
QXV0aG9yaXphdGlvbkhlYWRlcihSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IENyZWRl
bnRpYWwmIGNyZWRlbnRpYWwpCiB7CiAgICAgU3RyaW5nIGF1dGhlbnRpY2F0aW9uSGVhZGVyID0g
IkJhc2ljICIgKyBiYXNlNjRFbmNvZGUoU3RyaW5nKGNyZWRlbnRpYWwudXNlcigpICsgIjoiICsg
Y3JlZGVudGlhbC5wYXNzd29yZCgpKS51dGY4KCkpOwpAQCAtMzI5LDggKzMxNyw2IEBAIHZvaWQg
UmVzb3VyY2VIYW5kbGU6OnBsYXRmb3JtU2V0RGVmZXJzTG8KICAgICAgICAgW2QtPm1fY29ubmVj
dGlvbiBzZXREZWZlcnNDYWxsYmFja3M6ZGVmZXJzXTsKIH0KIAotI2lmICFVU0UoQ0ZORVRXT1JL
KQotCiB2b2lkIFJlc291cmNlSGFuZGxlOjpzY2hlZHVsZShTY2hlZHVsZVBhaXImIHBhaXIpCiB7
CiAgICAgTlNSdW5Mb29wICpydW5Mb29wID0gcGFpci5uc1J1bkxvb3AoKTsKQEAgLTM0OSw4ICsz
MzUsNiBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjp1bnNjaGVkdWxlKFNjaGVkdWxlCiAgICAgICAg
IFtkLT5tX2Nvbm5lY3Rpb24uZ2V0KCkgdW5zY2hlZHVsZUZyb21SdW5Mb29wOnJ1bkxvb3AgZm9y
TW9kZTooTlNTdHJpbmcgKilwYWlyLm1vZGUoKV07CiB9CiAKLSNlbmRpZgotCiBpZCBSZXNvdXJj
ZUhhbmRsZTo6bWFrZURlbGVnYXRlKGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UpCiB7
CiAgICAgQVNTRVJUKCFkLT5tX2RlbGVnYXRlKTsKQEAgLTczMCwyNyArNzE0LDE0IEBAIHZvaWQg
UmVzb3VyY2VIYW5kbGU6OmNvbnRpbnVlV2lsbENhY2hlUmUKIAogICAgIFsoaWQpZGVsZWdhdGUo
KSBjb250aW51ZVdpbGxDYWNoZVJlc3BvbnNlOnJlc3BvbnNlXTsKIH0KLSAgICAKLSNlbmRpZiAv
LyAhVVNFKENGTkVUV09SSykKLSAgICAKLSNpZiBFTkFCTEUoV0VCX1RJTUlORykKIAotI2lmIFVT
RShDRk5FVFdPUkspCi0gICAgCi12b2lkIFJlc291cmNlSGFuZGxlOjpnZXRDb25uZWN0aW9uVGlt
aW5nRGF0YShDRlVSTENvbm5lY3Rpb25SZWYgY29ubmVjdGlvbiwgTmV0d29ya0xvYWRUaW1pbmcm
IHRpbWluZykKLXsKLSAgICBjb3B5VGltaW5nRGF0YSgoX19icmlkZ2UgTlNEaWN0aW9uYXJ5Kilh
ZG9wdENGKF9DRlVSTENvbm5lY3Rpb25Db3B5VGltaW5nRGF0YShjb25uZWN0aW9uKSkuZ2V0KCks
IHRpbWluZyk7Ci19Ci0gICAgCi0jZWxzZQorI2lmIEVOQUJMRShXRUJfVElNSU5HKQogICAgIAog
dm9pZCBSZXNvdXJjZUhhbmRsZTo6Z2V0Q29ubmVjdGlvblRpbWluZ0RhdGEoTlNVUkxDb25uZWN0
aW9uICpjb25uZWN0aW9uLCBOZXR3b3JrTG9hZFRpbWluZyYgdGltaW5nKQogewogICAgIGNvcHlU
aW1pbmdEYXRhKFtjb25uZWN0aW9uIF90aW1pbmdEYXRhXSwgdGltaW5nKTsKIH0KICAgICAKLSNl
bmRpZgotICAgIAogI2VuZGlmIC8vIEVOQUJMRShXRUJfVElNSU5HKQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNv
dXJjZVJlcXVlc3RNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9tYWMvUmVzb3VyY2VSZXF1ZXN0TWFjLm1tCShyZXZpc2lvbiAyMDcwMzcpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZVJlcXVlc3RNYWMubW0J
KHdvcmtpbmcgY29weSkKQEAgLTEsNTkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAw
NiwgMjAwNywgMjAwOCBBcHBsZSwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
LSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgot
I2ltcG9ydCAiUmVzb3VyY2VSZXF1ZXN0LmgiCi0KLSNpZiBQTEFURk9STShNQUMpCi0KLSNpbXBv
cnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgotCi1AaW50ZXJmYWNlIE5TVVJMUmVxdWVzdCAo
V2ViTlNVUkxSZXF1ZXN0RGV0YWlscykKLS0gKENGVVJMUmVxdWVzdFJlZilfQ0ZVUkxSZXF1ZXN0
OwotLSAoaWQpX2luaXRXaXRoQ0ZVUkxSZXF1ZXN0OihDRlVSTFJlcXVlc3RSZWYpcmVxdWVzdDsK
LUBlbmQKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0jaWYgVVNFKENGTkVUV09SSykKLQotUmVz
b3VyY2VSZXF1ZXN0OjpSZXNvdXJjZVJlcXVlc3QoTlNVUkxSZXF1ZXN0ICpuc1JlcXVlc3QpCi0g
ICAgOiBSZXNvdXJjZVJlcXVlc3RCYXNlKCkKLSAgICAsIG1fY2ZSZXF1ZXN0KFtuc1JlcXVlc3Qg
X0NGVVJMUmVxdWVzdF0pCi0gICAgLCBtX25zUmVxdWVzdChuc1JlcXVlc3QpCi17Ci19Ci0KLXZv
aWQgUmVzb3VyY2VSZXF1ZXN0Ojp1cGRhdGVOU1VSTFJlcXVlc3QoKQotewotICAgIGlmIChtX2Nm
UmVxdWVzdCkKLSAgICAgICAgbV9uc1JlcXVlc3QgPSBhZG9wdE5TKFtbTlNVUkxSZXF1ZXN0IGFs
bG9jXSBfaW5pdFdpdGhDRlVSTFJlcXVlc3Q6bV9jZlJlcXVlc3QuZ2V0KCldKTsKLX0KLQotI2Vu
ZGlmCi0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9TeW5jaHJvbm91c0xvYWRlckNsaWVudC5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9TeW5jaHJvbm91
c0xvYWRlckNsaWVudC5tbQkocmV2aXNpb24gMjA3MDM3KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9tYWMvU3luY2hyb25vdXNMb2FkZXJDbGllbnQubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTI2LDggKzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTeW5j
aHJvbm91c0xvYWRlckNsaWVudC5oIgogCi0jaWYgIVVTRShDRk5FVFdPUkspCi0KICNpbmNsdWRl
ICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0z
OCwxNCArMzYsMTAgQEAgdm9pZCBTeW5jaHJvbm91c0xvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZQog
ICAgIFtjaGFsbGVuZ2Uuc2VuZGVyKCkgY29udGludWVXaXRob3V0Q3JlZGVudGlhbEZvckF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlOmNoYWxsZW5nZS5uc1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
KCldOwogfQogCi0jaWYgIVVTRShDRk5FVFdPUkspCiBSZXNvdXJjZUVycm9yIFN5bmNocm9ub3Vz
TG9hZGVyQ2xpZW50OjpwbGF0Zm9ybUJhZFJlc3BvbnNlRXJyb3IoKQogewogICAgIFJldGFpblB0
cjxOU0Vycm9yPiBlcnJvciA9IGFkb3B0TlMoW1tOU0Vycm9yIGFsbG9jXSBpbml0V2l0aERvbWFp
bjpOU1VSTEVycm9yRG9tYWluIGNvZGU6TlNVUkxFcnJvckJhZFNlcnZlclJlc3BvbnNlIHVzZXJJ
bmZvOm5pbF0pOwogICAgIHJldHVybiBlcnJvci5nZXQoKTsKIH0KLSNlbmRpZgogCiB9Ci0KLSNl
bmRpZiAvLyAhVVNFKENGTkVUV09SSykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5k
bGVBc0RlbGVnYXRlLmgJKHJldmlzaW9uIDIwNzAzNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjMsOCArMjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgogICovCiAKLSNpZm5kZWYgV2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZV9oCi0j
ZGVmaW5lIFdlYkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGVfaAorI3ByYWdtYSBvbmNlCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJlc291cmNlSGFuZGxlOwpAQCAtMzQsMTMgKzMz
LDggQEAgY2xhc3MgUmVzb3VyY2VIYW5kbGU7CiAtICh2b2lkKWRldGFjaEhhbmRsZTsKIEBlbmQK
IAotI2lmICFVU0UoQ0ZORVRXT1JLKQotCiBAaW50ZXJmYWNlIFdlYkNvcmVSZXNvdXJjZUhhbmRs
ZUFzRGVsZWdhdGUgOiBOU09iamVjdCA8TlNVUkxDb25uZWN0aW9uRGVsZWdhdGUsIFdlYkNvcmVS
ZXNvdXJjZUxvYWRlckRlbGVnYXRlPiB7CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqIG1f
aGFuZGxlOwogfQogLSAoaWQpaW5pdFdpdGhIYW5kbGU6KFdlYkNvcmU6OlJlc291cmNlSGFuZGxl
KiloYW5kbGU7CiBAZW5kCi0KLSNlbmRpZiAvLyAhVVNFKENGTkVUV09SSykKLSNlbmRpZiAvLyBX
ZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGUubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJl
c291cmNlSGFuZGxlQXNEZWxlZ2F0ZS5tbQkocmV2aXNpb24gMjA3MDM3KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0
ZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYsOCArMjYsNiBAQAogI2ltcG9ydCAiY29uZmlnLmgi
CiAjaW1wb3J0ICJXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlLmgiCiAKLSNpZiAhVVNF
KENGTkVUV09SSykKLQogI2ltcG9ydCAiQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCIKICNpbXBv
cnQgIkF1dGhlbnRpY2F0aW9uTWFjLmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCkBAIC0yNzAsNiAr
MjY4LDMgQEAgLSAoTlNDYWNoZWRVUkxSZXNwb25zZSAqKWNvbm5lY3Rpb246KE5TVQogfQogCiBA
ZW5kCi0KLSNlbmRpZiAvLyAhVVNFKENGTkVUV09SSykKLQpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1
ZURlbGVnYXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLmgJKHJl
dmlzaW9uIDIwNzAzNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dl
YkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yMywxMCArMjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgogICovCiAKLSNpZm5kZWYgV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURl
bGVnYXRlX2gKLSNkZWZpbmUgV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURl
bGVnYXRlX2gKLQotI2lmICFVU0UoQ0ZORVRXT1JLKQorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRl
ICJXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlLmgiCiAjaW5jbHVkZSA8ZGlzcGF0Y2gv
ZGlzcGF0Y2guaD4KQEAgLTU4LDYgKzU1LDMgQEAgQGludGVyZmFjZSBXZWJDb3JlUmVzb3VyY2VI
YW5kbGVBc09wZXJhdAogQGludGVyZmFjZSBXZWJDb3JlUmVzb3VyY2VIYW5kbGVXaXRoQ3JlZGVu
dGlhbFN0b3JhZ2VBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUgOiBXZWJDb3JlUmVzb3VyY2VIYW5k
bGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUKIAogQGVuZAotCi0jZW5kaWYgLy8gIVVTRShDRk5F
VFdPUkspCi0jZW5kaWYgLy8gV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURl
bGVnYXRlX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNv
cmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5k
bGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUubW0JKHJldmlzaW9uIDIwNzAzNykKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3Bl
cmF0aW9uUXVldWVEZWxlZ2F0ZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYsOCArMjYsNiBAQAog
I2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJh
dGlvblF1ZXVlRGVsZWdhdGUuaCIKIAotI2lmICFVU0UoQ0ZORVRXT1JLKQotCiAjaW1wb3J0ICJB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oIgogI2ltcG9ydCAiQXV0aGVudGljYXRpb25NYWMuaCIK
ICNpbXBvcnQgIkxvZ2dpbmcuaCIKQEAgLTMyOSw2ICszMjcsMyBAQCAtIChCT09MKWNvbm5lY3Rp
b25TaG91bGRVc2VDcmVkZW50aWFsU3RvCiB9CiAKIEBlbmQKLQotI2VuZGlmIC8vICFVU0UoQ0ZO
RVRXT1JLKQotCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJD
b3JlVVJMUmVzcG9uc2UubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9tYWMvV2ViQ29yZVVSTFJlc3BvbnNlLm1tCShyZXZpc2lvbiAyMDcwMzcpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlVVJMUmVzcG9uc2UubW0J
KHdvcmtpbmcgY29weSkKQEAgLTMyNSw3ICszMjUsNiBAQCB2b2lkIGFkanVzdE1JTUVUeXBlSWZO
ZWNlc3NhcnkoQ0ZVUkxSZXNwCiB9CiAjZW5kaWYKIAotI2lmICFVU0UoQ0ZORVRXT1JLKQogTlNV
UkxSZXNwb25zZSAqc3ludGhlc2l6ZVJlZGlyZWN0UmVzcG9uc2VJZk5lY2Vzc2FyeShOU1VSTFJl
cXVlc3QgKmN1cnJlbnRSZXF1ZXN0LCBOU1VSTFJlcXVlc3QgKm5ld1JlcXVlc3QsIE5TVVJMUmVz
cG9uc2UgKnJlZGlyZWN0UmVzcG9uc2UpCiB7CiAgICAgaWYgKHJlZGlyZWN0UmVzcG9uc2UpCkBA
IC0zMzksNiArMzM4LDUgQEAgTlNVUkxSZXNwb25zZSAqc3ludGhlc2l6ZVJlZGlyZWN0UmVzcG9u
cwogICAgIE5TRGljdGlvbmFyeSAqc3ludGhlc2l6ZWRSZXNwb25zZUhlYWRlckZpZWxkcyA9IEB7
IEAiTG9jYXRpb24iOiBbW25ld1JlcXVlc3QgVVJMXSBhYnNvbHV0ZVN0cmluZ10sIEAiQ2FjaGUt
Q29udHJvbCI6IEAibm8tc3RvcmUiIH07CiAgICAgcmV0dXJuIFtbW05TSFRUUFVSTFJlc3BvbnNl
IGFsbG9jXSBpbml0V2l0aFVSTDpbY3VycmVudFJlcXVlc3QgVVJMXSBzdGF0dXNDb2RlOjMwMiBI
VFRQVmVyc2lvbjooTlNTdHJpbmcgKilrQ0ZIVFRQVmVyc2lvbjFfMSBoZWFkZXJGaWVsZHM6c3lu
dGhlc2l6ZWRSZXNwb25zZUhlYWRlckZpZWxkc10gYXV0b3JlbGVhc2VdOwogfQotI2VuZGlmCiAK
IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9UZW1wb3JhcnlMaW5rU3R1YnMu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9UZW1wb3JhcnlM
aW5rU3R1YnMuY3BwCShyZXZpc2lvbiAyMDcwMzcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vVGVtcG9yYXJ5TGlua1N0dWJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcs
NyBAQAogCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJTU0xLZXlHZW5l
cmF0b3IuaCIKLSNpZiAhVVNFKENGTkVUV09SSykKKyNpZiAhVVNFKENGVVJMQ09OTkVDVElPTikK
ICNpbmNsdWRlICJDb29raWVTdG9yYWdlLmgiCiAjZW5kaWYKIApAQCAtMzcsNyArMzcsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBTdHJpbmcgc2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3Ry
aW5nKHVuc2lnbmVkLCBjb25zdCBTdHJpbmcmLCBjb25zdCBVUkwmKSB7IG5vdEltcGxlbWVudGVk
KCk7IHJldHVybiBTdHJpbmcoKTsgfQogdm9pZCBnZXRTdXBwb3J0ZWRLZXlTaXplcyhWZWN0b3I8
U3RyaW5nPiYpIHsgbm90SW1wbGVtZW50ZWQoKTsgfQogCi0jaWYgIVVTRShDRk5FVFdPUkspCisj
aWYgIVVTRShDRlVSTENPTk5FQ1RJT04pCiB2b2lkIHN0YXJ0T2JzZXJ2aW5nQ29va2llQ2hhbmdl
cyhDb29raWVDaGFuZ2VDYWxsYmFja1B0cikgeyBub3RJbXBsZW1lbnRlZCgpOyB9CiB2b2lkIHN0
b3BPYnNlcnZpbmdDb29raWVDaGFuZ2VzKCkgeyBub3RJbXBsZW1lbnRlZCgpOyB9CiAjZW5kaWYK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvanMvV2ViQ29yZVRlc3RTdXBwb3J0UHJlZml4
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9qcy9XZWJDb3JlVGVzdFN1
cHBvcnRQcmVmaXguaAkocmV2aXNpb24gMjA3MDM3KQorKysgU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9qcy9XZWJDb3JlVGVzdFN1cHBvcnRQcmVmaXguaAkod29ya2luZyBjb3B5KQpAQCAtMTIwLDkg
KzEyMCw3IEBACiAjZGVmaW5lIE9CU09MRVRFX0NPTE9SU1lOQ19BUEkKICNlbmRpZgogI2VuZGlm
Ci0jaWYgVVNFKENGTkVUV09SSykKLS8qIFdpbmRvd3MgZG9lc24ndCBpbmNsdWRlIENGTmV0d29y
ay5oIHZpYSBDb3JlU2VydmljZXMuaCwgc28gd2UgZG8KLSAgIGl0IGV4cGxpY2l0bHkgaGVyZSB0
byBtYWtlIFdpbmRvd3MgbW9yZSBjb25zaXN0ZW50IHdpdGggTWFjLiAqLworI2lmIFVTRShDRlVS
TENPTk5FQ1RJT04pCiAjaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGTmV0d29yay5oPgogLy8gT24gV2lu
ZG93cywgZGlzcGF0Y2guaCBuZWVkcyB0byBiZSBpbmNsdWRlZCBiZWZvcmUgY2VydGFpbiBDRk5l
dHdvcmsgaGVhZGVycy4KICNpbmNsdWRlIDxkaXNwYXRjaC9kaXNwYXRjaC5oPgpJbmRleDogU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkocmV2aXNpb24gMjA3MDM3KQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMzEgQEAKKzIwMTYtMTAtMTAgIEFsZXggQ2hyaXN0ZW5zZW4g
IDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZW1vdmUgZGVhZCBuZXR3b3Jr
aW5nIGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE2MzI2MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmg6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvRG93bmxvYWRzL2lvcy9Eb3dubG9hZElPUy5tbTogUmVtb3ZlZC4KKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvbWFjL0Rvd25sb2FkTWFjLm1tOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
bWFjL05ldHdvcmtMb2FkTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6d2ls
bENhY2hlUmVzcG9uc2VBc3luYyk6IERlbGV0ZWQuCisgICAgICAgICogU2hhcmVkL0F1dGhlbnRp
Y2F0aW9uL2NvY29hL0F1dGhlbnRpY2F0aW9uTWFuYWdlckNvY29hLm1tOgorICAgICAgICAoV2Vi
S2l0OjpBdXRoZW50aWNhdGlvbk1hbmFnZXI6OnJlY2VpdmVkQ3JlZGVudGlhbCk6CisgICAgICAg
IChXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6cmVjZWl2ZWRSZXF1ZXN0VG9Db250aW51
ZVdpdGhvdXRDcmVkZW50aWFsKToKKyAgICAgICAgKFdlYktpdDo6QXV0aGVudGljYXRpb25NYW5h
Z2VyOjpyZWNlaXZlZENhbmNlbGxhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0
aW9uTWFuYWdlcjo6cmVjZWl2ZWRSZXF1ZXN0VG9QZXJmb3JtRGVmYXVsdEhhbmRsaW5nKToKKyAg
ICAgICAgKFdlYktpdDo6QXV0aGVudGljYXRpb25NYW5hZ2VyOjpyZWNlaXZlZENoYWxsZW5nZVJl
amVjdGlvbik6CisgICAgICAgICogU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNv
ZGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNv
ZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmg6Cisg
ICAgICAgICogU2hhcmVkL21hYy9XZWJDb3JlQXJndW1lbnRDb2RlcnNNYWMubW06CisgICAgICAg
IChJUEM6OkFyZ3VtZW50Q29kZXI8UmVzb3VyY2VSZXF1ZXN0Pjo6ZW5jb2RlUGxhdGZvcm1EYXRh
KToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlcXVlc3Q+OjpkZWNvZGVQ
bGF0Zm9ybURhdGEpOgorICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKwogMjAxNi0xMC0xMCAgS29uc3RhbnRpbiBUb2thcmV2ICA8YW5udWxlbkB5YW5kZXgucnU+
CiAKICAgICAgICAgQWRkZWQgZmluYWwgc3BlY2lmaWVyIHRvIFdlYkluc3BlY3RvclNlcnZlciBh
bmQgdG8gaXRzIG92ZXJyaWRkZW4gbWV0aG9kcwpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0xvYWQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oCShyZXZpc2lvbiAyMDcwMzcpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oCSh3b3JraW5nIGNvcHkpCkBAIC03OSwx
MiArNzksOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YUFycmF5KFdlYkNvcmU6
OlJlc291cmNlSGFuZGxlKiwgQ0ZBcnJheVJlZikgb3ZlcnJpZGU7CiAjZW5kaWYKICNpZiBQTEFU
Rk9STShDT0NPQSkKLSNpZiBVU0UoQ0ZORVRXT1JLKQotICAgIHZvaWQgd2lsbENhY2hlUmVzcG9u
c2VBc3luYyhXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYp
IG92ZXJyaWRlOwotI2Vsc2UKICAgICB2b2lkIHdpbGxDYWNoZVJlc3BvbnNlQXN5bmMoV2ViQ29y
ZTo6UmVzb3VyY2VIYW5kbGUqLCBOU0NhY2hlZFVSTFJlc3BvbnNlICopIG92ZXJyaWRlOwogI2Vu
ZGlmCi0jZW5kaWYKIAogI2lmIFVTRShQUk9URUNUSU9OX1NQQUNFX0FVVEhfQ0FMTEJBQ0spCiAg
ICAgdm9pZCBjb250aW51ZUNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoYm9v
bCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxv
YWQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9h
ZHMvRG93bmxvYWQuaAkocmV2aXNpb24gMjA3MDM3KQorKysgU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDEwICs0
Nyw2IEBAIE9CSkNfQ0xBU1MgV0tEb3dubG9hZEFzRGVsZWdhdGU7CiAjZW5kaWYKICNlbmRpZgog
Ci0jaWYgVVNFKENGTkVUV09SSykKLSNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZVUkxEb3dubG9hZFBy
aXYuaD4KLSNlbmRpZgotCiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIERhdGFSZWZlcmVuY2U7CiB9
CkBAIC0xMzksOSArMTM1LDYgQEAgcHJpdmF0ZToKICAgICBSZXRhaW5QdHI8V0tEb3dubG9hZEFz
RGVsZWdhdGU+IG1fZGVsZWdhdGU7CiAjZW5kaWYKICNlbmRpZgotI2lmIFVTRShDRk5FVFdPUksp
Ci0gICAgUmV0YWluUHRyPENGVVJMRG93bmxvYWRSZWY+IG1fZG93bmxvYWQ7Ci0jZW5kaWYKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDbGllbnQ+IG1fZG93bmxv
YWRDbGllbnQ7CiAgICAgUmVmUHRyPFdlYkNvcmU6OlJlc291cmNlSGFuZGxlPiBtX3Jlc291cmNl
SGFuZGxlOwogICAgIFN0cmluZyBtX3N1Z2dlc3RlZE5hbWU7CkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvaW9zL0Rvd25sb2FkSU9TLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9pb3MvRG93bmxvYWRJ
T1MubW0JKHJldmlzaW9uIDIwNzAzNykKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L0Rvd25sb2Fkcy9pb3MvRG93bmxvYWRJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTEsMTYyICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0g
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIkRvd25sb2Fk
LmgiCi0KLSNpZiBVU0UoQ0ZORVRXT1JLKSAmJiAhVVNFKE5FVFdPUktfU0VTU0lPTikKLQotI2lt
cG9ydCAiRGF0YVJlZmVyZW5jZS5oIgotI2ltcG9ydCA8Q0ZOZXR3b3JrL0NGVVJMRG93bmxvYWQu
aD4KLSNpbXBvcnQgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KLSNpbXBvcnQgPFdlYkNvcmUv
UmVzb3VyY2VFcnJvci5oPgotI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZUhhbmRsZS5oPgotI2lt
cG9ydCA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+Ci0jaW1wb3J0IDx3dGYvUmV0YWluUHRy
Lmg+Ci0jaW1wb3J0IDx3dGYvUnVuTG9vcC5oPgotCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
LQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLS8vIEZJWE1FOiBJZiBwb3NzaWJsZSwgd2Ugc2hvdWxk
IGNvbnNpZGVyIG1vdmluZyBzb21lIGNhbGxiYWNrcyBvZmYgdGhlIG1haW4gdGhyZWFkIG9yIGF0
IGxlYXN0Ci0vLyBtYWtpbmcgdGhlbSBhc3luY2hvbm91cyBjYWxscy4KLXN0YXRpYyB2b2lkIGRp
c3BhdGNoT25NYWluVGhyZWFkKHZvaWQoXmJsb2NrKSgpKQotewotICAgIGlmIChSdW5Mb29wOjpp
c01haW4oKSkgewotICAgICAgICBibG9jaygpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgZGlzcGF0Y2hfc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBibG9jayk7Ci19Ci0K
LXN0YXRpYyBpbmxpbmUgRG93bmxvYWQqIHRvRG93bmxvYWQoY29uc3Qgdm9pZCogY2xpZW50SW5m
bykKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RG93bmxvYWQqPihjb25zdF9jYXN0PHZvaWQq
PihjbGllbnRJbmZvKSk7Ci19Ci0KLXN0YXRpYyB2b2lkIHNldFVwRG93bmxvYWRDbGllbnQoQ0ZV
UkxEb3dubG9hZENsaWVudCYgY2xpZW50LCBEb3dubG9hZCYgZG93bmxvYWQpCi17Ci0gICAgbWVt
c2V0KCZjbGllbnQsIDAsIHNpemVvZihjbGllbnQpKTsKLSAgICBjbGllbnQuY2xpZW50SW5mbyA9
ICZkb3dubG9hZDsKLQotICAgIGNsaWVudC5kaWRTdGFydCA9IFtdKENGVVJMRG93bmxvYWRSZWYs
IGNvbnN0IHZvaWQqIGNsaWVudEluZm8pIHsKLSAgICAgICAgZGlzcGF0Y2hPbk1haW5UaHJlYWQo
XnsKLSAgICAgICAgICAgIHRvRG93bmxvYWQoY2xpZW50SW5mbyktPmRpZFN0YXJ0KCk7Ci0gICAg
ICAgIH0pOwotICAgIH07Ci0KLSAgICBjbGllbnQud2lsbFNlbmRSZXF1ZXN0ID0gW10oQ0ZVUkxE
b3dubG9hZFJlZiwgQ0ZVUkxSZXF1ZXN0UmVmIHJlcXVlc3QsIENGVVJMUmVzcG9uc2VSZWYsIGNv
bnN0IHZvaWQqKSAtPiBDRlVSTFJlcXVlc3RSZWYgewotICAgICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8Q0ZVUkxSZXF1ZXN0UmVmPihDRlJldGFpbihyZXF1ZXN0KSk7Ci0gICAgfTsKLQotICAgIGNs
aWVudC5kaWRSZWNlaXZlUmVzcG9uc2UgPSBbXShDRlVSTERvd25sb2FkUmVmLCBDRlVSTFJlc3Bv
bnNlUmVmIHJlc3BvbnNlLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKSB7Ci0gICAgICAgIGRpc3Bh
dGNoT25NYWluVGhyZWFkKF57Ci0gICAgICAgICAgICB0b0Rvd25sb2FkKGNsaWVudEluZm8pLT5k
aWRSZWNlaXZlUmVzcG9uc2UocmVzcG9uc2UpOwotICAgICAgICB9KTsKLSAgICB9OwotCi0gICAg
Y2xpZW50LmRpZFJlY2VpdmVEYXRhID0gW10oQ0ZVUkxEb3dubG9hZFJlZiwgQ0ZJbmRleCBsZW5n
dGgsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pIHsKLSAgICAgICAgZGlzcGF0Y2hPbk1haW5UaHJl
YWQoXnsKLSAgICAgICAgICAgIHRvRG93bmxvYWQoY2xpZW50SW5mbyktPmRpZFJlY2VpdmVEYXRh
KGxlbmd0aCk7Ci0gICAgICAgIH0pOwotICAgIH07Ci0KLSAgICBjbGllbnQuc2hvdWxkRGVjb2Rl
RGF0YU9mTUlNRVR5cGUgPSBbXShDRlVSTERvd25sb2FkUmVmLCBDRlN0cmluZ1JlZiBlbmNvZGlu
Z1R5cGUsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pIC0+IEJvb2xlYW4gewotICAgICAgICBfX2Js
b2NrIEJPT0wgcmV0dXJuVmFsdWUgPSBOTzsKLSAgICAgICAgZGlzcGF0Y2hPbk1haW5UaHJlYWQo
XnsKLSAgICAgICAgICAgIHJldHVyblZhbHVlID0gdG9Eb3dubG9hZChjbGllbnRJbmZvKS0+c2hv
dWxkRGVjb2RlU291cmNlRGF0YU9mTUlNRVR5cGUoZW5jb2RpbmdUeXBlKTsKLSAgICAgICAgfSk7
Ci0gICAgICAgIHJldHVybiByZXR1cm5WYWx1ZTsKLSAgICB9OwotCi0gICAgY2xpZW50LmRlY2lk
ZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZE9iamVjdE5hbWUgPSBbXShDRlVSTERvd25sb2FkUmVm
IGRvd25sb2FkUmVmLCBDRlN0cmluZ1JlZiBvYmplY3ROYW1lLCBjb25zdCB2b2lkKiBjbGllbnRJ
bmZvKSB7Ci0gICAgICAgIGRpc3BhdGNoT25NYWluVGhyZWFkKF57Ci0gICAgICAgICAgICBib29s
IGFsbG93T3ZlcndyaXRlOwotICAgICAgICAgICAgU3RyaW5nIGRlc3RpbmF0aW9uID0gdG9Eb3du
bG9hZChjbGllbnRJbmZvKS0+ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUo
b2JqZWN0TmFtZSwgYWxsb3dPdmVyd3JpdGUpOwotICAgICAgICAgICAgaWYgKCFkZXN0aW5hdGlv
bi5pc051bGwoKSkKLSAgICAgICAgICAgICAgICBDRlVSTERvd25sb2FkU2V0RGVzdGluYXRpb24o
ZG93bmxvYWRSZWYsIHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZVUkxSZWY+KFtOU1VSTCBmaWxlVVJMV2l0
aFBhdGg6ZGVzdGluYXRpb25dKSwgYWxsb3dPdmVyd3JpdGUpOwotICAgICAgICB9KTsKLSAgICB9
OwotCi0gICAgY2xpZW50LmRpZENyZWF0ZURlc3RpbmF0aW9uID0gW10oQ0ZVUkxEb3dubG9hZFJl
ZiwgQ0ZVUkxSZWYgcGF0aCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykgewotICAgICAgICBkaXNw
YXRjaE9uTWFpblRocmVhZCheewotICAgICAgICAgICAgdG9Eb3dubG9hZChjbGllbnRJbmZvKS0+
ZGlkQ3JlYXRlRGVzdGluYXRpb24oQ0ZVUkxHZXRTdHJpbmcocGF0aCkpOwotICAgICAgICB9KTsK
LSAgICB9OwotCi0gICAgY2xpZW50LmRpZEZpbmlzaCA9IFtdKENGVVJMRG93bmxvYWRSZWYsIGNv
bnN0IHZvaWQqIGNsaWVudEluZm8pIHsKLSAgICAgICAgZGlzcGF0Y2hPbk1haW5UaHJlYWQoXnsK
LSAgICAgICAgICAgIHRvRG93bmxvYWQoY2xpZW50SW5mbyktPmRpZEZpbmlzaCgpOwotICAgICAg
ICB9KTsKLSAgICB9OwotCi0gICAgY2xpZW50LmRpZEZhaWwgPSBbXShDRlVSTERvd25sb2FkUmVm
IGRvd25sb2FkUmVmLCBDRkVycm9yUmVmIGVycm9yLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKSB7
Ci0gICAgICAgIGRpc3BhdGNoT25NYWluVGhyZWFkKF57Ci0gICAgICAgICAgICBhdXRvIHJlc3Vt
ZURhdGEgPSBhZG9wdENGKENGVVJMRG93bmxvYWRDb3B5UmVzdW1lRGF0YShkb3dubG9hZFJlZikp
OwotICAgICAgICAgICAgdG9Eb3dubG9hZChjbGllbnRJbmZvKS0+ZGlkRmFpbChlcnJvciwgSVBD
OjpEYXRhUmVmZXJlbmNlKHJlc3VtZURhdGEgPyBDRkRhdGFHZXRCeXRlUHRyKHJlc3VtZURhdGEu
Z2V0KCkpIDogbnVsbHB0ciwgcmVzdW1lRGF0YSA/IENGRGF0YUdldExlbmd0aChyZXN1bWVEYXRh
LmdldCgpKSA6IDApKTsKLSAgICAgICAgfSk7Ci0gICAgfTsKLX0KLQotdm9pZCBEb3dubG9hZDo6
c3RhcnROZXR3b3JrTG9hZCgpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBE
b3dubG9hZDo6cmVzdW1lKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGNvbnN0IFN0cmluZyYs
IGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQo
KTsKLX0KLQotdm9pZCBEb3dubG9hZDo6c3RhcnROZXR3b3JrTG9hZFdpdGhIYW5kbGUoUmVzb3Vy
Y2VIYW5kbGUqIGhhbmRsZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCi17Ci0g
ICAgQ0ZVUkxEb3dubG9hZENsaWVudCBjbGllbnQ7Ci0gICAgc2V0VXBEb3dubG9hZENsaWVudChj
bGllbnQsICp0aGlzKTsKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCi0jcHJhZ21hIGNs
YW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdkZXByZWNhdGVkLWRlY2xhcmF0aW9ucyIKLSAgICBt
X2Rvd25sb2FkID0gYWRvcHRDRihDRlVSTERvd25sb2FkQ3JlYXRlQW5kU3RhcnRXaXRoTG9hZGlu
Z0Nvbm5lY3Rpb24oTlVMTCwgaGFuZGxlLT5yZWxlYXNlQ29ubmVjdGlvbkZvckRvd25sb2FkKCku
Z2V0KCksIG1fcmVxdWVzdC5jZlVSTFJlcXVlc3QoVXBkYXRlSFRUUEJvZHkpLCByZXNwb25zZS5j
ZlVSTFJlc3BvbnNlKCksICZjbGllbnQpKTsKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AK
LX0KLQotdm9pZCBEb3dubG9hZDo6Y2FuY2VsTmV0d29ya0xvYWQoKQotewotICAgIG5vdEltcGxl
bWVudGVkKCk7Ci19Ci0KLXZvaWQgRG93bmxvYWQ6OnBsYXRmb3JtSW52YWxpZGF0ZSgpCi17Ci0g
ICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBEb3dubG9hZDo6cGxhdGZvcm1EaWRGaW5p
c2goKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktp
dAotCi0jZW5kaWYgLy8gVVNFKENGTkVUV09SSykgJiYgIVVTRShORVRXT1JLX1NFU1NJT04pCklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvaW9zL0Rvd25sb2Fk
SU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rvd25s
b2Fkcy9pb3MvRG93bmxvYWRJT1MubW0JKHJldmlzaW9uIDIwNzAzNykKKysrIFNvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9pb3MvRG93bmxvYWRJT1MubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTEsMTYyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIK
LSNpbXBvcnQgIkRvd25sb2FkLmgiCi0KLSNpZiBVU0UoQ0ZORVRXT1JLKSAmJiAhVVNFKE5FVFdP
UktfU0VTU0lPTikKLQotI2ltcG9ydCAiRGF0YVJlZmVyZW5jZS5oIgotI2ltcG9ydCA8Q0ZOZXR3
b3JrL0NGVVJMRG93bmxvYWQuaD4KLSNpbXBvcnQgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4K
LSNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgotI2ltcG9ydCA8V2ViQ29yZS9SZXNv
dXJjZUhhbmRsZS5oPgotI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+Ci0jaW1w
b3J0IDx3dGYvUmV0YWluUHRyLmg+Ci0jaW1wb3J0IDx3dGYvUnVuTG9vcC5oPgotCi11c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLS8vIEZJWE1FOiBJZiBw
b3NzaWJsZSwgd2Ugc2hvdWxkIGNvbnNpZGVyIG1vdmluZyBzb21lIGNhbGxiYWNrcyBvZmYgdGhl
IG1haW4gdGhyZWFkIG9yIGF0IGxlYXN0Ci0vLyBtYWtpbmcgdGhlbSBhc3luY2hvbm91cyBjYWxs
cy4KLXN0YXRpYyB2b2lkIGRpc3BhdGNoT25NYWluVGhyZWFkKHZvaWQoXmJsb2NrKSgpKQotewot
ICAgIGlmIChSdW5Mb29wOjppc01haW4oKSkgewotICAgICAgICBibG9jaygpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgZGlzcGF0Y2hfc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1
ZSgpLCBibG9jayk7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgRG93bmxvYWQqIHRvRG93bmxvYWQoY29u
c3Qgdm9pZCogY2xpZW50SW5mbykKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RG93bmxvYWQq
Pihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSk7Ci19Ci0KLXN0YXRpYyB2b2lkIHNldFVw
RG93bmxvYWRDbGllbnQoQ0ZVUkxEb3dubG9hZENsaWVudCYgY2xpZW50LCBEb3dubG9hZCYgZG93
bmxvYWQpCi17Ci0gICAgbWVtc2V0KCZjbGllbnQsIDAsIHNpemVvZihjbGllbnQpKTsKLSAgICBj
bGllbnQuY2xpZW50SW5mbyA9ICZkb3dubG9hZDsKLQotICAgIGNsaWVudC5kaWRTdGFydCA9IFtd
KENGVVJMRG93bmxvYWRSZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pIHsKLSAgICAgICAgZGlz
cGF0Y2hPbk1haW5UaHJlYWQoXnsKLSAgICAgICAgICAgIHRvRG93bmxvYWQoY2xpZW50SW5mbykt
PmRpZFN0YXJ0KCk7Ci0gICAgICAgIH0pOwotICAgIH07Ci0KLSAgICBjbGllbnQud2lsbFNlbmRS
ZXF1ZXN0ID0gW10oQ0ZVUkxEb3dubG9hZFJlZiwgQ0ZVUkxSZXF1ZXN0UmVmIHJlcXVlc3QsIENG
VVJMUmVzcG9uc2VSZWYsIGNvbnN0IHZvaWQqKSAtPiBDRlVSTFJlcXVlc3RSZWYgewotICAgICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8Q0ZVUkxSZXF1ZXN0UmVmPihDRlJldGFpbihyZXF1ZXN0KSk7
Ci0gICAgfTsKLQotICAgIGNsaWVudC5kaWRSZWNlaXZlUmVzcG9uc2UgPSBbXShDRlVSTERvd25s
b2FkUmVmLCBDRlVSTFJlc3BvbnNlUmVmIHJlc3BvbnNlLCBjb25zdCB2b2lkKiBjbGllbnRJbmZv
KSB7Ci0gICAgICAgIGRpc3BhdGNoT25NYWluVGhyZWFkKF57Ci0gICAgICAgICAgICB0b0Rvd25s
b2FkKGNsaWVudEluZm8pLT5kaWRSZWNlaXZlUmVzcG9uc2UocmVzcG9uc2UpOwotICAgICAgICB9
KTsKLSAgICB9OwotCi0gICAgY2xpZW50LmRpZFJlY2VpdmVEYXRhID0gW10oQ0ZVUkxEb3dubG9h
ZFJlZiwgQ0ZJbmRleCBsZW5ndGgsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pIHsKLSAgICAgICAg
ZGlzcGF0Y2hPbk1haW5UaHJlYWQoXnsKLSAgICAgICAgICAgIHRvRG93bmxvYWQoY2xpZW50SW5m
byktPmRpZFJlY2VpdmVEYXRhKGxlbmd0aCk7Ci0gICAgICAgIH0pOwotICAgIH07Ci0KLSAgICBj
bGllbnQuc2hvdWxkRGVjb2RlRGF0YU9mTUlNRVR5cGUgPSBbXShDRlVSTERvd25sb2FkUmVmLCBD
RlN0cmluZ1JlZiBlbmNvZGluZ1R5cGUsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pIC0+IEJvb2xl
YW4gewotICAgICAgICBfX2Jsb2NrIEJPT0wgcmV0dXJuVmFsdWUgPSBOTzsKLSAgICAgICAgZGlz
cGF0Y2hPbk1haW5UaHJlYWQoXnsKLSAgICAgICAgICAgIHJldHVyblZhbHVlID0gdG9Eb3dubG9h
ZChjbGllbnRJbmZvKS0+c2hvdWxkRGVjb2RlU291cmNlRGF0YU9mTUlNRVR5cGUoZW5jb2RpbmdU
eXBlKTsKLSAgICAgICAgfSk7Ci0gICAgICAgIHJldHVybiByZXR1cm5WYWx1ZTsKLSAgICB9Owot
Ci0gICAgY2xpZW50LmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZE9iamVjdE5hbWUgPSBb
XShDRlVSTERvd25sb2FkUmVmIGRvd25sb2FkUmVmLCBDRlN0cmluZ1JlZiBvYmplY3ROYW1lLCBj
b25zdCB2b2lkKiBjbGllbnRJbmZvKSB7Ci0gICAgICAgIGRpc3BhdGNoT25NYWluVGhyZWFkKF57
Ci0gICAgICAgICAgICBib29sIGFsbG93T3ZlcndyaXRlOwotICAgICAgICAgICAgU3RyaW5nIGRl
c3RpbmF0aW9uID0gdG9Eb3dubG9hZChjbGllbnRJbmZvKS0+ZGVjaWRlRGVzdGluYXRpb25XaXRo
U3VnZ2VzdGVkRmlsZW5hbWUob2JqZWN0TmFtZSwgYWxsb3dPdmVyd3JpdGUpOwotICAgICAgICAg
ICAgaWYgKCFkZXN0aW5hdGlvbi5pc051bGwoKSkKLSAgICAgICAgICAgICAgICBDRlVSTERvd25s
b2FkU2V0RGVzdGluYXRpb24oZG93bmxvYWRSZWYsIHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZVUkxSZWY+
KFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6ZGVzdGluYXRpb25dKSwgYWxsb3dPdmVyd3JpdGUpOwot
ICAgICAgICB9KTsKLSAgICB9OwotCi0gICAgY2xpZW50LmRpZENyZWF0ZURlc3RpbmF0aW9uID0g
W10oQ0ZVUkxEb3dubG9hZFJlZiwgQ0ZVUkxSZWYgcGF0aCwgY29uc3Qgdm9pZCogY2xpZW50SW5m
bykgewotICAgICAgICBkaXNwYXRjaE9uTWFpblRocmVhZCheewotICAgICAgICAgICAgdG9Eb3du
bG9hZChjbGllbnRJbmZvKS0+ZGlkQ3JlYXRlRGVzdGluYXRpb24oQ0ZVUkxHZXRTdHJpbmcocGF0
aCkpOwotICAgICAgICB9KTsKLSAgICB9OwotCi0gICAgY2xpZW50LmRpZEZpbmlzaCA9IFtdKENG
VVJMRG93bmxvYWRSZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pIHsKLSAgICAgICAgZGlzcGF0
Y2hPbk1haW5UaHJlYWQoXnsKLSAgICAgICAgICAgIHRvRG93bmxvYWQoY2xpZW50SW5mbyktPmRp
ZEZpbmlzaCgpOwotICAgICAgICB9KTsKLSAgICB9OwotCi0gICAgY2xpZW50LmRpZEZhaWwgPSBb
XShDRlVSTERvd25sb2FkUmVmIGRvd25sb2FkUmVmLCBDRkVycm9yUmVmIGVycm9yLCBjb25zdCB2
b2lkKiBjbGllbnRJbmZvKSB7Ci0gICAgICAgIGRpc3BhdGNoT25NYWluVGhyZWFkKF57Ci0gICAg
ICAgICAgICBhdXRvIHJlc3VtZURhdGEgPSBhZG9wdENGKENGVVJMRG93bmxvYWRDb3B5UmVzdW1l
RGF0YShkb3dubG9hZFJlZikpOwotICAgICAgICAgICAgdG9Eb3dubG9hZChjbGllbnRJbmZvKS0+
ZGlkRmFpbChlcnJvciwgSVBDOjpEYXRhUmVmZXJlbmNlKHJlc3VtZURhdGEgPyBDRkRhdGFHZXRC
eXRlUHRyKHJlc3VtZURhdGEuZ2V0KCkpIDogbnVsbHB0ciwgcmVzdW1lRGF0YSA/IENGRGF0YUdl
dExlbmd0aChyZXN1bWVEYXRhLmdldCgpKSA6IDApKTsKLSAgICAgICAgfSk7Ci0gICAgfTsKLX0K
LQotdm9pZCBEb3dubG9hZDo6c3RhcnROZXR3b3JrTG9hZCgpCi17Ci0gICAgbm90SW1wbGVtZW50
ZWQoKTsKLX0KLQotdm9pZCBEb3dubG9hZDo6cmVzdW1lKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5j
ZSYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYpCi17Ci0g
ICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBEb3dubG9hZDo6c3RhcnROZXR3b3JrTG9h
ZFdpdGhIYW5kbGUoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYgcmVzcG9uc2UpCi17Ci0gICAgQ0ZVUkxEb3dubG9hZENsaWVudCBjbGllbnQ7Ci0gICAgc2V0
VXBEb3dubG9hZENsaWVudChjbGllbnQsICp0aGlzKTsKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3Rp
YyBwdXNoCi0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdkZXByZWNhdGVkLWRl
Y2xhcmF0aW9ucyIKLSAgICBtX2Rvd25sb2FkID0gYWRvcHRDRihDRlVSTERvd25sb2FkQ3JlYXRl
QW5kU3RhcnRXaXRoTG9hZGluZ0Nvbm5lY3Rpb24oTlVMTCwgaGFuZGxlLT5yZWxlYXNlQ29ubmVj
dGlvbkZvckRvd25sb2FkKCkuZ2V0KCksIG1fcmVxdWVzdC5jZlVSTFJlcXVlc3QoVXBkYXRlSFRU
UEJvZHkpLCByZXNwb25zZS5jZlVSTFJlc3BvbnNlKCksICZjbGllbnQpKTsKLSNwcmFnbWEgY2xh
bmcgZGlhZ25vc3RpYyBwb3AKLX0KLQotdm9pZCBEb3dubG9hZDo6Y2FuY2VsTmV0d29ya0xvYWQo
KQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgRG93bmxvYWQ6OnBsYXRmb3Jt
SW52YWxpZGF0ZSgpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBEb3dubG9h
ZDo6cGxhdGZvcm1EaWRGaW5pc2goKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLX0g
Ly8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gVVNFKENGTkVUV09SSykgJiYgIVVTRShO
RVRXT1JLX1NFU1NJT04pCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9Eb3du
bG9hZHMvbWFjL0Rvd25sb2FkTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9tYWMvRG93bmxvYWRNYWMubW0JKHJldmlzaW9uIDIwNzAz
NykKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9tYWMvRG93bmxv
YWRNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpbXBvcnQgImNvbmZp
Zy5oIgogI2ltcG9ydCAiRG93bmxvYWQuaCIKIAotI2lmICFVU0UoQ0ZORVRXT1JLKSAmJiAhVVNF
KE5FVFdPUktfU0VTU0lPTikKKyNpZiAhVVNFKE5FVFdPUktfU0VTU0lPTikKIAogI2ltcG9ydCA8
V2ViQ29yZS9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9BdXRo
ZW50aWNhdGlvbk1hYy5oPgpAQCAtMjcyLDQgKzI3Miw0IEBAIC0gKHZvaWQpZG93bmxvYWQ6KE5T
VVJMRG93bmxvYWQgKilkb3dubG8KIAogQGVuZAogCi0jZW5kaWYgLy8gIVVTRShDRk5FVFdPUksp
ICYmICFVU0UoTkVUV09SS19TRVNTSU9OKQorI2VuZGlmIC8vICFVU0UoTkVUV09SS19TRVNTSU9O
KQpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtMb2FkTWFj
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL21hYy9OZXR3
b3JrTG9hZE1hYy5tbQkocmV2aXNpb24gMjA3MDM3KQorKysgU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvbWFjL05ldHdvcmtMb2FkTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw3ICsy
NCw2IEBACiAgKi8KIAogI2ltcG9ydCAiY29uZmlnLmgiCi0KICNpbXBvcnQgIk5ldHdvcmtMb2Fk
LmgiCiAKICNpbXBvcnQgPFdlYkNvcmUvQ0ZOZXR3b3JrU1BJLmg+CkBAIC0zNCwxNyArMzMsNiBA
QCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLSNpZiBV
U0UoQ0ZORVRXT1JLKQotCi12b2lkIE5ldHdvcmtMb2FkOjp3aWxsQ2FjaGVSZXNwb25zZUFzeW5j
KFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYgY2ZSZXNwb25z
ZSkKLXsKLSAgICBBU1NFUlRfVU5VU0VEKGhhbmRsZSwgaGFuZGxlID09IG1faGFuZGxlKTsKLQot
ICAgIG1faGFuZGxlLT5jb250aW51ZVdpbGxDYWNoZVJlc3BvbnNlKGNmUmVzcG9uc2UpOwotfQot
Ci0jZWxzZQotCiB2b2lkIE5ldHdvcmtMb2FkOjp3aWxsQ2FjaGVSZXNwb25zZUFzeW5jKFJlc291
cmNlSGFuZGxlKiBoYW5kbGUsIE5TQ2FjaGVkVVJMUmVzcG9uc2UgKm5zUmVzcG9uc2UpCiB7CiAg
ICAgQVNTRVJUX1VOVVNFRChoYW5kbGUsIGhhbmRsZSA9PSBtX2hhbmRsZSk7CkBAIC01Miw2ICs0
MCw0IEBAIHZvaWQgTmV0d29ya0xvYWQ6OndpbGxDYWNoZVJlc3BvbnNlQXN5bmMKICAgICBtX2hh
bmRsZS0+Y29udGludWVXaWxsQ2FjaGVSZXNwb25zZShuc1Jlc3BvbnNlKTsKIH0KIAotI2VuZGlm
IC8vICFVU0UoQ0ZORVRXT1JLKQotCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cy5jcHAJKHJldmlzaW9uIDIwNzAzNykKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA0LDcgKzEwNCw3
IEBAIHZvaWQgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2QKICAgICBlbmNvZGVy
IDw8IHRleHRDaGVja2VyU3RhdGU7CiAgICAgZW5jb2RlciA8PCBmdWxsS2V5Ym9hcmRBY2Nlc3NF
bmFibGVkOwogICAgIGVuY29kZXIgPDwgZGVmYXVsdFJlcXVlc3RUaW1lb3V0SW50ZXJ2YWw7Ci0j
aWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRk5FVFdPUkspCisjaWYgUExBVEZPUk0oQ09DT0Ep
CiAgICAgZW5jb2RlciA8PCB1aVByb2Nlc3NCdW5kbGVJZGVudGlmaWVyOwogI2VuZGlmCiAjaWYg
UExBVEZPUk0oQ09DT0EpCkBAIC0yNDAsNyArMjQwLDcgQEAgYm9vbCBXZWJQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzOjpkZWNvZAogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShwYXJhbWV0ZXJzLmRlZmF1bHRSZXF1ZXN0VGltZW91dEludGVydmFsKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZORVRXT1JL
KQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVy
cy51aVByb2Nlc3NCdW5kbGVJZGVudGlmaWVyKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogI2Vu
ZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzLmgJKHJldmlzaW9uIDIwNzAzNykKKysrIFNvdXJjZS9XZWJLaXQyL1No
YXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEy
Myw3ICsxMjMsNyBAQCBzdHJ1Y3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyB7CiAKICAg
ICBkb3VibGUgZGVmYXVsdFJlcXVlc3RUaW1lb3V0SW50ZXJ2YWw7CiAKLSNpZiBQTEFURk9STShD
T0NPQSkgfHwgVVNFKENGTkVUV09SSykKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICBTdHJpbmcg
dWlQcm9jZXNzQnVuZGxlSWRlbnRpZmllcjsKICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvQXV0aGVudGljYXRpb24vY29jb2EvQXV0aGVudGljYXRpb25NYW5hZ2VyQ29jb2Eu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL2Nv
Y29hL0F1dGhlbnRpY2F0aW9uTWFuYWdlckNvY29hLm1tCShyZXZpc2lvbiAyMDcwMzcpCisrKyBT
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvQXV0aGVudGljYXRpb24vY29jb2EvQXV0aGVudGljYXRpb25N
YW5hZ2VyQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTMyLDM3ICszMiwyNyBAQCBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAogdm9pZCBBdXRoZW50aWNhdGlvbk1hbmFnZXI6OnJlY2VpdmVkQ3JlZGVu
dGlhbChjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgYXV0aGVudGljYXRpb25DaGFsbGVu
Z2UsIGNvbnN0IENyZWRlbnRpYWwmIGNyZWRlbnRpYWwpCiB7Ci0jaWYgIVVTRShDRk5FVFdPUksp
CiAgICAgW2F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLnNlbmRlcigpIHVzZUNyZWRlbnRpYWw6Y3Jl
ZGVudGlhbC5uc0NyZWRlbnRpYWwoKSBmb3JBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTphdXRoZW50
aWNhdGlvbkNoYWxsZW5nZS5uc1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCldOwotI2VuZGlm
CiB9CiAKIHZvaWQgQXV0aGVudGljYXRpb25NYW5hZ2VyOjpyZWNlaXZlZFJlcXVlc3RUb0NvbnRp
bnVlV2l0aG91dENyZWRlbnRpYWwoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlKQogewotI2lmICFVU0UoQ0ZORVRXT1JLKQogICAgIFthdXRoZW50
aWNhdGlvbkNoYWxsZW5nZS5zZW5kZXIoKSBjb250aW51ZVdpdGhvdXRDcmVkZW50aWFsRm9yQXV0
aGVudGljYXRpb25DaGFsbGVuZ2U6YXV0aGVudGljYXRpb25DaGFsbGVuZ2UubnNVUkxBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSgpXTsKLSNlbmRpZgogfQogCiB2b2lkIEF1dGhlbnRpY2F0aW9uTWFu
YWdlcjo6cmVjZWl2ZWRDYW5jZWxsYXRpb24oY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2Um
IGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKQogewotI2lmICFVU0UoQ0ZORVRXT1JLKQogICAgIFth
dXRoZW50aWNhdGlvbkNoYWxsZW5nZS5zZW5kZXIoKSBjYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZTphdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5uc1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
KCldOwotI2VuZGlmCiB9CiAKIHZvaWQgQXV0aGVudGljYXRpb25NYW5hZ2VyOjpyZWNlaXZlZFJl
cXVlc3RUb1BlcmZvcm1EZWZhdWx0SGFuZGxpbmcoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UmIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKQogewotI2lmICFVU0UoQ0ZORVRXT1JLKQogICAg
IFthdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5zZW5kZXIoKSBwZXJmb3JtRGVmYXVsdEhhbmRsaW5n
Rm9yQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6YXV0aGVudGljYXRpb25DaGFsbGVuZ2UubnNVUkxB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSgpXTsKLSNlbmRpZgogfQogCiB2b2lkIEF1dGhlbnRpY2F0
aW9uTWFuYWdlcjo6cmVjZWl2ZWRDaGFsbGVuZ2VSZWplY3Rpb24oY29uc3QgQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UmIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKQogewotI2lmICFVU0UoQ0ZORVRX
T1JLKQogICAgIFthdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5zZW5kZXIoKSByZWplY3RQcm90ZWN0
aW9uU3BhY2VBbmRDb250aW51ZVdpdGhDaGFsbGVuZ2U6YXV0aGVudGljYXRpb25DaGFsbGVuZ2Uu
bnNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgpXTsKLSNlbmRpZgogfQogCiB9CkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1dlYkNvcmVBcmd1bWVudENvZGVyc01hYy5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1dlYkNvcmVBcmd1bWVudENvZGVy
c01hYy5tbQkocmV2aXNpb24gMjA3MDM3KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9X
ZWJDb3JlQXJndW1lbnRDb2RlcnNNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTM5LDEwICszOSw2
IEBACiAjaW1wb3J0IDxXZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4KICNpbXBvcnQgPFdlYkNvcmUv
UmVzb3VyY2VSZXF1ZXN0Lmg+CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotI2ltcG9ydCA8Q0ZOZXR3
b3JrL0NGVVJMUmVxdWVzdC5oPgotI2VuZGlmCi0KICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJB
Q0tfVEFSR0VUKQogI2ltcG9ydCA8V2ViQ29yZS9BVkZvdW5kYXRpb25TUEkuaD4KICNpbXBvcnQg
PFdlYkNvcmUvTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQuaD4KQEAgLTU3LDM2ICs1Myw2IEBA
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgSVBDIHsKIAotI2lmIFVTRShD
Rk5FVFdPUkspCi12b2lkIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VSZXF1ZXN0Pjo6ZW5jb2RlUGxh
dGZvcm1EYXRhKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3Vy
Y2VSZXF1ZXN0KQotewotICAgIFJldGFpblB0cjxDRlVSTFJlcXVlc3RSZWY+IHJlcXVlc3RUb1Nl
cmlhbGl6ZSA9IHJlc291cmNlUmVxdWVzdC5jZlVSTFJlcXVlc3QoRG9Ob3RVcGRhdGVIVFRQQm9k
eSk7Ci0KLSAgICBib29sIHJlcXVlc3RJc1ByZXNlbnQgPSByZXF1ZXN0VG9TZXJpYWxpemU7Ci0g
ICAgZW5jb2RlciA8PCByZXF1ZXN0SXNQcmVzZW50OwotCi0gICAgaWYgKCFyZXF1ZXN0SXNQcmVz
ZW50KQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBXZSBkb24ndCBzZW5kIEhUVFAgYm9keSBv
dmVyIElQQyBmb3IgYmV0dGVyIHBlcmZvcm1hbmNlLgotICAgIC8vIEFsc28sIGl0J3Mgbm90IGFs
d2F5cyBwb3NzaWJsZSB0byBkbywgYXMgc3RyZWFtcyBjYW4gb25seSBiZSBjcmVhdGVkIGluIHBy
b2Nlc3MgdGhhdCBkb2VzIG5ldHdvcmtpbmcuCi0gICAgUmV0YWluUHRyPENGRGF0YVJlZj4gcmVx
dWVzdEhUVFBCb2R5ID0gYWRvcHRDRihDRlVSTFJlcXVlc3RDb3B5SFRUUFJlcXVlc3RCb2R5KHJl
cXVlc3RUb1NlcmlhbGl6ZS5nZXQoKSkpOwotICAgIFJldGFpblB0cjxDRlJlYWRTdHJlYW1SZWY+
IHJlcXVlc3RIVFRQQm9keVN0cmVhbSA9IGFkb3B0Q0YoQ0ZVUkxSZXF1ZXN0Q29weUhUVFBSZXF1
ZXN0Qm9keVN0cmVhbShyZXF1ZXN0VG9TZXJpYWxpemUuZ2V0KCkpKTsKLSAgICBpZiAocmVxdWVz
dEhUVFBCb2R5IHx8IHJlcXVlc3RIVFRQQm9keVN0cmVhbSkgewotICAgICAgICBDRk11dGFibGVV
UkxSZXF1ZXN0UmVmIG11dGFibGVSZXF1ZXN0ID0gQ0ZVUkxSZXF1ZXN0Q3JlYXRlTXV0YWJsZUNv
cHkoMCwgcmVxdWVzdFRvU2VyaWFsaXplLmdldCgpKTsKLSAgICAgICAgcmVxdWVzdFRvU2VyaWFs
aXplID0gYWRvcHRDRihtdXRhYmxlUmVxdWVzdCk7Ci0gICAgICAgIENGVVJMUmVxdWVzdFNldEhU
VFBSZXF1ZXN0Qm9keShtdXRhYmxlUmVxdWVzdCwgbmlsKTsKLSAgICAgICAgQ0ZVUkxSZXF1ZXN0
U2V0SFRUUFJlcXVlc3RCb2R5U3RyZWFtKG11dGFibGVSZXF1ZXN0LCBuaWwpOwotICAgIH0KLQot
ICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IGRpY3Rpb25hcnkgPSBhZG9wdENGKFdLQ0ZV
UkxSZXF1ZXN0Q3JlYXRlU2VyaWFsaXphYmxlUmVwcmVzZW50YXRpb24ocmVxdWVzdFRvU2VyaWFs
aXplLmdldCgpLCBJUEM6OnRva2VuTnVsbFR5cGVSZWYoKSkpOwotICAgIElQQzo6ZW5jb2RlKGVu
Y29kZXIsIGRpY3Rpb25hcnkuZ2V0KCkpOwotCi0gICAgLy8gVGhlIGZhbGxiYWNrIGFycmF5IGlz
IHBhcnQgb2YgQ0ZVUkxSZXF1ZXN0LCBidXQgaXQgaXMgbm90IGVuY29kZWQgYnkgV0tDRlVSTFJl
cXVlc3RDcmVhdGVTZXJpYWxpemFibGVSZXByZXNlbnRhdGlvbi4KLSAgICBlbmNvZGVyIDw8IHJl
c291cmNlUmVxdWVzdC5yZXNwb25zZUNvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tB
cnJheSgpOwotICAgIGVuY29kZXIuZW5jb2RlRW51bShyZXNvdXJjZVJlcXVlc3QucmVxdWVzdGVy
KCkpOwotfQotI2Vsc2UKIHZvaWQgQXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlcXVlc3Q+OjplbmNv
ZGVQbGF0Zm9ybURhdGEoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXNvdXJjZVJlcXVlc3QpCiB7CiAgICAgUmV0YWluUHRyPE5TVVJMUmVxdWVzdD4gcmVxdWVzdFRv
U2VyaWFsaXplID0gcmVzb3VyY2VSZXF1ZXN0Lm5zVVJMUmVxdWVzdChEb05vdFVwZGF0ZUhUVFBC
b2R5KTsKQEAgLTExMiw3ICs3OCw2IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlcXVl
c3Q+OjplbmMKICAgICBlbmNvZGVyIDw8IHJlc291cmNlUmVxdWVzdC5yZXNwb25zZUNvbnRlbnRE
aXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheSgpOwogICAgIGVuY29kZXIuZW5jb2RlRW51
bShyZXNvdXJjZVJlcXVlc3QucmVxdWVzdGVyKCkpOwogfQotI2VuZGlmCiAKIGJvb2wgQXJndW1l
bnRDb2RlcjxSZXNvdXJjZVJlcXVlc3Q+OjpkZWNvZGVQbGF0Zm9ybURhdGEoRGVjb2RlciYgZGVj
b2RlciwgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QpCiB7CkBAIC0xMjksMTkgKzk0
LDExIEBAIGJvb2wgQXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlcXVlc3Q+OjpkZWMKICAgICBpZiAo
IUlQQzo6ZGVjb2RlKGRlY29kZXIsIGRpY3Rpb25hcnkpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotICAgIFJldGFpblB0cjxDRlVSTFJlcXVlc3RSZWY+IGNm
VVJMUmVxdWVzdCA9IGFkb3B0Q0YoV0tDcmVhdGVDRlVSTFJlcXVlc3RGcm9tU2VyaWFsaXphYmxl
UmVwcmVzZW50YXRpb24oZGljdGlvbmFyeS5nZXQoKSwgSVBDOjp0b2tlbk51bGxUeXBlUmVmKCkp
KTsKLSAgICBpZiAoIWNmVVJMUmVxdWVzdCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAg
cmVzb3VyY2VSZXF1ZXN0ID0gUmVzb3VyY2VSZXF1ZXN0KGNmVVJMUmVxdWVzdC5nZXQoKSk7Ci0j
ZWxzZQogICAgIFJldGFpblB0cjxOU1VSTFJlcXVlc3Q+IG5zVVJMUmVxdWVzdCA9IFdLTlNVUkxS
ZXF1ZXN0RnJvbVNlcmlhbGl6YWJsZVJlcHJlc2VudGF0aW9uKGRpY3Rpb25hcnkuZ2V0KCksIElQ
Qzo6dG9rZW5OdWxsVHlwZVJlZigpKTsKICAgICBpZiAoIW5zVVJMUmVxdWVzdCkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCiAgICAgcmVzb3VyY2VSZXF1ZXN0ID0gUmVzb3VyY2VSZXF1ZXN0KG5z
VVJMUmVxdWVzdC5nZXQoKSk7Ci0jZW5kaWYKICAgICAKICAgICBWZWN0b3I8U3RyaW5nPiByZXNw
b25zZUNvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheTsKICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKHJlc3BvbnNlQ29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0Fy
cmF5KSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oJKHJldmlzaW9uIDIwNzAzNykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYktpdDIu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTA1MSw3ICsxMDUx
LDYgQEAKIAkJNUMxNDI3MDUxQzIzRjg0QzAwRDQxMTgzIC8qIERvd25sb2FkSUQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDMTQyNkY3MUMyM0Y4NDMw
MEQ0MTE4MyAvKiBEb3dubG9hZElELmggKi87IH07CiAJCTVDMTQyNzA2MUMyM0Y4NEMwMEQ0MTE4
MyAvKiBEb3dubG9hZE1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNUMxNDI2RjgxQzIzRjg0MzAwRDQxMTgzIC8qIERvd25sb2FkTWFuYWdl
ci5jcHAgKi87IH07CiAJCTVDMTQyNzA3MUMyM0Y4NEMwMEQ0MTE4MyAvKiBEb3dubG9hZE1hbmFn
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDMTQy
NkY5MUMyM0Y4NDMwMEQ0MTE4MyAvKiBEb3dubG9hZE1hbmFnZXIuaCAqLzsgfTsKLQkJNUMxNDI3
MTExQzIzRjg5RTAwRDQxMTgzIC8qIERvd25sb2FkSU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMxNDI3MEQxQzIzRjg4NTAwRDQxMTgzIC8qIERv
d25sb2FkSU9TLm1tICovOyB9OwogCQk1QzE0MjcxMjFDMjNGODlFMDBENDExODMgLyogRG93bmxv
YWRNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
QzE0MjcwRjFDMjNGODk5MDBENDExODMgLyogRG93bmxvYWRNYWMubW0gKi87IH07CiAJCTVDMTQy
NzEzMUMyM0Y4OUUwMEQ0MTE4MyAvKiBEb3dubG9hZENvY29hLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMxNDI3MDkxQzIzRjg2OTAwRDQxMTgzIC8q
IERvd25sb2FkQ29jb2EubW0gKi87IH07CiAJCTVDMTQyNzE4MUMyM0Y4QjcwMEQ0MTE4MyAvKiBD
dXN0b21Qcm90b2NvbE1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDVDMTQyNzE0MUMyM0Y4QjAwMEQ0MTE4MyAvKiBDdXN0b21Qcm90b2NvbE1h
bmFnZXIuaCAqLzsgfTsKQEAgLTMxMzAsNyArMzEyOSw2IEBACiAJCTVDMTQyNkY4MUMyM0Y4NDMw
MEQ0MTE4MyAvKiBEb3dubG9hZE1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBuYW1lID0gRG93bmxvYWRNYW5hZ2VyLmNwcDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL0Rv
d25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1QzE0MjZGOTFDMjNGODQzMDBENDExODMgLyogRG93bmxvYWRNYW5hZ2VyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERvd25sb2FkTWFuYWdlci5oOyBwYXRoID0gTmV0d29y
a1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1QzE0MjcwOTFDMjNGODY5MDBENDExODMgLyogRG93bmxvYWRDb2NvYS5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IERvd25sb2FkQ29jb2EubW07
IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvY29jb2EvRG93bmxvYWRDb2NvYS5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNUMxNDI3MEQxQzIzRjg4NTAwRDQxMTgzIC8q
IERvd25sb2FkSU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0g
RG93bmxvYWRJT1MubW07IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvaW9zL0Rvd25s
b2FkSU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzE0MjcwRjFDMjNGODk5
MDBENDExODMgLyogRG93bmxvYWRNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IG5hbWUgPSBEb3dubG9hZE1hYy5tbTsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fk
cy9tYWMvRG93bmxvYWRNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDMTQy
NzE0MUMyM0Y4QjAwMEQ0MTE4MyAvKiBDdXN0b21Qcm90b2NvbE1hbmFnZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmg7IHBhdGggPSBO
ZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDMTQyNzE1MUMyM0Y4QjAwMEQ0MTE4MyAvKiBD
dXN0b21Qcm90b2NvbE1hbmFnZXIubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0g
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyLm1lc3NhZ2VzLmluOyBwYXRoID0gTmV0d29ya1Byb2Nlc3Mv
Q3VzdG9tUHJvdG9jb2xzL0N1c3RvbVByb3RvY29sTWFuYWdlci5tZXNzYWdlcy5pbjsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTU3MzgsNyArNTczNiw2IEBACiAJCQlpc2EgPSBQQlhH
cm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCTVDMTQyNzA4MUMyM0Y4NTIwMEQ0MTE4MyAvKiBj
b2NvYSAqLywKLQkJCQk1QzE0MjcwQzFDMjNGODc3MDBENDExODMgLyogaW9zICovLAogCQkJCTVD
MTQyNzBCMUMyM0Y4NzEwMEQ0MTE4MyAvKiBtYWMgKi8sCiAJCQkJODNCRkFDNDAxRDk2MTM2MDAw
NDMzNDkwIC8qIEJsb2JEb3dubG9hZENsaWVudC5oICovLAogCQkJCTgzQkZBQzQxMUQ5NjEzNjAw
MDQzMzQ5MCAvKiBCbG9iRG93bmxvYWRDbGllbnQuY3BwICovLApAQCAtNTc3OSwxNCArNTc3Niw2
IEBACiAJCQluYW1lID0gbWFjOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKLQkJ
NUMxNDI3MEMxQzIzRjg3NzAwRDQxMTgzIC8qIGlvcyAqLyA9IHsKLQkJCWlzYSA9IFBCWEdyb3Vw
OwotCQkJY2hpbGRyZW4gPSAoCi0JCQkJNUMxNDI3MEQxQzIzRjg4NTAwRDQxMTgzIC8qIERvd25s
b2FkSU9TLm1tICovLAotCQkJKTsKLQkJCW5hbWUgPSBpb3M7Ci0JCQlzb3VyY2VUcmVlID0gIjxn
cm91cD4iOwotCQl9OwogCQk1QzE0MjcxQTFDMjNGOEJGMDBENDExODMgLyogQ29jb2EgKi8gPSB7
CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtOTA4OCw3ICs5MDc3LDYg
QEAKIAkJCQk1QzE0MjcwMTFDMjNGODRDMDBENDExODMgLyogRG93bmxvYWQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQTFERjYzMTIxOEUwQjdDODAwM0EzRTJBIC8qIERvd25sb2FkQ2xpZW50Lm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJNUMxNDI3MTMxQzIzRjg5RTAwRDQxMTgzIC8qIERvd25sb2Fk
Q29jb2EubW0gaW4gU291cmNlcyAqLywKLQkJCQk1QzE0MjcxMTFDMjNGODlFMDBENDExODMgLyog
RG93bmxvYWRJT1MubW0gaW4gU291cmNlcyAqLywKIAkJCQk1QzE0MjcxMjFDMjNGODlFMDBENDEx
ODMgLyogRG93bmxvYWRNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQk1QzE0MjcwNjFDMjNGODRD
MDBENDExODMgLyogRG93bmxvYWRNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBQjdE
NENCMTI4OEFBQTcwMENGRDA4QyAvKiBEb3dubG9hZFByb3h5LmNwcCBpbiBTb3VyY2VzICovLApJ
bmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNzAzNykKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTYtMTAtMTAgIEFsZXggQ2hyaXN0
ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZW1vdmUgZGVhZCBu
ZXR3b3JraW5nIGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE2MzI2MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcDoKKyAg
ICAgICAgKFdlYlJlc291cmNlTG9hZFNjaGVkdWxlcjo6c2NoZWR1bGVMb2FkKToKKwogMjAxNi0x
MC0wNiAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJl
dmlld2VkIGJ1aWxkIGZpeCB3aGVuIGJ1aWxkaW5nIHdpdGggRGlyZWN0MkQuCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRT
Y2hlZHVsZXIuY3BwCShyZXZpc2lvbiAyMDcwMzcpCisrKyBTb3VyY2UvV2ViS2l0L1dlYkNvcmVT
dXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0
OSw3ICsxNDksNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFNjaGVkdWxlcjo6c2NoZWR1bGVMCiAg
ICAgYm9vbCBoYWRSZXF1ZXN0cyA9IGhvc3QtPmhhc1JlcXVlc3RzKCk7CiAgICAgaG9zdC0+c2No
ZWR1bGUocmVzb3VyY2VMb2FkZXIsIHByaW9yaXR5KTsKIAotI2lmIFBMQVRGT1JNKENPQ09BKSB8
fCBVU0UoQ0ZORVRXT1JLKQorI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZVUkxDT05ORUNU
SU9OKQogICAgIGlmIChSZXNvdXJjZVJlcXVlc3Q6OnJlc291cmNlUHJpb3JpdGllc0VuYWJsZWQo
KSAmJiAhaXNTdXNwZW5kaW5nUGVuZGluZ1JlcXVlc3RzKCkpIHsKICAgICAgICAgLy8gU2VydmUg
YWxsIHJlcXVlc3RzIGF0IG9uY2UgdG8ga2VlcCB0aGUgcGlwZWxpbmUgZnVsbCBhdCB0aGUgbmV0
d29yayBsYXllci4KICAgICAgICAgLy8gRklYTUU6IERvZXMgdGhpcyBjb2RlIGRvIGFueXRoaW5n
IHVzZWZ1bCwgZ2l2ZW4gdGhhdCB3ZSBhbHNvIHNldCBtYXhSZXF1ZXN0c0luRmxpZ2h0UGVySG9z
dCB0byBlZmZlY3RpdmVseSB1bmxpbWl0ZWQgb24gdGhlc2UgcGxhdGZvcm1zPwpJbmRleDogU291
cmNlL1dlYktpdC9jZi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jZi9D
aGFuZ2VMb2cJKHJldmlzaW9uIDIwNzAzNykKKysrIFNvdXJjZS9XZWJLaXQvY2YvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTYtMTAtMTAgIEFsZXggQ2hyaXN0
ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZW1vdmUgZGVhZCBu
ZXR3b3JraW5nIGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE2MzI2MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3BwOgorCiAyMDE2
LTA4LTE1ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAg
UmVtb3ZlIHVudXNlZCBpbmNsdWRlcyBvZiB3dGYgaGVhZGVycwpJbmRleDogU291cmNlL1dlYktp
dC9jZi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRDRi5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9jZi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRDRi5j
cHAJKHJldmlzaW9uIDIwNzAzNykKKysrIFNvdXJjZS9XZWJLaXQvY2YvV2ViQ29yZVN1cHBvcnQv
V2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw4ICsyNyw4IEBA
CiAvLyBiZWZvcmUgaW5jbHVkaW5nIGFueSBvdGhlciBmaWxlcy4gRmFpbGluZyB0byBpbmNsdWRl
IGNvbmZpZy5oIHdpbGwgbGVhdmUKIC8vIFVTRV9DRiB1bmRlZmluZWQsIGNhdXNpbmcgYnVpbGQg
ZmFpbHVyZXMgaW4gdGhpcwogLy8gZmlsZS4gQnV0IE1hYyBkb2Vzbid0IGhhdmUgYSBjb25maWcu
aCBmb3IgV2ViS2l0LCBzbyB3ZSBjYW4ndCBpbmNsdWRlIHRoZQotLy8gV2luZG93cyBvbmUgaGVy
ZS4gRm9yIG5vdyB3ZSBjYW4ganVzdCBkZWZpbmUgVVNFX0NGIGFuZAotLy8gVVNFX0NGTkVUV09S
SyBtYW51YWxseSwgYnV0IHdlIG5lZWQgYSBiZXR0ZXIgbG9uZy10ZXJtIHNvbHV0aW9uLgorLy8g
V2luZG93cyBvbmUgaGVyZS4gRm9yIG5vdyB3ZSBjYW4ganVzdCBkZWZpbmUgVVNFX0NGIG1hbnVh
bGx5LAorLy8gYnV0IHdlIG5lZWQgYSBiZXR0ZXIgbG9uZy10ZXJtIHNvbHV0aW9uLgogI2lmbmRl
ZiBVU0VfQ0YKICNkZWZpbmUgVVNFX0NGIDEKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9t
YWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwko
cmV2aXNpb24gMjA3MDM3KQorKysgU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTYtMTAtMTAgIEFsZXggQ2hyaXN0ZW5zZW4gIDxh
Y2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZW1vdmUgZGVhZCBuZXR3b3JraW5n
IGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2
MzI2MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
TWlzYy9XZWJEb3dubG9hZC5tbToKKyAgICAgICAgKC1bV2ViRG93bmxvYWQgX2luaXRXaXRoTG9h
ZGluZ0NGVVJMQ29ubmVjdGlvbjpyZXF1ZXN0OnJlc3BvbnNlOmRlbGVnYXRlOnByb3h5Ol0pOiBE
ZWxldGVkLgorICAgICAgICAqIE1pc2MvV2ViRG93bmxvYWRJbnRlcm5hbC5oOgorICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tOgorICAgICAgICAoV2ViRnJh
bWVMb2FkZXJDbGllbnQ6OmNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZCk6CisgICAg
ICAgICogV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbToKKyAgICAgICAgKCtbV2ViUHJlZmVyZW5j
ZXMgX3NldEN1cnJlbnROZXR3b3JrTG9hZGVyU2Vzc2lvbkNvb2tpZUFjY2VwdFBvbGljeTpdKToK
KyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgICgtW1dlYlZpZXcgc2NoZWR1
bGVJblJ1bkxvb3A6Zm9yTW9kZTpdKToKKyAgICAgICAgKC1bV2ViVmlldyB1bnNjaGVkdWxlRnJv
bVJ1bkxvb3A6Zm9yTW9kZTpdKToKKwogMjAxNi0xMC0xMCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBh
cHBsZS5jb20+CiAKICAgICAgICAgTW92ZSBOb3RpZmljYXRpb25DZW50ZXIgZnJvbSBsZWdhY3kg
dG8gbmV3IERPTSBleGNlcHRpb25zCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYkRv
d25sb2FkLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViRG93bmxv
YWQubW0JKHJldmlzaW9uIDIwNzAzNykKKysrIFNvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViRG93
bmxvYWQubW0JKHdvcmtpbmcgY29weSkKQEAgLTQwLDExICs0MCw2IEBACiAKICNpbXBvcnQgIldl
YlR5cGVzSW50ZXJuYWwuaCIKIAotI2lmIFVTRShDRk5FVFdPUkspCi0jaW1wb3J0IDxDRk5ldHdv
cmsvQ0ZOZXR3b3JrLmg+Ci0jaW1wb3J0IDxDRk5ldHdvcmsvQ0ZVUkxDb25uZWN0aW9uLmg+Ci0j
ZW5kaWYKLQogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIEBjbGFzcyBOU1VSTENvbm5lY3Rp
b25EZWxlZ2F0ZVByb3h5OwpAQCAtNjEsMTQgKzU2LDYgQEAgLSAoaWQpX2luaXRXaXRoUmVxdWVz
dDooTlNVUkxSZXF1ZXN0ICopcgogICAgICAgICAgICAgICBkZWxlZ2F0ZTooaWQpZGVsZWdhdGUK
ICAgICAgICAgICAgICBkaXJlY3Rvcnk6KE5TU3RyaW5nICopZGlyZWN0b3J5OwogCi0jaWYgVVNF
KENGTkVUV09SSykKLS0gKGlkKV9pbml0V2l0aExvYWRpbmdDRlVSTENvbm5lY3Rpb246KENGVVJM
Q29ubmVjdGlvblJlZiljb25uZWN0aW9uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXF1ZXN0OihDRlVSTFJlcXVlc3RSZWYpcmVxdWVzdAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByZXNwb25zZTooQ0ZVUkxSZXNwb25zZVJlZilyZXNwb25zZQotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBkZWxlZ2F0ZTooaWQpZGVsZWdhdGUKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcHJveHk6KE5TVVJMQ29ubmVjdGlvbkRlbGVnYXRlUHJveHkgKilwcm94eTsK
LSNlbmRpZgotCiBAZW5kCiAKIEBpbnRlcmZhY2UgV2ViRG93bmxvYWRJbnRlcm5hbCA6IE5TT2Jq
ZWN0IDxOU1VSTERvd25sb2FkRGVsZWdhdGU+CkBAIC0yMzEsMTggKzIxOCw2IEBAIC0gKGlkKV9p
bml0V2l0aExvYWRpbmdDb25uZWN0aW9uOihOU1VSTEMKICAgICByZXR1cm4gW3N1cGVyIF9pbml0
V2l0aExvYWRpbmdDb25uZWN0aW9uOmNvbm5lY3Rpb24gcmVxdWVzdDpyZXF1ZXN0IHJlc3BvbnNl
OnJlc3BvbnNlIGRlbGVnYXRlOl93ZWJJbnRlcm5hbCBwcm94eTpwcm94eV07CiB9CiAKLSNpZiBV
U0UoQ0ZORVRXT1JLKQotLSAoaWQpX2luaXRXaXRoTG9hZGluZ0NGVVJMQ29ubmVjdGlvbjooQ0ZV
UkxDb25uZWN0aW9uUmVmKWNvbm5lY3Rpb24KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJlcXVlc3Q6KENGVVJMUmVxdWVzdFJlZilyZXF1ZXN0Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJlc3BvbnNlOihDRlVSTFJlc3BvbnNlUmVmKXJlc3BvbnNlCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGRlbGVnYXRlOihpZClkZWxlZ2F0ZQotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBwcm94eTooTlNVUkxDb25uZWN0aW9uRGVsZWdhdGVQcm94eSAqKXByb3h5
Ci17Ci0gICAgW3NlbGYgX3NldFJlYWxEZWxlZ2F0ZTpkZWxlZ2F0ZV07Ci0gICAgcmV0dXJuIFtz
dXBlciBfaW5pdFdpdGhMb2FkaW5nQ0ZVUkxDb25uZWN0aW9uOmNvbm5lY3Rpb24gcmVxdWVzdDpy
ZXF1ZXN0IHJlc3BvbnNlOnJlc3BvbnNlIGRlbGVnYXRlOl93ZWJJbnRlcm5hbCBwcm94eTpwcm94
eV07Ci19Ci0jZW5kaWYKLQogLSAoaWQpX2luaXRXaXRoUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICop
cmVxdWVzdAogICAgICAgICAgICAgICBkZWxlZ2F0ZTooaWQpZGVsZWdhdGUKICAgICAgICAgICAg
ICBkaXJlY3Rvcnk6KE5TU3RyaW5nICopZGlyZWN0b3J5CkluZGV4OiBTb3VyY2UvV2ViS2l0L21h
Yy9NaXNjL1dlYkRvd25sb2FkSW50ZXJuYWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L21hYy9NaXNjL1dlYkRvd25sb2FkSW50ZXJuYWwuaAkocmV2aXNpb24gMjA3MDM3KQorKysgU291
cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJEb3dubG9hZEludGVybmFsLmgJKHdvcmtpbmcgY29weSkK
QEAgLTI3LDEwICsyNyw2IEBACiAqLwogIAogI2ltcG9ydCA8V2ViS2l0TGVnYWN5L1dlYkRvd25s
b2FkLmg+Ci0KLSNpZiBVU0UoQ0ZORVRXT1JLKQotI2ltcG9ydCA8Q0ZOZXR3b3JrL0NGVVJMQ29u
bmVjdGlvbi5oPgotI2VuZGlmCiAgCiBAaW50ZXJmYWNlIFdlYkRvd25sb2FkIChXZWJEb3dubG9h
ZENyZWF0aW9uKQogKyhpZClfZG93bmxvYWRXaXRoTG9hZGluZ0Nvbm5lY3Rpb246KE5TVVJMQ29u
bmVjdGlvbiAqKWNvbm5lY3Rpb24KQEAgLTQzLDEyICszOSw0IEBAIEBpbnRlcmZhY2UgV2ViRG93
bmxvYWQgKFdlYkRvd25sb2FkQ3JlYXQKICAgICAgICAgICAgICAgICAgZGVsZWdhdGU6KGlkKWRl
bGVnYXRlCiAgICAgICAgICAgICAgICAgZGlyZWN0b3J5OihOU1N0cmluZyAqKWRpcmVjdG9yeTsK
IAotI2lmIFVTRShDRk5FVFdPUkspCi0rIChpZClfZG93bmxvYWRXaXRoTG9hZGluZ0NGVVJMQ29u
bmVjdGlvbjooQ0ZVUkxDb25uZWN0aW9uUmVmKWNvbm5lY3Rpb24KLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXF1ZXN0OihDRlVSTFJlcXVlc3RSZWYpcmVxdWVzdAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2U6KENGVVJMUmVzcG9uc2VSZWYpcmVz
cG9uc2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGVnYXRlOihpZClkZWxl
Z2F0ZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJveHk6KGlkKXByb3h5
OwotI2VuZGlmCi0KIEBlbmQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCShyZXZpc2lvbiAyMDcwMzcp
CisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5tbQkod29ya2luZyBjb3B5KQpAQCAtMzA0LDEzICszMDQsNyBAQCB2b2lkIFdlYkZyYW1lTG9h
ZGVyQ2xpZW50Ojpjb252ZXJ0TWFpblJlCiAKICAgICBSZXNvdXJjZUhhbmRsZSogaGFuZGxlID0g
bWFpblJlc291cmNlTG9hZGVyLT5oYW5kbGUoKTsKIAotI2lmIFVTRShDRk5FVFdPUkspCi0gICAg
QVNTRVJUKFtXZWJEb3dubG9hZCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF9kb3dubG9h
ZFdpdGhMb2FkaW5nQ0ZVUkxDb25uZWN0aW9uOnJlcXVlc3Q6cmVzcG9uc2U6ZGVsZWdhdGU6cHJv
eHk6KV0pOwotICAgIGF1dG8gY29ubmVjdGlvbiA9IGhhbmRsZS0+cmVsZWFzZUNvbm5lY3Rpb25G
b3JEb3dubG9hZCgpOwotICAgIFtXZWJEb3dubG9hZCBfZG93bmxvYWRXaXRoTG9hZGluZ0NGVVJM
Q29ubmVjdGlvbjpjb25uZWN0aW9uLmdldCgpIHJlcXVlc3Q6cmVxdWVzdC5jZlVSTFJlcXVlc3Qo
VXBkYXRlSFRUUEJvZHkpIHJlc3BvbnNlOnJlc3BvbnNlLmNmVVJMUmVzcG9uc2UoKSBkZWxlZ2F0
ZTpbd2ViVmlldyBkb3dubG9hZERlbGVnYXRlXSBwcm94eTpuaWxdOwotI2Vsc2UKICAgICBbV2Vi
RG93bmxvYWQgX2Rvd25sb2FkV2l0aExvYWRpbmdDb25uZWN0aW9uOmhhbmRsZS0+Y29ubmVjdGlv
bigpIHJlcXVlc3Q6cmVxdWVzdC5uc1VSTFJlcXVlc3QoVXBkYXRlSFRUUEJvZHkpIHJlc3BvbnNl
OnJlc3BvbnNlLm5zVVJMUmVzcG9uc2UoKSBkZWxlZ2F0ZTpbd2ViVmlldyBkb3dubG9hZERlbGVn
YXRlXSBwcm94eTpuaWxdOwotI2VuZGlmCiB9CiAKIGJvb2wgV2ViRnJhbWVMb2FkZXJDbGllbnQ6
OmRpc3BhdGNoRGlkTG9hZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlKERvY3VtZW50TG9hZGVyKiBs
b2FkZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVzcG9uc2UsIGludCBsZW5ndGgpCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJW
aWV3L1dlYlByZWZlcmVuY2VzLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViUHJlZmVyZW5jZXMubW0JKHJldmlzaW9uIDIwNzAzNykKKysrIFNvdXJjZS9XZWJL
aXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW0JKHdvcmtpbmcgY29weSkKQEAgLTE4MDAs
NyArMTgwMCw3IEBAICsgKHZvaWQpX2NsZWFyTmV0d29ya0xvYWRlclNlc3Npb24KICsgKHZvaWQp
X3NldEN1cnJlbnROZXR3b3JrTG9hZGVyU2Vzc2lvbkNvb2tpZUFjY2VwdFBvbGljeTooTlNIVFRQ
Q29va2llQWNjZXB0UG9saWN5KXBvbGljeQogewogICAgIFJldGFpblB0cjxDRkhUVFBDb29raWVT
dG9yYWdlUmVmPiBjb29raWVTdG9yYWdlID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0
U3RvcmFnZVNlc3Npb24oKS5jb29raWVTdG9yYWdlKCk7Ci0gICAgQVNTRVJUKGNvb2tpZVN0b3Jh
Z2UpOyAvLyBXaWxsIGZhaWwgd2hlbiBidWlsZGluZyB3aXRob3V0IFVTRShDRk5FVFdPUkspIGFu
ZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN3aXRjaFRvTmV3VGVzdGluZ1Nlc3Npb24oKSB3YXMg
bm90IGNhbGxlZCBiZWZvcmVoYW5kLgorICAgIEFTU0VSVChjb29raWVTdG9yYWdlKTsgLy8gV2ls
bCBmYWlsIHdoZW4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzd2l0Y2hUb05ld1Rlc3RpbmdTZXNz
aW9uKCkgd2FzIG5vdCBjYWxsZWQgYmVmb3JlaGFuZC4KICAgICBDRkhUVFBDb29raWVTdG9yYWdl
U2V0Q29va2llQWNjZXB0UG9saWN5KGNvb2tpZVN0b3JhZ2UuZ2V0KCksIHBvbGljeSk7CiB9CiAK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHJldmlzaW9uIDIwNzAzNykK
KysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQkod29ya2luZyBjb3B5KQpA
QCAtNjc3OSwyNCArNjc3OSwxNCBAQCAtIChpZCljYW5kaWRhdGVMaXN0CiAKIC0gKHZvaWQpc2No
ZWR1bGVJblJ1bkxvb3A6KE5TUnVuTG9vcCAqKXJ1bkxvb3AgZm9yTW9kZTooTlNTdHJpbmcgKilt
b2RlCiB7Ci0jaWYgVVNFKENGTkVUV09SSykKLSAgICBDRlJ1bkxvb3BSZWYgc2NoZWR1bGVQYWly
UnVuTG9vcCA9IFtydW5Mb29wIGdldENGUnVuTG9vcF07Ci0jZWxzZQotICAgIE5TUnVuTG9vcCAq
c2NoZWR1bGVQYWlyUnVuTG9vcCA9IHJ1bkxvb3A7Ci0jZW5kaWYKICAgICBpZiAocnVuTG9vcCAm
JiBtb2RlKQotICAgICAgICBjb3JlKHNlbGYpLT5hZGRTY2hlZHVsZVBhaXIoU2NoZWR1bGVQYWly
OjpjcmVhdGUoc2NoZWR1bGVQYWlyUnVuTG9vcCwgKENGU3RyaW5nUmVmKW1vZGUpKTsKKyAgICAg
ICAgY29yZShzZWxmKS0+YWRkU2NoZWR1bGVQYWlyKFNjaGVkdWxlUGFpcjo6Y3JlYXRlKHJ1bkxv
b3AsIChDRlN0cmluZ1JlZiltb2RlKSk7CiB9CiAKIC0gKHZvaWQpdW5zY2hlZHVsZUZyb21SdW5M
b29wOihOU1J1bkxvb3AgKilydW5Mb29wIGZvck1vZGU6KE5TU3RyaW5nICopbW9kZQogewotI2lm
IFVTRShDRk5FVFdPUkspCi0gICAgQ0ZSdW5Mb29wUmVmIHNjaGVkdWxlUGFpclJ1bkxvb3AgPSBb
cnVuTG9vcCBnZXRDRlJ1bkxvb3BdOwotI2Vsc2UKLSAgICBOU1J1bkxvb3AgKnNjaGVkdWxlUGFp
clJ1bkxvb3AgPSBydW5Mb29wOwotI2VuZGlmCiAgICAgaWYgKHJ1bkxvb3AgJiYgbW9kZSkKLSAg
ICAgICAgY29yZShzZWxmKS0+cmVtb3ZlU2NoZWR1bGVQYWlyKFNjaGVkdWxlUGFpcjo6Y3JlYXRl
KHNjaGVkdWxlUGFpclJ1bkxvb3AsIChDRlN0cmluZ1JlZiltb2RlKSk7CisgICAgICAgIGNvcmUo
c2VsZiktPnJlbW92ZVNjaGVkdWxlUGFpcihTY2hlZHVsZVBhaXI6OmNyZWF0ZShydW5Mb29wLCAo
Q0ZTdHJpbmdSZWYpbW9kZSkpOwogfQogCiBzdGF0aWMgQk9PTCBmaW5kU3RyaW5nKE5TVmlldyA8
V2ViRG9jdW1lbnRTZWFyY2hpbmc+ICpzZWFyY2hWaWV3LCBOU1N0cmluZyAqc3RyaW5nLCBXZWJG
aW5kT3B0aW9ucyBvcHRpb25zKQpJbmRleDogU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwkocmV2aXNpb24gMjA3MDM3
KQorKysgU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMzYgQEAKKzIwMTYtMTAtMTAgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Vi
a2l0Lm9yZz4KKworICAgICAgICBSZW1vdmUgZGVhZCBuZXR3b3JraW5nIGNvZGUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzI2MworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogRGVmYXVsdERvd25sb2Fk
RGVsZWdhdGUuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5jcHA6CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6c2F2ZVBsYXRmb3JtRGF0YVRv
Q2FjaGVkRnJhbWUpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTmV0d29ya2lu
Z0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJl
UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbik6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVOZXR3b3JraW5nQ29udGV4dC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRm
b3JtU3RyYXRlZ2llcy5jcHA6CisgICAgICAgICogV2ViRG93bmxvYWQuaDoKKyAgICAgICAgKiBX
ZWJFcnJvci5jcHA6CisgICAgICAgIChXZWJFcnJvcjo6bG9jYWxpemVkRGVzY3JpcHRpb24pOgor
ICAgICAgICAoV2ViRXJyb3I6OnNzbFBlZXJDZXJ0aWZpY2F0ZSk6CisgICAgICAgICogV2ViRXJy
b3IuaDoKKyAgICAgICAgKiBXZWJNdXRhYmxlVVJMUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJN
dXRhYmxlVVJMUmVxdWVzdDo6bXV0YWJsZUNvcHkpOgorICAgICAgICAqIFdlYlVSTEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlLmNwcDoKKyAgICAgICAgKFdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlOjppbml0V2l0aFByb3RlY3Rpb25TcGFjZSk6CisgICAgICAgIChXZWJVUkxBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZTo6aW5pdFdpdGhBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6CisgICAgICAg
ICogV2ViVVJMUmVzcG9uc2UuY3BwOgorICAgICAgICAoV2ViVVJMUmVzcG9uc2U6OnNzbFBlZXJD
ZXJ0aWZpY2F0ZSk6CisgICAgICAgICogV2ViVVJMUmVzcG9uc2UuaDoKKyAgICAgICAgKiBXZWJW
aWV3LmNwcDoKKyAgICAgICAgKFdlYlZpZXc6OnNldENhY2hlTW9kZWwpOgorICAgICAgICAoV2Vi
Vmlldzo6Y2FuSGFuZGxlUmVxdWVzdCk6CisgICAgICAgIChXZWJWaWV3Ojpub3RpZnlQcmVmZXJl
bmNlc0NoYW5nZWQpOgorICAgICAgICAodXBkYXRlU2hhcmVkU2V0dGluZ3NGcm9tUHJlZmVyZW5j
ZXNJZk5lZWRlZCk6CisKIDIwMTYtMTAtMDkgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBh
cHBsZS5jb20+CiAKICAgICAgICAgU3VwcG9ydCBJbnB1dEV2ZW50LmlucHV0VHlwZSBmb3IgdGhl
IG5ldyBJbnB1dEV2ZW50IHNwZWMKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL0RlZmF1bHREb3du
bG9hZERlbGVnYXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vRGVmYXVsdERv
d25sb2FkRGVsZWdhdGUuaAkocmV2aXNpb24gMjA3MDM3KQorKysgU291cmNlL1dlYktpdC93aW4v
RGVmYXVsdERvd25sb2FkRGVsZWdhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNyBA
QAogI2luY2x1ZGUgIldlYktpdC5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAKLSNpZiBV
U0UoQ0ZORVRXT1JLKQorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAjaW5jbHVkZSA8Q0ZOZXR3
b3JrL0NGVVJMRG93bmxvYWRQcml2Lmg+CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYktpdC93
aW4vV2ViRG93bmxvYWQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJEb3du
bG9hZC5oCShyZXZpc2lvbiAyMDcwMzcpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJEb3dubG9h
ZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMywxNSArMjMsMTQgQEAKICAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAog
ICovCiAKLSNpZm5kZWYgV2ViRG93bmxvYWRfaAotI2RlZmluZSBXZWJEb3dubG9hZF9oCisjcHJh
Z21hIG9uY2UKIAogI2luY2x1ZGUgIldlYktpdC5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ09NUHRy
Lmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgogCi0jaWYgVVNFKENGTkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQog
I2luY2x1ZGUgPENGTmV0d29yay9DRlVSTERvd25sb2FkUHJpdi5oPgogI2VsaWYgVVNFKENVUkwp
CiAjaW5jbHVkZSA8V2ViQ29yZS9DdXJsRG93bmxvYWQuaD4KQEAgLTg0LDcgKzgzLDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBjb250aW51ZVdpdGhv
dXRDcmVkZW50aWFsRm9yQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoX0luX29wdF8gSVdlYlVSTEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKik7CiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIHVzZUNyZWRlbnRpYWwoX0luX29wdF8gSVdlYlVSTENyZWRlbnRpYWwqLCBfSW5fb3B0
XyBJV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UqKTsKIAotI2lmIFVTRShDRk5FVFdPUksp
CisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKICAgICAvLyBDRlVSTERvd25sb2FkIENhbGxiYWNr
cwogICAgIHZvaWQgZGlkU3RhcnQoKTsKICAgICBDRlVSTFJlcXVlc3RSZWYgd2lsbFNlbmRSZXF1
ZXN0KENGVVJMUmVxdWVzdFJlZiwgQ0ZVUkxSZXNwb25zZVJlZik7CkBAIC0xMDksNyArMTA4LDcg
QEAgcHJvdGVjdGVkOgogCiAgICAgV1RGOjpTdHJpbmcgbV9kZXN0aW5hdGlvbjsKICAgICBXVEY6
OlN0cmluZyBtX2J1bmRsZVBhdGg7Ci0jaWYgVVNFKENGTkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxD
T05ORUNUSU9OKQogICAgIFJldGFpblB0cjxDRlVSTERvd25sb2FkUmVmPiBtX2Rvd25sb2FkOwog
I2VsaWYgVVNFKENVUkwpCiAgICAgUmVmUHRyPFdlYkNvcmU6OkN1cmxEb3dubG9hZD4gbV9kb3du
bG9hZDsKQEAgLTEyMyw2ICsxMjIsMyBAQCBwcm90ZWN0ZWQ6CiAgICAgaW50IG1fcmVjZWl2ZWQ7
CiAjZW5kaWYKIH07Ci0KLQotI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJFcnJv
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViRXJyb3IuY3BwCShyZXZp
c2lvbiAyMDcwMzcpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJFcnJvci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTMzLDcgKzMzLDcgQEAKICNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ29yZUdyYXBo
aWNzLmg+CiAjZW5kaWYKIAotI2lmIFVTRShDRk5FVFdPUkspCisjaWYgVVNFKENGVVJMQ09OTkVD
VElPTikKICNpbmNsdWRlIDxXZWJLaXRTeXN0ZW1JbnRlcmZhY2UvV2ViS2l0U3lzdGVtSW50ZXJm
YWNlLmg+CiAjZW5kaWYKIApAQCAtMTM1LDcgKzEzNSw3IEBAIEhSRVNVTFQgV2ViRXJyb3I6Omxv
Y2FsaXplZERlc2NyaXB0aW9uKF8KIAogICAgICpyZXN1bHQgPSBCU3RyaW5nKG1fZXJyb3IubG9j
YWxpemVkRGVzY3JpcHRpb24oKSkucmVsZWFzZSgpOwogCi0jaWYgVVNFKENGTkVUV09SSykKKyNp
ZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogICAgIGlmICghKnJlc3VsdCkgewogICAgICAgICBpZiAo
aW50IGNvZGUgPSBtX2Vycm9yLmVycm9yQ29kZSgpKQogICAgICAgICAgICAgKnJlc3VsdCA9IEJT
dHJpbmcod2tDRk5ldHdvcmtFcnJvckdldExvY2FsaXplZERlc2NyaXB0aW9uKGNvZGUpKS5yZWxl
YXNlKCk7CkBAIC0yMTksNyArMjE5LDcgQEAgSFJFU1VMVCBXZWJFcnJvcjo6c3NsUGVlckNlcnRp
ZmljYXRlKF9PdQogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwogICAgICpyZXN1bHQgPSAwOwog
Ci0jaWYgVVNFKENGTkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogICAgIGlmICgh
bV9jZkVycm9yVXNlckluZm9EaWN0KSB7CiAgICAgICAgIC8vIGNvcHkgdXNlcmluZm8gZnJvbSBD
RkVycm9yUmVmCiAgICAgICAgIENGRXJyb3JSZWYgY2ZFcnJvciA9IG1fZXJyb3I7CkluZGV4OiBT
b3VyY2UvV2ViS2l0L3dpbi9XZWJFcnJvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
d2luL1dlYkVycm9yLmgJKHJldmlzaW9uIDIwNzAzNykKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dl
YkVycm9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDggKzIzLDcgQEAKICAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAogICovCiAKLSNpZm5kZWYgV2ViRXJyb3JfaAotI2RlZmluZSBXZWJFcnJvcl9oCisjcHJhZ21h
IG9uY2UKIAogI2luY2x1ZGUgIldlYktpdC5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ09NUHRyLmg+
CkBAIC02NiwxMCArNjUsOCBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFVMT05HIG1fcmVmQ291
bnQgeyAwIH07CiAgICAgQ09NUHRyPElQcm9wZXJ0eUJhZz4gbV91c2VySW5mbzsKLSNpZiBVU0Uo
Q0ZORVRXT1JLKQorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAgICAgUmV0YWluUHRyPENGRGlj
dGlvbmFyeVJlZj4gbV9jZkVycm9yVXNlckluZm9EaWN0OwogI2VuZGlmCiAgICAgV2ViQ29yZTo6
UmVzb3VyY2VFcnJvciBtX2Vycm9yOwogfTsKLQotI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0
L3dpbi9XZWJNdXRhYmxlVVJMUmVxdWVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC93aW4vV2ViTXV0YWJsZVVSTFJlcXVlc3QuY3BwCShyZXZpc2lvbiAyMDcwMzcpCisrKyBTb3Vy
Y2UvV2ViS2l0L3dpbi9XZWJNdXRhYmxlVVJMUmVxdWVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQwLDcgKzQwLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0NlcnRpZmljYXRlQ0ZXaW4uaD4KICNl
bmRpZgogCi0jaWYgVVNFKENGTkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogI2lu
Y2x1ZGUgPENGTmV0d29yay9DRlVSTFJlcXVlc3RQcml2Lmg+CiAjZW5kaWYKIApAQCAtMzgyLDcg
KzM4Miw3IEBAIEhSRVNVTFQgV2ViTXV0YWJsZVVSTFJlcXVlc3Q6Om11dGFibGVDb3AKICAgICBp
ZiAoIXJlc3VsdCkKICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKIAotI2lmIFVTRShDRk5FVFdP
UkspCisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKICAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlVVJM
UmVxdWVzdFJlZj4gbXV0YWJsZVJlcXVlc3QgPSBhZG9wdENGKENGVVJMUmVxdWVzdENyZWF0ZU11
dGFibGVDb3B5KGtDRkFsbG9jYXRvckRlZmF1bHQsIG1fcmVxdWVzdC5jZlVSTFJlcXVlc3QoVXBk
YXRlSFRUUEJvZHkpKSk7CiAgICAgKnJlc3VsdCA9IGNyZWF0ZUluc3RhbmNlKFJlc291cmNlUmVx
dWVzdChtdXRhYmxlUmVxdWVzdC5nZXQoKSkpOwogICAgIHJldHVybiBTX09LOwpJbmRleDogU291
cmNlL1dlYktpdC93aW4vV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmNw
cAkocmV2aXNpb24gMjA3MDM3KQorKysgU291cmNlL1dlYktpdC93aW4vV2ViVVJMQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDEsNyArMTQxLDcgQEAgSFJF
U1VMVCBXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTo6aQogCiAgICAgLy8gRklYTUU6IEFm
dGVyIHdlIGNoYW5nZSBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSB0byB1c2UgIlJlc291cmNlSGFu
ZGxlIiBhcyB0aGUgYWJzdHJhY3QgIlNlbmRlciIgb3IgIlNvdXJjZSBvZiB0aGlzIEF1dGggQ2hh
bGxlbmdlIiwgdGhlbiB3ZSdsbAogICAgIC8vIGNvbnN0cnVjdCB0aGUgQXV0aGVudGljYXRpb25D
aGFsbGVuZ2Ugd2l0aCB0aGF0IGFzIG9idGFpbmVkIGZyb20gdGhlIHdlYlNlbmRlcgotI2lmIFVT
RShDRk5FVFdPUkspCisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKICAgICBtX2F1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlID0gQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uod2ViU3BhY2UtPnByb3RlY3Rp
b25TcGFjZSgpLCB3ZWJDcmVkZW50aWFsLT5jcmVkZW50aWFsKCksCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBwcmV2aW91c0ZhaWx1cmVDb3VudCwgd2ViUmVzcG9uc2UtPnJl
c291cmNlUmVzcG9uc2UoKSwgd2ViRXJyb3ItPnJlc291cmNlRXJyb3IoKSk7CiAjZW5kaWYKQEAg
LTE2Miw3ICsxNjIsNyBAQCBIUkVTVUxUIFdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjpp
CiAgICAgaWYgKCF3ZWJTZW5kZXIpCiAgICAgICAgIHJldHVybiBFX05PSU5URVJGQUNFOwogCi0j
aWYgVVNFKENGTkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogICAgIG1fYXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UgPSBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSh3ZWJDaGFsbGVuZ2Ut
PmF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCkuY2ZVUkxBdXRoQ2hhbGxlbmdlUmVmKCksIHdlYlNl
bmRlci0+YXV0aGVudGljYXRpb25DbGllbnQoKSk7CiAKICAgICByZXR1cm4gU19PSzsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvd2luL1dlYlVSTFJlc3BvbnNlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L3dpbi9XZWJVUkxSZXNwb25zZS5jcHAJKHJldmlzaW9uIDIwNzAzNykKKysrIFNv
dXJjZS9XZWJLaXQvd2luL1dlYlVSTFJlc3BvbnNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUs
NyArMzUsNyBAQAogI2luY2x1ZGUgPENvcmVHcmFwaGljcy9Db3JlR3JhcGhpY3MuaD4KICNlbmRp
ZgogCi0jaWYgVVNFKENGTkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogI2luY2x1
ZGUgPFdlYktpdFN5c3RlbUludGVyZmFjZS9XZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaD4KICNlbmRp
ZgogCkBAIC00MDYsNyArNDA2LDcgQEAgSFJFU1VMVCBXZWJVUkxSZXNwb25zZTo6c3NsUGVlckNl
cnRpZmljYQogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwogICAgICpyZXN1bHQgPSAwOwogCi0j
aWYgVVNFKENGTkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogICAgIENGRGljdGlv
bmFyeVJlZiBkaWN0ID0gY2VydGlmaWNhdGVEaWN0aW9uYXJ5KCk7CiAgICAgaWYgKCFkaWN0KQog
ICAgICAgICByZXR1cm4gRV9GQUlMOwpAQCAtNDc1LDcgKzQ3NSw3IEBAIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIFdlYlVSTFJlc3BvbnNlOjoKICAgICByZXR1cm4gbV9yZXNwb25zZTsKIH0KIAot
I2lmIFVTRShDRk5FVFdPUkspCisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKIENGRGljdGlvbmFy
eVJlZiBXZWJVUkxSZXNwb25zZTo6Y2VydGlmaWNhdGVEaWN0aW9uYXJ5KCkgY29uc3QKIHsKICAg
ICBpZiAobV9TU0xDZXJ0aWZpY2F0ZUluZm8pCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJV
UkxSZXNwb25zZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYlVSTFJlc3Bv
bnNlLmgJKHJldmlzaW9uIDIwNzAzNykKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYlVSTFJlc3Bv
bnNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDggKzIzLDcgQEAKICAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAog
ICovCiAKLSNpZm5kZWYgV2ViVVJMUmVzcG9uc2VfSAotI2RlZmluZSBXZWJVUkxSZXNwb25zZV9I
CisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIldlYktpdC5oIgogI2luY2x1ZGUgPFdlYkNvcmUv
UmVzb3VyY2VSZXNwb25zZS5oPgpAQCAtNjYsNyArNjUsNyBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6
CiAgICAgSFJFU1VMVCBzdWdnZXN0ZWRGaWxlRXh0ZW5zaW9uKEJTVFIqIHJlc3VsdCk7CiAKLSNp
ZiBVU0UoQ0ZORVRXT1JLKQorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAgICAgQ0ZEaWN0aW9u
YXJ5UmVmIGNlcnRpZmljYXRlRGljdGlvbmFyeSgpIGNvbnN0OwogI2VuZGlmCiAKQEAgLTc0LDkg
KzczLDcgQEAgcHJvdGVjdGVkOgogICAgIFVMT05HIG1fcmVmQ291bnQgeyAwIH07CiAgICAgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSBtX3Jlc3BvbnNlOwogCi0jaWYgVVNFKENGTkVUV09SSykK
KyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogICAgIG11dGFibGUgUmV0YWluUHRyPENGRGljdGlv
bmFyeVJlZj4gbV9TU0xDZXJ0aWZpY2F0ZUluZm87ICAgIC8vIHRoaXMgZW5zdXJlcyBjZXJ0aWZp
Y2F0ZSBjb250ZXh0cyBhcmUgdmFsaWQgZm9yIHRoZSBsaWZldGltZSBvZiB0aGlzIFdlYlVSTFJl
c3BvbnNlLgogI2VuZGlmCiB9OwotCi0jZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dl
YlZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCShy
ZXZpc2lvbiAyMDcwMzcpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTc4LDcgKzE3OCw3IEBACiAjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ29y
ZUZvdW5kYXRpb24uaD4KICNlbmRpZgogCi0jaWYgVVNFKENGTkVUV09SSykKKyNpZiBVU0UoQ0ZV
UkxDT05ORUNUSU9OKQogI2luY2x1ZGUgPENGTmV0d29yay9DRlVSTENhY2hlUHJpdi5oPgogI2lu
Y2x1ZGUgPENGTmV0d29yay9DRlVSTFByb3RvY29sUHJpdi5oPgogI2luY2x1ZGUgPFdlYktpdFN5
c3RlbUludGVyZmFjZS9XZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaD4KQEAgLTQ5Nyw3ICs0OTcsNyBA
QCB2b2lkIFdlYlZpZXc6OnNldENhY2hlTW9kZWwoV2ViQ2FjaGVNb2RlCiAKICAgICBTdHJpbmcg
Y2FjaGVEaXJlY3Rvcnk7CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQorI2lmIFVTRShDRlVSTENPTk5F
Q1RJT04pCiAgICAgUmV0YWluUHRyPENGVVJMQ2FjaGVSZWY+IGNmdXJsQ2FjaGUgPSBhZG9wdENG
KENGVVJMQ2FjaGVDb3B5U2hhcmVkVVJMQ2FjaGUoKSk7CiAgICAgUmV0YWluUHRyPENGU3RyaW5n
UmVmPiBjZnVybENhY2hlRGlyZWN0b3J5ID0gYWRvcHRDRih3a0NvcHlGb3VuZGF0aW9uQ2FjaGVE
aXJlY3RvcnkoMCkpOwogICAgIGlmICghY2Z1cmxDYWNoZURpcmVjdG9yeSkgewpAQCAtNTUxLDcg
KzU1MSw3IEBAIHZvaWQgV2ViVmlldzo6c2V0Q2FjaGVNb2RlbChXZWJDYWNoZU1vZGUKICAgICAg
ICAgLy8gTWVtb3J5IGNhY2hlIGNhcGFjaXR5IChpbiBieXRlcykKICAgICAgICAgY2FjaGVNZW1v
cnlDYXBhY2l0eSA9IDA7CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQorI2lmIFVTRShDRlVSTENPTk5F
Q1RJT04pCiAgICAgICAgIC8vIEZvdW5kYXRpb24gZGlzayBjYWNoZSBjYXBhY2l0eSAoaW4gYnl0
ZXMpCiAgICAgICAgIGNhY2hlRGlza0NhcGFjaXR5ID0gQ0ZVUkxDYWNoZURpc2tDYXBhY2l0eShj
ZnVybENhY2hlLmdldCgpKTsKICNlbmRpZgpAQCAtNjc1LDcgKzY3NSw3IEBAIHZvaWQgV2ViVmll
dzo6c2V0Q2FjaGVNb2RlbChXZWJDYWNoZU1vZGUKICAgICBtZW1vcnlDYWNoZS5zZXREZWFkRGVj
b2RlZERhdGFEZWxldGlvbkludGVydmFsKGRlYWREZWNvZGVkRGF0YURlbGV0aW9uSW50ZXJ2YWwp
OwogICAgIFBhZ2VDYWNoZTo6c2luZ2xldG9uKCkuc2V0TWF4U2l6ZShwYWdlQ2FjaGVTaXplKTsK
IAotI2lmIFVTRShDRk5FVFdPUkspCisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKICAgICAvLyBE
b24ndCBzaHJpbmsgYSBiaWcgZGlzayBjYWNoZSwgc2luY2UgdGhhdCB3b3VsZCBjYXVzZSBjaHVy
bi4KICAgICBjYWNoZURpc2tDYXBhY2l0eSA9IG1heChjYWNoZURpc2tDYXBhY2l0eSwgQ0ZVUkxD
YWNoZURpc2tDYXBhY2l0eShjZnVybENhY2hlLmdldCgpKSk7CiAKQEAgLTE1NDcsNyArMTU0Nyw3
IEBAIHZvaWQgV2ViVmlldzo6Y2xvc2VXaW5kb3coKQogCiBib29sIFdlYlZpZXc6OmNhbkhhbmRs
ZVJlcXVlc3QoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewotI2lm
IFVTRShDRk5FVFdPUkspCisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKICAgICAvLyBPbiB0aGUg
TWFjIHRoZXJlJ3MgYW4gYWJvdXQgVVJMIHByb3RvY29sIGltcGxlbWVudGF0aW9uIGJ1dCBXaW5k
b3dzIENGTmV0d29yayBkb2Vzbid0IGhhdmUgdGhhdC4KICAgICBpZiAocmVxdWVzdC51cmwoKS5w
cm90b2NvbElzKCJhYm91dCIpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTUyNjEsNyArNTI2
MSw3IEBAIEhSRVNVTFQgV2ViVmlldzo6bm90aWZ5UHJlZmVyZW5jZXNDaGFuZ2UKICAgICBociA9
IHByZWZlcmVuY2VzLT5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCZlbmFibGVkKTsKICAgICBpZiAo
RkFJTEVEKGhyKSkKICAgICAgICAgcmV0dXJuIGhyOwotI2lmIFBMQVRGT1JNKFdJTikgfHwgVVNF
KENGTkVUV09SSykKKyNpZiBQTEFURk9STShXSU4pIHx8IFVTRShDRlVSTENPTk5FQ1RJT04pCiAg
ICAgaWYgKGVuYWJsZWQpCiAgICAgICAgIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmVuc3Vy
ZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKTsKICAgICBlbHNlCkBAIC01NTYwLDcgKzU1NjAsNyBA
QCBIUkVTVUxUIHVwZGF0ZVNoYXJlZFNldHRpbmdzRnJvbVByZWZlcmVuCiAgICAgaWYgKEZBSUxF
RChocikpCiAgICAgICAgIHJldHVybiBocjsKIAotI2lmIFVTRShDRk5FVFdPUkspCisjaWYgVVNF
KENGVVJMQ09OTkVDVElPTikKICAgICBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpzZXRDb29r
aWVBY2NlcHRQb2xpY3lGb3JBbGxDb250ZXh0cyhhY2NlcHRQb2xpY3kpOwogI2VuZGlmCiAKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5jcHAJKHJldmlzaW9uIDIwNzAzNykKKysrIFNvdXJjZS9XZWJLaXQv
d2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtOTc0LDcgKzk3NCw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNldFRpdGxl
KGNvbnMKIAogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6c2F2ZVBsYXRmb3JtRGF0YVRvQ2Fj
aGVkRnJhbWUoQ2FjaGVkRnJhbWUqIGNhY2hlZEZyYW1lKQogewotI2lmIFVTRShDRk5FVFdPUksp
CisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKICAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZSht
X3dlYkZyYW1lKTsKICAgICBpZiAoIWNvcmVGcmFtZSkKICAgICAgICAgcmV0dXJuOwpJbmRleDog
U291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVOZXR3b3JraW5nQ29udGV4dC5jcHAJKHJldmlzaW9uIDIwNzAzNykKKysrIFNvdXJjZS9X
ZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9TZXR0aW5n
cy5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCi0jaWYgVVNFKENGTkVUV09S
SykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogI2luY2x1ZGUgPENGTmV0d29yay9DRkhUVFBD
b29raWVzUHJpdi5oPgogI2luY2x1ZGUgPFdlYktpdFN5c3RlbUludGVyZmFjZS9XZWJLaXRTeXN0
ZW1JbnRlcmZhY2UuaD4KICNlbmRpZgpAQCAtNDcsNyArNDcsNyBAQCBzdGF0aWMgU3RyaW5nJiBp
ZGVudGlmaWVyQmFzZSgpCiAgICAgcmV0dXJuIGJhc2U7CiB9CiAKLSNpZiBVU0UoQ0ZORVRXT1JL
KQorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiB2b2lkIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRl
eHQ6OnNldENvb2tpZUFjY2VwdFBvbGljeUZvckFsbENvbnRleHRzKFdlYktpdENvb2tpZVN0b3Jh
Z2VBY2NlcHRQb2xpY3kgcG9saWN5KQogewogICAgIGlmIChSZXRhaW5QdHI8Q0ZIVFRQQ29va2ll
U3RvcmFnZVJlZj4gY29va2llU3RvcmFnZSA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVs
dFN0b3JhZ2VTZXNzaW9uKCkuY29va2llU3RvcmFnZSgpKQpAQCAtNjcsNyArNjcsNyBAQCB2b2lk
IFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OnNldFByaXZhCiAKIE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiYgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vz
c2lvbigpCiB7Ci0jaWYgVVNFKENGTkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQog
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKICAgICBpZiAoYXV0byBwcml2YXRlU2Vzc2lv
biA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oU2Vzc2lvbklEOjpsZWdh
Y3lQcml2YXRlU2Vzc2lvbklEKCkpKQpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaAkocmV2
aXNpb24gMjA3MDM3KQorKysgU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVOZXR3b3JraW5nQ29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMiw4ICsyMiw3IEBACiAg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8K
LSNpZm5kZWYgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dF9oCi0jZGVmaW5lIFdlYkZyYW1lTmV0
d29ya2luZ0NvbnRleHRfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1l
TmV0d29ya2luZ0NvbnRleHQuaD4KIApAQCAtMzQsNyArMzMsNyBAQCBwdWJsaWM6CiAgICAgICAg
IHJldHVybiBhZG9wdFJlZihuZXcgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dChmcmFtZSkpOwog
ICAgIH0KIAotI2lmIFVTRShDRk5FVFdPUkspCisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKICAg
ICBzdGF0aWMgdm9pZCBzZXRDb29raWVBY2NlcHRQb2xpY3lGb3JBbGxDb250ZXh0cyhXZWJLaXRD
b29raWVTdG9yYWdlQWNjZXB0UG9saWN5KTsKICNlbmRpZgogICAgIHN0YXRpYyB2b2lkIHNldFBy
aXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uSWRlbnRpZmllckJhc2UoY29uc3QgU3RyaW5nJik7
CkBAIC01MCw1ICs0OSwzIEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBi
bG9ja2VkRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JikgY29uc3Qgb3ZlcnJp
ZGU7CiAgICAgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzdG9yYWdlU2Vzc2lvbigp
IGNvbnN0IG92ZXJyaWRlOwogfTsKLQotI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9X
ZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAJ
KHJldmlzaW9uIDIwNzAzNykKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dl
YlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDcgQEAK
ICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VHcm91cC5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1Db29raWVKYXIuaD4KLSNpZiBVU0UoQ0ZORVRX
T1JLKQorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAjaW5jbHVkZSA8V2ViS2l0U3lzdGVtSW50
ZXJmYWNlL1dlYktpdFN5c3RlbUludGVyZmFjZS5oPgogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9j
bWFrZS9PcHRpb25zQXBwbGVXaW4uY21ha2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL2NtYWtlL09w
dGlvbnNBcHBsZVdpbi5jbWFrZQkocmV2aXNpb24gMjA3MDM3KQorKysgU291cmNlL2NtYWtlL09w
dGlvbnNBcHBsZVdpbi5jbWFrZQkod29ya2luZyBjb3B5KQpAQCAtMiw3ICsyLDcgQEAgaW5jbHVk
ZShPcHRpb25zV2luKQogCiBzZXQoVVNFX0NHIDEpCiBzZXQoVVNFX0NBIDEpCi1zZXQoVVNFX0NG
TkVUV09SSyAxKQorc2V0KFVTRV9DRlVSTENPTk5FQ1RJT04gMSkKIHNldChVU0VfSUNVX1VOSUNP
REUgMSkKIAogIyBVbmNvbW1lbnQgdGhlIGZvbGxvd2luZyBsaW5lIHRvIHRyeSB0aGUgRGlyZWN0
MkQgYmFja2VuZC4KSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDIwNzAzNykKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDE2LTEwLTEwICBBbGV4IENocmlzdGVuc2VuICA8YWNo
cmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVtb3ZlIGRlYWQgbmV0d29ya2luZyBj
b2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjMy
NjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIER1
bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmg6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUv
Y29uZmlnLmg6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNw
cDoKKyAgICAgICAgKG1haW4pOgorCiAyMDE2LTEwLTEwICBDb21taXQgUXVldWUgIDxjb21taXQt
cXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjA2
OTcyLgpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5oCShyZXZpc2lvbiAy
MDcwMzcpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yNiwxMyArMjYsNyBAQAogICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIER1
bXBSZW5kZXJUcmVlX2gKLSNkZWZpbmUgRHVtcFJlbmRlclRyZWVfaAotCi0vLyBGSVhNRTogUmVt
b3ZlIHRoaXMgd2hlbiBhbGwgcGxhdGZvcm1zIGFyZSB1c2luZyBjb25maWcuaAotI2lmbmRlZiBD
b25maWdfSAotI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgotI2VuZGlmCisjcHJhZ21hIG9uY2UK
IAogI2lmIFBMQVRGT1JNKENPQ09BKQogI2luY2x1ZGUgIkR1bXBSZW5kZXJUcmVlTWFjLmgiCkBA
IC00NSw2ICszOSw3IEBACiAjZW5kaWYKIAogI2luY2x1ZGUgPHN0cmluZz4KKyNpbmNsdWRlIDx3
dGYvUGxhdGZvcm0uaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKICNpZiAhT1MoT1BFTkJT
RCkKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2NvbmZpZy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL0R1bXBSZW5kZXJUcmVlL2NvbmZpZy5oCShyZXZpc2lvbiAyMDcwMzcpCisrKyBUb29scy9E
dW1wUmVuZGVyVHJlZS9jb25maWcuaAkod29ya2luZyBjb3B5KQpAQCAtMTgsNyArMTgsNyBAQAog
ICoKICAqLwogCi0jZGVmaW5lIENvbmZpZ19ICisjcHJhZ21hIG9uY2UKIAogI2lmIGRlZmluZWQo
SEFWRV9DT05GSUdfSCkgJiYgSEFWRV9DT05GSUdfSCAmJiBkZWZpbmVkKEJVSUxESU5HX1dJVEhf
Q01BS0UpCiAjaW5jbHVkZSAiY21ha2Vjb25maWcuaCIKQEAgLTQ0LDcgKzQ0LDcgQEAKICNkZWZp
bmUgVVNFX0NVUkwgMQogI2Vsc2UKICNkZWZpbmUgVVNFX0NHIDEKLSNkZWZpbmUgVVNFX0NGTkVU
V09SSyAxCisjZGVmaW5lIFVTRV9DRlVSTENPTk5FQ1RJT04gMQogI2VuZGlmCiAKICN1bmRlZiBf
V0lOMzJfV0lOTlQKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJl
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJU
cmVlLmNwcAkocmV2aXNpb24gMjA3MDM3KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0R1
bXBSZW5kZXJUcmVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjEsNyArNjEsNyBAQAogI2luY2x1
ZGUgPFdlYktpdC9XZWJLaXQuaD4KICNpbmNsdWRlIDxXZWJLaXQvV2ViS2l0Q09NQVBJLmg+CiAK
LSNpZiBVU0UoQ0ZORVRXT1JLKQorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAjaW5jbHVkZSA8
Q0ZOZXR3b3JrL0NGSFRUUENvb2tpZXNQcml2Lmg+CiAjaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGVVJM
Q2FjaGVQcml2Lmg+CiAjZW5kaWYKQEAgLTEyODcsNyArMTI4Nyw3IEBAIElXZWJWaWV3KiBjcmVh
dGVXZWJWaWV3QW5kT2Zmc2NyZWVuV2luZG8KICAgICByZXR1cm4gd2ViVmlldzsKIH0KIAotI2lm
IFVTRShDRk5FVFdPUkspCisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKIFJldGFpblB0cjxDRlVS
TENhY2hlUmVmPiBzaGFyZWRDRlVSTENhY2hlKCkKIHsKICNpZm5kZWYgREVCVUdfQUxMCkBAIC0x
NDY1LDcgKzE0NjUsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY29uc3QgY2hhciogYXJndltdKQog
ICAgIGlmIChGQUlMRUQod2ViVmlldy0+bWFpbkZyYW1lKCZmcmFtZSkpKQogICAgICAgICByZXR1
cm4gLTc7CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAg
ICAgUmV0YWluUHRyPENGVVJMQ2FjaGVSZWY+IHVybENhY2hlID0gc2hhcmVkQ0ZVUkxDYWNoZSgp
OwogICAgIENGVVJMQ2FjaGVSZW1vdmVBbGxDYWNoZWRSZXNwb25zZXModXJsQ2FjaGUuZ2V0KCkp
OwogI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>291224</attachid>
            <date>2016-10-10 21:10:57 -0700</date>
            <delta_ts>2016-10-10 21:26:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-163263-20161010210736.patch</filename>
            <type>text/plain</type>
            <size>204574</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDIwNzAz
OSkKKysrIENoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDE2LTEw
LTEwICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgUmVtb3ZlIGRlYWQgbmV0d29ya2luZyBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjMyNjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFNvdXJjZS9jbWFrZS9PcHRpb25zQXBwbGVXaW4uY21h
a2U6CisKIDIwMTYtMTAtMTAgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3Jn
PgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyMDY5NzIuCkluZGV4OiBTb3Vy
Y2UvV1RGL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL0NoYW5nZUxvZwkocmV2
aXNpb24gMjA3MDM5KQorKysgU291cmNlL1dURi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwxNCBAQAorMjAxNi0xMC0xMCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNl
bkB3ZWJraXQub3JnPgorCisgICAgICAgIFJlbW92ZSBkZWFkIG5ldHdvcmtpbmcgY29kZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzMjYzCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvUGxhdGZv
cm0uaDoKKyAgICAgICAgKiB3dGYvU2NoZWR1bGVQYWlyLmg6CisgICAgICAgICogd3RmL1NjaGVk
dWxlUGFpck1hYy5tbToKKwogMjAxNi0xMC0xMCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVh
QGdtYWlsLmNvbT4KIAogICAgICAgICBbRE9NSklUXSBJbXBsZW1lbnQgTm9kZSBhY2Nlc3NvcnMg
aW4gRE9NSklUCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgJKHJldmlzaW9uIDIwNzAzOSkKKysrIFNvdXJjZS9X
VEYvd3RmL1BsYXRmb3JtLmgJKHdvcmtpbmcgY29weSkKQEAgLTU1OSwxMCArNTU5LDYgQEAKIAog
I2lmIFBMQVRGT1JNKElPUykKIAotI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspICYmIF9fSVBI
T05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTAwMDAwCi0jZGVmaW5lIFVTRV9DRk5FVFdP
UksgMQotI2VuZGlmCi0KICNkZWZpbmUgSEFWRV9ORVRXT1JLX0VYVEVOU0lPTiAxCiAjZGVmaW5l
IEhBVkVfUkVBRExJTkUgMQogI2RlZmluZSBVU0VfVUlLSVRfRURJVElORyAxCkBAIC01OTIsMTAg
KzU4OCwxMCBAQAogI2VuZGlmCiAKICNpZiBQTEFURk9STShXSU4pICYmICFVU0UoV0lOR0RJKSAm
JiAhUExBVEZPUk0oV0lOX0NBSVJPKQotI2RlZmluZSBVU0VfQ0ZORVRXT1JLIDEKKyNkZWZpbmUg
VVNFX0NGVVJMQ09OTkVDVElPTiAxCiAjZW5kaWYKIAotI2lmIFVTRShDRk5FVFdPUkspIHx8IFBM
QVRGT1JNKENPQ09BKQorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pIHx8IFBMQVRGT1JNKENPQ09B
KQogI2RlZmluZSBVU0VfQ0ZVUkxDQUNIRSAxCiAjZW5kaWYKIApAQCAtOTUxLDkgKzk0Nyw2IEBA
CiAjZGVmaW5lIFVTRV9QUk9URUNUSU9OX1NQQUNFX0FVVEhfQ0FMTEJBQ0sgMQogI2VuZGlmCiAK
LS8qIFNldCB1cCBhIGRlZmluZSBmb3IgYSBjb21tb24gZXJyb3IgdGhhdCBpcyBpbnRlbmRlZCB0
byBjYXVzZSBhIGJ1aWxkIGVycm9yIC0tIHRodXMgdGhlIHNwYWNlIGFmdGVyIEVycm9yLiAqLwot
I2RlZmluZSBXVEZfUExBVEZPUk1fQ0ZORVRXT1JLIEVycm9yIFVTRV9tYWNyb19zaG91bGRfYmVf
dXNlZF93aXRoX0NGTkVUV09SSwotCiAjaWYgUExBVEZPUk0oQ09DT0EpICYmIEhBVkUoQUNDRVNT
SUJJTElUWSkKICNkZWZpbmUgVVNFX0FDQ0VTU0lCSUxJVFlfQ09OVEVYVF9NRU5VUyAxCiAjZW5k
aWYKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1NjaGVkdWxlUGFpci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XVEYvd3RmL1NjaGVkdWxlUGFpci5oCShyZXZpc2lvbiAyMDcwMzkpCisrKyBTb3VyY2Uv
V1RGL3d0Zi9TY2hlZHVsZVBhaXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQAog
I2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KIAotI2lmIFBMQVRGT1JNKENPQ09BKSAmJiAhVVNFKENGTkVUV09SSykKKyNpZiBQ
TEFURk9STShDT0NPQSkKIE9CSkNfQ0xBU1MgTlNSdW5Mb29wOwogI2VuZGlmCiAKQEAgLTQ1LDcg
KzQ1LDcgQEAgY2xhc3MgU2NoZWR1bGVQYWlyIDogcHVibGljIFRocmVhZFNhZmVSZQogcHVibGlj
OgogICAgIHN0YXRpYyBSZWY8U2NoZWR1bGVQYWlyPiBjcmVhdGUoQ0ZSdW5Mb29wUmVmIHJ1bkxv
b3AsIENGU3RyaW5nUmVmIG1vZGUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2NoZWR1bGVQYWly
KHJ1bkxvb3AsIG1vZGUpKTsgfQogCi0jaWYgUExBVEZPUk0oQ09DT0EpICYmICFVU0UoQ0ZORVRX
T1JLKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHN0YXRpYyBSZWY8U2NoZWR1bGVQYWlyPiBj
cmVhdGUoTlNSdW5Mb29wKiBydW5Mb29wLCBDRlN0cmluZ1JlZiBtb2RlKSB7IHJldHVybiBhZG9w
dFJlZigqbmV3IFNjaGVkdWxlUGFpcihydW5Mb29wLCBtb2RlKSk7IH0KICAgICBOU1J1bkxvb3Aq
IG5zUnVuTG9vcCgpIGNvbnN0IHsgcmV0dXJuIG1fbnNSdW5Mb29wLmdldCgpOyB9CiAjZW5kaWYK
QEAgLTYzLDcgKzYzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIG1fbW9kZSA9IGFkb3B0Q0Yo
Q0ZTdHJpbmdDcmVhdGVDb3B5KDAsIG1vZGUpKTsKICAgICB9CiAKLSNpZiBQTEFURk9STShDT0NP
QSkgJiYgIVVTRShDRk5FVFdPUkspCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgV1RGX0VYUE9S
VF9QUklWQVRFIFNjaGVkdWxlUGFpcihOU1J1bkxvb3AqLCBDRlN0cmluZ1JlZik7CiAgICAgUmV0
YWluUHRyPE5TUnVuTG9vcCo+IG1fbnNSdW5Mb29wOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV1RG
L3d0Zi9TY2hlZHVsZVBhaXJNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvU2No
ZWR1bGVQYWlyTWFjLm1tCShyZXZpc2lvbiAyMDcwMzkpCisrKyBTb3VyY2UvV1RGL3d0Zi9TY2hl
ZHVsZVBhaXJNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTI5LDggKzI5LDYgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJTY2hlZHVsZVBhaXIuaCIKIAotI2lmICFVU0UoQ0ZORVRX
T1JLKQotCiBuYW1lc3BhY2UgV1RGIHsKIAogU2NoZWR1bGVQYWlyOjpTY2hlZHVsZVBhaXIoTlNS
dW5Mb29wKiBydW5Mb29wLCBDRlN0cmluZ1JlZiBtb2RlKQpAQCAtNDIsNSArNDAsMyBAQCBTY2hl
ZHVsZVBhaXI6OlNjaGVkdWxlUGFpcihOU1J1bkxvb3AqIHJ1CiB9CiAKIH0gLy8gbmFtZXNwYWNl
Ci0KLSNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjA3MDM5KQorKysgU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTY3IEBACisyMDE2LTEw
LTEwICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgUmVtb3ZlIGRlYWQgbmV0d29ya2luZyBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjMyNjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUaGVyZSBhcmUgbm8gbW9yZSBDb2NvYSBwbGF0Zm9ybXMg
dXNpbmcgQ0ZVUkxDb25uZWN0aW9uLgorICAgICAgICBVU0UoQ0ZORVRXT1JLKSBpcyBiZWluZyBy
ZXBsYWNlZCBieSBVU0UoQ0ZVUkxDT05ORUNUSU9OKSBhbmQgaXQgaXMgb25seSB1c2VkIG9uIHRo
ZSBBcHBsZVdpbiBwb3J0LgorCisgICAgICAgIE5vIGNoYW5nZSBpbiBiZWhhdmlvci4KKworICAg
ICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJD
b3JlUHJlZml4Lmg6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmg6CisgICAgICAg
ICogbG9hZGVyL0VtcHR5Q2xpZW50cy5oOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlckNs
aWVudC5oOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
KToKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIv
U3VicmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvY2YvUmVzb3VyY2VMb2FkZXJD
Rk5ldC5jcHA6CisgICAgICAgICogbG9hZGVyL2NvY29hL1N1YnJlc291cmNlTG9hZGVyQ29jb2Eu
bW06CisgICAgICAgIChXZWJDb3JlOjpTdWJyZXNvdXJjZUxvYWRlcjo6d2lsbENhY2hlUmVzcG9u
c2UpOiBEZWxldGVkLgorICAgICAgICAqIGxvYWRlci9tYWMvRG9jdW1lbnRMb2FkZXJNYWMuY3Bw
OgorICAgICAgICAqIGxvYWRlci9tYWMvUmVzb3VyY2VMb2FkZXJNYWMubW06CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6d2lsbENhY2hlUmVzcG9uc2UpOiBEZWxldGVkLgorICAg
ICAgICAqIHBhZ2UvbWFjL1BhZ2VNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpwbGF0
Zm9ybUluaXRpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6YWRkU2NoZWR1bGVQYWly
KToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnJlbW92ZVNjaGVkdWxlUGFpcik6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakM6OnNob3VsZFdhaXRGb3JSZXNwb25zZVRvQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29yZU5TVVJMQXV0aGVudGljYXRpb25D
aGFsbGVuZ2VDbGllbnQ6OmNyZWF0ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXZWJD
b3JlTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUNsaWVudDo6V2ViQ29yZU5TVVJMQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2VDbGllbnQpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL21h
Yy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9O
ZXR3b3JrU3RvcmFnZVNlc3Npb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Byb3Rl
Y3Rpb25TcGFjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUHJvdGVjdGlvblNwYWNl
QmFzZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5jcHA6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlSGFuZGxlQ2xpZW50Ojp3aWxsQ2FjaGVSZXNwb25zZSk6CisgICAgICAgIChXZWJD
b3JlOjpSZXNvdXJjZUhhbmRsZUNsaWVudDo6c2hvdWxkQ2FjaGVSZXNwb25zZSk6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmg6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUludGVybmFsOjpSZXNvdXJjZUhhbmRsZUludGVybmFsKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvQXV0aGVudGljYXRpb25DRi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTo6QXV0aGVudGljYXRpb25DaGFsbGVu
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQ0YpOgorICAgICAgICAoV2ViQ29yZTo6Y29y
ZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9BdXRoZW50aWNhdGlvbkNGLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvQ29va2llSmFyQ0ZOZXQuY3BwOgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvQ3JlZGVudGlhbFN0b3JhZ2VDRk5ldC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDcmVkZW50aWFsU3RvcmFnZTo6Z2V0RnJvbVBlcnNpc3RlbnRTdG9yYWdl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNyZWRlbnRpYWxTdG9yYWdlOjpzYXZlVG9QZXJzaXN0ZW50
U3RvcmFnZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9Mb2FkZXJS
dW5Mb29wQ0YuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvTG9hZGVyUnVuTG9v
cENGLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Np
b25DRk5ldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNv
b2tpZVN0b3JhZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvUHJvdGVjdGlvblNw
YWNlQ0ZOZXQuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvUHJvdGVjdGlvblNw
YWNlQ0ZOZXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3Iu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHA6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnNob3VsZFNuaWZmQ29ubmVjdGlvblByb3BlcnR5KToKKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpjcmVhdGVDRlVSTENvbm5lY3Rpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OnN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlJl
c291cmNlSGFuZGxlOjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OnRyeUhhbmRsZVBhc3N3b3JkQmFzZWRBdXRoZW50
aWNhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRDcmVk
ZW50aWFsKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpzY2hlZHVsZSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6dW5zY2hlZHVsZSk6IERl
bGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJM
Q29ubmVjdGlvbkRlbGVnYXRlLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jl
c291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3Bl
cmF0aW9uUXVldWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDRlVSTENv
bm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZTo6c2V0dXBSZXF1ZXN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3Bl
cmF0aW9uUXVldWU6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlOjpjYW5S
ZXNwb25kVG9Qcm90ZWN0aW9uU3BhY2UpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2Yv
UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5o
OgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Lmg6CisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q6OmVuY29kaW5nUmVxdWlyZXNQbGF0Zm9ybURh
dGEpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6ZmluZENGVVJMUmVxdWVzdENvcHlDb250ZW50RGlzcG9z
aXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXlGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUGxhdGZvcm1SZXF1ZXN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVQbGF0Zm9ybUhUVFBCb2R5KToKKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVSZXNvdXJjZVJlcXVlc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0OjpzZXRTdG9yYWdlU2Vzc2lvbik6CisgICAg
ICAgIChXZWJDb3JlOjpmaW5kQ0ZVUkxSZXF1ZXN0U2V0Q29udGVudERpc3Bvc2l0aW9uRW5jb2Rp
bmdGYWxsYmFja0FycmF5RnVuY3Rpb24pOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL2NmL1Jlc291cmNlUmVzcG9uc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2U6OlJlc291cmNlUmVzcG9uc2UpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2Yv
UmVzb3VyY2VSZXNwb25zZUNGTmV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2U6OmNmVVJMUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZTo6cGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm8pOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
Y2YvU3luY2hyb25vdXNMb2FkZXJDbGllbnRDRk5ldC5jcHA6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9jZi9TeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdh
dGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJM
Q29ubmVjdGlvbkRlbGVnYXRlOjpzZXR1cFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3lu
Y2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlOjpzZXR1cENvbm5l
Y3Rpb25TY2hlZHVsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OmFkanVzdE1JTUVUeXBlSWZOZWNl
c3NhcnkpOgorICAgICAgICAoV2ViQ29yZTo6U3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJM
Q29ubmVjdGlvbkRlbGVnYXRlOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29y
ZTo6U3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlOjp3aWxs
Q2FjaGVSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpTeW5jaHJvbm91c1Jlc291cmNlSGFu
ZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OmNhblJlc3BvbmRUb1Byb3RlY3Rpb25TcGFjZSk6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9TeW5jaHJvbm91c1Jlc291cmNlSGFuZGxl
Q0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2Nv
Y29hL0NyZWRlbnRpYWxDb2NvYS5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2Ev
Q3JlZGVudGlhbENvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6Q3JlZGVudGlhbDo6Q3JlZGVu
dGlhbCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDcmVkZW50aWFsOjpjZkNyZWRlbnRp
YWwpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvUHJvdGVjdGlv
blNwYWNlQ29jb2EuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Byb3RlY3Rp
b25TcGFjZUNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6UHJvdGVjdGlvblNwYWNlOjpQcm90
ZWN0aW9uU3BhY2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UHJvdGVjdGlvblNwYWNl
OjpjZlNwYWNlKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jl
c291cmNlUmVxdWVzdENvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
Ojpuc1VSTFJlcXVlc3QpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3Vy
Y2VSZXNwb25zZUNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZTo6
cGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm8pOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZTo6bnNVUkxSZXNwb25zZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlOjpSZXNvdXJjZVJlc3BvbnNlKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL2lvcy9RdWlja0xvb2suaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2lv
cy9RdWlja0xvb2subW06CisgICAgICAgICgtW1dlYlF1aWNrTG9va0hhbmRsZUFzRGVsZWdhdGUg
aW5pdFdpdGhDb25uZWN0aW9uRGVsZWdhdGU6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYlF1
aWNrTG9va0hhbmRsZUFzRGVsZWdhdGUgY29ubmVjdGlvbjpkaWRSZWNlaXZlRGF0YUFycmF5Ol0p
OiBEZWxldGVkLgorICAgICAgICAoLVtXZWJRdWlja0xvb2tIYW5kbGVBc0RlbGVnYXRlIGNvbm5l
Y3Rpb246ZGlkUmVjZWl2ZURhdGE6bGVuZ3RoUmVjZWl2ZWQ6XSk6IERlbGV0ZWQuCisgICAgICAg
ICgtW1dlYlF1aWNrTG9va0hhbmRsZUFzRGVsZWdhdGUgY29ubmVjdGlvbkRpZEZpbmlzaExvYWRp
bmc6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYlF1aWNrTG9va0hhbmRsZUFzRGVsZWdhdGUg
Y29ubmVjdGlvbjpkaWRGYWlsV2l0aEVycm9yOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtXZWJR
dWlja0xvb2tIYW5kbGVBc0RlbGVnYXRlIGRldGFjaEhhbmRsZV0pOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6UXVpY2tMb29rSGFuZGxlOjpjcmVhdGUpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6UXVpY2tMb29rSGFuZGxlOjpjZlJlc3BvbnNlKTogRGVsZXRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL2lvcy9SZXNvdXJjZUhhbmRsZUlPUy5tbTogUmVtb3ZlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2lvcy9SZXNvdXJjZVJlcXVlc3RJT1MubW06IFJlbW92
ZWQuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvQXV0aGVudGljYXRpb25NYWMubW06
CisgICAgICAgICgtW1dlYkNvcmVBdXRoZW50aWNhdGlvbkNsaWVudEFzQ2hhbGxlbmdlU2VuZGVy
IHNldENGQ2hhbGxlbmdlOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtXZWJDb3JlQXV0aGVudGlj
YXRpb25DbGllbnRBc0NoYWxsZW5nZVNlbmRlciBjZkNoYWxsZW5nZV0pOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6Y29yZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjptYWMpOiBE
ZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL0Nvb2tpZUphck1hYy5tbToK
KyAgICAgICAgKFdlYkNvcmU6OnNldENvb2tpZXNGcm9tRE9NKToKKyAgICAgICAgKFdlYkNvcmU6
OmNvb2tpZVN0b3JhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6YWRkQ29va2llKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9DcmVkZW50aWFsU3RvcmFnZU1hYy5tbToKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9Gb3JtRGF0YVN0cmVhbU1hYy5oOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvbWFjL0Zvcm1EYXRhU3RyZWFtTWFjLm1tOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvbWFjL1Jlc291cmNlRXJyb3JNYWMubW06CisgICAgICAgIChOU0Vycm9yRnJv
bUNGRXJyb3IpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VFcnJvcjo6UmVz
b3VyY2VFcnJvcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUVycm9yOjpu
c0Vycm9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlRXJyb3I6Om9wZXJh
dG9yIE5TRXJyb3IgKik6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMv
UmVzb3VyY2VIYW5kbGVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6
Y29udGludWVXaWxsQ2FjaGVSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhh
bmRsZTo6Z2V0Q29ubmVjdGlvblRpbWluZ0RhdGEpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvbWFjL1Jlc291cmNlUmVxdWVzdE1hYy5tbTogUmVtb3ZlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9TeW5jaHJvbm91c0xvYWRlckNsaWVudC5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OlN5bmNocm9ub3VzTG9hZGVyQ2xpZW50OjpwbGF0Zm9ybUJhZFJlc3BvbnNl
RXJyb3IpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhh
bmRsZUFzRGVsZWdhdGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3Jl
UmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlLm1tOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
bWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5oOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0
aW9uUXVldWVEZWxlZ2F0ZS5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJD
b3JlVVJMUmVzcG9uc2UubW06CisgICAgICAgIChXZWJDb3JlOjpzeW50aGVzaXplUmVkaXJlY3RS
ZXNwb25zZUlmTmVjZXNzYXJ5KToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vVGVtcG9yYXJ5TGlu
a1N0dWJzLmNwcDoKKyAgICAgICAgKiB0ZXN0aW5nL2pzL1dlYkNvcmVUZXN0U3VwcG9ydFByZWZp
eC5oOgorCiAyMDE2LTEwLTEwICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAg
ICAgICAgVXBkYXRlIEdhbWVwYWRFdmVudCB0byBzdG9wIHVzaW5nIGxlZ2FjeSBbQ29uc3RydWN0
b3JUZW1wbGF0ZT1FdmVudF0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmVQcmVmaXguaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlUHJlZml4LmgJKHJldmlzaW9uIDIw
NzAzOSkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmVQcmVmaXguaAkod29ya2luZyBjb3B5KQpA
QCAtMTgsNyArMTgsNyBAQAogICoKICAqLwogCi0vKiBUaGlzIHByZWZpeCBmaWxlIHNob3VsZCBj
b250YWluIG9ubHk6IAorLyogVGhpcyBwcmVmaXggZmlsZSBzaG91bGQgY29udGFpbiBvbmx5Ogog
ICogICAgMSkgZmlsZXMgdG8gcHJlY29tcGlsZSBmb3IgZmFzdGVyIGJ1aWxkcwogICogICAgMikg
aW4gb25lIGNhc2UgYXQgbGVhc3Q6IE9TLVgtc3BlY2lmaWMgcGVyZm9ybWFuY2UgYnVnIHdvcmth
cm91bmRzCiAgKiAgICAzKSB0aGUgc3BlY2lhbCB0cmljayB0byBjYXRjaCB1cyB1c2luZyBuZXcg
b3IgZGVsZXRlIHdpdGhvdXQgaW5jbHVkaW5nICJjb25maWcuaCIKQEAgLTEzMyw4ICsxMzMsOCBA
QAogI2Vsc2UKIAogI2lmIE9TKFdJTkRPV1MpCi0jaWYgVVNFKENHKQogCisjaWYgVVNFKENHKQog
Ly8gRklYTUUgPHJkYXI6Ly9wcm9ibGVtLzgyMDg4Njg+IFJlbW92ZSBzdXBwb3J0IGZvciBvYnNv
bGV0ZSBDb2xvclN5bmMgQVBJLCBDb3JlU2VydmljZXMgaGVhZGVyIGluIENvcmVHcmFwaGljcwog
Ly8gV2UgY2FuIHJlbW92ZSB0aGlzIG9uY2UgdGhlIG5ldyBDb2xvclN5bmMgQVBJcyBhcmUgYXZh
aWxhYmxlIGluIGFuIGludGVybmFsIFNhZmFyaSBTREsuCiAjaW5jbHVkZSA8Q29sb3JTeW5jL0Nv
bG9yU3luYy5oPgpAQCAtMTQzLDE5ICsxNDMsMjEgQEAKICNkZWZpbmUgT0JTT0xFVEVfQ09MT1JT
WU5DX0FQSQogI2VuZGlmCiAjZW5kaWYKLSNpZiBVU0UoQ0ZORVRXT1JLKQotLyogV2luZG93cyBk
b2Vzbid0IGluY2x1ZGUgQ0ZOZXR3b3JrLmggdmlhIENvcmVTZXJ2aWNlcy5oLCBzbyB3ZSBkbwot
ICAgaXQgZXhwbGljaXRseSBoZXJlIHRvIG1ha2UgV2luZG93cyBtb3JlIGNvbnNpc3RlbnQgd2l0
aCBNYWMuICovCisKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogI2luY2x1ZGUgPENGTmV0d29y
ay9DRk5ldHdvcmsuaD4KIC8vIE9uIFdpbmRvd3MsIGRpc3BhdGNoLmggbmVlZHMgdG8gYmUgaW5j
bHVkZWQgYmVmb3JlIGNlcnRhaW4gQ0ZOZXR3b3JrIGhlYWRlcnMuCiAjaW5jbHVkZSA8ZGlzcGF0
Y2gvZGlzcGF0Y2guaD4KICNlbmRpZgorCiAjaW5jbHVkZSA8d2luZG93cy5oPgotI2Vsc2UKLSNp
ZiAhUExBVEZPUk0oSU9TKQorCisjZWxpZiAhUExBVEZPUk0oSU9TKQorCiAjaW5jbHVkZSA8Q29y
ZVNlcnZpY2VzL0NvcmVTZXJ2aWNlcy5oPgotI2VuZGlmIC8vICFQTEFURk9STShJT1MpCi0jZW5k
aWYgLy8gT1MoV0lORE9XUykKKworI2VuZGlmCisKIAogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9u
IDIwNzAzOSkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjAyMSw3ICsyMDIxLDYgQEAKIAkJNTE0Qzc2NEYwQ0U5
MjM0RTAwN0VGM0NEIC8qIEZvcm1EYXRhU3RyZWFtTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE0Qzc2NDUwQ0U5MjM0RTAwN0VGM0NEIC8qIEZv
cm1EYXRhU3RyZWFtTWFjLm1tICovOyB9OwogCQk1MTRDNzY1MDBDRTkyMzRFMDA3RUYzQ0QgLyog
UmVzb3VyY2VFcnJvck1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUxNEM3NjQ2MENFOTIzNEUwMDdFRjNDRCAvKiBSZXNvdXJjZUVycm9yTWFjLm1t
ICovOyB9OwogCQk1MTRDNzY1MTBDRTkyMzRFMDA3RUYzQ0QgLyogUmVzb3VyY2VIYW5kbGVNYWMu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTRDNzY0
NzBDRTkyMzRFMDA3RUYzQ0QgLyogUmVzb3VyY2VIYW5kbGVNYWMubW0gKi87IH07Ci0JCTUxNEM3
NjUzMENFOTIzNEUwMDdFRjNDRCAvKiBSZXNvdXJjZVJlcXVlc3RNYWMubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTRDNzY0OTBDRTkyMzRFMDA3RUYz
Q0QgLyogUmVzb3VyY2VSZXF1ZXN0TWFjLm1tICovOyB9OwogCQk1MTRDNzY2RDBDRTkyM0ExMDA3
RUYzQ0QgLyogQ3JlZGVudGlhbEJhc2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTE0Qzc2NTgwQ0U5MjNBMTAwN0VGM0NEIC8qIENyZWRlbnRpYWxC
YXNlLmNwcCAqLzsgfTsKIAkJNTE0Qzc2NkUwQ0U5MjNBMTAwN0VGM0NEIC8qIENyZWRlbnRpYWwu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNEM3NjU5
MENFOTIzQTEwMDdFRjNDRCAvKiBDcmVkZW50aWFsLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTE0Qzc2NkYwQ0U5MjNBMTAwN0VGM0NEIC8qIEZv
cm1EYXRhLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxNEM3NjVBMENFOTIzQTEwMDdFRjNDRCAvKiBGb3JtRGF0YS5jcHAgKi87IH07CkBAIC0yODA4
LDcgKzI4MDcsNiBAQAogCQk3RDRDOTZERDFBRDQ0ODM1MDAzNjVBNTAgLyogSlNGZXRjaEhlYWRl
cnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdENEM5
NkQ5MUFENDQ4MzUwMDM2NUE1MCAvKiBKU0ZldGNoSGVhZGVycy5oICovOyB9OwogCQk3RDc0MUJE
QTE3NzIyNkFBMDA4NTkxNzAgLyogQ1NTVmFsdWVLZXl3b3Jkcy5oIGluIENvcHkgR2VuZXJhdGVk
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU2NTgxNDgwOUQx
MzA0MzAwMEU2MUQ3IC8qIENTU1ZhbHVlS2V5d29yZHMuaCAqLzsgfTsKIAkJN0UzN0VGMkUxMzM5
MjA4ODAwQjI5MjUwIC8qIFN1YnJlc291cmNlTG9hZGVyQ0YuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0UzN0VGMkQxMzM5MjA4ODAwQjI5MjUwIC8q
IFN1YnJlc291cmNlTG9hZGVyQ0YuY3BwICovOyB9OwotCQk3RTQyOENFNTEzRTM0MDdGMDAzQjY2
MUMgLyogUmVzb3VyY2VIYW5kbGVJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3RTQyOENFNDEzRTM0MDdGMDAzQjY2MUMgLyogUmVzb3VyY2VIYW5k
bGVJT1MubW0gKi87IH07CiAJCTdFNDZGNkZBMTYyN0EyQ0EwMDA2MjIyMyAvKiBKU09FU0VsZW1l
bnRJbmRleFVpbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gN0U0NkY2RjgxNjI3QTJDOTAwMDYyMjIzIC8qIEpTT0VTRWxlbWVudEluZGV4VWludC5j
cHAgKi87IH07CiAJCTdFNDZGNkZCMTYyN0EyQ0EwMDA2MjIyMyAvKiBKU09FU0VsZW1lbnRJbmRl
eFVpbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdF
NDZGNkY5MTYyN0EyQzkwMDA2MjIyMyAvKiBKU09FU0VsZW1lbnRJbmRleFVpbnQuaCAqLzsgfTsK
IAkJN0U0NzRFMUUxMjQ5NERDOTAwMjM1MzY0IC8qIFNRTGl0ZURhdGFiYXNlVHJhY2tlckNsaWVu
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0U0NzRF
MUIxMjQ5NERDOTAwMjM1MzY0IC8qIFNRTGl0ZURhdGFiYXNlVHJhY2tlckNsaWVudC5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0yODI2LDcgKzI4
MjQsNiBAQAogCQk3RTY2RTIzNDE2RDZFQjZDMDBGN0U3RkYgLyogV2ViR0xDb21wcmVzc2VkVGV4
dHVyZUFUQy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
N0U2NkUyMzIxNkQ2RUI2QzAwRjdFN0ZGIC8qIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEMuaCAq
LzsgfTsKIAkJN0U2NkUyMzQxN0U2RUI2QzAwRjdFN0ZGIC8qIFdlYkdMQ29tcHJlc3NlZFRleHR1
cmVQVlJUQy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
N0U2NkUyMzIxN0U2RUI2QzAwRjdFN0ZGIC8qIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQy5o
ICovOyB9OwogCQk3RTdERTFGRDE5NUNFRjI2MDAzNTM2M0IgLyogUmVzb3VyY2VSZXF1ZXN0Q29j
b2EubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RTdE
RTFGQzE5NUNFRjI2MDAzNTM2M0IgLyogUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0gKi87IH07Ci0J
CTdFN0RFMjAyMTk1Q0VGQ0QwMDM1MzYzQiAvKiBSZXNvdXJjZVJlcXVlc3RJT1MubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RTdERTIwMTE5NUNFRkNE
MDAzNTM2M0IgLyogUmVzb3VyY2VSZXF1ZXN0SU9TLm1tICovOyB9OwogCQk3RThGQURDNDE5OUE5
NUIxMDA3MTQ5NjggLyogU3VicmVzb3VyY2VMb2FkZXJDb2NvYS5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFOEZBREMzMTk5QTk1QjEwMDcxNDk2OCAv
KiBTdWJyZXNvdXJjZUxvYWRlckNvY29hLm1tICovOyB9OwogCQk3RTk5QUY1MTBCMTM4NDY0NjhG
QjAxQTUgLyogV2luZG93Rm9jdXNBbGxvd2VkSW5kaWNhdG9yLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFOTlBRjUyMEIxMzg0NjQ2OEZCMDFBNSAv
KiBXaW5kb3dGb2N1c0FsbG93ZWRJbmRpY2F0b3IuY3BwICovOyB9OwogCQk3RTk5QUY1MzBCMTM4
NDY0NjhGQjAxQTUgLyogV2luZG93Rm9jdXNBbGxvd2VkSW5kaWNhdG9yLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RTk5QUY1NDBCMTM4NDY0NjhGQjAx
QTUgLyogV2luZG93Rm9jdXNBbGxvd2VkSW5kaWNhdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTI4NDcsNyArMjg0NCw2IEBACiAJCTdFRTY4
NDY5MTJEMjZFMzgwMEU3OTQxNSAvKiBMb2FkZXJSdW5Mb29wQ0YuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFRTY4NDU2MTJEMjZFMzgwMEU3OTQxNSAv
KiBMb2FkZXJSdW5Mb29wQ0YuaCAqLzsgfTsKIAkJN0VFNjg0NkExMkQyNkUzODAwRTc5NDE1IC8q
IFJlc291cmNlRXJyb3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDdFRTY4NDU3MTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZUVycm9yLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0VFNjg0NkIxMkQy
NkUzODAwRTc5NDE1IC8qIFJlc291cmNlRXJyb3JDRi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RUU2ODQ1ODEyRDI2RTM4MDBFNzk0MTUgLyogUmVz
b3VyY2VFcnJvckNGLmNwcCAqLzsgfTsKLQkJN0VFNjg0NkMxMkQyNkUzODAwRTc5NDE1IC8qIFJl
c291cmNlSGFuZGxlQ0ZOZXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gN0VFNjg0NTkxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlSGFuZGxlQ0ZO
ZXQuY3BwICovOyB9OwogCQk3RUU2ODQ2RDEyRDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VSZXF1
ZXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RUU2
ODQ1QTEyRDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VSZXF1ZXN0LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0VFNjg0NkUxMkQyNkUzODAwRTc5
NDE1IC8qIFJlc291cmNlUmVxdWVzdENGTmV0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFRTY4NDVCMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJj
ZVJlcXVlc3RDRk5ldC5jcHAgKi87IH07CiAJCTdFRTY4NDZGMTJEMjZFMzgwMEU3OTQxNSAvKiBS
ZXNvdXJjZVJlcXVlc3RDRk5ldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gN0VFNjg0NUMxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlUmVxdWVzdENG
TmV0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAg
LTkwNjIsNyArOTA1OCw2IEBACiAJCTUxNEM3NjQ1MENFOTIzNEUwMDdFRjNDRCAvKiBGb3JtRGF0
YVN0cmVhbU1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEZv
cm1EYXRhU3RyZWFtTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTRDNzY0
NjBDRTkyMzRFMDA3RUYzQ0QgLyogUmVzb3VyY2VFcnJvck1hYy5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFJlc291cmNlRXJyb3JNYWMubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTUxNEM3NjQ3MENFOTIzNEUwMDdFRjNDRCAvKiBSZXNvdXJjZUhh
bmRsZU1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFJlc291
cmNlSGFuZGxlTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MTRDNzY0OTBD
RTkyMzRFMDA3RUYzQ0QgLyogUmVzb3VyY2VSZXF1ZXN0TWFjLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gUmVzb3VyY2VSZXF1ZXN0TWFjLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1MTRDNzY1ODBDRTkyM0ExMDA3RUYzQ0QgLyogQ3JlZGVudGlh
bEJhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ3JlZGVudGlh
bEJhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTRDNzY1OTBDRTkyM0Ex
MDA3RUYzQ0QgLyogQ3JlZGVudGlhbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBDcmVkZW50aWFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNEM3NjVBMENF
OTIzQTEwMDdFRjNDRCAvKiBGb3JtRGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBGb3JtRGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05
OTQ2LDcgKzk5NDEsNiBAQAogCQk3RDRDOTZEODFBRDQ0ODM1MDAzNjVBNTAgLyogSlNGZXRjaEhl
YWRlcnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNGZXRjaEhl
YWRlcnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3RDRDOTZEOTFBRDQ0ODM1
MDAzNjVBNTAgLyogSlNGZXRjaEhlYWRlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSlNGZXRjaEhlYWRlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0Uz
N0VGMkQxMzM5MjA4ODAwQjI5MjUwIC8qIFN1YnJlc291cmNlTG9hZGVyQ0YuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3VicmVzb3VyY2VMb2FkZXJDRi5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTdFNDI4Q0U0MTNFMzQwN0YwMDNCNjYxQyAvKiBS
ZXNvdXJjZUhhbmRsZUlPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IFJlc291cmNlSGFuZGxlSU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
RTQ2RjZGODE2MjdBMkM5MDAwNjIyMjMgLyogSlNPRVNFbGVtZW50SW5kZXhVaW50LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTT0VTRWxlbWVudEluZGV4VWludC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFNDZGNkY5MTYyN0EyQzkwMDA2MjIy
MyAvKiBKU09FU0VsZW1lbnRJbmRleFVpbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSlNPRVNFbGVtZW50SW5kZXhVaW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTdFNDc0RTFCMTI0OTREQzkwMDIzNTM2NCAvKiBTUUxpdGVEYXRhYmFzZVRyYWNrZXJDbGll
bnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1FMaXRlRGF0YWJhc2VUcmFj
a2VyQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05OTY0LDcgKzk5NTgs
NiBAQAogCQk3RTY2RTIzMjE2RDZFQjZDMDBGN0U3RkYgLyogV2ViR0xDb21wcmVzc2VkVGV4dHVy
ZUFUQy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHTENvbXByZXNzZWRU
ZXh0dXJlQVRDLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFNjZFMjMyMTdFNkVC
NkMwMEY3RTdGRiAvKiBXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFN0RFMUZDMTk1Q0VGMjYwMDM1MzYzQiAvKiBSZXNv
dXJjZVJlcXVlc3RDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IFJlc291cmNlUmVxdWVzdENvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQk3RTdERTIwMTE5NUNFRkNEMDAzNTM2M0IgLyogUmVzb3VyY2VSZXF1ZXN0SU9TLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUmVzb3VyY2VSZXF1ZXN0SU9TLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3RThGQURDMzE5OUE5NUIxMDA3MTQ5Njgg
LyogU3VicmVzb3VyY2VMb2FkZXJDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IFN1YnJlc291cmNlTG9hZGVyQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTdFOTlBRjUyMEIxMzg0NjQ2OEZCMDFBNSAvKiBXaW5kb3dGb2N1c0FsbG93
ZWRJbmRpY2F0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2lu
ZG93Rm9jdXNBbGxvd2VkSW5kaWNhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJN0U5OUFGNTQwQjEzODQ2NDY4RkIwMUE1IC8qIFdpbmRvd0ZvY3VzQWxsb3dlZEluZGljYXRv
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXaW5kb3dGb2N1c0FsbG93ZWRJ
bmRpY2F0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTk5ODcsNyArOTk4MCw2
IEBACiAJCTdFRTY4NDU2MTJEMjZFMzgwMEU3OTQxNSAvKiBMb2FkZXJSdW5Mb29wQ0YuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTG9hZGVyUnVuTG9vcENGLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFRTY4NDU3MTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJj
ZUVycm9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlc291cmNlRXJyb3Iu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0VFNjg0NTgxMkQyNkUzODAwRTc5NDE1
IC8qIFJlc291cmNlRXJyb3JDRi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBSZXNvdXJjZUVycm9yQ0YuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3
RUU2ODQ1OTEyRDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZXNvdXJjZUhhbmRsZUNGTmV0LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0VFNjg0NUExMkQyNkUzODAwRTc5NDE1IC8q
IFJlc291cmNlUmVxdWVzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZXNv
dXJjZVJlcXVlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0VFNjg0NUIxMkQy
NkUzODAwRTc5NDE1IC8qIFJlc291cmNlUmVxdWVzdENGTmV0LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlc291cmNlUmVxdWVzdENGTmV0LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0VFNjg0NUMxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNl
UmVxdWVzdENGTmV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlc291cmNl
UmVxdWVzdENGTmV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNjIzNCw4ICsx
NjIyNiw2IEBACiAJCQkJNDQyQUY3QTcxMDJDRERFQTAwOEZENEQzIC8qIFF1aWNrTG9vay5oICov
LAogCQkJCTQ0MkFGN0E4MTAyQ0RERUEwMDhGRDREMyAvKiBRdWlja0xvb2subW0gKi8sCiAJCQkJ
QTEwREJGNDYxOEY5MjMxNzAwMEQ3MEM2IC8qIFF1aWNrTG9va0hhbmRsZUNsaWVudC5oICovLAot
CQkJCTdFNDI4Q0U0MTNFMzQwN0YwMDNCNjYxQyAvKiBSZXNvdXJjZUhhbmRsZUlPUy5tbSAqLywK
LQkJCQk3RTdERTIwMTE5NUNFRkNEMDAzNTM2M0IgLyogUmVzb3VyY2VSZXF1ZXN0SU9TLm1tICov
LAogCQkJCTQ0QTIwREI4MEY4NDE2NkMwMEIzRTFGRSAvKiBXZWJDb3JlVVJMUmVzcG9uc2VJT1Mu
aCAqLywKIAkJCQk0NDRENEUyMTBGNzA4QjJFMDAzMTU4RTAgLyogV2ViQ29yZVVSTFJlc3BvbnNl
SU9TLm1tICovLAogCQkJKTsKQEAgLTE3MTUwLDcgKzE3MTQwLDYgQEAKIAkJCQkxQTdGQTY0NzBE
REEzQ0JBMDAyOEY4QTUgLyogTmV0d29ya1N0YXRlTm90aWZpZXJNYWMuY3BwICovLAogCQkJCTUx
NEM3NjQ2MENFOTIzNEUwMDdFRjNDRCAvKiBSZXNvdXJjZUVycm9yTWFjLm1tICovLAogCQkJCTUx
NEM3NjQ3MENFOTIzNEUwMDdFRjNDRCAvKiBSZXNvdXJjZUhhbmRsZU1hYy5tbSAqLywKLQkJCQk1
MTRDNzY0OTBDRTkyMzRFMDA3RUYzQ0QgLyogUmVzb3VyY2VSZXF1ZXN0TWFjLm1tICovLAogCQkJ
CUUxODA4MTE0MTZGQ0Y5Q0IwMEI4MEQwNyAvKiBTeW5jaHJvbm91c0xvYWRlckNsaWVudC5tbSAq
LywKIAkJCQkxRkFGQkYxNjE1QTVGQTUyMDAwODNBMjAgLyogVVRJVXRpbGl0aWVzLmggKi8sCiAJ
CQkJMUZBRkJGMTcxNUE1RkE1MjAwMDgzQTIwIC8qIFVUSVV0aWxpdGllcy5tbSAqLywKQEAgLTIx
MDEyLDcgKzIxMDAxLDYgQEAKIAkJCQkxQUY4RTFDMTEyNTY3M0UwMDAyMzBGRjcgLyogUHJveHlT
ZXJ2ZXJDRk5ldC5jcHAgKi8sCiAJCQkJN0VFNjg0NTcxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291
cmNlRXJyb3IuaCAqLywKIAkJCQk3RUU2ODQ1ODEyRDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VF
cnJvckNGLmNwcCAqLywKLQkJCQk3RUU2ODQ1OTEyRDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VI
YW5kbGVDRk5ldC5jcHAgKi8sCiAJCQkJMjZGQUU0QzgxODUyRTNBNTAwNEM4QzQ2IC8qIFJlc291
cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuY3BwICovLAogCQkJCTI2RkFFNEM5MTg1
MkUzQTUwMDRDOEM0NiAvKiBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmgg
Ki8sCiAJCQkJMjZDMTVDRjQxODU3RTE1RDAwRjE1QzAzIC8qIFJlc291cmNlSGFuZGxlQ0ZVUkxD
b25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuY3BwICovLApAQCAtMjk5MTYsMTEg
KzI5OTA0LDkgQEAKIAkJCQk3RUU2ODQ2QjEyRDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VFcnJv
ckNGLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxNEM3NjUwMENFOTIzNEUwMDdFRjNDRCAvKiBS
ZXNvdXJjZUVycm9yTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE0Qzc2NzgwQ0U5MjNBMTAw
N0VGM0NEIC8qIFJlc291cmNlSGFuZGxlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTdFRTY4NDZD
MTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZUhhbmRsZUNGTmV0LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTI2RkFFNENDMTg1MkUzQTUwMDRDOEM0NiAvKiBSZXNvdXJjZUhhbmRsZUNGVVJMQ29u
bmVjdGlvbkRlbGVnYXRlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTI2QzE1Q0Y2MTg1N0UxNUQw
MEYxNUMwMyAvKiBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJh
dGlvblF1ZXVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxQkEwMDMxMTZGQjkyQUMwMEJBN0Ez
NSAvKiBSZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk3RTQyOENF
NTEzRTM0MDdGMDAzQjY2MUMgLyogUmVzb3VyY2VIYW5kbGVJT1MubW0gaW4gU291cmNlcyAqLywK
IAkJCQk1MTRDNzY1MTBDRTkyMzRFMDA3RUYzQ0QgLyogUmVzb3VyY2VIYW5kbGVNYWMubW0gaW4g
U291cmNlcyAqLywKIAkJCQk5M0UyMjdFMzBBRjU4OUFEMDBENDgzMjQgLyogUmVzb3VyY2VMb2Fk
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0VFNjg0NzUxMkQyNkU3MDAwRTc5NDE1IC8qIFJl
c291cmNlTG9hZGVyQ0ZOZXQuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yOTkzMyw4ICsyOTkxOSw2
IEBACiAJCQkJNTE0Qzc2N0MwQ0U5MjNBMTAwN0VGM0NEIC8qIFJlc291cmNlUmVxdWVzdEJhc2Uu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0VFNjg0NkUxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291
cmNlUmVxdWVzdENGTmV0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdFN0RFMUZEMTk1Q0VGMjYw
MDM1MzYzQiAvKiBSZXNvdXJjZVJlcXVlc3RDb2NvYS5tbSBpbiBTb3VyY2VzICovLAotCQkJCTdF
N0RFMjAyMTk1Q0VGQ0QwMDM1MzYzQiAvKiBSZXNvdXJjZVJlcXVlc3RJT1MubW0gaW4gU291cmNl
cyAqLywKLQkJCQk1MTRDNzY1MzBDRTkyMzRFMDA3RUYzQ0QgLyogUmVzb3VyY2VSZXF1ZXN0TWFj
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE0Qzc2N0UwQ0U5MjNBMTAwN0VGM0NEIC8qIFJlc291
cmNlUmVzcG9uc2VCYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdFRTY4NDcxMTJEMjZFMzgw
MEU3OTQxNSAvKiBSZXNvdXJjZVJlc3BvbnNlQ0ZOZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QTFGNzhEMEMxQzI1NDI0QzAwMjQ1NDQ2IC8qIFJlc291cmNlUmVzcG9uc2VDb2NvYS5tbSBpbiBT
b3VyY2VzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgJKHJl
dmlzaW9uIDIwNzAzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC01NSw3ICs1NSw3IEBACiAjaW5jbHVkZSAiUXVpY2tMb29rLmgi
CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKENPQ09BKSAmJiAhVVNFKENGTkVUV09SSykKKyNpZiBQ
TEFURk9STShDT0NPQSkKICNpbmNsdWRlIDx3dGYvU2NoZWR1bGVQYWlyLmg+CiAjZW5kaWYKIApA
QCAtMTQ1LDcgKzE0NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBzZXRUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJik7CiAgICAgICAg
IGNvbnN0IFN0cmluZyYgb3ZlcnJpZGVFbmNvZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fb3ZlcnJp
ZGVFbmNvZGluZzsgfQogCi0jaWYgUExBVEZPUk0oQ09DT0EpICYmICFVU0UoQ0ZORVRXT1JLKQor
I2lmIFBMQVRGT1JNKENPQ09BKQogICAgICAgICB2b2lkIHNjaGVkdWxlKFNjaGVkdWxlUGFpciYp
OwogICAgICAgICB2b2lkIHVuc2NoZWR1bGUoU2NoZWR1bGVQYWlyJik7CiAjZW5kaWYKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgJKHJldmlzaW9uIDIwNzAzOSkKKysrIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAkod29ya2luZyBjb3B5KQpAQCAtNDAz
LDcgKzQwMyw3IEBAIHB1YmxpYzoKICAgICBSZW1vdGVBWE9iamVjdFJlZiBhY2Nlc3NpYmlsaXR5
UmVtb3RlT2JqZWN0KCkgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQogICAgIE5TQ2FjaGVk
VVJMUmVzcG9uc2UqIHdpbGxDYWNoZVJlc3BvbnNlKERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQg
bG9uZywgTlNDYWNoZWRVUkxSZXNwb25zZSogcmVzcG9uc2UpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIHJlc3BvbnNlOyB9CiAjZW5kaWYKLSNpZiBQTEFURk9STShXSU4pICYmIFVTRShDRk5FVFdP
UkspCisjaWYgUExBVEZPUk0oV0lOKSAmJiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogICAgIC8vIEZJ
WE1FOiBXaW5kb3dzIHNob3VsZCB1c2Ugd2lsbENhY2hlUmVzcG9uc2UgLSA8aHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU3MjU3Pi4KICAgICBib29sIHNob3VsZENhY2hl
UmVzcG9uc2UoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nLCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiwgY29uc3QgdW5zaWduZWQgY2hhciosIHVuc2lnbmVkIGxvbmcgbG9uZykgb3ZlcnJp
ZGUgeyByZXR1cm4gdHJ1ZTsgfQogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXJDbGllbnQuaAkocmV2aXNpb24gMjA3MDM5KQorKysgU291cmNlL1dlYkNvcmUv
bG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI5Nyw3ICsyOTcs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgTlNDYWNoZWRVUkxSZXNw
b25zZSogd2lsbENhY2hlUmVzcG9uc2UoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlk
ZW50aWZpZXIsIE5TQ2FjaGVkVVJMUmVzcG9uc2UqKSBjb25zdCA9IDA7CiAgICAgICAgIHZpcnR1
YWwgTlNEaWN0aW9uYXJ5ICpkYXRhRGV0ZWN0aW9uQ29udGV4dCgpIHsgcmV0dXJuIG51bGxwdHI7
IH0KICNlbmRpZgotI2lmIFBMQVRGT1JNKFdJTikgJiYgVVNFKENGTkVUV09SSykKKyNpZiBQTEFU
Rk9STShXSU4pICYmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAgICAgICAgIC8vIEZJWE1FOiBXaW5k
b3dzIHNob3VsZCB1c2Ugd2lsbENhY2hlUmVzcG9uc2UgLSA8aHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTU3MjU3Pi4KICAgICAgICAgdmlydHVhbCBib29sIHNob3VsZENh
Y2hlUmVzcG9uc2UoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmLCBjb25zdCB1bnNpZ25lZCBjaGFyKiBkYXRhLCB1bnNpZ25l
ZCBsb25nIGxvbmcgbGVuZ3RoKSA9IDA7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9SZXNvdXJjZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1Jlc291cmNlTG9hZGVyLmNwcAkocmV2aXNpb24gMjA3MDM5KQorKysgU291cmNlL1dlYkNv
cmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzE1LDEyICs3
MTUsOCBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQXV0aGVudGljCiAgICAgfQog
ICAgIC8vIE9ubHkgdGhlc2UgcGxhdGZvcm1zIHByb3ZpZGUgYSB3YXkgdG8gY29udGludWUgd2l0
aG91dCBjcmVkZW50aWFscy4KICAgICAvLyBJZiB3ZSBjYW4ndCBjb250aW51ZSB3aXRoIGNyZWRl
bnRpYWxzLCB3ZSBuZWVkIHRvIGNhbmNlbCB0aGUgbG9hZCBhbHRvZ2V0aGVyLgotI2lmIFBMQVRG
T1JNKENPQ09BKSB8fCBVU0UoQ0ZORVRXT1JLKSB8fCBVU0UoQ1VSTCkgfHwgUExBVEZPUk0oR1RL
KSB8fCBQTEFURk9STShFRkwpCiAgICAgY2hhbGxlbmdlLmF1dGhlbnRpY2F0aW9uQ2xpZW50KCkt
PnJlY2VpdmVkUmVxdWVzdFRvQ29udGludWVXaXRob3V0Q3JlZGVudGlhbChjaGFsbGVuZ2UpOwog
ICAgIEFTU0VSVCghbV9oYW5kbGUgfHwgIW1faGFuZGxlLT5oYXNBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSgpKTsKLSNlbHNlCi0gICAgZGlkRmFpbChibG9ja2VkRXJyb3IoKSk7Ci0jZW5kaWYKIH0K
IAogI2lmIFVTRShQUk9URUNUSU9OX1NQQUNFX0FVVEhfQ0FMTEJBQ0spCkBAIC03NDcsNyArNzQz
LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6cmVjZWl2ZWRDYW5jZWxsYXRpbwogICAgIGNhbmNl
bCgpOwogfQogCi0jaWYgUExBVEZPUk0oQ09DT0EpICYmICFVU0UoQ0ZORVRXT1JLKQorI2lmIFBM
QVRGT1JNKENPQ09BKQogCiB2b2lkIFJlc291cmNlTG9hZGVyOjpzY2hlZHVsZShTY2hlZHVsZVBh
aXImIHBhaXIpCiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaAko
cmV2aXNpb24gMjA3MDM5KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTE0Myw3ICsxNDMsNyBAQCBwdWJsaWM6CiAKICAgICBjb25z
dCBMb2FkVGltaW5nJiBsb2FkVGltaW5nKCkgeyByZXR1cm4gbV9sb2FkVGltaW5nOyB9CiAKLSNp
ZiBQTEFURk9STShDT0NPQSkgJiYgIVVTRShDRk5FVFdPUkspCisjaWYgUExBVEZPUk0oQ09DT0Ep
CiAgICAgdm9pZCBzY2hlZHVsZShXVEY6OlNjaGVkdWxlUGFpciYpOwogICAgIHZvaWQgdW5zY2hl
ZHVsZShXVEY6OlNjaGVkdWxlUGFpciYpOwogI2VuZGlmCkBAIC0xNjMsMTIgKzE2Myw5IEBAIHBy
b3RlY3RlZDoKIAogICAgIGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucygpIHsg
cmV0dXJuIG1fb3B0aW9uczsgfQogCi0jaWYgUExBVEZPUk0oQ09DT0EpICYmICFVU0UoQ0ZORVRX
T1JLKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIE5TQ2FjaGVkVVJMUmVzcG9uc2UqIHdpbGxD
YWNoZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlKiwgTlNDYWNoZWRVUkxSZXNwb25zZSopIG92ZXJy
aWRlOwogI2VuZGlmCi0jaWYgUExBVEZPUk0oQ09DT0EpICYmIFVTRShDRk5FVFdPUkspCi0gICAg
Q0ZDYWNoZWRVUkxSZXNwb25zZVJlZiB3aWxsQ2FjaGVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSos
IENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYpIG92ZXJyaWRlOwotI2VuZGlmCiAKICAgICB2aXJ0dWFs
IHZvaWQgd2lsbFNlbmRSZXF1ZXN0SW50ZXJuYWwoUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSk7CiAKQEAgLTIwOCw3ICsyMDUsNyBAQCBw
cml2YXRlOgogI2lmIFBMQVRGT1JNKElPUykKICAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVm
PiBjb25uZWN0aW9uUHJvcGVydGllcyhSZXNvdXJjZUhhbmRsZSopIG92ZXJyaWRlOwogI2VuZGlm
Ci0jaWYgUExBVEZPUk0oV0lOKSAmJiBVU0UoQ0ZORVRXT1JLKQorI2lmIFBMQVRGT1JNKFdJTikg
JiYgVVNFKENGVVJMQ09OTkVDVElPTikKICAgICAvLyBGSVhNRTogV2luZG93cyBzaG91bGQgdXNl
IHdpbGxDYWNoZVJlc3BvbnNlIC0gPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD01NzI1Nz4uCiAgICAgYm9vbCBzaG91bGRDYWNoZVJlc3BvbnNlKFJlc291cmNlSGFuZGxl
KiwgQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZikgb3ZlcnJpZGU7CiAjZW5kaWYKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oCShyZXZpc2lvbiAyMDcwMzkpCisr
KyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtNzQsMTIgKzc0LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdpbGxDYW5jZWwoY29uc3Qg
UmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkQ2FuY2VsKGNvbnN0IFJlc291
cmNlRXJyb3ImKSBvdmVycmlkZTsKIAotI2lmIFBMQVRGT1JNKENPQ09BKSAmJiAhVVNFKENGTkVU
V09SSykKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICBOU0NhY2hlZFVSTFJlc3BvbnNlICp3aWxs
Q2FjaGVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSosIE5TQ2FjaGVkVVJMUmVzcG9uc2UqKSBvdmVy
cmlkZTsKICNlbmRpZgotI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBVU0UoQ0ZORVRXT1JLKQotICAg
IENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYgd2lsbENhY2hlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUq
LCBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmKSBvdmVycmlkZTsKLSNlbmRpZgogCiAjaWYgVVNFKE5F
VFdPUktfQ0ZEQVRBX0FSUkFZX0NBTExCQUNLKQogICAgIGJvb2wgc3VwcG9ydHNEYXRhQXJyYXko
KSBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2YvUmVzb3VyY2VMb2FkZXJDRk5ldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NmL1Jlc291cmNlTG9hZGVyQ0ZOZXQuY3BwCShyZXZpc2lvbiAyMDcwMzkpCisrKyBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2YvUmVzb3VyY2VMb2FkZXJDRk5ldC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI2LDE1ICsyNiwxMyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IlJlc291cmNlTG9hZGVyLmgiCiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQorI2lmIFVTRShDRlVSTENP
Tk5FQ1RJT04pCiAKICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgogI2luY2x1ZGUgIkZyYW1lTG9h
ZGVyQ2xpZW50LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotI2lmIFBMQVRGT1JNKFdJTikK
LQogYm9vbCBSZXNvdXJjZUxvYWRlcjo6c2hvdWxkQ2FjaGVSZXNwb25zZShSZXNvdXJjZUhhbmRs
ZSosIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYgY2FjaGVkUmVzcG9uc2UpCiB7CiAgICAgaWYgKG1f
b3B0aW9ucy5zZW5kTG9hZENhbGxiYWNrcyA9PSBEb05vdFNlbmRDYWxsYmFja3MpCkBAIC00NSw4
ICs0Myw2IEBAIGJvb2wgUmVzb3VyY2VMb2FkZXI6OnNob3VsZENhY2hlUmVzcG9uc2UKICAgICBy
ZXR1cm4gZnJhbWVMb2FkZXIoKS0+Y2xpZW50KCkuc2hvdWxkQ2FjaGVSZXNwb25zZShkb2N1bWVu
dExvYWRlcigpLCBpZGVudGlmaWVyKCksIHJlc3BvbnNlLCBDRkRhdGFHZXRCeXRlUHRyKGRhdGEp
LCBDRkRhdGFHZXRMZW5ndGgoZGF0YSkpOwogfQogCi0jZW5kaWYKLQogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCi0jZW5kaWYgLy8gVVNFKENGTkVUV09SSykKKyNlbmRpZiAvLyBVU0UoQ0ZVUkxD
T05ORUNUSU9OKQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL1N1YnJlc291cmNl
TG9hZGVyQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29h
L1N1YnJlc291cmNlTG9hZGVyQ29jb2EubW0JKHJldmlzaW9uIDIwNzAzOSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jb2NvYS9TdWJyZXNvdXJjZUxvYWRlckNvY29hLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0zNSwxOCArMzUsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSNpZiBVU0Uo
Q0ZORVRXT1JLKQotCi1DRkNhY2hlZFVSTFJlc3BvbnNlUmVmIFN1YnJlc291cmNlTG9hZGVyOjp3
aWxsQ2FjaGVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBDRkNhY2hlZFVSTFJlc3Bv
bnNlUmVmIGNhY2hlZFJlc3BvbnNlKQotewotICAgIERpc2tDYWNoZU1vbml0b3I6Om1vbml0b3JG
aWxlQmFja2luZ1N0b3JlQ3JlYXRpb24ocmVxdWVzdCgpLCBtX3Jlc291cmNlLT5zZXNzaW9uSUQo
KSwgY2FjaGVkUmVzcG9uc2UpOwotICAgIGlmICghbV9yZXNvdXJjZS0+c2hvdWxkQ2FjaGVSZXNw
b25zZShDRkNhY2hlZFVSTFJlc3BvbnNlR2V0V3JhcHBlZFJlc3BvbnNlKGNhY2hlZFJlc3BvbnNl
KSkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBSZXNvdXJjZUxvYWRlcjo6
d2lsbENhY2hlUmVzcG9uc2UoaGFuZGxlLCBjYWNoZWRSZXNwb25zZSk7Ci19Ci0KLSNlbHNlCi0K
IE5TQ2FjaGVkVVJMUmVzcG9uc2UqIFN1YnJlc291cmNlTG9hZGVyOjp3aWxsQ2FjaGVSZXNwb25z
ZShSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBOU0NhY2hlZFVSTFJlc3BvbnNlKiByZXNwb25zZSkK
IHsKICAgICBEaXNrQ2FjaGVNb25pdG9yOjptb25pdG9yRmlsZUJhY2tpbmdTdG9yZUNyZWF0aW9u
KHJlcXVlc3QoKSwgbV9yZXNvdXJjZS0+c2Vzc2lvbklEKCksIFtyZXNwb25zZSBfQ0ZDYWNoZWRV
UkxSZXNwb25zZV0pOwpAQCAtNTUsNiArNDMsNCBAQCBOU0NhY2hlZFVSTFJlc3BvbnNlKiBTdWJy
ZXNvdXJjZUxvYWRlcjo6CiAgICAgcmV0dXJuIFJlc291cmNlTG9hZGVyOjp3aWxsQ2FjaGVSZXNw
b25zZShoYW5kbGUsIHJlc3BvbnNlKTsKIH0KIAotI2VuZGlmCi0KIH0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9tYWMvRG9jdW1lbnRMb2FkZXJNYWMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9tYWMvRG9jdW1lbnRMb2FkZXJNYWMuY3BwCShyZXZpc2lvbiAy
MDcwMzkpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvbWFjL0RvY3VtZW50TG9hZGVyTWFjLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzMsOCArMzMsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLSNpZiAhVVNFKENGTkVUV09SSykKLQogc3RhdGljIHZvaWQgc2NoZWR1bGVBbGwoY29uc3Qg
UmVzb3VyY2VMb2FkZXJNYXAmIGxvYWRlcnMsIFNjaGVkdWxlUGFpciYgcGFpcikKIHsKICAgICBW
ZWN0b3I8UmVmUHRyPFJlc291cmNlTG9hZGVyPj4gbG9hZGVyc0NvcHk7CkBAIC02OSw2ICs2Nyw0
IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnVuc2NoZWR1bGUoU2NoZWR1bGUKICAgICB1bnNjaGVk
dWxlQWxsKG1fbXVsdGlwYXJ0U3VicmVzb3VyY2VMb2FkZXJzLCBwYWlyKTsKIH0KIAotI2VuZGlm
Ci0KLX0gLy8gbmFtZXNwYWNlCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvbWFjL1Jlc291cmNlTG9hZGVyTWFjLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9tYWMvUmVzb3VyY2VMb2FkZXJNYWMubW0JKHJldmlzaW9uIDIw
NzAzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9tYWMvUmVzb3VyY2VMb2FkZXJNYWMubW0J
KHdvcmtpbmcgY29weSkKQEAgLTM2LDE5ICszNiw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotI2lmIFVTRShDRk5FVFdPUkspCi0KLUNGQ2FjaGVkVVJMUmVzcG9uc2VSZWYgUmVzb3VyY2VM
b2FkZXI6OndpbGxDYWNoZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlKiwgQ0ZDYWNoZWRVUkxSZXNw
b25zZVJlZiBjYWNoZWRSZXNwb25zZSkKLXsKLSAgICBpZiAobV9vcHRpb25zLnNlbmRMb2FkQ2Fs
bGJhY2tzID09IERvTm90U2VuZENhbGxiYWNrcykKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0K
LSAgICBSZXRhaW5QdHI8TlNDYWNoZWRVUkxSZXNwb25zZT4gbnNDYWNoZWRSZXNwb25zZSA9IGFk
b3B0TlMoW1tOU0NhY2hlZFVSTFJlc3BvbnNlIGFsbG9jXSBfaW5pdFdpdGhDRkNhY2hlZFVSTFJl
c3BvbnNlOmNhY2hlZFJlc3BvbnNlXSk7Ci0gICAgcmV0dXJuIFtmcmFtZUxvYWRlcigpLT5jbGll
bnQoKS53aWxsQ2FjaGVSZXNwb25zZShkb2N1bWVudExvYWRlcigpLCBpZGVudGlmaWVyKCksIG5z
Q2FjaGVkUmVzcG9uc2UuZ2V0KCkpIF9DRkNhY2hlZFVSTFJlc3BvbnNlXTsKLX0KLQotI2Vsc2UK
LQogTlNDYWNoZWRVUkxSZXNwb25zZSogUmVzb3VyY2VMb2FkZXI6OndpbGxDYWNoZVJlc3BvbnNl
KFJlc291cmNlSGFuZGxlKiwgTlNDYWNoZWRVUkxSZXNwb25zZSogcmVzcG9uc2UpCiB7CiAgICAg
aWYgKG1fb3B0aW9ucy5zZW5kTG9hZENhbGxiYWNrcyA9PSBEb05vdFNlbmRDYWxsYmFja3MpCkBA
IC01Niw4ICs0Myw2IEBAIE5TQ2FjaGVkVVJMUmVzcG9uc2UqIFJlc291cmNlTG9hZGVyOjp3aWwK
ICAgICByZXR1cm4gZnJhbWVMb2FkZXIoKS0+Y2xpZW50KCkud2lsbENhY2hlUmVzcG9uc2UoZG9j
dW1lbnRMb2FkZXIoKSwgaWRlbnRpZmllcigpLCByZXNwb25zZSk7CiB9CiAKLSNlbmRpZgotCiAj
aWYgVVNFKE5FVFdPUktfQ0ZEQVRBX0FSUkFZX0NBTExCQUNLKQogCiB2b2lkIFJlc291cmNlTG9h
ZGVyOjpkaWRSZWNlaXZlRGF0YUFycmF5KENGQXJyYXlSZWYgZGF0YUFycmF5KQpJbmRleDogU291
cmNlL1dlYkNvcmUvcGFnZS9tYWMvUGFnZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wYWdlL21hYy9QYWdlTWFjLm1tCShyZXZpc2lvbiAyMDcwMzkpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wYWdlL21hYy9QYWdlTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00NSwxMSArNDUsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB2b2lkIFBhZ2U6OnBsYXRmb3JtSW5pdGlhbGl6ZSgpCiB7
CiAjaWYgUExBVEZPUk0oSU9TKQotI2lmIFVTRShDRk5FVFdPUkspCi0gICAgYWRkU2NoZWR1bGVQ
YWlyKFNjaGVkdWxlUGFpcjo6Y3JlYXRlKFdlYlRocmVhZFJ1bkxvb3AoKSwga0NGUnVuTG9vcENv
bW1vbk1vZGVzKSk7Ci0jZWxzZQogICAgIGFkZFNjaGVkdWxlUGFpcihTY2hlZHVsZVBhaXI6OmNy
ZWF0ZShXZWJUaHJlYWROU1J1bkxvb3AoKSwga0NGUnVuTG9vcENvbW1vbk1vZGVzKSk7Ci0jZW5k
aWYgLy8gVVNFKENGTkVUV09SSykKICNlbHNlCiAgICAgYWRkU2NoZWR1bGVQYWlyKFNjaGVkdWxl
UGFpcjo6Y3JlYXRlKFtOU1J1bkxvb3AgY3VycmVudFJ1bkxvb3BdLCBrQ0ZSdW5Mb29wQ29tbW9u
TW9kZXMpKTsKICNlbmRpZgpAQCAtNjksMTQgKzY1LDEyIEBAIHZvaWQgUGFnZTo6YWRkU2NoZWR1
bGVQYWlyKFJlZjxTY2hlZHVsZVAKICAgICAgICAgbV9zY2hlZHVsZWRSdW5Mb29wUGFpcnMgPSBz
dGQ6Om1ha2VfdW5pcXVlPFNjaGVkdWxlUGFpckhhc2hTZXQ+KCk7CiAgICAgbV9zY2hlZHVsZWRS
dW5Mb29wUGFpcnMtPmFkZChwYWlyLnB0cigpKTsKIAotI2lmICFVU0UoQ0ZORVRXT1JLKQogICAg
IGZvciAoRnJhbWUqIGZyYW1lID0gJm1fbWFpbkZyYW1lLmdldCgpOyBmcmFtZTsgZnJhbWUgPSBm
cmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgpKSB7CiAgICAgICAgIGlmIChEb2N1bWVudExvYWRl
ciogZG9jdW1lbnRMb2FkZXIgPSBmcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKSkKICAg
ICAgICAgICAgIGRvY3VtZW50TG9hZGVyLT5zY2hlZHVsZShwYWlyKTsKICAgICAgICAgaWYgKERv
Y3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlciA9IGZyYW1lLT5sb2FkZXIoKS5wcm92aXNpb25h
bERvY3VtZW50TG9hZGVyKCkpCiAgICAgICAgICAgICBkb2N1bWVudExvYWRlci0+c2NoZWR1bGUo
cGFpcik7CiAgICAgfQotI2VuZGlmCiAKICAgICAvLyBGSVhNRTogbWFrZSBTaGFyZWRUaW1lck1h
YyB1c2UgdGhlc2UgU2NoZWR1bGVQYWlycy4KIH0KQEAgLTg5LDE0ICs4MywxMiBAQCB2b2lkIFBh
Z2U6OnJlbW92ZVNjaGVkdWxlUGFpcihSZWY8U2NoZWR1CiAKICAgICBtX3NjaGVkdWxlZFJ1bkxv
b3BQYWlycy0+cmVtb3ZlKHBhaXIucHRyKCkpOwogCi0jaWYgIVVTRShDRk5FVFdPUkspCiAgICAg
Zm9yIChGcmFtZSogZnJhbWUgPSAmbV9tYWluRnJhbWUuZ2V0KCk7IGZyYW1lOyBmcmFtZSA9IGZy
YW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KCkpIHsKICAgICAgICAgaWYgKERvY3VtZW50TG9hZGVy
KiBkb2N1bWVudExvYWRlciA9IGZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpKQogICAg
ICAgICAgICAgZG9jdW1lbnRMb2FkZXItPnVuc2NoZWR1bGUocGFpcik7CiAgICAgICAgIGlmIChE
b2N1bWVudExvYWRlciogZG9jdW1lbnRMb2FkZXIgPSBmcmFtZS0+bG9hZGVyKCkucHJvdmlzaW9u
YWxEb2N1bWVudExvYWRlcigpKQogICAgICAgICAgICAgZG9jdW1lbnRMb2FkZXItPnVuc2NoZWR1
bGUocGFpcik7CiAgICAgfQotI2VuZGlmCiB9CiAKIH0gLy8gbmFtZXNwYWNlCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakMubW0JKHJldmlzaW9uIDIwNzAzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakMubW0JKHdvcmtpbmcgY29weSkKQEAgLTEwOSwxMCArMTA5LDYgQEAKICNpbXBv
cnQgPFZpZGVvVG9vbGJveC9WaWRlb1Rvb2xib3guaD4KICNlbmRpZgogCi0jaWYgVVNFKENGTkVU
V09SSykKLSNpbmNsdWRlICJDRk5TVVJMQ29ubmVjdGlvblNQSS5oIgotI2VuZGlmCi0KICNpbXBv
cnQgIkNvcmVWaWRlb1NvZnRMaW5rLmgiCiAKIG5hbWVzcGFjZSBzdGQgewpAQCAtMzcyLDU4ICsz
NjgsNiBAQCBzdGF0aWMgZGlzcGF0Y2hfcXVldWVfdCBnbG9iYWxQdWxsRGVsZWdhCiB9CiAjZW5k
aWYKIAotI2lmIFVTRShDRk5FVFdPUkspCi1jbGFzcyBXZWJDb3JlTlNVUkxBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZUNsaWVudCA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYkNvcmVOU1VSTEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlQ2xpZW50PiwgcHVibGljIEF1dGhlbnRpY2F0aW9uQ2xpZW50IHsKLXB1
YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPFdlYkNvcmVOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlQ2xpZW50PiBjcmVhdGUoTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqY2hhbGxlbmdl
KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJDb3JlTlNVUkxBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZUNsaWVudChjaGFsbGVuZ2UpKTsKLSAgICB9Ci0KLSAgICB1c2luZyBS
ZWZDb3VudGVkPFdlYkNvcmVOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQ2xpZW50Pjo6cmVm
OwotICAgIHVzaW5nIFJlZkNvdW50ZWQ8V2ViQ29yZU5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVu
Z2VDbGllbnQ+OjpkZXJlZjsKLQotcHJpdmF0ZToKLSAgICBXZWJDb3JlTlNVUkxBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZUNsaWVudChOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICpjaGFsbGVu
Z2UpCi0gICAgICAgIDogbV9jaGFsbGVuZ2UoY2hhbGxlbmdlKQotICAgIHsKLSAgICAgICAgQVNT
RVJUKG1fY2hhbGxlbmdlKTsKLSAgICB9Ci0KLSAgICB2b2lkIHJlZkF1dGhlbnRpY2F0aW9uQ2xp
ZW50KCkgb3ZlcnJpZGUgeyByZWYoKTsgfQotICAgIHZvaWQgZGVyZWZBdXRoZW50aWNhdGlvbkNs
aWVudCgpIG92ZXJyaWRlIHsgZGVyZWYoKTsgfQotCi0gICAgdm9pZCByZWNlaXZlZENyZWRlbnRp
YWwoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmLCBjb25zdCBDcmVkZW50aWFsJiBjcmVk
ZW50aWFsKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgW1ttX2NoYWxsZW5nZSBzZW5kZXJdIHVz
ZUNyZWRlbnRpYWw6Y3JlZGVudGlhbC5uc0NyZWRlbnRpYWwoKSBmb3JBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZTptX2NoYWxsZW5nZS5nZXQoKV07Ci0gICAgfQotCi0gICAgdm9pZCByZWNlaXZlZFJl
cXVlc3RUb0NvbnRpbnVlV2l0aG91dENyZWRlbnRpYWwoY29uc3QgQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UmKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgW1ttX2NoYWxsZW5nZSBzZW5kZXJdIGNv
bnRpbnVlV2l0aG91dENyZWRlbnRpYWxGb3JBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTptX2NoYWxs
ZW5nZS5nZXQoKV07Ci0gICAgfQotCi0gICAgdm9pZCByZWNlaXZlZENhbmNlbGxhdGlvbihjb25z
dCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBbW21f
Y2hhbGxlbmdlIHNlbmRlcl0gY2FuY2VsQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6bV9jaGFsbGVu
Z2UuZ2V0KCldOwotICAgIH0KLQotICAgIHZvaWQgcmVjZWl2ZWRSZXF1ZXN0VG9QZXJmb3JtRGVm
YXVsdEhhbmRsaW5nKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikgb3ZlcnJpZGUKLSAg
ICB7Ci0gICAgICAgIGlmIChbW21fY2hhbGxlbmdlIHNlbmRlcl0gcmVzcG9uZHNUb1NlbGVjdG9y
OkBzZWxlY3RvcihwZXJmb3JtRGVmYXVsdEhhbmRsaW5nRm9yQXV0aGVudGljYXRpb25DaGFsbGVu
Z2U6KV0pCi0gICAgICAgICAgICBbW21fY2hhbGxlbmdlIHNlbmRlcl0gcGVyZm9ybURlZmF1bHRI
YW5kbGluZ0ZvckF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOm1fY2hhbGxlbmdlLmdldCgpXTsKLSAg
ICB9Ci0KLSAgICB2b2lkIHJlY2VpdmVkQ2hhbGxlbmdlUmVqZWN0aW9uKGNvbnN0IEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlJikgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIGlmIChbW21fY2hhbGxl
bmdlIHNlbmRlcl0gcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihyZWplY3RQcm90ZWN0aW9u
U3BhY2VBbmRDb250aW51ZVdpdGhDaGFsbGVuZ2U6KV0pCi0gICAgICAgICAgICBbW21fY2hhbGxl
bmdlIHNlbmRlcl0gcmVqZWN0UHJvdGVjdGlvblNwYWNlQW5kQ29udGludWVXaXRoQ2hhbGxlbmdl
Om1fY2hhbGxlbmdlLmdldCgpXTsKLSAgICB9Ci0KLSAgICBSZXRhaW5QdHI8TlNVUkxBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZT4gbV9jaGFsbGVuZ2U7Ci19OwotI2VuZGlmCi0KIHZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cmVnaXN0ZXJNZWRpYUVuZ2luZShNZWRpYUVu
Z2luZVJlZ2lzdHJhciByZWdpc3RyYXIpCiB7CiAgICAgaWYgKCFpc0F2YWlsYWJsZSgpKQpAQCAt
MTc5NywxNSArMTc0MSw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
QzoKIAogYm9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzaG91bGRXYWl0
Rm9yUmVzcG9uc2VUb0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKE5TVVJMQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UqIG5zQ2hhbGxlbmdlKQogewotI2lmIFVTRShDRk5FVFdPUkspCi0gICAgUmVmUHRy
PFdlYkNvcmVOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQ2xpZW50PiBjbGllbnQgPSBXZWJD
b3JlTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUNsaWVudDo6Y3JlYXRlKG5zQ2hhbGxlbmdl
KTsKLSAgICBSZXRhaW5QdHI8Q0ZVUkxBdXRoQ2hhbGxlbmdlUmVmPiBjZkNoYWxsZW5nZSA9IGFk
b3B0Q0YoW25zQ2hhbGxlbmdlIF9jcmVhdGVDRkF1dGhDaGFsbGVuZ2VdKTsKLSAgICBBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSBjaGFsbGVuZ2UoY2ZDaGFsbGVuZ2UuZ2V0KCksIGNsaWVudC5nZXQo
KSk7Ci0jZWxzZQotICAgIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIGNoYWxsZW5nZShuc0NoYWxs
ZW5nZSk7Ci0jZW5kaWYKLQotICAgIHJldHVybiBwbGF5ZXIoKS0+c2hvdWxkV2FpdEZvclJlc3Bv
bnNlVG9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZShjaGFsbGVuZ2UpOworICAgIHJldHVybiBwbGF5
ZXIoKS0+c2hvdWxkV2FpdEZvclJlc3BvbnNlVG9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZShBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZShuc0NoYWxsZW5nZSkpOwogfQogCiB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmRpZENhbmNlbExvYWRpbmdSZXF1ZXN0KEFWQXNzZXRS
ZXNvdXJjZUxvYWRpbmdSZXF1ZXN0KiBhdlJlcXVlc3QpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgJKHJldmlzaW9u
IDIwNzAzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50
ZXJmYWNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTc3LDcgKzc3LDcgQEAgdHlwZWRlZiBzdHJ1Y3Qg
X05TUmVjdCBOU1JlY3Q7CiAjaW5jbHVkZSA8Q29yZUdyYXBoaWNzL0NvcmVHcmFwaGljcy5oPgog
I2VuZGlmCiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiB0
eXBlZGVmIHN0cnVjdCBPcGFxdWVDRkhUVFBDb29raWVTdG9yYWdlKiAgQ0ZIVFRQQ29va2llU3Rv
cmFnZVJlZjsKIHR5cGVkZWYgc3RydWN0IF9DRlVSTFByb3RlY3Rpb25TcGFjZSogQ0ZVUkxQcm90
ZWN0aW9uU3BhY2VSZWY7CiB0eXBlZGVmIHN0cnVjdCBfQ0ZVUkxDcmVkZW50aWFsKiBXS0NGVVJM
Q3JlZGVudGlhbFJlZjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0
d29ya1N0b3JhZ2VTZXNzaW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaAkocmV2aXNpb24gMjA3MDM5KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaAko
d29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNyBAQAogI2luY2x1ZGUgIlNlc3Npb25JRC5oIgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCi0jaWYgUExBVEZPUk0oQ09DT0EpIHx8
IFVTRShDRk5FVFdPUkspCisjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRlVSTENPTk5FQ1RJ
T04pCiAjaW5jbHVkZSAiQ0ZOZXR3b3JrU1BJLmgiCiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5o
PgogI2VuZGlmCkBAIC01OSw3ICs1OSw3IEBAIHB1YmxpYzoKICAgICBTZXNzaW9uSUQgc2Vzc2lv
bklEKCkgY29uc3QgeyByZXR1cm4gbV9zZXNzaW9uSUQ7IH0KICAgICBDcmVkZW50aWFsU3RvcmFn
ZSYgY3JlZGVudGlhbFN0b3JhZ2UoKSB7IHJldHVybiBtX2NyZWRlbnRpYWxTdG9yYWdlOyB9CiAK
LSNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKENGTkVUV09SSykKKyNpZiBQTEFURk9STShDT0NP
QSkgfHwgVVNFKENGVVJMQ09OTkVDVElPTikKICAgICBOZXR3b3JrU3RvcmFnZVNlc3Npb24oU2Vz
c2lvbklELCBSZXRhaW5QdHI8Q0ZVUkxTdG9yYWdlU2Vzc2lvblJlZj4pOwogCiAgICAgLy8gTWF5
IGJlIG51bGwsIGluIHdoaWNoIGNhc2UgYSBGb3VuZGF0aW9uIGRlZmF1bHQgc2hvdWxkIGJlIHVz
ZWQuCkBAIC04NCw3ICs4NCw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIEhhc2hNYXA8U2Vzc2lv
bklELCBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya1N0b3JhZ2VTZXNzaW9uPj4mIGdsb2JhbFNlc3Np
b25NYXAoKTsKICAgICBTZXNzaW9uSUQgbV9zZXNzaW9uSUQ7CiAKLSNpZiBQTEFURk9STShDT0NP
QSkgfHwgVVNFKENGTkVUV09SSykKKyNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKENGVVJMQ09O
TkVDVElPTikKICAgICBSZXRhaW5QdHI8Q0ZVUkxTdG9yYWdlU2Vzc2lvblJlZj4gbV9wbGF0Zm9y
bVNlc3Npb247CiAjZWxpZiBVU0UoU09VUCkKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U291cE5ldHdv
cmtTZXNzaW9uPiBtX3Nlc3Npb247CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL1Byb3RlY3Rpb25TcGFjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvUHJvdGVjdGlvblNwYWNlLmgJKHJldmlzaW9uIDIwNzAzOSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUHJvdGVjdGlvblNwYWNlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTIzLDEyICsyMywxMSBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAotI2lmbmRlZiBQ
cm90ZWN0aW9uU3BhY2VfaAotI2RlZmluZSBQcm90ZWN0aW9uU3BhY2VfaAorI3ByYWdtYSBvbmNl
CiAKICNpZiBQTEFURk9STShDT0NPQSkKICNpbmNsdWRlICJQcm90ZWN0aW9uU3BhY2VDb2NvYS5o
IgotI2VsaWYgVVNFKENGTkVUV09SSykKKyNlbGlmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAjaW5j
bHVkZSAiUHJvdGVjdGlvblNwYWNlQ0ZOZXQuaCIKICNlbHNlCiAKQEAgLTUwLDUgKzQ5LDMgQEAg
cHVibGljOgogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYKLQotI2VuZGlmIC8vIFBy
b3RlY3Rpb25TcGFjZV9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1By
b3RlY3Rpb25TcGFjZUJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvUHJvdGVjdGlvblNwYWNlQmFzZS5jcHAJKHJldmlzaW9uIDIwNzAzOSkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUHJvdGVjdGlvblNwYWNlQmFzZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI3LDExICsyNyw2IEBACiAKICNpbmNsdWRlICJQcm90ZWN0aW9u
U3BhY2UuaCIKIAotI2lmIFVTRShDRk5FVFdPUkspICYmICFQTEFURk9STShDT0NPQSkKLSNpbmNs
dWRlICJBdXRoZW50aWNhdGlvbkNGLmgiCi0jaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGVVJMUHJvdGVj
dGlvblNwYWNlUHJpdi5oPgotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogLy8gTmVl
ZCB0byBlbmZvcmNlIGVtcHR5LCBub24tbnVsbCBzdHJpbmdzIGR1ZSB0byB0aGUgcGlja2luZXNz
IG9mIHRoZSBTdHJpbmcgPT0gU3RyaW5nIG9wZXJhdG9yCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmNwcAkocmV2aXNpb24gMjA3
MDM5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE1NCw3ICsxNTQsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxl
OjpjbGVhckNsaWVudCgpCiAgICAgZC0+bV9jbGllbnQgPSBudWxscHRyOwogfQogCi0jaWYgIVBM
QVRGT1JNKENPQ09BKSAmJiAhVVNFKENGTkVUV09SSykgJiYgIVVTRShTT1VQKQorI2lmICFQTEFU
Rk9STShDT0NPQSkgJiYgIVVTRShDRlVSTENPTk5FQ1RJT04pICYmICFVU0UoU09VUCkKIC8vIFJl
c291cmNlSGFuZGxlIG5ldmVyIHVzZXMgYXN5bmMgY2xpZW50IGNhbGxzIG9uIHRoZXNlIHBsYXRm
b3JtcyB5ZXQuCiB2b2lkIFJlc291cmNlSGFuZGxlOjpjb250aW51ZVdpbGxTZW5kUmVxdWVzdChS
ZXNvdXJjZVJlcXVlc3QmJikKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VIYW5kbGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmgJKHJldmlzaW9uIDIwNzAzOSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaAkod29ya2luZyBjb3B5KQpA
QCAtMzEsNyArMzEsNyBAQAogI2luY2x1ZGUgIlJlc291cmNlTG9hZFByaW9yaXR5LmgiCiAjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAotI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZO
RVRXT1JLKQorI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogI2lu
Y2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNlbmRpZgogCkBAIC02MCwxNCArNjAsMTQgQEAgdHlw
ZWRlZiBzdHJ1Y3Qgb2JqY19vYmplY3QgKmlkOwogI2VuZGlmCiAjZW5kaWYKIAotI2lmIFVTRShD
Rk5FVFdPUkspCisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKIHR5cGVkZWYgY29uc3Qgc3RydWN0
IF9DRkNhY2hlZFVSTFJlc3BvbnNlKiBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmOwogdHlwZWRlZiBz
dHJ1Y3QgX0NGVVJMQ29ubmVjdGlvbiogQ0ZVUkxDb25uZWN0aW9uUmVmOwogdHlwZWRlZiBpbnQg
Q0ZIVFRQQ29va2llU3RvcmFnZUFjY2VwdFBvbGljeTsKIHR5cGVkZWYgc3RydWN0IE9wYXF1ZUNG
SFRUUENvb2tpZVN0b3JhZ2UqIENGSFRUUENvb2tpZVN0b3JhZ2VSZWY7CiAjZW5kaWYKIAotI2lm
IFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZORVRXT1JLKQorI2lmIFBMQVRGT1JNKENPQ09BKSB8
fCBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgX19DRlVSTFN0b3Jh
Z2VTZXNzaW9uKiBDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmOwogI2VuZGlmCiAKQEAgLTkyLDIyICs5
MiwxNyBAQCBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xh
c3MgVGltZXI7CiAKLWNsYXNzIFJlc291cmNlSGFuZGxlIDogcHVibGljIFJlZkNvdW50ZWQ8UmVz
b3VyY2VIYW5kbGU+Ci0jaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRk5FVFdPUkspIHx8IFVT
RShDVVJMKSB8fCBVU0UoU09VUCkKLSAgICAsIHB1YmxpYyBBdXRoZW50aWNhdGlvbkNsaWVudAot
I2VuZGlmCi0gICAgeworY2xhc3MgUmVzb3VyY2VIYW5kbGUgOiBwdWJsaWMgUmVmQ291bnRlZDxS
ZXNvdXJjZUhhbmRsZT4gLCBwdWJsaWMgQXV0aGVudGljYXRpb25DbGllbnQgewogcHVibGljOgog
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8UmVzb3VyY2VIYW5kbGU+IGNyZWF0ZShO
ZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFJlc291cmNlSGFuZGxl
Q2xpZW50KiwgYm9vbCBkZWZlcnNMb2FkaW5nLCBib29sIHNob3VsZENvbnRlbnRTbmlmZik7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgbG9hZFJlc291cmNlU3luY2hyb25vdXNseShO
ZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFN0b3JlZENyZWRlbnRp
YWxzLCBSZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VSZXNwb25zZSYsIFZlY3RvcjxjaGFyPiYgZGF0
YSk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5SZXNvdXJjZUhhbmRsZSgpOwogCi0j
aWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRk5FVFdPUkspCisjaWYgUExBVEZPUk0oQ09DT0Ep
IHx8IFVTRShDRlVSTENPTk5FQ1RJT04pCiAgICAgUmVzb3VyY2VSZXF1ZXN0IHdpbGxTZW5kUmVx
dWVzdChSZXNvdXJjZVJlcXVlc3QmJiwgUmVzb3VyY2VSZXNwb25zZSYmKTsKICNlbmRpZgogCi0j
aWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRk5FVFdPUkspIHx8IFVTRShDVVJMKSB8fCBVU0Uo
U09VUCkKICAgICBib29sIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKCk7CiAgICAgdm9pZCBk
aWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY29uc3QgQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UmKTsKICAgICB2b2lkIHJlY2VpdmVkQ3JlZGVudGlhbChjb25zdCBBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSYsIGNvbnN0IENyZWRlbnRpYWwmKSBvdmVycmlkZTsKQEAgLTExNSw5ICsxMTAs
OCBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWNlaXZlZENhbmNlbGxhdGlvbihjb25zdCBBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVjZWl2ZWRSZXF1ZXN0VG9Q
ZXJmb3JtRGVmYXVsdEhhbmRsaW5nKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikgb3Zl
cnJpZGU7CiAgICAgdm9pZCByZWNlaXZlZENoYWxsZW5nZVJlamVjdGlvbihjb25zdCBBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSYpIG92ZXJyaWRlOwotI2VuZGlmCiAKLSNpZiBQTEFURk9STShDT0NP
QSkgfHwgVVNFKENGTkVUV09SSykKKyNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKENGVVJMQ09O
TkVDVElPTikKICAgICBib29sIHRyeUhhbmRsZVBhc3N3b3JkQmFzZWRBdXRoZW50aWNhdGlvbihj
b25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpOwogI2VuZGlmCiAKQEAgLTEyNSw3ICsxMTks
NyBAQCBwdWJsaWM6CiAgICAgYm9vbCBjYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNw
YWNlKGNvbnN0IFByb3RlY3Rpb25TcGFjZSYpOwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShDT0NP
QSkgJiYgIVVTRShDRk5FVFdPUkspCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgV0VCQ09SRV9F
WFBPUlQgTlNVUkxDb25uZWN0aW9uICpjb25uZWN0aW9uKCkgY29uc3Q7CiAgICAgaWQgbWFrZURl
bGVnYXRlKGJvb2wpOwogICAgIGlkIGRlbGVnYXRlKCk7CkBAIC0xMzMsMTkgKzEyNywxNSBAQCBw
dWJsaWM6CiAjZW5kaWYKICAgICAgICAgCiAjaWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShX
RUJfVElNSU5HKQotI2lmIFVTRShDRk5FVFdPUkspCi0gICAgc3RhdGljIHZvaWQgZ2V0Q29ubmVj
dGlvblRpbWluZ0RhdGEoQ0ZVUkxDb25uZWN0aW9uUmVmLCBOZXR3b3JrTG9hZFRpbWluZyYpOwot
I2Vsc2UKICAgICBzdGF0aWMgdm9pZCBnZXRDb25uZWN0aW9uVGltaW5nRGF0YShOU1VSTENvbm5l
Y3Rpb24gKiwgTmV0d29ya0xvYWRUaW1pbmcmKTsKICNlbmRpZgotI2VuZGlmCiAgICAgICAgIAog
I2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZvaWQgc2NoZWR1bGUoV1RGOjpTY2hlZHVsZVBhaXIm
KTsKICAgICB2b2lkIHVuc2NoZWR1bGUoV1RGOjpTY2hlZHVsZVBhaXImKTsKICNlbmRpZgogCi0j
aWYgVVNFKENGTkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogICAgIENGVVJMU3Rv
cmFnZVNlc3Npb25SZWYgc3RvcmFnZVNlc3Npb24oKSBjb25zdDsKICAgICBDRlVSTENvbm5lY3Rp
b25SZWYgY29ubmVjdGlvbigpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxD
RlVSTENvbm5lY3Rpb25SZWY+IHJlbGVhc2VDb25uZWN0aW9uRm9yRG93bmxvYWQoKTsKQEAgLTIw
OCwxMCArMTk4LDEwIEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgLy8gQ2FsbGVkIGluIHJlc3Bv
bnNlIHRvIFJlc291cmNlSGFuZGxlQ2xpZW50Ojp3aWxsQ2FjaGVSZXNwb25zZUFzeW5jKCkuCi0j
aWYgVVNFKENGTkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgY29udGludWVXaWxsQ2FjaGVSZXNwb25zZShDRkNhY2hlZFVSTFJlc3BvbnNl
UmVmKTsKICNlbmRpZgotI2lmIFBMQVRGT1JNKENPQ09BKSAmJiAhVVNFKENGTkVUV09SSykKKyNp
ZiBQTEFURk9STShDT0NPQSkKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvbnRpbnVlV2lsbENh
Y2hlUmVzcG9uc2UoTlNDYWNoZWRVUkxSZXNwb25zZSAqKTsKICNlbmRpZgogCkBAIC0yMjcsMTQg
KzIxNywxMCBAQCBwdWJsaWM6CiAgICAgdXNpbmcgUmVmQ291bnRlZDxSZXNvdXJjZUhhbmRsZT46
OnJlZjsKICAgICB1c2luZyBSZWZDb3VudGVkPFJlc291cmNlSGFuZGxlPjo6ZGVyZWY7CiAKLSNp
ZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKENGTkVUV09SSykKKyNpZiBQTEFURk9STShDT0NPQSkg
fHwgVVNFKENGVVJMQ09OTkVDVElPTikKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgQ0ZTdHJp
bmdSZWYgc3luY2hyb25vdXNMb2FkUnVuTG9vcE1vZGUoKTsKICNlbmRpZgogCi0jaWYgUExBVEZP
Uk0oSU9TKSAmJiBVU0UoQ0ZORVRXT1JLKQotICAgIHN0YXRpYyBDRk11dGFibGVEaWN0aW9uYXJ5
UmVmIGNyZWF0ZVNTTFByb3BlcnRpZXNGcm9tTlNVUkxSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVx
dWVzdCYpOwotI2VuZGlmCi0KICAgICB0eXBlZGVmIFJlZjxSZXNvdXJjZUhhbmRsZT4gKCpCdWls
dGluQ29uc3RydWN0b3IpKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVzb3VyY2VI
YW5kbGVDbGllbnQqIGNsaWVudCk7CiAgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJCdWlsdGluQ29u
c3RydWN0b3IoY29uc3QgQXRvbWljU3RyaW5nJiBwcm90b2NvbCwgQnVpbHRpbkNvbnN0cnVjdG9y
KTsKIApAQCAtMjYzLDE5ICsyNDksMTkgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlZkF1dGhlbnRp
Y2F0aW9uQ2xpZW50KCkgb3ZlcnJpZGUgeyByZWYoKTsgfQogICAgIHZvaWQgZGVyZWZBdXRoZW50
aWNhdGlvbkNsaWVudCgpIG92ZXJyaWRlIHsgZGVyZWYoKTsgfQogCi0jaWYgUExBVEZPUk0oQ09D
T0EpIHx8IFVTRShDRk5FVFdPUkspCisjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRlVSTENP
Tk5FQ1RJT04pCiAgICAgZW51bSBjbGFzcyBTY2hlZHVsaW5nQmVoYXZpb3IgeyBBc3luY2hyb25v
dXMsIFN5bmNocm9ub3VzIH07CiAjZW5kaWYKIAotI2lmIFVTRShDRk5FVFdPUkspCisjaWYgVVNF
KENGVVJMQ09OTkVDVElPTikKICAgICB2b2lkIGNyZWF0ZUNGVVJMQ29ubmVjdGlvbihib29sIHNo
b3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlLCBib29sIHNob3VsZENvbnRlbnRTbmlmZiwgU2NoZWR1
bGluZ0JlaGF2aW9yLCBDRkRpY3Rpb25hcnlSZWYgY2xpZW50UHJvcGVydGllcyk7CiAjZW5kaWYK
IAotI2lmIFBMQVRGT1JNKE1BQykgJiYgIVVTRShDRk5FVFdPUkspCisjaWYgUExBVEZPUk0oTUFD
KQogICAgIHZvaWQgY3JlYXRlTlNVUkxDb25uZWN0aW9uKGlkIGRlbGVnYXRlLCBib29sIHNob3Vs
ZFVzZUNyZWRlbnRpYWxTdG9yYWdlLCBib29sIHNob3VsZENvbnRlbnRTbmlmZiwgU2NoZWR1bGlu
Z0JlaGF2aW9yKTsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oSU9TKSAmJiAhVVNFKENGTkVUV09S
SykKKyNpZiBQTEFURk9STShJT1MpCiAgICAgdm9pZCBjcmVhdGVOU1VSTENvbm5lY3Rpb24oaWQg
ZGVsZWdhdGUsIGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UsIGJvb2wgc2hvdWxkQ29u
dGVudFNuaWZmLCBTY2hlZHVsaW5nQmVoYXZpb3IsIE5TRGljdGlvbmFyeSAqY29ubmVjdGlvblBy
b3BlcnRpZXMpOwogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwCShyZXZpc2lvbiAyMDcw
MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xp
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjIsNyArNjIsNyBAQCB2b2lkIFJlc291cmNlSGFu
ZGxlQ2xpZW50OjpjYW5BdXRoZW50aWNhCiB9CiAjZW5kaWYKIAotI2lmIFVTRShDRk5FVFdPUksp
CisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKIHZvaWQgUmVzb3VyY2VIYW5kbGVDbGllbnQ6Ondp
bGxDYWNoZVJlc3BvbnNlQXN5bmMoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgQ0ZDYWNoZWRVUkxS
ZXNwb25zZVJlZiByZXNwb25zZSkKIHsKICAgICBoYW5kbGUtPmNvbnRpbnVlV2lsbENhY2hlUmVz
cG9uc2UocmVzcG9uc2UpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZUhhbmRsZUNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaAkocmV2aXNpb24gMjA3MDM5KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yOSwxMiArMjksMTIgQEAKICNpbmNsdWRlICJQbGF0Zm9ybUV4cG9y
dE1hY3Jvcy5oIgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KIAotI2lmIFVTRShDRk5FVFdPUkspCisj
aWYgVVNFKENGVVJMQ09OTkVDVElPTikKICNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZVUkxDYWNoZVBy
aXYuaD4KICNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZVUkxSZXNwb25zZVByaXYuaD4KICNlbmRpZgog
Ci0jaWYgUExBVEZPUk0oSU9TKSB8fCBVU0UoQ0ZORVRXT1JLKQorI2lmIFBMQVRGT1JNKElPUykg
fHwgVVNFKENGVVJMQ09OTkVDVElPTikKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjZW5k
aWYKIApAQCAtOTYsNyArOTYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFdFQkNP
UkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBjYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNw
YWNlQXN5bmMoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBQcm90ZWN0aW9uU3BhY2UmKTsKICNlbmRp
ZgogICAgICAgICAvLyBDbGllbnQgd2lsbCBwYXNzIGFuIHVwZGF0ZWQgcmVxdWVzdCB1c2luZyBS
ZXNvdXJjZUhhbmRsZTo6Y29udGludWVXaWxsQ2FjaGVSZXNwb25zZSgpIHdoZW4gcmVhZHkuCi0j
aWYgVVNFKENGTkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogICAgICAgICBXRUJD
T1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgd2lsbENhY2hlUmVzcG9uc2VBc3luYyhSZXNvdXJjZUhh
bmRsZSosIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYpOwogI2VsaWYgUExBVEZPUk0oQ09DT0EpCiAg
ICAgICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCB3aWxsQ2FjaGVSZXNwb25zZUFzeW5j
KFJlc291cmNlSGFuZGxlKiwgTlNDYWNoZWRVUkxSZXNwb25zZSAqKTsKQEAgLTExOCwxNiArMTE4
LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNlbmRpZgogICAgICAgICB2aXJ0dWFsIHZvaWQg
cmVjZWl2ZWRDYW5jZWxsYXRpb24oUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSYpIHsgfQogCi0jaWYgUExBVEZPUk0oSU9TKSB8fCBVU0UoQ0ZORVRXT1JLKQor
I2lmIFBMQVRGT1JNKElPUykgfHwgVVNFKENGVVJMQ09OTkVDVElPTikKICAgICAgICAgdmlydHVh
bCBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBjb25uZWN0aW9uUHJvcGVydGllcyhSZXNvdXJj
ZUhhbmRsZSopIHsgcmV0dXJuIG51bGxwdHI7IH0KICNlbmRpZgogCi0jaWYgVVNFKENGTkVUV09S
SykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogICAgICAgICB2aXJ0dWFsIENGQ2FjaGVkVVJM
UmVzcG9uc2VSZWYgd2lsbENhY2hlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqLCBDRkNhY2hlZFVS
TFJlc3BvbnNlUmVmIHJlc3BvbnNlKSB7IHJldHVybiByZXNwb25zZTsgfQotI2lmIFBMQVRGT1JN
KFdJTikKICAgICAgICAgdmlydHVhbCBib29sIHNob3VsZENhY2hlUmVzcG9uc2UoUmVzb3VyY2VI
YW5kbGUqLCBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmKSB7IHJldHVybiB0cnVlOyB9Ci0jZW5kaWYg
Ly8gUExBVEZPUk0oV0lOKQotCiAjZWxpZiBQTEFURk9STShDT0NPQSkKICAgICAgICAgdmlydHVh
bCBOU0NhY2hlZFVSTFJlc3BvbnNlICp3aWxsQ2FjaGVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSos
IE5TQ2FjaGVkVVJMUmVzcG9uc2UgKnJlc3BvbnNlKSB7IHJldHVybiByZXNwb25zZTsgfQogI2Vu
ZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxl
SW50ZXJuYWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaAkocmV2aXNpb24gMjA3MDM5KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTMzLDcgKzMzLDcgQEAKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZS5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQorI2lmIFVTRShD
RlVSTENPTk5FQ1RJT04pCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25E
ZWxlZ2F0ZS5oIgogI2luY2x1ZGUgPENGTmV0d29yay9DRlVSTENvbm5lY3Rpb25Qcml2Lmg+CiAj
ZW5kaWYKQEAgLTYxLDcgKzYxLDcgQEAgT0JKQ19DTEFTUyBOU1VSTEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlOwogT0JKQ19DTEFTUyBOU1VSTENvbm5lY3Rpb247CiAjZW5kaWYKIAotI2lmIFBMQVRG
T1JNKENPQ09BKSB8fCBVU0UoQ0ZORVRXT1JLKQorI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0Uo
Q0ZVUkxDT05ORUNUSU9OKQogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgX19DRlVSTFN0b3JhZ2VTZXNz
aW9uKiBDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmOwogI2VuZGlmCiAKQEAgLTgzLDcgKzgzLDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgLCBtX2RlZmVyc0xvYWRpbmcoZGVmZXJz
TG9hZGluZykKICAgICAgICAgICAgICwgbV9zaG91bGRDb250ZW50U25pZmYoc2hvdWxkQ29udGVu
dFNuaWZmKQogICAgICAgICAgICAgLCBtX3VzZXNBc3luY0NhbGxiYWNrcyhjbGllbnQgJiYgY2xp
ZW50LT51c2VzQXN5bmNDYWxsYmFja3MoKSkKLSNpZiBVU0UoQ0ZORVRXT1JLKQorI2lmIFVTRShD
RlVSTENPTk5FQ1RJT04pCiAgICAgICAgICAgICAsIG1fY3VycmVudFJlcXVlc3QocmVxdWVzdCkK
ICNlbmRpZgogI2lmIFVTRShDVVJMKQpAQCAtMTMxLDE5ICsxMzEsMTkgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgICAgICBib29sIG1fZGVmZXJzTG9hZGluZzsKICAgICAgICAgYm9vbCBtX3No
b3VsZENvbnRlbnRTbmlmZjsKICAgICAgICAgYm9vbCBtX3VzZXNBc3luY0NhbGxiYWNrczsKLSNp
ZiBVU0UoQ0ZORVRXT1JLKQorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAgICAgICAgIFJldGFp
blB0cjxDRlVSTENvbm5lY3Rpb25SZWY+IG1fY29ubmVjdGlvbjsKICAgICAgICAgUmVzb3VyY2VS
ZXF1ZXN0IG1fY3VycmVudFJlcXVlc3Q7CiAgICAgICAgIFJlZlB0cjxSZXNvdXJjZUhhbmRsZUNG
VVJMQ29ubmVjdGlvbkRlbGVnYXRlPiBtX2Nvbm5lY3Rpb25EZWxlZ2F0ZTsKICNlbmRpZgotI2lm
IFBMQVRGT1JNKENPQ09BKSAmJiAhVVNFKENGTkVUV09SSykKKyNpZiBQTEFURk9STShDT0NPQSkK
ICAgICAgICAgUmV0YWluUHRyPE5TVVJMQ29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOwogICAgICAg
ICBSZXRhaW5QdHI8aWQ+IG1fZGVsZWdhdGU7CiAjZW5kaWYKICNpZiBQTEFURk9STShDT0NPQSkK
ICAgICAgICAgYm9vbCBtX3N0YXJ0V2hlblNjaGVkdWxlZDsKICNlbmRpZgotI2lmIFBMQVRGT1JN
KENPQ09BKSB8fCBVU0UoQ0ZORVRXT1JLKQorI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZV
UkxDT05ORUNUSU9OKQogICAgICAgICBSZXRhaW5QdHI8Q0ZVUkxTdG9yYWdlU2Vzc2lvblJlZj4g
bV9zdG9yYWdlU2Vzc2lvbjsKICNlbmRpZgogI2lmIFVTRShDVVJMKQpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2Uu
Y3BwCShyZXZpc2lvbiAyMDcwMzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotI2lmICFVU0UoU09VUCkgJiYgKCFQTEFURk9STShD
T0NPQSkgfHwgVVNFKENGTkVUV09SSykpCisjaWYgIVVTRShTT1VQKSAmJiAoIVBMQVRGT1JNKENP
Q09BKSB8fCBVU0UoQ0ZVUkxDT05ORUNUSU9OKSkKIGRvdWJsZSBSZXNvdXJjZVJlcXVlc3RCYXNl
OjpzX2RlZmF1bHRUaW1lb3V0SW50ZXJ2YWwgPSBJTlRfTUFYOwogI2Vsc2UKIC8vIFdpbGwgdXNl
IE5TVVJMUmVxdWVzdCBkZWZhdWx0IHRpbWVvdXQgdW5sZXNzIHNldCB0byBhIG5vbi16ZXJvIHZh
bHVlIHdpdGggc2V0RGVmYXVsdFRpbWVvdXRJbnRlcnZhbCgpLgpAQCAtNjAyLDcgKzYwMiw3IEBA
IHZvaWQgUmVzb3VyY2VSZXF1ZXN0QmFzZTo6dXBkYXRlUmVzb3VyY2UKICAgICB9CiB9CiAKLSNp
ZiAhUExBVEZPUk0oQ09DT0EpICYmICFVU0UoQ0ZORVRXT1JLKSAmJiAhVVNFKFNPVVApCisjaWYg
IVBMQVRGT1JNKENPQ09BKSAmJiAhVVNFKENGVVJMQ09OTkVDVElPTikgJiYgIVVTRShTT1VQKQog
dW5zaWduZWQgaW5pdGlhbGl6ZU1heGltdW1IVFRQQ29ubmVjdGlvbkNvdW50UGVySG9zdCgpCiB7
CiAgICAgLy8gVGhpcyBpcyB1c2VkIGJ5IHRoZSBsb2FkZXIgdG8gY29udHJvbCB0aGUgbnVtYmVy
IG9mIGlzc3VlZCBwYXJhbGxlbCBsb2FkIHJlcXVlc3RzLiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY2YvQXV0aGVudGljYXRpb25DRi5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9BdXRoZW50aWNhdGlvbkNGLmNwcAko
cmV2aXNpb24gMjA3MDM5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9B
dXRoZW50aWNhdGlvbkNGLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ0YuaCIKIAotI2lmIFVT
RShDRk5FVFdPUkspCisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKIAogI2luY2x1ZGUgIkF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlLmgiCiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25DbGllbnQuaCIK
QEAgLTUxLDE4ICs1MSw4IEBAIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjpBdXRoZW50aWNhdGlv
bkMKIHsKIH0KIAotQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6OkF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlKENGVVJMQXV0aENoYWxsZW5nZVJlZiBjZkNoYWxsZW5nZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBdXRoZW50aWNhdGlvbkNsaWVudCogYXV0
aGVudGljYXRpb25DbGllbnQpCi0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgOiBBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZUJhc2UoUHJvdGVjdGlvblNwYWNlKENGVVJMQXV0aENoYWxsZW5nZUdldFBy
b3RlY3Rpb25TcGFjZShjZkNoYWxsZW5nZSkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIENyZWRlbnRpYWwoQ0ZVUkxBdXRoQ2hhbGxlbmdlR2V0UHJvcG9zZWRDcmVkZW50aWFs
KGNmQ2hhbGxlbmdlKSksCi0jZWxzZQotICAgIDogQXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNl
KGNvcmUoQ0ZVUkxBdXRoQ2hhbGxlbmdlR2V0UHJvdGVjdGlvblNwYWNlKGNmQ2hhbGxlbmdlKSks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29yZShDRlVSTEF1dGhDaGFsbGVu
Z2VHZXRQcm9wb3NlZENyZWRlbnRpYWwoY2ZDaGFsbGVuZ2UpKSwKLSNlbmRpZgotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIENGVVJMQXV0aENoYWxsZW5nZUdldFByZXZpb3VzRmFp
bHVyZUNvdW50KGNmQ2hhbGxlbmdlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAoQ0ZVUkxSZXNwb25zZVJlZilDRlVSTEF1dGhDaGFsbGVuZ2VHZXRGYWlsdXJlUmVzcG9uc2Uo
Y2ZDaGFsbGVuZ2UpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENGVVJMQXV0
aENoYWxsZW5nZUdldEVycm9yKGNmQ2hhbGxlbmdlKSkKK0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShDRlVSTEF1dGhDaGFsbGVuZ2VSZWYgY2ZDaGFsbGVu
Z2UsIEF1dGhlbnRpY2F0aW9uQ2xpZW50KiBhdXRoZW50aWNhdGlvbkNsaWVudCkKKyAgICA6IEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZShjb3JlKENGVVJMQXV0aENoYWxsZW5nZUdldFByb3Rl
Y3Rpb25TcGFjZShjZkNoYWxsZW5nZSkpLCBjb3JlKENGVVJMQXV0aENoYWxsZW5nZUdldFByb3Bv
c2VkQ3JlZGVudGlhbChjZkNoYWxsZW5nZSkpLCBDRlVSTEF1dGhDaGFsbGVuZ2VHZXRQcmV2aW91
c0ZhaWx1cmVDb3VudChjZkNoYWxsZW5nZSksIChDRlVSTFJlc3BvbnNlUmVmKUNGVVJMQXV0aENo
YWxsZW5nZUdldEZhaWx1cmVSZXNwb25zZShjZkNoYWxsZW5nZSksIENGVVJMQXV0aENoYWxsZW5n
ZUdldEVycm9yKGNmQ2hhbGxlbmdlKSkKICAgICAsIG1fYXV0aGVudGljYXRpb25DbGllbnQoYXV0
aGVudGljYXRpb25DbGllbnQpCiAgICAgLCBtX2NmQ2hhbGxlbmdlKGNmQ2hhbGxlbmdlKQogewpA
QCAtOTMsMjIgKzgzLDEyIEBAIENGVVJMQXV0aENoYWxsZW5nZVJlZiBjcmVhdGVDRihjb25zdCBB
dXQKIHsKICAgICAvLyBGSVhNRTogV2h5IG5vdCBjYWNoZSBDRlVSTEF1dGhDaGFsbGVuZ2VSZWYg
aW4gbV9jZkNoYWxsZW5nZT8gRm91bmRhdGlvbiBjb3VudGVycGFydCBkb2VzIHRoYXQuCiAKLSNp
ZiBQTEFURk9STShDT0NPQSkKLSAgICBDRlVSTEF1dGhDaGFsbGVuZ2VSZWYgcmVzdWx0ID0gQ0ZV
UkxBdXRoQ2hhbGxlbmdlQ3JlYXRlKDAsIGNvcmVDaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlKCku
Y2ZTcGFjZSgpLCBjb3JlQ2hhbGxlbmdlLnByb3Bvc2VkQ3JlZGVudGlhbCgpLmNmQ3JlZGVudGlh
bCgpLAotI2Vsc2UKICAgICBSZXRhaW5QdHI8Q0ZVUkxDcmVkZW50aWFsUmVmPiBjcmVkZW50aWFs
ID0gYWRvcHRDRihjcmVhdGVDRihjb3JlQ2hhbGxlbmdlLnByb3Bvc2VkQ3JlZGVudGlhbCgpKSk7
CiAgICAgUmV0YWluUHRyPENGVVJMUHJvdGVjdGlvblNwYWNlUmVmPiBwcm90ZWN0aW9uU3BhY2Ug
PSBhZG9wdENGKGNyZWF0ZUNGKGNvcmVDaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlKCkpKTsKIAot
ICAgIENGVVJMQXV0aENoYWxsZW5nZVJlZiByZXN1bHQgPSBDRlVSTEF1dGhDaGFsbGVuZ2VDcmVh
dGUoMCwgcHJvdGVjdGlvblNwYWNlLmdldCgpLCBjcmVkZW50aWFsLmdldCgpLAotI2VuZGlmCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29yZUNoYWxsZW5nZS5wcmV2
aW91c0ZhaWx1cmVDb3VudCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvcmVDaGFsbGVuZ2UuZmFpbHVyZVJlc3BvbnNlKCkuY2ZVUkxSZXNwb25zZSgpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvcmVDaGFsbGVuZ2UuZXJyb3Io
KSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gQ0ZVUkxBdXRoQ2hhbGxlbmdlQ3Jl
YXRlKDAsIHByb3RlY3Rpb25TcGFjZS5nZXQoKSwgY3JlZGVudGlhbC5nZXQoKSwgY29yZUNoYWxs
ZW5nZS5wcmV2aW91c0ZhaWx1cmVDb3VudCgpLCBjb3JlQ2hhbGxlbmdlLmZhaWx1cmVSZXNwb25z
ZSgpLmNmVVJMUmVzcG9uc2UoKSwgY29yZUNoYWxsZW5nZS5lcnJvcigpKTsKIH0KIAotI2lmIFBM
QVRGT1JNKFdJTikKLQogQ0ZVUkxDcmVkZW50aWFsUmVmIGNyZWF0ZUNGKGNvbnN0IENyZWRlbnRp
YWwmIGNvcmVDcmVkZW50aWFsKQogewogICAgIENGVVJMQ3JlZGVudGlhbFBlcnNpc3RlbmNlIHBl
cnNpc3RlbmNlID0ga0NGVVJMQ3JlZGVudGlhbFBlcnNpc3RlbmNlTm9uZTsKQEAgLTI5MCw4ICsy
NzAsNyBAQCBQcm90ZWN0aW9uU3BhY2UgY29yZShDRlVSTFByb3RlY3Rpb25TcGFjCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBDRlVSTFByb3RlY3Rpb25TcGFjZUdldFJlYWxtKGNmU3BhY2Up
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NoZW1lKTsKIH0KLSNlbmRpZiAvLyBQTEFU
Rk9STShXSU4pCiAKIH07CiAKLSNlbmRpZiAvLyBVU0UoQ0ZORVRXT1JLKQorI2VuZGlmIC8vIFVT
RShDRlVSTENPTk5FQ1RJT04pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NmL0F1dGhlbnRpY2F0aW9uQ0YuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NmL0F1dGhlbnRpY2F0aW9uQ0YuaAkocmV2aXNpb24gMjA3MDM5KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9BdXRoZW50aWNhdGlvbkNGLmgJKHdv
cmtpbmcgY29weSkKQEAgLTIzLDEwICsyMyw5IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCi0j
aWZuZGVmIEF1dGhlbnRpY2F0aW9uQ0ZfaAotI2RlZmluZSBBdXRoZW50aWNhdGlvbkNGX2gKKyNw
cmFnbWEgb25jZQogCi0jaWYgVVNFKENGTkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9O
KQogCiAjaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGVVJMQ3JlZGVudGlhbFByaXYuaD4KIApAQCAtNDAs
MjAgKzM5LDEwIEBAIGNsYXNzIENyZWRlbnRpYWw7CiBjbGFzcyBQcm90ZWN0aW9uU3BhY2U7CiAK
IENGVVJMQXV0aENoYWxsZW5nZVJlZiBjcmVhdGVDRihjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSYpOwotI2lmIFBMQVRGT1JNKFdJTikKIENGVVJMQ3JlZGVudGlhbFJlZiBjcmVhdGVDRihj
b25zdCBDcmVkZW50aWFsJik7CiBDRlVSTFByb3RlY3Rpb25TcGFjZVJlZiBjcmVhdGVDRihjb25z
dCBQcm90ZWN0aW9uU3BhY2UmKTsKLSNlbmRpZgotCi0jaWYgUExBVEZPUk0oQ09DT0EpCi1BdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSBjb3JlKENGVVJMQXV0aENoYWxsZW5nZVJlZik7Ci0jZW5kaWYK
LSNpZiBQTEFURk9STShXSU4pCiBDcmVkZW50aWFsIGNvcmUoQ0ZVUkxDcmVkZW50aWFsUmVmKTsK
IFByb3RlY3Rpb25TcGFjZSBjb3JlKENGVVJMUHJvdGVjdGlvblNwYWNlUmVmKTsKLSNlbmRpZgog
fQogCi0jZW5kaWYgLy8gVVNFKENGTkVUV09SSykKLQotI2VuZGlmIC8vIEF1dGhlbnRpY2F0aW9u
Q0ZfaAorI2VuZGlmIC8vIFVTRShDRlVSTENPTk5FQ1RJT04pCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9BdXRoZW50aWNhdGlvbkNo
YWxsZW5nZS5oCShyZXZpc2lvbiAyMDcwMzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NmL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIz
LDE0ICsyMywxMyBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAotI2lmbmRlZiBBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZV9oCi0jZGVmaW5lIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlX2gKKyNwcmFn
bWEgb25jZQogCiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlLmgiCiAjaW5j
bHVkZSAiQXV0aGVudGljYXRpb25DbGllbnQuaCIKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAK
LSNpZiBVU0UoQ0ZORVRXT1JLKQorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAKIHR5cGVkZWYg
c3RydWN0IF9DRlVSTEF1dGhDaGFsbGVuZ2UqIENGVVJMQXV0aENoYWxsZW5nZVJlZjsKIApAQCAt
NTAsNyArNDksNyBAQCBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSA6IHB1YmxpYyBBCiBw
dWJsaWM6CiAgICAgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKSB7fQogICAgIFdFQkNPUkVfRVhQ
T1JUIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0IFByb3RlY3Rpb25TcGFjZSYsIGNvbnN0
IENyZWRlbnRpYWwmIHByb3Bvc2VkQ3JlZGVudGlhbCwgdW5zaWduZWQgcHJldmlvdXNGYWlsdXJl
Q291bnQsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJik7Ci0j
aWYgVVNFKENGTkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogICAgIEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlKENGVVJMQXV0aENoYWxsZW5nZVJlZiwgQXV0aGVudGljYXRpb25DbGll
bnQqKTsKIAogICAgIENGVVJMQXV0aENoYWxsZW5nZVJlZiBjZlVSTEF1dGhDaGFsbGVuZ2VSZWYo
KSBjb25zdCB7IHJldHVybiBtX2NmQ2hhbGxlbmdlLmdldCgpOyB9CkBAIC02OSw3ICs2OCw3IEBA
IHByaXZhdGU6CiAgICAgc3RhdGljIGJvb2wgcGxhdGZvcm1Db21wYXJlKGNvbnN0IEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlJiBhLCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgYik7CiAK
ICAgICAvLyBQbGF0Zm9ybSBjaGFsbGVuZ2UgbWF5IGJlIG51bGwuIElmIGl0J3Mgbm9uLW51bGws
IGl0J3MgYWx3YXlzIHVwIHRvIGRhdGUgd2l0aCBvdGhlciBmaWVsZHMuCi0jaWYgVVNFKENGTkVU
V09SSykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogICAgIFJlZlB0cjxBdXRoZW50aWNhdGlv
bkNsaWVudD4gbV9hdXRoZW50aWNhdGlvbkNsaWVudDsKICAgICBSZXRhaW5QdHI8Q0ZVUkxBdXRo
Q2hhbGxlbmdlUmVmPiBtX2NmQ2hhbGxlbmdlOwogI2Vsc2UKQEAgLTc5LDUgKzc4LDMgQEAgcHJp
dmF0ZToKIH07CiAKIH0KLQotI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NmL0Nvb2tpZUphckNGTmV0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZUphckNGTmV0LmNwcAkocmV2aXNpb24gMjA3MDM5
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Db29raWVKYXJDRk5ldC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJQbGF0Zm9ybUNvb2tpZUphci5oIgogCi0jaWYgVVNFKENGTkVUV09SSykKKyNp
ZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogCiAjaW5jbHVkZSAiQ0ZOZXR3b3JrU1BJLmgiCiAjaW5j
bHVkZSAiQ29va2llLmgiCkBAIC0yNTUsNCArMjU1LDQgQEAgdm9pZCBkZWxldGVBbGxDb29raWVz
TW9kaWZpZWRTaW5jZShjb25zdAogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZiAv
LyBVU0UoQ0ZORVRXT1JLKQorI2VuZGlmIC8vIFVTRShDRlVSTENPTk5FQ1RJT04pCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0NyZWRlbnRpYWxTdG9yYWdlQ0ZOZXQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQ3Jl
ZGVudGlhbFN0b3JhZ2VDRk5ldC5jcHAJKHJldmlzaW9uIDIwNzAzOSkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQ3JlZGVudGlhbFN0b3JhZ2VDRk5ldC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI2LDIzICsyNiwxNCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIkNyZWRlbnRpYWxTdG9yYWdlLmgiCiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQorI2lmIFVTRShD
RlVSTENPTk5FQ1RJT04pCiAKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNGLmgiCiAjaW5jbHVk
ZSAiQ0ZOZXR3b3JrU1BJLmgiCiAjaW5jbHVkZSAiQ3JlZGVudGlhbC5oIgogI2luY2x1ZGUgIlBy
b3RlY3Rpb25TcGFjZS5oIgotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLQotI2lmIFBMQVRG
T1JNKENPQ09BKQotI2luY2x1ZGUgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKLSNlbGlmIFBM
QVRGT1JNKFdJTikKICNpbmNsdWRlIDxXZWJLaXRTeXN0ZW1JbnRlcmZhY2UvV2ViS2l0U3lzdGVt
SW50ZXJmYWNlLmg+Ci0jZW5kaWYKLQotI2lmIFBMQVRGT1JNKElPUykKLSNpbmNsdWRlIDxDRk5l
dHdvcmsvQ0ZVUkxDcmVkZW50aWFsU3RvcmFnZS5oPgotI2VuZGlmCisjaW5jbHVkZSA8d3RmL1Jl
dGFpblB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCkBAIC01NCwyOSArNDUsMTEg
QEAgc3RhdGljIGlubGluZSBDRlVSTENyZWRlbnRpYWxSZWYgY29weUNyZQogCiBDcmVkZW50aWFs
IENyZWRlbnRpYWxTdG9yYWdlOjpnZXRGcm9tUGVyc2lzdGVudFN0b3JhZ2UoY29uc3QgUHJvdGVj
dGlvblNwYWNlJiBwcm90ZWN0aW9uU3BhY2UpCiB7Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAg
YXV0byBjcmVkZW50aWFsQ0YgPSBhZG9wdENGKGNvcHlDcmVkZW50aWFsRnJvbVByb3RlY3Rpb25T
cGFjZShwcm90ZWN0aW9uU3BhY2UuY2ZTcGFjZSgpKSk7Ci0gICAgcmV0dXJuIENyZWRlbnRpYWwo
Y3JlZGVudGlhbENGLmdldCgpKTsKLSNlbHNlCiAgICAgYXV0byBwcm90ZWN0aW9uU3BhY2VDRiA9
IGFkb3B0Q0YoY3JlYXRlQ0YocHJvdGVjdGlvblNwYWNlKSk7CiAgICAgYXV0byBjcmVkZW50aWFs
Q0YgPSBhZG9wdENGKGNvcHlDcmVkZW50aWFsRnJvbVByb3RlY3Rpb25TcGFjZShwcm90ZWN0aW9u
U3BhY2VDRi5nZXQoKSkpOwogICAgIHJldHVybiBjb3JlKGNyZWRlbnRpYWxDRi5nZXQoKSk7Ci0j
ZW5kaWYKLX0KLQotI2lmIFBMQVRGT1JNKElPUykKLXZvaWQgQ3JlZGVudGlhbFN0b3JhZ2U6OnNh
dmVUb1BlcnNpc3RlbnRTdG9yYWdlKGNvbnN0IFByb3RlY3Rpb25TcGFjZSYgcHJvdGVjdGlvblNw
YWNlLCBjb25zdCBDcmVkZW50aWFsJiBjcmVkZW50aWFsKQotewotICAgIFJldGFpblB0cjxDRlVS
TENyZWRlbnRpYWxTdG9yYWdlUmVmPiBzdG9yYWdlQ0YgPSBhZG9wdENGKENGVVJMQ3JlZGVudGlh
bFN0b3JhZ2VDcmVhdGUoMCkpOwotCi0gICAgaWYgKGNyZWRlbnRpYWwucGVyc2lzdGVuY2UoKSA9
PSBDcmVkZW50aWFsUGVyc2lzdGVuY2VOb25lKSB7Ci0gICAgICAgIENyZWRlbnRpYWwgc2Vzc2lv
bkNyZWRlbnRpYWwoY3JlZGVudGlhbCwgQ3JlZGVudGlhbFBlcnNpc3RlbmNlRm9yU2Vzc2lvbik7
Ci0gICAgICAgIENGVVJMQ3JlZGVudGlhbFN0b3JhZ2VTZXREZWZhdWx0Q3JlZGVudGlhbEZvclBy
b3RlY3Rpb25TcGFjZShzdG9yYWdlQ0YuZ2V0KCksIHNlc3Npb25DcmVkZW50aWFsLmNmQ3JlZGVu
dGlhbCgpLCBwcm90ZWN0aW9uU3BhY2UuY2ZTcGFjZSgpKTsKLSAgICB9IGVsc2UKLSAgICAgICAg
Q0ZVUkxDcmVkZW50aWFsU3RvcmFnZVNldERlZmF1bHRDcmVkZW50aWFsRm9yUHJvdGVjdGlvblNw
YWNlKHN0b3JhZ2VDRi5nZXQoKSwgY3JlZGVudGlhbC5jZkNyZWRlbnRpYWwoKSwgcHJvdGVjdGlv
blNwYWNlLmNmU3BhY2UoKSk7CiB9Ci0jZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
Ci0jZW5kaWYgLy8gVVNFKENGTkVUV09SSykKKyNlbmRpZiAvLyBVU0UoQ0ZVUkxDT05ORUNUSU9O
KQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Mb2FkZXJSdW5Mb29w
Q0YuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2Yv
TG9hZGVyUnVuTG9vcENGLmNwcAkocmV2aXNpb24gMjA3MDM5KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jZi9Mb2FkZXJSdW5Mb29wQ0YuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTG9hZGVyUnVu
TG9vcENGLmgiCiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04p
CiAKICNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oPgogI2luY2x1ZGUg
PGxpbWl0cz4KQEAgLTg3LDQgKzg3LDQgQEAgQ0ZSdW5Mb29wUmVmIGxvYWRlclJ1bkxvb3AoKQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZiAvLyBVU0UoQ0ZORVRXT1JLKQorI2Vu
ZGlmIC8vIFVTRShDRlVSTENPTk5FQ1RJT04pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NmL0xvYWRlclJ1bkxvb3BDRi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTG9hZGVyUnVuTG9vcENGLmgJKHJldmlzaW9uIDIwNzAz
OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTG9hZGVyUnVuTG9vcENG
LmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDEwICsyMyw5IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBMb2FkZXJSdW5Mb29wQ0ZfaAotI2RlZmlu
ZSBMb2FkZXJSdW5Mb29wQ0ZfaAorI3ByYWdtYSBvbmNlCiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQor
I2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAKIHR5cGVkZWYgc3RydWN0IF9fQ0ZSdW5Mb29wKiBD
RlJ1bkxvb3BSZWY7CiAKQEAgLTM2LDYgKzM1LDQgQEAgQ0ZSdW5Mb29wUmVmIGxvYWRlclJ1bkxv
b3AoKTsKIAogfQogCi0jZW5kaWYgLy8gVVNFKENGTkVUV09SSykKLQotI2VuZGlmIC8vIExvYWRl
clJ1bkxvb3BfaAorI2VuZGlmIC8vIFVTRShDRlVSTENPTk5FQ1RJT04pCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdv
cmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcAkocmV2aXNpb24gMjA3MDM5KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTkzLDExICs5MywxMSBAQCBSZXRhaW5QdHI8Q0ZIVFRQQ29va2ll
U3RvcmFnZVJlZj4gTmV0d29yCiAgICAgaWYgKG1fcGxhdGZvcm1TZXNzaW9uKQogICAgICAgICBy
ZXR1cm4gYWRvcHRDRihfQ0ZVUkxTdG9yYWdlU2Vzc2lvbkNvcHlDb29raWVTdG9yYWdlKGtDRkFs
bG9jYXRvckRlZmF1bHQsIG1fcGxhdGZvcm1TZXNzaW9uLmdldCgpKSk7CiAKLSNpZiBVU0UoQ0ZO
RVRXT1JLKQorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAgICAgcmV0dXJuIF9DRkhUVFBDb29r
aWVTdG9yYWdlR2V0RGVmYXVsdChrQ0ZBbGxvY2F0b3JEZWZhdWx0KTsKICNlbHNlCiAgICAgLy8g
V2hlbiB1c2luZyBOU1VSTENvbm5lY3Rpb24sIHdlIGFsc28gdXNlIGl0cyBzaGFyZWQgY29va2ll
IHN0b3JhZ2UuCi0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG51bGxwdHI7CiAjZW5kaWYKIH0K
IApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Qcm90ZWN0aW9uU3Bh
Y2VDRk5ldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jZi9Qcm90ZWN0aW9uU3BhY2VDRk5ldC5jcHAJKHJldmlzaW9uIDIwNzAzOSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUHJvdGVjdGlvblNwYWNlQ0ZOZXQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiUHJvdGVjdGlvblNwYWNlQ0ZOZXQuaCIKIAotI2lmIFVTRShDRk5FVFdPUkspCisjaWYg
VVNFKENGVVJMQ09OTkVDVElPTikKIAogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ0YuaCIKICNp
bmNsdWRlIDxDRk5ldHdvcmsvQ0ZVUkxQcm90ZWN0aW9uU3BhY2VQcml2Lmg+CkBAIC00Miw0ICs0
Miw0IEBAIGJvb2wgUHJvdGVjdGlvblNwYWNlOjpyZWNlaXZlc0NyZWRlbnRpYWwKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYgLy8gVVNFKENGTkVUV09SSykKKyNlbmRpZiAvLyBV
U0UoQ0ZVUkxDT05ORUNUSU9OKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jZi9Qcm90ZWN0aW9uU3BhY2VDRk5ldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY2YvUHJvdGVjdGlvblNwYWNlQ0ZOZXQuaAkocmV2aXNpb24gMjA3
MDM5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Qcm90ZWN0aW9uU3Bh
Y2VDRk5ldC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMywxMSArMjMsMTAgQEAKICAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAogICovCiAKLSNpZm5kZWYgUHJvdGVjdGlvblNwYWNlQ0ZOZXRfaAotI2RlZmluZSBQcm90
ZWN0aW9uU3BhY2VDRk5ldF9oCisjcHJhZ21hIG9uY2UKIAotI2lmICFQTEFURk9STShXSU4pIHx8
ICFVU0UoQ0ZORVRXT1JLKQotI2Vycm9yIFRoaXMgaGVhZGVyIHNob3VsZCBvbmx5IGJlIGluY2x1
ZGVkIHdoZW4gdGFyZ2V0aW5nIFdpbmRvd3MgYW5kIHVzaW5nIENGTmV0d29yay4KKyNpZiAhUExB
VEZPUk0oV0lOKSB8fCAhVVNFKENGVVJMQ09OTkVDVElPTikKKyNlcnJvciBUaGlzIGhlYWRlciBz
aG91bGQgb25seSBiZSBpbmNsdWRlZCB3aGVuIHRhcmdldGluZyBXaW5kb3dzIGFuZCB1c2luZyBD
RlVSTENvbm5lY3Rpb24uCiAjZW5kaWYKIAogI2luY2x1ZGUgIlByb3RlY3Rpb25TcGFjZUJhc2Uu
aCIKQEAgLTQ4LDUgKzQ3LDMgQEAgcHVibGljOgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQotCi0jZW5kaWYgLy8gUHJvdGVjdGlvblNwYWNlQ0ZOZXRfaApJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yLmgJKHJldmlzaW9u
IDIwNzAzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VF
cnJvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCwxMCArMjgsMTEgQEAKICNpbmNsdWRlICJSZXNv
dXJjZUVycm9yQmFzZS5oIgogCiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotI2lmIFVTRShD
Rk5FVFdPUkspCisKKyNpZiBQTEFURk9STShXSU4pCisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikK
ICNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9DRlN0cmVhbS5oPgogI2VuZGlmCi0jaWYgUExBVEZP
Uk0oV0lOKQogI2luY2x1ZGUgPHdpbmRvd3MuaD4KICNpbmNsdWRlIDx3aW5jcnlwdC5oPiAvLyB3
aW5kb3dzLmggbXVzdCBiZSBpbmNsdWRlZCBiZWZvcmUgd2luY3J5cHQuaC4KICNlbmRpZgpAQCAt
NjEsMTIgKzYyLDEwIEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBDRkVycm9yUmVmIGNm
RXJyb3IoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBvcGVyYXRvciBDRkVycm9yUmVmKCkg
Y29uc3Q7CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotI2lmIFBMQVRGT1JNKFdJTikKKyNpZiBVU0Uo
Q0ZVUkxDT05ORUNUSU9OKQogICAgIFJlc291cmNlRXJyb3IoY29uc3QgU3RyaW5nJiBkb21haW4s
IGludCBlcnJvckNvZGUsIGNvbnN0IFVSTCYgZmFpbGluZ1VSTCwgY29uc3QgU3RyaW5nJiBsb2Nh
bGl6ZWREZXNjcmlwdGlvbiwgQ0ZEYXRhUmVmIGNlcnRpZmljYXRlKTsKICAgICBQQ0NFUlRfQ09O
VEVYVCBjZXJ0aWZpY2F0ZSgpIGNvbnN0OwogICAgIHZvaWQgc2V0Q2VydGlmaWNhdGUoQ0ZEYXRh
UmVmKTsKLSNlbmRpZgogICAgIFJlc291cmNlRXJyb3IoQ0ZTdHJlYW1FcnJvciBlcnJvcik7CiAg
ICAgQ0ZTdHJlYW1FcnJvciBjZlN0cmVhbUVycm9yKCkgY29uc3Q7CiAgICAgb3BlcmF0b3IgQ0ZT
dHJlYW1FcnJvcigpIGNvbnN0OwpAQCAtODgsMTQgKzg3LDEzIEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBkb1BsYXRmb3JtSXNvbGF0ZWRDb3B5KGNvbnN0IFJlc291cmNlRXJyb3ImKTsKIAogICAgIGJv
b2wgbV9kYXRhSXNVcFRvRGF0ZTsKLSNpZiBVU0UoQ0ZORVRXT1JLKQorI2lmIFVTRShDRlVSTENP
Tk5FQ1RJT04pCiAgICAgbXV0YWJsZSBSZXRhaW5QdHI8Q0ZFcnJvclJlZj4gbV9wbGF0Zm9ybUVy
cm9yOwotI2lmIFBMQVRGT1JNKENPQ09BKQorI2VsaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgbXV0
YWJsZSBSZXRhaW5QdHI8TlNFcnJvcj4gbV9wbGF0Zm9ybU5TRXJyb3I7CiAjZW5kaWYKICNpZiBQ
TEFURk9STShXSU4pCiAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gbV9jZXJ0aWZpY2F0ZTsKLSNl
bmRpZgogI2Vsc2UKICAgICBtdXRhYmxlIFJldGFpblB0cjxOU0Vycm9yPiBtX3BsYXRmb3JtRXJy
b3I7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVz
b3VyY2VFcnJvckNGLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHAJKHJldmlzaW9uIDIwNzAzOSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VFcnJvckNGLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjYsMTYgKzI2LDEzIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiUmVzb3VyY2VFcnJvci5oIgogCi0jaWYgVVNFKENGTkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxD
T05ORUNUSU9OKQogCiAjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24v
Q0ZFcnJvci5oPgogI2luY2x1ZGUgPENGTmV0d29yay9DRk5ldHdvcmtFcnJvcnMuaD4KLSNpbmNs
dWRlIDx3dGYvUmV0YWluUHRyLmg+Ci0KLSNpZiBQTEFURk9STShXSU4pCiAjaW5jbHVkZSA8V2Vi
S2l0U3lzdGVtSW50ZXJmYWNlL1dlYktpdFN5c3RlbUludGVyZmFjZS5oPgotI2VuZGlmCisjaW5j
bHVkZSA8d3RmL1JldGFpblB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTIxOCw0
ICsyMTUsNCBAQCBSZXNvdXJjZUVycm9yOjpvcGVyYXRvciBDRlN0cmVhbUVycm9yKCkgCiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vIFVTRShDRk5FVFdPUkspCisjZW5kaWYg
Ly8gVVNFKENGVVJMQ09OTkVDVElPTikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcAkocmV2aXNp
b24gMjA3MDM5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJj
ZUhhbmRsZUNGTmV0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYsNiArNDYsOCBAQAogI2luY2x1
ZGUgIlN5bmNocm9ub3VzTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiU3luY2hyb25vdXNSZXNv
dXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmgiCiAjaW5jbHVkZSA8Q0ZOZXR3b3Jr
L0NGTmV0d29yay5oPgorI2luY2x1ZGUgPFdlYktpdFN5c3RlbUludGVyZmFjZS9XZWJLaXRTeXN0
ZW1JbnRlcmZhY2UuaD4KKyNpbmNsdWRlIDxwcm9jZXNzLmg+CiAjaW5jbHVkZSA8c3lzL3N0YXQu
aD4KICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpAQCAt
NTUsMjAgKzU3LDYgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9CYXNlNjQuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9DU3RyaW5nLmg+CiAKLSNpZiBQTEFURk9STShDT0NPQSkKLSNpbmNsdWRlICJSZXNv
dXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmgiCi0j
aW5jbHVkZSAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgotI2lmIFVTRShDRk5FVFdPUkspCi0j
aW5jbHVkZSAiV2ViQ29yZVVSTFJlc3BvbnNlLmgiCi0jaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGVVJM
Q29ubmVjdGlvblByaXYuaD4KLSNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZVUkxSZXF1ZXN0UHJpdi5o
PgotI2VuZGlmCi0jZW5kaWYKLQotI2lmIFBMQVRGT1JNKFdJTikKLSNpbmNsdWRlIDxXZWJLaXRT
eXN0ZW1JbnRlcmZhY2UvV2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+Ci0jaW5jbHVkZSA8cHJvY2Vz
cy5oPgotCiAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgZGVjbGFyYXRpb24gb25jZSBpdCdzIGluIFdl
YktpdFN1cHBvcnRMaWJyYXJ5LgogZXh0ZXJuICJDIiB7CiBfX2RlY2xzcGVjKGRsbGltcG9ydCkg
Q0ZVUkxDb25uZWN0aW9uUmVmIENGVVJMQ29ubmVjdGlvbkNyZWF0ZVdpdGhQcm9wZXJ0aWVzKApA
QCAtNzcsMTEgKzY1LDEwIEBAIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBDRlVSTENvbm5lY3Rpb25S
ZWYKICAgQ0ZVUkxDb25uZWN0aW9uQ2xpZW50ICogIGNsaWVudCwKICAgQ0ZEaWN0aW9uYXJ5UmVm
IHByb3BlcnRpZXMpOwogfQotI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotI2lmIFVT
RShDRk5FVFdPUkspCisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKIAogc3RhdGljIEhhc2hTZXQ8
U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiBhbGxvd3NBbnlIVFRQU0NlcnRpZmlj
YXRlSG9zdHMoKQogewpAQCAtMTIwLDExICsxMDcsNyBAQCBSZXNvdXJjZUhhbmRsZTo6flJlc291
cmNlSGFuZGxlKCkKICAgICAKIHN0YXRpYyBpbmxpbmUgQ0ZTdHJpbmdSZWYgc2hvdWxkU25pZmZD
b25uZWN0aW9uUHJvcGVydHkoKQogewotI2lmIFBMQVRGT1JNKFdJTikKICAgICByZXR1cm4gQ0ZT
VFIoIl9rQ0ZVUkxDb25uZWN0aW9uUHJvcGVydHlTaG91bGRTbmlmZiIpOwotI2Vsc2UKLSAgICBy
ZXR1cm4gX2tDRlVSTENvbm5lY3Rpb25Qcm9wZXJ0eVNob3VsZFNuaWZmOwotI2VuZGlmCiB9CiAK
IHZvaWQgUmVzb3VyY2VIYW5kbGU6OmNyZWF0ZUNGVVJMQ29ubmVjdGlvbihib29sIHNob3VsZFVz
ZUNyZWRlbnRpYWxTdG9yYWdlLCBib29sIHNob3VsZENvbnRlbnRTbmlmZiwgU2NoZWR1bGluZ0Jl
aGF2aW9yIHNjaGVkdWxpbmdCZWhhdmlvciwgQ0ZEaWN0aW9uYXJ5UmVmIGNsaWVudFByb3BlcnRp
ZXMpCkBAIC0xNjYsOSArMTQ5LDYgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6Y3JlYXRlQ0ZVUkxD
b25uZWN0aQogCiAgICAgUmV0YWluUHRyPENGTXV0YWJsZURpY3Rpb25hcnlSZWY+IHNzbFByb3Bz
OwogCi0jaWYgUExBVEZPUk0oSU9TKQotICAgIHNzbFByb3BzID0gYWRvcHRDRihSZXNvdXJjZUhh
bmRsZTo6Y3JlYXRlU1NMUHJvcGVydGllc0Zyb21OU1VSTFJlcXVlc3QoZmlyc3RSZXF1ZXN0KCkp
KTsKLSNlbHNlCiAgICAgaWYgKGFsbG93c0FueUhUVFBTQ2VydGlmaWNhdGVIb3N0cygpLmNvbnRh
aW5zKGZpcnN0UmVxdWVzdCgpLnVybCgpLmhvc3QoKSkpIHsKICAgICAgICAgc3NsUHJvcHMgPSBh
ZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMCwg
JmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNh
bGxCYWNrcykpOwogICAgICAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShzc2xQcm9wcy5nZXQoKSwg
a0NGU3RyZWFtU1NMQWxsb3dzQW55Um9vdCwga0NGQm9vbGVhblRydWUpOwpAQCAtMTgxLDExICsx
NjEsOCBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpjcmVhdGVDRlVSTENvbm5lY3RpCiAgICAgaWYg
KGNsaWVudENlcnQgIT0gY2xpZW50Q2VydGlmaWNhdGVzKCkuZW5kKCkpIHsKICAgICAgICAgaWYg
KCFzc2xQcm9wcykKICAgICAgICAgICAgIHNzbFByb3BzID0gYWRvcHRDRihDRkRpY3Rpb25hcnlD
cmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1bHQsIDAsICZrQ0ZUeXBlRGljdGlvbmFyeUtl
eUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKLSNpZiBQTEFU
Rk9STShXSU4pCiAgICAgICAgIHdrU2V0Q2xpZW50Q2VydGlmaWNhdGVJblNTTFByb3BlcnRpZXMo
c3NsUHJvcHMuZ2V0KCksIChjbGllbnRDZXJ0LT52YWx1ZSkuZ2V0KCkpOwotI2VuZGlmCiAgICAg
fQotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKIAogICAgIGlmIChzc2xQcm9wcykKICAgICAgICAg
Q0ZVUkxSZXF1ZXN0U2V0U1NMUHJvcGVydGllcyhyZXF1ZXN0LmdldCgpLCBzc2xQcm9wcy5nZXQo
KSk7CkBAIC0yMDYsMTIgKzE4Myw2IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmNyZWF0ZUNGVVJM
Q29ubmVjdGkKICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoc3RyZWFtUHJvcGVydGllcywg
Q0ZTVFIoIl9XZWJLaXRTeW5jaHJvbm91c1JlcXVlc3QiKSwga0NGQm9vbGVhblRydWUpOwogICAg
IH0KIAotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IHNvdXJj
ZUFwcGxpY2F0aW9uQXVkaXREYXRhID0gZC0+bV9jb250ZXh0LT5zb3VyY2VBcHBsaWNhdGlvbkF1
ZGl0RGF0YSgpOwotICAgIGlmIChzb3VyY2VBcHBsaWNhdGlvbkF1ZGl0RGF0YSkKLSAgICAgICAg
Q0ZEaWN0aW9uYXJ5U2V0VmFsdWUoc3RyZWFtUHJvcGVydGllcywgQ0ZTVFIoImtDRlN0cmVhbVBy
b3BlcnR5U291cmNlQXBwbGljYXRpb24iKSwgc291cmNlQXBwbGljYXRpb25BdWRpdERhdGEuZ2V0
KCkpOwotI2VuZGlmCi0KICAgICBzdGF0aWMgY29uc3QgQ0ZTdHJpbmdSZWYga0NGVVJMQ29ubmVj
dGlvblNvY2tldFN0cmVhbVByb3BlcnRpZXMgPSBDRlNUUigia0NGVVJMQ29ubmVjdGlvblNvY2tl
dFN0cmVhbVByb3BlcnRpZXMiKTsKICAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlRGljdGlvbmFyeVJl
Zj4gcHJvcGVydGllc0RpY3Rpb25hcnk7CiAgICAgaWYgKGNsaWVudFByb3BlcnRpZXMpCkBAIC0y
MzAsMTQgKzIwMSw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmNyZWF0ZUNGVVJMQ29ubmVjdGkK
ICAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShwcm9wZXJ0aWVzRGljdGlvbmFyeS5nZXQoKSwga0NG
VVJMQ29ubmVjdGlvblNvY2tldFN0cmVhbVByb3BlcnRpZXMsIHN0cmVhbVByb3BlcnRpZXMpOwog
ICAgIENGUmVsZWFzZShzdHJlYW1Qcm9wZXJ0aWVzKTsKIAotI2lmIFBMQVRGT1JNKENPQ09BKQot
ICAgIGlmIChkLT5tX3VzZXNBc3luY0NhbGxiYWNrcykKLSAgICAgICAgZC0+bV9jb25uZWN0aW9u
RGVsZWdhdGUgPSBhZG9wdFJlZihuZXcgUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxl
Z2F0ZVdpdGhPcGVyYXRpb25RdWV1ZSh0aGlzKSk7Ci0gICAgZWxzZQotICAgICAgICBkLT5tX2Nv
bm5lY3Rpb25EZWxlZ2F0ZSA9IGFkb3B0UmVmKG5ldyBTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxl
Q0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUodGhpcykpOwotI2Vsc2UKICAgICBkLT5tX2Nvbm5lY3Rp
b25EZWxlZ2F0ZSA9IGFkb3B0UmVmKG5ldyBTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxD
b25uZWN0aW9uRGVsZWdhdGUodGhpcykpOwotI2VuZGlmCiAgICAgZC0+bV9jb25uZWN0aW9uRGVs
ZWdhdGUtPnNldHVwUmVxdWVzdChyZXF1ZXN0LmdldCgpKTsKIAogICAgIENGVVJMQ29ubmVjdGlv
bkNsaWVudF9WNiBjbGllbnQgPSBkLT5tX2Nvbm5lY3Rpb25EZWxlZ2F0ZS0+bWFrZUNvbm5lY3Rp
b25DbGllbnQoKTsKQEAgLTI2NCwxMCArMjI4LDYgQEAgYm9vbCBSZXNvdXJjZUhhbmRsZTo6c3Rh
cnQoKQogCiAgICAgYm9vbCBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSA9ICFjbGllbnQoKSB8
fCBjbGllbnQoKS0+c2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UodGhpcyk7CiAKLSNpZiBFTkFC
TEUoV0VCX1RJTUlORykgJiYgUExBVEZPUk0oQ09DT0EpICYmICFIQVZFKFRJTUlOR0RBVEFPUFRJ
T05TKQotICAgIHNldENvbGxlY3RzVGltaW5nRGF0YSgpOwotI2VuZGlmCi0KICAgICBTY2hlZHVs
aW5nQmVoYXZpb3Igc2NoZWR1bGluZ0JlaGF2aW9yID0gY2xpZW50KCktPmxvYWRpbmdTeW5jaHJv
bm91c1hIUigpID8gU2NoZWR1bGluZ0JlaGF2aW9yOjpTeW5jaHJvbm91cyA6IFNjaGVkdWxpbmdC
ZWhhdmlvcjo6QXN5bmNocm9ub3VzOwogCiAgICAgY3JlYXRlQ0ZVUkxDb25uZWN0aW9uKHNob3Vs
ZFVzZUNyZWRlbnRpYWxTdG9yYWdlLCBkLT5tX3Nob3VsZENvbnRlbnRTbmlmZiwgc2NoZWR1bGlu
Z0JlaGF2aW9yLCBjbGllbnQoKS0+Y29ubmVjdGlvblByb3BlcnRpZXModGhpcykuZ2V0KCkpOwpA
QCAtMzUxLDE2ICszMTEsNiBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpkaWRSZWNlaXZlQXV0aGVu
dGljCiAgICAgQVNTRVJUKGNoYWxsZW5nZS5jZlVSTEF1dGhDaGFsbGVuZ2VSZWYoKSk7CiAgICAg
QVNTRVJUKGNoYWxsZW5nZS5hdXRoZW50aWNhdGlvbkNsaWVudCgpID09IHRoaXMpOyAvLyBTaG91
bGQgYmUgYWxyZWFkeSBzZXQuCiAKLSNpZiAhUExBVEZPUk0oV0lOKQotICAgIC8vIFByb3h5IGF1
dGhlbnRpY2F0aW9uIGlzIGhhbmRsZWQgYnkgQ0ZOZXR3b3JrIGludGVybmFsbHkuIFdlIGNhbiBn
ZXQgaGVyZSBpZiB0aGUgdXNlciBjYW5jZWxzCi0gICAgLy8gQ0ZOZXR3b3JrIGF1dGhlbnRpY2F0
aW9uIGRpYWxvZywgYW5kIHdlIHNob3VsZG4ndCBhc2sgdGhlIGNsaWVudCB0byBkaXNwbGF5IGFu
b3RoZXIgb25lIGluIHRoYXQgY2FzZS4KLSAgICBpZiAoY2hhbGxlbmdlLnByb3RlY3Rpb25TcGFj
ZSgpLmlzUHJveHkoKSkgewotICAgICAgICAvLyBDYW5ub3QgdXNlIHJlY2VpdmVkUmVxdWVzdFRv
Q29udGludWVXaXRob3V0Q3JlZGVudGlhbCgpLCBiZWNhdXNlIGN1cnJlbnQgY2hhbGxlbmdlIGlz
IG5vdCB5ZXQgc2V0LgotICAgICAgICBDRlVSTENvbm5lY3Rpb25Vc2VDcmVkZW50aWFsKGQtPm1f
Y29ubmVjdGlvbi5nZXQoKSwgMCwgY2hhbGxlbmdlLmNmVVJMQXV0aENoYWxsZW5nZVJlZigpKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLSNlbmRpZgotCiAgICAgaWYgKHRyeUhhbmRsZVBhc3N3
b3JkQmFzZWRBdXRoZW50aWNhdGlvbihjaGFsbGVuZ2UpKQogICAgICAgICByZXR1cm47CiAKQEAg
LTM4MSwxMSArMzMxLDcgQEAgYm9vbCBSZXNvdXJjZUhhbmRsZTo6dHJ5SGFuZGxlUGFzc3dvcmRC
YQogCiAgICAgaWYgKCFkLT5tX3VzZXIuaXNOdWxsKCkgJiYgIWQtPm1fcGFzcy5pc051bGwoKSkg
ewogICAgICAgICBSZXRhaW5QdHI8Q0ZVUkxDcmVkZW50aWFsUmVmPiBjZkNyZWRlbnRpYWwgPSBh
ZG9wdENGKENGVVJMQ3JlZGVudGlhbENyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBkLT5tX3Vz
ZXIuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgZC0+bV9wYXNzLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0
KCksIDAsIGtDRlVSTENyZWRlbnRpYWxQZXJzaXN0ZW5jZU5vbmUpKTsKLSNpZiBQTEFURk9STShD
T0NPQSkKLSAgICAgICAgQ3JlZGVudGlhbCBjcmVkZW50aWFsID0gQ3JlZGVudGlhbChjZkNyZWRl
bnRpYWwuZ2V0KCkpOwotI2Vsc2UKICAgICAgICAgQ3JlZGVudGlhbCBjcmVkZW50aWFsID0gY29y
ZShjZkNyZWRlbnRpYWwuZ2V0KCkpOwotI2VuZGlmCiAgICAgICAgIAogICAgICAgICBVUkwgdXJs
VG9TdG9yZTsKICAgICAgICAgaWYgKGNoYWxsZW5nZS5mYWlsdXJlUmVzcG9uc2UoKS5odHRwU3Rh
dHVzQ29kZSgpID09IDQwMSkKQEAgLTQxNSwxMiArMzYxLDggQEAgYm9vbCBSZXNvdXJjZUhhbmRs
ZTo6dHJ5SGFuZGxlUGFzc3dvcmRCYQogICAgICAgICAgICAgICAgICAgICAvLyBTdG9yZSB0aGUg
Y3JlZGVudGlhbCBiYWNrLCBwb3NzaWJseSBhZGRpbmcgaXQgYXMgYSBkZWZhdWx0IGZvciB0aGlz
IGRpcmVjdG9yeS4KICAgICAgICAgICAgICAgICAgICAgZC0+bV9jb250ZXh0LT5zdG9yYWdlU2Vz
c2lvbigpLmNyZWRlbnRpYWxTdG9yYWdlKCkuc2V0KGNyZWRlbnRpYWwsIGNoYWxsZW5nZS5wcm90
ZWN0aW9uU3BhY2UoKSwgY2hhbGxlbmdlLmZhaWx1cmVSZXNwb25zZSgpLnVybCgpKTsKICAgICAg
ICAgICAgICAgICB9Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgICAgICAgICAgICAgQ0ZVUkxD
b25uZWN0aW9uVXNlQ3JlZGVudGlhbChkLT5tX2Nvbm5lY3Rpb24uZ2V0KCksIGNyZWRlbnRpYWwu
Y2ZDcmVkZW50aWFsKCksIGNoYWxsZW5nZS5jZlVSTEF1dGhDaGFsbGVuZ2VSZWYoKSk7Ci0jZWxz
ZQogICAgICAgICAgICAgICAgIFJldGFpblB0cjxDRlVSTENyZWRlbnRpYWxSZWY+IGNmQ3JlZGVu
dGlhbCA9IGFkb3B0Q0YoY3JlYXRlQ0YoY3JlZGVudGlhbCkpOwogICAgICAgICAgICAgICAgIENG
VVJMQ29ubmVjdGlvblVzZUNyZWRlbnRpYWwoZC0+bV9jb25uZWN0aW9uLmdldCgpLCBjZkNyZWRl
bnRpYWwuZ2V0KCksIGNoYWxsZW5nZS5jZlVSTEF1dGhDaGFsbGVuZ2VSZWYoKSk7Ci0jZW5kaWYK
ICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpA
QCAtNDcwLDIwICs0MTIsMTAgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRDcmVkZW50
aWFsKAogICAgICAgICBkLT5tX2NvbnRleHQtPnN0b3JhZ2VTZXNzaW9uKCkuY3JlZGVudGlhbFN0
b3JhZ2UoKS5zZXQod2ViQ3JlZGVudGlhbCwgY2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZSgpLCB1
cmxUb1N0b3JlKTsKIAogICAgICAgICBpZiAoZC0+bV9jb25uZWN0aW9uKSB7Ci0jaWYgUExBVEZP
Uk0oQ09DT0EpCiAgICAgICAgICAgICBDRlVSTENvbm5lY3Rpb25Vc2VDcmVkZW50aWFsKGQtPm1f
Y29ubmVjdGlvbi5nZXQoKSwgd2ViQ3JlZGVudGlhbC5jZkNyZWRlbnRpYWwoKSwgY2hhbGxlbmdl
LmNmVVJMQXV0aENoYWxsZW5nZVJlZigpKTsKLSNlbHNlCi0gICAgICAgICAgICBSZXRhaW5QdHI8
Q0ZVUkxDcmVkZW50aWFsUmVmPiBjZkNyZWRlbnRpYWwgPSBhZG9wdENGKGNyZWF0ZUNGKHdlYkNy
ZWRlbnRpYWwpKTsKLSAgICAgICAgICAgIENGVVJMQ29ubmVjdGlvblVzZUNyZWRlbnRpYWwoZC0+
bV9jb25uZWN0aW9uLmdldCgpLCBjZkNyZWRlbnRpYWwuZ2V0KCksIGNoYWxsZW5nZS5jZlVSTEF1
dGhDaGFsbGVuZ2VSZWYoKSk7Ci0jZW5kaWYKICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAoZC0+
bV9jb25uZWN0aW9uKSB7Ci0jaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgICAgIENGVVJMQ29ubmVj
dGlvblVzZUNyZWRlbnRpYWwoZC0+bV9jb25uZWN0aW9uLmdldCgpLCBjcmVkZW50aWFsLmNmQ3Jl
ZGVudGlhbCgpLCBjaGFsbGVuZ2UuY2ZVUkxBdXRoQ2hhbGxlbmdlUmVmKCkpOwotI2Vsc2UKLSAg
ICAgICAgUmV0YWluUHRyPENGVVJMQ3JlZGVudGlhbFJlZj4gY2ZDcmVkZW50aWFsID0gYWRvcHRD
RihjcmVhdGVDRihjcmVkZW50aWFsKSk7Ci0gICAgICAgIENGVVJMQ29ubmVjdGlvblVzZUNyZWRl
bnRpYWwoZC0+bV9jb25uZWN0aW9uLmdldCgpLCBjZkNyZWRlbnRpYWwuZ2V0KCksIGNoYWxsZW5n
ZS5jZlVSTEF1dGhDaGFsbGVuZ2VSZWYoKSk7Ci0jZW5kaWYKICAgICB9CiAKICAgICBjbGVhckF1
dGhlbnRpY2F0aW9uKCk7CkBAIC02MjQsMzAgKzU1Niw2IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6
OnBsYXRmb3JtU2V0RGVmZXJzTG8KICAgICAgICAgQ0ZVUkxDb25uZWN0aW9uUmVzdW1lKGQtPm1f
Y29ubmVjdGlvbi5nZXQoKSk7CiB9CiAKLSNpZiBQTEFURk9STShDT0NPQSkKLXZvaWQgUmVzb3Vy
Y2VIYW5kbGU6OnNjaGVkdWxlKFNjaGVkdWxlUGFpciYgcGFpcikKLXsKLSAgICBDRlJ1bkxvb3BS
ZWYgcnVuTG9vcCA9IHBhaXIucnVuTG9vcCgpOwotICAgIGlmICghcnVuTG9vcCkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgQ0ZVUkxDb25uZWN0aW9uU2NoZWR1bGVXaXRoUnVuTG9vcChkLT5tX2Nv
bm5lY3Rpb24uZ2V0KCksIHJ1bkxvb3AsIHBhaXIubW9kZSgpKTsKLSAgICBpZiAoZC0+bV9zdGFy
dFdoZW5TY2hlZHVsZWQpIHsKLSAgICAgICAgQ0ZVUkxDb25uZWN0aW9uU3RhcnQoZC0+bV9jb25u
ZWN0aW9uLmdldCgpKTsKLSAgICAgICAgZC0+bV9zdGFydFdoZW5TY2hlZHVsZWQgPSBmYWxzZTsK
LSAgICB9Ci19Ci0KLXZvaWQgUmVzb3VyY2VIYW5kbGU6OnVuc2NoZWR1bGUoU2NoZWR1bGVQYWly
JiBwYWlyKQotewotICAgIENGUnVuTG9vcFJlZiBydW5Mb29wID0gcGFpci5ydW5Mb29wKCk7Ci0g
ICAgaWYgKCFydW5Mb29wKQotICAgICAgICByZXR1cm47Ci0KLSAgICBDRlVSTENvbm5lY3Rpb25V
bnNjaGVkdWxlRnJvbVJ1bkxvb3AoZC0+bV9jb25uZWN0aW9uLmdldCgpLCBydW5Mb29wLCBwYWly
Lm1vZGUoKSk7Ci19Ci0jZW5kaWYKLQogY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBSZXNvdXJjZUhh
bmRsZTo6Y3VycmVudFJlcXVlc3QoKSBjb25zdAogewogICAgIHJldHVybiBkLT5tX2N1cnJlbnRS
ZXF1ZXN0OwpAQCAtNjc2LDYgKzU4NCw2IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmNvbnRpbnVl
V2lsbENhY2hlUmUKIHsKICAgICBkLT5tX2Nvbm5lY3Rpb25EZWxlZ2F0ZS0+Y29udGludWVXaWxs
Q2FjaGVSZXNwb25zZShyZXNwb25zZSk7CiB9Ci0jZW5kaWYgLy8gVVNFKENGTkVUV09SSykKKyNl
bmRpZiAvLyBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZV
UkxDb25uZWN0aW9uRGVsZWdhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5j
cHAJKHJldmlzaW9uIDIwNzAzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI2LDIwICsyNiwxMyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlJl
c291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuaCIKIAotI2lmIFVTRShDRk5FVFdP
UkspCisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKIAogI2luY2x1ZGUgIkNGTmV0d29ya1NQSS5o
IgogI2luY2x1ZGUgIkZvcm1EYXRhU3RyZWFtQ0ZOZXQuaCIKICNpbmNsdWRlICJOZXR3b3JraW5n
Q29udGV4dC5oIgogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCi0KLSNpZiBQTEFURk9STShD
T0NPQSkKLSNpbmNsdWRlICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgiCi0jZW5kaWYKLQotI2lm
IFBMQVRGT1JNKFdJTikKICNpbmNsdWRlIDxXZWJLaXRTeXN0ZW1JbnRlcmZhY2UvV2ViS2l0U3lz
dGVtSW50ZXJmYWNlLmg+Ci0jZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0yMTgs
NCArMjExLDQgQEAgQ0ZVUkxDb25uZWN0aW9uQ2xpZW50X1Y2IFJlc291cmNlSGFuZGxlQwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlLgogCi0jZW5kaWYgLy8gVVNFKENGTkVUV09SSykKKyNlbmRp
ZiAvLyBVU0UoQ0ZVUkxDT05ORUNUSU9OKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRs
ZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmgJKHJldmlzaW9uIDIwNzAzOSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25E
ZWxlZ2F0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMywxMCArMjMsOSBAQAogICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KICAqLwogCi0jaWZuZGVmIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVf
aAotI2RlZmluZSBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlX2gKKyNwcmFn
bWEgb25jZQogCi0jaWYgVVNFKENGTkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQog
CiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGVVJM
Q29ubmVjdGlvblByaXYuaD4KQEAgLTEwMCw2ICs5OSw0IEBAIHByb3RlY3RlZDoKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZS4KIAotI2VuZGlmIC8vIFVTRShDRk5FVFdPUkspCi0KLSNlbmRpZiAv
LyBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlX2gKKyNlbmRpZiAvLyBVU0Uo
Q0ZVUkxDT05ORUNUSU9OKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
Zi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jl
c291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuY3Bw
CShyZXZpc2lvbiAyMDcwMzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVy
YXRpb25RdWV1ZS5oIgogCi0jaWYgVVNFKENGTkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNU
SU9OKQogCiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25DRi5oIgogI2luY2x1ZGUgIkF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlLmgiCkBAIC03NSw5ICs3NSw2IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGVD
RlVSTENvbm5lY3Rpb25EZWxlZ2EKIAogdm9pZCBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlv
bkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlOjpzZXR1cFJlcXVlc3QoQ0ZNdXRhYmxlVVJMUmVx
dWVzdFJlZiByZXF1ZXN0KQogewotI2lmIFBMQVRGT1JNKElPUykKLSAgICBDRlVSTFJlcXVlc3RT
ZXRTaG91bGRTdGFydFN5bmNocm9ub3VzbHkocmVxdWVzdCwgMSk7Ci0jZW5kaWYKICAgICBDRlVS
TFJlZiByZXF1ZXN0VVJMID0gQ0ZVUkxSZXF1ZXN0R2V0VVJMKHJlcXVlc3QpOwogICAgIGlmICgh
cmVxdWVzdFVSTCkKICAgICAgICAgcmV0dXJuOwpAQCAtMTQ5LDEwICsxNDYsOCBAQCB2b2lkIFJl
c291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhCiAgICAgICAgICAgICBhZGp1c3RNSU1F
VHlwZUlmTmVjZXNzYXJ5KGNmUmVzcG9uc2UsIGlzTWFpblJlc291cmNlTG9hZCk7CiAgICAgICAg
IH0KIAotI2lmICFQTEFURk9STShJT1MpCiAgICAgICAgIGlmIChfQ0ZVUkxSZXF1ZXN0Q29weVBy
b3RvY29sUHJvcGVydHlGb3JLZXkobV9oYW5kbGUtPmZpcnN0UmVxdWVzdCgpLmNmVVJMUmVxdWVz
dChEb05vdFVwZGF0ZUhUVFBCb2R5KSwgQ0ZTVFIoIkZvcmNlSFRNTE1JTUVUeXBlIikpKQogICAg
ICAgICAgICAgQ0ZVUkxSZXNwb25zZVNldE1JTUVUeXBlKGNmUmVzcG9uc2UsIENGU1RSKCJ0ZXh0
L2h0bWwiKSk7Ci0jZW5kaWYgLy8gIVBMQVRGT1JNKElPUykKICAgICAgICAgCiAgICAgICAgIFJl
c291cmNlUmVzcG9uc2UgcmVzb3VyY2VSZXNwb25zZShjZlJlc3BvbnNlKTsKICNpZiBFTkFCTEUo
V0VCX1RJTUlORykKQEAgLTI4OCwxNSArMjgzLDcgQEAgQm9vbGVhbiBSZXNvdXJjZUhhbmRsZUNG
VVJMQ29ubmVjdGlvbkRlbAogCiAgICAgICAgIExPRyhOZXR3b3JrLCAiQ0ZOZXQgLSBSZXNvdXJj
ZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlOjpjYW5SZXNw
b25kVG9Qcm90ZWN0aW9uU3BhY2UoaGFuZGxlPSVwKSAoJXMpIiwgbV9oYW5kbGUsIG1faGFuZGxl
LT5maXJzdFJlcXVlc3QoKS51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIAotICAgICAg
ICBQcm90ZWN0aW9uU3BhY2UgY29yZVByb3RlY3Rpb25TcGFjZSA9IFByb3RlY3Rpb25TcGFjZShw
cm90ZWN0aW9uU3BhY2UpOwotI2lmIFBMQVRGT1JNKElPUykKLSAgICAgICAgaWYgKGNvcmVQcm90
ZWN0aW9uU3BhY2UuYXV0aGVudGljYXRpb25TY2hlbWUoKSA9PSBQcm90ZWN0aW9uU3BhY2VBdXRo
ZW50aWNhdGlvblNjaGVtZVVua25vd24pIHsKLSAgICAgICAgICAgIG1fYm9vbFJlc3VsdCA9IGZh
bHNlOwotICAgICAgICAgICAgZGlzcGF0Y2hfc2VtYXBob3JlX3NpZ25hbChtX3NlbWFwaG9yZSk7
Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSNlbmRpZiAvLyBQTEFURk9STShJT1Mp
Ci0gICAgICAgIG1faGFuZGxlLT5jYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNl
KGNvcmVQcm90ZWN0aW9uU3BhY2UpOworICAgICAgICBtX2hhbmRsZS0+Y2FuQXV0aGVudGljYXRl
QWdhaW5zdFByb3RlY3Rpb25TcGFjZShQcm90ZWN0aW9uU3BhY2UocHJvdGVjdGlvblNwYWNlKSk7
CiAgICAgfSk7CiAgICAgZGlzcGF0Y2hfc2VtYXBob3JlX3dhaXQobV9zZW1hcGhvcmUsIERJU1BB
VENIX1RJTUVfRk9SRVZFUik7CiAgICAgcmV0dXJuIG1fYm9vbFJlc3VsdDsKQEAgLTM0Nyw0ICsz
MzQsNCBAQCB2b2lkIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhCiAjZW5kaWYg
Ly8gVVNFKFBST1RFQ1RJT05fU1BBQ0VfQVVUSF9DQUxMQkFDSykKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIAotI2VuZGlmIC8vIFVTRShDRk5FVFdPUkspCisjZW5kaWYgLy8gVVNFKENGVVJMQ09O
TkVDVElPTikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3Vy
Y2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5k
bGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5oCShyZXZpc2lvbiAy
MDcwMzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFu
ZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuaAkod29ya2luZyBj
b3B5KQpAQCAtMjMsMTAgKzIzLDkgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBS
ZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlX2gK
LSNkZWZpbmUgUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRp
b25RdWV1ZV9oCisjcHJhZ21hIG9uY2UKIAotI2lmIFVTRShDRk5FVFdPUkspCisjaWYgVVNFKENG
VVJMQ09OTkVDVElPTikKIAogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9u
RGVsZWdhdGUuaCIKICNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZOZXR3b3JrLmg+CkBAIC04MCw2ICs3
OSw0IEBAIHByaXZhdGU6CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUuCiAKLSNlbmRpZiAvLyBV
U0UoQ0ZORVRXT1JLKQotCi0jZW5kaWYgLy8gUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25E
ZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZV9oCisjZW5kaWYgLy8gVVNFKENGVVJMQ09OTkVDVElP
TikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1
ZXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9S
ZXNvdXJjZVJlcXVlc3QuaAkocmV2aXNpb24gMjA3MDM5KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzEs
NyArMzEsNyBAQAogCiBPQkpDX0NMQVNTIE5TVVJMUmVxdWVzdDsKIAotI2lmIFBMQVRGT1JNKENP
Q09BKSB8fCBVU0UoQ0ZORVRXT1JLKQorI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZVUkxD
T05ORUNUSU9OKQogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgX0NGVVJMUmVxdWVzdCogQ0ZVUkxSZXF1
ZXN0UmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgX19DRlVSTFN0b3JhZ2VTZXNzaW9uKiBDRlVS
TFN0b3JhZ2VTZXNzaW9uUmVmOwogI2VuZGlmCkBAIC02MSwxMyArNjEsNyBAQCBwdWJsaWM6CiAg
ICAgewogICAgIH0KICAgICAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotI2lmIFBMQVRGT1JNKENPQ09B
KQotICAgIFdFQkNPUkVfRVhQT1JUIFJlc291cmNlUmVxdWVzdChOU1VSTFJlcXVlc3QgKik7Ci0g
ICAgdm9pZCB1cGRhdGVOU1VSTFJlcXVlc3QoKTsKLSAgICB2b2lkIGNsZWFyT3JVcGRhdGVOU1VS
TFJlcXVlc3QoKTsKLSNlbmRpZgotCisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKICAgICBSZXNv
dXJjZVJlcXVlc3QoQ0ZVUkxSZXF1ZXN0UmVmIGNmUmVxdWVzdCkKICAgICAgICAgOiBSZXNvdXJj
ZVJlcXVlc3RCYXNlKCkKICAgICAgICAgLCBtX2NmUmVxdWVzdChjZlJlcXVlc3QpCkBAIC04NCwx
MSArNzgsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1cGRhdGVGcm9tRGVs
ZWdhdGVQcmVzZXJ2aW5nT2xkUHJvcGVydGllcyhjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKIAog
I2lmIFBMQVRGT1JNKENPQ09BKQotI2lmIFVTRShDRk5FVFdPUkspCi0gICAgYm9vbCBlbmNvZGlu
Z1JlcXVpcmVzUGxhdGZvcm1EYXRhKCkgY29uc3QgeyByZXR1cm4gbV9odHRwQm9keSB8fCBtX2Nm
UmVxdWVzdDsgfQotI2Vsc2UKICAgICBib29sIGVuY29kaW5nUmVxdWlyZXNQbGF0Zm9ybURhdGEo
KSBjb25zdCB7IHJldHVybiBtX2h0dHBCb2R5IHx8IG1fbnNSZXF1ZXN0OyB9Ci0jZW5kaWYKICAg
ICBXRUJDT1JFX0VYUE9SVCBOU1VSTFJlcXVlc3QgKm5zVVJMUmVxdWVzdChIVFRQQm9keVVwZGF0
ZVBvbGljeSkgY29uc3Q7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgQ0ZTdHJpbmdSZWYg
aXNVc2VySW5pdGlhdGVkS2V5KCk7CkBAIC0xMDUsNyArOTUsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzZXREb21haW5Gb3JDYWNoZVBhcnRpdGlvbihjb25zdCBTdHJpbmcmIGRvbWFpbikgeyBtX2Nh
Y2hlUGFydGl0aW9uID0gcGFydGl0aW9uTmFtZShkb21haW4pOyB9CiAjZW5kaWYKIAotI2lmIFBM
QVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZORVRXT1JLKQorI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBV
U0UoQ0ZVUkxDT05ORUNUSU9OKQogICAgIFdFQkNPUkVfRVhQT1JUIENGVVJMUmVxdWVzdFJlZiBj
ZlVSTFJlcXVlc3QoSFRUUEJvZHlVcGRhdGVQb2xpY3kpIGNvbnN0OwogICAgIHZvaWQgc2V0U3Rv
cmFnZVNlc3Npb24oQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZik7CiAjZW5kaWYKQEAgLTEyNSw3ICsx
MTUsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBkb1BsYXRmb3JtU2V0QXNJc29sYXRlZENvcHko
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQorI2lmIFVTRShD
RlVSTENPTk5FQ1RJT04pCiAgICAgUmV0YWluUHRyPENGVVJMUmVxdWVzdFJlZj4gbV9jZlJlcXVl
c3Q7CiAjZW5kaWYKICNpZiBQTEFURk9STShDT0NPQSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQu
Y3BwCShyZXZpc2lvbiAyMDcwMzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NmL1Jlc291cmNlUmVxdWVzdENGTmV0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQs
NyBAQAogI2luY2x1ZGUgIlB1YmxpY1N1ZmZpeC5oIgogI2VuZGlmCiAKLSNpZiBVU0UoQ0ZORVRX
T1JLKQorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAjaW5jbHVkZSAiRm9ybURhdGFTdHJlYW1D
Rk5ldC5oIgogI2luY2x1ZGUgPENGTmV0d29yay9DRlVSTFJlcXVlc3RQcml2Lmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvQ1N0cmluZy5oPgpAQCAtNTksMTIgKzU5LDExIEBAIGJvb2wgUmVzb3VyY2VS
ZXF1ZXN0OjpzX2h0dHBQaXBlbGluaW5nRW4KIGJvb2wgUmVzb3VyY2VSZXF1ZXN0OjpzX2h0dHBQ
aXBlbGluaW5nRW5hYmxlZCA9IGZhbHNlOwogI2VuZGlmCiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQor
I2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAKIHR5cGVkZWYgdm9pZCAoKkNGVVJMUmVxdWVzdFNl
dENvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheUZ1bmN0aW9uKShDRk11dGFi
bGVVUkxSZXF1ZXN0UmVmLCBDRkFycmF5UmVmKTsKIHR5cGVkZWYgQ0ZBcnJheVJlZiAoKkNGVVJM
UmVxdWVzdENvcHlDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXlGdW5jdGlv
bikoQ0ZVUkxSZXF1ZXN0UmVmKTsKIAotI2lmIFBMQVRGT1JNKFdJTikKIHN0YXRpYyBITU9EVUxF
IGZpbmRDRk5ldHdvcmtNb2R1bGUoKQogewogI2lmbmRlZiBERUJVR19BTEwKQEAgLTgzLDE3ICs4
Miw2IEBAIHN0YXRpYyBDRlVSTFJlcXVlc3RDb3B5Q29udGVudERpc3Bvc2l0aW8KIHsKICAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxDRlVSTFJlcXVlc3RDb3B5Q29udGVudERpc3Bvc2l0aW9u
RW5jb2RpbmdGYWxsYmFja0FycmF5RnVuY3Rpb24+KEdldFByb2NBZGRyZXNzKGZpbmRDRk5ldHdv
cmtNb2R1bGUoKSwgIl9DRlVSTFJlcXVlc3RDb3B5Q29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdG
YWxsYmFja0FycmF5IikpOwogfQotI2VsaWYgUExBVEZPUk0oQ09DT0EpCi1zdGF0aWMgQ0ZVUkxS
ZXF1ZXN0U2V0Q29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5RnVuY3Rpb24g
ZmluZENGVVJMUmVxdWVzdFNldENvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJh
eUZ1bmN0aW9uKCkKLXsKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxDRlVSTFJlcXVlc3RT
ZXRDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXlGdW5jdGlvbj4oZGxzeW0o
UlRMRF9ERUZBVUxULCAiX0NGVVJMUmVxdWVzdFNldENvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5n
RmFsbGJhY2tBcnJheSIpKTsKLX0KLQotc3RhdGljIENGVVJMUmVxdWVzdENvcHlDb250ZW50RGlz
cG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXlGdW5jdGlvbiBmaW5kQ0ZVUkxSZXF1ZXN0Q29w
eUNvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheUZ1bmN0aW9uKCkKLXsKLSAg
ICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxDRlVSTFJlcXVlc3RDb3B5Q29udGVudERpc3Bvc2l0
aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5RnVuY3Rpb24+KGRsc3ltKFJUTERfREVGQVVMVCwgIl9D
RlVSTFJlcXVlc3RDb3B5Q29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5Iikp
OwotfQotI2VuZGlmCiAKIHN0YXRpYyB2b2lkIHNldENvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5n
RmFsbGJhY2tBcnJheShDRk11dGFibGVVUkxSZXF1ZXN0UmVmIHJlcXVlc3QsIENGQXJyYXlSZWYg
ZmFsbGJhY2tBcnJheSkKIHsKQEAgLTE1NiwxMCArMTQ0LDYgQEAgdm9pZCBSZXNvdXJjZVJlcXVl
c3Q6OmRvVXBkYXRlUGxhdGZvcm1SZQogICAgIGlmIChyZXNvdXJjZVByaW9yaXRpZXNFbmFibGVk
KCkpCiAgICAgICAgIENGVVJMUmVxdWVzdFNldFJlcXVlc3RQcmlvcml0eShjZlJlcXVlc3QsIHRv
UGxhdGZvcm1SZXF1ZXN0UHJpb3JpdHkocHJpb3JpdHkoKSkpOwogCi0jaWYgIVBMQVRGT1JNKFdJ
TikKLSAgICBfQ0ZVUkxSZXF1ZXN0U2V0UHJvdG9jb2xQcm9wZXJ0eShjZlJlcXVlc3QsIGtDRlVS
TFJlcXVlc3RBbGxvd0FsbFBPU1RDYWNoaW5nLCBrQ0ZCb29sZWFuVHJ1ZSk7Ci0jZW5kaWYKLQog
ICAgIHNldEhlYWRlckZpZWxkcyhjZlJlcXVlc3QsIGh0dHBIZWFkZXJGaWVsZHMoKSk7CiAKICAg
ICBDRlVSTFJlcXVlc3RTZXRTaG91bGRIYW5kbGVIVFRQQ29va2llcyhjZlJlcXVlc3QsIGFsbG93
Q29va2llcygpKTsKQEAgLTE4NCw5ICsxNjgsNiBAQCB2b2lkIFJlc291cmNlUmVxdWVzdDo6ZG9V
cGRhdGVQbGF0Zm9ybVJlCiAjZW5kaWYKIAogICAgIG1fY2ZSZXF1ZXN0ID0gYWRvcHRDRihjZlJl
cXVlc3QpOwotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIGNsZWFyT3JVcGRhdGVOU1VSTFJlcXVl
c3QoKTsKLSNlbmRpZgogfQogCiB2b2lkIFJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVQbGF0Zm9y
bUhUVFBCb2R5KCkKQEAgLTIxOSwzMCArMjAwLDEyIEBAIHZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojpk
b1VwZGF0ZVBsYXRmb3JtSFQKICAgICB9CiAKICAgICBtX2NmUmVxdWVzdCA9IGFkb3B0Q0YoY2ZS
ZXF1ZXN0KTsKLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICBjbGVhck9yVXBkYXRlTlNVUkxSZXF1
ZXN0KCk7Ci0jZW5kaWYKIH0KIAogdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUmVzb3Vy
Y2VSZXF1ZXN0KCkKIHsKICAgICBpZiAoIW1fY2ZSZXF1ZXN0KSB7Ci0jaWYgUExBVEZPUk0oSU9T
KQotICAgICAgICAvLyA8cmRhcjovL3Byb2JsZW0vOTkxMzUyNj4KLSAgICAgICAgLy8gVGhpcyBp
cyBhIGhhY2sgdG8gbWltaWMgdGhlIHN1YnRsZSBiZWhhdmlvdXIgb2YgdGhlIEZvdW5kYXRpb24g
YmFzZWQgUmVzb3VyY2VSZXF1ZXN0Ci0gICAgICAgIC8vIGNvZGUuIFRoYXQgY29kZSBkb2VzIG5v
dCByZXNldCBtX2h0dHBNZXRob2QgaWYgdGhlIE5TVVJMUmVxdWVzdCBpcyBuaWwuIEkgZmlsZWQK
LSAgICAgICAgLy8gPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NjMz
Nj4gdG8gdHJhY2sgdGhhdC4KLSAgICAgICAgLy8gQW5vdGhlciByZWxhdGVkIGJ1ZyBpcyA8aHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY2MzUwPi4gRml4aW5nIHRoYXQK
LSAgICAgICAgLy8gd291bGQsIGlkZWFsbHksIGFsbG93IHVzIHRvIG5vdCBoYXZlIHRoaXMgaGFj
ay4gQnV0IHVuZm9ydHVuYXRlbHkgdGhhdCBjYXVzZWQgbGF5b3V0IHRlc3QKLSAgICAgICAgLy8g
ZmFpbHVyZXMuCi0gICAgICAgIC8vIFJlbW92YWwgb2YgdGhpcyBoYWNrIGlzIHRyYWNrZWQgYnkg
PHJkYXI6Ly9wcm9ibGVtLzk5NzA0OTk+LgotCi0gICAgICAgIFN0cmluZyBodHRwTWV0aG9kID0g
bV9odHRwTWV0aG9kOwogICAgICAgICAqdGhpcyA9IFJlc291cmNlUmVxdWVzdCgpOwotICAgICAg
ICBtX2h0dHBNZXRob2QgPSBodHRwTWV0aG9kOwotI2Vsc2UKLSAgICAgICAgKnRoaXMgPSBSZXNv
dXJjZVJlcXVlc3QoKTsKLSNlbmRpZgogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0zMTcs
MTIgKzI4MCw5IEBAIHZvaWQgUmVzb3VyY2VSZXF1ZXN0OjpzZXRTdG9yYWdlU2Vzc2lvbigKICAg
ICBpZiAoc3RvcmFnZVNlc3Npb24pCiAgICAgICAgIF9DRlVSTFJlcXVlc3RTZXRTdG9yYWdlU2Vz
c2lvbihjZlJlcXVlc3QsIHN0b3JhZ2VTZXNzaW9uKTsKICAgICBtX2NmUmVxdWVzdCA9IGFkb3B0
Q0YoY2ZSZXF1ZXN0KTsKLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICBjbGVhck9yVXBkYXRlTlNV
UkxSZXF1ZXN0KCk7Ci0jZW5kaWYKIH0KIAotI2VuZGlmIC8vIFVTRShDRk5FVFdPUkspCisjZW5k
aWYgLy8gVVNFKENGVVJMQ09OTkVDVElPTikKIAogdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OnVwZGF0
ZUZyb21EZWxlZ2F0ZVByZXNlcnZpbmdPbGRQcm9wZXJ0aWVzKGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgZGVsZWdhdGVQcm92aWRlZFJlcXVlc3QpCiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdENGTmV0LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5oCShy
ZXZpc2lvbiAyMDcwMzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jl
c291cmNlUmVxdWVzdENGTmV0LmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDggKzIzLDcgQEAKICAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAogICovCiAKLSNpZm5kZWYgUmVzb3VyY2VSZXF1ZXN0Q0ZOZXRfaAotI2Rl
ZmluZSBSZXNvdXJjZVJlcXVlc3RDRk5ldF9oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkNG
TmV0d29ya1NQSS5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9hZFByaW9yaXR5LmgiCkBAIC0zMyw3
ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0Owog
Ci0jaWYgVVNFKENGTkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogdm9pZCBnZXRS
ZXNvdXJjZVJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiwgQ0ZVUkxSZXF1ZXN0UmVmKTsKIENGVVJM
UmVxdWVzdFJlZiBjZlVSTFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAjZW5kaWYK
QEAgLTc4LDUgKzc3LDMgQEAgaW5saW5lIENGVVJMUmVxdWVzdFByaW9yaXR5IHRvUGxhdGZvcm1S
ZQogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBSZXNvdXJjZVJlcXVl
c3RDRk5ldF9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291
cmNlUmVzcG9uc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NmL1Jlc291cmNlUmVzcG9uc2UuaAkocmV2aXNpb24gMjA3MDM5KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlc3BvbnNlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI4LDcgKzI4LDcgQEAKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlQmFzZS5oIgog
I2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAotI2lmIFVTRShDRk5FVFdPUkspCisjaWYgVVNF
KENGVVJMQ09OTkVDVElPTikKICNpbmNsdWRlICJDRk5ldHdvcmtTUEkuaCIKICNlbmRpZgogCkBA
IC00MywxNiArNDMsMTMgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAKLSNpZiBVU0UoQ0ZORVRX
T1JLKQorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAgICAgUmVzb3VyY2VSZXNwb25zZShDRlVS
TFJlc3BvbnNlUmVmIGNmUmVzcG9uc2UpCiAgICAgICAgIDogbV9pbml0TGV2ZWwoVW5pbml0aWFs
aXplZCkKICAgICAgICAgLCBtX2NmUmVzcG9uc2UoY2ZSZXNwb25zZSkKICAgICB7CiAgICAgICAg
IG1faXNOdWxsID0gIWNmUmVzcG9uc2U7CiAgICAgfQotI2lmIFBMQVRGT1JNKENPQ09BKQotICAg
IFdFQkNPUkVfRVhQT1JUIFJlc291cmNlUmVzcG9uc2UoTlNVUkxSZXNwb25zZSAqKTsKLSNlbmRp
ZgogI2Vsc2UKICAgICBSZXNvdXJjZVJlc3BvbnNlKE5TVVJMUmVzcG9uc2UgKm5zUmVzcG9uc2Up
CiAgICAgICAgIDogbV9pbml0TGV2ZWwoVW5pbml0aWFsaXplZCkKQEAgLTg0LDcgKzgxLDcgQEAg
cHVibGljOgogICAgICAgICAgKi8KICAgICB9CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQorI2lmIFVT
RShDRlVSTENPTk5FQ1RJT04pCiAgICAgV0VCQ09SRV9FWFBPUlQgQ0ZVUkxSZXNwb25zZVJlZiBj
ZlVSTFJlc3BvbnNlKCkgY29uc3Q7CiAjZW5kaWYKICNpZiBQTEFURk9STShDT0NPQSkKQEAgLTEw
OCwxMCArMTA1LDkgQEAgcHJpdmF0ZToKIAogICAgIHVuc2lnbmVkIG1faW5pdExldmVsIDogMzsK
IAotI2lmIFVTRShDRk5FVFdPUkspCisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKICAgICBtdXRh
YmxlIFJldGFpblB0cjxDRlVSTFJlc3BvbnNlUmVmPiBtX2NmUmVzcG9uc2U7Ci0jZW5kaWYKLSNp
ZiBQTEFURk9STShDT0NPQSkKKyNlbGlmIFBMQVRGT1JNKENPQ09BKQogICAgIG11dGFibGUgUmV0
YWluUHRyPE5TVVJMUmVzcG9uc2U+IG1fbnNSZXNwb25zZTsKICNlbmRpZgogfTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXNwb25zZUNGTmV0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291
cmNlUmVzcG9uc2VDRk5ldC5jcHAJKHJldmlzaW9uIDIwNzAzOSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXNwb25zZUNGTmV0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlJl
c291cmNlUmVzcG9uc2UuaCIKIAotI2lmIFVTRShDRk5FVFdPUkspCisjaWYgVVNFKENGVVJMQ09O
TkVDVElPTikKIAogI2luY2x1ZGUgIkNGTmV0d29ya1NQSS5oIgogCkBAIC0zNCwxMCArMzQsNiBA
QAogI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRy
Lmg+CiAKLSNpZiBQTEFURk9STShDT0NPQSkKLSNpbmNsdWRlICJXZWJDb3JlU3lzdGVtSW50ZXJm
YWNlLmgiCi0jZW5kaWYKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgQ0ZTdHJpbmdS
ZWYgY29uc3QgY29tbW9uSGVhZGVyRmllbGRzW10gPSB7CkBAIC00NywxMyArNDMsOSBAQCBzdGF0
aWMgQ0ZTdHJpbmdSZWYgY29uc3QgY29tbW9uSGVhZGVyRmllCiBDRlVSTFJlc3BvbnNlUmVmIFJl
c291cmNlUmVzcG9uc2U6OmNmVVJMUmVzcG9uc2UoKSBjb25zdAogewogICAgIGlmICghbV9jZlJl
c3BvbnNlICYmICFtX2lzTnVsbCkgewotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgICAgICBuc1VS
TFJlc3BvbnNlKCk7Ci0jZWxzZQogICAgICAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IHVybCA9IG1f
dXJsLmNyZWF0ZUNGVVJMKCk7CiAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGNyZWF0ZXMgYSB2ZXJ5
IGluY29tcGxldGUgQ0ZVUkxSZXNwb25zZSwgd2hpY2ggZG9lcyBub3QgZXZlbiBoYXZlIGEgc3Rh
dHVzIGNvZGUuCiAgICAgICAgIG1fY2ZSZXNwb25zZSA9IGFkb3B0Q0YoQ0ZVUkxSZXNwb25zZUNy
ZWF0ZSgwLCB1cmwuZ2V0KCksIG1fbWltZVR5cGUuc3RyaW5nKCkuY3JlYXRlQ0ZTdHJpbmcoKS5n
ZXQoKSwgbV9leHBlY3RlZENvbnRlbnRMZW5ndGgsIG1fdGV4dEVuY29kaW5nTmFtZS5zdHJpbmco
KS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBrQ0ZVUkxDYWNoZVN0b3JhZ2VBbGxvd2VkKSk7Ci0j
ZW5kaWYKICAgICB9CiAKICAgICByZXR1cm4gbV9jZlJlc3BvbnNlLmdldCgpOwpAQCAtMTE2LDEy
ICsxMDgsMTAgQEAgdm9pZCBSZXNvdXJjZVJlc3BvbnNlOjpwbGF0Zm9ybUxhenlJbml0KAogICAg
IG1faW5pdExldmVsID0gaW5pdExldmVsOwogfQogCi0jaWYgIVBMQVRGT1JNKENPQ09BKQogQ2Vy
dGlmaWNhdGVJbmZvIFJlc291cmNlUmVzcG9uc2U6OnBsYXRmb3JtQ2VydGlmaWNhdGVJbmZvKCkg
Y29uc3QKIHsKICAgICByZXR1cm4geyB9OwogfQotI2VuZGlmCiAKIFN0cmluZyBSZXNvdXJjZVJl
c3BvbnNlOjpwbGF0Zm9ybVN1Z2dlc3RlZEZpbGVuYW1lKCkgY29uc3QKIHsKQEAgLTE0Miw0ICsx
MzIsNCBAQCBib29sIFJlc291cmNlUmVzcG9uc2U6OnBsYXRmb3JtQ29tcGFyZShjCiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vIFVTRShDRk5FVFdPUkspCisjZW5kaWYgLy8g
VVNFKENGVVJMQ09OTkVDVElPTikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2YvU3luY2hyb25vdXNMb2FkZXJDbGllbnRDRk5ldC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9TeW5jaHJvbm91c0xvYWRlckNsaWVudENG
TmV0LmNwcAkocmV2aXNpb24gMjA3MDM5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jZi9TeW5jaHJvbm91c0xvYWRlckNsaWVudENGTmV0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjYsNyArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlN5bmNocm9u
b3VzTG9hZGVyQ2xpZW50LmgiCiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQorI2lmIFVTRShDRlVSTENP
Tk5FQ1RJT04pCiAKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oIgogI2luY2x1
ZGUgIlJlc291cmNlSGFuZGxlLmgiCkBAIC00OCw0ICs0OCw0IEBAIFJlc291cmNlRXJyb3IgU3lu
Y2hyb25vdXNMb2FkZXJDbGllbnQ6OnAKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5k
aWYgLy8gVVNFKENGTkVUV09SSykKKyNlbmRpZiAvLyBVU0UoQ0ZVUkxDT05ORUNUSU9OKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9TeW5jaHJvbm91c1Jlc291cmNl
SGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJM
Q29ubmVjdGlvbkRlbGVnYXRlLmNwcAkocmV2aXNpb24gMjA3MDM5KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9TeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25u
ZWN0aW9uRGVsZWdhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxMiArMjYsMTMgQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZV
UkxDb25uZWN0aW9uRGVsZWdhdGUuaCIKIAotI2lmIFVTRShDRk5FVFdPUkspCisjaWYgVVNFKENG
VVJMQ09OTkVDVElPTikKIAogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ0YuaCIKICNpbmNsdWRl
ICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oIgogI2luY2x1ZGUgIkxvYWRlclJ1bkxvb3BDRi5o
IgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCiAj
aW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZUNsaWVu
dC5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKQEAgLTQwLDIwICs0MSw2IEBACiAj
aW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgogCi0jaWYgUExBVEZPUk0oQ09DT0EpCi0jaW5jbHVkZSAiQ0ZOZXR3b3JrU1BJLmgiCi0j
aW5jbHVkZSAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgotI2luY2x1ZGUgIldlYkNvcmVVUkxS
ZXNwb25zZS5oIgotI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKQotCi0jaWYgUExBVEZPUk0oSU9T
KQotI2luY2x1ZGUgIldlYkNvcmVUaHJlYWQuaCIKLSNlbmRpZiAvLyBQTEFURk9STShJT1MpCi0K
LSNpZiBQTEFURk9STShXSU4pCi0jaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgotI2VuZGlm
IC8vIFBMQVRGT1JNKFdJTikKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBTeW5jaHJvbm91c1Jl
c291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OlN5bmNocm9ub3VzUmVzb3VyY2VI
YW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZShSZXNvdXJjZUhhbmRsZSogaGFuZGxlKQpAQCAt
NjMsMjAgKzUwLDExIEBAIFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb24K
IAogdm9pZCBTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6
OnNldHVwUmVxdWVzdChDRk11dGFibGVVUkxSZXF1ZXN0UmVmIHJlcXVlc3QpCiB7Ci0jaWYgUExB
VEZPUk0oSU9TKQotICAgIENGVVJMUmVxdWVzdFNldFNob3VsZFN0YXJ0U3luY2hyb25vdXNseShy
ZXF1ZXN0LCAxKTsKLSNlbmRpZgogfQogCiB2b2lkIFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVD
RlVSTENvbm5lY3Rpb25EZWxlZ2F0ZTo6c2V0dXBDb25uZWN0aW9uU2NoZWR1bGluZyhDRlVSTENv
bm5lY3Rpb25SZWYgY29ubmVjdGlvbikKIHsKLSNpZiBQTEFURk9STShXSU4pCiAgICAgQ0ZVUkxD
b25uZWN0aW9uU2NoZWR1bGVXaXRoQ3VycmVudE1lc3NhZ2VRdWV1ZShjb25uZWN0aW9uKTsKLSNl
bGlmIFBMQVRGT1JNKElPUykKLSAgICBDRlVSTENvbm5lY3Rpb25TY2hlZHVsZVdpdGhSdW5Mb29w
KGNvbm5lY3Rpb24sIFdlYlRocmVhZFJ1bkxvb3AoKSwga0NGUnVuTG9vcERlZmF1bHRNb2RlKTsK
LSNlbHNlCi0gICAgQ0ZVUkxDb25uZWN0aW9uU2NoZWR1bGVXaXRoUnVuTG9vcChjb25uZWN0aW9u
LCBDRlJ1bkxvb3BHZXRDdXJyZW50KCksIGtDRlJ1bkxvb3BEZWZhdWx0TW9kZSk7Ci0jZW5kaWYK
ICAgICBDRlVSTENvbm5lY3Rpb25TY2hlZHVsZURvd25sb2FkV2l0aFJ1bkxvb3AoY29ubmVjdGlv
biwgbG9hZGVyUnVuTG9vcCgpLCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUpOwogfQogCkBAIC0xMDMs
NyArODEsNiBAQCBDRlVSTFJlcXVlc3RSZWYgU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsCiAgICAg
cmV0dXJuIG5ld0NGUmVxdWVzdDsKIH0KIAotI2lmICFQTEFURk9STShDT0NPQSkKIHN0YXRpYyB2
b2lkIHNldERlZmF1bHRNSU1FVHlwZShDRlVSTFJlc3BvbnNlUmVmIHJlc3BvbnNlKQogewogICAg
IHN0YXRpYyBDRlN0cmluZ1JlZiBkZWZhdWx0TUlNRVR5cGVTdHJpbmcgPSBkZWZhdWx0TUlNRVR5
cGUoKS5jcmVhdGVDRlN0cmluZygpLmxlYWtSZWYoKTsKQEAgLTEzMyw3ICsxMTAsNiBAQCBzdGF0
aWMgdm9pZCBhZGp1c3RNSU1FVHlwZUlmTmVjZXNzYXJ5KENGCiAgICAgaWYgKHJlc3VsdCAhPSBv
cmlnaW5hbFJlc3VsdCkKICAgICAgICAgQ0ZVUkxSZXNwb25zZVNldE1JTUVUeXBlKGNmUmVzcG9u
c2UsIHJlc3VsdC5nZXQoKSk7CiB9Ci0jZW5kaWYgLy8gIVBMQVRGT1JNKENPQ09BKQogCiB2b2lk
IFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZTo6ZGlkUmVj
ZWl2ZVJlc3BvbnNlKENGVVJMQ29ubmVjdGlvblJlZiBjb25uZWN0aW9uLCBDRlVSTFJlc3BvbnNl
UmVmIGNmUmVzcG9uc2UpCiB7CkBAIC0xNDIsMjEgKzExOCw2IEBAIHZvaWQgU3luY2hyb25vdXNS
ZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmUKICAgICBpZiAoIW1faGFuZGxlLT5jbGllbnQoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgLy8gQXZvaWQgTUlNRSB0
eXBlIHNuaWZmaW5nIGlmIHRoZSByZXNwb25zZSBjb21lcyBiYWNrIGFzIDMwNCBOb3QgTW9kaWZp
ZWQuCi0gICAgYXV0byBtc2cgPSBDRlVSTFJlc3BvbnNlR2V0SFRUUFJlc3BvbnNlKGNmUmVzcG9u
c2UpOwotICAgIGludCBzdGF0dXNDb2RlID0gbXNnID8gQ0ZIVFRQTWVzc2FnZUdldFJlc3BvbnNl
U3RhdHVzQ29kZShtc2cpIDogMDsKLQotICAgIGlmIChzdGF0dXNDb2RlICE9IDMwNCkgewotICAg
ICAgICBib29sIGlzTWFpblJlc291cmNlTG9hZCA9IG1faGFuZGxlLT5maXJzdFJlcXVlc3QoKS5y
ZXF1ZXN0ZXIoKSA9PSBSZXNvdXJjZVJlcXVlc3Q6OlJlcXVlc3Rlcjo6TWFpbjsKLSAgICAgICAg
YWRqdXN0TUlNRVR5cGVJZk5lY2Vzc2FyeShjZlJlc3BvbnNlLCBpc01haW5SZXNvdXJjZUxvYWQp
OwotICAgIH0KLQotI2lmICFQTEFURk9STShJT1MpCi0gICAgaWYgKF9DRlVSTFJlcXVlc3RDb3B5
UHJvdG9jb2xQcm9wZXJ0eUZvcktleShtX2hhbmRsZS0+Zmlyc3RSZXF1ZXN0KCkuY2ZVUkxSZXF1
ZXN0KERvTm90VXBkYXRlSFRUUEJvZHkpLCBDRlNUUigiRm9yY2VIVE1MTUlNRVR5cGUiKSkpCi0g
ICAgICAgIENGVVJMUmVzcG9uc2VTZXRNSU1FVHlwZShjZlJlc3BvbnNlLCBDRlNUUigidGV4dC9o
dG1sIikpOwotI2VuZGlmIC8vICFQTEFURk9STShJT1MpCi0jZWxzZQogICAgIGlmICghQ0ZVUkxS
ZXNwb25zZUdldE1JTUVUeXBlKGNmUmVzcG9uc2UpKQogICAgICAgICBhZGp1c3RNSU1FVHlwZUlm
TmVjZXNzYXJ5KGNmUmVzcG9uc2UpOwogCkBAIC0xNjUsNyArMTI2LDYgQEAgdm9pZCBTeW5jaHJv
bm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZQogICAgICAgICBBU1NFUlQoIW1faGFuZGxlLT5z
aG91bGRDb250ZW50U25pZmYoKSk7CiAgICAgICAgIHNldERlZmF1bHRNSU1FVHlwZShjZlJlc3Bv
bnNlKTsKICAgICB9Ci0jZW5kaWYKIAogI2lmIFVTRShRVUlDS19MT09LKQogICAgIG1faGFuZGxl
LT5zZXRRdWlja0xvb2tIYW5kbGUoUXVpY2tMb29rSGFuZGxlOjpjcmVhdGUobV9oYW5kbGUsIHRo
aXMsIGNmUmVzcG9uc2UpKTsKQEAgLTE3NCw3ICsxMzQsNyBAQCB2b2lkIFN5bmNocm9ub3VzUmVz
b3VyY2VIYW5kbGVDRlVSTENvbm5lCiAjZW5kaWYKICAgICAKICAgICBSZXNvdXJjZVJlc3BvbnNl
IHJlc291cmNlUmVzcG9uc2UoY2ZSZXNwb25zZSk7Ci0jaWYgUExBVEZPUk0oQ09DT0EpICYmIEVO
QUJMRShXRUJfVElNSU5HKQorI2lmIEVOQUJMRShXRUJfVElNSU5HKQogICAgIFJlc291cmNlSGFu
ZGxlOjpnZXRDb25uZWN0aW9uVGltaW5nRGF0YShjb25uZWN0aW9uLCByZXNvdXJjZVJlc3BvbnNl
Lm5ldHdvcmtMb2FkVGltaW5nKCkpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oY29ubmVjdGlv
bik7CkBAIC0yMjQsNyArMTg0LDYgQEAgdm9pZCBTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZV
UkxDb25uZQogCiBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmIFN5bmNocm9ub3VzUmVzb3VyY2VIYW5k
bGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZTo6d2lsbENhY2hlUmVzcG9uc2UoQ0ZDYWNoZWRVUkxS
ZXNwb25zZVJlZiBjYWNoZWRSZXNwb25zZSkKIHsKLSNpZiBQTEFURk9STShXSU4pCiAgICAgLy8g
V29ya2Fyb3VuZCBmb3IgPHJkYXI6Ly9wcm9ibGVtLzYzMDA5OTA+IENhY2hpbmcgZG9lcyBub3Qg
cmVzcGVjdCBWYXJ5IEhUVFAgaGVhZGVyLgogICAgIC8vIEZJWE1FOiBXZWJDb3JlIGNhY2hlIGhh
cyBpc3N1ZXMgd2l0aCBWYXJ5LCB0b28gKGJ1ZyA1ODc5NywgYnVnIDcxNTA5KS4KICAgICBDRlVS
TFJlc3BvbnNlUmVmIHdyYXBwZWRSZXNwb25zZSA9IENGQ2FjaGVkVVJMUmVzcG9uc2VHZXRXcmFw
cGVkUmVzcG9uc2UoY2FjaGVkUmVzcG9uc2UpOwpAQCAtMjM0LDE2ICsxOTMsOCBAQCBDRkNhY2hl
ZFVSTFJlc3BvbnNlUmVmIFN5bmNocm9ub3VzUmVzb3VyCiAgICAgICAgIGlmICh2YXJ5VmFsdWUp
CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICB9Ci0jZW5kaWYgLy8gUExBVEZPUk0oV0lOKQot
Ci0jaWYgUExBVEZPUk0oV0lOKQogICAgIGlmIChtX2hhbmRsZS0+Y2xpZW50KCkgJiYgIW1faGFu
ZGxlLT5jbGllbnQoKS0+c2hvdWxkQ2FjaGVSZXNwb25zZShtX2hhbmRsZSwgY2FjaGVkUmVzcG9u
c2UpKQogICAgICAgICByZXR1cm4gMDsKLSNlbHNlCi0gICAgQ0ZDYWNoZWRVUkxSZXNwb25zZVJl
ZiBuZXdSZXNwb25zZSA9IG1faGFuZGxlLT5jbGllbnQoKS0+d2lsbENhY2hlUmVzcG9uc2UobV9o
YW5kbGUsIGNhY2hlZFJlc3BvbnNlKTsKLSAgICBpZiAobmV3UmVzcG9uc2UgIT0gY2FjaGVkUmVz
cG9uc2UpCi0gICAgICAgIHJldHVybiBuZXdSZXNwb25zZTsKLSNlbmRpZgogCiAgICAgQ0ZSZXRh
aW4oY2FjaGVkUmVzcG9uc2UpOwogICAgIHJldHVybiBjYWNoZWRSZXNwb25zZTsKQEAgLTI4MCwx
NCArMjMxLDcgQEAgQm9vbGVhbiBTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDbwogCiAg
ICAgTE9HKE5ldHdvcmssICJDRk5ldCAtIFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENv
bm5lY3Rpb25EZWxlZ2F0ZTo6Y2FuUmVzcG9uZFRvUHJvdGVjdGlvblNwYWNlKGhhbmRsZT0lcCAo
JXMpIiwgbV9oYW5kbGUsIG1faGFuZGxlLT5maXJzdFJlcXVlc3QoKS51cmwoKS5zdHJpbmcoKS51
dGY4KCkuZGF0YSgpKTsKIAotI2lmIFBMQVRGT1JNKElPUykKLSAgICBQcm90ZWN0aW9uU3BhY2Ug
Y29yZVByb3RlY3Rpb25TcGFjZSA9IFByb3RlY3Rpb25TcGFjZShwcm90ZWN0aW9uU3BhY2UpOwot
ICAgIGlmIChjb3JlUHJvdGVjdGlvblNwYWNlLmF1dGhlbnRpY2F0aW9uU2NoZW1lKCkgPT0gUHJv
dGVjdGlvblNwYWNlQXV0aGVudGljYXRpb25TY2hlbWVVbmtub3duKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgcmV0dXJuIG1faGFuZGxlLT5jYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVj
dGlvblNwYWNlKGNvcmVQcm90ZWN0aW9uU3BhY2UpOwotI2Vsc2UKICAgICByZXR1cm4gbV9oYW5k
bGUtPmNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoY29yZShwcm90ZWN0aW9u
U3BhY2UpKTsKLSNlbmRpZgogfQogI2VuZGlmIC8vIFVTRShQUk9URUNUSU9OX1NQQUNFX0FVVEhf
Q0FMTEJBQ0spCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU3lu
Y2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9TeW5jaHJvbm91c1Jlc291
cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuaAkocmV2aXNpb24gMjA3MDM5KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9TeW5jaHJvbm91c1Jlc291cmNlSGFu
ZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsMTAgKzIz
LDkgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBTeW5jaHJvbm91c1Jlc291cmNl
SGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVfaAotI2RlZmluZSBTeW5jaHJvbm91c1Jlc291
cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVfaAorI3ByYWdtYSBvbmNlCiAKLSNpZiBV
U0UoQ0ZORVRXT1JLKQorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAKICNpbmNsdWRlICJSZXNv
dXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmgiCiAKQEAgLTY3LDYgKzY2LDQgQEAg
cHJpdmF0ZToKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZS4KIAotI2VuZGlmIC8vIFVTRShDRk5F
VFdPUkspCi0KLSNlbmRpZiAvLyBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRl
X2gKKyNlbmRpZiAvLyBVU0UoQ0ZVUkxDT05ORUNUSU9OKQpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jb2NvYS9DcmVkZW50aWFsQ29jb2EuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL0NyZWRlbnRpYWxDb2NvYS5oCShy
ZXZpc2lvbiAyMDcwMzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29h
L0NyZWRlbnRpYWxDb2NvYS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMywxNyArMjMsMTIgQEAKICAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIENyZWRlbnRp
YWxDb2NvYV9oCi0jZGVmaW5lIENyZWRlbnRpYWxDb2NvYV9oCisjcHJhZ21hIG9uY2UKIAogI2lu
Y2x1ZGUgIkNyZWRlbnRpYWxCYXNlLmgiCiAjaW5jbHVkZSA8U2VjdXJpdHkvU2VjQmFzZS5oPgog
I2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAotI2lmIFVTRShDRk5FVFdPUkspCi0jaW5jbHVk
ZSAiQ0ZOZXR3b3JrU1BJLmgiCi0jZW5kaWYKLQogT0JKQ19DTEFTUyBOU1VSTENyZWRlbnRpYWw7
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTUyLDE4ICs0NywxMiBAQCBwdWJsaWM6CiAKICAg
ICBDcmVkZW50aWFsKGNvbnN0IENyZWRlbnRpYWwmLCBDcmVkZW50aWFsUGVyc2lzdGVuY2UpOwog
Ci0jaWYgVVNFKENGTkVUV09SSykKLSAgICBleHBsaWNpdCBDcmVkZW50aWFsKENGVVJMQ3JlZGVu
dGlhbFJlZik7Ci0jZW5kaWYKICAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBDcmVkZW50aWFs
KE5TVVJMQ3JlZGVudGlhbCAqKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNFbXB0eSgp
IGNvbnN0OwogCiAgICAgYm9vbCBlbmNvZGluZ1JlcXVpcmVzUGxhdGZvcm1EYXRhKCkgY29uc3Qg
eyByZXR1cm4gbV9uc0NyZWRlbnRpYWwgJiYgZW5jb2RpbmdSZXF1aXJlc1BsYXRmb3JtRGF0YSht
X25zQ3JlZGVudGlhbC5nZXQoKSk7IH0KIAotI2lmIFVTRShDRk5FVFdPUkspCi0gICAgQ0ZVUkxD
cmVkZW50aWFsUmVmIGNmQ3JlZGVudGlhbCgpIGNvbnN0OwotI2VuZGlmCiAgICAgV0VCQ09SRV9F
WFBPUlQgTlNVUkxDcmVkZW50aWFsICpuc0NyZWRlbnRpYWwoKSBjb25zdDsKIAogICAgIHN0YXRp
YyBib29sIHBsYXRmb3JtQ29tcGFyZShjb25zdCBDcmVkZW50aWFsJiwgY29uc3QgQ3JlZGVudGlh
bCYpOwpAQCAtNzUsNSArNjQsMyBAQCBwcml2YXRlOgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQotCi0jZW5kaWYgLy8gQ3JlZGVudGlhbENvY29hX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY29jb2EvQ3JlZGVudGlhbENvY29hLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvQ3JlZGVudGlhbENvY29hLm1t
CShyZXZpc2lvbiAyMDcwMzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nv
Y29hL0NyZWRlbnRpYWxDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYsMTMgKzI2LDYgQEAK
ICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiQ3JlZGVudGlhbENvY29hLmgiCiAKLSNpZiBV
U0UoQ0ZORVRXT1JLKQotQGludGVyZmFjZSBOU1VSTENyZWRlbnRpYWwgKFdlYkRldGFpbHMpCi0t
IChpZClfaW5pdFdpdGhDRlVSTENyZWRlbnRpYWw6KENGVVJMQ3JlZGVudGlhbFJlZiljcmVkZW50
aWFsOwotLSAoQ0ZVUkxDcmVkZW50aWFsUmVmKSBfQ0ZVUkxDcmVkZW50aWFsOwotQGVuZAotI2Vu
ZGlmCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIE5TVVJMQ3JlZGVudGlhbFBlcnNp
c3RlbmNlIHRvTlNVUkxDcmVkZW50aWFsUGVyc2lzdGVuY2UoQ3JlZGVudGlhbFBlcnNpc3RlbmNl
IHBlcnNpc3RlbmNlKQpAQCAtODQsMjYgKzc3LDEyIEBAIENyZWRlbnRpYWw6OkNyZWRlbnRpYWwo
Y29uc3QgQ3JlZGVudGlhbCYKICAgICB9CiB9CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotQ3JlZGVu
dGlhbDo6Q3JlZGVudGlhbChDRlVSTENyZWRlbnRpYWxSZWYgY3JlZGVudGlhbCkKLSAgICA6IENy
ZWRlbnRpYWwoYWRvcHROUyhbW05TVVJMQ3JlZGVudGlhbCBhbGxvY10gX2luaXRXaXRoQ0ZVUkxD
cmVkZW50aWFsOmNyZWRlbnRpYWxdKS5nZXQoKSkKLXsKLX0KLSNlbmRpZgotCiBDcmVkZW50aWFs
OjpDcmVkZW50aWFsKE5TVVJMQ3JlZGVudGlhbCAqY3JlZGVudGlhbCkKICAgICA6IENyZWRlbnRp
YWxCYXNlKGNyZWRlbnRpYWwudXNlciwgY3JlZGVudGlhbC5wYXNzd29yZCwgdG9DcmVkZW50aWFs
UGVyc2lzdGVuY2UoY3JlZGVudGlhbC5wZXJzaXN0ZW5jZSkpCiAgICAgLCBtX25zQ3JlZGVudGlh
bChjcmVkZW50aWFsKQogewogfQogCi0jaWYgVVNFKENGTkVUV09SSykKLUNGVVJMQ3JlZGVudGlh
bFJlZiBDcmVkZW50aWFsOjpjZkNyZWRlbnRpYWwoKSBjb25zdAotewotICAgIHJldHVybiBbbnND
cmVkZW50aWFsKCkgX0NGVVJMQ3JlZGVudGlhbF07Ci19Ci0jZW5kaWYKLQogTlNVUkxDcmVkZW50
aWFsICpDcmVkZW50aWFsOjpuc0NyZWRlbnRpYWwoKSBjb25zdAogewogICAgIGlmIChtX25zQ3Jl
ZGVudGlhbCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUHJv
dGVjdGlvblNwYWNlQ29jb2EuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NvY29hL1Byb3RlY3Rpb25TcGFjZUNvY29hLmgJKHJldmlzaW9uIDIwNzAzOSkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUHJvdGVjdGlvblNwYWNl
Q29jb2EuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsMTYgKzIzLDExIEBACiAgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBQcm90ZWN0aW9uU3BhY2VDb2Nv
YV9oCi0jZGVmaW5lIFByb3RlY3Rpb25TcGFjZUNvY29hX2gKKyNwcmFnbWEgb25jZQogCiAjaW5j
bHVkZSAiUHJvdGVjdGlvblNwYWNlQmFzZS5oIgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4K
IAotI2lmIFVTRShDRk5FVFdPUkspCi10eXBlZGVmIHN0cnVjdCBfQ0ZVUkxQcm90ZWN0aW9uU3Bh
Y2UqIENGVVJMUHJvdGVjdGlvblNwYWNlUmVmOwotI2VuZGlmCi0KIE9CSkNfQ0xBU1MgTlNVUkxQ
cm90ZWN0aW9uU3BhY2U7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQ3LDkgKzQyLDYgQEAg
cHVibGljOgogCiAgICAgUHJvdGVjdGlvblNwYWNlKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVl
VHlwZSBkZWxldGVkVmFsdWUpIDogUHJvdGVjdGlvblNwYWNlQmFzZShkZWxldGVkVmFsdWUpIHsg
fQogCi0jaWYgVVNFKENGTkVUV09SSykKLSAgICBleHBsaWNpdCBQcm90ZWN0aW9uU3BhY2UoQ0ZV
UkxQcm90ZWN0aW9uU3BhY2VSZWYpOwotI2VuZGlmCiAgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGlj
aXQgUHJvdGVjdGlvblNwYWNlKE5TVVJMUHJvdGVjdGlvblNwYWNlICopOwogCiAgICAgc3RhdGlj
IGJvb2wgcGxhdGZvcm1Db21wYXJlKGNvbnN0IFByb3RlY3Rpb25TcGFjZSYgYSwgY29uc3QgUHJv
dGVjdGlvblNwYWNlJiBiKTsKQEAgLTU4LDkgKzUwLDYgQEAgcHVibGljOgogCiAgICAgV0VCQ09S
RV9FWFBPUlQgYm9vbCByZWNlaXZlc0NyZWRlbnRpYWxTZWN1cmVseSgpIGNvbnN0OwogCi0jaWYg
VVNFKENGTkVUV09SSykKLSAgICBDRlVSTFByb3RlY3Rpb25TcGFjZVJlZiBjZlNwYWNlKCkgY29u
c3Q7Ci0jZW5kaWYKICAgICBXRUJDT1JFX0VYUE9SVCBOU1VSTFByb3RlY3Rpb25TcGFjZSAqbnNT
cGFjZSgpIGNvbnN0OwogCiBwcml2YXRlOgpAQCAtNzAsNSArNTksMyBAQCBwcml2YXRlOgogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gUHJvdGVjdGlvblNwYWNlQ29j
b2FfaApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9Qcm90ZWN0
aW9uU3BhY2VDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NvY29hL1Byb3RlY3Rpb25TcGFjZUNvY29hLm1tCShyZXZpc2lvbiAyMDcwMzkpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Byb3RlY3Rpb25TcGFjZUNv
Y29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwyMiArMjYsOSBAQAogI2ltcG9ydCAiY29uZmln
LmgiCiAjaW1wb3J0ICJQcm90ZWN0aW9uU3BhY2VDb2NvYS5oIgogCi0jaWYgVVNFKENGTkVUV09S
SykKLUBpbnRlcmZhY2UgTlNVUkxQcm90ZWN0aW9uU3BhY2UgKFdlYkRldGFpbHMpCi0tIChDRlVS
TFByb3RlY3Rpb25TcGFjZVJlZikgX0NGVVJMUHJvdGVjdGlvblNwYWNlOwotLSAoaWQpX2luaXRX
aXRoQ0ZVUkxQcm90ZWN0aW9uU3BhY2U6KENGVVJMUHJvdGVjdGlvblNwYWNlUmVmKWNmUHJvdFNw
YWNlOwotQGVuZAotI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotI2lmIFVTRShDRk5F
VFdPUkspCi1Qcm90ZWN0aW9uU3BhY2U6OlByb3RlY3Rpb25TcGFjZShDRlVSTFByb3RlY3Rpb25T
cGFjZVJlZiBzcGFjZSkKLSAgICA6IFByb3RlY3Rpb25TcGFjZShhZG9wdE5TKFtbTlNVUkxQcm90
ZWN0aW9uU3BhY2UgYWxsb2NdIF9pbml0V2l0aENGVVJMUHJvdGVjdGlvblNwYWNlOnNwYWNlXSku
Z2V0KCkpCi17Ci19Ci0jZW5kaWYKLQogc3RhdGljIFByb3RlY3Rpb25TcGFjZVNlcnZlclR5cGUg
dHlwZShOU1VSTFByb3RlY3Rpb25TcGFjZSAqc3BhY2UpCiB7CiAgICAgaWYgKFtzcGFjZSBpc1By
b3h5XSkgewpAQCAtMTA1LDEzICs5Miw2IEBAIFByb3RlY3Rpb25TcGFjZTo6UHJvdGVjdGlvblNw
YWNlKE5TVVJMUHIKICAgICBtX25zU3BhY2UgPSBzcGFjZTsKIH0KIAotI2lmIFVTRShDRk5FVFdP
UkspCi1DRlVSTFByb3RlY3Rpb25TcGFjZVJlZiBQcm90ZWN0aW9uU3BhY2U6OmNmU3BhY2UoKSBj
b25zdAotewotICAgIHJldHVybiBbbnNTcGFjZSgpIF9DRlVSTFByb3RlY3Rpb25TcGFjZV07Ci19
Ci0jZW5kaWYKLQogTlNVUkxQcm90ZWN0aW9uU3BhY2UgKlByb3RlY3Rpb25TcGFjZTo6bnNTcGFj
ZSgpIGNvbnN0CiB7CiAgICAgaWYgKG1fbnNTcGFjZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RD
b2NvYS5tbQkocmV2aXNpb24gMjA3MDM5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtNTMs
MTUgKzUzLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogTlNVUkxSZXF1ZXN0ICpSZXNvdXJjZVJl
cXVlc3Q6Om5zVVJMUmVxdWVzdChIVFRQQm9keVVwZGF0ZVBvbGljeSBib2R5UG9saWN5KSBjb25z
dAogewogICAgIHVwZGF0ZVBsYXRmb3JtUmVxdWVzdChib2R5UG9saWN5KTsKLSNpZiBVU0UoQ0ZO
RVRXT1JLKQotICAgIGlmICghbV9uc1JlcXVlc3QpCi0gICAgICAgIGNvbnN0X2Nhc3Q8UmVzb3Vy
Y2VSZXF1ZXN0Kj4odGhpcyktPnVwZGF0ZU5TVVJMUmVxdWVzdCgpOwotI2VuZGlmCiAgICAgcmV0
dXJuIFtbbV9uc1JlcXVlc3QuZ2V0KCkgcmV0YWluXSBhdXRvcmVsZWFzZV07CiB9CiAKLSNpZiAh
VVNFKENGTkVUV09SSykKLQogQ0ZVUkxSZXF1ZXN0UmVmIFJlc291cmNlUmVxdWVzdDo6Y2ZVUkxS
ZXF1ZXN0KEhUVFBCb2R5VXBkYXRlUG9saWN5IGJvZHlQb2xpY3kpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIFtuc1VSTFJlcXVlc3QoYm9keVBvbGljeSkgX0NGVVJMUmVxdWVzdF07CkBAIC0yMTQsOCAr
MjA4LDYgQEAgdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OnNldFN0b3JhZ2VTZXNzaW9uKAogICAgIG1f
bnNSZXF1ZXN0ID0gYWRvcHROUyh3a0NvcHlSZXF1ZXN0V2l0aFN0b3JhZ2VTZXNzaW9uKHN0b3Jh
Z2VTZXNzaW9uLCBtX25zUmVxdWVzdC5nZXQoKSkpOwogfQogCi0jZW5kaWYgLy8gVVNFKENGTkVU
V09SSykKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gUExBVEZPUk0oQ09D
T0EpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNl
UmVzcG9uc2VDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NvY29hL1Jlc291cmNlUmVzcG9uc2VDb2NvYS5tbQkocmV2aXNpb24gMjA3MDM5KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlc3BvbnNl
Q29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTc1LDEzICs3NSw4IEBAIHZvaWQgUmVzb3VyY2VS
ZXNwb25zZTo6ZGlzYWJsZUxhenlJbml0aWEKIAogQ2VydGlmaWNhdGVJbmZvIFJlc291cmNlUmVz
cG9uc2U6OnBsYXRmb3JtQ2VydGlmaWNhdGVJbmZvKCkgY29uc3QKIHsKLSNpZiBVU0UoQ0ZORVRX
T1JLKQotICAgIEFTU0VSVChtX2NmUmVzcG9uc2UpOwotICAgIENGVVJMUmVzcG9uc2VSZWYgY2ZS
ZXNwb25zZSA9IG1fY2ZSZXNwb25zZS5nZXQoKTsKLSNlbHNlCiAgICAgQVNTRVJUKG1fbnNSZXNw
b25zZSk7CiAgICAgQ0ZVUkxSZXNwb25zZVJlZiBjZlJlc3BvbnNlID0gW21fbnNSZXNwb25zZSBf
Q0ZVUkxSZXNwb25zZV07Ci0jZW5kaWYKIAogICAgIGlmICghY2ZSZXNwb25zZSkKICAgICAgICAg
cmV0dXJuIHsgfTsKQEAgLTExNCwzNSArMTA5LDYgQEAgQ2VydGlmaWNhdGVJbmZvIFJlc291cmNl
UmVzcG9uc2U6OnBsYXRmbwogI2VuZGlmCiB9CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotCi1OU1VS
TFJlc3BvbnNlICpSZXNvdXJjZVJlc3BvbnNlOjpuc1VSTFJlc3BvbnNlKCkgY29uc3QKLXsKLSAg
ICBpZiAoIW1fbnNSZXNwb25zZSAmJiAhbV9jZlJlc3BvbnNlICYmICFtX2lzTnVsbCkgewotICAg
ICAgICBpbml0TlNVUkxSZXNwb25zZSgpOwotICAgICAgICBtX2NmUmVzcG9uc2UgPSBbbV9uc1Jl
c3BvbnNlLmdldCgpIF9DRlVSTFJlc3BvbnNlXTsKLSAgICAgICAgcmV0dXJuIG1fbnNSZXNwb25z
ZS5nZXQoKTsKLSAgICB9Ci0KLSAgICBpZiAoIW1fY2ZSZXNwb25zZSkKLSAgICAgICAgcmV0dXJu
IG5pbDsKLQotICAgIGlmICghbV9uc1Jlc3BvbnNlKQotICAgICAgICBtX25zUmVzcG9uc2UgPSBb
TlNVUkxSZXNwb25zZSBfcmVzcG9uc2VXaXRoQ0ZVUkxSZXNwb25zZTptX2NmUmVzcG9uc2UuZ2V0
KCldOwotCi0gICAgcmV0dXJuIG1fbnNSZXNwb25zZS5nZXQoKTsKLX0KLQotUmVzb3VyY2VSZXNw
b25zZTo6UmVzb3VyY2VSZXNwb25zZShOU1VSTFJlc3BvbnNlKiBuc1Jlc3BvbnNlKQotICAgIDog
bV9pbml0TGV2ZWwoVW5pbml0aWFsaXplZCkKLSAgICAsIG1fY2ZSZXNwb25zZShbbnNSZXNwb25z
ZSBfQ0ZVUkxSZXNwb25zZV0pCi0gICAgLCBtX25zUmVzcG9uc2UobnNSZXNwb25zZSkKLXsKLSAg
ICBtX2lzTnVsbCA9ICFuc1Jlc3BvbnNlOwotfQotCi0jZWxzZQotCiBzdGF0aWMgTlNTdHJpbmcq
IGNvbnN0IGNvbW1vbkhlYWRlckZpZWxkc1tdID0gewogICAgIEAiQWdlIiwgQCJDYWNoZS1Db250
cm9sIiwgQCJDb250ZW50LVR5cGUiLCBAIkRhdGUiLCBAIkV0YWciLCBAIkV4cGlyZXMiLCBAIkxh
c3QtTW9kaWZpZWQiLCBAIlByYWdtYSIKIH07CkBAIC0yNDIsOCArMjA4LDYgQEAgYm9vbCBSZXNv
dXJjZVJlc3BvbnNlOjpwbGF0Zm9ybUNvbXBhcmUoYwogICAgIHJldHVybiBhLm5zVVJMUmVzcG9u
c2UoKSA9PSBiLm5zVVJMUmVzcG9uc2UoKTsKIH0KIAotI2VuZGlmIC8vIFVTRShDRk5FVFdPUksp
Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUXVpY2tMb29rLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUXVpY2tMb29r
LmgJKHJldmlzaW9uIDIwNzAzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
aW9zL1F1aWNrTG9vay5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMywxMCArMzMsNiBAQAogI2ltcG9y
dCA8b2JqYy9vYmpjLXJ1bnRpbWUuaD4KICNpbXBvcnQgPHd0Zi9SZWZQdHIuaD4KIAotI2lmIFVT
RShDRk5FVFdPUkspCi0jaW5jbHVkZSAiQ0ZOZXR3b3JrU1BJLmgiCi0jZW5kaWYKLQogT0JKQ19D
TEFTUyBOU0RhdGE7CiBPQkpDX0NMQVNTIE5TRGljdGlvbmFyeTsKIE9CSkNfQ0xBU1MgTlNGaWxl
SGFuZGxlOwpAQCAtODEsOSArNzcsNiBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIGJvb2wgc2hvdWxkQ3JlYXRlRm9yTUlNRVR5cGUoY29uc3QgU3RyaW5nJik7CiAKICAgICBz
dGF0aWMgc3RkOjp1bmlxdWVfcHRyPFF1aWNrTG9va0hhbmRsZT4gY3JlYXRlKFJlc291cmNlSGFu
ZGxlKiwgTlNVUkxDb25uZWN0aW9uICosIE5TVVJMUmVzcG9uc2UgKiwgaWQgZGVsZWdhdGUpOwot
I2lmIFVTRShDRk5FVFdPUkspCi0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxRdWlja0xvb2tI
YW5kbGU+IGNyZWF0ZShSZXNvdXJjZUhhbmRsZSosIFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVD
RlVSTENvbm5lY3Rpb25EZWxlZ2F0ZSosIENGVVJMUmVzcG9uc2VSZWYpOwotI2VuZGlmCiAgICAg
Ly8gRklYTUU6IFVzZSBvZiBSZXNvdXJjZUxvYWRlciBoZXJlIGlzIGEgcGxhdGZvcm0gdmlvbGF0
aW9uLgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UXVpY2tMb29r
SGFuZGxlPiBjcmVhdGUoUmVzb3VyY2VMb2FkZXImLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7
CiAKQEAgLTk1LDkgKzg4LDYgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlk
RmFpbCgpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgTlNVUkxSZXNwb25zZSAqbnNSZXNwb25zZSgp
OwotI2lmIFVTRShDRk5FVFdPUkspCi0gICAgQ0ZVUkxSZXNwb25zZVJlZiBjZlJlc3BvbnNlKCk7
Ci0jZW5kaWYKIAogICAgIHZvaWQgc2V0Q2xpZW50KFBhc3NSZWZQdHI8UXVpY2tMb29rSGFuZGxl
Q2xpZW50PiBjbGllbnQpIHsgbV9jbGllbnQgPSBjbGllbnQ7IH0KIApJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUXVpY2tMb29rLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1F1aWNrTG9vay5tbQkocmV2aXNpb24g
MjA3MDM5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUXVpY2tMb29r
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xODUsODEgKzE4NSw2IEBAIGNvbnN0IGNoYXIqIFdlYkNv
cmU6OlFMUHJldmlld1Byb3RvY29sKCkKICAgICByZXR1cm4gcHJldmlld1Byb3RvY29sLmdldCgp
LmRhdGEoKTsKIH0KIAotI2lmIFVTRShDRk5FVFdPUkspCi0vLyBUaGUgd2F5IFF1aWNrTG9vayB3
b3JrcyBpcyB3ZSBwYXNzIGl0IGFuIE5TVVJMQ29ubmVjdGlvbkRlbGVnYXRlIGNhbGxiYWNrIG9i
amVjdCBhdCBjcmVhdGlvbgotLy8gdGltZS4gVGhlbiB3ZSBwYXNzIGl0IGFsbCB0aGUgZGF0YSBh
cyB3ZSByZWNlaXZlIGl0LiBPbmNlIHdlJ3ZlIGRvd25sb2FkZWQgdGhlIGZ1bGwgVVJMLAotLy8g
UXVpY2tMb29rIHR1cm5zIGFyb3VuZCBhbmQgc2VuZCB1cywgdGhyb3VnaCB0aGlzIGRlbGVnYXRl
LCB0aGUgSFRNTCB2ZXJzaW9uIG9mIHRoZSBmaWxlIHdoaWNoIHdlCi0vLyBwYXNzIG9uIHRvIFdl
YkNvcmUuIFRoZSBmbGFnIG1fZmluaXNoZWRMb2FkaW5nRGF0YUludG9Db252ZXJ0ZXIgaW4gUXVp
Y2tMb29rSGFuZGxlIGRlY2lkZXMKLS8vIHdoZXRoZXIgdG8gcGFzcyB0aGUgZGF0YSB0byBRdWlj
a0xvb2sgb3IgV2ViQ29yZS4KLS8vCi0vLyBUaGlzIHdvcmtzIGZpbmUgd2hlbiB1c2luZyBOUyBB
UElzLCBidXQgd2hlbiB1c2luZyBDRk5ldHdvcmssIHdlIGRvbid0IGhhdmUgYSBOU1VSTENvbm5l
Y3Rpb25EZWxlZ2F0ZS4KLS8vIFNvIHdlIGNyZWF0ZSBXZWJRdWlja0xvb2tIYW5kbGVBc0RlbGVn
YXRlIGFzIGFuIGludGVybWVkaWF0ZSBkZWxlZ2F0ZSBvYmplY3QgYW5kIHBhc3MgaXQgdG8KLS8v
IFFMUHJldmlld0NvbnZlcnRlci4gVGhlIHByb3h5IGRlbGVnYXRlIHRoZW4gZm9yd2FyZHMgdGhl
IG1lc3NhZ2VzIG9uIHRvIHRoZSBDRk5ldHdvcmsgY29kZS4KLUBpbnRlcmZhY2UgV2ViUXVpY2tM
b29rSGFuZGxlQXNEZWxlZ2F0ZSA6IE5TT2JqZWN0IDxOU1VSTENvbm5lY3Rpb25EZWxlZ2F0ZSwg
V2ViQ29yZVJlc291cmNlTG9hZGVyRGVsZWdhdGU+IHsKLSAgICBSZWZQdHI8U3luY2hyb25vdXNS
ZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlPiBtX2Nvbm5lY3Rpb25EZWxlZ2F0
ZTsKLX0KLQotLSAoaWQpaW5pdFdpdGhDb25uZWN0aW9uRGVsZWdhdGU6KFN5bmNocm9ub3VzUmVz
b3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZSopY29ubmVjdGlvbkRlbGVnYXRlOwot
QGVuZAotCi1AaW1wbGVtZW50YXRpb24gV2ViUXVpY2tMb29rSGFuZGxlQXNEZWxlZ2F0ZQotLSAo
aWQpaW5pdFdpdGhDb25uZWN0aW9uRGVsZWdhdGU6KFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVD
RlVSTENvbm5lY3Rpb25EZWxlZ2F0ZSopY29ubmVjdGlvbkRlbGVnYXRlCi17Ci0gICAgc2VsZiA9
IFtzdXBlciBpbml0XTsKLSAgICBpZiAoIXNlbGYpCi0gICAgICAgIHJldHVybiBuaWw7Ci0gICAg
bV9jb25uZWN0aW9uRGVsZWdhdGUgPSBjb25uZWN0aW9uRGVsZWdhdGU7Ci0gICAgcmV0dXJuIHNl
bGY7Ci19Ci0KLS0gKHZvaWQpY29ubmVjdGlvbjooTlNVUkxDb25uZWN0aW9uICopY29ubmVjdGlv
biBkaWRSZWNlaXZlRGF0YUFycmF5OihOU0FycmF5ICopZGF0YUFycmF5Ci17Ci0gICAgVU5VU0VE
X1BBUkFNKGNvbm5lY3Rpb24pOwotICAgIGlmICghbV9jb25uZWN0aW9uRGVsZWdhdGUpCi0gICAg
ICAgIHJldHVybjsKLSAgICBMT0coTmV0d29yaywgIldlYlF1aWNrTG9va0hhbmRsZUFzRGVsZWdh
dGU6OmRpZFJlY2VpdmVEYXRhQXJyYXkoKSIpOwotICAgIG1fY29ubmVjdGlvbkRlbGVnYXRlLT5k
aWRSZWNlaXZlRGF0YUFycmF5KHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZBcnJheVJlZj4oZGF0YUFycmF5
KSk7Ci19Ci0KLS0gKHZvaWQpY29ubmVjdGlvbjooTlNVUkxDb25uZWN0aW9uICopY29ubmVjdGlv
biBkaWRSZWNlaXZlRGF0YTooTlNEYXRhICopZGF0YSBsZW5ndGhSZWNlaXZlZDoobG9uZyBsb25n
KWxlbmd0aFJlY2VpdmVkCi17Ci0gICAgVU5VU0VEX1BBUkFNKGNvbm5lY3Rpb24pOwotICAgIGlm
ICghbV9jb25uZWN0aW9uRGVsZWdhdGUpCi0gICAgICAgIHJldHVybjsKLSAgICBMT0coTmV0d29y
aywgIldlYlF1aWNrTG9va0hhbmRsZUFzRGVsZWdhdGU6OmRpZFJlY2VpdmVEYXRhKCkgLSBkYXRh
IGxlbmd0aCA9ICVsZCIsIChsb25nKVtkYXRhIGxlbmd0aF0pOwotCi0gICAgLy8gUXVpY2tMb29r
IGNvZGUgc2VuZHMgdXMgYSBuaWwgZGF0YSBhdCB0aW1lcy4gVGhlIGNoZWNrIGJlbG93IGlzIHRo
ZSBzYW1lIGFzIHRoZSBvbmUgaW4KLSAgICAvLyBSZXNvdXJjZUhhbmRsZU1hYy5jcHAgYWRkZWQg
Zm9yIGEgZGlmZmVyZW50IGJ1Zy4KLSAgICBpZiAoIVtkYXRhIGxlbmd0aF0pCi0gICAgICAgIHJl
dHVybjsKLSAgICBtX2Nvbm5lY3Rpb25EZWxlZ2F0ZS0+ZGlkUmVjZWl2ZURhdGEocmVpbnRlcnBy
ZXRfY2FzdDxDRkRhdGFSZWY+KGRhdGEpLCBzdGF0aWNfY2FzdDxpbnQ+KGxlbmd0aFJlY2VpdmVk
KSk7Ci19Ci0KLS0gKHZvaWQpY29ubmVjdGlvbkRpZEZpbmlzaExvYWRpbmc6KE5TVVJMQ29ubmVj
dGlvbiAqKWNvbm5lY3Rpb24KLXsKLSAgICBVTlVTRURfUEFSQU0oY29ubmVjdGlvbik7Ci0gICAg
aWYgKCFtX2Nvbm5lY3Rpb25EZWxlZ2F0ZSkKLSAgICAgICAgcmV0dXJuOwotICAgIExPRyhOZXR3
b3JrLCAiV2ViUXVpY2tMb29rSGFuZGxlQXNEZWxlZ2F0ZTo6ZGlkRmluaXNoTG9hZGluZygpIik7
Ci0gICAgbV9jb25uZWN0aW9uRGVsZWdhdGUtPmRpZEZpbmlzaExvYWRpbmcoKTsKLX0KLQotLSAo
dm9pZCljb25uZWN0aW9uOihOU1VSTENvbm5lY3Rpb24gKiljb25uZWN0aW9uIGRpZEZhaWxXaXRo
RXJyb3I6KE5TRXJyb3IgKillcnJvcgotewotICAgIFVOVVNFRF9QQVJBTShjb25uZWN0aW9uKTsK
LSAgICBpZiAoIW1fY29ubmVjdGlvbkRlbGVnYXRlKQotICAgICAgICByZXR1cm47Ci0gICAgTE9H
KE5ldHdvcmssICJXZWJRdWlja0xvb2tIYW5kbGVBc0RlbGVnYXRlOjpkaWRGYWlsKCkiKTsKLSAg
ICBtX2Nvbm5lY3Rpb25EZWxlZ2F0ZS0+ZGlkRmFpbChyZWludGVycHJldF9jYXN0PENGRXJyb3JS
ZWY+KGVycm9yKSk7Ci19Ci0KLS0gKHZvaWQpZGV0YWNoSGFuZGxlCi17Ci0gICAgbV9jb25uZWN0
aW9uRGVsZWdhdGUgPSBudWxscHRyOwotfQotQGVuZAotI2VuZGlmCi0KIEBpbnRlcmZhY2UgV2Vi
UmVzb3VyY2VMb2FkZXJRdWlja0xvb2tEZWxlZ2F0ZSA6IE5TT2JqZWN0IDxOU1VSTENvbm5lY3Rp
b25EZWxlZ2F0ZSwgV2ViQ29yZVJlc291cmNlTG9hZGVyRGVsZWdhdGU+IHsKICAgICBSZWZQdHI8
UmVzb3VyY2VMb2FkZXI+IF9yZXNvdXJjZUxvYWRlcjsKICAgICBCT09MIF9oYXNTZW50RGlkUmVj
ZWl2ZVJlc3BvbnNlOwpAQCAtNDExLDI2ICszMzYsNiBAQCBzdGQ6OnVuaXF1ZV9wdHI8UXVpY2tM
b29rSGFuZGxlPiBRdWlja0xvCiAgICAgcmV0dXJuIHF1aWNrTG9va0hhbmRsZTsKIH0KIAotI2lm
IFVTRShDRk5FVFdPUkspCi1zdGQ6OnVuaXF1ZV9wdHI8UXVpY2tMb29rSGFuZGxlPiBRdWlja0xv
b2tIYW5kbGU6OmNyZWF0ZShSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBTeW5jaHJvbm91c1Jlc291
cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUqIGNvbm5lY3Rpb25EZWxlZ2F0ZSwgQ0ZV
UkxSZXNwb25zZVJlZiBjZlJlc3BvbnNlKQotewotICAgIEFTU0VSVF9BUkcoaGFuZGxlLCBoYW5k
bGUpOwotICAgIGlmIChoYW5kbGUtPmZpcnN0UmVxdWVzdCgpLnJlcXVlc3RlcigpICE9IFJlc291
cmNlUmVxdWVzdDo6UmVxdWVzdGVyOjpNYWluIHx8ICFbUUxQcmV2aWV3R2V0U3VwcG9ydGVkTUlN
RVR5cGVzU2V0KCkgY29udGFpbnNPYmplY3Q6KE5TU3RyaW5nICopQ0ZVUkxSZXNwb25zZUdldE1J
TUVUeXBlKGNmUmVzcG9uc2UpXSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBOU1VS
TFJlc3BvbnNlICpuc1Jlc3BvbnNlID0gW05TVVJMUmVzcG9uc2UgX3Jlc3BvbnNlV2l0aENGVVJM
UmVzcG9uc2U6Y2ZSZXNwb25zZV07Ci0gICAgV2ViUXVpY2tMb29rSGFuZGxlQXNEZWxlZ2F0ZSAq
ZGVsZWdhdGUgPSBbW1tXZWJRdWlja0xvb2tIYW5kbGVBc0RlbGVnYXRlIGFsbG9jXSBpbml0V2l0
aENvbm5lY3Rpb25EZWxlZ2F0ZTpjb25uZWN0aW9uRGVsZWdhdGVdIGF1dG9yZWxlYXNlXTsKLSAg
ICBzdGQ6OnVuaXF1ZV9wdHI8UXVpY2tMb29rSGFuZGxlPiBxdWlja0xvb2tIYW5kbGUobmV3IFF1
aWNrTG9va0hhbmRsZShbaGFuZGxlLT5maXJzdFJlcXVlc3QoKS5uc1VSTFJlcXVlc3QoRG9Ob3RV
cGRhdGVIVFRQQm9keSkgVVJMXSwgbmlsLCBuc1Jlc3BvbnNlLCBkZWxlZ2F0ZSkpOwotICAgIGhh
bmRsZS0+Y2xpZW50KCktPmRpZENyZWF0ZVF1aWNrTG9va0hhbmRsZSgqcXVpY2tMb29rSGFuZGxl
KTsKLSAgICByZXR1cm4gcXVpY2tMb29rSGFuZGxlOwotfQotCi1DRlVSTFJlc3BvbnNlUmVmIFF1
aWNrTG9va0hhbmRsZTo6Y2ZSZXNwb25zZSgpCi17Ci0gICAgcmV0dXJuIFttX25zUmVzcG9uc2Ug
X0NGVVJMUmVzcG9uc2VdOwotfQotI2VuZGlmCi0KIGJvb2wgUXVpY2tMb29rSGFuZGxlOjpzaG91
bGRDcmVhdGVGb3JNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogewogICAgIHJldHVy
biBbUUxQcmV2aWV3R2V0U3VwcG9ydGVkTUlNRVR5cGVzU2V0KCkgY29udGFpbnNPYmplY3Q6bWlt
ZVR5cGVdOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUmVzb3Vy
Y2VIYW5kbGVJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9pb3MvUmVzb3VyY2VIYW5kbGVJT1MubW0JKHJldmlzaW9uIDIwNzAzOSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1Jlc291cmNlSGFuZGxlSU9TLm1tCShub25l
eGlzdGVudCkKQEAgLTEsMzkgKzAsMCBAQAotLy8KLS8vICBSZXNvdXJjZUhhbmRsZUlQaG9uZS5t
bQotLy8gIFdlYkNvcmUKLS8vCi0vLyAgQ29weXJpZ2h0IDIwMTEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotLy8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJSZXNvdXJj
ZUhhbmRsZUludGVybmFsLmgiCi0KLSNpZiBVU0UoQ0ZORVRXT1JLKQotCi0jaW1wb3J0IDxDRk5l
dHdvcmsvQ0ZTb2NrZXRTdHJlYW1Qcml2Lmg+Ci0jaW1wb3J0IDxGb3VuZGF0aW9uL05TVVJMUmVx
dWVzdFByaXZhdGUuaD4KLQotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQotQ0ZNdXRhYmxlRGljdGlvbmFyeVJlZiBSZXNvdXJjZUhhbmRsZTo6Y3JlYXRl
U1NMUHJvcGVydGllc0Zyb21OU1VSTFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0KQotewotICAgIE5TU3RyaW5nICpob3N0ID0gcmVxdWVzdC51cmwoKS5ob3N0KCk7Ci0gICAg
TlNBcnJheSAqY2VydEFycmF5ID0gW05TVVJMUmVxdWVzdCBhbGxvd3NTcGVjaWZpY0hUVFBTQ2Vy
dGlmaWNhdGVGb3JIb3N0Omhvc3RdOwotICAgIEJPT0wgYWxsb3dzQW55Q2VydGlmaWNhdGUgPSBb
TlNVUkxSZXF1ZXN0IGFsbG93c0FueUhUVFBTQ2VydGlmaWNhdGVGb3JIb3N0Omhvc3RdOwotICAg
IGlmICghY2VydEFycmF5ICYmICFhbGxvd3NBbnlDZXJ0aWZpY2F0ZSkKLSAgICAgICAgcmV0dXJu
IDA7Ci0KLSAgICBDRk11dGFibGVEaWN0aW9uYXJ5UmVmIHNzbFByb3BzID0gQ0ZEaWN0aW9uYXJ5
Q3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwLCAma0NGVHlwZURpY3Rpb25hcnlL
ZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKTsKLSAgICBpZiAo
Y2VydEFycmF5KQotICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShzc2xQcm9wcywgX2tDRlN0
cmVhbVNTTFRydXN0ZWRMZWFmQ2VydGlmaWNhdGVzLCAoQ0ZUeXBlUmVmKSBjZXJ0QXJyYXkpOwot
Ci0gICAgaWYgKGFsbG93c0FueUNlcnRpZmljYXRlKQotICAgICAgICBDRkRpY3Rpb25hcnlTZXRW
YWx1ZShzc2xQcm9wcywga0NGU3RyZWFtU1NMVmFsaWRhdGVzQ2VydGlmaWNhdGVDaGFpbiwga0NG
Qm9vbGVhbkZhbHNlKTsKLSAgICByZXR1cm4gc3NsUHJvcHM7Ci19Ci0KLX0KLQotI2VuZGlmCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9SZXNvdXJjZVJlcXVlc3RJ
T1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3Mv
UmVzb3VyY2VSZXF1ZXN0SU9TLm1tCShyZXZpc2lvbiAyMDcwMzkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9SZXNvdXJjZVJlcXVlc3RJT1MubW0JKG5vbmV4aXN0ZW50
KQpAQCAtMSw3NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlLCBJbmMu
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIlJlc291cmNlUmVxdWVzdC5o
IgotCi0jaWYgUExBVEZPUk0oSU9TKQotCi1AaW50ZXJmYWNlIE5TVVJMUmVxdWVzdCAoV2ViTlNV
UkxSZXF1ZXN0RGV0YWlscykKLS0gKENGVVJMUmVxdWVzdFJlZilfQ0ZVUkxSZXF1ZXN0OwotLSAo
aWQpX2luaXRXaXRoQ0ZVUkxSZXF1ZXN0OihDRlVSTFJlcXVlc3RSZWYpcmVxdWVzdDsKLUBlbmQK
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0jaWYgVVNFKENGTkVUV09SSykKLQotUmVzb3VyY2VS
ZXF1ZXN0OjpSZXNvdXJjZVJlcXVlc3QoTlNVUkxSZXF1ZXN0ICpuc1JlcXVlc3QpCi0gICAgOiBS
ZXNvdXJjZVJlcXVlc3RCYXNlKCkKLSAgICAsIG1fY2ZSZXF1ZXN0KFtuc1JlcXVlc3QgX0NGVVJM
UmVxdWVzdF0pCi0gICAgLCBtX25zUmVxdWVzdChuc1JlcXVlc3QpCi17Ci19Ci0KLXZvaWQgUmVz
b3VyY2VSZXF1ZXN0Ojp1cGRhdGVOU1VSTFJlcXVlc3QoKQotewotICAgIGlmIChtX2NmUmVxdWVz
dCkKLSAgICAgICAgbV9uc1JlcXVlc3QgPSBhZG9wdE5TKFtbTlNNdXRhYmxlVVJMUmVxdWVzdCBh
bGxvY10gX2luaXRXaXRoQ0ZVUkxSZXF1ZXN0Om1fY2ZSZXF1ZXN0LmdldCgpXSk7Ci19Ci0KLXZv
aWQgUmVzb3VyY2VSZXF1ZXN0OjpjbGVhck9yVXBkYXRlTlNVUkxSZXF1ZXN0KCkKLXsKLSAgICAv
LyBUaGVyZSBpcyBjbGllbnQgY29kZSB0aGF0IGV4dGVuZHMgTlNVUkxSZXF1ZXN0IGFuZCBleHBl
Y3RzIHRvIGdldCBiYWNrLCBpbiB0aGUgZGVsZWdhdGUKLSAgICAvLyBjYWxsYmFja3MsIGFuIG9i
amVjdCBvZiB0aGUgc2FtZSB0eXBlIHRoYXQgdGhleSBwYXNzZWQgaW50byBXZWJLaXQuIFRvIGtl
ZXAgdGhlbiBydW5uaW5nLCB3ZQotICAgIC8vIGNyZWF0ZSBhbiBvYmplY3Qgb2YgdGhlIHNhbWUg
dHlwZSBhbmQgcmV0dXJuIHRoYXQuIFNlZSA8cmRhcjovLzk4NDM1ODI+LgotICAgIC8vIEFsc28s
IGRldmVsb3BlcnMgcmVhbGx5IHJlYWxseSB3YW50IGFuIE5TTXV0YWJsZVVSTFJlcXVlc3Qgc28g
dHJ5IHRvIGNyZWF0ZSBhbgotICAgIC8vIE5TTXV0YWJsZVVSTFJlcXVlc3QgaW5zdGVhZCBvZiBO
U1VSTFJlcXVlc3QuCi0gICAgc3RhdGljIENsYXNzIG5zVVJMUmVxdWVzdENsYXNzID0gW05TVVJM
UmVxdWVzdCBjbGFzc107Ci0gICAgc3RhdGljIENsYXNzIG5zTXV0YWJsZVVSTFJlcXVlc3RDbGFz
cyA9IFtOU011dGFibGVVUkxSZXF1ZXN0IGNsYXNzXTsKLSAgICBDbGFzcyByZXF1ZXN0Q2xhc3Mg
PSBbbV9uc1JlcXVlc3QuZ2V0KCkgY2xhc3NdOwotCi0gICAgaWYgKCFtX2NmUmVxdWVzdCkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgaWYgKHJlcXVlc3RDbGFzcyAmJiByZXF1ZXN0Q2xhc3MgIT0g
bnNVUkxSZXF1ZXN0Q2xhc3MgJiYgcmVxdWVzdENsYXNzICE9IG5zTXV0YWJsZVVSTFJlcXVlc3RD
bGFzcykKLSAgICAgICAgbV9uc1JlcXVlc3QgPSBhZG9wdE5TKFtbcmVxdWVzdENsYXNzIGFsbG9j
XSBfaW5pdFdpdGhDRlVSTFJlcXVlc3Q6bV9jZlJlcXVlc3QuZ2V0KCldKTsKLSAgICBlbHNlCi0g
ICAgICAgIG1fbnNSZXF1ZXN0ID0gbnVsbHB0cjsKLX0KLQotI2VuZGlmIC8vIFVTRShDRk5FVFdP
UkspCi0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0F1dGhlbnRpY2F0aW9u
TWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFj
L0F1dGhlbnRpY2F0aW9uTWFjLm1tCShyZXZpc2lvbiAyMDcwMzkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9BdXRoZW50aWNhdGlvbk1hYy5tbQkod29ya2luZyBjb3B5
KQpAQCAtMzIsMTggKzMyLDExIEBACiAjaW1wb3J0IDxGb3VuZGF0aW9uL05TVVJMQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UuaD4KICNpbXBvcnQgPEZvdW5kYXRpb24vTlNVUkxQcm90ZWN0aW9uU3Bh
Y2UuaD4KIAotI2lmIFVTRShDRk5FVFdPUkspCi0jaW1wb3J0ICJDRk5TVVJMQ29ubmVjdGlvblNQ
SS5oIgotI2VuZGlmCi0KIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBAaW50ZXJmYWNlIFdl
YkNvcmVBdXRoZW50aWNhdGlvbkNsaWVudEFzQ2hhbGxlbmdlU2VuZGVyIDogTlNPYmplY3QgPE5T
VVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXI+CiB7CiAgICAgQXV0aGVudGljYXRpb25D
bGllbnQqIG1fY2xpZW50OwotI2lmIFVTRShDRk5FVFdPUkspCi0gICAgQ0ZVUkxBdXRoQ2hhbGxl
bmdlUmVmIG1fY2ZDaGFsbGVuZ2U7Ci0jZW5kaWYKIH0KIC0gKGlkKWluaXRXaXRoQXV0aGVudGlj
YXRpb25DbGllbnQ6KEF1dGhlbnRpY2F0aW9uQ2xpZW50KiljbGllbnQ7CiAtIChBdXRoZW50aWNh
dGlvbkNsaWVudCopY2xpZW50OwpAQCAtMTAxLDQ3ICs5NCwxMCBAQCAtICh2b2lkKWNhbmNlbEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOihOCiAgICAgICAgIG1fY2xpZW50LT5yZWNlaXZlZENhbmNl
bGxhdGlvbihjb3JlKGNoYWxsZW5nZSkpOwogfQogCi0jaWYgVVNFKENGTkVUV09SSykKLS0gKHZv
aWQpc2V0Q0ZDaGFsbGVuZ2U6KENGVVJMQXV0aENoYWxsZW5nZVJlZiljaGFsbGVuZ2UKLXsKLSAg
ICBtX2NmQ2hhbGxlbmdlID0gY2hhbGxlbmdlOwotfQotCi0tIChDRlVSTEF1dGhDaGFsbGVuZ2VS
ZWYpY2ZDaGFsbGVuZ2UKLXsKLSAgICByZXR1cm4gbV9jZkNoYWxsZW5nZTsKLX0KLSNlbmRpZgot
CiBAZW5kCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotI2lmIFVTRShDRk5FVFdPUkspCi0KLUF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIGNvcmUoTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAq
bWFjQ2hhbGxlbmdlKQotewotICAgIFdlYkNvcmVBdXRoZW50aWNhdGlvbkNsaWVudEFzQ2hhbGxl
bmdlU2VuZGVyICpjaGFsbGVuZ2VTZW5kZXIgPSAoV2ViQ29yZUF1dGhlbnRpY2F0aW9uQ2xpZW50
QXNDaGFsbGVuZ2VTZW5kZXIqKSBbbWFjQ2hhbGxlbmdlIHNlbmRlcl07Ci0gICAgcmV0dXJuIEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFtjaGFsbGVuZ2VTZW5kZXIgY2ZDaGFsbGVuZ2VdLCBbY2hh
bGxlbmdlU2VuZGVyIGNsaWVudF0pOwotfQotCi1OU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
ICptYWMoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNvcmVDaGFsbGVuZ2UpCi17Ci0g
ICAgQXV0aGVudGljYXRpb25DbGllbnQqIGF1dGhDbGllbnQgPSBjb3JlQ2hhbGxlbmdlLmF1dGhl
bnRpY2F0aW9uQ2xpZW50KCk7Ci0gICAgUmV0YWluUHRyPFdlYkNvcmVBdXRoZW50aWNhdGlvbkNs
aWVudEFzQ2hhbGxlbmdlU2VuZGVyPiBjaGFsbGVuZ2VTZW5kZXIgPSBhZG9wdE5TKFtbV2ViQ29y
ZUF1dGhlbnRpY2F0aW9uQ2xpZW50QXNDaGFsbGVuZ2VTZW5kZXIgYWxsb2NdIGluaXRXaXRoQXV0
aGVudGljYXRpb25DbGllbnQ6YXV0aENsaWVudF0pOwotICAgIFJldGFpblB0cjxDRlVSTEF1dGhD
aGFsbGVuZ2VSZWY+IGF1dGhDaGFsbGVuZ2UgPSBjb3JlQ2hhbGxlbmdlLmNmVVJMQXV0aENoYWxs
ZW5nZVJlZigpOwotICAgIGlmICghYXV0aENoYWxsZW5nZSkKLSAgICAgICAgYXV0aENoYWxsZW5n
ZSA9IGFkb3B0Q0YoY3JlYXRlQ0YoY29yZUNoYWxsZW5nZSkpOwotICAgIFtjaGFsbGVuZ2VTZW5k
ZXIuZ2V0KCkgc2V0Q0ZDaGFsbGVuZ2U6YXV0aENoYWxsZW5nZS5nZXQoKV07Ci0jaWYgUExBVEZP
Uk0oSU9TKQotICAgIHJldHVybiBbW05TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgX2NyZWF0
ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRm9yQ0ZBdXRoQ2hhbGxlbmdlOmF1dGhDaGFsbGVuZ2Uu
Z2V0KCkgc2VuZGVyOmNoYWxsZW5nZVNlbmRlci5nZXQoKV0gYXV0b3JlbGVhc2VdOwotI2Vsc2UK
LSAgICByZXR1cm4gW1tOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIF9hdXRoZW50aWNhdGlv
bkNoYWxsZW5nZUZvckNGQXV0aENoYWxsZW5nZTphdXRoQ2hhbGxlbmdlLmdldCgpIHNlbmRlcjpj
aGFsbGVuZ2VTZW5kZXIuZ2V0KCldIGF1dG9yZWxlYXNlXTsKLSNlbmRpZgotfQotCi0jZWxzZQot
CiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY29uc3Qg
UHJvdGVjdGlvblNwYWNlJiBwcm90ZWN0aW9uU3BhY2UsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ3JlZGVudGlhbCYgcHJvcG9zZWRDcmVk
ZW50aWFsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHVuc2lnbmVkIHByZXZpb3VzRmFpbHVyZUNvdW50LApAQCAtMjE1LDYgKzE3MSw0IEBAIEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlIGNvcmUoTlNVUkxBdXRoZW4KICAgICByZXR1cm4gQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UobWFjQ2hhbGxlbmdlKTsKIH0KIAotI2VuZGlmIC8vIFVTRShDRk5FVFdP
UkspCi0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvbWFjL0Nvb2tpZUphck1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9Db29raWVKYXJNYWMubW0JKHJldmlzaW9uIDIwNzAz
OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Nvb2tpZUphck1hYy5t
bQkod29ya2luZyBjb3B5KQpAQCAtMjcsMTkgKzI3LDEyIEBACiAjaW1wb3J0ICJQbGF0Zm9ybUNv
b2tpZUphci5oIgogCiAjaW1wb3J0ICJDRk5ldHdvcmtTUEkuaCIKLSNpbXBvcnQgIk5ldHdvcmtT
dG9yYWdlU2Vzc2lvbi5oIgotI2ltcG9ydCAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgotI2lt
cG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
c3RhdGljIE5TSFRUUENvb2tpZVN0b3JhZ2UgKmNvb2tpZVN0b3JhZ2UoY29uc3QgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uJik7Ci19Ci0KLSNpZiAhVVNFKENGTkVUV09SSykKLQogI2ltcG9ydCAiQ29v
a2llLmgiCiAjaW1wb3J0ICJDb29raWVTdG9yYWdlLmgiCisjaW1wb3J0ICJOZXR3b3JrU3RvcmFn
ZVNlc3Npb24uaCIKICNpbXBvcnQgIlVSTC5oIgorI2ltcG9ydCAiV2ViQ29yZVN5c3RlbUludGVy
ZmFjZS5oIgorI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KICNpbXBvcnQgPHd0
Zi9PcHRpb25hbC5oPgogI2ltcG9ydCA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCkBAIC0x
OTEsNiArMTg0LDcgQEAgdm9pZCBzZXRDb29raWVzRnJvbURPTShjb25zdCBOZXR3b3JrU3Rvcgog
ICAgIE5TVVJMICpjb29raWVVUkwgPSB1cmw7CiAgICAgTlNEaWN0aW9uYXJ5ICpoZWFkZXJGaWVs
ZHMgPSBbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0OmNvb2tpZVN0cmluZyBmb3JL
ZXk6QCJTZXQtQ29va2llIl07CiAKKyAgICAvLyBGSVhNRTogSXMgdGhpcyBuZWVkZWQgb24gaU9T
LCB0b28/CiAjaWYgUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEID49IDEwMTEwMAogICAgIE5TQXJyYXkgKnVuZmlsdGVyZWRDb29raWVzID0gW05TSFRUUENv
b2tpZSBfcGFyc2VkQ29va2llc1dpdGhSZXNwb25zZUhlYWRlckZpZWxkczpoZWFkZXJGaWVsZHMg
Zm9yVVJMOmNvb2tpZVVSTF07CiAjZWxzZQpAQCAtMjYwLDYgKzI1NCwxNSBAQCB2b2lkIGRlbGV0
ZUNvb2tpZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlCiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBU
SU9OUzsKIH0KIAorc3RhdGljIE5TSFRUUENvb2tpZVN0b3JhZ2UgKmNvb2tpZVN0b3JhZ2UoY29u
c3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uKQoreworICAgIGF1dG8gY29va2llU3Rv
cmFnZSA9IHNlc3Npb24uY29va2llU3RvcmFnZSgpOworICAgIGlmICghY29va2llU3RvcmFnZSB8
fCBbTlNIVFRQQ29va2llU3RvcmFnZSBzaGFyZWRIVFRQQ29va2llU3RvcmFnZV0uX2Nvb2tpZVN0
b3JhZ2UgPT0gY29va2llU3RvcmFnZSkKKyAgICAgICAgcmV0dXJuIFtOU0hUVFBDb29raWVTdG9y
YWdlIHNoYXJlZEhUVFBDb29raWVTdG9yYWdlXTsKKyAgICAKKyAgICByZXR1cm4gW1tbTlNIVFRQ
Q29va2llU3RvcmFnZSBhbGxvY10gX2luaXRXaXRoQ0ZIVFRQQ29va2llU3RvcmFnZTpjb29raWVT
dG9yYWdlLmdldCgpXSBhdXRvcmVsZWFzZV07Cit9CisKIHZvaWQgYWRkQ29va2llKGNvbnN0IE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IENvb2tp
ZSYgY29va2llKQogewogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKQEAgLTI4MCwx
MiArMjgzLDEwIEBAIHZvaWQgYWRkQ29va2llKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2kKICAg
ICAgICAgTlNIVFRQQ29va2llRXhwaXJlczogW05TRGF0ZSBkYXRlV2l0aFRpbWVJbnRlcnZhbFNp
bmNlMTk3MDpjb29raWUuZXhwaXJlcyAvIDEwMDAuMF0sCiAgICAgfV07CiAKLSNpZiAhVVNFKENG
TkVUV09SSykKICAgICBpZiAoIWNvb2tpZVN0b3JhZ2UpIHsKICAgICAgICAgW1dlYkNvcmU6OmNv
b2tpZVN0b3JhZ2Uoc2Vzc2lvbikgc2V0Q29va2llOmh0dHBDb29raWVdOwogICAgICAgICByZXR1
cm47CiAgICAgfQotI2VuZGlmIC8vICFVU0UoQ0ZORVRXT1JLKQogCiAgICAgQ0ZIVFRQQ29va2ll
U3RvcmFnZVNldENvb2tpZShjb29raWVTdG9yYWdlLmdldCgpLCBbaHR0cENvb2tpZSBfQ0ZIVFRQ
Q29va2llXSk7CiAKQEAgLTMwOSwyMSArMzEwLDYgQEAgdm9pZCBkZWxldGVBbGxDb29raWVzKGNv
bnN0IE5ldHdvcmtTdG9yYQogICAgIHdrRGVsZXRlQWxsSFRUUENvb2tpZXMoc2Vzc2lvbi5jb29r
aWVTdG9yYWdlKCkuZ2V0KCkpOwogfQogCi19Ci0KLSNlbmRpZiAvLyAhVVNFKENGTkVUV09SSykK
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdGF0aWMgTlNIVFRQQ29va2llU3RvcmFnZSAqY29v
a2llU3RvcmFnZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24pCi17Ci0gICAg
YXV0byBjb29raWVTdG9yYWdlID0gc2Vzc2lvbi5jb29raWVTdG9yYWdlKCk7Ci0gICAgaWYgKCFj
b29raWVTdG9yYWdlIHx8IFtOU0hUVFBDb29raWVTdG9yYWdlIHNoYXJlZEhUVFBDb29raWVTdG9y
YWdlXS5fY29va2llU3RvcmFnZSA9PSBjb29raWVTdG9yYWdlKQotICAgICAgICByZXR1cm4gW05T
SFRUUENvb2tpZVN0b3JhZ2Ugc2hhcmVkSFRUUENvb2tpZVN0b3JhZ2VdOwotCi0gICAgcmV0dXJu
IFtbW05TSFRUUENvb2tpZVN0b3JhZ2UgYWxsb2NdIF9pbml0V2l0aENGSFRUUENvb2tpZVN0b3Jh
Z2U6Y29va2llU3RvcmFnZS5nZXQoKV0gYXV0b3JlbGVhc2VdOwotfQotCiB2b2lkIGRlbGV0ZUNv
b2tpZXNGb3JIb3N0bmFtZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBj
b25zdCBWZWN0b3I8U3RyaW5nPiYgaG9zdG5hbWVzKQogewogICAgIEJFR0lOX0JMT0NLX09CSkNf
RVhDRVBUSU9OUzsKQEAgLTM1Myw3ICszMzksNiBAQCB2b2lkIGRlbGV0ZUNvb2tpZXNGb3JIb3N0
bmFtZXMoY29uc3QgTmV0CiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIH0KIAotCiB2
b2lkIGRlbGV0ZUFsbENvb2tpZXNNb2RpZmllZFNpbmNlKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiYgc2Vzc2lvbiwgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCB0aW1l
UG9pbnQpCiB7CiAgICAgaWYgKCFbTlNIVFRQQ29va2llU3RvcmFnZSBpbnN0YW5jZXNSZXNwb25k
VG9TZWxlY3RvcjpAc2VsZWN0b3IocmVtb3ZlQ29va2llc1NpbmNlRGF0ZTopXSkKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0NyZWRlbnRpYWxTdG9yYWdlTWFjLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0NyZWRl
bnRpYWxTdG9yYWdlTWFjLm1tCShyZXZpc2lvbiAyMDcwMzkpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL21hYy9DcmVkZW50aWFsU3RvcmFnZU1hYy5tbQkod29ya2luZyBjb3B5
KQpAQCAtMjYsOCArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNyZWRl
bnRpYWxTdG9yYWdlLmgiCiAKLSNpZiAhVVNFKENGTkVUV09SSykKLQogI2luY2x1ZGUgIkF1dGhl
bnRpY2F0aW9uTWFjLmgiCiAjaW5jbHVkZSAiQ3JlZGVudGlhbC5oIgogI2luY2x1ZGUgIlByb3Rl
Y3Rpb25TcGFjZS5oIgpAQCAtNTIsNSArNTAsMyBAQCB2b2lkIENyZWRlbnRpYWxTdG9yYWdlOjpz
YXZlVG9QZXJzaXN0ZW50CiAjZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5k
aWYgLy8gIVVTRShDRk5FVFdPUkspCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL21hYy9Gb3JtRGF0YVN0cmVhbU1hYy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvbWFjL0Zvcm1EYXRhU3RyZWFtTWFjLmgJKHJldmlzaW9uIDIwNzAz
OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Zvcm1EYXRhU3RyZWFt
TWFjLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDEwICsyNiw3IEBACiAgKiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICov
CiAKLSNpZm5kZWYgRm9ybURhdGFTdHJlYW1NYWNfaAotI2RlZmluZSBGb3JtRGF0YVN0cmVhbU1h
Y19oCi0KLSNpZiAhVVNFKENGTkVUV09SSykKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSA8d3Rm
L0ZvcndhcmQuaD4KIApAQCAtNDAsMTUgKzM3LDExIEBAIHR5cGVkZWYgY29uc3Qgc3RydWN0IF9D
RlVSTFJlcXVlc3QqIENGVVIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0gICAgY2xhc3MgRm9y
bURhdGE7CitjbGFzcyBGb3JtRGF0YTsKIAotICAgIHZvaWQgc2V0SFRUUEJvZHkoTlNNdXRhYmxl
VVJMUmVxdWVzdCAqLCBGb3JtRGF0YSopOwotICAgIEZvcm1EYXRhKiBodHRwQm9keUZyb21TdHJl
YW0oTlNJbnB1dFN0cmVhbSAqKTsKK3ZvaWQgc2V0SFRUUEJvZHkoTlNNdXRhYmxlVVJMUmVxdWVz
dCAqLCBGb3JtRGF0YSopOworRm9ybURhdGEqIGh0dHBCb2R5RnJvbVN0cmVhbShOU0lucHV0U3Ry
ZWFtICopOwogCi0gICAgQ0ZTdHJpbmdSZWYgZm9ybURhdGFTdHJlYW1MZW5ndGhQcm9wZXJ0eU5h
bWUoKTsKK0NGU3RyaW5nUmVmIGZvcm1EYXRhU3RyZWFtTGVuZ3RoUHJvcGVydHlOYW1lKCk7CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vICFVU0UoQ0ZORVRXT1JLKQotCi0j
ZW5kaWYgLy8gRm9ybURhdGFTdHJlYW1NYWNfaApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9tYWMvRm9ybURhdGFTdHJlYW1NYWMubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvRm9ybURhdGFTdHJlYW1NYWMubW0JKHJldmlz
aW9uIDIwNzAzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Zvcm1E
YXRhU3RyZWFtTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw4ICsyOSw2IEBACiAjaW1wb3J0
ICJjb25maWcuaCIKICNpbXBvcnQgIkZvcm1EYXRhU3RyZWFtTWFjLmgiCiAKLSNpZiAhVVNFKENG
TkVUV09SSykKLQogI2ltcG9ydCAiRm9ybURhdGEuaCIKICNpbXBvcnQgIkZvcm1EYXRhU3RyZWFt
Q0ZOZXQuaCIKIApAQCAtNTEsNSArNDksMyBAQCBGb3JtRGF0YSogaHR0cEJvZHlGcm9tU3RyZWFt
KE5TSW5wdXRTdHJlCiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vICFV
U0UoQ0ZORVRXT1JLKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMv
UmVzb3VyY2VFcnJvck1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL21hYy9SZXNvdXJjZUVycm9yTWFjLm1tCShyZXZpc2lvbiAyMDcwMzkpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUVycm9yTWFjLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0zMSwxMCArMzEsNiBAQAogI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3Vu
ZGF0aW9uLmg+CiAjaW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgogCi0jaWYgUExB
VEZPUk0oSU9TKSAmJiBVU0UoQ0ZORVRXT1JLKQotI2ltcG9ydCA8Q0ZOZXR3b3JrL0NGU29ja2V0
U3RyZWFtUHJpdi5oPgotI2VuZGlmCi0KIEBpbnRlcmZhY2UgTlNFcnJvciAoV2ViRXh0cmFzKQog
LSAoTlNTdHJpbmcgKilfd2ViX2xvY2FsaXplZERlc2NyaXB0aW9uOwogQGVuZApAQCAtOTEsODUg
Kzg3LDYgQEAgLSAodm9pZCllbmNvZGVXaXRoQ29kZXI6KE5TQ29kZXIgKiljb2RlcgogCiBAZW5k
CiAKLQotI2lmIFVTRShDRk5FVFdPUkspCi1zdGF0aWMgTlNFcnJvciAqTlNFcnJvckZyb21DRkVy
cm9yKENGRXJyb3JSZWYgY2ZFcnJvciwgTlNVUkwgKnVybCkKLXsKLSAgICBDRkluZGV4IGVyckNv
ZGUgPSBDRkVycm9yR2V0Q29kZShjZkVycm9yKTsKLSAgICBpZiAoQ0ZFcXVhbChDRkVycm9yR2V0
RG9tYWluKGNmRXJyb3IpLCBrQ0ZFcnJvckRvbWFpbkNGTmV0d29yaykgJiYgZXJyQ29kZSA8PSBr
Q0ZVUkxFcnJvclVua25vd24gJiYgZXJyQ29kZSA+IC00MDAwKSB7Ci0gICAgICAgIC8vIFRoaXMg
aXMgYW4gVVJMIGVycm9yIGFuZCBuZWVkcyB0byBiZSB0cmFuc2xhdGVkIHRvIHRoZSBOU1VSTEVy
cm9yRG9tYWluCi0gICAgICAgIGlkIGtleXNbMTBdLCB2YWx1ZXNbMTBdOwotICAgICAgICBDRkRp
Y3Rpb25hcnlSZWYgdXNlckluZm8gPSBDRkVycm9yQ29weVVzZXJJbmZvKGNmRXJyb3IpOwotICAg
ICAgICBOU0Vycm9yICpyZXN1bHQ7Ci0gICAgICAgIE5TSW50ZWdlciBjb3VudCA9IDA7Ci0KLSAg
ICAgICAgaWYgKHVybCkgewotICAgICAgICAgICAga2V5c1tjb3VudF0gPSBOU1VSTEVycm9yRmFp
bGluZ1VSTEVycm9yS2V5OwotICAgICAgICAgICAgdmFsdWVzW2NvdW50XSA9IHVybDsKLSAgICAg
ICAgICAgIGNvdW50ICsrOwotCi0gICAgICAgICAgICBrZXlzW2NvdW50XSA9IE5TVVJMRXJyb3JG
YWlsaW5nVVJMU3RyaW5nRXJyb3JLZXk7Ci0gICAgICAgICAgICB2YWx1ZXNbY291bnRdID0gW3Vy
bCBhYnNvbHV0ZVN0cmluZ107Ci0gICAgICAgICAgICBjb3VudCArKzsKLSAgICAgICAgfQotCi0g
ICAgICAgIHZhbHVlc1tjb3VudF0gPSAoaWQpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUodXNlckluZm8s
IGtDRkVycm9yTG9jYWxpemVkRGVzY3JpcHRpb25LZXkpOwotICAgICAgICBpZiAodmFsdWVzW2Nv
dW50XSkgewotICAgICAgICAgICAga2V5c1tjb3VudF0gPSBOU0xvY2FsaXplZERlc2NyaXB0aW9u
S2V5OwotICAgICAgICAgICAgY291bnQgKys7Ci0gICAgICAgIH0KLQotICAgICAgICB2YWx1ZXNb
Y291bnRdID0gKGlkKUNGRGljdGlvbmFyeUdldFZhbHVlKHVzZXJJbmZvLCBrQ0ZFcnJvckxvY2Fs
aXplZEZhaWx1cmVSZWFzb25LZXkpOwotICAgICAgICBpZiAodmFsdWVzW2NvdW50XSkgewotICAg
ICAgICAgICAga2V5c1tjb3VudF0gPSBOU0xvY2FsaXplZEZhaWx1cmVSZWFzb25FcnJvcktleTsK
LSAgICAgICAgICAgIGNvdW50ICsrOwotICAgICAgICB9Ci0KLSAgICAgICAgdmFsdWVzW2NvdW50
XSA9IChpZClDRkRpY3Rpb25hcnlHZXRWYWx1ZSh1c2VySW5mbywga0NGRXJyb3JMb2NhbGl6ZWRS
ZWNvdmVyeVN1Z2dlc3Rpb25LZXkpOwotICAgICAgICBpZiAodmFsdWVzW2NvdW50XSkgewotICAg
ICAgICAgICAga2V5c1tjb3VudF0gPSBOU0xvY2FsaXplZFJlY292ZXJ5U3VnZ2VzdGlvbkVycm9y
S2V5OwotICAgICAgICAgICAgY291bnQgKys7Ci0gICAgICAgIH0KLQotI3ByYWdtYSBjbGFuZyBk
aWFnbm9zdGljIHB1c2gKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV2RlcHJl
Y2F0ZWQtZGVjbGFyYXRpb25zIgotICAgICAgICBpZiAodXNlckluZm8gJiYgKHZhbHVlc1tjb3Vu
dF0gPSAoaWQpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUodXNlckluZm8sIGtDRlN0cmVhbVByb3BlcnR5
U1NMUGVlckNlcnRpZmljYXRlcykpICE9IG5pbCkgewotICAgICAgICAgICAgLy8gTmVlZCB0byB0
cmFuc2xhdGUgdGhlIGNlcnQKLSAgICAgICAgICAgIGtleXNbY291bnRdID0gQCJOU0Vycm9yUGVl
ckNlcnRpZmljYXRlQ2hhaW5LZXkiOwotICAgICAgICAgICAgY291bnQgKys7Ci0KLSAgICAgICAg
ICAgIHZhbHVlc1tjb3VudF0gPSAoaWQpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUodXNlckluZm8sIF9r
Q0ZTdHJlYW1Qcm9wZXJ0eVNTTENsaWVudENlcnRpZmljYXRlcyk7Ci0gICAgICAgICAgICBpZiAo
dmFsdWVzW2NvdW50XSkgewotICAgICAgICAgICAgICAgIGtleXNbY291bnRdID0gQCJOU0Vycm9y
Q2xpZW50Q2VydGlmaWNhdGVDaGFpbktleSI7Ci0gICAgICAgICAgICAgICAgY291bnQgKys7Ci0g
ICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHZhbHVlc1tjb3VudF0gPSAoaWQpQ0ZEaWN0aW9u
YXJ5R2V0VmFsdWUodXNlckluZm8sIF9rQ0ZTdHJlYW1Qcm9wZXJ0eVNTTENsaWVudENlcnRpZmlj
YXRlU3RhdGUpOwotICAgICAgICAgICAgaWYgKHZhbHVlc1tjb3VudF0pIHsKLSAgICAgICAgICAg
ICAgICBrZXlzW2NvdW50XSA9IEAiTlNFcnJvckNsaWVudENlcnRpZmljYXRlU3RhdGVLZXkiOwot
ICAgICAgICAgICAgICAgIGNvdW50ICsrOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0jcHJh
Z21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCi0KLSAgICAgICAgaWYgKHVzZXJJbmZvICYmICh2YWx1
ZXNbY291bnRdID0gKGlkKUNGRGljdGlvbmFyeUdldFZhbHVlKHVzZXJJbmZvLCBrQ0ZTdHJlYW1Q
cm9wZXJ0eVNTTFBlZXJUcnVzdCkpICE9IG5pbCkgewotICAgICAgICAgICAga2V5c1tjb3VudF0g
PSBOU1VSTEVycm9yRmFpbGluZ1VSTFBlZXJUcnVzdEVycm9yS2V5OwotICAgICAgICAgICAgY291
bnQrKzsKLSAgICAgICAgfQotCi0gICAgICAgIGtleXNbY291bnRdID0gTlNVbmRlcmx5aW5nRXJy
b3JLZXk7Ci0gICAgICAgIHZhbHVlc1tjb3VudF0gPSAoaWQpY2ZFcnJvcjsKLSAgICAgICAgY291
bnQgKys7Ci0KLSAgICAgICAgcmVzdWx0ID0gW1dlYkN1c3RvbU5TVVJMRXJyb3IgZXJyb3JXaXRo
RG9tYWluOk5TVVJMRXJyb3JEb21haW4gY29kZTooZXJyQ29kZSA9PSBrQ0ZVUkxFcnJvclVua25v
d24gPyAoQ0ZJbmRleClOU1VSTEVycm9yVW5rbm93biA6IGVyckNvZGUpIHVzZXJJbmZvOltOU0Rp
Y3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3RzOnZhbHVlcyBmb3JLZXlzOmtleXMgY291bnQ6
Y291bnRdXTsKLSAgICAgICAgaWYgKHVzZXJJbmZvKQotICAgICAgICAgICAgQ0ZSZWxlYXNlKHVz
ZXJJbmZvKTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0gICAgcmV0dXJuIChOU0Vy
cm9yICopY2ZFcnJvcjsKLX0KLSNlbmRpZiAvLyBVU0UoQ0ZORVRXT1JLKQotCiAjZW5kaWYgLy8g
UExBVEZPUk0oSU9TKQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xOTAsNTMgKzEwNyw2IEBA
IHN0YXRpYyBSZXRhaW5QdHI8TlNFcnJvcj4gY3JlYXRlTlNFcnJvckYKICAgICByZXR1cm4gYWRv
cHROUyhbW05TRXJyb3IgYWxsb2NdIGluaXRXaXRoRG9tYWluOnJlc291cmNlRXJyb3IuZG9tYWlu
KCkgY29kZTpyZXNvdXJjZUVycm9yLmVycm9yQ29kZSgpIHVzZXJJbmZvOnVzZXJJbmZvLmdldCgp
XSk7CiB9CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotCi1SZXNvdXJjZUVycm9yOjpSZXNvdXJjZUVy
cm9yKE5TRXJyb3IgKmVycm9yKQotICAgIDogUmVzb3VyY2VFcnJvckJhc2UoVHlwZTo6TnVsbCkK
LSAgICAsIG1fZGF0YUlzVXBUb0RhdGUoZmFsc2UpCi0gICAgLCBtX3BsYXRmb3JtRXJyb3IocmVp
bnRlcnByZXRfY2FzdDxDRkVycm9yUmVmPihlcnJvcikpCi17Ci0gICAgaWYgKGVycm9yKQotICAg
ICAgICBzZXRUeXBlKChbZXJyb3IgY29kZV0gPT0gTlNVUkxFcnJvclRpbWVkT3V0KSA/IFR5cGU6
OlRpbWVvdXQgOiBUeXBlOjpHZW5lcmFsKTsKLX0KLQotTlNFcnJvciAqUmVzb3VyY2VFcnJvcjo6
bnNFcnJvcigpIGNvbnN0Ci17Ci0gICAgaWYgKGlzTnVsbCgpKSB7Ci0gICAgICAgIEFTU0VSVCgh
bV9wbGF0Zm9ybUVycm9yKTsKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICB9Ci0KLSAgICBpZiAo
bV9wbGF0Zm9ybU5TRXJyb3IpCi0gICAgICAgIHJldHVybiBtX3BsYXRmb3JtTlNFcnJvci5nZXQo
KTsKLQotICAgIGlmIChtX3BsYXRmb3JtRXJyb3IpIHsKLSAgICAgICAgQ0ZFcnJvclJlZiBlcnJv
ciA9IG1fcGxhdGZvcm1FcnJvci5nZXQoKTsKLSAgICAgICAgUmV0YWluUHRyPENGRGljdGlvbmFy
eVJlZj4gdXNlckluZm8gPSBhZG9wdENGKENGRXJyb3JDb3B5VXNlckluZm8oZXJyb3IpKTsKLSNp
ZiBQTEFURk9STShJT1MpCi0gICAgICAgIG1fcGxhdGZvcm1OU0Vycm9yID0gTlNFcnJvckZyb21D
RkVycm9yKGVycm9yLCAoTlNVUkwgKilbKE5TRGljdGlvbmFyeSAqKXVzZXJJbmZvLmdldCgpIG9i
amVjdEZvcktleTooaWQpIGtDRlVSTEVycm9yRmFpbGluZ1VSTEVycm9yS2V5XSk7Ci0gICAgICAg
IC8vIElmIE5TRXJyb3JGcm9tQ0ZFcnJvciBjcmVhdGVkIGEgbmV3IE5TRXJyb3IgZm9yIHVzLCBy
ZXR1cm4gdGhhdC4KLSAgICAgICAgaWYgKG1fcGxhdGZvcm1OU0Vycm9yLmdldCgpICE9IChOU0Vy
cm9yICopZXJyb3IpCi0gICAgICAgICAgICByZXR1cm4gbV9wbGF0Zm9ybU5TRXJyb3IuZ2V0KCk7
Ci0KLSAgICAgICAgLy8gT3RoZXJ3aXNlIGZhbGwgdGhyb3VnaCB0byBjcmVhdGUgYSBuZXcgTlNF
cnJvciBmcm9tIHRoZSBDRkVycm9yLgotI2VuZGlmCi0gICAgICAgIG1fcGxhdGZvcm1OU0Vycm9y
ID0gYWRvcHROUyhbW05TRXJyb3IgYWxsb2NdIGluaXRXaXRoRG9tYWluOihOU1N0cmluZyAqKUNG
RXJyb3JHZXREb21haW4oZXJyb3IpIGNvZGU6Q0ZFcnJvckdldENvZGUoZXJyb3IpIHVzZXJJbmZv
OihOU0RpY3Rpb25hcnkgKil1c2VySW5mby5nZXQoKV0pOwotICAgICAgICByZXR1cm4gbV9wbGF0
Zm9ybU5TRXJyb3IuZ2V0KCk7Ci0gICAgfQotCi0gICAgbV9wbGF0Zm9ybU5TRXJyb3IgPSBjcmVh
dGVOU0Vycm9yRnJvbVJlc291cmNlRXJyb3JCYXNlKCp0aGlzKTsKLSAgICByZXR1cm4gbV9wbGF0
Zm9ybU5TRXJyb3IuZ2V0KCk7Ci19Ci0KLVJlc291cmNlRXJyb3I6Om9wZXJhdG9yIE5TRXJyb3Ig
KigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG5zRXJyb3IoKTsKLX0KLQotI2Vsc2UKLQogUmVzb3Vy
Y2VFcnJvcjo6UmVzb3VyY2VFcnJvcihOU0Vycm9yICpuc0Vycm9yKQogICAgIDogUmVzb3VyY2VF
cnJvckJhc2UoVHlwZTo6TnVsbCkKICAgICAsIG1fZGF0YUlzVXBUb0RhdGUoZmFsc2UpCkBAIC0z
MDksNiArMTc5LDQgQEAgUmVzb3VyY2VFcnJvcjo6b3BlcmF0b3IgQ0ZFcnJvclJlZigpIGNvbgog
ICAgIHJldHVybiBjZkVycm9yKCk7CiB9CiAKLSNlbmRpZiAvLyBVU0UoQ0ZORVRXT1JLKQotCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbQkocmV2aXNpb24gMjA3
MDM5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5k
bGVNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTU4LDE2ICs1OCw2IEBACiAjaW1wb3J0IDx3dGYv
dGV4dC9CYXNlNjQuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAotI2lmIFVTRShD
Rk5FVFdPUkspCi0jaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKLSNpbXBvcnQgPENGTmV0d29y
ay9DRlVSTENvbm5lY3Rpb25Qcml2Lmg+Ci0jZW5kaWYKLXR5cGVkZWYgc3RydWN0IF9DRlVSTENv
bm5lY3Rpb24qIENGVVJMQ29ubmVjdGlvblJlZjsKLWV4dGVybiAiQyIgewotQ0ZEaWN0aW9uYXJ5
UmVmIF9DRlVSTENvbm5lY3Rpb25Db3B5VGltaW5nRGF0YShDRlVSTENvbm5lY3Rpb25SZWYpOwot
fQotI2VuZGlmIC8vIFVTRShDRk5FVFdPUkspCi0KICNpZiBQTEFURk9STShJT1MpCiAjaW1wb3J0
ICJDRk5ldHdvcmtTUEkuaCIKICNpbXBvcnQgIlJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oIgpA
QCAtOTAsOCArODAsNiBAQCAtKGlkKV9pbml0V2l0aFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJl
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKLSNpZiAhVVNFKENGTkVUV09SSykKLSAgICAK
IHN0YXRpYyB2b2lkIGFwcGx5QmFzaWNBdXRob3JpemF0aW9uSGVhZGVyKFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCwgY29uc3QgQ3JlZGVudGlhbCYgY3JlZGVudGlhbCkKIHsKICAgICBTdHJpbmcg
YXV0aGVudGljYXRpb25IZWFkZXIgPSAiQmFzaWMgIiArIGJhc2U2NEVuY29kZShTdHJpbmcoY3Jl
ZGVudGlhbC51c2VyKCkgKyAiOiIgKyBjcmVkZW50aWFsLnBhc3N3b3JkKCkpLnV0ZjgoKSk7CkBA
IC0zMjksOCArMzE3LDYgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6cGxhdGZvcm1TZXREZWZlcnNM
bwogICAgICAgICBbZC0+bV9jb25uZWN0aW9uIHNldERlZmVyc0NhbGxiYWNrczpkZWZlcnNdOwog
fQogCi0jaWYgIVVTRShDRk5FVFdPUkspCi0KIHZvaWQgUmVzb3VyY2VIYW5kbGU6OnNjaGVkdWxl
KFNjaGVkdWxlUGFpciYgcGFpcikKIHsKICAgICBOU1J1bkxvb3AgKnJ1bkxvb3AgPSBwYWlyLm5z
UnVuTG9vcCgpOwpAQCAtMzQ5LDggKzMzNSw2IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OnVuc2No
ZWR1bGUoU2NoZWR1bGUKICAgICAgICAgW2QtPm1fY29ubmVjdGlvbi5nZXQoKSB1bnNjaGVkdWxl
RnJvbVJ1bkxvb3A6cnVuTG9vcCBmb3JNb2RlOihOU1N0cmluZyAqKXBhaXIubW9kZSgpXTsKIH0K
IAotI2VuZGlmCi0KIGlkIFJlc291cmNlSGFuZGxlOjptYWtlRGVsZWdhdGUoYm9vbCBzaG91bGRV
c2VDcmVkZW50aWFsU3RvcmFnZSkKIHsKICAgICBBU1NFUlQoIWQtPm1fZGVsZWdhdGUpOwpAQCAt
NzMwLDI3ICs3MTQsMTQgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6Y29udGludWVXaWxsQ2FjaGVS
ZQogCiAgICAgWyhpZClkZWxlZ2F0ZSgpIGNvbnRpbnVlV2lsbENhY2hlUmVzcG9uc2U6cmVzcG9u
c2VdOwogfQotICAgIAotI2VuZGlmIC8vICFVU0UoQ0ZORVRXT1JLKQotICAgIAotI2lmIEVOQUJM
RShXRUJfVElNSU5HKQogCi0jaWYgVVNFKENGTkVUV09SSykKLSAgICAKLXZvaWQgUmVzb3VyY2VI
YW5kbGU6OmdldENvbm5lY3Rpb25UaW1pbmdEYXRhKENGVVJMQ29ubmVjdGlvblJlZiBjb25uZWN0
aW9uLCBOZXR3b3JrTG9hZFRpbWluZyYgdGltaW5nKQotewotICAgIGNvcHlUaW1pbmdEYXRhKChf
X2JyaWRnZSBOU0RpY3Rpb25hcnkqKWFkb3B0Q0YoX0NGVVJMQ29ubmVjdGlvbkNvcHlUaW1pbmdE
YXRhKGNvbm5lY3Rpb24pKS5nZXQoKSwgdGltaW5nKTsKLX0KLSAgICAKLSNlbHNlCisjaWYgRU5B
QkxFKFdFQl9USU1JTkcpCiAgICAgCiB2b2lkIFJlc291cmNlSGFuZGxlOjpnZXRDb25uZWN0aW9u
VGltaW5nRGF0YShOU1VSTENvbm5lY3Rpb24gKmNvbm5lY3Rpb24sIE5ldHdvcmtMb2FkVGltaW5n
JiB0aW1pbmcpCiB7CiAgICAgY29weVRpbWluZ0RhdGEoW2Nvbm5lY3Rpb24gX3RpbWluZ0RhdGFd
LCB0aW1pbmcpOwogfQogICAgIAotI2VuZGlmCi0gICAgCiAjZW5kaWYgLy8gRU5BQkxFKFdFQl9U
SU1JTkcpCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvbWFjL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50Lm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1N5bmNocm9ub3VzTG9hZGVy
Q2xpZW50Lm1tCShyZXZpc2lvbiAyMDcwMzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL21hYy9TeW5jaHJvbm91c0xvYWRlckNsaWVudC5tbQkod29ya2luZyBjb3B5KQpAQCAt
MjYsOCArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlN5bmNocm9ub3Vz
TG9hZGVyQ2xpZW50LmgiCiAKLSNpZiAhVVNFKENGTkVUV09SSykKLQogI2luY2x1ZGUgIkF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM4LDE0ICsz
NiwxMCBAQCB2b2lkIFN5bmNocm9ub3VzTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlCiAgICAgW2No
YWxsZW5nZS5zZW5kZXIoKSBjb250aW51ZVdpdGhvdXRDcmVkZW50aWFsRm9yQXV0aGVudGljYXRp
b25DaGFsbGVuZ2U6Y2hhbGxlbmdlLm5zVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKV07CiB9
CiAKLSNpZiAhVVNFKENGTkVUV09SSykKIFJlc291cmNlRXJyb3IgU3luY2hyb25vdXNMb2FkZXJD
bGllbnQ6OnBsYXRmb3JtQmFkUmVzcG9uc2VFcnJvcigpCiB7CiAgICAgUmV0YWluUHRyPE5TRXJy
b3I+IGVycm9yID0gYWRvcHROUyhbW05TRXJyb3IgYWxsb2NdIGluaXRXaXRoRG9tYWluOk5TVVJM
RXJyb3JEb21haW4gY29kZTpOU1VSTEVycm9yQmFkU2VydmVyUmVzcG9uc2UgdXNlckluZm86bmls
XSk7CiAgICAgcmV0dXJuIGVycm9yLmdldCgpOwogfQotI2VuZGlmCiAKIH0KLQotI2VuZGlmIC8v
ICFVU0UoQ0ZORVRXT1JLKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9t
YWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVs
ZWdhdGUuaAkocmV2aXNpb24gMjA3MDM5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yMyw4ICsyMyw3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAg
Ki8KIAotI2lmbmRlZiBXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlX2gKLSNkZWZpbmUg
V2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZV9oCisjcHJhZ21hIG9uY2UKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogY2xhc3MgUmVzb3VyY2VIYW5kbGU7CkBAIC0zNCwxMyArMzMsOCBAQCBj
bGFzcyBSZXNvdXJjZUhhbmRsZTsKIC0gKHZvaWQpZGV0YWNoSGFuZGxlOwogQGVuZAogCi0jaWYg
IVVTRShDRk5FVFdPUkspCi0KIEBpbnRlcmZhY2UgV2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxl
Z2F0ZSA6IE5TT2JqZWN0IDxOU1VSTENvbm5lY3Rpb25EZWxlZ2F0ZSwgV2ViQ29yZVJlc291cmNl
TG9hZGVyRGVsZWdhdGU+IHsKICAgICBXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSogbV9oYW5kbGU7
CiB9CiAtIChpZClpbml0V2l0aEhhbmRsZTooV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqKWhhbmRs
ZTsKIEBlbmQKLQotI2VuZGlmIC8vICFVU0UoQ0ZORVRXT1JLKQotI2VuZGlmIC8vIFdlYkNvcmVS
ZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGVfaApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZS5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VI
YW5kbGVBc0RlbGVnYXRlLm1tCShyZXZpc2lvbiAyMDcwMzkpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0yNiw4ICsyNiw2IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBv
cnQgIldlYkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGUuaCIKIAotI2lmICFVU0UoQ0ZORVRX
T1JLKQotCiAjaW1wb3J0ICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oIgogI2ltcG9ydCAiQXV0
aGVudGljYXRpb25NYWMuaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKQEAgLTI3MCw2ICsyNjgsMyBA
QCAtIChOU0NhY2hlZFVSTFJlc3BvbnNlICopY29ubmVjdGlvbjooTlNVCiB9CiAKIEBlbmQKLQot
I2VuZGlmIC8vICFVU0UoQ0ZORVRXT1JLKQotCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdh
dGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9X
ZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUuaAkocmV2aXNpb24g
MjA3MDM5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJl
c291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTIzLDEwICsyMyw3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8K
IAotI2lmbmRlZiBXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGVf
aAotI2RlZmluZSBXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGVf
aAotCi0jaWYgIVVTRShDRk5FVFdPUkspCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIldlYkNv
cmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGUuaCIKICNpbmNsdWRlIDxkaXNwYXRjaC9kaXNwYXRj
aC5oPgpAQCAtNTgsNiArNTUsMyBAQCBAaW50ZXJmYWNlIFdlYkNvcmVSZXNvdXJjZUhhbmRsZUFz
T3BlcmF0CiBAaW50ZXJmYWNlIFdlYkNvcmVSZXNvdXJjZUhhbmRsZVdpdGhDcmVkZW50aWFsU3Rv
cmFnZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZSA6IFdlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3Bl
cmF0aW9uUXVldWVEZWxlZ2F0ZQogCiBAZW5kCi0KLSNlbmRpZiAvLyAhVVNFKENGTkVUV09SSykK
LSNlbmRpZiAvLyBXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGVf
aApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291
cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3Bl
cmF0aW9uUXVldWVEZWxlZ2F0ZS5tbQkocmV2aXNpb24gMjA3MDM5KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25R
dWV1ZURlbGVnYXRlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw4ICsyNiw2IEBACiAjaW1wb3J0
ICJjb25maWcuaCIKICNpbXBvcnQgIldlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVl
dWVEZWxlZ2F0ZS5oIgogCi0jaWYgIVVTRShDRk5FVFdPUkspCi0KICNpbXBvcnQgIkF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlLmgiCiAjaW1wb3J0ICJBdXRoZW50aWNhdGlvbk1hYy5oIgogI2ltcG9y
dCAiTG9nZ2luZy5oIgpAQCAtMzI5LDYgKzMyNywzIEBAIC0gKEJPT0wpY29ubmVjdGlvblNob3Vs
ZFVzZUNyZWRlbnRpYWxTdG8KIH0KIAogQGVuZAotCi0jZW5kaWYgLy8gIVVTRShDRk5FVFdPUksp
Ci0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVVUkxS
ZXNwb25zZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L21hYy9XZWJDb3JlVVJMUmVzcG9uc2UubW0JKHJldmlzaW9uIDIwNzAzOSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVVUkxSZXNwb25zZS5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMzI1LDcgKzMyNSw2IEBAIHZvaWQgYWRqdXN0TUlNRVR5cGVJZk5lY2Vzc2Fy
eShDRlVSTFJlc3AKIH0KICNlbmRpZgogCi0jaWYgIVVTRShDRk5FVFdPUkspCiBOU1VSTFJlc3Bv
bnNlICpzeW50aGVzaXplUmVkaXJlY3RSZXNwb25zZUlmTmVjZXNzYXJ5KE5TVVJMUmVxdWVzdCAq
Y3VycmVudFJlcXVlc3QsIE5TVVJMUmVxdWVzdCAqbmV3UmVxdWVzdCwgTlNVUkxSZXNwb25zZSAq
cmVkaXJlY3RSZXNwb25zZSkKIHsKICAgICBpZiAocmVkaXJlY3RSZXNwb25zZSkKQEAgLTMzOSw2
ICszMzgsNSBAQCBOU1VSTFJlc3BvbnNlICpzeW50aGVzaXplUmVkaXJlY3RSZXNwb25zCiAgICAg
TlNEaWN0aW9uYXJ5ICpzeW50aGVzaXplZFJlc3BvbnNlSGVhZGVyRmllbGRzID0gQHsgQCJMb2Nh
dGlvbiI6IFtbbmV3UmVxdWVzdCBVUkxdIGFic29sdXRlU3RyaW5nXSwgQCJDYWNoZS1Db250cm9s
IjogQCJuby1zdG9yZSIgfTsKICAgICByZXR1cm4gW1tbTlNIVFRQVVJMUmVzcG9uc2UgYWxsb2Nd
IGluaXRXaXRoVVJMOltjdXJyZW50UmVxdWVzdCBVUkxdIHN0YXR1c0NvZGU6MzAyIEhUVFBWZXJz
aW9uOihOU1N0cmluZyAqKWtDRkhUVFBWZXJzaW9uMV8xIGhlYWRlckZpZWxkczpzeW50aGVzaXpl
ZFJlc3BvbnNlSGVhZGVyRmllbGRzXSBhdXRvcmVsZWFzZV07CiB9Ci0jZW5kaWYKIAogfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1RlbXBvcmFyeUxpbmtTdHVicy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1RlbXBvcmFyeUxpbmtTdHVi
cy5jcHAJKHJldmlzaW9uIDIwNzAzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9U
ZW1wb3JhcnlMaW5rU3R1YnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw3IEBACiAK
ICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlNTTEtleUdlbmVyYXRvci5o
IgotI2lmICFVU0UoQ0ZORVRXT1JLKQorI2lmICFVU0UoQ0ZVUkxDT05ORUNUSU9OKQogI2luY2x1
ZGUgIkNvb2tpZVN0b3JhZ2UuaCIKICNlbmRpZgogCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIFN0cmluZyBzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcodW5z
aWduZWQsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFVSTCYpIHsgbm90SW1wbGVtZW50ZWQoKTsgcmV0
dXJuIFN0cmluZygpOyB9CiB2b2lkIGdldFN1cHBvcnRlZEtleVNpemVzKFZlY3RvcjxTdHJpbmc+
JikgeyBub3RJbXBsZW1lbnRlZCgpOyB9CiAKLSNpZiAhVVNFKENGTkVUV09SSykKKyNpZiAhVVNF
KENGVVJMQ09OTkVDVElPTikKIHZvaWQgc3RhcnRPYnNlcnZpbmdDb29raWVDaGFuZ2VzKENvb2tp
ZUNoYW5nZUNhbGxiYWNrUHRyKSB7IG5vdEltcGxlbWVudGVkKCk7IH0KIHZvaWQgc3RvcE9ic2Vy
dmluZ0Nvb2tpZUNoYW5nZXMoKSB7IG5vdEltcGxlbWVudGVkKCk7IH0KICNlbmRpZgpJbmRleDog
U291cmNlL1dlYkNvcmUvdGVzdGluZy9qcy9XZWJDb3JlVGVzdFN1cHBvcnRQcmVmaXguaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL2pzL1dlYkNvcmVUZXN0U3VwcG9ydFBy
ZWZpeC5oCShyZXZpc2lvbiAyMDcwMzkpCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL2pzL1dl
YkNvcmVUZXN0U3VwcG9ydFByZWZpeC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjAsOSArMTIwLDcg
QEAKICNkZWZpbmUgT0JTT0xFVEVfQ09MT1JTWU5DX0FQSQogI2VuZGlmCiAjZW5kaWYKLSNpZiBV
U0UoQ0ZORVRXT1JLKQotLyogV2luZG93cyBkb2Vzbid0IGluY2x1ZGUgQ0ZOZXR3b3JrLmggdmlh
IENvcmVTZXJ2aWNlcy5oLCBzbyB3ZSBkbwotICAgaXQgZXhwbGljaXRseSBoZXJlIHRvIG1ha2Ug
V2luZG93cyBtb3JlIGNvbnNpc3RlbnQgd2l0aCBNYWMuICovCisjaWYgVVNFKENGVVJMQ09OTkVD
VElPTikKICNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZOZXR3b3JrLmg+CiAvLyBPbiBXaW5kb3dzLCBk
aXNwYXRjaC5oIG5lZWRzIHRvIGJlIGluY2x1ZGVkIGJlZm9yZSBjZXJ0YWluIENGTmV0d29yayBo
ZWFkZXJzLgogI2luY2x1ZGUgPGRpc3BhdGNoL2Rpc3BhdGNoLmg+CkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShy
ZXZpc2lvbiAyMDcwMzkpCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwzMSBAQAorMjAxNi0xMC0xMCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJp
c3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFJlbW92ZSBkZWFkIG5ldHdvcmtpbmcgY29k
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzMjYz
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9Eb3dubG9hZHMvaW9zL0Rvd25sb2FkSU9TLm1tOiBSZW1vdmVkLgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL0Rvd25sb2Fkcy9tYWMvRG93bmxvYWRNYWMubW06CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0xvYWQuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9tYWMvTmV0
d29ya0xvYWRNYWMubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkOjp3aWxsQ2FjaGVS
ZXNwb25zZUFzeW5jKTogRGVsZXRlZC4KKyAgICAgICAgKiBTaGFyZWQvQXV0aGVudGljYXRpb24v
Y29jb2EvQXV0aGVudGljYXRpb25NYW5hZ2VyQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OkF1
dGhlbnRpY2F0aW9uTWFuYWdlcjo6cmVjZWl2ZWRDcmVkZW50aWFsKToKKyAgICAgICAgKFdlYktp
dDo6QXV0aGVudGljYXRpb25NYW5hZ2VyOjpyZWNlaXZlZFJlcXVlc3RUb0NvbnRpbnVlV2l0aG91
dENyZWRlbnRpYWwpOgorICAgICAgICAoV2ViS2l0OjpBdXRoZW50aWNhdGlvbk1hbmFnZXI6OnJl
Y2VpdmVkQ2FuY2VsbGF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6QXV0aGVudGljYXRpb25NYW5h
Z2VyOjpyZWNlaXZlZFJlcXVlc3RUb1BlcmZvcm1EZWZhdWx0SGFuZGxpbmcpOgorICAgICAgICAo
V2ViS2l0OjpBdXRoZW50aWNhdGlvbk1hbmFnZXI6OnJlY2VpdmVkQ2hhbGxlbmdlUmVqZWN0aW9u
KToKKyAgICAgICAgKiBTaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZSk6Cisg
ICAgICAgICogU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaDoKKyAgICAgICAg
KiBTaGFyZWQvbWFjL1dlYkNvcmVBcmd1bWVudENvZGVyc01hYy5tbToKKyAgICAgICAgKElQQzo6
QXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlcXVlc3Q+OjplbmNvZGVQbGF0Zm9ybURhdGEpOgorICAg
ICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlc291cmNlUmVxdWVzdD46OmRlY29kZVBsYXRmb3Jt
RGF0YSk6CisgICAgICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAy
MDE2LTEwLTEwICBLb25zdGFudGluIFRva2FyZXYgIDxhbm51bGVuQHlhbmRleC5ydT4KIAogICAg
ICAgICBBZGRlZCBmaW5hbCBzcGVjaWZpZXIgdG8gV2ViSW5zcGVjdG9yU2VydmVyIGFuZCB0byBp
dHMgb3ZlcnJpZGRlbiBtZXRob2RzCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrTG9hZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtMb2FkLmgJKHJldmlzaW9uIDIwNzAzOSkKKysrIFNvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmgJKHdvcmtpbmcgY29weSkKQEAgLTc5LDEyICs3OSw4
IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhQXJyYXkoV2ViQ29yZTo6UmVzb3Vy
Y2VIYW5kbGUqLCBDRkFycmF5UmVmKSBvdmVycmlkZTsKICNlbmRpZgogI2lmIFBMQVRGT1JNKENP
Q09BKQotI2lmIFVTRShDRk5FVFdPUkspCi0gICAgdm9pZCB3aWxsQ2FjaGVSZXNwb25zZUFzeW5j
KFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwgQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZikgb3ZlcnJp
ZGU7Ci0jZWxzZQogICAgIHZvaWQgd2lsbENhY2hlUmVzcG9uc2VBc3luYyhXZWJDb3JlOjpSZXNv
dXJjZUhhbmRsZSosIE5TQ2FjaGVkVVJMUmVzcG9uc2UgKikgb3ZlcnJpZGU7CiAjZW5kaWYKLSNl
bmRpZgogCiAjaWYgVVNFKFBST1RFQ1RJT05fU1BBQ0VfQVVUSF9DQUxMQkFDSykKICAgICB2b2lk
IGNvbnRpbnVlQ2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShib29sKTsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3du
bG9hZC5oCShyZXZpc2lvbiAyMDcwMzkpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9Eb3dubG9hZHMvRG93bmxvYWQuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsMTAgKzQ3LDYgQEAg
T0JKQ19DTEFTUyBXS0Rvd25sb2FkQXNEZWxlZ2F0ZTsKICNlbmRpZgogI2VuZGlmCiAKLSNpZiBV
U0UoQ0ZORVRXT1JLKQotI2luY2x1ZGUgPENGTmV0d29yay9DRlVSTERvd25sb2FkUHJpdi5oPgot
I2VuZGlmCi0KIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgRGF0YVJlZmVyZW5jZTsKIH0KQEAgLTEz
OSw5ICsxMzUsNiBAQCBwcml2YXRlOgogICAgIFJldGFpblB0cjxXS0Rvd25sb2FkQXNEZWxlZ2F0
ZT4gbV9kZWxlZ2F0ZTsKICNlbmRpZgogI2VuZGlmCi0jaWYgVVNFKENGTkVUV09SSykKLSAgICBS
ZXRhaW5QdHI8Q0ZVUkxEb3dubG9hZFJlZj4gbV9kb3dubG9hZDsKLSNlbmRpZgogICAgIHN0ZDo6
dW5pcXVlX3B0cjxXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNsaWVudD4gbV9kb3dubG9hZENsaWVu
dDsKICAgICBSZWZQdHI8V2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU+IG1fcmVzb3VyY2VIYW5kbGU7
CiAgICAgU3RyaW5nIG1fc3VnZ2VzdGVkTmFtZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL0Rvd25sb2Fkcy9pb3MvRG93bmxvYWRJT1MubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL2lvcy9Eb3dubG9hZElPUy5tbQko
cmV2aXNpb24gMjA3MDM5KQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRG93bmxv
YWRzL2lvcy9Eb3dubG9hZElPUy5tbQkobm9uZXhpc3RlbnQpCkBAIC0xLDE2MiArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJEb3dubG9hZC5oIgotCi0j
aWYgVVNFKENGTkVUV09SSykgJiYgIVVTRShORVRXT1JLX1NFU1NJT04pCi0KLSNpbXBvcnQgIkRh
dGFSZWZlcmVuY2UuaCIKLSNpbXBvcnQgPENGTmV0d29yay9DRlVSTERvd25sb2FkLmg+Ci0jaW1w
b3J0IDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1Jlc291cmNl
RXJyb3IuaD4KLSNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VIYW5kbGUuaD4KLSNpbXBvcnQgPFdl
YkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgotI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgotI2lt
cG9ydCA8d3RmL1J1bkxvb3AuaD4KLQotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KLW5hbWVz
cGFjZSBXZWJLaXQgewotCi0vLyBGSVhNRTogSWYgcG9zc2libGUsIHdlIHNob3VsZCBjb25zaWRl
ciBtb3Zpbmcgc29tZSBjYWxsYmFja3Mgb2ZmIHRoZSBtYWluIHRocmVhZCBvciBhdCBsZWFzdAot
Ly8gbWFraW5nIHRoZW0gYXN5bmNob25vdXMgY2FsbHMuCi1zdGF0aWMgdm9pZCBkaXNwYXRjaE9u
TWFpblRocmVhZCh2b2lkKF5ibG9jaykoKSkKLXsKLSAgICBpZiAoUnVuTG9vcDo6aXNNYWluKCkp
IHsKLSAgICAgICAgYmxvY2soKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGRpc3Bh
dGNoX3N5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgYmxvY2spOwotfQotCi1zdGF0aWMg
aW5saW5lIERvd25sb2FkKiB0b0Rvd25sb2FkKGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCi17Ci0g
ICAgcmV0dXJuIHN0YXRpY19jYXN0PERvd25sb2FkKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50
SW5mbykpOwotfQotCi1zdGF0aWMgdm9pZCBzZXRVcERvd25sb2FkQ2xpZW50KENGVVJMRG93bmxv
YWRDbGllbnQmIGNsaWVudCwgRG93bmxvYWQmIGRvd25sb2FkKQotewotICAgIG1lbXNldCgmY2xp
ZW50LCAwLCBzaXplb2YoY2xpZW50KSk7Ci0gICAgY2xpZW50LmNsaWVudEluZm8gPSAmZG93bmxv
YWQ7Ci0KLSAgICBjbGllbnQuZGlkU3RhcnQgPSBbXShDRlVSTERvd25sb2FkUmVmLCBjb25zdCB2
b2lkKiBjbGllbnRJbmZvKSB7Ci0gICAgICAgIGRpc3BhdGNoT25NYWluVGhyZWFkKF57Ci0gICAg
ICAgICAgICB0b0Rvd25sb2FkKGNsaWVudEluZm8pLT5kaWRTdGFydCgpOwotICAgICAgICB9KTsK
LSAgICB9OwotCi0gICAgY2xpZW50LndpbGxTZW5kUmVxdWVzdCA9IFtdKENGVVJMRG93bmxvYWRS
ZWYsIENGVVJMUmVxdWVzdFJlZiByZXF1ZXN0LCBDRlVSTFJlc3BvbnNlUmVmLCBjb25zdCB2b2lk
KikgLT4gQ0ZVUkxSZXF1ZXN0UmVmIHsKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PENGVVJM
UmVxdWVzdFJlZj4oQ0ZSZXRhaW4ocmVxdWVzdCkpOwotICAgIH07Ci0KLSAgICBjbGllbnQuZGlk
UmVjZWl2ZVJlc3BvbnNlID0gW10oQ0ZVUkxEb3dubG9hZFJlZiwgQ0ZVUkxSZXNwb25zZVJlZiBy
ZXNwb25zZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykgewotICAgICAgICBkaXNwYXRjaE9uTWFp
blRocmVhZCheewotICAgICAgICAgICAgdG9Eb3dubG9hZChjbGllbnRJbmZvKS0+ZGlkUmVjZWl2
ZVJlc3BvbnNlKHJlc3BvbnNlKTsKLSAgICAgICAgfSk7Ci0gICAgfTsKLQotICAgIGNsaWVudC5k
aWRSZWNlaXZlRGF0YSA9IFtdKENGVVJMRG93bmxvYWRSZWYsIENGSW5kZXggbGVuZ3RoLCBjb25z
dCB2b2lkKiBjbGllbnRJbmZvKSB7Ci0gICAgICAgIGRpc3BhdGNoT25NYWluVGhyZWFkKF57Ci0g
ICAgICAgICAgICB0b0Rvd25sb2FkKGNsaWVudEluZm8pLT5kaWRSZWNlaXZlRGF0YShsZW5ndGgp
OwotICAgICAgICB9KTsKLSAgICB9OwotCi0gICAgY2xpZW50LnNob3VsZERlY29kZURhdGFPZk1J
TUVUeXBlID0gW10oQ0ZVUkxEb3dubG9hZFJlZiwgQ0ZTdHJpbmdSZWYgZW5jb2RpbmdUeXBlLCBj
b25zdCB2b2lkKiBjbGllbnRJbmZvKSAtPiBCb29sZWFuIHsKLSAgICAgICAgX19ibG9jayBCT09M
IHJldHVyblZhbHVlID0gTk87Ci0gICAgICAgIGRpc3BhdGNoT25NYWluVGhyZWFkKF57Ci0gICAg
ICAgICAgICByZXR1cm5WYWx1ZSA9IHRvRG93bmxvYWQoY2xpZW50SW5mbyktPnNob3VsZERlY29k
ZVNvdXJjZURhdGFPZk1JTUVUeXBlKGVuY29kaW5nVHlwZSk7Ci0gICAgICAgIH0pOwotICAgICAg
ICByZXR1cm4gcmV0dXJuVmFsdWU7Ci0gICAgfTsKLQotICAgIGNsaWVudC5kZWNpZGVEZXN0aW5h
dGlvbldpdGhTdWdnZXN0ZWRPYmplY3ROYW1lID0gW10oQ0ZVUkxEb3dubG9hZFJlZiBkb3dubG9h
ZFJlZiwgQ0ZTdHJpbmdSZWYgb2JqZWN0TmFtZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykgewot
ICAgICAgICBkaXNwYXRjaE9uTWFpblRocmVhZCheewotICAgICAgICAgICAgYm9vbCBhbGxvd092
ZXJ3cml0ZTsKLSAgICAgICAgICAgIFN0cmluZyBkZXN0aW5hdGlvbiA9IHRvRG93bmxvYWQoY2xp
ZW50SW5mbyktPmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKG9iamVjdE5h
bWUsIGFsbG93T3ZlcndyaXRlKTsKLSAgICAgICAgICAgIGlmICghZGVzdGluYXRpb24uaXNOdWxs
KCkpCi0gICAgICAgICAgICAgICAgQ0ZVUkxEb3dubG9hZFNldERlc3RpbmF0aW9uKGRvd25sb2Fk
UmVmLCByZWludGVycHJldF9jYXN0PENGVVJMUmVmPihbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOmRl
c3RpbmF0aW9uXSksIGFsbG93T3ZlcndyaXRlKTsKLSAgICAgICAgfSk7Ci0gICAgfTsKLQotICAg
IGNsaWVudC5kaWRDcmVhdGVEZXN0aW5hdGlvbiA9IFtdKENGVVJMRG93bmxvYWRSZWYsIENGVVJM
UmVmIHBhdGgsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pIHsKLSAgICAgICAgZGlzcGF0Y2hPbk1h
aW5UaHJlYWQoXnsKLSAgICAgICAgICAgIHRvRG93bmxvYWQoY2xpZW50SW5mbyktPmRpZENyZWF0
ZURlc3RpbmF0aW9uKENGVVJMR2V0U3RyaW5nKHBhdGgpKTsKLSAgICAgICAgfSk7Ci0gICAgfTsK
LQotICAgIGNsaWVudC5kaWRGaW5pc2ggPSBbXShDRlVSTERvd25sb2FkUmVmLCBjb25zdCB2b2lk
KiBjbGllbnRJbmZvKSB7Ci0gICAgICAgIGRpc3BhdGNoT25NYWluVGhyZWFkKF57Ci0gICAgICAg
ICAgICB0b0Rvd25sb2FkKGNsaWVudEluZm8pLT5kaWRGaW5pc2goKTsKLSAgICAgICAgfSk7Ci0g
ICAgfTsKLQotICAgIGNsaWVudC5kaWRGYWlsID0gW10oQ0ZVUkxEb3dubG9hZFJlZiBkb3dubG9h
ZFJlZiwgQ0ZFcnJvclJlZiBlcnJvciwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykgewotICAgICAg
ICBkaXNwYXRjaE9uTWFpblRocmVhZCheewotICAgICAgICAgICAgYXV0byByZXN1bWVEYXRhID0g
YWRvcHRDRihDRlVSTERvd25sb2FkQ29weVJlc3VtZURhdGEoZG93bmxvYWRSZWYpKTsKLSAgICAg
ICAgICAgIHRvRG93bmxvYWQoY2xpZW50SW5mbyktPmRpZEZhaWwoZXJyb3IsIElQQzo6RGF0YVJl
ZmVyZW5jZShyZXN1bWVEYXRhID8gQ0ZEYXRhR2V0Qnl0ZVB0cihyZXN1bWVEYXRhLmdldCgpKSA6
IG51bGxwdHIsIHJlc3VtZURhdGEgPyBDRkRhdGFHZXRMZW5ndGgocmVzdW1lRGF0YS5nZXQoKSkg
OiAwKSk7Ci0gICAgICAgIH0pOwotICAgIH07Ci19Ci0KLXZvaWQgRG93bmxvYWQ6OnN0YXJ0TmV0
d29ya0xvYWQoKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgRG93bmxvYWQ6
OnJlc3VtZShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBT
YW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0K
LXZvaWQgRG93bmxvYWQ6OnN0YXJ0TmV0d29ya0xvYWRXaXRoSGFuZGxlKFJlc291cmNlSGFuZGxl
KiBoYW5kbGUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQotewotICAgIENGVVJM
RG93bmxvYWRDbGllbnQgY2xpZW50OwotICAgIHNldFVwRG93bmxvYWRDbGllbnQoY2xpZW50LCAq
dGhpcyk7Ci0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAotI3ByYWdtYSBjbGFuZyBkaWFn
bm9zdGljIGlnbm9yZWQgIi1XZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMiCi0gICAgbV9kb3dubG9h
ZCA9IGFkb3B0Q0YoQ0ZVUkxEb3dubG9hZENyZWF0ZUFuZFN0YXJ0V2l0aExvYWRpbmdDb25uZWN0
aW9uKE5VTEwsIGhhbmRsZS0+cmVsZWFzZUNvbm5lY3Rpb25Gb3JEb3dubG9hZCgpLmdldCgpLCBt
X3JlcXVlc3QuY2ZVUkxSZXF1ZXN0KFVwZGF0ZUhUVFBCb2R5KSwgcmVzcG9uc2UuY2ZVUkxSZXNw
b25zZSgpLCAmY2xpZW50KSk7Ci0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCi19Ci0KLXZv
aWQgRG93bmxvYWQ6OmNhbmNlbE5ldHdvcmtMb2FkKCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgp
OwotfQotCi12b2lkIERvd25sb2FkOjpwbGF0Zm9ybUludmFsaWRhdGUoKQotewotICAgIG5vdElt
cGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgRG93bmxvYWQ6OnBsYXRmb3JtRGlkRmluaXNoKCkKLXsK
LSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2Vu
ZGlmIC8vIFVTRShDRk5FVFdPUkspICYmICFVU0UoTkVUV09SS19TRVNTSU9OKQpJbmRleDogU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL2lvcy9Eb3dubG9hZElPUy5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvaW9z
L0Rvd25sb2FkSU9TLm1tCShyZXZpc2lvbiAyMDcwMzkpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9Eb3dubG9hZHMvaW9zL0Rvd25sb2FkSU9TLm1tCShub25leGlzdGVudCkKQEAg
LTEsMTYyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQg
IkRvd25sb2FkLmgiCi0KLSNpZiBVU0UoQ0ZORVRXT1JLKSAmJiAhVVNFKE5FVFdPUktfU0VTU0lP
TikKLQotI2ltcG9ydCAiRGF0YVJlZmVyZW5jZS5oIgotI2ltcG9ydCA8Q0ZOZXR3b3JrL0NGVVJM
RG93bmxvYWQuaD4KLSNpbXBvcnQgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KLSNpbXBvcnQg
PFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgotI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZUhhbmRs
ZS5oPgotI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+Ci0jaW1wb3J0IDx3dGYv
UmV0YWluUHRyLmg+Ci0jaW1wb3J0IDx3dGYvUnVuTG9vcC5oPgotCi11c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLS8vIEZJWE1FOiBJZiBwb3NzaWJsZSwg
d2Ugc2hvdWxkIGNvbnNpZGVyIG1vdmluZyBzb21lIGNhbGxiYWNrcyBvZmYgdGhlIG1haW4gdGhy
ZWFkIG9yIGF0IGxlYXN0Ci0vLyBtYWtpbmcgdGhlbSBhc3luY2hvbm91cyBjYWxscy4KLXN0YXRp
YyB2b2lkIGRpc3BhdGNoT25NYWluVGhyZWFkKHZvaWQoXmJsb2NrKSgpKQotewotICAgIGlmIChS
dW5Mb29wOjppc01haW4oKSkgewotICAgICAgICBibG9jaygpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotCi0gICAgZGlzcGF0Y2hfc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBibG9j
ayk7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgRG93bmxvYWQqIHRvRG93bmxvYWQoY29uc3Qgdm9pZCog
Y2xpZW50SW5mbykKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RG93bmxvYWQqPihjb25zdF9j
YXN0PHZvaWQqPihjbGllbnRJbmZvKSk7Ci19Ci0KLXN0YXRpYyB2b2lkIHNldFVwRG93bmxvYWRD
bGllbnQoQ0ZVUkxEb3dubG9hZENsaWVudCYgY2xpZW50LCBEb3dubG9hZCYgZG93bmxvYWQpCi17
Ci0gICAgbWVtc2V0KCZjbGllbnQsIDAsIHNpemVvZihjbGllbnQpKTsKLSAgICBjbGllbnQuY2xp
ZW50SW5mbyA9ICZkb3dubG9hZDsKLQotICAgIGNsaWVudC5kaWRTdGFydCA9IFtdKENGVVJMRG93
bmxvYWRSZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pIHsKLSAgICAgICAgZGlzcGF0Y2hPbk1h
aW5UaHJlYWQoXnsKLSAgICAgICAgICAgIHRvRG93bmxvYWQoY2xpZW50SW5mbyktPmRpZFN0YXJ0
KCk7Ci0gICAgICAgIH0pOwotICAgIH07Ci0KLSAgICBjbGllbnQud2lsbFNlbmRSZXF1ZXN0ID0g
W10oQ0ZVUkxEb3dubG9hZFJlZiwgQ0ZVUkxSZXF1ZXN0UmVmIHJlcXVlc3QsIENGVVJMUmVzcG9u
c2VSZWYsIGNvbnN0IHZvaWQqKSAtPiBDRlVSTFJlcXVlc3RSZWYgewotICAgICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8Q0ZVUkxSZXF1ZXN0UmVmPihDRlJldGFpbihyZXF1ZXN0KSk7Ci0gICAgfTsK
LQotICAgIGNsaWVudC5kaWRSZWNlaXZlUmVzcG9uc2UgPSBbXShDRlVSTERvd25sb2FkUmVmLCBD
RlVSTFJlc3BvbnNlUmVmIHJlc3BvbnNlLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKSB7Ci0gICAg
ICAgIGRpc3BhdGNoT25NYWluVGhyZWFkKF57Ci0gICAgICAgICAgICB0b0Rvd25sb2FkKGNsaWVu
dEluZm8pLT5kaWRSZWNlaXZlUmVzcG9uc2UocmVzcG9uc2UpOwotICAgICAgICB9KTsKLSAgICB9
OwotCi0gICAgY2xpZW50LmRpZFJlY2VpdmVEYXRhID0gW10oQ0ZVUkxEb3dubG9hZFJlZiwgQ0ZJ
bmRleCBsZW5ndGgsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pIHsKLSAgICAgICAgZGlzcGF0Y2hP
bk1haW5UaHJlYWQoXnsKLSAgICAgICAgICAgIHRvRG93bmxvYWQoY2xpZW50SW5mbyktPmRpZFJl
Y2VpdmVEYXRhKGxlbmd0aCk7Ci0gICAgICAgIH0pOwotICAgIH07Ci0KLSAgICBjbGllbnQuc2hv
dWxkRGVjb2RlRGF0YU9mTUlNRVR5cGUgPSBbXShDRlVSTERvd25sb2FkUmVmLCBDRlN0cmluZ1Jl
ZiBlbmNvZGluZ1R5cGUsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pIC0+IEJvb2xlYW4gewotICAg
ICAgICBfX2Jsb2NrIEJPT0wgcmV0dXJuVmFsdWUgPSBOTzsKLSAgICAgICAgZGlzcGF0Y2hPbk1h
aW5UaHJlYWQoXnsKLSAgICAgICAgICAgIHJldHVyblZhbHVlID0gdG9Eb3dubG9hZChjbGllbnRJ
bmZvKS0+c2hvdWxkRGVjb2RlU291cmNlRGF0YU9mTUlNRVR5cGUoZW5jb2RpbmdUeXBlKTsKLSAg
ICAgICAgfSk7Ci0gICAgICAgIHJldHVybiByZXR1cm5WYWx1ZTsKLSAgICB9OwotCi0gICAgY2xp
ZW50LmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZE9iamVjdE5hbWUgPSBbXShDRlVSTERv
d25sb2FkUmVmIGRvd25sb2FkUmVmLCBDRlN0cmluZ1JlZiBvYmplY3ROYW1lLCBjb25zdCB2b2lk
KiBjbGllbnRJbmZvKSB7Ci0gICAgICAgIGRpc3BhdGNoT25NYWluVGhyZWFkKF57Ci0gICAgICAg
ICAgICBib29sIGFsbG93T3ZlcndyaXRlOwotICAgICAgICAgICAgU3RyaW5nIGRlc3RpbmF0aW9u
ID0gdG9Eb3dubG9hZChjbGllbnRJbmZvKS0+ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVk
RmlsZW5hbWUob2JqZWN0TmFtZSwgYWxsb3dPdmVyd3JpdGUpOwotICAgICAgICAgICAgaWYgKCFk
ZXN0aW5hdGlvbi5pc051bGwoKSkKLSAgICAgICAgICAgICAgICBDRlVSTERvd25sb2FkU2V0RGVz
dGluYXRpb24oZG93bmxvYWRSZWYsIHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZVUkxSZWY+KFtOU1VSTCBm
aWxlVVJMV2l0aFBhdGg6ZGVzdGluYXRpb25dKSwgYWxsb3dPdmVyd3JpdGUpOwotICAgICAgICB9
KTsKLSAgICB9OwotCi0gICAgY2xpZW50LmRpZENyZWF0ZURlc3RpbmF0aW9uID0gW10oQ0ZVUkxE
b3dubG9hZFJlZiwgQ0ZVUkxSZWYgcGF0aCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykgewotICAg
ICAgICBkaXNwYXRjaE9uTWFpblRocmVhZCheewotICAgICAgICAgICAgdG9Eb3dubG9hZChjbGll
bnRJbmZvKS0+ZGlkQ3JlYXRlRGVzdGluYXRpb24oQ0ZVUkxHZXRTdHJpbmcocGF0aCkpOwotICAg
ICAgICB9KTsKLSAgICB9OwotCi0gICAgY2xpZW50LmRpZEZpbmlzaCA9IFtdKENGVVJMRG93bmxv
YWRSZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pIHsKLSAgICAgICAgZGlzcGF0Y2hPbk1haW5U
aHJlYWQoXnsKLSAgICAgICAgICAgIHRvRG93bmxvYWQoY2xpZW50SW5mbyktPmRpZEZpbmlzaCgp
OwotICAgICAgICB9KTsKLSAgICB9OwotCi0gICAgY2xpZW50LmRpZEZhaWwgPSBbXShDRlVSTERv
d25sb2FkUmVmIGRvd25sb2FkUmVmLCBDRkVycm9yUmVmIGVycm9yLCBjb25zdCB2b2lkKiBjbGll
bnRJbmZvKSB7Ci0gICAgICAgIGRpc3BhdGNoT25NYWluVGhyZWFkKF57Ci0gICAgICAgICAgICBh
dXRvIHJlc3VtZURhdGEgPSBhZG9wdENGKENGVVJMRG93bmxvYWRDb3B5UmVzdW1lRGF0YShkb3du
bG9hZFJlZikpOwotICAgICAgICAgICAgdG9Eb3dubG9hZChjbGllbnRJbmZvKS0+ZGlkRmFpbChl
cnJvciwgSVBDOjpEYXRhUmVmZXJlbmNlKHJlc3VtZURhdGEgPyBDRkRhdGFHZXRCeXRlUHRyKHJl
c3VtZURhdGEuZ2V0KCkpIDogbnVsbHB0ciwgcmVzdW1lRGF0YSA/IENGRGF0YUdldExlbmd0aChy
ZXN1bWVEYXRhLmdldCgpKSA6IDApKTsKLSAgICAgICAgfSk7Ci0gICAgfTsKLX0KLQotdm9pZCBE
b3dubG9hZDo6c3RhcnROZXR3b3JrTG9hZCgpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0K
LQotdm9pZCBEb3dubG9hZDo6cmVzdW1lKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGNvbnN0
IFN0cmluZyYsIGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYpCi17Ci0gICAgbm90SW1w
bGVtZW50ZWQoKTsKLX0KLQotdm9pZCBEb3dubG9hZDo6c3RhcnROZXR3b3JrTG9hZFdpdGhIYW5k
bGUoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9u
c2UpCi17Ci0gICAgQ0ZVUkxEb3dubG9hZENsaWVudCBjbGllbnQ7Ci0gICAgc2V0VXBEb3dubG9h
ZENsaWVudChjbGllbnQsICp0aGlzKTsKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCi0j
cHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdkZXByZWNhdGVkLWRlY2xhcmF0aW9u
cyIKLSAgICBtX2Rvd25sb2FkID0gYWRvcHRDRihDRlVSTERvd25sb2FkQ3JlYXRlQW5kU3RhcnRX
aXRoTG9hZGluZ0Nvbm5lY3Rpb24oTlVMTCwgaGFuZGxlLT5yZWxlYXNlQ29ubmVjdGlvbkZvckRv
d25sb2FkKCkuZ2V0KCksIG1fcmVxdWVzdC5jZlVSTFJlcXVlc3QoVXBkYXRlSFRUUEJvZHkpLCBy
ZXNwb25zZS5jZlVSTFJlc3BvbnNlKCksICZjbGllbnQpKTsKLSNwcmFnbWEgY2xhbmcgZGlhZ25v
c3RpYyBwb3AKLX0KLQotdm9pZCBEb3dubG9hZDo6Y2FuY2VsTmV0d29ya0xvYWQoKQotewotICAg
IG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgRG93bmxvYWQ6OnBsYXRmb3JtSW52YWxpZGF0
ZSgpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBEb3dubG9hZDo6cGxhdGZv
cm1EaWRGaW5pc2goKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYktpdAotCi0jZW5kaWYgLy8gVVNFKENGTkVUV09SSykgJiYgIVVTRShORVRXT1JLX1NF
U1NJT04pCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvbWFj
L0Rvd25sb2FkTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9j
ZXNzL0Rvd25sb2Fkcy9tYWMvRG93bmxvYWRNYWMubW0JKHJldmlzaW9uIDIwNzAzOSkKKysrIFNv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9tYWMvRG93bmxvYWRNYWMubW0J
KHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2lt
cG9ydCAiRG93bmxvYWQuaCIKIAotI2lmICFVU0UoQ0ZORVRXT1JLKSAmJiAhVVNFKE5FVFdPUktf
U0VTU0lPTikKKyNpZiAhVVNFKE5FVFdPUktfU0VTU0lPTikKIAogI2ltcG9ydCA8V2ViQ29yZS9B
dXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9BdXRoZW50aWNhdGlv
bk1hYy5oPgpAQCAtMjcyLDQgKzI3Miw0IEBAIC0gKHZvaWQpZG93bmxvYWQ6KE5TVVJMRG93bmxv
YWQgKilkb3dubG8KIAogQGVuZAogCi0jZW5kaWYgLy8gIVVTRShDRk5FVFdPUkspICYmICFVU0Uo
TkVUV09SS19TRVNTSU9OKQorI2VuZGlmIC8vICFVU0UoTkVUV09SS19TRVNTSU9OKQpJbmRleDog
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtMb2FkTWFjLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL21hYy9OZXR3b3JrTG9hZE1h
Yy5tbQkocmV2aXNpb24gMjA3MDM5KQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mv
bWFjL05ldHdvcmtMb2FkTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw3ICsyNCw2IEBACiAg
Ki8KIAogI2ltcG9ydCAiY29uZmlnLmgiCi0KICNpbXBvcnQgIk5ldHdvcmtMb2FkLmgiCiAKICNp
bXBvcnQgPFdlYkNvcmUvQ0ZOZXR3b3JrU1BJLmg+CkBAIC0zNCwxNyArMzMsNiBAQCBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLSNpZiBVU0UoQ0ZORVRX
T1JLKQotCi12b2lkIE5ldHdvcmtMb2FkOjp3aWxsQ2FjaGVSZXNwb25zZUFzeW5jKFJlc291cmNl
SGFuZGxlKiBoYW5kbGUsIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYgY2ZSZXNwb25zZSkKLXsKLSAg
ICBBU1NFUlRfVU5VU0VEKGhhbmRsZSwgaGFuZGxlID09IG1faGFuZGxlKTsKLQotICAgIG1faGFu
ZGxlLT5jb250aW51ZVdpbGxDYWNoZVJlc3BvbnNlKGNmUmVzcG9uc2UpOwotfQotCi0jZWxzZQot
CiB2b2lkIE5ldHdvcmtMb2FkOjp3aWxsQ2FjaGVSZXNwb25zZUFzeW5jKFJlc291cmNlSGFuZGxl
KiBoYW5kbGUsIE5TQ2FjaGVkVVJMUmVzcG9uc2UgKm5zUmVzcG9uc2UpCiB7CiAgICAgQVNTRVJU
X1VOVVNFRChoYW5kbGUsIGhhbmRsZSA9PSBtX2hhbmRsZSk7CkBAIC01Miw2ICs0MCw0IEBAIHZv
aWQgTmV0d29ya0xvYWQ6OndpbGxDYWNoZVJlc3BvbnNlQXN5bmMKICAgICBtX2hhbmRsZS0+Y29u
dGludWVXaWxsQ2FjaGVSZXNwb25zZShuc1Jlc3BvbnNlKTsKIH0KIAotI2VuZGlmIC8vICFVU0Uo
Q0ZORVRXT1JLKQotCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAJKHJl
dmlzaW9uIDIwNzAzOSkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA0LDcgKzEwNCw3IEBAIHZvaWQg
V2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2QKICAgICBlbmNvZGVyIDw8IHRleHRD
aGVja2VyU3RhdGU7CiAgICAgZW5jb2RlciA8PCBmdWxsS2V5Ym9hcmRBY2Nlc3NFbmFibGVkOwog
ICAgIGVuY29kZXIgPDwgZGVmYXVsdFJlcXVlc3RUaW1lb3V0SW50ZXJ2YWw7Ci0jaWYgUExBVEZP
Uk0oQ09DT0EpIHx8IFVTRShDRk5FVFdPUkspCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgZW5j
b2RlciA8PCB1aVByb2Nlc3NCdW5kbGVJZGVudGlmaWVyOwogI2VuZGlmCiAjaWYgUExBVEZPUk0o
Q09DT0EpCkBAIC0yNDAsNyArMjQwLDcgQEAgYm9vbCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzOjpkZWNvZAogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShwYXJhbWV0ZXJzLmRlZmF1bHRSZXF1ZXN0VGltZW91dEludGVydmFsKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwotI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZORVRXT1JLKQorI2lmIFBM
QVRGT1JNKENPQ09BKQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy51aVByb2Nl
c3NCdW5kbGVJZGVudGlmaWVyKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogI2VuZGlmCkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzLmgJKHJldmlzaW9uIDIwNzAzOSkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMyw3ICsxMjMs
NyBAQCBzdHJ1Y3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyB7CiAKICAgICBkb3VibGUg
ZGVmYXVsdFJlcXVlc3RUaW1lb3V0SW50ZXJ2YWw7CiAKLSNpZiBQTEFURk9STShDT0NPQSkgfHwg
VVNFKENGTkVUV09SSykKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICBTdHJpbmcgdWlQcm9jZXNz
QnVuZGxlSWRlbnRpZmllcjsKICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
QXV0aGVudGljYXRpb24vY29jb2EvQXV0aGVudGljYXRpb25NYW5hZ2VyQ29jb2EubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL2NvY29hL0F1dGhl
bnRpY2F0aW9uTWFuYWdlckNvY29hLm1tCShyZXZpc2lvbiAyMDcwMzkpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvQXV0aGVudGljYXRpb24vY29jb2EvQXV0aGVudGljYXRpb25NYW5hZ2VyQ29j
b2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTMyLDM3ICszMiwyNyBAQCBuYW1lc3BhY2UgV2ViS2l0
IHsKIAogdm9pZCBBdXRoZW50aWNhdGlvbk1hbmFnZXI6OnJlY2VpdmVkQ3JlZGVudGlhbChjb25z
dCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UsIGNvbnN0
IENyZWRlbnRpYWwmIGNyZWRlbnRpYWwpCiB7Ci0jaWYgIVVTRShDRk5FVFdPUkspCiAgICAgW2F1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLnNlbmRlcigpIHVzZUNyZWRlbnRpYWw6Y3JlZGVudGlhbC5u
c0NyZWRlbnRpYWwoKSBmb3JBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTphdXRoZW50aWNhdGlvbkNo
YWxsZW5nZS5uc1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCldOwotI2VuZGlmCiB9CiAKIHZv
aWQgQXV0aGVudGljYXRpb25NYW5hZ2VyOjpyZWNlaXZlZFJlcXVlc3RUb0NvbnRpbnVlV2l0aG91
dENyZWRlbnRpYWwoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlKQogewotI2lmICFVU0UoQ0ZORVRXT1JLKQogICAgIFthdXRoZW50aWNhdGlvbkNo
YWxsZW5nZS5zZW5kZXIoKSBjb250aW51ZVdpdGhvdXRDcmVkZW50aWFsRm9yQXV0aGVudGljYXRp
b25DaGFsbGVuZ2U6YXV0aGVudGljYXRpb25DaGFsbGVuZ2UubnNVUkxBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSgpXTsKLSNlbmRpZgogfQogCiB2b2lkIEF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6cmVj
ZWl2ZWRDYW5jZWxsYXRpb24oY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlKQogewotI2lmICFVU0UoQ0ZORVRXT1JLKQogICAgIFthdXRoZW50aWNh
dGlvbkNoYWxsZW5nZS5zZW5kZXIoKSBjYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTphdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZS5uc1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCldOwotI2Vu
ZGlmCiB9CiAKIHZvaWQgQXV0aGVudGljYXRpb25NYW5hZ2VyOjpyZWNlaXZlZFJlcXVlc3RUb1Bl
cmZvcm1EZWZhdWx0SGFuZGxpbmcoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlKQogewotI2lmICFVU0UoQ0ZORVRXT1JLKQogICAgIFthdXRoZW50
aWNhdGlvbkNoYWxsZW5nZS5zZW5kZXIoKSBwZXJmb3JtRGVmYXVsdEhhbmRsaW5nRm9yQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2U6YXV0aGVudGljYXRpb25DaGFsbGVuZ2UubnNVUkxBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSgpXTsKLSNlbmRpZgogfQogCiB2b2lkIEF1dGhlbnRpY2F0aW9uTWFuYWdl
cjo6cmVjZWl2ZWRDaGFsbGVuZ2VSZWplY3Rpb24oY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UmIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKQogewotI2lmICFVU0UoQ0ZORVRXT1JLKQogICAg
IFthdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5zZW5kZXIoKSByZWplY3RQcm90ZWN0aW9uU3BhY2VB
bmRDb250aW51ZVdpdGhDaGFsbGVuZ2U6YXV0aGVudGljYXRpb25DaGFsbGVuZ2UubnNVUkxBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSgpXTsKLSNlbmRpZgogfQogCiB9CkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvbWFjL1dlYkNvcmVBcmd1bWVudENvZGVyc01hYy5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1dlYkNvcmVBcmd1bWVudENvZGVyc01hYy5tbQko
cmV2aXNpb24gMjA3MDM5KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9XZWJDb3JlQXJn
dW1lbnRDb2RlcnNNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTM5LDEwICszOSw2IEBACiAjaW1w
b3J0IDxXZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4KICNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VS
ZXF1ZXN0Lmg+CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotI2ltcG9ydCA8Q0ZOZXR3b3JrL0NGVVJM
UmVxdWVzdC5oPgotI2VuZGlmCi0KICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VU
KQogI2ltcG9ydCA8V2ViQ29yZS9BVkZvdW5kYXRpb25TUEkuaD4KICNpbXBvcnQgPFdlYkNvcmUv
TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQuaD4KQEAgLTU3LDM2ICs1Myw2IEBAIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgSVBDIHsKIAotI2lmIFVTRShDRk5FVFdPUksp
Ci12b2lkIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VSZXF1ZXN0Pjo6ZW5jb2RlUGxhdGZvcm1EYXRh
KEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0
KQotewotICAgIFJldGFpblB0cjxDRlVSTFJlcXVlc3RSZWY+IHJlcXVlc3RUb1NlcmlhbGl6ZSA9
IHJlc291cmNlUmVxdWVzdC5jZlVSTFJlcXVlc3QoRG9Ob3RVcGRhdGVIVFRQQm9keSk7Ci0KLSAg
ICBib29sIHJlcXVlc3RJc1ByZXNlbnQgPSByZXF1ZXN0VG9TZXJpYWxpemU7Ci0gICAgZW5jb2Rl
ciA8PCByZXF1ZXN0SXNQcmVzZW50OwotCi0gICAgaWYgKCFyZXF1ZXN0SXNQcmVzZW50KQotICAg
ICAgICByZXR1cm47Ci0KLSAgICAvLyBXZSBkb24ndCBzZW5kIEhUVFAgYm9keSBvdmVyIElQQyBm
b3IgYmV0dGVyIHBlcmZvcm1hbmNlLgotICAgIC8vIEFsc28sIGl0J3Mgbm90IGFsd2F5cyBwb3Nz
aWJsZSB0byBkbywgYXMgc3RyZWFtcyBjYW4gb25seSBiZSBjcmVhdGVkIGluIHByb2Nlc3MgdGhh
dCBkb2VzIG5ldHdvcmtpbmcuCi0gICAgUmV0YWluUHRyPENGRGF0YVJlZj4gcmVxdWVzdEhUVFBC
b2R5ID0gYWRvcHRDRihDRlVSTFJlcXVlc3RDb3B5SFRUUFJlcXVlc3RCb2R5KHJlcXVlc3RUb1Nl
cmlhbGl6ZS5nZXQoKSkpOwotICAgIFJldGFpblB0cjxDRlJlYWRTdHJlYW1SZWY+IHJlcXVlc3RI
VFRQQm9keVN0cmVhbSA9IGFkb3B0Q0YoQ0ZVUkxSZXF1ZXN0Q29weUhUVFBSZXF1ZXN0Qm9keVN0
cmVhbShyZXF1ZXN0VG9TZXJpYWxpemUuZ2V0KCkpKTsKLSAgICBpZiAocmVxdWVzdEhUVFBCb2R5
IHx8IHJlcXVlc3RIVFRQQm9keVN0cmVhbSkgewotICAgICAgICBDRk11dGFibGVVUkxSZXF1ZXN0
UmVmIG11dGFibGVSZXF1ZXN0ID0gQ0ZVUkxSZXF1ZXN0Q3JlYXRlTXV0YWJsZUNvcHkoMCwgcmVx
dWVzdFRvU2VyaWFsaXplLmdldCgpKTsKLSAgICAgICAgcmVxdWVzdFRvU2VyaWFsaXplID0gYWRv
cHRDRihtdXRhYmxlUmVxdWVzdCk7Ci0gICAgICAgIENGVVJMUmVxdWVzdFNldEhUVFBSZXF1ZXN0
Qm9keShtdXRhYmxlUmVxdWVzdCwgbmlsKTsKLSAgICAgICAgQ0ZVUkxSZXF1ZXN0U2V0SFRUUFJl
cXVlc3RCb2R5U3RyZWFtKG11dGFibGVSZXF1ZXN0LCBuaWwpOwotICAgIH0KLQotICAgIFJldGFp
blB0cjxDRkRpY3Rpb25hcnlSZWY+IGRpY3Rpb25hcnkgPSBhZG9wdENGKFdLQ0ZVUkxSZXF1ZXN0
Q3JlYXRlU2VyaWFsaXphYmxlUmVwcmVzZW50YXRpb24ocmVxdWVzdFRvU2VyaWFsaXplLmdldCgp
LCBJUEM6OnRva2VuTnVsbFR5cGVSZWYoKSkpOwotICAgIElQQzo6ZW5jb2RlKGVuY29kZXIsIGRp
Y3Rpb25hcnkuZ2V0KCkpOwotCi0gICAgLy8gVGhlIGZhbGxiYWNrIGFycmF5IGlzIHBhcnQgb2Yg
Q0ZVUkxSZXF1ZXN0LCBidXQgaXQgaXMgbm90IGVuY29kZWQgYnkgV0tDRlVSTFJlcXVlc3RDcmVh
dGVTZXJpYWxpemFibGVSZXByZXNlbnRhdGlvbi4KLSAgICBlbmNvZGVyIDw8IHJlc291cmNlUmVx
dWVzdC5yZXNwb25zZUNvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheSgpOwot
ICAgIGVuY29kZXIuZW5jb2RlRW51bShyZXNvdXJjZVJlcXVlc3QucmVxdWVzdGVyKCkpOwotfQot
I2Vsc2UKIHZvaWQgQXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlcXVlc3Q+OjplbmNvZGVQbGF0Zm9y
bURhdGEoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJl
cXVlc3QpCiB7CiAgICAgUmV0YWluUHRyPE5TVVJMUmVxdWVzdD4gcmVxdWVzdFRvU2VyaWFsaXpl
ID0gcmVzb3VyY2VSZXF1ZXN0Lm5zVVJMUmVxdWVzdChEb05vdFVwZGF0ZUhUVFBCb2R5KTsKQEAg
LTExMiw3ICs3OCw2IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlcXVlc3Q+OjplbmMK
ICAgICBlbmNvZGVyIDw8IHJlc291cmNlUmVxdWVzdC5yZXNwb25zZUNvbnRlbnREaXNwb3NpdGlv
bkVuY29kaW5nRmFsbGJhY2tBcnJheSgpOwogICAgIGVuY29kZXIuZW5jb2RlRW51bShyZXNvdXJj
ZVJlcXVlc3QucmVxdWVzdGVyKCkpOwogfQotI2VuZGlmCiAKIGJvb2wgQXJndW1lbnRDb2RlcjxS
ZXNvdXJjZVJlcXVlc3Q+OjpkZWNvZGVQbGF0Zm9ybURhdGEoRGVjb2RlciYgZGVjb2RlciwgUmVz
b3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QpCiB7CkBAIC0xMjksMTkgKzk0LDExIEBAIGJv
b2wgQXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlcXVlc3Q+OjpkZWMKICAgICBpZiAoIUlQQzo6ZGVj
b2RlKGRlY29kZXIsIGRpY3Rpb25hcnkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSNpZiBV
U0UoQ0ZORVRXT1JLKQotICAgIFJldGFpblB0cjxDRlVSTFJlcXVlc3RSZWY+IGNmVVJMUmVxdWVz
dCA9IGFkb3B0Q0YoV0tDcmVhdGVDRlVSTFJlcXVlc3RGcm9tU2VyaWFsaXphYmxlUmVwcmVzZW50
YXRpb24oZGljdGlvbmFyeS5nZXQoKSwgSVBDOjp0b2tlbk51bGxUeXBlUmVmKCkpKTsKLSAgICBp
ZiAoIWNmVVJMUmVxdWVzdCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmVzb3VyY2VS
ZXF1ZXN0ID0gUmVzb3VyY2VSZXF1ZXN0KGNmVVJMUmVxdWVzdC5nZXQoKSk7Ci0jZWxzZQogICAg
IFJldGFpblB0cjxOU1VSTFJlcXVlc3Q+IG5zVVJMUmVxdWVzdCA9IFdLTlNVUkxSZXF1ZXN0RnJv
bVNlcmlhbGl6YWJsZVJlcHJlc2VudGF0aW9uKGRpY3Rpb25hcnkuZ2V0KCksIElQQzo6dG9rZW5O
dWxsVHlwZVJlZigpKTsKICAgICBpZiAoIW5zVVJMUmVxdWVzdCkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCiAgICAgcmVzb3VyY2VSZXF1ZXN0ID0gUmVzb3VyY2VSZXF1ZXN0KG5zVVJMUmVxdWVz
dC5nZXQoKSk7Ci0jZW5kaWYKICAgICAKICAgICBWZWN0b3I8U3RyaW5nPiByZXNwb25zZUNvbnRl
bnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheTsKICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKHJlc3BvbnNlQ29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5KSkKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oJKHJldmlzaW9uIDIwNzAzOSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTA1MSw3ICsxMDUxLDYgQEAKIAkJ
NUMxNDI3MDUxQzIzRjg0QzAwRDQxMTgzIC8qIERvd25sb2FkSUQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDMTQyNkY3MUMyM0Y4NDMwMEQ0MTE4MyAv
KiBEb3dubG9hZElELmggKi87IH07CiAJCTVDMTQyNzA2MUMyM0Y4NEMwMEQ0MTE4MyAvKiBEb3du
bG9hZE1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNUMxNDI2RjgxQzIzRjg0MzAwRDQxMTgzIC8qIERvd25sb2FkTWFuYWdlci5jcHAgKi87
IH07CiAJCTVDMTQyNzA3MUMyM0Y4NEMwMEQ0MTE4MyAvKiBEb3dubG9hZE1hbmFnZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDMTQyNkY5MUMyM0Y4
NDMwMEQ0MTE4MyAvKiBEb3dubG9hZE1hbmFnZXIuaCAqLzsgfTsKLQkJNUMxNDI3MTExQzIzRjg5
RTAwRDQxMTgzIC8qIERvd25sb2FkSU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNUMxNDI3MEQxQzIzRjg4NTAwRDQxMTgzIC8qIERvd25sb2FkSU9T
Lm1tICovOyB9OwogCQk1QzE0MjcxMjFDMjNGODlFMDBENDExODMgLyogRG93bmxvYWRNYWMubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzE0MjcwRjFD
MjNGODk5MDBENDExODMgLyogRG93bmxvYWRNYWMubW0gKi87IH07CiAJCTVDMTQyNzEzMUMyM0Y4
OUUwMEQ0MTE4MyAvKiBEb3dubG9hZENvY29hLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNUMxNDI3MDkxQzIzRjg2OTAwRDQxMTgzIC8qIERvd25sb2Fk
Q29jb2EubW0gKi87IH07CiAJCTVDMTQyNzE4MUMyM0Y4QjcwMEQ0MTE4MyAvKiBDdXN0b21Qcm90
b2NvbE1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDVDMTQyNzE0MUMyM0Y4QjAwMEQ0MTE4MyAvKiBDdXN0b21Qcm90b2NvbE1hbmFnZXIuaCAq
LzsgfTsKQEAgLTMxMzAsNyArMzEyOSw2IEBACiAJCTVDMTQyNkY4MUMyM0Y4NDMwMEQ0MTE4MyAv
KiBEb3dubG9hZE1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gRG93bmxvYWRNYW5hZ2VyLmNwcDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9E
b3dubG9hZE1hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzE0MjZG
OTFDMjNGODQzMDBENDExODMgLyogRG93bmxvYWRNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IERvd25sb2FkTWFuYWdlci5oOyBwYXRoID0gTmV0d29ya1Byb2Nlc3Mv
RG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1QzE0MjcwOTFDMjNGODY5MDBENDExODMgLyogRG93bmxvYWRDb2NvYS5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IERvd25sb2FkQ29jb2EubW07IHBhdGggPSBO
ZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvY29jb2EvRG93bmxvYWRDb2NvYS5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNUMxNDI3MEQxQzIzRjg4NTAwRDQxMTgzIC8qIERvd25sb2Fk
SU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gRG93bmxvYWRJ
T1MubW07IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvaW9zL0Rvd25sb2FkSU9TLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzE0MjcwRjFDMjNGODk5MDBENDExODMg
LyogRG93bmxvYWRNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUg
PSBEb3dubG9hZE1hYy5tbTsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9tYWMvRG93
bmxvYWRNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDMTQyNzE0MUMyM0Y4
QjAwMEQ0MTE4MyAvKiBDdXN0b21Qcm90b2NvbE1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmg7IHBhdGggPSBOZXR3b3JrUHJv
Y2Vzcy9DdXN0b21Qcm90b2NvbHMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTVDMTQyNzE1MUMyM0Y4QjAwMEQ0MTE4MyAvKiBDdXN0b21Qcm90
b2NvbE1hbmFnZXIubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gQ3VzdG9tUHJv
dG9jb2xNYW5hZ2VyLm1lc3NhZ2VzLmluOyBwYXRoID0gTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJv
dG9jb2xzL0N1c3RvbVByb3RvY29sTWFuYWdlci5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTU3MzgsNyArNTczNiw2IEBACiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJ
CWNoaWxkcmVuID0gKAogCQkJCTVDMTQyNzA4MUMyM0Y4NTIwMEQ0MTE4MyAvKiBjb2NvYSAqLywK
LQkJCQk1QzE0MjcwQzFDMjNGODc3MDBENDExODMgLyogaW9zICovLAogCQkJCTVDMTQyNzBCMUMy
M0Y4NzEwMEQ0MTE4MyAvKiBtYWMgKi8sCiAJCQkJODNCRkFDNDAxRDk2MTM2MDAwNDMzNDkwIC8q
IEJsb2JEb3dubG9hZENsaWVudC5oICovLAogCQkJCTgzQkZBQzQxMUQ5NjEzNjAwMDQzMzQ5MCAv
KiBCbG9iRG93bmxvYWRDbGllbnQuY3BwICovLApAQCAtNTc3OSwxNCArNTc3Niw2IEBACiAJCQlu
YW1lID0gbWFjOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKLQkJNUMxNDI3MEMx
QzIzRjg3NzAwRDQxMTgzIC8qIGlvcyAqLyA9IHsKLQkJCWlzYSA9IFBCWEdyb3VwOwotCQkJY2hp
bGRyZW4gPSAoCi0JCQkJNUMxNDI3MEQxQzIzRjg4NTAwRDQxMTgzIC8qIERvd25sb2FkSU9TLm1t
ICovLAotCQkJKTsKLQkJCW5hbWUgPSBpb3M7Ci0JCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwot
CQl9OwogCQk1QzE0MjcxQTFDMjNGOEJGMDBENDExODMgLyogQ29jb2EgKi8gPSB7CiAJCQlpc2Eg
PSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtOTA4OCw3ICs5MDc3LDYgQEAKIAkJCQk1
QzE0MjcwMTFDMjNGODRDMDBENDExODMgLyogRG93bmxvYWQuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQTFERjYzMTIxOEUwQjdDODAwM0EzRTJBIC8qIERvd25sb2FkQ2xpZW50Lm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNUMxNDI3MTMxQzIzRjg5RTAwRDQxMTgzIC8qIERvd25sb2FkQ29jb2EubW0g
aW4gU291cmNlcyAqLywKLQkJCQk1QzE0MjcxMTFDMjNGODlFMDBENDExODMgLyogRG93bmxvYWRJ
T1MubW0gaW4gU291cmNlcyAqLywKIAkJCQk1QzE0MjcxMjFDMjNGODlFMDBENDExODMgLyogRG93
bmxvYWRNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQk1QzE0MjcwNjFDMjNGODRDMDBENDExODMg
LyogRG93bmxvYWRNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBQjdENENCMTI4OEFB
QTcwMENGRDA4QyAvKiBEb3dubG9hZFByb3h5LmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cJKHJldmlzaW9uIDIwNzAzOSkKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTYtMTAtMTAgIEFsZXggQ2hyaXN0ZW5zZW4gIDxh
Y2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZW1vdmUgZGVhZCBuZXR3b3JraW5n
IGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2
MzI2MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcDoKKyAgICAgICAgKFdl
YlJlc291cmNlTG9hZFNjaGVkdWxlcjo6c2NoZWR1bGVMb2FkKToKKwogMjAxNi0xMC0wNiAgQnJl
bnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIGJ1
aWxkIGZpeCB3aGVuIGJ1aWxkaW5nIHdpdGggRGlyZWN0MkQuCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIu
Y3BwCShyZXZpc2lvbiAyMDcwMzkpCisrKyBTb3VyY2UvV2ViS2l0L1dlYkNvcmVTdXBwb3J0L1dl
YlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0OSw3ICsxNDks
NyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFNjaGVkdWxlcjo6c2NoZWR1bGVMCiAgICAgYm9vbCBo
YWRSZXF1ZXN0cyA9IGhvc3QtPmhhc1JlcXVlc3RzKCk7CiAgICAgaG9zdC0+c2NoZWR1bGUocmVz
b3VyY2VMb2FkZXIsIHByaW9yaXR5KTsKIAotI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZO
RVRXT1JLKQorI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogICAg
IGlmIChSZXNvdXJjZVJlcXVlc3Q6OnJlc291cmNlUHJpb3JpdGllc0VuYWJsZWQoKSAmJiAhaXNT
dXNwZW5kaW5nUGVuZGluZ1JlcXVlc3RzKCkpIHsKICAgICAgICAgLy8gU2VydmUgYWxsIHJlcXVl
c3RzIGF0IG9uY2UgdG8ga2VlcCB0aGUgcGlwZWxpbmUgZnVsbCBhdCB0aGUgbmV0d29yayBsYXll
ci4KICAgICAgICAgLy8gRklYTUU6IERvZXMgdGhpcyBjb2RlIGRvIGFueXRoaW5nIHVzZWZ1bCwg
Z2l2ZW4gdGhhdCB3ZSBhbHNvIHNldCBtYXhSZXF1ZXN0c0luRmxpZ2h0UGVySG9zdCB0byBlZmZl
Y3RpdmVseSB1bmxpbWl0ZWQgb24gdGhlc2UgcGxhdGZvcm1zPwpJbmRleDogU291cmNlL1dlYktp
dC9jZi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jZi9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDIwNzAzOSkKKysrIFNvdXJjZS9XZWJLaXQvY2YvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTYtMTAtMTAgIEFsZXggQ2hyaXN0ZW5zZW4gIDxh
Y2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZW1vdmUgZGVhZCBuZXR3b3JraW5n
IGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2
MzI2MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3BwOgorCiAyMDE2LTA4LTE1ICBK
b3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIHVu
dXNlZCBpbmNsdWRlcyBvZiB3dGYgaGVhZGVycwpJbmRleDogU291cmNlL1dlYktpdC9jZi9XZWJD
b3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRDRi5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9jZi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRDRi5jcHAJKHJldmlz
aW9uIDIwNzAzOSkKKysrIFNvdXJjZS9XZWJLaXQvY2YvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVj
dG9yQ2xpZW50Q0YuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw4ICsyNyw4IEBACiAvLyBiZWZv
cmUgaW5jbHVkaW5nIGFueSBvdGhlciBmaWxlcy4gRmFpbGluZyB0byBpbmNsdWRlIGNvbmZpZy5o
IHdpbGwgbGVhdmUKIC8vIFVTRV9DRiB1bmRlZmluZWQsIGNhdXNpbmcgYnVpbGQgZmFpbHVyZXMg
aW4gdGhpcwogLy8gZmlsZS4gQnV0IE1hYyBkb2Vzbid0IGhhdmUgYSBjb25maWcuaCBmb3IgV2Vi
S2l0LCBzbyB3ZSBjYW4ndCBpbmNsdWRlIHRoZQotLy8gV2luZG93cyBvbmUgaGVyZS4gRm9yIG5v
dyB3ZSBjYW4ganVzdCBkZWZpbmUgVVNFX0NGIGFuZAotLy8gVVNFX0NGTkVUV09SSyBtYW51YWxs
eSwgYnV0IHdlIG5lZWQgYSBiZXR0ZXIgbG9uZy10ZXJtIHNvbHV0aW9uLgorLy8gV2luZG93cyBv
bmUgaGVyZS4gRm9yIG5vdyB3ZSBjYW4ganVzdCBkZWZpbmUgVVNFX0NGIG1hbnVhbGx5LAorLy8g
YnV0IHdlIG5lZWQgYSBiZXR0ZXIgbG9uZy10ZXJtIHNvbHV0aW9uLgogI2lmbmRlZiBVU0VfQ0YK
ICNkZWZpbmUgVVNFX0NGIDEKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9tYWMvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24g
MjA3MDM5KQorKysgU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjEgQEAKKzIwMTYtMTAtMTAgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5z
ZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZW1vdmUgZGVhZCBuZXR3b3JraW5nIGNvZGUKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzI2MworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTWlzYy9XZWJE
b3dubG9hZC5tbToKKyAgICAgICAgKC1bV2ViRG93bmxvYWQgX2luaXRXaXRoTG9hZGluZ0NGVVJM
Q29ubmVjdGlvbjpyZXF1ZXN0OnJlc3BvbnNlOmRlbGVnYXRlOnByb3h5Ol0pOiBEZWxldGVkLgor
ICAgICAgICAqIE1pc2MvV2ViRG93bmxvYWRJbnRlcm5hbC5oOgorICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJD
bGllbnQ6OmNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZCk6CisgICAgICAgICogV2Vi
Vmlldy9XZWJQcmVmZXJlbmNlcy5tbToKKyAgICAgICAgKCtbV2ViUHJlZmVyZW5jZXMgX3NldEN1
cnJlbnROZXR3b3JrTG9hZGVyU2Vzc2lvbkNvb2tpZUFjY2VwdFBvbGljeTpdKToKKyAgICAgICAg
KiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgICgtW1dlYlZpZXcgc2NoZWR1bGVJblJ1bkxv
b3A6Zm9yTW9kZTpdKToKKyAgICAgICAgKC1bV2ViVmlldyB1bnNjaGVkdWxlRnJvbVJ1bkxvb3A6
Zm9yTW9kZTpdKToKKwogMjAxNi0xMC0xMCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+
CiAKICAgICAgICAgTW92ZSBOb3RpZmljYXRpb25DZW50ZXIgZnJvbSBsZWdhY3kgdG8gbmV3IERP
TSBleGNlcHRpb25zCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYkRvd25sb2FkLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViRG93bmxvYWQubW0JKHJl
dmlzaW9uIDIwNzAzOSkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViRG93bmxvYWQubW0J
KHdvcmtpbmcgY29weSkKQEAgLTQwLDExICs0MCw2IEBACiAKICNpbXBvcnQgIldlYlR5cGVzSW50
ZXJuYWwuaCIKIAotI2lmIFVTRShDRk5FVFdPUkspCi0jaW1wb3J0IDxDRk5ldHdvcmsvQ0ZOZXR3
b3JrLmg+Ci0jaW1wb3J0IDxDRk5ldHdvcmsvQ0ZVUkxDb25uZWN0aW9uLmg+Ci0jZW5kaWYKLQog
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIEBjbGFzcyBOU1VSTENvbm5lY3Rpb25EZWxlZ2F0
ZVByb3h5OwpAQCAtNjEsMTQgKzU2LDYgQEAgLSAoaWQpX2luaXRXaXRoUmVxdWVzdDooTlNVUkxS
ZXF1ZXN0ICopcgogICAgICAgICAgICAgICBkZWxlZ2F0ZTooaWQpZGVsZWdhdGUKICAgICAgICAg
ICAgICBkaXJlY3Rvcnk6KE5TU3RyaW5nICopZGlyZWN0b3J5OwogCi0jaWYgVVNFKENGTkVUV09S
SykKLS0gKGlkKV9pbml0V2l0aExvYWRpbmdDRlVSTENvbm5lY3Rpb246KENGVVJMQ29ubmVjdGlv
blJlZiljb25uZWN0aW9uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0OihD
RlVSTFJlcXVlc3RSZWYpcmVxdWVzdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNw
b25zZTooQ0ZVUkxSZXNwb25zZVJlZilyZXNwb25zZQotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBkZWxlZ2F0ZTooaWQpZGVsZWdhdGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcHJveHk6KE5TVVJMQ29ubmVjdGlvbkRlbGVnYXRlUHJveHkgKilwcm94eTsKLSNlbmRpZgot
CiBAZW5kCiAKIEBpbnRlcmZhY2UgV2ViRG93bmxvYWRJbnRlcm5hbCA6IE5TT2JqZWN0IDxOU1VS
TERvd25sb2FkRGVsZWdhdGU+CkBAIC0yMzEsMTggKzIxOCw2IEBAIC0gKGlkKV9pbml0V2l0aExv
YWRpbmdDb25uZWN0aW9uOihOU1VSTEMKICAgICByZXR1cm4gW3N1cGVyIF9pbml0V2l0aExvYWRp
bmdDb25uZWN0aW9uOmNvbm5lY3Rpb24gcmVxdWVzdDpyZXF1ZXN0IHJlc3BvbnNlOnJlc3BvbnNl
IGRlbGVnYXRlOl93ZWJJbnRlcm5hbCBwcm94eTpwcm94eV07CiB9CiAKLSNpZiBVU0UoQ0ZORVRX
T1JLKQotLSAoaWQpX2luaXRXaXRoTG9hZGluZ0NGVVJMQ29ubmVjdGlvbjooQ0ZVUkxDb25uZWN0
aW9uUmVmKWNvbm5lY3Rpb24KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Q6
KENGVVJMUmVxdWVzdFJlZilyZXF1ZXN0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl
c3BvbnNlOihDRlVSTFJlc3BvbnNlUmVmKXJlc3BvbnNlCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGRlbGVnYXRlOihpZClkZWxlZ2F0ZQotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBwcm94eTooTlNVUkxDb25uZWN0aW9uRGVsZWdhdGVQcm94eSAqKXByb3h5Ci17Ci0gICAg
W3NlbGYgX3NldFJlYWxEZWxlZ2F0ZTpkZWxlZ2F0ZV07Ci0gICAgcmV0dXJuIFtzdXBlciBfaW5p
dFdpdGhMb2FkaW5nQ0ZVUkxDb25uZWN0aW9uOmNvbm5lY3Rpb24gcmVxdWVzdDpyZXF1ZXN0IHJl
c3BvbnNlOnJlc3BvbnNlIGRlbGVnYXRlOl93ZWJJbnRlcm5hbCBwcm94eTpwcm94eV07Ci19Ci0j
ZW5kaWYKLQogLSAoaWQpX2luaXRXaXRoUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdAog
ICAgICAgICAgICAgICBkZWxlZ2F0ZTooaWQpZGVsZWdhdGUKICAgICAgICAgICAgICBkaXJlY3Rv
cnk6KE5TU3RyaW5nICopZGlyZWN0b3J5CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dl
YkRvd25sb2FkSW50ZXJuYWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9NaXNj
L1dlYkRvd25sb2FkSW50ZXJuYWwuaAkocmV2aXNpb24gMjA3MDM5KQorKysgU291cmNlL1dlYktp
dC9tYWMvTWlzYy9XZWJEb3dubG9hZEludGVybmFsLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDEw
ICsyNyw2IEBACiAqLwogIAogI2ltcG9ydCA8V2ViS2l0TGVnYWN5L1dlYkRvd25sb2FkLmg+Ci0K
LSNpZiBVU0UoQ0ZORVRXT1JLKQotI2ltcG9ydCA8Q0ZOZXR3b3JrL0NGVVJMQ29ubmVjdGlvbi5o
PgotI2VuZGlmCiAgCiBAaW50ZXJmYWNlIFdlYkRvd25sb2FkIChXZWJEb3dubG9hZENyZWF0aW9u
KQogKyhpZClfZG93bmxvYWRXaXRoTG9hZGluZ0Nvbm5lY3Rpb246KE5TVVJMQ29ubmVjdGlvbiAq
KWNvbm5lY3Rpb24KQEAgLTQzLDEyICszOSw0IEBAIEBpbnRlcmZhY2UgV2ViRG93bmxvYWQgKFdl
YkRvd25sb2FkQ3JlYXQKICAgICAgICAgICAgICAgICAgZGVsZWdhdGU6KGlkKWRlbGVnYXRlCiAg
ICAgICAgICAgICAgICAgZGlyZWN0b3J5OihOU1N0cmluZyAqKWRpcmVjdG9yeTsKIAotI2lmIFVT
RShDRk5FVFdPUkspCi0rIChpZClfZG93bmxvYWRXaXRoTG9hZGluZ0NGVVJMQ29ubmVjdGlvbjoo
Q0ZVUkxDb25uZWN0aW9uUmVmKWNvbm5lY3Rpb24KLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXF1ZXN0OihDRlVSTFJlcXVlc3RSZWYpcmVxdWVzdAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmVzcG9uc2U6KENGVVJMUmVzcG9uc2VSZWYpcmVzcG9uc2UKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGVnYXRlOihpZClkZWxlZ2F0ZQotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJveHk6KGlkKXByb3h5OwotI2VuZGlm
Ci0KIEBlbmQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCShyZXZpc2lvbiAyMDcwMzkpCisrKyBTb3Vy
Y2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQkod29y
a2luZyBjb3B5KQpAQCAtMzA0LDEzICszMDQsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50
Ojpjb252ZXJ0TWFpblJlCiAKICAgICBSZXNvdXJjZUhhbmRsZSogaGFuZGxlID0gbWFpblJlc291
cmNlTG9hZGVyLT5oYW5kbGUoKTsKIAotI2lmIFVTRShDRk5FVFdPUkspCi0gICAgQVNTRVJUKFtX
ZWJEb3dubG9hZCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF9kb3dubG9hZFdpdGhMb2Fk
aW5nQ0ZVUkxDb25uZWN0aW9uOnJlcXVlc3Q6cmVzcG9uc2U6ZGVsZWdhdGU6cHJveHk6KV0pOwot
ICAgIGF1dG8gY29ubmVjdGlvbiA9IGhhbmRsZS0+cmVsZWFzZUNvbm5lY3Rpb25Gb3JEb3dubG9h
ZCgpOwotICAgIFtXZWJEb3dubG9hZCBfZG93bmxvYWRXaXRoTG9hZGluZ0NGVVJMQ29ubmVjdGlv
bjpjb25uZWN0aW9uLmdldCgpIHJlcXVlc3Q6cmVxdWVzdC5jZlVSTFJlcXVlc3QoVXBkYXRlSFRU
UEJvZHkpIHJlc3BvbnNlOnJlc3BvbnNlLmNmVVJMUmVzcG9uc2UoKSBkZWxlZ2F0ZTpbd2ViVmll
dyBkb3dubG9hZERlbGVnYXRlXSBwcm94eTpuaWxdOwotI2Vsc2UKICAgICBbV2ViRG93bmxvYWQg
X2Rvd25sb2FkV2l0aExvYWRpbmdDb25uZWN0aW9uOmhhbmRsZS0+Y29ubmVjdGlvbigpIHJlcXVl
c3Q6cmVxdWVzdC5uc1VSTFJlcXVlc3QoVXBkYXRlSFRUUEJvZHkpIHJlc3BvbnNlOnJlc3BvbnNl
Lm5zVVJMUmVzcG9uc2UoKSBkZWxlZ2F0ZTpbd2ViVmlldyBkb3dubG9hZERlbGVnYXRlXSBwcm94
eTpuaWxdOwotI2VuZGlmCiB9CiAKIGJvb2wgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNo
RGlkTG9hZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVz
cG9uc2UsIGludCBsZW5ndGgpCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlBy
ZWZlcmVuY2VzLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
UHJlZmVyZW5jZXMubW0JKHJldmlzaW9uIDIwNzAzOSkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViUHJlZmVyZW5jZXMubW0JKHdvcmtpbmcgY29weSkKQEAgLTE4MDAsNyArMTgwMCw3
IEBAICsgKHZvaWQpX2NsZWFyTmV0d29ya0xvYWRlclNlc3Npb24KICsgKHZvaWQpX3NldEN1cnJl
bnROZXR3b3JrTG9hZGVyU2Vzc2lvbkNvb2tpZUFjY2VwdFBvbGljeTooTlNIVFRQQ29va2llQWNj
ZXB0UG9saWN5KXBvbGljeQogewogICAgIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVm
PiBjb29raWVTdG9yYWdlID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNl
c3Npb24oKS5jb29raWVTdG9yYWdlKCk7Ci0gICAgQVNTRVJUKGNvb2tpZVN0b3JhZ2UpOyAvLyBX
aWxsIGZhaWwgd2hlbiBidWlsZGluZyB3aXRob3V0IFVTRShDRk5FVFdPUkspIGFuZCBOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OnN3aXRjaFRvTmV3VGVzdGluZ1Nlc3Npb24oKSB3YXMgbm90IGNhbGxl
ZCBiZWZvcmVoYW5kLgorICAgIEFTU0VSVChjb29raWVTdG9yYWdlKTsgLy8gV2lsbCBmYWlsIHdo
ZW4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzd2l0Y2hUb05ld1Rlc3RpbmdTZXNzaW9uKCkgd2Fz
IG5vdCBjYWxsZWQgYmVmb3JlaGFuZC4KICAgICBDRkhUVFBDb29raWVTdG9yYWdlU2V0Q29va2ll
QWNjZXB0UG9saWN5KGNvb2tpZVN0b3JhZ2UuZ2V0KCksIHBvbGljeSk7CiB9CiAKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHJldmlzaW9uIDIwNzAzOSkKKysrIFNvdXJj
ZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtNjc3OSwy
NCArNjc3OSwxNCBAQCAtIChpZCljYW5kaWRhdGVMaXN0CiAKIC0gKHZvaWQpc2NoZWR1bGVJblJ1
bkxvb3A6KE5TUnVuTG9vcCAqKXJ1bkxvb3AgZm9yTW9kZTooTlNTdHJpbmcgKiltb2RlCiB7Ci0j
aWYgVVNFKENGTkVUV09SSykKLSAgICBDRlJ1bkxvb3BSZWYgc2NoZWR1bGVQYWlyUnVuTG9vcCA9
IFtydW5Mb29wIGdldENGUnVuTG9vcF07Ci0jZWxzZQotICAgIE5TUnVuTG9vcCAqc2NoZWR1bGVQ
YWlyUnVuTG9vcCA9IHJ1bkxvb3A7Ci0jZW5kaWYKICAgICBpZiAocnVuTG9vcCAmJiBtb2RlKQot
ICAgICAgICBjb3JlKHNlbGYpLT5hZGRTY2hlZHVsZVBhaXIoU2NoZWR1bGVQYWlyOjpjcmVhdGUo
c2NoZWR1bGVQYWlyUnVuTG9vcCwgKENGU3RyaW5nUmVmKW1vZGUpKTsKKyAgICAgICAgY29yZShz
ZWxmKS0+YWRkU2NoZWR1bGVQYWlyKFNjaGVkdWxlUGFpcjo6Y3JlYXRlKHJ1bkxvb3AsIChDRlN0
cmluZ1JlZiltb2RlKSk7CiB9CiAKIC0gKHZvaWQpdW5zY2hlZHVsZUZyb21SdW5Mb29wOihOU1J1
bkxvb3AgKilydW5Mb29wIGZvck1vZGU6KE5TU3RyaW5nICopbW9kZQogewotI2lmIFVTRShDRk5F
VFdPUkspCi0gICAgQ0ZSdW5Mb29wUmVmIHNjaGVkdWxlUGFpclJ1bkxvb3AgPSBbcnVuTG9vcCBn
ZXRDRlJ1bkxvb3BdOwotI2Vsc2UKLSAgICBOU1J1bkxvb3AgKnNjaGVkdWxlUGFpclJ1bkxvb3Ag
PSBydW5Mb29wOwotI2VuZGlmCiAgICAgaWYgKHJ1bkxvb3AgJiYgbW9kZSkKLSAgICAgICAgY29y
ZShzZWxmKS0+cmVtb3ZlU2NoZWR1bGVQYWlyKFNjaGVkdWxlUGFpcjo6Y3JlYXRlKHNjaGVkdWxl
UGFpclJ1bkxvb3AsIChDRlN0cmluZ1JlZiltb2RlKSk7CisgICAgICAgIGNvcmUoc2VsZiktPnJl
bW92ZVNjaGVkdWxlUGFpcihTY2hlZHVsZVBhaXI6OmNyZWF0ZShydW5Mb29wLCAoQ0ZTdHJpbmdS
ZWYpbW9kZSkpOwogfQogCiBzdGF0aWMgQk9PTCBmaW5kU3RyaW5nKE5TVmlldyA8V2ViRG9jdW1l
bnRTZWFyY2hpbmc+ICpzZWFyY2hWaWV3LCBOU1N0cmluZyAqc3RyaW5nLCBXZWJGaW5kT3B0aW9u
cyBvcHRpb25zKQpJbmRleDogU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwkocmV2aXNpb24gMjA3MDM5KQorKysgU291
cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzYgQEAK
KzIwMTYtMTAtMTAgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4K
KworICAgICAgICBSZW1vdmUgZGVhZCBuZXR3b3JraW5nIGNvZGUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzI2MworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogRGVmYXVsdERvd25sb2FkRGVsZWdhdGUu
aDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6Cisg
ICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6c2F2ZVBsYXRmb3JtRGF0YVRvQ2FjaGVkRnJh
bWUpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQu
Y3BwOgorICAgICAgICAoV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlUHJpdmF0ZUJy
b3dzaW5nU2Vzc2lvbik6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVOZXR3b3Jr
aW5nQ29udGV4dC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRl
Z2llcy5jcHA6CisgICAgICAgICogV2ViRG93bmxvYWQuaDoKKyAgICAgICAgKiBXZWJFcnJvci5j
cHA6CisgICAgICAgIChXZWJFcnJvcjo6bG9jYWxpemVkRGVzY3JpcHRpb24pOgorICAgICAgICAo
V2ViRXJyb3I6OnNzbFBlZXJDZXJ0aWZpY2F0ZSk6CisgICAgICAgICogV2ViRXJyb3IuaDoKKyAg
ICAgICAgKiBXZWJNdXRhYmxlVVJMUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJNdXRhYmxlVVJM
UmVxdWVzdDo6bXV0YWJsZUNvcHkpOgorICAgICAgICAqIFdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlLmNwcDoKKyAgICAgICAgKFdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjppbml0
V2l0aFByb3RlY3Rpb25TcGFjZSk6CisgICAgICAgIChXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZTo6aW5pdFdpdGhBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6CisgICAgICAgICogV2ViVVJM
UmVzcG9uc2UuY3BwOgorICAgICAgICAoV2ViVVJMUmVzcG9uc2U6OnNzbFBlZXJDZXJ0aWZpY2F0
ZSk6CisgICAgICAgICogV2ViVVJMUmVzcG9uc2UuaDoKKyAgICAgICAgKiBXZWJWaWV3LmNwcDoK
KyAgICAgICAgKFdlYlZpZXc6OnNldENhY2hlTW9kZWwpOgorICAgICAgICAoV2ViVmlldzo6Y2Fu
SGFuZGxlUmVxdWVzdCk6CisgICAgICAgIChXZWJWaWV3Ojpub3RpZnlQcmVmZXJlbmNlc0NoYW5n
ZWQpOgorICAgICAgICAodXBkYXRlU2hhcmVkU2V0dGluZ3NGcm9tUHJlZmVyZW5jZXNJZk5lZWRl
ZCk6CisKIDIwMTYtMTAtMDkgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+
CiAKICAgICAgICAgU3VwcG9ydCBJbnB1dEV2ZW50LmlucHV0VHlwZSBmb3IgdGhlIG5ldyBJbnB1
dEV2ZW50IHNwZWMKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL0RlZmF1bHREb3dubG9hZERlbGVn
YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vRGVmYXVsdERvd25sb2FkRGVs
ZWdhdGUuaAkocmV2aXNpb24gMjA3MDM5KQorKysgU291cmNlL1dlYktpdC93aW4vRGVmYXVsdERv
d25sb2FkRGVsZWdhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNyBAQAogI2luY2x1
ZGUgIldlYktpdC5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAKLSNpZiBVU0UoQ0ZORVRX
T1JLKQorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAjaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGVVJM
RG93bmxvYWRQcml2Lmg+CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViRG93
bmxvYWQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJEb3dubG9hZC5oCShy
ZXZpc2lvbiAyMDcwMzkpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJEb3dubG9hZC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMywxNSArMjMsMTQgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICovCiAKLSNp
Zm5kZWYgV2ViRG93bmxvYWRfaAotI2RlZmluZSBXZWJEb3dubG9hZF9oCisjcHJhZ21hIG9uY2UK
IAogI2luY2x1ZGUgIldlYktpdC5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ09NUHRyLmg+CiAjaW5j
bHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgog
Ci0jaWYgVVNFKENGTkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogI2luY2x1ZGUg
PENGTmV0d29yay9DRlVSTERvd25sb2FkUHJpdi5oPgogI2VsaWYgVVNFKENVUkwpCiAjaW5jbHVk
ZSA8V2ViQ29yZS9DdXJsRG93bmxvYWQuaD4KQEAgLTg0LDcgKzgzLDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBjb250aW51ZVdpdGhvdXRDcmVkZW50
aWFsRm9yQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoX0luX29wdF8gSVdlYlVSTEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlKik7CiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHVz
ZUNyZWRlbnRpYWwoX0luX29wdF8gSVdlYlVSTENyZWRlbnRpYWwqLCBfSW5fb3B0XyBJV2ViVVJM
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UqKTsKIAotI2lmIFVTRShDRk5FVFdPUkspCisjaWYgVVNF
KENGVVJMQ09OTkVDVElPTikKICAgICAvLyBDRlVSTERvd25sb2FkIENhbGxiYWNrcwogICAgIHZv
aWQgZGlkU3RhcnQoKTsKICAgICBDRlVSTFJlcXVlc3RSZWYgd2lsbFNlbmRSZXF1ZXN0KENGVVJM
UmVxdWVzdFJlZiwgQ0ZVUkxSZXNwb25zZVJlZik7CkBAIC0xMDksNyArMTA4LDcgQEAgcHJvdGVj
dGVkOgogCiAgICAgV1RGOjpTdHJpbmcgbV9kZXN0aW5hdGlvbjsKICAgICBXVEY6OlN0cmluZyBt
X2J1bmRsZVBhdGg7Ci0jaWYgVVNFKENGTkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9O
KQogICAgIFJldGFpblB0cjxDRlVSTERvd25sb2FkUmVmPiBtX2Rvd25sb2FkOwogI2VsaWYgVVNF
KENVUkwpCiAgICAgUmVmUHRyPFdlYkNvcmU6OkN1cmxEb3dubG9hZD4gbV9kb3dubG9hZDsKQEAg
LTEyMyw2ICsxMjIsMyBAQCBwcm90ZWN0ZWQ6CiAgICAgaW50IG1fcmVjZWl2ZWQ7CiAjZW5kaWYK
IH07Ci0KLQotI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJFcnJvci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViRXJyb3IuY3BwCShyZXZpc2lvbiAyMDcw
MzkpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJFcnJvci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTMzLDcgKzMzLDcgQEAKICNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ29yZUdyYXBoaWNzLmg+CiAj
ZW5kaWYKIAotI2lmIFVTRShDRk5FVFdPUkspCisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKICNp
bmNsdWRlIDxXZWJLaXRTeXN0ZW1JbnRlcmZhY2UvV2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+CiAj
ZW5kaWYKIApAQCAtMTM1LDcgKzEzNSw3IEBAIEhSRVNVTFQgV2ViRXJyb3I6OmxvY2FsaXplZERl
c2NyaXB0aW9uKF8KIAogICAgICpyZXN1bHQgPSBCU3RyaW5nKG1fZXJyb3IubG9jYWxpemVkRGVz
Y3JpcHRpb24oKSkucmVsZWFzZSgpOwogCi0jaWYgVVNFKENGTkVUV09SSykKKyNpZiBVU0UoQ0ZV
UkxDT05ORUNUSU9OKQogICAgIGlmICghKnJlc3VsdCkgewogICAgICAgICBpZiAoaW50IGNvZGUg
PSBtX2Vycm9yLmVycm9yQ29kZSgpKQogICAgICAgICAgICAgKnJlc3VsdCA9IEJTdHJpbmcod2tD
Rk5ldHdvcmtFcnJvckdldExvY2FsaXplZERlc2NyaXB0aW9uKGNvZGUpKS5yZWxlYXNlKCk7CkBA
IC0yMTksNyArMjE5LDcgQEAgSFJFU1VMVCBXZWJFcnJvcjo6c3NsUGVlckNlcnRpZmljYXRlKF9P
dQogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwogICAgICpyZXN1bHQgPSAwOwogCi0jaWYgVVNF
KENGTkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogICAgIGlmICghbV9jZkVycm9y
VXNlckluZm9EaWN0KSB7CiAgICAgICAgIC8vIGNvcHkgdXNlcmluZm8gZnJvbSBDRkVycm9yUmVm
CiAgICAgICAgIENGRXJyb3JSZWYgY2ZFcnJvciA9IG1fZXJyb3I7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L3dpbi9XZWJFcnJvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYkVy
cm9yLmgJKHJldmlzaW9uIDIwNzAzOSkKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYkVycm9yLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTIzLDggKzIzLDcgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICovCiAK
LSNpZm5kZWYgV2ViRXJyb3JfaAotI2RlZmluZSBXZWJFcnJvcl9oCisjcHJhZ21hIG9uY2UKIAog
I2luY2x1ZGUgIldlYktpdC5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ09NUHRyLmg+CkBAIC02Niwx
MCArNjUsOCBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFVMT05HIG1fcmVmQ291bnQgeyAwIH07
CiAgICAgQ09NUHRyPElQcm9wZXJ0eUJhZz4gbV91c2VySW5mbzsKLSNpZiBVU0UoQ0ZORVRXT1JL
KQorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAgICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJl
Zj4gbV9jZkVycm9yVXNlckluZm9EaWN0OwogI2VuZGlmCiAgICAgV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciBtX2Vycm9yOwogfTsKLQotI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJN
dXRhYmxlVVJMUmVxdWVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vV2Vi
TXV0YWJsZVVSTFJlcXVlc3QuY3BwCShyZXZpc2lvbiAyMDcwMzkpCisrKyBTb3VyY2UvV2ViS2l0
L3dpbi9XZWJNdXRhYmxlVVJMUmVxdWVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQw
LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0NlcnRpZmljYXRlQ0ZXaW4uaD4KICNlbmRpZgogCi0j
aWYgVVNFKENGTkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogI2luY2x1ZGUgPENG
TmV0d29yay9DRlVSTFJlcXVlc3RQcml2Lmg+CiAjZW5kaWYKIApAQCAtMzgyLDcgKzM4Miw3IEBA
IEhSRVNVTFQgV2ViTXV0YWJsZVVSTFJlcXVlc3Q6Om11dGFibGVDb3AKICAgICBpZiAoIXJlc3Vs
dCkKICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKIAotI2lmIFVTRShDRk5FVFdPUkspCisjaWYg
VVNFKENGVVJMQ09OTkVDVElPTikKICAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlVVJMUmVxdWVzdFJl
Zj4gbXV0YWJsZVJlcXVlc3QgPSBhZG9wdENGKENGVVJMUmVxdWVzdENyZWF0ZU11dGFibGVDb3B5
KGtDRkFsbG9jYXRvckRlZmF1bHQsIG1fcmVxdWVzdC5jZlVSTFJlcXVlc3QoVXBkYXRlSFRUUEJv
ZHkpKSk7CiAgICAgKnJlc3VsdCA9IGNyZWF0ZUluc3RhbmNlKFJlc291cmNlUmVxdWVzdChtdXRh
YmxlUmVxdWVzdC5nZXQoKSkpOwogICAgIHJldHVybiBTX09LOwpJbmRleDogU291cmNlL1dlYktp
dC93aW4vV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvd2luL1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmNwcAkocmV2aXNp
b24gMjA3MDM5KQorKysgU291cmNlL1dlYktpdC93aW4vV2ViVVJMQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDEsNyArMTQxLDcgQEAgSFJFU1VMVCBXZWJV
UkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTo6aQogCiAgICAgLy8gRklYTUU6IEFmdGVyIHdlIGNo
YW5nZSBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSB0byB1c2UgIlJlc291cmNlSGFuZGxlIiBhcyB0
aGUgYWJzdHJhY3QgIlNlbmRlciIgb3IgIlNvdXJjZSBvZiB0aGlzIEF1dGggQ2hhbGxlbmdlIiwg
dGhlbiB3ZSdsbAogICAgIC8vIGNvbnN0cnVjdCB0aGUgQXV0aGVudGljYXRpb25DaGFsbGVuZ2Ug
d2l0aCB0aGF0IGFzIG9idGFpbmVkIGZyb20gdGhlIHdlYlNlbmRlcgotI2lmIFVTRShDRk5FVFdP
UkspCisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKICAgICBtX2F1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlID0gQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uod2ViU3BhY2UtPnByb3RlY3Rpb25TcGFjZSgp
LCB3ZWJDcmVkZW50aWFsLT5jcmVkZW50aWFsKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBwcmV2aW91c0ZhaWx1cmVDb3VudCwgd2ViUmVzcG9uc2UtPnJlc291cmNlUmVz
cG9uc2UoKSwgd2ViRXJyb3ItPnJlc291cmNlRXJyb3IoKSk7CiAjZW5kaWYKQEAgLTE2Miw3ICsx
NjIsNyBAQCBIUkVTVUxUIFdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjppCiAgICAgaWYg
KCF3ZWJTZW5kZXIpCiAgICAgICAgIHJldHVybiBFX05PSU5URVJGQUNFOwogCi0jaWYgVVNFKENG
TkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogICAgIG1fYXV0aGVudGljYXRpb25D
aGFsbGVuZ2UgPSBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSh3ZWJDaGFsbGVuZ2UtPmF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlKCkuY2ZVUkxBdXRoQ2hhbGxlbmdlUmVmKCksIHdlYlNlbmRlci0+YXV0
aGVudGljYXRpb25DbGllbnQoKSk7CiAKICAgICByZXR1cm4gU19PSzsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvd2luL1dlYlVSTFJlc3BvbnNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L3dpbi9XZWJVUkxSZXNwb25zZS5jcHAJKHJldmlzaW9uIDIwNzAzOSkKKysrIFNvdXJjZS9XZWJL
aXQvd2luL1dlYlVSTFJlc3BvbnNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBA
QAogI2luY2x1ZGUgPENvcmVHcmFwaGljcy9Db3JlR3JhcGhpY3MuaD4KICNlbmRpZgogCi0jaWYg
VVNFKENGTkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogI2luY2x1ZGUgPFdlYktp
dFN5c3RlbUludGVyZmFjZS9XZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaD4KICNlbmRpZgogCkBAIC00
MDYsNyArNDA2LDcgQEAgSFJFU1VMVCBXZWJVUkxSZXNwb25zZTo6c3NsUGVlckNlcnRpZmljYQog
ICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwogICAgICpyZXN1bHQgPSAwOwogCi0jaWYgVVNFKENG
TkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogICAgIENGRGljdGlvbmFyeVJlZiBk
aWN0ID0gY2VydGlmaWNhdGVEaWN0aW9uYXJ5KCk7CiAgICAgaWYgKCFkaWN0KQogICAgICAgICBy
ZXR1cm4gRV9GQUlMOwpAQCAtNDc1LDcgKzQ3NSw3IEBAIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IFdlYlVSTFJlc3BvbnNlOjoKICAgICByZXR1cm4gbV9yZXNwb25zZTsKIH0KIAotI2lmIFVTRShD
Rk5FVFdPUkspCisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKIENGRGljdGlvbmFyeVJlZiBXZWJV
UkxSZXNwb25zZTo6Y2VydGlmaWNhdGVEaWN0aW9uYXJ5KCkgY29uc3QKIHsKICAgICBpZiAobV9T
U0xDZXJ0aWZpY2F0ZUluZm8pCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJVUkxSZXNwb25z
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYlVSTFJlc3BvbnNlLmgJKHJl
dmlzaW9uIDIwNzAzOSkKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYlVSTFJlc3BvbnNlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTIzLDggKzIzLDcgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICovCiAKLSNp
Zm5kZWYgV2ViVVJMUmVzcG9uc2VfSAotI2RlZmluZSBXZWJVUkxSZXNwb25zZV9ICisjcHJhZ21h
IG9uY2UKIAogI2luY2x1ZGUgIldlYktpdC5oIgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VS
ZXNwb25zZS5oPgpAQCAtNjYsNyArNjUsNyBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgSFJF
U1VMVCBzdWdnZXN0ZWRGaWxlRXh0ZW5zaW9uKEJTVFIqIHJlc3VsdCk7CiAKLSNpZiBVU0UoQ0ZO
RVRXT1JLKQorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAgICAgQ0ZEaWN0aW9uYXJ5UmVmIGNl
cnRpZmljYXRlRGljdGlvbmFyeSgpIGNvbnN0OwogI2VuZGlmCiAKQEAgLTc0LDkgKzczLDcgQEAg
cHJvdGVjdGVkOgogICAgIFVMT05HIG1fcmVmQ291bnQgeyAwIH07CiAgICAgV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSBtX3Jlc3BvbnNlOwogCi0jaWYgVVNFKENGTkVUV09SSykKKyNpZiBVU0Uo
Q0ZVUkxDT05ORUNUSU9OKQogICAgIG11dGFibGUgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4g
bV9TU0xDZXJ0aWZpY2F0ZUluZm87ICAgIC8vIHRoaXMgZW5zdXJlcyBjZXJ0aWZpY2F0ZSBjb250
ZXh0cyBhcmUgdmFsaWQgZm9yIHRoZSBsaWZldGltZSBvZiB0aGlzIFdlYlVSTFJlc3BvbnNlLgog
I2VuZGlmCiB9OwotCi0jZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCShyZXZpc2lvbiAy
MDcwMzkpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTc4LDcgKzE3OCw3IEBACiAjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRp
b24uaD4KICNlbmRpZgogCi0jaWYgVVNFKENGTkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNU
SU9OKQogI2luY2x1ZGUgPENGTmV0d29yay9DRlVSTENhY2hlUHJpdi5oPgogI2luY2x1ZGUgPENG
TmV0d29yay9DRlVSTFByb3RvY29sUHJpdi5oPgogI2luY2x1ZGUgPFdlYktpdFN5c3RlbUludGVy
ZmFjZS9XZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaD4KQEAgLTQ5Nyw3ICs0OTcsNyBAQCB2b2lkIFdl
YlZpZXc6OnNldENhY2hlTW9kZWwoV2ViQ2FjaGVNb2RlCiAKICAgICBTdHJpbmcgY2FjaGVEaXJl
Y3Rvcnk7CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAg
ICAgUmV0YWluUHRyPENGVVJMQ2FjaGVSZWY+IGNmdXJsQ2FjaGUgPSBhZG9wdENGKENGVVJMQ2Fj
aGVDb3B5U2hhcmVkVVJMQ2FjaGUoKSk7CiAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjZnVy
bENhY2hlRGlyZWN0b3J5ID0gYWRvcHRDRih3a0NvcHlGb3VuZGF0aW9uQ2FjaGVEaXJlY3Rvcnko
MCkpOwogICAgIGlmICghY2Z1cmxDYWNoZURpcmVjdG9yeSkgewpAQCAtNTUxLDcgKzU1MSw3IEBA
IHZvaWQgV2ViVmlldzo6c2V0Q2FjaGVNb2RlbChXZWJDYWNoZU1vZGUKICAgICAgICAgLy8gTWVt
b3J5IGNhY2hlIGNhcGFjaXR5IChpbiBieXRlcykKICAgICAgICAgY2FjaGVNZW1vcnlDYXBhY2l0
eSA9IDA7CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAg
ICAgICAgIC8vIEZvdW5kYXRpb24gZGlzayBjYWNoZSBjYXBhY2l0eSAoaW4gYnl0ZXMpCiAgICAg
ICAgIGNhY2hlRGlza0NhcGFjaXR5ID0gQ0ZVUkxDYWNoZURpc2tDYXBhY2l0eShjZnVybENhY2hl
LmdldCgpKTsKICNlbmRpZgpAQCAtNjc1LDcgKzY3NSw3IEBAIHZvaWQgV2ViVmlldzo6c2V0Q2Fj
aGVNb2RlbChXZWJDYWNoZU1vZGUKICAgICBtZW1vcnlDYWNoZS5zZXREZWFkRGVjb2RlZERhdGFE
ZWxldGlvbkludGVydmFsKGRlYWREZWNvZGVkRGF0YURlbGV0aW9uSW50ZXJ2YWwpOwogICAgIFBh
Z2VDYWNoZTo6c2luZ2xldG9uKCkuc2V0TWF4U2l6ZShwYWdlQ2FjaGVTaXplKTsKIAotI2lmIFVT
RShDRk5FVFdPUkspCisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKICAgICAvLyBEb24ndCBzaHJp
bmsgYSBiaWcgZGlzayBjYWNoZSwgc2luY2UgdGhhdCB3b3VsZCBjYXVzZSBjaHVybi4KICAgICBj
YWNoZURpc2tDYXBhY2l0eSA9IG1heChjYWNoZURpc2tDYXBhY2l0eSwgQ0ZVUkxDYWNoZURpc2tD
YXBhY2l0eShjZnVybENhY2hlLmdldCgpKSk7CiAKQEAgLTE1NDcsNyArMTU0Nyw3IEBAIHZvaWQg
V2ViVmlldzo6Y2xvc2VXaW5kb3coKQogCiBib29sIFdlYlZpZXc6OmNhbkhhbmRsZVJlcXVlc3Qo
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewotI2lmIFVTRShDRk5F
VFdPUkspCisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKICAgICAvLyBPbiB0aGUgTWFjIHRoZXJl
J3MgYW4gYWJvdXQgVVJMIHByb3RvY29sIGltcGxlbWVudGF0aW9uIGJ1dCBXaW5kb3dzIENGTmV0
d29yayBkb2Vzbid0IGhhdmUgdGhhdC4KICAgICBpZiAocmVxdWVzdC51cmwoKS5wcm90b2NvbElz
KCJhYm91dCIpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTUyNjEsNyArNTI2MSw3IEBAIEhS
RVNVTFQgV2ViVmlldzo6bm90aWZ5UHJlZmVyZW5jZXNDaGFuZ2UKICAgICBociA9IHByZWZlcmVu
Y2VzLT5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCZlbmFibGVkKTsKICAgICBpZiAoRkFJTEVEKGhy
KSkKICAgICAgICAgcmV0dXJuIGhyOwotI2lmIFBMQVRGT1JNKFdJTikgfHwgVVNFKENGTkVUV09S
SykKKyNpZiBQTEFURk9STShXSU4pIHx8IFVTRShDRlVSTENPTk5FQ1RJT04pCiAgICAgaWYgKGVu
YWJsZWQpCiAgICAgICAgIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVByaXZhdGVC
cm93c2luZ1Nlc3Npb24oKTsKICAgICBlbHNlCkBAIC01NTYwLDcgKzU1NjAsNyBAQCBIUkVTVUxU
IHVwZGF0ZVNoYXJlZFNldHRpbmdzRnJvbVByZWZlcmVuCiAgICAgaWYgKEZBSUxFRChocikpCiAg
ICAgICAgIHJldHVybiBocjsKIAotI2lmIFVTRShDRk5FVFdPUkspCisjaWYgVVNFKENGVVJMQ09O
TkVDVElPTikKICAgICBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpzZXRDb29raWVBY2NlcHRQ
b2xpY3lGb3JBbGxDb250ZXh0cyhhY2NlcHRQb2xpY3kpOwogI2VuZGlmCiAKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5jcHAJKHJldmlzaW9uIDIwNzAzOSkKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTc0
LDcgKzk3NCw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNldFRpdGxlKGNvbnMKIAog
dm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6c2F2ZVBsYXRmb3JtRGF0YVRvQ2FjaGVkRnJhbWUo
Q2FjaGVkRnJhbWUqIGNhY2hlZEZyYW1lKQogewotI2lmIFVTRShDRk5FVFdPUkspCisjaWYgVVNF
KENGVVJMQ09OTkVDVElPTikKICAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZShtX3dlYkZyYW1l
KTsKICAgICBpZiAoIWNvcmVGcmFtZSkKICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL1dl
YktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVOZXR3
b3JraW5nQ29udGV4dC5jcHAJKHJldmlzaW9uIDIwNzAzOSkKKysrIFNvdXJjZS9XZWJLaXQvd2lu
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zNCw3ICszNCw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9TZXR0aW5ncy5oPgogI2lu
Y2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCi0jaWYgVVNFKENGTkVUV09SSykKKyNpZiBV
U0UoQ0ZVUkxDT05ORUNUSU9OKQogI2luY2x1ZGUgPENGTmV0d29yay9DRkhUVFBDb29raWVzUHJp
di5oPgogI2luY2x1ZGUgPFdlYktpdFN5c3RlbUludGVyZmFjZS9XZWJLaXRTeXN0ZW1JbnRlcmZh
Y2UuaD4KICNlbmRpZgpAQCAtNDcsNyArNDcsNyBAQCBzdGF0aWMgU3RyaW5nJiBpZGVudGlmaWVy
QmFzZSgpCiAgICAgcmV0dXJuIGJhc2U7CiB9CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQorI2lmIFVT
RShDRlVSTENPTk5FQ1RJT04pCiB2b2lkIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OnNldENv
b2tpZUFjY2VwdFBvbGljeUZvckFsbENvbnRleHRzKFdlYktpdENvb2tpZVN0b3JhZ2VBY2NlcHRQ
b2xpY3kgcG9saWN5KQogewogICAgIGlmIChSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJl
Zj4gY29va2llU3RvcmFnZSA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VT
ZXNzaW9uKCkuY29va2llU3RvcmFnZSgpKQpAQCAtNjcsNyArNjcsNyBAQCB2b2lkIFdlYkZyYW1l
TmV0d29ya2luZ0NvbnRleHQ6OnNldFByaXZhCiAKIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgV2Vi
RnJhbWVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpCiB7
Ci0jaWYgVVNFKENGTkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CiAKICAgICBpZiAoYXV0byBwcml2YXRlU2Vzc2lvbiA9IE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oU2Vzc2lvbklEOjpsZWdhY3lQcml2YXRl
U2Vzc2lvbklEKCkpKQpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVOZXR3b3JraW5nQ29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2lu
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaAkocmV2aXNpb24gMjA3
MDM5KQorKysgU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVOZXR3b3Jr
aW5nQ29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMiw4ICsyMiw3IEBACiAgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KLSNpZm5kZWYg
V2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dF9oCi0jZGVmaW5lIFdlYkZyYW1lTmV0d29ya2luZ0Nv
bnRleHRfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lTmV0d29ya2lu
Z0NvbnRleHQuaD4KIApAQCAtMzQsNyArMzMsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dChmcmFtZSkpOwogICAgIH0KIAot
I2lmIFVTRShDRk5FVFdPUkspCisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKICAgICBzdGF0aWMg
dm9pZCBzZXRDb29raWVBY2NlcHRQb2xpY3lGb3JBbGxDb250ZXh0cyhXZWJLaXRDb29raWVTdG9y
YWdlQWNjZXB0UG9saWN5KTsKICNlbmRpZgogICAgIHN0YXRpYyB2b2lkIHNldFByaXZhdGVCcm93
c2luZ1N0b3JhZ2VTZXNzaW9uSWRlbnRpZmllckJhc2UoY29uc3QgU3RyaW5nJik7CkBAIC01MCw1
ICs0OSwzIEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBibG9ja2VkRXJy
b3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JikgY29uc3Qgb3ZlcnJpZGU7CiAgICAg
V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzdG9yYWdlU2Vzc2lvbigpIGNvbnN0IG92
ZXJyaWRlOwogfTsKLQotI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3Vw
cG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAJKHJldmlzaW9u
IDIwNzAzOSkKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3Jt
U3RyYXRlZ2llcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDcgQEAKICNpbmNsdWRl
IDxXZWJDb3JlL1BhZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VHcm91cC5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvUGxhdGZvcm1Db29raWVKYXIuaD4KLSNpZiBVU0UoQ0ZORVRXT1JLKQorI2lm
IFVTRShDRlVSTENPTk5FQ1RJT04pCiAjaW5jbHVkZSA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlL1dl
YktpdFN5c3RlbUludGVyZmFjZS5oPgogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9jbWFrZS9PcHRp
b25zQXBwbGVXaW4uY21ha2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL2NtYWtlL09wdGlvbnNBcHBs
ZVdpbi5jbWFrZQkocmV2aXNpb24gMjA3MDM5KQorKysgU291cmNlL2NtYWtlL09wdGlvbnNBcHBs
ZVdpbi5jbWFrZQkod29ya2luZyBjb3B5KQpAQCAtMiw3ICsyLDcgQEAgaW5jbHVkZShPcHRpb25z
V2luKQogCiBzZXQoVVNFX0NHIDEpCiBzZXQoVVNFX0NBIDEpCi1zZXQoVVNFX0NGTkVUV09SSyAx
KQorc2V0KFVTRV9DRlVSTENPTk5FQ1RJT04gMSkKIHNldChVU0VfSUNVX1VOSUNPREUgMSkKIAog
IyBVbmNvbW1lbnQgdGhlIGZvbGxvd2luZyBsaW5lIHRvIHRyeSB0aGUgRGlyZWN0MkQgYmFja2Vu
ZC4KSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDIwNzAzOSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDE1IEBACisyMDE2LTEwLTEwICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2Vu
QHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVtb3ZlIGRlYWQgbmV0d29ya2luZyBjb2RlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjMyNjMKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIER1bXBSZW5kZXJU
cmVlL0R1bXBSZW5kZXJUcmVlLmg6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY29uZmlnLmg6
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNwcDoKKyAgICAg
ICAgKG1haW4pOgorCiAyMDE2LTEwLTEwICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Vi
a2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjA2OTcyLgpJbmRl
eDogVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5oCShyZXZpc2lvbiAyMDcwMzkpCisr
KyBUb29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yNiwxMyArMjYsNyBAQAogICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIER1bXBSZW5kZXJU
cmVlX2gKLSNkZWZpbmUgRHVtcFJlbmRlclRyZWVfaAotCi0vLyBGSVhNRTogUmVtb3ZlIHRoaXMg
d2hlbiBhbGwgcGxhdGZvcm1zIGFyZSB1c2luZyBjb25maWcuaAotI2lmbmRlZiBDb25maWdfSAot
I2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgotI2VuZGlmCisjcHJhZ21hIG9uY2UKIAogI2lmIFBM
QVRGT1JNKENPQ09BKQogI2luY2x1ZGUgIkR1bXBSZW5kZXJUcmVlTWFjLmgiCkBAIC00NSw2ICsz
OSw3IEBACiAjZW5kaWYKIAogI2luY2x1ZGUgPHN0cmluZz4KKyNpbmNsdWRlIDx3dGYvUGxhdGZv
cm0uaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKICNpZiAhT1MoT1BFTkJTRCkKSW5kZXg6
IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2NvbmZpZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL2NvbmZpZy5oCShyZXZpc2lvbiAyMDcwMzkpCisrKyBUb29scy9EdW1wUmVuZGVy
VHJlZS9jb25maWcuaAkod29ya2luZyBjb3B5KQpAQCAtMTgsNyArMTgsNyBAQAogICoKICAqLwog
Ci0jZGVmaW5lIENvbmZpZ19ICisjcHJhZ21hIG9uY2UKIAogI2lmIGRlZmluZWQoSEFWRV9DT05G
SUdfSCkgJiYgSEFWRV9DT05GSUdfSCAmJiBkZWZpbmVkKEJVSUxESU5HX1dJVEhfQ01BS0UpCiAj
aW5jbHVkZSAiY21ha2Vjb25maWcuaCIKQEAgLTQ0LDcgKzQ0LDcgQEAKICNkZWZpbmUgVVNFX0NV
UkwgMQogI2Vsc2UKICNkZWZpbmUgVVNFX0NHIDEKLSNkZWZpbmUgVVNFX0NGTkVUV09SSyAxCisj
ZGVmaW5lIFVTRV9DRlVSTENPTk5FQ1RJT04gMQogI2VuZGlmCiAKICN1bmRlZiBfV0lOMzJfV0lO
TlQKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNwcAko
cmV2aXNpb24gMjA3MDM5KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJU
cmVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjEsNyArNjEsNyBAQAogI2luY2x1ZGUgPFdlYktp
dC9XZWJLaXQuaD4KICNpbmNsdWRlIDxXZWJLaXQvV2ViS2l0Q09NQVBJLmg+CiAKLSNpZiBVU0Uo
Q0ZORVRXT1JLKQorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAjaW5jbHVkZSA8Q0ZOZXR3b3Jr
L0NGSFRUUENvb2tpZXNQcml2Lmg+CiAjaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGVVJMQ2FjaGVQcml2
Lmg+CiAjZW5kaWYKQEAgLTEyODcsNyArMTI4Nyw3IEBAIElXZWJWaWV3KiBjcmVhdGVXZWJWaWV3
QW5kT2Zmc2NyZWVuV2luZG8KICAgICByZXR1cm4gd2ViVmlldzsKIH0KIAotI2lmIFVTRShDRk5F
VFdPUkspCisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKIFJldGFpblB0cjxDRlVSTENhY2hlUmVm
PiBzaGFyZWRDRlVSTENhY2hlKCkKIHsKICNpZm5kZWYgREVCVUdfQUxMCkBAIC0xNDY1LDcgKzE0
NjUsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY29uc3QgY2hhciogYXJndltdKQogICAgIGlmIChG
QUlMRUQod2ViVmlldy0+bWFpbkZyYW1lKCZmcmFtZSkpKQogICAgICAgICByZXR1cm4gLTc7CiAK
LSNpZiBVU0UoQ0ZORVRXT1JLKQorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAgICAgUmV0YWlu
UHRyPENGVVJMQ2FjaGVSZWY+IHVybENhY2hlID0gc2hhcmVkQ0ZVUkxDYWNoZSgpOwogICAgIENG
VVJMQ2FjaGVSZW1vdmVBbGxDYWNoZWRSZXNwb25zZXModXJsQ2FjaGUuZ2V0KCkpOwogI2VuZGlm
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>291227</attachid>
            <date>2016-10-10 21:26:22 -0700</date>
            <delta_ts>2016-10-10 22:52:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-163263-20161010212301.patch</filename>
            <type>text/plain</type>
            <size>192114</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDIwNzAz
OSkKKysrIENoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDE2LTEw
LTEwICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgUmVtb3ZlIGRlYWQgbmV0d29ya2luZyBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjMyNjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFNvdXJjZS9jbWFrZS9PcHRpb25zQXBwbGVXaW4uY21h
a2U6CisKIDIwMTYtMTAtMTAgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3Jn
PgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyMDY5NzIuCkluZGV4OiBTb3Vy
Y2UvV1RGL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL0NoYW5nZUxvZwkocmV2
aXNpb24gMjA3MDM5KQorKysgU291cmNlL1dURi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwxNCBAQAorMjAxNi0xMC0xMCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNl
bkB3ZWJraXQub3JnPgorCisgICAgICAgIFJlbW92ZSBkZWFkIG5ldHdvcmtpbmcgY29kZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzMjYzCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvUGxhdGZv
cm0uaDoKKyAgICAgICAgKiB3dGYvU2NoZWR1bGVQYWlyLmg6CisgICAgICAgICogd3RmL1NjaGVk
dWxlUGFpck1hYy5tbToKKwogMjAxNi0xMC0xMCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVh
QGdtYWlsLmNvbT4KIAogICAgICAgICBbRE9NSklUXSBJbXBsZW1lbnQgTm9kZSBhY2Nlc3NvcnMg
aW4gRE9NSklUCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgJKHJldmlzaW9uIDIwNzAzOSkKKysrIFNvdXJjZS9X
VEYvd3RmL1BsYXRmb3JtLmgJKHdvcmtpbmcgY29weSkKQEAgLTU1OSwxMCArNTU5LDYgQEAKIAog
I2lmIFBMQVRGT1JNKElPUykKIAotI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspICYmIF9fSVBI
T05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTAwMDAwCi0jZGVmaW5lIFVTRV9DRk5FVFdP
UksgMQotI2VuZGlmCi0KICNkZWZpbmUgSEFWRV9ORVRXT1JLX0VYVEVOU0lPTiAxCiAjZGVmaW5l
IEhBVkVfUkVBRExJTkUgMQogI2RlZmluZSBVU0VfVUlLSVRfRURJVElORyAxCkBAIC01OTIsMTAg
KzU4OCwxMCBAQAogI2VuZGlmCiAKICNpZiBQTEFURk9STShXSU4pICYmICFVU0UoV0lOR0RJKSAm
JiAhUExBVEZPUk0oV0lOX0NBSVJPKQotI2RlZmluZSBVU0VfQ0ZORVRXT1JLIDEKKyNkZWZpbmUg
VVNFX0NGVVJMQ09OTkVDVElPTiAxCiAjZW5kaWYKIAotI2lmIFVTRShDRk5FVFdPUkspIHx8IFBM
QVRGT1JNKENPQ09BKQorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pIHx8IFBMQVRGT1JNKENPQ09B
KQogI2RlZmluZSBVU0VfQ0ZVUkxDQUNIRSAxCiAjZW5kaWYKIApAQCAtOTUxLDkgKzk0Nyw2IEBA
CiAjZGVmaW5lIFVTRV9QUk9URUNUSU9OX1NQQUNFX0FVVEhfQ0FMTEJBQ0sgMQogI2VuZGlmCiAK
LS8qIFNldCB1cCBhIGRlZmluZSBmb3IgYSBjb21tb24gZXJyb3IgdGhhdCBpcyBpbnRlbmRlZCB0
byBjYXVzZSBhIGJ1aWxkIGVycm9yIC0tIHRodXMgdGhlIHNwYWNlIGFmdGVyIEVycm9yLiAqLwot
I2RlZmluZSBXVEZfUExBVEZPUk1fQ0ZORVRXT1JLIEVycm9yIFVTRV9tYWNyb19zaG91bGRfYmVf
dXNlZF93aXRoX0NGTkVUV09SSwotCiAjaWYgUExBVEZPUk0oQ09DT0EpICYmIEhBVkUoQUNDRVNT
SUJJTElUWSkKICNkZWZpbmUgVVNFX0FDQ0VTU0lCSUxJVFlfQ09OVEVYVF9NRU5VUyAxCiAjZW5k
aWYKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1NjaGVkdWxlUGFpci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XVEYvd3RmL1NjaGVkdWxlUGFpci5oCShyZXZpc2lvbiAyMDcwMzkpCisrKyBTb3VyY2Uv
V1RGL3d0Zi9TY2hlZHVsZVBhaXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQAog
I2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KIAotI2lmIFBMQVRGT1JNKENPQ09BKSAmJiAhVVNFKENGTkVUV09SSykKKyNpZiBQ
TEFURk9STShDT0NPQSkKIE9CSkNfQ0xBU1MgTlNSdW5Mb29wOwogI2VuZGlmCiAKQEAgLTQ1LDcg
KzQ1LDcgQEAgY2xhc3MgU2NoZWR1bGVQYWlyIDogcHVibGljIFRocmVhZFNhZmVSZQogcHVibGlj
OgogICAgIHN0YXRpYyBSZWY8U2NoZWR1bGVQYWlyPiBjcmVhdGUoQ0ZSdW5Mb29wUmVmIHJ1bkxv
b3AsIENGU3RyaW5nUmVmIG1vZGUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2NoZWR1bGVQYWly
KHJ1bkxvb3AsIG1vZGUpKTsgfQogCi0jaWYgUExBVEZPUk0oQ09DT0EpICYmICFVU0UoQ0ZORVRX
T1JLKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHN0YXRpYyBSZWY8U2NoZWR1bGVQYWlyPiBj
cmVhdGUoTlNSdW5Mb29wKiBydW5Mb29wLCBDRlN0cmluZ1JlZiBtb2RlKSB7IHJldHVybiBhZG9w
dFJlZigqbmV3IFNjaGVkdWxlUGFpcihydW5Mb29wLCBtb2RlKSk7IH0KICAgICBOU1J1bkxvb3Aq
IG5zUnVuTG9vcCgpIGNvbnN0IHsgcmV0dXJuIG1fbnNSdW5Mb29wLmdldCgpOyB9CiAjZW5kaWYK
QEAgLTYzLDcgKzYzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIG1fbW9kZSA9IGFkb3B0Q0Yo
Q0ZTdHJpbmdDcmVhdGVDb3B5KDAsIG1vZGUpKTsKICAgICB9CiAKLSNpZiBQTEFURk9STShDT0NP
QSkgJiYgIVVTRShDRk5FVFdPUkspCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgV1RGX0VYUE9S
VF9QUklWQVRFIFNjaGVkdWxlUGFpcihOU1J1bkxvb3AqLCBDRlN0cmluZ1JlZik7CiAgICAgUmV0
YWluUHRyPE5TUnVuTG9vcCo+IG1fbnNSdW5Mb29wOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV1RG
L3d0Zi9TY2hlZHVsZVBhaXJNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvU2No
ZWR1bGVQYWlyTWFjLm1tCShyZXZpc2lvbiAyMDcwMzkpCisrKyBTb3VyY2UvV1RGL3d0Zi9TY2hl
ZHVsZVBhaXJNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTI5LDggKzI5LDYgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJTY2hlZHVsZVBhaXIuaCIKIAotI2lmICFVU0UoQ0ZORVRX
T1JLKQotCiBuYW1lc3BhY2UgV1RGIHsKIAogU2NoZWR1bGVQYWlyOjpTY2hlZHVsZVBhaXIoTlNS
dW5Mb29wKiBydW5Mb29wLCBDRlN0cmluZ1JlZiBtb2RlKQpAQCAtNDIsNSArNDAsMyBAQCBTY2hl
ZHVsZVBhaXI6OlNjaGVkdWxlUGFpcihOU1J1bkxvb3AqIHJ1CiB9CiAKIH0gLy8gbmFtZXNwYWNl
Ci0KLSNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjA3MDM5KQorKysgU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTY3IEBACisyMDE2LTEw
LTEwICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgUmVtb3ZlIGRlYWQgbmV0d29ya2luZyBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjMyNjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUaGVyZSBhcmUgbm8gbW9yZSBDb2NvYSBwbGF0Zm9ybXMg
dXNpbmcgQ0ZVUkxDb25uZWN0aW9uLgorICAgICAgICBVU0UoQ0ZORVRXT1JLKSBpcyBiZWluZyBy
ZXBsYWNlZCBieSBVU0UoQ0ZVUkxDT05ORUNUSU9OKSBhbmQgaXQgaXMgb25seSB1c2VkIG9uIHRo
ZSBBcHBsZVdpbiBwb3J0LgorCisgICAgICAgIE5vIGNoYW5nZSBpbiBiZWhhdmlvci4KKworICAg
ICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJD
b3JlUHJlZml4Lmg6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmg6CisgICAgICAg
ICogbG9hZGVyL0VtcHR5Q2xpZW50cy5oOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlckNs
aWVudC5oOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
KToKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIv
U3VicmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvY2YvUmVzb3VyY2VMb2FkZXJD
Rk5ldC5jcHA6CisgICAgICAgICogbG9hZGVyL2NvY29hL1N1YnJlc291cmNlTG9hZGVyQ29jb2Eu
bW06CisgICAgICAgIChXZWJDb3JlOjpTdWJyZXNvdXJjZUxvYWRlcjo6d2lsbENhY2hlUmVzcG9u
c2UpOiBEZWxldGVkLgorICAgICAgICAqIGxvYWRlci9tYWMvRG9jdW1lbnRMb2FkZXJNYWMuY3Bw
OgorICAgICAgICAqIGxvYWRlci9tYWMvUmVzb3VyY2VMb2FkZXJNYWMubW06CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6d2lsbENhY2hlUmVzcG9uc2UpOiBEZWxldGVkLgorICAg
ICAgICAqIHBhZ2UvbWFjL1BhZ2VNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpwbGF0
Zm9ybUluaXRpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6YWRkU2NoZWR1bGVQYWly
KToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnJlbW92ZVNjaGVkdWxlUGFpcik6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakM6OnNob3VsZFdhaXRGb3JSZXNwb25zZVRvQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29yZU5TVVJMQXV0aGVudGljYXRpb25D
aGFsbGVuZ2VDbGllbnQ6OmNyZWF0ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXZWJD
b3JlTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUNsaWVudDo6V2ViQ29yZU5TVVJMQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2VDbGllbnQpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL21h
Yy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9O
ZXR3b3JrU3RvcmFnZVNlc3Npb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Byb3Rl
Y3Rpb25TcGFjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUHJvdGVjdGlvblNwYWNl
QmFzZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5jcHA6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlSGFuZGxlQ2xpZW50Ojp3aWxsQ2FjaGVSZXNwb25zZSk6CisgICAgICAgIChXZWJD
b3JlOjpSZXNvdXJjZUhhbmRsZUNsaWVudDo6c2hvdWxkQ2FjaGVSZXNwb25zZSk6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmg6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUludGVybmFsOjpSZXNvdXJjZUhhbmRsZUludGVybmFsKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvQXV0aGVudGljYXRpb25DRi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTo6QXV0aGVudGljYXRpb25DaGFsbGVu
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQ0YpOgorICAgICAgICAoV2ViQ29yZTo6Y29y
ZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9BdXRoZW50aWNhdGlvbkNGLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvQ29va2llSmFyQ0ZOZXQuY3BwOgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvQ3JlZGVudGlhbFN0b3JhZ2VDRk5ldC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDcmVkZW50aWFsU3RvcmFnZTo6Z2V0RnJvbVBlcnNpc3RlbnRTdG9yYWdl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNyZWRlbnRpYWxTdG9yYWdlOjpzYXZlVG9QZXJzaXN0ZW50
U3RvcmFnZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9Mb2FkZXJS
dW5Mb29wQ0YuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvTG9hZGVyUnVuTG9v
cENGLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Np
b25DRk5ldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNv
b2tpZVN0b3JhZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvUHJvdGVjdGlvblNw
YWNlQ0ZOZXQuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvUHJvdGVjdGlvblNw
YWNlQ0ZOZXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3Iu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHA6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnNob3VsZFNuaWZmQ29ubmVjdGlvblByb3BlcnR5KToKKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpjcmVhdGVDRlVSTENvbm5lY3Rpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OnN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlJl
c291cmNlSGFuZGxlOjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OnRyeUhhbmRsZVBhc3N3b3JkQmFzZWRBdXRoZW50
aWNhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRDcmVk
ZW50aWFsKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpzY2hlZHVsZSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6dW5zY2hlZHVsZSk6IERl
bGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJM
Q29ubmVjdGlvbkRlbGVnYXRlLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jl
c291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3Bl
cmF0aW9uUXVldWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDRlVSTENv
bm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZTo6c2V0dXBSZXF1ZXN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3Bl
cmF0aW9uUXVldWU6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlOjpjYW5S
ZXNwb25kVG9Qcm90ZWN0aW9uU3BhY2UpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2Yv
UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5o
OgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Lmg6CisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q6OmVuY29kaW5nUmVxdWlyZXNQbGF0Zm9ybURh
dGEpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6ZmluZENGVVJMUmVxdWVzdENvcHlDb250ZW50RGlzcG9z
aXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXlGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUGxhdGZvcm1SZXF1ZXN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVQbGF0Zm9ybUhUVFBCb2R5KToKKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVSZXNvdXJjZVJlcXVlc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0OjpzZXRTdG9yYWdlU2Vzc2lvbik6CisgICAg
ICAgIChXZWJDb3JlOjpmaW5kQ0ZVUkxSZXF1ZXN0U2V0Q29udGVudERpc3Bvc2l0aW9uRW5jb2Rp
bmdGYWxsYmFja0FycmF5RnVuY3Rpb24pOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL2NmL1Jlc291cmNlUmVzcG9uc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2U6OlJlc291cmNlUmVzcG9uc2UpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2Yv
UmVzb3VyY2VSZXNwb25zZUNGTmV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2U6OmNmVVJMUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZTo6cGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm8pOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
Y2YvU3luY2hyb25vdXNMb2FkZXJDbGllbnRDRk5ldC5jcHA6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9jZi9TeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdh
dGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJM
Q29ubmVjdGlvbkRlbGVnYXRlOjpzZXR1cFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3lu
Y2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlOjpzZXR1cENvbm5l
Y3Rpb25TY2hlZHVsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OmFkanVzdE1JTUVUeXBlSWZOZWNl
c3NhcnkpOgorICAgICAgICAoV2ViQ29yZTo6U3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJM
Q29ubmVjdGlvbkRlbGVnYXRlOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29y
ZTo6U3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlOjp3aWxs
Q2FjaGVSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpTeW5jaHJvbm91c1Jlc291cmNlSGFu
ZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OmNhblJlc3BvbmRUb1Byb3RlY3Rpb25TcGFjZSk6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9TeW5jaHJvbm91c1Jlc291cmNlSGFuZGxl
Q0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2Nv
Y29hL0NyZWRlbnRpYWxDb2NvYS5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2Ev
Q3JlZGVudGlhbENvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6Q3JlZGVudGlhbDo6Q3JlZGVu
dGlhbCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDcmVkZW50aWFsOjpjZkNyZWRlbnRp
YWwpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvUHJvdGVjdGlv
blNwYWNlQ29jb2EuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Byb3RlY3Rp
b25TcGFjZUNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6UHJvdGVjdGlvblNwYWNlOjpQcm90
ZWN0aW9uU3BhY2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UHJvdGVjdGlvblNwYWNl
OjpjZlNwYWNlKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jl
c291cmNlUmVxdWVzdENvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
Ojpuc1VSTFJlcXVlc3QpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3Vy
Y2VSZXNwb25zZUNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZTo6
cGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm8pOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZTo6bnNVUkxSZXNwb25zZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlOjpSZXNvdXJjZVJlc3BvbnNlKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL2lvcy9RdWlja0xvb2suaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2lv
cy9RdWlja0xvb2subW06CisgICAgICAgICgtW1dlYlF1aWNrTG9va0hhbmRsZUFzRGVsZWdhdGUg
aW5pdFdpdGhDb25uZWN0aW9uRGVsZWdhdGU6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYlF1
aWNrTG9va0hhbmRsZUFzRGVsZWdhdGUgY29ubmVjdGlvbjpkaWRSZWNlaXZlRGF0YUFycmF5Ol0p
OiBEZWxldGVkLgorICAgICAgICAoLVtXZWJRdWlja0xvb2tIYW5kbGVBc0RlbGVnYXRlIGNvbm5l
Y3Rpb246ZGlkUmVjZWl2ZURhdGE6bGVuZ3RoUmVjZWl2ZWQ6XSk6IERlbGV0ZWQuCisgICAgICAg
ICgtW1dlYlF1aWNrTG9va0hhbmRsZUFzRGVsZWdhdGUgY29ubmVjdGlvbkRpZEZpbmlzaExvYWRp
bmc6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYlF1aWNrTG9va0hhbmRsZUFzRGVsZWdhdGUg
Y29ubmVjdGlvbjpkaWRGYWlsV2l0aEVycm9yOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtXZWJR
dWlja0xvb2tIYW5kbGVBc0RlbGVnYXRlIGRldGFjaEhhbmRsZV0pOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6UXVpY2tMb29rSGFuZGxlOjpjcmVhdGUpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6UXVpY2tMb29rSGFuZGxlOjpjZlJlc3BvbnNlKTogRGVsZXRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL2lvcy9SZXNvdXJjZUhhbmRsZUlPUy5tbTogUmVtb3ZlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2lvcy9SZXNvdXJjZVJlcXVlc3RJT1MubW06IFJlbW92
ZWQuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvQXV0aGVudGljYXRpb25NYWMubW06
CisgICAgICAgICgtW1dlYkNvcmVBdXRoZW50aWNhdGlvbkNsaWVudEFzQ2hhbGxlbmdlU2VuZGVy
IHNldENGQ2hhbGxlbmdlOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtXZWJDb3JlQXV0aGVudGlj
YXRpb25DbGllbnRBc0NoYWxsZW5nZVNlbmRlciBjZkNoYWxsZW5nZV0pOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6Y29yZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjptYWMpOiBE
ZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL0Nvb2tpZUphck1hYy5tbToK
KyAgICAgICAgKFdlYkNvcmU6OnNldENvb2tpZXNGcm9tRE9NKToKKyAgICAgICAgKFdlYkNvcmU6
OmNvb2tpZVN0b3JhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6YWRkQ29va2llKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9DcmVkZW50aWFsU3RvcmFnZU1hYy5tbToKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9Gb3JtRGF0YVN0cmVhbU1hYy5oOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvbWFjL0Zvcm1EYXRhU3RyZWFtTWFjLm1tOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvbWFjL1Jlc291cmNlRXJyb3JNYWMubW06CisgICAgICAgIChOU0Vycm9yRnJv
bUNGRXJyb3IpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VFcnJvcjo6UmVz
b3VyY2VFcnJvcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUVycm9yOjpu
c0Vycm9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlRXJyb3I6Om9wZXJh
dG9yIE5TRXJyb3IgKik6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMv
UmVzb3VyY2VIYW5kbGVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6
Y29udGludWVXaWxsQ2FjaGVSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhh
bmRsZTo6Z2V0Q29ubmVjdGlvblRpbWluZ0RhdGEpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvbWFjL1Jlc291cmNlUmVxdWVzdE1hYy5tbTogUmVtb3ZlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9TeW5jaHJvbm91c0xvYWRlckNsaWVudC5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OlN5bmNocm9ub3VzTG9hZGVyQ2xpZW50OjpwbGF0Zm9ybUJhZFJlc3BvbnNl
RXJyb3IpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhh
bmRsZUFzRGVsZWdhdGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3Jl
UmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlLm1tOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
bWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5oOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0
aW9uUXVldWVEZWxlZ2F0ZS5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJD
b3JlVVJMUmVzcG9uc2UubW06CisgICAgICAgIChXZWJDb3JlOjpzeW50aGVzaXplUmVkaXJlY3RS
ZXNwb25zZUlmTmVjZXNzYXJ5KToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vVGVtcG9yYXJ5TGlu
a1N0dWJzLmNwcDoKKyAgICAgICAgKiB0ZXN0aW5nL2pzL1dlYkNvcmVUZXN0U3VwcG9ydFByZWZp
eC5oOgorCiAyMDE2LTEwLTEwICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAg
ICAgICAgVXBkYXRlIEdhbWVwYWRFdmVudCB0byBzdG9wIHVzaW5nIGxlZ2FjeSBbQ29uc3RydWN0
b3JUZW1wbGF0ZT1FdmVudF0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmVQcmVmaXguaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlUHJlZml4LmgJKHJldmlzaW9uIDIw
NzAzOSkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmVQcmVmaXguaAkod29ya2luZyBjb3B5KQpA
QCAtMTgsNyArMTgsNyBAQAogICoKICAqLwogCi0vKiBUaGlzIHByZWZpeCBmaWxlIHNob3VsZCBj
b250YWluIG9ubHk6IAorLyogVGhpcyBwcmVmaXggZmlsZSBzaG91bGQgY29udGFpbiBvbmx5Ogog
ICogICAgMSkgZmlsZXMgdG8gcHJlY29tcGlsZSBmb3IgZmFzdGVyIGJ1aWxkcwogICogICAgMikg
aW4gb25lIGNhc2UgYXQgbGVhc3Q6IE9TLVgtc3BlY2lmaWMgcGVyZm9ybWFuY2UgYnVnIHdvcmth
cm91bmRzCiAgKiAgICAzKSB0aGUgc3BlY2lhbCB0cmljayB0byBjYXRjaCB1cyB1c2luZyBuZXcg
b3IgZGVsZXRlIHdpdGhvdXQgaW5jbHVkaW5nICJjb25maWcuaCIKQEAgLTEzMyw4ICsxMzMsOCBA
QAogI2Vsc2UKIAogI2lmIE9TKFdJTkRPV1MpCi0jaWYgVVNFKENHKQogCisjaWYgVVNFKENHKQog
Ly8gRklYTUUgPHJkYXI6Ly9wcm9ibGVtLzgyMDg4Njg+IFJlbW92ZSBzdXBwb3J0IGZvciBvYnNv
bGV0ZSBDb2xvclN5bmMgQVBJLCBDb3JlU2VydmljZXMgaGVhZGVyIGluIENvcmVHcmFwaGljcwog
Ly8gV2UgY2FuIHJlbW92ZSB0aGlzIG9uY2UgdGhlIG5ldyBDb2xvclN5bmMgQVBJcyBhcmUgYXZh
aWxhYmxlIGluIGFuIGludGVybmFsIFNhZmFyaSBTREsuCiAjaW5jbHVkZSA8Q29sb3JTeW5jL0Nv
bG9yU3luYy5oPgpAQCAtMTQzLDE5ICsxNDMsMjEgQEAKICNkZWZpbmUgT0JTT0xFVEVfQ09MT1JT
WU5DX0FQSQogI2VuZGlmCiAjZW5kaWYKLSNpZiBVU0UoQ0ZORVRXT1JLKQotLyogV2luZG93cyBk
b2Vzbid0IGluY2x1ZGUgQ0ZOZXR3b3JrLmggdmlhIENvcmVTZXJ2aWNlcy5oLCBzbyB3ZSBkbwot
ICAgaXQgZXhwbGljaXRseSBoZXJlIHRvIG1ha2UgV2luZG93cyBtb3JlIGNvbnNpc3RlbnQgd2l0
aCBNYWMuICovCisKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogI2luY2x1ZGUgPENGTmV0d29y
ay9DRk5ldHdvcmsuaD4KIC8vIE9uIFdpbmRvd3MsIGRpc3BhdGNoLmggbmVlZHMgdG8gYmUgaW5j
bHVkZWQgYmVmb3JlIGNlcnRhaW4gQ0ZOZXR3b3JrIGhlYWRlcnMuCiAjaW5jbHVkZSA8ZGlzcGF0
Y2gvZGlzcGF0Y2guaD4KICNlbmRpZgorCiAjaW5jbHVkZSA8d2luZG93cy5oPgotI2Vsc2UKLSNp
ZiAhUExBVEZPUk0oSU9TKQorCisjZWxpZiAhUExBVEZPUk0oSU9TKQorCiAjaW5jbHVkZSA8Q29y
ZVNlcnZpY2VzL0NvcmVTZXJ2aWNlcy5oPgotI2VuZGlmIC8vICFQTEFURk9STShJT1MpCi0jZW5k
aWYgLy8gT1MoV0lORE9XUykKKworI2VuZGlmCisKIAogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9u
IDIwNzAzOSkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjAyMSw3ICsyMDIxLDYgQEAKIAkJNTE0Qzc2NEYwQ0U5
MjM0RTAwN0VGM0NEIC8qIEZvcm1EYXRhU3RyZWFtTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE0Qzc2NDUwQ0U5MjM0RTAwN0VGM0NEIC8qIEZv
cm1EYXRhU3RyZWFtTWFjLm1tICovOyB9OwogCQk1MTRDNzY1MDBDRTkyMzRFMDA3RUYzQ0QgLyog
UmVzb3VyY2VFcnJvck1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUxNEM3NjQ2MENFOTIzNEUwMDdFRjNDRCAvKiBSZXNvdXJjZUVycm9yTWFjLm1t
ICovOyB9OwogCQk1MTRDNzY1MTBDRTkyMzRFMDA3RUYzQ0QgLyogUmVzb3VyY2VIYW5kbGVNYWMu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTRDNzY0
NzBDRTkyMzRFMDA3RUYzQ0QgLyogUmVzb3VyY2VIYW5kbGVNYWMubW0gKi87IH07Ci0JCTUxNEM3
NjUzMENFOTIzNEUwMDdFRjNDRCAvKiBSZXNvdXJjZVJlcXVlc3RNYWMubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTRDNzY0OTBDRTkyMzRFMDA3RUYz
Q0QgLyogUmVzb3VyY2VSZXF1ZXN0TWFjLm1tICovOyB9OwogCQk1MTRDNzY2RDBDRTkyM0ExMDA3
RUYzQ0QgLyogQ3JlZGVudGlhbEJhc2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTE0Qzc2NTgwQ0U5MjNBMTAwN0VGM0NEIC8qIENyZWRlbnRpYWxC
YXNlLmNwcCAqLzsgfTsKIAkJNTE0Qzc2NkUwQ0U5MjNBMTAwN0VGM0NEIC8qIENyZWRlbnRpYWwu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNEM3NjU5
MENFOTIzQTEwMDdFRjNDRCAvKiBDcmVkZW50aWFsLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTE0Qzc2NkYwQ0U5MjNBMTAwN0VGM0NEIC8qIEZv
cm1EYXRhLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxNEM3NjVBMENFOTIzQTEwMDdFRjNDRCAvKiBGb3JtRGF0YS5jcHAgKi87IH07CkBAIC0yODA4
LDcgKzI4MDcsNiBAQAogCQk3RDRDOTZERDFBRDQ0ODM1MDAzNjVBNTAgLyogSlNGZXRjaEhlYWRl
cnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdENEM5
NkQ5MUFENDQ4MzUwMDM2NUE1MCAvKiBKU0ZldGNoSGVhZGVycy5oICovOyB9OwogCQk3RDc0MUJE
QTE3NzIyNkFBMDA4NTkxNzAgLyogQ1NTVmFsdWVLZXl3b3Jkcy5oIGluIENvcHkgR2VuZXJhdGVk
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU2NTgxNDgwOUQx
MzA0MzAwMEU2MUQ3IC8qIENTU1ZhbHVlS2V5d29yZHMuaCAqLzsgfTsKIAkJN0UzN0VGMkUxMzM5
MjA4ODAwQjI5MjUwIC8qIFN1YnJlc291cmNlTG9hZGVyQ0YuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0UzN0VGMkQxMzM5MjA4ODAwQjI5MjUwIC8q
IFN1YnJlc291cmNlTG9hZGVyQ0YuY3BwICovOyB9OwotCQk3RTQyOENFNTEzRTM0MDdGMDAzQjY2
MUMgLyogUmVzb3VyY2VIYW5kbGVJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3RTQyOENFNDEzRTM0MDdGMDAzQjY2MUMgLyogUmVzb3VyY2VIYW5k
bGVJT1MubW0gKi87IH07CiAJCTdFNDZGNkZBMTYyN0EyQ0EwMDA2MjIyMyAvKiBKU09FU0VsZW1l
bnRJbmRleFVpbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gN0U0NkY2RjgxNjI3QTJDOTAwMDYyMjIzIC8qIEpTT0VTRWxlbWVudEluZGV4VWludC5j
cHAgKi87IH07CiAJCTdFNDZGNkZCMTYyN0EyQ0EwMDA2MjIyMyAvKiBKU09FU0VsZW1lbnRJbmRl
eFVpbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdF
NDZGNkY5MTYyN0EyQzkwMDA2MjIyMyAvKiBKU09FU0VsZW1lbnRJbmRleFVpbnQuaCAqLzsgfTsK
IAkJN0U0NzRFMUUxMjQ5NERDOTAwMjM1MzY0IC8qIFNRTGl0ZURhdGFiYXNlVHJhY2tlckNsaWVu
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0U0NzRF
MUIxMjQ5NERDOTAwMjM1MzY0IC8qIFNRTGl0ZURhdGFiYXNlVHJhY2tlckNsaWVudC5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0yODI2LDcgKzI4
MjQsNiBAQAogCQk3RTY2RTIzNDE2RDZFQjZDMDBGN0U3RkYgLyogV2ViR0xDb21wcmVzc2VkVGV4
dHVyZUFUQy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
N0U2NkUyMzIxNkQ2RUI2QzAwRjdFN0ZGIC8qIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEMuaCAq
LzsgfTsKIAkJN0U2NkUyMzQxN0U2RUI2QzAwRjdFN0ZGIC8qIFdlYkdMQ29tcHJlc3NlZFRleHR1
cmVQVlJUQy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
N0U2NkUyMzIxN0U2RUI2QzAwRjdFN0ZGIC8qIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQy5o
ICovOyB9OwogCQk3RTdERTFGRDE5NUNFRjI2MDAzNTM2M0IgLyogUmVzb3VyY2VSZXF1ZXN0Q29j
b2EubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RTdE
RTFGQzE5NUNFRjI2MDAzNTM2M0IgLyogUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0gKi87IH07Ci0J
CTdFN0RFMjAyMTk1Q0VGQ0QwMDM1MzYzQiAvKiBSZXNvdXJjZVJlcXVlc3RJT1MubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RTdERTIwMTE5NUNFRkNE
MDAzNTM2M0IgLyogUmVzb3VyY2VSZXF1ZXN0SU9TLm1tICovOyB9OwogCQk3RThGQURDNDE5OUE5
NUIxMDA3MTQ5NjggLyogU3VicmVzb3VyY2VMb2FkZXJDb2NvYS5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFOEZBREMzMTk5QTk1QjEwMDcxNDk2OCAv
KiBTdWJyZXNvdXJjZUxvYWRlckNvY29hLm1tICovOyB9OwogCQk3RTk5QUY1MTBCMTM4NDY0NjhG
QjAxQTUgLyogV2luZG93Rm9jdXNBbGxvd2VkSW5kaWNhdG9yLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFOTlBRjUyMEIxMzg0NjQ2OEZCMDFBNSAv
KiBXaW5kb3dGb2N1c0FsbG93ZWRJbmRpY2F0b3IuY3BwICovOyB9OwogCQk3RTk5QUY1MzBCMTM4
NDY0NjhGQjAxQTUgLyogV2luZG93Rm9jdXNBbGxvd2VkSW5kaWNhdG9yLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RTk5QUY1NDBCMTM4NDY0NjhGQjAx
QTUgLyogV2luZG93Rm9jdXNBbGxvd2VkSW5kaWNhdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTI4NDcsNyArMjg0NCw2IEBACiAJCTdFRTY4
NDY5MTJEMjZFMzgwMEU3OTQxNSAvKiBMb2FkZXJSdW5Mb29wQ0YuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFRTY4NDU2MTJEMjZFMzgwMEU3OTQxNSAv
KiBMb2FkZXJSdW5Mb29wQ0YuaCAqLzsgfTsKIAkJN0VFNjg0NkExMkQyNkUzODAwRTc5NDE1IC8q
IFJlc291cmNlRXJyb3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDdFRTY4NDU3MTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZUVycm9yLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0VFNjg0NkIxMkQy
NkUzODAwRTc5NDE1IC8qIFJlc291cmNlRXJyb3JDRi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RUU2ODQ1ODEyRDI2RTM4MDBFNzk0MTUgLyogUmVz
b3VyY2VFcnJvckNGLmNwcCAqLzsgfTsKLQkJN0VFNjg0NkMxMkQyNkUzODAwRTc5NDE1IC8qIFJl
c291cmNlSGFuZGxlQ0ZOZXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gN0VFNjg0NTkxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlSGFuZGxlQ0ZO
ZXQuY3BwICovOyB9OwogCQk3RUU2ODQ2RDEyRDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VSZXF1
ZXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RUU2
ODQ1QTEyRDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VSZXF1ZXN0LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0VFNjg0NkUxMkQyNkUzODAwRTc5
NDE1IC8qIFJlc291cmNlUmVxdWVzdENGTmV0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFRTY4NDVCMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJj
ZVJlcXVlc3RDRk5ldC5jcHAgKi87IH07CiAJCTdFRTY4NDZGMTJEMjZFMzgwMEU3OTQxNSAvKiBS
ZXNvdXJjZVJlcXVlc3RDRk5ldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gN0VFNjg0NUMxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlUmVxdWVzdENG
TmV0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAg
LTkwNjIsNyArOTA1OCw2IEBACiAJCTUxNEM3NjQ1MENFOTIzNEUwMDdFRjNDRCAvKiBGb3JtRGF0
YVN0cmVhbU1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEZv
cm1EYXRhU3RyZWFtTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTRDNzY0
NjBDRTkyMzRFMDA3RUYzQ0QgLyogUmVzb3VyY2VFcnJvck1hYy5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFJlc291cmNlRXJyb3JNYWMubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTUxNEM3NjQ3MENFOTIzNEUwMDdFRjNDRCAvKiBSZXNvdXJjZUhh
bmRsZU1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFJlc291
cmNlSGFuZGxlTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MTRDNzY0OTBD
RTkyMzRFMDA3RUYzQ0QgLyogUmVzb3VyY2VSZXF1ZXN0TWFjLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gUmVzb3VyY2VSZXF1ZXN0TWFjLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1MTRDNzY1ODBDRTkyM0ExMDA3RUYzQ0QgLyogQ3JlZGVudGlh
bEJhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ3JlZGVudGlh
bEJhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTRDNzY1OTBDRTkyM0Ex
MDA3RUYzQ0QgLyogQ3JlZGVudGlhbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBDcmVkZW50aWFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNEM3NjVBMENF
OTIzQTEwMDdFRjNDRCAvKiBGb3JtRGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBGb3JtRGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05
OTQ2LDcgKzk5NDEsNiBAQAogCQk3RDRDOTZEODFBRDQ0ODM1MDAzNjVBNTAgLyogSlNGZXRjaEhl
YWRlcnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNGZXRjaEhl
YWRlcnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3RDRDOTZEOTFBRDQ0ODM1
MDAzNjVBNTAgLyogSlNGZXRjaEhlYWRlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSlNGZXRjaEhlYWRlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0Uz
N0VGMkQxMzM5MjA4ODAwQjI5MjUwIC8qIFN1YnJlc291cmNlTG9hZGVyQ0YuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3VicmVzb3VyY2VMb2FkZXJDRi5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTdFNDI4Q0U0MTNFMzQwN0YwMDNCNjYxQyAvKiBS
ZXNvdXJjZUhhbmRsZUlPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IFJlc291cmNlSGFuZGxlSU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
RTQ2RjZGODE2MjdBMkM5MDAwNjIyMjMgLyogSlNPRVNFbGVtZW50SW5kZXhVaW50LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTT0VTRWxlbWVudEluZGV4VWludC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFNDZGNkY5MTYyN0EyQzkwMDA2MjIy
MyAvKiBKU09FU0VsZW1lbnRJbmRleFVpbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSlNPRVNFbGVtZW50SW5kZXhVaW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTdFNDc0RTFCMTI0OTREQzkwMDIzNTM2NCAvKiBTUUxpdGVEYXRhYmFzZVRyYWNrZXJDbGll
bnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1FMaXRlRGF0YWJhc2VUcmFj
a2VyQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05OTY0LDcgKzk5NTgs
NiBAQAogCQk3RTY2RTIzMjE2RDZFQjZDMDBGN0U3RkYgLyogV2ViR0xDb21wcmVzc2VkVGV4dHVy
ZUFUQy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHTENvbXByZXNzZWRU
ZXh0dXJlQVRDLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFNjZFMjMyMTdFNkVC
NkMwMEY3RTdGRiAvKiBXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFN0RFMUZDMTk1Q0VGMjYwMDM1MzYzQiAvKiBSZXNv
dXJjZVJlcXVlc3RDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IFJlc291cmNlUmVxdWVzdENvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQk3RTdERTIwMTE5NUNFRkNEMDAzNTM2M0IgLyogUmVzb3VyY2VSZXF1ZXN0SU9TLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUmVzb3VyY2VSZXF1ZXN0SU9TLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3RThGQURDMzE5OUE5NUIxMDA3MTQ5Njgg
LyogU3VicmVzb3VyY2VMb2FkZXJDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IFN1YnJlc291cmNlTG9hZGVyQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTdFOTlBRjUyMEIxMzg0NjQ2OEZCMDFBNSAvKiBXaW5kb3dGb2N1c0FsbG93
ZWRJbmRpY2F0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2lu
ZG93Rm9jdXNBbGxvd2VkSW5kaWNhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJN0U5OUFGNTQwQjEzODQ2NDY4RkIwMUE1IC8qIFdpbmRvd0ZvY3VzQWxsb3dlZEluZGljYXRv
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXaW5kb3dGb2N1c0FsbG93ZWRJ
bmRpY2F0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTk5ODcsNyArOTk4MCw2
IEBACiAJCTdFRTY4NDU2MTJEMjZFMzgwMEU3OTQxNSAvKiBMb2FkZXJSdW5Mb29wQ0YuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTG9hZGVyUnVuTG9vcENGLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFRTY4NDU3MTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJj
ZUVycm9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlc291cmNlRXJyb3Iu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0VFNjg0NTgxMkQyNkUzODAwRTc5NDE1
IC8qIFJlc291cmNlRXJyb3JDRi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBSZXNvdXJjZUVycm9yQ0YuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3
RUU2ODQ1OTEyRDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZXNvdXJjZUhhbmRsZUNGTmV0LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0VFNjg0NUExMkQyNkUzODAwRTc5NDE1IC8q
IFJlc291cmNlUmVxdWVzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZXNv
dXJjZVJlcXVlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0VFNjg0NUIxMkQy
NkUzODAwRTc5NDE1IC8qIFJlc291cmNlUmVxdWVzdENGTmV0LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlc291cmNlUmVxdWVzdENGTmV0LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0VFNjg0NUMxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNl
UmVxdWVzdENGTmV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlc291cmNl
UmVxdWVzdENGTmV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNjIzNCw4ICsx
NjIyNiw2IEBACiAJCQkJNDQyQUY3QTcxMDJDRERFQTAwOEZENEQzIC8qIFF1aWNrTG9vay5oICov
LAogCQkJCTQ0MkFGN0E4MTAyQ0RERUEwMDhGRDREMyAvKiBRdWlja0xvb2subW0gKi8sCiAJCQkJ
QTEwREJGNDYxOEY5MjMxNzAwMEQ3MEM2IC8qIFF1aWNrTG9va0hhbmRsZUNsaWVudC5oICovLAot
CQkJCTdFNDI4Q0U0MTNFMzQwN0YwMDNCNjYxQyAvKiBSZXNvdXJjZUhhbmRsZUlPUy5tbSAqLywK
LQkJCQk3RTdERTIwMTE5NUNFRkNEMDAzNTM2M0IgLyogUmVzb3VyY2VSZXF1ZXN0SU9TLm1tICov
LAogCQkJCTQ0QTIwREI4MEY4NDE2NkMwMEIzRTFGRSAvKiBXZWJDb3JlVVJMUmVzcG9uc2VJT1Mu
aCAqLywKIAkJCQk0NDRENEUyMTBGNzA4QjJFMDAzMTU4RTAgLyogV2ViQ29yZVVSTFJlc3BvbnNl
SU9TLm1tICovLAogCQkJKTsKQEAgLTE3MTUwLDcgKzE3MTQwLDYgQEAKIAkJCQkxQTdGQTY0NzBE
REEzQ0JBMDAyOEY4QTUgLyogTmV0d29ya1N0YXRlTm90aWZpZXJNYWMuY3BwICovLAogCQkJCTUx
NEM3NjQ2MENFOTIzNEUwMDdFRjNDRCAvKiBSZXNvdXJjZUVycm9yTWFjLm1tICovLAogCQkJCTUx
NEM3NjQ3MENFOTIzNEUwMDdFRjNDRCAvKiBSZXNvdXJjZUhhbmRsZU1hYy5tbSAqLywKLQkJCQk1
MTRDNzY0OTBDRTkyMzRFMDA3RUYzQ0QgLyogUmVzb3VyY2VSZXF1ZXN0TWFjLm1tICovLAogCQkJ
CUUxODA4MTE0MTZGQ0Y5Q0IwMEI4MEQwNyAvKiBTeW5jaHJvbm91c0xvYWRlckNsaWVudC5tbSAq
LywKIAkJCQkxRkFGQkYxNjE1QTVGQTUyMDAwODNBMjAgLyogVVRJVXRpbGl0aWVzLmggKi8sCiAJ
CQkJMUZBRkJGMTcxNUE1RkE1MjAwMDgzQTIwIC8qIFVUSVV0aWxpdGllcy5tbSAqLywKQEAgLTIx
MDEyLDcgKzIxMDAxLDYgQEAKIAkJCQkxQUY4RTFDMTEyNTY3M0UwMDAyMzBGRjcgLyogUHJveHlT
ZXJ2ZXJDRk5ldC5jcHAgKi8sCiAJCQkJN0VFNjg0NTcxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291
cmNlRXJyb3IuaCAqLywKIAkJCQk3RUU2ODQ1ODEyRDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VF
cnJvckNGLmNwcCAqLywKLQkJCQk3RUU2ODQ1OTEyRDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VI
YW5kbGVDRk5ldC5jcHAgKi8sCiAJCQkJMjZGQUU0QzgxODUyRTNBNTAwNEM4QzQ2IC8qIFJlc291
cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuY3BwICovLAogCQkJCTI2RkFFNEM5MTg1
MkUzQTUwMDRDOEM0NiAvKiBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmgg
Ki8sCiAJCQkJMjZDMTVDRjQxODU3RTE1RDAwRjE1QzAzIC8qIFJlc291cmNlSGFuZGxlQ0ZVUkxD
b25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuY3BwICovLApAQCAtMjk5MTYsMTEg
KzI5OTA0LDkgQEAKIAkJCQk3RUU2ODQ2QjEyRDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VFcnJv
ckNGLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxNEM3NjUwMENFOTIzNEUwMDdFRjNDRCAvKiBS
ZXNvdXJjZUVycm9yTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE0Qzc2NzgwQ0U5MjNBMTAw
N0VGM0NEIC8qIFJlc291cmNlSGFuZGxlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTdFRTY4NDZD
MTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZUhhbmRsZUNGTmV0LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTI2RkFFNENDMTg1MkUzQTUwMDRDOEM0NiAvKiBSZXNvdXJjZUhhbmRsZUNGVVJMQ29u
bmVjdGlvbkRlbGVnYXRlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTI2QzE1Q0Y2MTg1N0UxNUQw
MEYxNUMwMyAvKiBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJh
dGlvblF1ZXVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxQkEwMDMxMTZGQjkyQUMwMEJBN0Ez
NSAvKiBSZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk3RTQyOENF
NTEzRTM0MDdGMDAzQjY2MUMgLyogUmVzb3VyY2VIYW5kbGVJT1MubW0gaW4gU291cmNlcyAqLywK
IAkJCQk1MTRDNzY1MTBDRTkyMzRFMDA3RUYzQ0QgLyogUmVzb3VyY2VIYW5kbGVNYWMubW0gaW4g
U291cmNlcyAqLywKIAkJCQk5M0UyMjdFMzBBRjU4OUFEMDBENDgzMjQgLyogUmVzb3VyY2VMb2Fk
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0VFNjg0NzUxMkQyNkU3MDAwRTc5NDE1IC8qIFJl
c291cmNlTG9hZGVyQ0ZOZXQuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yOTkzMyw4ICsyOTkxOSw2
IEBACiAJCQkJNTE0Qzc2N0MwQ0U5MjNBMTAwN0VGM0NEIC8qIFJlc291cmNlUmVxdWVzdEJhc2Uu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0VFNjg0NkUxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291
cmNlUmVxdWVzdENGTmV0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdFN0RFMUZEMTk1Q0VGMjYw
MDM1MzYzQiAvKiBSZXNvdXJjZVJlcXVlc3RDb2NvYS5tbSBpbiBTb3VyY2VzICovLAotCQkJCTdF
N0RFMjAyMTk1Q0VGQ0QwMDM1MzYzQiAvKiBSZXNvdXJjZVJlcXVlc3RJT1MubW0gaW4gU291cmNl
cyAqLywKLQkJCQk1MTRDNzY1MzBDRTkyMzRFMDA3RUYzQ0QgLyogUmVzb3VyY2VSZXF1ZXN0TWFj
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE0Qzc2N0UwQ0U5MjNBMTAwN0VGM0NEIC8qIFJlc291
cmNlUmVzcG9uc2VCYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdFRTY4NDcxMTJEMjZFMzgw
MEU3OTQxNSAvKiBSZXNvdXJjZVJlc3BvbnNlQ0ZOZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QTFGNzhEMEMxQzI1NDI0QzAwMjQ1NDQ2IC8qIFJlc291cmNlUmVzcG9uc2VDb2NvYS5tbSBpbiBT
b3VyY2VzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgJKHJl
dmlzaW9uIDIwNzAzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC01NSw3ICs1NSw3IEBACiAjaW5jbHVkZSAiUXVpY2tMb29rLmgi
CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKENPQ09BKSAmJiAhVVNFKENGTkVUV09SSykKKyNpZiBQ
TEFURk9STShDT0NPQSkKICNpbmNsdWRlIDx3dGYvU2NoZWR1bGVQYWlyLmg+CiAjZW5kaWYKIApA
QCAtMTQ1LDcgKzE0NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBzZXRUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJik7CiAgICAgICAg
IGNvbnN0IFN0cmluZyYgb3ZlcnJpZGVFbmNvZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fb3ZlcnJp
ZGVFbmNvZGluZzsgfQogCi0jaWYgUExBVEZPUk0oQ09DT0EpICYmICFVU0UoQ0ZORVRXT1JLKQor
I2lmIFBMQVRGT1JNKENPQ09BKQogICAgICAgICB2b2lkIHNjaGVkdWxlKFNjaGVkdWxlUGFpciYp
OwogICAgICAgICB2b2lkIHVuc2NoZWR1bGUoU2NoZWR1bGVQYWlyJik7CiAjZW5kaWYKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgJKHJldmlzaW9uIDIwNzAzOSkKKysrIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAkod29ya2luZyBjb3B5KQpAQCAtNDAz
LDcgKzQwMyw3IEBAIHB1YmxpYzoKICAgICBSZW1vdGVBWE9iamVjdFJlZiBhY2Nlc3NpYmlsaXR5
UmVtb3RlT2JqZWN0KCkgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQogICAgIE5TQ2FjaGVk
VVJMUmVzcG9uc2UqIHdpbGxDYWNoZVJlc3BvbnNlKERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQg
bG9uZywgTlNDYWNoZWRVUkxSZXNwb25zZSogcmVzcG9uc2UpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIHJlc3BvbnNlOyB9CiAjZW5kaWYKLSNpZiBQTEFURk9STShXSU4pICYmIFVTRShDRk5FVFdP
UkspCisjaWYgUExBVEZPUk0oV0lOKSAmJiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogICAgIC8vIEZJ
WE1FOiBXaW5kb3dzIHNob3VsZCB1c2Ugd2lsbENhY2hlUmVzcG9uc2UgLSA8aHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU3MjU3Pi4KICAgICBib29sIHNob3VsZENhY2hl
UmVzcG9uc2UoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nLCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiwgY29uc3QgdW5zaWduZWQgY2hhciosIHVuc2lnbmVkIGxvbmcgbG9uZykgb3ZlcnJp
ZGUgeyByZXR1cm4gdHJ1ZTsgfQogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXJDbGllbnQuaAkocmV2aXNpb24gMjA3MDM5KQorKysgU291cmNlL1dlYkNvcmUv
bG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI5Nyw3ICsyOTcs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgTlNDYWNoZWRVUkxSZXNw
b25zZSogd2lsbENhY2hlUmVzcG9uc2UoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlk
ZW50aWZpZXIsIE5TQ2FjaGVkVVJMUmVzcG9uc2UqKSBjb25zdCA9IDA7CiAgICAgICAgIHZpcnR1
YWwgTlNEaWN0aW9uYXJ5ICpkYXRhRGV0ZWN0aW9uQ29udGV4dCgpIHsgcmV0dXJuIG51bGxwdHI7
IH0KICNlbmRpZgotI2lmIFBMQVRGT1JNKFdJTikgJiYgVVNFKENGTkVUV09SSykKKyNpZiBQTEFU
Rk9STShXSU4pICYmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAgICAgICAgIC8vIEZJWE1FOiBXaW5k
b3dzIHNob3VsZCB1c2Ugd2lsbENhY2hlUmVzcG9uc2UgLSA8aHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTU3MjU3Pi4KICAgICAgICAgdmlydHVhbCBib29sIHNob3VsZENh
Y2hlUmVzcG9uc2UoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmLCBjb25zdCB1bnNpZ25lZCBjaGFyKiBkYXRhLCB1bnNpZ25l
ZCBsb25nIGxvbmcgbGVuZ3RoKSA9IDA7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9SZXNvdXJjZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1Jlc291cmNlTG9hZGVyLmNwcAkocmV2aXNpb24gMjA3MDM5KQorKysgU291cmNlL1dlYkNv
cmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzE1LDEyICs3
MTUsOCBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQXV0aGVudGljCiAgICAgfQog
ICAgIC8vIE9ubHkgdGhlc2UgcGxhdGZvcm1zIHByb3ZpZGUgYSB3YXkgdG8gY29udGludWUgd2l0
aG91dCBjcmVkZW50aWFscy4KICAgICAvLyBJZiB3ZSBjYW4ndCBjb250aW51ZSB3aXRoIGNyZWRl
bnRpYWxzLCB3ZSBuZWVkIHRvIGNhbmNlbCB0aGUgbG9hZCBhbHRvZ2V0aGVyLgotI2lmIFBMQVRG
T1JNKENPQ09BKSB8fCBVU0UoQ0ZORVRXT1JLKSB8fCBVU0UoQ1VSTCkgfHwgUExBVEZPUk0oR1RL
KSB8fCBQTEFURk9STShFRkwpCiAgICAgY2hhbGxlbmdlLmF1dGhlbnRpY2F0aW9uQ2xpZW50KCkt
PnJlY2VpdmVkUmVxdWVzdFRvQ29udGludWVXaXRob3V0Q3JlZGVudGlhbChjaGFsbGVuZ2UpOwog
ICAgIEFTU0VSVCghbV9oYW5kbGUgfHwgIW1faGFuZGxlLT5oYXNBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSgpKTsKLSNlbHNlCi0gICAgZGlkRmFpbChibG9ja2VkRXJyb3IoKSk7Ci0jZW5kaWYKIH0K
IAogI2lmIFVTRShQUk9URUNUSU9OX1NQQUNFX0FVVEhfQ0FMTEJBQ0spCkBAIC03NDcsNyArNzQz
LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6cmVjZWl2ZWRDYW5jZWxsYXRpbwogICAgIGNhbmNl
bCgpOwogfQogCi0jaWYgUExBVEZPUk0oQ09DT0EpICYmICFVU0UoQ0ZORVRXT1JLKQorI2lmIFBM
QVRGT1JNKENPQ09BKQogCiB2b2lkIFJlc291cmNlTG9hZGVyOjpzY2hlZHVsZShTY2hlZHVsZVBh
aXImIHBhaXIpCiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaAko
cmV2aXNpb24gMjA3MDM5KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTE0Myw3ICsxNDMsNyBAQCBwdWJsaWM6CiAKICAgICBjb25z
dCBMb2FkVGltaW5nJiBsb2FkVGltaW5nKCkgeyByZXR1cm4gbV9sb2FkVGltaW5nOyB9CiAKLSNp
ZiBQTEFURk9STShDT0NPQSkgJiYgIVVTRShDRk5FVFdPUkspCisjaWYgUExBVEZPUk0oQ09DT0Ep
CiAgICAgdm9pZCBzY2hlZHVsZShXVEY6OlNjaGVkdWxlUGFpciYpOwogICAgIHZvaWQgdW5zY2hl
ZHVsZShXVEY6OlNjaGVkdWxlUGFpciYpOwogI2VuZGlmCkBAIC0xNjMsMTIgKzE2Myw5IEBAIHBy
b3RlY3RlZDoKIAogICAgIGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucygpIHsg
cmV0dXJuIG1fb3B0aW9uczsgfQogCi0jaWYgUExBVEZPUk0oQ09DT0EpICYmICFVU0UoQ0ZORVRX
T1JLKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIE5TQ2FjaGVkVVJMUmVzcG9uc2UqIHdpbGxD
YWNoZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlKiwgTlNDYWNoZWRVUkxSZXNwb25zZSopIG92ZXJy
aWRlOwogI2VuZGlmCi0jaWYgUExBVEZPUk0oQ09DT0EpICYmIFVTRShDRk5FVFdPUkspCi0gICAg
Q0ZDYWNoZWRVUkxSZXNwb25zZVJlZiB3aWxsQ2FjaGVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSos
IENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYpIG92ZXJyaWRlOwotI2VuZGlmCiAKICAgICB2aXJ0dWFs
IHZvaWQgd2lsbFNlbmRSZXF1ZXN0SW50ZXJuYWwoUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSk7CiAKQEAgLTIwOCw3ICsyMDUsNyBAQCBw
cml2YXRlOgogI2lmIFBMQVRGT1JNKElPUykKICAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVm
PiBjb25uZWN0aW9uUHJvcGVydGllcyhSZXNvdXJjZUhhbmRsZSopIG92ZXJyaWRlOwogI2VuZGlm
Ci0jaWYgUExBVEZPUk0oV0lOKSAmJiBVU0UoQ0ZORVRXT1JLKQorI2lmIFBMQVRGT1JNKFdJTikg
JiYgVVNFKENGVVJMQ09OTkVDVElPTikKICAgICAvLyBGSVhNRTogV2luZG93cyBzaG91bGQgdXNl
IHdpbGxDYWNoZVJlc3BvbnNlIC0gPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD01NzI1Nz4uCiAgICAgYm9vbCBzaG91bGRDYWNoZVJlc3BvbnNlKFJlc291cmNlSGFuZGxl
KiwgQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZikgb3ZlcnJpZGU7CiAjZW5kaWYKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oCShyZXZpc2lvbiAyMDcwMzkpCisr
KyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtNzQsMTIgKzc0LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdpbGxDYW5jZWwoY29uc3Qg
UmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkQ2FuY2VsKGNvbnN0IFJlc291
cmNlRXJyb3ImKSBvdmVycmlkZTsKIAotI2lmIFBMQVRGT1JNKENPQ09BKSAmJiAhVVNFKENGTkVU
V09SSykKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICBOU0NhY2hlZFVSTFJlc3BvbnNlICp3aWxs
Q2FjaGVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSosIE5TQ2FjaGVkVVJMUmVzcG9uc2UqKSBvdmVy
cmlkZTsKICNlbmRpZgotI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBVU0UoQ0ZORVRXT1JLKQotICAg
IENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYgd2lsbENhY2hlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUq
LCBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmKSBvdmVycmlkZTsKLSNlbmRpZgogCiAjaWYgVVNFKE5F
VFdPUktfQ0ZEQVRBX0FSUkFZX0NBTExCQUNLKQogICAgIGJvb2wgc3VwcG9ydHNEYXRhQXJyYXko
KSBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2YvUmVzb3VyY2VMb2FkZXJDRk5ldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NmL1Jlc291cmNlTG9hZGVyQ0ZOZXQuY3BwCShyZXZpc2lvbiAyMDcwMzkpCisrKyBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2YvUmVzb3VyY2VMb2FkZXJDRk5ldC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI2LDE1ICsyNiwxMyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IlJlc291cmNlTG9hZGVyLmgiCiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQorI2lmIFVTRShDRlVSTENP
Tk5FQ1RJT04pCiAKICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgogI2luY2x1ZGUgIkZyYW1lTG9h
ZGVyQ2xpZW50LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotI2lmIFBMQVRGT1JNKFdJTikK
LQogYm9vbCBSZXNvdXJjZUxvYWRlcjo6c2hvdWxkQ2FjaGVSZXNwb25zZShSZXNvdXJjZUhhbmRs
ZSosIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYgY2FjaGVkUmVzcG9uc2UpCiB7CiAgICAgaWYgKG1f
b3B0aW9ucy5zZW5kTG9hZENhbGxiYWNrcyA9PSBEb05vdFNlbmRDYWxsYmFja3MpCkBAIC00NSw4
ICs0Myw2IEBAIGJvb2wgUmVzb3VyY2VMb2FkZXI6OnNob3VsZENhY2hlUmVzcG9uc2UKICAgICBy
ZXR1cm4gZnJhbWVMb2FkZXIoKS0+Y2xpZW50KCkuc2hvdWxkQ2FjaGVSZXNwb25zZShkb2N1bWVu
dExvYWRlcigpLCBpZGVudGlmaWVyKCksIHJlc3BvbnNlLCBDRkRhdGFHZXRCeXRlUHRyKGRhdGEp
LCBDRkRhdGFHZXRMZW5ndGgoZGF0YSkpOwogfQogCi0jZW5kaWYKLQogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCi0jZW5kaWYgLy8gVVNFKENGTkVUV09SSykKKyNlbmRpZiAvLyBVU0UoQ0ZVUkxD
T05ORUNUSU9OKQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL1N1YnJlc291cmNl
TG9hZGVyQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29h
L1N1YnJlc291cmNlTG9hZGVyQ29jb2EubW0JKHJldmlzaW9uIDIwNzAzOSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jb2NvYS9TdWJyZXNvdXJjZUxvYWRlckNvY29hLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0zNSwxOCArMzUsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSNpZiBVU0Uo
Q0ZORVRXT1JLKQotCi1DRkNhY2hlZFVSTFJlc3BvbnNlUmVmIFN1YnJlc291cmNlTG9hZGVyOjp3
aWxsQ2FjaGVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBDRkNhY2hlZFVSTFJlc3Bv
bnNlUmVmIGNhY2hlZFJlc3BvbnNlKQotewotICAgIERpc2tDYWNoZU1vbml0b3I6Om1vbml0b3JG
aWxlQmFja2luZ1N0b3JlQ3JlYXRpb24ocmVxdWVzdCgpLCBtX3Jlc291cmNlLT5zZXNzaW9uSUQo
KSwgY2FjaGVkUmVzcG9uc2UpOwotICAgIGlmICghbV9yZXNvdXJjZS0+c2hvdWxkQ2FjaGVSZXNw
b25zZShDRkNhY2hlZFVSTFJlc3BvbnNlR2V0V3JhcHBlZFJlc3BvbnNlKGNhY2hlZFJlc3BvbnNl
KSkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBSZXNvdXJjZUxvYWRlcjo6
d2lsbENhY2hlUmVzcG9uc2UoaGFuZGxlLCBjYWNoZWRSZXNwb25zZSk7Ci19Ci0KLSNlbHNlCi0K
IE5TQ2FjaGVkVVJMUmVzcG9uc2UqIFN1YnJlc291cmNlTG9hZGVyOjp3aWxsQ2FjaGVSZXNwb25z
ZShSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBOU0NhY2hlZFVSTFJlc3BvbnNlKiByZXNwb25zZSkK
IHsKICAgICBEaXNrQ2FjaGVNb25pdG9yOjptb25pdG9yRmlsZUJhY2tpbmdTdG9yZUNyZWF0aW9u
KHJlcXVlc3QoKSwgbV9yZXNvdXJjZS0+c2Vzc2lvbklEKCksIFtyZXNwb25zZSBfQ0ZDYWNoZWRV
UkxSZXNwb25zZV0pOwpAQCAtNTUsNiArNDMsNCBAQCBOU0NhY2hlZFVSTFJlc3BvbnNlKiBTdWJy
ZXNvdXJjZUxvYWRlcjo6CiAgICAgcmV0dXJuIFJlc291cmNlTG9hZGVyOjp3aWxsQ2FjaGVSZXNw
b25zZShoYW5kbGUsIHJlc3BvbnNlKTsKIH0KIAotI2VuZGlmCi0KIH0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9tYWMvRG9jdW1lbnRMb2FkZXJNYWMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9tYWMvRG9jdW1lbnRMb2FkZXJNYWMuY3BwCShyZXZpc2lvbiAy
MDcwMzkpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvbWFjL0RvY3VtZW50TG9hZGVyTWFjLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzMsOCArMzMsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLSNpZiAhVVNFKENGTkVUV09SSykKLQogc3RhdGljIHZvaWQgc2NoZWR1bGVBbGwoY29uc3Qg
UmVzb3VyY2VMb2FkZXJNYXAmIGxvYWRlcnMsIFNjaGVkdWxlUGFpciYgcGFpcikKIHsKICAgICBW
ZWN0b3I8UmVmUHRyPFJlc291cmNlTG9hZGVyPj4gbG9hZGVyc0NvcHk7CkBAIC02OSw2ICs2Nyw0
IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnVuc2NoZWR1bGUoU2NoZWR1bGUKICAgICB1bnNjaGVk
dWxlQWxsKG1fbXVsdGlwYXJ0U3VicmVzb3VyY2VMb2FkZXJzLCBwYWlyKTsKIH0KIAotI2VuZGlm
Ci0KLX0gLy8gbmFtZXNwYWNlCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvbWFjL1Jlc291cmNlTG9hZGVyTWFjLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9tYWMvUmVzb3VyY2VMb2FkZXJNYWMubW0JKHJldmlzaW9uIDIw
NzAzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9tYWMvUmVzb3VyY2VMb2FkZXJNYWMubW0J
KHdvcmtpbmcgY29weSkKQEAgLTM2LDE5ICszNiw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotI2lmIFVTRShDRk5FVFdPUkspCi0KLUNGQ2FjaGVkVVJMUmVzcG9uc2VSZWYgUmVzb3VyY2VM
b2FkZXI6OndpbGxDYWNoZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlKiwgQ0ZDYWNoZWRVUkxSZXNw
b25zZVJlZiBjYWNoZWRSZXNwb25zZSkKLXsKLSAgICBpZiAobV9vcHRpb25zLnNlbmRMb2FkQ2Fs
bGJhY2tzID09IERvTm90U2VuZENhbGxiYWNrcykKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0K
LSAgICBSZXRhaW5QdHI8TlNDYWNoZWRVUkxSZXNwb25zZT4gbnNDYWNoZWRSZXNwb25zZSA9IGFk
b3B0TlMoW1tOU0NhY2hlZFVSTFJlc3BvbnNlIGFsbG9jXSBfaW5pdFdpdGhDRkNhY2hlZFVSTFJl
c3BvbnNlOmNhY2hlZFJlc3BvbnNlXSk7Ci0gICAgcmV0dXJuIFtmcmFtZUxvYWRlcigpLT5jbGll
bnQoKS53aWxsQ2FjaGVSZXNwb25zZShkb2N1bWVudExvYWRlcigpLCBpZGVudGlmaWVyKCksIG5z
Q2FjaGVkUmVzcG9uc2UuZ2V0KCkpIF9DRkNhY2hlZFVSTFJlc3BvbnNlXTsKLX0KLQotI2Vsc2UK
LQogTlNDYWNoZWRVUkxSZXNwb25zZSogUmVzb3VyY2VMb2FkZXI6OndpbGxDYWNoZVJlc3BvbnNl
KFJlc291cmNlSGFuZGxlKiwgTlNDYWNoZWRVUkxSZXNwb25zZSogcmVzcG9uc2UpCiB7CiAgICAg
aWYgKG1fb3B0aW9ucy5zZW5kTG9hZENhbGxiYWNrcyA9PSBEb05vdFNlbmRDYWxsYmFja3MpCkBA
IC01Niw4ICs0Myw2IEBAIE5TQ2FjaGVkVVJMUmVzcG9uc2UqIFJlc291cmNlTG9hZGVyOjp3aWwK
ICAgICByZXR1cm4gZnJhbWVMb2FkZXIoKS0+Y2xpZW50KCkud2lsbENhY2hlUmVzcG9uc2UoZG9j
dW1lbnRMb2FkZXIoKSwgaWRlbnRpZmllcigpLCByZXNwb25zZSk7CiB9CiAKLSNlbmRpZgotCiAj
aWYgVVNFKE5FVFdPUktfQ0ZEQVRBX0FSUkFZX0NBTExCQUNLKQogCiB2b2lkIFJlc291cmNlTG9h
ZGVyOjpkaWRSZWNlaXZlRGF0YUFycmF5KENGQXJyYXlSZWYgZGF0YUFycmF5KQpJbmRleDogU291
cmNlL1dlYkNvcmUvcGFnZS9tYWMvUGFnZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wYWdlL21hYy9QYWdlTWFjLm1tCShyZXZpc2lvbiAyMDcwMzkpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wYWdlL21hYy9QYWdlTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00NSwxMSArNDUsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB2b2lkIFBhZ2U6OnBsYXRmb3JtSW5pdGlhbGl6ZSgpCiB7
CiAjaWYgUExBVEZPUk0oSU9TKQotI2lmIFVTRShDRk5FVFdPUkspCi0gICAgYWRkU2NoZWR1bGVQ
YWlyKFNjaGVkdWxlUGFpcjo6Y3JlYXRlKFdlYlRocmVhZFJ1bkxvb3AoKSwga0NGUnVuTG9vcENv
bW1vbk1vZGVzKSk7Ci0jZWxzZQogICAgIGFkZFNjaGVkdWxlUGFpcihTY2hlZHVsZVBhaXI6OmNy
ZWF0ZShXZWJUaHJlYWROU1J1bkxvb3AoKSwga0NGUnVuTG9vcENvbW1vbk1vZGVzKSk7Ci0jZW5k
aWYgLy8gVVNFKENGTkVUV09SSykKICNlbHNlCiAgICAgYWRkU2NoZWR1bGVQYWlyKFNjaGVkdWxl
UGFpcjo6Y3JlYXRlKFtOU1J1bkxvb3AgY3VycmVudFJ1bkxvb3BdLCBrQ0ZSdW5Mb29wQ29tbW9u
TW9kZXMpKTsKICNlbmRpZgpAQCAtNjksMTQgKzY1LDEyIEBAIHZvaWQgUGFnZTo6YWRkU2NoZWR1
bGVQYWlyKFJlZjxTY2hlZHVsZVAKICAgICAgICAgbV9zY2hlZHVsZWRSdW5Mb29wUGFpcnMgPSBz
dGQ6Om1ha2VfdW5pcXVlPFNjaGVkdWxlUGFpckhhc2hTZXQ+KCk7CiAgICAgbV9zY2hlZHVsZWRS
dW5Mb29wUGFpcnMtPmFkZChwYWlyLnB0cigpKTsKIAotI2lmICFVU0UoQ0ZORVRXT1JLKQogICAg
IGZvciAoRnJhbWUqIGZyYW1lID0gJm1fbWFpbkZyYW1lLmdldCgpOyBmcmFtZTsgZnJhbWUgPSBm
cmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgpKSB7CiAgICAgICAgIGlmIChEb2N1bWVudExvYWRl
ciogZG9jdW1lbnRMb2FkZXIgPSBmcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKSkKICAg
ICAgICAgICAgIGRvY3VtZW50TG9hZGVyLT5zY2hlZHVsZShwYWlyKTsKICAgICAgICAgaWYgKERv
Y3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlciA9IGZyYW1lLT5sb2FkZXIoKS5wcm92aXNpb25h
bERvY3VtZW50TG9hZGVyKCkpCiAgICAgICAgICAgICBkb2N1bWVudExvYWRlci0+c2NoZWR1bGUo
cGFpcik7CiAgICAgfQotI2VuZGlmCiAKICAgICAvLyBGSVhNRTogbWFrZSBTaGFyZWRUaW1lck1h
YyB1c2UgdGhlc2UgU2NoZWR1bGVQYWlycy4KIH0KQEAgLTg5LDE0ICs4MywxMiBAQCB2b2lkIFBh
Z2U6OnJlbW92ZVNjaGVkdWxlUGFpcihSZWY8U2NoZWR1CiAKICAgICBtX3NjaGVkdWxlZFJ1bkxv
b3BQYWlycy0+cmVtb3ZlKHBhaXIucHRyKCkpOwogCi0jaWYgIVVTRShDRk5FVFdPUkspCiAgICAg
Zm9yIChGcmFtZSogZnJhbWUgPSAmbV9tYWluRnJhbWUuZ2V0KCk7IGZyYW1lOyBmcmFtZSA9IGZy
YW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KCkpIHsKICAgICAgICAgaWYgKERvY3VtZW50TG9hZGVy
KiBkb2N1bWVudExvYWRlciA9IGZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpKQogICAg
ICAgICAgICAgZG9jdW1lbnRMb2FkZXItPnVuc2NoZWR1bGUocGFpcik7CiAgICAgICAgIGlmIChE
b2N1bWVudExvYWRlciogZG9jdW1lbnRMb2FkZXIgPSBmcmFtZS0+bG9hZGVyKCkucHJvdmlzaW9u
YWxEb2N1bWVudExvYWRlcigpKQogICAgICAgICAgICAgZG9jdW1lbnRMb2FkZXItPnVuc2NoZWR1
bGUocGFpcik7CiAgICAgfQotI2VuZGlmCiB9CiAKIH0gLy8gbmFtZXNwYWNlCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakMubW0JKHJldmlzaW9uIDIwNzAzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakMubW0JKHdvcmtpbmcgY29weSkKQEAgLTEwOSwxMCArMTA5LDYgQEAKICNpbXBv
cnQgPFZpZGVvVG9vbGJveC9WaWRlb1Rvb2xib3guaD4KICNlbmRpZgogCi0jaWYgVVNFKENGTkVU
V09SSykKLSNpbmNsdWRlICJDRk5TVVJMQ29ubmVjdGlvblNQSS5oIgotI2VuZGlmCi0KICNpbXBv
cnQgIkNvcmVWaWRlb1NvZnRMaW5rLmgiCiAKIG5hbWVzcGFjZSBzdGQgewpAQCAtMzcyLDU4ICsz
NjgsNiBAQCBzdGF0aWMgZGlzcGF0Y2hfcXVldWVfdCBnbG9iYWxQdWxsRGVsZWdhCiB9CiAjZW5k
aWYKIAotI2lmIFVTRShDRk5FVFdPUkspCi1jbGFzcyBXZWJDb3JlTlNVUkxBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZUNsaWVudCA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYkNvcmVOU1VSTEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlQ2xpZW50PiwgcHVibGljIEF1dGhlbnRpY2F0aW9uQ2xpZW50IHsKLXB1
YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPFdlYkNvcmVOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlQ2xpZW50PiBjcmVhdGUoTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqY2hhbGxlbmdl
KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJDb3JlTlNVUkxBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZUNsaWVudChjaGFsbGVuZ2UpKTsKLSAgICB9Ci0KLSAgICB1c2luZyBS
ZWZDb3VudGVkPFdlYkNvcmVOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQ2xpZW50Pjo6cmVm
OwotICAgIHVzaW5nIFJlZkNvdW50ZWQ8V2ViQ29yZU5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVu
Z2VDbGllbnQ+OjpkZXJlZjsKLQotcHJpdmF0ZToKLSAgICBXZWJDb3JlTlNVUkxBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZUNsaWVudChOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICpjaGFsbGVu
Z2UpCi0gICAgICAgIDogbV9jaGFsbGVuZ2UoY2hhbGxlbmdlKQotICAgIHsKLSAgICAgICAgQVNT
RVJUKG1fY2hhbGxlbmdlKTsKLSAgICB9Ci0KLSAgICB2b2lkIHJlZkF1dGhlbnRpY2F0aW9uQ2xp
ZW50KCkgb3ZlcnJpZGUgeyByZWYoKTsgfQotICAgIHZvaWQgZGVyZWZBdXRoZW50aWNhdGlvbkNs
aWVudCgpIG92ZXJyaWRlIHsgZGVyZWYoKTsgfQotCi0gICAgdm9pZCByZWNlaXZlZENyZWRlbnRp
YWwoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmLCBjb25zdCBDcmVkZW50aWFsJiBjcmVk
ZW50aWFsKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgW1ttX2NoYWxsZW5nZSBzZW5kZXJdIHVz
ZUNyZWRlbnRpYWw6Y3JlZGVudGlhbC5uc0NyZWRlbnRpYWwoKSBmb3JBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZTptX2NoYWxsZW5nZS5nZXQoKV07Ci0gICAgfQotCi0gICAgdm9pZCByZWNlaXZlZFJl
cXVlc3RUb0NvbnRpbnVlV2l0aG91dENyZWRlbnRpYWwoY29uc3QgQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UmKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgW1ttX2NoYWxsZW5nZSBzZW5kZXJdIGNv
bnRpbnVlV2l0aG91dENyZWRlbnRpYWxGb3JBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTptX2NoYWxs
ZW5nZS5nZXQoKV07Ci0gICAgfQotCi0gICAgdm9pZCByZWNlaXZlZENhbmNlbGxhdGlvbihjb25z
dCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBbW21f
Y2hhbGxlbmdlIHNlbmRlcl0gY2FuY2VsQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6bV9jaGFsbGVu
Z2UuZ2V0KCldOwotICAgIH0KLQotICAgIHZvaWQgcmVjZWl2ZWRSZXF1ZXN0VG9QZXJmb3JtRGVm
YXVsdEhhbmRsaW5nKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikgb3ZlcnJpZGUKLSAg
ICB7Ci0gICAgICAgIGlmIChbW21fY2hhbGxlbmdlIHNlbmRlcl0gcmVzcG9uZHNUb1NlbGVjdG9y
OkBzZWxlY3RvcihwZXJmb3JtRGVmYXVsdEhhbmRsaW5nRm9yQXV0aGVudGljYXRpb25DaGFsbGVu
Z2U6KV0pCi0gICAgICAgICAgICBbW21fY2hhbGxlbmdlIHNlbmRlcl0gcGVyZm9ybURlZmF1bHRI
YW5kbGluZ0ZvckF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOm1fY2hhbGxlbmdlLmdldCgpXTsKLSAg
ICB9Ci0KLSAgICB2b2lkIHJlY2VpdmVkQ2hhbGxlbmdlUmVqZWN0aW9uKGNvbnN0IEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlJikgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIGlmIChbW21fY2hhbGxl
bmdlIHNlbmRlcl0gcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihyZWplY3RQcm90ZWN0aW9u
U3BhY2VBbmRDb250aW51ZVdpdGhDaGFsbGVuZ2U6KV0pCi0gICAgICAgICAgICBbW21fY2hhbGxl
bmdlIHNlbmRlcl0gcmVqZWN0UHJvdGVjdGlvblNwYWNlQW5kQ29udGludWVXaXRoQ2hhbGxlbmdl
Om1fY2hhbGxlbmdlLmdldCgpXTsKLSAgICB9Ci0KLSAgICBSZXRhaW5QdHI8TlNVUkxBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZT4gbV9jaGFsbGVuZ2U7Ci19OwotI2VuZGlmCi0KIHZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cmVnaXN0ZXJNZWRpYUVuZ2luZShNZWRpYUVu
Z2luZVJlZ2lzdHJhciByZWdpc3RyYXIpCiB7CiAgICAgaWYgKCFpc0F2YWlsYWJsZSgpKQpAQCAt
MTc5NywxNSArMTc0MSw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
QzoKIAogYm9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzaG91bGRXYWl0
Rm9yUmVzcG9uc2VUb0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKE5TVVJMQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UqIG5zQ2hhbGxlbmdlKQogewotI2lmIFVTRShDRk5FVFdPUkspCi0gICAgUmVmUHRy
PFdlYkNvcmVOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQ2xpZW50PiBjbGllbnQgPSBXZWJD
b3JlTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUNsaWVudDo6Y3JlYXRlKG5zQ2hhbGxlbmdl
KTsKLSAgICBSZXRhaW5QdHI8Q0ZVUkxBdXRoQ2hhbGxlbmdlUmVmPiBjZkNoYWxsZW5nZSA9IGFk
b3B0Q0YoW25zQ2hhbGxlbmdlIF9jcmVhdGVDRkF1dGhDaGFsbGVuZ2VdKTsKLSAgICBBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSBjaGFsbGVuZ2UoY2ZDaGFsbGVuZ2UuZ2V0KCksIGNsaWVudC5nZXQo
KSk7Ci0jZWxzZQotICAgIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIGNoYWxsZW5nZShuc0NoYWxs
ZW5nZSk7Ci0jZW5kaWYKLQotICAgIHJldHVybiBwbGF5ZXIoKS0+c2hvdWxkV2FpdEZvclJlc3Bv
bnNlVG9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZShjaGFsbGVuZ2UpOworICAgIHJldHVybiBwbGF5
ZXIoKS0+c2hvdWxkV2FpdEZvclJlc3BvbnNlVG9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZShBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZShuc0NoYWxsZW5nZSkpOwogfQogCiB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmRpZENhbmNlbExvYWRpbmdSZXF1ZXN0KEFWQXNzZXRS
ZXNvdXJjZUxvYWRpbmdSZXF1ZXN0KiBhdlJlcXVlc3QpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgJKHJldmlzaW9u
IDIwNzAzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50
ZXJmYWNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTc3LDcgKzc3LDcgQEAgdHlwZWRlZiBzdHJ1Y3Qg
X05TUmVjdCBOU1JlY3Q7CiAjaW5jbHVkZSA8Q29yZUdyYXBoaWNzL0NvcmVHcmFwaGljcy5oPgog
I2VuZGlmCiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiB0
eXBlZGVmIHN0cnVjdCBPcGFxdWVDRkhUVFBDb29raWVTdG9yYWdlKiAgQ0ZIVFRQQ29va2llU3Rv
cmFnZVJlZjsKIHR5cGVkZWYgc3RydWN0IF9DRlVSTFByb3RlY3Rpb25TcGFjZSogQ0ZVUkxQcm90
ZWN0aW9uU3BhY2VSZWY7CiB0eXBlZGVmIHN0cnVjdCBfQ0ZVUkxDcmVkZW50aWFsKiBXS0NGVVJM
Q3JlZGVudGlhbFJlZjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0
d29ya1N0b3JhZ2VTZXNzaW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaAkocmV2aXNpb24gMjA3MDM5KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaAko
d29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNyBAQAogI2luY2x1ZGUgIlNlc3Npb25JRC5oIgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCi0jaWYgUExBVEZPUk0oQ09DT0EpIHx8
IFVTRShDRk5FVFdPUkspCisjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRlVSTENPTk5FQ1RJ
T04pCiAjaW5jbHVkZSAiQ0ZOZXR3b3JrU1BJLmgiCiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5o
PgogI2VuZGlmCkBAIC01OSw3ICs1OSw3IEBAIHB1YmxpYzoKICAgICBTZXNzaW9uSUQgc2Vzc2lv
bklEKCkgY29uc3QgeyByZXR1cm4gbV9zZXNzaW9uSUQ7IH0KICAgICBDcmVkZW50aWFsU3RvcmFn
ZSYgY3JlZGVudGlhbFN0b3JhZ2UoKSB7IHJldHVybiBtX2NyZWRlbnRpYWxTdG9yYWdlOyB9CiAK
LSNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKENGTkVUV09SSykKKyNpZiBQTEFURk9STShDT0NP
QSkgfHwgVVNFKENGVVJMQ09OTkVDVElPTikKICAgICBOZXR3b3JrU3RvcmFnZVNlc3Npb24oU2Vz
c2lvbklELCBSZXRhaW5QdHI8Q0ZVUkxTdG9yYWdlU2Vzc2lvblJlZj4pOwogCiAgICAgLy8gTWF5
IGJlIG51bGwsIGluIHdoaWNoIGNhc2UgYSBGb3VuZGF0aW9uIGRlZmF1bHQgc2hvdWxkIGJlIHVz
ZWQuCkBAIC04NCw3ICs4NCw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIEhhc2hNYXA8U2Vzc2lv
bklELCBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya1N0b3JhZ2VTZXNzaW9uPj4mIGdsb2JhbFNlc3Np
b25NYXAoKTsKICAgICBTZXNzaW9uSUQgbV9zZXNzaW9uSUQ7CiAKLSNpZiBQTEFURk9STShDT0NP
QSkgfHwgVVNFKENGTkVUV09SSykKKyNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKENGVVJMQ09O
TkVDVElPTikKICAgICBSZXRhaW5QdHI8Q0ZVUkxTdG9yYWdlU2Vzc2lvblJlZj4gbV9wbGF0Zm9y
bVNlc3Npb247CiAjZWxpZiBVU0UoU09VUCkKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U291cE5ldHdv
cmtTZXNzaW9uPiBtX3Nlc3Npb247CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL1Byb3RlY3Rpb25TcGFjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvUHJvdGVjdGlvblNwYWNlLmgJKHJldmlzaW9uIDIwNzAzOSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUHJvdGVjdGlvblNwYWNlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTIzLDEyICsyMywxMSBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAotI2lmbmRlZiBQ
cm90ZWN0aW9uU3BhY2VfaAotI2RlZmluZSBQcm90ZWN0aW9uU3BhY2VfaAorI3ByYWdtYSBvbmNl
CiAKICNpZiBQTEFURk9STShDT0NPQSkKICNpbmNsdWRlICJQcm90ZWN0aW9uU3BhY2VDb2NvYS5o
IgotI2VsaWYgVVNFKENGTkVUV09SSykKKyNlbGlmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAjaW5j
bHVkZSAiUHJvdGVjdGlvblNwYWNlQ0ZOZXQuaCIKICNlbHNlCiAKQEAgLTUwLDUgKzQ5LDMgQEAg
cHVibGljOgogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYKLQotI2VuZGlmIC8vIFBy
b3RlY3Rpb25TcGFjZV9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1By
b3RlY3Rpb25TcGFjZUJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvUHJvdGVjdGlvblNwYWNlQmFzZS5jcHAJKHJldmlzaW9uIDIwNzAzOSkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUHJvdGVjdGlvblNwYWNlQmFzZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI3LDExICsyNyw2IEBACiAKICNpbmNsdWRlICJQcm90ZWN0aW9u
U3BhY2UuaCIKIAotI2lmIFVTRShDRk5FVFdPUkspICYmICFQTEFURk9STShDT0NPQSkKLSNpbmNs
dWRlICJBdXRoZW50aWNhdGlvbkNGLmgiCi0jaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGVVJMUHJvdGVj
dGlvblNwYWNlUHJpdi5oPgotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogLy8gTmVl
ZCB0byBlbmZvcmNlIGVtcHR5LCBub24tbnVsbCBzdHJpbmdzIGR1ZSB0byB0aGUgcGlja2luZXNz
IG9mIHRoZSBTdHJpbmcgPT0gU3RyaW5nIG9wZXJhdG9yCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmNwcAkocmV2aXNpb24gMjA3
MDM5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE1NCw3ICsxNTQsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxl
OjpjbGVhckNsaWVudCgpCiAgICAgZC0+bV9jbGllbnQgPSBudWxscHRyOwogfQogCi0jaWYgIVBM
QVRGT1JNKENPQ09BKSAmJiAhVVNFKENGTkVUV09SSykgJiYgIVVTRShTT1VQKQorI2lmICFQTEFU
Rk9STShDT0NPQSkgJiYgIVVTRShDRlVSTENPTk5FQ1RJT04pICYmICFVU0UoU09VUCkKIC8vIFJl
c291cmNlSGFuZGxlIG5ldmVyIHVzZXMgYXN5bmMgY2xpZW50IGNhbGxzIG9uIHRoZXNlIHBsYXRm
b3JtcyB5ZXQuCiB2b2lkIFJlc291cmNlSGFuZGxlOjpjb250aW51ZVdpbGxTZW5kUmVxdWVzdChS
ZXNvdXJjZVJlcXVlc3QmJikKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VIYW5kbGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmgJKHJldmlzaW9uIDIwNzAzOSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaAkod29ya2luZyBjb3B5KQpA
QCAtMzEsNyArMzEsNyBAQAogI2luY2x1ZGUgIlJlc291cmNlTG9hZFByaW9yaXR5LmgiCiAjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAotI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZO
RVRXT1JLKQorI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogI2lu
Y2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNlbmRpZgogCkBAIC02MCwxNCArNjAsMTQgQEAgdHlw
ZWRlZiBzdHJ1Y3Qgb2JqY19vYmplY3QgKmlkOwogI2VuZGlmCiAjZW5kaWYKIAotI2lmIFVTRShD
Rk5FVFdPUkspCisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKIHR5cGVkZWYgY29uc3Qgc3RydWN0
IF9DRkNhY2hlZFVSTFJlc3BvbnNlKiBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmOwogdHlwZWRlZiBz
dHJ1Y3QgX0NGVVJMQ29ubmVjdGlvbiogQ0ZVUkxDb25uZWN0aW9uUmVmOwogdHlwZWRlZiBpbnQg
Q0ZIVFRQQ29va2llU3RvcmFnZUFjY2VwdFBvbGljeTsKIHR5cGVkZWYgc3RydWN0IE9wYXF1ZUNG
SFRUUENvb2tpZVN0b3JhZ2UqIENGSFRUUENvb2tpZVN0b3JhZ2VSZWY7CiAjZW5kaWYKIAotI2lm
IFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZORVRXT1JLKQorI2lmIFBMQVRGT1JNKENPQ09BKSB8
fCBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgX19DRlVSTFN0b3Jh
Z2VTZXNzaW9uKiBDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmOwogI2VuZGlmCiAKQEAgLTkyLDIyICs5
MiwxNyBAQCBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xh
c3MgVGltZXI7CiAKLWNsYXNzIFJlc291cmNlSGFuZGxlIDogcHVibGljIFJlZkNvdW50ZWQ8UmVz
b3VyY2VIYW5kbGU+Ci0jaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRk5FVFdPUkspIHx8IFVT
RShDVVJMKSB8fCBVU0UoU09VUCkKLSAgICAsIHB1YmxpYyBBdXRoZW50aWNhdGlvbkNsaWVudAot
I2VuZGlmCi0gICAgeworY2xhc3MgUmVzb3VyY2VIYW5kbGUgOiBwdWJsaWMgUmVmQ291bnRlZDxS
ZXNvdXJjZUhhbmRsZT4gLCBwdWJsaWMgQXV0aGVudGljYXRpb25DbGllbnQgewogcHVibGljOgog
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8UmVzb3VyY2VIYW5kbGU+IGNyZWF0ZShO
ZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFJlc291cmNlSGFuZGxl
Q2xpZW50KiwgYm9vbCBkZWZlcnNMb2FkaW5nLCBib29sIHNob3VsZENvbnRlbnRTbmlmZik7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgbG9hZFJlc291cmNlU3luY2hyb25vdXNseShO
ZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFN0b3JlZENyZWRlbnRp
YWxzLCBSZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VSZXNwb25zZSYsIFZlY3RvcjxjaGFyPiYgZGF0
YSk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5SZXNvdXJjZUhhbmRsZSgpOwogCi0j
aWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRk5FVFdPUkspCisjaWYgUExBVEZPUk0oQ09DT0Ep
IHx8IFVTRShDRlVSTENPTk5FQ1RJT04pCiAgICAgUmVzb3VyY2VSZXF1ZXN0IHdpbGxTZW5kUmVx
dWVzdChSZXNvdXJjZVJlcXVlc3QmJiwgUmVzb3VyY2VSZXNwb25zZSYmKTsKICNlbmRpZgogCi0j
aWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRk5FVFdPUkspIHx8IFVTRShDVVJMKSB8fCBVU0Uo
U09VUCkKICAgICBib29sIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKCk7CiAgICAgdm9pZCBk
aWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY29uc3QgQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UmKTsKICAgICB2b2lkIHJlY2VpdmVkQ3JlZGVudGlhbChjb25zdCBBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSYsIGNvbnN0IENyZWRlbnRpYWwmKSBvdmVycmlkZTsKQEAgLTExNSw5ICsxMTAs
OCBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWNlaXZlZENhbmNlbGxhdGlvbihjb25zdCBBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVjZWl2ZWRSZXF1ZXN0VG9Q
ZXJmb3JtRGVmYXVsdEhhbmRsaW5nKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikgb3Zl
cnJpZGU7CiAgICAgdm9pZCByZWNlaXZlZENoYWxsZW5nZVJlamVjdGlvbihjb25zdCBBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSYpIG92ZXJyaWRlOwotI2VuZGlmCiAKLSNpZiBQTEFURk9STShDT0NP
QSkgfHwgVVNFKENGTkVUV09SSykKKyNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKENGVVJMQ09O
TkVDVElPTikKICAgICBib29sIHRyeUhhbmRsZVBhc3N3b3JkQmFzZWRBdXRoZW50aWNhdGlvbihj
b25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpOwogI2VuZGlmCiAKQEAgLTEyNSw3ICsxMTks
NyBAQCBwdWJsaWM6CiAgICAgYm9vbCBjYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNw
YWNlKGNvbnN0IFByb3RlY3Rpb25TcGFjZSYpOwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShDT0NP
QSkgJiYgIVVTRShDRk5FVFdPUkspCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgV0VCQ09SRV9F
WFBPUlQgTlNVUkxDb25uZWN0aW9uICpjb25uZWN0aW9uKCkgY29uc3Q7CiAgICAgaWQgbWFrZURl
bGVnYXRlKGJvb2wpOwogICAgIGlkIGRlbGVnYXRlKCk7CkBAIC0xMzMsMTkgKzEyNywxNSBAQCBw
dWJsaWM6CiAjZW5kaWYKICAgICAgICAgCiAjaWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShX
RUJfVElNSU5HKQotI2lmIFVTRShDRk5FVFdPUkspCi0gICAgc3RhdGljIHZvaWQgZ2V0Q29ubmVj
dGlvblRpbWluZ0RhdGEoQ0ZVUkxDb25uZWN0aW9uUmVmLCBOZXR3b3JrTG9hZFRpbWluZyYpOwot
I2Vsc2UKICAgICBzdGF0aWMgdm9pZCBnZXRDb25uZWN0aW9uVGltaW5nRGF0YShOU1VSTENvbm5l
Y3Rpb24gKiwgTmV0d29ya0xvYWRUaW1pbmcmKTsKICNlbmRpZgotI2VuZGlmCiAgICAgICAgIAog
I2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZvaWQgc2NoZWR1bGUoV1RGOjpTY2hlZHVsZVBhaXIm
KTsKICAgICB2b2lkIHVuc2NoZWR1bGUoV1RGOjpTY2hlZHVsZVBhaXImKTsKICNlbmRpZgogCi0j
aWYgVVNFKENGTkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogICAgIENGVVJMU3Rv
cmFnZVNlc3Npb25SZWYgc3RvcmFnZVNlc3Npb24oKSBjb25zdDsKICAgICBDRlVSTENvbm5lY3Rp
b25SZWYgY29ubmVjdGlvbigpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxD
RlVSTENvbm5lY3Rpb25SZWY+IHJlbGVhc2VDb25uZWN0aW9uRm9yRG93bmxvYWQoKTsKQEAgLTIw
OCwxMCArMTk4LDEwIEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgLy8gQ2FsbGVkIGluIHJlc3Bv
bnNlIHRvIFJlc291cmNlSGFuZGxlQ2xpZW50Ojp3aWxsQ2FjaGVSZXNwb25zZUFzeW5jKCkuCi0j
aWYgVVNFKENGTkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgY29udGludWVXaWxsQ2FjaGVSZXNwb25zZShDRkNhY2hlZFVSTFJlc3BvbnNl
UmVmKTsKICNlbmRpZgotI2lmIFBMQVRGT1JNKENPQ09BKSAmJiAhVVNFKENGTkVUV09SSykKKyNp
ZiBQTEFURk9STShDT0NPQSkKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvbnRpbnVlV2lsbENh
Y2hlUmVzcG9uc2UoTlNDYWNoZWRVUkxSZXNwb25zZSAqKTsKICNlbmRpZgogCkBAIC0yMjcsMTQg
KzIxNywxMCBAQCBwdWJsaWM6CiAgICAgdXNpbmcgUmVmQ291bnRlZDxSZXNvdXJjZUhhbmRsZT46
OnJlZjsKICAgICB1c2luZyBSZWZDb3VudGVkPFJlc291cmNlSGFuZGxlPjo6ZGVyZWY7CiAKLSNp
ZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKENGTkVUV09SSykKKyNpZiBQTEFURk9STShDT0NPQSkg
fHwgVVNFKENGVVJMQ09OTkVDVElPTikKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgQ0ZTdHJp
bmdSZWYgc3luY2hyb25vdXNMb2FkUnVuTG9vcE1vZGUoKTsKICNlbmRpZgogCi0jaWYgUExBVEZP
Uk0oSU9TKSAmJiBVU0UoQ0ZORVRXT1JLKQotICAgIHN0YXRpYyBDRk11dGFibGVEaWN0aW9uYXJ5
UmVmIGNyZWF0ZVNTTFByb3BlcnRpZXNGcm9tTlNVUkxSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVx
dWVzdCYpOwotI2VuZGlmCi0KICAgICB0eXBlZGVmIFJlZjxSZXNvdXJjZUhhbmRsZT4gKCpCdWls
dGluQ29uc3RydWN0b3IpKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVzb3VyY2VI
YW5kbGVDbGllbnQqIGNsaWVudCk7CiAgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJCdWlsdGluQ29u
c3RydWN0b3IoY29uc3QgQXRvbWljU3RyaW5nJiBwcm90b2NvbCwgQnVpbHRpbkNvbnN0cnVjdG9y
KTsKIApAQCAtMjYzLDE5ICsyNDksMTkgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlZkF1dGhlbnRp
Y2F0aW9uQ2xpZW50KCkgb3ZlcnJpZGUgeyByZWYoKTsgfQogICAgIHZvaWQgZGVyZWZBdXRoZW50
aWNhdGlvbkNsaWVudCgpIG92ZXJyaWRlIHsgZGVyZWYoKTsgfQogCi0jaWYgUExBVEZPUk0oQ09D
T0EpIHx8IFVTRShDRk5FVFdPUkspCisjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRlVSTENP
Tk5FQ1RJT04pCiAgICAgZW51bSBjbGFzcyBTY2hlZHVsaW5nQmVoYXZpb3IgeyBBc3luY2hyb25v
dXMsIFN5bmNocm9ub3VzIH07CiAjZW5kaWYKIAotI2lmIFVTRShDRk5FVFdPUkspCisjaWYgVVNF
KENGVVJMQ09OTkVDVElPTikKICAgICB2b2lkIGNyZWF0ZUNGVVJMQ29ubmVjdGlvbihib29sIHNo
b3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlLCBib29sIHNob3VsZENvbnRlbnRTbmlmZiwgU2NoZWR1
bGluZ0JlaGF2aW9yLCBDRkRpY3Rpb25hcnlSZWYgY2xpZW50UHJvcGVydGllcyk7CiAjZW5kaWYK
IAotI2lmIFBMQVRGT1JNKE1BQykgJiYgIVVTRShDRk5FVFdPUkspCisjaWYgUExBVEZPUk0oTUFD
KQogICAgIHZvaWQgY3JlYXRlTlNVUkxDb25uZWN0aW9uKGlkIGRlbGVnYXRlLCBib29sIHNob3Vs
ZFVzZUNyZWRlbnRpYWxTdG9yYWdlLCBib29sIHNob3VsZENvbnRlbnRTbmlmZiwgU2NoZWR1bGlu
Z0JlaGF2aW9yKTsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oSU9TKSAmJiAhVVNFKENGTkVUV09S
SykKKyNpZiBQTEFURk9STShJT1MpCiAgICAgdm9pZCBjcmVhdGVOU1VSTENvbm5lY3Rpb24oaWQg
ZGVsZWdhdGUsIGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UsIGJvb2wgc2hvdWxkQ29u
dGVudFNuaWZmLCBTY2hlZHVsaW5nQmVoYXZpb3IsIE5TRGljdGlvbmFyeSAqY29ubmVjdGlvblBy
b3BlcnRpZXMpOwogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwCShyZXZpc2lvbiAyMDcw
MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xp
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjIsNyArNjIsNyBAQCB2b2lkIFJlc291cmNlSGFu
ZGxlQ2xpZW50OjpjYW5BdXRoZW50aWNhCiB9CiAjZW5kaWYKIAotI2lmIFVTRShDRk5FVFdPUksp
CisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKIHZvaWQgUmVzb3VyY2VIYW5kbGVDbGllbnQ6Ondp
bGxDYWNoZVJlc3BvbnNlQXN5bmMoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgQ0ZDYWNoZWRVUkxS
ZXNwb25zZVJlZiByZXNwb25zZSkKIHsKICAgICBoYW5kbGUtPmNvbnRpbnVlV2lsbENhY2hlUmVz
cG9uc2UocmVzcG9uc2UpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZUhhbmRsZUNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaAkocmV2aXNpb24gMjA3MDM5KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yOSwxMiArMjksMTIgQEAKICNpbmNsdWRlICJQbGF0Zm9ybUV4cG9y
dE1hY3Jvcy5oIgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KIAotI2lmIFVTRShDRk5FVFdPUkspCisj
aWYgVVNFKENGVVJMQ09OTkVDVElPTikKICNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZVUkxDYWNoZVBy
aXYuaD4KICNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZVUkxSZXNwb25zZVByaXYuaD4KICNlbmRpZgog
Ci0jaWYgUExBVEZPUk0oSU9TKSB8fCBVU0UoQ0ZORVRXT1JLKQorI2lmIFBMQVRGT1JNKElPUykg
fHwgVVNFKENGVVJMQ09OTkVDVElPTikKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjZW5k
aWYKIApAQCAtOTYsNyArOTYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFdFQkNP
UkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBjYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNw
YWNlQXN5bmMoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBQcm90ZWN0aW9uU3BhY2UmKTsKICNlbmRp
ZgogICAgICAgICAvLyBDbGllbnQgd2lsbCBwYXNzIGFuIHVwZGF0ZWQgcmVxdWVzdCB1c2luZyBS
ZXNvdXJjZUhhbmRsZTo6Y29udGludWVXaWxsQ2FjaGVSZXNwb25zZSgpIHdoZW4gcmVhZHkuCi0j
aWYgVVNFKENGTkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogICAgICAgICBXRUJD
T1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgd2lsbENhY2hlUmVzcG9uc2VBc3luYyhSZXNvdXJjZUhh
bmRsZSosIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYpOwogI2VsaWYgUExBVEZPUk0oQ09DT0EpCiAg
ICAgICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCB3aWxsQ2FjaGVSZXNwb25zZUFzeW5j
KFJlc291cmNlSGFuZGxlKiwgTlNDYWNoZWRVUkxSZXNwb25zZSAqKTsKQEAgLTExOCwxNiArMTE4
LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNlbmRpZgogICAgICAgICB2aXJ0dWFsIHZvaWQg
cmVjZWl2ZWRDYW5jZWxsYXRpb24oUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSYpIHsgfQogCi0jaWYgUExBVEZPUk0oSU9TKSB8fCBVU0UoQ0ZORVRXT1JLKQor
I2lmIFBMQVRGT1JNKElPUykgfHwgVVNFKENGVVJMQ09OTkVDVElPTikKICAgICAgICAgdmlydHVh
bCBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBjb25uZWN0aW9uUHJvcGVydGllcyhSZXNvdXJj
ZUhhbmRsZSopIHsgcmV0dXJuIG51bGxwdHI7IH0KICNlbmRpZgogCi0jaWYgVVNFKENGTkVUV09S
SykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogICAgICAgICB2aXJ0dWFsIENGQ2FjaGVkVVJM
UmVzcG9uc2VSZWYgd2lsbENhY2hlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqLCBDRkNhY2hlZFVS
TFJlc3BvbnNlUmVmIHJlc3BvbnNlKSB7IHJldHVybiByZXNwb25zZTsgfQotI2lmIFBMQVRGT1JN
KFdJTikKICAgICAgICAgdmlydHVhbCBib29sIHNob3VsZENhY2hlUmVzcG9uc2UoUmVzb3VyY2VI
YW5kbGUqLCBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmKSB7IHJldHVybiB0cnVlOyB9Ci0jZW5kaWYg
Ly8gUExBVEZPUk0oV0lOKQotCiAjZWxpZiBQTEFURk9STShDT0NPQSkKICAgICAgICAgdmlydHVh
bCBOU0NhY2hlZFVSTFJlc3BvbnNlICp3aWxsQ2FjaGVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSos
IE5TQ2FjaGVkVVJMUmVzcG9uc2UgKnJlc3BvbnNlKSB7IHJldHVybiByZXNwb25zZTsgfQogI2Vu
ZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxl
SW50ZXJuYWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaAkocmV2aXNpb24gMjA3MDM5KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTMzLDcgKzMzLDcgQEAKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZS5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQorI2lmIFVTRShD
RlVSTENPTk5FQ1RJT04pCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25E
ZWxlZ2F0ZS5oIgogI2luY2x1ZGUgPENGTmV0d29yay9DRlVSTENvbm5lY3Rpb25Qcml2Lmg+CiAj
ZW5kaWYKQEAgLTYxLDcgKzYxLDcgQEAgT0JKQ19DTEFTUyBOU1VSTEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlOwogT0JKQ19DTEFTUyBOU1VSTENvbm5lY3Rpb247CiAjZW5kaWYKIAotI2lmIFBMQVRG
T1JNKENPQ09BKSB8fCBVU0UoQ0ZORVRXT1JLKQorI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0Uo
Q0ZVUkxDT05ORUNUSU9OKQogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgX19DRlVSTFN0b3JhZ2VTZXNz
aW9uKiBDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmOwogI2VuZGlmCiAKQEAgLTgzLDcgKzgzLDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgLCBtX2RlZmVyc0xvYWRpbmcoZGVmZXJz
TG9hZGluZykKICAgICAgICAgICAgICwgbV9zaG91bGRDb250ZW50U25pZmYoc2hvdWxkQ29udGVu
dFNuaWZmKQogICAgICAgICAgICAgLCBtX3VzZXNBc3luY0NhbGxiYWNrcyhjbGllbnQgJiYgY2xp
ZW50LT51c2VzQXN5bmNDYWxsYmFja3MoKSkKLSNpZiBVU0UoQ0ZORVRXT1JLKQorI2lmIFVTRShD
RlVSTENPTk5FQ1RJT04pCiAgICAgICAgICAgICAsIG1fY3VycmVudFJlcXVlc3QocmVxdWVzdCkK
ICNlbmRpZgogI2lmIFVTRShDVVJMKQpAQCAtMTMxLDE5ICsxMzEsMTkgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgICAgICBib29sIG1fZGVmZXJzTG9hZGluZzsKICAgICAgICAgYm9vbCBtX3No
b3VsZENvbnRlbnRTbmlmZjsKICAgICAgICAgYm9vbCBtX3VzZXNBc3luY0NhbGxiYWNrczsKLSNp
ZiBVU0UoQ0ZORVRXT1JLKQorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAgICAgICAgIFJldGFp
blB0cjxDRlVSTENvbm5lY3Rpb25SZWY+IG1fY29ubmVjdGlvbjsKICAgICAgICAgUmVzb3VyY2VS
ZXF1ZXN0IG1fY3VycmVudFJlcXVlc3Q7CiAgICAgICAgIFJlZlB0cjxSZXNvdXJjZUhhbmRsZUNG
VVJMQ29ubmVjdGlvbkRlbGVnYXRlPiBtX2Nvbm5lY3Rpb25EZWxlZ2F0ZTsKICNlbmRpZgotI2lm
IFBMQVRGT1JNKENPQ09BKSAmJiAhVVNFKENGTkVUV09SSykKKyNpZiBQTEFURk9STShDT0NPQSkK
ICAgICAgICAgUmV0YWluUHRyPE5TVVJMQ29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOwogICAgICAg
ICBSZXRhaW5QdHI8aWQ+IG1fZGVsZWdhdGU7CiAjZW5kaWYKICNpZiBQTEFURk9STShDT0NPQSkK
ICAgICAgICAgYm9vbCBtX3N0YXJ0V2hlblNjaGVkdWxlZDsKICNlbmRpZgotI2lmIFBMQVRGT1JN
KENPQ09BKSB8fCBVU0UoQ0ZORVRXT1JLKQorI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZV
UkxDT05ORUNUSU9OKQogICAgICAgICBSZXRhaW5QdHI8Q0ZVUkxTdG9yYWdlU2Vzc2lvblJlZj4g
bV9zdG9yYWdlU2Vzc2lvbjsKICNlbmRpZgogI2lmIFVTRShDVVJMKQpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2Uu
Y3BwCShyZXZpc2lvbiAyMDcwMzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotI2lmICFVU0UoU09VUCkgJiYgKCFQTEFURk9STShD
T0NPQSkgfHwgVVNFKENGTkVUV09SSykpCisjaWYgIVVTRShTT1VQKSAmJiAoIVBMQVRGT1JNKENP
Q09BKSB8fCBVU0UoQ0ZVUkxDT05ORUNUSU9OKSkKIGRvdWJsZSBSZXNvdXJjZVJlcXVlc3RCYXNl
OjpzX2RlZmF1bHRUaW1lb3V0SW50ZXJ2YWwgPSBJTlRfTUFYOwogI2Vsc2UKIC8vIFdpbGwgdXNl
IE5TVVJMUmVxdWVzdCBkZWZhdWx0IHRpbWVvdXQgdW5sZXNzIHNldCB0byBhIG5vbi16ZXJvIHZh
bHVlIHdpdGggc2V0RGVmYXVsdFRpbWVvdXRJbnRlcnZhbCgpLgpAQCAtNjAyLDcgKzYwMiw3IEBA
IHZvaWQgUmVzb3VyY2VSZXF1ZXN0QmFzZTo6dXBkYXRlUmVzb3VyY2UKICAgICB9CiB9CiAKLSNp
ZiAhUExBVEZPUk0oQ09DT0EpICYmICFVU0UoQ0ZORVRXT1JLKSAmJiAhVVNFKFNPVVApCisjaWYg
IVBMQVRGT1JNKENPQ09BKSAmJiAhVVNFKENGVVJMQ09OTkVDVElPTikgJiYgIVVTRShTT1VQKQog
dW5zaWduZWQgaW5pdGlhbGl6ZU1heGltdW1IVFRQQ29ubmVjdGlvbkNvdW50UGVySG9zdCgpCiB7
CiAgICAgLy8gVGhpcyBpcyB1c2VkIGJ5IHRoZSBsb2FkZXIgdG8gY29udHJvbCB0aGUgbnVtYmVy
IG9mIGlzc3VlZCBwYXJhbGxlbCBsb2FkIHJlcXVlc3RzLiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY2YvQXV0aGVudGljYXRpb25DRi5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9BdXRoZW50aWNhdGlvbkNGLmNwcAko
cmV2aXNpb24gMjA3MDM5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9B
dXRoZW50aWNhdGlvbkNGLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ0YuaCIKIAotI2lmIFVT
RShDRk5FVFdPUkspCisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKIAogI2luY2x1ZGUgIkF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlLmgiCiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25DbGllbnQuaCIK
QEAgLTUxLDE4ICs1MSw4IEBAIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjpBdXRoZW50aWNhdGlv
bkMKIHsKIH0KIAotQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6OkF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlKENGVVJMQXV0aENoYWxsZW5nZVJlZiBjZkNoYWxsZW5nZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBdXRoZW50aWNhdGlvbkNsaWVudCogYXV0
aGVudGljYXRpb25DbGllbnQpCi0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgOiBBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZUJhc2UoUHJvdGVjdGlvblNwYWNlKENGVVJMQXV0aENoYWxsZW5nZUdldFBy
b3RlY3Rpb25TcGFjZShjZkNoYWxsZW5nZSkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIENyZWRlbnRpYWwoQ0ZVUkxBdXRoQ2hhbGxlbmdlR2V0UHJvcG9zZWRDcmVkZW50aWFs
KGNmQ2hhbGxlbmdlKSksCi0jZWxzZQotICAgIDogQXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNl
KGNvcmUoQ0ZVUkxBdXRoQ2hhbGxlbmdlR2V0UHJvdGVjdGlvblNwYWNlKGNmQ2hhbGxlbmdlKSks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29yZShDRlVSTEF1dGhDaGFsbGVu
Z2VHZXRQcm9wb3NlZENyZWRlbnRpYWwoY2ZDaGFsbGVuZ2UpKSwKLSNlbmRpZgotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIENGVVJMQXV0aENoYWxsZW5nZUdldFByZXZpb3VzRmFp
bHVyZUNvdW50KGNmQ2hhbGxlbmdlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAoQ0ZVUkxSZXNwb25zZVJlZilDRlVSTEF1dGhDaGFsbGVuZ2VHZXRGYWlsdXJlUmVzcG9uc2Uo
Y2ZDaGFsbGVuZ2UpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENGVVJMQXV0
aENoYWxsZW5nZUdldEVycm9yKGNmQ2hhbGxlbmdlKSkKK0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShDRlVSTEF1dGhDaGFsbGVuZ2VSZWYgY2ZDaGFsbGVu
Z2UsIEF1dGhlbnRpY2F0aW9uQ2xpZW50KiBhdXRoZW50aWNhdGlvbkNsaWVudCkKKyAgICA6IEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZShjb3JlKENGVVJMQXV0aENoYWxsZW5nZUdldFByb3Rl
Y3Rpb25TcGFjZShjZkNoYWxsZW5nZSkpLCBjb3JlKENGVVJMQXV0aENoYWxsZW5nZUdldFByb3Bv
c2VkQ3JlZGVudGlhbChjZkNoYWxsZW5nZSkpLCBDRlVSTEF1dGhDaGFsbGVuZ2VHZXRQcmV2aW91
c0ZhaWx1cmVDb3VudChjZkNoYWxsZW5nZSksIChDRlVSTFJlc3BvbnNlUmVmKUNGVVJMQXV0aENo
YWxsZW5nZUdldEZhaWx1cmVSZXNwb25zZShjZkNoYWxsZW5nZSksIENGVVJMQXV0aENoYWxsZW5n
ZUdldEVycm9yKGNmQ2hhbGxlbmdlKSkKICAgICAsIG1fYXV0aGVudGljYXRpb25DbGllbnQoYXV0
aGVudGljYXRpb25DbGllbnQpCiAgICAgLCBtX2NmQ2hhbGxlbmdlKGNmQ2hhbGxlbmdlKQogewpA
QCAtOTMsMjIgKzgzLDEyIEBAIENGVVJMQXV0aENoYWxsZW5nZVJlZiBjcmVhdGVDRihjb25zdCBB
dXQKIHsKICAgICAvLyBGSVhNRTogV2h5IG5vdCBjYWNoZSBDRlVSTEF1dGhDaGFsbGVuZ2VSZWYg
aW4gbV9jZkNoYWxsZW5nZT8gRm91bmRhdGlvbiBjb3VudGVycGFydCBkb2VzIHRoYXQuCiAKLSNp
ZiBQTEFURk9STShDT0NPQSkKLSAgICBDRlVSTEF1dGhDaGFsbGVuZ2VSZWYgcmVzdWx0ID0gQ0ZV
UkxBdXRoQ2hhbGxlbmdlQ3JlYXRlKDAsIGNvcmVDaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlKCku
Y2ZTcGFjZSgpLCBjb3JlQ2hhbGxlbmdlLnByb3Bvc2VkQ3JlZGVudGlhbCgpLmNmQ3JlZGVudGlh
bCgpLAotI2Vsc2UKICAgICBSZXRhaW5QdHI8Q0ZVUkxDcmVkZW50aWFsUmVmPiBjcmVkZW50aWFs
ID0gYWRvcHRDRihjcmVhdGVDRihjb3JlQ2hhbGxlbmdlLnByb3Bvc2VkQ3JlZGVudGlhbCgpKSk7
CiAgICAgUmV0YWluUHRyPENGVVJMUHJvdGVjdGlvblNwYWNlUmVmPiBwcm90ZWN0aW9uU3BhY2Ug
PSBhZG9wdENGKGNyZWF0ZUNGKGNvcmVDaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlKCkpKTsKIAot
ICAgIENGVVJMQXV0aENoYWxsZW5nZVJlZiByZXN1bHQgPSBDRlVSTEF1dGhDaGFsbGVuZ2VDcmVh
dGUoMCwgcHJvdGVjdGlvblNwYWNlLmdldCgpLCBjcmVkZW50aWFsLmdldCgpLAotI2VuZGlmCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29yZUNoYWxsZW5nZS5wcmV2
aW91c0ZhaWx1cmVDb3VudCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvcmVDaGFsbGVuZ2UuZmFpbHVyZVJlc3BvbnNlKCkuY2ZVUkxSZXNwb25zZSgpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvcmVDaGFsbGVuZ2UuZXJyb3Io
KSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gQ0ZVUkxBdXRoQ2hhbGxlbmdlQ3Jl
YXRlKDAsIHByb3RlY3Rpb25TcGFjZS5nZXQoKSwgY3JlZGVudGlhbC5nZXQoKSwgY29yZUNoYWxs
ZW5nZS5wcmV2aW91c0ZhaWx1cmVDb3VudCgpLCBjb3JlQ2hhbGxlbmdlLmZhaWx1cmVSZXNwb25z
ZSgpLmNmVVJMUmVzcG9uc2UoKSwgY29yZUNoYWxsZW5nZS5lcnJvcigpKTsKIH0KIAotI2lmIFBM
QVRGT1JNKFdJTikKLQogQ0ZVUkxDcmVkZW50aWFsUmVmIGNyZWF0ZUNGKGNvbnN0IENyZWRlbnRp
YWwmIGNvcmVDcmVkZW50aWFsKQogewogICAgIENGVVJMQ3JlZGVudGlhbFBlcnNpc3RlbmNlIHBl
cnNpc3RlbmNlID0ga0NGVVJMQ3JlZGVudGlhbFBlcnNpc3RlbmNlTm9uZTsKQEAgLTI5MCw4ICsy
NzAsNyBAQCBQcm90ZWN0aW9uU3BhY2UgY29yZShDRlVSTFByb3RlY3Rpb25TcGFjCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBDRlVSTFByb3RlY3Rpb25TcGFjZUdldFJlYWxtKGNmU3BhY2Up
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NoZW1lKTsKIH0KLSNlbmRpZiAvLyBQTEFU
Rk9STShXSU4pCiAKIH07CiAKLSNlbmRpZiAvLyBVU0UoQ0ZORVRXT1JLKQorI2VuZGlmIC8vIFVT
RShDRlVSTENPTk5FQ1RJT04pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NmL0F1dGhlbnRpY2F0aW9uQ0YuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NmL0F1dGhlbnRpY2F0aW9uQ0YuaAkocmV2aXNpb24gMjA3MDM5KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9BdXRoZW50aWNhdGlvbkNGLmgJKHdv
cmtpbmcgY29weSkKQEAgLTIzLDEwICsyMyw5IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCi0j
aWZuZGVmIEF1dGhlbnRpY2F0aW9uQ0ZfaAotI2RlZmluZSBBdXRoZW50aWNhdGlvbkNGX2gKKyNw
cmFnbWEgb25jZQogCi0jaWYgVVNFKENGTkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9O
KQogCiAjaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGVVJMQ3JlZGVudGlhbFByaXYuaD4KIApAQCAtNDAs
MjAgKzM5LDEwIEBAIGNsYXNzIENyZWRlbnRpYWw7CiBjbGFzcyBQcm90ZWN0aW9uU3BhY2U7CiAK
IENGVVJMQXV0aENoYWxsZW5nZVJlZiBjcmVhdGVDRihjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSYpOwotI2lmIFBMQVRGT1JNKFdJTikKIENGVVJMQ3JlZGVudGlhbFJlZiBjcmVhdGVDRihj
b25zdCBDcmVkZW50aWFsJik7CiBDRlVSTFByb3RlY3Rpb25TcGFjZVJlZiBjcmVhdGVDRihjb25z
dCBQcm90ZWN0aW9uU3BhY2UmKTsKLSNlbmRpZgotCi0jaWYgUExBVEZPUk0oQ09DT0EpCi1BdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSBjb3JlKENGVVJMQXV0aENoYWxsZW5nZVJlZik7Ci0jZW5kaWYK
LSNpZiBQTEFURk9STShXSU4pCiBDcmVkZW50aWFsIGNvcmUoQ0ZVUkxDcmVkZW50aWFsUmVmKTsK
IFByb3RlY3Rpb25TcGFjZSBjb3JlKENGVVJMUHJvdGVjdGlvblNwYWNlUmVmKTsKLSNlbmRpZgog
fQogCi0jZW5kaWYgLy8gVVNFKENGTkVUV09SSykKLQotI2VuZGlmIC8vIEF1dGhlbnRpY2F0aW9u
Q0ZfaAorI2VuZGlmIC8vIFVTRShDRlVSTENPTk5FQ1RJT04pCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9BdXRoZW50aWNhdGlvbkNo
YWxsZW5nZS5oCShyZXZpc2lvbiAyMDcwMzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NmL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIz
LDE0ICsyMywxMyBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAotI2lmbmRlZiBBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZV9oCi0jZGVmaW5lIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlX2gKKyNwcmFn
bWEgb25jZQogCiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlLmgiCiAjaW5j
bHVkZSAiQXV0aGVudGljYXRpb25DbGllbnQuaCIKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAK
LSNpZiBVU0UoQ0ZORVRXT1JLKQorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAKIHR5cGVkZWYg
c3RydWN0IF9DRlVSTEF1dGhDaGFsbGVuZ2UqIENGVVJMQXV0aENoYWxsZW5nZVJlZjsKIApAQCAt
NTAsNyArNDksNyBAQCBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSA6IHB1YmxpYyBBCiBw
dWJsaWM6CiAgICAgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKSB7fQogICAgIFdFQkNPUkVfRVhQ
T1JUIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0IFByb3RlY3Rpb25TcGFjZSYsIGNvbnN0
IENyZWRlbnRpYWwmIHByb3Bvc2VkQ3JlZGVudGlhbCwgdW5zaWduZWQgcHJldmlvdXNGYWlsdXJl
Q291bnQsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJik7Ci0j
aWYgVVNFKENGTkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogICAgIEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlKENGVVJMQXV0aENoYWxsZW5nZVJlZiwgQXV0aGVudGljYXRpb25DbGll
bnQqKTsKIAogICAgIENGVVJMQXV0aENoYWxsZW5nZVJlZiBjZlVSTEF1dGhDaGFsbGVuZ2VSZWYo
KSBjb25zdCB7IHJldHVybiBtX2NmQ2hhbGxlbmdlLmdldCgpOyB9CkBAIC02OSw3ICs2OCw3IEBA
IHByaXZhdGU6CiAgICAgc3RhdGljIGJvb2wgcGxhdGZvcm1Db21wYXJlKGNvbnN0IEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlJiBhLCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgYik7CiAK
ICAgICAvLyBQbGF0Zm9ybSBjaGFsbGVuZ2UgbWF5IGJlIG51bGwuIElmIGl0J3Mgbm9uLW51bGws
IGl0J3MgYWx3YXlzIHVwIHRvIGRhdGUgd2l0aCBvdGhlciBmaWVsZHMuCi0jaWYgVVNFKENGTkVU
V09SSykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogICAgIFJlZlB0cjxBdXRoZW50aWNhdGlv
bkNsaWVudD4gbV9hdXRoZW50aWNhdGlvbkNsaWVudDsKICAgICBSZXRhaW5QdHI8Q0ZVUkxBdXRo
Q2hhbGxlbmdlUmVmPiBtX2NmQ2hhbGxlbmdlOwogI2Vsc2UKQEAgLTc5LDUgKzc4LDMgQEAgcHJp
dmF0ZToKIH07CiAKIH0KLQotI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NmL0Nvb2tpZUphckNGTmV0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZUphckNGTmV0LmNwcAkocmV2aXNpb24gMjA3MDM5
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Db29raWVKYXJDRk5ldC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJQbGF0Zm9ybUNvb2tpZUphci5oIgogCi0jaWYgVVNFKENGTkVUV09SSykKKyNp
ZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogCiAjaW5jbHVkZSAiQ0ZOZXR3b3JrU1BJLmgiCiAjaW5j
bHVkZSAiQ29va2llLmgiCkBAIC0yNTUsNCArMjU1LDQgQEAgdm9pZCBkZWxldGVBbGxDb29raWVz
TW9kaWZpZWRTaW5jZShjb25zdAogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZiAv
LyBVU0UoQ0ZORVRXT1JLKQorI2VuZGlmIC8vIFVTRShDRlVSTENPTk5FQ1RJT04pCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0NyZWRlbnRpYWxTdG9yYWdlQ0ZOZXQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQ3Jl
ZGVudGlhbFN0b3JhZ2VDRk5ldC5jcHAJKHJldmlzaW9uIDIwNzAzOSkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQ3JlZGVudGlhbFN0b3JhZ2VDRk5ldC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI2LDIzICsyNiwxNCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIkNyZWRlbnRpYWxTdG9yYWdlLmgiCiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQorI2lmIFVTRShD
RlVSTENPTk5FQ1RJT04pCiAKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNGLmgiCiAjaW5jbHVk
ZSAiQ0ZOZXR3b3JrU1BJLmgiCiAjaW5jbHVkZSAiQ3JlZGVudGlhbC5oIgogI2luY2x1ZGUgIlBy
b3RlY3Rpb25TcGFjZS5oIgotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLQotI2lmIFBMQVRG
T1JNKENPQ09BKQotI2luY2x1ZGUgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKLSNlbGlmIFBM
QVRGT1JNKFdJTikKICNpbmNsdWRlIDxXZWJLaXRTeXN0ZW1JbnRlcmZhY2UvV2ViS2l0U3lzdGVt
SW50ZXJmYWNlLmg+Ci0jZW5kaWYKLQotI2lmIFBMQVRGT1JNKElPUykKLSNpbmNsdWRlIDxDRk5l
dHdvcmsvQ0ZVUkxDcmVkZW50aWFsU3RvcmFnZS5oPgotI2VuZGlmCisjaW5jbHVkZSA8d3RmL1Jl
dGFpblB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCkBAIC01NCwyOSArNDUsMTEg
QEAgc3RhdGljIGlubGluZSBDRlVSTENyZWRlbnRpYWxSZWYgY29weUNyZQogCiBDcmVkZW50aWFs
IENyZWRlbnRpYWxTdG9yYWdlOjpnZXRGcm9tUGVyc2lzdGVudFN0b3JhZ2UoY29uc3QgUHJvdGVj
dGlvblNwYWNlJiBwcm90ZWN0aW9uU3BhY2UpCiB7Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAg
YXV0byBjcmVkZW50aWFsQ0YgPSBhZG9wdENGKGNvcHlDcmVkZW50aWFsRnJvbVByb3RlY3Rpb25T
cGFjZShwcm90ZWN0aW9uU3BhY2UuY2ZTcGFjZSgpKSk7Ci0gICAgcmV0dXJuIENyZWRlbnRpYWwo
Y3JlZGVudGlhbENGLmdldCgpKTsKLSNlbHNlCiAgICAgYXV0byBwcm90ZWN0aW9uU3BhY2VDRiA9
IGFkb3B0Q0YoY3JlYXRlQ0YocHJvdGVjdGlvblNwYWNlKSk7CiAgICAgYXV0byBjcmVkZW50aWFs
Q0YgPSBhZG9wdENGKGNvcHlDcmVkZW50aWFsRnJvbVByb3RlY3Rpb25TcGFjZShwcm90ZWN0aW9u
U3BhY2VDRi5nZXQoKSkpOwogICAgIHJldHVybiBjb3JlKGNyZWRlbnRpYWxDRi5nZXQoKSk7Ci0j
ZW5kaWYKLX0KLQotI2lmIFBMQVRGT1JNKElPUykKLXZvaWQgQ3JlZGVudGlhbFN0b3JhZ2U6OnNh
dmVUb1BlcnNpc3RlbnRTdG9yYWdlKGNvbnN0IFByb3RlY3Rpb25TcGFjZSYgcHJvdGVjdGlvblNw
YWNlLCBjb25zdCBDcmVkZW50aWFsJiBjcmVkZW50aWFsKQotewotICAgIFJldGFpblB0cjxDRlVS
TENyZWRlbnRpYWxTdG9yYWdlUmVmPiBzdG9yYWdlQ0YgPSBhZG9wdENGKENGVVJMQ3JlZGVudGlh
bFN0b3JhZ2VDcmVhdGUoMCkpOwotCi0gICAgaWYgKGNyZWRlbnRpYWwucGVyc2lzdGVuY2UoKSA9
PSBDcmVkZW50aWFsUGVyc2lzdGVuY2VOb25lKSB7Ci0gICAgICAgIENyZWRlbnRpYWwgc2Vzc2lv
bkNyZWRlbnRpYWwoY3JlZGVudGlhbCwgQ3JlZGVudGlhbFBlcnNpc3RlbmNlRm9yU2Vzc2lvbik7
Ci0gICAgICAgIENGVVJMQ3JlZGVudGlhbFN0b3JhZ2VTZXREZWZhdWx0Q3JlZGVudGlhbEZvclBy
b3RlY3Rpb25TcGFjZShzdG9yYWdlQ0YuZ2V0KCksIHNlc3Npb25DcmVkZW50aWFsLmNmQ3JlZGVu
dGlhbCgpLCBwcm90ZWN0aW9uU3BhY2UuY2ZTcGFjZSgpKTsKLSAgICB9IGVsc2UKLSAgICAgICAg
Q0ZVUkxDcmVkZW50aWFsU3RvcmFnZVNldERlZmF1bHRDcmVkZW50aWFsRm9yUHJvdGVjdGlvblNw
YWNlKHN0b3JhZ2VDRi5nZXQoKSwgY3JlZGVudGlhbC5jZkNyZWRlbnRpYWwoKSwgcHJvdGVjdGlv
blNwYWNlLmNmU3BhY2UoKSk7CiB9Ci0jZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
Ci0jZW5kaWYgLy8gVVNFKENGTkVUV09SSykKKyNlbmRpZiAvLyBVU0UoQ0ZVUkxDT05ORUNUSU9O
KQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Mb2FkZXJSdW5Mb29w
Q0YuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2Yv
TG9hZGVyUnVuTG9vcENGLmNwcAkocmV2aXNpb24gMjA3MDM5KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jZi9Mb2FkZXJSdW5Mb29wQ0YuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTG9hZGVyUnVu
TG9vcENGLmgiCiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04p
CiAKICNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oPgogI2luY2x1ZGUg
PGxpbWl0cz4KQEAgLTg3LDQgKzg3LDQgQEAgQ0ZSdW5Mb29wUmVmIGxvYWRlclJ1bkxvb3AoKQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZiAvLyBVU0UoQ0ZORVRXT1JLKQorI2Vu
ZGlmIC8vIFVTRShDRlVSTENPTk5FQ1RJT04pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NmL0xvYWRlclJ1bkxvb3BDRi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTG9hZGVyUnVuTG9vcENGLmgJKHJldmlzaW9uIDIwNzAz
OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTG9hZGVyUnVuTG9vcENG
LmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDEwICsyMyw5IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBMb2FkZXJSdW5Mb29wQ0ZfaAotI2RlZmlu
ZSBMb2FkZXJSdW5Mb29wQ0ZfaAorI3ByYWdtYSBvbmNlCiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQor
I2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAKIHR5cGVkZWYgc3RydWN0IF9fQ0ZSdW5Mb29wKiBD
RlJ1bkxvb3BSZWY7CiAKQEAgLTM2LDYgKzM1LDQgQEAgQ0ZSdW5Mb29wUmVmIGxvYWRlclJ1bkxv
b3AoKTsKIAogfQogCi0jZW5kaWYgLy8gVVNFKENGTkVUV09SSykKLQotI2VuZGlmIC8vIExvYWRl
clJ1bkxvb3BfaAorI2VuZGlmIC8vIFVTRShDRlVSTENPTk5FQ1RJT04pCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdv
cmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcAkocmV2aXNpb24gMjA3MDM5KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTkzLDExICs5MywxMSBAQCBSZXRhaW5QdHI8Q0ZIVFRQQ29va2ll
U3RvcmFnZVJlZj4gTmV0d29yCiAgICAgaWYgKG1fcGxhdGZvcm1TZXNzaW9uKQogICAgICAgICBy
ZXR1cm4gYWRvcHRDRihfQ0ZVUkxTdG9yYWdlU2Vzc2lvbkNvcHlDb29raWVTdG9yYWdlKGtDRkFs
bG9jYXRvckRlZmF1bHQsIG1fcGxhdGZvcm1TZXNzaW9uLmdldCgpKSk7CiAKLSNpZiBVU0UoQ0ZO
RVRXT1JLKQorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAgICAgcmV0dXJuIF9DRkhUVFBDb29r
aWVTdG9yYWdlR2V0RGVmYXVsdChrQ0ZBbGxvY2F0b3JEZWZhdWx0KTsKICNlbHNlCiAgICAgLy8g
V2hlbiB1c2luZyBOU1VSTENvbm5lY3Rpb24sIHdlIGFsc28gdXNlIGl0cyBzaGFyZWQgY29va2ll
IHN0b3JhZ2UuCi0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG51bGxwdHI7CiAjZW5kaWYKIH0K
IApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Qcm90ZWN0aW9uU3Bh
Y2VDRk5ldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jZi9Qcm90ZWN0aW9uU3BhY2VDRk5ldC5jcHAJKHJldmlzaW9uIDIwNzAzOSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUHJvdGVjdGlvblNwYWNlQ0ZOZXQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiUHJvdGVjdGlvblNwYWNlQ0ZOZXQuaCIKIAotI2lmIFVTRShDRk5FVFdPUkspCisjaWYg
VVNFKENGVVJMQ09OTkVDVElPTikKIAogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ0YuaCIKICNp
bmNsdWRlIDxDRk5ldHdvcmsvQ0ZVUkxQcm90ZWN0aW9uU3BhY2VQcml2Lmg+CkBAIC00Miw0ICs0
Miw0IEBAIGJvb2wgUHJvdGVjdGlvblNwYWNlOjpyZWNlaXZlc0NyZWRlbnRpYWwKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYgLy8gVVNFKENGTkVUV09SSykKKyNlbmRpZiAvLyBV
U0UoQ0ZVUkxDT05ORUNUSU9OKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jZi9Qcm90ZWN0aW9uU3BhY2VDRk5ldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY2YvUHJvdGVjdGlvblNwYWNlQ0ZOZXQuaAkocmV2aXNpb24gMjA3
MDM5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Qcm90ZWN0aW9uU3Bh
Y2VDRk5ldC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMywxMSArMjMsMTAgQEAKICAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAogICovCiAKLSNpZm5kZWYgUHJvdGVjdGlvblNwYWNlQ0ZOZXRfaAotI2RlZmluZSBQcm90
ZWN0aW9uU3BhY2VDRk5ldF9oCisjcHJhZ21hIG9uY2UKIAotI2lmICFQTEFURk9STShXSU4pIHx8
ICFVU0UoQ0ZORVRXT1JLKQotI2Vycm9yIFRoaXMgaGVhZGVyIHNob3VsZCBvbmx5IGJlIGluY2x1
ZGVkIHdoZW4gdGFyZ2V0aW5nIFdpbmRvd3MgYW5kIHVzaW5nIENGTmV0d29yay4KKyNpZiAhUExB
VEZPUk0oV0lOKSB8fCAhVVNFKENGVVJMQ09OTkVDVElPTikKKyNlcnJvciBUaGlzIGhlYWRlciBz
aG91bGQgb25seSBiZSBpbmNsdWRlZCB3aGVuIHRhcmdldGluZyBXaW5kb3dzIGFuZCB1c2luZyBD
RlVSTENvbm5lY3Rpb24uCiAjZW5kaWYKIAogI2luY2x1ZGUgIlByb3RlY3Rpb25TcGFjZUJhc2Uu
aCIKQEAgLTQ4LDUgKzQ3LDMgQEAgcHVibGljOgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQotCi0jZW5kaWYgLy8gUHJvdGVjdGlvblNwYWNlQ0ZOZXRfaApJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yLmgJKHJldmlzaW9u
IDIwNzAzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VF
cnJvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCwxMCArMjgsMTEgQEAKICNpbmNsdWRlICJSZXNv
dXJjZUVycm9yQmFzZS5oIgogCiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotI2lmIFVTRShD
Rk5FVFdPUkspCisKKyNpZiBQTEFURk9STShXSU4pCisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikK
ICNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9DRlN0cmVhbS5oPgogI2VuZGlmCi0jaWYgUExBVEZP
Uk0oV0lOKQogI2luY2x1ZGUgPHdpbmRvd3MuaD4KICNpbmNsdWRlIDx3aW5jcnlwdC5oPiAvLyB3
aW5kb3dzLmggbXVzdCBiZSBpbmNsdWRlZCBiZWZvcmUgd2luY3J5cHQuaC4KICNlbmRpZgpAQCAt
NjEsMTIgKzYyLDEwIEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBDRkVycm9yUmVmIGNm
RXJyb3IoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBvcGVyYXRvciBDRkVycm9yUmVmKCkg
Y29uc3Q7CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotI2lmIFBMQVRGT1JNKFdJTikKKyNpZiBVU0Uo
Q0ZVUkxDT05ORUNUSU9OKQogICAgIFJlc291cmNlRXJyb3IoY29uc3QgU3RyaW5nJiBkb21haW4s
IGludCBlcnJvckNvZGUsIGNvbnN0IFVSTCYgZmFpbGluZ1VSTCwgY29uc3QgU3RyaW5nJiBsb2Nh
bGl6ZWREZXNjcmlwdGlvbiwgQ0ZEYXRhUmVmIGNlcnRpZmljYXRlKTsKICAgICBQQ0NFUlRfQ09O
VEVYVCBjZXJ0aWZpY2F0ZSgpIGNvbnN0OwogICAgIHZvaWQgc2V0Q2VydGlmaWNhdGUoQ0ZEYXRh
UmVmKTsKLSNlbmRpZgogICAgIFJlc291cmNlRXJyb3IoQ0ZTdHJlYW1FcnJvciBlcnJvcik7CiAg
ICAgQ0ZTdHJlYW1FcnJvciBjZlN0cmVhbUVycm9yKCkgY29uc3Q7CiAgICAgb3BlcmF0b3IgQ0ZT
dHJlYW1FcnJvcigpIGNvbnN0OwpAQCAtODgsMTQgKzg3LDEzIEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBkb1BsYXRmb3JtSXNvbGF0ZWRDb3B5KGNvbnN0IFJlc291cmNlRXJyb3ImKTsKIAogICAgIGJv
b2wgbV9kYXRhSXNVcFRvRGF0ZTsKLSNpZiBVU0UoQ0ZORVRXT1JLKQorI2lmIFVTRShDRlVSTENP
Tk5FQ1RJT04pCiAgICAgbXV0YWJsZSBSZXRhaW5QdHI8Q0ZFcnJvclJlZj4gbV9wbGF0Zm9ybUVy
cm9yOwotI2lmIFBMQVRGT1JNKENPQ09BKQorI2VsaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgbXV0
YWJsZSBSZXRhaW5QdHI8TlNFcnJvcj4gbV9wbGF0Zm9ybU5TRXJyb3I7CiAjZW5kaWYKICNpZiBQ
TEFURk9STShXSU4pCiAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gbV9jZXJ0aWZpY2F0ZTsKLSNl
bmRpZgogI2Vsc2UKICAgICBtdXRhYmxlIFJldGFpblB0cjxOU0Vycm9yPiBtX3BsYXRmb3JtRXJy
b3I7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVz
b3VyY2VFcnJvckNGLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHAJKHJldmlzaW9uIDIwNzAzOSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VFcnJvckNGLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjYsMTYgKzI2LDEzIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiUmVzb3VyY2VFcnJvci5oIgogCi0jaWYgVVNFKENGTkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxD
T05ORUNUSU9OKQogCiAjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24v
Q0ZFcnJvci5oPgogI2luY2x1ZGUgPENGTmV0d29yay9DRk5ldHdvcmtFcnJvcnMuaD4KLSNpbmNs
dWRlIDx3dGYvUmV0YWluUHRyLmg+Ci0KLSNpZiBQTEFURk9STShXSU4pCiAjaW5jbHVkZSA8V2Vi
S2l0U3lzdGVtSW50ZXJmYWNlL1dlYktpdFN5c3RlbUludGVyZmFjZS5oPgotI2VuZGlmCisjaW5j
bHVkZSA8d3RmL1JldGFpblB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTIxOCw0
ICsyMTUsNCBAQCBSZXNvdXJjZUVycm9yOjpvcGVyYXRvciBDRlN0cmVhbUVycm9yKCkgCiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vIFVTRShDRk5FVFdPUkspCisjZW5kaWYg
Ly8gVVNFKENGVVJMQ09OTkVDVElPTikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcAkocmV2aXNp
b24gMjA3MDM5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJj
ZUhhbmRsZUNGTmV0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYsNiArNDYsOCBAQAogI2luY2x1
ZGUgIlN5bmNocm9ub3VzTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiU3luY2hyb25vdXNSZXNv
dXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmgiCiAjaW5jbHVkZSA8Q0ZOZXR3b3Jr
L0NGTmV0d29yay5oPgorI2luY2x1ZGUgPFdlYktpdFN5c3RlbUludGVyZmFjZS9XZWJLaXRTeXN0
ZW1JbnRlcmZhY2UuaD4KKyNpbmNsdWRlIDxwcm9jZXNzLmg+CiAjaW5jbHVkZSA8c3lzL3N0YXQu
aD4KICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpAQCAt
NTUsMjAgKzU3LDYgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9CYXNlNjQuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9DU3RyaW5nLmg+CiAKLSNpZiBQTEFURk9STShDT0NPQSkKLSNpbmNsdWRlICJSZXNv
dXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmgiCi0j
aW5jbHVkZSAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgotI2lmIFVTRShDRk5FVFdPUkspCi0j
aW5jbHVkZSAiV2ViQ29yZVVSTFJlc3BvbnNlLmgiCi0jaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGVVJM
Q29ubmVjdGlvblByaXYuaD4KLSNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZVUkxSZXF1ZXN0UHJpdi5o
PgotI2VuZGlmCi0jZW5kaWYKLQotI2lmIFBMQVRGT1JNKFdJTikKLSNpbmNsdWRlIDxXZWJLaXRT
eXN0ZW1JbnRlcmZhY2UvV2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+Ci0jaW5jbHVkZSA8cHJvY2Vz
cy5oPgotCiAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgZGVjbGFyYXRpb24gb25jZSBpdCdzIGluIFdl
YktpdFN1cHBvcnRMaWJyYXJ5LgogZXh0ZXJuICJDIiB7CiBfX2RlY2xzcGVjKGRsbGltcG9ydCkg
Q0ZVUkxDb25uZWN0aW9uUmVmIENGVVJMQ29ubmVjdGlvbkNyZWF0ZVdpdGhQcm9wZXJ0aWVzKApA
QCAtNzcsMTEgKzY1LDEwIEBAIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBDRlVSTENvbm5lY3Rpb25S
ZWYKICAgQ0ZVUkxDb25uZWN0aW9uQ2xpZW50ICogIGNsaWVudCwKICAgQ0ZEaWN0aW9uYXJ5UmVm
IHByb3BlcnRpZXMpOwogfQotI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotI2lmIFVT
RShDRk5FVFdPUkspCisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKIAogc3RhdGljIEhhc2hTZXQ8
U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiBhbGxvd3NBbnlIVFRQU0NlcnRpZmlj
YXRlSG9zdHMoKQogewpAQCAtMTIwLDExICsxMDcsNyBAQCBSZXNvdXJjZUhhbmRsZTo6flJlc291
cmNlSGFuZGxlKCkKICAgICAKIHN0YXRpYyBpbmxpbmUgQ0ZTdHJpbmdSZWYgc2hvdWxkU25pZmZD
b25uZWN0aW9uUHJvcGVydHkoKQogewotI2lmIFBMQVRGT1JNKFdJTikKICAgICByZXR1cm4gQ0ZT
VFIoIl9rQ0ZVUkxDb25uZWN0aW9uUHJvcGVydHlTaG91bGRTbmlmZiIpOwotI2Vsc2UKLSAgICBy
ZXR1cm4gX2tDRlVSTENvbm5lY3Rpb25Qcm9wZXJ0eVNob3VsZFNuaWZmOwotI2VuZGlmCiB9CiAK
IHZvaWQgUmVzb3VyY2VIYW5kbGU6OmNyZWF0ZUNGVVJMQ29ubmVjdGlvbihib29sIHNob3VsZFVz
ZUNyZWRlbnRpYWxTdG9yYWdlLCBib29sIHNob3VsZENvbnRlbnRTbmlmZiwgU2NoZWR1bGluZ0Jl
aGF2aW9yIHNjaGVkdWxpbmdCZWhhdmlvciwgQ0ZEaWN0aW9uYXJ5UmVmIGNsaWVudFByb3BlcnRp
ZXMpCkBAIC0xNjYsOSArMTQ5LDYgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6Y3JlYXRlQ0ZVUkxD
b25uZWN0aQogCiAgICAgUmV0YWluUHRyPENGTXV0YWJsZURpY3Rpb25hcnlSZWY+IHNzbFByb3Bz
OwogCi0jaWYgUExBVEZPUk0oSU9TKQotICAgIHNzbFByb3BzID0gYWRvcHRDRihSZXNvdXJjZUhh
bmRsZTo6Y3JlYXRlU1NMUHJvcGVydGllc0Zyb21OU1VSTFJlcXVlc3QoZmlyc3RSZXF1ZXN0KCkp
KTsKLSNlbHNlCiAgICAgaWYgKGFsbG93c0FueUhUVFBTQ2VydGlmaWNhdGVIb3N0cygpLmNvbnRh
aW5zKGZpcnN0UmVxdWVzdCgpLnVybCgpLmhvc3QoKSkpIHsKICAgICAgICAgc3NsUHJvcHMgPSBh
ZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMCwg
JmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNh
bGxCYWNrcykpOwogICAgICAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShzc2xQcm9wcy5nZXQoKSwg
a0NGU3RyZWFtU1NMQWxsb3dzQW55Um9vdCwga0NGQm9vbGVhblRydWUpOwpAQCAtMTgxLDExICsx
NjEsOCBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpjcmVhdGVDRlVSTENvbm5lY3RpCiAgICAgaWYg
KGNsaWVudENlcnQgIT0gY2xpZW50Q2VydGlmaWNhdGVzKCkuZW5kKCkpIHsKICAgICAgICAgaWYg
KCFzc2xQcm9wcykKICAgICAgICAgICAgIHNzbFByb3BzID0gYWRvcHRDRihDRkRpY3Rpb25hcnlD
cmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1bHQsIDAsICZrQ0ZUeXBlRGljdGlvbmFyeUtl
eUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKLSNpZiBQTEFU
Rk9STShXSU4pCiAgICAgICAgIHdrU2V0Q2xpZW50Q2VydGlmaWNhdGVJblNTTFByb3BlcnRpZXMo
c3NsUHJvcHMuZ2V0KCksIChjbGllbnRDZXJ0LT52YWx1ZSkuZ2V0KCkpOwotI2VuZGlmCiAgICAg
fQotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKIAogICAgIGlmIChzc2xQcm9wcykKICAgICAgICAg
Q0ZVUkxSZXF1ZXN0U2V0U1NMUHJvcGVydGllcyhyZXF1ZXN0LmdldCgpLCBzc2xQcm9wcy5nZXQo
KSk7CkBAIC0yMDYsMTIgKzE4Myw2IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmNyZWF0ZUNGVVJM
Q29ubmVjdGkKICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoc3RyZWFtUHJvcGVydGllcywg
Q0ZTVFIoIl9XZWJLaXRTeW5jaHJvbm91c1JlcXVlc3QiKSwga0NGQm9vbGVhblRydWUpOwogICAg
IH0KIAotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IHNvdXJj
ZUFwcGxpY2F0aW9uQXVkaXREYXRhID0gZC0+bV9jb250ZXh0LT5zb3VyY2VBcHBsaWNhdGlvbkF1
ZGl0RGF0YSgpOwotICAgIGlmIChzb3VyY2VBcHBsaWNhdGlvbkF1ZGl0RGF0YSkKLSAgICAgICAg
Q0ZEaWN0aW9uYXJ5U2V0VmFsdWUoc3RyZWFtUHJvcGVydGllcywgQ0ZTVFIoImtDRlN0cmVhbVBy
b3BlcnR5U291cmNlQXBwbGljYXRpb24iKSwgc291cmNlQXBwbGljYXRpb25BdWRpdERhdGEuZ2V0
KCkpOwotI2VuZGlmCi0KICAgICBzdGF0aWMgY29uc3QgQ0ZTdHJpbmdSZWYga0NGVVJMQ29ubmVj
dGlvblNvY2tldFN0cmVhbVByb3BlcnRpZXMgPSBDRlNUUigia0NGVVJMQ29ubmVjdGlvblNvY2tl
dFN0cmVhbVByb3BlcnRpZXMiKTsKICAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlRGljdGlvbmFyeVJl
Zj4gcHJvcGVydGllc0RpY3Rpb25hcnk7CiAgICAgaWYgKGNsaWVudFByb3BlcnRpZXMpCkBAIC0y
MzAsMTQgKzIwMSw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmNyZWF0ZUNGVVJMQ29ubmVjdGkK
ICAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShwcm9wZXJ0aWVzRGljdGlvbmFyeS5nZXQoKSwga0NG
VVJMQ29ubmVjdGlvblNvY2tldFN0cmVhbVByb3BlcnRpZXMsIHN0cmVhbVByb3BlcnRpZXMpOwog
ICAgIENGUmVsZWFzZShzdHJlYW1Qcm9wZXJ0aWVzKTsKIAotI2lmIFBMQVRGT1JNKENPQ09BKQot
ICAgIGlmIChkLT5tX3VzZXNBc3luY0NhbGxiYWNrcykKLSAgICAgICAgZC0+bV9jb25uZWN0aW9u
RGVsZWdhdGUgPSBhZG9wdFJlZihuZXcgUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxl
Z2F0ZVdpdGhPcGVyYXRpb25RdWV1ZSh0aGlzKSk7Ci0gICAgZWxzZQotICAgICAgICBkLT5tX2Nv
bm5lY3Rpb25EZWxlZ2F0ZSA9IGFkb3B0UmVmKG5ldyBTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxl
Q0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUodGhpcykpOwotI2Vsc2UKICAgICBkLT5tX2Nvbm5lY3Rp
b25EZWxlZ2F0ZSA9IGFkb3B0UmVmKG5ldyBTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxD
b25uZWN0aW9uRGVsZWdhdGUodGhpcykpOwotI2VuZGlmCiAgICAgZC0+bV9jb25uZWN0aW9uRGVs
ZWdhdGUtPnNldHVwUmVxdWVzdChyZXF1ZXN0LmdldCgpKTsKIAogICAgIENGVVJMQ29ubmVjdGlv
bkNsaWVudF9WNiBjbGllbnQgPSBkLT5tX2Nvbm5lY3Rpb25EZWxlZ2F0ZS0+bWFrZUNvbm5lY3Rp
b25DbGllbnQoKTsKQEAgLTI2NCwxMCArMjI4LDYgQEAgYm9vbCBSZXNvdXJjZUhhbmRsZTo6c3Rh
cnQoKQogCiAgICAgYm9vbCBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSA9ICFjbGllbnQoKSB8
fCBjbGllbnQoKS0+c2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UodGhpcyk7CiAKLSNpZiBFTkFC
TEUoV0VCX1RJTUlORykgJiYgUExBVEZPUk0oQ09DT0EpICYmICFIQVZFKFRJTUlOR0RBVEFPUFRJ
T05TKQotICAgIHNldENvbGxlY3RzVGltaW5nRGF0YSgpOwotI2VuZGlmCi0KICAgICBTY2hlZHVs
aW5nQmVoYXZpb3Igc2NoZWR1bGluZ0JlaGF2aW9yID0gY2xpZW50KCktPmxvYWRpbmdTeW5jaHJv
bm91c1hIUigpID8gU2NoZWR1bGluZ0JlaGF2aW9yOjpTeW5jaHJvbm91cyA6IFNjaGVkdWxpbmdC
ZWhhdmlvcjo6QXN5bmNocm9ub3VzOwogCiAgICAgY3JlYXRlQ0ZVUkxDb25uZWN0aW9uKHNob3Vs
ZFVzZUNyZWRlbnRpYWxTdG9yYWdlLCBkLT5tX3Nob3VsZENvbnRlbnRTbmlmZiwgc2NoZWR1bGlu
Z0JlaGF2aW9yLCBjbGllbnQoKS0+Y29ubmVjdGlvblByb3BlcnRpZXModGhpcykuZ2V0KCkpOwpA
QCAtMzUxLDE2ICszMTEsNiBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpkaWRSZWNlaXZlQXV0aGVu
dGljCiAgICAgQVNTRVJUKGNoYWxsZW5nZS5jZlVSTEF1dGhDaGFsbGVuZ2VSZWYoKSk7CiAgICAg
QVNTRVJUKGNoYWxsZW5nZS5hdXRoZW50aWNhdGlvbkNsaWVudCgpID09IHRoaXMpOyAvLyBTaG91
bGQgYmUgYWxyZWFkeSBzZXQuCiAKLSNpZiAhUExBVEZPUk0oV0lOKQotICAgIC8vIFByb3h5IGF1
dGhlbnRpY2F0aW9uIGlzIGhhbmRsZWQgYnkgQ0ZOZXR3b3JrIGludGVybmFsbHkuIFdlIGNhbiBn
ZXQgaGVyZSBpZiB0aGUgdXNlciBjYW5jZWxzCi0gICAgLy8gQ0ZOZXR3b3JrIGF1dGhlbnRpY2F0
aW9uIGRpYWxvZywgYW5kIHdlIHNob3VsZG4ndCBhc2sgdGhlIGNsaWVudCB0byBkaXNwbGF5IGFu
b3RoZXIgb25lIGluIHRoYXQgY2FzZS4KLSAgICBpZiAoY2hhbGxlbmdlLnByb3RlY3Rpb25TcGFj
ZSgpLmlzUHJveHkoKSkgewotICAgICAgICAvLyBDYW5ub3QgdXNlIHJlY2VpdmVkUmVxdWVzdFRv
Q29udGludWVXaXRob3V0Q3JlZGVudGlhbCgpLCBiZWNhdXNlIGN1cnJlbnQgY2hhbGxlbmdlIGlz
IG5vdCB5ZXQgc2V0LgotICAgICAgICBDRlVSTENvbm5lY3Rpb25Vc2VDcmVkZW50aWFsKGQtPm1f
Y29ubmVjdGlvbi5nZXQoKSwgMCwgY2hhbGxlbmdlLmNmVVJMQXV0aENoYWxsZW5nZVJlZigpKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLSNlbmRpZgotCiAgICAgaWYgKHRyeUhhbmRsZVBhc3N3
b3JkQmFzZWRBdXRoZW50aWNhdGlvbihjaGFsbGVuZ2UpKQogICAgICAgICByZXR1cm47CiAKQEAg
LTM4MSwxMSArMzMxLDcgQEAgYm9vbCBSZXNvdXJjZUhhbmRsZTo6dHJ5SGFuZGxlUGFzc3dvcmRC
YQogCiAgICAgaWYgKCFkLT5tX3VzZXIuaXNOdWxsKCkgJiYgIWQtPm1fcGFzcy5pc051bGwoKSkg
ewogICAgICAgICBSZXRhaW5QdHI8Q0ZVUkxDcmVkZW50aWFsUmVmPiBjZkNyZWRlbnRpYWwgPSBh
ZG9wdENGKENGVVJMQ3JlZGVudGlhbENyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBkLT5tX3Vz
ZXIuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgZC0+bV9wYXNzLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0
KCksIDAsIGtDRlVSTENyZWRlbnRpYWxQZXJzaXN0ZW5jZU5vbmUpKTsKLSNpZiBQTEFURk9STShD
T0NPQSkKLSAgICAgICAgQ3JlZGVudGlhbCBjcmVkZW50aWFsID0gQ3JlZGVudGlhbChjZkNyZWRl
bnRpYWwuZ2V0KCkpOwotI2Vsc2UKICAgICAgICAgQ3JlZGVudGlhbCBjcmVkZW50aWFsID0gY29y
ZShjZkNyZWRlbnRpYWwuZ2V0KCkpOwotI2VuZGlmCiAgICAgICAgIAogICAgICAgICBVUkwgdXJs
VG9TdG9yZTsKICAgICAgICAgaWYgKGNoYWxsZW5nZS5mYWlsdXJlUmVzcG9uc2UoKS5odHRwU3Rh
dHVzQ29kZSgpID09IDQwMSkKQEAgLTQxNSwxMiArMzYxLDggQEAgYm9vbCBSZXNvdXJjZUhhbmRs
ZTo6dHJ5SGFuZGxlUGFzc3dvcmRCYQogICAgICAgICAgICAgICAgICAgICAvLyBTdG9yZSB0aGUg
Y3JlZGVudGlhbCBiYWNrLCBwb3NzaWJseSBhZGRpbmcgaXQgYXMgYSBkZWZhdWx0IGZvciB0aGlz
IGRpcmVjdG9yeS4KICAgICAgICAgICAgICAgICAgICAgZC0+bV9jb250ZXh0LT5zdG9yYWdlU2Vz
c2lvbigpLmNyZWRlbnRpYWxTdG9yYWdlKCkuc2V0KGNyZWRlbnRpYWwsIGNoYWxsZW5nZS5wcm90
ZWN0aW9uU3BhY2UoKSwgY2hhbGxlbmdlLmZhaWx1cmVSZXNwb25zZSgpLnVybCgpKTsKICAgICAg
ICAgICAgICAgICB9Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgICAgICAgICAgICAgQ0ZVUkxD
b25uZWN0aW9uVXNlQ3JlZGVudGlhbChkLT5tX2Nvbm5lY3Rpb24uZ2V0KCksIGNyZWRlbnRpYWwu
Y2ZDcmVkZW50aWFsKCksIGNoYWxsZW5nZS5jZlVSTEF1dGhDaGFsbGVuZ2VSZWYoKSk7Ci0jZWxz
ZQogICAgICAgICAgICAgICAgIFJldGFpblB0cjxDRlVSTENyZWRlbnRpYWxSZWY+IGNmQ3JlZGVu
dGlhbCA9IGFkb3B0Q0YoY3JlYXRlQ0YoY3JlZGVudGlhbCkpOwogICAgICAgICAgICAgICAgIENG
VVJMQ29ubmVjdGlvblVzZUNyZWRlbnRpYWwoZC0+bV9jb25uZWN0aW9uLmdldCgpLCBjZkNyZWRl
bnRpYWwuZ2V0KCksIGNoYWxsZW5nZS5jZlVSTEF1dGhDaGFsbGVuZ2VSZWYoKSk7Ci0jZW5kaWYK
ICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpA
QCAtNDcwLDIwICs0MTIsMTAgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRDcmVkZW50
aWFsKAogICAgICAgICBkLT5tX2NvbnRleHQtPnN0b3JhZ2VTZXNzaW9uKCkuY3JlZGVudGlhbFN0
b3JhZ2UoKS5zZXQod2ViQ3JlZGVudGlhbCwgY2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZSgpLCB1
cmxUb1N0b3JlKTsKIAogICAgICAgICBpZiAoZC0+bV9jb25uZWN0aW9uKSB7Ci0jaWYgUExBVEZP
Uk0oQ09DT0EpCiAgICAgICAgICAgICBDRlVSTENvbm5lY3Rpb25Vc2VDcmVkZW50aWFsKGQtPm1f
Y29ubmVjdGlvbi5nZXQoKSwgd2ViQ3JlZGVudGlhbC5jZkNyZWRlbnRpYWwoKSwgY2hhbGxlbmdl
LmNmVVJMQXV0aENoYWxsZW5nZVJlZigpKTsKLSNlbHNlCi0gICAgICAgICAgICBSZXRhaW5QdHI8
Q0ZVUkxDcmVkZW50aWFsUmVmPiBjZkNyZWRlbnRpYWwgPSBhZG9wdENGKGNyZWF0ZUNGKHdlYkNy
ZWRlbnRpYWwpKTsKLSAgICAgICAgICAgIENGVVJMQ29ubmVjdGlvblVzZUNyZWRlbnRpYWwoZC0+
bV9jb25uZWN0aW9uLmdldCgpLCBjZkNyZWRlbnRpYWwuZ2V0KCksIGNoYWxsZW5nZS5jZlVSTEF1
dGhDaGFsbGVuZ2VSZWYoKSk7Ci0jZW5kaWYKICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAoZC0+
bV9jb25uZWN0aW9uKSB7Ci0jaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgICAgIENGVVJMQ29ubmVj
dGlvblVzZUNyZWRlbnRpYWwoZC0+bV9jb25uZWN0aW9uLmdldCgpLCBjcmVkZW50aWFsLmNmQ3Jl
ZGVudGlhbCgpLCBjaGFsbGVuZ2UuY2ZVUkxBdXRoQ2hhbGxlbmdlUmVmKCkpOwotI2Vsc2UKLSAg
ICAgICAgUmV0YWluUHRyPENGVVJMQ3JlZGVudGlhbFJlZj4gY2ZDcmVkZW50aWFsID0gYWRvcHRD
RihjcmVhdGVDRihjcmVkZW50aWFsKSk7Ci0gICAgICAgIENGVVJMQ29ubmVjdGlvblVzZUNyZWRl
bnRpYWwoZC0+bV9jb25uZWN0aW9uLmdldCgpLCBjZkNyZWRlbnRpYWwuZ2V0KCksIGNoYWxsZW5n
ZS5jZlVSTEF1dGhDaGFsbGVuZ2VSZWYoKSk7Ci0jZW5kaWYKICAgICB9CiAKICAgICBjbGVhckF1
dGhlbnRpY2F0aW9uKCk7CkBAIC02MjQsMzAgKzU1Niw2IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6
OnBsYXRmb3JtU2V0RGVmZXJzTG8KICAgICAgICAgQ0ZVUkxDb25uZWN0aW9uUmVzdW1lKGQtPm1f
Y29ubmVjdGlvbi5nZXQoKSk7CiB9CiAKLSNpZiBQTEFURk9STShDT0NPQSkKLXZvaWQgUmVzb3Vy
Y2VIYW5kbGU6OnNjaGVkdWxlKFNjaGVkdWxlUGFpciYgcGFpcikKLXsKLSAgICBDRlJ1bkxvb3BS
ZWYgcnVuTG9vcCA9IHBhaXIucnVuTG9vcCgpOwotICAgIGlmICghcnVuTG9vcCkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgQ0ZVUkxDb25uZWN0aW9uU2NoZWR1bGVXaXRoUnVuTG9vcChkLT5tX2Nv
bm5lY3Rpb24uZ2V0KCksIHJ1bkxvb3AsIHBhaXIubW9kZSgpKTsKLSAgICBpZiAoZC0+bV9zdGFy
dFdoZW5TY2hlZHVsZWQpIHsKLSAgICAgICAgQ0ZVUkxDb25uZWN0aW9uU3RhcnQoZC0+bV9jb25u
ZWN0aW9uLmdldCgpKTsKLSAgICAgICAgZC0+bV9zdGFydFdoZW5TY2hlZHVsZWQgPSBmYWxzZTsK
LSAgICB9Ci19Ci0KLXZvaWQgUmVzb3VyY2VIYW5kbGU6OnVuc2NoZWR1bGUoU2NoZWR1bGVQYWly
JiBwYWlyKQotewotICAgIENGUnVuTG9vcFJlZiBydW5Mb29wID0gcGFpci5ydW5Mb29wKCk7Ci0g
ICAgaWYgKCFydW5Mb29wKQotICAgICAgICByZXR1cm47Ci0KLSAgICBDRlVSTENvbm5lY3Rpb25V
bnNjaGVkdWxlRnJvbVJ1bkxvb3AoZC0+bV9jb25uZWN0aW9uLmdldCgpLCBydW5Mb29wLCBwYWly
Lm1vZGUoKSk7Ci19Ci0jZW5kaWYKLQogY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBSZXNvdXJjZUhh
bmRsZTo6Y3VycmVudFJlcXVlc3QoKSBjb25zdAogewogICAgIHJldHVybiBkLT5tX2N1cnJlbnRS
ZXF1ZXN0OwpAQCAtNjc2LDYgKzU4NCw2IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmNvbnRpbnVl
V2lsbENhY2hlUmUKIHsKICAgICBkLT5tX2Nvbm5lY3Rpb25EZWxlZ2F0ZS0+Y29udGludWVXaWxs
Q2FjaGVSZXNwb25zZShyZXNwb25zZSk7CiB9Ci0jZW5kaWYgLy8gVVNFKENGTkVUV09SSykKKyNl
bmRpZiAvLyBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZV
UkxDb25uZWN0aW9uRGVsZWdhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5j
cHAJKHJldmlzaW9uIDIwNzAzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI2LDIwICsyNiwxMyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlJl
c291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuaCIKIAotI2lmIFVTRShDRk5FVFdP
UkspCisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKIAogI2luY2x1ZGUgIkNGTmV0d29ya1NQSS5o
IgogI2luY2x1ZGUgIkZvcm1EYXRhU3RyZWFtQ0ZOZXQuaCIKICNpbmNsdWRlICJOZXR3b3JraW5n
Q29udGV4dC5oIgogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCi0KLSNpZiBQTEFURk9STShD
T0NPQSkKLSNpbmNsdWRlICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgiCi0jZW5kaWYKLQotI2lm
IFBMQVRGT1JNKFdJTikKICNpbmNsdWRlIDxXZWJLaXRTeXN0ZW1JbnRlcmZhY2UvV2ViS2l0U3lz
dGVtSW50ZXJmYWNlLmg+Ci0jZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0yMTgs
NCArMjExLDQgQEAgQ0ZVUkxDb25uZWN0aW9uQ2xpZW50X1Y2IFJlc291cmNlSGFuZGxlQwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlLgogCi0jZW5kaWYgLy8gVVNFKENGTkVUV09SSykKKyNlbmRp
ZiAvLyBVU0UoQ0ZVUkxDT05ORUNUSU9OKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRs
ZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmgJKHJldmlzaW9uIDIwNzAzOSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25E
ZWxlZ2F0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMywxMCArMjMsOSBAQAogICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KICAqLwogCi0jaWZuZGVmIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVf
aAotI2RlZmluZSBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlX2gKKyNwcmFn
bWEgb25jZQogCi0jaWYgVVNFKENGTkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQog
CiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGVVJM
Q29ubmVjdGlvblByaXYuaD4KQEAgLTEwMCw2ICs5OSw0IEBAIHByb3RlY3RlZDoKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZS4KIAotI2VuZGlmIC8vIFVTRShDRk5FVFdPUkspCi0KLSNlbmRpZiAv
LyBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlX2gKKyNlbmRpZiAvLyBVU0Uo
Q0ZVUkxDT05ORUNUSU9OKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
Zi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jl
c291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuY3Bw
CShyZXZpc2lvbiAyMDcwMzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVy
YXRpb25RdWV1ZS5oIgogCi0jaWYgVVNFKENGTkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNU
SU9OKQogCiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25DRi5oIgogI2luY2x1ZGUgIkF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlLmgiCkBAIC03NSw5ICs3NSw2IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGVD
RlVSTENvbm5lY3Rpb25EZWxlZ2EKIAogdm9pZCBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlv
bkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlOjpzZXR1cFJlcXVlc3QoQ0ZNdXRhYmxlVVJMUmVx
dWVzdFJlZiByZXF1ZXN0KQogewotI2lmIFBMQVRGT1JNKElPUykKLSAgICBDRlVSTFJlcXVlc3RT
ZXRTaG91bGRTdGFydFN5bmNocm9ub3VzbHkocmVxdWVzdCwgMSk7Ci0jZW5kaWYKICAgICBDRlVS
TFJlZiByZXF1ZXN0VVJMID0gQ0ZVUkxSZXF1ZXN0R2V0VVJMKHJlcXVlc3QpOwogICAgIGlmICgh
cmVxdWVzdFVSTCkKICAgICAgICAgcmV0dXJuOwpAQCAtMTQ5LDEwICsxNDYsOCBAQCB2b2lkIFJl
c291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhCiAgICAgICAgICAgICBhZGp1c3RNSU1F
VHlwZUlmTmVjZXNzYXJ5KGNmUmVzcG9uc2UsIGlzTWFpblJlc291cmNlTG9hZCk7CiAgICAgICAg
IH0KIAotI2lmICFQTEFURk9STShJT1MpCiAgICAgICAgIGlmIChfQ0ZVUkxSZXF1ZXN0Q29weVBy
b3RvY29sUHJvcGVydHlGb3JLZXkobV9oYW5kbGUtPmZpcnN0UmVxdWVzdCgpLmNmVVJMUmVxdWVz
dChEb05vdFVwZGF0ZUhUVFBCb2R5KSwgQ0ZTVFIoIkZvcmNlSFRNTE1JTUVUeXBlIikpKQogICAg
ICAgICAgICAgQ0ZVUkxSZXNwb25zZVNldE1JTUVUeXBlKGNmUmVzcG9uc2UsIENGU1RSKCJ0ZXh0
L2h0bWwiKSk7Ci0jZW5kaWYgLy8gIVBMQVRGT1JNKElPUykKICAgICAgICAgCiAgICAgICAgIFJl
c291cmNlUmVzcG9uc2UgcmVzb3VyY2VSZXNwb25zZShjZlJlc3BvbnNlKTsKICNpZiBFTkFCTEUo
V0VCX1RJTUlORykKQEAgLTI4OCwxNSArMjgzLDcgQEAgQm9vbGVhbiBSZXNvdXJjZUhhbmRsZUNG
VVJMQ29ubmVjdGlvbkRlbAogCiAgICAgICAgIExPRyhOZXR3b3JrLCAiQ0ZOZXQgLSBSZXNvdXJj
ZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlOjpjYW5SZXNw
b25kVG9Qcm90ZWN0aW9uU3BhY2UoaGFuZGxlPSVwKSAoJXMpIiwgbV9oYW5kbGUsIG1faGFuZGxl
LT5maXJzdFJlcXVlc3QoKS51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIAotICAgICAg
ICBQcm90ZWN0aW9uU3BhY2UgY29yZVByb3RlY3Rpb25TcGFjZSA9IFByb3RlY3Rpb25TcGFjZShw
cm90ZWN0aW9uU3BhY2UpOwotI2lmIFBMQVRGT1JNKElPUykKLSAgICAgICAgaWYgKGNvcmVQcm90
ZWN0aW9uU3BhY2UuYXV0aGVudGljYXRpb25TY2hlbWUoKSA9PSBQcm90ZWN0aW9uU3BhY2VBdXRo
ZW50aWNhdGlvblNjaGVtZVVua25vd24pIHsKLSAgICAgICAgICAgIG1fYm9vbFJlc3VsdCA9IGZh
bHNlOwotICAgICAgICAgICAgZGlzcGF0Y2hfc2VtYXBob3JlX3NpZ25hbChtX3NlbWFwaG9yZSk7
Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSNlbmRpZiAvLyBQTEFURk9STShJT1Mp
Ci0gICAgICAgIG1faGFuZGxlLT5jYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNl
KGNvcmVQcm90ZWN0aW9uU3BhY2UpOworICAgICAgICBtX2hhbmRsZS0+Y2FuQXV0aGVudGljYXRl
QWdhaW5zdFByb3RlY3Rpb25TcGFjZShQcm90ZWN0aW9uU3BhY2UocHJvdGVjdGlvblNwYWNlKSk7
CiAgICAgfSk7CiAgICAgZGlzcGF0Y2hfc2VtYXBob3JlX3dhaXQobV9zZW1hcGhvcmUsIERJU1BB
VENIX1RJTUVfRk9SRVZFUik7CiAgICAgcmV0dXJuIG1fYm9vbFJlc3VsdDsKQEAgLTM0Nyw0ICsz
MzQsNCBAQCB2b2lkIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhCiAjZW5kaWYg
Ly8gVVNFKFBST1RFQ1RJT05fU1BBQ0VfQVVUSF9DQUxMQkFDSykKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIAotI2VuZGlmIC8vIFVTRShDRk5FVFdPUkspCisjZW5kaWYgLy8gVVNFKENGVVJMQ09O
TkVDVElPTikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3Vy
Y2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5k
bGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5oCShyZXZpc2lvbiAy
MDcwMzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFu
ZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuaAkod29ya2luZyBj
b3B5KQpAQCAtMjMsMTAgKzIzLDkgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBS
ZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlX2gK
LSNkZWZpbmUgUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRp
b25RdWV1ZV9oCisjcHJhZ21hIG9uY2UKIAotI2lmIFVTRShDRk5FVFdPUkspCisjaWYgVVNFKENG
VVJMQ09OTkVDVElPTikKIAogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9u
RGVsZWdhdGUuaCIKICNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZOZXR3b3JrLmg+CkBAIC04MCw2ICs3
OSw0IEBAIHByaXZhdGU6CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUuCiAKLSNlbmRpZiAvLyBV
U0UoQ0ZORVRXT1JLKQotCi0jZW5kaWYgLy8gUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25E
ZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZV9oCisjZW5kaWYgLy8gVVNFKENGVVJMQ09OTkVDVElP
TikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1
ZXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9S
ZXNvdXJjZVJlcXVlc3QuaAkocmV2aXNpb24gMjA3MDM5KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzEs
NyArMzEsNyBAQAogCiBPQkpDX0NMQVNTIE5TVVJMUmVxdWVzdDsKIAotI2lmIFBMQVRGT1JNKENP
Q09BKSB8fCBVU0UoQ0ZORVRXT1JLKQorI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZVUkxD
T05ORUNUSU9OKQogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgX0NGVVJMUmVxdWVzdCogQ0ZVUkxSZXF1
ZXN0UmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgX19DRlVSTFN0b3JhZ2VTZXNzaW9uKiBDRlVS
TFN0b3JhZ2VTZXNzaW9uUmVmOwogI2VuZGlmCkBAIC02MSwxMyArNjEsNyBAQCBwdWJsaWM6CiAg
ICAgewogICAgIH0KICAgICAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotI2lmIFBMQVRGT1JNKENPQ09B
KQotICAgIFdFQkNPUkVfRVhQT1JUIFJlc291cmNlUmVxdWVzdChOU1VSTFJlcXVlc3QgKik7Ci0g
ICAgdm9pZCB1cGRhdGVOU1VSTFJlcXVlc3QoKTsKLSAgICB2b2lkIGNsZWFyT3JVcGRhdGVOU1VS
TFJlcXVlc3QoKTsKLSNlbmRpZgotCisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKICAgICBSZXNv
dXJjZVJlcXVlc3QoQ0ZVUkxSZXF1ZXN0UmVmIGNmUmVxdWVzdCkKICAgICAgICAgOiBSZXNvdXJj
ZVJlcXVlc3RCYXNlKCkKICAgICAgICAgLCBtX2NmUmVxdWVzdChjZlJlcXVlc3QpCkBAIC04NCwx
MSArNzgsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1cGRhdGVGcm9tRGVs
ZWdhdGVQcmVzZXJ2aW5nT2xkUHJvcGVydGllcyhjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKIAog
I2lmIFBMQVRGT1JNKENPQ09BKQotI2lmIFVTRShDRk5FVFdPUkspCi0gICAgYm9vbCBlbmNvZGlu
Z1JlcXVpcmVzUGxhdGZvcm1EYXRhKCkgY29uc3QgeyByZXR1cm4gbV9odHRwQm9keSB8fCBtX2Nm
UmVxdWVzdDsgfQotI2Vsc2UKICAgICBib29sIGVuY29kaW5nUmVxdWlyZXNQbGF0Zm9ybURhdGEo
KSBjb25zdCB7IHJldHVybiBtX2h0dHBCb2R5IHx8IG1fbnNSZXF1ZXN0OyB9Ci0jZW5kaWYKICAg
ICBXRUJDT1JFX0VYUE9SVCBOU1VSTFJlcXVlc3QgKm5zVVJMUmVxdWVzdChIVFRQQm9keVVwZGF0
ZVBvbGljeSkgY29uc3Q7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgQ0ZTdHJpbmdSZWYg
aXNVc2VySW5pdGlhdGVkS2V5KCk7CkBAIC0xMDUsNyArOTUsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzZXREb21haW5Gb3JDYWNoZVBhcnRpdGlvbihjb25zdCBTdHJpbmcmIGRvbWFpbikgeyBtX2Nh
Y2hlUGFydGl0aW9uID0gcGFydGl0aW9uTmFtZShkb21haW4pOyB9CiAjZW5kaWYKIAotI2lmIFBM
QVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZORVRXT1JLKQorI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBV
U0UoQ0ZVUkxDT05ORUNUSU9OKQogICAgIFdFQkNPUkVfRVhQT1JUIENGVVJMUmVxdWVzdFJlZiBj
ZlVSTFJlcXVlc3QoSFRUUEJvZHlVcGRhdGVQb2xpY3kpIGNvbnN0OwogICAgIHZvaWQgc2V0U3Rv
cmFnZVNlc3Npb24oQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZik7CiAjZW5kaWYKQEAgLTEyNSw3ICsx
MTUsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBkb1BsYXRmb3JtU2V0QXNJc29sYXRlZENvcHko
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQorI2lmIFVTRShD
RlVSTENPTk5FQ1RJT04pCiAgICAgUmV0YWluUHRyPENGVVJMUmVxdWVzdFJlZj4gbV9jZlJlcXVl
c3Q7CiAjZW5kaWYKICNpZiBQTEFURk9STShDT0NPQSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQu
Y3BwCShyZXZpc2lvbiAyMDcwMzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NmL1Jlc291cmNlUmVxdWVzdENGTmV0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQs
NyBAQAogI2luY2x1ZGUgIlB1YmxpY1N1ZmZpeC5oIgogI2VuZGlmCiAKLSNpZiBVU0UoQ0ZORVRX
T1JLKQorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAjaW5jbHVkZSAiRm9ybURhdGFTdHJlYW1D
Rk5ldC5oIgogI2luY2x1ZGUgPENGTmV0d29yay9DRlVSTFJlcXVlc3RQcml2Lmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvQ1N0cmluZy5oPgpAQCAtNTksMTIgKzU5LDExIEBAIGJvb2wgUmVzb3VyY2VS
ZXF1ZXN0OjpzX2h0dHBQaXBlbGluaW5nRW4KIGJvb2wgUmVzb3VyY2VSZXF1ZXN0OjpzX2h0dHBQ
aXBlbGluaW5nRW5hYmxlZCA9IGZhbHNlOwogI2VuZGlmCiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQor
I2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAKIHR5cGVkZWYgdm9pZCAoKkNGVVJMUmVxdWVzdFNl
dENvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheUZ1bmN0aW9uKShDRk11dGFi
bGVVUkxSZXF1ZXN0UmVmLCBDRkFycmF5UmVmKTsKIHR5cGVkZWYgQ0ZBcnJheVJlZiAoKkNGVVJM
UmVxdWVzdENvcHlDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXlGdW5jdGlv
bikoQ0ZVUkxSZXF1ZXN0UmVmKTsKIAotI2lmIFBMQVRGT1JNKFdJTikKIHN0YXRpYyBITU9EVUxF
IGZpbmRDRk5ldHdvcmtNb2R1bGUoKQogewogI2lmbmRlZiBERUJVR19BTEwKQEAgLTgzLDE3ICs4
Miw2IEBAIHN0YXRpYyBDRlVSTFJlcXVlc3RDb3B5Q29udGVudERpc3Bvc2l0aW8KIHsKICAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxDRlVSTFJlcXVlc3RDb3B5Q29udGVudERpc3Bvc2l0aW9u
RW5jb2RpbmdGYWxsYmFja0FycmF5RnVuY3Rpb24+KEdldFByb2NBZGRyZXNzKGZpbmRDRk5ldHdv
cmtNb2R1bGUoKSwgIl9DRlVSTFJlcXVlc3RDb3B5Q29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdG
YWxsYmFja0FycmF5IikpOwogfQotI2VsaWYgUExBVEZPUk0oQ09DT0EpCi1zdGF0aWMgQ0ZVUkxS
ZXF1ZXN0U2V0Q29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5RnVuY3Rpb24g
ZmluZENGVVJMUmVxdWVzdFNldENvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJh
eUZ1bmN0aW9uKCkKLXsKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxDRlVSTFJlcXVlc3RT
ZXRDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXlGdW5jdGlvbj4oZGxzeW0o
UlRMRF9ERUZBVUxULCAiX0NGVVJMUmVxdWVzdFNldENvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5n
RmFsbGJhY2tBcnJheSIpKTsKLX0KLQotc3RhdGljIENGVVJMUmVxdWVzdENvcHlDb250ZW50RGlz
cG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXlGdW5jdGlvbiBmaW5kQ0ZVUkxSZXF1ZXN0Q29w
eUNvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheUZ1bmN0aW9uKCkKLXsKLSAg
ICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxDRlVSTFJlcXVlc3RDb3B5Q29udGVudERpc3Bvc2l0
aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5RnVuY3Rpb24+KGRsc3ltKFJUTERfREVGQVVMVCwgIl9D
RlVSTFJlcXVlc3RDb3B5Q29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5Iikp
OwotfQotI2VuZGlmCiAKIHN0YXRpYyB2b2lkIHNldENvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5n
RmFsbGJhY2tBcnJheShDRk11dGFibGVVUkxSZXF1ZXN0UmVmIHJlcXVlc3QsIENGQXJyYXlSZWYg
ZmFsbGJhY2tBcnJheSkKIHsKQEAgLTE1NiwxMCArMTQ0LDYgQEAgdm9pZCBSZXNvdXJjZVJlcXVl
c3Q6OmRvVXBkYXRlUGxhdGZvcm1SZQogICAgIGlmIChyZXNvdXJjZVByaW9yaXRpZXNFbmFibGVk
KCkpCiAgICAgICAgIENGVVJMUmVxdWVzdFNldFJlcXVlc3RQcmlvcml0eShjZlJlcXVlc3QsIHRv
UGxhdGZvcm1SZXF1ZXN0UHJpb3JpdHkocHJpb3JpdHkoKSkpOwogCi0jaWYgIVBMQVRGT1JNKFdJ
TikKLSAgICBfQ0ZVUkxSZXF1ZXN0U2V0UHJvdG9jb2xQcm9wZXJ0eShjZlJlcXVlc3QsIGtDRlVS
TFJlcXVlc3RBbGxvd0FsbFBPU1RDYWNoaW5nLCBrQ0ZCb29sZWFuVHJ1ZSk7Ci0jZW5kaWYKLQog
ICAgIHNldEhlYWRlckZpZWxkcyhjZlJlcXVlc3QsIGh0dHBIZWFkZXJGaWVsZHMoKSk7CiAKICAg
ICBDRlVSTFJlcXVlc3RTZXRTaG91bGRIYW5kbGVIVFRQQ29va2llcyhjZlJlcXVlc3QsIGFsbG93
Q29va2llcygpKTsKQEAgLTE4NCw5ICsxNjgsNiBAQCB2b2lkIFJlc291cmNlUmVxdWVzdDo6ZG9V
cGRhdGVQbGF0Zm9ybVJlCiAjZW5kaWYKIAogICAgIG1fY2ZSZXF1ZXN0ID0gYWRvcHRDRihjZlJl
cXVlc3QpOwotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIGNsZWFyT3JVcGRhdGVOU1VSTFJlcXVl
c3QoKTsKLSNlbmRpZgogfQogCiB2b2lkIFJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVQbGF0Zm9y
bUhUVFBCb2R5KCkKQEAgLTIxOSwzMCArMjAwLDEyIEBAIHZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojpk
b1VwZGF0ZVBsYXRmb3JtSFQKICAgICB9CiAKICAgICBtX2NmUmVxdWVzdCA9IGFkb3B0Q0YoY2ZS
ZXF1ZXN0KTsKLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICBjbGVhck9yVXBkYXRlTlNVUkxSZXF1
ZXN0KCk7Ci0jZW5kaWYKIH0KIAogdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUmVzb3Vy
Y2VSZXF1ZXN0KCkKIHsKICAgICBpZiAoIW1fY2ZSZXF1ZXN0KSB7Ci0jaWYgUExBVEZPUk0oSU9T
KQotICAgICAgICAvLyA8cmRhcjovL3Byb2JsZW0vOTkxMzUyNj4KLSAgICAgICAgLy8gVGhpcyBp
cyBhIGhhY2sgdG8gbWltaWMgdGhlIHN1YnRsZSBiZWhhdmlvdXIgb2YgdGhlIEZvdW5kYXRpb24g
YmFzZWQgUmVzb3VyY2VSZXF1ZXN0Ci0gICAgICAgIC8vIGNvZGUuIFRoYXQgY29kZSBkb2VzIG5v
dCByZXNldCBtX2h0dHBNZXRob2QgaWYgdGhlIE5TVVJMUmVxdWVzdCBpcyBuaWwuIEkgZmlsZWQK
LSAgICAgICAgLy8gPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NjMz
Nj4gdG8gdHJhY2sgdGhhdC4KLSAgICAgICAgLy8gQW5vdGhlciByZWxhdGVkIGJ1ZyBpcyA8aHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY2MzUwPi4gRml4aW5nIHRoYXQK
LSAgICAgICAgLy8gd291bGQsIGlkZWFsbHksIGFsbG93IHVzIHRvIG5vdCBoYXZlIHRoaXMgaGFj
ay4gQnV0IHVuZm9ydHVuYXRlbHkgdGhhdCBjYXVzZWQgbGF5b3V0IHRlc3QKLSAgICAgICAgLy8g
ZmFpbHVyZXMuCi0gICAgICAgIC8vIFJlbW92YWwgb2YgdGhpcyBoYWNrIGlzIHRyYWNrZWQgYnkg
PHJkYXI6Ly9wcm9ibGVtLzk5NzA0OTk+LgotCi0gICAgICAgIFN0cmluZyBodHRwTWV0aG9kID0g
bV9odHRwTWV0aG9kOwogICAgICAgICAqdGhpcyA9IFJlc291cmNlUmVxdWVzdCgpOwotICAgICAg
ICBtX2h0dHBNZXRob2QgPSBodHRwTWV0aG9kOwotI2Vsc2UKLSAgICAgICAgKnRoaXMgPSBSZXNv
dXJjZVJlcXVlc3QoKTsKLSNlbmRpZgogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0zMTcs
MTIgKzI4MCw5IEBAIHZvaWQgUmVzb3VyY2VSZXF1ZXN0OjpzZXRTdG9yYWdlU2Vzc2lvbigKICAg
ICBpZiAoc3RvcmFnZVNlc3Npb24pCiAgICAgICAgIF9DRlVSTFJlcXVlc3RTZXRTdG9yYWdlU2Vz
c2lvbihjZlJlcXVlc3QsIHN0b3JhZ2VTZXNzaW9uKTsKICAgICBtX2NmUmVxdWVzdCA9IGFkb3B0
Q0YoY2ZSZXF1ZXN0KTsKLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICBjbGVhck9yVXBkYXRlTlNV
UkxSZXF1ZXN0KCk7Ci0jZW5kaWYKIH0KIAotI2VuZGlmIC8vIFVTRShDRk5FVFdPUkspCisjZW5k
aWYgLy8gVVNFKENGVVJMQ09OTkVDVElPTikKIAogdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OnVwZGF0
ZUZyb21EZWxlZ2F0ZVByZXNlcnZpbmdPbGRQcm9wZXJ0aWVzKGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgZGVsZWdhdGVQcm92aWRlZFJlcXVlc3QpCiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdENGTmV0LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5oCShy
ZXZpc2lvbiAyMDcwMzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jl
c291cmNlUmVxdWVzdENGTmV0LmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDggKzIzLDcgQEAKICAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAogICovCiAKLSNpZm5kZWYgUmVzb3VyY2VSZXF1ZXN0Q0ZOZXRfaAotI2Rl
ZmluZSBSZXNvdXJjZVJlcXVlc3RDRk5ldF9oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkNG
TmV0d29ya1NQSS5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9hZFByaW9yaXR5LmgiCkBAIC0zMyw3
ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0Owog
Ci0jaWYgVVNFKENGTkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogdm9pZCBnZXRS
ZXNvdXJjZVJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiwgQ0ZVUkxSZXF1ZXN0UmVmKTsKIENGVVJM
UmVxdWVzdFJlZiBjZlVSTFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAjZW5kaWYK
QEAgLTc4LDUgKzc3LDMgQEAgaW5saW5lIENGVVJMUmVxdWVzdFByaW9yaXR5IHRvUGxhdGZvcm1S
ZQogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBSZXNvdXJjZVJlcXVl
c3RDRk5ldF9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291
cmNlUmVzcG9uc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NmL1Jlc291cmNlUmVzcG9uc2UuaAkocmV2aXNpb24gMjA3MDM5KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlc3BvbnNlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI4LDcgKzI4LDcgQEAKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlQmFzZS5oIgog
I2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAotI2lmIFVTRShDRk5FVFdPUkspCisjaWYgVVNF
KENGVVJMQ09OTkVDVElPTikKICNpbmNsdWRlICJDRk5ldHdvcmtTUEkuaCIKICNlbmRpZgogCkBA
IC00MywxNiArNDMsMTMgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAKLSNpZiBVU0UoQ0ZORVRX
T1JLKQorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAgICAgUmVzb3VyY2VSZXNwb25zZShDRlVS
TFJlc3BvbnNlUmVmIGNmUmVzcG9uc2UpCiAgICAgICAgIDogbV9pbml0TGV2ZWwoVW5pbml0aWFs
aXplZCkKICAgICAgICAgLCBtX2NmUmVzcG9uc2UoY2ZSZXNwb25zZSkKICAgICB7CiAgICAgICAg
IG1faXNOdWxsID0gIWNmUmVzcG9uc2U7CiAgICAgfQotI2lmIFBMQVRGT1JNKENPQ09BKQotICAg
IFdFQkNPUkVfRVhQT1JUIFJlc291cmNlUmVzcG9uc2UoTlNVUkxSZXNwb25zZSAqKTsKLSNlbmRp
ZgogI2Vsc2UKICAgICBSZXNvdXJjZVJlc3BvbnNlKE5TVVJMUmVzcG9uc2UgKm5zUmVzcG9uc2Up
CiAgICAgICAgIDogbV9pbml0TGV2ZWwoVW5pbml0aWFsaXplZCkKQEAgLTg0LDcgKzgxLDcgQEAg
cHVibGljOgogICAgICAgICAgKi8KICAgICB9CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQorI2lmIFVT
RShDRlVSTENPTk5FQ1RJT04pCiAgICAgV0VCQ09SRV9FWFBPUlQgQ0ZVUkxSZXNwb25zZVJlZiBj
ZlVSTFJlc3BvbnNlKCkgY29uc3Q7CiAjZW5kaWYKICNpZiBQTEFURk9STShDT0NPQSkKQEAgLTEw
OCwxMCArMTA1LDkgQEAgcHJpdmF0ZToKIAogICAgIHVuc2lnbmVkIG1faW5pdExldmVsIDogMzsK
IAotI2lmIFVTRShDRk5FVFdPUkspCisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKICAgICBtdXRh
YmxlIFJldGFpblB0cjxDRlVSTFJlc3BvbnNlUmVmPiBtX2NmUmVzcG9uc2U7Ci0jZW5kaWYKLSNp
ZiBQTEFURk9STShDT0NPQSkKKyNlbGlmIFBMQVRGT1JNKENPQ09BKQogICAgIG11dGFibGUgUmV0
YWluUHRyPE5TVVJMUmVzcG9uc2U+IG1fbnNSZXNwb25zZTsKICNlbmRpZgogfTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXNwb25zZUNGTmV0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291
cmNlUmVzcG9uc2VDRk5ldC5jcHAJKHJldmlzaW9uIDIwNzAzOSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXNwb25zZUNGTmV0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlJl
c291cmNlUmVzcG9uc2UuaCIKIAotI2lmIFVTRShDRk5FVFdPUkspCisjaWYgVVNFKENGVVJMQ09O
TkVDVElPTikKIAogI2luY2x1ZGUgIkNGTmV0d29ya1NQSS5oIgogCkBAIC0zNCwxMCArMzQsNiBA
QAogI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRy
Lmg+CiAKLSNpZiBQTEFURk9STShDT0NPQSkKLSNpbmNsdWRlICJXZWJDb3JlU3lzdGVtSW50ZXJm
YWNlLmgiCi0jZW5kaWYKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgQ0ZTdHJpbmdS
ZWYgY29uc3QgY29tbW9uSGVhZGVyRmllbGRzW10gPSB7CkBAIC00NywxMyArNDMsOSBAQCBzdGF0
aWMgQ0ZTdHJpbmdSZWYgY29uc3QgY29tbW9uSGVhZGVyRmllCiBDRlVSTFJlc3BvbnNlUmVmIFJl
c291cmNlUmVzcG9uc2U6OmNmVVJMUmVzcG9uc2UoKSBjb25zdAogewogICAgIGlmICghbV9jZlJl
c3BvbnNlICYmICFtX2lzTnVsbCkgewotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgICAgICBuc1VS
TFJlc3BvbnNlKCk7Ci0jZWxzZQogICAgICAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IHVybCA9IG1f
dXJsLmNyZWF0ZUNGVVJMKCk7CiAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGNyZWF0ZXMgYSB2ZXJ5
IGluY29tcGxldGUgQ0ZVUkxSZXNwb25zZSwgd2hpY2ggZG9lcyBub3QgZXZlbiBoYXZlIGEgc3Rh
dHVzIGNvZGUuCiAgICAgICAgIG1fY2ZSZXNwb25zZSA9IGFkb3B0Q0YoQ0ZVUkxSZXNwb25zZUNy
ZWF0ZSgwLCB1cmwuZ2V0KCksIG1fbWltZVR5cGUuc3RyaW5nKCkuY3JlYXRlQ0ZTdHJpbmcoKS5n
ZXQoKSwgbV9leHBlY3RlZENvbnRlbnRMZW5ndGgsIG1fdGV4dEVuY29kaW5nTmFtZS5zdHJpbmco
KS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBrQ0ZVUkxDYWNoZVN0b3JhZ2VBbGxvd2VkKSk7Ci0j
ZW5kaWYKICAgICB9CiAKICAgICByZXR1cm4gbV9jZlJlc3BvbnNlLmdldCgpOwpAQCAtMTE2LDEy
ICsxMDgsMTAgQEAgdm9pZCBSZXNvdXJjZVJlc3BvbnNlOjpwbGF0Zm9ybUxhenlJbml0KAogICAg
IG1faW5pdExldmVsID0gaW5pdExldmVsOwogfQogCi0jaWYgIVBMQVRGT1JNKENPQ09BKQogQ2Vy
dGlmaWNhdGVJbmZvIFJlc291cmNlUmVzcG9uc2U6OnBsYXRmb3JtQ2VydGlmaWNhdGVJbmZvKCkg
Y29uc3QKIHsKICAgICByZXR1cm4geyB9OwogfQotI2VuZGlmCiAKIFN0cmluZyBSZXNvdXJjZVJl
c3BvbnNlOjpwbGF0Zm9ybVN1Z2dlc3RlZEZpbGVuYW1lKCkgY29uc3QKIHsKQEAgLTE0Miw0ICsx
MzIsNCBAQCBib29sIFJlc291cmNlUmVzcG9uc2U6OnBsYXRmb3JtQ29tcGFyZShjCiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vIFVTRShDRk5FVFdPUkspCisjZW5kaWYgLy8g
VVNFKENGVVJMQ09OTkVDVElPTikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2YvU3luY2hyb25vdXNMb2FkZXJDbGllbnRDRk5ldC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9TeW5jaHJvbm91c0xvYWRlckNsaWVudENG
TmV0LmNwcAkocmV2aXNpb24gMjA3MDM5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jZi9TeW5jaHJvbm91c0xvYWRlckNsaWVudENGTmV0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjYsNyArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlN5bmNocm9u
b3VzTG9hZGVyQ2xpZW50LmgiCiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQorI2lmIFVTRShDRlVSTENP
Tk5FQ1RJT04pCiAKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oIgogI2luY2x1
ZGUgIlJlc291cmNlSGFuZGxlLmgiCkBAIC00OCw0ICs0OCw0IEBAIFJlc291cmNlRXJyb3IgU3lu
Y2hyb25vdXNMb2FkZXJDbGllbnQ6OnAKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5k
aWYgLy8gVVNFKENGTkVUV09SSykKKyNlbmRpZiAvLyBVU0UoQ0ZVUkxDT05ORUNUSU9OKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9TeW5jaHJvbm91c1Jlc291cmNl
SGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJM
Q29ubmVjdGlvbkRlbGVnYXRlLmNwcAkocmV2aXNpb24gMjA3MDM5KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9TeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25u
ZWN0aW9uRGVsZWdhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxMiArMjYsMTMgQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZV
UkxDb25uZWN0aW9uRGVsZWdhdGUuaCIKIAotI2lmIFVTRShDRk5FVFdPUkspCisjaWYgVVNFKENG
VVJMQ09OTkVDVElPTikKIAogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ0YuaCIKICNpbmNsdWRl
ICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oIgogI2luY2x1ZGUgIkxvYWRlclJ1bkxvb3BDRi5o
IgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCiAj
aW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZUNsaWVu
dC5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKQEAgLTQwLDIwICs0MSw2IEBACiAj
aW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgogCi0jaWYgUExBVEZPUk0oQ09DT0EpCi0jaW5jbHVkZSAiQ0ZOZXR3b3JrU1BJLmgiCi0j
aW5jbHVkZSAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgotI2luY2x1ZGUgIldlYkNvcmVVUkxS
ZXNwb25zZS5oIgotI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKQotCi0jaWYgUExBVEZPUk0oSU9T
KQotI2luY2x1ZGUgIldlYkNvcmVUaHJlYWQuaCIKLSNlbmRpZiAvLyBQTEFURk9STShJT1MpCi0K
LSNpZiBQTEFURk9STShXSU4pCi0jaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgotI2VuZGlm
IC8vIFBMQVRGT1JNKFdJTikKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBTeW5jaHJvbm91c1Jl
c291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OlN5bmNocm9ub3VzUmVzb3VyY2VI
YW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZShSZXNvdXJjZUhhbmRsZSogaGFuZGxlKQpAQCAt
NjMsMjAgKzUwLDExIEBAIFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb24K
IAogdm9pZCBTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6
OnNldHVwUmVxdWVzdChDRk11dGFibGVVUkxSZXF1ZXN0UmVmIHJlcXVlc3QpCiB7Ci0jaWYgUExB
VEZPUk0oSU9TKQotICAgIENGVVJMUmVxdWVzdFNldFNob3VsZFN0YXJ0U3luY2hyb25vdXNseShy
ZXF1ZXN0LCAxKTsKLSNlbmRpZgogfQogCiB2b2lkIFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVD
RlVSTENvbm5lY3Rpb25EZWxlZ2F0ZTo6c2V0dXBDb25uZWN0aW9uU2NoZWR1bGluZyhDRlVSTENv
bm5lY3Rpb25SZWYgY29ubmVjdGlvbikKIHsKLSNpZiBQTEFURk9STShXSU4pCiAgICAgQ0ZVUkxD
b25uZWN0aW9uU2NoZWR1bGVXaXRoQ3VycmVudE1lc3NhZ2VRdWV1ZShjb25uZWN0aW9uKTsKLSNl
bGlmIFBMQVRGT1JNKElPUykKLSAgICBDRlVSTENvbm5lY3Rpb25TY2hlZHVsZVdpdGhSdW5Mb29w
KGNvbm5lY3Rpb24sIFdlYlRocmVhZFJ1bkxvb3AoKSwga0NGUnVuTG9vcERlZmF1bHRNb2RlKTsK
LSNlbHNlCi0gICAgQ0ZVUkxDb25uZWN0aW9uU2NoZWR1bGVXaXRoUnVuTG9vcChjb25uZWN0aW9u
LCBDRlJ1bkxvb3BHZXRDdXJyZW50KCksIGtDRlJ1bkxvb3BEZWZhdWx0TW9kZSk7Ci0jZW5kaWYK
ICAgICBDRlVSTENvbm5lY3Rpb25TY2hlZHVsZURvd25sb2FkV2l0aFJ1bkxvb3AoY29ubmVjdGlv
biwgbG9hZGVyUnVuTG9vcCgpLCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUpOwogfQogCkBAIC0xMDMs
NyArODEsNiBAQCBDRlVSTFJlcXVlc3RSZWYgU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsCiAgICAg
cmV0dXJuIG5ld0NGUmVxdWVzdDsKIH0KIAotI2lmICFQTEFURk9STShDT0NPQSkKIHN0YXRpYyB2
b2lkIHNldERlZmF1bHRNSU1FVHlwZShDRlVSTFJlc3BvbnNlUmVmIHJlc3BvbnNlKQogewogICAg
IHN0YXRpYyBDRlN0cmluZ1JlZiBkZWZhdWx0TUlNRVR5cGVTdHJpbmcgPSBkZWZhdWx0TUlNRVR5
cGUoKS5jcmVhdGVDRlN0cmluZygpLmxlYWtSZWYoKTsKQEAgLTEzMyw3ICsxMTAsNiBAQCBzdGF0
aWMgdm9pZCBhZGp1c3RNSU1FVHlwZUlmTmVjZXNzYXJ5KENGCiAgICAgaWYgKHJlc3VsdCAhPSBv
cmlnaW5hbFJlc3VsdCkKICAgICAgICAgQ0ZVUkxSZXNwb25zZVNldE1JTUVUeXBlKGNmUmVzcG9u
c2UsIHJlc3VsdC5nZXQoKSk7CiB9Ci0jZW5kaWYgLy8gIVBMQVRGT1JNKENPQ09BKQogCiB2b2lk
IFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZTo6ZGlkUmVj
ZWl2ZVJlc3BvbnNlKENGVVJMQ29ubmVjdGlvblJlZiBjb25uZWN0aW9uLCBDRlVSTFJlc3BvbnNl
UmVmIGNmUmVzcG9uc2UpCiB7CkBAIC0xNDIsMjEgKzExOCw2IEBAIHZvaWQgU3luY2hyb25vdXNS
ZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmUKICAgICBpZiAoIW1faGFuZGxlLT5jbGllbnQoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgLy8gQXZvaWQgTUlNRSB0
eXBlIHNuaWZmaW5nIGlmIHRoZSByZXNwb25zZSBjb21lcyBiYWNrIGFzIDMwNCBOb3QgTW9kaWZp
ZWQuCi0gICAgYXV0byBtc2cgPSBDRlVSTFJlc3BvbnNlR2V0SFRUUFJlc3BvbnNlKGNmUmVzcG9u
c2UpOwotICAgIGludCBzdGF0dXNDb2RlID0gbXNnID8gQ0ZIVFRQTWVzc2FnZUdldFJlc3BvbnNl
U3RhdHVzQ29kZShtc2cpIDogMDsKLQotICAgIGlmIChzdGF0dXNDb2RlICE9IDMwNCkgewotICAg
ICAgICBib29sIGlzTWFpblJlc291cmNlTG9hZCA9IG1faGFuZGxlLT5maXJzdFJlcXVlc3QoKS5y
ZXF1ZXN0ZXIoKSA9PSBSZXNvdXJjZVJlcXVlc3Q6OlJlcXVlc3Rlcjo6TWFpbjsKLSAgICAgICAg
YWRqdXN0TUlNRVR5cGVJZk5lY2Vzc2FyeShjZlJlc3BvbnNlLCBpc01haW5SZXNvdXJjZUxvYWQp
OwotICAgIH0KLQotI2lmICFQTEFURk9STShJT1MpCi0gICAgaWYgKF9DRlVSTFJlcXVlc3RDb3B5
UHJvdG9jb2xQcm9wZXJ0eUZvcktleShtX2hhbmRsZS0+Zmlyc3RSZXF1ZXN0KCkuY2ZVUkxSZXF1
ZXN0KERvTm90VXBkYXRlSFRUUEJvZHkpLCBDRlNUUigiRm9yY2VIVE1MTUlNRVR5cGUiKSkpCi0g
ICAgICAgIENGVVJMUmVzcG9uc2VTZXRNSU1FVHlwZShjZlJlc3BvbnNlLCBDRlNUUigidGV4dC9o
dG1sIikpOwotI2VuZGlmIC8vICFQTEFURk9STShJT1MpCi0jZWxzZQogICAgIGlmICghQ0ZVUkxS
ZXNwb25zZUdldE1JTUVUeXBlKGNmUmVzcG9uc2UpKQogICAgICAgICBhZGp1c3RNSU1FVHlwZUlm
TmVjZXNzYXJ5KGNmUmVzcG9uc2UpOwogCkBAIC0xNjUsNyArMTI2LDYgQEAgdm9pZCBTeW5jaHJv
bm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZQogICAgICAgICBBU1NFUlQoIW1faGFuZGxlLT5z
aG91bGRDb250ZW50U25pZmYoKSk7CiAgICAgICAgIHNldERlZmF1bHRNSU1FVHlwZShjZlJlc3Bv
bnNlKTsKICAgICB9Ci0jZW5kaWYKIAogI2lmIFVTRShRVUlDS19MT09LKQogICAgIG1faGFuZGxl
LT5zZXRRdWlja0xvb2tIYW5kbGUoUXVpY2tMb29rSGFuZGxlOjpjcmVhdGUobV9oYW5kbGUsIHRo
aXMsIGNmUmVzcG9uc2UpKTsKQEAgLTE3NCw3ICsxMzQsNyBAQCB2b2lkIFN5bmNocm9ub3VzUmVz
b3VyY2VIYW5kbGVDRlVSTENvbm5lCiAjZW5kaWYKICAgICAKICAgICBSZXNvdXJjZVJlc3BvbnNl
IHJlc291cmNlUmVzcG9uc2UoY2ZSZXNwb25zZSk7Ci0jaWYgUExBVEZPUk0oQ09DT0EpICYmIEVO
QUJMRShXRUJfVElNSU5HKQorI2lmIEVOQUJMRShXRUJfVElNSU5HKQogICAgIFJlc291cmNlSGFu
ZGxlOjpnZXRDb25uZWN0aW9uVGltaW5nRGF0YShjb25uZWN0aW9uLCByZXNvdXJjZVJlc3BvbnNl
Lm5ldHdvcmtMb2FkVGltaW5nKCkpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oY29ubmVjdGlv
bik7CkBAIC0yMjQsNyArMTg0LDYgQEAgdm9pZCBTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZV
UkxDb25uZQogCiBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmIFN5bmNocm9ub3VzUmVzb3VyY2VIYW5k
bGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZTo6d2lsbENhY2hlUmVzcG9uc2UoQ0ZDYWNoZWRVUkxS
ZXNwb25zZVJlZiBjYWNoZWRSZXNwb25zZSkKIHsKLSNpZiBQTEFURk9STShXSU4pCiAgICAgLy8g
V29ya2Fyb3VuZCBmb3IgPHJkYXI6Ly9wcm9ibGVtLzYzMDA5OTA+IENhY2hpbmcgZG9lcyBub3Qg
cmVzcGVjdCBWYXJ5IEhUVFAgaGVhZGVyLgogICAgIC8vIEZJWE1FOiBXZWJDb3JlIGNhY2hlIGhh
cyBpc3N1ZXMgd2l0aCBWYXJ5LCB0b28gKGJ1ZyA1ODc5NywgYnVnIDcxNTA5KS4KICAgICBDRlVS
TFJlc3BvbnNlUmVmIHdyYXBwZWRSZXNwb25zZSA9IENGQ2FjaGVkVVJMUmVzcG9uc2VHZXRXcmFw
cGVkUmVzcG9uc2UoY2FjaGVkUmVzcG9uc2UpOwpAQCAtMjM0LDE2ICsxOTMsOCBAQCBDRkNhY2hl
ZFVSTFJlc3BvbnNlUmVmIFN5bmNocm9ub3VzUmVzb3VyCiAgICAgICAgIGlmICh2YXJ5VmFsdWUp
CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICB9Ci0jZW5kaWYgLy8gUExBVEZPUk0oV0lOKQot
Ci0jaWYgUExBVEZPUk0oV0lOKQogICAgIGlmIChtX2hhbmRsZS0+Y2xpZW50KCkgJiYgIW1faGFu
ZGxlLT5jbGllbnQoKS0+c2hvdWxkQ2FjaGVSZXNwb25zZShtX2hhbmRsZSwgY2FjaGVkUmVzcG9u
c2UpKQogICAgICAgICByZXR1cm4gMDsKLSNlbHNlCi0gICAgQ0ZDYWNoZWRVUkxSZXNwb25zZVJl
ZiBuZXdSZXNwb25zZSA9IG1faGFuZGxlLT5jbGllbnQoKS0+d2lsbENhY2hlUmVzcG9uc2UobV9o
YW5kbGUsIGNhY2hlZFJlc3BvbnNlKTsKLSAgICBpZiAobmV3UmVzcG9uc2UgIT0gY2FjaGVkUmVz
cG9uc2UpCi0gICAgICAgIHJldHVybiBuZXdSZXNwb25zZTsKLSNlbmRpZgogCiAgICAgQ0ZSZXRh
aW4oY2FjaGVkUmVzcG9uc2UpOwogICAgIHJldHVybiBjYWNoZWRSZXNwb25zZTsKQEAgLTI4MCwx
NCArMjMxLDcgQEAgQm9vbGVhbiBTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDbwogCiAg
ICAgTE9HKE5ldHdvcmssICJDRk5ldCAtIFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENv
bm5lY3Rpb25EZWxlZ2F0ZTo6Y2FuUmVzcG9uZFRvUHJvdGVjdGlvblNwYWNlKGhhbmRsZT0lcCAo
JXMpIiwgbV9oYW5kbGUsIG1faGFuZGxlLT5maXJzdFJlcXVlc3QoKS51cmwoKS5zdHJpbmcoKS51
dGY4KCkuZGF0YSgpKTsKIAotI2lmIFBMQVRGT1JNKElPUykKLSAgICBQcm90ZWN0aW9uU3BhY2Ug
Y29yZVByb3RlY3Rpb25TcGFjZSA9IFByb3RlY3Rpb25TcGFjZShwcm90ZWN0aW9uU3BhY2UpOwot
ICAgIGlmIChjb3JlUHJvdGVjdGlvblNwYWNlLmF1dGhlbnRpY2F0aW9uU2NoZW1lKCkgPT0gUHJv
dGVjdGlvblNwYWNlQXV0aGVudGljYXRpb25TY2hlbWVVbmtub3duKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgcmV0dXJuIG1faGFuZGxlLT5jYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVj
dGlvblNwYWNlKGNvcmVQcm90ZWN0aW9uU3BhY2UpOwotI2Vsc2UKICAgICByZXR1cm4gbV9oYW5k
bGUtPmNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoY29yZShwcm90ZWN0aW9u
U3BhY2UpKTsKLSNlbmRpZgogfQogI2VuZGlmIC8vIFVTRShQUk9URUNUSU9OX1NQQUNFX0FVVEhf
Q0FMTEJBQ0spCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU3lu
Y2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9TeW5jaHJvbm91c1Jlc291
cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuaAkocmV2aXNpb24gMjA3MDM5KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9TeW5jaHJvbm91c1Jlc291cmNlSGFu
ZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsMTAgKzIz
LDkgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBTeW5jaHJvbm91c1Jlc291cmNl
SGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVfaAotI2RlZmluZSBTeW5jaHJvbm91c1Jlc291
cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVfaAorI3ByYWdtYSBvbmNlCiAKLSNpZiBV
U0UoQ0ZORVRXT1JLKQorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAKICNpbmNsdWRlICJSZXNv
dXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmgiCiAKQEAgLTY3LDYgKzY2LDQgQEAg
cHJpdmF0ZToKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZS4KIAotI2VuZGlmIC8vIFVTRShDRk5F
VFdPUkspCi0KLSNlbmRpZiAvLyBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRl
X2gKKyNlbmRpZiAvLyBVU0UoQ0ZVUkxDT05ORUNUSU9OKQpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jb2NvYS9DcmVkZW50aWFsQ29jb2EuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL0NyZWRlbnRpYWxDb2NvYS5oCShy
ZXZpc2lvbiAyMDcwMzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29h
L0NyZWRlbnRpYWxDb2NvYS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMywxNyArMjMsMTIgQEAKICAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIENyZWRlbnRp
YWxDb2NvYV9oCi0jZGVmaW5lIENyZWRlbnRpYWxDb2NvYV9oCisjcHJhZ21hIG9uY2UKIAogI2lu
Y2x1ZGUgIkNyZWRlbnRpYWxCYXNlLmgiCiAjaW5jbHVkZSA8U2VjdXJpdHkvU2VjQmFzZS5oPgog
I2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAotI2lmIFVTRShDRk5FVFdPUkspCi0jaW5jbHVk
ZSAiQ0ZOZXR3b3JrU1BJLmgiCi0jZW5kaWYKLQogT0JKQ19DTEFTUyBOU1VSTENyZWRlbnRpYWw7
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTUyLDE4ICs0NywxMiBAQCBwdWJsaWM6CiAKICAg
ICBDcmVkZW50aWFsKGNvbnN0IENyZWRlbnRpYWwmLCBDcmVkZW50aWFsUGVyc2lzdGVuY2UpOwog
Ci0jaWYgVVNFKENGTkVUV09SSykKLSAgICBleHBsaWNpdCBDcmVkZW50aWFsKENGVVJMQ3JlZGVu
dGlhbFJlZik7Ci0jZW5kaWYKICAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBDcmVkZW50aWFs
KE5TVVJMQ3JlZGVudGlhbCAqKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNFbXB0eSgp
IGNvbnN0OwogCiAgICAgYm9vbCBlbmNvZGluZ1JlcXVpcmVzUGxhdGZvcm1EYXRhKCkgY29uc3Qg
eyByZXR1cm4gbV9uc0NyZWRlbnRpYWwgJiYgZW5jb2RpbmdSZXF1aXJlc1BsYXRmb3JtRGF0YSht
X25zQ3JlZGVudGlhbC5nZXQoKSk7IH0KIAotI2lmIFVTRShDRk5FVFdPUkspCi0gICAgQ0ZVUkxD
cmVkZW50aWFsUmVmIGNmQ3JlZGVudGlhbCgpIGNvbnN0OwotI2VuZGlmCiAgICAgV0VCQ09SRV9F
WFBPUlQgTlNVUkxDcmVkZW50aWFsICpuc0NyZWRlbnRpYWwoKSBjb25zdDsKIAogICAgIHN0YXRp
YyBib29sIHBsYXRmb3JtQ29tcGFyZShjb25zdCBDcmVkZW50aWFsJiwgY29uc3QgQ3JlZGVudGlh
bCYpOwpAQCAtNzUsNSArNjQsMyBAQCBwcml2YXRlOgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQotCi0jZW5kaWYgLy8gQ3JlZGVudGlhbENvY29hX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY29jb2EvQ3JlZGVudGlhbENvY29hLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvQ3JlZGVudGlhbENvY29hLm1t
CShyZXZpc2lvbiAyMDcwMzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nv
Y29hL0NyZWRlbnRpYWxDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYsMTMgKzI2LDYgQEAK
ICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiQ3JlZGVudGlhbENvY29hLmgiCiAKLSNpZiBV
U0UoQ0ZORVRXT1JLKQotQGludGVyZmFjZSBOU1VSTENyZWRlbnRpYWwgKFdlYkRldGFpbHMpCi0t
IChpZClfaW5pdFdpdGhDRlVSTENyZWRlbnRpYWw6KENGVVJMQ3JlZGVudGlhbFJlZiljcmVkZW50
aWFsOwotLSAoQ0ZVUkxDcmVkZW50aWFsUmVmKSBfQ0ZVUkxDcmVkZW50aWFsOwotQGVuZAotI2Vu
ZGlmCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIE5TVVJMQ3JlZGVudGlhbFBlcnNp
c3RlbmNlIHRvTlNVUkxDcmVkZW50aWFsUGVyc2lzdGVuY2UoQ3JlZGVudGlhbFBlcnNpc3RlbmNl
IHBlcnNpc3RlbmNlKQpAQCAtODQsMjYgKzc3LDEyIEBAIENyZWRlbnRpYWw6OkNyZWRlbnRpYWwo
Y29uc3QgQ3JlZGVudGlhbCYKICAgICB9CiB9CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotQ3JlZGVu
dGlhbDo6Q3JlZGVudGlhbChDRlVSTENyZWRlbnRpYWxSZWYgY3JlZGVudGlhbCkKLSAgICA6IENy
ZWRlbnRpYWwoYWRvcHROUyhbW05TVVJMQ3JlZGVudGlhbCBhbGxvY10gX2luaXRXaXRoQ0ZVUkxD
cmVkZW50aWFsOmNyZWRlbnRpYWxdKS5nZXQoKSkKLXsKLX0KLSNlbmRpZgotCiBDcmVkZW50aWFs
OjpDcmVkZW50aWFsKE5TVVJMQ3JlZGVudGlhbCAqY3JlZGVudGlhbCkKICAgICA6IENyZWRlbnRp
YWxCYXNlKGNyZWRlbnRpYWwudXNlciwgY3JlZGVudGlhbC5wYXNzd29yZCwgdG9DcmVkZW50aWFs
UGVyc2lzdGVuY2UoY3JlZGVudGlhbC5wZXJzaXN0ZW5jZSkpCiAgICAgLCBtX25zQ3JlZGVudGlh
bChjcmVkZW50aWFsKQogewogfQogCi0jaWYgVVNFKENGTkVUV09SSykKLUNGVVJMQ3JlZGVudGlh
bFJlZiBDcmVkZW50aWFsOjpjZkNyZWRlbnRpYWwoKSBjb25zdAotewotICAgIHJldHVybiBbbnND
cmVkZW50aWFsKCkgX0NGVVJMQ3JlZGVudGlhbF07Ci19Ci0jZW5kaWYKLQogTlNVUkxDcmVkZW50
aWFsICpDcmVkZW50aWFsOjpuc0NyZWRlbnRpYWwoKSBjb25zdAogewogICAgIGlmIChtX25zQ3Jl
ZGVudGlhbCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUHJv
dGVjdGlvblNwYWNlQ29jb2EuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NvY29hL1Byb3RlY3Rpb25TcGFjZUNvY29hLmgJKHJldmlzaW9uIDIwNzAzOSkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUHJvdGVjdGlvblNwYWNl
Q29jb2EuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsMTYgKzIzLDExIEBACiAgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBQcm90ZWN0aW9uU3BhY2VDb2Nv
YV9oCi0jZGVmaW5lIFByb3RlY3Rpb25TcGFjZUNvY29hX2gKKyNwcmFnbWEgb25jZQogCiAjaW5j
bHVkZSAiUHJvdGVjdGlvblNwYWNlQmFzZS5oIgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4K
IAotI2lmIFVTRShDRk5FVFdPUkspCi10eXBlZGVmIHN0cnVjdCBfQ0ZVUkxQcm90ZWN0aW9uU3Bh
Y2UqIENGVVJMUHJvdGVjdGlvblNwYWNlUmVmOwotI2VuZGlmCi0KIE9CSkNfQ0xBU1MgTlNVUkxQ
cm90ZWN0aW9uU3BhY2U7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQ3LDkgKzQyLDYgQEAg
cHVibGljOgogCiAgICAgUHJvdGVjdGlvblNwYWNlKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVl
VHlwZSBkZWxldGVkVmFsdWUpIDogUHJvdGVjdGlvblNwYWNlQmFzZShkZWxldGVkVmFsdWUpIHsg
fQogCi0jaWYgVVNFKENGTkVUV09SSykKLSAgICBleHBsaWNpdCBQcm90ZWN0aW9uU3BhY2UoQ0ZV
UkxQcm90ZWN0aW9uU3BhY2VSZWYpOwotI2VuZGlmCiAgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGlj
aXQgUHJvdGVjdGlvblNwYWNlKE5TVVJMUHJvdGVjdGlvblNwYWNlICopOwogCiAgICAgc3RhdGlj
IGJvb2wgcGxhdGZvcm1Db21wYXJlKGNvbnN0IFByb3RlY3Rpb25TcGFjZSYgYSwgY29uc3QgUHJv
dGVjdGlvblNwYWNlJiBiKTsKQEAgLTU4LDkgKzUwLDYgQEAgcHVibGljOgogCiAgICAgV0VCQ09S
RV9FWFBPUlQgYm9vbCByZWNlaXZlc0NyZWRlbnRpYWxTZWN1cmVseSgpIGNvbnN0OwogCi0jaWYg
VVNFKENGTkVUV09SSykKLSAgICBDRlVSTFByb3RlY3Rpb25TcGFjZVJlZiBjZlNwYWNlKCkgY29u
c3Q7Ci0jZW5kaWYKICAgICBXRUJDT1JFX0VYUE9SVCBOU1VSTFByb3RlY3Rpb25TcGFjZSAqbnNT
cGFjZSgpIGNvbnN0OwogCiBwcml2YXRlOgpAQCAtNzAsNSArNTksMyBAQCBwcml2YXRlOgogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gUHJvdGVjdGlvblNwYWNlQ29j
b2FfaApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9Qcm90ZWN0
aW9uU3BhY2VDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NvY29hL1Byb3RlY3Rpb25TcGFjZUNvY29hLm1tCShyZXZpc2lvbiAyMDcwMzkpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Byb3RlY3Rpb25TcGFjZUNv
Y29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwyMiArMjYsOSBAQAogI2ltcG9ydCAiY29uZmln
LmgiCiAjaW1wb3J0ICJQcm90ZWN0aW9uU3BhY2VDb2NvYS5oIgogCi0jaWYgVVNFKENGTkVUV09S
SykKLUBpbnRlcmZhY2UgTlNVUkxQcm90ZWN0aW9uU3BhY2UgKFdlYkRldGFpbHMpCi0tIChDRlVS
TFByb3RlY3Rpb25TcGFjZVJlZikgX0NGVVJMUHJvdGVjdGlvblNwYWNlOwotLSAoaWQpX2luaXRX
aXRoQ0ZVUkxQcm90ZWN0aW9uU3BhY2U6KENGVVJMUHJvdGVjdGlvblNwYWNlUmVmKWNmUHJvdFNw
YWNlOwotQGVuZAotI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotI2lmIFVTRShDRk5F
VFdPUkspCi1Qcm90ZWN0aW9uU3BhY2U6OlByb3RlY3Rpb25TcGFjZShDRlVSTFByb3RlY3Rpb25T
cGFjZVJlZiBzcGFjZSkKLSAgICA6IFByb3RlY3Rpb25TcGFjZShhZG9wdE5TKFtbTlNVUkxQcm90
ZWN0aW9uU3BhY2UgYWxsb2NdIF9pbml0V2l0aENGVVJMUHJvdGVjdGlvblNwYWNlOnNwYWNlXSku
Z2V0KCkpCi17Ci19Ci0jZW5kaWYKLQogc3RhdGljIFByb3RlY3Rpb25TcGFjZVNlcnZlclR5cGUg
dHlwZShOU1VSTFByb3RlY3Rpb25TcGFjZSAqc3BhY2UpCiB7CiAgICAgaWYgKFtzcGFjZSBpc1By
b3h5XSkgewpAQCAtMTA1LDEzICs5Miw2IEBAIFByb3RlY3Rpb25TcGFjZTo6UHJvdGVjdGlvblNw
YWNlKE5TVVJMUHIKICAgICBtX25zU3BhY2UgPSBzcGFjZTsKIH0KIAotI2lmIFVTRShDRk5FVFdP
UkspCi1DRlVSTFByb3RlY3Rpb25TcGFjZVJlZiBQcm90ZWN0aW9uU3BhY2U6OmNmU3BhY2UoKSBj
b25zdAotewotICAgIHJldHVybiBbbnNTcGFjZSgpIF9DRlVSTFByb3RlY3Rpb25TcGFjZV07Ci19
Ci0jZW5kaWYKLQogTlNVUkxQcm90ZWN0aW9uU3BhY2UgKlByb3RlY3Rpb25TcGFjZTo6bnNTcGFj
ZSgpIGNvbnN0CiB7CiAgICAgaWYgKG1fbnNTcGFjZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RD
b2NvYS5tbQkocmV2aXNpb24gMjA3MDM5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtNTMs
MTUgKzUzLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogTlNVUkxSZXF1ZXN0ICpSZXNvdXJjZVJl
cXVlc3Q6Om5zVVJMUmVxdWVzdChIVFRQQm9keVVwZGF0ZVBvbGljeSBib2R5UG9saWN5KSBjb25z
dAogewogICAgIHVwZGF0ZVBsYXRmb3JtUmVxdWVzdChib2R5UG9saWN5KTsKLSNpZiBVU0UoQ0ZO
RVRXT1JLKQotICAgIGlmICghbV9uc1JlcXVlc3QpCi0gICAgICAgIGNvbnN0X2Nhc3Q8UmVzb3Vy
Y2VSZXF1ZXN0Kj4odGhpcyktPnVwZGF0ZU5TVVJMUmVxdWVzdCgpOwotI2VuZGlmCiAgICAgcmV0
dXJuIFtbbV9uc1JlcXVlc3QuZ2V0KCkgcmV0YWluXSBhdXRvcmVsZWFzZV07CiB9CiAKLSNpZiAh
VVNFKENGTkVUV09SSykKLQogQ0ZVUkxSZXF1ZXN0UmVmIFJlc291cmNlUmVxdWVzdDo6Y2ZVUkxS
ZXF1ZXN0KEhUVFBCb2R5VXBkYXRlUG9saWN5IGJvZHlQb2xpY3kpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIFtuc1VSTFJlcXVlc3QoYm9keVBvbGljeSkgX0NGVVJMUmVxdWVzdF07CkBAIC0yMTQsOCAr
MjA4LDYgQEAgdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OnNldFN0b3JhZ2VTZXNzaW9uKAogICAgIG1f
bnNSZXF1ZXN0ID0gYWRvcHROUyh3a0NvcHlSZXF1ZXN0V2l0aFN0b3JhZ2VTZXNzaW9uKHN0b3Jh
Z2VTZXNzaW9uLCBtX25zUmVxdWVzdC5nZXQoKSkpOwogfQogCi0jZW5kaWYgLy8gVVNFKENGTkVU
V09SSykKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gUExBVEZPUk0oQ09D
T0EpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNl
UmVzcG9uc2VDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NvY29hL1Jlc291cmNlUmVzcG9uc2VDb2NvYS5tbQkocmV2aXNpb24gMjA3MDM5KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlc3BvbnNl
Q29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTc1LDEzICs3NSw4IEBAIHZvaWQgUmVzb3VyY2VS
ZXNwb25zZTo6ZGlzYWJsZUxhenlJbml0aWEKIAogQ2VydGlmaWNhdGVJbmZvIFJlc291cmNlUmVz
cG9uc2U6OnBsYXRmb3JtQ2VydGlmaWNhdGVJbmZvKCkgY29uc3QKIHsKLSNpZiBVU0UoQ0ZORVRX
T1JLKQotICAgIEFTU0VSVChtX2NmUmVzcG9uc2UpOwotICAgIENGVVJMUmVzcG9uc2VSZWYgY2ZS
ZXNwb25zZSA9IG1fY2ZSZXNwb25zZS5nZXQoKTsKLSNlbHNlCiAgICAgQVNTRVJUKG1fbnNSZXNw
b25zZSk7CiAgICAgQ0ZVUkxSZXNwb25zZVJlZiBjZlJlc3BvbnNlID0gW21fbnNSZXNwb25zZSBf
Q0ZVUkxSZXNwb25zZV07Ci0jZW5kaWYKIAogICAgIGlmICghY2ZSZXNwb25zZSkKICAgICAgICAg
cmV0dXJuIHsgfTsKQEAgLTExNCwzNSArMTA5LDYgQEAgQ2VydGlmaWNhdGVJbmZvIFJlc291cmNl
UmVzcG9uc2U6OnBsYXRmbwogI2VuZGlmCiB9CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotCi1OU1VS
TFJlc3BvbnNlICpSZXNvdXJjZVJlc3BvbnNlOjpuc1VSTFJlc3BvbnNlKCkgY29uc3QKLXsKLSAg
ICBpZiAoIW1fbnNSZXNwb25zZSAmJiAhbV9jZlJlc3BvbnNlICYmICFtX2lzTnVsbCkgewotICAg
ICAgICBpbml0TlNVUkxSZXNwb25zZSgpOwotICAgICAgICBtX2NmUmVzcG9uc2UgPSBbbV9uc1Jl
c3BvbnNlLmdldCgpIF9DRlVSTFJlc3BvbnNlXTsKLSAgICAgICAgcmV0dXJuIG1fbnNSZXNwb25z
ZS5nZXQoKTsKLSAgICB9Ci0KLSAgICBpZiAoIW1fY2ZSZXNwb25zZSkKLSAgICAgICAgcmV0dXJu
IG5pbDsKLQotICAgIGlmICghbV9uc1Jlc3BvbnNlKQotICAgICAgICBtX25zUmVzcG9uc2UgPSBb
TlNVUkxSZXNwb25zZSBfcmVzcG9uc2VXaXRoQ0ZVUkxSZXNwb25zZTptX2NmUmVzcG9uc2UuZ2V0
KCldOwotCi0gICAgcmV0dXJuIG1fbnNSZXNwb25zZS5nZXQoKTsKLX0KLQotUmVzb3VyY2VSZXNw
b25zZTo6UmVzb3VyY2VSZXNwb25zZShOU1VSTFJlc3BvbnNlKiBuc1Jlc3BvbnNlKQotICAgIDog
bV9pbml0TGV2ZWwoVW5pbml0aWFsaXplZCkKLSAgICAsIG1fY2ZSZXNwb25zZShbbnNSZXNwb25z
ZSBfQ0ZVUkxSZXNwb25zZV0pCi0gICAgLCBtX25zUmVzcG9uc2UobnNSZXNwb25zZSkKLXsKLSAg
ICBtX2lzTnVsbCA9ICFuc1Jlc3BvbnNlOwotfQotCi0jZWxzZQotCiBzdGF0aWMgTlNTdHJpbmcq
IGNvbnN0IGNvbW1vbkhlYWRlckZpZWxkc1tdID0gewogICAgIEAiQWdlIiwgQCJDYWNoZS1Db250
cm9sIiwgQCJDb250ZW50LVR5cGUiLCBAIkRhdGUiLCBAIkV0YWciLCBAIkV4cGlyZXMiLCBAIkxh
c3QtTW9kaWZpZWQiLCBAIlByYWdtYSIKIH07CkBAIC0yNDIsOCArMjA4LDYgQEAgYm9vbCBSZXNv
dXJjZVJlc3BvbnNlOjpwbGF0Zm9ybUNvbXBhcmUoYwogICAgIHJldHVybiBhLm5zVVJMUmVzcG9u
c2UoKSA9PSBiLm5zVVJMUmVzcG9uc2UoKTsKIH0KIAotI2VuZGlmIC8vIFVTRShDRk5FVFdPUksp
Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUXVpY2tMb29rLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUXVpY2tMb29r
LmgJKHJldmlzaW9uIDIwNzAzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
aW9zL1F1aWNrTG9vay5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMywxMCArMzMsNiBAQAogI2ltcG9y
dCA8b2JqYy9vYmpjLXJ1bnRpbWUuaD4KICNpbXBvcnQgPHd0Zi9SZWZQdHIuaD4KIAotI2lmIFVT
RShDRk5FVFdPUkspCi0jaW5jbHVkZSAiQ0ZOZXR3b3JrU1BJLmgiCi0jZW5kaWYKLQogT0JKQ19D
TEFTUyBOU0RhdGE7CiBPQkpDX0NMQVNTIE5TRGljdGlvbmFyeTsKIE9CSkNfQ0xBU1MgTlNGaWxl
SGFuZGxlOwpAQCAtODEsOSArNzcsNiBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIGJvb2wgc2hvdWxkQ3JlYXRlRm9yTUlNRVR5cGUoY29uc3QgU3RyaW5nJik7CiAKICAgICBz
dGF0aWMgc3RkOjp1bmlxdWVfcHRyPFF1aWNrTG9va0hhbmRsZT4gY3JlYXRlKFJlc291cmNlSGFu
ZGxlKiwgTlNVUkxDb25uZWN0aW9uICosIE5TVVJMUmVzcG9uc2UgKiwgaWQgZGVsZWdhdGUpOwot
I2lmIFVTRShDRk5FVFdPUkspCi0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxRdWlja0xvb2tI
YW5kbGU+IGNyZWF0ZShSZXNvdXJjZUhhbmRsZSosIFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVD
RlVSTENvbm5lY3Rpb25EZWxlZ2F0ZSosIENGVVJMUmVzcG9uc2VSZWYpOwotI2VuZGlmCiAgICAg
Ly8gRklYTUU6IFVzZSBvZiBSZXNvdXJjZUxvYWRlciBoZXJlIGlzIGEgcGxhdGZvcm0gdmlvbGF0
aW9uLgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UXVpY2tMb29r
SGFuZGxlPiBjcmVhdGUoUmVzb3VyY2VMb2FkZXImLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7
CiAKQEAgLTk1LDkgKzg4LDYgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlk
RmFpbCgpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgTlNVUkxSZXNwb25zZSAqbnNSZXNwb25zZSgp
OwotI2lmIFVTRShDRk5FVFdPUkspCi0gICAgQ0ZVUkxSZXNwb25zZVJlZiBjZlJlc3BvbnNlKCk7
Ci0jZW5kaWYKIAogICAgIHZvaWQgc2V0Q2xpZW50KFBhc3NSZWZQdHI8UXVpY2tMb29rSGFuZGxl
Q2xpZW50PiBjbGllbnQpIHsgbV9jbGllbnQgPSBjbGllbnQ7IH0KIApJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUXVpY2tMb29rLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1F1aWNrTG9vay5tbQkocmV2aXNpb24g
MjA3MDM5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUXVpY2tMb29r
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xODUsODEgKzE4NSw2IEBAIGNvbnN0IGNoYXIqIFdlYkNv
cmU6OlFMUHJldmlld1Byb3RvY29sKCkKICAgICByZXR1cm4gcHJldmlld1Byb3RvY29sLmdldCgp
LmRhdGEoKTsKIH0KIAotI2lmIFVTRShDRk5FVFdPUkspCi0vLyBUaGUgd2F5IFF1aWNrTG9vayB3
b3JrcyBpcyB3ZSBwYXNzIGl0IGFuIE5TVVJMQ29ubmVjdGlvbkRlbGVnYXRlIGNhbGxiYWNrIG9i
amVjdCBhdCBjcmVhdGlvbgotLy8gdGltZS4gVGhlbiB3ZSBwYXNzIGl0IGFsbCB0aGUgZGF0YSBh
cyB3ZSByZWNlaXZlIGl0LiBPbmNlIHdlJ3ZlIGRvd25sb2FkZWQgdGhlIGZ1bGwgVVJMLAotLy8g
UXVpY2tMb29rIHR1cm5zIGFyb3VuZCBhbmQgc2VuZCB1cywgdGhyb3VnaCB0aGlzIGRlbGVnYXRl
LCB0aGUgSFRNTCB2ZXJzaW9uIG9mIHRoZSBmaWxlIHdoaWNoIHdlCi0vLyBwYXNzIG9uIHRvIFdl
YkNvcmUuIFRoZSBmbGFnIG1fZmluaXNoZWRMb2FkaW5nRGF0YUludG9Db252ZXJ0ZXIgaW4gUXVp
Y2tMb29rSGFuZGxlIGRlY2lkZXMKLS8vIHdoZXRoZXIgdG8gcGFzcyB0aGUgZGF0YSB0byBRdWlj
a0xvb2sgb3IgV2ViQ29yZS4KLS8vCi0vLyBUaGlzIHdvcmtzIGZpbmUgd2hlbiB1c2luZyBOUyBB
UElzLCBidXQgd2hlbiB1c2luZyBDRk5ldHdvcmssIHdlIGRvbid0IGhhdmUgYSBOU1VSTENvbm5l
Y3Rpb25EZWxlZ2F0ZS4KLS8vIFNvIHdlIGNyZWF0ZSBXZWJRdWlja0xvb2tIYW5kbGVBc0RlbGVn
YXRlIGFzIGFuIGludGVybWVkaWF0ZSBkZWxlZ2F0ZSBvYmplY3QgYW5kIHBhc3MgaXQgdG8KLS8v
IFFMUHJldmlld0NvbnZlcnRlci4gVGhlIHByb3h5IGRlbGVnYXRlIHRoZW4gZm9yd2FyZHMgdGhl
IG1lc3NhZ2VzIG9uIHRvIHRoZSBDRk5ldHdvcmsgY29kZS4KLUBpbnRlcmZhY2UgV2ViUXVpY2tM
b29rSGFuZGxlQXNEZWxlZ2F0ZSA6IE5TT2JqZWN0IDxOU1VSTENvbm5lY3Rpb25EZWxlZ2F0ZSwg
V2ViQ29yZVJlc291cmNlTG9hZGVyRGVsZWdhdGU+IHsKLSAgICBSZWZQdHI8U3luY2hyb25vdXNS
ZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlPiBtX2Nvbm5lY3Rpb25EZWxlZ2F0
ZTsKLX0KLQotLSAoaWQpaW5pdFdpdGhDb25uZWN0aW9uRGVsZWdhdGU6KFN5bmNocm9ub3VzUmVz
b3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZSopY29ubmVjdGlvbkRlbGVnYXRlOwot
QGVuZAotCi1AaW1wbGVtZW50YXRpb24gV2ViUXVpY2tMb29rSGFuZGxlQXNEZWxlZ2F0ZQotLSAo
aWQpaW5pdFdpdGhDb25uZWN0aW9uRGVsZWdhdGU6KFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVD
RlVSTENvbm5lY3Rpb25EZWxlZ2F0ZSopY29ubmVjdGlvbkRlbGVnYXRlCi17Ci0gICAgc2VsZiA9
IFtzdXBlciBpbml0XTsKLSAgICBpZiAoIXNlbGYpCi0gICAgICAgIHJldHVybiBuaWw7Ci0gICAg
bV9jb25uZWN0aW9uRGVsZWdhdGUgPSBjb25uZWN0aW9uRGVsZWdhdGU7Ci0gICAgcmV0dXJuIHNl
bGY7Ci19Ci0KLS0gKHZvaWQpY29ubmVjdGlvbjooTlNVUkxDb25uZWN0aW9uICopY29ubmVjdGlv
biBkaWRSZWNlaXZlRGF0YUFycmF5OihOU0FycmF5ICopZGF0YUFycmF5Ci17Ci0gICAgVU5VU0VE
X1BBUkFNKGNvbm5lY3Rpb24pOwotICAgIGlmICghbV9jb25uZWN0aW9uRGVsZWdhdGUpCi0gICAg
ICAgIHJldHVybjsKLSAgICBMT0coTmV0d29yaywgIldlYlF1aWNrTG9va0hhbmRsZUFzRGVsZWdh
dGU6OmRpZFJlY2VpdmVEYXRhQXJyYXkoKSIpOwotICAgIG1fY29ubmVjdGlvbkRlbGVnYXRlLT5k
aWRSZWNlaXZlRGF0YUFycmF5KHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZBcnJheVJlZj4oZGF0YUFycmF5
KSk7Ci19Ci0KLS0gKHZvaWQpY29ubmVjdGlvbjooTlNVUkxDb25uZWN0aW9uICopY29ubmVjdGlv
biBkaWRSZWNlaXZlRGF0YTooTlNEYXRhICopZGF0YSBsZW5ndGhSZWNlaXZlZDoobG9uZyBsb25n
KWxlbmd0aFJlY2VpdmVkCi17Ci0gICAgVU5VU0VEX1BBUkFNKGNvbm5lY3Rpb24pOwotICAgIGlm
ICghbV9jb25uZWN0aW9uRGVsZWdhdGUpCi0gICAgICAgIHJldHVybjsKLSAgICBMT0coTmV0d29y
aywgIldlYlF1aWNrTG9va0hhbmRsZUFzRGVsZWdhdGU6OmRpZFJlY2VpdmVEYXRhKCkgLSBkYXRh
IGxlbmd0aCA9ICVsZCIsIChsb25nKVtkYXRhIGxlbmd0aF0pOwotCi0gICAgLy8gUXVpY2tMb29r
IGNvZGUgc2VuZHMgdXMgYSBuaWwgZGF0YSBhdCB0aW1lcy4gVGhlIGNoZWNrIGJlbG93IGlzIHRo
ZSBzYW1lIGFzIHRoZSBvbmUgaW4KLSAgICAvLyBSZXNvdXJjZUhhbmRsZU1hYy5jcHAgYWRkZWQg
Zm9yIGEgZGlmZmVyZW50IGJ1Zy4KLSAgICBpZiAoIVtkYXRhIGxlbmd0aF0pCi0gICAgICAgIHJl
dHVybjsKLSAgICBtX2Nvbm5lY3Rpb25EZWxlZ2F0ZS0+ZGlkUmVjZWl2ZURhdGEocmVpbnRlcnBy
ZXRfY2FzdDxDRkRhdGFSZWY+KGRhdGEpLCBzdGF0aWNfY2FzdDxpbnQ+KGxlbmd0aFJlY2VpdmVk
KSk7Ci19Ci0KLS0gKHZvaWQpY29ubmVjdGlvbkRpZEZpbmlzaExvYWRpbmc6KE5TVVJMQ29ubmVj
dGlvbiAqKWNvbm5lY3Rpb24KLXsKLSAgICBVTlVTRURfUEFSQU0oY29ubmVjdGlvbik7Ci0gICAg
aWYgKCFtX2Nvbm5lY3Rpb25EZWxlZ2F0ZSkKLSAgICAgICAgcmV0dXJuOwotICAgIExPRyhOZXR3
b3JrLCAiV2ViUXVpY2tMb29rSGFuZGxlQXNEZWxlZ2F0ZTo6ZGlkRmluaXNoTG9hZGluZygpIik7
Ci0gICAgbV9jb25uZWN0aW9uRGVsZWdhdGUtPmRpZEZpbmlzaExvYWRpbmcoKTsKLX0KLQotLSAo
dm9pZCljb25uZWN0aW9uOihOU1VSTENvbm5lY3Rpb24gKiljb25uZWN0aW9uIGRpZEZhaWxXaXRo
RXJyb3I6KE5TRXJyb3IgKillcnJvcgotewotICAgIFVOVVNFRF9QQVJBTShjb25uZWN0aW9uKTsK
LSAgICBpZiAoIW1fY29ubmVjdGlvbkRlbGVnYXRlKQotICAgICAgICByZXR1cm47Ci0gICAgTE9H
KE5ldHdvcmssICJXZWJRdWlja0xvb2tIYW5kbGVBc0RlbGVnYXRlOjpkaWRGYWlsKCkiKTsKLSAg
ICBtX2Nvbm5lY3Rpb25EZWxlZ2F0ZS0+ZGlkRmFpbChyZWludGVycHJldF9jYXN0PENGRXJyb3JS
ZWY+KGVycm9yKSk7Ci19Ci0KLS0gKHZvaWQpZGV0YWNoSGFuZGxlCi17Ci0gICAgbV9jb25uZWN0
aW9uRGVsZWdhdGUgPSBudWxscHRyOwotfQotQGVuZAotI2VuZGlmCi0KIEBpbnRlcmZhY2UgV2Vi
UmVzb3VyY2VMb2FkZXJRdWlja0xvb2tEZWxlZ2F0ZSA6IE5TT2JqZWN0IDxOU1VSTENvbm5lY3Rp
b25EZWxlZ2F0ZSwgV2ViQ29yZVJlc291cmNlTG9hZGVyRGVsZWdhdGU+IHsKICAgICBSZWZQdHI8
UmVzb3VyY2VMb2FkZXI+IF9yZXNvdXJjZUxvYWRlcjsKICAgICBCT09MIF9oYXNTZW50RGlkUmVj
ZWl2ZVJlc3BvbnNlOwpAQCAtNDExLDI2ICszMzYsNiBAQCBzdGQ6OnVuaXF1ZV9wdHI8UXVpY2tM
b29rSGFuZGxlPiBRdWlja0xvCiAgICAgcmV0dXJuIHF1aWNrTG9va0hhbmRsZTsKIH0KIAotI2lm
IFVTRShDRk5FVFdPUkspCi1zdGQ6OnVuaXF1ZV9wdHI8UXVpY2tMb29rSGFuZGxlPiBRdWlja0xv
b2tIYW5kbGU6OmNyZWF0ZShSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBTeW5jaHJvbm91c1Jlc291
cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUqIGNvbm5lY3Rpb25EZWxlZ2F0ZSwgQ0ZV
UkxSZXNwb25zZVJlZiBjZlJlc3BvbnNlKQotewotICAgIEFTU0VSVF9BUkcoaGFuZGxlLCBoYW5k
bGUpOwotICAgIGlmIChoYW5kbGUtPmZpcnN0UmVxdWVzdCgpLnJlcXVlc3RlcigpICE9IFJlc291
cmNlUmVxdWVzdDo6UmVxdWVzdGVyOjpNYWluIHx8ICFbUUxQcmV2aWV3R2V0U3VwcG9ydGVkTUlN
RVR5cGVzU2V0KCkgY29udGFpbnNPYmplY3Q6KE5TU3RyaW5nICopQ0ZVUkxSZXNwb25zZUdldE1J
TUVUeXBlKGNmUmVzcG9uc2UpXSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBOU1VS
TFJlc3BvbnNlICpuc1Jlc3BvbnNlID0gW05TVVJMUmVzcG9uc2UgX3Jlc3BvbnNlV2l0aENGVVJM
UmVzcG9uc2U6Y2ZSZXNwb25zZV07Ci0gICAgV2ViUXVpY2tMb29rSGFuZGxlQXNEZWxlZ2F0ZSAq
ZGVsZWdhdGUgPSBbW1tXZWJRdWlja0xvb2tIYW5kbGVBc0RlbGVnYXRlIGFsbG9jXSBpbml0V2l0
aENvbm5lY3Rpb25EZWxlZ2F0ZTpjb25uZWN0aW9uRGVsZWdhdGVdIGF1dG9yZWxlYXNlXTsKLSAg
ICBzdGQ6OnVuaXF1ZV9wdHI8UXVpY2tMb29rSGFuZGxlPiBxdWlja0xvb2tIYW5kbGUobmV3IFF1
aWNrTG9va0hhbmRsZShbaGFuZGxlLT5maXJzdFJlcXVlc3QoKS5uc1VSTFJlcXVlc3QoRG9Ob3RV
cGRhdGVIVFRQQm9keSkgVVJMXSwgbmlsLCBuc1Jlc3BvbnNlLCBkZWxlZ2F0ZSkpOwotICAgIGhh
bmRsZS0+Y2xpZW50KCktPmRpZENyZWF0ZVF1aWNrTG9va0hhbmRsZSgqcXVpY2tMb29rSGFuZGxl
KTsKLSAgICByZXR1cm4gcXVpY2tMb29rSGFuZGxlOwotfQotCi1DRlVSTFJlc3BvbnNlUmVmIFF1
aWNrTG9va0hhbmRsZTo6Y2ZSZXNwb25zZSgpCi17Ci0gICAgcmV0dXJuIFttX25zUmVzcG9uc2Ug
X0NGVVJMUmVzcG9uc2VdOwotfQotI2VuZGlmCi0KIGJvb2wgUXVpY2tMb29rSGFuZGxlOjpzaG91
bGRDcmVhdGVGb3JNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogewogICAgIHJldHVy
biBbUUxQcmV2aWV3R2V0U3VwcG9ydGVkTUlNRVR5cGVzU2V0KCkgY29udGFpbnNPYmplY3Q6bWlt
ZVR5cGVdOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUmVzb3Vy
Y2VIYW5kbGVJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9pb3MvUmVzb3VyY2VIYW5kbGVJT1MubW0JKHJldmlzaW9uIDIwNzAzOSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1Jlc291cmNlSGFuZGxlSU9TLm1tCShub25l
eGlzdGVudCkKQEAgLTEsMzkgKzAsMCBAQAotLy8KLS8vICBSZXNvdXJjZUhhbmRsZUlQaG9uZS5t
bQotLy8gIFdlYkNvcmUKLS8vCi0vLyAgQ29weXJpZ2h0IDIwMTEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotLy8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJSZXNvdXJj
ZUhhbmRsZUludGVybmFsLmgiCi0KLSNpZiBVU0UoQ0ZORVRXT1JLKQotCi0jaW1wb3J0IDxDRk5l
dHdvcmsvQ0ZTb2NrZXRTdHJlYW1Qcml2Lmg+Ci0jaW1wb3J0IDxGb3VuZGF0aW9uL05TVVJMUmVx
dWVzdFByaXZhdGUuaD4KLQotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQotQ0ZNdXRhYmxlRGljdGlvbmFyeVJlZiBSZXNvdXJjZUhhbmRsZTo6Y3JlYXRl
U1NMUHJvcGVydGllc0Zyb21OU1VSTFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0KQotewotICAgIE5TU3RyaW5nICpob3N0ID0gcmVxdWVzdC51cmwoKS5ob3N0KCk7Ci0gICAg
TlNBcnJheSAqY2VydEFycmF5ID0gW05TVVJMUmVxdWVzdCBhbGxvd3NTcGVjaWZpY0hUVFBTQ2Vy
dGlmaWNhdGVGb3JIb3N0Omhvc3RdOwotICAgIEJPT0wgYWxsb3dzQW55Q2VydGlmaWNhdGUgPSBb
TlNVUkxSZXF1ZXN0IGFsbG93c0FueUhUVFBTQ2VydGlmaWNhdGVGb3JIb3N0Omhvc3RdOwotICAg
IGlmICghY2VydEFycmF5ICYmICFhbGxvd3NBbnlDZXJ0aWZpY2F0ZSkKLSAgICAgICAgcmV0dXJu
IDA7Ci0KLSAgICBDRk11dGFibGVEaWN0aW9uYXJ5UmVmIHNzbFByb3BzID0gQ0ZEaWN0aW9uYXJ5
Q3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwLCAma0NGVHlwZURpY3Rpb25hcnlL
ZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKTsKLSAgICBpZiAo
Y2VydEFycmF5KQotICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShzc2xQcm9wcywgX2tDRlN0
cmVhbVNTTFRydXN0ZWRMZWFmQ2VydGlmaWNhdGVzLCAoQ0ZUeXBlUmVmKSBjZXJ0QXJyYXkpOwot
Ci0gICAgaWYgKGFsbG93c0FueUNlcnRpZmljYXRlKQotICAgICAgICBDRkRpY3Rpb25hcnlTZXRW
YWx1ZShzc2xQcm9wcywga0NGU3RyZWFtU1NMVmFsaWRhdGVzQ2VydGlmaWNhdGVDaGFpbiwga0NG
Qm9vbGVhbkZhbHNlKTsKLSAgICByZXR1cm4gc3NsUHJvcHM7Ci19Ci0KLX0KLQotI2VuZGlmCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9SZXNvdXJjZVJlcXVlc3RJ
T1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3Mv
UmVzb3VyY2VSZXF1ZXN0SU9TLm1tCShyZXZpc2lvbiAyMDcwMzkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9SZXNvdXJjZVJlcXVlc3RJT1MubW0JKG5vbmV4aXN0ZW50
KQpAQCAtMSw3NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlLCBJbmMu
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIlJlc291cmNlUmVxdWVzdC5o
IgotCi0jaWYgUExBVEZPUk0oSU9TKQotCi1AaW50ZXJmYWNlIE5TVVJMUmVxdWVzdCAoV2ViTlNV
UkxSZXF1ZXN0RGV0YWlscykKLS0gKENGVVJMUmVxdWVzdFJlZilfQ0ZVUkxSZXF1ZXN0OwotLSAo
aWQpX2luaXRXaXRoQ0ZVUkxSZXF1ZXN0OihDRlVSTFJlcXVlc3RSZWYpcmVxdWVzdDsKLUBlbmQK
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0jaWYgVVNFKENGTkVUV09SSykKLQotUmVzb3VyY2VS
ZXF1ZXN0OjpSZXNvdXJjZVJlcXVlc3QoTlNVUkxSZXF1ZXN0ICpuc1JlcXVlc3QpCi0gICAgOiBS
ZXNvdXJjZVJlcXVlc3RCYXNlKCkKLSAgICAsIG1fY2ZSZXF1ZXN0KFtuc1JlcXVlc3QgX0NGVVJM
UmVxdWVzdF0pCi0gICAgLCBtX25zUmVxdWVzdChuc1JlcXVlc3QpCi17Ci19Ci0KLXZvaWQgUmVz
b3VyY2VSZXF1ZXN0Ojp1cGRhdGVOU1VSTFJlcXVlc3QoKQotewotICAgIGlmIChtX2NmUmVxdWVz
dCkKLSAgICAgICAgbV9uc1JlcXVlc3QgPSBhZG9wdE5TKFtbTlNNdXRhYmxlVVJMUmVxdWVzdCBh
bGxvY10gX2luaXRXaXRoQ0ZVUkxSZXF1ZXN0Om1fY2ZSZXF1ZXN0LmdldCgpXSk7Ci19Ci0KLXZv
aWQgUmVzb3VyY2VSZXF1ZXN0OjpjbGVhck9yVXBkYXRlTlNVUkxSZXF1ZXN0KCkKLXsKLSAgICAv
LyBUaGVyZSBpcyBjbGllbnQgY29kZSB0aGF0IGV4dGVuZHMgTlNVUkxSZXF1ZXN0IGFuZCBleHBl
Y3RzIHRvIGdldCBiYWNrLCBpbiB0aGUgZGVsZWdhdGUKLSAgICAvLyBjYWxsYmFja3MsIGFuIG9i
amVjdCBvZiB0aGUgc2FtZSB0eXBlIHRoYXQgdGhleSBwYXNzZWQgaW50byBXZWJLaXQuIFRvIGtl
ZXAgdGhlbiBydW5uaW5nLCB3ZQotICAgIC8vIGNyZWF0ZSBhbiBvYmplY3Qgb2YgdGhlIHNhbWUg
dHlwZSBhbmQgcmV0dXJuIHRoYXQuIFNlZSA8cmRhcjovLzk4NDM1ODI+LgotICAgIC8vIEFsc28s
IGRldmVsb3BlcnMgcmVhbGx5IHJlYWxseSB3YW50IGFuIE5TTXV0YWJsZVVSTFJlcXVlc3Qgc28g
dHJ5IHRvIGNyZWF0ZSBhbgotICAgIC8vIE5TTXV0YWJsZVVSTFJlcXVlc3QgaW5zdGVhZCBvZiBO
U1VSTFJlcXVlc3QuCi0gICAgc3RhdGljIENsYXNzIG5zVVJMUmVxdWVzdENsYXNzID0gW05TVVJM
UmVxdWVzdCBjbGFzc107Ci0gICAgc3RhdGljIENsYXNzIG5zTXV0YWJsZVVSTFJlcXVlc3RDbGFz
cyA9IFtOU011dGFibGVVUkxSZXF1ZXN0IGNsYXNzXTsKLSAgICBDbGFzcyByZXF1ZXN0Q2xhc3Mg
PSBbbV9uc1JlcXVlc3QuZ2V0KCkgY2xhc3NdOwotCi0gICAgaWYgKCFtX2NmUmVxdWVzdCkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgaWYgKHJlcXVlc3RDbGFzcyAmJiByZXF1ZXN0Q2xhc3MgIT0g
bnNVUkxSZXF1ZXN0Q2xhc3MgJiYgcmVxdWVzdENsYXNzICE9IG5zTXV0YWJsZVVSTFJlcXVlc3RD
bGFzcykKLSAgICAgICAgbV9uc1JlcXVlc3QgPSBhZG9wdE5TKFtbcmVxdWVzdENsYXNzIGFsbG9j
XSBfaW5pdFdpdGhDRlVSTFJlcXVlc3Q6bV9jZlJlcXVlc3QuZ2V0KCldKTsKLSAgICBlbHNlCi0g
ICAgICAgIG1fbnNSZXF1ZXN0ID0gbnVsbHB0cjsKLX0KLQotI2VuZGlmIC8vIFVTRShDRk5FVFdP
UkspCi0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0F1dGhlbnRpY2F0aW9u
TWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFj
L0F1dGhlbnRpY2F0aW9uTWFjLm1tCShyZXZpc2lvbiAyMDcwMzkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9BdXRoZW50aWNhdGlvbk1hYy5tbQkod29ya2luZyBjb3B5
KQpAQCAtMzIsMTggKzMyLDExIEBACiAjaW1wb3J0IDxGb3VuZGF0aW9uL05TVVJMQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UuaD4KICNpbXBvcnQgPEZvdW5kYXRpb24vTlNVUkxQcm90ZWN0aW9uU3Bh
Y2UuaD4KIAotI2lmIFVTRShDRk5FVFdPUkspCi0jaW1wb3J0ICJDRk5TVVJMQ29ubmVjdGlvblNQ
SS5oIgotI2VuZGlmCi0KIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBAaW50ZXJmYWNlIFdl
YkNvcmVBdXRoZW50aWNhdGlvbkNsaWVudEFzQ2hhbGxlbmdlU2VuZGVyIDogTlNPYmplY3QgPE5T
VVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXI+CiB7CiAgICAgQXV0aGVudGljYXRpb25D
bGllbnQqIG1fY2xpZW50OwotI2lmIFVTRShDRk5FVFdPUkspCi0gICAgQ0ZVUkxBdXRoQ2hhbGxl
bmdlUmVmIG1fY2ZDaGFsbGVuZ2U7Ci0jZW5kaWYKIH0KIC0gKGlkKWluaXRXaXRoQXV0aGVudGlj
YXRpb25DbGllbnQ6KEF1dGhlbnRpY2F0aW9uQ2xpZW50KiljbGllbnQ7CiAtIChBdXRoZW50aWNh
dGlvbkNsaWVudCopY2xpZW50OwpAQCAtMTAxLDQ3ICs5NCwxMCBAQCAtICh2b2lkKWNhbmNlbEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOihOCiAgICAgICAgIG1fY2xpZW50LT5yZWNlaXZlZENhbmNl
bGxhdGlvbihjb3JlKGNoYWxsZW5nZSkpOwogfQogCi0jaWYgVVNFKENGTkVUV09SSykKLS0gKHZv
aWQpc2V0Q0ZDaGFsbGVuZ2U6KENGVVJMQXV0aENoYWxsZW5nZVJlZiljaGFsbGVuZ2UKLXsKLSAg
ICBtX2NmQ2hhbGxlbmdlID0gY2hhbGxlbmdlOwotfQotCi0tIChDRlVSTEF1dGhDaGFsbGVuZ2VS
ZWYpY2ZDaGFsbGVuZ2UKLXsKLSAgICByZXR1cm4gbV9jZkNoYWxsZW5nZTsKLX0KLSNlbmRpZgot
CiBAZW5kCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotI2lmIFVTRShDRk5FVFdPUkspCi0KLUF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIGNvcmUoTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAq
bWFjQ2hhbGxlbmdlKQotewotICAgIFdlYkNvcmVBdXRoZW50aWNhdGlvbkNsaWVudEFzQ2hhbGxl
bmdlU2VuZGVyICpjaGFsbGVuZ2VTZW5kZXIgPSAoV2ViQ29yZUF1dGhlbnRpY2F0aW9uQ2xpZW50
QXNDaGFsbGVuZ2VTZW5kZXIqKSBbbWFjQ2hhbGxlbmdlIHNlbmRlcl07Ci0gICAgcmV0dXJuIEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFtjaGFsbGVuZ2VTZW5kZXIgY2ZDaGFsbGVuZ2VdLCBbY2hh
bGxlbmdlU2VuZGVyIGNsaWVudF0pOwotfQotCi1OU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
ICptYWMoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNvcmVDaGFsbGVuZ2UpCi17Ci0g
ICAgQXV0aGVudGljYXRpb25DbGllbnQqIGF1dGhDbGllbnQgPSBjb3JlQ2hhbGxlbmdlLmF1dGhl
bnRpY2F0aW9uQ2xpZW50KCk7Ci0gICAgUmV0YWluUHRyPFdlYkNvcmVBdXRoZW50aWNhdGlvbkNs
aWVudEFzQ2hhbGxlbmdlU2VuZGVyPiBjaGFsbGVuZ2VTZW5kZXIgPSBhZG9wdE5TKFtbV2ViQ29y
ZUF1dGhlbnRpY2F0aW9uQ2xpZW50QXNDaGFsbGVuZ2VTZW5kZXIgYWxsb2NdIGluaXRXaXRoQXV0
aGVudGljYXRpb25DbGllbnQ6YXV0aENsaWVudF0pOwotICAgIFJldGFpblB0cjxDRlVSTEF1dGhD
aGFsbGVuZ2VSZWY+IGF1dGhDaGFsbGVuZ2UgPSBjb3JlQ2hhbGxlbmdlLmNmVVJMQXV0aENoYWxs
ZW5nZVJlZigpOwotICAgIGlmICghYXV0aENoYWxsZW5nZSkKLSAgICAgICAgYXV0aENoYWxsZW5n
ZSA9IGFkb3B0Q0YoY3JlYXRlQ0YoY29yZUNoYWxsZW5nZSkpOwotICAgIFtjaGFsbGVuZ2VTZW5k
ZXIuZ2V0KCkgc2V0Q0ZDaGFsbGVuZ2U6YXV0aENoYWxsZW5nZS5nZXQoKV07Ci0jaWYgUExBVEZP
Uk0oSU9TKQotICAgIHJldHVybiBbW05TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgX2NyZWF0
ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRm9yQ0ZBdXRoQ2hhbGxlbmdlOmF1dGhDaGFsbGVuZ2Uu
Z2V0KCkgc2VuZGVyOmNoYWxsZW5nZVNlbmRlci5nZXQoKV0gYXV0b3JlbGVhc2VdOwotI2Vsc2UK
LSAgICByZXR1cm4gW1tOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIF9hdXRoZW50aWNhdGlv
bkNoYWxsZW5nZUZvckNGQXV0aENoYWxsZW5nZTphdXRoQ2hhbGxlbmdlLmdldCgpIHNlbmRlcjpj
aGFsbGVuZ2VTZW5kZXIuZ2V0KCldIGF1dG9yZWxlYXNlXTsKLSNlbmRpZgotfQotCi0jZWxzZQot
CiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY29uc3Qg
UHJvdGVjdGlvblNwYWNlJiBwcm90ZWN0aW9uU3BhY2UsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ3JlZGVudGlhbCYgcHJvcG9zZWRDcmVk
ZW50aWFsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHVuc2lnbmVkIHByZXZpb3VzRmFpbHVyZUNvdW50LApAQCAtMjE1LDYgKzE3MSw0IEBAIEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlIGNvcmUoTlNVUkxBdXRoZW4KICAgICByZXR1cm4gQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UobWFjQ2hhbGxlbmdlKTsKIH0KIAotI2VuZGlmIC8vIFVTRShDRk5FVFdP
UkspCi0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvbWFjL0Nvb2tpZUphck1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9Db29raWVKYXJNYWMubW0JKHJldmlzaW9uIDIwNzAz
OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Nvb2tpZUphck1hYy5t
bQkod29ya2luZyBjb3B5KQpAQCAtMjcsMTkgKzI3LDEyIEBACiAjaW1wb3J0ICJQbGF0Zm9ybUNv
b2tpZUphci5oIgogCiAjaW1wb3J0ICJDRk5ldHdvcmtTUEkuaCIKLSNpbXBvcnQgIk5ldHdvcmtT
dG9yYWdlU2Vzc2lvbi5oIgotI2ltcG9ydCAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgotI2lt
cG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
c3RhdGljIE5TSFRUUENvb2tpZVN0b3JhZ2UgKmNvb2tpZVN0b3JhZ2UoY29uc3QgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uJik7Ci19Ci0KLSNpZiAhVVNFKENGTkVUV09SSykKLQogI2ltcG9ydCAiQ29v
a2llLmgiCiAjaW1wb3J0ICJDb29raWVTdG9yYWdlLmgiCisjaW1wb3J0ICJOZXR3b3JrU3RvcmFn
ZVNlc3Npb24uaCIKICNpbXBvcnQgIlVSTC5oIgorI2ltcG9ydCAiV2ViQ29yZVN5c3RlbUludGVy
ZmFjZS5oIgorI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KICNpbXBvcnQgPHd0
Zi9PcHRpb25hbC5oPgogI2ltcG9ydCA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCkBAIC0x
OTEsNiArMTg0LDcgQEAgdm9pZCBzZXRDb29raWVzRnJvbURPTShjb25zdCBOZXR3b3JrU3Rvcgog
ICAgIE5TVVJMICpjb29raWVVUkwgPSB1cmw7CiAgICAgTlNEaWN0aW9uYXJ5ICpoZWFkZXJGaWVs
ZHMgPSBbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0OmNvb2tpZVN0cmluZyBmb3JL
ZXk6QCJTZXQtQ29va2llIl07CiAKKyAgICAvLyBGSVhNRTogSXMgdGhpcyBuZWVkZWQgb24gaU9T
LCB0b28/CiAjaWYgUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEID49IDEwMTEwMAogICAgIE5TQXJyYXkgKnVuZmlsdGVyZWRDb29raWVzID0gW05TSFRUUENv
b2tpZSBfcGFyc2VkQ29va2llc1dpdGhSZXNwb25zZUhlYWRlckZpZWxkczpoZWFkZXJGaWVsZHMg
Zm9yVVJMOmNvb2tpZVVSTF07CiAjZWxzZQpAQCAtMjYwLDYgKzI1NCwxNSBAQCB2b2lkIGRlbGV0
ZUNvb2tpZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlCiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBU
SU9OUzsKIH0KIAorc3RhdGljIE5TSFRUUENvb2tpZVN0b3JhZ2UgKmNvb2tpZVN0b3JhZ2UoY29u
c3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uKQoreworICAgIGF1dG8gY29va2llU3Rv
cmFnZSA9IHNlc3Npb24uY29va2llU3RvcmFnZSgpOworICAgIGlmICghY29va2llU3RvcmFnZSB8
fCBbTlNIVFRQQ29va2llU3RvcmFnZSBzaGFyZWRIVFRQQ29va2llU3RvcmFnZV0uX2Nvb2tpZVN0
b3JhZ2UgPT0gY29va2llU3RvcmFnZSkKKyAgICAgICAgcmV0dXJuIFtOU0hUVFBDb29raWVTdG9y
YWdlIHNoYXJlZEhUVFBDb29raWVTdG9yYWdlXTsKKyAgICAKKyAgICByZXR1cm4gW1tbTlNIVFRQ
Q29va2llU3RvcmFnZSBhbGxvY10gX2luaXRXaXRoQ0ZIVFRQQ29va2llU3RvcmFnZTpjb29raWVT
dG9yYWdlLmdldCgpXSBhdXRvcmVsZWFzZV07Cit9CisKIHZvaWQgYWRkQ29va2llKGNvbnN0IE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IENvb2tp
ZSYgY29va2llKQogewogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKQEAgLTI4MCwx
MiArMjgzLDEwIEBAIHZvaWQgYWRkQ29va2llKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2kKICAg
ICAgICAgTlNIVFRQQ29va2llRXhwaXJlczogW05TRGF0ZSBkYXRlV2l0aFRpbWVJbnRlcnZhbFNp
bmNlMTk3MDpjb29raWUuZXhwaXJlcyAvIDEwMDAuMF0sCiAgICAgfV07CiAKLSNpZiAhVVNFKENG
TkVUV09SSykKICAgICBpZiAoIWNvb2tpZVN0b3JhZ2UpIHsKICAgICAgICAgW1dlYkNvcmU6OmNv
b2tpZVN0b3JhZ2Uoc2Vzc2lvbikgc2V0Q29va2llOmh0dHBDb29raWVdOwogICAgICAgICByZXR1
cm47CiAgICAgfQotI2VuZGlmIC8vICFVU0UoQ0ZORVRXT1JLKQogCiAgICAgQ0ZIVFRQQ29va2ll
U3RvcmFnZVNldENvb2tpZShjb29raWVTdG9yYWdlLmdldCgpLCBbaHR0cENvb2tpZSBfQ0ZIVFRQ
Q29va2llXSk7CiAKQEAgLTMwOSwyMSArMzEwLDYgQEAgdm9pZCBkZWxldGVBbGxDb29raWVzKGNv
bnN0IE5ldHdvcmtTdG9yYQogICAgIHdrRGVsZXRlQWxsSFRUUENvb2tpZXMoc2Vzc2lvbi5jb29r
aWVTdG9yYWdlKCkuZ2V0KCkpOwogfQogCi19Ci0KLSNlbmRpZiAvLyAhVVNFKENGTkVUV09SSykK
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdGF0aWMgTlNIVFRQQ29va2llU3RvcmFnZSAqY29v
a2llU3RvcmFnZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24pCi17Ci0gICAg
YXV0byBjb29raWVTdG9yYWdlID0gc2Vzc2lvbi5jb29raWVTdG9yYWdlKCk7Ci0gICAgaWYgKCFj
b29raWVTdG9yYWdlIHx8IFtOU0hUVFBDb29raWVTdG9yYWdlIHNoYXJlZEhUVFBDb29raWVTdG9y
YWdlXS5fY29va2llU3RvcmFnZSA9PSBjb29raWVTdG9yYWdlKQotICAgICAgICByZXR1cm4gW05T
SFRUUENvb2tpZVN0b3JhZ2Ugc2hhcmVkSFRUUENvb2tpZVN0b3JhZ2VdOwotCi0gICAgcmV0dXJu
IFtbW05TSFRUUENvb2tpZVN0b3JhZ2UgYWxsb2NdIF9pbml0V2l0aENGSFRUUENvb2tpZVN0b3Jh
Z2U6Y29va2llU3RvcmFnZS5nZXQoKV0gYXV0b3JlbGVhc2VdOwotfQotCiB2b2lkIGRlbGV0ZUNv
b2tpZXNGb3JIb3N0bmFtZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBj
b25zdCBWZWN0b3I8U3RyaW5nPiYgaG9zdG5hbWVzKQogewogICAgIEJFR0lOX0JMT0NLX09CSkNf
RVhDRVBUSU9OUzsKQEAgLTM1Myw3ICszMzksNiBAQCB2b2lkIGRlbGV0ZUNvb2tpZXNGb3JIb3N0
bmFtZXMoY29uc3QgTmV0CiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIH0KIAotCiB2
b2lkIGRlbGV0ZUFsbENvb2tpZXNNb2RpZmllZFNpbmNlKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiYgc2Vzc2lvbiwgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCB0aW1l
UG9pbnQpCiB7CiAgICAgaWYgKCFbTlNIVFRQQ29va2llU3RvcmFnZSBpbnN0YW5jZXNSZXNwb25k
VG9TZWxlY3RvcjpAc2VsZWN0b3IocmVtb3ZlQ29va2llc1NpbmNlRGF0ZTopXSkKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0NyZWRlbnRpYWxTdG9yYWdlTWFjLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0NyZWRl
bnRpYWxTdG9yYWdlTWFjLm1tCShyZXZpc2lvbiAyMDcwMzkpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL21hYy9DcmVkZW50aWFsU3RvcmFnZU1hYy5tbQkod29ya2luZyBjb3B5
KQpAQCAtMjYsOCArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNyZWRl
bnRpYWxTdG9yYWdlLmgiCiAKLSNpZiAhVVNFKENGTkVUV09SSykKLQogI2luY2x1ZGUgIkF1dGhl
bnRpY2F0aW9uTWFjLmgiCiAjaW5jbHVkZSAiQ3JlZGVudGlhbC5oIgogI2luY2x1ZGUgIlByb3Rl
Y3Rpb25TcGFjZS5oIgpAQCAtNTIsNSArNTAsMyBAQCB2b2lkIENyZWRlbnRpYWxTdG9yYWdlOjpz
YXZlVG9QZXJzaXN0ZW50CiAjZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5k
aWYgLy8gIVVTRShDRk5FVFdPUkspCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL21hYy9Gb3JtRGF0YVN0cmVhbU1hYy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvbWFjL0Zvcm1EYXRhU3RyZWFtTWFjLmgJKHJldmlzaW9uIDIwNzAz
OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Zvcm1EYXRhU3RyZWFt
TWFjLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDEwICsyNiw3IEBACiAgKiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICov
CiAKLSNpZm5kZWYgRm9ybURhdGFTdHJlYW1NYWNfaAotI2RlZmluZSBGb3JtRGF0YVN0cmVhbU1h
Y19oCi0KLSNpZiAhVVNFKENGTkVUV09SSykKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSA8d3Rm
L0ZvcndhcmQuaD4KIApAQCAtNDAsMTUgKzM3LDExIEBAIHR5cGVkZWYgY29uc3Qgc3RydWN0IF9D
RlVSTFJlcXVlc3QqIENGVVIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0gICAgY2xhc3MgRm9y
bURhdGE7CitjbGFzcyBGb3JtRGF0YTsKIAotICAgIHZvaWQgc2V0SFRUUEJvZHkoTlNNdXRhYmxl
VVJMUmVxdWVzdCAqLCBGb3JtRGF0YSopOwotICAgIEZvcm1EYXRhKiBodHRwQm9keUZyb21TdHJl
YW0oTlNJbnB1dFN0cmVhbSAqKTsKK3ZvaWQgc2V0SFRUUEJvZHkoTlNNdXRhYmxlVVJMUmVxdWVz
dCAqLCBGb3JtRGF0YSopOworRm9ybURhdGEqIGh0dHBCb2R5RnJvbVN0cmVhbShOU0lucHV0U3Ry
ZWFtICopOwogCi0gICAgQ0ZTdHJpbmdSZWYgZm9ybURhdGFTdHJlYW1MZW5ndGhQcm9wZXJ0eU5h
bWUoKTsKK0NGU3RyaW5nUmVmIGZvcm1EYXRhU3RyZWFtTGVuZ3RoUHJvcGVydHlOYW1lKCk7CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vICFVU0UoQ0ZORVRXT1JLKQotCi0j
ZW5kaWYgLy8gRm9ybURhdGFTdHJlYW1NYWNfaApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9tYWMvRm9ybURhdGFTdHJlYW1NYWMubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvRm9ybURhdGFTdHJlYW1NYWMubW0JKHJldmlz
aW9uIDIwNzAzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Zvcm1E
YXRhU3RyZWFtTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw4ICsyOSw2IEBACiAjaW1wb3J0
ICJjb25maWcuaCIKICNpbXBvcnQgIkZvcm1EYXRhU3RyZWFtTWFjLmgiCiAKLSNpZiAhVVNFKENG
TkVUV09SSykKLQogI2ltcG9ydCAiRm9ybURhdGEuaCIKICNpbXBvcnQgIkZvcm1EYXRhU3RyZWFt
Q0ZOZXQuaCIKIApAQCAtNTEsNSArNDksMyBAQCBGb3JtRGF0YSogaHR0cEJvZHlGcm9tU3RyZWFt
KE5TSW5wdXRTdHJlCiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vICFV
U0UoQ0ZORVRXT1JLKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMv
UmVzb3VyY2VFcnJvck1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL21hYy9SZXNvdXJjZUVycm9yTWFjLm1tCShyZXZpc2lvbiAyMDcwMzkpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUVycm9yTWFjLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0zMSwxMCArMzEsNiBAQAogI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3Vu
ZGF0aW9uLmg+CiAjaW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgogCi0jaWYgUExB
VEZPUk0oSU9TKSAmJiBVU0UoQ0ZORVRXT1JLKQotI2ltcG9ydCA8Q0ZOZXR3b3JrL0NGU29ja2V0
U3RyZWFtUHJpdi5oPgotI2VuZGlmCi0KIEBpbnRlcmZhY2UgTlNFcnJvciAoV2ViRXh0cmFzKQog
LSAoTlNTdHJpbmcgKilfd2ViX2xvY2FsaXplZERlc2NyaXB0aW9uOwogQGVuZApAQCAtOTEsODUg
Kzg3LDYgQEAgLSAodm9pZCllbmNvZGVXaXRoQ29kZXI6KE5TQ29kZXIgKiljb2RlcgogCiBAZW5k
CiAKLQotI2lmIFVTRShDRk5FVFdPUkspCi1zdGF0aWMgTlNFcnJvciAqTlNFcnJvckZyb21DRkVy
cm9yKENGRXJyb3JSZWYgY2ZFcnJvciwgTlNVUkwgKnVybCkKLXsKLSAgICBDRkluZGV4IGVyckNv
ZGUgPSBDRkVycm9yR2V0Q29kZShjZkVycm9yKTsKLSAgICBpZiAoQ0ZFcXVhbChDRkVycm9yR2V0
RG9tYWluKGNmRXJyb3IpLCBrQ0ZFcnJvckRvbWFpbkNGTmV0d29yaykgJiYgZXJyQ29kZSA8PSBr
Q0ZVUkxFcnJvclVua25vd24gJiYgZXJyQ29kZSA+IC00MDAwKSB7Ci0gICAgICAgIC8vIFRoaXMg
aXMgYW4gVVJMIGVycm9yIGFuZCBuZWVkcyB0byBiZSB0cmFuc2xhdGVkIHRvIHRoZSBOU1VSTEVy
cm9yRG9tYWluCi0gICAgICAgIGlkIGtleXNbMTBdLCB2YWx1ZXNbMTBdOwotICAgICAgICBDRkRp
Y3Rpb25hcnlSZWYgdXNlckluZm8gPSBDRkVycm9yQ29weVVzZXJJbmZvKGNmRXJyb3IpOwotICAg
ICAgICBOU0Vycm9yICpyZXN1bHQ7Ci0gICAgICAgIE5TSW50ZWdlciBjb3VudCA9IDA7Ci0KLSAg
ICAgICAgaWYgKHVybCkgewotICAgICAgICAgICAga2V5c1tjb3VudF0gPSBOU1VSTEVycm9yRmFp
bGluZ1VSTEVycm9yS2V5OwotICAgICAgICAgICAgdmFsdWVzW2NvdW50XSA9IHVybDsKLSAgICAg
ICAgICAgIGNvdW50ICsrOwotCi0gICAgICAgICAgICBrZXlzW2NvdW50XSA9IE5TVVJMRXJyb3JG
YWlsaW5nVVJMU3RyaW5nRXJyb3JLZXk7Ci0gICAgICAgICAgICB2YWx1ZXNbY291bnRdID0gW3Vy
bCBhYnNvbHV0ZVN0cmluZ107Ci0gICAgICAgICAgICBjb3VudCArKzsKLSAgICAgICAgfQotCi0g
ICAgICAgIHZhbHVlc1tjb3VudF0gPSAoaWQpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUodXNlckluZm8s
IGtDRkVycm9yTG9jYWxpemVkRGVzY3JpcHRpb25LZXkpOwotICAgICAgICBpZiAodmFsdWVzW2Nv
dW50XSkgewotICAgICAgICAgICAga2V5c1tjb3VudF0gPSBOU0xvY2FsaXplZERlc2NyaXB0aW9u
S2V5OwotICAgICAgICAgICAgY291bnQgKys7Ci0gICAgICAgIH0KLQotICAgICAgICB2YWx1ZXNb
Y291bnRdID0gKGlkKUNGRGljdGlvbmFyeUdldFZhbHVlKHVzZXJJbmZvLCBrQ0ZFcnJvckxvY2Fs
aXplZEZhaWx1cmVSZWFzb25LZXkpOwotICAgICAgICBpZiAodmFsdWVzW2NvdW50XSkgewotICAg
ICAgICAgICAga2V5c1tjb3VudF0gPSBOU0xvY2FsaXplZEZhaWx1cmVSZWFzb25FcnJvcktleTsK
LSAgICAgICAgICAgIGNvdW50ICsrOwotICAgICAgICB9Ci0KLSAgICAgICAgdmFsdWVzW2NvdW50
XSA9IChpZClDRkRpY3Rpb25hcnlHZXRWYWx1ZSh1c2VySW5mbywga0NGRXJyb3JMb2NhbGl6ZWRS
ZWNvdmVyeVN1Z2dlc3Rpb25LZXkpOwotICAgICAgICBpZiAodmFsdWVzW2NvdW50XSkgewotICAg
ICAgICAgICAga2V5c1tjb3VudF0gPSBOU0xvY2FsaXplZFJlY292ZXJ5U3VnZ2VzdGlvbkVycm9y
S2V5OwotICAgICAgICAgICAgY291bnQgKys7Ci0gICAgICAgIH0KLQotI3ByYWdtYSBjbGFuZyBk
aWFnbm9zdGljIHB1c2gKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV2RlcHJl
Y2F0ZWQtZGVjbGFyYXRpb25zIgotICAgICAgICBpZiAodXNlckluZm8gJiYgKHZhbHVlc1tjb3Vu
dF0gPSAoaWQpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUodXNlckluZm8sIGtDRlN0cmVhbVByb3BlcnR5
U1NMUGVlckNlcnRpZmljYXRlcykpICE9IG5pbCkgewotICAgICAgICAgICAgLy8gTmVlZCB0byB0
cmFuc2xhdGUgdGhlIGNlcnQKLSAgICAgICAgICAgIGtleXNbY291bnRdID0gQCJOU0Vycm9yUGVl
ckNlcnRpZmljYXRlQ2hhaW5LZXkiOwotICAgICAgICAgICAgY291bnQgKys7Ci0KLSAgICAgICAg
ICAgIHZhbHVlc1tjb3VudF0gPSAoaWQpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUodXNlckluZm8sIF9r
Q0ZTdHJlYW1Qcm9wZXJ0eVNTTENsaWVudENlcnRpZmljYXRlcyk7Ci0gICAgICAgICAgICBpZiAo
dmFsdWVzW2NvdW50XSkgewotICAgICAgICAgICAgICAgIGtleXNbY291bnRdID0gQCJOU0Vycm9y
Q2xpZW50Q2VydGlmaWNhdGVDaGFpbktleSI7Ci0gICAgICAgICAgICAgICAgY291bnQgKys7Ci0g
ICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHZhbHVlc1tjb3VudF0gPSAoaWQpQ0ZEaWN0aW9u
YXJ5R2V0VmFsdWUodXNlckluZm8sIF9rQ0ZTdHJlYW1Qcm9wZXJ0eVNTTENsaWVudENlcnRpZmlj
YXRlU3RhdGUpOwotICAgICAgICAgICAgaWYgKHZhbHVlc1tjb3VudF0pIHsKLSAgICAgICAgICAg
ICAgICBrZXlzW2NvdW50XSA9IEAiTlNFcnJvckNsaWVudENlcnRpZmljYXRlU3RhdGVLZXkiOwot
ICAgICAgICAgICAgICAgIGNvdW50ICsrOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0jcHJh
Z21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCi0KLSAgICAgICAgaWYgKHVzZXJJbmZvICYmICh2YWx1
ZXNbY291bnRdID0gKGlkKUNGRGljdGlvbmFyeUdldFZhbHVlKHVzZXJJbmZvLCBrQ0ZTdHJlYW1Q
cm9wZXJ0eVNTTFBlZXJUcnVzdCkpICE9IG5pbCkgewotICAgICAgICAgICAga2V5c1tjb3VudF0g
PSBOU1VSTEVycm9yRmFpbGluZ1VSTFBlZXJUcnVzdEVycm9yS2V5OwotICAgICAgICAgICAgY291
bnQrKzsKLSAgICAgICAgfQotCi0gICAgICAgIGtleXNbY291bnRdID0gTlNVbmRlcmx5aW5nRXJy
b3JLZXk7Ci0gICAgICAgIHZhbHVlc1tjb3VudF0gPSAoaWQpY2ZFcnJvcjsKLSAgICAgICAgY291
bnQgKys7Ci0KLSAgICAgICAgcmVzdWx0ID0gW1dlYkN1c3RvbU5TVVJMRXJyb3IgZXJyb3JXaXRo
RG9tYWluOk5TVVJMRXJyb3JEb21haW4gY29kZTooZXJyQ29kZSA9PSBrQ0ZVUkxFcnJvclVua25v
d24gPyAoQ0ZJbmRleClOU1VSTEVycm9yVW5rbm93biA6IGVyckNvZGUpIHVzZXJJbmZvOltOU0Rp
Y3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3RzOnZhbHVlcyBmb3JLZXlzOmtleXMgY291bnQ6
Y291bnRdXTsKLSAgICAgICAgaWYgKHVzZXJJbmZvKQotICAgICAgICAgICAgQ0ZSZWxlYXNlKHVz
ZXJJbmZvKTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0gICAgcmV0dXJuIChOU0Vy
cm9yICopY2ZFcnJvcjsKLX0KLSNlbmRpZiAvLyBVU0UoQ0ZORVRXT1JLKQotCiAjZW5kaWYgLy8g
UExBVEZPUk0oSU9TKQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xOTAsNTMgKzEwNyw2IEBA
IHN0YXRpYyBSZXRhaW5QdHI8TlNFcnJvcj4gY3JlYXRlTlNFcnJvckYKICAgICByZXR1cm4gYWRv
cHROUyhbW05TRXJyb3IgYWxsb2NdIGluaXRXaXRoRG9tYWluOnJlc291cmNlRXJyb3IuZG9tYWlu
KCkgY29kZTpyZXNvdXJjZUVycm9yLmVycm9yQ29kZSgpIHVzZXJJbmZvOnVzZXJJbmZvLmdldCgp
XSk7CiB9CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotCi1SZXNvdXJjZUVycm9yOjpSZXNvdXJjZUVy
cm9yKE5TRXJyb3IgKmVycm9yKQotICAgIDogUmVzb3VyY2VFcnJvckJhc2UoVHlwZTo6TnVsbCkK
LSAgICAsIG1fZGF0YUlzVXBUb0RhdGUoZmFsc2UpCi0gICAgLCBtX3BsYXRmb3JtRXJyb3IocmVp
bnRlcnByZXRfY2FzdDxDRkVycm9yUmVmPihlcnJvcikpCi17Ci0gICAgaWYgKGVycm9yKQotICAg
ICAgICBzZXRUeXBlKChbZXJyb3IgY29kZV0gPT0gTlNVUkxFcnJvclRpbWVkT3V0KSA/IFR5cGU6
OlRpbWVvdXQgOiBUeXBlOjpHZW5lcmFsKTsKLX0KLQotTlNFcnJvciAqUmVzb3VyY2VFcnJvcjo6
bnNFcnJvcigpIGNvbnN0Ci17Ci0gICAgaWYgKGlzTnVsbCgpKSB7Ci0gICAgICAgIEFTU0VSVCgh
bV9wbGF0Zm9ybUVycm9yKTsKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICB9Ci0KLSAgICBpZiAo
bV9wbGF0Zm9ybU5TRXJyb3IpCi0gICAgICAgIHJldHVybiBtX3BsYXRmb3JtTlNFcnJvci5nZXQo
KTsKLQotICAgIGlmIChtX3BsYXRmb3JtRXJyb3IpIHsKLSAgICAgICAgQ0ZFcnJvclJlZiBlcnJv
ciA9IG1fcGxhdGZvcm1FcnJvci5nZXQoKTsKLSAgICAgICAgUmV0YWluUHRyPENGRGljdGlvbmFy
eVJlZj4gdXNlckluZm8gPSBhZG9wdENGKENGRXJyb3JDb3B5VXNlckluZm8oZXJyb3IpKTsKLSNp
ZiBQTEFURk9STShJT1MpCi0gICAgICAgIG1fcGxhdGZvcm1OU0Vycm9yID0gTlNFcnJvckZyb21D
RkVycm9yKGVycm9yLCAoTlNVUkwgKilbKE5TRGljdGlvbmFyeSAqKXVzZXJJbmZvLmdldCgpIG9i
amVjdEZvcktleTooaWQpIGtDRlVSTEVycm9yRmFpbGluZ1VSTEVycm9yS2V5XSk7Ci0gICAgICAg
IC8vIElmIE5TRXJyb3JGcm9tQ0ZFcnJvciBjcmVhdGVkIGEgbmV3IE5TRXJyb3IgZm9yIHVzLCBy
ZXR1cm4gdGhhdC4KLSAgICAgICAgaWYgKG1fcGxhdGZvcm1OU0Vycm9yLmdldCgpICE9IChOU0Vy
cm9yICopZXJyb3IpCi0gICAgICAgICAgICByZXR1cm4gbV9wbGF0Zm9ybU5TRXJyb3IuZ2V0KCk7
Ci0KLSAgICAgICAgLy8gT3RoZXJ3aXNlIGZhbGwgdGhyb3VnaCB0byBjcmVhdGUgYSBuZXcgTlNF
cnJvciBmcm9tIHRoZSBDRkVycm9yLgotI2VuZGlmCi0gICAgICAgIG1fcGxhdGZvcm1OU0Vycm9y
ID0gYWRvcHROUyhbW05TRXJyb3IgYWxsb2NdIGluaXRXaXRoRG9tYWluOihOU1N0cmluZyAqKUNG
RXJyb3JHZXREb21haW4oZXJyb3IpIGNvZGU6Q0ZFcnJvckdldENvZGUoZXJyb3IpIHVzZXJJbmZv
OihOU0RpY3Rpb25hcnkgKil1c2VySW5mby5nZXQoKV0pOwotICAgICAgICByZXR1cm4gbV9wbGF0
Zm9ybU5TRXJyb3IuZ2V0KCk7Ci0gICAgfQotCi0gICAgbV9wbGF0Zm9ybU5TRXJyb3IgPSBjcmVh
dGVOU0Vycm9yRnJvbVJlc291cmNlRXJyb3JCYXNlKCp0aGlzKTsKLSAgICByZXR1cm4gbV9wbGF0
Zm9ybU5TRXJyb3IuZ2V0KCk7Ci19Ci0KLVJlc291cmNlRXJyb3I6Om9wZXJhdG9yIE5TRXJyb3Ig
KigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG5zRXJyb3IoKTsKLX0KLQotI2Vsc2UKLQogUmVzb3Vy
Y2VFcnJvcjo6UmVzb3VyY2VFcnJvcihOU0Vycm9yICpuc0Vycm9yKQogICAgIDogUmVzb3VyY2VF
cnJvckJhc2UoVHlwZTo6TnVsbCkKICAgICAsIG1fZGF0YUlzVXBUb0RhdGUoZmFsc2UpCkBAIC0z
MDksNiArMTc5LDQgQEAgUmVzb3VyY2VFcnJvcjo6b3BlcmF0b3IgQ0ZFcnJvclJlZigpIGNvbgog
ICAgIHJldHVybiBjZkVycm9yKCk7CiB9CiAKLSNlbmRpZiAvLyBVU0UoQ0ZORVRXT1JLKQotCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbQkocmV2aXNpb24gMjA3
MDM5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5k
bGVNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTU4LDE2ICs1OCw2IEBACiAjaW1wb3J0IDx3dGYv
dGV4dC9CYXNlNjQuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAotI2lmIFVTRShD
Rk5FVFdPUkspCi0jaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKLSNpbXBvcnQgPENGTmV0d29y
ay9DRlVSTENvbm5lY3Rpb25Qcml2Lmg+Ci0jZW5kaWYKLXR5cGVkZWYgc3RydWN0IF9DRlVSTENv
bm5lY3Rpb24qIENGVVJMQ29ubmVjdGlvblJlZjsKLWV4dGVybiAiQyIgewotQ0ZEaWN0aW9uYXJ5
UmVmIF9DRlVSTENvbm5lY3Rpb25Db3B5VGltaW5nRGF0YShDRlVSTENvbm5lY3Rpb25SZWYpOwot
fQotI2VuZGlmIC8vIFVTRShDRk5FVFdPUkspCi0KICNpZiBQTEFURk9STShJT1MpCiAjaW1wb3J0
ICJDRk5ldHdvcmtTUEkuaCIKICNpbXBvcnQgIlJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oIgpA
QCAtOTAsOCArODAsNiBAQCAtKGlkKV9pbml0V2l0aFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJl
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKLSNpZiAhVVNFKENGTkVUV09SSykKLSAgICAK
IHN0YXRpYyB2b2lkIGFwcGx5QmFzaWNBdXRob3JpemF0aW9uSGVhZGVyKFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCwgY29uc3QgQ3JlZGVudGlhbCYgY3JlZGVudGlhbCkKIHsKICAgICBTdHJpbmcg
YXV0aGVudGljYXRpb25IZWFkZXIgPSAiQmFzaWMgIiArIGJhc2U2NEVuY29kZShTdHJpbmcoY3Jl
ZGVudGlhbC51c2VyKCkgKyAiOiIgKyBjcmVkZW50aWFsLnBhc3N3b3JkKCkpLnV0ZjgoKSk7CkBA
IC0zMjksOCArMzE3LDYgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6cGxhdGZvcm1TZXREZWZlcnNM
bwogICAgICAgICBbZC0+bV9jb25uZWN0aW9uIHNldERlZmVyc0NhbGxiYWNrczpkZWZlcnNdOwog
fQogCi0jaWYgIVVTRShDRk5FVFdPUkspCi0KIHZvaWQgUmVzb3VyY2VIYW5kbGU6OnNjaGVkdWxl
KFNjaGVkdWxlUGFpciYgcGFpcikKIHsKICAgICBOU1J1bkxvb3AgKnJ1bkxvb3AgPSBwYWlyLm5z
UnVuTG9vcCgpOwpAQCAtMzQ5LDggKzMzNSw2IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OnVuc2No
ZWR1bGUoU2NoZWR1bGUKICAgICAgICAgW2QtPm1fY29ubmVjdGlvbi5nZXQoKSB1bnNjaGVkdWxl
RnJvbVJ1bkxvb3A6cnVuTG9vcCBmb3JNb2RlOihOU1N0cmluZyAqKXBhaXIubW9kZSgpXTsKIH0K
IAotI2VuZGlmCi0KIGlkIFJlc291cmNlSGFuZGxlOjptYWtlRGVsZWdhdGUoYm9vbCBzaG91bGRV
c2VDcmVkZW50aWFsU3RvcmFnZSkKIHsKICAgICBBU1NFUlQoIWQtPm1fZGVsZWdhdGUpOwpAQCAt
NzMwLDI3ICs3MTQsMTQgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6Y29udGludWVXaWxsQ2FjaGVS
ZQogCiAgICAgWyhpZClkZWxlZ2F0ZSgpIGNvbnRpbnVlV2lsbENhY2hlUmVzcG9uc2U6cmVzcG9u
c2VdOwogfQotICAgIAotI2VuZGlmIC8vICFVU0UoQ0ZORVRXT1JLKQotICAgIAotI2lmIEVOQUJM
RShXRUJfVElNSU5HKQogCi0jaWYgVVNFKENGTkVUV09SSykKLSAgICAKLXZvaWQgUmVzb3VyY2VI
YW5kbGU6OmdldENvbm5lY3Rpb25UaW1pbmdEYXRhKENGVVJMQ29ubmVjdGlvblJlZiBjb25uZWN0
aW9uLCBOZXR3b3JrTG9hZFRpbWluZyYgdGltaW5nKQotewotICAgIGNvcHlUaW1pbmdEYXRhKChf
X2JyaWRnZSBOU0RpY3Rpb25hcnkqKWFkb3B0Q0YoX0NGVVJMQ29ubmVjdGlvbkNvcHlUaW1pbmdE
YXRhKGNvbm5lY3Rpb24pKS5nZXQoKSwgdGltaW5nKTsKLX0KLSAgICAKLSNlbHNlCisjaWYgRU5B
QkxFKFdFQl9USU1JTkcpCiAgICAgCiB2b2lkIFJlc291cmNlSGFuZGxlOjpnZXRDb25uZWN0aW9u
VGltaW5nRGF0YShOU1VSTENvbm5lY3Rpb24gKmNvbm5lY3Rpb24sIE5ldHdvcmtMb2FkVGltaW5n
JiB0aW1pbmcpCiB7CiAgICAgY29weVRpbWluZ0RhdGEoW2Nvbm5lY3Rpb24gX3RpbWluZ0RhdGFd
LCB0aW1pbmcpOwogfQogICAgIAotI2VuZGlmCi0gICAgCiAjZW5kaWYgLy8gRU5BQkxFKFdFQl9U
SU1JTkcpCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvbWFjL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50Lm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1N5bmNocm9ub3VzTG9hZGVy
Q2xpZW50Lm1tCShyZXZpc2lvbiAyMDcwMzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL21hYy9TeW5jaHJvbm91c0xvYWRlckNsaWVudC5tbQkod29ya2luZyBjb3B5KQpAQCAt
MjYsOCArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlN5bmNocm9ub3Vz
TG9hZGVyQ2xpZW50LmgiCiAKLSNpZiAhVVNFKENGTkVUV09SSykKLQogI2luY2x1ZGUgIkF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM4LDE0ICsz
NiwxMCBAQCB2b2lkIFN5bmNocm9ub3VzTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlCiAgICAgW2No
YWxsZW5nZS5zZW5kZXIoKSBjb250aW51ZVdpdGhvdXRDcmVkZW50aWFsRm9yQXV0aGVudGljYXRp
b25DaGFsbGVuZ2U6Y2hhbGxlbmdlLm5zVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKV07CiB9
CiAKLSNpZiAhVVNFKENGTkVUV09SSykKIFJlc291cmNlRXJyb3IgU3luY2hyb25vdXNMb2FkZXJD
bGllbnQ6OnBsYXRmb3JtQmFkUmVzcG9uc2VFcnJvcigpCiB7CiAgICAgUmV0YWluUHRyPE5TRXJy
b3I+IGVycm9yID0gYWRvcHROUyhbW05TRXJyb3IgYWxsb2NdIGluaXRXaXRoRG9tYWluOk5TVVJM
RXJyb3JEb21haW4gY29kZTpOU1VSTEVycm9yQmFkU2VydmVyUmVzcG9uc2UgdXNlckluZm86bmls
XSk7CiAgICAgcmV0dXJuIGVycm9yLmdldCgpOwogfQotI2VuZGlmCiAKIH0KLQotI2VuZGlmIC8v
ICFVU0UoQ0ZORVRXT1JLKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9t
YWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVs
ZWdhdGUuaAkocmV2aXNpb24gMjA3MDM5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yMyw4ICsyMyw3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAg
Ki8KIAotI2lmbmRlZiBXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlX2gKLSNkZWZpbmUg
V2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZV9oCisjcHJhZ21hIG9uY2UKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogY2xhc3MgUmVzb3VyY2VIYW5kbGU7CkBAIC0zNCwxMyArMzMsOCBAQCBj
bGFzcyBSZXNvdXJjZUhhbmRsZTsKIC0gKHZvaWQpZGV0YWNoSGFuZGxlOwogQGVuZAogCi0jaWYg
IVVTRShDRk5FVFdPUkspCi0KIEBpbnRlcmZhY2UgV2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxl
Z2F0ZSA6IE5TT2JqZWN0IDxOU1VSTENvbm5lY3Rpb25EZWxlZ2F0ZSwgV2ViQ29yZVJlc291cmNl
TG9hZGVyRGVsZWdhdGU+IHsKICAgICBXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSogbV9oYW5kbGU7
CiB9CiAtIChpZClpbml0V2l0aEhhbmRsZTooV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqKWhhbmRs
ZTsKIEBlbmQKLQotI2VuZGlmIC8vICFVU0UoQ0ZORVRXT1JLKQotI2VuZGlmIC8vIFdlYkNvcmVS
ZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGVfaApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZS5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VI
YW5kbGVBc0RlbGVnYXRlLm1tCShyZXZpc2lvbiAyMDcwMzkpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0yNiw4ICsyNiw2IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBv
cnQgIldlYkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGUuaCIKIAotI2lmICFVU0UoQ0ZORVRX
T1JLKQotCiAjaW1wb3J0ICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oIgogI2ltcG9ydCAiQXV0
aGVudGljYXRpb25NYWMuaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKQEAgLTI3MCw2ICsyNjgsMyBA
QCAtIChOU0NhY2hlZFVSTFJlc3BvbnNlICopY29ubmVjdGlvbjooTlNVCiB9CiAKIEBlbmQKLQot
I2VuZGlmIC8vICFVU0UoQ0ZORVRXT1JLKQotCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdh
dGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9X
ZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUuaAkocmV2aXNpb24g
MjA3MDM5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJl
c291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTIzLDEwICsyMyw3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8K
IAotI2lmbmRlZiBXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGVf
aAotI2RlZmluZSBXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGVf
aAotCi0jaWYgIVVTRShDRk5FVFdPUkspCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIldlYkNv
cmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGUuaCIKICNpbmNsdWRlIDxkaXNwYXRjaC9kaXNwYXRj
aC5oPgpAQCAtNTgsNiArNTUsMyBAQCBAaW50ZXJmYWNlIFdlYkNvcmVSZXNvdXJjZUhhbmRsZUFz
T3BlcmF0CiBAaW50ZXJmYWNlIFdlYkNvcmVSZXNvdXJjZUhhbmRsZVdpdGhDcmVkZW50aWFsU3Rv
cmFnZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZSA6IFdlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3Bl
cmF0aW9uUXVldWVEZWxlZ2F0ZQogCiBAZW5kCi0KLSNlbmRpZiAvLyAhVVNFKENGTkVUV09SSykK
LSNlbmRpZiAvLyBXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGVf
aApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291
cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3Bl
cmF0aW9uUXVldWVEZWxlZ2F0ZS5tbQkocmV2aXNpb24gMjA3MDM5KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25R
dWV1ZURlbGVnYXRlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw4ICsyNiw2IEBACiAjaW1wb3J0
ICJjb25maWcuaCIKICNpbXBvcnQgIldlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVl
dWVEZWxlZ2F0ZS5oIgogCi0jaWYgIVVTRShDRk5FVFdPUkspCi0KICNpbXBvcnQgIkF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlLmgiCiAjaW1wb3J0ICJBdXRoZW50aWNhdGlvbk1hYy5oIgogI2ltcG9y
dCAiTG9nZ2luZy5oIgpAQCAtMzI5LDYgKzMyNywzIEBAIC0gKEJPT0wpY29ubmVjdGlvblNob3Vs
ZFVzZUNyZWRlbnRpYWxTdG8KIH0KIAogQGVuZAotCi0jZW5kaWYgLy8gIVVTRShDRk5FVFdPUksp
Ci0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVVUkxS
ZXNwb25zZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L21hYy9XZWJDb3JlVVJMUmVzcG9uc2UubW0JKHJldmlzaW9uIDIwNzAzOSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVVUkxSZXNwb25zZS5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMzI1LDcgKzMyNSw2IEBAIHZvaWQgYWRqdXN0TUlNRVR5cGVJZk5lY2Vzc2Fy
eShDRlVSTFJlc3AKIH0KICNlbmRpZgogCi0jaWYgIVVTRShDRk5FVFdPUkspCiBOU1VSTFJlc3Bv
bnNlICpzeW50aGVzaXplUmVkaXJlY3RSZXNwb25zZUlmTmVjZXNzYXJ5KE5TVVJMUmVxdWVzdCAq
Y3VycmVudFJlcXVlc3QsIE5TVVJMUmVxdWVzdCAqbmV3UmVxdWVzdCwgTlNVUkxSZXNwb25zZSAq
cmVkaXJlY3RSZXNwb25zZSkKIHsKICAgICBpZiAocmVkaXJlY3RSZXNwb25zZSkKQEAgLTMzOSw2
ICszMzgsNSBAQCBOU1VSTFJlc3BvbnNlICpzeW50aGVzaXplUmVkaXJlY3RSZXNwb25zCiAgICAg
TlNEaWN0aW9uYXJ5ICpzeW50aGVzaXplZFJlc3BvbnNlSGVhZGVyRmllbGRzID0gQHsgQCJMb2Nh
dGlvbiI6IFtbbmV3UmVxdWVzdCBVUkxdIGFic29sdXRlU3RyaW5nXSwgQCJDYWNoZS1Db250cm9s
IjogQCJuby1zdG9yZSIgfTsKICAgICByZXR1cm4gW1tbTlNIVFRQVVJMUmVzcG9uc2UgYWxsb2Nd
IGluaXRXaXRoVVJMOltjdXJyZW50UmVxdWVzdCBVUkxdIHN0YXR1c0NvZGU6MzAyIEhUVFBWZXJz
aW9uOihOU1N0cmluZyAqKWtDRkhUVFBWZXJzaW9uMV8xIGhlYWRlckZpZWxkczpzeW50aGVzaXpl
ZFJlc3BvbnNlSGVhZGVyRmllbGRzXSBhdXRvcmVsZWFzZV07CiB9Ci0jZW5kaWYKIAogfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1RlbXBvcmFyeUxpbmtTdHVicy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1RlbXBvcmFyeUxpbmtTdHVi
cy5jcHAJKHJldmlzaW9uIDIwNzAzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9U
ZW1wb3JhcnlMaW5rU3R1YnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw3IEBACiAK
ICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlNTTEtleUdlbmVyYXRvci5o
IgotI2lmICFVU0UoQ0ZORVRXT1JLKQorI2lmICFVU0UoQ0ZVUkxDT05ORUNUSU9OKQogI2luY2x1
ZGUgIkNvb2tpZVN0b3JhZ2UuaCIKICNlbmRpZgogCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIFN0cmluZyBzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcodW5z
aWduZWQsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFVSTCYpIHsgbm90SW1wbGVtZW50ZWQoKTsgcmV0
dXJuIFN0cmluZygpOyB9CiB2b2lkIGdldFN1cHBvcnRlZEtleVNpemVzKFZlY3RvcjxTdHJpbmc+
JikgeyBub3RJbXBsZW1lbnRlZCgpOyB9CiAKLSNpZiAhVVNFKENGTkVUV09SSykKKyNpZiAhVVNF
KENGVVJMQ09OTkVDVElPTikKIHZvaWQgc3RhcnRPYnNlcnZpbmdDb29raWVDaGFuZ2VzKENvb2tp
ZUNoYW5nZUNhbGxiYWNrUHRyKSB7IG5vdEltcGxlbWVudGVkKCk7IH0KIHZvaWQgc3RvcE9ic2Vy
dmluZ0Nvb2tpZUNoYW5nZXMoKSB7IG5vdEltcGxlbWVudGVkKCk7IH0KICNlbmRpZgpJbmRleDog
U291cmNlL1dlYkNvcmUvdGVzdGluZy9qcy9XZWJDb3JlVGVzdFN1cHBvcnRQcmVmaXguaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL2pzL1dlYkNvcmVUZXN0U3VwcG9ydFBy
ZWZpeC5oCShyZXZpc2lvbiAyMDcwMzkpCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL2pzL1dl
YkNvcmVUZXN0U3VwcG9ydFByZWZpeC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjAsOSArMTIwLDcg
QEAKICNkZWZpbmUgT0JTT0xFVEVfQ09MT1JTWU5DX0FQSQogI2VuZGlmCiAjZW5kaWYKLSNpZiBV
U0UoQ0ZORVRXT1JLKQotLyogV2luZG93cyBkb2Vzbid0IGluY2x1ZGUgQ0ZOZXR3b3JrLmggdmlh
IENvcmVTZXJ2aWNlcy5oLCBzbyB3ZSBkbwotICAgaXQgZXhwbGljaXRseSBoZXJlIHRvIG1ha2Ug
V2luZG93cyBtb3JlIGNvbnNpc3RlbnQgd2l0aCBNYWMuICovCisjaWYgVVNFKENGVVJMQ09OTkVD
VElPTikKICNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZOZXR3b3JrLmg+CiAvLyBPbiBXaW5kb3dzLCBk
aXNwYXRjaC5oIG5lZWRzIHRvIGJlIGluY2x1ZGVkIGJlZm9yZSBjZXJ0YWluIENGTmV0d29yayBo
ZWFkZXJzLgogI2luY2x1ZGUgPGRpc3BhdGNoL2Rpc3BhdGNoLmg+CkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShy
ZXZpc2lvbiAyMDcwMzkpCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwzMSBAQAorMjAxNi0xMC0xMCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJp
c3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFJlbW92ZSBkZWFkIG5ldHdvcmtpbmcgY29k
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzMjYz
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9Eb3dubG9hZHMvaW9zL0Rvd25sb2FkSU9TLm1tOiBSZW1vdmVkLgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL0Rvd25sb2Fkcy9tYWMvRG93bmxvYWRNYWMubW06CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0xvYWQuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9tYWMvTmV0
d29ya0xvYWRNYWMubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkOjp3aWxsQ2FjaGVS
ZXNwb25zZUFzeW5jKTogRGVsZXRlZC4KKyAgICAgICAgKiBTaGFyZWQvQXV0aGVudGljYXRpb24v
Y29jb2EvQXV0aGVudGljYXRpb25NYW5hZ2VyQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OkF1
dGhlbnRpY2F0aW9uTWFuYWdlcjo6cmVjZWl2ZWRDcmVkZW50aWFsKToKKyAgICAgICAgKFdlYktp
dDo6QXV0aGVudGljYXRpb25NYW5hZ2VyOjpyZWNlaXZlZFJlcXVlc3RUb0NvbnRpbnVlV2l0aG91
dENyZWRlbnRpYWwpOgorICAgICAgICAoV2ViS2l0OjpBdXRoZW50aWNhdGlvbk1hbmFnZXI6OnJl
Y2VpdmVkQ2FuY2VsbGF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6QXV0aGVudGljYXRpb25NYW5h
Z2VyOjpyZWNlaXZlZFJlcXVlc3RUb1BlcmZvcm1EZWZhdWx0SGFuZGxpbmcpOgorICAgICAgICAo
V2ViS2l0OjpBdXRoZW50aWNhdGlvbk1hbmFnZXI6OnJlY2VpdmVkQ2hhbGxlbmdlUmVqZWN0aW9u
KToKKyAgICAgICAgKiBTaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZSk6Cisg
ICAgICAgICogU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaDoKKyAgICAgICAg
KiBTaGFyZWQvbWFjL1dlYkNvcmVBcmd1bWVudENvZGVyc01hYy5tbToKKyAgICAgICAgKElQQzo6
QXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlcXVlc3Q+OjplbmNvZGVQbGF0Zm9ybURhdGEpOgorICAg
ICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlc291cmNlUmVxdWVzdD46OmRlY29kZVBsYXRmb3Jt
RGF0YSk6CisgICAgICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAy
MDE2LTEwLTEwICBLb25zdGFudGluIFRva2FyZXYgIDxhbm51bGVuQHlhbmRleC5ydT4KIAogICAg
ICAgICBBZGRlZCBmaW5hbCBzcGVjaWZpZXIgdG8gV2ViSW5zcGVjdG9yU2VydmVyIGFuZCB0byBp
dHMgb3ZlcnJpZGRlbiBtZXRob2RzCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrTG9hZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtMb2FkLmgJKHJldmlzaW9uIDIwNzAzOSkKKysrIFNvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmgJKHdvcmtpbmcgY29weSkKQEAgLTc5LDEyICs3OSw4
IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhQXJyYXkoV2ViQ29yZTo6UmVzb3Vy
Y2VIYW5kbGUqLCBDRkFycmF5UmVmKSBvdmVycmlkZTsKICNlbmRpZgogI2lmIFBMQVRGT1JNKENP
Q09BKQotI2lmIFVTRShDRk5FVFdPUkspCi0gICAgdm9pZCB3aWxsQ2FjaGVSZXNwb25zZUFzeW5j
KFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwgQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZikgb3ZlcnJp
ZGU7Ci0jZWxzZQogICAgIHZvaWQgd2lsbENhY2hlUmVzcG9uc2VBc3luYyhXZWJDb3JlOjpSZXNv
dXJjZUhhbmRsZSosIE5TQ2FjaGVkVVJMUmVzcG9uc2UgKikgb3ZlcnJpZGU7CiAjZW5kaWYKLSNl
bmRpZgogCiAjaWYgVVNFKFBST1RFQ1RJT05fU1BBQ0VfQVVUSF9DQUxMQkFDSykKICAgICB2b2lk
IGNvbnRpbnVlQ2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShib29sKTsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3du
bG9hZC5oCShyZXZpc2lvbiAyMDcwMzkpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9Eb3dubG9hZHMvRG93bmxvYWQuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsMTAgKzQ3LDYgQEAg
T0JKQ19DTEFTUyBXS0Rvd25sb2FkQXNEZWxlZ2F0ZTsKICNlbmRpZgogI2VuZGlmCiAKLSNpZiBV
U0UoQ0ZORVRXT1JLKQotI2luY2x1ZGUgPENGTmV0d29yay9DRlVSTERvd25sb2FkUHJpdi5oPgot
I2VuZGlmCi0KIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgRGF0YVJlZmVyZW5jZTsKIH0KQEAgLTEz
OSw5ICsxMzUsNiBAQCBwcml2YXRlOgogICAgIFJldGFpblB0cjxXS0Rvd25sb2FkQXNEZWxlZ2F0
ZT4gbV9kZWxlZ2F0ZTsKICNlbmRpZgogI2VuZGlmCi0jaWYgVVNFKENGTkVUV09SSykKLSAgICBS
ZXRhaW5QdHI8Q0ZVUkxEb3dubG9hZFJlZj4gbV9kb3dubG9hZDsKLSNlbmRpZgogICAgIHN0ZDo6
dW5pcXVlX3B0cjxXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNsaWVudD4gbV9kb3dubG9hZENsaWVu
dDsKICAgICBSZWZQdHI8V2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU+IG1fcmVzb3VyY2VIYW5kbGU7
CiAgICAgU3RyaW5nIG1fc3VnZ2VzdGVkTmFtZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL0Rvd25sb2Fkcy9tYWMvRG93bmxvYWRNYWMubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL21hYy9Eb3dubG9hZE1hYy5tbQko
cmV2aXNpb24gMjA3MDM5KQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRG93bmxv
YWRzL21hYy9Eb3dubG9hZE1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAog
I2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJEb3dubG9hZC5oIgogCi0jaWYgIVVTRShDRk5F
VFdPUkspICYmICFVU0UoTkVUV09SS19TRVNTSU9OKQorI2lmICFVU0UoTkVUV09SS19TRVNTSU9O
KQogCiAjaW1wb3J0IDxXZWJDb3JlL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL0F1dGhlbnRpY2F0aW9uTWFjLmg+CkBAIC0yNzIsNCArMjcyLDQgQEAgLSAodm9p
ZClkb3dubG9hZDooTlNVUkxEb3dubG9hZCAqKWRvd25sbwogCiBAZW5kCiAKLSNlbmRpZiAvLyAh
VVNFKENGTkVUV09SSykgJiYgIVVTRShORVRXT1JLX1NFU1NJT04pCisjZW5kaWYgLy8gIVVTRShO
RVRXT1JLX1NFU1NJT04pCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMv
TmV0d29ya0xvYWRNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvbWFjL05ldHdvcmtMb2FkTWFjLm1tCShyZXZpc2lvbiAyMDcwMzkpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29ya0xvYWRNYWMubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTI0LDcgKzI0LDYgQEAKICAqLwogCiAjaW1wb3J0ICJjb25maWcuaCIKLQogI2ltcG9y
dCAiTmV0d29ya0xvYWQuaCIKIAogI2ltcG9ydCA8V2ViQ29yZS9DRk5ldHdvcmtTUEkuaD4KQEAg
LTM0LDE3ICszMyw2IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIAotI2lmIFVTRShDRk5FVFdPUkspCi0KLXZvaWQgTmV0d29ya0xvYWQ6OndpbGxDYWNo
ZVJlc3BvbnNlQXN5bmMoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgQ0ZDYWNoZWRVUkxSZXNwb25z
ZVJlZiBjZlJlc3BvbnNlKQotewotICAgIEFTU0VSVF9VTlVTRUQoaGFuZGxlLCBoYW5kbGUgPT0g
bV9oYW5kbGUpOwotCi0gICAgbV9oYW5kbGUtPmNvbnRpbnVlV2lsbENhY2hlUmVzcG9uc2UoY2ZS
ZXNwb25zZSk7Ci19Ci0KLSNlbHNlCi0KIHZvaWQgTmV0d29ya0xvYWQ6OndpbGxDYWNoZVJlc3Bv
bnNlQXN5bmMoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgTlNDYWNoZWRVUkxSZXNwb25zZSAqbnNS
ZXNwb25zZSkKIHsKICAgICBBU1NFUlRfVU5VU0VEKGhhbmRsZSwgaGFuZGxlID09IG1faGFuZGxl
KTsKQEAgLTUyLDYgKzQwLDQgQEAgdm9pZCBOZXR3b3JrTG9hZDo6d2lsbENhY2hlUmVzcG9uc2VB
c3luYwogICAgIG1faGFuZGxlLT5jb250aW51ZVdpbGxDYWNoZVJlc3BvbnNlKG5zUmVzcG9uc2Up
OwogfQogCi0jZW5kaWYgLy8gIVVTRShDRk5FVFdPUkspCi0KIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzLmNwcAkocmV2aXNpb24gMjA3MDM5KQorKysgU291cmNlL1dlYktpdDIv
U2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMDQsNyArMTA0LDcgQEAgdm9pZCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNv
ZAogICAgIGVuY29kZXIgPDwgdGV4dENoZWNrZXJTdGF0ZTsKICAgICBlbmNvZGVyIDw8IGZ1bGxL
ZXlib2FyZEFjY2Vzc0VuYWJsZWQ7CiAgICAgZW5jb2RlciA8PCBkZWZhdWx0UmVxdWVzdFRpbWVv
dXRJbnRlcnZhbDsKLSNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKENGTkVUV09SSykKKyNpZiBQ
TEFURk9STShDT0NPQSkKICAgICBlbmNvZGVyIDw8IHVpUHJvY2Vzc0J1bmRsZUlkZW50aWZpZXI7
CiAjZW5kaWYKICNpZiBQTEFURk9STShDT0NPQSkKQEAgLTI0MCw3ICsyNDAsNyBAQCBib29sIFdl
YlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuZGVmYXVsdFJlcXVlc3RUaW1lb3V0
SW50ZXJ2YWwpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0jaWYgUExBVEZPUk0oQ09DT0EpIHx8
IFVTRShDRk5FVFdPUkspCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShwYXJhbWV0ZXJzLnVpUHJvY2Vzc0J1bmRsZUlkZW50aWZpZXIpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVk
L1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAkocmV2aXNpb24gMjA3MDM5KQorKysgU291
cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTIzLDcgKzEyMyw3IEBAIHN0cnVjdCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzIHsKIAogICAgIGRvdWJsZSBkZWZhdWx0UmVxdWVzdFRpbWVvdXRJbnRlcnZhbDsKIAot
I2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZORVRXT1JLKQorI2lmIFBMQVRGT1JNKENPQ09B
KQogICAgIFN0cmluZyB1aVByb2Nlc3NCdW5kbGVJZGVudGlmaWVyOwogI2VuZGlmCiAKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BdXRoZW50aWNhdGlvbi9jb2NvYS9BdXRoZW50aWNhdGlv
bk1hbmFnZXJDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQXV0
aGVudGljYXRpb24vY29jb2EvQXV0aGVudGljYXRpb25NYW5hZ2VyQ29jb2EubW0JKHJldmlzaW9u
IDIwNzAzOSkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BdXRoZW50aWNhdGlvbi9jb2NvYS9B
dXRoZW50aWNhdGlvbk1hbmFnZXJDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMzIsMzcgKzMy
LDI3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiB2b2lkIEF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6
cmVjZWl2ZWRDcmVkZW50aWFsKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBhdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSwgY29uc3QgQ3JlZGVudGlhbCYgY3JlZGVudGlhbCkKIHsKLSNpZiAh
VVNFKENGTkVUV09SSykKICAgICBbYXV0aGVudGljYXRpb25DaGFsbGVuZ2Uuc2VuZGVyKCkgdXNl
Q3JlZGVudGlhbDpjcmVkZW50aWFsLm5zQ3JlZGVudGlhbCgpIGZvckF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlOmF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLm5zVVJMQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UoKV07Ci0jZW5kaWYKIH0KIAogdm9pZCBBdXRoZW50aWNhdGlvbk1hbmFnZXI6OnJlY2VpdmVk
UmVxdWVzdFRvQ29udGludWVXaXRob3V0Q3JlZGVudGlhbChjb25zdCBBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSYgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UpCiB7Ci0jaWYgIVVTRShDRk5FVFdPUksp
CiAgICAgW2F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLnNlbmRlcigpIGNvbnRpbnVlV2l0aG91dENy
ZWRlbnRpYWxGb3JBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTphdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZS5uc1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCldOwotI2VuZGlmCiB9CiAKIHZvaWQgQXV0
aGVudGljYXRpb25NYW5hZ2VyOjpyZWNlaXZlZENhbmNlbGxhdGlvbihjb25zdCBBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSYgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UpCiB7Ci0jaWYgIVVTRShDRk5F
VFdPUkspCiAgICAgW2F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLnNlbmRlcigpIGNhbmNlbEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlOmF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLm5zVVJMQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UoKV07Ci0jZW5kaWYKIH0KIAogdm9pZCBBdXRoZW50aWNhdGlvbk1hbmFn
ZXI6OnJlY2VpdmVkUmVxdWVzdFRvUGVyZm9ybURlZmF1bHRIYW5kbGluZyhjb25zdCBBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSYgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UpCiB7Ci0jaWYgIVVTRShD
Rk5FVFdPUkspCiAgICAgW2F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLnNlbmRlcigpIHBlcmZvcm1E
ZWZhdWx0SGFuZGxpbmdGb3JBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTphdXRoZW50aWNhdGlvbkNo
YWxsZW5nZS5uc1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCldOwotI2VuZGlmCiB9CiAKIHZv
aWQgQXV0aGVudGljYXRpb25NYW5hZ2VyOjpyZWNlaXZlZENoYWxsZW5nZVJlamVjdGlvbihjb25z
dCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UpCiB7Ci0j
aWYgIVVTRShDRk5FVFdPUkspCiAgICAgW2F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLnNlbmRlcigp
IHJlamVjdFByb3RlY3Rpb25TcGFjZUFuZENvbnRpbnVlV2l0aENoYWxsZW5nZTphdXRoZW50aWNh
dGlvbkNoYWxsZW5nZS5uc1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCldOwotI2VuZGlmCiB9
CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzTWFjLm1tCShyZXZpc2lvbiAyMDcwMzkpCisrKyBTb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvbWFjL1dlYkNvcmVBcmd1bWVudENvZGVyc01hYy5tbQkod29ya2luZyBjb3B5KQpA
QCAtMzksMTAgKzM5LDYgQEAKICNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgogI2lt
cG9ydCA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KIAotI2lmIFVTRShDRk5FVFdPUkspCi0j
aW1wb3J0IDxDRk5ldHdvcmsvQ0ZVUkxSZXF1ZXN0Lmg+Ci0jZW5kaWYKLQogI2lmIEVOQUJMRShX
SVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCiAjaW1wb3J0IDxXZWJDb3JlL0FWRm91bmRhdGlvblNQ
SS5oPgogI2ltcG9ydCA8V2ViQ29yZS9NZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dC5oPgpAQCAt
NTcsMzYgKzUzLDYgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBJUEMg
ewogCi0jaWYgVVNFKENGTkVUV09SSykKLXZvaWQgQXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlcXVl
c3Q+OjplbmNvZGVQbGF0Zm9ybURhdGEoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QpCi17Ci0gICAgUmV0YWluUHRyPENGVVJMUmVxdWVzdFJl
Zj4gcmVxdWVzdFRvU2VyaWFsaXplID0gcmVzb3VyY2VSZXF1ZXN0LmNmVVJMUmVxdWVzdChEb05v
dFVwZGF0ZUhUVFBCb2R5KTsKLQotICAgIGJvb2wgcmVxdWVzdElzUHJlc2VudCA9IHJlcXVlc3RU
b1NlcmlhbGl6ZTsKLSAgICBlbmNvZGVyIDw8IHJlcXVlc3RJc1ByZXNlbnQ7Ci0KLSAgICBpZiAo
IXJlcXVlc3RJc1ByZXNlbnQpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIFdlIGRvbid0IHNl
bmQgSFRUUCBib2R5IG92ZXIgSVBDIGZvciBiZXR0ZXIgcGVyZm9ybWFuY2UuCi0gICAgLy8gQWxz
bywgaXQncyBub3QgYWx3YXlzIHBvc3NpYmxlIHRvIGRvLCBhcyBzdHJlYW1zIGNhbiBvbmx5IGJl
IGNyZWF0ZWQgaW4gcHJvY2VzcyB0aGF0IGRvZXMgbmV0d29ya2luZy4KLSAgICBSZXRhaW5QdHI8
Q0ZEYXRhUmVmPiByZXF1ZXN0SFRUUEJvZHkgPSBhZG9wdENGKENGVVJMUmVxdWVzdENvcHlIVFRQ
UmVxdWVzdEJvZHkocmVxdWVzdFRvU2VyaWFsaXplLmdldCgpKSk7Ci0gICAgUmV0YWluUHRyPENG
UmVhZFN0cmVhbVJlZj4gcmVxdWVzdEhUVFBCb2R5U3RyZWFtID0gYWRvcHRDRihDRlVSTFJlcXVl
c3RDb3B5SFRUUFJlcXVlc3RCb2R5U3RyZWFtKHJlcXVlc3RUb1NlcmlhbGl6ZS5nZXQoKSkpOwot
ICAgIGlmIChyZXF1ZXN0SFRUUEJvZHkgfHwgcmVxdWVzdEhUVFBCb2R5U3RyZWFtKSB7Ci0gICAg
ICAgIENGTXV0YWJsZVVSTFJlcXVlc3RSZWYgbXV0YWJsZVJlcXVlc3QgPSBDRlVSTFJlcXVlc3RD
cmVhdGVNdXRhYmxlQ29weSgwLCByZXF1ZXN0VG9TZXJpYWxpemUuZ2V0KCkpOwotICAgICAgICBy
ZXF1ZXN0VG9TZXJpYWxpemUgPSBhZG9wdENGKG11dGFibGVSZXF1ZXN0KTsKLSAgICAgICAgQ0ZV
UkxSZXF1ZXN0U2V0SFRUUFJlcXVlc3RCb2R5KG11dGFibGVSZXF1ZXN0LCBuaWwpOwotICAgICAg
ICBDRlVSTFJlcXVlc3RTZXRIVFRQUmVxdWVzdEJvZHlTdHJlYW0obXV0YWJsZVJlcXVlc3QsIG5p
bCk7Ci0gICAgfQotCi0gICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gZGljdGlvbmFyeSA9
IGFkb3B0Q0YoV0tDRlVSTFJlcXVlc3RDcmVhdGVTZXJpYWxpemFibGVSZXByZXNlbnRhdGlvbihy
ZXF1ZXN0VG9TZXJpYWxpemUuZ2V0KCksIElQQzo6dG9rZW5OdWxsVHlwZVJlZigpKSk7Ci0gICAg
SVBDOjplbmNvZGUoZW5jb2RlciwgZGljdGlvbmFyeS5nZXQoKSk7Ci0KLSAgICAvLyBUaGUgZmFs
bGJhY2sgYXJyYXkgaXMgcGFydCBvZiBDRlVSTFJlcXVlc3QsIGJ1dCBpdCBpcyBub3QgZW5jb2Rl
ZCBieSBXS0NGVVJMUmVxdWVzdENyZWF0ZVNlcmlhbGl6YWJsZVJlcHJlc2VudGF0aW9uLgotICAg
IGVuY29kZXIgPDwgcmVzb3VyY2VSZXF1ZXN0LnJlc3BvbnNlQ29udGVudERpc3Bvc2l0aW9uRW5j
b2RpbmdGYWxsYmFja0FycmF5KCk7Ci0gICAgZW5jb2Rlci5lbmNvZGVFbnVtKHJlc291cmNlUmVx
dWVzdC5yZXF1ZXN0ZXIoKSk7Ci19Ci0jZWxzZQogdm9pZCBBcmd1bWVudENvZGVyPFJlc291cmNl
UmVxdWVzdD46OmVuY29kZVBsYXRmb3JtRGF0YShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCkKIHsKICAgICBSZXRhaW5QdHI8TlNVUkxSZXF1
ZXN0PiByZXF1ZXN0VG9TZXJpYWxpemUgPSByZXNvdXJjZVJlcXVlc3QubnNVUkxSZXF1ZXN0KERv
Tm90VXBkYXRlSFRUUEJvZHkpOwpAQCAtMTEyLDcgKzc4LDYgQEAgdm9pZCBBcmd1bWVudENvZGVy
PFJlc291cmNlUmVxdWVzdD46OmVuYwogICAgIGVuY29kZXIgPDwgcmVzb3VyY2VSZXF1ZXN0LnJl
c3BvbnNlQ29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5KCk7CiAgICAgZW5j
b2Rlci5lbmNvZGVFbnVtKHJlc291cmNlUmVxdWVzdC5yZXF1ZXN0ZXIoKSk7CiB9Ci0jZW5kaWYK
IAogYm9vbCBBcmd1bWVudENvZGVyPFJlc291cmNlUmVxdWVzdD46OmRlY29kZVBsYXRmb3JtRGF0
YShEZWNvZGVyJiBkZWNvZGVyLCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCkKIHsK
QEAgLTEyOSwxOSArOTQsMTEgQEAgYm9vbCBBcmd1bWVudENvZGVyPFJlc291cmNlUmVxdWVzdD46
OmRlYwogICAgIGlmICghSVBDOjpkZWNvZGUoZGVjb2RlciwgZGljdGlvbmFyeSkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAotI2lmIFVTRShDRk5FVFdPUkspCi0gICAgUmV0YWluUHRyPENGVVJM
UmVxdWVzdFJlZj4gY2ZVUkxSZXF1ZXN0ID0gYWRvcHRDRihXS0NyZWF0ZUNGVVJMUmVxdWVzdEZy
b21TZXJpYWxpemFibGVSZXByZXNlbnRhdGlvbihkaWN0aW9uYXJ5LmdldCgpLCBJUEM6OnRva2Vu
TnVsbFR5cGVSZWYoKSkpOwotICAgIGlmICghY2ZVUkxSZXF1ZXN0KQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0KLSAgICByZXNvdXJjZVJlcXVlc3QgPSBSZXNvdXJjZVJlcXVlc3QoY2ZVUkxSZXF1
ZXN0LmdldCgpKTsKLSNlbHNlCiAgICAgUmV0YWluUHRyPE5TVVJMUmVxdWVzdD4gbnNVUkxSZXF1
ZXN0ID0gV0tOU1VSTFJlcXVlc3RGcm9tU2VyaWFsaXphYmxlUmVwcmVzZW50YXRpb24oZGljdGlv
bmFyeS5nZXQoKSwgSVBDOjp0b2tlbk51bGxUeXBlUmVmKCkpOwogICAgIGlmICghbnNVUkxSZXF1
ZXN0KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICByZXNvdXJjZVJlcXVlc3QgPSBSZXNv
dXJjZVJlcXVlc3QobnNVUkxSZXF1ZXN0LmdldCgpKTsKLSNlbmRpZgogICAgIAogICAgIFZlY3Rv
cjxTdHJpbmc+IHJlc3BvbnNlQ29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5
OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzcG9uc2VDb250ZW50RGlzcG9zaXRpb25FbmNv
ZGluZ0ZhbGxiYWNrQXJyYXkpKQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYktpdDIu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjA3MDM5KQorKysgU291cmNlL1dl
YktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBA
IC0xMDUxLDcgKzEwNTEsNiBAQAogCQk1QzE0MjcwNTFDMjNGODRDMDBENDExODMgLyogRG93bmxv
YWRJRC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMx
NDI2RjcxQzIzRjg0MzAwRDQxMTgzIC8qIERvd25sb2FkSUQuaCAqLzsgfTsKIAkJNUMxNDI3MDYx
QzIzRjg0QzAwRDQxMTgzIC8qIERvd25sb2FkTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzE0MjZGODFDMjNGODQzMDBENDExODMgLyog
RG93bmxvYWRNYW5hZ2VyLmNwcCAqLzsgfTsKIAkJNUMxNDI3MDcxQzIzRjg0QzAwRDQxMTgzIC8q
IERvd25sb2FkTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNUMxNDI2RjkxQzIzRjg0MzAwRDQxMTgzIC8qIERvd25sb2FkTWFuYWdlci5oICov
OyB9OwotCQk1QzE0MjcxMTFDMjNGODlFMDBENDExODMgLyogRG93bmxvYWRJT1MubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzE0MjcwRDFDMjNGODg1
MDBENDExODMgLyogRG93bmxvYWRJT1MubW0gKi87IH07CiAJCTVDMTQyNzEyMUMyM0Y4OUUwMEQ0
MTE4MyAvKiBEb3dubG9hZE1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDVDMTQyNzBGMUMyM0Y4OTkwMEQ0MTE4MyAvKiBEb3dubG9hZE1hYy5tbSAq
LzsgfTsKIAkJNUMxNDI3MTMxQzIzRjg5RTAwRDQxMTgzIC8qIERvd25sb2FkQ29jb2EubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzE0MjcwOTFDMjNG
ODY5MDBENDExODMgLyogRG93bmxvYWRDb2NvYS5tbSAqLzsgfTsKIAkJNUMxNDI3MTgxQzIzRjhC
NzAwRDQxMTgzIC8qIEN1c3RvbVByb3RvY29sTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMxNDI3MTQxQzIzRjhCMDAwRDQxMTgzIC8qIEN1
c3RvbVByb3RvY29sTWFuYWdlci5oICovOyB9OwpAQCAtMzEzMCw3ICszMTI5LDYgQEAKIAkJNUMx
NDI2RjgxQzIzRjg0MzAwRDQxMTgzIC8qIERvd25sb2FkTWFuYWdlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBEb3dubG9hZE1hbmFnZXIuY3BwOyBwYXRoID0gTmV0
d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTVDMTQyNkY5MUMyM0Y4NDMwMEQ0MTE4MyAvKiBEb3dubG9hZE1hbmFn
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRG93bmxvYWRNYW5hZ2VyLmg7
IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDMTQyNzA5MUMyM0Y4NjkwMEQ0MTE4MyAvKiBEb3du
bG9hZENvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gRG93
bmxvYWRDb2NvYS5tbTsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9jb2NvYS9Eb3du
bG9hZENvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1QzE0MjcwRDFDMjNG
ODg1MDBENDExODMgLyogRG93bmxvYWRJT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IG5hbWUgPSBEb3dubG9hZElPUy5tbTsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL0Rvd25s
b2Fkcy9pb3MvRG93bmxvYWRJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVD
MTQyNzBGMUMyM0Y4OTkwMEQ0MTE4MyAvKiBEb3dubG9hZE1hYy5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IERvd25sb2FkTWFjLm1tOyBwYXRoID0gTmV0d29ya1By
b2Nlc3MvRG93bmxvYWRzL21hYy9Eb3dubG9hZE1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNUMxNDI3MTQxQzIzRjhCMDAwRDQxMTgzIC8qIEN1c3RvbVByb3RvY29sTWFuYWdl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBDdXN0b21Qcm90b2NvbE1hbmFn
ZXIuaDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9DdXN0b21Qcm90b2Nv
bE1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUMxNDI3MTUxQzIzRjhC
MDAwRDQxMTgzIC8qIEN1c3RvbVByb3RvY29sTWFuYWdlci5tZXNzYWdlcy5pbiAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IG5hbWUgPSBDdXN0b21Qcm90b2NvbE1hbmFnZXIubWVzc2FnZXMuaW47IHBhdGggPSBO
ZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyLm1lc3Nh
Z2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTczOCw3ICs1NzM2LDYgQEAK
IAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCiAJCQkJNUMxNDI3MDgxQzIzRjg1
MjAwRDQxMTgzIC8qIGNvY29hICovLAotCQkJCTVDMTQyNzBDMUMyM0Y4NzcwMEQ0MTE4MyAvKiBp
b3MgKi8sCiAJCQkJNUMxNDI3MEIxQzIzRjg3MTAwRDQxMTgzIC8qIG1hYyAqLywKIAkJCQk4M0JG
QUM0MDFEOTYxMzYwMDA0MzM0OTAgLyogQmxvYkRvd25sb2FkQ2xpZW50LmggKi8sCiAJCQkJODNC
RkFDNDExRDk2MTM2MDAwNDMzNDkwIC8qIEJsb2JEb3dubG9hZENsaWVudC5jcHAgKi8sCkBAIC01
Nzc5LDE0ICs1Nzc2LDYgQEAKIAkJCW5hbWUgPSBtYWM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91
cD4iOwogCQl9OwotCQk1QzE0MjcwQzFDMjNGODc3MDBENDExODMgLyogaW9zICovID0gewotCQkJ
aXNhID0gUEJYR3JvdXA7Ci0JCQljaGlsZHJlbiA9ICgKLQkJCQk1QzE0MjcwRDFDMjNGODg1MDBE
NDExODMgLyogRG93bmxvYWRJT1MubW0gKi8sCi0JCQkpOwotCQkJbmFtZSA9IGlvczsKLQkJCXNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7Ci0JCX07CiAJCTVDMTQyNzFBMUMyM0Y4QkYwMEQ0MTE4MyAv
KiBDb2NvYSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC05
MDg4LDcgKzkwNzcsNiBAQAogCQkJCTVDMTQyNzAxMUMyM0Y4NEMwMEQ0MTE4MyAvKiBEb3dubG9h
ZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBMURGNjMxMjE4RTBCN0M4MDAzQTNFMkEgLyogRG93
bmxvYWRDbGllbnQubW0gaW4gU291cmNlcyAqLywKIAkJCQk1QzE0MjcxMzFDMjNGODlFMDBENDEx
ODMgLyogRG93bmxvYWRDb2NvYS5tbSBpbiBTb3VyY2VzICovLAotCQkJCTVDMTQyNzExMUMyM0Y4
OUUwMEQ0MTE4MyAvKiBEb3dubG9hZElPUy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTVDMTQyNzEy
MUMyM0Y4OUUwMEQ0MTE4MyAvKiBEb3dubG9hZE1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTVD
MTQyNzA2MUMyM0Y4NEMwMEQ0MTE4MyAvKiBEb3dubG9hZE1hbmFnZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMUFCN0Q0Q0IxMjg4QUFBNzAwQ0ZEMDhDIC8qIERvd25sb2FkUHJveHkuY3BwIGlu
IFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjA3MDM5KQorKysgU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxNi0xMC0x
MCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAg
IFJlbW92ZSBkZWFkIG5ldHdvcmtpbmcgY29kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzMjYzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hl
ZHVsZXIuY3BwOgorICAgICAgICAoV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpzY2hlZHVsZUxv
YWQpOgorCiAyMDE2LTEwLTA2ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgog
CiAgICAgICAgIFVucmV2aWV3ZWQgYnVpbGQgZml4IHdoZW4gYnVpbGRpbmcgd2l0aCBEaXJlY3Qy
RC4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2No
ZWR1bGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYkNvcmVTdXBwb3J0L1dl
YlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAJKHJldmlzaW9uIDIwNzAzOSkKKysrIFNvdXJjZS9X
ZWJLaXQvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTQ5LDcgKzE0OSw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVy
OjpzY2hlZHVsZUwKICAgICBib29sIGhhZFJlcXVlc3RzID0gaG9zdC0+aGFzUmVxdWVzdHMoKTsK
ICAgICBob3N0LT5zY2hlZHVsZShyZXNvdXJjZUxvYWRlciwgcHJpb3JpdHkpOwogCi0jaWYgUExB
VEZPUk0oQ09DT0EpIHx8IFVTRShDRk5FVFdPUkspCisjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVT
RShDRlVSTENPTk5FQ1RJT04pCiAgICAgaWYgKFJlc291cmNlUmVxdWVzdDo6cmVzb3VyY2VQcmlv
cml0aWVzRW5hYmxlZCgpICYmICFpc1N1c3BlbmRpbmdQZW5kaW5nUmVxdWVzdHMoKSkgewogICAg
ICAgICAvLyBTZXJ2ZSBhbGwgcmVxdWVzdHMgYXQgb25jZSB0byBrZWVwIHRoZSBwaXBlbGluZSBm
dWxsIGF0IHRoZSBuZXR3b3JrIGxheWVyLgogICAgICAgICAvLyBGSVhNRTogRG9lcyB0aGlzIGNv
ZGUgZG8gYW55dGhpbmcgdXNlZnVsLCBnaXZlbiB0aGF0IHdlIGFsc28gc2V0IG1heFJlcXVlc3Rz
SW5GbGlnaHRQZXJIb3N0IHRvIGVmZmVjdGl2ZWx5IHVubGltaXRlZCBvbiB0aGVzZSBwbGF0Zm9y
bXM/CkluZGV4OiBTb3VyY2UvV2ViS2l0L2NmL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L2NmL0NoYW5nZUxvZwkocmV2aXNpb24gMjA3MDM5KQorKysgU291cmNlL1dlYktp
dC9jZi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMiBAQAorMjAxNi0xMC0x
MCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAg
IFJlbW92ZSBkZWFkIG5ldHdvcmtpbmcgY29kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzMjYzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRD
Ri5jcHA6CisKIDIwMTYtMDgtMTUgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNv
bT4KIAogICAgICAgICBSZW1vdmUgdW51c2VkIGluY2x1ZGVzIG9mIHd0ZiBoZWFkZXJzCkluZGV4
OiBTb3VyY2UvV2ViS2l0L2NmL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudENGLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2NmL1dlYkNvcmVTdXBwb3J0L1dlYkluc3Bl
Y3RvckNsaWVudENGLmNwcAkocmV2aXNpb24gMjA3MDM5KQorKysgU291cmNlL1dlYktpdC9jZi9X
ZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRDRi5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI3LDggKzI3LDggQEAKIC8vIGJlZm9yZSBpbmNsdWRpbmcgYW55IG90aGVyIGZpbGVzLiBGYWls
aW5nIHRvIGluY2x1ZGUgY29uZmlnLmggd2lsbCBsZWF2ZQogLy8gVVNFX0NGIHVuZGVmaW5lZCwg
Y2F1c2luZyBidWlsZCBmYWlsdXJlcyBpbiB0aGlzCiAvLyBmaWxlLiBCdXQgTWFjIGRvZXNuJ3Qg
aGF2ZSBhIGNvbmZpZy5oIGZvciBXZWJLaXQsIHNvIHdlIGNhbid0IGluY2x1ZGUgdGhlCi0vLyBX
aW5kb3dzIG9uZSBoZXJlLiBGb3Igbm93IHdlIGNhbiBqdXN0IGRlZmluZSBVU0VfQ0YgYW5kCi0v
LyBVU0VfQ0ZORVRXT1JLIG1hbnVhbGx5LCBidXQgd2UgbmVlZCBhIGJldHRlciBsb25nLXRlcm0g
c29sdXRpb24uCisvLyBXaW5kb3dzIG9uZSBoZXJlLiBGb3Igbm93IHdlIGNhbiBqdXN0IGRlZmlu
ZSBVU0VfQ0YgbWFudWFsbHksCisvLyBidXQgd2UgbmVlZCBhIGJldHRlciBsb25nLXRlcm0gc29s
dXRpb24uCiAjaWZuZGVmIFVTRV9DRgogI2RlZmluZSBVU0VfQ0YgMQogI2VuZGlmCkluZGV4OiBT
b3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9t
YWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMDcwMzkpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMSBAQAorMjAxNi0xMC0xMCAgQWxleCBD
aHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFJlbW92ZSBk
ZWFkIG5ldHdvcmtpbmcgY29kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTYzMjYzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBNaXNjL1dlYkRvd25sb2FkLm1tOgorICAgICAgICAoLVtXZWJEb3dubG9h
ZCBfaW5pdFdpdGhMb2FkaW5nQ0ZVUkxDb25uZWN0aW9uOnJlcXVlc3Q6cmVzcG9uc2U6ZGVsZWdh
dGU6cHJveHk6XSk6IERlbGV0ZWQuCisgICAgICAgICogTWlzYy9XZWJEb3dubG9hZEludGVybmFs
Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW06Cisg
ICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6Y29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rv
d25sb2FkKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tOgorICAgICAgICAo
K1tXZWJQcmVmZXJlbmNlcyBfc2V0Q3VycmVudE5ldHdvcmtMb2FkZXJTZXNzaW9uQ29va2llQWNj
ZXB0UG9saWN5Ol0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKC1b
V2ViVmlldyBzY2hlZHVsZUluUnVuTG9vcDpmb3JNb2RlOl0pOgorICAgICAgICAoLVtXZWJWaWV3
IHVuc2NoZWR1bGVGcm9tUnVuTG9vcDpmb3JNb2RlOl0pOgorCiAyMDE2LTEwLTEwICBEYXJpbiBB
ZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBNb3ZlIE5vdGlmaWNhdGlvbkNlbnRl
ciBmcm9tIGxlZ2FjeSB0byBuZXcgRE9NIGV4Y2VwdGlvbnMKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
bWFjL01pc2MvV2ViRG93bmxvYWQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMv
TWlzYy9XZWJEb3dubG9hZC5tbQkocmV2aXNpb24gMjA3MDM5KQorKysgU291cmNlL1dlYktpdC9t
YWMvTWlzYy9XZWJEb3dubG9hZC5tbQkod29ya2luZyBjb3B5KQpAQCAtNDAsMTEgKzQwLDYgQEAK
IAogI2ltcG9ydCAiV2ViVHlwZXNJbnRlcm5hbC5oIgogCi0jaWYgVVNFKENGTkVUV09SSykKLSNp
bXBvcnQgPENGTmV0d29yay9DRk5ldHdvcmsuaD4KLSNpbXBvcnQgPENGTmV0d29yay9DRlVSTENv
bm5lY3Rpb24uaD4KLSNlbmRpZgotCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogQGNsYXNz
IE5TVVJMQ29ubmVjdGlvbkRlbGVnYXRlUHJveHk7CkBAIC02MSwxNCArNTYsNiBAQCAtIChpZClf
aW5pdFdpdGhSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyCiAgICAgICAgICAgICAgIGRlbGVnYXRl
OihpZClkZWxlZ2F0ZQogICAgICAgICAgICAgIGRpcmVjdG9yeTooTlNTdHJpbmcgKilkaXJlY3Rv
cnk7CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotLSAoaWQpX2luaXRXaXRoTG9hZGluZ0NGVVJMQ29u
bmVjdGlvbjooQ0ZVUkxDb25uZWN0aW9uUmVmKWNvbm5lY3Rpb24KLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJlcXVlc3Q6KENGVVJMUmVxdWVzdFJlZilyZXF1ZXN0Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlOihDRlVSTFJlc3BvbnNlUmVmKXJlc3BvbnNlCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGVnYXRlOihpZClkZWxlZ2F0ZQotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBwcm94eTooTlNVUkxDb25uZWN0aW9uRGVsZWdhdGVQ
cm94eSAqKXByb3h5OwotI2VuZGlmCi0KIEBlbmQKIAogQGludGVyZmFjZSBXZWJEb3dubG9hZElu
dGVybmFsIDogTlNPYmplY3QgPE5TVVJMRG93bmxvYWREZWxlZ2F0ZT4KQEAgLTIzMSwxOCArMjE4
LDYgQEAgLSAoaWQpX2luaXRXaXRoTG9hZGluZ0Nvbm5lY3Rpb246KE5TVVJMQwogICAgIHJldHVy
biBbc3VwZXIgX2luaXRXaXRoTG9hZGluZ0Nvbm5lY3Rpb246Y29ubmVjdGlvbiByZXF1ZXN0OnJl
cXVlc3QgcmVzcG9uc2U6cmVzcG9uc2UgZGVsZWdhdGU6X3dlYkludGVybmFsIHByb3h5OnByb3h5
XTsKIH0KIAotI2lmIFVTRShDRk5FVFdPUkspCi0tIChpZClfaW5pdFdpdGhMb2FkaW5nQ0ZVUkxD
b25uZWN0aW9uOihDRlVSTENvbm5lY3Rpb25SZWYpY29ubmVjdGlvbgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmVxdWVzdDooQ0ZVUkxSZXF1ZXN0UmVmKXJlcXVlc3QKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2U6KENGVVJMUmVzcG9uc2VSZWYpcmVzcG9uc2UK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZWdhdGU6KGlkKWRlbGVnYXRlCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3h5OihOU1VSTENvbm5lY3Rpb25EZWxlZ2F0
ZVByb3h5ICopcHJveHkKLXsKLSAgICBbc2VsZiBfc2V0UmVhbERlbGVnYXRlOmRlbGVnYXRlXTsK
LSAgICByZXR1cm4gW3N1cGVyIF9pbml0V2l0aExvYWRpbmdDRlVSTENvbm5lY3Rpb246Y29ubmVj
dGlvbiByZXF1ZXN0OnJlcXVlc3QgcmVzcG9uc2U6cmVzcG9uc2UgZGVsZWdhdGU6X3dlYkludGVy
bmFsIHByb3h5OnByb3h5XTsKLX0KLSNlbmRpZgotCiAtIChpZClfaW5pdFdpdGhSZXF1ZXN0OihO
U1VSTFJlcXVlc3QgKilyZXF1ZXN0CiAgICAgICAgICAgICAgIGRlbGVnYXRlOihpZClkZWxlZ2F0
ZQogICAgICAgICAgICAgIGRpcmVjdG9yeTooTlNTdHJpbmcgKilkaXJlY3RvcnkKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViRG93bmxvYWRJbnRlcm5hbC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViRG93bmxvYWRJbnRlcm5hbC5oCShyZXZpc2lvbiAy
MDcwMzkpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYkRvd25sb2FkSW50ZXJuYWwuaAko
d29ya2luZyBjb3B5KQpAQCAtMjcsMTAgKzI3LDYgQEAKICovCiAgCiAjaW1wb3J0IDxXZWJLaXRM
ZWdhY3kvV2ViRG93bmxvYWQuaD4KLQotI2lmIFVTRShDRk5FVFdPUkspCi0jaW1wb3J0IDxDRk5l
dHdvcmsvQ0ZVUkxDb25uZWN0aW9uLmg+Ci0jZW5kaWYKICAKIEBpbnRlcmZhY2UgV2ViRG93bmxv
YWQgKFdlYkRvd25sb2FkQ3JlYXRpb24pCiArKGlkKV9kb3dubG9hZFdpdGhMb2FkaW5nQ29ubmVj
dGlvbjooTlNVUkxDb25uZWN0aW9uICopY29ubmVjdGlvbgpAQCAtNDMsMTIgKzM5LDQgQEAgQGlu
dGVyZmFjZSBXZWJEb3dubG9hZCAoV2ViRG93bmxvYWRDcmVhdAogICAgICAgICAgICAgICAgICBk
ZWxlZ2F0ZTooaWQpZGVsZWdhdGUKICAgICAgICAgICAgICAgICBkaXJlY3Rvcnk6KE5TU3RyaW5n
ICopZGlyZWN0b3J5OwogCi0jaWYgVVNFKENGTkVUV09SSykKLSsgKGlkKV9kb3dubG9hZFdpdGhM
b2FkaW5nQ0ZVUkxDb25uZWN0aW9uOihDRlVSTENvbm5lY3Rpb25SZWYpY29ubmVjdGlvbgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Q6KENGVVJMUmVxdWVzdFJlZily
ZXF1ZXN0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZTooQ0ZVUkxS
ZXNwb25zZVJlZilyZXNwb25zZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVs
ZWdhdGU6KGlkKWRlbGVnYXRlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw
cm94eTooaWQpcHJveHk7Ci0jZW5kaWYKLQogQGVuZApJbmRleDogU291cmNlL1dlYktpdC9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0JKHJl
dmlzaW9uIDIwNzAzOSkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMDQsMTMgKzMwNCw3IEBAIHZv
aWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNvbnZlcnRNYWluUmUKIAogICAgIFJlc291cmNlSGFu
ZGxlKiBoYW5kbGUgPSBtYWluUmVzb3VyY2VMb2FkZXItPmhhbmRsZSgpOwogCi0jaWYgVVNFKENG
TkVUV09SSykKLSAgICBBU1NFUlQoW1dlYkRvd25sb2FkIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2Vs
ZWN0b3IoX2Rvd25sb2FkV2l0aExvYWRpbmdDRlVSTENvbm5lY3Rpb246cmVxdWVzdDpyZXNwb25z
ZTpkZWxlZ2F0ZTpwcm94eTopXSk7Ci0gICAgYXV0byBjb25uZWN0aW9uID0gaGFuZGxlLT5yZWxl
YXNlQ29ubmVjdGlvbkZvckRvd25sb2FkKCk7Ci0gICAgW1dlYkRvd25sb2FkIF9kb3dubG9hZFdp
dGhMb2FkaW5nQ0ZVUkxDb25uZWN0aW9uOmNvbm5lY3Rpb24uZ2V0KCkgcmVxdWVzdDpyZXF1ZXN0
LmNmVVJMUmVxdWVzdChVcGRhdGVIVFRQQm9keSkgcmVzcG9uc2U6cmVzcG9uc2UuY2ZVUkxSZXNw
b25zZSgpIGRlbGVnYXRlOlt3ZWJWaWV3IGRvd25sb2FkRGVsZWdhdGVdIHByb3h5Om5pbF07Ci0j
ZWxzZQogICAgIFtXZWJEb3dubG9hZCBfZG93bmxvYWRXaXRoTG9hZGluZ0Nvbm5lY3Rpb246aGFu
ZGxlLT5jb25uZWN0aW9uKCkgcmVxdWVzdDpyZXF1ZXN0Lm5zVVJMUmVxdWVzdChVcGRhdGVIVFRQ
Qm9keSkgcmVzcG9uc2U6cmVzcG9uc2UubnNVUkxSZXNwb25zZSgpIGRlbGVnYXRlOlt3ZWJWaWV3
IGRvd25sb2FkRGVsZWdhdGVdIHByb3h5Om5pbF07Ci0jZW5kaWYKIH0KIAogYm9vbCBXZWJGcmFt
ZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUoRG9j
dW1lbnRMb2FkZXIqIGxvYWRlciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgaW50IGxlbmd0aCkKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbQkocmV2aXNpb24gMjA3MDM5KQor
KysgU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbQkod29ya2luZyBj
b3B5KQpAQCAtMTgwMCw3ICsxODAwLDcgQEAgKyAodm9pZClfY2xlYXJOZXR3b3JrTG9hZGVyU2Vz
c2lvbgogKyAodm9pZClfc2V0Q3VycmVudE5ldHdvcmtMb2FkZXJTZXNzaW9uQ29va2llQWNjZXB0
UG9saWN5OihOU0hUVFBDb29raWVBY2NlcHRQb2xpY3kpcG9saWN5CiB7CiAgICAgUmV0YWluUHRy
PENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGNvb2tpZVN0b3JhZ2UgPSBOZXR3b3JrU3RvcmFnZVNl
c3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpLmNvb2tpZVN0b3JhZ2UoKTsKLSAgICBBU1NF
UlQoY29va2llU3RvcmFnZSk7IC8vIFdpbGwgZmFpbCB3aGVuIGJ1aWxkaW5nIHdpdGhvdXQgVVNF
KENGTkVUV09SSykgYW5kIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3dpdGNoVG9OZXdUZXN0aW5n
U2Vzc2lvbigpIHdhcyBub3QgY2FsbGVkIGJlZm9yZWhhbmQuCisgICAgQVNTRVJUKGNvb2tpZVN0
b3JhZ2UpOyAvLyBXaWxsIGZhaWwgd2hlbiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN3aXRjaFRv
TmV3VGVzdGluZ1Nlc3Npb24oKSB3YXMgbm90IGNhbGxlZCBiZWZvcmVoYW5kLgogICAgIENGSFRU
UENvb2tpZVN0b3JhZ2VTZXRDb29raWVBY2NlcHRQb2xpY3koY29va2llU3RvcmFnZS5nZXQoKSwg
cG9saWN5KTsKIH0KIApJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQkocmV2
aXNpb24gMjA3MDM5KQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCSh3
b3JraW5nIGNvcHkpCkBAIC02Nzc5LDI0ICs2Nzc5LDE0IEBAIC0gKGlkKWNhbmRpZGF0ZUxpc3QK
IAogLSAodm9pZClzY2hlZHVsZUluUnVuTG9vcDooTlNSdW5Mb29wICopcnVuTG9vcCBmb3JNb2Rl
OihOU1N0cmluZyAqKW1vZGUKIHsKLSNpZiBVU0UoQ0ZORVRXT1JLKQotICAgIENGUnVuTG9vcFJl
ZiBzY2hlZHVsZVBhaXJSdW5Mb29wID0gW3J1bkxvb3AgZ2V0Q0ZSdW5Mb29wXTsKLSNlbHNlCi0g
ICAgTlNSdW5Mb29wICpzY2hlZHVsZVBhaXJSdW5Mb29wID0gcnVuTG9vcDsKLSNlbmRpZgogICAg
IGlmIChydW5Mb29wICYmIG1vZGUpCi0gICAgICAgIGNvcmUoc2VsZiktPmFkZFNjaGVkdWxlUGFp
cihTY2hlZHVsZVBhaXI6OmNyZWF0ZShzY2hlZHVsZVBhaXJSdW5Mb29wLCAoQ0ZTdHJpbmdSZWYp
bW9kZSkpOworICAgICAgICBjb3JlKHNlbGYpLT5hZGRTY2hlZHVsZVBhaXIoU2NoZWR1bGVQYWly
OjpjcmVhdGUocnVuTG9vcCwgKENGU3RyaW5nUmVmKW1vZGUpKTsKIH0KIAogLSAodm9pZCl1bnNj
aGVkdWxlRnJvbVJ1bkxvb3A6KE5TUnVuTG9vcCAqKXJ1bkxvb3AgZm9yTW9kZTooTlNTdHJpbmcg
Kiltb2RlCiB7Ci0jaWYgVVNFKENGTkVUV09SSykKLSAgICBDRlJ1bkxvb3BSZWYgc2NoZWR1bGVQ
YWlyUnVuTG9vcCA9IFtydW5Mb29wIGdldENGUnVuTG9vcF07Ci0jZWxzZQotICAgIE5TUnVuTG9v
cCAqc2NoZWR1bGVQYWlyUnVuTG9vcCA9IHJ1bkxvb3A7Ci0jZW5kaWYKICAgICBpZiAocnVuTG9v
cCAmJiBtb2RlKQotICAgICAgICBjb3JlKHNlbGYpLT5yZW1vdmVTY2hlZHVsZVBhaXIoU2NoZWR1
bGVQYWlyOjpjcmVhdGUoc2NoZWR1bGVQYWlyUnVuTG9vcCwgKENGU3RyaW5nUmVmKW1vZGUpKTsK
KyAgICAgICAgY29yZShzZWxmKS0+cmVtb3ZlU2NoZWR1bGVQYWlyKFNjaGVkdWxlUGFpcjo6Y3Jl
YXRlKHJ1bkxvb3AsIChDRlN0cmluZ1JlZiltb2RlKSk7CiB9CiAKIHN0YXRpYyBCT09MIGZpbmRT
dHJpbmcoTlNWaWV3IDxXZWJEb2N1bWVudFNlYXJjaGluZz4gKnNlYXJjaFZpZXcsIE5TU3RyaW5n
ICpzdHJpbmcsIFdlYkZpbmRPcHRpb25zIG9wdGlvbnMpCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dp
bi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCShy
ZXZpc2lvbiAyMDcwMzkpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwzNiBAQAorMjAxNi0xMC0xMCAgQWxleCBDaHJpc3RlbnNlbiAgPGFj
aHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFJlbW92ZSBkZWFkIG5ldHdvcmtpbmcg
Y29kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYz
MjYzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBE
ZWZhdWx0RG93bmxvYWREZWxlZ2F0ZS5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpzYXZl
UGxhdGZvcm1EYXRhVG9DYWNoZWRGcmFtZSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVOZXR3b3JraW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJGcmFtZU5ldHdvcmtpbmdD
b250ZXh0OjplbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKToKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lmg6CisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcDoKKyAgICAgICAgKiBXZWJEb3dubG9hZC5o
OgorICAgICAgICAqIFdlYkVycm9yLmNwcDoKKyAgICAgICAgKFdlYkVycm9yOjpsb2NhbGl6ZWRE
ZXNjcmlwdGlvbik6CisgICAgICAgIChXZWJFcnJvcjo6c3NsUGVlckNlcnRpZmljYXRlKToKKyAg
ICAgICAgKiBXZWJFcnJvci5oOgorICAgICAgICAqIFdlYk11dGFibGVVUkxSZXF1ZXN0LmNwcDoK
KyAgICAgICAgKFdlYk11dGFibGVVUkxSZXF1ZXN0OjptdXRhYmxlQ29weSk6CisgICAgICAgICog
V2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuY3BwOgorICAgICAgICAoV2ViVVJMQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2U6OmluaXRXaXRoUHJvdGVjdGlvblNwYWNlKToKKyAgICAgICAgKFdl
YlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjppbml0V2l0aEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlKToKKyAgICAgICAgKiBXZWJVUkxSZXNwb25zZS5jcHA6CisgICAgICAgIChXZWJVUkxSZXNw
b25zZTo6c3NsUGVlckNlcnRpZmljYXRlKToKKyAgICAgICAgKiBXZWJVUkxSZXNwb25zZS5oOgor
ICAgICAgICAqIFdlYlZpZXcuY3BwOgorICAgICAgICAoV2ViVmlldzo6c2V0Q2FjaGVNb2RlbCk6
CisgICAgICAgIChXZWJWaWV3OjpjYW5IYW5kbGVSZXF1ZXN0KToKKyAgICAgICAgKFdlYlZpZXc6
Om5vdGlmeVByZWZlcmVuY2VzQ2hhbmdlZCk6CisgICAgICAgICh1cGRhdGVTaGFyZWRTZXR0aW5n
c0Zyb21QcmVmZXJlbmNlc0lmTmVlZGVkKToKKwogMjAxNi0xMC0wOSAgV2Vuc29uIEhzaWVoICA8
d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBTdXBwb3J0IElucHV0RXZlbnQuaW5w
dXRUeXBlIGZvciB0aGUgbmV3IElucHV0RXZlbnQgc3BlYwpJbmRleDogU291cmNlL1dlYktpdC93
aW4vRGVmYXVsdERvd25sb2FkRGVsZWdhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L3dpbi9EZWZhdWx0RG93bmxvYWREZWxlZ2F0ZS5oCShyZXZpc2lvbiAyMDcwMzkpCisrKyBTb3Vy
Y2UvV2ViS2l0L3dpbi9EZWZhdWx0RG93bmxvYWREZWxlZ2F0ZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yOCw3ICsyOCw3IEBACiAjaW5jbHVkZSAiV2ViS2l0LmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hT
ZXQuaD4KIAotI2lmIFVTRShDRk5FVFdPUkspCisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKICNp
bmNsdWRlIDxDRk5ldHdvcmsvQ0ZVUkxEb3dubG9hZFByaXYuaD4KICNlbmRpZgogCkluZGV4OiBT
b3VyY2UvV2ViS2l0L3dpbi9XZWJEb3dubG9hZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvd2luL1dlYkRvd25sb2FkLmgJKHJldmlzaW9uIDIwNzAzOSkKKysrIFNvdXJjZS9XZWJLaXQv
d2luL1dlYkRvd25sb2FkLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDE1ICsyMywxNCBAQAogICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCiAgKi8KIAotI2lmbmRlZiBXZWJEb3dubG9hZF9oCi0jZGVmaW5lIFdlYkRv
d25sb2FkX2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiV2ViS2l0LmgiCiAjaW5jbHVkZSA8
V2ViQ29yZS9DT01QdHIuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQorI2lmIFVTRShDRlVS
TENPTk5FQ1RJT04pCiAjaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGVVJMRG93bmxvYWRQcml2Lmg+CiAj
ZWxpZiBVU0UoQ1VSTCkKICNpbmNsdWRlIDxXZWJDb3JlL0N1cmxEb3dubG9hZC5oPgpAQCAtODQs
NyArODMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IGNvbnRpbnVlV2l0aG91dENyZWRlbnRpYWxGb3JBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShfSW5f
b3B0XyBJV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UqKTsKICAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgdXNlQ3JlZGVudGlhbChfSW5fb3B0XyBJV2ViVVJMQ3JlZGVu
dGlhbCosIF9Jbl9vcHRfIElXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSopOwogCi0jaWYg
VVNFKENGTkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogICAgIC8vIENGVVJMRG93
bmxvYWQgQ2FsbGJhY2tzCiAgICAgdm9pZCBkaWRTdGFydCgpOwogICAgIENGVVJMUmVxdWVzdFJl
ZiB3aWxsU2VuZFJlcXVlc3QoQ0ZVUkxSZXF1ZXN0UmVmLCBDRlVSTFJlc3BvbnNlUmVmKTsKQEAg
LTEwOSw3ICsxMDgsNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICBXVEY6OlN0cmluZyBtX2Rlc3RpbmF0
aW9uOwogICAgIFdURjo6U3RyaW5nIG1fYnVuZGxlUGF0aDsKLSNpZiBVU0UoQ0ZORVRXT1JLKQor
I2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAgICAgUmV0YWluUHRyPENGVVJMRG93bmxvYWRSZWY+
IG1fZG93bmxvYWQ7CiAjZWxpZiBVU0UoQ1VSTCkKICAgICBSZWZQdHI8V2ViQ29yZTo6Q3VybERv
d25sb2FkPiBtX2Rvd25sb2FkOwpAQCAtMTIzLDYgKzEyMiwzIEBAIHByb3RlY3RlZDoKICAgICBp
bnQgbV9yZWNlaXZlZDsKICNlbmRpZgogfTsKLQotCi0jZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvd2luL1dlYkVycm9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJF
cnJvci5jcHAJKHJldmlzaW9uIDIwNzAzOSkKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYkVycm9y
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNyBAQAogI2luY2x1ZGUgPENvcmVHcmFw
aGljcy9Db3JlR3JhcGhpY3MuaD4KICNlbmRpZgogCi0jaWYgVVNFKENGTkVUV09SSykKKyNpZiBV
U0UoQ0ZVUkxDT05ORUNUSU9OKQogI2luY2x1ZGUgPFdlYktpdFN5c3RlbUludGVyZmFjZS9XZWJL
aXRTeXN0ZW1JbnRlcmZhY2UuaD4KICNlbmRpZgogCkBAIC0xMzUsNyArMTM1LDcgQEAgSFJFU1VM
VCBXZWJFcnJvcjo6bG9jYWxpemVkRGVzY3JpcHRpb24oXwogCiAgICAgKnJlc3VsdCA9IEJTdHJp
bmcobV9lcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbigpKS5yZWxlYXNlKCk7CiAKLSNpZiBVU0Uo
Q0ZORVRXT1JLKQorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAgICAgaWYgKCEqcmVzdWx0KSB7
CiAgICAgICAgIGlmIChpbnQgY29kZSA9IG1fZXJyb3IuZXJyb3JDb2RlKCkpCiAgICAgICAgICAg
ICAqcmVzdWx0ID0gQlN0cmluZyh3a0NGTmV0d29ya0Vycm9yR2V0TG9jYWxpemVkRGVzY3JpcHRp
b24oY29kZSkpLnJlbGVhc2UoKTsKQEAgLTIxOSw3ICsyMTksNyBAQCBIUkVTVUxUIFdlYkVycm9y
Ojpzc2xQZWVyQ2VydGlmaWNhdGUoX091CiAgICAgICAgIHJldHVybiBFX1BPSU5URVI7CiAgICAg
KnJlc3VsdCA9IDA7CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQorI2lmIFVTRShDRlVSTENPTk5FQ1RJ
T04pCiAgICAgaWYgKCFtX2NmRXJyb3JVc2VySW5mb0RpY3QpIHsKICAgICAgICAgLy8gY29weSB1
c2VyaW5mbyBmcm9tIENGRXJyb3JSZWYKICAgICAgICAgQ0ZFcnJvclJlZiBjZkVycm9yID0gbV9l
cnJvcjsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYkVycm9yLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC93aW4vV2ViRXJyb3IuaAkocmV2aXNpb24gMjA3MDM5KQorKysgU291cmNl
L1dlYktpdC93aW4vV2ViRXJyb3IuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsOCArMjMsNyBAQAog
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCiAgKi8KIAotI2lmbmRlZiBXZWJFcnJvcl9oCi0jZGVmaW5lIFdlYkVy
cm9yX2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiV2ViS2l0LmgiCiAjaW5jbHVkZSA8V2Vi
Q29yZS9DT01QdHIuaD4KQEAgLTY2LDEwICs2NSw4IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAg
VUxPTkcgbV9yZWZDb3VudCB7IDAgfTsKICAgICBDT01QdHI8SVByb3BlcnR5QmFnPiBtX3VzZXJJ
bmZvOwotI2lmIFVTRShDRk5FVFdPUkspCisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKICAgICBS
ZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBtX2NmRXJyb3JVc2VySW5mb0RpY3Q7CiAjZW5kaWYK
ICAgICBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIG1fZXJyb3I7CiB9OwotCi0jZW5kaWYKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvd2luL1dlYk11dGFibGVVUkxSZXF1ZXN0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJNdXRhYmxlVVJMUmVxdWVzdC5jcHAJKHJldmlzaW9uIDIw
NzAzOSkKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYk11dGFibGVVUkxSZXF1ZXN0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDAsNyArNDAsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvQ2VydGlmaWNh
dGVDRldpbi5oPgogI2VuZGlmCiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQorI2lmIFVTRShDRlVSTENP
Tk5FQ1RJT04pCiAjaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGVVJMUmVxdWVzdFByaXYuaD4KICNlbmRp
ZgogCkBAIC0zODIsNyArMzgyLDcgQEAgSFJFU1VMVCBXZWJNdXRhYmxlVVJMUmVxdWVzdDo6bXV0
YWJsZUNvcAogICAgIGlmICghcmVzdWx0KQogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwogCi0j
aWYgVVNFKENGTkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogICAgIFJldGFpblB0
cjxDRk11dGFibGVVUkxSZXF1ZXN0UmVmPiBtdXRhYmxlUmVxdWVzdCA9IGFkb3B0Q0YoQ0ZVUkxS
ZXF1ZXN0Q3JlYXRlTXV0YWJsZUNvcHkoa0NGQWxsb2NhdG9yRGVmYXVsdCwgbV9yZXF1ZXN0LmNm
VVJMUmVxdWVzdChVcGRhdGVIVFRQQm9keSkpKTsKICAgICAqcmVzdWx0ID0gY3JlYXRlSW5zdGFu
Y2UoUmVzb3VyY2VSZXF1ZXN0KG11dGFibGVSZXF1ZXN0LmdldCgpKSk7CiAgICAgcmV0dXJuIFNf
T0s7CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViVVJMQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UuY3BwCShyZXZpc2lvbiAyMDcwMzkpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9X
ZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0MSw3
ICsxNDEsNyBAQCBIUkVTVUxUIFdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjppCiAKICAg
ICAvLyBGSVhNRTogQWZ0ZXIgd2UgY2hhbmdlIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIHRvIHVz
ZSAiUmVzb3VyY2VIYW5kbGUiIGFzIHRoZSBhYnN0cmFjdCAiU2VuZGVyIiBvciAiU291cmNlIG9m
IHRoaXMgQXV0aCBDaGFsbGVuZ2UiLCB0aGVuIHdlJ2xsCiAgICAgLy8gY29uc3RydWN0IHRoZSBB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSB3aXRoIHRoYXQgYXMgb2J0YWluZWQgZnJvbSB0aGUgd2Vi
U2VuZGVyCi0jaWYgVVNFKENGTkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogICAg
IG1fYXV0aGVudGljYXRpb25DaGFsbGVuZ2UgPSBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSh3ZWJT
cGFjZS0+cHJvdGVjdGlvblNwYWNlKCksIHdlYkNyZWRlbnRpYWwtPmNyZWRlbnRpYWwoKSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXZpb3VzRmFpbHVyZUNvdW50LCB3
ZWJSZXNwb25zZS0+cmVzb3VyY2VSZXNwb25zZSgpLCB3ZWJFcnJvci0+cmVzb3VyY2VFcnJvcigp
KTsKICNlbmRpZgpAQCAtMTYyLDcgKzE2Miw3IEBAIEhSRVNVTFQgV2ViVVJMQXV0aGVudGljYXRp
b25DaGFsbGVuZ2U6OmkKICAgICBpZiAoIXdlYlNlbmRlcikKICAgICAgICAgcmV0dXJuIEVfTk9J
TlRFUkZBQ0U7CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04p
CiAgICAgbV9hdXRoZW50aWNhdGlvbkNoYWxsZW5nZSA9IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
KHdlYkNoYWxsZW5nZS0+YXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKS5jZlVSTEF1dGhDaGFsbGVu
Z2VSZWYoKSwgd2ViU2VuZGVyLT5hdXRoZW50aWNhdGlvbkNsaWVudCgpKTsKIAogICAgIHJldHVy
biBTX09LOwpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViVVJMUmVzcG9uc2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYlVSTFJlc3BvbnNlLmNwcAkocmV2aXNpb24g
MjA3MDM5KQorKysgU291cmNlL1dlYktpdC93aW4vV2ViVVJMUmVzcG9uc2UuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zNSw3ICszNSw3IEBACiAjaW5jbHVkZSA8Q29yZUdyYXBoaWNzL0NvcmVHcmFw
aGljcy5oPgogI2VuZGlmCiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQorI2lmIFVTRShDRlVSTENPTk5F
Q1RJT04pCiAjaW5jbHVkZSA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlL1dlYktpdFN5c3RlbUludGVy
ZmFjZS5oPgogI2VuZGlmCiAKQEAgLTQwNiw3ICs0MDYsNyBAQCBIUkVTVUxUIFdlYlVSTFJlc3Bv
bnNlOjpzc2xQZWVyQ2VydGlmaWNhCiAgICAgICAgIHJldHVybiBFX1BPSU5URVI7CiAgICAgKnJl
c3VsdCA9IDA7CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04p
CiAgICAgQ0ZEaWN0aW9uYXJ5UmVmIGRpY3QgPSBjZXJ0aWZpY2F0ZURpY3Rpb25hcnkoKTsKICAg
ICBpZiAoIWRpY3QpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CkBAIC00NzUsNyArNDc1LDcgQEAg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgV2ViVVJMUmVzcG9uc2U6OgogICAgIHJldHVybiBtX3Jl
c3BvbnNlOwogfQogCi0jaWYgVVNFKENGTkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9O
KQogQ0ZEaWN0aW9uYXJ5UmVmIFdlYlVSTFJlc3BvbnNlOjpjZXJ0aWZpY2F0ZURpY3Rpb25hcnko
KSBjb25zdAogewogICAgIGlmIChtX1NTTENlcnRpZmljYXRlSW5mbykKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvd2luL1dlYlVSTFJlc3BvbnNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93
aW4vV2ViVVJMUmVzcG9uc2UuaAkocmV2aXNpb24gMjA3MDM5KQorKysgU291cmNlL1dlYktpdC93
aW4vV2ViVVJMUmVzcG9uc2UuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsOCArMjMsNyBAQAogICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCiAgKi8KIAotI2lmbmRlZiBXZWJVUkxSZXNwb25zZV9ICi0jZGVmaW5lIFdl
YlVSTFJlc3BvbnNlX0gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiV2ViS2l0LmgiCiAjaW5j
bHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+CkBAIC02Niw3ICs2NSw3IEBAIHB1Ymxp
YzoKIHByb3RlY3RlZDoKICAgICBIUkVTVUxUIHN1Z2dlc3RlZEZpbGVFeHRlbnNpb24oQlNUUiog
cmVzdWx0KTsKIAotI2lmIFVTRShDRk5FVFdPUkspCisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikK
ICAgICBDRkRpY3Rpb25hcnlSZWYgY2VydGlmaWNhdGVEaWN0aW9uYXJ5KCkgY29uc3Q7CiAjZW5k
aWYKIApAQCAtNzQsOSArNzMsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgVUxPTkcgbV9yZWZDb3VudCB7
IDAgfTsKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIG1fcmVzcG9uc2U7CiAKLSNpZiBV
U0UoQ0ZORVRXT1JLKQorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAgICAgbXV0YWJsZSBSZXRh
aW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBtX1NTTENlcnRpZmljYXRlSW5mbzsgICAgLy8gdGhpcyBl
bnN1cmVzIGNlcnRpZmljYXRlIGNvbnRleHRzIGFyZSB2YWxpZCBmb3IgdGhlIGxpZmV0aW1lIG9m
IHRoaXMgV2ViVVJMUmVzcG9uc2UuCiAjZW5kaWYKIH07Ci0KLSNlbmRpZgpJbmRleDogU291cmNl
L1dlYktpdC93aW4vV2ViVmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4v
V2ViVmlldy5jcHAJKHJldmlzaW9uIDIwNzAzOSkKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYlZp
ZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzgsNyArMTc4LDcgQEAKICNpbmNsdWRlIDxDb3Jl
Rm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oPgogI2VuZGlmCiAKLSNpZiBVU0UoQ0ZORVRXT1JL
KQorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAjaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGVVJMQ2Fj
aGVQcml2Lmg+CiAjaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGVVJMUHJvdG9jb2xQcml2Lmg+CiAjaW5j
bHVkZSA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlL1dlYktpdFN5c3RlbUludGVyZmFjZS5oPgpAQCAt
NDk3LDcgKzQ5Nyw3IEBAIHZvaWQgV2ViVmlldzo6c2V0Q2FjaGVNb2RlbChXZWJDYWNoZU1vZGUK
IAogICAgIFN0cmluZyBjYWNoZURpcmVjdG9yeTsKIAotI2lmIFVTRShDRk5FVFdPUkspCisjaWYg
VVNFKENGVVJMQ09OTkVDVElPTikKICAgICBSZXRhaW5QdHI8Q0ZVUkxDYWNoZVJlZj4gY2Z1cmxD
YWNoZSA9IGFkb3B0Q0YoQ0ZVUkxDYWNoZUNvcHlTaGFyZWRVUkxDYWNoZSgpKTsKICAgICBSZXRh
aW5QdHI8Q0ZTdHJpbmdSZWY+IGNmdXJsQ2FjaGVEaXJlY3RvcnkgPSBhZG9wdENGKHdrQ29weUZv
dW5kYXRpb25DYWNoZURpcmVjdG9yeSgwKSk7CiAgICAgaWYgKCFjZnVybENhY2hlRGlyZWN0b3J5
KSB7CkBAIC01NTEsNyArNTUxLDcgQEAgdm9pZCBXZWJWaWV3OjpzZXRDYWNoZU1vZGVsKFdlYkNh
Y2hlTW9kZQogICAgICAgICAvLyBNZW1vcnkgY2FjaGUgY2FwYWNpdHkgKGluIGJ5dGVzKQogICAg
ICAgICBjYWNoZU1lbW9yeUNhcGFjaXR5ID0gMDsKIAotI2lmIFVTRShDRk5FVFdPUkspCisjaWYg
VVNFKENGVVJMQ09OTkVDVElPTikKICAgICAgICAgLy8gRm91bmRhdGlvbiBkaXNrIGNhY2hlIGNh
cGFjaXR5IChpbiBieXRlcykKICAgICAgICAgY2FjaGVEaXNrQ2FwYWNpdHkgPSBDRlVSTENhY2hl
RGlza0NhcGFjaXR5KGNmdXJsQ2FjaGUuZ2V0KCkpOwogI2VuZGlmCkBAIC02NzUsNyArNjc1LDcg
QEAgdm9pZCBXZWJWaWV3OjpzZXRDYWNoZU1vZGVsKFdlYkNhY2hlTW9kZQogICAgIG1lbW9yeUNh
Y2hlLnNldERlYWREZWNvZGVkRGF0YURlbGV0aW9uSW50ZXJ2YWwoZGVhZERlY29kZWREYXRhRGVs
ZXRpb25JbnRlcnZhbCk7CiAgICAgUGFnZUNhY2hlOjpzaW5nbGV0b24oKS5zZXRNYXhTaXplKHBh
Z2VDYWNoZVNpemUpOwogCi0jaWYgVVNFKENGTkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNU
SU9OKQogICAgIC8vIERvbid0IHNocmluayBhIGJpZyBkaXNrIGNhY2hlLCBzaW5jZSB0aGF0IHdv
dWxkIGNhdXNlIGNodXJuLgogICAgIGNhY2hlRGlza0NhcGFjaXR5ID0gbWF4KGNhY2hlRGlza0Nh
cGFjaXR5LCBDRlVSTENhY2hlRGlza0NhcGFjaXR5KGNmdXJsQ2FjaGUuZ2V0KCkpKTsKIApAQCAt
MTU0Nyw3ICsxNTQ3LDcgQEAgdm9pZCBXZWJWaWV3OjpjbG9zZVdpbmRvdygpCiAKIGJvb2wgV2Vi
Vmlldzo6Y2FuSGFuZGxlUmVxdWVzdChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QpCiB7Ci0jaWYgVVNFKENGTkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQog
ICAgIC8vIE9uIHRoZSBNYWMgdGhlcmUncyBhbiBhYm91dCBVUkwgcHJvdG9jb2wgaW1wbGVtZW50
YXRpb24gYnV0IFdpbmRvd3MgQ0ZOZXR3b3JrIGRvZXNuJ3QgaGF2ZSB0aGF0LgogICAgIGlmIChy
ZXF1ZXN0LnVybCgpLnByb3RvY29sSXMoImFib3V0IikpCiAgICAgICAgIHJldHVybiB0cnVlOwpA
QCAtNTI2MSw3ICs1MjYxLDcgQEAgSFJFU1VMVCBXZWJWaWV3Ojpub3RpZnlQcmVmZXJlbmNlc0No
YW5nZQogICAgIGhyID0gcHJlZmVyZW5jZXMtPnByaXZhdGVCcm93c2luZ0VuYWJsZWQoJmVuYWJs
ZWQpOwogICAgIGlmIChGQUlMRUQoaHIpKQogICAgICAgICByZXR1cm4gaHI7Ci0jaWYgUExBVEZP
Uk0oV0lOKSB8fCBVU0UoQ0ZORVRXT1JLKQorI2lmIFBMQVRGT1JNKFdJTikgfHwgVVNFKENGVVJM
Q09OTkVDVElPTikKICAgICBpZiAoZW5hYmxlZCkKICAgICAgICAgV2ViRnJhbWVOZXR3b3JraW5n
Q29udGV4dDo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpOwogICAgIGVsc2UKQEAgLTU1
NjAsNyArNTU2MCw3IEBAIEhSRVNVTFQgdXBkYXRlU2hhcmVkU2V0dGluZ3NGcm9tUHJlZmVyZW4K
ICAgICBpZiAoRkFJTEVEKGhyKSkKICAgICAgICAgcmV0dXJuIGhyOwogCi0jaWYgVVNFKENGTkVU
V09SSykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogICAgIFdlYkZyYW1lTmV0d29ya2luZ0Nv
bnRleHQ6OnNldENvb2tpZUFjY2VwdFBvbGljeUZvckFsbENvbnRleHRzKGFjY2VwdFBvbGljeSk7
CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAkocmV2aXNpb24gMjA3MDM5KQorKysg
U291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC05NzQsNyArOTc0LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNs
aWVudDo6c2V0VGl0bGUoY29ucwogCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpzYXZlUGxh
dGZvcm1EYXRhVG9DYWNoZWRGcmFtZShDYWNoZWRGcmFtZSogY2FjaGVkRnJhbWUpCiB7Ci0jaWYg
VVNFKENGTkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogICAgIEZyYW1lKiBjb3Jl
RnJhbWUgPSBjb3JlKG1fd2ViRnJhbWUpOwogICAgIGlmICghY29yZUZyYW1lKQogICAgICAgICBy
ZXR1cm47CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZU5l
dHdvcmtpbmdDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmNwcAkocmV2aXNpb24gMjA3MDM5
KQorKysgU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVOZXR3b3JraW5n
Q29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAKICNpbmNsdWRlIDxX
ZWJDb3JlL1NldHRpbmdzLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKLSNp
ZiBVU0UoQ0ZORVRXT1JLKQorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAjaW5jbHVkZSA8Q0ZO
ZXR3b3JrL0NGSFRUUENvb2tpZXNQcml2Lmg+CiAjaW5jbHVkZSA8V2ViS2l0U3lzdGVtSW50ZXJm
YWNlL1dlYktpdFN5c3RlbUludGVyZmFjZS5oPgogI2VuZGlmCkBAIC00Nyw3ICs0Nyw3IEBAIHN0
YXRpYyBTdHJpbmcmIGlkZW50aWZpZXJCYXNlKCkKICAgICByZXR1cm4gYmFzZTsKIH0KIAotI2lm
IFVTRShDRk5FVFdPUkspCisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKIHZvaWQgV2ViRnJhbWVO
ZXR3b3JraW5nQ29udGV4dDo6c2V0Q29va2llQWNjZXB0UG9saWN5Rm9yQWxsQ29udGV4dHMoV2Vi
S2l0Q29va2llU3RvcmFnZUFjY2VwdFBvbGljeSBwb2xpY3kpCiB7CiAgICAgaWYgKFJldGFpblB0
cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBjb29raWVTdG9yYWdlID0gTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKS5jb29raWVTdG9yYWdlKCkpCkBAIC02Nyw3
ICs2Nyw3IEBAIHZvaWQgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6c2V0UHJpdmEKIAogTmV0
d29ya1N0b3JhZ2VTZXNzaW9uJiBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVQcml2
YXRlQnJvd3NpbmdTZXNzaW9uKCkKIHsKLSNpZiBVU0UoQ0ZORVRXT1JLKQorI2lmIFVTRShDRlVS
TENPTk5FQ1RJT04pCiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAogICAgIGlmIChhdXRv
IHByaXZhdGVTZXNzaW9uID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihT
ZXNzaW9uSUQ6OmxlZ2FjeVByaXZhdGVTZXNzaW9uSUQoKSkpCkluZGV4OiBTb3VyY2UvV2ViS2l0
L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVOZXR3b3JraW5n
Q29udGV4dC5oCShyZXZpc2lvbiAyMDcwMzkpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTIy
LDggKzIyLDcgQEAKICAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KICAqLwotI2lmbmRlZiBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0X2gKLSNkZWZp
bmUgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dF9oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUg
PFdlYkNvcmUvRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oPgogCkBAIC0zNCw3ICszMyw3IEBAIHB1
YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJGcmFtZU5ldHdvcmtpbmdDb250
ZXh0KGZyYW1lKSk7CiAgICAgfQogCi0jaWYgVVNFKENGTkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxD
T05ORUNUSU9OKQogICAgIHN0YXRpYyB2b2lkIHNldENvb2tpZUFjY2VwdFBvbGljeUZvckFsbENv
bnRleHRzKFdlYktpdENvb2tpZVN0b3JhZ2VBY2NlcHRQb2xpY3kpOwogI2VuZGlmCiAgICAgc3Rh
dGljIHZvaWQgc2V0UHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb25JZGVudGlmaWVyQmFzZShj
b25zdCBTdHJpbmcmKTsKQEAgLTUwLDUgKzQ5LDMgQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yIGJsb2NrZWRFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
KSBjb25zdCBvdmVycmlkZTsKICAgICBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHN0
b3JhZ2VTZXNzaW9uKCkgY29uc3Qgb3ZlcnJpZGU7CiB9OwotCi0jZW5kaWYKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1T
dHJhdGVnaWVzLmNwcAkocmV2aXNpb24gMjA3MDM5KQorKysgU291cmNlL1dlYktpdC93aW4vV2Vi
Q29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzMsNyArMzMsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZS5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvUGFnZUdyb3VwLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybUNvb2tpZUphci5oPgot
I2lmIFVTRShDRk5FVFdPUkspCisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKICNpbmNsdWRlIDxX
ZWJLaXRTeXN0ZW1JbnRlcmZhY2UvV2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+CiAjZW5kaWYKIApJ
bmRleDogU291cmNlL2NtYWtlL09wdGlvbnNBcHBsZVdpbi5jbWFrZQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvY21ha2UvT3B0aW9uc0FwcGxlV2luLmNtYWtlCShyZXZpc2lvbiAyMDcwMzkpCisrKyBT
b3VyY2UvY21ha2UvT3B0aW9uc0FwcGxlV2luLmNtYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0yLDcg
KzIsNyBAQCBpbmNsdWRlKE9wdGlvbnNXaW4pCiAKIHNldChVU0VfQ0cgMSkKIHNldChVU0VfQ0Eg
MSkKLXNldChVU0VfQ0ZORVRXT1JLIDEpCitzZXQoVVNFX0NGVVJMQ09OTkVDVElPTiAxKQogc2V0
KFVTRV9JQ1VfVU5JQ09ERSAxKQogCiAjIFVuY29tbWVudCB0aGUgZm9sbG93aW5nIGxpbmUgdG8g
dHJ5IHRoZSBEaXJlY3QyRCBiYWNrZW5kLgpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjA3MDM5KQorKysgVG9vbHMvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTYtMTAtMTAgIEFsZXggQ2hy
aXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZW1vdmUgZGVh
ZCBuZXR3b3JraW5nIGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE2MzI2MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUuaDoKKyAgICAgICAgKiBE
dW1wUmVuZGVyVHJlZS9jb25maWcuaDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93aW4vRHVt
cFJlbmRlclRyZWUuY3BwOgorICAgICAgICAobWFpbik6CisKIDIwMTYtMTAtMTAgIENvbW1pdCBR
dWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJv
bGxpbmcgb3V0IHIyMDY5NzIuCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVy
VHJlZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVl
LmgJKHJldmlzaW9uIDIwNzAzOSkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJU
cmVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDEzICsyNiw3IEBACiAgKiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICov
CiAKLSNpZm5kZWYgRHVtcFJlbmRlclRyZWVfaAotI2RlZmluZSBEdW1wUmVuZGVyVHJlZV9oCi0K
LS8vIEZJWE1FOiBSZW1vdmUgdGhpcyB3aGVuIGFsbCBwbGF0Zm9ybXMgYXJlIHVzaW5nIGNvbmZp
Zy5oCi0jaWZuZGVmIENvbmZpZ19ICi0jaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+Ci0jZW5kaWYK
KyNwcmFnbWEgb25jZQogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAjaW5jbHVkZSAiRHVtcFJlbmRl
clRyZWVNYWMuaCIKQEAgLTQ1LDYgKzM5LDcgQEAKICNlbmRpZgogCiAjaW5jbHVkZSA8c3RyaW5n
PgorI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAog
I2lmICFPUyhPUEVOQlNEKQpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvY29uZmlnLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvY29uZmlnLmgJKHJldmlzaW9uIDIwNzAz
OSkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2NvbmZpZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
OCw3ICsxOCw3IEBACiAgKgogICovCiAKLSNkZWZpbmUgQ29uZmlnX0gKKyNwcmFnbWEgb25jZQog
CiAjaWYgZGVmaW5lZChIQVZFX0NPTkZJR19IKSAmJiBIQVZFX0NPTkZJR19IICYmIGRlZmluZWQo
QlVJTERJTkdfV0lUSF9DTUFLRSkKICNpbmNsdWRlICJjbWFrZWNvbmZpZy5oIgpAQCAtNDQsNyAr
NDQsNyBAQAogI2RlZmluZSBVU0VfQ1VSTCAxCiAjZWxzZQogI2RlZmluZSBVU0VfQ0cgMQotI2Rl
ZmluZSBVU0VfQ0ZORVRXT1JLIDEKKyNkZWZpbmUgVVNFX0NGVVJMQ09OTkVDVElPTiAxCiAjZW5k
aWYKIAogI3VuZGVmIF9XSU4zMl9XSU5OVApJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvd2lu
L0R1bXBSZW5kZXJUcmVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS93
aW4vRHVtcFJlbmRlclRyZWUuY3BwCShyZXZpc2lvbiAyMDcwMzkpCisrKyBUb29scy9EdW1wUmVu
ZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MSw3ICs2
MSw3IEBACiAjaW5jbHVkZSA8V2ViS2l0L1dlYktpdC5oPgogI2luY2x1ZGUgPFdlYktpdC9XZWJL
aXRDT01BUEkuaD4KIAotI2lmIFVTRShDRk5FVFdPUkspCisjaWYgVVNFKENGVVJMQ09OTkVDVElP
TikKICNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZIVFRQQ29va2llc1ByaXYuaD4KICNpbmNsdWRlIDxD
Rk5ldHdvcmsvQ0ZVUkxDYWNoZVByaXYuaD4KICNlbmRpZgpAQCAtMTI4Nyw3ICsxMjg3LDcgQEAg
SVdlYlZpZXcqIGNyZWF0ZVdlYlZpZXdBbmRPZmZzY3JlZW5XaW5kbwogICAgIHJldHVybiB3ZWJW
aWV3OwogfQogCi0jaWYgVVNFKENGTkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQog
UmV0YWluUHRyPENGVVJMQ2FjaGVSZWY+IHNoYXJlZENGVVJMQ2FjaGUoKQogewogI2lmbmRlZiBE
RUJVR19BTEwKQEAgLTE0NjUsNyArMTQ2NSw3IEBAIGludCBtYWluKGludCBhcmdjLCBjb25zdCBj
aGFyKiBhcmd2W10pCiAgICAgaWYgKEZBSUxFRCh3ZWJWaWV3LT5tYWluRnJhbWUoJmZyYW1lKSkp
CiAgICAgICAgIHJldHVybiAtNzsKIAotI2lmIFVTRShDRk5FVFdPUkspCisjaWYgVVNFKENGVVJM
Q09OTkVDVElPTikKICAgICBSZXRhaW5QdHI8Q0ZVUkxDYWNoZVJlZj4gdXJsQ2FjaGUgPSBzaGFy
ZWRDRlVSTENhY2hlKCk7CiAgICAgQ0ZVUkxDYWNoZVJlbW92ZUFsbENhY2hlZFJlc3BvbnNlcyh1
cmxDYWNoZS5nZXQoKSk7CiAjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>291232</attachid>
            <date>2016-10-10 22:52:15 -0700</date>
            <delta_ts>2016-10-11 08:23:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-163263-20161010224854.patch</filename>
            <type>text/plain</type>
            <size>192238</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDIwNzAz
OSkKKysrIENoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDE2LTEw
LTEwICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgUmVtb3ZlIGRlYWQgbmV0d29ya2luZyBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjMyNjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFNvdXJjZS9jbWFrZS9PcHRpb25zQXBwbGVXaW4uY21h
a2U6CisKIDIwMTYtMTAtMTAgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3Jn
PgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyMDY5NzIuCkluZGV4OiBTb3Vy
Y2UvV1RGL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL0NoYW5nZUxvZwkocmV2
aXNpb24gMjA3MDM5KQorKysgU291cmNlL1dURi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwxNCBAQAorMjAxNi0xMC0xMCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNl
bkB3ZWJraXQub3JnPgorCisgICAgICAgIFJlbW92ZSBkZWFkIG5ldHdvcmtpbmcgY29kZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzMjYzCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvUGxhdGZv
cm0uaDoKKyAgICAgICAgKiB3dGYvU2NoZWR1bGVQYWlyLmg6CisgICAgICAgICogd3RmL1NjaGVk
dWxlUGFpck1hYy5tbToKKwogMjAxNi0xMC0xMCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVh
QGdtYWlsLmNvbT4KIAogICAgICAgICBbRE9NSklUXSBJbXBsZW1lbnQgTm9kZSBhY2Nlc3NvcnMg
aW4gRE9NSklUCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgJKHJldmlzaW9uIDIwNzAzOSkKKysrIFNvdXJjZS9X
VEYvd3RmL1BsYXRmb3JtLmgJKHdvcmtpbmcgY29weSkKQEAgLTU1OSwxMCArNTU5LDYgQEAKIAog
I2lmIFBMQVRGT1JNKElPUykKIAotI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspICYmIF9fSVBI
T05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTAwMDAwCi0jZGVmaW5lIFVTRV9DRk5FVFdP
UksgMQotI2VuZGlmCi0KICNkZWZpbmUgSEFWRV9ORVRXT1JLX0VYVEVOU0lPTiAxCiAjZGVmaW5l
IEhBVkVfUkVBRExJTkUgMQogI2RlZmluZSBVU0VfVUlLSVRfRURJVElORyAxCkBAIC01OTIsMTAg
KzU4OCwxMCBAQAogI2VuZGlmCiAKICNpZiBQTEFURk9STShXSU4pICYmICFVU0UoV0lOR0RJKSAm
JiAhUExBVEZPUk0oV0lOX0NBSVJPKQotI2RlZmluZSBVU0VfQ0ZORVRXT1JLIDEKKyNkZWZpbmUg
VVNFX0NGVVJMQ09OTkVDVElPTiAxCiAjZW5kaWYKIAotI2lmIFVTRShDRk5FVFdPUkspIHx8IFBM
QVRGT1JNKENPQ09BKQorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pIHx8IFBMQVRGT1JNKENPQ09B
KQogI2RlZmluZSBVU0VfQ0ZVUkxDQUNIRSAxCiAjZW5kaWYKIApAQCAtOTUxLDkgKzk0Nyw2IEBA
CiAjZGVmaW5lIFVTRV9QUk9URUNUSU9OX1NQQUNFX0FVVEhfQ0FMTEJBQ0sgMQogI2VuZGlmCiAK
LS8qIFNldCB1cCBhIGRlZmluZSBmb3IgYSBjb21tb24gZXJyb3IgdGhhdCBpcyBpbnRlbmRlZCB0
byBjYXVzZSBhIGJ1aWxkIGVycm9yIC0tIHRodXMgdGhlIHNwYWNlIGFmdGVyIEVycm9yLiAqLwot
I2RlZmluZSBXVEZfUExBVEZPUk1fQ0ZORVRXT1JLIEVycm9yIFVTRV9tYWNyb19zaG91bGRfYmVf
dXNlZF93aXRoX0NGTkVUV09SSwotCiAjaWYgUExBVEZPUk0oQ09DT0EpICYmIEhBVkUoQUNDRVNT
SUJJTElUWSkKICNkZWZpbmUgVVNFX0FDQ0VTU0lCSUxJVFlfQ09OVEVYVF9NRU5VUyAxCiAjZW5k
aWYKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1NjaGVkdWxlUGFpci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XVEYvd3RmL1NjaGVkdWxlUGFpci5oCShyZXZpc2lvbiAyMDcwMzkpCisrKyBTb3VyY2Uv
V1RGL3d0Zi9TY2hlZHVsZVBhaXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQAog
I2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KIAotI2lmIFBMQVRGT1JNKENPQ09BKSAmJiAhVVNFKENGTkVUV09SSykKKyNpZiBQ
TEFURk9STShDT0NPQSkKIE9CSkNfQ0xBU1MgTlNSdW5Mb29wOwogI2VuZGlmCiAKQEAgLTQ1LDcg
KzQ1LDcgQEAgY2xhc3MgU2NoZWR1bGVQYWlyIDogcHVibGljIFRocmVhZFNhZmVSZQogcHVibGlj
OgogICAgIHN0YXRpYyBSZWY8U2NoZWR1bGVQYWlyPiBjcmVhdGUoQ0ZSdW5Mb29wUmVmIHJ1bkxv
b3AsIENGU3RyaW5nUmVmIG1vZGUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2NoZWR1bGVQYWly
KHJ1bkxvb3AsIG1vZGUpKTsgfQogCi0jaWYgUExBVEZPUk0oQ09DT0EpICYmICFVU0UoQ0ZORVRX
T1JLKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHN0YXRpYyBSZWY8U2NoZWR1bGVQYWlyPiBj
cmVhdGUoTlNSdW5Mb29wKiBydW5Mb29wLCBDRlN0cmluZ1JlZiBtb2RlKSB7IHJldHVybiBhZG9w
dFJlZigqbmV3IFNjaGVkdWxlUGFpcihydW5Mb29wLCBtb2RlKSk7IH0KICAgICBOU1J1bkxvb3Aq
IG5zUnVuTG9vcCgpIGNvbnN0IHsgcmV0dXJuIG1fbnNSdW5Mb29wLmdldCgpOyB9CiAjZW5kaWYK
QEAgLTYzLDcgKzYzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIG1fbW9kZSA9IGFkb3B0Q0Yo
Q0ZTdHJpbmdDcmVhdGVDb3B5KDAsIG1vZGUpKTsKICAgICB9CiAKLSNpZiBQTEFURk9STShDT0NP
QSkgJiYgIVVTRShDRk5FVFdPUkspCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgV1RGX0VYUE9S
VF9QUklWQVRFIFNjaGVkdWxlUGFpcihOU1J1bkxvb3AqLCBDRlN0cmluZ1JlZik7CiAgICAgUmV0
YWluUHRyPE5TUnVuTG9vcCo+IG1fbnNSdW5Mb29wOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV1RG
L3d0Zi9TY2hlZHVsZVBhaXJNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvU2No
ZWR1bGVQYWlyTWFjLm1tCShyZXZpc2lvbiAyMDcwMzkpCisrKyBTb3VyY2UvV1RGL3d0Zi9TY2hl
ZHVsZVBhaXJNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTI5LDggKzI5LDYgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJTY2hlZHVsZVBhaXIuaCIKIAotI2lmICFVU0UoQ0ZORVRX
T1JLKQotCiBuYW1lc3BhY2UgV1RGIHsKIAogU2NoZWR1bGVQYWlyOjpTY2hlZHVsZVBhaXIoTlNS
dW5Mb29wKiBydW5Mb29wLCBDRlN0cmluZ1JlZiBtb2RlKQpAQCAtNDIsNSArNDAsMyBAQCBTY2hl
ZHVsZVBhaXI6OlNjaGVkdWxlUGFpcihOU1J1bkxvb3AqIHJ1CiB9CiAKIH0gLy8gbmFtZXNwYWNl
Ci0KLSNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjA3MDM5KQorKysgU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTY3IEBACisyMDE2LTEw
LTEwICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgUmVtb3ZlIGRlYWQgbmV0d29ya2luZyBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjMyNjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUaGVyZSBhcmUgbm8gbW9yZSBDb2NvYSBwbGF0Zm9ybXMg
dXNpbmcgQ0ZVUkxDb25uZWN0aW9uLgorICAgICAgICBVU0UoQ0ZORVRXT1JLKSBpcyBiZWluZyBy
ZXBsYWNlZCBieSBVU0UoQ0ZVUkxDT05ORUNUSU9OKSBhbmQgaXQgaXMgb25seSB1c2VkIG9uIHRo
ZSBBcHBsZVdpbiBwb3J0LgorCisgICAgICAgIE5vIGNoYW5nZSBpbiBiZWhhdmlvci4KKworICAg
ICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJD
b3JlUHJlZml4Lmg6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmg6CisgICAgICAg
ICogbG9hZGVyL0VtcHR5Q2xpZW50cy5oOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlckNs
aWVudC5oOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
KToKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIv
U3VicmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvY2YvUmVzb3VyY2VMb2FkZXJD
Rk5ldC5jcHA6CisgICAgICAgICogbG9hZGVyL2NvY29hL1N1YnJlc291cmNlTG9hZGVyQ29jb2Eu
bW06CisgICAgICAgIChXZWJDb3JlOjpTdWJyZXNvdXJjZUxvYWRlcjo6d2lsbENhY2hlUmVzcG9u
c2UpOiBEZWxldGVkLgorICAgICAgICAqIGxvYWRlci9tYWMvRG9jdW1lbnRMb2FkZXJNYWMuY3Bw
OgorICAgICAgICAqIGxvYWRlci9tYWMvUmVzb3VyY2VMb2FkZXJNYWMubW06CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6d2lsbENhY2hlUmVzcG9uc2UpOiBEZWxldGVkLgorICAg
ICAgICAqIHBhZ2UvbWFjL1BhZ2VNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpwbGF0
Zm9ybUluaXRpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6YWRkU2NoZWR1bGVQYWly
KToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnJlbW92ZVNjaGVkdWxlUGFpcik6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakM6OnNob3VsZFdhaXRGb3JSZXNwb25zZVRvQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29yZU5TVVJMQXV0aGVudGljYXRpb25D
aGFsbGVuZ2VDbGllbnQ6OmNyZWF0ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXZWJD
b3JlTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUNsaWVudDo6V2ViQ29yZU5TVVJMQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2VDbGllbnQpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL21h
Yy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9O
ZXR3b3JrU3RvcmFnZVNlc3Npb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Byb3Rl
Y3Rpb25TcGFjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUHJvdGVjdGlvblNwYWNl
QmFzZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5jcHA6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlSGFuZGxlQ2xpZW50Ojp3aWxsQ2FjaGVSZXNwb25zZSk6CisgICAgICAgIChXZWJD
b3JlOjpSZXNvdXJjZUhhbmRsZUNsaWVudDo6c2hvdWxkQ2FjaGVSZXNwb25zZSk6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmg6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUludGVybmFsOjpSZXNvdXJjZUhhbmRsZUludGVybmFsKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvQXV0aGVudGljYXRpb25DRi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTo6QXV0aGVudGljYXRpb25DaGFsbGVu
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQ0YpOgorICAgICAgICAoV2ViQ29yZTo6Y29y
ZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9BdXRoZW50aWNhdGlvbkNGLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvQ29va2llSmFyQ0ZOZXQuY3BwOgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvQ3JlZGVudGlhbFN0b3JhZ2VDRk5ldC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDcmVkZW50aWFsU3RvcmFnZTo6Z2V0RnJvbVBlcnNpc3RlbnRTdG9yYWdl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNyZWRlbnRpYWxTdG9yYWdlOjpzYXZlVG9QZXJzaXN0ZW50
U3RvcmFnZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9Mb2FkZXJS
dW5Mb29wQ0YuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvTG9hZGVyUnVuTG9v
cENGLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Np
b25DRk5ldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNv
b2tpZVN0b3JhZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvUHJvdGVjdGlvblNw
YWNlQ0ZOZXQuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvUHJvdGVjdGlvblNw
YWNlQ0ZOZXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3Iu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHA6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnNob3VsZFNuaWZmQ29ubmVjdGlvblByb3BlcnR5KToKKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpjcmVhdGVDRlVSTENvbm5lY3Rpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OnN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlJl
c291cmNlSGFuZGxlOjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OnRyeUhhbmRsZVBhc3N3b3JkQmFzZWRBdXRoZW50
aWNhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRDcmVk
ZW50aWFsKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpzY2hlZHVsZSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6dW5zY2hlZHVsZSk6IERl
bGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJM
Q29ubmVjdGlvbkRlbGVnYXRlLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jl
c291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3Bl
cmF0aW9uUXVldWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDRlVSTENv
bm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZTo6c2V0dXBSZXF1ZXN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3Bl
cmF0aW9uUXVldWU6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlOjpjYW5S
ZXNwb25kVG9Qcm90ZWN0aW9uU3BhY2UpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2Yv
UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5o
OgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Lmg6CisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q6OmVuY29kaW5nUmVxdWlyZXNQbGF0Zm9ybURh
dGEpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6ZmluZENGVVJMUmVxdWVzdENvcHlDb250ZW50RGlzcG9z
aXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXlGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUGxhdGZvcm1SZXF1ZXN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVQbGF0Zm9ybUhUVFBCb2R5KToKKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVSZXNvdXJjZVJlcXVlc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0OjpzZXRTdG9yYWdlU2Vzc2lvbik6CisgICAg
ICAgIChXZWJDb3JlOjpmaW5kQ0ZVUkxSZXF1ZXN0U2V0Q29udGVudERpc3Bvc2l0aW9uRW5jb2Rp
bmdGYWxsYmFja0FycmF5RnVuY3Rpb24pOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL2NmL1Jlc291cmNlUmVzcG9uc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2U6OlJlc291cmNlUmVzcG9uc2UpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2Yv
UmVzb3VyY2VSZXNwb25zZUNGTmV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2U6OmNmVVJMUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZTo6cGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm8pOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
Y2YvU3luY2hyb25vdXNMb2FkZXJDbGllbnRDRk5ldC5jcHA6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9jZi9TeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdh
dGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJM
Q29ubmVjdGlvbkRlbGVnYXRlOjpzZXR1cFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3lu
Y2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlOjpzZXR1cENvbm5l
Y3Rpb25TY2hlZHVsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OmFkanVzdE1JTUVUeXBlSWZOZWNl
c3NhcnkpOgorICAgICAgICAoV2ViQ29yZTo6U3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJM
Q29ubmVjdGlvbkRlbGVnYXRlOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29y
ZTo6U3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlOjp3aWxs
Q2FjaGVSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpTeW5jaHJvbm91c1Jlc291cmNlSGFu
ZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OmNhblJlc3BvbmRUb1Byb3RlY3Rpb25TcGFjZSk6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9TeW5jaHJvbm91c1Jlc291cmNlSGFuZGxl
Q0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2Nv
Y29hL0NyZWRlbnRpYWxDb2NvYS5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2Ev
Q3JlZGVudGlhbENvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6Q3JlZGVudGlhbDo6Q3JlZGVu
dGlhbCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDcmVkZW50aWFsOjpjZkNyZWRlbnRp
YWwpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvUHJvdGVjdGlv
blNwYWNlQ29jb2EuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Byb3RlY3Rp
b25TcGFjZUNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6UHJvdGVjdGlvblNwYWNlOjpQcm90
ZWN0aW9uU3BhY2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UHJvdGVjdGlvblNwYWNl
OjpjZlNwYWNlKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jl
c291cmNlUmVxdWVzdENvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
Ojpuc1VSTFJlcXVlc3QpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3Vy
Y2VSZXNwb25zZUNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZTo6
cGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm8pOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZTo6bnNVUkxSZXNwb25zZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlOjpSZXNvdXJjZVJlc3BvbnNlKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL2lvcy9RdWlja0xvb2suaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2lv
cy9RdWlja0xvb2subW06CisgICAgICAgICgtW1dlYlF1aWNrTG9va0hhbmRsZUFzRGVsZWdhdGUg
aW5pdFdpdGhDb25uZWN0aW9uRGVsZWdhdGU6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYlF1
aWNrTG9va0hhbmRsZUFzRGVsZWdhdGUgY29ubmVjdGlvbjpkaWRSZWNlaXZlRGF0YUFycmF5Ol0p
OiBEZWxldGVkLgorICAgICAgICAoLVtXZWJRdWlja0xvb2tIYW5kbGVBc0RlbGVnYXRlIGNvbm5l
Y3Rpb246ZGlkUmVjZWl2ZURhdGE6bGVuZ3RoUmVjZWl2ZWQ6XSk6IERlbGV0ZWQuCisgICAgICAg
ICgtW1dlYlF1aWNrTG9va0hhbmRsZUFzRGVsZWdhdGUgY29ubmVjdGlvbkRpZEZpbmlzaExvYWRp
bmc6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYlF1aWNrTG9va0hhbmRsZUFzRGVsZWdhdGUg
Y29ubmVjdGlvbjpkaWRGYWlsV2l0aEVycm9yOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtXZWJR
dWlja0xvb2tIYW5kbGVBc0RlbGVnYXRlIGRldGFjaEhhbmRsZV0pOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6UXVpY2tMb29rSGFuZGxlOjpjcmVhdGUpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6UXVpY2tMb29rSGFuZGxlOjpjZlJlc3BvbnNlKTogRGVsZXRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL2lvcy9SZXNvdXJjZUhhbmRsZUlPUy5tbTogUmVtb3ZlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2lvcy9SZXNvdXJjZVJlcXVlc3RJT1MubW06IFJlbW92
ZWQuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvQXV0aGVudGljYXRpb25NYWMubW06
CisgICAgICAgICgtW1dlYkNvcmVBdXRoZW50aWNhdGlvbkNsaWVudEFzQ2hhbGxlbmdlU2VuZGVy
IHNldENGQ2hhbGxlbmdlOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtXZWJDb3JlQXV0aGVudGlj
YXRpb25DbGllbnRBc0NoYWxsZW5nZVNlbmRlciBjZkNoYWxsZW5nZV0pOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6Y29yZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjptYWMpOiBE
ZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL0Nvb2tpZUphck1hYy5tbToK
KyAgICAgICAgKFdlYkNvcmU6OnNldENvb2tpZXNGcm9tRE9NKToKKyAgICAgICAgKFdlYkNvcmU6
OmNvb2tpZVN0b3JhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6YWRkQ29va2llKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9DcmVkZW50aWFsU3RvcmFnZU1hYy5tbToKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9Gb3JtRGF0YVN0cmVhbU1hYy5oOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvbWFjL0Zvcm1EYXRhU3RyZWFtTWFjLm1tOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvbWFjL1Jlc291cmNlRXJyb3JNYWMubW06CisgICAgICAgIChOU0Vycm9yRnJv
bUNGRXJyb3IpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VFcnJvcjo6UmVz
b3VyY2VFcnJvcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUVycm9yOjpu
c0Vycm9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlRXJyb3I6Om9wZXJh
dG9yIE5TRXJyb3IgKik6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMv
UmVzb3VyY2VIYW5kbGVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6
Y29udGludWVXaWxsQ2FjaGVSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhh
bmRsZTo6Z2V0Q29ubmVjdGlvblRpbWluZ0RhdGEpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvbWFjL1Jlc291cmNlUmVxdWVzdE1hYy5tbTogUmVtb3ZlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9TeW5jaHJvbm91c0xvYWRlckNsaWVudC5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OlN5bmNocm9ub3VzTG9hZGVyQ2xpZW50OjpwbGF0Zm9ybUJhZFJlc3BvbnNl
RXJyb3IpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhh
bmRsZUFzRGVsZWdhdGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3Jl
UmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlLm1tOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
bWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5oOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0
aW9uUXVldWVEZWxlZ2F0ZS5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJD
b3JlVVJMUmVzcG9uc2UubW06CisgICAgICAgIChXZWJDb3JlOjpzeW50aGVzaXplUmVkaXJlY3RS
ZXNwb25zZUlmTmVjZXNzYXJ5KToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vVGVtcG9yYXJ5TGlu
a1N0dWJzLmNwcDoKKyAgICAgICAgKiB0ZXN0aW5nL2pzL1dlYkNvcmVUZXN0U3VwcG9ydFByZWZp
eC5oOgorCiAyMDE2LTEwLTEwICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAg
ICAgICAgVXBkYXRlIEdhbWVwYWRFdmVudCB0byBzdG9wIHVzaW5nIGxlZ2FjeSBbQ29uc3RydWN0
b3JUZW1wbGF0ZT1FdmVudF0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmVQcmVmaXguaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlUHJlZml4LmgJKHJldmlzaW9uIDIw
NzAzOSkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmVQcmVmaXguaAkod29ya2luZyBjb3B5KQpA
QCAtMTgsNyArMTgsNyBAQAogICoKICAqLwogCi0vKiBUaGlzIHByZWZpeCBmaWxlIHNob3VsZCBj
b250YWluIG9ubHk6IAorLyogVGhpcyBwcmVmaXggZmlsZSBzaG91bGQgY29udGFpbiBvbmx5Ogog
ICogICAgMSkgZmlsZXMgdG8gcHJlY29tcGlsZSBmb3IgZmFzdGVyIGJ1aWxkcwogICogICAgMikg
aW4gb25lIGNhc2UgYXQgbGVhc3Q6IE9TLVgtc3BlY2lmaWMgcGVyZm9ybWFuY2UgYnVnIHdvcmth
cm91bmRzCiAgKiAgICAzKSB0aGUgc3BlY2lhbCB0cmljayB0byBjYXRjaCB1cyB1c2luZyBuZXcg
b3IgZGVsZXRlIHdpdGhvdXQgaW5jbHVkaW5nICJjb25maWcuaCIKQEAgLTEzMyw4ICsxMzMsOCBA
QAogI2Vsc2UKIAogI2lmIE9TKFdJTkRPV1MpCi0jaWYgVVNFKENHKQogCisjaWYgVVNFKENHKQog
Ly8gRklYTUUgPHJkYXI6Ly9wcm9ibGVtLzgyMDg4Njg+IFJlbW92ZSBzdXBwb3J0IGZvciBvYnNv
bGV0ZSBDb2xvclN5bmMgQVBJLCBDb3JlU2VydmljZXMgaGVhZGVyIGluIENvcmVHcmFwaGljcwog
Ly8gV2UgY2FuIHJlbW92ZSB0aGlzIG9uY2UgdGhlIG5ldyBDb2xvclN5bmMgQVBJcyBhcmUgYXZh
aWxhYmxlIGluIGFuIGludGVybmFsIFNhZmFyaSBTREsuCiAjaW5jbHVkZSA8Q29sb3JTeW5jL0Nv
bG9yU3luYy5oPgpAQCAtMTQzLDE5ICsxNDMsMjEgQEAKICNkZWZpbmUgT0JTT0xFVEVfQ09MT1JT
WU5DX0FQSQogI2VuZGlmCiAjZW5kaWYKLSNpZiBVU0UoQ0ZORVRXT1JLKQotLyogV2luZG93cyBk
b2Vzbid0IGluY2x1ZGUgQ0ZOZXR3b3JrLmggdmlhIENvcmVTZXJ2aWNlcy5oLCBzbyB3ZSBkbwot
ICAgaXQgZXhwbGljaXRseSBoZXJlIHRvIG1ha2UgV2luZG93cyBtb3JlIGNvbnNpc3RlbnQgd2l0
aCBNYWMuICovCisKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogI2luY2x1ZGUgPENGTmV0d29y
ay9DRk5ldHdvcmsuaD4KIC8vIE9uIFdpbmRvd3MsIGRpc3BhdGNoLmggbmVlZHMgdG8gYmUgaW5j
bHVkZWQgYmVmb3JlIGNlcnRhaW4gQ0ZOZXR3b3JrIGhlYWRlcnMuCiAjaW5jbHVkZSA8ZGlzcGF0
Y2gvZGlzcGF0Y2guaD4KICNlbmRpZgorCiAjaW5jbHVkZSA8d2luZG93cy5oPgotI2Vsc2UKLSNp
ZiAhUExBVEZPUk0oSU9TKQorCisjZWxpZiAhUExBVEZPUk0oSU9TKQorCiAjaW5jbHVkZSA8Q29y
ZVNlcnZpY2VzL0NvcmVTZXJ2aWNlcy5oPgotI2VuZGlmIC8vICFQTEFURk9STShJT1MpCi0jZW5k
aWYgLy8gT1MoV0lORE9XUykKKworI2VuZGlmCisKIAogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9u
IDIwNzAzOSkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjAyMSw3ICsyMDIxLDYgQEAKIAkJNTE0Qzc2NEYwQ0U5
MjM0RTAwN0VGM0NEIC8qIEZvcm1EYXRhU3RyZWFtTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE0Qzc2NDUwQ0U5MjM0RTAwN0VGM0NEIC8qIEZv
cm1EYXRhU3RyZWFtTWFjLm1tICovOyB9OwogCQk1MTRDNzY1MDBDRTkyMzRFMDA3RUYzQ0QgLyog
UmVzb3VyY2VFcnJvck1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUxNEM3NjQ2MENFOTIzNEUwMDdFRjNDRCAvKiBSZXNvdXJjZUVycm9yTWFjLm1t
ICovOyB9OwogCQk1MTRDNzY1MTBDRTkyMzRFMDA3RUYzQ0QgLyogUmVzb3VyY2VIYW5kbGVNYWMu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTRDNzY0
NzBDRTkyMzRFMDA3RUYzQ0QgLyogUmVzb3VyY2VIYW5kbGVNYWMubW0gKi87IH07Ci0JCTUxNEM3
NjUzMENFOTIzNEUwMDdFRjNDRCAvKiBSZXNvdXJjZVJlcXVlc3RNYWMubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTRDNzY0OTBDRTkyMzRFMDA3RUYz
Q0QgLyogUmVzb3VyY2VSZXF1ZXN0TWFjLm1tICovOyB9OwogCQk1MTRDNzY2RDBDRTkyM0ExMDA3
RUYzQ0QgLyogQ3JlZGVudGlhbEJhc2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTE0Qzc2NTgwQ0U5MjNBMTAwN0VGM0NEIC8qIENyZWRlbnRpYWxC
YXNlLmNwcCAqLzsgfTsKIAkJNTE0Qzc2NkUwQ0U5MjNBMTAwN0VGM0NEIC8qIENyZWRlbnRpYWwu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNEM3NjU5
MENFOTIzQTEwMDdFRjNDRCAvKiBDcmVkZW50aWFsLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTE0Qzc2NkYwQ0U5MjNBMTAwN0VGM0NEIC8qIEZv
cm1EYXRhLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxNEM3NjVBMENFOTIzQTEwMDdFRjNDRCAvKiBGb3JtRGF0YS5jcHAgKi87IH07CkBAIC0yODA4
LDcgKzI4MDcsNiBAQAogCQk3RDRDOTZERDFBRDQ0ODM1MDAzNjVBNTAgLyogSlNGZXRjaEhlYWRl
cnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdENEM5
NkQ5MUFENDQ4MzUwMDM2NUE1MCAvKiBKU0ZldGNoSGVhZGVycy5oICovOyB9OwogCQk3RDc0MUJE
QTE3NzIyNkFBMDA4NTkxNzAgLyogQ1NTVmFsdWVLZXl3b3Jkcy5oIGluIENvcHkgR2VuZXJhdGVk
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU2NTgxNDgwOUQx
MzA0MzAwMEU2MUQ3IC8qIENTU1ZhbHVlS2V5d29yZHMuaCAqLzsgfTsKIAkJN0UzN0VGMkUxMzM5
MjA4ODAwQjI5MjUwIC8qIFN1YnJlc291cmNlTG9hZGVyQ0YuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0UzN0VGMkQxMzM5MjA4ODAwQjI5MjUwIC8q
IFN1YnJlc291cmNlTG9hZGVyQ0YuY3BwICovOyB9OwotCQk3RTQyOENFNTEzRTM0MDdGMDAzQjY2
MUMgLyogUmVzb3VyY2VIYW5kbGVJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3RTQyOENFNDEzRTM0MDdGMDAzQjY2MUMgLyogUmVzb3VyY2VIYW5k
bGVJT1MubW0gKi87IH07CiAJCTdFNDZGNkZBMTYyN0EyQ0EwMDA2MjIyMyAvKiBKU09FU0VsZW1l
bnRJbmRleFVpbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gN0U0NkY2RjgxNjI3QTJDOTAwMDYyMjIzIC8qIEpTT0VTRWxlbWVudEluZGV4VWludC5j
cHAgKi87IH07CiAJCTdFNDZGNkZCMTYyN0EyQ0EwMDA2MjIyMyAvKiBKU09FU0VsZW1lbnRJbmRl
eFVpbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdF
NDZGNkY5MTYyN0EyQzkwMDA2MjIyMyAvKiBKU09FU0VsZW1lbnRJbmRleFVpbnQuaCAqLzsgfTsK
IAkJN0U0NzRFMUUxMjQ5NERDOTAwMjM1MzY0IC8qIFNRTGl0ZURhdGFiYXNlVHJhY2tlckNsaWVu
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0U0NzRF
MUIxMjQ5NERDOTAwMjM1MzY0IC8qIFNRTGl0ZURhdGFiYXNlVHJhY2tlckNsaWVudC5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0yODI2LDcgKzI4
MjQsNiBAQAogCQk3RTY2RTIzNDE2RDZFQjZDMDBGN0U3RkYgLyogV2ViR0xDb21wcmVzc2VkVGV4
dHVyZUFUQy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
N0U2NkUyMzIxNkQ2RUI2QzAwRjdFN0ZGIC8qIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEMuaCAq
LzsgfTsKIAkJN0U2NkUyMzQxN0U2RUI2QzAwRjdFN0ZGIC8qIFdlYkdMQ29tcHJlc3NlZFRleHR1
cmVQVlJUQy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
N0U2NkUyMzIxN0U2RUI2QzAwRjdFN0ZGIC8qIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQy5o
ICovOyB9OwogCQk3RTdERTFGRDE5NUNFRjI2MDAzNTM2M0IgLyogUmVzb3VyY2VSZXF1ZXN0Q29j
b2EubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RTdE
RTFGQzE5NUNFRjI2MDAzNTM2M0IgLyogUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0gKi87IH07Ci0J
CTdFN0RFMjAyMTk1Q0VGQ0QwMDM1MzYzQiAvKiBSZXNvdXJjZVJlcXVlc3RJT1MubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RTdERTIwMTE5NUNFRkNE
MDAzNTM2M0IgLyogUmVzb3VyY2VSZXF1ZXN0SU9TLm1tICovOyB9OwogCQk3RThGQURDNDE5OUE5
NUIxMDA3MTQ5NjggLyogU3VicmVzb3VyY2VMb2FkZXJDb2NvYS5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFOEZBREMzMTk5QTk1QjEwMDcxNDk2OCAv
KiBTdWJyZXNvdXJjZUxvYWRlckNvY29hLm1tICovOyB9OwogCQk3RTk5QUY1MTBCMTM4NDY0NjhG
QjAxQTUgLyogV2luZG93Rm9jdXNBbGxvd2VkSW5kaWNhdG9yLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFOTlBRjUyMEIxMzg0NjQ2OEZCMDFBNSAv
KiBXaW5kb3dGb2N1c0FsbG93ZWRJbmRpY2F0b3IuY3BwICovOyB9OwogCQk3RTk5QUY1MzBCMTM4
NDY0NjhGQjAxQTUgLyogV2luZG93Rm9jdXNBbGxvd2VkSW5kaWNhdG9yLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RTk5QUY1NDBCMTM4NDY0NjhGQjAx
QTUgLyogV2luZG93Rm9jdXNBbGxvd2VkSW5kaWNhdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTI4NDcsNyArMjg0NCw2IEBACiAJCTdFRTY4
NDY5MTJEMjZFMzgwMEU3OTQxNSAvKiBMb2FkZXJSdW5Mb29wQ0YuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFRTY4NDU2MTJEMjZFMzgwMEU3OTQxNSAv
KiBMb2FkZXJSdW5Mb29wQ0YuaCAqLzsgfTsKIAkJN0VFNjg0NkExMkQyNkUzODAwRTc5NDE1IC8q
IFJlc291cmNlRXJyb3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDdFRTY4NDU3MTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZUVycm9yLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0VFNjg0NkIxMkQy
NkUzODAwRTc5NDE1IC8qIFJlc291cmNlRXJyb3JDRi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RUU2ODQ1ODEyRDI2RTM4MDBFNzk0MTUgLyogUmVz
b3VyY2VFcnJvckNGLmNwcCAqLzsgfTsKLQkJN0VFNjg0NkMxMkQyNkUzODAwRTc5NDE1IC8qIFJl
c291cmNlSGFuZGxlQ0ZOZXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gN0VFNjg0NTkxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlSGFuZGxlQ0ZO
ZXQuY3BwICovOyB9OwogCQk3RUU2ODQ2RDEyRDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VSZXF1
ZXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RUU2
ODQ1QTEyRDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VSZXF1ZXN0LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0VFNjg0NkUxMkQyNkUzODAwRTc5
NDE1IC8qIFJlc291cmNlUmVxdWVzdENGTmV0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFRTY4NDVCMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJj
ZVJlcXVlc3RDRk5ldC5jcHAgKi87IH07CiAJCTdFRTY4NDZGMTJEMjZFMzgwMEU3OTQxNSAvKiBS
ZXNvdXJjZVJlcXVlc3RDRk5ldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gN0VFNjg0NUMxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlUmVxdWVzdENG
TmV0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAg
LTkwNjIsNyArOTA1OCw2IEBACiAJCTUxNEM3NjQ1MENFOTIzNEUwMDdFRjNDRCAvKiBGb3JtRGF0
YVN0cmVhbU1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEZv
cm1EYXRhU3RyZWFtTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTRDNzY0
NjBDRTkyMzRFMDA3RUYzQ0QgLyogUmVzb3VyY2VFcnJvck1hYy5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFJlc291cmNlRXJyb3JNYWMubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTUxNEM3NjQ3MENFOTIzNEUwMDdFRjNDRCAvKiBSZXNvdXJjZUhh
bmRsZU1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFJlc291
cmNlSGFuZGxlTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MTRDNzY0OTBD
RTkyMzRFMDA3RUYzQ0QgLyogUmVzb3VyY2VSZXF1ZXN0TWFjLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gUmVzb3VyY2VSZXF1ZXN0TWFjLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1MTRDNzY1ODBDRTkyM0ExMDA3RUYzQ0QgLyogQ3JlZGVudGlh
bEJhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ3JlZGVudGlh
bEJhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTRDNzY1OTBDRTkyM0Ex
MDA3RUYzQ0QgLyogQ3JlZGVudGlhbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBDcmVkZW50aWFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNEM3NjVBMENF
OTIzQTEwMDdFRjNDRCAvKiBGb3JtRGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBGb3JtRGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05
OTQ2LDcgKzk5NDEsNiBAQAogCQk3RDRDOTZEODFBRDQ0ODM1MDAzNjVBNTAgLyogSlNGZXRjaEhl
YWRlcnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNGZXRjaEhl
YWRlcnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3RDRDOTZEOTFBRDQ0ODM1
MDAzNjVBNTAgLyogSlNGZXRjaEhlYWRlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSlNGZXRjaEhlYWRlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0Uz
N0VGMkQxMzM5MjA4ODAwQjI5MjUwIC8qIFN1YnJlc291cmNlTG9hZGVyQ0YuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3VicmVzb3VyY2VMb2FkZXJDRi5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTdFNDI4Q0U0MTNFMzQwN0YwMDNCNjYxQyAvKiBS
ZXNvdXJjZUhhbmRsZUlPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IFJlc291cmNlSGFuZGxlSU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
RTQ2RjZGODE2MjdBMkM5MDAwNjIyMjMgLyogSlNPRVNFbGVtZW50SW5kZXhVaW50LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTT0VTRWxlbWVudEluZGV4VWludC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFNDZGNkY5MTYyN0EyQzkwMDA2MjIy
MyAvKiBKU09FU0VsZW1lbnRJbmRleFVpbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSlNPRVNFbGVtZW50SW5kZXhVaW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTdFNDc0RTFCMTI0OTREQzkwMDIzNTM2NCAvKiBTUUxpdGVEYXRhYmFzZVRyYWNrZXJDbGll
bnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1FMaXRlRGF0YWJhc2VUcmFj
a2VyQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05OTY0LDcgKzk5NTgs
NiBAQAogCQk3RTY2RTIzMjE2RDZFQjZDMDBGN0U3RkYgLyogV2ViR0xDb21wcmVzc2VkVGV4dHVy
ZUFUQy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHTENvbXByZXNzZWRU
ZXh0dXJlQVRDLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFNjZFMjMyMTdFNkVC
NkMwMEY3RTdGRiAvKiBXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFN0RFMUZDMTk1Q0VGMjYwMDM1MzYzQiAvKiBSZXNv
dXJjZVJlcXVlc3RDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IFJlc291cmNlUmVxdWVzdENvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQk3RTdERTIwMTE5NUNFRkNEMDAzNTM2M0IgLyogUmVzb3VyY2VSZXF1ZXN0SU9TLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUmVzb3VyY2VSZXF1ZXN0SU9TLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3RThGQURDMzE5OUE5NUIxMDA3MTQ5Njgg
LyogU3VicmVzb3VyY2VMb2FkZXJDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IFN1YnJlc291cmNlTG9hZGVyQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTdFOTlBRjUyMEIxMzg0NjQ2OEZCMDFBNSAvKiBXaW5kb3dGb2N1c0FsbG93
ZWRJbmRpY2F0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2lu
ZG93Rm9jdXNBbGxvd2VkSW5kaWNhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJN0U5OUFGNTQwQjEzODQ2NDY4RkIwMUE1IC8qIFdpbmRvd0ZvY3VzQWxsb3dlZEluZGljYXRv
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXaW5kb3dGb2N1c0FsbG93ZWRJ
bmRpY2F0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTk5ODcsNyArOTk4MCw2
IEBACiAJCTdFRTY4NDU2MTJEMjZFMzgwMEU3OTQxNSAvKiBMb2FkZXJSdW5Mb29wQ0YuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTG9hZGVyUnVuTG9vcENGLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFRTY4NDU3MTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJj
ZUVycm9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlc291cmNlRXJyb3Iu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0VFNjg0NTgxMkQyNkUzODAwRTc5NDE1
IC8qIFJlc291cmNlRXJyb3JDRi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBSZXNvdXJjZUVycm9yQ0YuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3
RUU2ODQ1OTEyRDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZXNvdXJjZUhhbmRsZUNGTmV0LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0VFNjg0NUExMkQyNkUzODAwRTc5NDE1IC8q
IFJlc291cmNlUmVxdWVzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZXNv
dXJjZVJlcXVlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0VFNjg0NUIxMkQy
NkUzODAwRTc5NDE1IC8qIFJlc291cmNlUmVxdWVzdENGTmV0LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlc291cmNlUmVxdWVzdENGTmV0LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0VFNjg0NUMxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNl
UmVxdWVzdENGTmV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlc291cmNl
UmVxdWVzdENGTmV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNjIzNCw4ICsx
NjIyNiw2IEBACiAJCQkJNDQyQUY3QTcxMDJDRERFQTAwOEZENEQzIC8qIFF1aWNrTG9vay5oICov
LAogCQkJCTQ0MkFGN0E4MTAyQ0RERUEwMDhGRDREMyAvKiBRdWlja0xvb2subW0gKi8sCiAJCQkJ
QTEwREJGNDYxOEY5MjMxNzAwMEQ3MEM2IC8qIFF1aWNrTG9va0hhbmRsZUNsaWVudC5oICovLAot
CQkJCTdFNDI4Q0U0MTNFMzQwN0YwMDNCNjYxQyAvKiBSZXNvdXJjZUhhbmRsZUlPUy5tbSAqLywK
LQkJCQk3RTdERTIwMTE5NUNFRkNEMDAzNTM2M0IgLyogUmVzb3VyY2VSZXF1ZXN0SU9TLm1tICov
LAogCQkJCTQ0QTIwREI4MEY4NDE2NkMwMEIzRTFGRSAvKiBXZWJDb3JlVVJMUmVzcG9uc2VJT1Mu
aCAqLywKIAkJCQk0NDRENEUyMTBGNzA4QjJFMDAzMTU4RTAgLyogV2ViQ29yZVVSTFJlc3BvbnNl
SU9TLm1tICovLAogCQkJKTsKQEAgLTE3MTUwLDcgKzE3MTQwLDYgQEAKIAkJCQkxQTdGQTY0NzBE
REEzQ0JBMDAyOEY4QTUgLyogTmV0d29ya1N0YXRlTm90aWZpZXJNYWMuY3BwICovLAogCQkJCTUx
NEM3NjQ2MENFOTIzNEUwMDdFRjNDRCAvKiBSZXNvdXJjZUVycm9yTWFjLm1tICovLAogCQkJCTUx
NEM3NjQ3MENFOTIzNEUwMDdFRjNDRCAvKiBSZXNvdXJjZUhhbmRsZU1hYy5tbSAqLywKLQkJCQk1
MTRDNzY0OTBDRTkyMzRFMDA3RUYzQ0QgLyogUmVzb3VyY2VSZXF1ZXN0TWFjLm1tICovLAogCQkJ
CUUxODA4MTE0MTZGQ0Y5Q0IwMEI4MEQwNyAvKiBTeW5jaHJvbm91c0xvYWRlckNsaWVudC5tbSAq
LywKIAkJCQkxRkFGQkYxNjE1QTVGQTUyMDAwODNBMjAgLyogVVRJVXRpbGl0aWVzLmggKi8sCiAJ
CQkJMUZBRkJGMTcxNUE1RkE1MjAwMDgzQTIwIC8qIFVUSVV0aWxpdGllcy5tbSAqLywKQEAgLTIx
MDEyLDcgKzIxMDAxLDYgQEAKIAkJCQkxQUY4RTFDMTEyNTY3M0UwMDAyMzBGRjcgLyogUHJveHlT
ZXJ2ZXJDRk5ldC5jcHAgKi8sCiAJCQkJN0VFNjg0NTcxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291
cmNlRXJyb3IuaCAqLywKIAkJCQk3RUU2ODQ1ODEyRDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VF
cnJvckNGLmNwcCAqLywKLQkJCQk3RUU2ODQ1OTEyRDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VI
YW5kbGVDRk5ldC5jcHAgKi8sCiAJCQkJMjZGQUU0QzgxODUyRTNBNTAwNEM4QzQ2IC8qIFJlc291
cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuY3BwICovLAogCQkJCTI2RkFFNEM5MTg1
MkUzQTUwMDRDOEM0NiAvKiBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmgg
Ki8sCiAJCQkJMjZDMTVDRjQxODU3RTE1RDAwRjE1QzAzIC8qIFJlc291cmNlSGFuZGxlQ0ZVUkxD
b25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuY3BwICovLApAQCAtMjk5MTYsMTEg
KzI5OTA0LDkgQEAKIAkJCQk3RUU2ODQ2QjEyRDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VFcnJv
ckNGLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxNEM3NjUwMENFOTIzNEUwMDdFRjNDRCAvKiBS
ZXNvdXJjZUVycm9yTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE0Qzc2NzgwQ0U5MjNBMTAw
N0VGM0NEIC8qIFJlc291cmNlSGFuZGxlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTdFRTY4NDZD
MTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZUhhbmRsZUNGTmV0LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTI2RkFFNENDMTg1MkUzQTUwMDRDOEM0NiAvKiBSZXNvdXJjZUhhbmRsZUNGVVJMQ29u
bmVjdGlvbkRlbGVnYXRlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTI2QzE1Q0Y2MTg1N0UxNUQw
MEYxNUMwMyAvKiBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJh
dGlvblF1ZXVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxQkEwMDMxMTZGQjkyQUMwMEJBN0Ez
NSAvKiBSZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk3RTQyOENF
NTEzRTM0MDdGMDAzQjY2MUMgLyogUmVzb3VyY2VIYW5kbGVJT1MubW0gaW4gU291cmNlcyAqLywK
IAkJCQk1MTRDNzY1MTBDRTkyMzRFMDA3RUYzQ0QgLyogUmVzb3VyY2VIYW5kbGVNYWMubW0gaW4g
U291cmNlcyAqLywKIAkJCQk5M0UyMjdFMzBBRjU4OUFEMDBENDgzMjQgLyogUmVzb3VyY2VMb2Fk
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0VFNjg0NzUxMkQyNkU3MDAwRTc5NDE1IC8qIFJl
c291cmNlTG9hZGVyQ0ZOZXQuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yOTkzMyw4ICsyOTkxOSw2
IEBACiAJCQkJNTE0Qzc2N0MwQ0U5MjNBMTAwN0VGM0NEIC8qIFJlc291cmNlUmVxdWVzdEJhc2Uu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0VFNjg0NkUxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291
cmNlUmVxdWVzdENGTmV0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdFN0RFMUZEMTk1Q0VGMjYw
MDM1MzYzQiAvKiBSZXNvdXJjZVJlcXVlc3RDb2NvYS5tbSBpbiBTb3VyY2VzICovLAotCQkJCTdF
N0RFMjAyMTk1Q0VGQ0QwMDM1MzYzQiAvKiBSZXNvdXJjZVJlcXVlc3RJT1MubW0gaW4gU291cmNl
cyAqLywKLQkJCQk1MTRDNzY1MzBDRTkyMzRFMDA3RUYzQ0QgLyogUmVzb3VyY2VSZXF1ZXN0TWFj
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE0Qzc2N0UwQ0U5MjNBMTAwN0VGM0NEIC8qIFJlc291
cmNlUmVzcG9uc2VCYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdFRTY4NDcxMTJEMjZFMzgw
MEU3OTQxNSAvKiBSZXNvdXJjZVJlc3BvbnNlQ0ZOZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QTFGNzhEMEMxQzI1NDI0QzAwMjQ1NDQ2IC8qIFJlc291cmNlUmVzcG9uc2VDb2NvYS5tbSBpbiBT
b3VyY2VzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgJKHJl
dmlzaW9uIDIwNzAzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC01NSw3ICs1NSw3IEBACiAjaW5jbHVkZSAiUXVpY2tMb29rLmgi
CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKENPQ09BKSAmJiAhVVNFKENGTkVUV09SSykKKyNpZiBQ
TEFURk9STShDT0NPQSkKICNpbmNsdWRlIDx3dGYvU2NoZWR1bGVQYWlyLmg+CiAjZW5kaWYKIApA
QCAtMTQ1LDcgKzE0NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBzZXRUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJik7CiAgICAgICAg
IGNvbnN0IFN0cmluZyYgb3ZlcnJpZGVFbmNvZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fb3ZlcnJp
ZGVFbmNvZGluZzsgfQogCi0jaWYgUExBVEZPUk0oQ09DT0EpICYmICFVU0UoQ0ZORVRXT1JLKQor
I2lmIFBMQVRGT1JNKENPQ09BKQogICAgICAgICB2b2lkIHNjaGVkdWxlKFNjaGVkdWxlUGFpciYp
OwogICAgICAgICB2b2lkIHVuc2NoZWR1bGUoU2NoZWR1bGVQYWlyJik7CiAjZW5kaWYKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgJKHJldmlzaW9uIDIwNzAzOSkKKysrIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAkod29ya2luZyBjb3B5KQpAQCAtNDAz
LDcgKzQwMyw3IEBAIHB1YmxpYzoKICAgICBSZW1vdGVBWE9iamVjdFJlZiBhY2Nlc3NpYmlsaXR5
UmVtb3RlT2JqZWN0KCkgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQogICAgIE5TQ2FjaGVk
VVJMUmVzcG9uc2UqIHdpbGxDYWNoZVJlc3BvbnNlKERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQg
bG9uZywgTlNDYWNoZWRVUkxSZXNwb25zZSogcmVzcG9uc2UpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIHJlc3BvbnNlOyB9CiAjZW5kaWYKLSNpZiBQTEFURk9STShXSU4pICYmIFVTRShDRk5FVFdP
UkspCisjaWYgUExBVEZPUk0oV0lOKSAmJiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogICAgIC8vIEZJ
WE1FOiBXaW5kb3dzIHNob3VsZCB1c2Ugd2lsbENhY2hlUmVzcG9uc2UgLSA8aHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU3MjU3Pi4KICAgICBib29sIHNob3VsZENhY2hl
UmVzcG9uc2UoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nLCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiwgY29uc3QgdW5zaWduZWQgY2hhciosIHVuc2lnbmVkIGxvbmcgbG9uZykgb3ZlcnJp
ZGUgeyByZXR1cm4gdHJ1ZTsgfQogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXJDbGllbnQuaAkocmV2aXNpb24gMjA3MDM5KQorKysgU291cmNlL1dlYkNvcmUv
bG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI5Nyw3ICsyOTcs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgTlNDYWNoZWRVUkxSZXNw
b25zZSogd2lsbENhY2hlUmVzcG9uc2UoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlk
ZW50aWZpZXIsIE5TQ2FjaGVkVVJMUmVzcG9uc2UqKSBjb25zdCA9IDA7CiAgICAgICAgIHZpcnR1
YWwgTlNEaWN0aW9uYXJ5ICpkYXRhRGV0ZWN0aW9uQ29udGV4dCgpIHsgcmV0dXJuIG51bGxwdHI7
IH0KICNlbmRpZgotI2lmIFBMQVRGT1JNKFdJTikgJiYgVVNFKENGTkVUV09SSykKKyNpZiBQTEFU
Rk9STShXSU4pICYmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAgICAgICAgIC8vIEZJWE1FOiBXaW5k
b3dzIHNob3VsZCB1c2Ugd2lsbENhY2hlUmVzcG9uc2UgLSA8aHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTU3MjU3Pi4KICAgICAgICAgdmlydHVhbCBib29sIHNob3VsZENh
Y2hlUmVzcG9uc2UoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmLCBjb25zdCB1bnNpZ25lZCBjaGFyKiBkYXRhLCB1bnNpZ25l
ZCBsb25nIGxvbmcgbGVuZ3RoKSA9IDA7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9SZXNvdXJjZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1Jlc291cmNlTG9hZGVyLmNwcAkocmV2aXNpb24gMjA3MDM5KQorKysgU291cmNlL1dlYkNv
cmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzE1LDEyICs3
MTUsOCBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQXV0aGVudGljCiAgICAgfQog
ICAgIC8vIE9ubHkgdGhlc2UgcGxhdGZvcm1zIHByb3ZpZGUgYSB3YXkgdG8gY29udGludWUgd2l0
aG91dCBjcmVkZW50aWFscy4KICAgICAvLyBJZiB3ZSBjYW4ndCBjb250aW51ZSB3aXRoIGNyZWRl
bnRpYWxzLCB3ZSBuZWVkIHRvIGNhbmNlbCB0aGUgbG9hZCBhbHRvZ2V0aGVyLgotI2lmIFBMQVRG
T1JNKENPQ09BKSB8fCBVU0UoQ0ZORVRXT1JLKSB8fCBVU0UoQ1VSTCkgfHwgUExBVEZPUk0oR1RL
KSB8fCBQTEFURk9STShFRkwpCiAgICAgY2hhbGxlbmdlLmF1dGhlbnRpY2F0aW9uQ2xpZW50KCkt
PnJlY2VpdmVkUmVxdWVzdFRvQ29udGludWVXaXRob3V0Q3JlZGVudGlhbChjaGFsbGVuZ2UpOwog
ICAgIEFTU0VSVCghbV9oYW5kbGUgfHwgIW1faGFuZGxlLT5oYXNBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSgpKTsKLSNlbHNlCi0gICAgZGlkRmFpbChibG9ja2VkRXJyb3IoKSk7Ci0jZW5kaWYKIH0K
IAogI2lmIFVTRShQUk9URUNUSU9OX1NQQUNFX0FVVEhfQ0FMTEJBQ0spCkBAIC03NDcsNyArNzQz
LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6cmVjZWl2ZWRDYW5jZWxsYXRpbwogICAgIGNhbmNl
bCgpOwogfQogCi0jaWYgUExBVEZPUk0oQ09DT0EpICYmICFVU0UoQ0ZORVRXT1JLKQorI2lmIFBM
QVRGT1JNKENPQ09BKQogCiB2b2lkIFJlc291cmNlTG9hZGVyOjpzY2hlZHVsZShTY2hlZHVsZVBh
aXImIHBhaXIpCiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaAko
cmV2aXNpb24gMjA3MDM5KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTE0Myw3ICsxNDMsNyBAQCBwdWJsaWM6CiAKICAgICBjb25z
dCBMb2FkVGltaW5nJiBsb2FkVGltaW5nKCkgeyByZXR1cm4gbV9sb2FkVGltaW5nOyB9CiAKLSNp
ZiBQTEFURk9STShDT0NPQSkgJiYgIVVTRShDRk5FVFdPUkspCisjaWYgUExBVEZPUk0oQ09DT0Ep
CiAgICAgdm9pZCBzY2hlZHVsZShXVEY6OlNjaGVkdWxlUGFpciYpOwogICAgIHZvaWQgdW5zY2hl
ZHVsZShXVEY6OlNjaGVkdWxlUGFpciYpOwogI2VuZGlmCkBAIC0xNjMsMTIgKzE2Myw5IEBAIHBy
b3RlY3RlZDoKIAogICAgIGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucygpIHsg
cmV0dXJuIG1fb3B0aW9uczsgfQogCi0jaWYgUExBVEZPUk0oQ09DT0EpICYmICFVU0UoQ0ZORVRX
T1JLKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIE5TQ2FjaGVkVVJMUmVzcG9uc2UqIHdpbGxD
YWNoZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlKiwgTlNDYWNoZWRVUkxSZXNwb25zZSopIG92ZXJy
aWRlOwogI2VuZGlmCi0jaWYgUExBVEZPUk0oQ09DT0EpICYmIFVTRShDRk5FVFdPUkspCi0gICAg
Q0ZDYWNoZWRVUkxSZXNwb25zZVJlZiB3aWxsQ2FjaGVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSos
IENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYpIG92ZXJyaWRlOwotI2VuZGlmCiAKICAgICB2aXJ0dWFs
IHZvaWQgd2lsbFNlbmRSZXF1ZXN0SW50ZXJuYWwoUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSk7CiAKQEAgLTIwOCw3ICsyMDUsNyBAQCBw
cml2YXRlOgogI2lmIFBMQVRGT1JNKElPUykKICAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVm
PiBjb25uZWN0aW9uUHJvcGVydGllcyhSZXNvdXJjZUhhbmRsZSopIG92ZXJyaWRlOwogI2VuZGlm
Ci0jaWYgUExBVEZPUk0oV0lOKSAmJiBVU0UoQ0ZORVRXT1JLKQorI2lmIFBMQVRGT1JNKFdJTikg
JiYgVVNFKENGVVJMQ09OTkVDVElPTikKICAgICAvLyBGSVhNRTogV2luZG93cyBzaG91bGQgdXNl
IHdpbGxDYWNoZVJlc3BvbnNlIC0gPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD01NzI1Nz4uCiAgICAgYm9vbCBzaG91bGRDYWNoZVJlc3BvbnNlKFJlc291cmNlSGFuZGxl
KiwgQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZikgb3ZlcnJpZGU7CiAjZW5kaWYKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oCShyZXZpc2lvbiAyMDcwMzkpCisr
KyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtNzQsMTIgKzc0LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdpbGxDYW5jZWwoY29uc3Qg
UmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkQ2FuY2VsKGNvbnN0IFJlc291
cmNlRXJyb3ImKSBvdmVycmlkZTsKIAotI2lmIFBMQVRGT1JNKENPQ09BKSAmJiAhVVNFKENGTkVU
V09SSykKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICBOU0NhY2hlZFVSTFJlc3BvbnNlICp3aWxs
Q2FjaGVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSosIE5TQ2FjaGVkVVJMUmVzcG9uc2UqKSBvdmVy
cmlkZTsKICNlbmRpZgotI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBVU0UoQ0ZORVRXT1JLKQotICAg
IENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYgd2lsbENhY2hlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUq
LCBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmKSBvdmVycmlkZTsKLSNlbmRpZgogCiAjaWYgVVNFKE5F
VFdPUktfQ0ZEQVRBX0FSUkFZX0NBTExCQUNLKQogICAgIGJvb2wgc3VwcG9ydHNEYXRhQXJyYXko
KSBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2YvUmVzb3VyY2VMb2FkZXJDRk5ldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NmL1Jlc291cmNlTG9hZGVyQ0ZOZXQuY3BwCShyZXZpc2lvbiAyMDcwMzkpCisrKyBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2YvUmVzb3VyY2VMb2FkZXJDRk5ldC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI2LDE1ICsyNiwxMyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IlJlc291cmNlTG9hZGVyLmgiCiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQorI2lmIFVTRShDRlVSTENP
Tk5FQ1RJT04pCiAKICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgogI2luY2x1ZGUgIkZyYW1lTG9h
ZGVyQ2xpZW50LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotI2lmIFBMQVRGT1JNKFdJTikK
LQogYm9vbCBSZXNvdXJjZUxvYWRlcjo6c2hvdWxkQ2FjaGVSZXNwb25zZShSZXNvdXJjZUhhbmRs
ZSosIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYgY2FjaGVkUmVzcG9uc2UpCiB7CiAgICAgaWYgKG1f
b3B0aW9ucy5zZW5kTG9hZENhbGxiYWNrcyA9PSBEb05vdFNlbmRDYWxsYmFja3MpCkBAIC00NSw4
ICs0Myw2IEBAIGJvb2wgUmVzb3VyY2VMb2FkZXI6OnNob3VsZENhY2hlUmVzcG9uc2UKICAgICBy
ZXR1cm4gZnJhbWVMb2FkZXIoKS0+Y2xpZW50KCkuc2hvdWxkQ2FjaGVSZXNwb25zZShkb2N1bWVu
dExvYWRlcigpLCBpZGVudGlmaWVyKCksIHJlc3BvbnNlLCBDRkRhdGFHZXRCeXRlUHRyKGRhdGEp
LCBDRkRhdGFHZXRMZW5ndGgoZGF0YSkpOwogfQogCi0jZW5kaWYKLQogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCi0jZW5kaWYgLy8gVVNFKENGTkVUV09SSykKKyNlbmRpZiAvLyBVU0UoQ0ZVUkxD
T05ORUNUSU9OKQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL1N1YnJlc291cmNl
TG9hZGVyQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29h
L1N1YnJlc291cmNlTG9hZGVyQ29jb2EubW0JKHJldmlzaW9uIDIwNzAzOSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jb2NvYS9TdWJyZXNvdXJjZUxvYWRlckNvY29hLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0zNSwxOCArMzUsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSNpZiBVU0Uo
Q0ZORVRXT1JLKQotCi1DRkNhY2hlZFVSTFJlc3BvbnNlUmVmIFN1YnJlc291cmNlTG9hZGVyOjp3
aWxsQ2FjaGVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBDRkNhY2hlZFVSTFJlc3Bv
bnNlUmVmIGNhY2hlZFJlc3BvbnNlKQotewotICAgIERpc2tDYWNoZU1vbml0b3I6Om1vbml0b3JG
aWxlQmFja2luZ1N0b3JlQ3JlYXRpb24ocmVxdWVzdCgpLCBtX3Jlc291cmNlLT5zZXNzaW9uSUQo
KSwgY2FjaGVkUmVzcG9uc2UpOwotICAgIGlmICghbV9yZXNvdXJjZS0+c2hvdWxkQ2FjaGVSZXNw
b25zZShDRkNhY2hlZFVSTFJlc3BvbnNlR2V0V3JhcHBlZFJlc3BvbnNlKGNhY2hlZFJlc3BvbnNl
KSkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBSZXNvdXJjZUxvYWRlcjo6
d2lsbENhY2hlUmVzcG9uc2UoaGFuZGxlLCBjYWNoZWRSZXNwb25zZSk7Ci19Ci0KLSNlbHNlCi0K
IE5TQ2FjaGVkVVJMUmVzcG9uc2UqIFN1YnJlc291cmNlTG9hZGVyOjp3aWxsQ2FjaGVSZXNwb25z
ZShSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBOU0NhY2hlZFVSTFJlc3BvbnNlKiByZXNwb25zZSkK
IHsKICAgICBEaXNrQ2FjaGVNb25pdG9yOjptb25pdG9yRmlsZUJhY2tpbmdTdG9yZUNyZWF0aW9u
KHJlcXVlc3QoKSwgbV9yZXNvdXJjZS0+c2Vzc2lvbklEKCksIFtyZXNwb25zZSBfQ0ZDYWNoZWRV
UkxSZXNwb25zZV0pOwpAQCAtNTUsNiArNDMsNCBAQCBOU0NhY2hlZFVSTFJlc3BvbnNlKiBTdWJy
ZXNvdXJjZUxvYWRlcjo6CiAgICAgcmV0dXJuIFJlc291cmNlTG9hZGVyOjp3aWxsQ2FjaGVSZXNw
b25zZShoYW5kbGUsIHJlc3BvbnNlKTsKIH0KIAotI2VuZGlmCi0KIH0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9tYWMvRG9jdW1lbnRMb2FkZXJNYWMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9tYWMvRG9jdW1lbnRMb2FkZXJNYWMuY3BwCShyZXZpc2lvbiAy
MDcwMzkpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvbWFjL0RvY3VtZW50TG9hZGVyTWFjLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzMsOCArMzMsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLSNpZiAhVVNFKENGTkVUV09SSykKLQogc3RhdGljIHZvaWQgc2NoZWR1bGVBbGwoY29uc3Qg
UmVzb3VyY2VMb2FkZXJNYXAmIGxvYWRlcnMsIFNjaGVkdWxlUGFpciYgcGFpcikKIHsKICAgICBW
ZWN0b3I8UmVmUHRyPFJlc291cmNlTG9hZGVyPj4gbG9hZGVyc0NvcHk7CkBAIC02OSw2ICs2Nyw0
IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnVuc2NoZWR1bGUoU2NoZWR1bGUKICAgICB1bnNjaGVk
dWxlQWxsKG1fbXVsdGlwYXJ0U3VicmVzb3VyY2VMb2FkZXJzLCBwYWlyKTsKIH0KIAotI2VuZGlm
Ci0KLX0gLy8gbmFtZXNwYWNlCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvbWFjL1Jlc291cmNlTG9hZGVyTWFjLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9tYWMvUmVzb3VyY2VMb2FkZXJNYWMubW0JKHJldmlzaW9uIDIw
NzAzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9tYWMvUmVzb3VyY2VMb2FkZXJNYWMubW0J
KHdvcmtpbmcgY29weSkKQEAgLTM2LDE5ICszNiw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotI2lmIFVTRShDRk5FVFdPUkspCi0KLUNGQ2FjaGVkVVJMUmVzcG9uc2VSZWYgUmVzb3VyY2VM
b2FkZXI6OndpbGxDYWNoZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlKiwgQ0ZDYWNoZWRVUkxSZXNw
b25zZVJlZiBjYWNoZWRSZXNwb25zZSkKLXsKLSAgICBpZiAobV9vcHRpb25zLnNlbmRMb2FkQ2Fs
bGJhY2tzID09IERvTm90U2VuZENhbGxiYWNrcykKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0K
LSAgICBSZXRhaW5QdHI8TlNDYWNoZWRVUkxSZXNwb25zZT4gbnNDYWNoZWRSZXNwb25zZSA9IGFk
b3B0TlMoW1tOU0NhY2hlZFVSTFJlc3BvbnNlIGFsbG9jXSBfaW5pdFdpdGhDRkNhY2hlZFVSTFJl
c3BvbnNlOmNhY2hlZFJlc3BvbnNlXSk7Ci0gICAgcmV0dXJuIFtmcmFtZUxvYWRlcigpLT5jbGll
bnQoKS53aWxsQ2FjaGVSZXNwb25zZShkb2N1bWVudExvYWRlcigpLCBpZGVudGlmaWVyKCksIG5z
Q2FjaGVkUmVzcG9uc2UuZ2V0KCkpIF9DRkNhY2hlZFVSTFJlc3BvbnNlXTsKLX0KLQotI2Vsc2UK
LQogTlNDYWNoZWRVUkxSZXNwb25zZSogUmVzb3VyY2VMb2FkZXI6OndpbGxDYWNoZVJlc3BvbnNl
KFJlc291cmNlSGFuZGxlKiwgTlNDYWNoZWRVUkxSZXNwb25zZSogcmVzcG9uc2UpCiB7CiAgICAg
aWYgKG1fb3B0aW9ucy5zZW5kTG9hZENhbGxiYWNrcyA9PSBEb05vdFNlbmRDYWxsYmFja3MpCkBA
IC01Niw4ICs0Myw2IEBAIE5TQ2FjaGVkVVJMUmVzcG9uc2UqIFJlc291cmNlTG9hZGVyOjp3aWwK
ICAgICByZXR1cm4gZnJhbWVMb2FkZXIoKS0+Y2xpZW50KCkud2lsbENhY2hlUmVzcG9uc2UoZG9j
dW1lbnRMb2FkZXIoKSwgaWRlbnRpZmllcigpLCByZXNwb25zZSk7CiB9CiAKLSNlbmRpZgotCiAj
aWYgVVNFKE5FVFdPUktfQ0ZEQVRBX0FSUkFZX0NBTExCQUNLKQogCiB2b2lkIFJlc291cmNlTG9h
ZGVyOjpkaWRSZWNlaXZlRGF0YUFycmF5KENGQXJyYXlSZWYgZGF0YUFycmF5KQpJbmRleDogU291
cmNlL1dlYkNvcmUvcGFnZS9tYWMvUGFnZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wYWdlL21hYy9QYWdlTWFjLm1tCShyZXZpc2lvbiAyMDcwMzkpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wYWdlL21hYy9QYWdlTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00NSwxMSArNDUsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB2b2lkIFBhZ2U6OnBsYXRmb3JtSW5pdGlhbGl6ZSgpCiB7
CiAjaWYgUExBVEZPUk0oSU9TKQotI2lmIFVTRShDRk5FVFdPUkspCi0gICAgYWRkU2NoZWR1bGVQ
YWlyKFNjaGVkdWxlUGFpcjo6Y3JlYXRlKFdlYlRocmVhZFJ1bkxvb3AoKSwga0NGUnVuTG9vcENv
bW1vbk1vZGVzKSk7Ci0jZWxzZQogICAgIGFkZFNjaGVkdWxlUGFpcihTY2hlZHVsZVBhaXI6OmNy
ZWF0ZShXZWJUaHJlYWROU1J1bkxvb3AoKSwga0NGUnVuTG9vcENvbW1vbk1vZGVzKSk7Ci0jZW5k
aWYgLy8gVVNFKENGTkVUV09SSykKICNlbHNlCiAgICAgYWRkU2NoZWR1bGVQYWlyKFNjaGVkdWxl
UGFpcjo6Y3JlYXRlKFtOU1J1bkxvb3AgY3VycmVudFJ1bkxvb3BdLCBrQ0ZSdW5Mb29wQ29tbW9u
TW9kZXMpKTsKICNlbmRpZgpAQCAtNjksMTQgKzY1LDEyIEBAIHZvaWQgUGFnZTo6YWRkU2NoZWR1
bGVQYWlyKFJlZjxTY2hlZHVsZVAKICAgICAgICAgbV9zY2hlZHVsZWRSdW5Mb29wUGFpcnMgPSBz
dGQ6Om1ha2VfdW5pcXVlPFNjaGVkdWxlUGFpckhhc2hTZXQ+KCk7CiAgICAgbV9zY2hlZHVsZWRS
dW5Mb29wUGFpcnMtPmFkZChwYWlyLnB0cigpKTsKIAotI2lmICFVU0UoQ0ZORVRXT1JLKQogICAg
IGZvciAoRnJhbWUqIGZyYW1lID0gJm1fbWFpbkZyYW1lLmdldCgpOyBmcmFtZTsgZnJhbWUgPSBm
cmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgpKSB7CiAgICAgICAgIGlmIChEb2N1bWVudExvYWRl
ciogZG9jdW1lbnRMb2FkZXIgPSBmcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKSkKICAg
ICAgICAgICAgIGRvY3VtZW50TG9hZGVyLT5zY2hlZHVsZShwYWlyKTsKICAgICAgICAgaWYgKERv
Y3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlciA9IGZyYW1lLT5sb2FkZXIoKS5wcm92aXNpb25h
bERvY3VtZW50TG9hZGVyKCkpCiAgICAgICAgICAgICBkb2N1bWVudExvYWRlci0+c2NoZWR1bGUo
cGFpcik7CiAgICAgfQotI2VuZGlmCiAKICAgICAvLyBGSVhNRTogbWFrZSBTaGFyZWRUaW1lck1h
YyB1c2UgdGhlc2UgU2NoZWR1bGVQYWlycy4KIH0KQEAgLTg5LDE0ICs4MywxMiBAQCB2b2lkIFBh
Z2U6OnJlbW92ZVNjaGVkdWxlUGFpcihSZWY8U2NoZWR1CiAKICAgICBtX3NjaGVkdWxlZFJ1bkxv
b3BQYWlycy0+cmVtb3ZlKHBhaXIucHRyKCkpOwogCi0jaWYgIVVTRShDRk5FVFdPUkspCiAgICAg
Zm9yIChGcmFtZSogZnJhbWUgPSAmbV9tYWluRnJhbWUuZ2V0KCk7IGZyYW1lOyBmcmFtZSA9IGZy
YW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KCkpIHsKICAgICAgICAgaWYgKERvY3VtZW50TG9hZGVy
KiBkb2N1bWVudExvYWRlciA9IGZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpKQogICAg
ICAgICAgICAgZG9jdW1lbnRMb2FkZXItPnVuc2NoZWR1bGUocGFpcik7CiAgICAgICAgIGlmIChE
b2N1bWVudExvYWRlciogZG9jdW1lbnRMb2FkZXIgPSBmcmFtZS0+bG9hZGVyKCkucHJvdmlzaW9u
YWxEb2N1bWVudExvYWRlcigpKQogICAgICAgICAgICAgZG9jdW1lbnRMb2FkZXItPnVuc2NoZWR1
bGUocGFpcik7CiAgICAgfQotI2VuZGlmCiB9CiAKIH0gLy8gbmFtZXNwYWNlCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakMubW0JKHJldmlzaW9uIDIwNzAzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakMubW0JKHdvcmtpbmcgY29weSkKQEAgLTEwOSwxMCArMTA5LDYgQEAKICNpbXBv
cnQgPFZpZGVvVG9vbGJveC9WaWRlb1Rvb2xib3guaD4KICNlbmRpZgogCi0jaWYgVVNFKENGTkVU
V09SSykKLSNpbmNsdWRlICJDRk5TVVJMQ29ubmVjdGlvblNQSS5oIgotI2VuZGlmCi0KICNpbXBv
cnQgIkNvcmVWaWRlb1NvZnRMaW5rLmgiCiAKIG5hbWVzcGFjZSBzdGQgewpAQCAtMzcyLDU4ICsz
NjgsNiBAQCBzdGF0aWMgZGlzcGF0Y2hfcXVldWVfdCBnbG9iYWxQdWxsRGVsZWdhCiB9CiAjZW5k
aWYKIAotI2lmIFVTRShDRk5FVFdPUkspCi1jbGFzcyBXZWJDb3JlTlNVUkxBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZUNsaWVudCA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYkNvcmVOU1VSTEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlQ2xpZW50PiwgcHVibGljIEF1dGhlbnRpY2F0aW9uQ2xpZW50IHsKLXB1
YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPFdlYkNvcmVOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlQ2xpZW50PiBjcmVhdGUoTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqY2hhbGxlbmdl
KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJDb3JlTlNVUkxBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZUNsaWVudChjaGFsbGVuZ2UpKTsKLSAgICB9Ci0KLSAgICB1c2luZyBS
ZWZDb3VudGVkPFdlYkNvcmVOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQ2xpZW50Pjo6cmVm
OwotICAgIHVzaW5nIFJlZkNvdW50ZWQ8V2ViQ29yZU5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVu
Z2VDbGllbnQ+OjpkZXJlZjsKLQotcHJpdmF0ZToKLSAgICBXZWJDb3JlTlNVUkxBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZUNsaWVudChOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICpjaGFsbGVu
Z2UpCi0gICAgICAgIDogbV9jaGFsbGVuZ2UoY2hhbGxlbmdlKQotICAgIHsKLSAgICAgICAgQVNT
RVJUKG1fY2hhbGxlbmdlKTsKLSAgICB9Ci0KLSAgICB2b2lkIHJlZkF1dGhlbnRpY2F0aW9uQ2xp
ZW50KCkgb3ZlcnJpZGUgeyByZWYoKTsgfQotICAgIHZvaWQgZGVyZWZBdXRoZW50aWNhdGlvbkNs
aWVudCgpIG92ZXJyaWRlIHsgZGVyZWYoKTsgfQotCi0gICAgdm9pZCByZWNlaXZlZENyZWRlbnRp
YWwoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmLCBjb25zdCBDcmVkZW50aWFsJiBjcmVk
ZW50aWFsKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgW1ttX2NoYWxsZW5nZSBzZW5kZXJdIHVz
ZUNyZWRlbnRpYWw6Y3JlZGVudGlhbC5uc0NyZWRlbnRpYWwoKSBmb3JBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZTptX2NoYWxsZW5nZS5nZXQoKV07Ci0gICAgfQotCi0gICAgdm9pZCByZWNlaXZlZFJl
cXVlc3RUb0NvbnRpbnVlV2l0aG91dENyZWRlbnRpYWwoY29uc3QgQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UmKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgW1ttX2NoYWxsZW5nZSBzZW5kZXJdIGNv
bnRpbnVlV2l0aG91dENyZWRlbnRpYWxGb3JBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTptX2NoYWxs
ZW5nZS5nZXQoKV07Ci0gICAgfQotCi0gICAgdm9pZCByZWNlaXZlZENhbmNlbGxhdGlvbihjb25z
dCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBbW21f
Y2hhbGxlbmdlIHNlbmRlcl0gY2FuY2VsQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6bV9jaGFsbGVu
Z2UuZ2V0KCldOwotICAgIH0KLQotICAgIHZvaWQgcmVjZWl2ZWRSZXF1ZXN0VG9QZXJmb3JtRGVm
YXVsdEhhbmRsaW5nKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikgb3ZlcnJpZGUKLSAg
ICB7Ci0gICAgICAgIGlmIChbW21fY2hhbGxlbmdlIHNlbmRlcl0gcmVzcG9uZHNUb1NlbGVjdG9y
OkBzZWxlY3RvcihwZXJmb3JtRGVmYXVsdEhhbmRsaW5nRm9yQXV0aGVudGljYXRpb25DaGFsbGVu
Z2U6KV0pCi0gICAgICAgICAgICBbW21fY2hhbGxlbmdlIHNlbmRlcl0gcGVyZm9ybURlZmF1bHRI
YW5kbGluZ0ZvckF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOm1fY2hhbGxlbmdlLmdldCgpXTsKLSAg
ICB9Ci0KLSAgICB2b2lkIHJlY2VpdmVkQ2hhbGxlbmdlUmVqZWN0aW9uKGNvbnN0IEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlJikgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIGlmIChbW21fY2hhbGxl
bmdlIHNlbmRlcl0gcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihyZWplY3RQcm90ZWN0aW9u
U3BhY2VBbmRDb250aW51ZVdpdGhDaGFsbGVuZ2U6KV0pCi0gICAgICAgICAgICBbW21fY2hhbGxl
bmdlIHNlbmRlcl0gcmVqZWN0UHJvdGVjdGlvblNwYWNlQW5kQ29udGludWVXaXRoQ2hhbGxlbmdl
Om1fY2hhbGxlbmdlLmdldCgpXTsKLSAgICB9Ci0KLSAgICBSZXRhaW5QdHI8TlNVUkxBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZT4gbV9jaGFsbGVuZ2U7Ci19OwotI2VuZGlmCi0KIHZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cmVnaXN0ZXJNZWRpYUVuZ2luZShNZWRpYUVu
Z2luZVJlZ2lzdHJhciByZWdpc3RyYXIpCiB7CiAgICAgaWYgKCFpc0F2YWlsYWJsZSgpKQpAQCAt
MTc5NywxNSArMTc0MSw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
QzoKIAogYm9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzaG91bGRXYWl0
Rm9yUmVzcG9uc2VUb0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKE5TVVJMQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UqIG5zQ2hhbGxlbmdlKQogewotI2lmIFVTRShDRk5FVFdPUkspCi0gICAgUmVmUHRy
PFdlYkNvcmVOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQ2xpZW50PiBjbGllbnQgPSBXZWJD
b3JlTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUNsaWVudDo6Y3JlYXRlKG5zQ2hhbGxlbmdl
KTsKLSAgICBSZXRhaW5QdHI8Q0ZVUkxBdXRoQ2hhbGxlbmdlUmVmPiBjZkNoYWxsZW5nZSA9IGFk
b3B0Q0YoW25zQ2hhbGxlbmdlIF9jcmVhdGVDRkF1dGhDaGFsbGVuZ2VdKTsKLSAgICBBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSBjaGFsbGVuZ2UoY2ZDaGFsbGVuZ2UuZ2V0KCksIGNsaWVudC5nZXQo
KSk7Ci0jZWxzZQotICAgIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIGNoYWxsZW5nZShuc0NoYWxs
ZW5nZSk7Ci0jZW5kaWYKLQotICAgIHJldHVybiBwbGF5ZXIoKS0+c2hvdWxkV2FpdEZvclJlc3Bv
bnNlVG9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZShjaGFsbGVuZ2UpOworICAgIHJldHVybiBwbGF5
ZXIoKS0+c2hvdWxkV2FpdEZvclJlc3BvbnNlVG9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZShBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZShuc0NoYWxsZW5nZSkpOwogfQogCiB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmRpZENhbmNlbExvYWRpbmdSZXF1ZXN0KEFWQXNzZXRS
ZXNvdXJjZUxvYWRpbmdSZXF1ZXN0KiBhdlJlcXVlc3QpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgJKHJldmlzaW9u
IDIwNzAzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50
ZXJmYWNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTc3LDcgKzc3LDcgQEAgdHlwZWRlZiBzdHJ1Y3Qg
X05TUmVjdCBOU1JlY3Q7CiAjaW5jbHVkZSA8Q29yZUdyYXBoaWNzL0NvcmVHcmFwaGljcy5oPgog
I2VuZGlmCiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiB0
eXBlZGVmIHN0cnVjdCBPcGFxdWVDRkhUVFBDb29raWVTdG9yYWdlKiAgQ0ZIVFRQQ29va2llU3Rv
cmFnZVJlZjsKIHR5cGVkZWYgc3RydWN0IF9DRlVSTFByb3RlY3Rpb25TcGFjZSogQ0ZVUkxQcm90
ZWN0aW9uU3BhY2VSZWY7CiB0eXBlZGVmIHN0cnVjdCBfQ0ZVUkxDcmVkZW50aWFsKiBXS0NGVVJM
Q3JlZGVudGlhbFJlZjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0
d29ya1N0b3JhZ2VTZXNzaW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaAkocmV2aXNpb24gMjA3MDM5KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaAko
d29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNyBAQAogI2luY2x1ZGUgIlNlc3Npb25JRC5oIgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCi0jaWYgUExBVEZPUk0oQ09DT0EpIHx8
IFVTRShDRk5FVFdPUkspCisjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRlVSTENPTk5FQ1RJ
T04pCiAjaW5jbHVkZSAiQ0ZOZXR3b3JrU1BJLmgiCiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5o
PgogI2VuZGlmCkBAIC01OSw3ICs1OSw3IEBAIHB1YmxpYzoKICAgICBTZXNzaW9uSUQgc2Vzc2lv
bklEKCkgY29uc3QgeyByZXR1cm4gbV9zZXNzaW9uSUQ7IH0KICAgICBDcmVkZW50aWFsU3RvcmFn
ZSYgY3JlZGVudGlhbFN0b3JhZ2UoKSB7IHJldHVybiBtX2NyZWRlbnRpYWxTdG9yYWdlOyB9CiAK
LSNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKENGTkVUV09SSykKKyNpZiBQTEFURk9STShDT0NP
QSkgfHwgVVNFKENGVVJMQ09OTkVDVElPTikKICAgICBOZXR3b3JrU3RvcmFnZVNlc3Npb24oU2Vz
c2lvbklELCBSZXRhaW5QdHI8Q0ZVUkxTdG9yYWdlU2Vzc2lvblJlZj4pOwogCiAgICAgLy8gTWF5
IGJlIG51bGwsIGluIHdoaWNoIGNhc2UgYSBGb3VuZGF0aW9uIGRlZmF1bHQgc2hvdWxkIGJlIHVz
ZWQuCkBAIC04NCw3ICs4NCw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIEhhc2hNYXA8U2Vzc2lv
bklELCBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya1N0b3JhZ2VTZXNzaW9uPj4mIGdsb2JhbFNlc3Np
b25NYXAoKTsKICAgICBTZXNzaW9uSUQgbV9zZXNzaW9uSUQ7CiAKLSNpZiBQTEFURk9STShDT0NP
QSkgfHwgVVNFKENGTkVUV09SSykKKyNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKENGVVJMQ09O
TkVDVElPTikKICAgICBSZXRhaW5QdHI8Q0ZVUkxTdG9yYWdlU2Vzc2lvblJlZj4gbV9wbGF0Zm9y
bVNlc3Npb247CiAjZWxpZiBVU0UoU09VUCkKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U291cE5ldHdv
cmtTZXNzaW9uPiBtX3Nlc3Npb247CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL1Byb3RlY3Rpb25TcGFjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvUHJvdGVjdGlvblNwYWNlLmgJKHJldmlzaW9uIDIwNzAzOSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUHJvdGVjdGlvblNwYWNlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTIzLDEyICsyMywxMSBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAotI2lmbmRlZiBQ
cm90ZWN0aW9uU3BhY2VfaAotI2RlZmluZSBQcm90ZWN0aW9uU3BhY2VfaAorI3ByYWdtYSBvbmNl
CiAKICNpZiBQTEFURk9STShDT0NPQSkKICNpbmNsdWRlICJQcm90ZWN0aW9uU3BhY2VDb2NvYS5o
IgotI2VsaWYgVVNFKENGTkVUV09SSykKKyNlbGlmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAjaW5j
bHVkZSAiUHJvdGVjdGlvblNwYWNlQ0ZOZXQuaCIKICNlbHNlCiAKQEAgLTUwLDUgKzQ5LDMgQEAg
cHVibGljOgogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYKLQotI2VuZGlmIC8vIFBy
b3RlY3Rpb25TcGFjZV9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1By
b3RlY3Rpb25TcGFjZUJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvUHJvdGVjdGlvblNwYWNlQmFzZS5jcHAJKHJldmlzaW9uIDIwNzAzOSkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUHJvdGVjdGlvblNwYWNlQmFzZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI3LDExICsyNyw2IEBACiAKICNpbmNsdWRlICJQcm90ZWN0aW9u
U3BhY2UuaCIKIAotI2lmIFVTRShDRk5FVFdPUkspICYmICFQTEFURk9STShDT0NPQSkKLSNpbmNs
dWRlICJBdXRoZW50aWNhdGlvbkNGLmgiCi0jaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGVVJMUHJvdGVj
dGlvblNwYWNlUHJpdi5oPgotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogLy8gTmVl
ZCB0byBlbmZvcmNlIGVtcHR5LCBub24tbnVsbCBzdHJpbmdzIGR1ZSB0byB0aGUgcGlja2luZXNz
IG9mIHRoZSBTdHJpbmcgPT0gU3RyaW5nIG9wZXJhdG9yCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmNwcAkocmV2aXNpb24gMjA3
MDM5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE1NCw3ICsxNTQsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxl
OjpjbGVhckNsaWVudCgpCiAgICAgZC0+bV9jbGllbnQgPSBudWxscHRyOwogfQogCi0jaWYgIVBM
QVRGT1JNKENPQ09BKSAmJiAhVVNFKENGTkVUV09SSykgJiYgIVVTRShTT1VQKQorI2lmICFQTEFU
Rk9STShDT0NPQSkgJiYgIVVTRShDRlVSTENPTk5FQ1RJT04pICYmICFVU0UoU09VUCkKIC8vIFJl
c291cmNlSGFuZGxlIG5ldmVyIHVzZXMgYXN5bmMgY2xpZW50IGNhbGxzIG9uIHRoZXNlIHBsYXRm
b3JtcyB5ZXQuCiB2b2lkIFJlc291cmNlSGFuZGxlOjpjb250aW51ZVdpbGxTZW5kUmVxdWVzdChS
ZXNvdXJjZVJlcXVlc3QmJikKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VIYW5kbGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmgJKHJldmlzaW9uIDIwNzAzOSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaAkod29ya2luZyBjb3B5KQpA
QCAtMzEsNyArMzEsNyBAQAogI2luY2x1ZGUgIlJlc291cmNlTG9hZFByaW9yaXR5LmgiCiAjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAotI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZO
RVRXT1JLKQorI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogI2lu
Y2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNlbmRpZgogCkBAIC02MCwxNCArNjAsMTQgQEAgdHlw
ZWRlZiBzdHJ1Y3Qgb2JqY19vYmplY3QgKmlkOwogI2VuZGlmCiAjZW5kaWYKIAotI2lmIFVTRShD
Rk5FVFdPUkspCisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKIHR5cGVkZWYgY29uc3Qgc3RydWN0
IF9DRkNhY2hlZFVSTFJlc3BvbnNlKiBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmOwogdHlwZWRlZiBz
dHJ1Y3QgX0NGVVJMQ29ubmVjdGlvbiogQ0ZVUkxDb25uZWN0aW9uUmVmOwogdHlwZWRlZiBpbnQg
Q0ZIVFRQQ29va2llU3RvcmFnZUFjY2VwdFBvbGljeTsKIHR5cGVkZWYgc3RydWN0IE9wYXF1ZUNG
SFRUUENvb2tpZVN0b3JhZ2UqIENGSFRUUENvb2tpZVN0b3JhZ2VSZWY7CiAjZW5kaWYKIAotI2lm
IFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZORVRXT1JLKQorI2lmIFBMQVRGT1JNKENPQ09BKSB8
fCBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgX19DRlVSTFN0b3Jh
Z2VTZXNzaW9uKiBDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmOwogI2VuZGlmCiAKQEAgLTkyLDIyICs5
MiwxNyBAQCBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xh
c3MgVGltZXI7CiAKLWNsYXNzIFJlc291cmNlSGFuZGxlIDogcHVibGljIFJlZkNvdW50ZWQ8UmVz
b3VyY2VIYW5kbGU+Ci0jaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRk5FVFdPUkspIHx8IFVT
RShDVVJMKSB8fCBVU0UoU09VUCkKLSAgICAsIHB1YmxpYyBBdXRoZW50aWNhdGlvbkNsaWVudAot
I2VuZGlmCi0gICAgeworY2xhc3MgUmVzb3VyY2VIYW5kbGUgOiBwdWJsaWMgUmVmQ291bnRlZDxS
ZXNvdXJjZUhhbmRsZT4gLCBwdWJsaWMgQXV0aGVudGljYXRpb25DbGllbnQgewogcHVibGljOgog
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8UmVzb3VyY2VIYW5kbGU+IGNyZWF0ZShO
ZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFJlc291cmNlSGFuZGxl
Q2xpZW50KiwgYm9vbCBkZWZlcnNMb2FkaW5nLCBib29sIHNob3VsZENvbnRlbnRTbmlmZik7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgbG9hZFJlc291cmNlU3luY2hyb25vdXNseShO
ZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFN0b3JlZENyZWRlbnRp
YWxzLCBSZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VSZXNwb25zZSYsIFZlY3RvcjxjaGFyPiYgZGF0
YSk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5SZXNvdXJjZUhhbmRsZSgpOwogCi0j
aWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRk5FVFdPUkspCisjaWYgUExBVEZPUk0oQ09DT0Ep
IHx8IFVTRShDRlVSTENPTk5FQ1RJT04pCiAgICAgUmVzb3VyY2VSZXF1ZXN0IHdpbGxTZW5kUmVx
dWVzdChSZXNvdXJjZVJlcXVlc3QmJiwgUmVzb3VyY2VSZXNwb25zZSYmKTsKICNlbmRpZgogCi0j
aWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRk5FVFdPUkspIHx8IFVTRShDVVJMKSB8fCBVU0Uo
U09VUCkKICAgICBib29sIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKCk7CiAgICAgdm9pZCBk
aWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY29uc3QgQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UmKTsKICAgICB2b2lkIHJlY2VpdmVkQ3JlZGVudGlhbChjb25zdCBBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSYsIGNvbnN0IENyZWRlbnRpYWwmKSBvdmVycmlkZTsKQEAgLTExNSw5ICsxMTAs
OCBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWNlaXZlZENhbmNlbGxhdGlvbihjb25zdCBBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVjZWl2ZWRSZXF1ZXN0VG9Q
ZXJmb3JtRGVmYXVsdEhhbmRsaW5nKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikgb3Zl
cnJpZGU7CiAgICAgdm9pZCByZWNlaXZlZENoYWxsZW5nZVJlamVjdGlvbihjb25zdCBBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSYpIG92ZXJyaWRlOwotI2VuZGlmCiAKLSNpZiBQTEFURk9STShDT0NP
QSkgfHwgVVNFKENGTkVUV09SSykKKyNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKENGVVJMQ09O
TkVDVElPTikKICAgICBib29sIHRyeUhhbmRsZVBhc3N3b3JkQmFzZWRBdXRoZW50aWNhdGlvbihj
b25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpOwogI2VuZGlmCiAKQEAgLTEyNSw3ICsxMTks
NyBAQCBwdWJsaWM6CiAgICAgYm9vbCBjYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNw
YWNlKGNvbnN0IFByb3RlY3Rpb25TcGFjZSYpOwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShDT0NP
QSkgJiYgIVVTRShDRk5FVFdPUkspCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgV0VCQ09SRV9F
WFBPUlQgTlNVUkxDb25uZWN0aW9uICpjb25uZWN0aW9uKCkgY29uc3Q7CiAgICAgaWQgbWFrZURl
bGVnYXRlKGJvb2wpOwogICAgIGlkIGRlbGVnYXRlKCk7CkBAIC0xMzMsMTkgKzEyNywxNSBAQCBw
dWJsaWM6CiAjZW5kaWYKICAgICAgICAgCiAjaWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShX
RUJfVElNSU5HKQotI2lmIFVTRShDRk5FVFdPUkspCi0gICAgc3RhdGljIHZvaWQgZ2V0Q29ubmVj
dGlvblRpbWluZ0RhdGEoQ0ZVUkxDb25uZWN0aW9uUmVmLCBOZXR3b3JrTG9hZFRpbWluZyYpOwot
I2Vsc2UKICAgICBzdGF0aWMgdm9pZCBnZXRDb25uZWN0aW9uVGltaW5nRGF0YShOU1VSTENvbm5l
Y3Rpb24gKiwgTmV0d29ya0xvYWRUaW1pbmcmKTsKICNlbmRpZgotI2VuZGlmCiAgICAgICAgIAog
I2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZvaWQgc2NoZWR1bGUoV1RGOjpTY2hlZHVsZVBhaXIm
KTsKICAgICB2b2lkIHVuc2NoZWR1bGUoV1RGOjpTY2hlZHVsZVBhaXImKTsKICNlbmRpZgogCi0j
aWYgVVNFKENGTkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogICAgIENGVVJMU3Rv
cmFnZVNlc3Npb25SZWYgc3RvcmFnZVNlc3Npb24oKSBjb25zdDsKICAgICBDRlVSTENvbm5lY3Rp
b25SZWYgY29ubmVjdGlvbigpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxD
RlVSTENvbm5lY3Rpb25SZWY+IHJlbGVhc2VDb25uZWN0aW9uRm9yRG93bmxvYWQoKTsKQEAgLTIw
OCwxMCArMTk4LDEwIEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgLy8gQ2FsbGVkIGluIHJlc3Bv
bnNlIHRvIFJlc291cmNlSGFuZGxlQ2xpZW50Ojp3aWxsQ2FjaGVSZXNwb25zZUFzeW5jKCkuCi0j
aWYgVVNFKENGTkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgY29udGludWVXaWxsQ2FjaGVSZXNwb25zZShDRkNhY2hlZFVSTFJlc3BvbnNl
UmVmKTsKICNlbmRpZgotI2lmIFBMQVRGT1JNKENPQ09BKSAmJiAhVVNFKENGTkVUV09SSykKKyNp
ZiBQTEFURk9STShDT0NPQSkKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvbnRpbnVlV2lsbENh
Y2hlUmVzcG9uc2UoTlNDYWNoZWRVUkxSZXNwb25zZSAqKTsKICNlbmRpZgogCkBAIC0yMjcsMTQg
KzIxNywxMCBAQCBwdWJsaWM6CiAgICAgdXNpbmcgUmVmQ291bnRlZDxSZXNvdXJjZUhhbmRsZT46
OnJlZjsKICAgICB1c2luZyBSZWZDb3VudGVkPFJlc291cmNlSGFuZGxlPjo6ZGVyZWY7CiAKLSNp
ZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKENGTkVUV09SSykKKyNpZiBQTEFURk9STShDT0NPQSkg
fHwgVVNFKENGVVJMQ09OTkVDVElPTikKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgQ0ZTdHJp
bmdSZWYgc3luY2hyb25vdXNMb2FkUnVuTG9vcE1vZGUoKTsKICNlbmRpZgogCi0jaWYgUExBVEZP
Uk0oSU9TKSAmJiBVU0UoQ0ZORVRXT1JLKQotICAgIHN0YXRpYyBDRk11dGFibGVEaWN0aW9uYXJ5
UmVmIGNyZWF0ZVNTTFByb3BlcnRpZXNGcm9tTlNVUkxSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVx
dWVzdCYpOwotI2VuZGlmCi0KICAgICB0eXBlZGVmIFJlZjxSZXNvdXJjZUhhbmRsZT4gKCpCdWls
dGluQ29uc3RydWN0b3IpKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVzb3VyY2VI
YW5kbGVDbGllbnQqIGNsaWVudCk7CiAgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJCdWlsdGluQ29u
c3RydWN0b3IoY29uc3QgQXRvbWljU3RyaW5nJiBwcm90b2NvbCwgQnVpbHRpbkNvbnN0cnVjdG9y
KTsKIApAQCAtMjYzLDE5ICsyNDksMTkgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlZkF1dGhlbnRp
Y2F0aW9uQ2xpZW50KCkgb3ZlcnJpZGUgeyByZWYoKTsgfQogICAgIHZvaWQgZGVyZWZBdXRoZW50
aWNhdGlvbkNsaWVudCgpIG92ZXJyaWRlIHsgZGVyZWYoKTsgfQogCi0jaWYgUExBVEZPUk0oQ09D
T0EpIHx8IFVTRShDRk5FVFdPUkspCisjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRlVSTENP
Tk5FQ1RJT04pCiAgICAgZW51bSBjbGFzcyBTY2hlZHVsaW5nQmVoYXZpb3IgeyBBc3luY2hyb25v
dXMsIFN5bmNocm9ub3VzIH07CiAjZW5kaWYKIAotI2lmIFVTRShDRk5FVFdPUkspCisjaWYgVVNF
KENGVVJMQ09OTkVDVElPTikKICAgICB2b2lkIGNyZWF0ZUNGVVJMQ29ubmVjdGlvbihib29sIHNo
b3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlLCBib29sIHNob3VsZENvbnRlbnRTbmlmZiwgU2NoZWR1
bGluZ0JlaGF2aW9yLCBDRkRpY3Rpb25hcnlSZWYgY2xpZW50UHJvcGVydGllcyk7CiAjZW5kaWYK
IAotI2lmIFBMQVRGT1JNKE1BQykgJiYgIVVTRShDRk5FVFdPUkspCisjaWYgUExBVEZPUk0oTUFD
KQogICAgIHZvaWQgY3JlYXRlTlNVUkxDb25uZWN0aW9uKGlkIGRlbGVnYXRlLCBib29sIHNob3Vs
ZFVzZUNyZWRlbnRpYWxTdG9yYWdlLCBib29sIHNob3VsZENvbnRlbnRTbmlmZiwgU2NoZWR1bGlu
Z0JlaGF2aW9yKTsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oSU9TKSAmJiAhVVNFKENGTkVUV09S
SykKKyNpZiBQTEFURk9STShJT1MpCiAgICAgdm9pZCBjcmVhdGVOU1VSTENvbm5lY3Rpb24oaWQg
ZGVsZWdhdGUsIGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UsIGJvb2wgc2hvdWxkQ29u
dGVudFNuaWZmLCBTY2hlZHVsaW5nQmVoYXZpb3IsIE5TRGljdGlvbmFyeSAqY29ubmVjdGlvblBy
b3BlcnRpZXMpOwogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwCShyZXZpc2lvbiAyMDcw
MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xp
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjIsNyArNjIsNyBAQCB2b2lkIFJlc291cmNlSGFu
ZGxlQ2xpZW50OjpjYW5BdXRoZW50aWNhCiB9CiAjZW5kaWYKIAotI2lmIFVTRShDRk5FVFdPUksp
CisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKIHZvaWQgUmVzb3VyY2VIYW5kbGVDbGllbnQ6Ondp
bGxDYWNoZVJlc3BvbnNlQXN5bmMoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgQ0ZDYWNoZWRVUkxS
ZXNwb25zZVJlZiByZXNwb25zZSkKIHsKICAgICBoYW5kbGUtPmNvbnRpbnVlV2lsbENhY2hlUmVz
cG9uc2UocmVzcG9uc2UpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZUhhbmRsZUNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaAkocmV2aXNpb24gMjA3MDM5KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yOSwxMiArMjksMTIgQEAKICNpbmNsdWRlICJQbGF0Zm9ybUV4cG9y
dE1hY3Jvcy5oIgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KIAotI2lmIFVTRShDRk5FVFdPUkspCisj
aWYgVVNFKENGVVJMQ09OTkVDVElPTikKICNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZVUkxDYWNoZVBy
aXYuaD4KICNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZVUkxSZXNwb25zZVByaXYuaD4KICNlbmRpZgog
Ci0jaWYgUExBVEZPUk0oSU9TKSB8fCBVU0UoQ0ZORVRXT1JLKQorI2lmIFBMQVRGT1JNKElPUykg
fHwgVVNFKENGVVJMQ09OTkVDVElPTikKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjZW5k
aWYKIApAQCAtOTYsNyArOTYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFdFQkNP
UkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBjYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNw
YWNlQXN5bmMoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBQcm90ZWN0aW9uU3BhY2UmKTsKICNlbmRp
ZgogICAgICAgICAvLyBDbGllbnQgd2lsbCBwYXNzIGFuIHVwZGF0ZWQgcmVxdWVzdCB1c2luZyBS
ZXNvdXJjZUhhbmRsZTo6Y29udGludWVXaWxsQ2FjaGVSZXNwb25zZSgpIHdoZW4gcmVhZHkuCi0j
aWYgVVNFKENGTkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogICAgICAgICBXRUJD
T1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgd2lsbENhY2hlUmVzcG9uc2VBc3luYyhSZXNvdXJjZUhh
bmRsZSosIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYpOwogI2VsaWYgUExBVEZPUk0oQ09DT0EpCiAg
ICAgICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCB3aWxsQ2FjaGVSZXNwb25zZUFzeW5j
KFJlc291cmNlSGFuZGxlKiwgTlNDYWNoZWRVUkxSZXNwb25zZSAqKTsKQEAgLTExOCwxNiArMTE4
LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNlbmRpZgogICAgICAgICB2aXJ0dWFsIHZvaWQg
cmVjZWl2ZWRDYW5jZWxsYXRpb24oUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSYpIHsgfQogCi0jaWYgUExBVEZPUk0oSU9TKSB8fCBVU0UoQ0ZORVRXT1JLKQor
I2lmIFBMQVRGT1JNKElPUykgfHwgVVNFKENGVVJMQ09OTkVDVElPTikKICAgICAgICAgdmlydHVh
bCBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBjb25uZWN0aW9uUHJvcGVydGllcyhSZXNvdXJj
ZUhhbmRsZSopIHsgcmV0dXJuIG51bGxwdHI7IH0KICNlbmRpZgogCi0jaWYgVVNFKENGTkVUV09S
SykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogICAgICAgICB2aXJ0dWFsIENGQ2FjaGVkVVJM
UmVzcG9uc2VSZWYgd2lsbENhY2hlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqLCBDRkNhY2hlZFVS
TFJlc3BvbnNlUmVmIHJlc3BvbnNlKSB7IHJldHVybiByZXNwb25zZTsgfQotI2lmIFBMQVRGT1JN
KFdJTikKICAgICAgICAgdmlydHVhbCBib29sIHNob3VsZENhY2hlUmVzcG9uc2UoUmVzb3VyY2VI
YW5kbGUqLCBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmKSB7IHJldHVybiB0cnVlOyB9Ci0jZW5kaWYg
Ly8gUExBVEZPUk0oV0lOKQotCiAjZWxpZiBQTEFURk9STShDT0NPQSkKICAgICAgICAgdmlydHVh
bCBOU0NhY2hlZFVSTFJlc3BvbnNlICp3aWxsQ2FjaGVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSos
IE5TQ2FjaGVkVVJMUmVzcG9uc2UgKnJlc3BvbnNlKSB7IHJldHVybiByZXNwb25zZTsgfQogI2Vu
ZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxl
SW50ZXJuYWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaAkocmV2aXNpb24gMjA3MDM5KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTMzLDcgKzMzLDcgQEAKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZS5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQorI2lmIFVTRShD
RlVSTENPTk5FQ1RJT04pCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25E
ZWxlZ2F0ZS5oIgogI2luY2x1ZGUgPENGTmV0d29yay9DRlVSTENvbm5lY3Rpb25Qcml2Lmg+CiAj
ZW5kaWYKQEAgLTYxLDcgKzYxLDcgQEAgT0JKQ19DTEFTUyBOU1VSTEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlOwogT0JKQ19DTEFTUyBOU1VSTENvbm5lY3Rpb247CiAjZW5kaWYKIAotI2lmIFBMQVRG
T1JNKENPQ09BKSB8fCBVU0UoQ0ZORVRXT1JLKQorI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0Uo
Q0ZVUkxDT05ORUNUSU9OKQogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgX19DRlVSTFN0b3JhZ2VTZXNz
aW9uKiBDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmOwogI2VuZGlmCiAKQEAgLTgzLDcgKzgzLDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgLCBtX2RlZmVyc0xvYWRpbmcoZGVmZXJz
TG9hZGluZykKICAgICAgICAgICAgICwgbV9zaG91bGRDb250ZW50U25pZmYoc2hvdWxkQ29udGVu
dFNuaWZmKQogICAgICAgICAgICAgLCBtX3VzZXNBc3luY0NhbGxiYWNrcyhjbGllbnQgJiYgY2xp
ZW50LT51c2VzQXN5bmNDYWxsYmFja3MoKSkKLSNpZiBVU0UoQ0ZORVRXT1JLKQorI2lmIFVTRShD
RlVSTENPTk5FQ1RJT04pCiAgICAgICAgICAgICAsIG1fY3VycmVudFJlcXVlc3QocmVxdWVzdCkK
ICNlbmRpZgogI2lmIFVTRShDVVJMKQpAQCAtMTMxLDE5ICsxMzEsMTkgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgICAgICBib29sIG1fZGVmZXJzTG9hZGluZzsKICAgICAgICAgYm9vbCBtX3No
b3VsZENvbnRlbnRTbmlmZjsKICAgICAgICAgYm9vbCBtX3VzZXNBc3luY0NhbGxiYWNrczsKLSNp
ZiBVU0UoQ0ZORVRXT1JLKQorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAgICAgICAgIFJldGFp
blB0cjxDRlVSTENvbm5lY3Rpb25SZWY+IG1fY29ubmVjdGlvbjsKICAgICAgICAgUmVzb3VyY2VS
ZXF1ZXN0IG1fY3VycmVudFJlcXVlc3Q7CiAgICAgICAgIFJlZlB0cjxSZXNvdXJjZUhhbmRsZUNG
VVJMQ29ubmVjdGlvbkRlbGVnYXRlPiBtX2Nvbm5lY3Rpb25EZWxlZ2F0ZTsKICNlbmRpZgotI2lm
IFBMQVRGT1JNKENPQ09BKSAmJiAhVVNFKENGTkVUV09SSykKKyNpZiBQTEFURk9STShDT0NPQSkK
ICAgICAgICAgUmV0YWluUHRyPE5TVVJMQ29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOwogICAgICAg
ICBSZXRhaW5QdHI8aWQ+IG1fZGVsZWdhdGU7CiAjZW5kaWYKICNpZiBQTEFURk9STShDT0NPQSkK
ICAgICAgICAgYm9vbCBtX3N0YXJ0V2hlblNjaGVkdWxlZDsKICNlbmRpZgotI2lmIFBMQVRGT1JN
KENPQ09BKSB8fCBVU0UoQ0ZORVRXT1JLKQorI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZV
UkxDT05ORUNUSU9OKQogICAgICAgICBSZXRhaW5QdHI8Q0ZVUkxTdG9yYWdlU2Vzc2lvblJlZj4g
bV9zdG9yYWdlU2Vzc2lvbjsKICNlbmRpZgogI2lmIFVTRShDVVJMKQpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2Uu
Y3BwCShyZXZpc2lvbiAyMDcwMzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotI2lmICFVU0UoU09VUCkgJiYgKCFQTEFURk9STShD
T0NPQSkgfHwgVVNFKENGTkVUV09SSykpCisjaWYgIVVTRShTT1VQKSAmJiAoIVBMQVRGT1JNKENP
Q09BKSB8fCBVU0UoQ0ZVUkxDT05ORUNUSU9OKSkKIGRvdWJsZSBSZXNvdXJjZVJlcXVlc3RCYXNl
OjpzX2RlZmF1bHRUaW1lb3V0SW50ZXJ2YWwgPSBJTlRfTUFYOwogI2Vsc2UKIC8vIFdpbGwgdXNl
IE5TVVJMUmVxdWVzdCBkZWZhdWx0IHRpbWVvdXQgdW5sZXNzIHNldCB0byBhIG5vbi16ZXJvIHZh
bHVlIHdpdGggc2V0RGVmYXVsdFRpbWVvdXRJbnRlcnZhbCgpLgpAQCAtNjAyLDcgKzYwMiw3IEBA
IHZvaWQgUmVzb3VyY2VSZXF1ZXN0QmFzZTo6dXBkYXRlUmVzb3VyY2UKICAgICB9CiB9CiAKLSNp
ZiAhUExBVEZPUk0oQ09DT0EpICYmICFVU0UoQ0ZORVRXT1JLKSAmJiAhVVNFKFNPVVApCisjaWYg
IVBMQVRGT1JNKENPQ09BKSAmJiAhVVNFKENGVVJMQ09OTkVDVElPTikgJiYgIVVTRShTT1VQKQog
dW5zaWduZWQgaW5pdGlhbGl6ZU1heGltdW1IVFRQQ29ubmVjdGlvbkNvdW50UGVySG9zdCgpCiB7
CiAgICAgLy8gVGhpcyBpcyB1c2VkIGJ5IHRoZSBsb2FkZXIgdG8gY29udHJvbCB0aGUgbnVtYmVy
IG9mIGlzc3VlZCBwYXJhbGxlbCBsb2FkIHJlcXVlc3RzLiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY2YvQXV0aGVudGljYXRpb25DRi5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9BdXRoZW50aWNhdGlvbkNGLmNwcAko
cmV2aXNpb24gMjA3MDM5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9B
dXRoZW50aWNhdGlvbkNGLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ0YuaCIKIAotI2lmIFVT
RShDRk5FVFdPUkspCisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKIAogI2luY2x1ZGUgIkF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlLmgiCiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25DbGllbnQuaCIK
QEAgLTUxLDE4ICs1MSw4IEBAIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjpBdXRoZW50aWNhdGlv
bkMKIHsKIH0KIAotQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6OkF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlKENGVVJMQXV0aENoYWxsZW5nZVJlZiBjZkNoYWxsZW5nZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBdXRoZW50aWNhdGlvbkNsaWVudCogYXV0
aGVudGljYXRpb25DbGllbnQpCi0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgOiBBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZUJhc2UoUHJvdGVjdGlvblNwYWNlKENGVVJMQXV0aENoYWxsZW5nZUdldFBy
b3RlY3Rpb25TcGFjZShjZkNoYWxsZW5nZSkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIENyZWRlbnRpYWwoQ0ZVUkxBdXRoQ2hhbGxlbmdlR2V0UHJvcG9zZWRDcmVkZW50aWFs
KGNmQ2hhbGxlbmdlKSksCi0jZWxzZQotICAgIDogQXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNl
KGNvcmUoQ0ZVUkxBdXRoQ2hhbGxlbmdlR2V0UHJvdGVjdGlvblNwYWNlKGNmQ2hhbGxlbmdlKSks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29yZShDRlVSTEF1dGhDaGFsbGVu
Z2VHZXRQcm9wb3NlZENyZWRlbnRpYWwoY2ZDaGFsbGVuZ2UpKSwKLSNlbmRpZgotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIENGVVJMQXV0aENoYWxsZW5nZUdldFByZXZpb3VzRmFp
bHVyZUNvdW50KGNmQ2hhbGxlbmdlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAoQ0ZVUkxSZXNwb25zZVJlZilDRlVSTEF1dGhDaGFsbGVuZ2VHZXRGYWlsdXJlUmVzcG9uc2Uo
Y2ZDaGFsbGVuZ2UpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENGVVJMQXV0
aENoYWxsZW5nZUdldEVycm9yKGNmQ2hhbGxlbmdlKSkKK0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShDRlVSTEF1dGhDaGFsbGVuZ2VSZWYgY2ZDaGFsbGVu
Z2UsIEF1dGhlbnRpY2F0aW9uQ2xpZW50KiBhdXRoZW50aWNhdGlvbkNsaWVudCkKKyAgICA6IEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZShjb3JlKENGVVJMQXV0aENoYWxsZW5nZUdldFByb3Rl
Y3Rpb25TcGFjZShjZkNoYWxsZW5nZSkpLCBjb3JlKENGVVJMQXV0aENoYWxsZW5nZUdldFByb3Bv
c2VkQ3JlZGVudGlhbChjZkNoYWxsZW5nZSkpLCBDRlVSTEF1dGhDaGFsbGVuZ2VHZXRQcmV2aW91
c0ZhaWx1cmVDb3VudChjZkNoYWxsZW5nZSksIChDRlVSTFJlc3BvbnNlUmVmKUNGVVJMQXV0aENo
YWxsZW5nZUdldEZhaWx1cmVSZXNwb25zZShjZkNoYWxsZW5nZSksIENGVVJMQXV0aENoYWxsZW5n
ZUdldEVycm9yKGNmQ2hhbGxlbmdlKSkKICAgICAsIG1fYXV0aGVudGljYXRpb25DbGllbnQoYXV0
aGVudGljYXRpb25DbGllbnQpCiAgICAgLCBtX2NmQ2hhbGxlbmdlKGNmQ2hhbGxlbmdlKQogewpA
QCAtOTMsMjIgKzgzLDEyIEBAIENGVVJMQXV0aENoYWxsZW5nZVJlZiBjcmVhdGVDRihjb25zdCBB
dXQKIHsKICAgICAvLyBGSVhNRTogV2h5IG5vdCBjYWNoZSBDRlVSTEF1dGhDaGFsbGVuZ2VSZWYg
aW4gbV9jZkNoYWxsZW5nZT8gRm91bmRhdGlvbiBjb3VudGVycGFydCBkb2VzIHRoYXQuCiAKLSNp
ZiBQTEFURk9STShDT0NPQSkKLSAgICBDRlVSTEF1dGhDaGFsbGVuZ2VSZWYgcmVzdWx0ID0gQ0ZV
UkxBdXRoQ2hhbGxlbmdlQ3JlYXRlKDAsIGNvcmVDaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlKCku
Y2ZTcGFjZSgpLCBjb3JlQ2hhbGxlbmdlLnByb3Bvc2VkQ3JlZGVudGlhbCgpLmNmQ3JlZGVudGlh
bCgpLAotI2Vsc2UKICAgICBSZXRhaW5QdHI8Q0ZVUkxDcmVkZW50aWFsUmVmPiBjcmVkZW50aWFs
ID0gYWRvcHRDRihjcmVhdGVDRihjb3JlQ2hhbGxlbmdlLnByb3Bvc2VkQ3JlZGVudGlhbCgpKSk7
CiAgICAgUmV0YWluUHRyPENGVVJMUHJvdGVjdGlvblNwYWNlUmVmPiBwcm90ZWN0aW9uU3BhY2Ug
PSBhZG9wdENGKGNyZWF0ZUNGKGNvcmVDaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlKCkpKTsKIAot
ICAgIENGVVJMQXV0aENoYWxsZW5nZVJlZiByZXN1bHQgPSBDRlVSTEF1dGhDaGFsbGVuZ2VDcmVh
dGUoMCwgcHJvdGVjdGlvblNwYWNlLmdldCgpLCBjcmVkZW50aWFsLmdldCgpLAotI2VuZGlmCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29yZUNoYWxsZW5nZS5wcmV2
aW91c0ZhaWx1cmVDb3VudCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvcmVDaGFsbGVuZ2UuZmFpbHVyZVJlc3BvbnNlKCkuY2ZVUkxSZXNwb25zZSgpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvcmVDaGFsbGVuZ2UuZXJyb3Io
KSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gQ0ZVUkxBdXRoQ2hhbGxlbmdlQ3Jl
YXRlKDAsIHByb3RlY3Rpb25TcGFjZS5nZXQoKSwgY3JlZGVudGlhbC5nZXQoKSwgY29yZUNoYWxs
ZW5nZS5wcmV2aW91c0ZhaWx1cmVDb3VudCgpLCBjb3JlQ2hhbGxlbmdlLmZhaWx1cmVSZXNwb25z
ZSgpLmNmVVJMUmVzcG9uc2UoKSwgY29yZUNoYWxsZW5nZS5lcnJvcigpKTsKIH0KIAotI2lmIFBM
QVRGT1JNKFdJTikKLQogQ0ZVUkxDcmVkZW50aWFsUmVmIGNyZWF0ZUNGKGNvbnN0IENyZWRlbnRp
YWwmIGNvcmVDcmVkZW50aWFsKQogewogICAgIENGVVJMQ3JlZGVudGlhbFBlcnNpc3RlbmNlIHBl
cnNpc3RlbmNlID0ga0NGVVJMQ3JlZGVudGlhbFBlcnNpc3RlbmNlTm9uZTsKQEAgLTI5MCw4ICsy
NzAsNyBAQCBQcm90ZWN0aW9uU3BhY2UgY29yZShDRlVSTFByb3RlY3Rpb25TcGFjCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBDRlVSTFByb3RlY3Rpb25TcGFjZUdldFJlYWxtKGNmU3BhY2Up
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NoZW1lKTsKIH0KLSNlbmRpZiAvLyBQTEFU
Rk9STShXSU4pCiAKIH07CiAKLSNlbmRpZiAvLyBVU0UoQ0ZORVRXT1JLKQorI2VuZGlmIC8vIFVT
RShDRlVSTENPTk5FQ1RJT04pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NmL0F1dGhlbnRpY2F0aW9uQ0YuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NmL0F1dGhlbnRpY2F0aW9uQ0YuaAkocmV2aXNpb24gMjA3MDM5KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9BdXRoZW50aWNhdGlvbkNGLmgJKHdv
cmtpbmcgY29weSkKQEAgLTIzLDEwICsyMyw5IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCi0j
aWZuZGVmIEF1dGhlbnRpY2F0aW9uQ0ZfaAotI2RlZmluZSBBdXRoZW50aWNhdGlvbkNGX2gKKyNw
cmFnbWEgb25jZQogCi0jaWYgVVNFKENGTkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9O
KQogCiAjaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGVVJMQ3JlZGVudGlhbFByaXYuaD4KIApAQCAtNDAs
MjAgKzM5LDEwIEBAIGNsYXNzIENyZWRlbnRpYWw7CiBjbGFzcyBQcm90ZWN0aW9uU3BhY2U7CiAK
IENGVVJMQXV0aENoYWxsZW5nZVJlZiBjcmVhdGVDRihjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSYpOwotI2lmIFBMQVRGT1JNKFdJTikKIENGVVJMQ3JlZGVudGlhbFJlZiBjcmVhdGVDRihj
b25zdCBDcmVkZW50aWFsJik7CiBDRlVSTFByb3RlY3Rpb25TcGFjZVJlZiBjcmVhdGVDRihjb25z
dCBQcm90ZWN0aW9uU3BhY2UmKTsKLSNlbmRpZgotCi0jaWYgUExBVEZPUk0oQ09DT0EpCi1BdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSBjb3JlKENGVVJMQXV0aENoYWxsZW5nZVJlZik7Ci0jZW5kaWYK
LSNpZiBQTEFURk9STShXSU4pCiBDcmVkZW50aWFsIGNvcmUoQ0ZVUkxDcmVkZW50aWFsUmVmKTsK
IFByb3RlY3Rpb25TcGFjZSBjb3JlKENGVVJMUHJvdGVjdGlvblNwYWNlUmVmKTsKLSNlbmRpZgog
fQogCi0jZW5kaWYgLy8gVVNFKENGTkVUV09SSykKLQotI2VuZGlmIC8vIEF1dGhlbnRpY2F0aW9u
Q0ZfaAorI2VuZGlmIC8vIFVTRShDRlVSTENPTk5FQ1RJT04pCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9BdXRoZW50aWNhdGlvbkNo
YWxsZW5nZS5oCShyZXZpc2lvbiAyMDcwMzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NmL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIz
LDE0ICsyMywxMyBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAotI2lmbmRlZiBBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZV9oCi0jZGVmaW5lIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlX2gKKyNwcmFn
bWEgb25jZQogCiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlLmgiCiAjaW5j
bHVkZSAiQXV0aGVudGljYXRpb25DbGllbnQuaCIKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAK
LSNpZiBVU0UoQ0ZORVRXT1JLKQorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAKIHR5cGVkZWYg
c3RydWN0IF9DRlVSTEF1dGhDaGFsbGVuZ2UqIENGVVJMQXV0aENoYWxsZW5nZVJlZjsKIApAQCAt
NTAsNyArNDksNyBAQCBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSA6IHB1YmxpYyBBCiBw
dWJsaWM6CiAgICAgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKSB7fQogICAgIFdFQkNPUkVfRVhQ
T1JUIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0IFByb3RlY3Rpb25TcGFjZSYsIGNvbnN0
IENyZWRlbnRpYWwmIHByb3Bvc2VkQ3JlZGVudGlhbCwgdW5zaWduZWQgcHJldmlvdXNGYWlsdXJl
Q291bnQsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJik7Ci0j
aWYgVVNFKENGTkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogICAgIEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlKENGVVJMQXV0aENoYWxsZW5nZVJlZiwgQXV0aGVudGljYXRpb25DbGll
bnQqKTsKIAogICAgIENGVVJMQXV0aENoYWxsZW5nZVJlZiBjZlVSTEF1dGhDaGFsbGVuZ2VSZWYo
KSBjb25zdCB7IHJldHVybiBtX2NmQ2hhbGxlbmdlLmdldCgpOyB9CkBAIC02OSw3ICs2OCw3IEBA
IHByaXZhdGU6CiAgICAgc3RhdGljIGJvb2wgcGxhdGZvcm1Db21wYXJlKGNvbnN0IEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlJiBhLCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgYik7CiAK
ICAgICAvLyBQbGF0Zm9ybSBjaGFsbGVuZ2UgbWF5IGJlIG51bGwuIElmIGl0J3Mgbm9uLW51bGws
IGl0J3MgYWx3YXlzIHVwIHRvIGRhdGUgd2l0aCBvdGhlciBmaWVsZHMuCi0jaWYgVVNFKENGTkVU
V09SSykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogICAgIFJlZlB0cjxBdXRoZW50aWNhdGlv
bkNsaWVudD4gbV9hdXRoZW50aWNhdGlvbkNsaWVudDsKICAgICBSZXRhaW5QdHI8Q0ZVUkxBdXRo
Q2hhbGxlbmdlUmVmPiBtX2NmQ2hhbGxlbmdlOwogI2Vsc2UKQEAgLTc5LDUgKzc4LDMgQEAgcHJp
dmF0ZToKIH07CiAKIH0KLQotI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NmL0Nvb2tpZUphckNGTmV0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZUphckNGTmV0LmNwcAkocmV2aXNpb24gMjA3MDM5
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Db29raWVKYXJDRk5ldC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJQbGF0Zm9ybUNvb2tpZUphci5oIgogCi0jaWYgVVNFKENGTkVUV09SSykKKyNp
ZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogCiAjaW5jbHVkZSAiQ0ZOZXR3b3JrU1BJLmgiCiAjaW5j
bHVkZSAiQ29va2llLmgiCkBAIC0yNTUsNCArMjU1LDQgQEAgdm9pZCBkZWxldGVBbGxDb29raWVz
TW9kaWZpZWRTaW5jZShjb25zdAogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZiAv
LyBVU0UoQ0ZORVRXT1JLKQorI2VuZGlmIC8vIFVTRShDRlVSTENPTk5FQ1RJT04pCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0NyZWRlbnRpYWxTdG9yYWdlQ0ZOZXQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQ3Jl
ZGVudGlhbFN0b3JhZ2VDRk5ldC5jcHAJKHJldmlzaW9uIDIwNzAzOSkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQ3JlZGVudGlhbFN0b3JhZ2VDRk5ldC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI2LDIzICsyNiwxNCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIkNyZWRlbnRpYWxTdG9yYWdlLmgiCiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQorI2lmIFVTRShD
RlVSTENPTk5FQ1RJT04pCiAKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNGLmgiCiAjaW5jbHVk
ZSAiQ0ZOZXR3b3JrU1BJLmgiCiAjaW5jbHVkZSAiQ3JlZGVudGlhbC5oIgogI2luY2x1ZGUgIlBy
b3RlY3Rpb25TcGFjZS5oIgotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLQotI2lmIFBMQVRG
T1JNKENPQ09BKQotI2luY2x1ZGUgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKLSNlbGlmIFBM
QVRGT1JNKFdJTikKICNpbmNsdWRlIDxXZWJLaXRTeXN0ZW1JbnRlcmZhY2UvV2ViS2l0U3lzdGVt
SW50ZXJmYWNlLmg+Ci0jZW5kaWYKLQotI2lmIFBMQVRGT1JNKElPUykKLSNpbmNsdWRlIDxDRk5l
dHdvcmsvQ0ZVUkxDcmVkZW50aWFsU3RvcmFnZS5oPgotI2VuZGlmCisjaW5jbHVkZSA8d3RmL1Jl
dGFpblB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCkBAIC01NCwyOSArNDUsMTEg
QEAgc3RhdGljIGlubGluZSBDRlVSTENyZWRlbnRpYWxSZWYgY29weUNyZQogCiBDcmVkZW50aWFs
IENyZWRlbnRpYWxTdG9yYWdlOjpnZXRGcm9tUGVyc2lzdGVudFN0b3JhZ2UoY29uc3QgUHJvdGVj
dGlvblNwYWNlJiBwcm90ZWN0aW9uU3BhY2UpCiB7Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAg
YXV0byBjcmVkZW50aWFsQ0YgPSBhZG9wdENGKGNvcHlDcmVkZW50aWFsRnJvbVByb3RlY3Rpb25T
cGFjZShwcm90ZWN0aW9uU3BhY2UuY2ZTcGFjZSgpKSk7Ci0gICAgcmV0dXJuIENyZWRlbnRpYWwo
Y3JlZGVudGlhbENGLmdldCgpKTsKLSNlbHNlCiAgICAgYXV0byBwcm90ZWN0aW9uU3BhY2VDRiA9
IGFkb3B0Q0YoY3JlYXRlQ0YocHJvdGVjdGlvblNwYWNlKSk7CiAgICAgYXV0byBjcmVkZW50aWFs
Q0YgPSBhZG9wdENGKGNvcHlDcmVkZW50aWFsRnJvbVByb3RlY3Rpb25TcGFjZShwcm90ZWN0aW9u
U3BhY2VDRi5nZXQoKSkpOwogICAgIHJldHVybiBjb3JlKGNyZWRlbnRpYWxDRi5nZXQoKSk7Ci0j
ZW5kaWYKLX0KLQotI2lmIFBMQVRGT1JNKElPUykKLXZvaWQgQ3JlZGVudGlhbFN0b3JhZ2U6OnNh
dmVUb1BlcnNpc3RlbnRTdG9yYWdlKGNvbnN0IFByb3RlY3Rpb25TcGFjZSYgcHJvdGVjdGlvblNw
YWNlLCBjb25zdCBDcmVkZW50aWFsJiBjcmVkZW50aWFsKQotewotICAgIFJldGFpblB0cjxDRlVS
TENyZWRlbnRpYWxTdG9yYWdlUmVmPiBzdG9yYWdlQ0YgPSBhZG9wdENGKENGVVJMQ3JlZGVudGlh
bFN0b3JhZ2VDcmVhdGUoMCkpOwotCi0gICAgaWYgKGNyZWRlbnRpYWwucGVyc2lzdGVuY2UoKSA9
PSBDcmVkZW50aWFsUGVyc2lzdGVuY2VOb25lKSB7Ci0gICAgICAgIENyZWRlbnRpYWwgc2Vzc2lv
bkNyZWRlbnRpYWwoY3JlZGVudGlhbCwgQ3JlZGVudGlhbFBlcnNpc3RlbmNlRm9yU2Vzc2lvbik7
Ci0gICAgICAgIENGVVJMQ3JlZGVudGlhbFN0b3JhZ2VTZXREZWZhdWx0Q3JlZGVudGlhbEZvclBy
b3RlY3Rpb25TcGFjZShzdG9yYWdlQ0YuZ2V0KCksIHNlc3Npb25DcmVkZW50aWFsLmNmQ3JlZGVu
dGlhbCgpLCBwcm90ZWN0aW9uU3BhY2UuY2ZTcGFjZSgpKTsKLSAgICB9IGVsc2UKLSAgICAgICAg
Q0ZVUkxDcmVkZW50aWFsU3RvcmFnZVNldERlZmF1bHRDcmVkZW50aWFsRm9yUHJvdGVjdGlvblNw
YWNlKHN0b3JhZ2VDRi5nZXQoKSwgY3JlZGVudGlhbC5jZkNyZWRlbnRpYWwoKSwgcHJvdGVjdGlv
blNwYWNlLmNmU3BhY2UoKSk7CiB9Ci0jZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
Ci0jZW5kaWYgLy8gVVNFKENGTkVUV09SSykKKyNlbmRpZiAvLyBVU0UoQ0ZVUkxDT05ORUNUSU9O
KQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Mb2FkZXJSdW5Mb29w
Q0YuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2Yv
TG9hZGVyUnVuTG9vcENGLmNwcAkocmV2aXNpb24gMjA3MDM5KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jZi9Mb2FkZXJSdW5Mb29wQ0YuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTG9hZGVyUnVu
TG9vcENGLmgiCiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04p
CiAKICNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oPgogI2luY2x1ZGUg
PGxpbWl0cz4KQEAgLTg3LDQgKzg3LDQgQEAgQ0ZSdW5Mb29wUmVmIGxvYWRlclJ1bkxvb3AoKQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZiAvLyBVU0UoQ0ZORVRXT1JLKQorI2Vu
ZGlmIC8vIFVTRShDRlVSTENPTk5FQ1RJT04pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NmL0xvYWRlclJ1bkxvb3BDRi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTG9hZGVyUnVuTG9vcENGLmgJKHJldmlzaW9uIDIwNzAz
OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTG9hZGVyUnVuTG9vcENG
LmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDEwICsyMyw5IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBMb2FkZXJSdW5Mb29wQ0ZfaAotI2RlZmlu
ZSBMb2FkZXJSdW5Mb29wQ0ZfaAorI3ByYWdtYSBvbmNlCiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQor
I2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAKIHR5cGVkZWYgc3RydWN0IF9fQ0ZSdW5Mb29wKiBD
RlJ1bkxvb3BSZWY7CiAKQEAgLTM2LDYgKzM1LDQgQEAgQ0ZSdW5Mb29wUmVmIGxvYWRlclJ1bkxv
b3AoKTsKIAogfQogCi0jZW5kaWYgLy8gVVNFKENGTkVUV09SSykKLQotI2VuZGlmIC8vIExvYWRl
clJ1bkxvb3BfaAorI2VuZGlmIC8vIFVTRShDRlVSTENPTk5FQ1RJT04pCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdv
cmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcAkocmV2aXNpb24gMjA3MDM5KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTkzLDExICs5MywxMSBAQCBSZXRhaW5QdHI8Q0ZIVFRQQ29va2ll
U3RvcmFnZVJlZj4gTmV0d29yCiAgICAgaWYgKG1fcGxhdGZvcm1TZXNzaW9uKQogICAgICAgICBy
ZXR1cm4gYWRvcHRDRihfQ0ZVUkxTdG9yYWdlU2Vzc2lvbkNvcHlDb29raWVTdG9yYWdlKGtDRkFs
bG9jYXRvckRlZmF1bHQsIG1fcGxhdGZvcm1TZXNzaW9uLmdldCgpKSk7CiAKLSNpZiBVU0UoQ0ZO
RVRXT1JLKQorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAgICAgcmV0dXJuIF9DRkhUVFBDb29r
aWVTdG9yYWdlR2V0RGVmYXVsdChrQ0ZBbGxvY2F0b3JEZWZhdWx0KTsKICNlbHNlCiAgICAgLy8g
V2hlbiB1c2luZyBOU1VSTENvbm5lY3Rpb24sIHdlIGFsc28gdXNlIGl0cyBzaGFyZWQgY29va2ll
IHN0b3JhZ2UuCi0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG51bGxwdHI7CiAjZW5kaWYKIH0K
IApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Qcm90ZWN0aW9uU3Bh
Y2VDRk5ldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jZi9Qcm90ZWN0aW9uU3BhY2VDRk5ldC5jcHAJKHJldmlzaW9uIDIwNzAzOSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUHJvdGVjdGlvblNwYWNlQ0ZOZXQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiUHJvdGVjdGlvblNwYWNlQ0ZOZXQuaCIKIAotI2lmIFVTRShDRk5FVFdPUkspCisjaWYg
VVNFKENGVVJMQ09OTkVDVElPTikKIAogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ0YuaCIKICNp
bmNsdWRlIDxDRk5ldHdvcmsvQ0ZVUkxQcm90ZWN0aW9uU3BhY2VQcml2Lmg+CkBAIC00Miw0ICs0
Miw0IEBAIGJvb2wgUHJvdGVjdGlvblNwYWNlOjpyZWNlaXZlc0NyZWRlbnRpYWwKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYgLy8gVVNFKENGTkVUV09SSykKKyNlbmRpZiAvLyBV
U0UoQ0ZVUkxDT05ORUNUSU9OKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jZi9Qcm90ZWN0aW9uU3BhY2VDRk5ldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY2YvUHJvdGVjdGlvblNwYWNlQ0ZOZXQuaAkocmV2aXNpb24gMjA3
MDM5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Qcm90ZWN0aW9uU3Bh
Y2VDRk5ldC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMywxMSArMjMsMTAgQEAKICAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAogICovCiAKLSNpZm5kZWYgUHJvdGVjdGlvblNwYWNlQ0ZOZXRfaAotI2RlZmluZSBQcm90
ZWN0aW9uU3BhY2VDRk5ldF9oCisjcHJhZ21hIG9uY2UKIAotI2lmICFQTEFURk9STShXSU4pIHx8
ICFVU0UoQ0ZORVRXT1JLKQotI2Vycm9yIFRoaXMgaGVhZGVyIHNob3VsZCBvbmx5IGJlIGluY2x1
ZGVkIHdoZW4gdGFyZ2V0aW5nIFdpbmRvd3MgYW5kIHVzaW5nIENGTmV0d29yay4KKyNpZiAhUExB
VEZPUk0oV0lOKSB8fCAhVVNFKENGVVJMQ09OTkVDVElPTikKKyNlcnJvciBUaGlzIGhlYWRlciBz
aG91bGQgb25seSBiZSBpbmNsdWRlZCB3aGVuIHRhcmdldGluZyBXaW5kb3dzIGFuZCB1c2luZyBD
RlVSTENvbm5lY3Rpb24uCiAjZW5kaWYKIAogI2luY2x1ZGUgIlByb3RlY3Rpb25TcGFjZUJhc2Uu
aCIKQEAgLTQ4LDUgKzQ3LDMgQEAgcHVibGljOgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQotCi0jZW5kaWYgLy8gUHJvdGVjdGlvblNwYWNlQ0ZOZXRfaApJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yLmgJKHJldmlzaW9u
IDIwNzAzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VF
cnJvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCwxMCArMjgsMTEgQEAKICNpbmNsdWRlICJSZXNv
dXJjZUVycm9yQmFzZS5oIgogCiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotI2lmIFVTRShD
Rk5FVFdPUkspCisKKyNpZiBQTEFURk9STShXSU4pCisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikK
ICNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9DRlN0cmVhbS5oPgogI2VuZGlmCi0jaWYgUExBVEZP
Uk0oV0lOKQogI2luY2x1ZGUgPHdpbmRvd3MuaD4KICNpbmNsdWRlIDx3aW5jcnlwdC5oPiAvLyB3
aW5kb3dzLmggbXVzdCBiZSBpbmNsdWRlZCBiZWZvcmUgd2luY3J5cHQuaC4KICNlbmRpZgpAQCAt
NjEsMTIgKzYyLDEwIEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBDRkVycm9yUmVmIGNm
RXJyb3IoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBvcGVyYXRvciBDRkVycm9yUmVmKCkg
Y29uc3Q7CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotI2lmIFBMQVRGT1JNKFdJTikKKyNpZiBVU0Uo
Q0ZVUkxDT05ORUNUSU9OKQogICAgIFJlc291cmNlRXJyb3IoY29uc3QgU3RyaW5nJiBkb21haW4s
IGludCBlcnJvckNvZGUsIGNvbnN0IFVSTCYgZmFpbGluZ1VSTCwgY29uc3QgU3RyaW5nJiBsb2Nh
bGl6ZWREZXNjcmlwdGlvbiwgQ0ZEYXRhUmVmIGNlcnRpZmljYXRlKTsKICAgICBQQ0NFUlRfQ09O
VEVYVCBjZXJ0aWZpY2F0ZSgpIGNvbnN0OwogICAgIHZvaWQgc2V0Q2VydGlmaWNhdGUoQ0ZEYXRh
UmVmKTsKLSNlbmRpZgogICAgIFJlc291cmNlRXJyb3IoQ0ZTdHJlYW1FcnJvciBlcnJvcik7CiAg
ICAgQ0ZTdHJlYW1FcnJvciBjZlN0cmVhbUVycm9yKCkgY29uc3Q7CiAgICAgb3BlcmF0b3IgQ0ZT
dHJlYW1FcnJvcigpIGNvbnN0OwpAQCAtODgsMTQgKzg3LDEzIEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBkb1BsYXRmb3JtSXNvbGF0ZWRDb3B5KGNvbnN0IFJlc291cmNlRXJyb3ImKTsKIAogICAgIGJv
b2wgbV9kYXRhSXNVcFRvRGF0ZTsKLSNpZiBVU0UoQ0ZORVRXT1JLKQorI2lmIFVTRShDRlVSTENP
Tk5FQ1RJT04pCiAgICAgbXV0YWJsZSBSZXRhaW5QdHI8Q0ZFcnJvclJlZj4gbV9wbGF0Zm9ybUVy
cm9yOwotI2lmIFBMQVRGT1JNKENPQ09BKQorI2VsaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgbXV0
YWJsZSBSZXRhaW5QdHI8TlNFcnJvcj4gbV9wbGF0Zm9ybU5TRXJyb3I7CiAjZW5kaWYKICNpZiBQ
TEFURk9STShXSU4pCiAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gbV9jZXJ0aWZpY2F0ZTsKLSNl
bmRpZgogI2Vsc2UKICAgICBtdXRhYmxlIFJldGFpblB0cjxOU0Vycm9yPiBtX3BsYXRmb3JtRXJy
b3I7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVz
b3VyY2VFcnJvckNGLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHAJKHJldmlzaW9uIDIwNzAzOSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VFcnJvckNGLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjYsMTYgKzI2LDEzIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiUmVzb3VyY2VFcnJvci5oIgogCi0jaWYgVVNFKENGTkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxD
T05ORUNUSU9OKQogCiAjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24v
Q0ZFcnJvci5oPgogI2luY2x1ZGUgPENGTmV0d29yay9DRk5ldHdvcmtFcnJvcnMuaD4KLSNpbmNs
dWRlIDx3dGYvUmV0YWluUHRyLmg+Ci0KLSNpZiBQTEFURk9STShXSU4pCiAjaW5jbHVkZSA8V2Vi
S2l0U3lzdGVtSW50ZXJmYWNlL1dlYktpdFN5c3RlbUludGVyZmFjZS5oPgotI2VuZGlmCisjaW5j
bHVkZSA8d3RmL1JldGFpblB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTIxOCw0
ICsyMTUsNCBAQCBSZXNvdXJjZUVycm9yOjpvcGVyYXRvciBDRlN0cmVhbUVycm9yKCkgCiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vIFVTRShDRk5FVFdPUkspCisjZW5kaWYg
Ly8gVVNFKENGVVJMQ09OTkVDVElPTikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcAkocmV2aXNp
b24gMjA3MDM5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJj
ZUhhbmRsZUNGTmV0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYsNiArNDYsOCBAQAogI2luY2x1
ZGUgIlN5bmNocm9ub3VzTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiU3luY2hyb25vdXNSZXNv
dXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmgiCiAjaW5jbHVkZSA8Q0ZOZXR3b3Jr
L0NGTmV0d29yay5oPgorI2luY2x1ZGUgPFdlYktpdFN5c3RlbUludGVyZmFjZS9XZWJLaXRTeXN0
ZW1JbnRlcmZhY2UuaD4KKyNpbmNsdWRlIDxwcm9jZXNzLmg+CiAjaW5jbHVkZSA8c3lzL3N0YXQu
aD4KICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpAQCAt
NTUsMjAgKzU3LDYgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9CYXNlNjQuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9DU3RyaW5nLmg+CiAKLSNpZiBQTEFURk9STShDT0NPQSkKLSNpbmNsdWRlICJSZXNv
dXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmgiCi0j
aW5jbHVkZSAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgotI2lmIFVTRShDRk5FVFdPUkspCi0j
aW5jbHVkZSAiV2ViQ29yZVVSTFJlc3BvbnNlLmgiCi0jaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGVVJM
Q29ubmVjdGlvblByaXYuaD4KLSNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZVUkxSZXF1ZXN0UHJpdi5o
PgotI2VuZGlmCi0jZW5kaWYKLQotI2lmIFBMQVRGT1JNKFdJTikKLSNpbmNsdWRlIDxXZWJLaXRT
eXN0ZW1JbnRlcmZhY2UvV2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+Ci0jaW5jbHVkZSA8cHJvY2Vz
cy5oPgotCiAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgZGVjbGFyYXRpb24gb25jZSBpdCdzIGluIFdl
YktpdFN1cHBvcnRMaWJyYXJ5LgogZXh0ZXJuICJDIiB7CiBfX2RlY2xzcGVjKGRsbGltcG9ydCkg
Q0ZVUkxDb25uZWN0aW9uUmVmIENGVVJMQ29ubmVjdGlvbkNyZWF0ZVdpdGhQcm9wZXJ0aWVzKApA
QCAtNzcsMTEgKzY1LDEwIEBAIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBDRlVSTENvbm5lY3Rpb25S
ZWYKICAgQ0ZVUkxDb25uZWN0aW9uQ2xpZW50ICogIGNsaWVudCwKICAgQ0ZEaWN0aW9uYXJ5UmVm
IHByb3BlcnRpZXMpOwogfQotI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotI2lmIFVT
RShDRk5FVFdPUkspCisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKIAogc3RhdGljIEhhc2hTZXQ8
U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiBhbGxvd3NBbnlIVFRQU0NlcnRpZmlj
YXRlSG9zdHMoKQogewpAQCAtMTIwLDExICsxMDcsNyBAQCBSZXNvdXJjZUhhbmRsZTo6flJlc291
cmNlSGFuZGxlKCkKICAgICAKIHN0YXRpYyBpbmxpbmUgQ0ZTdHJpbmdSZWYgc2hvdWxkU25pZmZD
b25uZWN0aW9uUHJvcGVydHkoKQogewotI2lmIFBMQVRGT1JNKFdJTikKICAgICByZXR1cm4gQ0ZT
VFIoIl9rQ0ZVUkxDb25uZWN0aW9uUHJvcGVydHlTaG91bGRTbmlmZiIpOwotI2Vsc2UKLSAgICBy
ZXR1cm4gX2tDRlVSTENvbm5lY3Rpb25Qcm9wZXJ0eVNob3VsZFNuaWZmOwotI2VuZGlmCiB9CiAK
IHZvaWQgUmVzb3VyY2VIYW5kbGU6OmNyZWF0ZUNGVVJMQ29ubmVjdGlvbihib29sIHNob3VsZFVz
ZUNyZWRlbnRpYWxTdG9yYWdlLCBib29sIHNob3VsZENvbnRlbnRTbmlmZiwgU2NoZWR1bGluZ0Jl
aGF2aW9yIHNjaGVkdWxpbmdCZWhhdmlvciwgQ0ZEaWN0aW9uYXJ5UmVmIGNsaWVudFByb3BlcnRp
ZXMpCkBAIC0xNjYsOSArMTQ5LDYgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6Y3JlYXRlQ0ZVUkxD
b25uZWN0aQogCiAgICAgUmV0YWluUHRyPENGTXV0YWJsZURpY3Rpb25hcnlSZWY+IHNzbFByb3Bz
OwogCi0jaWYgUExBVEZPUk0oSU9TKQotICAgIHNzbFByb3BzID0gYWRvcHRDRihSZXNvdXJjZUhh
bmRsZTo6Y3JlYXRlU1NMUHJvcGVydGllc0Zyb21OU1VSTFJlcXVlc3QoZmlyc3RSZXF1ZXN0KCkp
KTsKLSNlbHNlCiAgICAgaWYgKGFsbG93c0FueUhUVFBTQ2VydGlmaWNhdGVIb3N0cygpLmNvbnRh
aW5zKGZpcnN0UmVxdWVzdCgpLnVybCgpLmhvc3QoKSkpIHsKICAgICAgICAgc3NsUHJvcHMgPSBh
ZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMCwg
JmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNh
bGxCYWNrcykpOwogICAgICAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShzc2xQcm9wcy5nZXQoKSwg
a0NGU3RyZWFtU1NMQWxsb3dzQW55Um9vdCwga0NGQm9vbGVhblRydWUpOwpAQCAtMTgxLDExICsx
NjEsOCBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpjcmVhdGVDRlVSTENvbm5lY3RpCiAgICAgaWYg
KGNsaWVudENlcnQgIT0gY2xpZW50Q2VydGlmaWNhdGVzKCkuZW5kKCkpIHsKICAgICAgICAgaWYg
KCFzc2xQcm9wcykKICAgICAgICAgICAgIHNzbFByb3BzID0gYWRvcHRDRihDRkRpY3Rpb25hcnlD
cmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1bHQsIDAsICZrQ0ZUeXBlRGljdGlvbmFyeUtl
eUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKLSNpZiBQTEFU
Rk9STShXSU4pCiAgICAgICAgIHdrU2V0Q2xpZW50Q2VydGlmaWNhdGVJblNTTFByb3BlcnRpZXMo
c3NsUHJvcHMuZ2V0KCksIChjbGllbnRDZXJ0LT52YWx1ZSkuZ2V0KCkpOwotI2VuZGlmCiAgICAg
fQotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKIAogICAgIGlmIChzc2xQcm9wcykKICAgICAgICAg
Q0ZVUkxSZXF1ZXN0U2V0U1NMUHJvcGVydGllcyhyZXF1ZXN0LmdldCgpLCBzc2xQcm9wcy5nZXQo
KSk7CkBAIC0yMDYsMTIgKzE4Myw2IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmNyZWF0ZUNGVVJM
Q29ubmVjdGkKICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoc3RyZWFtUHJvcGVydGllcywg
Q0ZTVFIoIl9XZWJLaXRTeW5jaHJvbm91c1JlcXVlc3QiKSwga0NGQm9vbGVhblRydWUpOwogICAg
IH0KIAotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IHNvdXJj
ZUFwcGxpY2F0aW9uQXVkaXREYXRhID0gZC0+bV9jb250ZXh0LT5zb3VyY2VBcHBsaWNhdGlvbkF1
ZGl0RGF0YSgpOwotICAgIGlmIChzb3VyY2VBcHBsaWNhdGlvbkF1ZGl0RGF0YSkKLSAgICAgICAg
Q0ZEaWN0aW9uYXJ5U2V0VmFsdWUoc3RyZWFtUHJvcGVydGllcywgQ0ZTVFIoImtDRlN0cmVhbVBy
b3BlcnR5U291cmNlQXBwbGljYXRpb24iKSwgc291cmNlQXBwbGljYXRpb25BdWRpdERhdGEuZ2V0
KCkpOwotI2VuZGlmCi0KICAgICBzdGF0aWMgY29uc3QgQ0ZTdHJpbmdSZWYga0NGVVJMQ29ubmVj
dGlvblNvY2tldFN0cmVhbVByb3BlcnRpZXMgPSBDRlNUUigia0NGVVJMQ29ubmVjdGlvblNvY2tl
dFN0cmVhbVByb3BlcnRpZXMiKTsKICAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlRGljdGlvbmFyeVJl
Zj4gcHJvcGVydGllc0RpY3Rpb25hcnk7CiAgICAgaWYgKGNsaWVudFByb3BlcnRpZXMpCkBAIC0y
MzAsMTQgKzIwMSw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmNyZWF0ZUNGVVJMQ29ubmVjdGkK
ICAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShwcm9wZXJ0aWVzRGljdGlvbmFyeS5nZXQoKSwga0NG
VVJMQ29ubmVjdGlvblNvY2tldFN0cmVhbVByb3BlcnRpZXMsIHN0cmVhbVByb3BlcnRpZXMpOwog
ICAgIENGUmVsZWFzZShzdHJlYW1Qcm9wZXJ0aWVzKTsKIAotI2lmIFBMQVRGT1JNKENPQ09BKQot
ICAgIGlmIChkLT5tX3VzZXNBc3luY0NhbGxiYWNrcykKLSAgICAgICAgZC0+bV9jb25uZWN0aW9u
RGVsZWdhdGUgPSBhZG9wdFJlZihuZXcgUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxl
Z2F0ZVdpdGhPcGVyYXRpb25RdWV1ZSh0aGlzKSk7Ci0gICAgZWxzZQotICAgICAgICBkLT5tX2Nv
bm5lY3Rpb25EZWxlZ2F0ZSA9IGFkb3B0UmVmKG5ldyBTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxl
Q0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUodGhpcykpOwotI2Vsc2UKICAgICBkLT5tX2Nvbm5lY3Rp
b25EZWxlZ2F0ZSA9IGFkb3B0UmVmKG5ldyBTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxD
b25uZWN0aW9uRGVsZWdhdGUodGhpcykpOwotI2VuZGlmCiAgICAgZC0+bV9jb25uZWN0aW9uRGVs
ZWdhdGUtPnNldHVwUmVxdWVzdChyZXF1ZXN0LmdldCgpKTsKIAogICAgIENGVVJMQ29ubmVjdGlv
bkNsaWVudF9WNiBjbGllbnQgPSBkLT5tX2Nvbm5lY3Rpb25EZWxlZ2F0ZS0+bWFrZUNvbm5lY3Rp
b25DbGllbnQoKTsKQEAgLTI2NCwxMCArMjI4LDYgQEAgYm9vbCBSZXNvdXJjZUhhbmRsZTo6c3Rh
cnQoKQogCiAgICAgYm9vbCBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSA9ICFjbGllbnQoKSB8
fCBjbGllbnQoKS0+c2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UodGhpcyk7CiAKLSNpZiBFTkFC
TEUoV0VCX1RJTUlORykgJiYgUExBVEZPUk0oQ09DT0EpICYmICFIQVZFKFRJTUlOR0RBVEFPUFRJ
T05TKQotICAgIHNldENvbGxlY3RzVGltaW5nRGF0YSgpOwotI2VuZGlmCi0KICAgICBTY2hlZHVs
aW5nQmVoYXZpb3Igc2NoZWR1bGluZ0JlaGF2aW9yID0gY2xpZW50KCktPmxvYWRpbmdTeW5jaHJv
bm91c1hIUigpID8gU2NoZWR1bGluZ0JlaGF2aW9yOjpTeW5jaHJvbm91cyA6IFNjaGVkdWxpbmdC
ZWhhdmlvcjo6QXN5bmNocm9ub3VzOwogCiAgICAgY3JlYXRlQ0ZVUkxDb25uZWN0aW9uKHNob3Vs
ZFVzZUNyZWRlbnRpYWxTdG9yYWdlLCBkLT5tX3Nob3VsZENvbnRlbnRTbmlmZiwgc2NoZWR1bGlu
Z0JlaGF2aW9yLCBjbGllbnQoKS0+Y29ubmVjdGlvblByb3BlcnRpZXModGhpcykuZ2V0KCkpOwpA
QCAtMzUxLDE2ICszMTEsNiBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpkaWRSZWNlaXZlQXV0aGVu
dGljCiAgICAgQVNTRVJUKGNoYWxsZW5nZS5jZlVSTEF1dGhDaGFsbGVuZ2VSZWYoKSk7CiAgICAg
QVNTRVJUKGNoYWxsZW5nZS5hdXRoZW50aWNhdGlvbkNsaWVudCgpID09IHRoaXMpOyAvLyBTaG91
bGQgYmUgYWxyZWFkeSBzZXQuCiAKLSNpZiAhUExBVEZPUk0oV0lOKQotICAgIC8vIFByb3h5IGF1
dGhlbnRpY2F0aW9uIGlzIGhhbmRsZWQgYnkgQ0ZOZXR3b3JrIGludGVybmFsbHkuIFdlIGNhbiBn
ZXQgaGVyZSBpZiB0aGUgdXNlciBjYW5jZWxzCi0gICAgLy8gQ0ZOZXR3b3JrIGF1dGhlbnRpY2F0
aW9uIGRpYWxvZywgYW5kIHdlIHNob3VsZG4ndCBhc2sgdGhlIGNsaWVudCB0byBkaXNwbGF5IGFu
b3RoZXIgb25lIGluIHRoYXQgY2FzZS4KLSAgICBpZiAoY2hhbGxlbmdlLnByb3RlY3Rpb25TcGFj
ZSgpLmlzUHJveHkoKSkgewotICAgICAgICAvLyBDYW5ub3QgdXNlIHJlY2VpdmVkUmVxdWVzdFRv
Q29udGludWVXaXRob3V0Q3JlZGVudGlhbCgpLCBiZWNhdXNlIGN1cnJlbnQgY2hhbGxlbmdlIGlz
IG5vdCB5ZXQgc2V0LgotICAgICAgICBDRlVSTENvbm5lY3Rpb25Vc2VDcmVkZW50aWFsKGQtPm1f
Y29ubmVjdGlvbi5nZXQoKSwgMCwgY2hhbGxlbmdlLmNmVVJMQXV0aENoYWxsZW5nZVJlZigpKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLSNlbmRpZgotCiAgICAgaWYgKHRyeUhhbmRsZVBhc3N3
b3JkQmFzZWRBdXRoZW50aWNhdGlvbihjaGFsbGVuZ2UpKQogICAgICAgICByZXR1cm47CiAKQEAg
LTM4MSwxMSArMzMxLDcgQEAgYm9vbCBSZXNvdXJjZUhhbmRsZTo6dHJ5SGFuZGxlUGFzc3dvcmRC
YQogCiAgICAgaWYgKCFkLT5tX3VzZXIuaXNOdWxsKCkgJiYgIWQtPm1fcGFzcy5pc051bGwoKSkg
ewogICAgICAgICBSZXRhaW5QdHI8Q0ZVUkxDcmVkZW50aWFsUmVmPiBjZkNyZWRlbnRpYWwgPSBh
ZG9wdENGKENGVVJMQ3JlZGVudGlhbENyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBkLT5tX3Vz
ZXIuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgZC0+bV9wYXNzLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0
KCksIDAsIGtDRlVSTENyZWRlbnRpYWxQZXJzaXN0ZW5jZU5vbmUpKTsKLSNpZiBQTEFURk9STShD
T0NPQSkKLSAgICAgICAgQ3JlZGVudGlhbCBjcmVkZW50aWFsID0gQ3JlZGVudGlhbChjZkNyZWRl
bnRpYWwuZ2V0KCkpOwotI2Vsc2UKICAgICAgICAgQ3JlZGVudGlhbCBjcmVkZW50aWFsID0gY29y
ZShjZkNyZWRlbnRpYWwuZ2V0KCkpOwotI2VuZGlmCiAgICAgICAgIAogICAgICAgICBVUkwgdXJs
VG9TdG9yZTsKICAgICAgICAgaWYgKGNoYWxsZW5nZS5mYWlsdXJlUmVzcG9uc2UoKS5odHRwU3Rh
dHVzQ29kZSgpID09IDQwMSkKQEAgLTQxNSwxMiArMzYxLDggQEAgYm9vbCBSZXNvdXJjZUhhbmRs
ZTo6dHJ5SGFuZGxlUGFzc3dvcmRCYQogICAgICAgICAgICAgICAgICAgICAvLyBTdG9yZSB0aGUg
Y3JlZGVudGlhbCBiYWNrLCBwb3NzaWJseSBhZGRpbmcgaXQgYXMgYSBkZWZhdWx0IGZvciB0aGlz
IGRpcmVjdG9yeS4KICAgICAgICAgICAgICAgICAgICAgZC0+bV9jb250ZXh0LT5zdG9yYWdlU2Vz
c2lvbigpLmNyZWRlbnRpYWxTdG9yYWdlKCkuc2V0KGNyZWRlbnRpYWwsIGNoYWxsZW5nZS5wcm90
ZWN0aW9uU3BhY2UoKSwgY2hhbGxlbmdlLmZhaWx1cmVSZXNwb25zZSgpLnVybCgpKTsKICAgICAg
ICAgICAgICAgICB9Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgICAgICAgICAgICAgQ0ZVUkxD
b25uZWN0aW9uVXNlQ3JlZGVudGlhbChkLT5tX2Nvbm5lY3Rpb24uZ2V0KCksIGNyZWRlbnRpYWwu
Y2ZDcmVkZW50aWFsKCksIGNoYWxsZW5nZS5jZlVSTEF1dGhDaGFsbGVuZ2VSZWYoKSk7Ci0jZWxz
ZQogICAgICAgICAgICAgICAgIFJldGFpblB0cjxDRlVSTENyZWRlbnRpYWxSZWY+IGNmQ3JlZGVu
dGlhbCA9IGFkb3B0Q0YoY3JlYXRlQ0YoY3JlZGVudGlhbCkpOwogICAgICAgICAgICAgICAgIENG
VVJMQ29ubmVjdGlvblVzZUNyZWRlbnRpYWwoZC0+bV9jb25uZWN0aW9uLmdldCgpLCBjZkNyZWRl
bnRpYWwuZ2V0KCksIGNoYWxsZW5nZS5jZlVSTEF1dGhDaGFsbGVuZ2VSZWYoKSk7Ci0jZW5kaWYK
ICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpA
QCAtNDcwLDIwICs0MTIsMTAgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRDcmVkZW50
aWFsKAogICAgICAgICBkLT5tX2NvbnRleHQtPnN0b3JhZ2VTZXNzaW9uKCkuY3JlZGVudGlhbFN0
b3JhZ2UoKS5zZXQod2ViQ3JlZGVudGlhbCwgY2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZSgpLCB1
cmxUb1N0b3JlKTsKIAogICAgICAgICBpZiAoZC0+bV9jb25uZWN0aW9uKSB7Ci0jaWYgUExBVEZP
Uk0oQ09DT0EpCiAgICAgICAgICAgICBDRlVSTENvbm5lY3Rpb25Vc2VDcmVkZW50aWFsKGQtPm1f
Y29ubmVjdGlvbi5nZXQoKSwgd2ViQ3JlZGVudGlhbC5jZkNyZWRlbnRpYWwoKSwgY2hhbGxlbmdl
LmNmVVJMQXV0aENoYWxsZW5nZVJlZigpKTsKLSNlbHNlCi0gICAgICAgICAgICBSZXRhaW5QdHI8
Q0ZVUkxDcmVkZW50aWFsUmVmPiBjZkNyZWRlbnRpYWwgPSBhZG9wdENGKGNyZWF0ZUNGKHdlYkNy
ZWRlbnRpYWwpKTsKLSAgICAgICAgICAgIENGVVJMQ29ubmVjdGlvblVzZUNyZWRlbnRpYWwoZC0+
bV9jb25uZWN0aW9uLmdldCgpLCBjZkNyZWRlbnRpYWwuZ2V0KCksIGNoYWxsZW5nZS5jZlVSTEF1
dGhDaGFsbGVuZ2VSZWYoKSk7Ci0jZW5kaWYKICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAoZC0+
bV9jb25uZWN0aW9uKSB7Ci0jaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgICAgIENGVVJMQ29ubmVj
dGlvblVzZUNyZWRlbnRpYWwoZC0+bV9jb25uZWN0aW9uLmdldCgpLCBjcmVkZW50aWFsLmNmQ3Jl
ZGVudGlhbCgpLCBjaGFsbGVuZ2UuY2ZVUkxBdXRoQ2hhbGxlbmdlUmVmKCkpOwotI2Vsc2UKLSAg
ICAgICAgUmV0YWluUHRyPENGVVJMQ3JlZGVudGlhbFJlZj4gY2ZDcmVkZW50aWFsID0gYWRvcHRD
RihjcmVhdGVDRihjcmVkZW50aWFsKSk7Ci0gICAgICAgIENGVVJMQ29ubmVjdGlvblVzZUNyZWRl
bnRpYWwoZC0+bV9jb25uZWN0aW9uLmdldCgpLCBjZkNyZWRlbnRpYWwuZ2V0KCksIGNoYWxsZW5n
ZS5jZlVSTEF1dGhDaGFsbGVuZ2VSZWYoKSk7Ci0jZW5kaWYKICAgICB9CiAKICAgICBjbGVhckF1
dGhlbnRpY2F0aW9uKCk7CkBAIC02MjQsMzAgKzU1Niw2IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6
OnBsYXRmb3JtU2V0RGVmZXJzTG8KICAgICAgICAgQ0ZVUkxDb25uZWN0aW9uUmVzdW1lKGQtPm1f
Y29ubmVjdGlvbi5nZXQoKSk7CiB9CiAKLSNpZiBQTEFURk9STShDT0NPQSkKLXZvaWQgUmVzb3Vy
Y2VIYW5kbGU6OnNjaGVkdWxlKFNjaGVkdWxlUGFpciYgcGFpcikKLXsKLSAgICBDRlJ1bkxvb3BS
ZWYgcnVuTG9vcCA9IHBhaXIucnVuTG9vcCgpOwotICAgIGlmICghcnVuTG9vcCkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgQ0ZVUkxDb25uZWN0aW9uU2NoZWR1bGVXaXRoUnVuTG9vcChkLT5tX2Nv
bm5lY3Rpb24uZ2V0KCksIHJ1bkxvb3AsIHBhaXIubW9kZSgpKTsKLSAgICBpZiAoZC0+bV9zdGFy
dFdoZW5TY2hlZHVsZWQpIHsKLSAgICAgICAgQ0ZVUkxDb25uZWN0aW9uU3RhcnQoZC0+bV9jb25u
ZWN0aW9uLmdldCgpKTsKLSAgICAgICAgZC0+bV9zdGFydFdoZW5TY2hlZHVsZWQgPSBmYWxzZTsK
LSAgICB9Ci19Ci0KLXZvaWQgUmVzb3VyY2VIYW5kbGU6OnVuc2NoZWR1bGUoU2NoZWR1bGVQYWly
JiBwYWlyKQotewotICAgIENGUnVuTG9vcFJlZiBydW5Mb29wID0gcGFpci5ydW5Mb29wKCk7Ci0g
ICAgaWYgKCFydW5Mb29wKQotICAgICAgICByZXR1cm47Ci0KLSAgICBDRlVSTENvbm5lY3Rpb25V
bnNjaGVkdWxlRnJvbVJ1bkxvb3AoZC0+bV9jb25uZWN0aW9uLmdldCgpLCBydW5Mb29wLCBwYWly
Lm1vZGUoKSk7Ci19Ci0jZW5kaWYKLQogY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBSZXNvdXJjZUhh
bmRsZTo6Y3VycmVudFJlcXVlc3QoKSBjb25zdAogewogICAgIHJldHVybiBkLT5tX2N1cnJlbnRS
ZXF1ZXN0OwpAQCAtNjc2LDYgKzU4NCw2IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmNvbnRpbnVl
V2lsbENhY2hlUmUKIHsKICAgICBkLT5tX2Nvbm5lY3Rpb25EZWxlZ2F0ZS0+Y29udGludWVXaWxs
Q2FjaGVSZXNwb25zZShyZXNwb25zZSk7CiB9Ci0jZW5kaWYgLy8gVVNFKENGTkVUV09SSykKKyNl
bmRpZiAvLyBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZV
UkxDb25uZWN0aW9uRGVsZWdhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5j
cHAJKHJldmlzaW9uIDIwNzAzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI2LDIwICsyNiwxMyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlJl
c291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuaCIKIAotI2lmIFVTRShDRk5FVFdP
UkspCisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKIAogI2luY2x1ZGUgIkNGTmV0d29ya1NQSS5o
IgogI2luY2x1ZGUgIkZvcm1EYXRhU3RyZWFtQ0ZOZXQuaCIKICNpbmNsdWRlICJOZXR3b3JraW5n
Q29udGV4dC5oIgogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCi0KLSNpZiBQTEFURk9STShD
T0NPQSkKLSNpbmNsdWRlICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgiCi0jZW5kaWYKLQotI2lm
IFBMQVRGT1JNKFdJTikKICNpbmNsdWRlIDxXZWJLaXRTeXN0ZW1JbnRlcmZhY2UvV2ViS2l0U3lz
dGVtSW50ZXJmYWNlLmg+Ci0jZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0yMTgs
NCArMjExLDQgQEAgQ0ZVUkxDb25uZWN0aW9uQ2xpZW50X1Y2IFJlc291cmNlSGFuZGxlQwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlLgogCi0jZW5kaWYgLy8gVVNFKENGTkVUV09SSykKKyNlbmRp
ZiAvLyBVU0UoQ0ZVUkxDT05ORUNUSU9OKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRs
ZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmgJKHJldmlzaW9uIDIwNzAzOSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25E
ZWxlZ2F0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMywxMCArMjMsOSBAQAogICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KICAqLwogCi0jaWZuZGVmIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVf
aAotI2RlZmluZSBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlX2gKKyNwcmFn
bWEgb25jZQogCi0jaWYgVVNFKENGTkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQog
CiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGVVJM
Q29ubmVjdGlvblByaXYuaD4KQEAgLTEwMCw2ICs5OSw0IEBAIHByb3RlY3RlZDoKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZS4KIAotI2VuZGlmIC8vIFVTRShDRk5FVFdPUkspCi0KLSNlbmRpZiAv
LyBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlX2gKKyNlbmRpZiAvLyBVU0Uo
Q0ZVUkxDT05ORUNUSU9OKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
Zi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jl
c291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuY3Bw
CShyZXZpc2lvbiAyMDcwMzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVy
YXRpb25RdWV1ZS5oIgogCi0jaWYgVVNFKENGTkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNU
SU9OKQogCiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25DRi5oIgogI2luY2x1ZGUgIkF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlLmgiCkBAIC03NSw5ICs3NSw2IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGVD
RlVSTENvbm5lY3Rpb25EZWxlZ2EKIAogdm9pZCBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlv
bkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlOjpzZXR1cFJlcXVlc3QoQ0ZNdXRhYmxlVVJMUmVx
dWVzdFJlZiByZXF1ZXN0KQogewotI2lmIFBMQVRGT1JNKElPUykKLSAgICBDRlVSTFJlcXVlc3RT
ZXRTaG91bGRTdGFydFN5bmNocm9ub3VzbHkocmVxdWVzdCwgMSk7Ci0jZW5kaWYKICAgICBDRlVS
TFJlZiByZXF1ZXN0VVJMID0gQ0ZVUkxSZXF1ZXN0R2V0VVJMKHJlcXVlc3QpOwogICAgIGlmICgh
cmVxdWVzdFVSTCkKICAgICAgICAgcmV0dXJuOwpAQCAtMTQ5LDEwICsxNDYsOCBAQCB2b2lkIFJl
c291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhCiAgICAgICAgICAgICBhZGp1c3RNSU1F
VHlwZUlmTmVjZXNzYXJ5KGNmUmVzcG9uc2UsIGlzTWFpblJlc291cmNlTG9hZCk7CiAgICAgICAg
IH0KIAotI2lmICFQTEFURk9STShJT1MpCiAgICAgICAgIGlmIChfQ0ZVUkxSZXF1ZXN0Q29weVBy
b3RvY29sUHJvcGVydHlGb3JLZXkobV9oYW5kbGUtPmZpcnN0UmVxdWVzdCgpLmNmVVJMUmVxdWVz
dChEb05vdFVwZGF0ZUhUVFBCb2R5KSwgQ0ZTVFIoIkZvcmNlSFRNTE1JTUVUeXBlIikpKQogICAg
ICAgICAgICAgQ0ZVUkxSZXNwb25zZVNldE1JTUVUeXBlKGNmUmVzcG9uc2UsIENGU1RSKCJ0ZXh0
L2h0bWwiKSk7Ci0jZW5kaWYgLy8gIVBMQVRGT1JNKElPUykKICAgICAgICAgCiAgICAgICAgIFJl
c291cmNlUmVzcG9uc2UgcmVzb3VyY2VSZXNwb25zZShjZlJlc3BvbnNlKTsKICNpZiBFTkFCTEUo
V0VCX1RJTUlORykKQEAgLTI4OCwxNSArMjgzLDcgQEAgQm9vbGVhbiBSZXNvdXJjZUhhbmRsZUNG
VVJMQ29ubmVjdGlvbkRlbAogCiAgICAgICAgIExPRyhOZXR3b3JrLCAiQ0ZOZXQgLSBSZXNvdXJj
ZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlOjpjYW5SZXNw
b25kVG9Qcm90ZWN0aW9uU3BhY2UoaGFuZGxlPSVwKSAoJXMpIiwgbV9oYW5kbGUsIG1faGFuZGxl
LT5maXJzdFJlcXVlc3QoKS51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIAotICAgICAg
ICBQcm90ZWN0aW9uU3BhY2UgY29yZVByb3RlY3Rpb25TcGFjZSA9IFByb3RlY3Rpb25TcGFjZShw
cm90ZWN0aW9uU3BhY2UpOwotI2lmIFBMQVRGT1JNKElPUykKLSAgICAgICAgaWYgKGNvcmVQcm90
ZWN0aW9uU3BhY2UuYXV0aGVudGljYXRpb25TY2hlbWUoKSA9PSBQcm90ZWN0aW9uU3BhY2VBdXRo
ZW50aWNhdGlvblNjaGVtZVVua25vd24pIHsKLSAgICAgICAgICAgIG1fYm9vbFJlc3VsdCA9IGZh
bHNlOwotICAgICAgICAgICAgZGlzcGF0Y2hfc2VtYXBob3JlX3NpZ25hbChtX3NlbWFwaG9yZSk7
Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSNlbmRpZiAvLyBQTEFURk9STShJT1Mp
Ci0gICAgICAgIG1faGFuZGxlLT5jYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNl
KGNvcmVQcm90ZWN0aW9uU3BhY2UpOworICAgICAgICBtX2hhbmRsZS0+Y2FuQXV0aGVudGljYXRl
QWdhaW5zdFByb3RlY3Rpb25TcGFjZShQcm90ZWN0aW9uU3BhY2UocHJvdGVjdGlvblNwYWNlKSk7
CiAgICAgfSk7CiAgICAgZGlzcGF0Y2hfc2VtYXBob3JlX3dhaXQobV9zZW1hcGhvcmUsIERJU1BB
VENIX1RJTUVfRk9SRVZFUik7CiAgICAgcmV0dXJuIG1fYm9vbFJlc3VsdDsKQEAgLTM0Nyw0ICsz
MzQsNCBAQCB2b2lkIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhCiAjZW5kaWYg
Ly8gVVNFKFBST1RFQ1RJT05fU1BBQ0VfQVVUSF9DQUxMQkFDSykKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIAotI2VuZGlmIC8vIFVTRShDRk5FVFdPUkspCisjZW5kaWYgLy8gVVNFKENGVVJMQ09O
TkVDVElPTikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3Vy
Y2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5k
bGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5oCShyZXZpc2lvbiAy
MDcwMzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFu
ZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuaAkod29ya2luZyBj
b3B5KQpAQCAtMjMsMTAgKzIzLDkgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBS
ZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlX2gK
LSNkZWZpbmUgUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRp
b25RdWV1ZV9oCisjcHJhZ21hIG9uY2UKIAotI2lmIFVTRShDRk5FVFdPUkspCisjaWYgVVNFKENG
VVJMQ09OTkVDVElPTikKIAogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9u
RGVsZWdhdGUuaCIKICNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZOZXR3b3JrLmg+CkBAIC04MCw2ICs3
OSw0IEBAIHByaXZhdGU6CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUuCiAKLSNlbmRpZiAvLyBV
U0UoQ0ZORVRXT1JLKQotCi0jZW5kaWYgLy8gUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25E
ZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZV9oCisjZW5kaWYgLy8gVVNFKENGVVJMQ09OTkVDVElP
TikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1
ZXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9S
ZXNvdXJjZVJlcXVlc3QuaAkocmV2aXNpb24gMjA3MDM5KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzEs
NyArMzEsNyBAQAogCiBPQkpDX0NMQVNTIE5TVVJMUmVxdWVzdDsKIAotI2lmIFBMQVRGT1JNKENP
Q09BKSB8fCBVU0UoQ0ZORVRXT1JLKQorI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZVUkxD
T05ORUNUSU9OKQogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgX0NGVVJMUmVxdWVzdCogQ0ZVUkxSZXF1
ZXN0UmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgX19DRlVSTFN0b3JhZ2VTZXNzaW9uKiBDRlVS
TFN0b3JhZ2VTZXNzaW9uUmVmOwogI2VuZGlmCkBAIC02MSwxMyArNjEsNyBAQCBwdWJsaWM6CiAg
ICAgewogICAgIH0KICAgICAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotI2lmIFBMQVRGT1JNKENPQ09B
KQotICAgIFdFQkNPUkVfRVhQT1JUIFJlc291cmNlUmVxdWVzdChOU1VSTFJlcXVlc3QgKik7Ci0g
ICAgdm9pZCB1cGRhdGVOU1VSTFJlcXVlc3QoKTsKLSAgICB2b2lkIGNsZWFyT3JVcGRhdGVOU1VS
TFJlcXVlc3QoKTsKLSNlbmRpZgotCisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKICAgICBSZXNv
dXJjZVJlcXVlc3QoQ0ZVUkxSZXF1ZXN0UmVmIGNmUmVxdWVzdCkKICAgICAgICAgOiBSZXNvdXJj
ZVJlcXVlc3RCYXNlKCkKICAgICAgICAgLCBtX2NmUmVxdWVzdChjZlJlcXVlc3QpCkBAIC04NCwx
MSArNzgsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1cGRhdGVGcm9tRGVs
ZWdhdGVQcmVzZXJ2aW5nT2xkUHJvcGVydGllcyhjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKIAog
I2lmIFBMQVRGT1JNKENPQ09BKQotI2lmIFVTRShDRk5FVFdPUkspCi0gICAgYm9vbCBlbmNvZGlu
Z1JlcXVpcmVzUGxhdGZvcm1EYXRhKCkgY29uc3QgeyByZXR1cm4gbV9odHRwQm9keSB8fCBtX2Nm
UmVxdWVzdDsgfQotI2Vsc2UKICAgICBib29sIGVuY29kaW5nUmVxdWlyZXNQbGF0Zm9ybURhdGEo
KSBjb25zdCB7IHJldHVybiBtX2h0dHBCb2R5IHx8IG1fbnNSZXF1ZXN0OyB9Ci0jZW5kaWYKICAg
ICBXRUJDT1JFX0VYUE9SVCBOU1VSTFJlcXVlc3QgKm5zVVJMUmVxdWVzdChIVFRQQm9keVVwZGF0
ZVBvbGljeSkgY29uc3Q7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgQ0ZTdHJpbmdSZWYg
aXNVc2VySW5pdGlhdGVkS2V5KCk7CkBAIC0xMDUsNyArOTUsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzZXREb21haW5Gb3JDYWNoZVBhcnRpdGlvbihjb25zdCBTdHJpbmcmIGRvbWFpbikgeyBtX2Nh
Y2hlUGFydGl0aW9uID0gcGFydGl0aW9uTmFtZShkb21haW4pOyB9CiAjZW5kaWYKIAotI2lmIFBM
QVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZORVRXT1JLKQorI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBV
U0UoQ0ZVUkxDT05ORUNUSU9OKQogICAgIFdFQkNPUkVfRVhQT1JUIENGVVJMUmVxdWVzdFJlZiBj
ZlVSTFJlcXVlc3QoSFRUUEJvZHlVcGRhdGVQb2xpY3kpIGNvbnN0OwogICAgIHZvaWQgc2V0U3Rv
cmFnZVNlc3Npb24oQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZik7CiAjZW5kaWYKQEAgLTEyNSw3ICsx
MTUsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBkb1BsYXRmb3JtU2V0QXNJc29sYXRlZENvcHko
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQorI2lmIFVTRShD
RlVSTENPTk5FQ1RJT04pCiAgICAgUmV0YWluUHRyPENGVVJMUmVxdWVzdFJlZj4gbV9jZlJlcXVl
c3Q7CiAjZW5kaWYKICNpZiBQTEFURk9STShDT0NPQSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQu
Y3BwCShyZXZpc2lvbiAyMDcwMzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NmL1Jlc291cmNlUmVxdWVzdENGTmV0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQs
NyBAQAogI2luY2x1ZGUgIlB1YmxpY1N1ZmZpeC5oIgogI2VuZGlmCiAKLSNpZiBVU0UoQ0ZORVRX
T1JLKQorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAjaW5jbHVkZSAiRm9ybURhdGFTdHJlYW1D
Rk5ldC5oIgogI2luY2x1ZGUgPENGTmV0d29yay9DRlVSTFJlcXVlc3RQcml2Lmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvQ1N0cmluZy5oPgpAQCAtNTksMTIgKzU5LDExIEBAIGJvb2wgUmVzb3VyY2VS
ZXF1ZXN0OjpzX2h0dHBQaXBlbGluaW5nRW4KIGJvb2wgUmVzb3VyY2VSZXF1ZXN0OjpzX2h0dHBQ
aXBlbGluaW5nRW5hYmxlZCA9IGZhbHNlOwogI2VuZGlmCiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQor
I2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAKIHR5cGVkZWYgdm9pZCAoKkNGVVJMUmVxdWVzdFNl
dENvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheUZ1bmN0aW9uKShDRk11dGFi
bGVVUkxSZXF1ZXN0UmVmLCBDRkFycmF5UmVmKTsKIHR5cGVkZWYgQ0ZBcnJheVJlZiAoKkNGVVJM
UmVxdWVzdENvcHlDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXlGdW5jdGlv
bikoQ0ZVUkxSZXF1ZXN0UmVmKTsKIAotI2lmIFBMQVRGT1JNKFdJTikKIHN0YXRpYyBITU9EVUxF
IGZpbmRDRk5ldHdvcmtNb2R1bGUoKQogewogI2lmbmRlZiBERUJVR19BTEwKQEAgLTgzLDE3ICs4
Miw2IEBAIHN0YXRpYyBDRlVSTFJlcXVlc3RDb3B5Q29udGVudERpc3Bvc2l0aW8KIHsKICAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxDRlVSTFJlcXVlc3RDb3B5Q29udGVudERpc3Bvc2l0aW9u
RW5jb2RpbmdGYWxsYmFja0FycmF5RnVuY3Rpb24+KEdldFByb2NBZGRyZXNzKGZpbmRDRk5ldHdv
cmtNb2R1bGUoKSwgIl9DRlVSTFJlcXVlc3RDb3B5Q29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdG
YWxsYmFja0FycmF5IikpOwogfQotI2VsaWYgUExBVEZPUk0oQ09DT0EpCi1zdGF0aWMgQ0ZVUkxS
ZXF1ZXN0U2V0Q29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5RnVuY3Rpb24g
ZmluZENGVVJMUmVxdWVzdFNldENvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJh
eUZ1bmN0aW9uKCkKLXsKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxDRlVSTFJlcXVlc3RT
ZXRDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXlGdW5jdGlvbj4oZGxzeW0o
UlRMRF9ERUZBVUxULCAiX0NGVVJMUmVxdWVzdFNldENvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5n
RmFsbGJhY2tBcnJheSIpKTsKLX0KLQotc3RhdGljIENGVVJMUmVxdWVzdENvcHlDb250ZW50RGlz
cG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXlGdW5jdGlvbiBmaW5kQ0ZVUkxSZXF1ZXN0Q29w
eUNvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheUZ1bmN0aW9uKCkKLXsKLSAg
ICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxDRlVSTFJlcXVlc3RDb3B5Q29udGVudERpc3Bvc2l0
aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5RnVuY3Rpb24+KGRsc3ltKFJUTERfREVGQVVMVCwgIl9D
RlVSTFJlcXVlc3RDb3B5Q29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5Iikp
OwotfQotI2VuZGlmCiAKIHN0YXRpYyB2b2lkIHNldENvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5n
RmFsbGJhY2tBcnJheShDRk11dGFibGVVUkxSZXF1ZXN0UmVmIHJlcXVlc3QsIENGQXJyYXlSZWYg
ZmFsbGJhY2tBcnJheSkKIHsKQEAgLTE1NiwxMCArMTQ0LDYgQEAgdm9pZCBSZXNvdXJjZVJlcXVl
c3Q6OmRvVXBkYXRlUGxhdGZvcm1SZQogICAgIGlmIChyZXNvdXJjZVByaW9yaXRpZXNFbmFibGVk
KCkpCiAgICAgICAgIENGVVJMUmVxdWVzdFNldFJlcXVlc3RQcmlvcml0eShjZlJlcXVlc3QsIHRv
UGxhdGZvcm1SZXF1ZXN0UHJpb3JpdHkocHJpb3JpdHkoKSkpOwogCi0jaWYgIVBMQVRGT1JNKFdJ
TikKLSAgICBfQ0ZVUkxSZXF1ZXN0U2V0UHJvdG9jb2xQcm9wZXJ0eShjZlJlcXVlc3QsIGtDRlVS
TFJlcXVlc3RBbGxvd0FsbFBPU1RDYWNoaW5nLCBrQ0ZCb29sZWFuVHJ1ZSk7Ci0jZW5kaWYKLQog
ICAgIHNldEhlYWRlckZpZWxkcyhjZlJlcXVlc3QsIGh0dHBIZWFkZXJGaWVsZHMoKSk7CiAKICAg
ICBDRlVSTFJlcXVlc3RTZXRTaG91bGRIYW5kbGVIVFRQQ29va2llcyhjZlJlcXVlc3QsIGFsbG93
Q29va2llcygpKTsKQEAgLTE4NCw5ICsxNjgsNiBAQCB2b2lkIFJlc291cmNlUmVxdWVzdDo6ZG9V
cGRhdGVQbGF0Zm9ybVJlCiAjZW5kaWYKIAogICAgIG1fY2ZSZXF1ZXN0ID0gYWRvcHRDRihjZlJl
cXVlc3QpOwotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIGNsZWFyT3JVcGRhdGVOU1VSTFJlcXVl
c3QoKTsKLSNlbmRpZgogfQogCiB2b2lkIFJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVQbGF0Zm9y
bUhUVFBCb2R5KCkKQEAgLTIxOSwzMCArMjAwLDEyIEBAIHZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojpk
b1VwZGF0ZVBsYXRmb3JtSFQKICAgICB9CiAKICAgICBtX2NmUmVxdWVzdCA9IGFkb3B0Q0YoY2ZS
ZXF1ZXN0KTsKLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICBjbGVhck9yVXBkYXRlTlNVUkxSZXF1
ZXN0KCk7Ci0jZW5kaWYKIH0KIAogdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUmVzb3Vy
Y2VSZXF1ZXN0KCkKIHsKICAgICBpZiAoIW1fY2ZSZXF1ZXN0KSB7Ci0jaWYgUExBVEZPUk0oSU9T
KQotICAgICAgICAvLyA8cmRhcjovL3Byb2JsZW0vOTkxMzUyNj4KLSAgICAgICAgLy8gVGhpcyBp
cyBhIGhhY2sgdG8gbWltaWMgdGhlIHN1YnRsZSBiZWhhdmlvdXIgb2YgdGhlIEZvdW5kYXRpb24g
YmFzZWQgUmVzb3VyY2VSZXF1ZXN0Ci0gICAgICAgIC8vIGNvZGUuIFRoYXQgY29kZSBkb2VzIG5v
dCByZXNldCBtX2h0dHBNZXRob2QgaWYgdGhlIE5TVVJMUmVxdWVzdCBpcyBuaWwuIEkgZmlsZWQK
LSAgICAgICAgLy8gPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NjMz
Nj4gdG8gdHJhY2sgdGhhdC4KLSAgICAgICAgLy8gQW5vdGhlciByZWxhdGVkIGJ1ZyBpcyA8aHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY2MzUwPi4gRml4aW5nIHRoYXQK
LSAgICAgICAgLy8gd291bGQsIGlkZWFsbHksIGFsbG93IHVzIHRvIG5vdCBoYXZlIHRoaXMgaGFj
ay4gQnV0IHVuZm9ydHVuYXRlbHkgdGhhdCBjYXVzZWQgbGF5b3V0IHRlc3QKLSAgICAgICAgLy8g
ZmFpbHVyZXMuCi0gICAgICAgIC8vIFJlbW92YWwgb2YgdGhpcyBoYWNrIGlzIHRyYWNrZWQgYnkg
PHJkYXI6Ly9wcm9ibGVtLzk5NzA0OTk+LgotCi0gICAgICAgIFN0cmluZyBodHRwTWV0aG9kID0g
bV9odHRwTWV0aG9kOwogICAgICAgICAqdGhpcyA9IFJlc291cmNlUmVxdWVzdCgpOwotICAgICAg
ICBtX2h0dHBNZXRob2QgPSBodHRwTWV0aG9kOwotI2Vsc2UKLSAgICAgICAgKnRoaXMgPSBSZXNv
dXJjZVJlcXVlc3QoKTsKLSNlbmRpZgogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0zMTcs
MTIgKzI4MCw5IEBAIHZvaWQgUmVzb3VyY2VSZXF1ZXN0OjpzZXRTdG9yYWdlU2Vzc2lvbigKICAg
ICBpZiAoc3RvcmFnZVNlc3Npb24pCiAgICAgICAgIF9DRlVSTFJlcXVlc3RTZXRTdG9yYWdlU2Vz
c2lvbihjZlJlcXVlc3QsIHN0b3JhZ2VTZXNzaW9uKTsKICAgICBtX2NmUmVxdWVzdCA9IGFkb3B0
Q0YoY2ZSZXF1ZXN0KTsKLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICBjbGVhck9yVXBkYXRlTlNV
UkxSZXF1ZXN0KCk7Ci0jZW5kaWYKIH0KIAotI2VuZGlmIC8vIFVTRShDRk5FVFdPUkspCisjZW5k
aWYgLy8gVVNFKENGVVJMQ09OTkVDVElPTikKIAogdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OnVwZGF0
ZUZyb21EZWxlZ2F0ZVByZXNlcnZpbmdPbGRQcm9wZXJ0aWVzKGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgZGVsZWdhdGVQcm92aWRlZFJlcXVlc3QpCiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdENGTmV0LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5oCShy
ZXZpc2lvbiAyMDcwMzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jl
c291cmNlUmVxdWVzdENGTmV0LmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDggKzIzLDcgQEAKICAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAogICovCiAKLSNpZm5kZWYgUmVzb3VyY2VSZXF1ZXN0Q0ZOZXRfaAotI2Rl
ZmluZSBSZXNvdXJjZVJlcXVlc3RDRk5ldF9oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkNG
TmV0d29ya1NQSS5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9hZFByaW9yaXR5LmgiCkBAIC0zMyw3
ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0Owog
Ci0jaWYgVVNFKENGTkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogdm9pZCBnZXRS
ZXNvdXJjZVJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiwgQ0ZVUkxSZXF1ZXN0UmVmKTsKIENGVVJM
UmVxdWVzdFJlZiBjZlVSTFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAjZW5kaWYK
QEAgLTc4LDUgKzc3LDMgQEAgaW5saW5lIENGVVJMUmVxdWVzdFByaW9yaXR5IHRvUGxhdGZvcm1S
ZQogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBSZXNvdXJjZVJlcXVl
c3RDRk5ldF9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291
cmNlUmVzcG9uc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NmL1Jlc291cmNlUmVzcG9uc2UuaAkocmV2aXNpb24gMjA3MDM5KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlc3BvbnNlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI4LDcgKzI4LDcgQEAKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlQmFzZS5oIgog
I2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAotI2lmIFVTRShDRk5FVFdPUkspCisjaWYgVVNF
KENGVVJMQ09OTkVDVElPTikKICNpbmNsdWRlICJDRk5ldHdvcmtTUEkuaCIKICNlbmRpZgogCkBA
IC00MywxNiArNDMsMTMgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAKLSNpZiBVU0UoQ0ZORVRX
T1JLKQorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAgICAgUmVzb3VyY2VSZXNwb25zZShDRlVS
TFJlc3BvbnNlUmVmIGNmUmVzcG9uc2UpCiAgICAgICAgIDogbV9pbml0TGV2ZWwoVW5pbml0aWFs
aXplZCkKICAgICAgICAgLCBtX2NmUmVzcG9uc2UoY2ZSZXNwb25zZSkKICAgICB7CiAgICAgICAg
IG1faXNOdWxsID0gIWNmUmVzcG9uc2U7CiAgICAgfQotI2lmIFBMQVRGT1JNKENPQ09BKQotICAg
IFdFQkNPUkVfRVhQT1JUIFJlc291cmNlUmVzcG9uc2UoTlNVUkxSZXNwb25zZSAqKTsKLSNlbmRp
ZgogI2Vsc2UKICAgICBSZXNvdXJjZVJlc3BvbnNlKE5TVVJMUmVzcG9uc2UgKm5zUmVzcG9uc2Up
CiAgICAgICAgIDogbV9pbml0TGV2ZWwoVW5pbml0aWFsaXplZCkKQEAgLTg0LDcgKzgxLDcgQEAg
cHVibGljOgogICAgICAgICAgKi8KICAgICB9CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQorI2lmIFVT
RShDRlVSTENPTk5FQ1RJT04pCiAgICAgV0VCQ09SRV9FWFBPUlQgQ0ZVUkxSZXNwb25zZVJlZiBj
ZlVSTFJlc3BvbnNlKCkgY29uc3Q7CiAjZW5kaWYKICNpZiBQTEFURk9STShDT0NPQSkKQEAgLTEw
OCwxMCArMTA1LDkgQEAgcHJpdmF0ZToKIAogICAgIHVuc2lnbmVkIG1faW5pdExldmVsIDogMzsK
IAotI2lmIFVTRShDRk5FVFdPUkspCisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKICAgICBtdXRh
YmxlIFJldGFpblB0cjxDRlVSTFJlc3BvbnNlUmVmPiBtX2NmUmVzcG9uc2U7Ci0jZW5kaWYKLSNp
ZiBQTEFURk9STShDT0NPQSkKKyNlbGlmIFBMQVRGT1JNKENPQ09BKQogICAgIG11dGFibGUgUmV0
YWluUHRyPE5TVVJMUmVzcG9uc2U+IG1fbnNSZXNwb25zZTsKICNlbmRpZgogfTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXNwb25zZUNGTmV0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291
cmNlUmVzcG9uc2VDRk5ldC5jcHAJKHJldmlzaW9uIDIwNzAzOSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXNwb25zZUNGTmV0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlJl
c291cmNlUmVzcG9uc2UuaCIKIAotI2lmIFVTRShDRk5FVFdPUkspCisjaWYgVVNFKENGVVJMQ09O
TkVDVElPTikKIAogI2luY2x1ZGUgIkNGTmV0d29ya1NQSS5oIgogCkBAIC0zNCwxMCArMzQsNiBA
QAogI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRy
Lmg+CiAKLSNpZiBQTEFURk9STShDT0NPQSkKLSNpbmNsdWRlICJXZWJDb3JlU3lzdGVtSW50ZXJm
YWNlLmgiCi0jZW5kaWYKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgQ0ZTdHJpbmdS
ZWYgY29uc3QgY29tbW9uSGVhZGVyRmllbGRzW10gPSB7CkBAIC00NywxMyArNDMsOSBAQCBzdGF0
aWMgQ0ZTdHJpbmdSZWYgY29uc3QgY29tbW9uSGVhZGVyRmllCiBDRlVSTFJlc3BvbnNlUmVmIFJl
c291cmNlUmVzcG9uc2U6OmNmVVJMUmVzcG9uc2UoKSBjb25zdAogewogICAgIGlmICghbV9jZlJl
c3BvbnNlICYmICFtX2lzTnVsbCkgewotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgICAgICBuc1VS
TFJlc3BvbnNlKCk7Ci0jZWxzZQogICAgICAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IHVybCA9IG1f
dXJsLmNyZWF0ZUNGVVJMKCk7CiAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGNyZWF0ZXMgYSB2ZXJ5
IGluY29tcGxldGUgQ0ZVUkxSZXNwb25zZSwgd2hpY2ggZG9lcyBub3QgZXZlbiBoYXZlIGEgc3Rh
dHVzIGNvZGUuCiAgICAgICAgIG1fY2ZSZXNwb25zZSA9IGFkb3B0Q0YoQ0ZVUkxSZXNwb25zZUNy
ZWF0ZSgwLCB1cmwuZ2V0KCksIG1fbWltZVR5cGUuc3RyaW5nKCkuY3JlYXRlQ0ZTdHJpbmcoKS5n
ZXQoKSwgbV9leHBlY3RlZENvbnRlbnRMZW5ndGgsIG1fdGV4dEVuY29kaW5nTmFtZS5zdHJpbmco
KS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBrQ0ZVUkxDYWNoZVN0b3JhZ2VBbGxvd2VkKSk7Ci0j
ZW5kaWYKICAgICB9CiAKICAgICByZXR1cm4gbV9jZlJlc3BvbnNlLmdldCgpOwpAQCAtMTE2LDEy
ICsxMDgsMTAgQEAgdm9pZCBSZXNvdXJjZVJlc3BvbnNlOjpwbGF0Zm9ybUxhenlJbml0KAogICAg
IG1faW5pdExldmVsID0gaW5pdExldmVsOwogfQogCi0jaWYgIVBMQVRGT1JNKENPQ09BKQogQ2Vy
dGlmaWNhdGVJbmZvIFJlc291cmNlUmVzcG9uc2U6OnBsYXRmb3JtQ2VydGlmaWNhdGVJbmZvKCkg
Y29uc3QKIHsKICAgICByZXR1cm4geyB9OwogfQotI2VuZGlmCiAKIFN0cmluZyBSZXNvdXJjZVJl
c3BvbnNlOjpwbGF0Zm9ybVN1Z2dlc3RlZEZpbGVuYW1lKCkgY29uc3QKIHsKQEAgLTE0Miw0ICsx
MzIsNCBAQCBib29sIFJlc291cmNlUmVzcG9uc2U6OnBsYXRmb3JtQ29tcGFyZShjCiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vIFVTRShDRk5FVFdPUkspCisjZW5kaWYgLy8g
VVNFKENGVVJMQ09OTkVDVElPTikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2YvU3luY2hyb25vdXNMb2FkZXJDbGllbnRDRk5ldC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9TeW5jaHJvbm91c0xvYWRlckNsaWVudENG
TmV0LmNwcAkocmV2aXNpb24gMjA3MDM5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jZi9TeW5jaHJvbm91c0xvYWRlckNsaWVudENGTmV0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjYsNyArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlN5bmNocm9u
b3VzTG9hZGVyQ2xpZW50LmgiCiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQorI2lmIFVTRShDRlVSTENP
Tk5FQ1RJT04pCiAKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oIgogI2luY2x1
ZGUgIlJlc291cmNlSGFuZGxlLmgiCkBAIC00OCw0ICs0OCw0IEBAIFJlc291cmNlRXJyb3IgU3lu
Y2hyb25vdXNMb2FkZXJDbGllbnQ6OnAKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5k
aWYgLy8gVVNFKENGTkVUV09SSykKKyNlbmRpZiAvLyBVU0UoQ0ZVUkxDT05ORUNUSU9OKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9TeW5jaHJvbm91c1Jlc291cmNl
SGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJM
Q29ubmVjdGlvbkRlbGVnYXRlLmNwcAkocmV2aXNpb24gMjA3MDM5KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9TeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25u
ZWN0aW9uRGVsZWdhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxMiArMjYsMTMgQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZV
UkxDb25uZWN0aW9uRGVsZWdhdGUuaCIKIAotI2lmIFVTRShDRk5FVFdPUkspCisjaWYgVVNFKENG
VVJMQ09OTkVDVElPTikKIAogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ0YuaCIKICNpbmNsdWRl
ICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oIgogI2luY2x1ZGUgIkxvYWRlclJ1bkxvb3BDRi5o
IgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCiAj
aW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZUNsaWVu
dC5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKQEAgLTQwLDIwICs0MSw2IEBACiAj
aW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgogCi0jaWYgUExBVEZPUk0oQ09DT0EpCi0jaW5jbHVkZSAiQ0ZOZXR3b3JrU1BJLmgiCi0j
aW5jbHVkZSAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgotI2luY2x1ZGUgIldlYkNvcmVVUkxS
ZXNwb25zZS5oIgotI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKQotCi0jaWYgUExBVEZPUk0oSU9T
KQotI2luY2x1ZGUgIldlYkNvcmVUaHJlYWQuaCIKLSNlbmRpZiAvLyBQTEFURk9STShJT1MpCi0K
LSNpZiBQTEFURk9STShXSU4pCi0jaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgotI2VuZGlm
IC8vIFBMQVRGT1JNKFdJTikKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBTeW5jaHJvbm91c1Jl
c291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OlN5bmNocm9ub3VzUmVzb3VyY2VI
YW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZShSZXNvdXJjZUhhbmRsZSogaGFuZGxlKQpAQCAt
NjMsMjAgKzUwLDExIEBAIFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb24K
IAogdm9pZCBTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6
OnNldHVwUmVxdWVzdChDRk11dGFibGVVUkxSZXF1ZXN0UmVmIHJlcXVlc3QpCiB7Ci0jaWYgUExB
VEZPUk0oSU9TKQotICAgIENGVVJMUmVxdWVzdFNldFNob3VsZFN0YXJ0U3luY2hyb25vdXNseShy
ZXF1ZXN0LCAxKTsKLSNlbmRpZgogfQogCiB2b2lkIFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVD
RlVSTENvbm5lY3Rpb25EZWxlZ2F0ZTo6c2V0dXBDb25uZWN0aW9uU2NoZWR1bGluZyhDRlVSTENv
bm5lY3Rpb25SZWYgY29ubmVjdGlvbikKIHsKLSNpZiBQTEFURk9STShXSU4pCiAgICAgQ0ZVUkxD
b25uZWN0aW9uU2NoZWR1bGVXaXRoQ3VycmVudE1lc3NhZ2VRdWV1ZShjb25uZWN0aW9uKTsKLSNl
bGlmIFBMQVRGT1JNKElPUykKLSAgICBDRlVSTENvbm5lY3Rpb25TY2hlZHVsZVdpdGhSdW5Mb29w
KGNvbm5lY3Rpb24sIFdlYlRocmVhZFJ1bkxvb3AoKSwga0NGUnVuTG9vcERlZmF1bHRNb2RlKTsK
LSNlbHNlCi0gICAgQ0ZVUkxDb25uZWN0aW9uU2NoZWR1bGVXaXRoUnVuTG9vcChjb25uZWN0aW9u
LCBDRlJ1bkxvb3BHZXRDdXJyZW50KCksIGtDRlJ1bkxvb3BEZWZhdWx0TW9kZSk7Ci0jZW5kaWYK
ICAgICBDRlVSTENvbm5lY3Rpb25TY2hlZHVsZURvd25sb2FkV2l0aFJ1bkxvb3AoY29ubmVjdGlv
biwgbG9hZGVyUnVuTG9vcCgpLCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUpOwogfQogCkBAIC0xMDMs
NyArODEsNiBAQCBDRlVSTFJlcXVlc3RSZWYgU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsCiAgICAg
cmV0dXJuIG5ld0NGUmVxdWVzdDsKIH0KIAotI2lmICFQTEFURk9STShDT0NPQSkKIHN0YXRpYyB2
b2lkIHNldERlZmF1bHRNSU1FVHlwZShDRlVSTFJlc3BvbnNlUmVmIHJlc3BvbnNlKQogewogICAg
IHN0YXRpYyBDRlN0cmluZ1JlZiBkZWZhdWx0TUlNRVR5cGVTdHJpbmcgPSBkZWZhdWx0TUlNRVR5
cGUoKS5jcmVhdGVDRlN0cmluZygpLmxlYWtSZWYoKTsKQEAgLTEzMyw3ICsxMTAsNiBAQCBzdGF0
aWMgdm9pZCBhZGp1c3RNSU1FVHlwZUlmTmVjZXNzYXJ5KENGCiAgICAgaWYgKHJlc3VsdCAhPSBv
cmlnaW5hbFJlc3VsdCkKICAgICAgICAgQ0ZVUkxSZXNwb25zZVNldE1JTUVUeXBlKGNmUmVzcG9u
c2UsIHJlc3VsdC5nZXQoKSk7CiB9Ci0jZW5kaWYgLy8gIVBMQVRGT1JNKENPQ09BKQogCiB2b2lk
IFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZTo6ZGlkUmVj
ZWl2ZVJlc3BvbnNlKENGVVJMQ29ubmVjdGlvblJlZiBjb25uZWN0aW9uLCBDRlVSTFJlc3BvbnNl
UmVmIGNmUmVzcG9uc2UpCiB7CkBAIC0xNDIsMjEgKzExOCw2IEBAIHZvaWQgU3luY2hyb25vdXNS
ZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmUKICAgICBpZiAoIW1faGFuZGxlLT5jbGllbnQoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgLy8gQXZvaWQgTUlNRSB0
eXBlIHNuaWZmaW5nIGlmIHRoZSByZXNwb25zZSBjb21lcyBiYWNrIGFzIDMwNCBOb3QgTW9kaWZp
ZWQuCi0gICAgYXV0byBtc2cgPSBDRlVSTFJlc3BvbnNlR2V0SFRUUFJlc3BvbnNlKGNmUmVzcG9u
c2UpOwotICAgIGludCBzdGF0dXNDb2RlID0gbXNnID8gQ0ZIVFRQTWVzc2FnZUdldFJlc3BvbnNl
U3RhdHVzQ29kZShtc2cpIDogMDsKLQotICAgIGlmIChzdGF0dXNDb2RlICE9IDMwNCkgewotICAg
ICAgICBib29sIGlzTWFpblJlc291cmNlTG9hZCA9IG1faGFuZGxlLT5maXJzdFJlcXVlc3QoKS5y
ZXF1ZXN0ZXIoKSA9PSBSZXNvdXJjZVJlcXVlc3Q6OlJlcXVlc3Rlcjo6TWFpbjsKLSAgICAgICAg
YWRqdXN0TUlNRVR5cGVJZk5lY2Vzc2FyeShjZlJlc3BvbnNlLCBpc01haW5SZXNvdXJjZUxvYWQp
OwotICAgIH0KLQotI2lmICFQTEFURk9STShJT1MpCi0gICAgaWYgKF9DRlVSTFJlcXVlc3RDb3B5
UHJvdG9jb2xQcm9wZXJ0eUZvcktleShtX2hhbmRsZS0+Zmlyc3RSZXF1ZXN0KCkuY2ZVUkxSZXF1
ZXN0KERvTm90VXBkYXRlSFRUUEJvZHkpLCBDRlNUUigiRm9yY2VIVE1MTUlNRVR5cGUiKSkpCi0g
ICAgICAgIENGVVJMUmVzcG9uc2VTZXRNSU1FVHlwZShjZlJlc3BvbnNlLCBDRlNUUigidGV4dC9o
dG1sIikpOwotI2VuZGlmIC8vICFQTEFURk9STShJT1MpCi0jZWxzZQogICAgIGlmICghQ0ZVUkxS
ZXNwb25zZUdldE1JTUVUeXBlKGNmUmVzcG9uc2UpKQogICAgICAgICBhZGp1c3RNSU1FVHlwZUlm
TmVjZXNzYXJ5KGNmUmVzcG9uc2UpOwogCkBAIC0xNjUsNyArMTI2LDYgQEAgdm9pZCBTeW5jaHJv
bm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZQogICAgICAgICBBU1NFUlQoIW1faGFuZGxlLT5z
aG91bGRDb250ZW50U25pZmYoKSk7CiAgICAgICAgIHNldERlZmF1bHRNSU1FVHlwZShjZlJlc3Bv
bnNlKTsKICAgICB9Ci0jZW5kaWYKIAogI2lmIFVTRShRVUlDS19MT09LKQogICAgIG1faGFuZGxl
LT5zZXRRdWlja0xvb2tIYW5kbGUoUXVpY2tMb29rSGFuZGxlOjpjcmVhdGUobV9oYW5kbGUsIHRo
aXMsIGNmUmVzcG9uc2UpKTsKQEAgLTE3NCw3ICsxMzQsNyBAQCB2b2lkIFN5bmNocm9ub3VzUmVz
b3VyY2VIYW5kbGVDRlVSTENvbm5lCiAjZW5kaWYKICAgICAKICAgICBSZXNvdXJjZVJlc3BvbnNl
IHJlc291cmNlUmVzcG9uc2UoY2ZSZXNwb25zZSk7Ci0jaWYgUExBVEZPUk0oQ09DT0EpICYmIEVO
QUJMRShXRUJfVElNSU5HKQorI2lmIEVOQUJMRShXRUJfVElNSU5HKQogICAgIFJlc291cmNlSGFu
ZGxlOjpnZXRDb25uZWN0aW9uVGltaW5nRGF0YShjb25uZWN0aW9uLCByZXNvdXJjZVJlc3BvbnNl
Lm5ldHdvcmtMb2FkVGltaW5nKCkpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oY29ubmVjdGlv
bik7CkBAIC0yMjQsNyArMTg0LDYgQEAgdm9pZCBTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZV
UkxDb25uZQogCiBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmIFN5bmNocm9ub3VzUmVzb3VyY2VIYW5k
bGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZTo6d2lsbENhY2hlUmVzcG9uc2UoQ0ZDYWNoZWRVUkxS
ZXNwb25zZVJlZiBjYWNoZWRSZXNwb25zZSkKIHsKLSNpZiBQTEFURk9STShXSU4pCiAgICAgLy8g
V29ya2Fyb3VuZCBmb3IgPHJkYXI6Ly9wcm9ibGVtLzYzMDA5OTA+IENhY2hpbmcgZG9lcyBub3Qg
cmVzcGVjdCBWYXJ5IEhUVFAgaGVhZGVyLgogICAgIC8vIEZJWE1FOiBXZWJDb3JlIGNhY2hlIGhh
cyBpc3N1ZXMgd2l0aCBWYXJ5LCB0b28gKGJ1ZyA1ODc5NywgYnVnIDcxNTA5KS4KICAgICBDRlVS
TFJlc3BvbnNlUmVmIHdyYXBwZWRSZXNwb25zZSA9IENGQ2FjaGVkVVJMUmVzcG9uc2VHZXRXcmFw
cGVkUmVzcG9uc2UoY2FjaGVkUmVzcG9uc2UpOwpAQCAtMjM0LDE2ICsxOTMsOCBAQCBDRkNhY2hl
ZFVSTFJlc3BvbnNlUmVmIFN5bmNocm9ub3VzUmVzb3VyCiAgICAgICAgIGlmICh2YXJ5VmFsdWUp
CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICB9Ci0jZW5kaWYgLy8gUExBVEZPUk0oV0lOKQot
Ci0jaWYgUExBVEZPUk0oV0lOKQogICAgIGlmIChtX2hhbmRsZS0+Y2xpZW50KCkgJiYgIW1faGFu
ZGxlLT5jbGllbnQoKS0+c2hvdWxkQ2FjaGVSZXNwb25zZShtX2hhbmRsZSwgY2FjaGVkUmVzcG9u
c2UpKQogICAgICAgICByZXR1cm4gMDsKLSNlbHNlCi0gICAgQ0ZDYWNoZWRVUkxSZXNwb25zZVJl
ZiBuZXdSZXNwb25zZSA9IG1faGFuZGxlLT5jbGllbnQoKS0+d2lsbENhY2hlUmVzcG9uc2UobV9o
YW5kbGUsIGNhY2hlZFJlc3BvbnNlKTsKLSAgICBpZiAobmV3UmVzcG9uc2UgIT0gY2FjaGVkUmVz
cG9uc2UpCi0gICAgICAgIHJldHVybiBuZXdSZXNwb25zZTsKLSNlbmRpZgogCiAgICAgQ0ZSZXRh
aW4oY2FjaGVkUmVzcG9uc2UpOwogICAgIHJldHVybiBjYWNoZWRSZXNwb25zZTsKQEAgLTI4MCwx
NCArMjMxLDcgQEAgQm9vbGVhbiBTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDbwogCiAg
ICAgTE9HKE5ldHdvcmssICJDRk5ldCAtIFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENv
bm5lY3Rpb25EZWxlZ2F0ZTo6Y2FuUmVzcG9uZFRvUHJvdGVjdGlvblNwYWNlKGhhbmRsZT0lcCAo
JXMpIiwgbV9oYW5kbGUsIG1faGFuZGxlLT5maXJzdFJlcXVlc3QoKS51cmwoKS5zdHJpbmcoKS51
dGY4KCkuZGF0YSgpKTsKIAotI2lmIFBMQVRGT1JNKElPUykKLSAgICBQcm90ZWN0aW9uU3BhY2Ug
Y29yZVByb3RlY3Rpb25TcGFjZSA9IFByb3RlY3Rpb25TcGFjZShwcm90ZWN0aW9uU3BhY2UpOwot
ICAgIGlmIChjb3JlUHJvdGVjdGlvblNwYWNlLmF1dGhlbnRpY2F0aW9uU2NoZW1lKCkgPT0gUHJv
dGVjdGlvblNwYWNlQXV0aGVudGljYXRpb25TY2hlbWVVbmtub3duKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgcmV0dXJuIG1faGFuZGxlLT5jYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVj
dGlvblNwYWNlKGNvcmVQcm90ZWN0aW9uU3BhY2UpOwotI2Vsc2UKICAgICByZXR1cm4gbV9oYW5k
bGUtPmNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoY29yZShwcm90ZWN0aW9u
U3BhY2UpKTsKLSNlbmRpZgogfQogI2VuZGlmIC8vIFVTRShQUk9URUNUSU9OX1NQQUNFX0FVVEhf
Q0FMTEJBQ0spCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU3lu
Y2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9TeW5jaHJvbm91c1Jlc291
cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuaAkocmV2aXNpb24gMjA3MDM5KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9TeW5jaHJvbm91c1Jlc291cmNlSGFu
ZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsMTAgKzIz
LDkgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBTeW5jaHJvbm91c1Jlc291cmNl
SGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVfaAotI2RlZmluZSBTeW5jaHJvbm91c1Jlc291
cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVfaAorI3ByYWdtYSBvbmNlCiAKLSNpZiBV
U0UoQ0ZORVRXT1JLKQorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAKICNpbmNsdWRlICJSZXNv
dXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmgiCiAKQEAgLTY3LDYgKzY2LDQgQEAg
cHJpdmF0ZToKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZS4KIAotI2VuZGlmIC8vIFVTRShDRk5F
VFdPUkspCi0KLSNlbmRpZiAvLyBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRl
X2gKKyNlbmRpZiAvLyBVU0UoQ0ZVUkxDT05ORUNUSU9OKQpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jb2NvYS9DcmVkZW50aWFsQ29jb2EuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL0NyZWRlbnRpYWxDb2NvYS5oCShy
ZXZpc2lvbiAyMDcwMzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29h
L0NyZWRlbnRpYWxDb2NvYS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMywxNyArMjMsMTIgQEAKICAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIENyZWRlbnRp
YWxDb2NvYV9oCi0jZGVmaW5lIENyZWRlbnRpYWxDb2NvYV9oCisjcHJhZ21hIG9uY2UKIAogI2lu
Y2x1ZGUgIkNyZWRlbnRpYWxCYXNlLmgiCiAjaW5jbHVkZSA8U2VjdXJpdHkvU2VjQmFzZS5oPgog
I2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAotI2lmIFVTRShDRk5FVFdPUkspCi0jaW5jbHVk
ZSAiQ0ZOZXR3b3JrU1BJLmgiCi0jZW5kaWYKLQogT0JKQ19DTEFTUyBOU1VSTENyZWRlbnRpYWw7
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTUyLDE4ICs0NywxMiBAQCBwdWJsaWM6CiAKICAg
ICBDcmVkZW50aWFsKGNvbnN0IENyZWRlbnRpYWwmLCBDcmVkZW50aWFsUGVyc2lzdGVuY2UpOwog
Ci0jaWYgVVNFKENGTkVUV09SSykKLSAgICBleHBsaWNpdCBDcmVkZW50aWFsKENGVVJMQ3JlZGVu
dGlhbFJlZik7Ci0jZW5kaWYKICAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBDcmVkZW50aWFs
KE5TVVJMQ3JlZGVudGlhbCAqKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNFbXB0eSgp
IGNvbnN0OwogCiAgICAgYm9vbCBlbmNvZGluZ1JlcXVpcmVzUGxhdGZvcm1EYXRhKCkgY29uc3Qg
eyByZXR1cm4gbV9uc0NyZWRlbnRpYWwgJiYgZW5jb2RpbmdSZXF1aXJlc1BsYXRmb3JtRGF0YSht
X25zQ3JlZGVudGlhbC5nZXQoKSk7IH0KIAotI2lmIFVTRShDRk5FVFdPUkspCi0gICAgQ0ZVUkxD
cmVkZW50aWFsUmVmIGNmQ3JlZGVudGlhbCgpIGNvbnN0OwotI2VuZGlmCiAgICAgV0VCQ09SRV9F
WFBPUlQgTlNVUkxDcmVkZW50aWFsICpuc0NyZWRlbnRpYWwoKSBjb25zdDsKIAogICAgIHN0YXRp
YyBib29sIHBsYXRmb3JtQ29tcGFyZShjb25zdCBDcmVkZW50aWFsJiwgY29uc3QgQ3JlZGVudGlh
bCYpOwpAQCAtNzUsNSArNjQsMyBAQCBwcml2YXRlOgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQotCi0jZW5kaWYgLy8gQ3JlZGVudGlhbENvY29hX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY29jb2EvQ3JlZGVudGlhbENvY29hLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvQ3JlZGVudGlhbENvY29hLm1t
CShyZXZpc2lvbiAyMDcwMzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nv
Y29hL0NyZWRlbnRpYWxDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYsMTMgKzI2LDYgQEAK
ICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiQ3JlZGVudGlhbENvY29hLmgiCiAKLSNpZiBV
U0UoQ0ZORVRXT1JLKQotQGludGVyZmFjZSBOU1VSTENyZWRlbnRpYWwgKFdlYkRldGFpbHMpCi0t
IChpZClfaW5pdFdpdGhDRlVSTENyZWRlbnRpYWw6KENGVVJMQ3JlZGVudGlhbFJlZiljcmVkZW50
aWFsOwotLSAoQ0ZVUkxDcmVkZW50aWFsUmVmKSBfQ0ZVUkxDcmVkZW50aWFsOwotQGVuZAotI2Vu
ZGlmCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIE5TVVJMQ3JlZGVudGlhbFBlcnNp
c3RlbmNlIHRvTlNVUkxDcmVkZW50aWFsUGVyc2lzdGVuY2UoQ3JlZGVudGlhbFBlcnNpc3RlbmNl
IHBlcnNpc3RlbmNlKQpAQCAtODQsMjYgKzc3LDEyIEBAIENyZWRlbnRpYWw6OkNyZWRlbnRpYWwo
Y29uc3QgQ3JlZGVudGlhbCYKICAgICB9CiB9CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotQ3JlZGVu
dGlhbDo6Q3JlZGVudGlhbChDRlVSTENyZWRlbnRpYWxSZWYgY3JlZGVudGlhbCkKLSAgICA6IENy
ZWRlbnRpYWwoYWRvcHROUyhbW05TVVJMQ3JlZGVudGlhbCBhbGxvY10gX2luaXRXaXRoQ0ZVUkxD
cmVkZW50aWFsOmNyZWRlbnRpYWxdKS5nZXQoKSkKLXsKLX0KLSNlbmRpZgotCiBDcmVkZW50aWFs
OjpDcmVkZW50aWFsKE5TVVJMQ3JlZGVudGlhbCAqY3JlZGVudGlhbCkKICAgICA6IENyZWRlbnRp
YWxCYXNlKGNyZWRlbnRpYWwudXNlciwgY3JlZGVudGlhbC5wYXNzd29yZCwgdG9DcmVkZW50aWFs
UGVyc2lzdGVuY2UoY3JlZGVudGlhbC5wZXJzaXN0ZW5jZSkpCiAgICAgLCBtX25zQ3JlZGVudGlh
bChjcmVkZW50aWFsKQogewogfQogCi0jaWYgVVNFKENGTkVUV09SSykKLUNGVVJMQ3JlZGVudGlh
bFJlZiBDcmVkZW50aWFsOjpjZkNyZWRlbnRpYWwoKSBjb25zdAotewotICAgIHJldHVybiBbbnND
cmVkZW50aWFsKCkgX0NGVVJMQ3JlZGVudGlhbF07Ci19Ci0jZW5kaWYKLQogTlNVUkxDcmVkZW50
aWFsICpDcmVkZW50aWFsOjpuc0NyZWRlbnRpYWwoKSBjb25zdAogewogICAgIGlmIChtX25zQ3Jl
ZGVudGlhbCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUHJv
dGVjdGlvblNwYWNlQ29jb2EuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NvY29hL1Byb3RlY3Rpb25TcGFjZUNvY29hLmgJKHJldmlzaW9uIDIwNzAzOSkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUHJvdGVjdGlvblNwYWNl
Q29jb2EuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsMTYgKzIzLDExIEBACiAgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBQcm90ZWN0aW9uU3BhY2VDb2Nv
YV9oCi0jZGVmaW5lIFByb3RlY3Rpb25TcGFjZUNvY29hX2gKKyNwcmFnbWEgb25jZQogCiAjaW5j
bHVkZSAiUHJvdGVjdGlvblNwYWNlQmFzZS5oIgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4K
IAotI2lmIFVTRShDRk5FVFdPUkspCi10eXBlZGVmIHN0cnVjdCBfQ0ZVUkxQcm90ZWN0aW9uU3Bh
Y2UqIENGVVJMUHJvdGVjdGlvblNwYWNlUmVmOwotI2VuZGlmCi0KIE9CSkNfQ0xBU1MgTlNVUkxQ
cm90ZWN0aW9uU3BhY2U7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQ3LDkgKzQyLDYgQEAg
cHVibGljOgogCiAgICAgUHJvdGVjdGlvblNwYWNlKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVl
VHlwZSBkZWxldGVkVmFsdWUpIDogUHJvdGVjdGlvblNwYWNlQmFzZShkZWxldGVkVmFsdWUpIHsg
fQogCi0jaWYgVVNFKENGTkVUV09SSykKLSAgICBleHBsaWNpdCBQcm90ZWN0aW9uU3BhY2UoQ0ZV
UkxQcm90ZWN0aW9uU3BhY2VSZWYpOwotI2VuZGlmCiAgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGlj
aXQgUHJvdGVjdGlvblNwYWNlKE5TVVJMUHJvdGVjdGlvblNwYWNlICopOwogCiAgICAgc3RhdGlj
IGJvb2wgcGxhdGZvcm1Db21wYXJlKGNvbnN0IFByb3RlY3Rpb25TcGFjZSYgYSwgY29uc3QgUHJv
dGVjdGlvblNwYWNlJiBiKTsKQEAgLTU4LDkgKzUwLDYgQEAgcHVibGljOgogCiAgICAgV0VCQ09S
RV9FWFBPUlQgYm9vbCByZWNlaXZlc0NyZWRlbnRpYWxTZWN1cmVseSgpIGNvbnN0OwogCi0jaWYg
VVNFKENGTkVUV09SSykKLSAgICBDRlVSTFByb3RlY3Rpb25TcGFjZVJlZiBjZlNwYWNlKCkgY29u
c3Q7Ci0jZW5kaWYKICAgICBXRUJDT1JFX0VYUE9SVCBOU1VSTFByb3RlY3Rpb25TcGFjZSAqbnNT
cGFjZSgpIGNvbnN0OwogCiBwcml2YXRlOgpAQCAtNzAsNSArNTksMyBAQCBwcml2YXRlOgogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gUHJvdGVjdGlvblNwYWNlQ29j
b2FfaApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9Qcm90ZWN0
aW9uU3BhY2VDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NvY29hL1Byb3RlY3Rpb25TcGFjZUNvY29hLm1tCShyZXZpc2lvbiAyMDcwMzkpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Byb3RlY3Rpb25TcGFjZUNv
Y29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwyMiArMjYsOSBAQAogI2ltcG9ydCAiY29uZmln
LmgiCiAjaW1wb3J0ICJQcm90ZWN0aW9uU3BhY2VDb2NvYS5oIgogCi0jaWYgVVNFKENGTkVUV09S
SykKLUBpbnRlcmZhY2UgTlNVUkxQcm90ZWN0aW9uU3BhY2UgKFdlYkRldGFpbHMpCi0tIChDRlVS
TFByb3RlY3Rpb25TcGFjZVJlZikgX0NGVVJMUHJvdGVjdGlvblNwYWNlOwotLSAoaWQpX2luaXRX
aXRoQ0ZVUkxQcm90ZWN0aW9uU3BhY2U6KENGVVJMUHJvdGVjdGlvblNwYWNlUmVmKWNmUHJvdFNw
YWNlOwotQGVuZAotI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotI2lmIFVTRShDRk5F
VFdPUkspCi1Qcm90ZWN0aW9uU3BhY2U6OlByb3RlY3Rpb25TcGFjZShDRlVSTFByb3RlY3Rpb25T
cGFjZVJlZiBzcGFjZSkKLSAgICA6IFByb3RlY3Rpb25TcGFjZShhZG9wdE5TKFtbTlNVUkxQcm90
ZWN0aW9uU3BhY2UgYWxsb2NdIF9pbml0V2l0aENGVVJMUHJvdGVjdGlvblNwYWNlOnNwYWNlXSku
Z2V0KCkpCi17Ci19Ci0jZW5kaWYKLQogc3RhdGljIFByb3RlY3Rpb25TcGFjZVNlcnZlclR5cGUg
dHlwZShOU1VSTFByb3RlY3Rpb25TcGFjZSAqc3BhY2UpCiB7CiAgICAgaWYgKFtzcGFjZSBpc1By
b3h5XSkgewpAQCAtMTA1LDEzICs5Miw2IEBAIFByb3RlY3Rpb25TcGFjZTo6UHJvdGVjdGlvblNw
YWNlKE5TVVJMUHIKICAgICBtX25zU3BhY2UgPSBzcGFjZTsKIH0KIAotI2lmIFVTRShDRk5FVFdP
UkspCi1DRlVSTFByb3RlY3Rpb25TcGFjZVJlZiBQcm90ZWN0aW9uU3BhY2U6OmNmU3BhY2UoKSBj
b25zdAotewotICAgIHJldHVybiBbbnNTcGFjZSgpIF9DRlVSTFByb3RlY3Rpb25TcGFjZV07Ci19
Ci0jZW5kaWYKLQogTlNVUkxQcm90ZWN0aW9uU3BhY2UgKlByb3RlY3Rpb25TcGFjZTo6bnNTcGFj
ZSgpIGNvbnN0CiB7CiAgICAgaWYgKG1fbnNTcGFjZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RD
b2NvYS5tbQkocmV2aXNpb24gMjA3MDM5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtNTMs
MTUgKzUzLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogTlNVUkxSZXF1ZXN0ICpSZXNvdXJjZVJl
cXVlc3Q6Om5zVVJMUmVxdWVzdChIVFRQQm9keVVwZGF0ZVBvbGljeSBib2R5UG9saWN5KSBjb25z
dAogewogICAgIHVwZGF0ZVBsYXRmb3JtUmVxdWVzdChib2R5UG9saWN5KTsKLSNpZiBVU0UoQ0ZO
RVRXT1JLKQotICAgIGlmICghbV9uc1JlcXVlc3QpCi0gICAgICAgIGNvbnN0X2Nhc3Q8UmVzb3Vy
Y2VSZXF1ZXN0Kj4odGhpcyktPnVwZGF0ZU5TVVJMUmVxdWVzdCgpOwotI2VuZGlmCiAgICAgcmV0
dXJuIFtbbV9uc1JlcXVlc3QuZ2V0KCkgcmV0YWluXSBhdXRvcmVsZWFzZV07CiB9CiAKLSNpZiAh
VVNFKENGTkVUV09SSykKLQogQ0ZVUkxSZXF1ZXN0UmVmIFJlc291cmNlUmVxdWVzdDo6Y2ZVUkxS
ZXF1ZXN0KEhUVFBCb2R5VXBkYXRlUG9saWN5IGJvZHlQb2xpY3kpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIFtuc1VSTFJlcXVlc3QoYm9keVBvbGljeSkgX0NGVVJMUmVxdWVzdF07CkBAIC0yMTQsOCAr
MjA4LDYgQEAgdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OnNldFN0b3JhZ2VTZXNzaW9uKAogICAgIG1f
bnNSZXF1ZXN0ID0gYWRvcHROUyh3a0NvcHlSZXF1ZXN0V2l0aFN0b3JhZ2VTZXNzaW9uKHN0b3Jh
Z2VTZXNzaW9uLCBtX25zUmVxdWVzdC5nZXQoKSkpOwogfQogCi0jZW5kaWYgLy8gVVNFKENGTkVU
V09SSykKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gUExBVEZPUk0oQ09D
T0EpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNl
UmVzcG9uc2VDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NvY29hL1Jlc291cmNlUmVzcG9uc2VDb2NvYS5tbQkocmV2aXNpb24gMjA3MDM5KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlc3BvbnNl
Q29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTc1LDEzICs3NSw4IEBAIHZvaWQgUmVzb3VyY2VS
ZXNwb25zZTo6ZGlzYWJsZUxhenlJbml0aWEKIAogQ2VydGlmaWNhdGVJbmZvIFJlc291cmNlUmVz
cG9uc2U6OnBsYXRmb3JtQ2VydGlmaWNhdGVJbmZvKCkgY29uc3QKIHsKLSNpZiBVU0UoQ0ZORVRX
T1JLKQotICAgIEFTU0VSVChtX2NmUmVzcG9uc2UpOwotICAgIENGVVJMUmVzcG9uc2VSZWYgY2ZS
ZXNwb25zZSA9IG1fY2ZSZXNwb25zZS5nZXQoKTsKLSNlbHNlCiAgICAgQVNTRVJUKG1fbnNSZXNw
b25zZSk7CiAgICAgQ0ZVUkxSZXNwb25zZVJlZiBjZlJlc3BvbnNlID0gW21fbnNSZXNwb25zZSBf
Q0ZVUkxSZXNwb25zZV07Ci0jZW5kaWYKIAogICAgIGlmICghY2ZSZXNwb25zZSkKICAgICAgICAg
cmV0dXJuIHsgfTsKQEAgLTExNCwzNSArMTA5LDYgQEAgQ2VydGlmaWNhdGVJbmZvIFJlc291cmNl
UmVzcG9uc2U6OnBsYXRmbwogI2VuZGlmCiB9CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotCi1OU1VS
TFJlc3BvbnNlICpSZXNvdXJjZVJlc3BvbnNlOjpuc1VSTFJlc3BvbnNlKCkgY29uc3QKLXsKLSAg
ICBpZiAoIW1fbnNSZXNwb25zZSAmJiAhbV9jZlJlc3BvbnNlICYmICFtX2lzTnVsbCkgewotICAg
ICAgICBpbml0TlNVUkxSZXNwb25zZSgpOwotICAgICAgICBtX2NmUmVzcG9uc2UgPSBbbV9uc1Jl
c3BvbnNlLmdldCgpIF9DRlVSTFJlc3BvbnNlXTsKLSAgICAgICAgcmV0dXJuIG1fbnNSZXNwb25z
ZS5nZXQoKTsKLSAgICB9Ci0KLSAgICBpZiAoIW1fY2ZSZXNwb25zZSkKLSAgICAgICAgcmV0dXJu
IG5pbDsKLQotICAgIGlmICghbV9uc1Jlc3BvbnNlKQotICAgICAgICBtX25zUmVzcG9uc2UgPSBb
TlNVUkxSZXNwb25zZSBfcmVzcG9uc2VXaXRoQ0ZVUkxSZXNwb25zZTptX2NmUmVzcG9uc2UuZ2V0
KCldOwotCi0gICAgcmV0dXJuIG1fbnNSZXNwb25zZS5nZXQoKTsKLX0KLQotUmVzb3VyY2VSZXNw
b25zZTo6UmVzb3VyY2VSZXNwb25zZShOU1VSTFJlc3BvbnNlKiBuc1Jlc3BvbnNlKQotICAgIDog
bV9pbml0TGV2ZWwoVW5pbml0aWFsaXplZCkKLSAgICAsIG1fY2ZSZXNwb25zZShbbnNSZXNwb25z
ZSBfQ0ZVUkxSZXNwb25zZV0pCi0gICAgLCBtX25zUmVzcG9uc2UobnNSZXNwb25zZSkKLXsKLSAg
ICBtX2lzTnVsbCA9ICFuc1Jlc3BvbnNlOwotfQotCi0jZWxzZQotCiBzdGF0aWMgTlNTdHJpbmcq
IGNvbnN0IGNvbW1vbkhlYWRlckZpZWxkc1tdID0gewogICAgIEAiQWdlIiwgQCJDYWNoZS1Db250
cm9sIiwgQCJDb250ZW50LVR5cGUiLCBAIkRhdGUiLCBAIkV0YWciLCBAIkV4cGlyZXMiLCBAIkxh
c3QtTW9kaWZpZWQiLCBAIlByYWdtYSIKIH07CkBAIC0yNDIsOCArMjA4LDYgQEAgYm9vbCBSZXNv
dXJjZVJlc3BvbnNlOjpwbGF0Zm9ybUNvbXBhcmUoYwogICAgIHJldHVybiBhLm5zVVJMUmVzcG9u
c2UoKSA9PSBiLm5zVVJMUmVzcG9uc2UoKTsKIH0KIAotI2VuZGlmIC8vIFVTRShDRk5FVFdPUksp
Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUXVpY2tMb29rLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUXVpY2tMb29r
LmgJKHJldmlzaW9uIDIwNzAzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
aW9zL1F1aWNrTG9vay5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMywxMCArMzMsNiBAQAogI2ltcG9y
dCA8b2JqYy9vYmpjLXJ1bnRpbWUuaD4KICNpbXBvcnQgPHd0Zi9SZWZQdHIuaD4KIAotI2lmIFVT
RShDRk5FVFdPUkspCi0jaW5jbHVkZSAiQ0ZOZXR3b3JrU1BJLmgiCi0jZW5kaWYKLQogT0JKQ19D
TEFTUyBOU0RhdGE7CiBPQkpDX0NMQVNTIE5TRGljdGlvbmFyeTsKIE9CSkNfQ0xBU1MgTlNGaWxl
SGFuZGxlOwpAQCAtODEsOSArNzcsNiBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIGJvb2wgc2hvdWxkQ3JlYXRlRm9yTUlNRVR5cGUoY29uc3QgU3RyaW5nJik7CiAKICAgICBz
dGF0aWMgc3RkOjp1bmlxdWVfcHRyPFF1aWNrTG9va0hhbmRsZT4gY3JlYXRlKFJlc291cmNlSGFu
ZGxlKiwgTlNVUkxDb25uZWN0aW9uICosIE5TVVJMUmVzcG9uc2UgKiwgaWQgZGVsZWdhdGUpOwot
I2lmIFVTRShDRk5FVFdPUkspCi0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxRdWlja0xvb2tI
YW5kbGU+IGNyZWF0ZShSZXNvdXJjZUhhbmRsZSosIFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVD
RlVSTENvbm5lY3Rpb25EZWxlZ2F0ZSosIENGVVJMUmVzcG9uc2VSZWYpOwotI2VuZGlmCiAgICAg
Ly8gRklYTUU6IFVzZSBvZiBSZXNvdXJjZUxvYWRlciBoZXJlIGlzIGEgcGxhdGZvcm0gdmlvbGF0
aW9uLgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UXVpY2tMb29r
SGFuZGxlPiBjcmVhdGUoUmVzb3VyY2VMb2FkZXImLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7
CiAKQEAgLTk1LDkgKzg4LDYgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlk
RmFpbCgpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgTlNVUkxSZXNwb25zZSAqbnNSZXNwb25zZSgp
OwotI2lmIFVTRShDRk5FVFdPUkspCi0gICAgQ0ZVUkxSZXNwb25zZVJlZiBjZlJlc3BvbnNlKCk7
Ci0jZW5kaWYKIAogICAgIHZvaWQgc2V0Q2xpZW50KFBhc3NSZWZQdHI8UXVpY2tMb29rSGFuZGxl
Q2xpZW50PiBjbGllbnQpIHsgbV9jbGllbnQgPSBjbGllbnQ7IH0KIApJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUXVpY2tMb29rLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1F1aWNrTG9vay5tbQkocmV2aXNpb24g
MjA3MDM5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUXVpY2tMb29r
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xODUsODEgKzE4NSw2IEBAIGNvbnN0IGNoYXIqIFdlYkNv
cmU6OlFMUHJldmlld1Byb3RvY29sKCkKICAgICByZXR1cm4gcHJldmlld1Byb3RvY29sLmdldCgp
LmRhdGEoKTsKIH0KIAotI2lmIFVTRShDRk5FVFdPUkspCi0vLyBUaGUgd2F5IFF1aWNrTG9vayB3
b3JrcyBpcyB3ZSBwYXNzIGl0IGFuIE5TVVJMQ29ubmVjdGlvbkRlbGVnYXRlIGNhbGxiYWNrIG9i
amVjdCBhdCBjcmVhdGlvbgotLy8gdGltZS4gVGhlbiB3ZSBwYXNzIGl0IGFsbCB0aGUgZGF0YSBh
cyB3ZSByZWNlaXZlIGl0LiBPbmNlIHdlJ3ZlIGRvd25sb2FkZWQgdGhlIGZ1bGwgVVJMLAotLy8g
UXVpY2tMb29rIHR1cm5zIGFyb3VuZCBhbmQgc2VuZCB1cywgdGhyb3VnaCB0aGlzIGRlbGVnYXRl
LCB0aGUgSFRNTCB2ZXJzaW9uIG9mIHRoZSBmaWxlIHdoaWNoIHdlCi0vLyBwYXNzIG9uIHRvIFdl
YkNvcmUuIFRoZSBmbGFnIG1fZmluaXNoZWRMb2FkaW5nRGF0YUludG9Db252ZXJ0ZXIgaW4gUXVp
Y2tMb29rSGFuZGxlIGRlY2lkZXMKLS8vIHdoZXRoZXIgdG8gcGFzcyB0aGUgZGF0YSB0byBRdWlj
a0xvb2sgb3IgV2ViQ29yZS4KLS8vCi0vLyBUaGlzIHdvcmtzIGZpbmUgd2hlbiB1c2luZyBOUyBB
UElzLCBidXQgd2hlbiB1c2luZyBDRk5ldHdvcmssIHdlIGRvbid0IGhhdmUgYSBOU1VSTENvbm5l
Y3Rpb25EZWxlZ2F0ZS4KLS8vIFNvIHdlIGNyZWF0ZSBXZWJRdWlja0xvb2tIYW5kbGVBc0RlbGVn
YXRlIGFzIGFuIGludGVybWVkaWF0ZSBkZWxlZ2F0ZSBvYmplY3QgYW5kIHBhc3MgaXQgdG8KLS8v
IFFMUHJldmlld0NvbnZlcnRlci4gVGhlIHByb3h5IGRlbGVnYXRlIHRoZW4gZm9yd2FyZHMgdGhl
IG1lc3NhZ2VzIG9uIHRvIHRoZSBDRk5ldHdvcmsgY29kZS4KLUBpbnRlcmZhY2UgV2ViUXVpY2tM
b29rSGFuZGxlQXNEZWxlZ2F0ZSA6IE5TT2JqZWN0IDxOU1VSTENvbm5lY3Rpb25EZWxlZ2F0ZSwg
V2ViQ29yZVJlc291cmNlTG9hZGVyRGVsZWdhdGU+IHsKLSAgICBSZWZQdHI8U3luY2hyb25vdXNS
ZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlPiBtX2Nvbm5lY3Rpb25EZWxlZ2F0
ZTsKLX0KLQotLSAoaWQpaW5pdFdpdGhDb25uZWN0aW9uRGVsZWdhdGU6KFN5bmNocm9ub3VzUmVz
b3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZSopY29ubmVjdGlvbkRlbGVnYXRlOwot
QGVuZAotCi1AaW1wbGVtZW50YXRpb24gV2ViUXVpY2tMb29rSGFuZGxlQXNEZWxlZ2F0ZQotLSAo
aWQpaW5pdFdpdGhDb25uZWN0aW9uRGVsZWdhdGU6KFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVD
RlVSTENvbm5lY3Rpb25EZWxlZ2F0ZSopY29ubmVjdGlvbkRlbGVnYXRlCi17Ci0gICAgc2VsZiA9
IFtzdXBlciBpbml0XTsKLSAgICBpZiAoIXNlbGYpCi0gICAgICAgIHJldHVybiBuaWw7Ci0gICAg
bV9jb25uZWN0aW9uRGVsZWdhdGUgPSBjb25uZWN0aW9uRGVsZWdhdGU7Ci0gICAgcmV0dXJuIHNl
bGY7Ci19Ci0KLS0gKHZvaWQpY29ubmVjdGlvbjooTlNVUkxDb25uZWN0aW9uICopY29ubmVjdGlv
biBkaWRSZWNlaXZlRGF0YUFycmF5OihOU0FycmF5ICopZGF0YUFycmF5Ci17Ci0gICAgVU5VU0VE
X1BBUkFNKGNvbm5lY3Rpb24pOwotICAgIGlmICghbV9jb25uZWN0aW9uRGVsZWdhdGUpCi0gICAg
ICAgIHJldHVybjsKLSAgICBMT0coTmV0d29yaywgIldlYlF1aWNrTG9va0hhbmRsZUFzRGVsZWdh
dGU6OmRpZFJlY2VpdmVEYXRhQXJyYXkoKSIpOwotICAgIG1fY29ubmVjdGlvbkRlbGVnYXRlLT5k
aWRSZWNlaXZlRGF0YUFycmF5KHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZBcnJheVJlZj4oZGF0YUFycmF5
KSk7Ci19Ci0KLS0gKHZvaWQpY29ubmVjdGlvbjooTlNVUkxDb25uZWN0aW9uICopY29ubmVjdGlv
biBkaWRSZWNlaXZlRGF0YTooTlNEYXRhICopZGF0YSBsZW5ndGhSZWNlaXZlZDoobG9uZyBsb25n
KWxlbmd0aFJlY2VpdmVkCi17Ci0gICAgVU5VU0VEX1BBUkFNKGNvbm5lY3Rpb24pOwotICAgIGlm
ICghbV9jb25uZWN0aW9uRGVsZWdhdGUpCi0gICAgICAgIHJldHVybjsKLSAgICBMT0coTmV0d29y
aywgIldlYlF1aWNrTG9va0hhbmRsZUFzRGVsZWdhdGU6OmRpZFJlY2VpdmVEYXRhKCkgLSBkYXRh
IGxlbmd0aCA9ICVsZCIsIChsb25nKVtkYXRhIGxlbmd0aF0pOwotCi0gICAgLy8gUXVpY2tMb29r
IGNvZGUgc2VuZHMgdXMgYSBuaWwgZGF0YSBhdCB0aW1lcy4gVGhlIGNoZWNrIGJlbG93IGlzIHRo
ZSBzYW1lIGFzIHRoZSBvbmUgaW4KLSAgICAvLyBSZXNvdXJjZUhhbmRsZU1hYy5jcHAgYWRkZWQg
Zm9yIGEgZGlmZmVyZW50IGJ1Zy4KLSAgICBpZiAoIVtkYXRhIGxlbmd0aF0pCi0gICAgICAgIHJl
dHVybjsKLSAgICBtX2Nvbm5lY3Rpb25EZWxlZ2F0ZS0+ZGlkUmVjZWl2ZURhdGEocmVpbnRlcnBy
ZXRfY2FzdDxDRkRhdGFSZWY+KGRhdGEpLCBzdGF0aWNfY2FzdDxpbnQ+KGxlbmd0aFJlY2VpdmVk
KSk7Ci19Ci0KLS0gKHZvaWQpY29ubmVjdGlvbkRpZEZpbmlzaExvYWRpbmc6KE5TVVJMQ29ubmVj
dGlvbiAqKWNvbm5lY3Rpb24KLXsKLSAgICBVTlVTRURfUEFSQU0oY29ubmVjdGlvbik7Ci0gICAg
aWYgKCFtX2Nvbm5lY3Rpb25EZWxlZ2F0ZSkKLSAgICAgICAgcmV0dXJuOwotICAgIExPRyhOZXR3
b3JrLCAiV2ViUXVpY2tMb29rSGFuZGxlQXNEZWxlZ2F0ZTo6ZGlkRmluaXNoTG9hZGluZygpIik7
Ci0gICAgbV9jb25uZWN0aW9uRGVsZWdhdGUtPmRpZEZpbmlzaExvYWRpbmcoKTsKLX0KLQotLSAo
dm9pZCljb25uZWN0aW9uOihOU1VSTENvbm5lY3Rpb24gKiljb25uZWN0aW9uIGRpZEZhaWxXaXRo
RXJyb3I6KE5TRXJyb3IgKillcnJvcgotewotICAgIFVOVVNFRF9QQVJBTShjb25uZWN0aW9uKTsK
LSAgICBpZiAoIW1fY29ubmVjdGlvbkRlbGVnYXRlKQotICAgICAgICByZXR1cm47Ci0gICAgTE9H
KE5ldHdvcmssICJXZWJRdWlja0xvb2tIYW5kbGVBc0RlbGVnYXRlOjpkaWRGYWlsKCkiKTsKLSAg
ICBtX2Nvbm5lY3Rpb25EZWxlZ2F0ZS0+ZGlkRmFpbChyZWludGVycHJldF9jYXN0PENGRXJyb3JS
ZWY+KGVycm9yKSk7Ci19Ci0KLS0gKHZvaWQpZGV0YWNoSGFuZGxlCi17Ci0gICAgbV9jb25uZWN0
aW9uRGVsZWdhdGUgPSBudWxscHRyOwotfQotQGVuZAotI2VuZGlmCi0KIEBpbnRlcmZhY2UgV2Vi
UmVzb3VyY2VMb2FkZXJRdWlja0xvb2tEZWxlZ2F0ZSA6IE5TT2JqZWN0IDxOU1VSTENvbm5lY3Rp
b25EZWxlZ2F0ZSwgV2ViQ29yZVJlc291cmNlTG9hZGVyRGVsZWdhdGU+IHsKICAgICBSZWZQdHI8
UmVzb3VyY2VMb2FkZXI+IF9yZXNvdXJjZUxvYWRlcjsKICAgICBCT09MIF9oYXNTZW50RGlkUmVj
ZWl2ZVJlc3BvbnNlOwpAQCAtNDExLDI2ICszMzYsNiBAQCBzdGQ6OnVuaXF1ZV9wdHI8UXVpY2tM
b29rSGFuZGxlPiBRdWlja0xvCiAgICAgcmV0dXJuIHF1aWNrTG9va0hhbmRsZTsKIH0KIAotI2lm
IFVTRShDRk5FVFdPUkspCi1zdGQ6OnVuaXF1ZV9wdHI8UXVpY2tMb29rSGFuZGxlPiBRdWlja0xv
b2tIYW5kbGU6OmNyZWF0ZShSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBTeW5jaHJvbm91c1Jlc291
cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUqIGNvbm5lY3Rpb25EZWxlZ2F0ZSwgQ0ZV
UkxSZXNwb25zZVJlZiBjZlJlc3BvbnNlKQotewotICAgIEFTU0VSVF9BUkcoaGFuZGxlLCBoYW5k
bGUpOwotICAgIGlmIChoYW5kbGUtPmZpcnN0UmVxdWVzdCgpLnJlcXVlc3RlcigpICE9IFJlc291
cmNlUmVxdWVzdDo6UmVxdWVzdGVyOjpNYWluIHx8ICFbUUxQcmV2aWV3R2V0U3VwcG9ydGVkTUlN
RVR5cGVzU2V0KCkgY29udGFpbnNPYmplY3Q6KE5TU3RyaW5nICopQ0ZVUkxSZXNwb25zZUdldE1J
TUVUeXBlKGNmUmVzcG9uc2UpXSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBOU1VS
TFJlc3BvbnNlICpuc1Jlc3BvbnNlID0gW05TVVJMUmVzcG9uc2UgX3Jlc3BvbnNlV2l0aENGVVJM
UmVzcG9uc2U6Y2ZSZXNwb25zZV07Ci0gICAgV2ViUXVpY2tMb29rSGFuZGxlQXNEZWxlZ2F0ZSAq
ZGVsZWdhdGUgPSBbW1tXZWJRdWlja0xvb2tIYW5kbGVBc0RlbGVnYXRlIGFsbG9jXSBpbml0V2l0
aENvbm5lY3Rpb25EZWxlZ2F0ZTpjb25uZWN0aW9uRGVsZWdhdGVdIGF1dG9yZWxlYXNlXTsKLSAg
ICBzdGQ6OnVuaXF1ZV9wdHI8UXVpY2tMb29rSGFuZGxlPiBxdWlja0xvb2tIYW5kbGUobmV3IFF1
aWNrTG9va0hhbmRsZShbaGFuZGxlLT5maXJzdFJlcXVlc3QoKS5uc1VSTFJlcXVlc3QoRG9Ob3RV
cGRhdGVIVFRQQm9keSkgVVJMXSwgbmlsLCBuc1Jlc3BvbnNlLCBkZWxlZ2F0ZSkpOwotICAgIGhh
bmRsZS0+Y2xpZW50KCktPmRpZENyZWF0ZVF1aWNrTG9va0hhbmRsZSgqcXVpY2tMb29rSGFuZGxl
KTsKLSAgICByZXR1cm4gcXVpY2tMb29rSGFuZGxlOwotfQotCi1DRlVSTFJlc3BvbnNlUmVmIFF1
aWNrTG9va0hhbmRsZTo6Y2ZSZXNwb25zZSgpCi17Ci0gICAgcmV0dXJuIFttX25zUmVzcG9uc2Ug
X0NGVVJMUmVzcG9uc2VdOwotfQotI2VuZGlmCi0KIGJvb2wgUXVpY2tMb29rSGFuZGxlOjpzaG91
bGRDcmVhdGVGb3JNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogewogICAgIHJldHVy
biBbUUxQcmV2aWV3R2V0U3VwcG9ydGVkTUlNRVR5cGVzU2V0KCkgY29udGFpbnNPYmplY3Q6bWlt
ZVR5cGVdOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUmVzb3Vy
Y2VIYW5kbGVJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9pb3MvUmVzb3VyY2VIYW5kbGVJT1MubW0JKHJldmlzaW9uIDIwNzAzOSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1Jlc291cmNlSGFuZGxlSU9TLm1tCShub25l
eGlzdGVudCkKQEAgLTEsMzkgKzAsMCBAQAotLy8KLS8vICBSZXNvdXJjZUhhbmRsZUlQaG9uZS5t
bQotLy8gIFdlYkNvcmUKLS8vCi0vLyAgQ29weXJpZ2h0IDIwMTEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotLy8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJSZXNvdXJj
ZUhhbmRsZUludGVybmFsLmgiCi0KLSNpZiBVU0UoQ0ZORVRXT1JLKQotCi0jaW1wb3J0IDxDRk5l
dHdvcmsvQ0ZTb2NrZXRTdHJlYW1Qcml2Lmg+Ci0jaW1wb3J0IDxGb3VuZGF0aW9uL05TVVJMUmVx
dWVzdFByaXZhdGUuaD4KLQotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQotQ0ZNdXRhYmxlRGljdGlvbmFyeVJlZiBSZXNvdXJjZUhhbmRsZTo6Y3JlYXRl
U1NMUHJvcGVydGllc0Zyb21OU1VSTFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0KQotewotICAgIE5TU3RyaW5nICpob3N0ID0gcmVxdWVzdC51cmwoKS5ob3N0KCk7Ci0gICAg
TlNBcnJheSAqY2VydEFycmF5ID0gW05TVVJMUmVxdWVzdCBhbGxvd3NTcGVjaWZpY0hUVFBTQ2Vy
dGlmaWNhdGVGb3JIb3N0Omhvc3RdOwotICAgIEJPT0wgYWxsb3dzQW55Q2VydGlmaWNhdGUgPSBb
TlNVUkxSZXF1ZXN0IGFsbG93c0FueUhUVFBTQ2VydGlmaWNhdGVGb3JIb3N0Omhvc3RdOwotICAg
IGlmICghY2VydEFycmF5ICYmICFhbGxvd3NBbnlDZXJ0aWZpY2F0ZSkKLSAgICAgICAgcmV0dXJu
IDA7Ci0KLSAgICBDRk11dGFibGVEaWN0aW9uYXJ5UmVmIHNzbFByb3BzID0gQ0ZEaWN0aW9uYXJ5
Q3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwLCAma0NGVHlwZURpY3Rpb25hcnlL
ZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKTsKLSAgICBpZiAo
Y2VydEFycmF5KQotICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShzc2xQcm9wcywgX2tDRlN0
cmVhbVNTTFRydXN0ZWRMZWFmQ2VydGlmaWNhdGVzLCAoQ0ZUeXBlUmVmKSBjZXJ0QXJyYXkpOwot
Ci0gICAgaWYgKGFsbG93c0FueUNlcnRpZmljYXRlKQotICAgICAgICBDRkRpY3Rpb25hcnlTZXRW
YWx1ZShzc2xQcm9wcywga0NGU3RyZWFtU1NMVmFsaWRhdGVzQ2VydGlmaWNhdGVDaGFpbiwga0NG
Qm9vbGVhbkZhbHNlKTsKLSAgICByZXR1cm4gc3NsUHJvcHM7Ci19Ci0KLX0KLQotI2VuZGlmCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9SZXNvdXJjZVJlcXVlc3RJ
T1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3Mv
UmVzb3VyY2VSZXF1ZXN0SU9TLm1tCShyZXZpc2lvbiAyMDcwMzkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9SZXNvdXJjZVJlcXVlc3RJT1MubW0JKG5vbmV4aXN0ZW50
KQpAQCAtMSw3NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlLCBJbmMu
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIlJlc291cmNlUmVxdWVzdC5o
IgotCi0jaWYgUExBVEZPUk0oSU9TKQotCi1AaW50ZXJmYWNlIE5TVVJMUmVxdWVzdCAoV2ViTlNV
UkxSZXF1ZXN0RGV0YWlscykKLS0gKENGVVJMUmVxdWVzdFJlZilfQ0ZVUkxSZXF1ZXN0OwotLSAo
aWQpX2luaXRXaXRoQ0ZVUkxSZXF1ZXN0OihDRlVSTFJlcXVlc3RSZWYpcmVxdWVzdDsKLUBlbmQK
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0jaWYgVVNFKENGTkVUV09SSykKLQotUmVzb3VyY2VS
ZXF1ZXN0OjpSZXNvdXJjZVJlcXVlc3QoTlNVUkxSZXF1ZXN0ICpuc1JlcXVlc3QpCi0gICAgOiBS
ZXNvdXJjZVJlcXVlc3RCYXNlKCkKLSAgICAsIG1fY2ZSZXF1ZXN0KFtuc1JlcXVlc3QgX0NGVVJM
UmVxdWVzdF0pCi0gICAgLCBtX25zUmVxdWVzdChuc1JlcXVlc3QpCi17Ci19Ci0KLXZvaWQgUmVz
b3VyY2VSZXF1ZXN0Ojp1cGRhdGVOU1VSTFJlcXVlc3QoKQotewotICAgIGlmIChtX2NmUmVxdWVz
dCkKLSAgICAgICAgbV9uc1JlcXVlc3QgPSBhZG9wdE5TKFtbTlNNdXRhYmxlVVJMUmVxdWVzdCBh
bGxvY10gX2luaXRXaXRoQ0ZVUkxSZXF1ZXN0Om1fY2ZSZXF1ZXN0LmdldCgpXSk7Ci19Ci0KLXZv
aWQgUmVzb3VyY2VSZXF1ZXN0OjpjbGVhck9yVXBkYXRlTlNVUkxSZXF1ZXN0KCkKLXsKLSAgICAv
LyBUaGVyZSBpcyBjbGllbnQgY29kZSB0aGF0IGV4dGVuZHMgTlNVUkxSZXF1ZXN0IGFuZCBleHBl
Y3RzIHRvIGdldCBiYWNrLCBpbiB0aGUgZGVsZWdhdGUKLSAgICAvLyBjYWxsYmFja3MsIGFuIG9i
amVjdCBvZiB0aGUgc2FtZSB0eXBlIHRoYXQgdGhleSBwYXNzZWQgaW50byBXZWJLaXQuIFRvIGtl
ZXAgdGhlbiBydW5uaW5nLCB3ZQotICAgIC8vIGNyZWF0ZSBhbiBvYmplY3Qgb2YgdGhlIHNhbWUg
dHlwZSBhbmQgcmV0dXJuIHRoYXQuIFNlZSA8cmRhcjovLzk4NDM1ODI+LgotICAgIC8vIEFsc28s
IGRldmVsb3BlcnMgcmVhbGx5IHJlYWxseSB3YW50IGFuIE5TTXV0YWJsZVVSTFJlcXVlc3Qgc28g
dHJ5IHRvIGNyZWF0ZSBhbgotICAgIC8vIE5TTXV0YWJsZVVSTFJlcXVlc3QgaW5zdGVhZCBvZiBO
U1VSTFJlcXVlc3QuCi0gICAgc3RhdGljIENsYXNzIG5zVVJMUmVxdWVzdENsYXNzID0gW05TVVJM
UmVxdWVzdCBjbGFzc107Ci0gICAgc3RhdGljIENsYXNzIG5zTXV0YWJsZVVSTFJlcXVlc3RDbGFz
cyA9IFtOU011dGFibGVVUkxSZXF1ZXN0IGNsYXNzXTsKLSAgICBDbGFzcyByZXF1ZXN0Q2xhc3Mg
PSBbbV9uc1JlcXVlc3QuZ2V0KCkgY2xhc3NdOwotCi0gICAgaWYgKCFtX2NmUmVxdWVzdCkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgaWYgKHJlcXVlc3RDbGFzcyAmJiByZXF1ZXN0Q2xhc3MgIT0g
bnNVUkxSZXF1ZXN0Q2xhc3MgJiYgcmVxdWVzdENsYXNzICE9IG5zTXV0YWJsZVVSTFJlcXVlc3RD
bGFzcykKLSAgICAgICAgbV9uc1JlcXVlc3QgPSBhZG9wdE5TKFtbcmVxdWVzdENsYXNzIGFsbG9j
XSBfaW5pdFdpdGhDRlVSTFJlcXVlc3Q6bV9jZlJlcXVlc3QuZ2V0KCldKTsKLSAgICBlbHNlCi0g
ICAgICAgIG1fbnNSZXF1ZXN0ID0gbnVsbHB0cjsKLX0KLQotI2VuZGlmIC8vIFVTRShDRk5FVFdP
UkspCi0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0F1dGhlbnRpY2F0aW9u
TWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFj
L0F1dGhlbnRpY2F0aW9uTWFjLm1tCShyZXZpc2lvbiAyMDcwMzkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9BdXRoZW50aWNhdGlvbk1hYy5tbQkod29ya2luZyBjb3B5
KQpAQCAtMzIsMTggKzMyLDExIEBACiAjaW1wb3J0IDxGb3VuZGF0aW9uL05TVVJMQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UuaD4KICNpbXBvcnQgPEZvdW5kYXRpb24vTlNVUkxQcm90ZWN0aW9uU3Bh
Y2UuaD4KIAotI2lmIFVTRShDRk5FVFdPUkspCi0jaW1wb3J0ICJDRk5TVVJMQ29ubmVjdGlvblNQ
SS5oIgotI2VuZGlmCi0KIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBAaW50ZXJmYWNlIFdl
YkNvcmVBdXRoZW50aWNhdGlvbkNsaWVudEFzQ2hhbGxlbmdlU2VuZGVyIDogTlNPYmplY3QgPE5T
VVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXI+CiB7CiAgICAgQXV0aGVudGljYXRpb25D
bGllbnQqIG1fY2xpZW50OwotI2lmIFVTRShDRk5FVFdPUkspCi0gICAgQ0ZVUkxBdXRoQ2hhbGxl
bmdlUmVmIG1fY2ZDaGFsbGVuZ2U7Ci0jZW5kaWYKIH0KIC0gKGlkKWluaXRXaXRoQXV0aGVudGlj
YXRpb25DbGllbnQ6KEF1dGhlbnRpY2F0aW9uQ2xpZW50KiljbGllbnQ7CiAtIChBdXRoZW50aWNh
dGlvbkNsaWVudCopY2xpZW50OwpAQCAtMTAxLDQ3ICs5NCwxMCBAQCAtICh2b2lkKWNhbmNlbEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOihOCiAgICAgICAgIG1fY2xpZW50LT5yZWNlaXZlZENhbmNl
bGxhdGlvbihjb3JlKGNoYWxsZW5nZSkpOwogfQogCi0jaWYgVVNFKENGTkVUV09SSykKLS0gKHZv
aWQpc2V0Q0ZDaGFsbGVuZ2U6KENGVVJMQXV0aENoYWxsZW5nZVJlZiljaGFsbGVuZ2UKLXsKLSAg
ICBtX2NmQ2hhbGxlbmdlID0gY2hhbGxlbmdlOwotfQotCi0tIChDRlVSTEF1dGhDaGFsbGVuZ2VS
ZWYpY2ZDaGFsbGVuZ2UKLXsKLSAgICByZXR1cm4gbV9jZkNoYWxsZW5nZTsKLX0KLSNlbmRpZgot
CiBAZW5kCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotI2lmIFVTRShDRk5FVFdPUkspCi0KLUF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIGNvcmUoTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAq
bWFjQ2hhbGxlbmdlKQotewotICAgIFdlYkNvcmVBdXRoZW50aWNhdGlvbkNsaWVudEFzQ2hhbGxl
bmdlU2VuZGVyICpjaGFsbGVuZ2VTZW5kZXIgPSAoV2ViQ29yZUF1dGhlbnRpY2F0aW9uQ2xpZW50
QXNDaGFsbGVuZ2VTZW5kZXIqKSBbbWFjQ2hhbGxlbmdlIHNlbmRlcl07Ci0gICAgcmV0dXJuIEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFtjaGFsbGVuZ2VTZW5kZXIgY2ZDaGFsbGVuZ2VdLCBbY2hh
bGxlbmdlU2VuZGVyIGNsaWVudF0pOwotfQotCi1OU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
ICptYWMoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNvcmVDaGFsbGVuZ2UpCi17Ci0g
ICAgQXV0aGVudGljYXRpb25DbGllbnQqIGF1dGhDbGllbnQgPSBjb3JlQ2hhbGxlbmdlLmF1dGhl
bnRpY2F0aW9uQ2xpZW50KCk7Ci0gICAgUmV0YWluUHRyPFdlYkNvcmVBdXRoZW50aWNhdGlvbkNs
aWVudEFzQ2hhbGxlbmdlU2VuZGVyPiBjaGFsbGVuZ2VTZW5kZXIgPSBhZG9wdE5TKFtbV2ViQ29y
ZUF1dGhlbnRpY2F0aW9uQ2xpZW50QXNDaGFsbGVuZ2VTZW5kZXIgYWxsb2NdIGluaXRXaXRoQXV0
aGVudGljYXRpb25DbGllbnQ6YXV0aENsaWVudF0pOwotICAgIFJldGFpblB0cjxDRlVSTEF1dGhD
aGFsbGVuZ2VSZWY+IGF1dGhDaGFsbGVuZ2UgPSBjb3JlQ2hhbGxlbmdlLmNmVVJMQXV0aENoYWxs
ZW5nZVJlZigpOwotICAgIGlmICghYXV0aENoYWxsZW5nZSkKLSAgICAgICAgYXV0aENoYWxsZW5n
ZSA9IGFkb3B0Q0YoY3JlYXRlQ0YoY29yZUNoYWxsZW5nZSkpOwotICAgIFtjaGFsbGVuZ2VTZW5k
ZXIuZ2V0KCkgc2V0Q0ZDaGFsbGVuZ2U6YXV0aENoYWxsZW5nZS5nZXQoKV07Ci0jaWYgUExBVEZP
Uk0oSU9TKQotICAgIHJldHVybiBbW05TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgX2NyZWF0
ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRm9yQ0ZBdXRoQ2hhbGxlbmdlOmF1dGhDaGFsbGVuZ2Uu
Z2V0KCkgc2VuZGVyOmNoYWxsZW5nZVNlbmRlci5nZXQoKV0gYXV0b3JlbGVhc2VdOwotI2Vsc2UK
LSAgICByZXR1cm4gW1tOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIF9hdXRoZW50aWNhdGlv
bkNoYWxsZW5nZUZvckNGQXV0aENoYWxsZW5nZTphdXRoQ2hhbGxlbmdlLmdldCgpIHNlbmRlcjpj
aGFsbGVuZ2VTZW5kZXIuZ2V0KCldIGF1dG9yZWxlYXNlXTsKLSNlbmRpZgotfQotCi0jZWxzZQot
CiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY29uc3Qg
UHJvdGVjdGlvblNwYWNlJiBwcm90ZWN0aW9uU3BhY2UsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ3JlZGVudGlhbCYgcHJvcG9zZWRDcmVk
ZW50aWFsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHVuc2lnbmVkIHByZXZpb3VzRmFpbHVyZUNvdW50LApAQCAtMjE1LDYgKzE3MSw0IEBAIEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlIGNvcmUoTlNVUkxBdXRoZW4KICAgICByZXR1cm4gQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UobWFjQ2hhbGxlbmdlKTsKIH0KIAotI2VuZGlmIC8vIFVTRShDRk5FVFdP
UkspCi0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvbWFjL0Nvb2tpZUphck1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9Db29raWVKYXJNYWMubW0JKHJldmlzaW9uIDIwNzAz
OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Nvb2tpZUphck1hYy5t
bQkod29ya2luZyBjb3B5KQpAQCAtMjcsMTkgKzI3LDEyIEBACiAjaW1wb3J0ICJQbGF0Zm9ybUNv
b2tpZUphci5oIgogCiAjaW1wb3J0ICJDRk5ldHdvcmtTUEkuaCIKLSNpbXBvcnQgIk5ldHdvcmtT
dG9yYWdlU2Vzc2lvbi5oIgotI2ltcG9ydCAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgotI2lt
cG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
c3RhdGljIE5TSFRUUENvb2tpZVN0b3JhZ2UgKmNvb2tpZVN0b3JhZ2UoY29uc3QgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uJik7Ci19Ci0KLSNpZiAhVVNFKENGTkVUV09SSykKLQogI2ltcG9ydCAiQ29v
a2llLmgiCiAjaW1wb3J0ICJDb29raWVTdG9yYWdlLmgiCisjaW1wb3J0ICJOZXR3b3JrU3RvcmFn
ZVNlc3Npb24uaCIKICNpbXBvcnQgIlVSTC5oIgorI2ltcG9ydCAiV2ViQ29yZVN5c3RlbUludGVy
ZmFjZS5oIgorI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KICNpbXBvcnQgPHd0
Zi9PcHRpb25hbC5oPgogI2ltcG9ydCA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCkBAIC0x
OTEsNiArMTg0LDcgQEAgdm9pZCBzZXRDb29raWVzRnJvbURPTShjb25zdCBOZXR3b3JrU3Rvcgog
ICAgIE5TVVJMICpjb29raWVVUkwgPSB1cmw7CiAgICAgTlNEaWN0aW9uYXJ5ICpoZWFkZXJGaWVs
ZHMgPSBbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0OmNvb2tpZVN0cmluZyBmb3JL
ZXk6QCJTZXQtQ29va2llIl07CiAKKyAgICAvLyBGSVhNRTogSXMgdGhpcyBuZWVkZWQgb24gaU9T
LCB0b28/CiAjaWYgUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEID49IDEwMTEwMAogICAgIE5TQXJyYXkgKnVuZmlsdGVyZWRDb29raWVzID0gW05TSFRUUENv
b2tpZSBfcGFyc2VkQ29va2llc1dpdGhSZXNwb25zZUhlYWRlckZpZWxkczpoZWFkZXJGaWVsZHMg
Zm9yVVJMOmNvb2tpZVVSTF07CiAjZWxzZQpAQCAtMjYwLDYgKzI1NCwxNSBAQCB2b2lkIGRlbGV0
ZUNvb2tpZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlCiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBU
SU9OUzsKIH0KIAorc3RhdGljIE5TSFRUUENvb2tpZVN0b3JhZ2UgKmNvb2tpZVN0b3JhZ2UoY29u
c3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uKQoreworICAgIGF1dG8gY29va2llU3Rv
cmFnZSA9IHNlc3Npb24uY29va2llU3RvcmFnZSgpOworICAgIGlmICghY29va2llU3RvcmFnZSB8
fCBbTlNIVFRQQ29va2llU3RvcmFnZSBzaGFyZWRIVFRQQ29va2llU3RvcmFnZV0uX2Nvb2tpZVN0
b3JhZ2UgPT0gY29va2llU3RvcmFnZSkKKyAgICAgICAgcmV0dXJuIFtOU0hUVFBDb29raWVTdG9y
YWdlIHNoYXJlZEhUVFBDb29raWVTdG9yYWdlXTsKKyAgICAKKyAgICByZXR1cm4gW1tbTlNIVFRQ
Q29va2llU3RvcmFnZSBhbGxvY10gX2luaXRXaXRoQ0ZIVFRQQ29va2llU3RvcmFnZTpjb29raWVT
dG9yYWdlLmdldCgpXSBhdXRvcmVsZWFzZV07Cit9CisKIHZvaWQgYWRkQ29va2llKGNvbnN0IE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IENvb2tp
ZSYgY29va2llKQogewogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKQEAgLTI4MCwx
MiArMjgzLDEwIEBAIHZvaWQgYWRkQ29va2llKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2kKICAg
ICAgICAgTlNIVFRQQ29va2llRXhwaXJlczogW05TRGF0ZSBkYXRlV2l0aFRpbWVJbnRlcnZhbFNp
bmNlMTk3MDpjb29raWUuZXhwaXJlcyAvIDEwMDAuMF0sCiAgICAgfV07CiAKLSNpZiAhVVNFKENG
TkVUV09SSykKICAgICBpZiAoIWNvb2tpZVN0b3JhZ2UpIHsKICAgICAgICAgW1dlYkNvcmU6OmNv
b2tpZVN0b3JhZ2Uoc2Vzc2lvbikgc2V0Q29va2llOmh0dHBDb29raWVdOwogICAgICAgICByZXR1
cm47CiAgICAgfQotI2VuZGlmIC8vICFVU0UoQ0ZORVRXT1JLKQogCiAgICAgQ0ZIVFRQQ29va2ll
U3RvcmFnZVNldENvb2tpZShjb29raWVTdG9yYWdlLmdldCgpLCBbaHR0cENvb2tpZSBfQ0ZIVFRQ
Q29va2llXSk7CiAKQEAgLTMwOSwyMSArMzEwLDYgQEAgdm9pZCBkZWxldGVBbGxDb29raWVzKGNv
bnN0IE5ldHdvcmtTdG9yYQogICAgIHdrRGVsZXRlQWxsSFRUUENvb2tpZXMoc2Vzc2lvbi5jb29r
aWVTdG9yYWdlKCkuZ2V0KCkpOwogfQogCi19Ci0KLSNlbmRpZiAvLyAhVVNFKENGTkVUV09SSykK
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdGF0aWMgTlNIVFRQQ29va2llU3RvcmFnZSAqY29v
a2llU3RvcmFnZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24pCi17Ci0gICAg
YXV0byBjb29raWVTdG9yYWdlID0gc2Vzc2lvbi5jb29raWVTdG9yYWdlKCk7Ci0gICAgaWYgKCFj
b29raWVTdG9yYWdlIHx8IFtOU0hUVFBDb29raWVTdG9yYWdlIHNoYXJlZEhUVFBDb29raWVTdG9y
YWdlXS5fY29va2llU3RvcmFnZSA9PSBjb29raWVTdG9yYWdlKQotICAgICAgICByZXR1cm4gW05T
SFRUUENvb2tpZVN0b3JhZ2Ugc2hhcmVkSFRUUENvb2tpZVN0b3JhZ2VdOwotCi0gICAgcmV0dXJu
IFtbW05TSFRUUENvb2tpZVN0b3JhZ2UgYWxsb2NdIF9pbml0V2l0aENGSFRUUENvb2tpZVN0b3Jh
Z2U6Y29va2llU3RvcmFnZS5nZXQoKV0gYXV0b3JlbGVhc2VdOwotfQotCiB2b2lkIGRlbGV0ZUNv
b2tpZXNGb3JIb3N0bmFtZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBj
b25zdCBWZWN0b3I8U3RyaW5nPiYgaG9zdG5hbWVzKQogewogICAgIEJFR0lOX0JMT0NLX09CSkNf
RVhDRVBUSU9OUzsKQEAgLTM1Myw3ICszMzksNiBAQCB2b2lkIGRlbGV0ZUNvb2tpZXNGb3JIb3N0
bmFtZXMoY29uc3QgTmV0CiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIH0KIAotCiB2
b2lkIGRlbGV0ZUFsbENvb2tpZXNNb2RpZmllZFNpbmNlKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiYgc2Vzc2lvbiwgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCB0aW1l
UG9pbnQpCiB7CiAgICAgaWYgKCFbTlNIVFRQQ29va2llU3RvcmFnZSBpbnN0YW5jZXNSZXNwb25k
VG9TZWxlY3RvcjpAc2VsZWN0b3IocmVtb3ZlQ29va2llc1NpbmNlRGF0ZTopXSkKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0NyZWRlbnRpYWxTdG9yYWdlTWFjLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0NyZWRl
bnRpYWxTdG9yYWdlTWFjLm1tCShyZXZpc2lvbiAyMDcwMzkpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL21hYy9DcmVkZW50aWFsU3RvcmFnZU1hYy5tbQkod29ya2luZyBjb3B5
KQpAQCAtMjYsOCArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNyZWRl
bnRpYWxTdG9yYWdlLmgiCiAKLSNpZiAhVVNFKENGTkVUV09SSykKLQogI2luY2x1ZGUgIkF1dGhl
bnRpY2F0aW9uTWFjLmgiCiAjaW5jbHVkZSAiQ3JlZGVudGlhbC5oIgogI2luY2x1ZGUgIlByb3Rl
Y3Rpb25TcGFjZS5oIgpAQCAtNTIsNSArNTAsMyBAQCB2b2lkIENyZWRlbnRpYWxTdG9yYWdlOjpz
YXZlVG9QZXJzaXN0ZW50CiAjZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5k
aWYgLy8gIVVTRShDRk5FVFdPUkspCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL21hYy9Gb3JtRGF0YVN0cmVhbU1hYy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvbWFjL0Zvcm1EYXRhU3RyZWFtTWFjLmgJKHJldmlzaW9uIDIwNzAz
OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Zvcm1EYXRhU3RyZWFt
TWFjLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDEwICsyNiw3IEBACiAgKiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICov
CiAKLSNpZm5kZWYgRm9ybURhdGFTdHJlYW1NYWNfaAotI2RlZmluZSBGb3JtRGF0YVN0cmVhbU1h
Y19oCi0KLSNpZiAhVVNFKENGTkVUV09SSykKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSA8d3Rm
L0ZvcndhcmQuaD4KIApAQCAtNDAsMTUgKzM3LDExIEBAIHR5cGVkZWYgY29uc3Qgc3RydWN0IF9D
RlVSTFJlcXVlc3QqIENGVVIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0gICAgY2xhc3MgRm9y
bURhdGE7CitjbGFzcyBGb3JtRGF0YTsKIAotICAgIHZvaWQgc2V0SFRUUEJvZHkoTlNNdXRhYmxl
VVJMUmVxdWVzdCAqLCBGb3JtRGF0YSopOwotICAgIEZvcm1EYXRhKiBodHRwQm9keUZyb21TdHJl
YW0oTlNJbnB1dFN0cmVhbSAqKTsKK3ZvaWQgc2V0SFRUUEJvZHkoTlNNdXRhYmxlVVJMUmVxdWVz
dCAqLCBGb3JtRGF0YSopOworRm9ybURhdGEqIGh0dHBCb2R5RnJvbVN0cmVhbShOU0lucHV0U3Ry
ZWFtICopOwogCi0gICAgQ0ZTdHJpbmdSZWYgZm9ybURhdGFTdHJlYW1MZW5ndGhQcm9wZXJ0eU5h
bWUoKTsKK0NGU3RyaW5nUmVmIGZvcm1EYXRhU3RyZWFtTGVuZ3RoUHJvcGVydHlOYW1lKCk7CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vICFVU0UoQ0ZORVRXT1JLKQotCi0j
ZW5kaWYgLy8gRm9ybURhdGFTdHJlYW1NYWNfaApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9tYWMvRm9ybURhdGFTdHJlYW1NYWMubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvRm9ybURhdGFTdHJlYW1NYWMubW0JKHJldmlz
aW9uIDIwNzAzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Zvcm1E
YXRhU3RyZWFtTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw4ICsyOSw2IEBACiAjaW1wb3J0
ICJjb25maWcuaCIKICNpbXBvcnQgIkZvcm1EYXRhU3RyZWFtTWFjLmgiCiAKLSNpZiAhVVNFKENG
TkVUV09SSykKLQogI2ltcG9ydCAiRm9ybURhdGEuaCIKICNpbXBvcnQgIkZvcm1EYXRhU3RyZWFt
Q0ZOZXQuaCIKIApAQCAtNTEsNSArNDksMyBAQCBGb3JtRGF0YSogaHR0cEJvZHlGcm9tU3RyZWFt
KE5TSW5wdXRTdHJlCiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vICFV
U0UoQ0ZORVRXT1JLKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMv
UmVzb3VyY2VFcnJvck1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL21hYy9SZXNvdXJjZUVycm9yTWFjLm1tCShyZXZpc2lvbiAyMDcwMzkpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUVycm9yTWFjLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0zMSwxMCArMzEsNiBAQAogI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3Vu
ZGF0aW9uLmg+CiAjaW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgogCi0jaWYgUExB
VEZPUk0oSU9TKSAmJiBVU0UoQ0ZORVRXT1JLKQotI2ltcG9ydCA8Q0ZOZXR3b3JrL0NGU29ja2V0
U3RyZWFtUHJpdi5oPgotI2VuZGlmCi0KIEBpbnRlcmZhY2UgTlNFcnJvciAoV2ViRXh0cmFzKQog
LSAoTlNTdHJpbmcgKilfd2ViX2xvY2FsaXplZERlc2NyaXB0aW9uOwogQGVuZApAQCAtOTEsODUg
Kzg3LDYgQEAgLSAodm9pZCllbmNvZGVXaXRoQ29kZXI6KE5TQ29kZXIgKiljb2RlcgogCiBAZW5k
CiAKLQotI2lmIFVTRShDRk5FVFdPUkspCi1zdGF0aWMgTlNFcnJvciAqTlNFcnJvckZyb21DRkVy
cm9yKENGRXJyb3JSZWYgY2ZFcnJvciwgTlNVUkwgKnVybCkKLXsKLSAgICBDRkluZGV4IGVyckNv
ZGUgPSBDRkVycm9yR2V0Q29kZShjZkVycm9yKTsKLSAgICBpZiAoQ0ZFcXVhbChDRkVycm9yR2V0
RG9tYWluKGNmRXJyb3IpLCBrQ0ZFcnJvckRvbWFpbkNGTmV0d29yaykgJiYgZXJyQ29kZSA8PSBr
Q0ZVUkxFcnJvclVua25vd24gJiYgZXJyQ29kZSA+IC00MDAwKSB7Ci0gICAgICAgIC8vIFRoaXMg
aXMgYW4gVVJMIGVycm9yIGFuZCBuZWVkcyB0byBiZSB0cmFuc2xhdGVkIHRvIHRoZSBOU1VSTEVy
cm9yRG9tYWluCi0gICAgICAgIGlkIGtleXNbMTBdLCB2YWx1ZXNbMTBdOwotICAgICAgICBDRkRp
Y3Rpb25hcnlSZWYgdXNlckluZm8gPSBDRkVycm9yQ29weVVzZXJJbmZvKGNmRXJyb3IpOwotICAg
ICAgICBOU0Vycm9yICpyZXN1bHQ7Ci0gICAgICAgIE5TSW50ZWdlciBjb3VudCA9IDA7Ci0KLSAg
ICAgICAgaWYgKHVybCkgewotICAgICAgICAgICAga2V5c1tjb3VudF0gPSBOU1VSTEVycm9yRmFp
bGluZ1VSTEVycm9yS2V5OwotICAgICAgICAgICAgdmFsdWVzW2NvdW50XSA9IHVybDsKLSAgICAg
ICAgICAgIGNvdW50ICsrOwotCi0gICAgICAgICAgICBrZXlzW2NvdW50XSA9IE5TVVJMRXJyb3JG
YWlsaW5nVVJMU3RyaW5nRXJyb3JLZXk7Ci0gICAgICAgICAgICB2YWx1ZXNbY291bnRdID0gW3Vy
bCBhYnNvbHV0ZVN0cmluZ107Ci0gICAgICAgICAgICBjb3VudCArKzsKLSAgICAgICAgfQotCi0g
ICAgICAgIHZhbHVlc1tjb3VudF0gPSAoaWQpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUodXNlckluZm8s
IGtDRkVycm9yTG9jYWxpemVkRGVzY3JpcHRpb25LZXkpOwotICAgICAgICBpZiAodmFsdWVzW2Nv
dW50XSkgewotICAgICAgICAgICAga2V5c1tjb3VudF0gPSBOU0xvY2FsaXplZERlc2NyaXB0aW9u
S2V5OwotICAgICAgICAgICAgY291bnQgKys7Ci0gICAgICAgIH0KLQotICAgICAgICB2YWx1ZXNb
Y291bnRdID0gKGlkKUNGRGljdGlvbmFyeUdldFZhbHVlKHVzZXJJbmZvLCBrQ0ZFcnJvckxvY2Fs
aXplZEZhaWx1cmVSZWFzb25LZXkpOwotICAgICAgICBpZiAodmFsdWVzW2NvdW50XSkgewotICAg
ICAgICAgICAga2V5c1tjb3VudF0gPSBOU0xvY2FsaXplZEZhaWx1cmVSZWFzb25FcnJvcktleTsK
LSAgICAgICAgICAgIGNvdW50ICsrOwotICAgICAgICB9Ci0KLSAgICAgICAgdmFsdWVzW2NvdW50
XSA9IChpZClDRkRpY3Rpb25hcnlHZXRWYWx1ZSh1c2VySW5mbywga0NGRXJyb3JMb2NhbGl6ZWRS
ZWNvdmVyeVN1Z2dlc3Rpb25LZXkpOwotICAgICAgICBpZiAodmFsdWVzW2NvdW50XSkgewotICAg
ICAgICAgICAga2V5c1tjb3VudF0gPSBOU0xvY2FsaXplZFJlY292ZXJ5U3VnZ2VzdGlvbkVycm9y
S2V5OwotICAgICAgICAgICAgY291bnQgKys7Ci0gICAgICAgIH0KLQotI3ByYWdtYSBjbGFuZyBk
aWFnbm9zdGljIHB1c2gKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV2RlcHJl
Y2F0ZWQtZGVjbGFyYXRpb25zIgotICAgICAgICBpZiAodXNlckluZm8gJiYgKHZhbHVlc1tjb3Vu
dF0gPSAoaWQpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUodXNlckluZm8sIGtDRlN0cmVhbVByb3BlcnR5
U1NMUGVlckNlcnRpZmljYXRlcykpICE9IG5pbCkgewotICAgICAgICAgICAgLy8gTmVlZCB0byB0
cmFuc2xhdGUgdGhlIGNlcnQKLSAgICAgICAgICAgIGtleXNbY291bnRdID0gQCJOU0Vycm9yUGVl
ckNlcnRpZmljYXRlQ2hhaW5LZXkiOwotICAgICAgICAgICAgY291bnQgKys7Ci0KLSAgICAgICAg
ICAgIHZhbHVlc1tjb3VudF0gPSAoaWQpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUodXNlckluZm8sIF9r
Q0ZTdHJlYW1Qcm9wZXJ0eVNTTENsaWVudENlcnRpZmljYXRlcyk7Ci0gICAgICAgICAgICBpZiAo
dmFsdWVzW2NvdW50XSkgewotICAgICAgICAgICAgICAgIGtleXNbY291bnRdID0gQCJOU0Vycm9y
Q2xpZW50Q2VydGlmaWNhdGVDaGFpbktleSI7Ci0gICAgICAgICAgICAgICAgY291bnQgKys7Ci0g
ICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHZhbHVlc1tjb3VudF0gPSAoaWQpQ0ZEaWN0aW9u
YXJ5R2V0VmFsdWUodXNlckluZm8sIF9rQ0ZTdHJlYW1Qcm9wZXJ0eVNTTENsaWVudENlcnRpZmlj
YXRlU3RhdGUpOwotICAgICAgICAgICAgaWYgKHZhbHVlc1tjb3VudF0pIHsKLSAgICAgICAgICAg
ICAgICBrZXlzW2NvdW50XSA9IEAiTlNFcnJvckNsaWVudENlcnRpZmljYXRlU3RhdGVLZXkiOwot
ICAgICAgICAgICAgICAgIGNvdW50ICsrOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0jcHJh
Z21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCi0KLSAgICAgICAgaWYgKHVzZXJJbmZvICYmICh2YWx1
ZXNbY291bnRdID0gKGlkKUNGRGljdGlvbmFyeUdldFZhbHVlKHVzZXJJbmZvLCBrQ0ZTdHJlYW1Q
cm9wZXJ0eVNTTFBlZXJUcnVzdCkpICE9IG5pbCkgewotICAgICAgICAgICAga2V5c1tjb3VudF0g
PSBOU1VSTEVycm9yRmFpbGluZ1VSTFBlZXJUcnVzdEVycm9yS2V5OwotICAgICAgICAgICAgY291
bnQrKzsKLSAgICAgICAgfQotCi0gICAgICAgIGtleXNbY291bnRdID0gTlNVbmRlcmx5aW5nRXJy
b3JLZXk7Ci0gICAgICAgIHZhbHVlc1tjb3VudF0gPSAoaWQpY2ZFcnJvcjsKLSAgICAgICAgY291
bnQgKys7Ci0KLSAgICAgICAgcmVzdWx0ID0gW1dlYkN1c3RvbU5TVVJMRXJyb3IgZXJyb3JXaXRo
RG9tYWluOk5TVVJMRXJyb3JEb21haW4gY29kZTooZXJyQ29kZSA9PSBrQ0ZVUkxFcnJvclVua25v
d24gPyAoQ0ZJbmRleClOU1VSTEVycm9yVW5rbm93biA6IGVyckNvZGUpIHVzZXJJbmZvOltOU0Rp
Y3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3RzOnZhbHVlcyBmb3JLZXlzOmtleXMgY291bnQ6
Y291bnRdXTsKLSAgICAgICAgaWYgKHVzZXJJbmZvKQotICAgICAgICAgICAgQ0ZSZWxlYXNlKHVz
ZXJJbmZvKTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0gICAgcmV0dXJuIChOU0Vy
cm9yICopY2ZFcnJvcjsKLX0KLSNlbmRpZiAvLyBVU0UoQ0ZORVRXT1JLKQotCiAjZW5kaWYgLy8g
UExBVEZPUk0oSU9TKQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xOTAsNTMgKzEwNyw2IEBA
IHN0YXRpYyBSZXRhaW5QdHI8TlNFcnJvcj4gY3JlYXRlTlNFcnJvckYKICAgICByZXR1cm4gYWRv
cHROUyhbW05TRXJyb3IgYWxsb2NdIGluaXRXaXRoRG9tYWluOnJlc291cmNlRXJyb3IuZG9tYWlu
KCkgY29kZTpyZXNvdXJjZUVycm9yLmVycm9yQ29kZSgpIHVzZXJJbmZvOnVzZXJJbmZvLmdldCgp
XSk7CiB9CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotCi1SZXNvdXJjZUVycm9yOjpSZXNvdXJjZUVy
cm9yKE5TRXJyb3IgKmVycm9yKQotICAgIDogUmVzb3VyY2VFcnJvckJhc2UoVHlwZTo6TnVsbCkK
LSAgICAsIG1fZGF0YUlzVXBUb0RhdGUoZmFsc2UpCi0gICAgLCBtX3BsYXRmb3JtRXJyb3IocmVp
bnRlcnByZXRfY2FzdDxDRkVycm9yUmVmPihlcnJvcikpCi17Ci0gICAgaWYgKGVycm9yKQotICAg
ICAgICBzZXRUeXBlKChbZXJyb3IgY29kZV0gPT0gTlNVUkxFcnJvclRpbWVkT3V0KSA/IFR5cGU6
OlRpbWVvdXQgOiBUeXBlOjpHZW5lcmFsKTsKLX0KLQotTlNFcnJvciAqUmVzb3VyY2VFcnJvcjo6
bnNFcnJvcigpIGNvbnN0Ci17Ci0gICAgaWYgKGlzTnVsbCgpKSB7Ci0gICAgICAgIEFTU0VSVCgh
bV9wbGF0Zm9ybUVycm9yKTsKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICB9Ci0KLSAgICBpZiAo
bV9wbGF0Zm9ybU5TRXJyb3IpCi0gICAgICAgIHJldHVybiBtX3BsYXRmb3JtTlNFcnJvci5nZXQo
KTsKLQotICAgIGlmIChtX3BsYXRmb3JtRXJyb3IpIHsKLSAgICAgICAgQ0ZFcnJvclJlZiBlcnJv
ciA9IG1fcGxhdGZvcm1FcnJvci5nZXQoKTsKLSAgICAgICAgUmV0YWluUHRyPENGRGljdGlvbmFy
eVJlZj4gdXNlckluZm8gPSBhZG9wdENGKENGRXJyb3JDb3B5VXNlckluZm8oZXJyb3IpKTsKLSNp
ZiBQTEFURk9STShJT1MpCi0gICAgICAgIG1fcGxhdGZvcm1OU0Vycm9yID0gTlNFcnJvckZyb21D
RkVycm9yKGVycm9yLCAoTlNVUkwgKilbKE5TRGljdGlvbmFyeSAqKXVzZXJJbmZvLmdldCgpIG9i
amVjdEZvcktleTooaWQpIGtDRlVSTEVycm9yRmFpbGluZ1VSTEVycm9yS2V5XSk7Ci0gICAgICAg
IC8vIElmIE5TRXJyb3JGcm9tQ0ZFcnJvciBjcmVhdGVkIGEgbmV3IE5TRXJyb3IgZm9yIHVzLCBy
ZXR1cm4gdGhhdC4KLSAgICAgICAgaWYgKG1fcGxhdGZvcm1OU0Vycm9yLmdldCgpICE9IChOU0Vy
cm9yICopZXJyb3IpCi0gICAgICAgICAgICByZXR1cm4gbV9wbGF0Zm9ybU5TRXJyb3IuZ2V0KCk7
Ci0KLSAgICAgICAgLy8gT3RoZXJ3aXNlIGZhbGwgdGhyb3VnaCB0byBjcmVhdGUgYSBuZXcgTlNF
cnJvciBmcm9tIHRoZSBDRkVycm9yLgotI2VuZGlmCi0gICAgICAgIG1fcGxhdGZvcm1OU0Vycm9y
ID0gYWRvcHROUyhbW05TRXJyb3IgYWxsb2NdIGluaXRXaXRoRG9tYWluOihOU1N0cmluZyAqKUNG
RXJyb3JHZXREb21haW4oZXJyb3IpIGNvZGU6Q0ZFcnJvckdldENvZGUoZXJyb3IpIHVzZXJJbmZv
OihOU0RpY3Rpb25hcnkgKil1c2VySW5mby5nZXQoKV0pOwotICAgICAgICByZXR1cm4gbV9wbGF0
Zm9ybU5TRXJyb3IuZ2V0KCk7Ci0gICAgfQotCi0gICAgbV9wbGF0Zm9ybU5TRXJyb3IgPSBjcmVh
dGVOU0Vycm9yRnJvbVJlc291cmNlRXJyb3JCYXNlKCp0aGlzKTsKLSAgICByZXR1cm4gbV9wbGF0
Zm9ybU5TRXJyb3IuZ2V0KCk7Ci19Ci0KLVJlc291cmNlRXJyb3I6Om9wZXJhdG9yIE5TRXJyb3Ig
KigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG5zRXJyb3IoKTsKLX0KLQotI2Vsc2UKLQogUmVzb3Vy
Y2VFcnJvcjo6UmVzb3VyY2VFcnJvcihOU0Vycm9yICpuc0Vycm9yKQogICAgIDogUmVzb3VyY2VF
cnJvckJhc2UoVHlwZTo6TnVsbCkKICAgICAsIG1fZGF0YUlzVXBUb0RhdGUoZmFsc2UpCkBAIC0z
MDksNiArMTc5LDQgQEAgUmVzb3VyY2VFcnJvcjo6b3BlcmF0b3IgQ0ZFcnJvclJlZigpIGNvbgog
ICAgIHJldHVybiBjZkVycm9yKCk7CiB9CiAKLSNlbmRpZiAvLyBVU0UoQ0ZORVRXT1JLKQotCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbQkocmV2aXNpb24gMjA3
MDM5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5k
bGVNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTU4LDE2ICs1OCw2IEBACiAjaW1wb3J0IDx3dGYv
dGV4dC9CYXNlNjQuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAotI2lmIFVTRShD
Rk5FVFdPUkspCi0jaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKLSNpbXBvcnQgPENGTmV0d29y
ay9DRlVSTENvbm5lY3Rpb25Qcml2Lmg+Ci0jZW5kaWYKLXR5cGVkZWYgc3RydWN0IF9DRlVSTENv
bm5lY3Rpb24qIENGVVJMQ29ubmVjdGlvblJlZjsKLWV4dGVybiAiQyIgewotQ0ZEaWN0aW9uYXJ5
UmVmIF9DRlVSTENvbm5lY3Rpb25Db3B5VGltaW5nRGF0YShDRlVSTENvbm5lY3Rpb25SZWYpOwot
fQotI2VuZGlmIC8vIFVTRShDRk5FVFdPUkspCi0KICNpZiBQTEFURk9STShJT1MpCiAjaW1wb3J0
ICJDRk5ldHdvcmtTUEkuaCIKICNpbXBvcnQgIlJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oIgpA
QCAtOTAsOCArODAsNiBAQCAtKGlkKV9pbml0V2l0aFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJl
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKLSNpZiAhVVNFKENGTkVUV09SSykKLSAgICAK
IHN0YXRpYyB2b2lkIGFwcGx5QmFzaWNBdXRob3JpemF0aW9uSGVhZGVyKFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCwgY29uc3QgQ3JlZGVudGlhbCYgY3JlZGVudGlhbCkKIHsKICAgICBTdHJpbmcg
YXV0aGVudGljYXRpb25IZWFkZXIgPSAiQmFzaWMgIiArIGJhc2U2NEVuY29kZShTdHJpbmcoY3Jl
ZGVudGlhbC51c2VyKCkgKyAiOiIgKyBjcmVkZW50aWFsLnBhc3N3b3JkKCkpLnV0ZjgoKSk7CkBA
IC0zMjksOCArMzE3LDYgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6cGxhdGZvcm1TZXREZWZlcnNM
bwogICAgICAgICBbZC0+bV9jb25uZWN0aW9uIHNldERlZmVyc0NhbGxiYWNrczpkZWZlcnNdOwog
fQogCi0jaWYgIVVTRShDRk5FVFdPUkspCi0KIHZvaWQgUmVzb3VyY2VIYW5kbGU6OnNjaGVkdWxl
KFNjaGVkdWxlUGFpciYgcGFpcikKIHsKICAgICBOU1J1bkxvb3AgKnJ1bkxvb3AgPSBwYWlyLm5z
UnVuTG9vcCgpOwpAQCAtMzQ5LDggKzMzNSw2IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OnVuc2No
ZWR1bGUoU2NoZWR1bGUKICAgICAgICAgW2QtPm1fY29ubmVjdGlvbi5nZXQoKSB1bnNjaGVkdWxl
RnJvbVJ1bkxvb3A6cnVuTG9vcCBmb3JNb2RlOihOU1N0cmluZyAqKXBhaXIubW9kZSgpXTsKIH0K
IAotI2VuZGlmCi0KIGlkIFJlc291cmNlSGFuZGxlOjptYWtlRGVsZWdhdGUoYm9vbCBzaG91bGRV
c2VDcmVkZW50aWFsU3RvcmFnZSkKIHsKICAgICBBU1NFUlQoIWQtPm1fZGVsZWdhdGUpOwpAQCAt
NzMwLDI3ICs3MTQsMTQgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6Y29udGludWVXaWxsQ2FjaGVS
ZQogCiAgICAgWyhpZClkZWxlZ2F0ZSgpIGNvbnRpbnVlV2lsbENhY2hlUmVzcG9uc2U6cmVzcG9u
c2VdOwogfQotICAgIAotI2VuZGlmIC8vICFVU0UoQ0ZORVRXT1JLKQotICAgIAotI2lmIEVOQUJM
RShXRUJfVElNSU5HKQogCi0jaWYgVVNFKENGTkVUV09SSykKLSAgICAKLXZvaWQgUmVzb3VyY2VI
YW5kbGU6OmdldENvbm5lY3Rpb25UaW1pbmdEYXRhKENGVVJMQ29ubmVjdGlvblJlZiBjb25uZWN0
aW9uLCBOZXR3b3JrTG9hZFRpbWluZyYgdGltaW5nKQotewotICAgIGNvcHlUaW1pbmdEYXRhKChf
X2JyaWRnZSBOU0RpY3Rpb25hcnkqKWFkb3B0Q0YoX0NGVVJMQ29ubmVjdGlvbkNvcHlUaW1pbmdE
YXRhKGNvbm5lY3Rpb24pKS5nZXQoKSwgdGltaW5nKTsKLX0KLSAgICAKLSNlbHNlCisjaWYgRU5B
QkxFKFdFQl9USU1JTkcpCiAgICAgCiB2b2lkIFJlc291cmNlSGFuZGxlOjpnZXRDb25uZWN0aW9u
VGltaW5nRGF0YShOU1VSTENvbm5lY3Rpb24gKmNvbm5lY3Rpb24sIE5ldHdvcmtMb2FkVGltaW5n
JiB0aW1pbmcpCiB7CiAgICAgY29weVRpbWluZ0RhdGEoW2Nvbm5lY3Rpb24gX3RpbWluZ0RhdGFd
LCB0aW1pbmcpOwogfQogICAgIAotI2VuZGlmCi0gICAgCiAjZW5kaWYgLy8gRU5BQkxFKFdFQl9U
SU1JTkcpCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvbWFjL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50Lm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1N5bmNocm9ub3VzTG9hZGVy
Q2xpZW50Lm1tCShyZXZpc2lvbiAyMDcwMzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL21hYy9TeW5jaHJvbm91c0xvYWRlckNsaWVudC5tbQkod29ya2luZyBjb3B5KQpAQCAt
MjYsOCArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlN5bmNocm9ub3Vz
TG9hZGVyQ2xpZW50LmgiCiAKLSNpZiAhVVNFKENGTkVUV09SSykKLQogI2luY2x1ZGUgIkF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM4LDE0ICsz
NiwxMCBAQCB2b2lkIFN5bmNocm9ub3VzTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlCiAgICAgW2No
YWxsZW5nZS5zZW5kZXIoKSBjb250aW51ZVdpdGhvdXRDcmVkZW50aWFsRm9yQXV0aGVudGljYXRp
b25DaGFsbGVuZ2U6Y2hhbGxlbmdlLm5zVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKV07CiB9
CiAKLSNpZiAhVVNFKENGTkVUV09SSykKIFJlc291cmNlRXJyb3IgU3luY2hyb25vdXNMb2FkZXJD
bGllbnQ6OnBsYXRmb3JtQmFkUmVzcG9uc2VFcnJvcigpCiB7CiAgICAgUmV0YWluUHRyPE5TRXJy
b3I+IGVycm9yID0gYWRvcHROUyhbW05TRXJyb3IgYWxsb2NdIGluaXRXaXRoRG9tYWluOk5TVVJM
RXJyb3JEb21haW4gY29kZTpOU1VSTEVycm9yQmFkU2VydmVyUmVzcG9uc2UgdXNlckluZm86bmls
XSk7CiAgICAgcmV0dXJuIGVycm9yLmdldCgpOwogfQotI2VuZGlmCiAKIH0KLQotI2VuZGlmIC8v
ICFVU0UoQ0ZORVRXT1JLKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9t
YWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVs
ZWdhdGUuaAkocmV2aXNpb24gMjA3MDM5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yMyw4ICsyMyw3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAg
Ki8KIAotI2lmbmRlZiBXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlX2gKLSNkZWZpbmUg
V2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZV9oCisjcHJhZ21hIG9uY2UKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogY2xhc3MgUmVzb3VyY2VIYW5kbGU7CkBAIC0zNCwxMyArMzMsOCBAQCBj
bGFzcyBSZXNvdXJjZUhhbmRsZTsKIC0gKHZvaWQpZGV0YWNoSGFuZGxlOwogQGVuZAogCi0jaWYg
IVVTRShDRk5FVFdPUkspCi0KIEBpbnRlcmZhY2UgV2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxl
Z2F0ZSA6IE5TT2JqZWN0IDxOU1VSTENvbm5lY3Rpb25EZWxlZ2F0ZSwgV2ViQ29yZVJlc291cmNl
TG9hZGVyRGVsZWdhdGU+IHsKICAgICBXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSogbV9oYW5kbGU7
CiB9CiAtIChpZClpbml0V2l0aEhhbmRsZTooV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqKWhhbmRs
ZTsKIEBlbmQKLQotI2VuZGlmIC8vICFVU0UoQ0ZORVRXT1JLKQotI2VuZGlmIC8vIFdlYkNvcmVS
ZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGVfaApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZS5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VI
YW5kbGVBc0RlbGVnYXRlLm1tCShyZXZpc2lvbiAyMDcwMzkpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0yNiw4ICsyNiw2IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBv
cnQgIldlYkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGUuaCIKIAotI2lmICFVU0UoQ0ZORVRX
T1JLKQotCiAjaW1wb3J0ICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oIgogI2ltcG9ydCAiQXV0
aGVudGljYXRpb25NYWMuaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKQEAgLTI3MCw2ICsyNjgsMyBA
QCAtIChOU0NhY2hlZFVSTFJlc3BvbnNlICopY29ubmVjdGlvbjooTlNVCiB9CiAKIEBlbmQKLQot
I2VuZGlmIC8vICFVU0UoQ0ZORVRXT1JLKQotCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdh
dGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9X
ZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUuaAkocmV2aXNpb24g
MjA3MDM5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJl
c291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTIzLDEwICsyMyw3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8K
IAotI2lmbmRlZiBXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGVf
aAotI2RlZmluZSBXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGVf
aAotCi0jaWYgIVVTRShDRk5FVFdPUkspCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIldlYkNv
cmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGUuaCIKICNpbmNsdWRlIDxkaXNwYXRjaC9kaXNwYXRj
aC5oPgpAQCAtNTgsNiArNTUsMyBAQCBAaW50ZXJmYWNlIFdlYkNvcmVSZXNvdXJjZUhhbmRsZUFz
T3BlcmF0CiBAaW50ZXJmYWNlIFdlYkNvcmVSZXNvdXJjZUhhbmRsZVdpdGhDcmVkZW50aWFsU3Rv
cmFnZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZSA6IFdlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3Bl
cmF0aW9uUXVldWVEZWxlZ2F0ZQogCiBAZW5kCi0KLSNlbmRpZiAvLyAhVVNFKENGTkVUV09SSykK
LSNlbmRpZiAvLyBXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGVf
aApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291
cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3Bl
cmF0aW9uUXVldWVEZWxlZ2F0ZS5tbQkocmV2aXNpb24gMjA3MDM5KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25R
dWV1ZURlbGVnYXRlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw4ICsyNiw2IEBACiAjaW1wb3J0
ICJjb25maWcuaCIKICNpbXBvcnQgIldlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVl
dWVEZWxlZ2F0ZS5oIgogCi0jaWYgIVVTRShDRk5FVFdPUkspCi0KICNpbXBvcnQgIkF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlLmgiCiAjaW1wb3J0ICJBdXRoZW50aWNhdGlvbk1hYy5oIgogI2ltcG9y
dCAiTG9nZ2luZy5oIgpAQCAtMzI5LDYgKzMyNywzIEBAIC0gKEJPT0wpY29ubmVjdGlvblNob3Vs
ZFVzZUNyZWRlbnRpYWxTdG8KIH0KIAogQGVuZAotCi0jZW5kaWYgLy8gIVVTRShDRk5FVFdPUksp
Ci0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVVUkxS
ZXNwb25zZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L21hYy9XZWJDb3JlVVJMUmVzcG9uc2UubW0JKHJldmlzaW9uIDIwNzAzOSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVVUkxSZXNwb25zZS5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMzI1LDcgKzMyNSw2IEBAIHZvaWQgYWRqdXN0TUlNRVR5cGVJZk5lY2Vzc2Fy
eShDRlVSTFJlc3AKIH0KICNlbmRpZgogCi0jaWYgIVVTRShDRk5FVFdPUkspCiBOU1VSTFJlc3Bv
bnNlICpzeW50aGVzaXplUmVkaXJlY3RSZXNwb25zZUlmTmVjZXNzYXJ5KE5TVVJMUmVxdWVzdCAq
Y3VycmVudFJlcXVlc3QsIE5TVVJMUmVxdWVzdCAqbmV3UmVxdWVzdCwgTlNVUkxSZXNwb25zZSAq
cmVkaXJlY3RSZXNwb25zZSkKIHsKICAgICBpZiAocmVkaXJlY3RSZXNwb25zZSkKQEAgLTMzOSw2
ICszMzgsNSBAQCBOU1VSTFJlc3BvbnNlICpzeW50aGVzaXplUmVkaXJlY3RSZXNwb25zCiAgICAg
TlNEaWN0aW9uYXJ5ICpzeW50aGVzaXplZFJlc3BvbnNlSGVhZGVyRmllbGRzID0gQHsgQCJMb2Nh
dGlvbiI6IFtbbmV3UmVxdWVzdCBVUkxdIGFic29sdXRlU3RyaW5nXSwgQCJDYWNoZS1Db250cm9s
IjogQCJuby1zdG9yZSIgfTsKICAgICByZXR1cm4gW1tbTlNIVFRQVVJMUmVzcG9uc2UgYWxsb2Nd
IGluaXRXaXRoVVJMOltjdXJyZW50UmVxdWVzdCBVUkxdIHN0YXR1c0NvZGU6MzAyIEhUVFBWZXJz
aW9uOihOU1N0cmluZyAqKWtDRkhUVFBWZXJzaW9uMV8xIGhlYWRlckZpZWxkczpzeW50aGVzaXpl
ZFJlc3BvbnNlSGVhZGVyRmllbGRzXSBhdXRvcmVsZWFzZV07CiB9Ci0jZW5kaWYKIAogfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1RlbXBvcmFyeUxpbmtTdHVicy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1RlbXBvcmFyeUxpbmtTdHVi
cy5jcHAJKHJldmlzaW9uIDIwNzAzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9U
ZW1wb3JhcnlMaW5rU3R1YnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw3IEBACiAK
ICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlNTTEtleUdlbmVyYXRvci5o
IgotI2lmICFVU0UoQ0ZORVRXT1JLKQorI2lmICFVU0UoQ0ZVUkxDT05ORUNUSU9OKQogI2luY2x1
ZGUgIkNvb2tpZVN0b3JhZ2UuaCIKICNlbmRpZgogCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIFN0cmluZyBzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcodW5z
aWduZWQsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFVSTCYpIHsgbm90SW1wbGVtZW50ZWQoKTsgcmV0
dXJuIFN0cmluZygpOyB9CiB2b2lkIGdldFN1cHBvcnRlZEtleVNpemVzKFZlY3RvcjxTdHJpbmc+
JikgeyBub3RJbXBsZW1lbnRlZCgpOyB9CiAKLSNpZiAhVVNFKENGTkVUV09SSykKKyNpZiAhVVNF
KENGVVJMQ09OTkVDVElPTikKIHZvaWQgc3RhcnRPYnNlcnZpbmdDb29raWVDaGFuZ2VzKENvb2tp
ZUNoYW5nZUNhbGxiYWNrUHRyKSB7IG5vdEltcGxlbWVudGVkKCk7IH0KIHZvaWQgc3RvcE9ic2Vy
dmluZ0Nvb2tpZUNoYW5nZXMoKSB7IG5vdEltcGxlbWVudGVkKCk7IH0KICNlbmRpZgpJbmRleDog
U291cmNlL1dlYkNvcmUvdGVzdGluZy9qcy9XZWJDb3JlVGVzdFN1cHBvcnRQcmVmaXguaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL2pzL1dlYkNvcmVUZXN0U3VwcG9ydFBy
ZWZpeC5oCShyZXZpc2lvbiAyMDcwMzkpCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL2pzL1dl
YkNvcmVUZXN0U3VwcG9ydFByZWZpeC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjAsOSArMTIwLDcg
QEAKICNkZWZpbmUgT0JTT0xFVEVfQ09MT1JTWU5DX0FQSQogI2VuZGlmCiAjZW5kaWYKLSNpZiBV
U0UoQ0ZORVRXT1JLKQotLyogV2luZG93cyBkb2Vzbid0IGluY2x1ZGUgQ0ZOZXR3b3JrLmggdmlh
IENvcmVTZXJ2aWNlcy5oLCBzbyB3ZSBkbwotICAgaXQgZXhwbGljaXRseSBoZXJlIHRvIG1ha2Ug
V2luZG93cyBtb3JlIGNvbnNpc3RlbnQgd2l0aCBNYWMuICovCisjaWYgVVNFKENGVVJMQ09OTkVD
VElPTikKICNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZOZXR3b3JrLmg+CiAvLyBPbiBXaW5kb3dzLCBk
aXNwYXRjaC5oIG5lZWRzIHRvIGJlIGluY2x1ZGVkIGJlZm9yZSBjZXJ0YWluIENGTmV0d29yayBo
ZWFkZXJzLgogI2luY2x1ZGUgPGRpc3BhdGNoL2Rpc3BhdGNoLmg+CkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShy
ZXZpc2lvbiAyMDcwMzkpCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwzMSBAQAorMjAxNi0xMC0xMCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJp
c3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFJlbW92ZSBkZWFkIG5ldHdvcmtpbmcgY29k
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzMjYz
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9Eb3dubG9hZHMvaW9zL0Rvd25sb2FkSU9TLm1tOiBSZW1vdmVkLgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL0Rvd25sb2Fkcy9tYWMvRG93bmxvYWRNYWMubW06CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0xvYWQuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9tYWMvTmV0
d29ya0xvYWRNYWMubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkOjp3aWxsQ2FjaGVS
ZXNwb25zZUFzeW5jKTogRGVsZXRlZC4KKyAgICAgICAgKiBTaGFyZWQvQXV0aGVudGljYXRpb24v
Y29jb2EvQXV0aGVudGljYXRpb25NYW5hZ2VyQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OkF1
dGhlbnRpY2F0aW9uTWFuYWdlcjo6cmVjZWl2ZWRDcmVkZW50aWFsKToKKyAgICAgICAgKFdlYktp
dDo6QXV0aGVudGljYXRpb25NYW5hZ2VyOjpyZWNlaXZlZFJlcXVlc3RUb0NvbnRpbnVlV2l0aG91
dENyZWRlbnRpYWwpOgorICAgICAgICAoV2ViS2l0OjpBdXRoZW50aWNhdGlvbk1hbmFnZXI6OnJl
Y2VpdmVkQ2FuY2VsbGF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6QXV0aGVudGljYXRpb25NYW5h
Z2VyOjpyZWNlaXZlZFJlcXVlc3RUb1BlcmZvcm1EZWZhdWx0SGFuZGxpbmcpOgorICAgICAgICAo
V2ViS2l0OjpBdXRoZW50aWNhdGlvbk1hbmFnZXI6OnJlY2VpdmVkQ2hhbGxlbmdlUmVqZWN0aW9u
KToKKyAgICAgICAgKiBTaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZSk6Cisg
ICAgICAgICogU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaDoKKyAgICAgICAg
KiBTaGFyZWQvbWFjL1dlYkNvcmVBcmd1bWVudENvZGVyc01hYy5tbToKKyAgICAgICAgKElQQzo6
QXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlcXVlc3Q+OjplbmNvZGVQbGF0Zm9ybURhdGEpOgorICAg
ICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlc291cmNlUmVxdWVzdD46OmRlY29kZVBsYXRmb3Jt
RGF0YSk6CisgICAgICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAy
MDE2LTEwLTEwICBLb25zdGFudGluIFRva2FyZXYgIDxhbm51bGVuQHlhbmRleC5ydT4KIAogICAg
ICAgICBBZGRlZCBmaW5hbCBzcGVjaWZpZXIgdG8gV2ViSW5zcGVjdG9yU2VydmVyIGFuZCB0byBp
dHMgb3ZlcnJpZGRlbiBtZXRob2RzCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrTG9hZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtMb2FkLmgJKHJldmlzaW9uIDIwNzAzOSkKKysrIFNvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmgJKHdvcmtpbmcgY29weSkKQEAgLTc5LDEyICs3OSw4
IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhQXJyYXkoV2ViQ29yZTo6UmVzb3Vy
Y2VIYW5kbGUqLCBDRkFycmF5UmVmKSBvdmVycmlkZTsKICNlbmRpZgogI2lmIFBMQVRGT1JNKENP
Q09BKQotI2lmIFVTRShDRk5FVFdPUkspCi0gICAgdm9pZCB3aWxsQ2FjaGVSZXNwb25zZUFzeW5j
KFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwgQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZikgb3ZlcnJp
ZGU7Ci0jZWxzZQogICAgIHZvaWQgd2lsbENhY2hlUmVzcG9uc2VBc3luYyhXZWJDb3JlOjpSZXNv
dXJjZUhhbmRsZSosIE5TQ2FjaGVkVVJMUmVzcG9uc2UgKikgb3ZlcnJpZGU7CiAjZW5kaWYKLSNl
bmRpZgogCiAjaWYgVVNFKFBST1RFQ1RJT05fU1BBQ0VfQVVUSF9DQUxMQkFDSykKICAgICB2b2lk
IGNvbnRpbnVlQ2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShib29sKTsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3du
bG9hZC5oCShyZXZpc2lvbiAyMDcwMzkpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9Eb3dubG9hZHMvRG93bmxvYWQuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsMTAgKzQ3LDYgQEAg
T0JKQ19DTEFTUyBXS0Rvd25sb2FkQXNEZWxlZ2F0ZTsKICNlbmRpZgogI2VuZGlmCiAKLSNpZiBV
U0UoQ0ZORVRXT1JLKQotI2luY2x1ZGUgPENGTmV0d29yay9DRlVSTERvd25sb2FkUHJpdi5oPgot
I2VuZGlmCi0KIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgRGF0YVJlZmVyZW5jZTsKIH0KQEAgLTEz
OSw5ICsxMzUsNiBAQCBwcml2YXRlOgogICAgIFJldGFpblB0cjxXS0Rvd25sb2FkQXNEZWxlZ2F0
ZT4gbV9kZWxlZ2F0ZTsKICNlbmRpZgogI2VuZGlmCi0jaWYgVVNFKENGTkVUV09SSykKLSAgICBS
ZXRhaW5QdHI8Q0ZVUkxEb3dubG9hZFJlZj4gbV9kb3dubG9hZDsKLSNlbmRpZgogICAgIHN0ZDo6
dW5pcXVlX3B0cjxXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNsaWVudD4gbV9kb3dubG9hZENsaWVu
dDsKICAgICBSZWZQdHI8V2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU+IG1fcmVzb3VyY2VIYW5kbGU7
CiAgICAgU3RyaW5nIG1fc3VnZ2VzdGVkTmFtZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL0Rvd25sb2Fkcy9tYWMvRG93bmxvYWRNYWMubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL21hYy9Eb3dubG9hZE1hYy5tbQko
cmV2aXNpb24gMjA3MDM5KQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRG93bmxv
YWRzL21hYy9Eb3dubG9hZE1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAog
I2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJEb3dubG9hZC5oIgogCi0jaWYgIVVTRShDRk5F
VFdPUkspICYmICFVU0UoTkVUV09SS19TRVNTSU9OKQorI2lmICFVU0UoTkVUV09SS19TRVNTSU9O
KQogCiAjaW1wb3J0IDxXZWJDb3JlL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL0F1dGhlbnRpY2F0aW9uTWFjLmg+CkBAIC0yNzIsNCArMjcyLDQgQEAgLSAodm9p
ZClkb3dubG9hZDooTlNVUkxEb3dubG9hZCAqKWRvd25sbwogCiBAZW5kCiAKLSNlbmRpZiAvLyAh
VVNFKENGTkVUV09SSykgJiYgIVVTRShORVRXT1JLX1NFU1NJT04pCisjZW5kaWYgLy8gIVVTRShO
RVRXT1JLX1NFU1NJT04pCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMv
TmV0d29ya0xvYWRNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvbWFjL05ldHdvcmtMb2FkTWFjLm1tCShyZXZpc2lvbiAyMDcwMzkpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29ya0xvYWRNYWMubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTI0LDcgKzI0LDYgQEAKICAqLwogCiAjaW1wb3J0ICJjb25maWcuaCIKLQogI2ltcG9y
dCAiTmV0d29ya0xvYWQuaCIKIAogI2ltcG9ydCA8V2ViQ29yZS9DRk5ldHdvcmtTUEkuaD4KQEAg
LTM0LDE3ICszMyw2IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIAotI2lmIFVTRShDRk5FVFdPUkspCi0KLXZvaWQgTmV0d29ya0xvYWQ6OndpbGxDYWNo
ZVJlc3BvbnNlQXN5bmMoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgQ0ZDYWNoZWRVUkxSZXNwb25z
ZVJlZiBjZlJlc3BvbnNlKQotewotICAgIEFTU0VSVF9VTlVTRUQoaGFuZGxlLCBoYW5kbGUgPT0g
bV9oYW5kbGUpOwotCi0gICAgbV9oYW5kbGUtPmNvbnRpbnVlV2lsbENhY2hlUmVzcG9uc2UoY2ZS
ZXNwb25zZSk7Ci19Ci0KLSNlbHNlCi0KIHZvaWQgTmV0d29ya0xvYWQ6OndpbGxDYWNoZVJlc3Bv
bnNlQXN5bmMoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgTlNDYWNoZWRVUkxSZXNwb25zZSAqbnNS
ZXNwb25zZSkKIHsKICAgICBBU1NFUlRfVU5VU0VEKGhhbmRsZSwgaGFuZGxlID09IG1faGFuZGxl
KTsKQEAgLTUyLDYgKzQwLDQgQEAgdm9pZCBOZXR3b3JrTG9hZDo6d2lsbENhY2hlUmVzcG9uc2VB
c3luYwogICAgIG1faGFuZGxlLT5jb250aW51ZVdpbGxDYWNoZVJlc3BvbnNlKG5zUmVzcG9uc2Up
OwogfQogCi0jZW5kaWYgLy8gIVVTRShDRk5FVFdPUkspCi0KIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzLmNwcAkocmV2aXNpb24gMjA3MDM5KQorKysgU291cmNlL1dlYktpdDIv
U2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMDQsNyArMTA0LDcgQEAgdm9pZCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNv
ZAogICAgIGVuY29kZXIgPDwgdGV4dENoZWNrZXJTdGF0ZTsKICAgICBlbmNvZGVyIDw8IGZ1bGxL
ZXlib2FyZEFjY2Vzc0VuYWJsZWQ7CiAgICAgZW5jb2RlciA8PCBkZWZhdWx0UmVxdWVzdFRpbWVv
dXRJbnRlcnZhbDsKLSNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKENGTkVUV09SSykKKyNpZiBQ
TEFURk9STShDT0NPQSkKICAgICBlbmNvZGVyIDw8IHVpUHJvY2Vzc0J1bmRsZUlkZW50aWZpZXI7
CiAjZW5kaWYKICNpZiBQTEFURk9STShDT0NPQSkKQEAgLTI0MCw3ICsyNDAsNyBAQCBib29sIFdl
YlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuZGVmYXVsdFJlcXVlc3RUaW1lb3V0
SW50ZXJ2YWwpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0jaWYgUExBVEZPUk0oQ09DT0EpIHx8
IFVTRShDRk5FVFdPUkspCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShwYXJhbWV0ZXJzLnVpUHJvY2Vzc0J1bmRsZUlkZW50aWZpZXIpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVk
L1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAkocmV2aXNpb24gMjA3MDM5KQorKysgU291
cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTIzLDcgKzEyMyw3IEBAIHN0cnVjdCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzIHsKIAogICAgIGRvdWJsZSBkZWZhdWx0UmVxdWVzdFRpbWVvdXRJbnRlcnZhbDsKIAot
I2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZORVRXT1JLKQorI2lmIFBMQVRGT1JNKENPQ09B
KQogICAgIFN0cmluZyB1aVByb2Nlc3NCdW5kbGVJZGVudGlmaWVyOwogI2VuZGlmCiAKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BdXRoZW50aWNhdGlvbi9jb2NvYS9BdXRoZW50aWNhdGlv
bk1hbmFnZXJDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQXV0
aGVudGljYXRpb24vY29jb2EvQXV0aGVudGljYXRpb25NYW5hZ2VyQ29jb2EubW0JKHJldmlzaW9u
IDIwNzAzOSkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BdXRoZW50aWNhdGlvbi9jb2NvYS9B
dXRoZW50aWNhdGlvbk1hbmFnZXJDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMzIsMzcgKzMy
LDI3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiB2b2lkIEF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6
cmVjZWl2ZWRDcmVkZW50aWFsKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBhdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSwgY29uc3QgQ3JlZGVudGlhbCYgY3JlZGVudGlhbCkKIHsKLSNpZiAh
VVNFKENGTkVUV09SSykKICAgICBbYXV0aGVudGljYXRpb25DaGFsbGVuZ2Uuc2VuZGVyKCkgdXNl
Q3JlZGVudGlhbDpjcmVkZW50aWFsLm5zQ3JlZGVudGlhbCgpIGZvckF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlOmF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLm5zVVJMQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UoKV07Ci0jZW5kaWYKIH0KIAogdm9pZCBBdXRoZW50aWNhdGlvbk1hbmFnZXI6OnJlY2VpdmVk
UmVxdWVzdFRvQ29udGludWVXaXRob3V0Q3JlZGVudGlhbChjb25zdCBBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSYgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UpCiB7Ci0jaWYgIVVTRShDRk5FVFdPUksp
CiAgICAgW2F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLnNlbmRlcigpIGNvbnRpbnVlV2l0aG91dENy
ZWRlbnRpYWxGb3JBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTphdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZS5uc1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCldOwotI2VuZGlmCiB9CiAKIHZvaWQgQXV0
aGVudGljYXRpb25NYW5hZ2VyOjpyZWNlaXZlZENhbmNlbGxhdGlvbihjb25zdCBBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSYgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UpCiB7Ci0jaWYgIVVTRShDRk5F
VFdPUkspCiAgICAgW2F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLnNlbmRlcigpIGNhbmNlbEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlOmF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLm5zVVJMQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UoKV07Ci0jZW5kaWYKIH0KIAogdm9pZCBBdXRoZW50aWNhdGlvbk1hbmFn
ZXI6OnJlY2VpdmVkUmVxdWVzdFRvUGVyZm9ybURlZmF1bHRIYW5kbGluZyhjb25zdCBBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSYgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UpCiB7Ci0jaWYgIVVTRShD
Rk5FVFdPUkspCiAgICAgW2F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLnNlbmRlcigpIHBlcmZvcm1E
ZWZhdWx0SGFuZGxpbmdGb3JBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTphdXRoZW50aWNhdGlvbkNo
YWxsZW5nZS5uc1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCldOwotI2VuZGlmCiB9CiAKIHZv
aWQgQXV0aGVudGljYXRpb25NYW5hZ2VyOjpyZWNlaXZlZENoYWxsZW5nZVJlamVjdGlvbihjb25z
dCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UpCiB7Ci0j
aWYgIVVTRShDRk5FVFdPUkspCiAgICAgW2F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLnNlbmRlcigp
IHJlamVjdFByb3RlY3Rpb25TcGFjZUFuZENvbnRpbnVlV2l0aENoYWxsZW5nZTphdXRoZW50aWNh
dGlvbkNoYWxsZW5nZS5uc1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCldOwotI2VuZGlmCiB9
CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzTWFjLm1tCShyZXZpc2lvbiAyMDcwMzkpCisrKyBTb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvbWFjL1dlYkNvcmVBcmd1bWVudENvZGVyc01hYy5tbQkod29ya2luZyBjb3B5KQpA
QCAtMzksMTAgKzM5LDYgQEAKICNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgogI2lt
cG9ydCA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KIAotI2lmIFVTRShDRk5FVFdPUkspCi0j
aW1wb3J0IDxDRk5ldHdvcmsvQ0ZVUkxSZXF1ZXN0Lmg+Ci0jZW5kaWYKLQogI2lmIEVOQUJMRShX
SVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCiAjaW1wb3J0IDxXZWJDb3JlL0FWRm91bmRhdGlvblNQ
SS5oPgogI2ltcG9ydCA8V2ViQ29yZS9NZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dC5oPgpAQCAt
NTcsMzYgKzUzLDYgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBJUEMg
ewogCi0jaWYgVVNFKENGTkVUV09SSykKLXZvaWQgQXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlcXVl
c3Q+OjplbmNvZGVQbGF0Zm9ybURhdGEoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QpCi17Ci0gICAgUmV0YWluUHRyPENGVVJMUmVxdWVzdFJl
Zj4gcmVxdWVzdFRvU2VyaWFsaXplID0gcmVzb3VyY2VSZXF1ZXN0LmNmVVJMUmVxdWVzdChEb05v
dFVwZGF0ZUhUVFBCb2R5KTsKLQotICAgIGJvb2wgcmVxdWVzdElzUHJlc2VudCA9IHJlcXVlc3RU
b1NlcmlhbGl6ZTsKLSAgICBlbmNvZGVyIDw8IHJlcXVlc3RJc1ByZXNlbnQ7Ci0KLSAgICBpZiAo
IXJlcXVlc3RJc1ByZXNlbnQpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIFdlIGRvbid0IHNl
bmQgSFRUUCBib2R5IG92ZXIgSVBDIGZvciBiZXR0ZXIgcGVyZm9ybWFuY2UuCi0gICAgLy8gQWxz
bywgaXQncyBub3QgYWx3YXlzIHBvc3NpYmxlIHRvIGRvLCBhcyBzdHJlYW1zIGNhbiBvbmx5IGJl
IGNyZWF0ZWQgaW4gcHJvY2VzcyB0aGF0IGRvZXMgbmV0d29ya2luZy4KLSAgICBSZXRhaW5QdHI8
Q0ZEYXRhUmVmPiByZXF1ZXN0SFRUUEJvZHkgPSBhZG9wdENGKENGVVJMUmVxdWVzdENvcHlIVFRQ
UmVxdWVzdEJvZHkocmVxdWVzdFRvU2VyaWFsaXplLmdldCgpKSk7Ci0gICAgUmV0YWluUHRyPENG
UmVhZFN0cmVhbVJlZj4gcmVxdWVzdEhUVFBCb2R5U3RyZWFtID0gYWRvcHRDRihDRlVSTFJlcXVl
c3RDb3B5SFRUUFJlcXVlc3RCb2R5U3RyZWFtKHJlcXVlc3RUb1NlcmlhbGl6ZS5nZXQoKSkpOwot
ICAgIGlmIChyZXF1ZXN0SFRUUEJvZHkgfHwgcmVxdWVzdEhUVFBCb2R5U3RyZWFtKSB7Ci0gICAg
ICAgIENGTXV0YWJsZVVSTFJlcXVlc3RSZWYgbXV0YWJsZVJlcXVlc3QgPSBDRlVSTFJlcXVlc3RD
cmVhdGVNdXRhYmxlQ29weSgwLCByZXF1ZXN0VG9TZXJpYWxpemUuZ2V0KCkpOwotICAgICAgICBy
ZXF1ZXN0VG9TZXJpYWxpemUgPSBhZG9wdENGKG11dGFibGVSZXF1ZXN0KTsKLSAgICAgICAgQ0ZV
UkxSZXF1ZXN0U2V0SFRUUFJlcXVlc3RCb2R5KG11dGFibGVSZXF1ZXN0LCBuaWwpOwotICAgICAg
ICBDRlVSTFJlcXVlc3RTZXRIVFRQUmVxdWVzdEJvZHlTdHJlYW0obXV0YWJsZVJlcXVlc3QsIG5p
bCk7Ci0gICAgfQotCi0gICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gZGljdGlvbmFyeSA9
IGFkb3B0Q0YoV0tDRlVSTFJlcXVlc3RDcmVhdGVTZXJpYWxpemFibGVSZXByZXNlbnRhdGlvbihy
ZXF1ZXN0VG9TZXJpYWxpemUuZ2V0KCksIElQQzo6dG9rZW5OdWxsVHlwZVJlZigpKSk7Ci0gICAg
SVBDOjplbmNvZGUoZW5jb2RlciwgZGljdGlvbmFyeS5nZXQoKSk7Ci0KLSAgICAvLyBUaGUgZmFs
bGJhY2sgYXJyYXkgaXMgcGFydCBvZiBDRlVSTFJlcXVlc3QsIGJ1dCBpdCBpcyBub3QgZW5jb2Rl
ZCBieSBXS0NGVVJMUmVxdWVzdENyZWF0ZVNlcmlhbGl6YWJsZVJlcHJlc2VudGF0aW9uLgotICAg
IGVuY29kZXIgPDwgcmVzb3VyY2VSZXF1ZXN0LnJlc3BvbnNlQ29udGVudERpc3Bvc2l0aW9uRW5j
b2RpbmdGYWxsYmFja0FycmF5KCk7Ci0gICAgZW5jb2Rlci5lbmNvZGVFbnVtKHJlc291cmNlUmVx
dWVzdC5yZXF1ZXN0ZXIoKSk7Ci19Ci0jZWxzZQogdm9pZCBBcmd1bWVudENvZGVyPFJlc291cmNl
UmVxdWVzdD46OmVuY29kZVBsYXRmb3JtRGF0YShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCkKIHsKICAgICBSZXRhaW5QdHI8TlNVUkxSZXF1
ZXN0PiByZXF1ZXN0VG9TZXJpYWxpemUgPSByZXNvdXJjZVJlcXVlc3QubnNVUkxSZXF1ZXN0KERv
Tm90VXBkYXRlSFRUUEJvZHkpOwpAQCAtMTEyLDcgKzc4LDYgQEAgdm9pZCBBcmd1bWVudENvZGVy
PFJlc291cmNlUmVxdWVzdD46OmVuYwogICAgIGVuY29kZXIgPDwgcmVzb3VyY2VSZXF1ZXN0LnJl
c3BvbnNlQ29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5KCk7CiAgICAgZW5j
b2Rlci5lbmNvZGVFbnVtKHJlc291cmNlUmVxdWVzdC5yZXF1ZXN0ZXIoKSk7CiB9Ci0jZW5kaWYK
IAogYm9vbCBBcmd1bWVudENvZGVyPFJlc291cmNlUmVxdWVzdD46OmRlY29kZVBsYXRmb3JtRGF0
YShEZWNvZGVyJiBkZWNvZGVyLCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCkKIHsK
QEAgLTEyOSwxOSArOTQsMTEgQEAgYm9vbCBBcmd1bWVudENvZGVyPFJlc291cmNlUmVxdWVzdD46
OmRlYwogICAgIGlmICghSVBDOjpkZWNvZGUoZGVjb2RlciwgZGljdGlvbmFyeSkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAotI2lmIFVTRShDRk5FVFdPUkspCi0gICAgUmV0YWluUHRyPENGVVJM
UmVxdWVzdFJlZj4gY2ZVUkxSZXF1ZXN0ID0gYWRvcHRDRihXS0NyZWF0ZUNGVVJMUmVxdWVzdEZy
b21TZXJpYWxpemFibGVSZXByZXNlbnRhdGlvbihkaWN0aW9uYXJ5LmdldCgpLCBJUEM6OnRva2Vu
TnVsbFR5cGVSZWYoKSkpOwotICAgIGlmICghY2ZVUkxSZXF1ZXN0KQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0KLSAgICByZXNvdXJjZVJlcXVlc3QgPSBSZXNvdXJjZVJlcXVlc3QoY2ZVUkxSZXF1
ZXN0LmdldCgpKTsKLSNlbHNlCiAgICAgUmV0YWluUHRyPE5TVVJMUmVxdWVzdD4gbnNVUkxSZXF1
ZXN0ID0gV0tOU1VSTFJlcXVlc3RGcm9tU2VyaWFsaXphYmxlUmVwcmVzZW50YXRpb24oZGljdGlv
bmFyeS5nZXQoKSwgSVBDOjp0b2tlbk51bGxUeXBlUmVmKCkpOwogICAgIGlmICghbnNVUkxSZXF1
ZXN0KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICByZXNvdXJjZVJlcXVlc3QgPSBSZXNv
dXJjZVJlcXVlc3QobnNVUkxSZXF1ZXN0LmdldCgpKTsKLSNlbmRpZgogICAgIAogICAgIFZlY3Rv
cjxTdHJpbmc+IHJlc3BvbnNlQ29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5
OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzcG9uc2VDb250ZW50RGlzcG9zaXRpb25FbmNv
ZGluZ0ZhbGxiYWNrQXJyYXkpKQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYktpdDIu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjA3MDM5KQorKysgU291cmNlL1dl
YktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBA
IC0xMDUxLDcgKzEwNTEsNiBAQAogCQk1QzE0MjcwNTFDMjNGODRDMDBENDExODMgLyogRG93bmxv
YWRJRC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMx
NDI2RjcxQzIzRjg0MzAwRDQxMTgzIC8qIERvd25sb2FkSUQuaCAqLzsgfTsKIAkJNUMxNDI3MDYx
QzIzRjg0QzAwRDQxMTgzIC8qIERvd25sb2FkTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzE0MjZGODFDMjNGODQzMDBENDExODMgLyog
RG93bmxvYWRNYW5hZ2VyLmNwcCAqLzsgfTsKIAkJNUMxNDI3MDcxQzIzRjg0QzAwRDQxMTgzIC8q
IERvd25sb2FkTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNUMxNDI2RjkxQzIzRjg0MzAwRDQxMTgzIC8qIERvd25sb2FkTWFuYWdlci5oICov
OyB9OwotCQk1QzE0MjcxMTFDMjNGODlFMDBENDExODMgLyogRG93bmxvYWRJT1MubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzE0MjcwRDFDMjNGODg1
MDBENDExODMgLyogRG93bmxvYWRJT1MubW0gKi87IH07CiAJCTVDMTQyNzEyMUMyM0Y4OUUwMEQ0
MTE4MyAvKiBEb3dubG9hZE1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDVDMTQyNzBGMUMyM0Y4OTkwMEQ0MTE4MyAvKiBEb3dubG9hZE1hYy5tbSAq
LzsgfTsKIAkJNUMxNDI3MTMxQzIzRjg5RTAwRDQxMTgzIC8qIERvd25sb2FkQ29jb2EubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzE0MjcwOTFDMjNG
ODY5MDBENDExODMgLyogRG93bmxvYWRDb2NvYS5tbSAqLzsgfTsKIAkJNUMxNDI3MTgxQzIzRjhC
NzAwRDQxMTgzIC8qIEN1c3RvbVByb3RvY29sTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMxNDI3MTQxQzIzRjhCMDAwRDQxMTgzIC8qIEN1
c3RvbVByb3RvY29sTWFuYWdlci5oICovOyB9OwpAQCAtMzEzMCw3ICszMTI5LDYgQEAKIAkJNUMx
NDI2RjgxQzIzRjg0MzAwRDQxMTgzIC8qIERvd25sb2FkTWFuYWdlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBEb3dubG9hZE1hbmFnZXIuY3BwOyBwYXRoID0gTmV0
d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTVDMTQyNkY5MUMyM0Y4NDMwMEQ0MTE4MyAvKiBEb3dubG9hZE1hbmFn
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRG93bmxvYWRNYW5hZ2VyLmg7
IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDMTQyNzA5MUMyM0Y4NjkwMEQ0MTE4MyAvKiBEb3du
bG9hZENvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gRG93
bmxvYWRDb2NvYS5tbTsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9jb2NvYS9Eb3du
bG9hZENvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1QzE0MjcwRDFDMjNG
ODg1MDBENDExODMgLyogRG93bmxvYWRJT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IG5hbWUgPSBEb3dubG9hZElPUy5tbTsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL0Rvd25s
b2Fkcy9pb3MvRG93bmxvYWRJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVD
MTQyNzBGMUMyM0Y4OTkwMEQ0MTE4MyAvKiBEb3dubG9hZE1hYy5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IERvd25sb2FkTWFjLm1tOyBwYXRoID0gTmV0d29ya1By
b2Nlc3MvRG93bmxvYWRzL21hYy9Eb3dubG9hZE1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNUMxNDI3MTQxQzIzRjhCMDAwRDQxMTgzIC8qIEN1c3RvbVByb3RvY29sTWFuYWdl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBDdXN0b21Qcm90b2NvbE1hbmFn
ZXIuaDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9DdXN0b21Qcm90b2Nv
bE1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUMxNDI3MTUxQzIzRjhC
MDAwRDQxMTgzIC8qIEN1c3RvbVByb3RvY29sTWFuYWdlci5tZXNzYWdlcy5pbiAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IG5hbWUgPSBDdXN0b21Qcm90b2NvbE1hbmFnZXIubWVzc2FnZXMuaW47IHBhdGggPSBO
ZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyLm1lc3Nh
Z2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTczOCw3ICs1NzM2LDYgQEAK
IAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCiAJCQkJNUMxNDI3MDgxQzIzRjg1
MjAwRDQxMTgzIC8qIGNvY29hICovLAotCQkJCTVDMTQyNzBDMUMyM0Y4NzcwMEQ0MTE4MyAvKiBp
b3MgKi8sCiAJCQkJNUMxNDI3MEIxQzIzRjg3MTAwRDQxMTgzIC8qIG1hYyAqLywKIAkJCQk4M0JG
QUM0MDFEOTYxMzYwMDA0MzM0OTAgLyogQmxvYkRvd25sb2FkQ2xpZW50LmggKi8sCiAJCQkJODNC
RkFDNDExRDk2MTM2MDAwNDMzNDkwIC8qIEJsb2JEb3dubG9hZENsaWVudC5jcHAgKi8sCkBAIC01
Nzc5LDE0ICs1Nzc2LDYgQEAKIAkJCW5hbWUgPSBtYWM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91
cD4iOwogCQl9OwotCQk1QzE0MjcwQzFDMjNGODc3MDBENDExODMgLyogaW9zICovID0gewotCQkJ
aXNhID0gUEJYR3JvdXA7Ci0JCQljaGlsZHJlbiA9ICgKLQkJCQk1QzE0MjcwRDFDMjNGODg1MDBE
NDExODMgLyogRG93bmxvYWRJT1MubW0gKi8sCi0JCQkpOwotCQkJbmFtZSA9IGlvczsKLQkJCXNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7Ci0JCX07CiAJCTVDMTQyNzFBMUMyM0Y4QkYwMEQ0MTE4MyAv
KiBDb2NvYSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC05
MDg4LDcgKzkwNzcsNiBAQAogCQkJCTVDMTQyNzAxMUMyM0Y4NEMwMEQ0MTE4MyAvKiBEb3dubG9h
ZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBMURGNjMxMjE4RTBCN0M4MDAzQTNFMkEgLyogRG93
bmxvYWRDbGllbnQubW0gaW4gU291cmNlcyAqLywKIAkJCQk1QzE0MjcxMzFDMjNGODlFMDBENDEx
ODMgLyogRG93bmxvYWRDb2NvYS5tbSBpbiBTb3VyY2VzICovLAotCQkJCTVDMTQyNzExMUMyM0Y4
OUUwMEQ0MTE4MyAvKiBEb3dubG9hZElPUy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTVDMTQyNzEy
MUMyM0Y4OUUwMEQ0MTE4MyAvKiBEb3dubG9hZE1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTVD
MTQyNzA2MUMyM0Y4NEMwMEQ0MTE4MyAvKiBEb3dubG9hZE1hbmFnZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMUFCN0Q0Q0IxMjg4QUFBNzAwQ0ZEMDhDIC8qIERvd25sb2FkUHJveHkuY3BwIGlu
IFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjA3MDM5KQorKysgU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxNi0xMC0x
MCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAg
IFJlbW92ZSBkZWFkIG5ldHdvcmtpbmcgY29kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzMjYzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hl
ZHVsZXIuY3BwOgorICAgICAgICAoV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpzY2hlZHVsZUxv
YWQpOgorCiAyMDE2LTEwLTA2ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgog
CiAgICAgICAgIFVucmV2aWV3ZWQgYnVpbGQgZml4IHdoZW4gYnVpbGRpbmcgd2l0aCBEaXJlY3Qy
RC4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2No
ZWR1bGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYkNvcmVTdXBwb3J0L1dl
YlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAJKHJldmlzaW9uIDIwNzAzOSkKKysrIFNvdXJjZS9X
ZWJLaXQvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTQ5LDcgKzE0OSw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVy
OjpzY2hlZHVsZUwKICAgICBib29sIGhhZFJlcXVlc3RzID0gaG9zdC0+aGFzUmVxdWVzdHMoKTsK
ICAgICBob3N0LT5zY2hlZHVsZShyZXNvdXJjZUxvYWRlciwgcHJpb3JpdHkpOwogCi0jaWYgUExB
VEZPUk0oQ09DT0EpIHx8IFVTRShDRk5FVFdPUkspCisjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVT
RShDRlVSTENPTk5FQ1RJT04pCiAgICAgaWYgKFJlc291cmNlUmVxdWVzdDo6cmVzb3VyY2VQcmlv
cml0aWVzRW5hYmxlZCgpICYmICFpc1N1c3BlbmRpbmdQZW5kaW5nUmVxdWVzdHMoKSkgewogICAg
ICAgICAvLyBTZXJ2ZSBhbGwgcmVxdWVzdHMgYXQgb25jZSB0byBrZWVwIHRoZSBwaXBlbGluZSBm
dWxsIGF0IHRoZSBuZXR3b3JrIGxheWVyLgogICAgICAgICAvLyBGSVhNRTogRG9lcyB0aGlzIGNv
ZGUgZG8gYW55dGhpbmcgdXNlZnVsLCBnaXZlbiB0aGF0IHdlIGFsc28gc2V0IG1heFJlcXVlc3Rz
SW5GbGlnaHRQZXJIb3N0IHRvIGVmZmVjdGl2ZWx5IHVubGltaXRlZCBvbiB0aGVzZSBwbGF0Zm9y
bXM/CkluZGV4OiBTb3VyY2UvV2ViS2l0L2NmL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L2NmL0NoYW5nZUxvZwkocmV2aXNpb24gMjA3MDM5KQorKysgU291cmNlL1dlYktp
dC9jZi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMiBAQAorMjAxNi0xMC0x
MCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAg
IFJlbW92ZSBkZWFkIG5ldHdvcmtpbmcgY29kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzMjYzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRD
Ri5jcHA6CisKIDIwMTYtMDgtMTUgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNv
bT4KIAogICAgICAgICBSZW1vdmUgdW51c2VkIGluY2x1ZGVzIG9mIHd0ZiBoZWFkZXJzCkluZGV4
OiBTb3VyY2UvV2ViS2l0L2NmL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudENGLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2NmL1dlYkNvcmVTdXBwb3J0L1dlYkluc3Bl
Y3RvckNsaWVudENGLmNwcAkocmV2aXNpb24gMjA3MDM5KQorKysgU291cmNlL1dlYktpdC9jZi9X
ZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRDRi5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI3LDggKzI3LDggQEAKIC8vIGJlZm9yZSBpbmNsdWRpbmcgYW55IG90aGVyIGZpbGVzLiBGYWls
aW5nIHRvIGluY2x1ZGUgY29uZmlnLmggd2lsbCBsZWF2ZQogLy8gVVNFX0NGIHVuZGVmaW5lZCwg
Y2F1c2luZyBidWlsZCBmYWlsdXJlcyBpbiB0aGlzCiAvLyBmaWxlLiBCdXQgTWFjIGRvZXNuJ3Qg
aGF2ZSBhIGNvbmZpZy5oIGZvciBXZWJLaXQsIHNvIHdlIGNhbid0IGluY2x1ZGUgdGhlCi0vLyBX
aW5kb3dzIG9uZSBoZXJlLiBGb3Igbm93IHdlIGNhbiBqdXN0IGRlZmluZSBVU0VfQ0YgYW5kCi0v
LyBVU0VfQ0ZORVRXT1JLIG1hbnVhbGx5LCBidXQgd2UgbmVlZCBhIGJldHRlciBsb25nLXRlcm0g
c29sdXRpb24uCisvLyBXaW5kb3dzIG9uZSBoZXJlLiBGb3Igbm93IHdlIGNhbiBqdXN0IGRlZmlu
ZSBVU0VfQ0YgbWFudWFsbHksCisvLyBidXQgd2UgbmVlZCBhIGJldHRlciBsb25nLXRlcm0gc29s
dXRpb24uCiAjaWZuZGVmIFVTRV9DRgogI2RlZmluZSBVU0VfQ0YgMQogI2VuZGlmCkluZGV4OiBT
b3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9t
YWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMDcwMzkpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMSBAQAorMjAxNi0xMC0xMCAgQWxleCBD
aHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFJlbW92ZSBk
ZWFkIG5ldHdvcmtpbmcgY29kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTYzMjYzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBNaXNjL1dlYkRvd25sb2FkLm1tOgorICAgICAgICAoLVtXZWJEb3dubG9h
ZCBfaW5pdFdpdGhMb2FkaW5nQ0ZVUkxDb25uZWN0aW9uOnJlcXVlc3Q6cmVzcG9uc2U6ZGVsZWdh
dGU6cHJveHk6XSk6IERlbGV0ZWQuCisgICAgICAgICogTWlzYy9XZWJEb3dubG9hZEludGVybmFs
Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW06Cisg
ICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6Y29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rv
d25sb2FkKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tOgorICAgICAgICAo
K1tXZWJQcmVmZXJlbmNlcyBfc2V0Q3VycmVudE5ldHdvcmtMb2FkZXJTZXNzaW9uQ29va2llQWNj
ZXB0UG9saWN5Ol0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKC1b
V2ViVmlldyBzY2hlZHVsZUluUnVuTG9vcDpmb3JNb2RlOl0pOgorICAgICAgICAoLVtXZWJWaWV3
IHVuc2NoZWR1bGVGcm9tUnVuTG9vcDpmb3JNb2RlOl0pOgorCiAyMDE2LTEwLTEwICBEYXJpbiBB
ZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBNb3ZlIE5vdGlmaWNhdGlvbkNlbnRl
ciBmcm9tIGxlZ2FjeSB0byBuZXcgRE9NIGV4Y2VwdGlvbnMKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
bWFjL01pc2MvV2ViRG93bmxvYWQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMv
TWlzYy9XZWJEb3dubG9hZC5tbQkocmV2aXNpb24gMjA3MDM5KQorKysgU291cmNlL1dlYktpdC9t
YWMvTWlzYy9XZWJEb3dubG9hZC5tbQkod29ya2luZyBjb3B5KQpAQCAtNDAsMTEgKzQwLDYgQEAK
IAogI2ltcG9ydCAiV2ViVHlwZXNJbnRlcm5hbC5oIgogCi0jaWYgVVNFKENGTkVUV09SSykKLSNp
bXBvcnQgPENGTmV0d29yay9DRk5ldHdvcmsuaD4KLSNpbXBvcnQgPENGTmV0d29yay9DRlVSTENv
bm5lY3Rpb24uaD4KLSNlbmRpZgotCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogQGNsYXNz
IE5TVVJMQ29ubmVjdGlvbkRlbGVnYXRlUHJveHk7CkBAIC02MSwxNCArNTYsNiBAQCAtIChpZClf
aW5pdFdpdGhSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyCiAgICAgICAgICAgICAgIGRlbGVnYXRl
OihpZClkZWxlZ2F0ZQogICAgICAgICAgICAgIGRpcmVjdG9yeTooTlNTdHJpbmcgKilkaXJlY3Rv
cnk7CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotLSAoaWQpX2luaXRXaXRoTG9hZGluZ0NGVVJMQ29u
bmVjdGlvbjooQ0ZVUkxDb25uZWN0aW9uUmVmKWNvbm5lY3Rpb24KLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJlcXVlc3Q6KENGVVJMUmVxdWVzdFJlZilyZXF1ZXN0Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlOihDRlVSTFJlc3BvbnNlUmVmKXJlc3BvbnNlCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGVnYXRlOihpZClkZWxlZ2F0ZQotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBwcm94eTooTlNVUkxDb25uZWN0aW9uRGVsZWdhdGVQ
cm94eSAqKXByb3h5OwotI2VuZGlmCi0KIEBlbmQKIAogQGludGVyZmFjZSBXZWJEb3dubG9hZElu
dGVybmFsIDogTlNPYmplY3QgPE5TVVJMRG93bmxvYWREZWxlZ2F0ZT4KQEAgLTIzMSwxOCArMjE4
LDYgQEAgLSAoaWQpX2luaXRXaXRoTG9hZGluZ0Nvbm5lY3Rpb246KE5TVVJMQwogICAgIHJldHVy
biBbc3VwZXIgX2luaXRXaXRoTG9hZGluZ0Nvbm5lY3Rpb246Y29ubmVjdGlvbiByZXF1ZXN0OnJl
cXVlc3QgcmVzcG9uc2U6cmVzcG9uc2UgZGVsZWdhdGU6X3dlYkludGVybmFsIHByb3h5OnByb3h5
XTsKIH0KIAotI2lmIFVTRShDRk5FVFdPUkspCi0tIChpZClfaW5pdFdpdGhMb2FkaW5nQ0ZVUkxD
b25uZWN0aW9uOihDRlVSTENvbm5lY3Rpb25SZWYpY29ubmVjdGlvbgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmVxdWVzdDooQ0ZVUkxSZXF1ZXN0UmVmKXJlcXVlc3QKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2U6KENGVVJMUmVzcG9uc2VSZWYpcmVzcG9uc2UK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZWdhdGU6KGlkKWRlbGVnYXRlCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3h5OihOU1VSTENvbm5lY3Rpb25EZWxlZ2F0
ZVByb3h5ICopcHJveHkKLXsKLSAgICBbc2VsZiBfc2V0UmVhbERlbGVnYXRlOmRlbGVnYXRlXTsK
LSAgICByZXR1cm4gW3N1cGVyIF9pbml0V2l0aExvYWRpbmdDRlVSTENvbm5lY3Rpb246Y29ubmVj
dGlvbiByZXF1ZXN0OnJlcXVlc3QgcmVzcG9uc2U6cmVzcG9uc2UgZGVsZWdhdGU6X3dlYkludGVy
bmFsIHByb3h5OnByb3h5XTsKLX0KLSNlbmRpZgotCiAtIChpZClfaW5pdFdpdGhSZXF1ZXN0OihO
U1VSTFJlcXVlc3QgKilyZXF1ZXN0CiAgICAgICAgICAgICAgIGRlbGVnYXRlOihpZClkZWxlZ2F0
ZQogICAgICAgICAgICAgIGRpcmVjdG9yeTooTlNTdHJpbmcgKilkaXJlY3RvcnkKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViRG93bmxvYWRJbnRlcm5hbC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViRG93bmxvYWRJbnRlcm5hbC5oCShyZXZpc2lvbiAy
MDcwMzkpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYkRvd25sb2FkSW50ZXJuYWwuaAko
d29ya2luZyBjb3B5KQpAQCAtMjcsMTAgKzI3LDYgQEAKICovCiAgCiAjaW1wb3J0IDxXZWJLaXRM
ZWdhY3kvV2ViRG93bmxvYWQuaD4KLQotI2lmIFVTRShDRk5FVFdPUkspCi0jaW1wb3J0IDxDRk5l
dHdvcmsvQ0ZVUkxDb25uZWN0aW9uLmg+Ci0jZW5kaWYKICAKIEBpbnRlcmZhY2UgV2ViRG93bmxv
YWQgKFdlYkRvd25sb2FkQ3JlYXRpb24pCiArKGlkKV9kb3dubG9hZFdpdGhMb2FkaW5nQ29ubmVj
dGlvbjooTlNVUkxDb25uZWN0aW9uICopY29ubmVjdGlvbgpAQCAtNDMsMTIgKzM5LDQgQEAgQGlu
dGVyZmFjZSBXZWJEb3dubG9hZCAoV2ViRG93bmxvYWRDcmVhdAogICAgICAgICAgICAgICAgICBk
ZWxlZ2F0ZTooaWQpZGVsZWdhdGUKICAgICAgICAgICAgICAgICBkaXJlY3Rvcnk6KE5TU3RyaW5n
ICopZGlyZWN0b3J5OwogCi0jaWYgVVNFKENGTkVUV09SSykKLSsgKGlkKV9kb3dubG9hZFdpdGhM
b2FkaW5nQ0ZVUkxDb25uZWN0aW9uOihDRlVSTENvbm5lY3Rpb25SZWYpY29ubmVjdGlvbgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Q6KENGVVJMUmVxdWVzdFJlZily
ZXF1ZXN0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZTooQ0ZVUkxS
ZXNwb25zZVJlZilyZXNwb25zZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVs
ZWdhdGU6KGlkKWRlbGVnYXRlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw
cm94eTooaWQpcHJveHk7Ci0jZW5kaWYKLQogQGVuZApJbmRleDogU291cmNlL1dlYktpdC9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0JKHJl
dmlzaW9uIDIwNzAzOSkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMDQsMTMgKzMwNCw3IEBAIHZv
aWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNvbnZlcnRNYWluUmUKIAogICAgIFJlc291cmNlSGFu
ZGxlKiBoYW5kbGUgPSBtYWluUmVzb3VyY2VMb2FkZXItPmhhbmRsZSgpOwogCi0jaWYgVVNFKENG
TkVUV09SSykKLSAgICBBU1NFUlQoW1dlYkRvd25sb2FkIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2Vs
ZWN0b3IoX2Rvd25sb2FkV2l0aExvYWRpbmdDRlVSTENvbm5lY3Rpb246cmVxdWVzdDpyZXNwb25z
ZTpkZWxlZ2F0ZTpwcm94eTopXSk7Ci0gICAgYXV0byBjb25uZWN0aW9uID0gaGFuZGxlLT5yZWxl
YXNlQ29ubmVjdGlvbkZvckRvd25sb2FkKCk7Ci0gICAgW1dlYkRvd25sb2FkIF9kb3dubG9hZFdp
dGhMb2FkaW5nQ0ZVUkxDb25uZWN0aW9uOmNvbm5lY3Rpb24uZ2V0KCkgcmVxdWVzdDpyZXF1ZXN0
LmNmVVJMUmVxdWVzdChVcGRhdGVIVFRQQm9keSkgcmVzcG9uc2U6cmVzcG9uc2UuY2ZVUkxSZXNw
b25zZSgpIGRlbGVnYXRlOlt3ZWJWaWV3IGRvd25sb2FkRGVsZWdhdGVdIHByb3h5Om5pbF07Ci0j
ZWxzZQogICAgIFtXZWJEb3dubG9hZCBfZG93bmxvYWRXaXRoTG9hZGluZ0Nvbm5lY3Rpb246aGFu
ZGxlLT5jb25uZWN0aW9uKCkgcmVxdWVzdDpyZXF1ZXN0Lm5zVVJMUmVxdWVzdChVcGRhdGVIVFRQ
Qm9keSkgcmVzcG9uc2U6cmVzcG9uc2UubnNVUkxSZXNwb25zZSgpIGRlbGVnYXRlOlt3ZWJWaWV3
IGRvd25sb2FkRGVsZWdhdGVdIHByb3h5Om5pbF07Ci0jZW5kaWYKIH0KIAogYm9vbCBXZWJGcmFt
ZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUoRG9j
dW1lbnRMb2FkZXIqIGxvYWRlciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgaW50IGxlbmd0aCkKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbQkocmV2aXNpb24gMjA3MDM5KQor
KysgU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbQkod29ya2luZyBj
b3B5KQpAQCAtMTgwMCw3ICsxODAwLDcgQEAgKyAodm9pZClfY2xlYXJOZXR3b3JrTG9hZGVyU2Vz
c2lvbgogKyAodm9pZClfc2V0Q3VycmVudE5ldHdvcmtMb2FkZXJTZXNzaW9uQ29va2llQWNjZXB0
UG9saWN5OihOU0hUVFBDb29raWVBY2NlcHRQb2xpY3kpcG9saWN5CiB7CiAgICAgUmV0YWluUHRy
PENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGNvb2tpZVN0b3JhZ2UgPSBOZXR3b3JrU3RvcmFnZVNl
c3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpLmNvb2tpZVN0b3JhZ2UoKTsKLSAgICBBU1NF
UlQoY29va2llU3RvcmFnZSk7IC8vIFdpbGwgZmFpbCB3aGVuIGJ1aWxkaW5nIHdpdGhvdXQgVVNF
KENGTkVUV09SSykgYW5kIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3dpdGNoVG9OZXdUZXN0aW5n
U2Vzc2lvbigpIHdhcyBub3QgY2FsbGVkIGJlZm9yZWhhbmQuCisgICAgQVNTRVJUKGNvb2tpZVN0
b3JhZ2UpOyAvLyBXaWxsIGZhaWwgd2hlbiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN3aXRjaFRv
TmV3VGVzdGluZ1Nlc3Npb24oKSB3YXMgbm90IGNhbGxlZCBiZWZvcmVoYW5kLgogICAgIENGSFRU
UENvb2tpZVN0b3JhZ2VTZXRDb29raWVBY2NlcHRQb2xpY3koY29va2llU3RvcmFnZS5nZXQoKSwg
cG9saWN5KTsKIH0KIApJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQkocmV2
aXNpb24gMjA3MDM5KQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCSh3
b3JraW5nIGNvcHkpCkBAIC02Nzc5LDI0ICs2Nzc5LDE0IEBAIC0gKGlkKWNhbmRpZGF0ZUxpc3QK
IAogLSAodm9pZClzY2hlZHVsZUluUnVuTG9vcDooTlNSdW5Mb29wICopcnVuTG9vcCBmb3JNb2Rl
OihOU1N0cmluZyAqKW1vZGUKIHsKLSNpZiBVU0UoQ0ZORVRXT1JLKQotICAgIENGUnVuTG9vcFJl
ZiBzY2hlZHVsZVBhaXJSdW5Mb29wID0gW3J1bkxvb3AgZ2V0Q0ZSdW5Mb29wXTsKLSNlbHNlCi0g
ICAgTlNSdW5Mb29wICpzY2hlZHVsZVBhaXJSdW5Mb29wID0gcnVuTG9vcDsKLSNlbmRpZgogICAg
IGlmIChydW5Mb29wICYmIG1vZGUpCi0gICAgICAgIGNvcmUoc2VsZiktPmFkZFNjaGVkdWxlUGFp
cihTY2hlZHVsZVBhaXI6OmNyZWF0ZShzY2hlZHVsZVBhaXJSdW5Mb29wLCAoQ0ZTdHJpbmdSZWYp
bW9kZSkpOworICAgICAgICBjb3JlKHNlbGYpLT5hZGRTY2hlZHVsZVBhaXIoU2NoZWR1bGVQYWly
OjpjcmVhdGUocnVuTG9vcCwgKENGU3RyaW5nUmVmKW1vZGUpKTsKIH0KIAogLSAodm9pZCl1bnNj
aGVkdWxlRnJvbVJ1bkxvb3A6KE5TUnVuTG9vcCAqKXJ1bkxvb3AgZm9yTW9kZTooTlNTdHJpbmcg
Kiltb2RlCiB7Ci0jaWYgVVNFKENGTkVUV09SSykKLSAgICBDRlJ1bkxvb3BSZWYgc2NoZWR1bGVQ
YWlyUnVuTG9vcCA9IFtydW5Mb29wIGdldENGUnVuTG9vcF07Ci0jZWxzZQotICAgIE5TUnVuTG9v
cCAqc2NoZWR1bGVQYWlyUnVuTG9vcCA9IHJ1bkxvb3A7Ci0jZW5kaWYKICAgICBpZiAocnVuTG9v
cCAmJiBtb2RlKQotICAgICAgICBjb3JlKHNlbGYpLT5yZW1vdmVTY2hlZHVsZVBhaXIoU2NoZWR1
bGVQYWlyOjpjcmVhdGUoc2NoZWR1bGVQYWlyUnVuTG9vcCwgKENGU3RyaW5nUmVmKW1vZGUpKTsK
KyAgICAgICAgY29yZShzZWxmKS0+cmVtb3ZlU2NoZWR1bGVQYWlyKFNjaGVkdWxlUGFpcjo6Y3Jl
YXRlKHJ1bkxvb3AsIChDRlN0cmluZ1JlZiltb2RlKSk7CiB9CiAKIHN0YXRpYyBCT09MIGZpbmRT
dHJpbmcoTlNWaWV3IDxXZWJEb2N1bWVudFNlYXJjaGluZz4gKnNlYXJjaFZpZXcsIE5TU3RyaW5n
ICpzdHJpbmcsIFdlYkZpbmRPcHRpb25zIG9wdGlvbnMpCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dp
bi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCShy
ZXZpc2lvbiAyMDcwMzkpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwzNiBAQAorMjAxNi0xMC0xMCAgQWxleCBDaHJpc3RlbnNlbiAgPGFj
aHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFJlbW92ZSBkZWFkIG5ldHdvcmtpbmcg
Y29kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYz
MjYzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBE
ZWZhdWx0RG93bmxvYWREZWxlZ2F0ZS5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpzYXZl
UGxhdGZvcm1EYXRhVG9DYWNoZWRGcmFtZSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVOZXR3b3JraW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJGcmFtZU5ldHdvcmtpbmdD
b250ZXh0OjplbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKToKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lmg6CisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcDoKKyAgICAgICAgKiBXZWJEb3dubG9hZC5o
OgorICAgICAgICAqIFdlYkVycm9yLmNwcDoKKyAgICAgICAgKFdlYkVycm9yOjpsb2NhbGl6ZWRE
ZXNjcmlwdGlvbik6CisgICAgICAgIChXZWJFcnJvcjo6c3NsUGVlckNlcnRpZmljYXRlKToKKyAg
ICAgICAgKiBXZWJFcnJvci5oOgorICAgICAgICAqIFdlYk11dGFibGVVUkxSZXF1ZXN0LmNwcDoK
KyAgICAgICAgKFdlYk11dGFibGVVUkxSZXF1ZXN0OjptdXRhYmxlQ29weSk6CisgICAgICAgICog
V2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuY3BwOgorICAgICAgICAoV2ViVVJMQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2U6OmluaXRXaXRoUHJvdGVjdGlvblNwYWNlKToKKyAgICAgICAgKFdl
YlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjppbml0V2l0aEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlKToKKyAgICAgICAgKiBXZWJVUkxSZXNwb25zZS5jcHA6CisgICAgICAgIChXZWJVUkxSZXNw
b25zZTo6c3NsUGVlckNlcnRpZmljYXRlKToKKyAgICAgICAgKiBXZWJVUkxSZXNwb25zZS5oOgor
ICAgICAgICAqIFdlYlZpZXcuY3BwOgorICAgICAgICAoV2ViVmlldzo6c2V0Q2FjaGVNb2RlbCk6
CisgICAgICAgIChXZWJWaWV3OjpjYW5IYW5kbGVSZXF1ZXN0KToKKyAgICAgICAgKFdlYlZpZXc6
Om5vdGlmeVByZWZlcmVuY2VzQ2hhbmdlZCk6CisgICAgICAgICh1cGRhdGVTaGFyZWRTZXR0aW5n
c0Zyb21QcmVmZXJlbmNlc0lmTmVlZGVkKToKKwogMjAxNi0xMC0wOSAgV2Vuc29uIEhzaWVoICA8
d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBTdXBwb3J0IElucHV0RXZlbnQuaW5w
dXRUeXBlIGZvciB0aGUgbmV3IElucHV0RXZlbnQgc3BlYwpJbmRleDogU291cmNlL1dlYktpdC93
aW4vRGVmYXVsdERvd25sb2FkRGVsZWdhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L3dpbi9EZWZhdWx0RG93bmxvYWREZWxlZ2F0ZS5oCShyZXZpc2lvbiAyMDcwMzkpCisrKyBTb3Vy
Y2UvV2ViS2l0L3dpbi9EZWZhdWx0RG93bmxvYWREZWxlZ2F0ZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yOCw3ICsyOCw3IEBACiAjaW5jbHVkZSAiV2ViS2l0LmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hT
ZXQuaD4KIAotI2lmIFVTRShDRk5FVFdPUkspCisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKICNp
bmNsdWRlIDxDRk5ldHdvcmsvQ0ZVUkxEb3dubG9hZFByaXYuaD4KICNlbmRpZgogCkluZGV4OiBT
b3VyY2UvV2ViS2l0L3dpbi9XZWJEb3dubG9hZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvd2luL1dlYkRvd25sb2FkLmgJKHJldmlzaW9uIDIwNzAzOSkKKysrIFNvdXJjZS9XZWJLaXQv
d2luL1dlYkRvd25sb2FkLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDE1ICsyMywxNCBAQAogICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCiAgKi8KIAotI2lmbmRlZiBXZWJEb3dubG9hZF9oCi0jZGVmaW5lIFdlYkRv
d25sb2FkX2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiV2ViS2l0LmgiCiAjaW5jbHVkZSA8
V2ViQ29yZS9DT01QdHIuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQorI2lmIFVTRShDRlVS
TENPTk5FQ1RJT04pCiAjaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGVVJMRG93bmxvYWRQcml2Lmg+CiAj
ZWxpZiBVU0UoQ1VSTCkKICNpbmNsdWRlIDxXZWJDb3JlL0N1cmxEb3dubG9hZC5oPgpAQCAtODQs
NyArODMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IGNvbnRpbnVlV2l0aG91dENyZWRlbnRpYWxGb3JBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShfSW5f
b3B0XyBJV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UqKTsKICAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgdXNlQ3JlZGVudGlhbChfSW5fb3B0XyBJV2ViVVJMQ3JlZGVu
dGlhbCosIF9Jbl9vcHRfIElXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSopOwogCi0jaWYg
VVNFKENGTkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogICAgIC8vIENGVVJMRG93
bmxvYWQgQ2FsbGJhY2tzCiAgICAgdm9pZCBkaWRTdGFydCgpOwogICAgIENGVVJMUmVxdWVzdFJl
ZiB3aWxsU2VuZFJlcXVlc3QoQ0ZVUkxSZXF1ZXN0UmVmLCBDRlVSTFJlc3BvbnNlUmVmKTsKQEAg
LTEwOSw3ICsxMDgsNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICBXVEY6OlN0cmluZyBtX2Rlc3RpbmF0
aW9uOwogICAgIFdURjo6U3RyaW5nIG1fYnVuZGxlUGF0aDsKLSNpZiBVU0UoQ0ZORVRXT1JLKQor
I2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAgICAgUmV0YWluUHRyPENGVVJMRG93bmxvYWRSZWY+
IG1fZG93bmxvYWQ7CiAjZWxpZiBVU0UoQ1VSTCkKICAgICBSZWZQdHI8V2ViQ29yZTo6Q3VybERv
d25sb2FkPiBtX2Rvd25sb2FkOwpAQCAtMTIzLDYgKzEyMiwzIEBAIHByb3RlY3RlZDoKICAgICBp
bnQgbV9yZWNlaXZlZDsKICNlbmRpZgogfTsKLQotCi0jZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvd2luL1dlYkVycm9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJF
cnJvci5jcHAJKHJldmlzaW9uIDIwNzAzOSkKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYkVycm9y
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNyBAQAogI2luY2x1ZGUgPENvcmVHcmFw
aGljcy9Db3JlR3JhcGhpY3MuaD4KICNlbmRpZgogCi0jaWYgVVNFKENGTkVUV09SSykKKyNpZiBV
U0UoQ0ZVUkxDT05ORUNUSU9OKQogI2luY2x1ZGUgPFdlYktpdFN5c3RlbUludGVyZmFjZS9XZWJL
aXRTeXN0ZW1JbnRlcmZhY2UuaD4KICNlbmRpZgogCkBAIC0xMzUsNyArMTM1LDcgQEAgSFJFU1VM
VCBXZWJFcnJvcjo6bG9jYWxpemVkRGVzY3JpcHRpb24oXwogCiAgICAgKnJlc3VsdCA9IEJTdHJp
bmcobV9lcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbigpKS5yZWxlYXNlKCk7CiAKLSNpZiBVU0Uo
Q0ZORVRXT1JLKQorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAgICAgaWYgKCEqcmVzdWx0KSB7
CiAgICAgICAgIGlmIChpbnQgY29kZSA9IG1fZXJyb3IuZXJyb3JDb2RlKCkpCiAgICAgICAgICAg
ICAqcmVzdWx0ID0gQlN0cmluZyh3a0NGTmV0d29ya0Vycm9yR2V0TG9jYWxpemVkRGVzY3JpcHRp
b24oY29kZSkpLnJlbGVhc2UoKTsKQEAgLTIxOSw3ICsyMTksNyBAQCBIUkVTVUxUIFdlYkVycm9y
Ojpzc2xQZWVyQ2VydGlmaWNhdGUoX091CiAgICAgICAgIHJldHVybiBFX1BPSU5URVI7CiAgICAg
KnJlc3VsdCA9IDA7CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQorI2lmIFVTRShDRlVSTENPTk5FQ1RJ
T04pCiAgICAgaWYgKCFtX2NmRXJyb3JVc2VySW5mb0RpY3QpIHsKICAgICAgICAgLy8gY29weSB1
c2VyaW5mbyBmcm9tIENGRXJyb3JSZWYKICAgICAgICAgQ0ZFcnJvclJlZiBjZkVycm9yID0gbV9l
cnJvcjsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYkVycm9yLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC93aW4vV2ViRXJyb3IuaAkocmV2aXNpb24gMjA3MDM5KQorKysgU291cmNl
L1dlYktpdC93aW4vV2ViRXJyb3IuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsOCArMjMsNyBAQAog
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCiAgKi8KIAotI2lmbmRlZiBXZWJFcnJvcl9oCi0jZGVmaW5lIFdlYkVy
cm9yX2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiV2ViS2l0LmgiCiAjaW5jbHVkZSA8V2Vi
Q29yZS9DT01QdHIuaD4KQEAgLTY2LDEwICs2NSw4IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAg
VUxPTkcgbV9yZWZDb3VudCB7IDAgfTsKICAgICBDT01QdHI8SVByb3BlcnR5QmFnPiBtX3VzZXJJ
bmZvOwotI2lmIFVTRShDRk5FVFdPUkspCisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKICAgICBS
ZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBtX2NmRXJyb3JVc2VySW5mb0RpY3Q7CiAjZW5kaWYK
ICAgICBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIG1fZXJyb3I7CiB9OwotCi0jZW5kaWYKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvd2luL1dlYk11dGFibGVVUkxSZXF1ZXN0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJNdXRhYmxlVVJMUmVxdWVzdC5jcHAJKHJldmlzaW9uIDIw
NzAzOSkKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYk11dGFibGVVUkxSZXF1ZXN0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDAsNyArNDAsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvQ2VydGlmaWNh
dGVDRldpbi5oPgogI2VuZGlmCiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQorI2lmIFVTRShDRlVSTENP
Tk5FQ1RJT04pCiAjaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGVVJMUmVxdWVzdFByaXYuaD4KICNlbmRp
ZgogCkBAIC0zODIsNyArMzgyLDcgQEAgSFJFU1VMVCBXZWJNdXRhYmxlVVJMUmVxdWVzdDo6bXV0
YWJsZUNvcAogICAgIGlmICghcmVzdWx0KQogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwogCi0j
aWYgVVNFKENGTkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogICAgIFJldGFpblB0
cjxDRk11dGFibGVVUkxSZXF1ZXN0UmVmPiBtdXRhYmxlUmVxdWVzdCA9IGFkb3B0Q0YoQ0ZVUkxS
ZXF1ZXN0Q3JlYXRlTXV0YWJsZUNvcHkoa0NGQWxsb2NhdG9yRGVmYXVsdCwgbV9yZXF1ZXN0LmNm
VVJMUmVxdWVzdChVcGRhdGVIVFRQQm9keSkpKTsKICAgICAqcmVzdWx0ID0gY3JlYXRlSW5zdGFu
Y2UoUmVzb3VyY2VSZXF1ZXN0KG11dGFibGVSZXF1ZXN0LmdldCgpKSk7CiAgICAgcmV0dXJuIFNf
T0s7CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViVVJMQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UuY3BwCShyZXZpc2lvbiAyMDcwMzkpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9X
ZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0MSw3
ICsxNDEsNyBAQCBIUkVTVUxUIFdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjppCiAKICAg
ICAvLyBGSVhNRTogQWZ0ZXIgd2UgY2hhbmdlIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIHRvIHVz
ZSAiUmVzb3VyY2VIYW5kbGUiIGFzIHRoZSBhYnN0cmFjdCAiU2VuZGVyIiBvciAiU291cmNlIG9m
IHRoaXMgQXV0aCBDaGFsbGVuZ2UiLCB0aGVuIHdlJ2xsCiAgICAgLy8gY29uc3RydWN0IHRoZSBB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSB3aXRoIHRoYXQgYXMgb2J0YWluZWQgZnJvbSB0aGUgd2Vi
U2VuZGVyCi0jaWYgVVNFKENGTkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogICAg
IG1fYXV0aGVudGljYXRpb25DaGFsbGVuZ2UgPSBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSh3ZWJT
cGFjZS0+cHJvdGVjdGlvblNwYWNlKCksIHdlYkNyZWRlbnRpYWwtPmNyZWRlbnRpYWwoKSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXZpb3VzRmFpbHVyZUNvdW50LCB3
ZWJSZXNwb25zZS0+cmVzb3VyY2VSZXNwb25zZSgpLCB3ZWJFcnJvci0+cmVzb3VyY2VFcnJvcigp
KTsKICNlbmRpZgpAQCAtMTYyLDcgKzE2Miw3IEBAIEhSRVNVTFQgV2ViVVJMQXV0aGVudGljYXRp
b25DaGFsbGVuZ2U6OmkKICAgICBpZiAoIXdlYlNlbmRlcikKICAgICAgICAgcmV0dXJuIEVfTk9J
TlRFUkZBQ0U7CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04p
CiAgICAgbV9hdXRoZW50aWNhdGlvbkNoYWxsZW5nZSA9IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
KHdlYkNoYWxsZW5nZS0+YXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKS5jZlVSTEF1dGhDaGFsbGVu
Z2VSZWYoKSwgd2ViU2VuZGVyLT5hdXRoZW50aWNhdGlvbkNsaWVudCgpKTsKIAogICAgIHJldHVy
biBTX09LOwpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViVVJMUmVzcG9uc2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYlVSTFJlc3BvbnNlLmNwcAkocmV2aXNpb24g
MjA3MDM5KQorKysgU291cmNlL1dlYktpdC93aW4vV2ViVVJMUmVzcG9uc2UuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zNSw3ICszNSw3IEBACiAjaW5jbHVkZSA8Q29yZUdyYXBoaWNzL0NvcmVHcmFw
aGljcy5oPgogI2VuZGlmCiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQorI2lmIFVTRShDRlVSTENPTk5F
Q1RJT04pCiAjaW5jbHVkZSA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlL1dlYktpdFN5c3RlbUludGVy
ZmFjZS5oPgogI2VuZGlmCiAKQEAgLTQwNiw3ICs0MDYsNyBAQCBIUkVTVUxUIFdlYlVSTFJlc3Bv
bnNlOjpzc2xQZWVyQ2VydGlmaWNhCiAgICAgICAgIHJldHVybiBFX1BPSU5URVI7CiAgICAgKnJl
c3VsdCA9IDA7CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04p
CiAgICAgQ0ZEaWN0aW9uYXJ5UmVmIGRpY3QgPSBjZXJ0aWZpY2F0ZURpY3Rpb25hcnkoKTsKICAg
ICBpZiAoIWRpY3QpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CkBAIC00NzUsNyArNDc1LDcgQEAg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgV2ViVVJMUmVzcG9uc2U6OgogICAgIHJldHVybiBtX3Jl
c3BvbnNlOwogfQogCi0jaWYgVVNFKENGTkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9O
KQogQ0ZEaWN0aW9uYXJ5UmVmIFdlYlVSTFJlc3BvbnNlOjpjZXJ0aWZpY2F0ZURpY3Rpb25hcnko
KSBjb25zdAogewogICAgIGlmIChtX1NTTENlcnRpZmljYXRlSW5mbykKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvd2luL1dlYlVSTFJlc3BvbnNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93
aW4vV2ViVVJMUmVzcG9uc2UuaAkocmV2aXNpb24gMjA3MDM5KQorKysgU291cmNlL1dlYktpdC93
aW4vV2ViVVJMUmVzcG9uc2UuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsOCArMjMsNyBAQAogICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCiAgKi8KIAotI2lmbmRlZiBXZWJVUkxSZXNwb25zZV9ICi0jZGVmaW5lIFdl
YlVSTFJlc3BvbnNlX0gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiV2ViS2l0LmgiCiAjaW5j
bHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+CkBAIC02Niw3ICs2NSw3IEBAIHB1Ymxp
YzoKIHByb3RlY3RlZDoKICAgICBIUkVTVUxUIHN1Z2dlc3RlZEZpbGVFeHRlbnNpb24oQlNUUiog
cmVzdWx0KTsKIAotI2lmIFVTRShDRk5FVFdPUkspCisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikK
ICAgICBDRkRpY3Rpb25hcnlSZWYgY2VydGlmaWNhdGVEaWN0aW9uYXJ5KCkgY29uc3Q7CiAjZW5k
aWYKIApAQCAtNzQsOSArNzMsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgVUxPTkcgbV9yZWZDb3VudCB7
IDAgfTsKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIG1fcmVzcG9uc2U7CiAKLSNpZiBV
U0UoQ0ZORVRXT1JLKQorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAgICAgbXV0YWJsZSBSZXRh
aW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBtX1NTTENlcnRpZmljYXRlSW5mbzsgICAgLy8gdGhpcyBl
bnN1cmVzIGNlcnRpZmljYXRlIGNvbnRleHRzIGFyZSB2YWxpZCBmb3IgdGhlIGxpZmV0aW1lIG9m
IHRoaXMgV2ViVVJMUmVzcG9uc2UuCiAjZW5kaWYKIH07Ci0KLSNlbmRpZgpJbmRleDogU291cmNl
L1dlYktpdC93aW4vV2ViVmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4v
V2ViVmlldy5jcHAJKHJldmlzaW9uIDIwNzAzOSkKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYlZp
ZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzgsNyArMTc4LDcgQEAKICNpbmNsdWRlIDxDb3Jl
Rm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oPgogI2VuZGlmCiAKLSNpZiBVU0UoQ0ZORVRXT1JL
KQorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAjaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGVVJMQ2Fj
aGVQcml2Lmg+CiAjaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGVVJMUHJvdG9jb2xQcml2Lmg+CiAjaW5j
bHVkZSA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlL1dlYktpdFN5c3RlbUludGVyZmFjZS5oPgpAQCAt
NDk3LDcgKzQ5Nyw3IEBAIHZvaWQgV2ViVmlldzo6c2V0Q2FjaGVNb2RlbChXZWJDYWNoZU1vZGUK
IAogICAgIFN0cmluZyBjYWNoZURpcmVjdG9yeTsKIAotI2lmIFVTRShDRk5FVFdPUkspCisjaWYg
VVNFKENGVVJMQ09OTkVDVElPTikKICAgICBSZXRhaW5QdHI8Q0ZVUkxDYWNoZVJlZj4gY2Z1cmxD
YWNoZSA9IGFkb3B0Q0YoQ0ZVUkxDYWNoZUNvcHlTaGFyZWRVUkxDYWNoZSgpKTsKICAgICBSZXRh
aW5QdHI8Q0ZTdHJpbmdSZWY+IGNmdXJsQ2FjaGVEaXJlY3RvcnkgPSBhZG9wdENGKHdrQ29weUZv
dW5kYXRpb25DYWNoZURpcmVjdG9yeSgwKSk7CiAgICAgaWYgKCFjZnVybENhY2hlRGlyZWN0b3J5
KSB7CkBAIC01NTEsNyArNTUxLDcgQEAgdm9pZCBXZWJWaWV3OjpzZXRDYWNoZU1vZGVsKFdlYkNh
Y2hlTW9kZQogICAgICAgICAvLyBNZW1vcnkgY2FjaGUgY2FwYWNpdHkgKGluIGJ5dGVzKQogICAg
ICAgICBjYWNoZU1lbW9yeUNhcGFjaXR5ID0gMDsKIAotI2lmIFVTRShDRk5FVFdPUkspCisjaWYg
VVNFKENGVVJMQ09OTkVDVElPTikKICAgICAgICAgLy8gRm91bmRhdGlvbiBkaXNrIGNhY2hlIGNh
cGFjaXR5IChpbiBieXRlcykKICAgICAgICAgY2FjaGVEaXNrQ2FwYWNpdHkgPSBDRlVSTENhY2hl
RGlza0NhcGFjaXR5KGNmdXJsQ2FjaGUuZ2V0KCkpOwogI2VuZGlmCkBAIC02NzUsNyArNjc1LDcg
QEAgdm9pZCBXZWJWaWV3OjpzZXRDYWNoZU1vZGVsKFdlYkNhY2hlTW9kZQogICAgIG1lbW9yeUNh
Y2hlLnNldERlYWREZWNvZGVkRGF0YURlbGV0aW9uSW50ZXJ2YWwoZGVhZERlY29kZWREYXRhRGVs
ZXRpb25JbnRlcnZhbCk7CiAgICAgUGFnZUNhY2hlOjpzaW5nbGV0b24oKS5zZXRNYXhTaXplKHBh
Z2VDYWNoZVNpemUpOwogCi0jaWYgVVNFKENGTkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNU
SU9OKQogICAgIC8vIERvbid0IHNocmluayBhIGJpZyBkaXNrIGNhY2hlLCBzaW5jZSB0aGF0IHdv
dWxkIGNhdXNlIGNodXJuLgogICAgIGNhY2hlRGlza0NhcGFjaXR5ID0gbWF4KGNhY2hlRGlza0Nh
cGFjaXR5LCBDRlVSTENhY2hlRGlza0NhcGFjaXR5KGNmdXJsQ2FjaGUuZ2V0KCkpKTsKIApAQCAt
MTU0Nyw3ICsxNTQ3LDcgQEAgdm9pZCBXZWJWaWV3OjpjbG9zZVdpbmRvdygpCiAKIGJvb2wgV2Vi
Vmlldzo6Y2FuSGFuZGxlUmVxdWVzdChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QpCiB7Ci0jaWYgVVNFKENGTkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQog
ICAgIC8vIE9uIHRoZSBNYWMgdGhlcmUncyBhbiBhYm91dCBVUkwgcHJvdG9jb2wgaW1wbGVtZW50
YXRpb24gYnV0IFdpbmRvd3MgQ0ZOZXR3b3JrIGRvZXNuJ3QgaGF2ZSB0aGF0LgogICAgIGlmIChy
ZXF1ZXN0LnVybCgpLnByb3RvY29sSXMoImFib3V0IikpCiAgICAgICAgIHJldHVybiB0cnVlOwpA
QCAtNTI2MSw3ICs1MjYxLDcgQEAgSFJFU1VMVCBXZWJWaWV3Ojpub3RpZnlQcmVmZXJlbmNlc0No
YW5nZQogICAgIGhyID0gcHJlZmVyZW5jZXMtPnByaXZhdGVCcm93c2luZ0VuYWJsZWQoJmVuYWJs
ZWQpOwogICAgIGlmIChGQUlMRUQoaHIpKQogICAgICAgICByZXR1cm4gaHI7Ci0jaWYgUExBVEZP
Uk0oV0lOKSB8fCBVU0UoQ0ZORVRXT1JLKQorI2lmIFBMQVRGT1JNKFdJTikgfHwgVVNFKENGVVJM
Q09OTkVDVElPTikKICAgICBpZiAoZW5hYmxlZCkKICAgICAgICAgV2ViRnJhbWVOZXR3b3JraW5n
Q29udGV4dDo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpOwogICAgIGVsc2UKQEAgLTU1
NjAsNyArNTU2MCw3IEBAIEhSRVNVTFQgdXBkYXRlU2hhcmVkU2V0dGluZ3NGcm9tUHJlZmVyZW4K
ICAgICBpZiAoRkFJTEVEKGhyKSkKICAgICAgICAgcmV0dXJuIGhyOwogCi0jaWYgVVNFKENGTkVU
V09SSykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogICAgIFdlYkZyYW1lTmV0d29ya2luZ0Nv
bnRleHQ6OnNldENvb2tpZUFjY2VwdFBvbGljeUZvckFsbENvbnRleHRzKGFjY2VwdFBvbGljeSk7
CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAkocmV2aXNpb24gMjA3MDM5KQorKysg
U291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC05NzQsNyArOTc0LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNs
aWVudDo6c2V0VGl0bGUoY29ucwogCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpzYXZlUGxh
dGZvcm1EYXRhVG9DYWNoZWRGcmFtZShDYWNoZWRGcmFtZSogY2FjaGVkRnJhbWUpCiB7Ci0jaWYg
VVNFKENGTkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogICAgIEZyYW1lKiBjb3Jl
RnJhbWUgPSBjb3JlKG1fd2ViRnJhbWUpOwogICAgIGlmICghY29yZUZyYW1lKQogICAgICAgICBy
ZXR1cm47CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZU5l
dHdvcmtpbmdDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmNwcAkocmV2aXNpb24gMjA3MDM5
KQorKysgU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVOZXR3b3JraW5n
Q29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAKICNpbmNsdWRlIDxX
ZWJDb3JlL1NldHRpbmdzLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKLSNp
ZiBVU0UoQ0ZORVRXT1JLKQorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAjaW5jbHVkZSA8Q0ZO
ZXR3b3JrL0NGSFRUUENvb2tpZXNQcml2Lmg+CiAjaW5jbHVkZSA8V2ViS2l0U3lzdGVtSW50ZXJm
YWNlL1dlYktpdFN5c3RlbUludGVyZmFjZS5oPgogI2VuZGlmCkBAIC00Nyw3ICs0Nyw3IEBAIHN0
YXRpYyBTdHJpbmcmIGlkZW50aWZpZXJCYXNlKCkKICAgICByZXR1cm4gYmFzZTsKIH0KIAotI2lm
IFVTRShDRk5FVFdPUkspCisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKIHZvaWQgV2ViRnJhbWVO
ZXR3b3JraW5nQ29udGV4dDo6c2V0Q29va2llQWNjZXB0UG9saWN5Rm9yQWxsQ29udGV4dHMoV2Vi
S2l0Q29va2llU3RvcmFnZUFjY2VwdFBvbGljeSBwb2xpY3kpCiB7CiAgICAgaWYgKFJldGFpblB0
cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBjb29raWVTdG9yYWdlID0gTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKS5jb29raWVTdG9yYWdlKCkpCkBAIC02Nyw3
ICs2Nyw3IEBAIHZvaWQgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6c2V0UHJpdmEKIAogTmV0
d29ya1N0b3JhZ2VTZXNzaW9uJiBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVQcml2
YXRlQnJvd3NpbmdTZXNzaW9uKCkKIHsKLSNpZiBVU0UoQ0ZORVRXT1JLKQorI2lmIFVTRShDRlVS
TENPTk5FQ1RJT04pCiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAogICAgIGlmIChhdXRv
IHByaXZhdGVTZXNzaW9uID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihT
ZXNzaW9uSUQ6OmxlZ2FjeVByaXZhdGVTZXNzaW9uSUQoKSkpCkluZGV4OiBTb3VyY2UvV2ViS2l0
L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVOZXR3b3JraW5n
Q29udGV4dC5oCShyZXZpc2lvbiAyMDcwMzkpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTIy
LDggKzIyLDcgQEAKICAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KICAqLwotI2lmbmRlZiBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0X2gKLSNkZWZp
bmUgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dF9oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUg
PFdlYkNvcmUvRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oPgogCkBAIC0zNCw3ICszMyw3IEBAIHB1
YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJGcmFtZU5ldHdvcmtpbmdDb250
ZXh0KGZyYW1lKSk7CiAgICAgfQogCi0jaWYgVVNFKENGTkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxD
T05ORUNUSU9OKQogICAgIHN0YXRpYyB2b2lkIHNldENvb2tpZUFjY2VwdFBvbGljeUZvckFsbENv
bnRleHRzKFdlYktpdENvb2tpZVN0b3JhZ2VBY2NlcHRQb2xpY3kpOwogI2VuZGlmCiAgICAgc3Rh
dGljIHZvaWQgc2V0UHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb25JZGVudGlmaWVyQmFzZShj
b25zdCBTdHJpbmcmKTsKQEAgLTUwLDUgKzQ5LDMgQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yIGJsb2NrZWRFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
KSBjb25zdCBvdmVycmlkZTsKICAgICBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHN0
b3JhZ2VTZXNzaW9uKCkgY29uc3Qgb3ZlcnJpZGU7CiB9OwotCi0jZW5kaWYKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1T
dHJhdGVnaWVzLmNwcAkocmV2aXNpb24gMjA3MDM5KQorKysgU291cmNlL1dlYktpdC93aW4vV2Vi
Q29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzMsNyArMzMsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZS5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvUGFnZUdyb3VwLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybUNvb2tpZUphci5oPgot
I2lmIFVTRShDRk5FVFdPUkspCisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKICNpbmNsdWRlIDxX
ZWJLaXRTeXN0ZW1JbnRlcmZhY2UvV2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+CiAjZW5kaWYKIApJ
bmRleDogU291cmNlL2NtYWtlL09wdGlvbnNBcHBsZVdpbi5jbWFrZQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvY21ha2UvT3B0aW9uc0FwcGxlV2luLmNtYWtlCShyZXZpc2lvbiAyMDcwMzkpCisrKyBT
b3VyY2UvY21ha2UvT3B0aW9uc0FwcGxlV2luLmNtYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0yLDcg
KzIsNyBAQCBpbmNsdWRlKE9wdGlvbnNXaW4pCiAKIHNldChVU0VfQ0cgMSkKIHNldChVU0VfQ0Eg
MSkKLXNldChVU0VfQ0ZORVRXT1JLIDEpCitzZXQoVVNFX0NGVVJMQ09OTkVDVElPTiAxKQogc2V0
KFVTRV9JQ1VfVU5JQ09ERSAxKQogCiAjIFVuY29tbWVudCB0aGUgZm9sbG93aW5nIGxpbmUgdG8g
dHJ5IHRoZSBEaXJlY3QyRCBiYWNrZW5kLgpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjA3MDM5KQorKysgVG9vbHMvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTYtMTAtMTAgIEFsZXggQ2hy
aXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZW1vdmUgZGVh
ZCBuZXR3b3JraW5nIGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE2MzI2MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUuaDoKKyAgICAgICAgKiBE
dW1wUmVuZGVyVHJlZS9jb25maWcuaDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93aW4vRHVt
cFJlbmRlclRyZWUuY3BwOgorICAgICAgICAobWFpbik6CisKIDIwMTYtMTAtMTAgIENvbW1pdCBR
dWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJv
bGxpbmcgb3V0IHIyMDY5NzIuCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVy
VHJlZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVl
LmgJKHJldmlzaW9uIDIwNzAzOSkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJU
cmVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDEzICsyNiw3IEBACiAgKiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICov
CiAKLSNpZm5kZWYgRHVtcFJlbmRlclRyZWVfaAotI2RlZmluZSBEdW1wUmVuZGVyVHJlZV9oCi0K
LS8vIEZJWE1FOiBSZW1vdmUgdGhpcyB3aGVuIGFsbCBwbGF0Zm9ybXMgYXJlIHVzaW5nIGNvbmZp
Zy5oCi0jaWZuZGVmIENvbmZpZ19ICi0jaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+Ci0jZW5kaWYK
KyNwcmFnbWEgb25jZQogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAjaW5jbHVkZSAiRHVtcFJlbmRl
clRyZWVNYWMuaCIKQEAgLTQ1LDYgKzM5LDcgQEAKICNlbmRpZgogCiAjaW5jbHVkZSA8c3RyaW5n
PgorI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAog
I2lmICFPUyhPUEVOQlNEKQpAQCAtNzEsNSArNjYsMyBAQCBzdHJ1Y3QgVGVzdENvbW1hbmQgewog
fTsKIAogVGVzdENvbW1hbmQgcGFyc2VJbnB1dExpbmUoY29uc3Qgc3RkOjpzdHJpbmcmKTsKLQot
I2VuZGlmIC8vIER1bXBSZW5kZXJUcmVlX2gKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nv
bmZpZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2NvbmZpZy5oCShyZXZp
c2lvbiAyMDcwMzkpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9jb25maWcuaAkod29ya2luZyBj
b3B5KQpAQCAtMTgsNyArMTgsNyBAQAogICoKICAqLwogCi0jZGVmaW5lIENvbmZpZ19ICisjcHJh
Z21hIG9uY2UKIAogI2lmIGRlZmluZWQoSEFWRV9DT05GSUdfSCkgJiYgSEFWRV9DT05GSUdfSCAm
JiBkZWZpbmVkKEJVSUxESU5HX1dJVEhfQ01BS0UpCiAjaW5jbHVkZSAiY21ha2Vjb25maWcuaCIK
QEAgLTQ0LDcgKzQ0LDcgQEAKICNkZWZpbmUgVVNFX0NVUkwgMQogI2Vsc2UKICNkZWZpbmUgVVNF
X0NHIDEKLSNkZWZpbmUgVVNFX0NGTkVUV09SSyAxCisjZGVmaW5lIFVTRV9DRlVSTENPTk5FQ1RJ
T04gMQogI2VuZGlmCiAKICN1bmRlZiBfV0lOMzJfV0lOTlQKSW5kZXg6IFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJl
bmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNwcAkocmV2aXNpb24gMjA3MDM5KQorKysgVG9v
bHMvRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNjEsNyArNjEsNyBAQAogI2luY2x1ZGUgPFdlYktpdC9XZWJLaXQuaD4KICNpbmNsdWRlIDxX
ZWJLaXQvV2ViS2l0Q09NQVBJLmg+CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQorI2lmIFVTRShDRlVS
TENPTk5FQ1RJT04pCiAjaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGSFRUUENvb2tpZXNQcml2Lmg+CiAj
aW5jbHVkZSA8Q0ZOZXR3b3JrL0NGVVJMQ2FjaGVQcml2Lmg+CiAjZW5kaWYKQEAgLTEyODcsNyAr
MTI4Nyw3IEBAIElXZWJWaWV3KiBjcmVhdGVXZWJWaWV3QW5kT2Zmc2NyZWVuV2luZG8KICAgICBy
ZXR1cm4gd2ViVmlldzsKIH0KIAotI2lmIFVTRShDRk5FVFdPUkspCisjaWYgVVNFKENGVVJMQ09O
TkVDVElPTikKIFJldGFpblB0cjxDRlVSTENhY2hlUmVmPiBzaGFyZWRDRlVSTENhY2hlKCkKIHsK
ICNpZm5kZWYgREVCVUdfQUxMCkBAIC0xNDY1LDcgKzE0NjUsNyBAQCBpbnQgbWFpbihpbnQgYXJn
YywgY29uc3QgY2hhciogYXJndltdKQogICAgIGlmIChGQUlMRUQod2ViVmlldy0+bWFpbkZyYW1l
KCZmcmFtZSkpKQogICAgICAgICByZXR1cm4gLTc7CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQorI2lm
IFVTRShDRlVSTENPTk5FQ1RJT04pCiAgICAgUmV0YWluUHRyPENGVVJMQ2FjaGVSZWY+IHVybENh
Y2hlID0gc2hhcmVkQ0ZVUkxDYWNoZSgpOwogICAgIENGVVJMQ2FjaGVSZW1vdmVBbGxDYWNoZWRS
ZXNwb25zZXModXJsQ2FjaGUuZ2V0KCkpOwogI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>291259</attachid>
            <date>2016-10-11 08:24:02 -0700</date>
            <delta_ts>2016-10-11 09:40:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-163263-20161011082040.patch</filename>
            <type>text/plain</type>
            <size>192550</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDIwNzAz
OSkKKysrIENoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDE2LTEw
LTEwICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgUmVtb3ZlIGRlYWQgbmV0d29ya2luZyBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjMyNjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFNvdXJjZS9jbWFrZS9PcHRpb25zQXBwbGVXaW4uY21h
a2U6CisKIDIwMTYtMTAtMTAgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3Jn
PgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyMDY5NzIuCkluZGV4OiBTb3Vy
Y2UvV1RGL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL0NoYW5nZUxvZwkocmV2
aXNpb24gMjA3MDM5KQorKysgU291cmNlL1dURi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwxNCBAQAorMjAxNi0xMC0xMCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNl
bkB3ZWJraXQub3JnPgorCisgICAgICAgIFJlbW92ZSBkZWFkIG5ldHdvcmtpbmcgY29kZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzMjYzCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvUGxhdGZv
cm0uaDoKKyAgICAgICAgKiB3dGYvU2NoZWR1bGVQYWlyLmg6CisgICAgICAgICogd3RmL1NjaGVk
dWxlUGFpck1hYy5tbToKKwogMjAxNi0xMC0xMCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVh
QGdtYWlsLmNvbT4KIAogICAgICAgICBbRE9NSklUXSBJbXBsZW1lbnQgTm9kZSBhY2Nlc3NvcnMg
aW4gRE9NSklUCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgJKHJldmlzaW9uIDIwNzAzOSkKKysrIFNvdXJjZS9X
VEYvd3RmL1BsYXRmb3JtLmgJKHdvcmtpbmcgY29weSkKQEAgLTU1OSwxMCArNTU5LDYgQEAKIAog
I2lmIFBMQVRGT1JNKElPUykKIAotI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspICYmIF9fSVBI
T05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTAwMDAwCi0jZGVmaW5lIFVTRV9DRk5FVFdP
UksgMQotI2VuZGlmCi0KICNkZWZpbmUgSEFWRV9ORVRXT1JLX0VYVEVOU0lPTiAxCiAjZGVmaW5l
IEhBVkVfUkVBRExJTkUgMQogI2RlZmluZSBVU0VfVUlLSVRfRURJVElORyAxCkBAIC01OTIsMTAg
KzU4OCwxMCBAQAogI2VuZGlmCiAKICNpZiBQTEFURk9STShXSU4pICYmICFVU0UoV0lOR0RJKSAm
JiAhUExBVEZPUk0oV0lOX0NBSVJPKQotI2RlZmluZSBVU0VfQ0ZORVRXT1JLIDEKKyNkZWZpbmUg
VVNFX0NGVVJMQ09OTkVDVElPTiAxCiAjZW5kaWYKIAotI2lmIFVTRShDRk5FVFdPUkspIHx8IFBM
QVRGT1JNKENPQ09BKQorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pIHx8IFBMQVRGT1JNKENPQ09B
KQogI2RlZmluZSBVU0VfQ0ZVUkxDQUNIRSAxCiAjZW5kaWYKIApAQCAtOTUxLDkgKzk0Nyw2IEBA
CiAjZGVmaW5lIFVTRV9QUk9URUNUSU9OX1NQQUNFX0FVVEhfQ0FMTEJBQ0sgMQogI2VuZGlmCiAK
LS8qIFNldCB1cCBhIGRlZmluZSBmb3IgYSBjb21tb24gZXJyb3IgdGhhdCBpcyBpbnRlbmRlZCB0
byBjYXVzZSBhIGJ1aWxkIGVycm9yIC0tIHRodXMgdGhlIHNwYWNlIGFmdGVyIEVycm9yLiAqLwot
I2RlZmluZSBXVEZfUExBVEZPUk1fQ0ZORVRXT1JLIEVycm9yIFVTRV9tYWNyb19zaG91bGRfYmVf
dXNlZF93aXRoX0NGTkVUV09SSwotCiAjaWYgUExBVEZPUk0oQ09DT0EpICYmIEhBVkUoQUNDRVNT
SUJJTElUWSkKICNkZWZpbmUgVVNFX0FDQ0VTU0lCSUxJVFlfQ09OVEVYVF9NRU5VUyAxCiAjZW5k
aWYKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1NjaGVkdWxlUGFpci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XVEYvd3RmL1NjaGVkdWxlUGFpci5oCShyZXZpc2lvbiAyMDcwMzkpCisrKyBTb3VyY2Uv
V1RGL3d0Zi9TY2hlZHVsZVBhaXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQAog
I2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KIAotI2lmIFBMQVRGT1JNKENPQ09BKSAmJiAhVVNFKENGTkVUV09SSykKKyNpZiBQ
TEFURk9STShDT0NPQSkKIE9CSkNfQ0xBU1MgTlNSdW5Mb29wOwogI2VuZGlmCiAKQEAgLTQ1LDcg
KzQ1LDcgQEAgY2xhc3MgU2NoZWR1bGVQYWlyIDogcHVibGljIFRocmVhZFNhZmVSZQogcHVibGlj
OgogICAgIHN0YXRpYyBSZWY8U2NoZWR1bGVQYWlyPiBjcmVhdGUoQ0ZSdW5Mb29wUmVmIHJ1bkxv
b3AsIENGU3RyaW5nUmVmIG1vZGUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2NoZWR1bGVQYWly
KHJ1bkxvb3AsIG1vZGUpKTsgfQogCi0jaWYgUExBVEZPUk0oQ09DT0EpICYmICFVU0UoQ0ZORVRX
T1JLKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHN0YXRpYyBSZWY8U2NoZWR1bGVQYWlyPiBj
cmVhdGUoTlNSdW5Mb29wKiBydW5Mb29wLCBDRlN0cmluZ1JlZiBtb2RlKSB7IHJldHVybiBhZG9w
dFJlZigqbmV3IFNjaGVkdWxlUGFpcihydW5Mb29wLCBtb2RlKSk7IH0KICAgICBOU1J1bkxvb3Aq
IG5zUnVuTG9vcCgpIGNvbnN0IHsgcmV0dXJuIG1fbnNSdW5Mb29wLmdldCgpOyB9CiAjZW5kaWYK
QEAgLTYzLDcgKzYzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIG1fbW9kZSA9IGFkb3B0Q0Yo
Q0ZTdHJpbmdDcmVhdGVDb3B5KDAsIG1vZGUpKTsKICAgICB9CiAKLSNpZiBQTEFURk9STShDT0NP
QSkgJiYgIVVTRShDRk5FVFdPUkspCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgV1RGX0VYUE9S
VF9QUklWQVRFIFNjaGVkdWxlUGFpcihOU1J1bkxvb3AqLCBDRlN0cmluZ1JlZik7CiAgICAgUmV0
YWluUHRyPE5TUnVuTG9vcCo+IG1fbnNSdW5Mb29wOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV1RG
L3d0Zi9TY2hlZHVsZVBhaXJNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvU2No
ZWR1bGVQYWlyTWFjLm1tCShyZXZpc2lvbiAyMDcwMzkpCisrKyBTb3VyY2UvV1RGL3d0Zi9TY2hl
ZHVsZVBhaXJNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTI5LDggKzI5LDYgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJTY2hlZHVsZVBhaXIuaCIKIAotI2lmICFVU0UoQ0ZORVRX
T1JLKQotCiBuYW1lc3BhY2UgV1RGIHsKIAogU2NoZWR1bGVQYWlyOjpTY2hlZHVsZVBhaXIoTlNS
dW5Mb29wKiBydW5Mb29wLCBDRlN0cmluZ1JlZiBtb2RlKQpAQCAtNDIsNSArNDAsMyBAQCBTY2hl
ZHVsZVBhaXI6OlNjaGVkdWxlUGFpcihOU1J1bkxvb3AqIHJ1CiB9CiAKIH0gLy8gbmFtZXNwYWNl
Ci0KLSNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjA3MDM5KQorKysgU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTY3IEBACisyMDE2LTEw
LTEwICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgUmVtb3ZlIGRlYWQgbmV0d29ya2luZyBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjMyNjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUaGVyZSBhcmUgbm8gbW9yZSBDb2NvYSBwbGF0Zm9ybXMg
dXNpbmcgQ0ZVUkxDb25uZWN0aW9uLgorICAgICAgICBVU0UoQ0ZORVRXT1JLKSBpcyBiZWluZyBy
ZXBsYWNlZCBieSBVU0UoQ0ZVUkxDT05ORUNUSU9OKSBhbmQgaXQgaXMgb25seSB1c2VkIG9uIHRo
ZSBBcHBsZVdpbiBwb3J0LgorCisgICAgICAgIE5vIGNoYW5nZSBpbiBiZWhhdmlvci4KKworICAg
ICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJD
b3JlUHJlZml4Lmg6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmg6CisgICAgICAg
ICogbG9hZGVyL0VtcHR5Q2xpZW50cy5oOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlckNs
aWVudC5oOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
KToKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIv
U3VicmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvY2YvUmVzb3VyY2VMb2FkZXJD
Rk5ldC5jcHA6CisgICAgICAgICogbG9hZGVyL2NvY29hL1N1YnJlc291cmNlTG9hZGVyQ29jb2Eu
bW06CisgICAgICAgIChXZWJDb3JlOjpTdWJyZXNvdXJjZUxvYWRlcjo6d2lsbENhY2hlUmVzcG9u
c2UpOiBEZWxldGVkLgorICAgICAgICAqIGxvYWRlci9tYWMvRG9jdW1lbnRMb2FkZXJNYWMuY3Bw
OgorICAgICAgICAqIGxvYWRlci9tYWMvUmVzb3VyY2VMb2FkZXJNYWMubW06CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6d2lsbENhY2hlUmVzcG9uc2UpOiBEZWxldGVkLgorICAg
ICAgICAqIHBhZ2UvbWFjL1BhZ2VNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpwbGF0
Zm9ybUluaXRpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6YWRkU2NoZWR1bGVQYWly
KToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnJlbW92ZVNjaGVkdWxlUGFpcik6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakM6OnNob3VsZFdhaXRGb3JSZXNwb25zZVRvQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29yZU5TVVJMQXV0aGVudGljYXRpb25D
aGFsbGVuZ2VDbGllbnQ6OmNyZWF0ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXZWJD
b3JlTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUNsaWVudDo6V2ViQ29yZU5TVVJMQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2VDbGllbnQpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL21h
Yy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9O
ZXR3b3JrU3RvcmFnZVNlc3Npb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Byb3Rl
Y3Rpb25TcGFjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUHJvdGVjdGlvblNwYWNl
QmFzZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5jcHA6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlSGFuZGxlQ2xpZW50Ojp3aWxsQ2FjaGVSZXNwb25zZSk6CisgICAgICAgIChXZWJD
b3JlOjpSZXNvdXJjZUhhbmRsZUNsaWVudDo6c2hvdWxkQ2FjaGVSZXNwb25zZSk6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmg6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUludGVybmFsOjpSZXNvdXJjZUhhbmRsZUludGVybmFsKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvQXV0aGVudGljYXRpb25DRi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTo6QXV0aGVudGljYXRpb25DaGFsbGVu
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQ0YpOgorICAgICAgICAoV2ViQ29yZTo6Y29y
ZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9BdXRoZW50aWNhdGlvbkNGLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvQ29va2llSmFyQ0ZOZXQuY3BwOgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvQ3JlZGVudGlhbFN0b3JhZ2VDRk5ldC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDcmVkZW50aWFsU3RvcmFnZTo6Z2V0RnJvbVBlcnNpc3RlbnRTdG9yYWdl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNyZWRlbnRpYWxTdG9yYWdlOjpzYXZlVG9QZXJzaXN0ZW50
U3RvcmFnZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9Mb2FkZXJS
dW5Mb29wQ0YuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvTG9hZGVyUnVuTG9v
cENGLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Np
b25DRk5ldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNv
b2tpZVN0b3JhZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvUHJvdGVjdGlvblNw
YWNlQ0ZOZXQuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvUHJvdGVjdGlvblNw
YWNlQ0ZOZXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3Iu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHA6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnNob3VsZFNuaWZmQ29ubmVjdGlvblByb3BlcnR5KToKKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpjcmVhdGVDRlVSTENvbm5lY3Rpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OnN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlJl
c291cmNlSGFuZGxlOjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OnRyeUhhbmRsZVBhc3N3b3JkQmFzZWRBdXRoZW50
aWNhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRDcmVk
ZW50aWFsKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpzY2hlZHVsZSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6dW5zY2hlZHVsZSk6IERl
bGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJM
Q29ubmVjdGlvbkRlbGVnYXRlLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jl
c291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3Bl
cmF0aW9uUXVldWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDRlVSTENv
bm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZTo6c2V0dXBSZXF1ZXN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3Bl
cmF0aW9uUXVldWU6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlOjpjYW5S
ZXNwb25kVG9Qcm90ZWN0aW9uU3BhY2UpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2Yv
UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5o
OgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Lmg6CisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q6OmVuY29kaW5nUmVxdWlyZXNQbGF0Zm9ybURh
dGEpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6ZmluZENGVVJMUmVxdWVzdENvcHlDb250ZW50RGlzcG9z
aXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXlGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUGxhdGZvcm1SZXF1ZXN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVQbGF0Zm9ybUhUVFBCb2R5KToKKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVSZXNvdXJjZVJlcXVlc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0OjpzZXRTdG9yYWdlU2Vzc2lvbik6CisgICAg
ICAgIChXZWJDb3JlOjpmaW5kQ0ZVUkxSZXF1ZXN0U2V0Q29udGVudERpc3Bvc2l0aW9uRW5jb2Rp
bmdGYWxsYmFja0FycmF5RnVuY3Rpb24pOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL2NmL1Jlc291cmNlUmVzcG9uc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2U6OlJlc291cmNlUmVzcG9uc2UpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2Yv
UmVzb3VyY2VSZXNwb25zZUNGTmV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2U6OmNmVVJMUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZTo6cGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm8pOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
Y2YvU3luY2hyb25vdXNMb2FkZXJDbGllbnRDRk5ldC5jcHA6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9jZi9TeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdh
dGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJM
Q29ubmVjdGlvbkRlbGVnYXRlOjpzZXR1cFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3lu
Y2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlOjpzZXR1cENvbm5l
Y3Rpb25TY2hlZHVsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OmFkanVzdE1JTUVUeXBlSWZOZWNl
c3NhcnkpOgorICAgICAgICAoV2ViQ29yZTo6U3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJM
Q29ubmVjdGlvbkRlbGVnYXRlOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29y
ZTo6U3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlOjp3aWxs
Q2FjaGVSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpTeW5jaHJvbm91c1Jlc291cmNlSGFu
ZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OmNhblJlc3BvbmRUb1Byb3RlY3Rpb25TcGFjZSk6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9TeW5jaHJvbm91c1Jlc291cmNlSGFuZGxl
Q0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2Nv
Y29hL0NyZWRlbnRpYWxDb2NvYS5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2Ev
Q3JlZGVudGlhbENvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6Q3JlZGVudGlhbDo6Q3JlZGVu
dGlhbCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDcmVkZW50aWFsOjpjZkNyZWRlbnRp
YWwpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvUHJvdGVjdGlv
blNwYWNlQ29jb2EuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Byb3RlY3Rp
b25TcGFjZUNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6UHJvdGVjdGlvblNwYWNlOjpQcm90
ZWN0aW9uU3BhY2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UHJvdGVjdGlvblNwYWNl
OjpjZlNwYWNlKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jl
c291cmNlUmVxdWVzdENvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
Ojpuc1VSTFJlcXVlc3QpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3Vy
Y2VSZXNwb25zZUNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZTo6
cGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm8pOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZTo6bnNVUkxSZXNwb25zZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlOjpSZXNvdXJjZVJlc3BvbnNlKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL2lvcy9RdWlja0xvb2suaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2lv
cy9RdWlja0xvb2subW06CisgICAgICAgICgtW1dlYlF1aWNrTG9va0hhbmRsZUFzRGVsZWdhdGUg
aW5pdFdpdGhDb25uZWN0aW9uRGVsZWdhdGU6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYlF1
aWNrTG9va0hhbmRsZUFzRGVsZWdhdGUgY29ubmVjdGlvbjpkaWRSZWNlaXZlRGF0YUFycmF5Ol0p
OiBEZWxldGVkLgorICAgICAgICAoLVtXZWJRdWlja0xvb2tIYW5kbGVBc0RlbGVnYXRlIGNvbm5l
Y3Rpb246ZGlkUmVjZWl2ZURhdGE6bGVuZ3RoUmVjZWl2ZWQ6XSk6IERlbGV0ZWQuCisgICAgICAg
ICgtW1dlYlF1aWNrTG9va0hhbmRsZUFzRGVsZWdhdGUgY29ubmVjdGlvbkRpZEZpbmlzaExvYWRp
bmc6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYlF1aWNrTG9va0hhbmRsZUFzRGVsZWdhdGUg
Y29ubmVjdGlvbjpkaWRGYWlsV2l0aEVycm9yOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtXZWJR
dWlja0xvb2tIYW5kbGVBc0RlbGVnYXRlIGRldGFjaEhhbmRsZV0pOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6UXVpY2tMb29rSGFuZGxlOjpjcmVhdGUpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6UXVpY2tMb29rSGFuZGxlOjpjZlJlc3BvbnNlKTogRGVsZXRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL2lvcy9SZXNvdXJjZUhhbmRsZUlPUy5tbTogUmVtb3ZlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2lvcy9SZXNvdXJjZVJlcXVlc3RJT1MubW06IFJlbW92
ZWQuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvQXV0aGVudGljYXRpb25NYWMubW06
CisgICAgICAgICgtW1dlYkNvcmVBdXRoZW50aWNhdGlvbkNsaWVudEFzQ2hhbGxlbmdlU2VuZGVy
IHNldENGQ2hhbGxlbmdlOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtXZWJDb3JlQXV0aGVudGlj
YXRpb25DbGllbnRBc0NoYWxsZW5nZVNlbmRlciBjZkNoYWxsZW5nZV0pOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6Y29yZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjptYWMpOiBE
ZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL0Nvb2tpZUphck1hYy5tbToK
KyAgICAgICAgKFdlYkNvcmU6OnNldENvb2tpZXNGcm9tRE9NKToKKyAgICAgICAgKFdlYkNvcmU6
OmNvb2tpZVN0b3JhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6YWRkQ29va2llKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9DcmVkZW50aWFsU3RvcmFnZU1hYy5tbToKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9Gb3JtRGF0YVN0cmVhbU1hYy5oOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvbWFjL0Zvcm1EYXRhU3RyZWFtTWFjLm1tOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvbWFjL1Jlc291cmNlRXJyb3JNYWMubW06CisgICAgICAgIChOU0Vycm9yRnJv
bUNGRXJyb3IpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VFcnJvcjo6UmVz
b3VyY2VFcnJvcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUVycm9yOjpu
c0Vycm9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlRXJyb3I6Om9wZXJh
dG9yIE5TRXJyb3IgKik6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMv
UmVzb3VyY2VIYW5kbGVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6
Y29udGludWVXaWxsQ2FjaGVSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhh
bmRsZTo6Z2V0Q29ubmVjdGlvblRpbWluZ0RhdGEpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvbWFjL1Jlc291cmNlUmVxdWVzdE1hYy5tbTogUmVtb3ZlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9TeW5jaHJvbm91c0xvYWRlckNsaWVudC5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OlN5bmNocm9ub3VzTG9hZGVyQ2xpZW50OjpwbGF0Zm9ybUJhZFJlc3BvbnNl
RXJyb3IpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhh
bmRsZUFzRGVsZWdhdGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3Jl
UmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlLm1tOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
bWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5oOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0
aW9uUXVldWVEZWxlZ2F0ZS5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJD
b3JlVVJMUmVzcG9uc2UubW06CisgICAgICAgIChXZWJDb3JlOjpzeW50aGVzaXplUmVkaXJlY3RS
ZXNwb25zZUlmTmVjZXNzYXJ5KToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vVGVtcG9yYXJ5TGlu
a1N0dWJzLmNwcDoKKyAgICAgICAgKiB0ZXN0aW5nL2pzL1dlYkNvcmVUZXN0U3VwcG9ydFByZWZp
eC5oOgorCiAyMDE2LTEwLTEwICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAg
ICAgICAgVXBkYXRlIEdhbWVwYWRFdmVudCB0byBzdG9wIHVzaW5nIGxlZ2FjeSBbQ29uc3RydWN0
b3JUZW1wbGF0ZT1FdmVudF0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmVQcmVmaXguaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlUHJlZml4LmgJKHJldmlzaW9uIDIw
NzAzOSkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmVQcmVmaXguaAkod29ya2luZyBjb3B5KQpA
QCAtMTgsNyArMTgsNyBAQAogICoKICAqLwogCi0vKiBUaGlzIHByZWZpeCBmaWxlIHNob3VsZCBj
b250YWluIG9ubHk6IAorLyogVGhpcyBwcmVmaXggZmlsZSBzaG91bGQgY29udGFpbiBvbmx5Ogog
ICogICAgMSkgZmlsZXMgdG8gcHJlY29tcGlsZSBmb3IgZmFzdGVyIGJ1aWxkcwogICogICAgMikg
aW4gb25lIGNhc2UgYXQgbGVhc3Q6IE9TLVgtc3BlY2lmaWMgcGVyZm9ybWFuY2UgYnVnIHdvcmth
cm91bmRzCiAgKiAgICAzKSB0aGUgc3BlY2lhbCB0cmljayB0byBjYXRjaCB1cyB1c2luZyBuZXcg
b3IgZGVsZXRlIHdpdGhvdXQgaW5jbHVkaW5nICJjb25maWcuaCIKQEAgLTEzMyw4ICsxMzMsOCBA
QAogI2Vsc2UKIAogI2lmIE9TKFdJTkRPV1MpCi0jaWYgVVNFKENHKQogCisjaWYgVVNFKENHKQog
Ly8gRklYTUUgPHJkYXI6Ly9wcm9ibGVtLzgyMDg4Njg+IFJlbW92ZSBzdXBwb3J0IGZvciBvYnNv
bGV0ZSBDb2xvclN5bmMgQVBJLCBDb3JlU2VydmljZXMgaGVhZGVyIGluIENvcmVHcmFwaGljcwog
Ly8gV2UgY2FuIHJlbW92ZSB0aGlzIG9uY2UgdGhlIG5ldyBDb2xvclN5bmMgQVBJcyBhcmUgYXZh
aWxhYmxlIGluIGFuIGludGVybmFsIFNhZmFyaSBTREsuCiAjaW5jbHVkZSA8Q29sb3JTeW5jL0Nv
bG9yU3luYy5oPgpAQCAtMTQzLDE5ICsxNDMsMjEgQEAKICNkZWZpbmUgT0JTT0xFVEVfQ09MT1JT
WU5DX0FQSQogI2VuZGlmCiAjZW5kaWYKLSNpZiBVU0UoQ0ZORVRXT1JLKQotLyogV2luZG93cyBk
b2Vzbid0IGluY2x1ZGUgQ0ZOZXR3b3JrLmggdmlhIENvcmVTZXJ2aWNlcy5oLCBzbyB3ZSBkbwot
ICAgaXQgZXhwbGljaXRseSBoZXJlIHRvIG1ha2UgV2luZG93cyBtb3JlIGNvbnNpc3RlbnQgd2l0
aCBNYWMuICovCisKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogI2luY2x1ZGUgPENGTmV0d29y
ay9DRk5ldHdvcmsuaD4KIC8vIE9uIFdpbmRvd3MsIGRpc3BhdGNoLmggbmVlZHMgdG8gYmUgaW5j
bHVkZWQgYmVmb3JlIGNlcnRhaW4gQ0ZOZXR3b3JrIGhlYWRlcnMuCiAjaW5jbHVkZSA8ZGlzcGF0
Y2gvZGlzcGF0Y2guaD4KICNlbmRpZgorCiAjaW5jbHVkZSA8d2luZG93cy5oPgotI2Vsc2UKLSNp
ZiAhUExBVEZPUk0oSU9TKQorCisjZWxpZiAhUExBVEZPUk0oSU9TKQorCiAjaW5jbHVkZSA8Q29y
ZVNlcnZpY2VzL0NvcmVTZXJ2aWNlcy5oPgotI2VuZGlmIC8vICFQTEFURk9STShJT1MpCi0jZW5k
aWYgLy8gT1MoV0lORE9XUykKKworI2VuZGlmCisKIAogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9u
IDIwNzAzOSkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjAyMSw3ICsyMDIxLDYgQEAKIAkJNTE0Qzc2NEYwQ0U5
MjM0RTAwN0VGM0NEIC8qIEZvcm1EYXRhU3RyZWFtTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE0Qzc2NDUwQ0U5MjM0RTAwN0VGM0NEIC8qIEZv
cm1EYXRhU3RyZWFtTWFjLm1tICovOyB9OwogCQk1MTRDNzY1MDBDRTkyMzRFMDA3RUYzQ0QgLyog
UmVzb3VyY2VFcnJvck1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUxNEM3NjQ2MENFOTIzNEUwMDdFRjNDRCAvKiBSZXNvdXJjZUVycm9yTWFjLm1t
ICovOyB9OwogCQk1MTRDNzY1MTBDRTkyMzRFMDA3RUYzQ0QgLyogUmVzb3VyY2VIYW5kbGVNYWMu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTRDNzY0
NzBDRTkyMzRFMDA3RUYzQ0QgLyogUmVzb3VyY2VIYW5kbGVNYWMubW0gKi87IH07Ci0JCTUxNEM3
NjUzMENFOTIzNEUwMDdFRjNDRCAvKiBSZXNvdXJjZVJlcXVlc3RNYWMubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTRDNzY0OTBDRTkyMzRFMDA3RUYz
Q0QgLyogUmVzb3VyY2VSZXF1ZXN0TWFjLm1tICovOyB9OwogCQk1MTRDNzY2RDBDRTkyM0ExMDA3
RUYzQ0QgLyogQ3JlZGVudGlhbEJhc2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTE0Qzc2NTgwQ0U5MjNBMTAwN0VGM0NEIC8qIENyZWRlbnRpYWxC
YXNlLmNwcCAqLzsgfTsKIAkJNTE0Qzc2NkUwQ0U5MjNBMTAwN0VGM0NEIC8qIENyZWRlbnRpYWwu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNEM3NjU5
MENFOTIzQTEwMDdFRjNDRCAvKiBDcmVkZW50aWFsLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTE0Qzc2NkYwQ0U5MjNBMTAwN0VGM0NEIC8qIEZv
cm1EYXRhLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxNEM3NjVBMENFOTIzQTEwMDdFRjNDRCAvKiBGb3JtRGF0YS5jcHAgKi87IH07CkBAIC0yODA4
LDcgKzI4MDcsNiBAQAogCQk3RDRDOTZERDFBRDQ0ODM1MDAzNjVBNTAgLyogSlNGZXRjaEhlYWRl
cnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdENEM5
NkQ5MUFENDQ4MzUwMDM2NUE1MCAvKiBKU0ZldGNoSGVhZGVycy5oICovOyB9OwogCQk3RDc0MUJE
QTE3NzIyNkFBMDA4NTkxNzAgLyogQ1NTVmFsdWVLZXl3b3Jkcy5oIGluIENvcHkgR2VuZXJhdGVk
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU2NTgxNDgwOUQx
MzA0MzAwMEU2MUQ3IC8qIENTU1ZhbHVlS2V5d29yZHMuaCAqLzsgfTsKIAkJN0UzN0VGMkUxMzM5
MjA4ODAwQjI5MjUwIC8qIFN1YnJlc291cmNlTG9hZGVyQ0YuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0UzN0VGMkQxMzM5MjA4ODAwQjI5MjUwIC8q
IFN1YnJlc291cmNlTG9hZGVyQ0YuY3BwICovOyB9OwotCQk3RTQyOENFNTEzRTM0MDdGMDAzQjY2
MUMgLyogUmVzb3VyY2VIYW5kbGVJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3RTQyOENFNDEzRTM0MDdGMDAzQjY2MUMgLyogUmVzb3VyY2VIYW5k
bGVJT1MubW0gKi87IH07CiAJCTdFNDZGNkZBMTYyN0EyQ0EwMDA2MjIyMyAvKiBKU09FU0VsZW1l
bnRJbmRleFVpbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gN0U0NkY2RjgxNjI3QTJDOTAwMDYyMjIzIC8qIEpTT0VTRWxlbWVudEluZGV4VWludC5j
cHAgKi87IH07CiAJCTdFNDZGNkZCMTYyN0EyQ0EwMDA2MjIyMyAvKiBKU09FU0VsZW1lbnRJbmRl
eFVpbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdF
NDZGNkY5MTYyN0EyQzkwMDA2MjIyMyAvKiBKU09FU0VsZW1lbnRJbmRleFVpbnQuaCAqLzsgfTsK
IAkJN0U0NzRFMUUxMjQ5NERDOTAwMjM1MzY0IC8qIFNRTGl0ZURhdGFiYXNlVHJhY2tlckNsaWVu
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0U0NzRF
MUIxMjQ5NERDOTAwMjM1MzY0IC8qIFNRTGl0ZURhdGFiYXNlVHJhY2tlckNsaWVudC5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0yODI2LDcgKzI4
MjQsNiBAQAogCQk3RTY2RTIzNDE2RDZFQjZDMDBGN0U3RkYgLyogV2ViR0xDb21wcmVzc2VkVGV4
dHVyZUFUQy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
N0U2NkUyMzIxNkQ2RUI2QzAwRjdFN0ZGIC8qIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEMuaCAq
LzsgfTsKIAkJN0U2NkUyMzQxN0U2RUI2QzAwRjdFN0ZGIC8qIFdlYkdMQ29tcHJlc3NlZFRleHR1
cmVQVlJUQy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
N0U2NkUyMzIxN0U2RUI2QzAwRjdFN0ZGIC8qIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQy5o
ICovOyB9OwogCQk3RTdERTFGRDE5NUNFRjI2MDAzNTM2M0IgLyogUmVzb3VyY2VSZXF1ZXN0Q29j
b2EubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RTdE
RTFGQzE5NUNFRjI2MDAzNTM2M0IgLyogUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0gKi87IH07Ci0J
CTdFN0RFMjAyMTk1Q0VGQ0QwMDM1MzYzQiAvKiBSZXNvdXJjZVJlcXVlc3RJT1MubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RTdERTIwMTE5NUNFRkNE
MDAzNTM2M0IgLyogUmVzb3VyY2VSZXF1ZXN0SU9TLm1tICovOyB9OwogCQk3RThGQURDNDE5OUE5
NUIxMDA3MTQ5NjggLyogU3VicmVzb3VyY2VMb2FkZXJDb2NvYS5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFOEZBREMzMTk5QTk1QjEwMDcxNDk2OCAv
KiBTdWJyZXNvdXJjZUxvYWRlckNvY29hLm1tICovOyB9OwogCQk3RTk5QUY1MTBCMTM4NDY0NjhG
QjAxQTUgLyogV2luZG93Rm9jdXNBbGxvd2VkSW5kaWNhdG9yLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFOTlBRjUyMEIxMzg0NjQ2OEZCMDFBNSAv
KiBXaW5kb3dGb2N1c0FsbG93ZWRJbmRpY2F0b3IuY3BwICovOyB9OwogCQk3RTk5QUY1MzBCMTM4
NDY0NjhGQjAxQTUgLyogV2luZG93Rm9jdXNBbGxvd2VkSW5kaWNhdG9yLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RTk5QUY1NDBCMTM4NDY0NjhGQjAx
QTUgLyogV2luZG93Rm9jdXNBbGxvd2VkSW5kaWNhdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTI4NDcsNyArMjg0NCw2IEBACiAJCTdFRTY4
NDY5MTJEMjZFMzgwMEU3OTQxNSAvKiBMb2FkZXJSdW5Mb29wQ0YuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFRTY4NDU2MTJEMjZFMzgwMEU3OTQxNSAv
KiBMb2FkZXJSdW5Mb29wQ0YuaCAqLzsgfTsKIAkJN0VFNjg0NkExMkQyNkUzODAwRTc5NDE1IC8q
IFJlc291cmNlRXJyb3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDdFRTY4NDU3MTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZUVycm9yLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0VFNjg0NkIxMkQy
NkUzODAwRTc5NDE1IC8qIFJlc291cmNlRXJyb3JDRi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RUU2ODQ1ODEyRDI2RTM4MDBFNzk0MTUgLyogUmVz
b3VyY2VFcnJvckNGLmNwcCAqLzsgfTsKLQkJN0VFNjg0NkMxMkQyNkUzODAwRTc5NDE1IC8qIFJl
c291cmNlSGFuZGxlQ0ZOZXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gN0VFNjg0NTkxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlSGFuZGxlQ0ZO
ZXQuY3BwICovOyB9OwogCQk3RUU2ODQ2RDEyRDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VSZXF1
ZXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RUU2
ODQ1QTEyRDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VSZXF1ZXN0LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0VFNjg0NkUxMkQyNkUzODAwRTc5
NDE1IC8qIFJlc291cmNlUmVxdWVzdENGTmV0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFRTY4NDVCMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJj
ZVJlcXVlc3RDRk5ldC5jcHAgKi87IH07CiAJCTdFRTY4NDZGMTJEMjZFMzgwMEU3OTQxNSAvKiBS
ZXNvdXJjZVJlcXVlc3RDRk5ldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gN0VFNjg0NUMxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlUmVxdWVzdENG
TmV0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAg
LTkwNjIsNyArOTA1OCw2IEBACiAJCTUxNEM3NjQ1MENFOTIzNEUwMDdFRjNDRCAvKiBGb3JtRGF0
YVN0cmVhbU1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEZv
cm1EYXRhU3RyZWFtTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTRDNzY0
NjBDRTkyMzRFMDA3RUYzQ0QgLyogUmVzb3VyY2VFcnJvck1hYy5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFJlc291cmNlRXJyb3JNYWMubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTUxNEM3NjQ3MENFOTIzNEUwMDdFRjNDRCAvKiBSZXNvdXJjZUhh
bmRsZU1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFJlc291
cmNlSGFuZGxlTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MTRDNzY0OTBD
RTkyMzRFMDA3RUYzQ0QgLyogUmVzb3VyY2VSZXF1ZXN0TWFjLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gUmVzb3VyY2VSZXF1ZXN0TWFjLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1MTRDNzY1ODBDRTkyM0ExMDA3RUYzQ0QgLyogQ3JlZGVudGlh
bEJhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ3JlZGVudGlh
bEJhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTRDNzY1OTBDRTkyM0Ex
MDA3RUYzQ0QgLyogQ3JlZGVudGlhbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBDcmVkZW50aWFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNEM3NjVBMENF
OTIzQTEwMDdFRjNDRCAvKiBGb3JtRGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBGb3JtRGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05
OTQ2LDcgKzk5NDEsNiBAQAogCQk3RDRDOTZEODFBRDQ0ODM1MDAzNjVBNTAgLyogSlNGZXRjaEhl
YWRlcnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNGZXRjaEhl
YWRlcnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3RDRDOTZEOTFBRDQ0ODM1
MDAzNjVBNTAgLyogSlNGZXRjaEhlYWRlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSlNGZXRjaEhlYWRlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0Uz
N0VGMkQxMzM5MjA4ODAwQjI5MjUwIC8qIFN1YnJlc291cmNlTG9hZGVyQ0YuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3VicmVzb3VyY2VMb2FkZXJDRi5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTdFNDI4Q0U0MTNFMzQwN0YwMDNCNjYxQyAvKiBS
ZXNvdXJjZUhhbmRsZUlPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IFJlc291cmNlSGFuZGxlSU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
RTQ2RjZGODE2MjdBMkM5MDAwNjIyMjMgLyogSlNPRVNFbGVtZW50SW5kZXhVaW50LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTT0VTRWxlbWVudEluZGV4VWludC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFNDZGNkY5MTYyN0EyQzkwMDA2MjIy
MyAvKiBKU09FU0VsZW1lbnRJbmRleFVpbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSlNPRVNFbGVtZW50SW5kZXhVaW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTdFNDc0RTFCMTI0OTREQzkwMDIzNTM2NCAvKiBTUUxpdGVEYXRhYmFzZVRyYWNrZXJDbGll
bnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1FMaXRlRGF0YWJhc2VUcmFj
a2VyQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05OTY0LDcgKzk5NTgs
NiBAQAogCQk3RTY2RTIzMjE2RDZFQjZDMDBGN0U3RkYgLyogV2ViR0xDb21wcmVzc2VkVGV4dHVy
ZUFUQy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHTENvbXByZXNzZWRU
ZXh0dXJlQVRDLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFNjZFMjMyMTdFNkVC
NkMwMEY3RTdGRiAvKiBXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFN0RFMUZDMTk1Q0VGMjYwMDM1MzYzQiAvKiBSZXNv
dXJjZVJlcXVlc3RDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IFJlc291cmNlUmVxdWVzdENvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQk3RTdERTIwMTE5NUNFRkNEMDAzNTM2M0IgLyogUmVzb3VyY2VSZXF1ZXN0SU9TLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUmVzb3VyY2VSZXF1ZXN0SU9TLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3RThGQURDMzE5OUE5NUIxMDA3MTQ5Njgg
LyogU3VicmVzb3VyY2VMb2FkZXJDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IFN1YnJlc291cmNlTG9hZGVyQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTdFOTlBRjUyMEIxMzg0NjQ2OEZCMDFBNSAvKiBXaW5kb3dGb2N1c0FsbG93
ZWRJbmRpY2F0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2lu
ZG93Rm9jdXNBbGxvd2VkSW5kaWNhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJN0U5OUFGNTQwQjEzODQ2NDY4RkIwMUE1IC8qIFdpbmRvd0ZvY3VzQWxsb3dlZEluZGljYXRv
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXaW5kb3dGb2N1c0FsbG93ZWRJ
bmRpY2F0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTk5ODcsNyArOTk4MCw2
IEBACiAJCTdFRTY4NDU2MTJEMjZFMzgwMEU3OTQxNSAvKiBMb2FkZXJSdW5Mb29wQ0YuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTG9hZGVyUnVuTG9vcENGLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFRTY4NDU3MTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJj
ZUVycm9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlc291cmNlRXJyb3Iu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0VFNjg0NTgxMkQyNkUzODAwRTc5NDE1
IC8qIFJlc291cmNlRXJyb3JDRi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBSZXNvdXJjZUVycm9yQ0YuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3
RUU2ODQ1OTEyRDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZXNvdXJjZUhhbmRsZUNGTmV0LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0VFNjg0NUExMkQyNkUzODAwRTc5NDE1IC8q
IFJlc291cmNlUmVxdWVzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZXNv
dXJjZVJlcXVlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0VFNjg0NUIxMkQy
NkUzODAwRTc5NDE1IC8qIFJlc291cmNlUmVxdWVzdENGTmV0LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlc291cmNlUmVxdWVzdENGTmV0LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0VFNjg0NUMxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNl
UmVxdWVzdENGTmV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlc291cmNl
UmVxdWVzdENGTmV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNjIzNCw4ICsx
NjIyNiw2IEBACiAJCQkJNDQyQUY3QTcxMDJDRERFQTAwOEZENEQzIC8qIFF1aWNrTG9vay5oICov
LAogCQkJCTQ0MkFGN0E4MTAyQ0RERUEwMDhGRDREMyAvKiBRdWlja0xvb2subW0gKi8sCiAJCQkJ
QTEwREJGNDYxOEY5MjMxNzAwMEQ3MEM2IC8qIFF1aWNrTG9va0hhbmRsZUNsaWVudC5oICovLAot
CQkJCTdFNDI4Q0U0MTNFMzQwN0YwMDNCNjYxQyAvKiBSZXNvdXJjZUhhbmRsZUlPUy5tbSAqLywK
LQkJCQk3RTdERTIwMTE5NUNFRkNEMDAzNTM2M0IgLyogUmVzb3VyY2VSZXF1ZXN0SU9TLm1tICov
LAogCQkJCTQ0QTIwREI4MEY4NDE2NkMwMEIzRTFGRSAvKiBXZWJDb3JlVVJMUmVzcG9uc2VJT1Mu
aCAqLywKIAkJCQk0NDRENEUyMTBGNzA4QjJFMDAzMTU4RTAgLyogV2ViQ29yZVVSTFJlc3BvbnNl
SU9TLm1tICovLAogCQkJKTsKQEAgLTE3MTUwLDcgKzE3MTQwLDYgQEAKIAkJCQkxQTdGQTY0NzBE
REEzQ0JBMDAyOEY4QTUgLyogTmV0d29ya1N0YXRlTm90aWZpZXJNYWMuY3BwICovLAogCQkJCTUx
NEM3NjQ2MENFOTIzNEUwMDdFRjNDRCAvKiBSZXNvdXJjZUVycm9yTWFjLm1tICovLAogCQkJCTUx
NEM3NjQ3MENFOTIzNEUwMDdFRjNDRCAvKiBSZXNvdXJjZUhhbmRsZU1hYy5tbSAqLywKLQkJCQk1
MTRDNzY0OTBDRTkyMzRFMDA3RUYzQ0QgLyogUmVzb3VyY2VSZXF1ZXN0TWFjLm1tICovLAogCQkJ
CUUxODA4MTE0MTZGQ0Y5Q0IwMEI4MEQwNyAvKiBTeW5jaHJvbm91c0xvYWRlckNsaWVudC5tbSAq
LywKIAkJCQkxRkFGQkYxNjE1QTVGQTUyMDAwODNBMjAgLyogVVRJVXRpbGl0aWVzLmggKi8sCiAJ
CQkJMUZBRkJGMTcxNUE1RkE1MjAwMDgzQTIwIC8qIFVUSVV0aWxpdGllcy5tbSAqLywKQEAgLTIx
MDEyLDcgKzIxMDAxLDYgQEAKIAkJCQkxQUY4RTFDMTEyNTY3M0UwMDAyMzBGRjcgLyogUHJveHlT
ZXJ2ZXJDRk5ldC5jcHAgKi8sCiAJCQkJN0VFNjg0NTcxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291
cmNlRXJyb3IuaCAqLywKIAkJCQk3RUU2ODQ1ODEyRDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VF
cnJvckNGLmNwcCAqLywKLQkJCQk3RUU2ODQ1OTEyRDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VI
YW5kbGVDRk5ldC5jcHAgKi8sCiAJCQkJMjZGQUU0QzgxODUyRTNBNTAwNEM4QzQ2IC8qIFJlc291
cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuY3BwICovLAogCQkJCTI2RkFFNEM5MTg1
MkUzQTUwMDRDOEM0NiAvKiBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmgg
Ki8sCiAJCQkJMjZDMTVDRjQxODU3RTE1RDAwRjE1QzAzIC8qIFJlc291cmNlSGFuZGxlQ0ZVUkxD
b25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuY3BwICovLApAQCAtMjk5MTYsMTEg
KzI5OTA0LDkgQEAKIAkJCQk3RUU2ODQ2QjEyRDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VFcnJv
ckNGLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxNEM3NjUwMENFOTIzNEUwMDdFRjNDRCAvKiBS
ZXNvdXJjZUVycm9yTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE0Qzc2NzgwQ0U5MjNBMTAw
N0VGM0NEIC8qIFJlc291cmNlSGFuZGxlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTdFRTY4NDZD
MTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZUhhbmRsZUNGTmV0LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTI2RkFFNENDMTg1MkUzQTUwMDRDOEM0NiAvKiBSZXNvdXJjZUhhbmRsZUNGVVJMQ29u
bmVjdGlvbkRlbGVnYXRlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTI2QzE1Q0Y2MTg1N0UxNUQw
MEYxNUMwMyAvKiBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJh
dGlvblF1ZXVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxQkEwMDMxMTZGQjkyQUMwMEJBN0Ez
NSAvKiBSZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk3RTQyOENF
NTEzRTM0MDdGMDAzQjY2MUMgLyogUmVzb3VyY2VIYW5kbGVJT1MubW0gaW4gU291cmNlcyAqLywK
IAkJCQk1MTRDNzY1MTBDRTkyMzRFMDA3RUYzQ0QgLyogUmVzb3VyY2VIYW5kbGVNYWMubW0gaW4g
U291cmNlcyAqLywKIAkJCQk5M0UyMjdFMzBBRjU4OUFEMDBENDgzMjQgLyogUmVzb3VyY2VMb2Fk
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0VFNjg0NzUxMkQyNkU3MDAwRTc5NDE1IC8qIFJl
c291cmNlTG9hZGVyQ0ZOZXQuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yOTkzMyw4ICsyOTkxOSw2
IEBACiAJCQkJNTE0Qzc2N0MwQ0U5MjNBMTAwN0VGM0NEIC8qIFJlc291cmNlUmVxdWVzdEJhc2Uu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0VFNjg0NkUxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291
cmNlUmVxdWVzdENGTmV0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdFN0RFMUZEMTk1Q0VGMjYw
MDM1MzYzQiAvKiBSZXNvdXJjZVJlcXVlc3RDb2NvYS5tbSBpbiBTb3VyY2VzICovLAotCQkJCTdF
N0RFMjAyMTk1Q0VGQ0QwMDM1MzYzQiAvKiBSZXNvdXJjZVJlcXVlc3RJT1MubW0gaW4gU291cmNl
cyAqLywKLQkJCQk1MTRDNzY1MzBDRTkyMzRFMDA3RUYzQ0QgLyogUmVzb3VyY2VSZXF1ZXN0TWFj
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE0Qzc2N0UwQ0U5MjNBMTAwN0VGM0NEIC8qIFJlc291
cmNlUmVzcG9uc2VCYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdFRTY4NDcxMTJEMjZFMzgw
MEU3OTQxNSAvKiBSZXNvdXJjZVJlc3BvbnNlQ0ZOZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QTFGNzhEMEMxQzI1NDI0QzAwMjQ1NDQ2IC8qIFJlc291cmNlUmVzcG9uc2VDb2NvYS5tbSBpbiBT
b3VyY2VzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgJKHJl
dmlzaW9uIDIwNzAzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC01NSw3ICs1NSw3IEBACiAjaW5jbHVkZSAiUXVpY2tMb29rLmgi
CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKENPQ09BKSAmJiAhVVNFKENGTkVUV09SSykKKyNpZiBQ
TEFURk9STShDT0NPQSkKICNpbmNsdWRlIDx3dGYvU2NoZWR1bGVQYWlyLmg+CiAjZW5kaWYKIApA
QCAtMTQ1LDcgKzE0NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBzZXRUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJik7CiAgICAgICAg
IGNvbnN0IFN0cmluZyYgb3ZlcnJpZGVFbmNvZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fb3ZlcnJp
ZGVFbmNvZGluZzsgfQogCi0jaWYgUExBVEZPUk0oQ09DT0EpICYmICFVU0UoQ0ZORVRXT1JLKQor
I2lmIFBMQVRGT1JNKENPQ09BKQogICAgICAgICB2b2lkIHNjaGVkdWxlKFNjaGVkdWxlUGFpciYp
OwogICAgICAgICB2b2lkIHVuc2NoZWR1bGUoU2NoZWR1bGVQYWlyJik7CiAjZW5kaWYKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgJKHJldmlzaW9uIDIwNzAzOSkKKysrIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAkod29ya2luZyBjb3B5KQpAQCAtNDAz
LDcgKzQwMyw3IEBAIHB1YmxpYzoKICAgICBSZW1vdGVBWE9iamVjdFJlZiBhY2Nlc3NpYmlsaXR5
UmVtb3RlT2JqZWN0KCkgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQogICAgIE5TQ2FjaGVk
VVJMUmVzcG9uc2UqIHdpbGxDYWNoZVJlc3BvbnNlKERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQg
bG9uZywgTlNDYWNoZWRVUkxSZXNwb25zZSogcmVzcG9uc2UpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIHJlc3BvbnNlOyB9CiAjZW5kaWYKLSNpZiBQTEFURk9STShXSU4pICYmIFVTRShDRk5FVFdP
UkspCisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKICAgICAvLyBGSVhNRTogV2luZG93cyBzaG91
bGQgdXNlIHdpbGxDYWNoZVJlc3BvbnNlIC0gPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD01NzI1Nz4uCiAgICAgYm9vbCBzaG91bGRDYWNoZVJlc3BvbnNlKERvY3VtZW50
TG9hZGVyKiwgdW5zaWduZWQgbG9uZywgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IHVu
c2lnbmVkIGNoYXIqLCB1bnNpZ25lZCBsb25nIGxvbmcpIG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7
IH0KICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50
LmgJKHJldmlzaW9uIDIwNzAzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOTcsNyArMjk3LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgICAgICB2aXJ0dWFsIE5TQ2FjaGVkVVJMUmVzcG9uc2UqIHdpbGxDYWNoZVJl
c3BvbnNlKERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBOU0NhY2hl
ZFVSTFJlc3BvbnNlKikgY29uc3QgPSAwOwogICAgICAgICB2aXJ0dWFsIE5TRGljdGlvbmFyeSAq
ZGF0YURldGVjdGlvbkNvbnRleHQoKSB7IHJldHVybiBudWxscHRyOyB9CiAjZW5kaWYKLSNpZiBQ
TEFURk9STShXSU4pICYmIFVTRShDRk5FVFdPUkspCisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikK
ICAgICAgICAgLy8gRklYTUU6IFdpbmRvd3Mgc2hvdWxkIHVzZSB3aWxsQ2FjaGVSZXNwb25zZSAt
IDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTcyNTc+LgogICAgICAg
ICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2FjaGVSZXNwb25zZShEb2N1bWVudExvYWRlciosIHVuc2ln
bmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IHVuc2ln
bmVkIGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxvbmcgbG9uZyBsZW5ndGgpID0gMDsKICNlbmRpZgpJ
bmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiAy
MDcwMzkpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC03MTMsMTQgKzcxMyw4IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJl
Y2VpdmVBdXRoZW50aWMKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KLSAg
ICAvLyBPbmx5IHRoZXNlIHBsYXRmb3JtcyBwcm92aWRlIGEgd2F5IHRvIGNvbnRpbnVlIHdpdGhv
dXQgY3JlZGVudGlhbHMuCi0gICAgLy8gSWYgd2UgY2FuJ3QgY29udGludWUgd2l0aCBjcmVkZW50
aWFscywgd2UgbmVlZCB0byBjYW5jZWwgdGhlIGxvYWQgYWx0b2dldGhlci4KLSNpZiBQTEFURk9S
TShDT0NPQSkgfHwgVVNFKENGTkVUV09SSykgfHwgVVNFKENVUkwpIHx8IFBMQVRGT1JNKEdUSykg
fHwgUExBVEZPUk0oRUZMKQogICAgIGNoYWxsZW5nZS5hdXRoZW50aWNhdGlvbkNsaWVudCgpLT5y
ZWNlaXZlZFJlcXVlc3RUb0NvbnRpbnVlV2l0aG91dENyZWRlbnRpYWwoY2hhbGxlbmdlKTsKICAg
ICBBU1NFUlQoIW1faGFuZGxlIHx8ICFtX2hhbmRsZS0+aGFzQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UoKSk7Ci0jZWxzZQotICAgIGRpZEZhaWwoYmxvY2tlZEVycm9yKCkpOwotI2VuZGlmCiB9CiAK
ICNpZiBVU0UoUFJPVEVDVElPTl9TUEFDRV9BVVRIX0NBTExCQUNLKQpAQCAtNzQ3LDcgKzc0MSw3
IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OnJlY2VpdmVkQ2FuY2VsbGF0aW8KICAgICBjYW5jZWwo
KTsKIH0KIAotI2lmIFBMQVRGT1JNKENPQ09BKSAmJiAhVVNFKENGTkVUV09SSykKKyNpZiBQTEFU
Rk9STShDT0NPQSkKIAogdm9pZCBSZXNvdXJjZUxvYWRlcjo6c2NoZWR1bGUoU2NoZWR1bGVQYWly
JiBwYWlyKQogewpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmgJKHJl
dmlzaW9uIDIwNzAzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xNDMsNyArMTQzLDcgQEAgcHVibGljOgogCiAgICAgY29uc3Qg
TG9hZFRpbWluZyYgbG9hZFRpbWluZygpIHsgcmV0dXJuIG1fbG9hZFRpbWluZzsgfQogCi0jaWYg
UExBVEZPUk0oQ09DT0EpICYmICFVU0UoQ0ZORVRXT1JLKQorI2lmIFBMQVRGT1JNKENPQ09BKQog
ICAgIHZvaWQgc2NoZWR1bGUoV1RGOjpTY2hlZHVsZVBhaXImKTsKICAgICB2b2lkIHVuc2NoZWR1
bGUoV1RGOjpTY2hlZHVsZVBhaXImKTsKICNlbmRpZgpAQCAtMTYzLDEyICsxNjMsOSBAQCBwcm90
ZWN0ZWQ6CiAKICAgICBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMoKSB7IHJl
dHVybiBtX29wdGlvbnM7IH0KIAotI2lmIFBMQVRGT1JNKENPQ09BKSAmJiAhVVNFKENGTkVUV09S
SykKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICBOU0NhY2hlZFVSTFJlc3BvbnNlKiB3aWxsQ2Fj
aGVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSosIE5TQ2FjaGVkVVJMUmVzcG9uc2UqKSBvdmVycmlk
ZTsKICNlbmRpZgotI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBVU0UoQ0ZORVRXT1JLKQotICAgIENG
Q2FjaGVkVVJMUmVzcG9uc2VSZWYgd2lsbENhY2hlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqLCBD
RkNhY2hlZFVSTFJlc3BvbnNlUmVmKSBvdmVycmlkZTsKLSNlbmRpZgogCiAgICAgdmlydHVhbCB2
b2lkIHdpbGxTZW5kUmVxdWVzdEludGVybmFsKFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpOwogCkBAIC0yMDgsNyArMjA1LDcgQEAgcHJp
dmF0ZToKICNpZiBQTEFURk9STShJT1MpCiAgICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4g
Y29ubmVjdGlvblByb3BlcnRpZXMoUmVzb3VyY2VIYW5kbGUqKSBvdmVycmlkZTsKICNlbmRpZgot
I2lmIFBMQVRGT1JNKFdJTikgJiYgVVNFKENGTkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNU
SU9OKQogICAgIC8vIEZJWE1FOiBXaW5kb3dzIHNob3VsZCB1c2Ugd2lsbENhY2hlUmVzcG9uc2Ug
LSA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU3MjU3Pi4KICAgICBi
b29sIHNob3VsZENhY2hlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqLCBDRkNhY2hlZFVSTFJlc3Bv
bnNlUmVmKSBvdmVycmlkZTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1
YnJlc291cmNlTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1
YnJlc291cmNlTG9hZGVyLmgJKHJldmlzaW9uIDIwNzAzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9TdWJyZXNvdXJjZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC03NCwxMiArNzQsOSBA
QCBwcml2YXRlOgogICAgIHZvaWQgd2lsbENhbmNlbChjb25zdCBSZXNvdXJjZUVycm9yJikgb3Zl
cnJpZGU7CiAgICAgdm9pZCBkaWRDYW5jZWwoY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRl
OwogCi0jaWYgUExBVEZPUk0oQ09DT0EpICYmICFVU0UoQ0ZORVRXT1JLKQorI2lmIFBMQVRGT1JN
KENPQ09BKQogICAgIE5TQ2FjaGVkVVJMUmVzcG9uc2UgKndpbGxDYWNoZVJlc3BvbnNlKFJlc291
cmNlSGFuZGxlKiwgTlNDYWNoZWRVUkxSZXNwb25zZSopIG92ZXJyaWRlOwogI2VuZGlmCi0jaWYg
UExBVEZPUk0oQ09DT0EpICYmIFVTRShDRk5FVFdPUkspCi0gICAgQ0ZDYWNoZWRVUkxSZXNwb25z
ZVJlZiB3aWxsQ2FjaGVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSosIENGQ2FjaGVkVVJMUmVzcG9u
c2VSZWYpIG92ZXJyaWRlOwotI2VuZGlmCiAKICNpZiBVU0UoTkVUV09SS19DRkRBVEFfQVJSQVlf
Q0FMTEJBQ0spCiAgICAgYm9vbCBzdXBwb3J0c0RhdGFBcnJheSgpIG92ZXJyaWRlIHsgcmV0dXJu
IHRydWU7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jZi9SZXNvdXJjZUxvYWRlckNG
TmV0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2YvUmVzb3VyY2VM
b2FkZXJDRk5ldC5jcHAJKHJldmlzaW9uIDIwNzAzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jZi9SZXNvdXJjZUxvYWRlckNGTmV0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsMTUgKzI2
LDEzIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkZXIuaCIK
IAotI2lmIFVTRShDRk5FVFdPUkspCisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKIAogI2luY2x1
ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi0jaWYgUExBVEZPUk0oV0lOKQotCiBib29sIFJlc291cmNlTG9h
ZGVyOjpzaG91bGRDYWNoZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlKiwgQ0ZDYWNoZWRVUkxSZXNw
b25zZVJlZiBjYWNoZWRSZXNwb25zZSkKIHsKICAgICBpZiAobV9vcHRpb25zLnNlbmRMb2FkQ2Fs
bGJhY2tzID09IERvTm90U2VuZENhbGxiYWNrcykKQEAgLTQ1LDggKzQzLDYgQEAgYm9vbCBSZXNv
dXJjZUxvYWRlcjo6c2hvdWxkQ2FjaGVSZXNwb25zZQogICAgIHJldHVybiBmcmFtZUxvYWRlcigp
LT5jbGllbnQoKS5zaG91bGRDYWNoZVJlc3BvbnNlKGRvY3VtZW50TG9hZGVyKCksIGlkZW50aWZp
ZXIoKSwgcmVzcG9uc2UsIENGRGF0YUdldEJ5dGVQdHIoZGF0YSksIENGRGF0YUdldExlbmd0aChk
YXRhKSk7CiB9CiAKLSNlbmRpZgotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZiAv
LyBVU0UoQ0ZORVRXT1JLKQorI2VuZGlmIC8vIFVTRShDRlVSTENPTk5FQ1RJT04pCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvU3VicmVzb3VyY2VMb2FkZXJDb2NvYS5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvU3VicmVzb3VyY2VMb2FkZXJD
b2NvYS5tbQkocmV2aXNpb24gMjA3MDM5KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29h
L1N1YnJlc291cmNlTG9hZGVyQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTM1LDE4ICszNSw2
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotI2lmIFVTRShDRk5FVFdPUkspCi0KLUNGQ2Fj
aGVkVVJMUmVzcG9uc2VSZWYgU3VicmVzb3VyY2VMb2FkZXI6OndpbGxDYWNoZVJlc3BvbnNlKFJl
c291cmNlSGFuZGxlKiBoYW5kbGUsIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYgY2FjaGVkUmVzcG9u
c2UpCi17Ci0gICAgRGlza0NhY2hlTW9uaXRvcjo6bW9uaXRvckZpbGVCYWNraW5nU3RvcmVDcmVh
dGlvbihyZXF1ZXN0KCksIG1fcmVzb3VyY2UtPnNlc3Npb25JRCgpLCBjYWNoZWRSZXNwb25zZSk7
Ci0gICAgaWYgKCFtX3Jlc291cmNlLT5zaG91bGRDYWNoZVJlc3BvbnNlKENGQ2FjaGVkVVJMUmVz
cG9uc2VHZXRXcmFwcGVkUmVzcG9uc2UoY2FjaGVkUmVzcG9uc2UpKSkKLSAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0gICAgcmV0dXJuIFJlc291cmNlTG9hZGVyOjp3aWxsQ2FjaGVSZXNwb25zZSho
YW5kbGUsIGNhY2hlZFJlc3BvbnNlKTsKLX0KLQotI2Vsc2UKLQogTlNDYWNoZWRVUkxSZXNwb25z
ZSogU3VicmVzb3VyY2VMb2FkZXI6OndpbGxDYWNoZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlKiBo
YW5kbGUsIE5TQ2FjaGVkVVJMUmVzcG9uc2UqIHJlc3BvbnNlKQogewogICAgIERpc2tDYWNoZU1v
bml0b3I6Om1vbml0b3JGaWxlQmFja2luZ1N0b3JlQ3JlYXRpb24ocmVxdWVzdCgpLCBtX3Jlc291
cmNlLT5zZXNzaW9uSUQoKSwgW3Jlc3BvbnNlIF9DRkNhY2hlZFVSTFJlc3BvbnNlXSk7CkBAIC01
NSw2ICs0Myw0IEBAIE5TQ2FjaGVkVVJMUmVzcG9uc2UqIFN1YnJlc291cmNlTG9hZGVyOjoKICAg
ICByZXR1cm4gUmVzb3VyY2VMb2FkZXI6OndpbGxDYWNoZVJlc3BvbnNlKGhhbmRsZSwgcmVzcG9u
c2UpOwogfQogCi0jZW5kaWYKLQogfQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL21hYy9E
b2N1bWVudExvYWRlck1hYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVy
L21hYy9Eb2N1bWVudExvYWRlck1hYy5jcHAJKHJldmlzaW9uIDIwNzAzOSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9tYWMvRG9jdW1lbnRMb2FkZXJNYWMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zMyw4ICszMyw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotI2lmICFVU0UoQ0ZORVRX
T1JLKQotCiBzdGF0aWMgdm9pZCBzY2hlZHVsZUFsbChjb25zdCBSZXNvdXJjZUxvYWRlck1hcCYg
bG9hZGVycywgU2NoZWR1bGVQYWlyJiBwYWlyKQogewogICAgIFZlY3RvcjxSZWZQdHI8UmVzb3Vy
Y2VMb2FkZXI+PiBsb2FkZXJzQ29weTsKQEAgLTY5LDYgKzY3LDQgQEAgdm9pZCBEb2N1bWVudExv
YWRlcjo6dW5zY2hlZHVsZShTY2hlZHVsZQogICAgIHVuc2NoZWR1bGVBbGwobV9tdWx0aXBhcnRT
dWJyZXNvdXJjZUxvYWRlcnMsIHBhaXIpOwogfQogCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9tYWMv
UmVzb3VyY2VMb2FkZXJNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVy
L21hYy9SZXNvdXJjZUxvYWRlck1hYy5tbQkocmV2aXNpb24gMjA3MDM5KQorKysgU291cmNlL1dl
YkNvcmUvbG9hZGVyL21hYy9SZXNvdXJjZUxvYWRlck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAt
MzYsMTkgKzM2LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0jaWYgVVNFKENGTkVUV09S
SykKLQotQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZiBSZXNvdXJjZUxvYWRlcjo6d2lsbENhY2hlUmVz
cG9uc2UoUmVzb3VyY2VIYW5kbGUqLCBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmIGNhY2hlZFJlc3Bv
bnNlKQotewotICAgIGlmIChtX29wdGlvbnMuc2VuZExvYWRDYWxsYmFja3MgPT0gRG9Ob3RTZW5k
Q2FsbGJhY2tzKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIFJldGFpblB0cjxOU0Nh
Y2hlZFVSTFJlc3BvbnNlPiBuc0NhY2hlZFJlc3BvbnNlID0gYWRvcHROUyhbW05TQ2FjaGVkVVJM
UmVzcG9uc2UgYWxsb2NdIF9pbml0V2l0aENGQ2FjaGVkVVJMUmVzcG9uc2U6Y2FjaGVkUmVzcG9u
c2VdKTsKLSAgICByZXR1cm4gW2ZyYW1lTG9hZGVyKCktPmNsaWVudCgpLndpbGxDYWNoZVJlc3Bv
bnNlKGRvY3VtZW50TG9hZGVyKCksIGlkZW50aWZpZXIoKSwgbnNDYWNoZWRSZXNwb25zZS5nZXQo
KSkgX0NGQ2FjaGVkVVJMUmVzcG9uc2VdOwotfQotCi0jZWxzZQotCiBOU0NhY2hlZFVSTFJlc3Bv
bnNlKiBSZXNvdXJjZUxvYWRlcjo6d2lsbENhY2hlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqLCBO
U0NhY2hlZFVSTFJlc3BvbnNlKiByZXNwb25zZSkKIHsKICAgICBpZiAobV9vcHRpb25zLnNlbmRM
b2FkQ2FsbGJhY2tzID09IERvTm90U2VuZENhbGxiYWNrcykKQEAgLTU2LDggKzQzLDYgQEAgTlND
YWNoZWRVUkxSZXNwb25zZSogUmVzb3VyY2VMb2FkZXI6OndpbAogICAgIHJldHVybiBmcmFtZUxv
YWRlcigpLT5jbGllbnQoKS53aWxsQ2FjaGVSZXNwb25zZShkb2N1bWVudExvYWRlcigpLCBpZGVu
dGlmaWVyKCksIHJlc3BvbnNlKTsKIH0KIAotI2VuZGlmCi0KICNpZiBVU0UoTkVUV09SS19DRkRB
VEFfQVJSQVlfQ0FMTEJBQ0spCiAKIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRh
QXJyYXkoQ0ZBcnJheVJlZiBkYXRhQXJyYXkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL21h
Yy9QYWdlTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1BhZ2VN
YWMubW0JKHJldmlzaW9uIDIwNzAzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1BhZ2VN
YWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTQ1LDExICs0NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIHZvaWQgUGFnZTo6cGxhdGZvcm1Jbml0aWFsaXplKCkKIHsKICNpZiBQTEFURk9STShJT1Mp
Ci0jaWYgVVNFKENGTkVUV09SSykKLSAgICBhZGRTY2hlZHVsZVBhaXIoU2NoZWR1bGVQYWlyOjpj
cmVhdGUoV2ViVGhyZWFkUnVuTG9vcCgpLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpKTsKLSNlbHNl
CiAgICAgYWRkU2NoZWR1bGVQYWlyKFNjaGVkdWxlUGFpcjo6Y3JlYXRlKFdlYlRocmVhZE5TUnVu
TG9vcCgpLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpKTsKLSNlbmRpZiAvLyBVU0UoQ0ZORVRXT1JL
KQogI2Vsc2UKICAgICBhZGRTY2hlZHVsZVBhaXIoU2NoZWR1bGVQYWlyOjpjcmVhdGUoW05TUnVu
TG9vcCBjdXJyZW50UnVuTG9vcF0sIGtDRlJ1bkxvb3BDb21tb25Nb2RlcykpOwogI2VuZGlmCkBA
IC02OSwxNCArNjUsMTIgQEAgdm9pZCBQYWdlOjphZGRTY2hlZHVsZVBhaXIoUmVmPFNjaGVkdWxl
UAogICAgICAgICBtX3NjaGVkdWxlZFJ1bkxvb3BQYWlycyA9IHN0ZDo6bWFrZV91bmlxdWU8U2No
ZWR1bGVQYWlySGFzaFNldD4oKTsKICAgICBtX3NjaGVkdWxlZFJ1bkxvb3BQYWlycy0+YWRkKHBh
aXIucHRyKCkpOwogCi0jaWYgIVVTRShDRk5FVFdPUkspCiAgICAgZm9yIChGcmFtZSogZnJhbWUg
PSAmbV9tYWluRnJhbWUuZ2V0KCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVy
c2VOZXh0KCkpIHsKICAgICAgICAgaWYgKERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlciA9
IGZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpKQogICAgICAgICAgICAgZG9jdW1lbnRM
b2FkZXItPnNjaGVkdWxlKHBhaXIpOwogICAgICAgICBpZiAoRG9jdW1lbnRMb2FkZXIqIGRvY3Vt
ZW50TG9hZGVyID0gZnJhbWUtPmxvYWRlcigpLnByb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIoKSkK
ICAgICAgICAgICAgIGRvY3VtZW50TG9hZGVyLT5zY2hlZHVsZShwYWlyKTsKICAgICB9Ci0jZW5k
aWYKIAogICAgIC8vIEZJWE1FOiBtYWtlIFNoYXJlZFRpbWVyTWFjIHVzZSB0aGVzZSBTY2hlZHVs
ZVBhaXJzLgogfQpAQCAtODksMTQgKzgzLDEyIEBAIHZvaWQgUGFnZTo6cmVtb3ZlU2NoZWR1bGVQ
YWlyKFJlZjxTY2hlZHUKIAogICAgIG1fc2NoZWR1bGVkUnVuTG9vcFBhaXJzLT5yZW1vdmUocGFp
ci5wdHIoKSk7CiAKLSNpZiAhVVNFKENGTkVUV09SSykKICAgICBmb3IgKEZyYW1lKiBmcmFtZSA9
ICZtX21haW5GcmFtZS5nZXQoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJz
ZU5leHQoKSkgewogICAgICAgICBpZiAoRG9jdW1lbnRMb2FkZXIqIGRvY3VtZW50TG9hZGVyID0g
ZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCkpCiAgICAgICAgICAgICBkb2N1bWVudExv
YWRlci0+dW5zY2hlZHVsZShwYWlyKTsKICAgICAgICAgaWYgKERvY3VtZW50TG9hZGVyKiBkb2N1
bWVudExvYWRlciA9IGZyYW1lLT5sb2FkZXIoKS5wcm92aXNpb25hbERvY3VtZW50TG9hZGVyKCkp
CiAgICAgICAgICAgICBkb2N1bWVudExvYWRlci0+dW5zY2hlZHVsZShwYWlyKTsKICAgICB9Ci0j
ZW5kaWYKIH0KIAogfSAvLyBuYW1lc3BhY2UKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQko
cmV2aXNpb24gMjA3MDM5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQkod29y
a2luZyBjb3B5KQpAQCAtMTA5LDEwICsxMDksNiBAQAogI2ltcG9ydCA8VmlkZW9Ub29sYm94L1Zp
ZGVvVG9vbGJveC5oPgogI2VuZGlmCiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotI2luY2x1ZGUgIkNG
TlNVUkxDb25uZWN0aW9uU1BJLmgiCi0jZW5kaWYKLQogI2ltcG9ydCAiQ29yZVZpZGVvU29mdExp
bmsuaCIKIAogbmFtZXNwYWNlIHN0ZCB7CkBAIC0zNzIsNTggKzM2OCw2IEBAIHN0YXRpYyBkaXNw
YXRjaF9xdWV1ZV90IGdsb2JhbFB1bGxEZWxlZ2EKIH0KICNlbmRpZgogCi0jaWYgVVNFKENGTkVU
V09SSykKLWNsYXNzIFdlYkNvcmVOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQ2xpZW50IDog
cHVibGljIFJlZkNvdW50ZWQ8V2ViQ29yZU5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VDbGll
bnQ+LCBwdWJsaWMgQXV0aGVudGljYXRpb25DbGllbnQgewotcHVibGljOgotICAgIHN0YXRpYyBS
ZWZQdHI8V2ViQ29yZU5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VDbGllbnQ+IGNyZWF0ZShO
U1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICpjaGFsbGVuZ2UpCi0gICAgewotICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IFdlYkNvcmVOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQ2xp
ZW50KGNoYWxsZW5nZSkpOwotICAgIH0KLQotICAgIHVzaW5nIFJlZkNvdW50ZWQ8V2ViQ29yZU5T
VVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VDbGllbnQ+OjpyZWY7Ci0gICAgdXNpbmcgUmVmQ291
bnRlZDxXZWJDb3JlTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUNsaWVudD46OmRlcmVmOwot
Ci1wcml2YXRlOgotICAgIFdlYkNvcmVOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQ2xpZW50
KE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKmNoYWxsZW5nZSkKLSAgICAgICAgOiBtX2No
YWxsZW5nZShjaGFsbGVuZ2UpCi0gICAgewotICAgICAgICBBU1NFUlQobV9jaGFsbGVuZ2UpOwot
ICAgIH0KLQotICAgIHZvaWQgcmVmQXV0aGVudGljYXRpb25DbGllbnQoKSBvdmVycmlkZSB7IHJl
ZigpOyB9Ci0gICAgdm9pZCBkZXJlZkF1dGhlbnRpY2F0aW9uQ2xpZW50KCkgb3ZlcnJpZGUgeyBk
ZXJlZigpOyB9Ci0KLSAgICB2b2lkIHJlY2VpdmVkQ3JlZGVudGlhbChjb25zdCBBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSYsIGNvbnN0IENyZWRlbnRpYWwmIGNyZWRlbnRpYWwpIG92ZXJyaWRlCi0g
ICAgewotICAgICAgICBbW21fY2hhbGxlbmdlIHNlbmRlcl0gdXNlQ3JlZGVudGlhbDpjcmVkZW50
aWFsLm5zQ3JlZGVudGlhbCgpIGZvckF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOm1fY2hhbGxlbmdl
LmdldCgpXTsKLSAgICB9Ci0KLSAgICB2b2lkIHJlY2VpdmVkUmVxdWVzdFRvQ29udGludWVXaXRo
b3V0Q3JlZGVudGlhbChjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpIG92ZXJyaWRlCi0g
ICAgewotICAgICAgICBbW21fY2hhbGxlbmdlIHNlbmRlcl0gY29udGludWVXaXRob3V0Q3JlZGVu
dGlhbEZvckF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOm1fY2hhbGxlbmdlLmdldCgpXTsKLSAgICB9
Ci0KLSAgICB2b2lkIHJlY2VpdmVkQ2FuY2VsbGF0aW9uKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlJikgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIFtbbV9jaGFsbGVuZ2Ugc2VuZGVyXSBj
YW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTptX2NoYWxsZW5nZS5nZXQoKV07Ci0gICAgfQot
Ci0gICAgdm9pZCByZWNlaXZlZFJlcXVlc3RUb1BlcmZvcm1EZWZhdWx0SGFuZGxpbmcoY29uc3Qg
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgaWYgKFtb
bV9jaGFsbGVuZ2Ugc2VuZGVyXSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHBlcmZvcm1E
ZWZhdWx0SGFuZGxpbmdGb3JBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTopXSkKLSAgICAgICAgICAg
IFtbbV9jaGFsbGVuZ2Ugc2VuZGVyXSBwZXJmb3JtRGVmYXVsdEhhbmRsaW5nRm9yQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2U6bV9jaGFsbGVuZ2UuZ2V0KCldOwotICAgIH0KLQotICAgIHZvaWQgcmVj
ZWl2ZWRDaGFsbGVuZ2VSZWplY3Rpb24oY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKSBv
dmVycmlkZQotICAgIHsKLSAgICAgICAgaWYgKFtbbV9jaGFsbGVuZ2Ugc2VuZGVyXSByZXNwb25k
c1RvU2VsZWN0b3I6QHNlbGVjdG9yKHJlamVjdFByb3RlY3Rpb25TcGFjZUFuZENvbnRpbnVlV2l0
aENoYWxsZW5nZTopXSkKLSAgICAgICAgICAgIFtbbV9jaGFsbGVuZ2Ugc2VuZGVyXSByZWplY3RQ
cm90ZWN0aW9uU3BhY2VBbmRDb250aW51ZVdpdGhDaGFsbGVuZ2U6bV9jaGFsbGVuZ2UuZ2V0KCld
OwotICAgIH0KLQotICAgIFJldGFpblB0cjxOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlPiBt
X2NoYWxsZW5nZTsKLX07Ci0jZW5kaWYKLQogdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDOjpyZWdpc3Rlck1lZGlhRW5naW5lKE1lZGlhRW5naW5lUmVnaXN0cmFyIHJlZ2lz
dHJhcikKIHsKICAgICBpZiAoIWlzQXZhaWxhYmxlKCkpCkBAIC0xNzk3LDE1ICsxNzQxLDcgQEAg
Ym9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOgogCiBib29sIE1lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNob3VsZFdhaXRGb3JSZXNwb25zZVRvQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UoTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSogbnNDaGFsbGVu
Z2UpCiB7Ci0jaWYgVVNFKENGTkVUV09SSykKLSAgICBSZWZQdHI8V2ViQ29yZU5TVVJMQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2VDbGllbnQ+IGNsaWVudCA9IFdlYkNvcmVOU1VSTEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlQ2xpZW50OjpjcmVhdGUobnNDaGFsbGVuZ2UpOwotICAgIFJldGFpblB0cjxD
RlVSTEF1dGhDaGFsbGVuZ2VSZWY+IGNmQ2hhbGxlbmdlID0gYWRvcHRDRihbbnNDaGFsbGVuZ2Ug
X2NyZWF0ZUNGQXV0aENoYWxsZW5nZV0pOwotICAgIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIGNo
YWxsZW5nZShjZkNoYWxsZW5nZS5nZXQoKSwgY2xpZW50LmdldCgpKTsKLSNlbHNlCi0gICAgQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UgY2hhbGxlbmdlKG5zQ2hhbGxlbmdlKTsKLSNlbmRpZgotCi0g
ICAgcmV0dXJuIHBsYXllcigpLT5zaG91bGRXYWl0Rm9yUmVzcG9uc2VUb0F1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlKGNoYWxsZW5nZSk7CisgICAgcmV0dXJuIHBsYXllcigpLT5zaG91bGRXYWl0Rm9y
UmVzcG9uc2VUb0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
KG5zQ2hhbGxlbmdlKSk7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQzo6ZGlkQ2FuY2VsTG9hZGluZ1JlcXVlc3QoQVZBc3NldFJlc291cmNlTG9hZGluZ1JlcXVl
c3QqIGF2UmVxdWVzdCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3Jl
U3lzdGVtSW50ZXJmYWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaAkocmV2aXNpb24gMjA3MDM5KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaAkod29ya2luZyBj
b3B5KQpAQCAtNzcsMTQgKzc3LDYgQEAgdHlwZWRlZiBzdHJ1Y3QgX05TUmVjdCBOU1JlY3Q7CiAj
aW5jbHVkZSA8Q29yZUdyYXBoaWNzL0NvcmVHcmFwaGljcy5oPgogI2VuZGlmCiAKLSNpZiBVU0Uo
Q0ZORVRXT1JLKQotdHlwZWRlZiBzdHJ1Y3QgT3BhcXVlQ0ZIVFRQQ29va2llU3RvcmFnZSogIENG
SFRUUENvb2tpZVN0b3JhZ2VSZWY7Ci10eXBlZGVmIHN0cnVjdCBfQ0ZVUkxQcm90ZWN0aW9uU3Bh
Y2UqIENGVVJMUHJvdGVjdGlvblNwYWNlUmVmOwotdHlwZWRlZiBzdHJ1Y3QgX0NGVVJMQ3JlZGVu
dGlhbCogV0tDRlVSTENyZWRlbnRpYWxSZWY7Ci10eXBlZGVmIHN0cnVjdCBfQ0ZVUkxSZXF1ZXN0
KiBDRk11dGFibGVVUkxSZXF1ZXN0UmVmOwotdHlwZWRlZiBjb25zdCBzdHJ1Y3QgX0NGVVJMUmVx
dWVzdCogQ0ZVUkxSZXF1ZXN0UmVmOwotI2VuZGlmCi0KIE9CSkNfQ0xBU1MgQVZBc3NldDsKIE9C
SkNfQ0xBU1MgQVZQbGF5ZXI7CiBPQkpDX0NMQVNTIENBTGF5ZXI7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9u
LmgJKHJldmlzaW9uIDIwNzAzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
TmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDcgQEAK
ICNpbmNsdWRlICJTZXNzaW9uSUQuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
IAotI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZORVRXT1JLKQorI2lmIFBMQVRGT1JNKENP
Q09BKSB8fCBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogI2luY2x1ZGUgIkNGTmV0d29ya1NQSS5oIgog
I2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNlbmRpZgpAQCAtNTksNyArNTksNyBAQCBwdWJs
aWM6CiAgICAgU2Vzc2lvbklEIHNlc3Npb25JRCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Vzc2lvbklE
OyB9CiAgICAgQ3JlZGVudGlhbFN0b3JhZ2UmIGNyZWRlbnRpYWxTdG9yYWdlKCkgeyByZXR1cm4g
bV9jcmVkZW50aWFsU3RvcmFnZTsgfQogCi0jaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRk5F
VFdPUkspCisjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRlVSTENPTk5FQ1RJT04pCiAgICAg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uKFNlc3Npb25JRCwgUmV0YWluUHRyPENGVVJMU3RvcmFnZVNl
c3Npb25SZWY+KTsKIAogICAgIC8vIE1heSBiZSBudWxsLCBpbiB3aGljaCBjYXNlIGEgRm91bmRh
dGlvbiBkZWZhdWx0IHNob3VsZCBiZSB1c2VkLgpAQCAtODQsNyArODQsNyBAQCBwcml2YXRlOgog
ICAgIHN0YXRpYyBIYXNoTWFwPFNlc3Npb25JRCwgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbj4+JiBnbG9iYWxTZXNzaW9uTWFwKCk7CiAgICAgU2Vzc2lvbklEIG1fc2Vzc2lv
bklEOwogCi0jaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRk5FVFdPUkspCisjaWYgUExBVEZP
Uk0oQ09DT0EpIHx8IFVTRShDRlVSTENPTk5FQ1RJT04pCiAgICAgUmV0YWluUHRyPENGVVJMU3Rv
cmFnZVNlc3Npb25SZWY+IG1fcGxhdGZvcm1TZXNzaW9uOwogI2VsaWYgVVNFKFNPVVApCiAgICAg
c3RkOjp1bmlxdWVfcHRyPFNvdXBOZXR3b3JrU2Vzc2lvbj4gbV9zZXNzaW9uOwpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Qcm90ZWN0aW9uU3BhY2UuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Byb3RlY3Rpb25TcGFjZS5oCShy
ZXZpc2lvbiAyMDcwMzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Byb3Rl
Y3Rpb25TcGFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMywxMiArMjMsMTEgQEAKICAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAogICovCiAKLSNpZm5kZWYgUHJvdGVjdGlvblNwYWNlX2gKLSNkZWZpbmUgUHJvdGVj
dGlvblNwYWNlX2gKKyNwcmFnbWEgb25jZQogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAjaW5jbHVk
ZSAiUHJvdGVjdGlvblNwYWNlQ29jb2EuaCIKLSNlbGlmIFVTRShDRk5FVFdPUkspCisjZWxpZiBV
U0UoQ0ZVUkxDT05ORUNUSU9OKQogI2luY2x1ZGUgIlByb3RlY3Rpb25TcGFjZUNGTmV0LmgiCiAj
ZWxzZQogCkBAIC01MCw1ICs0OSwzIEBAIHB1YmxpYzoKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IAogI2VuZGlmCi0KLSNlbmRpZiAvLyBQcm90ZWN0aW9uU3BhY2VfaApJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9Qcm90ZWN0aW9uU3BhY2VCYXNlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Byb3RlY3Rpb25TcGFjZUJhc2Uu
Y3BwCShyZXZpc2lvbiAyMDcwMzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1Byb3RlY3Rpb25TcGFjZUJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNywxMSArMjcsNiBA
QAogCiAjaW5jbHVkZSAiUHJvdGVjdGlvblNwYWNlLmgiCiAKLSNpZiBVU0UoQ0ZORVRXT1JLKSAm
JiAhUExBVEZPUk0oQ09DT0EpCi0jaW5jbHVkZSAiQXV0aGVudGljYXRpb25DRi5oIgotI2luY2x1
ZGUgPENGTmV0d29yay9DRlVSTFByb3RlY3Rpb25TcGFjZVByaXYuaD4KLSNlbmRpZgotCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIC8vIE5lZWQgdG8gZW5mb3JjZSBlbXB0eSwgbm9uLW51bGwgc3Ry
aW5ncyBkdWUgdG8gdGhlIHBpY2tpbmVzcyBvZiB0aGUgU3RyaW5nID09IFN0cmluZyBvcGVyYXRv
cgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJj
ZUhhbmRsZS5jcHAJKHJldmlzaW9uIDIwNzAzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTQsNyArMTU0
LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6Y2xlYXJDbGllbnQoKQogICAgIGQtPm1fY2xpZW50
ID0gbnVsbHB0cjsKIH0KIAotI2lmICFQTEFURk9STShDT0NPQSkgJiYgIVVTRShDRk5FVFdPUksp
ICYmICFVU0UoU09VUCkKKyNpZiAhUExBVEZPUk0oQ09DT0EpICYmICFVU0UoQ0ZVUkxDT05ORUNU
SU9OKSAmJiAhVVNFKFNPVVApCiAvLyBSZXNvdXJjZUhhbmRsZSBuZXZlciB1c2VzIGFzeW5jIGNs
aWVudCBjYWxscyBvbiB0aGVzZSBwbGF0Zm9ybXMgeWV0Lgogdm9pZCBSZXNvdXJjZUhhbmRsZTo6
Y29udGludWVXaWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYpCiB7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oCShyZXZp
c2lvbiAyMDcwMzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
SGFuZGxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAKICNpbmNsdWRlICJSZXNv
dXJjZUxvYWRQcmlvcml0eS5oIgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKLSNpZiBQ
TEFURk9STShDT0NPQSkgfHwgVVNFKENGTkVUV09SSykKKyNpZiBQTEFURk9STShDT0NPQSkgfHwg
VVNFKENGVVJMQ09OTkVDVElPTikKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjZW5kaWYK
IApAQCAtNjAsMTQgKzYwLDE0IEBAIHR5cGVkZWYgc3RydWN0IG9iamNfb2JqZWN0ICppZDsKICNl
bmRpZgogI2VuZGlmCiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQorI2lmIFVTRShDRlVSTENPTk5FQ1RJ
T04pCiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBfQ0ZDYWNoZWRVUkxSZXNwb25zZSogQ0ZDYWNoZWRV
UkxSZXNwb25zZVJlZjsKIHR5cGVkZWYgc3RydWN0IF9DRlVSTENvbm5lY3Rpb24qIENGVVJMQ29u
bmVjdGlvblJlZjsKIHR5cGVkZWYgaW50IENGSFRUUENvb2tpZVN0b3JhZ2VBY2NlcHRQb2xpY3k7
CiB0eXBlZGVmIHN0cnVjdCBPcGFxdWVDRkhUVFBDb29raWVTdG9yYWdlKiBDRkhUVFBDb29raWVT
dG9yYWdlUmVmOwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKENGTkVUV09S
SykKKyNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKENGVVJMQ09OTkVDVElPTikKIHR5cGVkZWYg
Y29uc3Qgc3RydWN0IF9fQ0ZVUkxTdG9yYWdlU2Vzc2lvbiogQ0ZVUkxTdG9yYWdlU2Vzc2lvblJl
ZjsKICNlbmRpZgogCkBAIC05MiwyMiArOTIsMTcgQEAgY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsK
IGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFRpbWVyOwogCi1jbGFzcyBSZXNvdXJjZUhhbmRs
ZSA6IHB1YmxpYyBSZWZDb3VudGVkPFJlc291cmNlSGFuZGxlPgotI2lmIFBMQVRGT1JNKENPQ09B
KSB8fCBVU0UoQ0ZORVRXT1JLKSB8fCBVU0UoQ1VSTCkgfHwgVVNFKFNPVVApCi0gICAgLCBwdWJs
aWMgQXV0aGVudGljYXRpb25DbGllbnQKLSNlbmRpZgotICAgIHsKK2NsYXNzIFJlc291cmNlSGFu
ZGxlIDogcHVibGljIFJlZkNvdW50ZWQ8UmVzb3VyY2VIYW5kbGU+LCBwdWJsaWMgQXV0aGVudGlj
YXRpb25DbGllbnQgewogcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8
UmVzb3VyY2VIYW5kbGU+IGNyZWF0ZShOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IFJlc291cmNl
UmVxdWVzdCYsIFJlc291cmNlSGFuZGxlQ2xpZW50KiwgYm9vbCBkZWZlcnNMb2FkaW5nLCBib29s
IHNob3VsZENvbnRlbnRTbmlmZik7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgbG9h
ZFJlc291cmNlU3luY2hyb25vdXNseShOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IFJlc291cmNl
UmVxdWVzdCYsIFN0b3JlZENyZWRlbnRpYWxzLCBSZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VSZXNw
b25zZSYsIFZlY3RvcjxjaGFyPiYgZGF0YSk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFs
IH5SZXNvdXJjZUhhbmRsZSgpOwogCi0jaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRk5FVFdP
UkspCisjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRlVSTENPTk5FQ1RJT04pCiAgICAgUmVz
b3VyY2VSZXF1ZXN0IHdpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiwgUmVzb3VyY2VS
ZXNwb25zZSYmKTsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRk5FVFdP
UkspIHx8IFVTRShDVVJMKSB8fCBVU0UoU09VUCkKICAgICBib29sIHNob3VsZFVzZUNyZWRlbnRp
YWxTdG9yYWdlKCk7CiAgICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uo
Y29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKTsKICAgICB2b2lkIHJlY2VpdmVkQ3JlZGVu
dGlhbChjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYsIGNvbnN0IENyZWRlbnRpYWwmKSBv
dmVycmlkZTsKQEAgLTExNSw5ICsxMTAsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWNlaXZlZENh
bmNlbGxhdGlvbihjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpIG92ZXJyaWRlOwogICAg
IHZvaWQgcmVjZWl2ZWRSZXF1ZXN0VG9QZXJmb3JtRGVmYXVsdEhhbmRsaW5nKGNvbnN0IEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlJikgb3ZlcnJpZGU7CiAgICAgdm9pZCByZWNlaXZlZENoYWxsZW5n
ZVJlamVjdGlvbihjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpIG92ZXJyaWRlOwotI2Vu
ZGlmCiAKLSNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKENGTkVUV09SSykKKyNpZiBQTEFURk9S
TShDT0NPQSkgfHwgVVNFKENGVVJMQ09OTkVDVElPTikKICAgICBib29sIHRyeUhhbmRsZVBhc3N3
b3JkQmFzZWRBdXRoZW50aWNhdGlvbihjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpOwog
I2VuZGlmCiAKQEAgLTEyNSw3ICsxMTksNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBjYW5BdXRoZW50
aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKGNvbnN0IFByb3RlY3Rpb25TcGFjZSYpOwogI2Vu
ZGlmCiAKLSNpZiBQTEFURk9STShDT0NPQSkgJiYgIVVTRShDRk5FVFdPUkspCisjaWYgUExBVEZP
Uk0oQ09DT0EpCiAgICAgV0VCQ09SRV9FWFBPUlQgTlNVUkxDb25uZWN0aW9uICpjb25uZWN0aW9u
KCkgY29uc3Q7CiAgICAgaWQgbWFrZURlbGVnYXRlKGJvb2wpOwogICAgIGlkIGRlbGVnYXRlKCk7
CkBAIC0xMzMsMTkgKzEyNywxNSBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICAgICAgCiAjaWYgUExB
VEZPUk0oQ09DT0EpICYmIEVOQUJMRShXRUJfVElNSU5HKQotI2lmIFVTRShDRk5FVFdPUkspCi0g
ICAgc3RhdGljIHZvaWQgZ2V0Q29ubmVjdGlvblRpbWluZ0RhdGEoQ0ZVUkxDb25uZWN0aW9uUmVm
LCBOZXR3b3JrTG9hZFRpbWluZyYpOwotI2Vsc2UKICAgICBzdGF0aWMgdm9pZCBnZXRDb25uZWN0
aW9uVGltaW5nRGF0YShOU1VSTENvbm5lY3Rpb24gKiwgTmV0d29ya0xvYWRUaW1pbmcmKTsKICNl
bmRpZgotI2VuZGlmCiAgICAgICAgIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZvaWQgc2No
ZWR1bGUoV1RGOjpTY2hlZHVsZVBhaXImKTsKICAgICB2b2lkIHVuc2NoZWR1bGUoV1RGOjpTY2hl
ZHVsZVBhaXImKTsKICNlbmRpZgogCi0jaWYgVVNFKENGTkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxD
T05ORUNUSU9OKQogICAgIENGVVJMU3RvcmFnZVNlc3Npb25SZWYgc3RvcmFnZVNlc3Npb24oKSBj
b25zdDsKICAgICBDRlVSTENvbm5lY3Rpb25SZWYgY29ubmVjdGlvbigpIGNvbnN0OwogICAgIFdF
QkNPUkVfRVhQT1JUIFJldGFpblB0cjxDRlVSTENvbm5lY3Rpb25SZWY+IHJlbGVhc2VDb25uZWN0
aW9uRm9yRG93bmxvYWQoKTsKQEAgLTIwOCwxMCArMTk4LDEwIEBAIHB1YmxpYzoKICNlbmRpZgog
CiAgICAgLy8gQ2FsbGVkIGluIHJlc3BvbnNlIHRvIFJlc291cmNlSGFuZGxlQ2xpZW50Ojp3aWxs
Q2FjaGVSZXNwb25zZUFzeW5jKCkuCi0jaWYgVVNFKENGTkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxD
T05ORUNUSU9OKQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29udGludWVXaWxsQ2FjaGVSZXNw
b25zZShDRkNhY2hlZFVSTFJlc3BvbnNlUmVmKTsKICNlbmRpZgotI2lmIFBMQVRGT1JNKENPQ09B
KSAmJiAhVVNFKENGTkVUV09SSykKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGNvbnRpbnVlV2lsbENhY2hlUmVzcG9uc2UoTlNDYWNoZWRVUkxSZXNwb25zZSAq
KTsKICNlbmRpZgogCkBAIC0yMjcsMTQgKzIxNywxMCBAQCBwdWJsaWM6CiAgICAgdXNpbmcgUmVm
Q291bnRlZDxSZXNvdXJjZUhhbmRsZT46OnJlZjsKICAgICB1c2luZyBSZWZDb3VudGVkPFJlc291
cmNlSGFuZGxlPjo6ZGVyZWY7CiAKLSNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKENGTkVUV09S
SykKKyNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKENGVVJMQ09OTkVDVElPTikKICAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgQ0ZTdHJpbmdSZWYgc3luY2hyb25vdXNMb2FkUnVuTG9vcE1vZGUo
KTsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oSU9TKSAmJiBVU0UoQ0ZORVRXT1JLKQotICAgIHN0
YXRpYyBDRk11dGFibGVEaWN0aW9uYXJ5UmVmIGNyZWF0ZVNTTFByb3BlcnRpZXNGcm9tTlNVUkxS
ZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwotI2VuZGlmCi0KICAgICB0eXBlZGVmIFJl
ZjxSZXNvdXJjZUhhbmRsZT4gKCpCdWlsdGluQ29uc3RydWN0b3IpKGNvbnN0IFJlc291cmNlUmVx
dWVzdCYgcmVxdWVzdCwgUmVzb3VyY2VIYW5kbGVDbGllbnQqIGNsaWVudCk7CiAgICAgc3RhdGlj
IHZvaWQgcmVnaXN0ZXJCdWlsdGluQ29uc3RydWN0b3IoY29uc3QgQXRvbWljU3RyaW5nJiBwcm90
b2NvbCwgQnVpbHRpbkNvbnN0cnVjdG9yKTsKIApAQCAtMjYzLDE5ICsyNDksMTkgQEAgcHJpdmF0
ZToKICAgICB2b2lkIHJlZkF1dGhlbnRpY2F0aW9uQ2xpZW50KCkgb3ZlcnJpZGUgeyByZWYoKTsg
fQogICAgIHZvaWQgZGVyZWZBdXRoZW50aWNhdGlvbkNsaWVudCgpIG92ZXJyaWRlIHsgZGVyZWYo
KTsgfQogCi0jaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRk5FVFdPUkspCisjaWYgUExBVEZP
Uk0oQ09DT0EpIHx8IFVTRShDRlVSTENPTk5FQ1RJT04pCiAgICAgZW51bSBjbGFzcyBTY2hlZHVs
aW5nQmVoYXZpb3IgeyBBc3luY2hyb25vdXMsIFN5bmNocm9ub3VzIH07CiAjZW5kaWYKIAotI2lm
IFVTRShDRk5FVFdPUkspCisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKICAgICB2b2lkIGNyZWF0
ZUNGVVJMQ29ubmVjdGlvbihib29sIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlLCBib29sIHNo
b3VsZENvbnRlbnRTbmlmZiwgU2NoZWR1bGluZ0JlaGF2aW9yLCBDRkRpY3Rpb25hcnlSZWYgY2xp
ZW50UHJvcGVydGllcyk7CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKE1BQykgJiYgIVVTRShDRk5F
VFdPUkspCisjaWYgUExBVEZPUk0oTUFDKQogICAgIHZvaWQgY3JlYXRlTlNVUkxDb25uZWN0aW9u
KGlkIGRlbGVnYXRlLCBib29sIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlLCBib29sIHNob3Vs
ZENvbnRlbnRTbmlmZiwgU2NoZWR1bGluZ0JlaGF2aW9yKTsKICNlbmRpZgogCi0jaWYgUExBVEZP
Uk0oSU9TKSAmJiAhVVNFKENGTkVUV09SSykKKyNpZiBQTEFURk9STShJT1MpCiAgICAgdm9pZCBj
cmVhdGVOU1VSTENvbm5lY3Rpb24oaWQgZGVsZWdhdGUsIGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlh
bFN0b3JhZ2UsIGJvb2wgc2hvdWxkQ29udGVudFNuaWZmLCBTY2hlZHVsaW5nQmVoYXZpb3IsIE5T
RGljdGlvbmFyeSAqY29ubmVjdGlvblByb3BlcnRpZXMpOwogI2VuZGlmCiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVD
bGllbnQuY3BwCShyZXZpc2lvbiAyMDcwMzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjIsNyAr
NjIsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlQ2xpZW50OjpjYW5BdXRoZW50aWNhCiB9CiAjZW5k
aWYKIAotI2lmIFVTRShDRk5FVFdPUkspCisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKIHZvaWQg
UmVzb3VyY2VIYW5kbGVDbGllbnQ6OndpbGxDYWNoZVJlc3BvbnNlQXN5bmMoUmVzb3VyY2VIYW5k
bGUqIGhhbmRsZSwgQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZiByZXNwb25zZSkKIHsKICAgICBoYW5k
bGUtPmNvbnRpbnVlV2lsbENhY2hlUmVzcG9uc2UocmVzcG9uc2UpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQu
aAkocmV2aXNpb24gMjA3MDM5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZUhhbmRsZUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwxMiArMjksMTIgQEAK
ICNpbmNsdWRlICJQbGF0Zm9ybUV4cG9ydE1hY3Jvcy5oIgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4K
IAotI2lmIFVTRShDRk5FVFdPUkspCisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKICNpbmNsdWRl
IDxDRk5ldHdvcmsvQ0ZVUkxDYWNoZVByaXYuaD4KICNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZVUkxS
ZXNwb25zZVByaXYuaD4KICNlbmRpZgogCi0jaWYgUExBVEZPUk0oSU9TKSB8fCBVU0UoQ0ZORVRX
T1JLKQorI2lmIFBMQVRGT1JNKElPUykgfHwgVVNFKENGVVJMQ09OTkVDVElPTikKICNpbmNsdWRl
IDx3dGYvUmV0YWluUHRyLmg+CiAjZW5kaWYKIApAQCAtOTYsNyArOTYsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBjYW5BdXRoZW50
aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlQXN5bmMoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBQ
cm90ZWN0aW9uU3BhY2UmKTsKICNlbmRpZgogICAgICAgICAvLyBDbGllbnQgd2lsbCBwYXNzIGFu
IHVwZGF0ZWQgcmVxdWVzdCB1c2luZyBSZXNvdXJjZUhhbmRsZTo6Y29udGludWVXaWxsQ2FjaGVS
ZXNwb25zZSgpIHdoZW4gcmVhZHkuCi0jaWYgVVNFKENGTkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxD
T05ORUNUSU9OKQogICAgICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgd2lsbENhY2hl
UmVzcG9uc2VBc3luYyhSZXNvdXJjZUhhbmRsZSosIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYpOwog
I2VsaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9p
ZCB3aWxsQ2FjaGVSZXNwb25zZUFzeW5jKFJlc291cmNlSGFuZGxlKiwgTlNDYWNoZWRVUkxSZXNw
b25zZSAqKTsKQEAgLTExOCwxNiArMTE4LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNlbmRp
ZgogICAgICAgICB2aXJ0dWFsIHZvaWQgcmVjZWl2ZWRDYW5jZWxsYXRpb24oUmVzb3VyY2VIYW5k
bGUqLCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpIHsgfQogCi0jaWYgUExBVEZPUk0o
SU9TKSB8fCBVU0UoQ0ZORVRXT1JLKQorI2lmIFBMQVRGT1JNKElPUykgfHwgVVNFKENGVVJMQ09O
TkVDVElPTikKICAgICAgICAgdmlydHVhbCBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBjb25u
ZWN0aW9uUHJvcGVydGllcyhSZXNvdXJjZUhhbmRsZSopIHsgcmV0dXJuIG51bGxwdHI7IH0KICNl
bmRpZgogCi0jaWYgVVNFKENGTkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogICAg
ICAgICB2aXJ0dWFsIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYgd2lsbENhY2hlUmVzcG9uc2UoUmVz
b3VyY2VIYW5kbGUqLCBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmIHJlc3BvbnNlKSB7IHJldHVybiBy
ZXNwb25zZTsgfQotI2lmIFBMQVRGT1JNKFdJTikKICAgICAgICAgdmlydHVhbCBib29sIHNob3Vs
ZENhY2hlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqLCBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmKSB7
IHJldHVybiB0cnVlOyB9Ci0jZW5kaWYgLy8gUExBVEZPUk0oV0lOKQotCiAjZWxpZiBQTEFURk9S
TShDT0NPQSkKICAgICAgICAgdmlydHVhbCBOU0NhY2hlZFVSTFJlc3BvbnNlICp3aWxsQ2FjaGVS
ZXNwb25zZShSZXNvdXJjZUhhbmRsZSosIE5TQ2FjaGVkVVJMUmVzcG9uc2UgKnJlc3BvbnNlKSB7
IHJldHVybiByZXNwb25zZTsgfQogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaAkocmV2aXNp
b24gMjA3MDM5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhh
bmRsZUludGVybmFsLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDcgQEAKICNpbmNsdWRl
ICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCiAKLSNpZiBV
U0UoQ0ZORVRXT1JLKQorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAjaW5jbHVkZSAiUmVzb3Vy
Y2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5oIgogI2luY2x1ZGUgPENGTmV0d29yay9D
RlVSTENvbm5lY3Rpb25Qcml2Lmg+CiAjZW5kaWYKQEAgLTYxLDcgKzYxLDcgQEAgT0JKQ19DTEFT
UyBOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOwogT0JKQ19DTEFTUyBOU1VSTENvbm5lY3Rp
b247CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZORVRXT1JLKQorI2lm
IFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogdHlwZWRlZiBjb25zdCBz
dHJ1Y3QgX19DRlVSTFN0b3JhZ2VTZXNzaW9uKiBDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmOwogI2Vu
ZGlmCiAKQEAgLTgzLDcgKzgzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAg
LCBtX2RlZmVyc0xvYWRpbmcoZGVmZXJzTG9hZGluZykKICAgICAgICAgICAgICwgbV9zaG91bGRD
b250ZW50U25pZmYoc2hvdWxkQ29udGVudFNuaWZmKQogICAgICAgICAgICAgLCBtX3VzZXNBc3lu
Y0NhbGxiYWNrcyhjbGllbnQgJiYgY2xpZW50LT51c2VzQXN5bmNDYWxsYmFja3MoKSkKLSNpZiBV
U0UoQ0ZORVRXT1JLKQorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAgICAgICAgICAgICAsIG1f
Y3VycmVudFJlcXVlc3QocmVxdWVzdCkKICNlbmRpZgogI2lmIFVTRShDVVJMKQpAQCAtMTMxLDE5
ICsxMzEsMTkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29sIG1fZGVmZXJzTG9h
ZGluZzsKICAgICAgICAgYm9vbCBtX3Nob3VsZENvbnRlbnRTbmlmZjsKICAgICAgICAgYm9vbCBt
X3VzZXNBc3luY0NhbGxiYWNrczsKLSNpZiBVU0UoQ0ZORVRXT1JLKQorI2lmIFVTRShDRlVSTENP
Tk5FQ1RJT04pCiAgICAgICAgIFJldGFpblB0cjxDRlVSTENvbm5lY3Rpb25SZWY+IG1fY29ubmVj
dGlvbjsKICAgICAgICAgUmVzb3VyY2VSZXF1ZXN0IG1fY3VycmVudFJlcXVlc3Q7CiAgICAgICAg
IFJlZlB0cjxSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlPiBtX2Nvbm5lY3Rp
b25EZWxlZ2F0ZTsKICNlbmRpZgotI2lmIFBMQVRGT1JNKENPQ09BKSAmJiAhVVNFKENGTkVUV09S
SykKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICAgICAgUmV0YWluUHRyPE5TVVJMQ29ubmVjdGlv
bj4gbV9jb25uZWN0aW9uOwogICAgICAgICBSZXRhaW5QdHI8aWQ+IG1fZGVsZWdhdGU7CiAjZW5k
aWYKICNpZiBQTEFURk9STShDT0NPQSkKICAgICAgICAgYm9vbCBtX3N0YXJ0V2hlblNjaGVkdWxl
ZDsKICNlbmRpZgotI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZORVRXT1JLKQorI2lmIFBM
QVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogICAgICAgICBSZXRhaW5QdHI8
Q0ZVUkxTdG9yYWdlU2Vzc2lvblJlZj4gbV9zdG9yYWdlU2Vzc2lvbjsKICNlbmRpZgogI2lmIFVT
RShDVVJMKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJl
cXVlc3RCYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwCShyZXZpc2lvbiAyMDcwMzkpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMiw3ICszMiw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotI2lmICFV
U0UoU09VUCkgJiYgKCFQTEFURk9STShDT0NPQSkgfHwgVVNFKENGTkVUV09SSykpCisjaWYgIVVT
RShTT1VQKSAmJiAhUExBVEZPUk0oQ09DT0EpCiBkb3VibGUgUmVzb3VyY2VSZXF1ZXN0QmFzZTo6
c19kZWZhdWx0VGltZW91dEludGVydmFsID0gSU5UX01BWDsKICNlbHNlCiAvLyBXaWxsIHVzZSBO
U1VSTFJlcXVlc3QgZGVmYXVsdCB0aW1lb3V0IHVubGVzcyBzZXQgdG8gYSBub24temVybyB2YWx1
ZSB3aXRoIHNldERlZmF1bHRUaW1lb3V0SW50ZXJ2YWwoKS4KQEAgLTYwMiw3ICs2MDIsNyBAQCB2
b2lkIFJlc291cmNlUmVxdWVzdEJhc2U6OnVwZGF0ZVJlc291cmNlCiAgICAgfQogfQogCi0jaWYg
IVBMQVRGT1JNKENPQ09BKSAmJiAhVVNFKENGTkVUV09SSykgJiYgIVVTRShTT1VQKQorI2lmICFQ
TEFURk9STShDT0NPQSkgJiYgIVVTRShDRlVSTENPTk5FQ1RJT04pICYmICFVU0UoU09VUCkKIHVu
c2lnbmVkIGluaXRpYWxpemVNYXhpbXVtSFRUUENvbm5lY3Rpb25Db3VudFBlckhvc3QoKQogewog
ICAgIC8vIFRoaXMgaXMgdXNlZCBieSB0aGUgbG9hZGVyIHRvIGNvbnRyb2wgdGhlIG51bWJlciBv
ZiBpc3N1ZWQgcGFyYWxsZWwgbG9hZCByZXF1ZXN0cy4gCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NmL0F1dGhlbnRpY2F0aW9uQ0YuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQXV0aGVudGljYXRpb25DRi5jcHAJKHJl
dmlzaW9uIDIwNzAzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQXV0
aGVudGljYXRpb25DRi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNGLmgiCiAKLSNpZiBVU0Uo
Q0ZORVRXT1JLKQorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAKICNpbmNsdWRlICJBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZS5oIgogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2xpZW50LmgiCkBA
IC01MSwxOCArNTEsOCBAQCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTo6QXV0aGVudGljYXRpb25D
CiB7CiB9CiAKLUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZShDRlVSTEF1dGhDaGFsbGVuZ2VSZWYgY2ZDaGFsbGVuZ2UsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXV0aGVudGljYXRpb25DbGllbnQqIGF1dGhl
bnRpY2F0aW9uQ2xpZW50KQotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIDogQXV0aGVudGljYXRp
b25DaGFsbGVuZ2VCYXNlKFByb3RlY3Rpb25TcGFjZShDRlVSTEF1dGhDaGFsbGVuZ2VHZXRQcm90
ZWN0aW9uU3BhY2UoY2ZDaGFsbGVuZ2UpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBDcmVkZW50aWFsKENGVVJMQXV0aENoYWxsZW5nZUdldFByb3Bvc2VkQ3JlZGVudGlhbChj
ZkNoYWxsZW5nZSkpLAotI2Vsc2UKLSAgICA6IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZShj
b3JlKENGVVJMQXV0aENoYWxsZW5nZUdldFByb3RlY3Rpb25TcGFjZShjZkNoYWxsZW5nZSkpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvcmUoQ0ZVUkxBdXRoQ2hhbGxlbmdl
R2V0UHJvcG9zZWRDcmVkZW50aWFsKGNmQ2hhbGxlbmdlKSksCi0jZW5kaWYKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBDRlVSTEF1dGhDaGFsbGVuZ2VHZXRQcmV2aW91c0ZhaWx1
cmVDb3VudChjZkNoYWxsZW5nZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KENGVVJMUmVzcG9uc2VSZWYpQ0ZVUkxBdXRoQ2hhbGxlbmdlR2V0RmFpbHVyZVJlc3BvbnNlKGNm
Q2hhbGxlbmdlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDRlVSTEF1dGhD
aGFsbGVuZ2VHZXRFcnJvcihjZkNoYWxsZW5nZSkpCitBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTo6
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UoQ0ZVUkxBdXRoQ2hhbGxlbmdlUmVmIGNmQ2hhbGxlbmdl
LCBBdXRoZW50aWNhdGlvbkNsaWVudCogYXV0aGVudGljYXRpb25DbGllbnQpCisgICAgOiBBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZUJhc2UoY29yZShDRlVSTEF1dGhDaGFsbGVuZ2VHZXRQcm90ZWN0
aW9uU3BhY2UoY2ZDaGFsbGVuZ2UpKSwgY29yZShDRlVSTEF1dGhDaGFsbGVuZ2VHZXRQcm9wb3Nl
ZENyZWRlbnRpYWwoY2ZDaGFsbGVuZ2UpKSwgQ0ZVUkxBdXRoQ2hhbGxlbmdlR2V0UHJldmlvdXNG
YWlsdXJlQ291bnQoY2ZDaGFsbGVuZ2UpLCAoQ0ZVUkxSZXNwb25zZVJlZilDRlVSTEF1dGhDaGFs
bGVuZ2VHZXRGYWlsdXJlUmVzcG9uc2UoY2ZDaGFsbGVuZ2UpLCBDRlVSTEF1dGhDaGFsbGVuZ2VH
ZXRFcnJvcihjZkNoYWxsZW5nZSkpCiAgICAgLCBtX2F1dGhlbnRpY2F0aW9uQ2xpZW50KGF1dGhl
bnRpY2F0aW9uQ2xpZW50KQogICAgICwgbV9jZkNoYWxsZW5nZShjZkNoYWxsZW5nZSkKIHsKQEAg
LTkzLDIyICs4MywxMiBAQCBDRlVSTEF1dGhDaGFsbGVuZ2VSZWYgY3JlYXRlQ0YoY29uc3QgQXV0
CiB7CiAgICAgLy8gRklYTUU6IFdoeSBub3QgY2FjaGUgQ0ZVUkxBdXRoQ2hhbGxlbmdlUmVmIGlu
IG1fY2ZDaGFsbGVuZ2U/IEZvdW5kYXRpb24gY291bnRlcnBhcnQgZG9lcyB0aGF0LgogCi0jaWYg
UExBVEZPUk0oQ09DT0EpCi0gICAgQ0ZVUkxBdXRoQ2hhbGxlbmdlUmVmIHJlc3VsdCA9IENGVVJM
QXV0aENoYWxsZW5nZUNyZWF0ZSgwLCBjb3JlQ2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZSgpLmNm
U3BhY2UoKSwgY29yZUNoYWxsZW5nZS5wcm9wb3NlZENyZWRlbnRpYWwoKS5jZkNyZWRlbnRpYWwo
KSwKLSNlbHNlCiAgICAgUmV0YWluUHRyPENGVVJMQ3JlZGVudGlhbFJlZj4gY3JlZGVudGlhbCA9
IGFkb3B0Q0YoY3JlYXRlQ0YoY29yZUNoYWxsZW5nZS5wcm9wb3NlZENyZWRlbnRpYWwoKSkpOwog
ICAgIFJldGFpblB0cjxDRlVSTFByb3RlY3Rpb25TcGFjZVJlZj4gcHJvdGVjdGlvblNwYWNlID0g
YWRvcHRDRihjcmVhdGVDRihjb3JlQ2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZSgpKSk7CiAKLSAg
ICBDRlVSTEF1dGhDaGFsbGVuZ2VSZWYgcmVzdWx0ID0gQ0ZVUkxBdXRoQ2hhbGxlbmdlQ3JlYXRl
KDAsIHByb3RlY3Rpb25TcGFjZS5nZXQoKSwgY3JlZGVudGlhbC5nZXQoKSwKLSNlbmRpZgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvcmVDaGFsbGVuZ2UucHJldmlv
dXNGYWlsdXJlQ291bnQoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb3JlQ2hhbGxlbmdlLmZhaWx1cmVSZXNwb25zZSgpLmNmVVJMUmVzcG9uc2UoKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3JlQ2hhbGxlbmdlLmVycm9yKCkp
OwotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIENGVVJMQXV0aENoYWxsZW5nZUNyZWF0
ZSgwLCBwcm90ZWN0aW9uU3BhY2UuZ2V0KCksIGNyZWRlbnRpYWwuZ2V0KCksIGNvcmVDaGFsbGVu
Z2UucHJldmlvdXNGYWlsdXJlQ291bnQoKSwgY29yZUNoYWxsZW5nZS5mYWlsdXJlUmVzcG9uc2Uo
KS5jZlVSTFJlc3BvbnNlKCksIGNvcmVDaGFsbGVuZ2UuZXJyb3IoKSk7CiB9CiAKLSNpZiBQTEFU
Rk9STShXSU4pCi0KIENGVVJMQ3JlZGVudGlhbFJlZiBjcmVhdGVDRihjb25zdCBDcmVkZW50aWFs
JiBjb3JlQ3JlZGVudGlhbCkKIHsKICAgICBDRlVSTENyZWRlbnRpYWxQZXJzaXN0ZW5jZSBwZXJz
aXN0ZW5jZSA9IGtDRlVSTENyZWRlbnRpYWxQZXJzaXN0ZW5jZU5vbmU7CkBAIC0yOTAsOCArMjcw
LDcgQEAgUHJvdGVjdGlvblNwYWNlIGNvcmUoQ0ZVUkxQcm90ZWN0aW9uU3BhYwogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgQ0ZVUkxQcm90ZWN0aW9uU3BhY2VHZXRSZWFsbShjZlNwYWNlKSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjaGVtZSk7CiB9Ci0jZW5kaWYgLy8gUExBVEZP
Uk0oV0lOKQogCiB9OwogCi0jZW5kaWYgLy8gVVNFKENGTkVUV09SSykKKyNlbmRpZiAvLyBVU0Uo
Q0ZVUkxDT05ORUNUSU9OKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
Zi9BdXRoZW50aWNhdGlvbkNGLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9BdXRoZW50aWNhdGlvbkNGLmgJKHJldmlzaW9uIDIwNzAzOSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQXV0aGVudGljYXRpb25DRi5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMywxMCArMjMsOSBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAotI2lm
bmRlZiBBdXRoZW50aWNhdGlvbkNGX2gKLSNkZWZpbmUgQXV0aGVudGljYXRpb25DRl9oCisjcHJh
Z21hIG9uY2UKIAotI2lmIFVTRShDRk5FVFdPUkspCisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikK
IAogI2luY2x1ZGUgPENGTmV0d29yay9DRlVSTENyZWRlbnRpYWxQcml2Lmg+CiAKQEAgLTQwLDIw
ICszOSwxMCBAQCBjbGFzcyBDcmVkZW50aWFsOwogY2xhc3MgUHJvdGVjdGlvblNwYWNlOwogCiBD
RlVSTEF1dGhDaGFsbGVuZ2VSZWYgY3JlYXRlQ0YoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UmKTsKLSNpZiBQTEFURk9STShXSU4pCiBDRlVSTENyZWRlbnRpYWxSZWYgY3JlYXRlQ0YoY29u
c3QgQ3JlZGVudGlhbCYpOwogQ0ZVUkxQcm90ZWN0aW9uU3BhY2VSZWYgY3JlYXRlQ0YoY29uc3Qg
UHJvdGVjdGlvblNwYWNlJik7Ci0jZW5kaWYKLQotI2lmIFBMQVRGT1JNKENPQ09BKQotQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UgY29yZShDRlVSTEF1dGhDaGFsbGVuZ2VSZWYpOwotI2VuZGlmCi0j
aWYgUExBVEZPUk0oV0lOKQogQ3JlZGVudGlhbCBjb3JlKENGVVJMQ3JlZGVudGlhbFJlZik7CiBQ
cm90ZWN0aW9uU3BhY2UgY29yZShDRlVSTFByb3RlY3Rpb25TcGFjZVJlZik7Ci0jZW5kaWYKIH0K
IAotI2VuZGlmIC8vIFVTRShDRk5FVFdPUkspCi0KLSNlbmRpZiAvLyBBdXRoZW50aWNhdGlvbkNG
X2gKKyNlbmRpZiAvLyBVU0UoQ0ZVUkxDT05ORUNUSU9OKQpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jZi9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UuaAkocmV2aXNpb24gMjA3MDM5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jZi9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMywx
NCArMjMsMTMgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICovCiAKLSNpZm5kZWYgQXV0aGVudGljYXRp
b25DaGFsbGVuZ2VfaAotI2RlZmluZSBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZV9oCisjcHJhZ21h
IG9uY2UKIAogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZS5oIgogI2luY2x1
ZGUgIkF1dGhlbnRpY2F0aW9uQ2xpZW50LmgiCiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCi0j
aWYgVVNFKENGTkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogCiB0eXBlZGVmIHN0
cnVjdCBfQ0ZVUkxBdXRoQ2hhbGxlbmdlKiBDRlVSTEF1dGhDaGFsbGVuZ2VSZWY7CiAKQEAgLTUw
LDcgKzQ5LDcgQEAgY2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgOiBwdWJsaWMgQQogcHVi
bGljOgogICAgIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCkge30KICAgICBXRUJDT1JFX0VYUE9S
VCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShjb25zdCBQcm90ZWN0aW9uU3BhY2UmLCBjb25zdCBD
cmVkZW50aWFsJiBwcm9wb3NlZENyZWRlbnRpYWwsIHVuc2lnbmVkIHByZXZpb3VzRmFpbHVyZUNv
dW50LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgUmVzb3VyY2VFcnJvciYpOwotI2lm
IFVTRShDRk5FVFdPUkspCisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKICAgICBBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZShDRlVSTEF1dGhDaGFsbGVuZ2VSZWYsIEF1dGhlbnRpY2F0aW9uQ2xpZW50
Kik7CiAKICAgICBDRlVSTEF1dGhDaGFsbGVuZ2VSZWYgY2ZVUkxBdXRoQ2hhbGxlbmdlUmVmKCkg
Y29uc3QgeyByZXR1cm4gbV9jZkNoYWxsZW5nZS5nZXQoKTsgfQpAQCAtNjksNyArNjgsNyBAQCBw
cml2YXRlOgogICAgIHN0YXRpYyBib29sIHBsYXRmb3JtQ29tcGFyZShjb25zdCBBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSYgYSwgY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGIpOwogCiAg
ICAgLy8gUGxhdGZvcm0gY2hhbGxlbmdlIG1heSBiZSBudWxsLiBJZiBpdCdzIG5vbi1udWxsLCBp
dCdzIGFsd2F5cyB1cCB0byBkYXRlIHdpdGggb3RoZXIgZmllbGRzLgotI2lmIFVTRShDRk5FVFdP
UkspCisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKICAgICBSZWZQdHI8QXV0aGVudGljYXRpb25D
bGllbnQ+IG1fYXV0aGVudGljYXRpb25DbGllbnQ7CiAgICAgUmV0YWluUHRyPENGVVJMQXV0aENo
YWxsZW5nZVJlZj4gbV9jZkNoYWxsZW5nZTsKICNlbHNlCkBAIC03OSw1ICs3OCwzIEBAIHByaXZh
dGU6CiB9OwogCiB9Ci0KLSNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jZi9Db29raWVKYXJDRk5ldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jZi9Db29raWVKYXJDRk5ldC5jcHAJKHJldmlzaW9uIDIwNzAzOSkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQ29va2llSmFyQ0ZOZXQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAiUGxhdGZvcm1Db29raWVKYXIuaCIKIAotI2lmIFVTRShDRk5FVFdPUkspCisjaWYg
VVNFKENGVVJMQ09OTkVDVElPTikKIAogI2luY2x1ZGUgIkNGTmV0d29ya1NQSS5oIgogI2luY2x1
ZGUgIkNvb2tpZS5oIgpAQCAtMjU1LDQgKzI1NSw0IEBAIHZvaWQgZGVsZXRlQWxsQ29va2llc01v
ZGlmaWVkU2luY2UoY29uc3QKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYgLy8g
VVNFKENGTkVUV09SSykKKyNlbmRpZiAvLyBVU0UoQ0ZVUkxDT05ORUNUSU9OKQpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9DcmVkZW50aWFsU3RvcmFnZUNGTmV0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0NyZWRl
bnRpYWxTdG9yYWdlQ0ZOZXQuY3BwCShyZXZpc2lvbiAyMDcwMzkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0NyZWRlbnRpYWxTdG9yYWdlQ0ZOZXQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNiwyMyArMjYsMTQgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJDcmVkZW50aWFsU3RvcmFnZS5oIgogCi0jaWYgVVNFKENGTkVUV09SSykKKyNpZiBVU0UoQ0ZV
UkxDT05ORUNUSU9OKQogCiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25DRi5oIgogI2luY2x1ZGUg
IkNGTmV0d29ya1NQSS5oIgogI2luY2x1ZGUgIkNyZWRlbnRpYWwuaCIKICNpbmNsdWRlICJQcm90
ZWN0aW9uU3BhY2UuaCIKLSNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Ci0KLSNpZiBQTEFURk9S
TShDT0NPQSkKLSNpbmNsdWRlICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgiCi0jZWxpZiBQTEFU
Rk9STShXSU4pCiAjaW5jbHVkZSA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlL1dlYktpdFN5c3RlbUlu
dGVyZmFjZS5oPgotI2VuZGlmCi0KLSNpZiBQTEFURk9STShJT1MpCi0jaW5jbHVkZSA8Q0ZOZXR3
b3JrL0NGVVJMQ3JlZGVudGlhbFN0b3JhZ2UuaD4KLSNlbmRpZgorI2luY2x1ZGUgPHd0Zi9SZXRh
aW5QdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIApAQCAtNTQsMjkgKzQ1LDExIEBA
IHN0YXRpYyBpbmxpbmUgQ0ZVUkxDcmVkZW50aWFsUmVmIGNvcHlDcmUKIAogQ3JlZGVudGlhbCBD
cmVkZW50aWFsU3RvcmFnZTo6Z2V0RnJvbVBlcnNpc3RlbnRTdG9yYWdlKGNvbnN0IFByb3RlY3Rp
b25TcGFjZSYgcHJvdGVjdGlvblNwYWNlKQogewotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIGF1
dG8gY3JlZGVudGlhbENGID0gYWRvcHRDRihjb3B5Q3JlZGVudGlhbEZyb21Qcm90ZWN0aW9uU3Bh
Y2UocHJvdGVjdGlvblNwYWNlLmNmU3BhY2UoKSkpOwotICAgIHJldHVybiBDcmVkZW50aWFsKGNy
ZWRlbnRpYWxDRi5nZXQoKSk7Ci0jZWxzZQogICAgIGF1dG8gcHJvdGVjdGlvblNwYWNlQ0YgPSBh
ZG9wdENGKGNyZWF0ZUNGKHByb3RlY3Rpb25TcGFjZSkpOwogICAgIGF1dG8gY3JlZGVudGlhbENG
ID0gYWRvcHRDRihjb3B5Q3JlZGVudGlhbEZyb21Qcm90ZWN0aW9uU3BhY2UocHJvdGVjdGlvblNw
YWNlQ0YuZ2V0KCkpKTsKICAgICByZXR1cm4gY29yZShjcmVkZW50aWFsQ0YuZ2V0KCkpOwotI2Vu
ZGlmCi19Ci0KLSNpZiBQTEFURk9STShJT1MpCi12b2lkIENyZWRlbnRpYWxTdG9yYWdlOjpzYXZl
VG9QZXJzaXN0ZW50U3RvcmFnZShjb25zdCBQcm90ZWN0aW9uU3BhY2UmIHByb3RlY3Rpb25TcGFj
ZSwgY29uc3QgQ3JlZGVudGlhbCYgY3JlZGVudGlhbCkKLXsKLSAgICBSZXRhaW5QdHI8Q0ZVUkxD
cmVkZW50aWFsU3RvcmFnZVJlZj4gc3RvcmFnZUNGID0gYWRvcHRDRihDRlVSTENyZWRlbnRpYWxT
dG9yYWdlQ3JlYXRlKDApKTsKLQotICAgIGlmIChjcmVkZW50aWFsLnBlcnNpc3RlbmNlKCkgPT0g
Q3JlZGVudGlhbFBlcnNpc3RlbmNlTm9uZSkgewotICAgICAgICBDcmVkZW50aWFsIHNlc3Npb25D
cmVkZW50aWFsKGNyZWRlbnRpYWwsIENyZWRlbnRpYWxQZXJzaXN0ZW5jZUZvclNlc3Npb24pOwot
ICAgICAgICBDRlVSTENyZWRlbnRpYWxTdG9yYWdlU2V0RGVmYXVsdENyZWRlbnRpYWxGb3JQcm90
ZWN0aW9uU3BhY2Uoc3RvcmFnZUNGLmdldCgpLCBzZXNzaW9uQ3JlZGVudGlhbC5jZkNyZWRlbnRp
YWwoKSwgcHJvdGVjdGlvblNwYWNlLmNmU3BhY2UoKSk7Ci0gICAgfSBlbHNlCi0gICAgICAgIENG
VVJMQ3JlZGVudGlhbFN0b3JhZ2VTZXREZWZhdWx0Q3JlZGVudGlhbEZvclByb3RlY3Rpb25TcGFj
ZShzdG9yYWdlQ0YuZ2V0KCksIGNyZWRlbnRpYWwuY2ZDcmVkZW50aWFsKCksIHByb3RlY3Rpb25T
cGFjZS5jZlNwYWNlKCkpOwogfQotI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAot
I2VuZGlmIC8vIFVTRShDRk5FVFdPUkspCisjZW5kaWYgLy8gVVNFKENGVVJMQ09OTkVDVElPTikK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTG9hZGVyUnVuTG9vcENG
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0xv
YWRlclJ1bkxvb3BDRi5jcHAJKHJldmlzaW9uIDIwNzAzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY2YvTG9hZGVyUnVuTG9vcENGLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjYsNyArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkxvYWRlclJ1bkxv
b3BDRi5oIgogCi0jaWYgVVNFKENGTkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQog
CiAjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRpb24uaD4KICNpbmNsdWRlIDxs
aW1pdHM+CkBAIC04Nyw0ICs4Nyw0IEBAIENGUnVuTG9vcFJlZiBsb2FkZXJSdW5Mb29wKCkKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYgLy8gVVNFKENGTkVUV09SSykKKyNlbmRp
ZiAvLyBVU0UoQ0ZVUkxDT05ORUNUSU9OKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jZi9Mb2FkZXJSdW5Mb29wQ0YuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0xvYWRlclJ1bkxvb3BDRi5oCShyZXZpc2lvbiAyMDcwMzkp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0xvYWRlclJ1bkxvb3BDRi5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yMywxMCArMjMsOSBAQAogICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgTG9hZGVyUnVuTG9vcENGX2gKLSNkZWZpbmUg
TG9hZGVyUnVuTG9vcENGX2gKKyNwcmFnbWEgb25jZQogCi0jaWYgVVNFKENGTkVUV09SSykKKyNp
ZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogCiB0eXBlZGVmIHN0cnVjdCBfX0NGUnVuTG9vcCogQ0ZS
dW5Mb29wUmVmOwogCkBAIC0zNiw2ICszNSw0IEBAIENGUnVuTG9vcFJlZiBsb2FkZXJSdW5Mb29w
KCk7CiAKIH0KIAotI2VuZGlmIC8vIFVTRShDRk5FVFdPUkspCi0KLSNlbmRpZiAvLyBMb2FkZXJS
dW5Mb29wX2gKKyNlbmRpZiAvLyBVU0UoQ0ZVUkxDT05ORUNUSU9OKQpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3Jr
U3RvcmFnZVNlc3Npb25DRk5ldC5jcHAJKHJldmlzaW9uIDIwNzAzOSkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zOCw2ICszOCw4IEBACiAjaW5jbHVkZSA8V2ViS2l0U3lzdGVtSW50
ZXJmYWNlL1dlYktpdFN5c3RlbUludGVyZmFjZS5oPgogI2VuZGlmCiAKKy8vIEZJWE1FOiBUaGlz
IGZpbGUgaXMgbW9zdGx5IENvY29hIGNvZGUsIG5vdCBDRk5ldCBjb2RlLgorCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIHN0YXRpYyBib29sIGNvb2tpZVN0b3JhZ2VQYXJ0aXRpb25pbmdFbmFibGVk
OwpAQCAtOTMsMTEgKzk1LDExIEBAIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBO
ZXR3b3IKICAgICBpZiAobV9wbGF0Zm9ybVNlc3Npb24pCiAgICAgICAgIHJldHVybiBhZG9wdENG
KF9DRlVSTFN0b3JhZ2VTZXNzaW9uQ29weUNvb2tpZVN0b3JhZ2Uoa0NGQWxsb2NhdG9yRGVmYXVs
dCwgbV9wbGF0Zm9ybVNlc3Npb24uZ2V0KCkpKTsKIAotI2lmIFVTRShDRk5FVFdPUkspCisjaWYg
VVNFKENGVVJMQ09OTkVDVElPTikKICAgICByZXR1cm4gX0NGSFRUUENvb2tpZVN0b3JhZ2VHZXRE
ZWZhdWx0KGtDRkFsbG9jYXRvckRlZmF1bHQpOwogI2Vsc2UKICAgICAvLyBXaGVuIHVzaW5nIE5T
VVJMQ29ubmVjdGlvbiwgd2UgYWxzbyB1c2UgaXRzIHNoYXJlZCBjb29raWUgc3RvcmFnZS4KLSAg
ICByZXR1cm4gMDsKKyAgICByZXR1cm4gbnVsbHB0cjsKICNlbmRpZgogfQogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Byb3RlY3Rpb25TcGFjZUNGTmV0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Byb3RlY3Rp
b25TcGFjZUNGTmV0LmNwcAkocmV2aXNpb24gMjA3MDM5KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jZi9Qcm90ZWN0aW9uU3BhY2VDRk5ldC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI2LDcgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJQcm90ZWN0
aW9uU3BhY2VDRk5ldC5oIgogCi0jaWYgVVNFKENGTkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxDT05O
RUNUSU9OKQogCiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25DRi5oIgogI2luY2x1ZGUgPENGTmV0
d29yay9DRlVSTFByb3RlY3Rpb25TcGFjZVByaXYuaD4KQEAgLTQyLDQgKzQyLDQgQEAgYm9vbCBQ
cm90ZWN0aW9uU3BhY2U6OnJlY2VpdmVzQ3JlZGVudGlhbAogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKLSNlbmRpZiAvLyBVU0UoQ0ZORVRXT1JLKQorI2VuZGlmIC8vIFVTRShDRlVSTENPTk5F
Q1RJT04pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Byb3RlY3Rp
b25TcGFjZUNGTmV0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jZi9Qcm90ZWN0aW9uU3BhY2VDRk5ldC5oCShyZXZpc2lvbiAyMDcwMzkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Byb3RlY3Rpb25TcGFjZUNGTmV0LmgJKHdv
cmtpbmcgY29weSkKQEAgLTIzLDExICsyMywxMCBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAot
I2lmbmRlZiBQcm90ZWN0aW9uU3BhY2VDRk5ldF9oCi0jZGVmaW5lIFByb3RlY3Rpb25TcGFjZUNG
TmV0X2gKKyNwcmFnbWEgb25jZQogCi0jaWYgIVBMQVRGT1JNKFdJTikgfHwgIVVTRShDRk5FVFdP
UkspCi0jZXJyb3IgVGhpcyBoZWFkZXIgc2hvdWxkIG9ubHkgYmUgaW5jbHVkZWQgd2hlbiB0YXJn
ZXRpbmcgV2luZG93cyBhbmQgdXNpbmcgQ0ZOZXR3b3JrLgorI2lmICFQTEFURk9STShXSU4pIHx8
ICFVU0UoQ0ZVUkxDT05ORUNUSU9OKQorI2Vycm9yIFRoaXMgaGVhZGVyIHNob3VsZCBvbmx5IGJl
IGluY2x1ZGVkIHdoZW4gdGFyZ2V0aW5nIFdpbmRvd3MgYW5kIHVzaW5nIENGVVJMQ29ubmVjdGlv
bi4KICNlbmRpZgogCiAjaW5jbHVkZSAiUHJvdGVjdGlvblNwYWNlQmFzZS5oIgpAQCAtNDgsNSAr
NDcsMyBAQCBwdWJsaWM6CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAv
LyBQcm90ZWN0aW9uU3BhY2VDRk5ldF9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NmL1Jlc291cmNlRXJyb3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3IuaAkocmV2aXNpb24gMjA3MDM5KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yLmgJKHdvcmtp
bmcgY29weSkKQEAgLTI4LDEwICsyOCwxMSBAQAogI2luY2x1ZGUgIlJlc291cmNlRXJyb3JCYXNl
LmgiCiAKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Ci0jaWYgVVNFKENGTkVUV09SSykKKwor
I2lmIFBMQVRGT1JNKFdJTikKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogI2luY2x1ZGUgPENv
cmVGb3VuZGF0aW9uL0NGU3RyZWFtLmg+CiAjZW5kaWYKLSNpZiBQTEFURk9STShXSU4pCiAjaW5j
bHVkZSA8d2luZG93cy5oPgogI2luY2x1ZGUgPHdpbmNyeXB0Lmg+IC8vIHdpbmRvd3MuaCBtdXN0
IGJlIGluY2x1ZGVkIGJlZm9yZSB3aW5jcnlwdC5oLgogI2VuZGlmCkBAIC02MSwxMiArNjIsMTAg
QEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIENGRXJyb3JSZWYgY2ZFcnJvcigpIGNvbnN0
OwogICAgIFdFQkNPUkVfRVhQT1JUIG9wZXJhdG9yIENGRXJyb3JSZWYoKSBjb25zdDsKIAotI2lm
IFVTRShDRk5FVFdPUkspCi0jaWYgUExBVEZPUk0oV0lOKQorI2lmIFVTRShDRlVSTENPTk5FQ1RJ
T04pCiAgICAgUmVzb3VyY2VFcnJvcihjb25zdCBTdHJpbmcmIGRvbWFpbiwgaW50IGVycm9yQ29k
ZSwgY29uc3QgVVJMJiBmYWlsaW5nVVJMLCBjb25zdCBTdHJpbmcmIGxvY2FsaXplZERlc2NyaXB0
aW9uLCBDRkRhdGFSZWYgY2VydGlmaWNhdGUpOwogICAgIFBDQ0VSVF9DT05URVhUIGNlcnRpZmlj
YXRlKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRDZXJ0aWZpY2F0ZShDRkRhdGFSZWYpOwotI2VuZGlm
CiAgICAgUmVzb3VyY2VFcnJvcihDRlN0cmVhbUVycm9yIGVycm9yKTsKICAgICBDRlN0cmVhbUVy
cm9yIGNmU3RyZWFtRXJyb3IoKSBjb25zdDsKICAgICBvcGVyYXRvciBDRlN0cmVhbUVycm9yKCkg
Y29uc3Q7CkBAIC04OCwxNCArODcsMTMgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRvUGxhdGZvcm1J
c29sYXRlZENvcHkoY29uc3QgUmVzb3VyY2VFcnJvciYpOwogCiAgICAgYm9vbCBtX2RhdGFJc1Vw
VG9EYXRlOwotI2lmIFVTRShDRk5FVFdPUkspCisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKICAg
ICBtdXRhYmxlIFJldGFpblB0cjxDRkVycm9yUmVmPiBtX3BsYXRmb3JtRXJyb3I7Ci0jaWYgUExB
VEZPUk0oQ09DT0EpCisjZWxpZiBQTEFURk9STShDT0NPQSkKICAgICBtdXRhYmxlIFJldGFpblB0
cjxOU0Vycm9yPiBtX3BsYXRmb3JtTlNFcnJvcjsKICNlbmRpZgogI2lmIFBMQVRGT1JNKFdJTikK
ICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBtX2NlcnRpZmljYXRlOwotI2VuZGlmCiAjZWxzZQog
ICAgIG11dGFibGUgUmV0YWluUHRyPE5TRXJyb3I+IG1fcGxhdGZvcm1FcnJvcjsKICNlbmRpZgpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yQ0Yu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVz
b3VyY2VFcnJvckNGLmNwcAkocmV2aXNpb24gMjA3MDM5KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yQ0YuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
NiwxNiArMjYsMTMgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJSZXNvdXJjZUVy
cm9yLmgiCiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAK
ICNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9DRkVycm9yLmg+CiAj
aW5jbHVkZSA8Q0ZOZXR3b3JrL0NGTmV0d29ya0Vycm9ycy5oPgotI2luY2x1ZGUgPHd0Zi9SZXRh
aW5QdHIuaD4KLQotI2lmIFBMQVRGT1JNKFdJTikKICNpbmNsdWRlIDxXZWJLaXRTeXN0ZW1JbnRl
cmZhY2UvV2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+Ci0jZW5kaWYKKyNpbmNsdWRlIDx3dGYvUmV0
YWluUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMjE4LDQgKzIxNSw0IEBAIFJl
c291cmNlRXJyb3I6Om9wZXJhdG9yIENGU3RyZWFtRXJyb3IoKSAKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCi0jZW5kaWYgLy8gVVNFKENGTkVUV09SSykKKyNlbmRpZiAvLyBVU0UoQ0ZVUkxD
T05ORUNUSU9OKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNv
dXJjZUhhbmRsZUNGTmV0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwCShyZXZpc2lvbiAyMDcwMzkpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Niw2ICs0Niw4IEBACiAjaW5jbHVkZSAiU3luY2hyb25v
dXNMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlICJTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZV
UkxDb25uZWN0aW9uRGVsZWdhdGUuaCIKICNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZOZXR3b3JrLmg+
CisjaW5jbHVkZSA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlL1dlYktpdFN5c3RlbUludGVyZmFjZS5o
PgorI2luY2x1ZGUgPHByb2Nlc3MuaD4KICNpbmNsdWRlIDxzeXMvc3RhdC5oPgogI2luY2x1ZGUg
PHN5cy90eXBlcy5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC01NSwyMCArNTcsNiBA
QAogI2luY2x1ZGUgPHd0Zi90ZXh0L0Jhc2U2NC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJp
bmcuaD4KIAotI2lmIFBMQVRGT1JNKENPQ09BKQotI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlQ0ZV
UkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuaCIKLSNpbmNsdWRlICJXZWJD
b3JlU3lzdGVtSW50ZXJmYWNlLmgiCi0jaWYgVVNFKENGTkVUV09SSykKLSNpbmNsdWRlICJXZWJD
b3JlVVJMUmVzcG9uc2UuaCIKLSNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZVUkxDb25uZWN0aW9uUHJp
di5oPgotI2luY2x1ZGUgPENGTmV0d29yay9DRlVSTFJlcXVlc3RQcml2Lmg+Ci0jZW5kaWYKLSNl
bmRpZgotCi0jaWYgUExBVEZPUk0oV0lOKQotI2luY2x1ZGUgPFdlYktpdFN5c3RlbUludGVyZmFj
ZS9XZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaD4KLSNpbmNsdWRlIDxwcm9jZXNzLmg+Ci0KIC8vIEZJ
WE1FOiBSZW1vdmUgdGhpcyBkZWNsYXJhdGlvbiBvbmNlIGl0J3MgaW4gV2ViS2l0U3VwcG9ydExp
YnJhcnkuCiBleHRlcm4gIkMiIHsKIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBDRlVSTENvbm5lY3Rp
b25SZWYgQ0ZVUkxDb25uZWN0aW9uQ3JlYXRlV2l0aFByb3BlcnRpZXMoCkBAIC03NywxMSArNjUs
MTAgQEAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIENGVVJMQ29ubmVjdGlvblJlZgogICBDRlVSTENv
bm5lY3Rpb25DbGllbnQgKiAgY2xpZW50LAogICBDRkRpY3Rpb25hcnlSZWYgcHJvcGVydGllcyk7
CiB9Ci0jZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0jaWYgVVNFKENGTkVUV09SSykK
KyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogCiBzdGF0aWMgSGFzaFNldDxTdHJpbmcsIEFTQ0lJ
Q2FzZUluc2Vuc2l0aXZlSGFzaD4mIGFsbG93c0FueUhUVFBTQ2VydGlmaWNhdGVIb3N0cygpCiB7
CkBAIC0xMjAsMTEgKzEwNyw3IEBAIFJlc291cmNlSGFuZGxlOjp+UmVzb3VyY2VIYW5kbGUoKQog
ICAgIAogc3RhdGljIGlubGluZSBDRlN0cmluZ1JlZiBzaG91bGRTbmlmZkNvbm5lY3Rpb25Qcm9w
ZXJ0eSgpCiB7Ci0jaWYgUExBVEZPUk0oV0lOKQogICAgIHJldHVybiBDRlNUUigiX2tDRlVSTENv
bm5lY3Rpb25Qcm9wZXJ0eVNob3VsZFNuaWZmIik7Ci0jZWxzZQotICAgIHJldHVybiBfa0NGVVJM
Q29ubmVjdGlvblByb3BlcnR5U2hvdWxkU25pZmY7Ci0jZW5kaWYKIH0KIAogdm9pZCBSZXNvdXJj
ZUhhbmRsZTo6Y3JlYXRlQ0ZVUkxDb25uZWN0aW9uKGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0
b3JhZ2UsIGJvb2wgc2hvdWxkQ29udGVudFNuaWZmLCBTY2hlZHVsaW5nQmVoYXZpb3Igc2NoZWR1
bGluZ0JlaGF2aW9yLCBDRkRpY3Rpb25hcnlSZWYgY2xpZW50UHJvcGVydGllcykKQEAgLTE2Niw5
ICsxNDksNiBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpjcmVhdGVDRlVSTENvbm5lY3RpCiAKICAg
ICBSZXRhaW5QdHI8Q0ZNdXRhYmxlRGljdGlvbmFyeVJlZj4gc3NsUHJvcHM7CiAKLSNpZiBQTEFU
Rk9STShJT1MpCi0gICAgc3NsUHJvcHMgPSBhZG9wdENGKFJlc291cmNlSGFuZGxlOjpjcmVhdGVT
U0xQcm9wZXJ0aWVzRnJvbU5TVVJMUmVxdWVzdChmaXJzdFJlcXVlc3QoKSkpOwotI2Vsc2UKICAg
ICBpZiAoYWxsb3dzQW55SFRUUFNDZXJ0aWZpY2F0ZUhvc3RzKCkuY29udGFpbnMoZmlyc3RSZXF1
ZXN0KCkudXJsKCkuaG9zdCgpKSkgewogICAgICAgICBzc2xQcm9wcyA9IGFkb3B0Q0YoQ0ZEaWN0
aW9uYXJ5Q3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwLCAma0NGVHlwZURpY3Rp
b25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CiAg
ICAgICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKHNzbFByb3BzLmdldCgpLCBrQ0ZTdHJlYW1TU0xB
bGxvd3NBbnlSb290LCBrQ0ZCb29sZWFuVHJ1ZSk7CkBAIC0xODEsMTEgKzE2MSw4IEBAIHZvaWQg
UmVzb3VyY2VIYW5kbGU6OmNyZWF0ZUNGVVJMQ29ubmVjdGkKICAgICBpZiAoY2xpZW50Q2VydCAh
PSBjbGllbnRDZXJ0aWZpY2F0ZXMoKS5lbmQoKSkgewogICAgICAgICBpZiAoIXNzbFByb3BzKQog
ICAgICAgICAgICAgc3NsUHJvcHMgPSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGUo
a0NGQWxsb2NhdG9yRGVmYXVsdCwgMCwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAm
a0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykpOwotI2lmIFBMQVRGT1JNKFdJTikKICAg
ICAgICAgd2tTZXRDbGllbnRDZXJ0aWZpY2F0ZUluU1NMUHJvcGVydGllcyhzc2xQcm9wcy5nZXQo
KSwgKGNsaWVudENlcnQtPnZhbHVlKS5nZXQoKSk7Ci0jZW5kaWYKICAgICB9Ci0jZW5kaWYgLy8g
UExBVEZPUk0oSU9TKQogCiAgICAgaWYgKHNzbFByb3BzKQogICAgICAgICBDRlVSTFJlcXVlc3RT
ZXRTU0xQcm9wZXJ0aWVzKHJlcXVlc3QuZ2V0KCksIHNzbFByb3BzLmdldCgpKTsKQEAgLTIwNiwx
MiArMTgzLDYgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6Y3JlYXRlQ0ZVUkxDb25uZWN0aQogICAg
ICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShzdHJlYW1Qcm9wZXJ0aWVzLCBDRlNUUigiX1dlYktp
dFN5bmNocm9ub3VzUmVxdWVzdCIpLCBrQ0ZCb29sZWFuVHJ1ZSk7CiAgICAgfQogCi0jaWYgUExB
VEZPUk0oQ09DT0EpCi0gICAgUmV0YWluUHRyPENGRGF0YVJlZj4gc291cmNlQXBwbGljYXRpb25B
dWRpdERhdGEgPSBkLT5tX2NvbnRleHQtPnNvdXJjZUFwcGxpY2F0aW9uQXVkaXREYXRhKCk7Ci0g
ICAgaWYgKHNvdXJjZUFwcGxpY2F0aW9uQXVkaXREYXRhKQotICAgICAgICBDRkRpY3Rpb25hcnlT
ZXRWYWx1ZShzdHJlYW1Qcm9wZXJ0aWVzLCBDRlNUUigia0NGU3RyZWFtUHJvcGVydHlTb3VyY2VB
cHBsaWNhdGlvbiIpLCBzb3VyY2VBcHBsaWNhdGlvbkF1ZGl0RGF0YS5nZXQoKSk7Ci0jZW5kaWYK
LQogICAgIHN0YXRpYyBjb25zdCBDRlN0cmluZ1JlZiBrQ0ZVUkxDb25uZWN0aW9uU29ja2V0U3Ry
ZWFtUHJvcGVydGllcyA9IENGU1RSKCJrQ0ZVUkxDb25uZWN0aW9uU29ja2V0U3RyZWFtUHJvcGVy
dGllcyIpOwogICAgIFJldGFpblB0cjxDRk11dGFibGVEaWN0aW9uYXJ5UmVmPiBwcm9wZXJ0aWVz
RGljdGlvbmFyeTsKICAgICBpZiAoY2xpZW50UHJvcGVydGllcykKQEAgLTIzMCwxNCArMjAxLDcg
QEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6Y3JlYXRlQ0ZVUkxDb25uZWN0aQogICAgIENGRGljdGlv
bmFyeUFkZFZhbHVlKHByb3BlcnRpZXNEaWN0aW9uYXJ5LmdldCgpLCBrQ0ZVUkxDb25uZWN0aW9u
U29ja2V0U3RyZWFtUHJvcGVydGllcywgc3RyZWFtUHJvcGVydGllcyk7CiAgICAgQ0ZSZWxlYXNl
KHN0cmVhbVByb3BlcnRpZXMpOwogCi0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgaWYgKGQtPm1f
dXNlc0FzeW5jQ2FsbGJhY2tzKQotICAgICAgICBkLT5tX2Nvbm5lY3Rpb25EZWxlZ2F0ZSA9IGFk
b3B0UmVmKG5ldyBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJh
dGlvblF1ZXVlKHRoaXMpKTsKLSAgICBlbHNlCi0gICAgICAgIGQtPm1fY29ubmVjdGlvbkRlbGVn
YXRlID0gYWRvcHRSZWYobmV3IFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rp
b25EZWxlZ2F0ZSh0aGlzKSk7Ci0jZWxzZQogICAgIGQtPm1fY29ubmVjdGlvbkRlbGVnYXRlID0g
YWRvcHRSZWYobmV3IFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxl
Z2F0ZSh0aGlzKSk7Ci0jZW5kaWYKICAgICBkLT5tX2Nvbm5lY3Rpb25EZWxlZ2F0ZS0+c2V0dXBS
ZXF1ZXN0KHJlcXVlc3QuZ2V0KCkpOwogCiAgICAgQ0ZVUkxDb25uZWN0aW9uQ2xpZW50X1Y2IGNs
aWVudCA9IGQtPm1fY29ubmVjdGlvbkRlbGVnYXRlLT5tYWtlQ29ubmVjdGlvbkNsaWVudCgpOwpA
QCAtMjY0LDEwICsyMjgsNiBAQCBib29sIFJlc291cmNlSGFuZGxlOjpzdGFydCgpCiAKICAgICBi
b29sIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlID0gIWNsaWVudCgpIHx8IGNsaWVudCgpLT5z
aG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSh0aGlzKTsKIAotI2lmIEVOQUJMRShXRUJfVElNSU5H
KSAmJiBQTEFURk9STShDT0NPQSkgJiYgIUhBVkUoVElNSU5HREFUQU9QVElPTlMpCi0gICAgc2V0
Q29sbGVjdHNUaW1pbmdEYXRhKCk7Ci0jZW5kaWYKLQogICAgIFNjaGVkdWxpbmdCZWhhdmlvciBz
Y2hlZHVsaW5nQmVoYXZpb3IgPSBjbGllbnQoKS0+bG9hZGluZ1N5bmNocm9ub3VzWEhSKCkgPyBT
Y2hlZHVsaW5nQmVoYXZpb3I6OlN5bmNocm9ub3VzIDogU2NoZWR1bGluZ0JlaGF2aW9yOjpBc3lu
Y2hyb25vdXM7CiAKICAgICBjcmVhdGVDRlVSTENvbm5lY3Rpb24oc2hvdWxkVXNlQ3JlZGVudGlh
bFN0b3JhZ2UsIGQtPm1fc2hvdWxkQ29udGVudFNuaWZmLCBzY2hlZHVsaW5nQmVoYXZpb3IsIGNs
aWVudCgpLT5jb25uZWN0aW9uUHJvcGVydGllcyh0aGlzKS5nZXQoKSk7CkBAIC0zNTEsMTYgKzMx
MSw2IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmRpZFJlY2VpdmVBdXRoZW50aWMKICAgICBBU1NF
UlQoY2hhbGxlbmdlLmNmVVJMQXV0aENoYWxsZW5nZVJlZigpKTsKICAgICBBU1NFUlQoY2hhbGxl
bmdlLmF1dGhlbnRpY2F0aW9uQ2xpZW50KCkgPT0gdGhpcyk7IC8vIFNob3VsZCBiZSBhbHJlYWR5
IHNldC4KIAotI2lmICFQTEFURk9STShXSU4pCi0gICAgLy8gUHJveHkgYXV0aGVudGljYXRpb24g
aXMgaGFuZGxlZCBieSBDRk5ldHdvcmsgaW50ZXJuYWxseS4gV2UgY2FuIGdldCBoZXJlIGlmIHRo
ZSB1c2VyIGNhbmNlbHMKLSAgICAvLyBDRk5ldHdvcmsgYXV0aGVudGljYXRpb24gZGlhbG9nLCBh
bmQgd2Ugc2hvdWxkbid0IGFzayB0aGUgY2xpZW50IHRvIGRpc3BsYXkgYW5vdGhlciBvbmUgaW4g
dGhhdCBjYXNlLgotICAgIGlmIChjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlKCkuaXNQcm94eSgp
KSB7Ci0gICAgICAgIC8vIENhbm5vdCB1c2UgcmVjZWl2ZWRSZXF1ZXN0VG9Db250aW51ZVdpdGhv
dXRDcmVkZW50aWFsKCksIGJlY2F1c2UgY3VycmVudCBjaGFsbGVuZ2UgaXMgbm90IHlldCBzZXQu
Ci0gICAgICAgIENGVVJMQ29ubmVjdGlvblVzZUNyZWRlbnRpYWwoZC0+bV9jb25uZWN0aW9uLmdl
dCgpLCAwLCBjaGFsbGVuZ2UuY2ZVUkxBdXRoQ2hhbGxlbmdlUmVmKCkpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotI2VuZGlmCi0KICAgICBpZiAodHJ5SGFuZGxlUGFzc3dvcmRCYXNlZEF1dGhl
bnRpY2F0aW9uKGNoYWxsZW5nZSkpCiAgICAgICAgIHJldHVybjsKIApAQCAtMzgxLDExICszMzEs
NyBAQCBib29sIFJlc291cmNlSGFuZGxlOjp0cnlIYW5kbGVQYXNzd29yZEJhCiAKICAgICBpZiAo
IWQtPm1fdXNlci5pc051bGwoKSAmJiAhZC0+bV9wYXNzLmlzTnVsbCgpKSB7CiAgICAgICAgIFJl
dGFpblB0cjxDRlVSTENyZWRlbnRpYWxSZWY+IGNmQ3JlZGVudGlhbCA9IGFkb3B0Q0YoQ0ZVUkxD
cmVkZW50aWFsQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGQtPm1fdXNlci5jcmVhdGVDRlN0
cmluZygpLmdldCgpLCBkLT5tX3Bhc3MuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgMCwga0NGVVJM
Q3JlZGVudGlhbFBlcnNpc3RlbmNlTm9uZSkpOwotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgICAg
ICBDcmVkZW50aWFsIGNyZWRlbnRpYWwgPSBDcmVkZW50aWFsKGNmQ3JlZGVudGlhbC5nZXQoKSk7
Ci0jZWxzZQogICAgICAgICBDcmVkZW50aWFsIGNyZWRlbnRpYWwgPSBjb3JlKGNmQ3JlZGVudGlh
bC5nZXQoKSk7Ci0jZW5kaWYKICAgICAgICAgCiAgICAgICAgIFVSTCB1cmxUb1N0b3JlOwogICAg
ICAgICBpZiAoY2hhbGxlbmdlLmZhaWx1cmVSZXNwb25zZSgpLmh0dHBTdGF0dXNDb2RlKCkgPT0g
NDAxKQpAQCAtNDE1LDEyICszNjEsOCBAQCBib29sIFJlc291cmNlSGFuZGxlOjp0cnlIYW5kbGVQ
YXNzd29yZEJhCiAgICAgICAgICAgICAgICAgICAgIC8vIFN0b3JlIHRoZSBjcmVkZW50aWFsIGJh
Y2ssIHBvc3NpYmx5IGFkZGluZyBpdCBhcyBhIGRlZmF1bHQgZm9yIHRoaXMgZGlyZWN0b3J5Lgog
ICAgICAgICAgICAgICAgICAgICBkLT5tX2NvbnRleHQtPnN0b3JhZ2VTZXNzaW9uKCkuY3JlZGVu
dGlhbFN0b3JhZ2UoKS5zZXQoY3JlZGVudGlhbCwgY2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZSgp
LCBjaGFsbGVuZ2UuZmFpbHVyZVJlc3BvbnNlKCkudXJsKCkpOwogICAgICAgICAgICAgICAgIH0K
LSNpZiBQTEFURk9STShDT0NPQSkKLSAgICAgICAgICAgICAgICBDRlVSTENvbm5lY3Rpb25Vc2VD
cmVkZW50aWFsKGQtPm1fY29ubmVjdGlvbi5nZXQoKSwgY3JlZGVudGlhbC5jZkNyZWRlbnRpYWwo
KSwgY2hhbGxlbmdlLmNmVVJMQXV0aENoYWxsZW5nZVJlZigpKTsKLSNlbHNlCiAgICAgICAgICAg
ICAgICAgUmV0YWluUHRyPENGVVJMQ3JlZGVudGlhbFJlZj4gY2ZDcmVkZW50aWFsID0gYWRvcHRD
RihjcmVhdGVDRihjcmVkZW50aWFsKSk7CiAgICAgICAgICAgICAgICAgQ0ZVUkxDb25uZWN0aW9u
VXNlQ3JlZGVudGlhbChkLT5tX2Nvbm5lY3Rpb24uZ2V0KCksIGNmQ3JlZGVudGlhbC5nZXQoKSwg
Y2hhbGxlbmdlLmNmVVJMQXV0aENoYWxsZW5nZVJlZigpKTsKLSNlbmRpZgogICAgICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC00NzAsMjAgKzQx
MiwxMiBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpyZWNlaXZlZENyZWRlbnRpYWwoCiAgICAgICAg
IGQtPm1fY29udGV4dC0+c3RvcmFnZVNlc3Npb24oKS5jcmVkZW50aWFsU3RvcmFnZSgpLnNldCh3
ZWJDcmVkZW50aWFsLCBjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlKCksIHVybFRvU3RvcmUpOwog
CiAgICAgICAgIGlmIChkLT5tX2Nvbm5lY3Rpb24pIHsKLSNpZiBQTEFURk9STShDT0NPQSkKLSAg
ICAgICAgICAgIENGVVJMQ29ubmVjdGlvblVzZUNyZWRlbnRpYWwoZC0+bV9jb25uZWN0aW9uLmdl
dCgpLCB3ZWJDcmVkZW50aWFsLmNmQ3JlZGVudGlhbCgpLCBjaGFsbGVuZ2UuY2ZVUkxBdXRoQ2hh
bGxlbmdlUmVmKCkpOwotI2Vsc2UKICAgICAgICAgICAgIFJldGFpblB0cjxDRlVSTENyZWRlbnRp
YWxSZWY+IGNmQ3JlZGVudGlhbCA9IGFkb3B0Q0YoY3JlYXRlQ0Yod2ViQ3JlZGVudGlhbCkpOwog
ICAgICAgICAgICAgQ0ZVUkxDb25uZWN0aW9uVXNlQ3JlZGVudGlhbChkLT5tX2Nvbm5lY3Rpb24u
Z2V0KCksIGNmQ3JlZGVudGlhbC5nZXQoKSwgY2hhbGxlbmdlLmNmVVJMQXV0aENoYWxsZW5nZVJl
ZigpKTsKLSNlbmRpZgogICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChkLT5tX2Nvbm5lY3Rpb24p
IHsKLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICAgICAgQ0ZVUkxDb25uZWN0aW9uVXNlQ3JlZGVu
dGlhbChkLT5tX2Nvbm5lY3Rpb24uZ2V0KCksIGNyZWRlbnRpYWwuY2ZDcmVkZW50aWFsKCksIGNo
YWxsZW5nZS5jZlVSTEF1dGhDaGFsbGVuZ2VSZWYoKSk7Ci0jZWxzZQogICAgICAgICBSZXRhaW5Q
dHI8Q0ZVUkxDcmVkZW50aWFsUmVmPiBjZkNyZWRlbnRpYWwgPSBhZG9wdENGKGNyZWF0ZUNGKGNy
ZWRlbnRpYWwpKTsKICAgICAgICAgQ0ZVUkxDb25uZWN0aW9uVXNlQ3JlZGVudGlhbChkLT5tX2Nv
bm5lY3Rpb24uZ2V0KCksIGNmQ3JlZGVudGlhbC5nZXQoKSwgY2hhbGxlbmdlLmNmVVJMQXV0aENo
YWxsZW5nZVJlZigpKTsKLSNlbmRpZgogICAgIH0KIAogICAgIGNsZWFyQXV0aGVudGljYXRpb24o
KTsKQEAgLTYyNCwzMCArNTU4LDYgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6cGxhdGZvcm1TZXRE
ZWZlcnNMbwogICAgICAgICBDRlVSTENvbm5lY3Rpb25SZXN1bWUoZC0+bV9jb25uZWN0aW9uLmdl
dCgpKTsKIH0KIAotI2lmIFBMQVRGT1JNKENPQ09BKQotdm9pZCBSZXNvdXJjZUhhbmRsZTo6c2No
ZWR1bGUoU2NoZWR1bGVQYWlyJiBwYWlyKQotewotICAgIENGUnVuTG9vcFJlZiBydW5Mb29wID0g
cGFpci5ydW5Mb29wKCk7Ci0gICAgaWYgKCFydW5Mb29wKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBDRlVSTENvbm5lY3Rpb25TY2hlZHVsZVdpdGhSdW5Mb29wKGQtPm1fY29ubmVjdGlvbi5nZXQo
KSwgcnVuTG9vcCwgcGFpci5tb2RlKCkpOwotICAgIGlmIChkLT5tX3N0YXJ0V2hlblNjaGVkdWxl
ZCkgewotICAgICAgICBDRlVSTENvbm5lY3Rpb25TdGFydChkLT5tX2Nvbm5lY3Rpb24uZ2V0KCkp
OwotICAgICAgICBkLT5tX3N0YXJ0V2hlblNjaGVkdWxlZCA9IGZhbHNlOwotICAgIH0KLX0KLQot
dm9pZCBSZXNvdXJjZUhhbmRsZTo6dW5zY2hlZHVsZShTY2hlZHVsZVBhaXImIHBhaXIpCi17Ci0g
ICAgQ0ZSdW5Mb29wUmVmIHJ1bkxvb3AgPSBwYWlyLnJ1bkxvb3AoKTsKLSAgICBpZiAoIXJ1bkxv
b3ApCi0gICAgICAgIHJldHVybjsKLQotICAgIENGVVJMQ29ubmVjdGlvblVuc2NoZWR1bGVGcm9t
UnVuTG9vcChkLT5tX2Nvbm5lY3Rpb24uZ2V0KCksIHJ1bkxvb3AsIHBhaXIubW9kZSgpKTsKLX0K
LSNlbmRpZgotCiBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIFJlc291cmNlSGFuZGxlOjpjdXJyZW50
UmVxdWVzdCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGQtPm1fY3VycmVudFJlcXVlc3Q7CkBAIC02
NzYsNiArNTg2LDYgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6Y29udGludWVXaWxsQ2FjaGVSZQog
ewogICAgIGQtPm1fY29ubmVjdGlvbkRlbGVnYXRlLT5jb250aW51ZVdpbGxDYWNoZVJlc3BvbnNl
KHJlc3BvbnNlKTsKIH0KLSNlbmRpZiAvLyBVU0UoQ0ZORVRXT1JLKQorI2VuZGlmIC8vIFVTRShD
RlVSTENPTk5FQ1RJT04pCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25E
ZWxlZ2F0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmNwcAkocmV2aXNpb24g
MjA3MDM5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhh
bmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsMjAg
KzI2LDEzIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGVD
RlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5oIgogCi0jaWYgVVNFKENGTkVUV09SSykKKyNpZiBVU0Uo
Q0ZVUkxDT05ORUNUSU9OKQogCiAjaW5jbHVkZSAiQ0ZOZXR3b3JrU1BJLmgiCiAjaW5jbHVkZSAi
Rm9ybURhdGFTdHJlYW1DRk5ldC5oIgogI2luY2x1ZGUgIk5ldHdvcmtpbmdDb250ZXh0LmgiCiAj
aW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKLQotI2lmIFBMQVRGT1JNKENPQ09BKQotI2luY2x1
ZGUgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKLSNlbmRpZgotCi0jaWYgUExBVEZPUk0oV0lO
KQogI2luY2x1ZGUgPFdlYktpdFN5c3RlbUludGVyZmFjZS9XZWJLaXRTeXN0ZW1JbnRlcmZhY2Uu
aD4KLSNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTIxOCw0ICsyMTEsNCBAQCBD
RlVSTENvbm5lY3Rpb25DbGllbnRfVjYgUmVzb3VyY2VIYW5kbGVDCiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUuCiAKLSNlbmRpZiAvLyBVU0UoQ0ZORVRXT1JLKQorI2VuZGlmIC8vIFVTRShDRlVS
TENPTk5FQ1RJT04pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jl
c291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0
aW9uRGVsZWdhdGUuaAkocmV2aXNpb24gMjA3MDM5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTIzLDEwICsyMyw5IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNp
Zm5kZWYgUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZV9oCi0jZGVmaW5lIFJl
c291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVfaAorI3ByYWdtYSBvbmNlCiAKLSNp
ZiBVU0UoQ0ZORVRXT1JLKQorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAKICNpbmNsdWRlICJS
ZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZVUkxDb25uZWN0aW9uUHJp
di5oPgpAQCAtMTAwLDYgKzk5LDQgQEAgcHJvdGVjdGVkOgogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlLgogCi0jZW5kaWYgLy8gVVNFKENGTkVUV09SSykKLQotI2VuZGlmIC8vIFJlc291cmNlSGFu
ZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVfaAorI2VuZGlmIC8vIFVTRShDRlVSTENPTk5FQ1RJ
T04pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFu
ZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVD
RlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5jcHAJKHJldmlzaW9uIDIw
NzAzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5k
bGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJS
ZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmgi
CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAKICNpbmNs
dWRlICJBdXRoZW50aWNhdGlvbkNGLmgiCiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UuaCIKQEAgLTc1LDkgKzc1LDYgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlv
bkRlbGVnYQogCiB2b2lkIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRo
T3BlcmF0aW9uUXVldWU6OnNldHVwUmVxdWVzdChDRk11dGFibGVVUkxSZXF1ZXN0UmVmIHJlcXVl
c3QpCiB7Ci0jaWYgUExBVEZPUk0oSU9TKQotICAgIENGVVJMUmVxdWVzdFNldFNob3VsZFN0YXJ0
U3luY2hyb25vdXNseShyZXF1ZXN0LCAxKTsKLSNlbmRpZgogICAgIENGVVJMUmVmIHJlcXVlc3RV
UkwgPSBDRlVSTFJlcXVlc3RHZXRVUkwocmVxdWVzdCk7CiAgICAgaWYgKCFyZXF1ZXN0VVJMKQog
ICAgICAgICByZXR1cm47CkBAIC0xNDksMTAgKzE0Niw4IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGVD
RlVSTENvbm5lY3Rpb25EZWxlZ2EKICAgICAgICAgICAgIGFkanVzdE1JTUVUeXBlSWZOZWNlc3Nh
cnkoY2ZSZXNwb25zZSwgaXNNYWluUmVzb3VyY2VMb2FkKTsKICAgICAgICAgfQogCi0jaWYgIVBM
QVRGT1JNKElPUykKICAgICAgICAgaWYgKF9DRlVSTFJlcXVlc3RDb3B5UHJvdG9jb2xQcm9wZXJ0
eUZvcktleShtX2hhbmRsZS0+Zmlyc3RSZXF1ZXN0KCkuY2ZVUkxSZXF1ZXN0KERvTm90VXBkYXRl
SFRUUEJvZHkpLCBDRlNUUigiRm9yY2VIVE1MTUlNRVR5cGUiKSkpCiAgICAgICAgICAgICBDRlVS
TFJlc3BvbnNlU2V0TUlNRVR5cGUoY2ZSZXNwb25zZSwgQ0ZTVFIoInRleHQvaHRtbCIpKTsKLSNl
bmRpZiAvLyAhUExBVEZPUk0oSU9TKQogICAgICAgICAKICAgICAgICAgUmVzb3VyY2VSZXNwb25z
ZSByZXNvdXJjZVJlc3BvbnNlKGNmUmVzcG9uc2UpOwogI2lmIEVOQUJMRShXRUJfVElNSU5HKQpA
QCAtMjg4LDE1ICsyODMsNyBAQCBCb29sZWFuIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9u
RGVsCiAKICAgICAgICAgTE9HKE5ldHdvcmssICJDRk5ldCAtIFJlc291cmNlSGFuZGxlQ0ZVUkxD
b25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OmNhblJlc3BvbmRUb1Byb3RlY3Rp
b25TcGFjZShoYW5kbGU9JXApICglcykiLCBtX2hhbmRsZSwgbV9oYW5kbGUtPmZpcnN0UmVxdWVz
dCgpLnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogCi0gICAgICAgIFByb3RlY3Rpb25T
cGFjZSBjb3JlUHJvdGVjdGlvblNwYWNlID0gUHJvdGVjdGlvblNwYWNlKHByb3RlY3Rpb25TcGFj
ZSk7Ci0jaWYgUExBVEZPUk0oSU9TKQotICAgICAgICBpZiAoY29yZVByb3RlY3Rpb25TcGFjZS5h
dXRoZW50aWNhdGlvblNjaGVtZSgpID09IFByb3RlY3Rpb25TcGFjZUF1dGhlbnRpY2F0aW9uU2No
ZW1lVW5rbm93bikgewotICAgICAgICAgICAgbV9ib29sUmVzdWx0ID0gZmFsc2U7Ci0gICAgICAg
ICAgICBkaXNwYXRjaF9zZW1hcGhvcmVfc2lnbmFsKG1fc2VtYXBob3JlKTsKLSAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgfQotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKLSAgICAgICAgbV9o
YW5kbGUtPmNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoY29yZVByb3RlY3Rp
b25TcGFjZSk7CisgICAgICAgIG1faGFuZGxlLT5jYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVj
dGlvblNwYWNlKFByb3RlY3Rpb25TcGFjZShwcm90ZWN0aW9uU3BhY2UpKTsKICAgICB9KTsKICAg
ICBkaXNwYXRjaF9zZW1hcGhvcmVfd2FpdChtX3NlbWFwaG9yZSwgRElTUEFUQ0hfVElNRV9GT1JF
VkVSKTsKICAgICByZXR1cm4gbV9ib29sUmVzdWx0OwpAQCAtMzQ3LDQgKzMzNCw0IEBAIHZvaWQg
UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2EKICNlbmRpZiAvLyBVU0UoUFJPVEVD
VElPTl9TUEFDRV9BVVRIX0NBTExCQUNLKQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5k
aWYgLy8gVVNFKENGTkVUV09SSykKKyNlbmRpZiAvLyBVU0UoQ0ZVUkxDT05ORUNUSU9OKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJM
Q29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVj
dGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmgJKHJldmlzaW9uIDIwNzAzOSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5l
Y3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMywx
MCArMjMsOSBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFJlc291cmNlSGFuZGxl
Q0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWVfaAotI2RlZmluZSBSZXNv
dXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlX2gKKyNw
cmFnbWEgb25jZQogCi0jaWYgVVNFKENGTkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9O
KQogCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5oIgog
I2luY2x1ZGUgPENGTmV0d29yay9DRk5ldHdvcmsuaD4KQEAgLTgwLDYgKzc5LDQgQEAgcHJpdmF0
ZToKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZS4KIAotI2VuZGlmIC8vIFVTRShDRk5FVFdPUksp
Ci0KLSNlbmRpZiAvLyBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9w
ZXJhdGlvblF1ZXVlX2gKKyNlbmRpZiAvLyBVU0UoQ0ZVUkxDT05ORUNUSU9OKQpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3QuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVz
dC5oCShyZXZpc2lvbiAyMDcwMzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NmL1Jlc291cmNlUmVxdWVzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3IEBACiAK
IE9CSkNfQ0xBU1MgTlNVUkxSZXF1ZXN0OwogCi0jaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShD
Rk5FVFdPUkspCisjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRlVSTENPTk5FQ1RJT04pCiB0
eXBlZGVmIGNvbnN0IHN0cnVjdCBfQ0ZVUkxSZXF1ZXN0KiBDRlVSTFJlcXVlc3RSZWY7CiB0eXBl
ZGVmIGNvbnN0IHN0cnVjdCBfX0NGVVJMU3RvcmFnZVNlc3Npb24qIENGVVJMU3RvcmFnZVNlc3Np
b25SZWY7CiAjZW5kaWYKQEAgLTYxLDEzICs2MSw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQog
ICAgIAotI2lmIFVTRShDRk5FVFdPUkspCi0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgV0VCQ09S
RV9FWFBPUlQgUmVzb3VyY2VSZXF1ZXN0KE5TVVJMUmVxdWVzdCAqKTsKLSAgICB2b2lkIHVwZGF0
ZU5TVVJMUmVxdWVzdCgpOwotICAgIHZvaWQgY2xlYXJPclVwZGF0ZU5TVVJMUmVxdWVzdCgpOwot
I2VuZGlmCi0KKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogICAgIFJlc291cmNlUmVxdWVzdChD
RlVSTFJlcXVlc3RSZWYgY2ZSZXF1ZXN0KQogICAgICAgICA6IFJlc291cmNlUmVxdWVzdEJhc2Uo
KQogICAgICAgICAsIG1fY2ZSZXF1ZXN0KGNmUmVxdWVzdCkKQEAgLTg0LDExICs3OCw3IEBAIHB1
YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZUZyb21EZWxlZ2F0ZVByZXNlcnZp
bmdPbGRQcm9wZXJ0aWVzKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogCiAjaWYgUExBVEZPUk0o
Q09DT0EpCi0jaWYgVVNFKENGTkVUV09SSykKLSAgICBib29sIGVuY29kaW5nUmVxdWlyZXNQbGF0
Zm9ybURhdGEoKSBjb25zdCB7IHJldHVybiBtX2h0dHBCb2R5IHx8IG1fY2ZSZXF1ZXN0OyB9Ci0j
ZWxzZQogICAgIGJvb2wgZW5jb2RpbmdSZXF1aXJlc1BsYXRmb3JtRGF0YSgpIGNvbnN0IHsgcmV0
dXJuIG1faHR0cEJvZHkgfHwgbV9uc1JlcXVlc3Q7IH0KLSNlbmRpZgogICAgIFdFQkNPUkVfRVhQ
T1JUIE5TVVJMUmVxdWVzdCAqbnNVUkxSZXF1ZXN0KEhUVFBCb2R5VXBkYXRlUG9saWN5KSBjb25z
dDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBDRlN0cmluZ1JlZiBpc1VzZXJJbml0aWF0
ZWRLZXkoKTsKQEAgLTEwNSw3ICs5NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldERvbWFpbkZv
ckNhY2hlUGFydGl0aW9uKGNvbnN0IFN0cmluZyYgZG9tYWluKSB7IG1fY2FjaGVQYXJ0aXRpb24g
PSBwYXJ0aXRpb25OYW1lKGRvbWFpbik7IH0KICNlbmRpZgogCi0jaWYgUExBVEZPUk0oQ09DT0Ep
IHx8IFVTRShDRk5FVFdPUkspCisjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRlVSTENPTk5F
Q1RJT04pCiAgICAgV0VCQ09SRV9FWFBPUlQgQ0ZVUkxSZXF1ZXN0UmVmIGNmVVJMUmVxdWVzdChI
VFRQQm9keVVwZGF0ZVBvbGljeSkgY29uc3Q7CiAgICAgdm9pZCBzZXRTdG9yYWdlU2Vzc2lvbihD
RlVSTFN0b3JhZ2VTZXNzaW9uUmVmKTsKICNlbmRpZgpAQCAtMTI1LDcgKzExNSw3IEBAIHByaXZh
dGU6CiAKICAgICB2b2lkIGRvUGxhdGZvcm1TZXRBc0lzb2xhdGVkQ29weShjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmKTsKIAotI2lmIFVTRShDRk5FVFdPUkspCisjaWYgVVNFKENGVVJMQ09OTkVDVElP
TikKICAgICBSZXRhaW5QdHI8Q0ZVUkxSZXF1ZXN0UmVmPiBtX2NmUmVxdWVzdDsKICNlbmRpZgog
I2lmIFBMQVRGT1JNKENPQ09BKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHAJKHJldmlzaW9u
IDIwNzAzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VS
ZXF1ZXN0Q0ZOZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBACiAjaW5jbHVk
ZSAiUHVibGljU3VmZml4LmgiCiAjZW5kaWYKIAotI2lmIFVTRShDRk5FVFdPUkspCisjaWYgVVNF
KENGVVJMQ09OTkVDVElPTikKICNpbmNsdWRlICJGb3JtRGF0YVN0cmVhbUNGTmV0LmgiCiAjaW5j
bHVkZSA8Q0ZOZXR3b3JrL0NGVVJMUmVxdWVzdFByaXYuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9D
U3RyaW5nLmg+CkBAIC01OSwxMiArNTksMTEgQEAgYm9vbCBSZXNvdXJjZVJlcXVlc3Q6OnNfaHR0
cFBpcGVsaW5pbmdFbgogYm9vbCBSZXNvdXJjZVJlcXVlc3Q6OnNfaHR0cFBpcGVsaW5pbmdFbmFi
bGVkID0gZmFsc2U7CiAjZW5kaWYKIAotI2lmIFVTRShDRk5FVFdPUkspCisjaWYgVVNFKENGVVJM
Q09OTkVDVElPTikKIAogdHlwZWRlZiB2b2lkICgqQ0ZVUkxSZXF1ZXN0U2V0Q29udGVudERpc3Bv
c2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5RnVuY3Rpb24pKENGTXV0YWJsZVVSTFJlcXVlc3RS
ZWYsIENGQXJyYXlSZWYpOwogdHlwZWRlZiBDRkFycmF5UmVmICgqQ0ZVUkxSZXF1ZXN0Q29weUNv
bnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheUZ1bmN0aW9uKShDRlVSTFJlcXVl
c3RSZWYpOwogCi0jaWYgUExBVEZPUk0oV0lOKQogc3RhdGljIEhNT0RVTEUgZmluZENGTmV0d29y
a01vZHVsZSgpCiB7CiAjaWZuZGVmIERFQlVHX0FMTApAQCAtODMsMTcgKzgyLDYgQEAgc3RhdGlj
IENGVVJMUmVxdWVzdENvcHlDb250ZW50RGlzcG9zaXRpbwogewogICAgIHJldHVybiByZWludGVy
cHJldF9jYXN0PENGVVJMUmVxdWVzdENvcHlDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxi
YWNrQXJyYXlGdW5jdGlvbj4oR2V0UHJvY0FkZHJlc3MoZmluZENGTmV0d29ya01vZHVsZSgpLCAi
X0NGVVJMUmVxdWVzdENvcHlDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXki
KSk7CiB9Ci0jZWxpZiBQTEFURk9STShDT0NPQSkKLXN0YXRpYyBDRlVSTFJlcXVlc3RTZXRDb250
ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXlGdW5jdGlvbiBmaW5kQ0ZVUkxSZXF1
ZXN0U2V0Q29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5RnVuY3Rpb24oKQot
ewotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PENGVVJMUmVxdWVzdFNldENvbnRlbnREaXNw
b3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheUZ1bmN0aW9uPihkbHN5bShSVExEX0RFRkFVTFQs
ICJfQ0ZVUkxSZXF1ZXN0U2V0Q29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5
IikpOwotfQotCi1zdGF0aWMgQ0ZVUkxSZXF1ZXN0Q29weUNvbnRlbnREaXNwb3NpdGlvbkVuY29k
aW5nRmFsbGJhY2tBcnJheUZ1bmN0aW9uIGZpbmRDRlVSTFJlcXVlc3RDb3B5Q29udGVudERpc3Bv
c2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5RnVuY3Rpb24oKQotewotICAgIHJldHVybiByZWlu
dGVycHJldF9jYXN0PENGVVJMUmVxdWVzdENvcHlDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0Zh
bGxiYWNrQXJyYXlGdW5jdGlvbj4oZGxzeW0oUlRMRF9ERUZBVUxULCAiX0NGVVJMUmVxdWVzdENv
cHlDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXkiKSk7Ci19Ci0jZW5kaWYK
IAogc3RhdGljIHZvaWQgc2V0Q29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5
KENGTXV0YWJsZVVSTFJlcXVlc3RSZWYgcmVxdWVzdCwgQ0ZBcnJheVJlZiBmYWxsYmFja0FycmF5
KQogewpAQCAtMTU2LDEwICsxNDQsNiBAQCB2b2lkIFJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVQ
bGF0Zm9ybVJlCiAgICAgaWYgKHJlc291cmNlUHJpb3JpdGllc0VuYWJsZWQoKSkKICAgICAgICAg
Q0ZVUkxSZXF1ZXN0U2V0UmVxdWVzdFByaW9yaXR5KGNmUmVxdWVzdCwgdG9QbGF0Zm9ybVJlcXVl
c3RQcmlvcml0eShwcmlvcml0eSgpKSk7CiAKLSNpZiAhUExBVEZPUk0oV0lOKQotICAgIF9DRlVS
TFJlcXVlc3RTZXRQcm90b2NvbFByb3BlcnR5KGNmUmVxdWVzdCwga0NGVVJMUmVxdWVzdEFsbG93
QWxsUE9TVENhY2hpbmcsIGtDRkJvb2xlYW5UcnVlKTsKLSNlbmRpZgotCiAgICAgc2V0SGVhZGVy
RmllbGRzKGNmUmVxdWVzdCwgaHR0cEhlYWRlckZpZWxkcygpKTsKIAogICAgIENGVVJMUmVxdWVz
dFNldFNob3VsZEhhbmRsZUhUVFBDb29raWVzKGNmUmVxdWVzdCwgYWxsb3dDb29raWVzKCkpOwpA
QCAtMTg0LDkgKzE2OCw2IEBAIHZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVBsYXRmb3Jt
UmUKICNlbmRpZgogCiAgICAgbV9jZlJlcXVlc3QgPSBhZG9wdENGKGNmUmVxdWVzdCk7Ci0jaWYg
UExBVEZPUk0oQ09DT0EpCi0gICAgY2xlYXJPclVwZGF0ZU5TVVJMUmVxdWVzdCgpOwotI2VuZGlm
CiB9CiAKIHZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVBsYXRmb3JtSFRUUEJvZHkoKQpA
QCAtMjE5LDMwICsyMDAsMTIgQEAgdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUGxhdGZv
cm1IVAogICAgIH0KIAogICAgIG1fY2ZSZXF1ZXN0ID0gYWRvcHRDRihjZlJlcXVlc3QpOwotI2lm
IFBMQVRGT1JNKENPQ09BKQotICAgIGNsZWFyT3JVcGRhdGVOU1VSTFJlcXVlc3QoKTsKLSNlbmRp
ZgogfQogCiB2b2lkIFJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVSZXNvdXJjZVJlcXVlc3QoKQog
ewogICAgIGlmICghbV9jZlJlcXVlc3QpIHsKLSNpZiBQTEFURk9STShJT1MpCi0gICAgICAgIC8v
IDxyZGFyOi8vcHJvYmxlbS85OTEzNTI2PgotICAgICAgICAvLyBUaGlzIGlzIGEgaGFjayB0byBt
aW1pYyB0aGUgc3VidGxlIGJlaGF2aW91ciBvZiB0aGUgRm91bmRhdGlvbiBiYXNlZCBSZXNvdXJj
ZVJlcXVlc3QKLSAgICAgICAgLy8gY29kZS4gVGhhdCBjb2RlIGRvZXMgbm90IHJlc2V0IG1faHR0
cE1ldGhvZCBpZiB0aGUgTlNVUkxSZXF1ZXN0IGlzIG5pbC4gSSBmaWxlZAotICAgICAgICAvLyA8
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY2MzM2PiB0byB0cmFjayB0
aGF0LgotICAgICAgICAvLyBBbm90aGVyIHJlbGF0ZWQgYnVnIGlzIDxodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjYzNTA+LiBGaXhpbmcgdGhhdAotICAgICAgICAvLyB3
b3VsZCwgaWRlYWxseSwgYWxsb3cgdXMgdG8gbm90IGhhdmUgdGhpcyBoYWNrLiBCdXQgdW5mb3J0
dW5hdGVseSB0aGF0IGNhdXNlZCBsYXlvdXQgdGVzdAotICAgICAgICAvLyBmYWlsdXJlcy4KLSAg
ICAgICAgLy8gUmVtb3ZhbCBvZiB0aGlzIGhhY2sgaXMgdHJhY2tlZCBieSA8cmRhcjovL3Byb2Js
ZW0vOTk3MDQ5OT4uCi0KLSAgICAgICAgU3RyaW5nIGh0dHBNZXRob2QgPSBtX2h0dHBNZXRob2Q7
CiAgICAgICAgICp0aGlzID0gUmVzb3VyY2VSZXF1ZXN0KCk7Ci0gICAgICAgIG1faHR0cE1ldGhv
ZCA9IGh0dHBNZXRob2Q7Ci0jZWxzZQotICAgICAgICAqdGhpcyA9IFJlc291cmNlUmVxdWVzdCgp
OwotI2VuZGlmCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTMxNywxMiArMjgwLDkgQEAg
dm9pZCBSZXNvdXJjZVJlcXVlc3Q6OnNldFN0b3JhZ2VTZXNzaW9uKAogICAgIGlmIChzdG9yYWdl
U2Vzc2lvbikKICAgICAgICAgX0NGVVJMUmVxdWVzdFNldFN0b3JhZ2VTZXNzaW9uKGNmUmVxdWVz
dCwgc3RvcmFnZVNlc3Npb24pOwogICAgIG1fY2ZSZXF1ZXN0ID0gYWRvcHRDRihjZlJlcXVlc3Qp
OwotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIGNsZWFyT3JVcGRhdGVOU1VSTFJlcXVlc3QoKTsK
LSNlbmRpZgogfQogCi0jZW5kaWYgLy8gVVNFKENGTkVUV09SSykKKyNlbmRpZiAvLyBVU0UoQ0ZV
UkxDT05ORUNUSU9OKQogCiB2b2lkIFJlc291cmNlUmVxdWVzdDo6dXBkYXRlRnJvbURlbGVnYXRl
UHJlc2VydmluZ09sZFByb3BlcnRpZXMoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBkZWxlZ2F0ZVBy
b3ZpZGVkUmVxdWVzdCkKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2YvUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdENGTmV0LmgJKHJldmlzaW9uIDIwNzAz
OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0
Q0ZOZXQuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsOCArMjMsNyBAQAogICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
CiAgKi8KIAotI2lmbmRlZiBSZXNvdXJjZVJlcXVlc3RDRk5ldF9oCi0jZGVmaW5lIFJlc291cmNl
UmVxdWVzdENGTmV0X2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQ0ZOZXR3b3JrU1BJLmgi
CiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkUHJpb3JpdHkuaCIKQEAgLTMzLDcgKzMyLDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiAKLSNpZiBVU0UoQ0ZO
RVRXT1JLKQorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiB2b2lkIGdldFJlc291cmNlUmVxdWVz
dChSZXNvdXJjZVJlcXVlc3QmLCBDRlVSTFJlcXVlc3RSZWYpOwogQ0ZVUkxSZXF1ZXN0UmVmIGNm
VVJMUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICNlbmRpZgpAQCAtNzgsNSArNzcs
MyBAQCBpbmxpbmUgQ0ZVUkxSZXF1ZXN0UHJpb3JpdHkgdG9QbGF0Zm9ybVJlCiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIFJlc291cmNlUmVxdWVzdENGTmV0X2gKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXNwb25zZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3Vy
Y2VSZXNwb25zZS5oCShyZXZpc2lvbiAyMDcwMzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NmL1Jlc291cmNlUmVzcG9uc2UuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyAr
MjgsNyBAQAogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2VCYXNlLmgiCiAjaW5jbHVkZSA8d3Rm
L1JldGFpblB0ci5oPgogCi0jaWYgVVNFKENGTkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNU
SU9OKQogI2luY2x1ZGUgIkNGTmV0d29ya1NQSS5oIgogI2VuZGlmCiAKQEAgLTQzLDE2ICs0Mywx
MyBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotI2lmIFVTRShDRk5FVFdPUkspCisjaWYgVVNF
KENGVVJMQ09OTkVDVElPTikKICAgICBSZXNvdXJjZVJlc3BvbnNlKENGVVJMUmVzcG9uc2VSZWYg
Y2ZSZXNwb25zZSkKICAgICAgICAgOiBtX2luaXRMZXZlbChVbmluaXRpYWxpemVkKQogICAgICAg
ICAsIG1fY2ZSZXNwb25zZShjZlJlc3BvbnNlKQogICAgIHsKICAgICAgICAgbV9pc051bGwgPSAh
Y2ZSZXNwb25zZTsKICAgICB9Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgV0VCQ09SRV9FWFBP
UlQgUmVzb3VyY2VSZXNwb25zZShOU1VSTFJlc3BvbnNlICopOwotI2VuZGlmCiAjZWxzZQogICAg
IFJlc291cmNlUmVzcG9uc2UoTlNVUkxSZXNwb25zZSAqbnNSZXNwb25zZSkKICAgICAgICAgOiBt
X2luaXRMZXZlbChVbmluaXRpYWxpemVkKQpAQCAtODQsNyArODEsNyBAQCBwdWJsaWM6CiAgICAg
ICAgICAqLwogICAgIH0KIAotI2lmIFVTRShDRk5FVFdPUkspCisjaWYgVVNFKENGVVJMQ09OTkVD
VElPTikKICAgICBXRUJDT1JFX0VYUE9SVCBDRlVSTFJlc3BvbnNlUmVmIGNmVVJMUmVzcG9uc2Uo
KSBjb25zdDsKICNlbmRpZgogI2lmIFBMQVRGT1JNKENPQ09BKQpAQCAtMTA4LDEwICsxMDUsOSBA
QCBwcml2YXRlOgogCiAgICAgdW5zaWduZWQgbV9pbml0TGV2ZWwgOiAzOwogCi0jaWYgVVNFKENG
TkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogICAgIG11dGFibGUgUmV0YWluUHRy
PENGVVJMUmVzcG9uc2VSZWY+IG1fY2ZSZXNwb25zZTsKLSNlbmRpZgotI2lmIFBMQVRGT1JNKENP
Q09BKQorI2VsaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgbXV0YWJsZSBSZXRhaW5QdHI8TlNVUkxS
ZXNwb25zZT4gbV9uc1Jlc3BvbnNlOwogI2VuZGlmCiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlc3BvbnNlQ0ZOZXQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXNwb25zZUNG
TmV0LmNwcAkocmV2aXNpb24gMjA3MDM5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jZi9SZXNvdXJjZVJlc3BvbnNlQ0ZOZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3
ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25z
ZS5oIgogCi0jaWYgVVNFKENGTkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogCiAj
aW5jbHVkZSAiQ0ZOZXR3b3JrU1BJLmgiCiAKQEAgLTM0LDEwICszNCw2IEBACiAjaW5jbHVkZSAi
TUlNRVR5cGVSZWdpc3RyeS5oIgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAotI2lmIFBM
QVRGT1JNKENPQ09BKQotI2luY2x1ZGUgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKLSNlbmRp
ZgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBDRlN0cmluZ1JlZiBjb25zdCBjb21t
b25IZWFkZXJGaWVsZHNbXSA9IHsKQEAgLTQ3LDEzICs0Myw5IEBAIHN0YXRpYyBDRlN0cmluZ1Jl
ZiBjb25zdCBjb21tb25IZWFkZXJGaWUKIENGVVJMUmVzcG9uc2VSZWYgUmVzb3VyY2VSZXNwb25z
ZTo6Y2ZVUkxSZXNwb25zZSgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2NmUmVzcG9uc2UgJiYgIW1f
aXNOdWxsKSB7Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgICAgIG5zVVJMUmVzcG9uc2UoKTsK
LSNlbHNlCiAgICAgICAgIFJldGFpblB0cjxDRlVSTFJlZj4gdXJsID0gbV91cmwuY3JlYXRlQ0ZV
UkwoKTsKICAgICAgICAgLy8gRklYTUU6IFRoaXMgY3JlYXRlcyBhIHZlcnkgaW5jb21wbGV0ZSBD
RlVSTFJlc3BvbnNlLCB3aGljaCBkb2VzIG5vdCBldmVuIGhhdmUgYSBzdGF0dXMgY29kZS4KICAg
ICAgICAgbV9jZlJlc3BvbnNlID0gYWRvcHRDRihDRlVSTFJlc3BvbnNlQ3JlYXRlKDAsIHVybC5n
ZXQoKSwgbV9taW1lVHlwZS5zdHJpbmcoKS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBtX2V4cGVj
dGVkQ29udGVudExlbmd0aCwgbV90ZXh0RW5jb2RpbmdOYW1lLnN0cmluZygpLmNyZWF0ZUNGU3Ry
aW5nKCkuZ2V0KCksIGtDRlVSTENhY2hlU3RvcmFnZUFsbG93ZWQpKTsKLSNlbmRpZgogICAgIH0K
IAogICAgIHJldHVybiBtX2NmUmVzcG9uc2UuZ2V0KCk7CkBAIC0xMTYsMTIgKzEwOCwxMCBAQCB2
b2lkIFJlc291cmNlUmVzcG9uc2U6OnBsYXRmb3JtTGF6eUluaXQoCiAgICAgbV9pbml0TGV2ZWwg
PSBpbml0TGV2ZWw7CiB9CiAKLSNpZiAhUExBVEZPUk0oQ09DT0EpCiBDZXJ0aWZpY2F0ZUluZm8g
UmVzb3VyY2VSZXNwb25zZTo6cGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm8oKSBjb25zdAogewogICAg
IHJldHVybiB7IH07CiB9Ci0jZW5kaWYKIAogU3RyaW5nIFJlc291cmNlUmVzcG9uc2U6OnBsYXRm
b3JtU3VnZ2VzdGVkRmlsZW5hbWUoKSBjb25zdAogewpAQCAtMTQyLDQgKzEzMiw0IEBAIGJvb2wg
UmVzb3VyY2VSZXNwb25zZTo6cGxhdGZvcm1Db21wYXJlKGMKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCi0jZW5kaWYgLy8gVVNFKENGTkVUV09SSykKKyNlbmRpZiAvLyBVU0UoQ0ZVUkxDT05O
RUNUSU9OKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9TeW5jaHJv
bm91c0xvYWRlckNsaWVudENGTmV0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NmL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50Q0ZOZXQuY3BwCShyZXZp
c2lvbiAyMDcwMzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1N5bmNo
cm9ub3VzTG9hZGVyQ2xpZW50Q0ZOZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU3luY2hyb25vdXNMb2FkZXJDbGll
bnQuaCIKIAotI2lmIFVTRShDRk5FVFdPUkspCisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKIAog
I2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VI
YW5kbGUuaCIKQEAgLTQ4LDQgKzQ4LDQgQEAgUmVzb3VyY2VFcnJvciBTeW5jaHJvbm91c0xvYWRl
ckNsaWVudDo6cAogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZiAvLyBVU0UoQ0ZO
RVRXT1JLKQorI2VuZGlmIC8vIFVTRShDRlVSTENPTk5FQ1RJT04pCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1N5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENv
bm5lY3Rpb25EZWxlZ2F0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9TeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVs
ZWdhdGUuY3BwCShyZXZpc2lvbiAyMDcwMzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NmL1N5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDEyICsyNiwxMyBAQAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIlN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25E
ZWxlZ2F0ZS5oIgogCi0jaWYgVVNFKENGTkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9O
KQogCiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25DRi5oIgogI2luY2x1ZGUgIkF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlLmgiCiAjaW5jbHVkZSAiTG9hZGVyUnVuTG9vcENGLmgiCiAjaW5jbHVkZSAi
TG9nZ2luZy5oIgorI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKICNpbmNsdWRlICJSZXNv
dXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlQ2xpZW50LmgiCiAjaW5jbHVk
ZSAiUmVzb3VyY2VSZXNwb25zZS5oIgpAQCAtNDAsMjAgKzQxLDYgQEAKICNpbmNsdWRlIDx3dGYv
dGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKLSNpZiBQ
TEFURk9STShDT0NPQSkKLSNpbmNsdWRlICJDRk5ldHdvcmtTUEkuaCIKLSNpbmNsdWRlICJXZWJD
b3JlU3lzdGVtSW50ZXJmYWNlLmgiCi0jaW5jbHVkZSAiV2ViQ29yZVVSTFJlc3BvbnNlLmgiCi0j
ZW5kaWYgLy8gUExBVEZPUk0oQ09DT0EpCi0KLSNpZiBQTEFURk9STShJT1MpCi0jaW5jbHVkZSAi
V2ViQ29yZVRocmVhZC5oIgotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKLQotI2lmIFBMQVRGT1JN
KFdJTikKLSNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCi0jZW5kaWYgLy8gUExBVEZPUk0o
V0lOKQotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVD
RlVSTENvbm5lY3Rpb25EZWxlZ2F0ZTo6U3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29u
bmVjdGlvbkRlbGVnYXRlKFJlc291cmNlSGFuZGxlKiBoYW5kbGUpCkBAIC02MywyMCArNTAsMTEg
QEAgU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbgogCiB2b2lkIFN5bmNo
cm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZTo6c2V0dXBSZXF1ZXN0
KENGTXV0YWJsZVVSTFJlcXVlc3RSZWYgcmVxdWVzdCkKIHsKLSNpZiBQTEFURk9STShJT1MpCi0g
ICAgQ0ZVUkxSZXF1ZXN0U2V0U2hvdWxkU3RhcnRTeW5jaHJvbm91c2x5KHJlcXVlc3QsIDEpOwot
I2VuZGlmCiB9CiAKIHZvaWQgU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlv
bkRlbGVnYXRlOjpzZXR1cENvbm5lY3Rpb25TY2hlZHVsaW5nKENGVVJMQ29ubmVjdGlvblJlZiBj
b25uZWN0aW9uKQogewotI2lmIFBMQVRGT1JNKFdJTikKICAgICBDRlVSTENvbm5lY3Rpb25TY2hl
ZHVsZVdpdGhDdXJyZW50TWVzc2FnZVF1ZXVlKGNvbm5lY3Rpb24pOwotI2VsaWYgUExBVEZPUk0o
SU9TKQotICAgIENGVVJMQ29ubmVjdGlvblNjaGVkdWxlV2l0aFJ1bkxvb3AoY29ubmVjdGlvbiwg
V2ViVGhyZWFkUnVuTG9vcCgpLCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUpOwotI2Vsc2UKLSAgICBD
RlVSTENvbm5lY3Rpb25TY2hlZHVsZVdpdGhSdW5Mb29wKGNvbm5lY3Rpb24sIENGUnVuTG9vcEdl
dEN1cnJlbnQoKSwga0NGUnVuTG9vcERlZmF1bHRNb2RlKTsKLSNlbmRpZgogICAgIENGVVJMQ29u
bmVjdGlvblNjaGVkdWxlRG93bmxvYWRXaXRoUnVuTG9vcChjb25uZWN0aW9uLCBsb2FkZXJSdW5M
b29wKCksIGtDRlJ1bkxvb3BEZWZhdWx0TW9kZSk7CiB9CiAKQEAgLTEwMyw3ICs4MSw2IEBAIENG
VVJMUmVxdWVzdFJlZiBTeW5jaHJvbm91c1Jlc291cmNlSGFuZGwKICAgICByZXR1cm4gbmV3Q0ZS
ZXF1ZXN0OwogfQogCi0jaWYgIVBMQVRGT1JNKENPQ09BKQogc3RhdGljIHZvaWQgc2V0RGVmYXVs
dE1JTUVUeXBlKENGVVJMUmVzcG9uc2VSZWYgcmVzcG9uc2UpCiB7CiAgICAgc3RhdGljIENGU3Ry
aW5nUmVmIGRlZmF1bHRNSU1FVHlwZVN0cmluZyA9IGRlZmF1bHRNSU1FVHlwZSgpLmNyZWF0ZUNG
U3RyaW5nKCkubGVha1JlZigpOwpAQCAtMTMzLDcgKzExMCw2IEBAIHN0YXRpYyB2b2lkIGFkanVz
dE1JTUVUeXBlSWZOZWNlc3NhcnkoQ0YKICAgICBpZiAocmVzdWx0ICE9IG9yaWdpbmFsUmVzdWx0
KQogICAgICAgICBDRlVSTFJlc3BvbnNlU2V0TUlNRVR5cGUoY2ZSZXNwb25zZSwgcmVzdWx0Lmdl
dCgpKTsKIH0KLSNlbmRpZiAvLyAhUExBVEZPUk0oQ09DT0EpCiAKIHZvaWQgU3luY2hyb25vdXNS
ZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlOjpkaWRSZWNlaXZlUmVzcG9uc2Uo
Q0ZVUkxDb25uZWN0aW9uUmVmIGNvbm5lY3Rpb24sIENGVVJMUmVzcG9uc2VSZWYgY2ZSZXNwb25z
ZSkKIHsKQEAgLTE0MiwyMSArMTE4LDYgQEAgdm9pZCBTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxl
Q0ZVUkxDb25uZQogICAgIGlmICghbV9oYW5kbGUtPmNsaWVudCgpKQogICAgICAgICByZXR1cm47
CiAKLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICAvLyBBdm9pZCBNSU1FIHR5cGUgc25pZmZpbmcg
aWYgdGhlIHJlc3BvbnNlIGNvbWVzIGJhY2sgYXMgMzA0IE5vdCBNb2RpZmllZC4KLSAgICBhdXRv
IG1zZyA9IENGVVJMUmVzcG9uc2VHZXRIVFRQUmVzcG9uc2UoY2ZSZXNwb25zZSk7Ci0gICAgaW50
IHN0YXR1c0NvZGUgPSBtc2cgPyBDRkhUVFBNZXNzYWdlR2V0UmVzcG9uc2VTdGF0dXNDb2RlKG1z
ZykgOiAwOwotCi0gICAgaWYgKHN0YXR1c0NvZGUgIT0gMzA0KSB7Ci0gICAgICAgIGJvb2wgaXNN
YWluUmVzb3VyY2VMb2FkID0gbV9oYW5kbGUtPmZpcnN0UmVxdWVzdCgpLnJlcXVlc3RlcigpID09
IFJlc291cmNlUmVxdWVzdDo6UmVxdWVzdGVyOjpNYWluOwotICAgICAgICBhZGp1c3RNSU1FVHlw
ZUlmTmVjZXNzYXJ5KGNmUmVzcG9uc2UsIGlzTWFpblJlc291cmNlTG9hZCk7Ci0gICAgfQotCi0j
aWYgIVBMQVRGT1JNKElPUykKLSAgICBpZiAoX0NGVVJMUmVxdWVzdENvcHlQcm90b2NvbFByb3Bl
cnR5Rm9yS2V5KG1faGFuZGxlLT5maXJzdFJlcXVlc3QoKS5jZlVSTFJlcXVlc3QoRG9Ob3RVcGRh
dGVIVFRQQm9keSksIENGU1RSKCJGb3JjZUhUTUxNSU1FVHlwZSIpKSkKLSAgICAgICAgQ0ZVUkxS
ZXNwb25zZVNldE1JTUVUeXBlKGNmUmVzcG9uc2UsIENGU1RSKCJ0ZXh0L2h0bWwiKSk7Ci0jZW5k
aWYgLy8gIVBMQVRGT1JNKElPUykKLSNlbHNlCiAgICAgaWYgKCFDRlVSTFJlc3BvbnNlR2V0TUlN
RVR5cGUoY2ZSZXNwb25zZSkpCiAgICAgICAgIGFkanVzdE1JTUVUeXBlSWZOZWNlc3NhcnkoY2ZS
ZXNwb25zZSk7CiAKQEAgLTE2NSw3ICsxMjYsNiBAQCB2b2lkIFN5bmNocm9ub3VzUmVzb3VyY2VI
YW5kbGVDRlVSTENvbm5lCiAgICAgICAgIEFTU0VSVCghbV9oYW5kbGUtPnNob3VsZENvbnRlbnRT
bmlmZigpKTsKICAgICAgICAgc2V0RGVmYXVsdE1JTUVUeXBlKGNmUmVzcG9uc2UpOwogICAgIH0K
LSNlbmRpZgogCiAjaWYgVVNFKFFVSUNLX0xPT0spCiAgICAgbV9oYW5kbGUtPnNldFF1aWNrTG9v
a0hhbmRsZShRdWlja0xvb2tIYW5kbGU6OmNyZWF0ZShtX2hhbmRsZSwgdGhpcywgY2ZSZXNwb25z
ZSkpOwpAQCAtMTc0LDcgKzEzNCw3IEBAIHZvaWQgU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNG
VVJMQ29ubmUKICNlbmRpZgogICAgIAogICAgIFJlc291cmNlUmVzcG9uc2UgcmVzb3VyY2VSZXNw
b25zZShjZlJlc3BvbnNlKTsKLSNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKFdFQl9USU1J
TkcpCisjaWYgRU5BQkxFKFdFQl9USU1JTkcpCiAgICAgUmVzb3VyY2VIYW5kbGU6OmdldENvbm5l
Y3Rpb25UaW1pbmdEYXRhKGNvbm5lY3Rpb24sIHJlc291cmNlUmVzcG9uc2UubmV0d29ya0xvYWRU
aW1pbmcoKSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShjb25uZWN0aW9uKTsKQEAgLTIyNCw3
ICsxODQsNiBAQCB2b2lkIFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lCiAKIENG
Q2FjaGVkVVJMUmVzcG9uc2VSZWYgU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVj
dGlvbkRlbGVnYXRlOjp3aWxsQ2FjaGVSZXNwb25zZShDRkNhY2hlZFVSTFJlc3BvbnNlUmVmIGNh
Y2hlZFJlc3BvbnNlKQogewotI2lmIFBMQVRGT1JNKFdJTikKICAgICAvLyBXb3JrYXJvdW5kIGZv
ciA8cmRhcjovL3Byb2JsZW0vNjMwMDk5MD4gQ2FjaGluZyBkb2VzIG5vdCByZXNwZWN0IFZhcnkg
SFRUUCBoZWFkZXIuCiAgICAgLy8gRklYTUU6IFdlYkNvcmUgY2FjaGUgaGFzIGlzc3VlcyB3aXRo
IFZhcnksIHRvbyAoYnVnIDU4Nzk3LCBidWcgNzE1MDkpLgogICAgIENGVVJMUmVzcG9uc2VSZWYg
d3JhcHBlZFJlc3BvbnNlID0gQ0ZDYWNoZWRVUkxSZXNwb25zZUdldFdyYXBwZWRSZXNwb25zZShj
YWNoZWRSZXNwb25zZSk7CkBAIC0yMzQsMTYgKzE5Myw4IEBAIENGQ2FjaGVkVVJMUmVzcG9uc2VS
ZWYgU3luY2hyb25vdXNSZXNvdXIKICAgICAgICAgaWYgKHZhcnlWYWx1ZSkKICAgICAgICAgICAg
IHJldHVybiAwOwogICAgIH0KLSNlbmRpZiAvLyBQTEFURk9STShXSU4pCi0KLSNpZiBQTEFURk9S
TShXSU4pCiAgICAgaWYgKG1faGFuZGxlLT5jbGllbnQoKSAmJiAhbV9oYW5kbGUtPmNsaWVudCgp
LT5zaG91bGRDYWNoZVJlc3BvbnNlKG1faGFuZGxlLCBjYWNoZWRSZXNwb25zZSkpCiAgICAgICAg
IHJldHVybiAwOwotI2Vsc2UKLSAgICBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmIG5ld1Jlc3BvbnNl
ID0gbV9oYW5kbGUtPmNsaWVudCgpLT53aWxsQ2FjaGVSZXNwb25zZShtX2hhbmRsZSwgY2FjaGVk
UmVzcG9uc2UpOwotICAgIGlmIChuZXdSZXNwb25zZSAhPSBjYWNoZWRSZXNwb25zZSkKLSAgICAg
ICAgcmV0dXJuIG5ld1Jlc3BvbnNlOwotI2VuZGlmCiAKICAgICBDRlJldGFpbihjYWNoZWRSZXNw
b25zZSk7CiAgICAgcmV0dXJuIGNhY2hlZFJlc3BvbnNlOwpAQCAtMjgwLDE0ICsyMzEsNyBAQCBC
b29sZWFuIFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvCiAKICAgICBMT0coTmV0d29y
aywgIkNGTmV0IC0gU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVn
YXRlOjpjYW5SZXNwb25kVG9Qcm90ZWN0aW9uU3BhY2UoaGFuZGxlPSVwICglcykiLCBtX2hhbmRs
ZSwgbV9oYW5kbGUtPmZpcnN0UmVxdWVzdCgpLnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkp
OwogCi0jaWYgUExBVEZPUk0oSU9TKQotICAgIFByb3RlY3Rpb25TcGFjZSBjb3JlUHJvdGVjdGlv
blNwYWNlID0gUHJvdGVjdGlvblNwYWNlKHByb3RlY3Rpb25TcGFjZSk7Ci0gICAgaWYgKGNvcmVQ
cm90ZWN0aW9uU3BhY2UuYXV0aGVudGljYXRpb25TY2hlbWUoKSA9PSBQcm90ZWN0aW9uU3BhY2VB
dXRoZW50aWNhdGlvblNjaGVtZVVua25vd24pCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBy
ZXR1cm4gbV9oYW5kbGUtPmNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoY29y
ZVByb3RlY3Rpb25TcGFjZSk7Ci0jZWxzZQogICAgIHJldHVybiBtX2hhbmRsZS0+Y2FuQXV0aGVu
dGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShjb3JlKHByb3RlY3Rpb25TcGFjZSkpOwotI2Vu
ZGlmCiB9CiAjZW5kaWYgLy8gVVNFKFBST1RFQ1RJT05fU1BBQ0VfQVVUSF9DQUxMQkFDSykKIApJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9TeW5jaHJvbm91c1Jlc291
cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1N5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVS
TENvbm5lY3Rpb25EZWxlZ2F0ZS5oCShyZXZpc2lvbiAyMDcwMzkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1N5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5l
Y3Rpb25EZWxlZ2F0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMywxMCArMjMsOSBAQAogICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENv
bm5lY3Rpb25EZWxlZ2F0ZV9oCi0jZGVmaW5lIFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVS
TENvbm5lY3Rpb25EZWxlZ2F0ZV9oCisjcHJhZ21hIG9uY2UKIAotI2lmIFVTRShDRk5FVFdPUksp
CisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKIAogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlQ0ZV
UkxDb25uZWN0aW9uRGVsZWdhdGUuaCIKIApAQCAtNjcsNiArNjYsNCBAQCBwcml2YXRlOgogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlLgogCi0jZW5kaWYgLy8gVVNFKENGTkVUV09SSykKLQotI2Vu
ZGlmIC8vIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVfaAorI2VuZGlmIC8v
IFVTRShDRlVSTENPTk5FQ1RJT04pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NvY29hL0NyZWRlbnRpYWxDb2NvYS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY29jb2EvQ3JlZGVudGlhbENvY29hLmgJKHJldmlzaW9uIDIwNzAz
OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvQ3JlZGVudGlhbENv
Y29hLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDE3ICsyMywxMiBAQAogICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgQ3JlZGVudGlhbENvY29hX2gKLSNk
ZWZpbmUgQ3JlZGVudGlhbENvY29hX2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQ3JlZGVu
dGlhbEJhc2UuaCIKICNpbmNsdWRlIDxTZWN1cml0eS9TZWNCYXNlLmg+CiAjaW5jbHVkZSA8d3Rm
L1JldGFpblB0ci5oPgogCi0jaWYgVVNFKENGTkVUV09SSykKLSNpbmNsdWRlICJDRk5ldHdvcmtT
UEkuaCIKLSNlbmRpZgotCiBPQkpDX0NMQVNTIE5TVVJMQ3JlZGVudGlhbDsKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpAQCAtNTIsMTggKzQ3LDEyIEBAIHB1YmxpYzoKIAogICAgIENyZWRlbnRpYWwo
Y29uc3QgQ3JlZGVudGlhbCYsIENyZWRlbnRpYWxQZXJzaXN0ZW5jZSk7CiAKLSNpZiBVU0UoQ0ZO
RVRXT1JLKQotICAgIGV4cGxpY2l0IENyZWRlbnRpYWwoQ0ZVUkxDcmVkZW50aWFsUmVmKTsKLSNl
bmRpZgogICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IENyZWRlbnRpYWwoTlNVUkxDcmVkZW50
aWFsICopOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc0VtcHR5KCkgY29uc3Q7CiAKICAg
ICBib29sIGVuY29kaW5nUmVxdWlyZXNQbGF0Zm9ybURhdGEoKSBjb25zdCB7IHJldHVybiBtX25z
Q3JlZGVudGlhbCAmJiBlbmNvZGluZ1JlcXVpcmVzUGxhdGZvcm1EYXRhKG1fbnNDcmVkZW50aWFs
LmdldCgpKTsgfQogCi0jaWYgVVNFKENGTkVUV09SSykKLSAgICBDRlVSTENyZWRlbnRpYWxSZWYg
Y2ZDcmVkZW50aWFsKCkgY29uc3Q7Ci0jZW5kaWYKICAgICBXRUJDT1JFX0VYUE9SVCBOU1VSTENy
ZWRlbnRpYWwgKm5zQ3JlZGVudGlhbCgpIGNvbnN0OwogCiAgICAgc3RhdGljIGJvb2wgcGxhdGZv
cm1Db21wYXJlKGNvbnN0IENyZWRlbnRpYWwmLCBjb25zdCBDcmVkZW50aWFsJik7CkBAIC03NSw1
ICs2NCwzIEBAIHByaXZhdGU6CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRp
ZiAvLyBDcmVkZW50aWFsQ29jb2FfaApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jb2NvYS9DcmVkZW50aWFsQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9DcmVkZW50aWFsQ29jb2EubW0JKHJldmlzaW9uIDIw
NzAzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvQ3JlZGVudGlh
bENvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxMyArMjYsNiBAQAogI2ltcG9ydCAiY29u
ZmlnLmgiCiAjaW1wb3J0ICJDcmVkZW50aWFsQ29jb2EuaCIKIAotI2lmIFVTRShDRk5FVFdPUksp
Ci1AaW50ZXJmYWNlIE5TVVJMQ3JlZGVudGlhbCAoV2ViRGV0YWlscykKLS0gKGlkKV9pbml0V2l0
aENGVVJMQ3JlZGVudGlhbDooQ0ZVUkxDcmVkZW50aWFsUmVmKWNyZWRlbnRpYWw7Ci0tIChDRlVS
TENyZWRlbnRpYWxSZWYpIF9DRlVSTENyZWRlbnRpYWw7Ci1AZW5kCi0jZW5kaWYKLQogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBzdGF0aWMgTlNVUkxDcmVkZW50aWFsUGVyc2lzdGVuY2UgdG9OU1VS
TENyZWRlbnRpYWxQZXJzaXN0ZW5jZShDcmVkZW50aWFsUGVyc2lzdGVuY2UgcGVyc2lzdGVuY2Up
CkBAIC04NCwyNiArNzcsMTIgQEAgQ3JlZGVudGlhbDo6Q3JlZGVudGlhbChjb25zdCBDcmVkZW50
aWFsJgogICAgIH0KIH0KIAotI2lmIFVTRShDRk5FVFdPUkspCi1DcmVkZW50aWFsOjpDcmVkZW50
aWFsKENGVVJMQ3JlZGVudGlhbFJlZiBjcmVkZW50aWFsKQotICAgIDogQ3JlZGVudGlhbChhZG9w
dE5TKFtbTlNVUkxDcmVkZW50aWFsIGFsbG9jXSBfaW5pdFdpdGhDRlVSTENyZWRlbnRpYWw6Y3Jl
ZGVudGlhbF0pLmdldCgpKQotewotfQotI2VuZGlmCi0KIENyZWRlbnRpYWw6OkNyZWRlbnRpYWwo
TlNVUkxDcmVkZW50aWFsICpjcmVkZW50aWFsKQogICAgIDogQ3JlZGVudGlhbEJhc2UoY3JlZGVu
dGlhbC51c2VyLCBjcmVkZW50aWFsLnBhc3N3b3JkLCB0b0NyZWRlbnRpYWxQZXJzaXN0ZW5jZShj
cmVkZW50aWFsLnBlcnNpc3RlbmNlKSkKICAgICAsIG1fbnNDcmVkZW50aWFsKGNyZWRlbnRpYWwp
CiB7CiB9CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotQ0ZVUkxDcmVkZW50aWFsUmVmIENyZWRlbnRp
YWw6OmNmQ3JlZGVudGlhbCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFtuc0NyZWRlbnRpYWwoKSBf
Q0ZVUkxDcmVkZW50aWFsXTsKLX0KLSNlbmRpZgotCiBOU1VSTENyZWRlbnRpYWwgKkNyZWRlbnRp
YWw6Om5zQ3JlZGVudGlhbCgpIGNvbnN0CiB7CiAgICAgaWYgKG1fbnNDcmVkZW50aWFsKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9Qcm90ZWN0aW9uU3BhY2VD
b2NvYS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29j
b2EvUHJvdGVjdGlvblNwYWNlQ29jb2EuaAkocmV2aXNpb24gMjA3MDM5KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9Qcm90ZWN0aW9uU3BhY2VDb2NvYS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMywxNiArMjMsMTEgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFByb3RlY3Rpb25TcGFjZUNvY29hX2gKLSNkZWZpbmUg
UHJvdGVjdGlvblNwYWNlQ29jb2FfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJQcm90ZWN0
aW9uU3BhY2VCYXNlLmgiCiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogCi0jaWYgVVNFKENG
TkVUV09SSykKLXR5cGVkZWYgc3RydWN0IF9DRlVSTFByb3RlY3Rpb25TcGFjZSogQ0ZVUkxQcm90
ZWN0aW9uU3BhY2VSZWY7Ci0jZW5kaWYKLQogT0JKQ19DTEFTUyBOU1VSTFByb3RlY3Rpb25TcGFj
ZTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDcsOSArNDIsNiBAQCBwdWJsaWM6CiAKICAg
ICBQcm90ZWN0aW9uU3BhY2UoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlIGRlbGV0ZWRW
YWx1ZSkgOiBQcm90ZWN0aW9uU3BhY2VCYXNlKGRlbGV0ZWRWYWx1ZSkgeyB9CiAKLSNpZiBVU0Uo
Q0ZORVRXT1JLKQotICAgIGV4cGxpY2l0IFByb3RlY3Rpb25TcGFjZShDRlVSTFByb3RlY3Rpb25T
cGFjZVJlZik7Ci0jZW5kaWYKICAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBQcm90ZWN0aW9u
U3BhY2UoTlNVUkxQcm90ZWN0aW9uU3BhY2UgKik7CiAKICAgICBzdGF0aWMgYm9vbCBwbGF0Zm9y
bUNvbXBhcmUoY29uc3QgUHJvdGVjdGlvblNwYWNlJiBhLCBjb25zdCBQcm90ZWN0aW9uU3BhY2Um
IGIpOwpAQCAtNTgsOSArNTAsNiBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCBib29s
IHJlY2VpdmVzQ3JlZGVudGlhbFNlY3VyZWx5KCkgY29uc3Q7CiAKLSNpZiBVU0UoQ0ZORVRXT1JL
KQotICAgIENGVVJMUHJvdGVjdGlvblNwYWNlUmVmIGNmU3BhY2UoKSBjb25zdDsKLSNlbmRpZgog
ICAgIFdFQkNPUkVfRVhQT1JUIE5TVVJMUHJvdGVjdGlvblNwYWNlICpuc1NwYWNlKCkgY29uc3Q7
CiAKIHByaXZhdGU6CkBAIC03MCw1ICs1OSwzIEBAIHByaXZhdGU6CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBQcm90ZWN0aW9uU3BhY2VDb2NvYV9oCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Byb3RlY3Rpb25TcGFjZUNvY29h
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2Ev
UHJvdGVjdGlvblNwYWNlQ29jb2EubW0JKHJldmlzaW9uIDIwNzAzOSkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUHJvdGVjdGlvblNwYWNlQ29jb2EubW0JKHdvcmtp
bmcgY29weSkKQEAgLTI2LDIyICsyNiw5IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQg
IlByb3RlY3Rpb25TcGFjZUNvY29hLmgiCiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotQGludGVyZmFj
ZSBOU1VSTFByb3RlY3Rpb25TcGFjZSAoV2ViRGV0YWlscykKLS0gKENGVVJMUHJvdGVjdGlvblNw
YWNlUmVmKSBfQ0ZVUkxQcm90ZWN0aW9uU3BhY2U7Ci0tIChpZClfaW5pdFdpdGhDRlVSTFByb3Rl
Y3Rpb25TcGFjZTooQ0ZVUkxQcm90ZWN0aW9uU3BhY2VSZWYpY2ZQcm90U3BhY2U7Ci1AZW5kCi0j
ZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0jaWYgVVNFKENGTkVUV09SSykKLVByb3Rl
Y3Rpb25TcGFjZTo6UHJvdGVjdGlvblNwYWNlKENGVVJMUHJvdGVjdGlvblNwYWNlUmVmIHNwYWNl
KQotICAgIDogUHJvdGVjdGlvblNwYWNlKGFkb3B0TlMoW1tOU1VSTFByb3RlY3Rpb25TcGFjZSBh
bGxvY10gX2luaXRXaXRoQ0ZVUkxQcm90ZWN0aW9uU3BhY2U6c3BhY2VdKS5nZXQoKSkKLXsKLX0K
LSNlbmRpZgotCiBzdGF0aWMgUHJvdGVjdGlvblNwYWNlU2VydmVyVHlwZSB0eXBlKE5TVVJMUHJv
dGVjdGlvblNwYWNlICpzcGFjZSkKIHsKICAgICBpZiAoW3NwYWNlIGlzUHJveHldKSB7CkBAIC0x
MDUsMTMgKzkyLDYgQEAgUHJvdGVjdGlvblNwYWNlOjpQcm90ZWN0aW9uU3BhY2UoTlNVUkxQcgog
ICAgIG1fbnNTcGFjZSA9IHNwYWNlOwogfQogCi0jaWYgVVNFKENGTkVUV09SSykKLUNGVVJMUHJv
dGVjdGlvblNwYWNlUmVmIFByb3RlY3Rpb25TcGFjZTo6Y2ZTcGFjZSgpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIFtuc1NwYWNlKCkgX0NGVVJMUHJvdGVjdGlvblNwYWNlXTsKLX0KLSNlbmRpZgotCiBO
U1VSTFByb3RlY3Rpb25TcGFjZSAqUHJvdGVjdGlvblNwYWNlOjpuc1NwYWNlKCkgY29uc3QKIHsK
ICAgICBpZiAobV9uc1NwYWNlKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVxdWVzdENvY29hLm1tCShyZXZp
c2lvbiAyMDcwMzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jl
c291cmNlUmVxdWVzdENvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC01MywxNSArNTMsOSBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBOU1VSTFJlcXVlc3QgKlJlc291cmNlUmVxdWVzdDo6bnNVUkxS
ZXF1ZXN0KEhUVFBCb2R5VXBkYXRlUG9saWN5IGJvZHlQb2xpY3kpIGNvbnN0CiB7CiAgICAgdXBk
YXRlUGxhdGZvcm1SZXF1ZXN0KGJvZHlQb2xpY3kpOwotI2lmIFVTRShDRk5FVFdPUkspCi0gICAg
aWYgKCFtX25zUmVxdWVzdCkKLSAgICAgICAgY29uc3RfY2FzdDxSZXNvdXJjZVJlcXVlc3QqPih0
aGlzKS0+dXBkYXRlTlNVUkxSZXF1ZXN0KCk7Ci0jZW5kaWYKICAgICByZXR1cm4gW1ttX25zUmVx
dWVzdC5nZXQoKSByZXRhaW5dIGF1dG9yZWxlYXNlXTsKIH0KIAotI2lmICFVU0UoQ0ZORVRXT1JL
KQotCiBDRlVSTFJlcXVlc3RSZWYgUmVzb3VyY2VSZXF1ZXN0OjpjZlVSTFJlcXVlc3QoSFRUUEJv
ZHlVcGRhdGVQb2xpY3kgYm9keVBvbGljeSkgY29uc3QKIHsKICAgICByZXR1cm4gW25zVVJMUmVx
dWVzdChib2R5UG9saWN5KSBfQ0ZVUkxSZXF1ZXN0XTsKQEAgLTIxNCw4ICsyMDgsNiBAQCB2b2lk
IFJlc291cmNlUmVxdWVzdDo6c2V0U3RvcmFnZVNlc3Npb24oCiAgICAgbV9uc1JlcXVlc3QgPSBh
ZG9wdE5TKHdrQ29weVJlcXVlc3RXaXRoU3RvcmFnZVNlc3Npb24oc3RvcmFnZVNlc3Npb24sIG1f
bnNSZXF1ZXN0LmdldCgpKSk7CiB9CiAKLSNlbmRpZiAvLyBVU0UoQ0ZORVRXT1JLKQotCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXNwb25zZUNvY29h
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2Ev
UmVzb3VyY2VSZXNwb25zZUNvY29hLm1tCShyZXZpc2lvbiAyMDcwMzkpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVzcG9uc2VDb2NvYS5tbQkod29y
a2luZyBjb3B5KQpAQCAtNzUsMTMgKzc1LDggQEAgdm9pZCBSZXNvdXJjZVJlc3BvbnNlOjpkaXNh
YmxlTGF6eUluaXRpYQogCiBDZXJ0aWZpY2F0ZUluZm8gUmVzb3VyY2VSZXNwb25zZTo6cGxhdGZv
cm1DZXJ0aWZpY2F0ZUluZm8oKSBjb25zdAogewotI2lmIFVTRShDRk5FVFdPUkspCi0gICAgQVNT
RVJUKG1fY2ZSZXNwb25zZSk7Ci0gICAgQ0ZVUkxSZXNwb25zZVJlZiBjZlJlc3BvbnNlID0gbV9j
ZlJlc3BvbnNlLmdldCgpOwotI2Vsc2UKICAgICBBU1NFUlQobV9uc1Jlc3BvbnNlKTsKICAgICBD
RlVSTFJlc3BvbnNlUmVmIGNmUmVzcG9uc2UgPSBbbV9uc1Jlc3BvbnNlIF9DRlVSTFJlc3BvbnNl
XTsKLSNlbmRpZgogCiAgICAgaWYgKCFjZlJlc3BvbnNlKQogICAgICAgICByZXR1cm4geyB9OwpA
QCAtMTE0LDM1ICsxMDksNiBAQCBDZXJ0aWZpY2F0ZUluZm8gUmVzb3VyY2VSZXNwb25zZTo6cGxh
dGZvCiAjZW5kaWYKIH0KIAotI2lmIFVTRShDRk5FVFdPUkspCi0KLU5TVVJMUmVzcG9uc2UgKlJl
c291cmNlUmVzcG9uc2U6Om5zVVJMUmVzcG9uc2UoKSBjb25zdAotewotICAgIGlmICghbV9uc1Jl
c3BvbnNlICYmICFtX2NmUmVzcG9uc2UgJiYgIW1faXNOdWxsKSB7Ci0gICAgICAgIGluaXROU1VS
TFJlc3BvbnNlKCk7Ci0gICAgICAgIG1fY2ZSZXNwb25zZSA9IFttX25zUmVzcG9uc2UuZ2V0KCkg
X0NGVVJMUmVzcG9uc2VdOwotICAgICAgICByZXR1cm4gbV9uc1Jlc3BvbnNlLmdldCgpOwotICAg
IH0KLQotICAgIGlmICghbV9jZlJlc3BvbnNlKQotICAgICAgICByZXR1cm4gbmlsOwotCi0gICAg
aWYgKCFtX25zUmVzcG9uc2UpCi0gICAgICAgIG1fbnNSZXNwb25zZSA9IFtOU1VSTFJlc3BvbnNl
IF9yZXNwb25zZVdpdGhDRlVSTFJlc3BvbnNlOm1fY2ZSZXNwb25zZS5nZXQoKV07Ci0KLSAgICBy
ZXR1cm4gbV9uc1Jlc3BvbnNlLmdldCgpOwotfQotCi1SZXNvdXJjZVJlc3BvbnNlOjpSZXNvdXJj
ZVJlc3BvbnNlKE5TVVJMUmVzcG9uc2UqIG5zUmVzcG9uc2UpCi0gICAgOiBtX2luaXRMZXZlbChV
bmluaXRpYWxpemVkKQotICAgICwgbV9jZlJlc3BvbnNlKFtuc1Jlc3BvbnNlIF9DRlVSTFJlc3Bv
bnNlXSkKLSAgICAsIG1fbnNSZXNwb25zZShuc1Jlc3BvbnNlKQotewotICAgIG1faXNOdWxsID0g
IW5zUmVzcG9uc2U7Ci19Ci0KLSNlbHNlCi0KIHN0YXRpYyBOU1N0cmluZyogY29uc3QgY29tbW9u
SGVhZGVyRmllbGRzW10gPSB7CiAgICAgQCJBZ2UiLCBAIkNhY2hlLUNvbnRyb2wiLCBAIkNvbnRl
bnQtVHlwZSIsIEAiRGF0ZSIsIEAiRXRhZyIsIEAiRXhwaXJlcyIsIEAiTGFzdC1Nb2RpZmllZCIs
IEAiUHJhZ21hIgogfTsKQEAgLTI0Miw4ICsyMDgsNiBAQCBib29sIFJlc291cmNlUmVzcG9uc2U6
OnBsYXRmb3JtQ29tcGFyZShjCiAgICAgcmV0dXJuIGEubnNVUkxSZXNwb25zZSgpID09IGIubnNV
UkxSZXNwb25zZSgpOwogfQogCi0jZW5kaWYgLy8gVVNFKENGTkVUV09SSykKLQogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gUExBVEZPUk0oQ09DT0EpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9RdWlja0xvb2suaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9RdWlja0xvb2suaAkocmV2aXNpb24g
MjA3MDM5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUXVpY2tMb29r
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDEwICszMyw2IEBACiAjaW1wb3J0IDxvYmpjL29iamMt
cnVudGltZS5oPgogI2ltcG9ydCA8d3RmL1JlZlB0ci5oPgogCi0jaWYgVVNFKENGTkVUV09SSykK
LSNpbmNsdWRlICJDRk5ldHdvcmtTUEkuaCIKLSNlbmRpZgotCiBPQkpDX0NMQVNTIE5TRGF0YTsK
IE9CSkNfQ0xBU1MgTlNEaWN0aW9uYXJ5OwogT0JKQ19DTEFTUyBOU0ZpbGVIYW5kbGU7CkBAIC04
MSw5ICs3Nyw2IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBzaG91
bGRDcmVhdGVGb3JNSU1FVHlwZShjb25zdCBTdHJpbmcmKTsKIAogICAgIHN0YXRpYyBzdGQ6OnVu
aXF1ZV9wdHI8UXVpY2tMb29rSGFuZGxlPiBjcmVhdGUoUmVzb3VyY2VIYW5kbGUqLCBOU1VSTENv
bm5lY3Rpb24gKiwgTlNVUkxSZXNwb25zZSAqLCBpZCBkZWxlZ2F0ZSk7Ci0jaWYgVVNFKENGTkVU
V09SSykKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFF1aWNrTG9va0hhbmRsZT4gY3JlYXRl
KFJlc291cmNlSGFuZGxlKiwgU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlv
bkRlbGVnYXRlKiwgQ0ZVUkxSZXNwb25zZVJlZik7Ci0jZW5kaWYKICAgICAvLyBGSVhNRTogVXNl
IG9mIFJlc291cmNlTG9hZGVyIGhlcmUgaXMgYSBwbGF0Zm9ybSB2aW9sYXRpb24uCiAgICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxRdWlja0xvb2tIYW5kbGU+IGNyZWF0
ZShSZXNvdXJjZUxvYWRlciYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKIApAQCAtOTUsOSAr
ODgsNiBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRGYWlsKCk7CiAKICAg
ICBXRUJDT1JFX0VYUE9SVCBOU1VSTFJlc3BvbnNlICpuc1Jlc3BvbnNlKCk7Ci0jaWYgVVNFKENG
TkVUV09SSykKLSAgICBDRlVSTFJlc3BvbnNlUmVmIGNmUmVzcG9uc2UoKTsKLSNlbmRpZgogCiAg
ICAgdm9pZCBzZXRDbGllbnQoUGFzc1JlZlB0cjxRdWlja0xvb2tIYW5kbGVDbGllbnQ+IGNsaWVu
dCkgeyBtX2NsaWVudCA9IGNsaWVudDsgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2lvcy9RdWlja0xvb2subW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9pb3MvUXVpY2tMb29rLm1tCShyZXZpc2lvbiAyMDcwMzkpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9RdWlja0xvb2subW0JKHdvcmtpbmcg
Y29weSkKQEAgLTE4NSw4MSArMTg1LDYgQEAgY29uc3QgY2hhciogV2ViQ29yZTo6UUxQcmV2aWV3
UHJvdG9jb2woKQogICAgIHJldHVybiBwcmV2aWV3UHJvdG9jb2wuZ2V0KCkuZGF0YSgpOwogfQog
Ci0jaWYgVVNFKENGTkVUV09SSykKLS8vIFRoZSB3YXkgUXVpY2tMb29rIHdvcmtzIGlzIHdlIHBh
c3MgaXQgYW4gTlNVUkxDb25uZWN0aW9uRGVsZWdhdGUgY2FsbGJhY2sgb2JqZWN0IGF0IGNyZWF0
aW9uCi0vLyB0aW1lLiBUaGVuIHdlIHBhc3MgaXQgYWxsIHRoZSBkYXRhIGFzIHdlIHJlY2VpdmUg
aXQuIE9uY2Ugd2UndmUgZG93bmxvYWRlZCB0aGUgZnVsbCBVUkwsCi0vLyBRdWlja0xvb2sgdHVy
bnMgYXJvdW5kIGFuZCBzZW5kIHVzLCB0aHJvdWdoIHRoaXMgZGVsZWdhdGUsIHRoZSBIVE1MIHZl
cnNpb24gb2YgdGhlIGZpbGUgd2hpY2ggd2UKLS8vIHBhc3Mgb24gdG8gV2ViQ29yZS4gVGhlIGZs
YWcgbV9maW5pc2hlZExvYWRpbmdEYXRhSW50b0NvbnZlcnRlciBpbiBRdWlja0xvb2tIYW5kbGUg
ZGVjaWRlcwotLy8gd2hldGhlciB0byBwYXNzIHRoZSBkYXRhIHRvIFF1aWNrTG9vayBvciBXZWJD
b3JlLgotLy8KLS8vIFRoaXMgd29ya3MgZmluZSB3aGVuIHVzaW5nIE5TIEFQSXMsIGJ1dCB3aGVu
IHVzaW5nIENGTmV0d29yaywgd2UgZG9uJ3QgaGF2ZSBhIE5TVVJMQ29ubmVjdGlvbkRlbGVnYXRl
LgotLy8gU28gd2UgY3JlYXRlIFdlYlF1aWNrTG9va0hhbmRsZUFzRGVsZWdhdGUgYXMgYW4gaW50
ZXJtZWRpYXRlIGRlbGVnYXRlIG9iamVjdCBhbmQgcGFzcyBpdCB0bwotLy8gUUxQcmV2aWV3Q29u
dmVydGVyLiBUaGUgcHJveHkgZGVsZWdhdGUgdGhlbiBmb3J3YXJkcyB0aGUgbWVzc2FnZXMgb24g
dG8gdGhlIENGTmV0d29yayBjb2RlLgotQGludGVyZmFjZSBXZWJRdWlja0xvb2tIYW5kbGVBc0Rl
bGVnYXRlIDogTlNPYmplY3QgPE5TVVJMQ29ubmVjdGlvbkRlbGVnYXRlLCBXZWJDb3JlUmVzb3Vy
Y2VMb2FkZXJEZWxlZ2F0ZT4gewotICAgIFJlZlB0cjxTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxl
Q0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU+IG1fY29ubmVjdGlvbkRlbGVnYXRlOwotfQotCi0tIChp
ZClpbml0V2l0aENvbm5lY3Rpb25EZWxlZ2F0ZTooU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNG
VVJMQ29ubmVjdGlvbkRlbGVnYXRlKiljb25uZWN0aW9uRGVsZWdhdGU7Ci1AZW5kCi0KLUBpbXBs
ZW1lbnRhdGlvbiBXZWJRdWlja0xvb2tIYW5kbGVBc0RlbGVnYXRlCi0tIChpZClpbml0V2l0aENv
bm5lY3Rpb25EZWxlZ2F0ZTooU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlv
bkRlbGVnYXRlKiljb25uZWN0aW9uRGVsZWdhdGUKLXsKLSAgICBzZWxmID0gW3N1cGVyIGluaXRd
OwotICAgIGlmICghc2VsZikKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICBtX2Nvbm5lY3Rpb25E
ZWxlZ2F0ZSA9IGNvbm5lY3Rpb25EZWxlZ2F0ZTsKLSAgICByZXR1cm4gc2VsZjsKLX0KLQotLSAo
dm9pZCljb25uZWN0aW9uOihOU1VSTENvbm5lY3Rpb24gKiljb25uZWN0aW9uIGRpZFJlY2VpdmVE
YXRhQXJyYXk6KE5TQXJyYXkgKilkYXRhQXJyYXkKLXsKLSAgICBVTlVTRURfUEFSQU0oY29ubmVj
dGlvbik7Ci0gICAgaWYgKCFtX2Nvbm5lY3Rpb25EZWxlZ2F0ZSkKLSAgICAgICAgcmV0dXJuOwot
ICAgIExPRyhOZXR3b3JrLCAiV2ViUXVpY2tMb29rSGFuZGxlQXNEZWxlZ2F0ZTo6ZGlkUmVjZWl2
ZURhdGFBcnJheSgpIik7Ci0gICAgbV9jb25uZWN0aW9uRGVsZWdhdGUtPmRpZFJlY2VpdmVEYXRh
QXJyYXkocmVpbnRlcnByZXRfY2FzdDxDRkFycmF5UmVmPihkYXRhQXJyYXkpKTsKLX0KLQotLSAo
dm9pZCljb25uZWN0aW9uOihOU1VSTENvbm5lY3Rpb24gKiljb25uZWN0aW9uIGRpZFJlY2VpdmVE
YXRhOihOU0RhdGEgKilkYXRhIGxlbmd0aFJlY2VpdmVkOihsb25nIGxvbmcpbGVuZ3RoUmVjZWl2
ZWQKLXsKLSAgICBVTlVTRURfUEFSQU0oY29ubmVjdGlvbik7Ci0gICAgaWYgKCFtX2Nvbm5lY3Rp
b25EZWxlZ2F0ZSkKLSAgICAgICAgcmV0dXJuOwotICAgIExPRyhOZXR3b3JrLCAiV2ViUXVpY2tM
b29rSGFuZGxlQXNEZWxlZ2F0ZTo6ZGlkUmVjZWl2ZURhdGEoKSAtIGRhdGEgbGVuZ3RoID0gJWxk
IiwgKGxvbmcpW2RhdGEgbGVuZ3RoXSk7Ci0KLSAgICAvLyBRdWlja0xvb2sgY29kZSBzZW5kcyB1
cyBhIG5pbCBkYXRhIGF0IHRpbWVzLiBUaGUgY2hlY2sgYmVsb3cgaXMgdGhlIHNhbWUgYXMgdGhl
IG9uZSBpbgotICAgIC8vIFJlc291cmNlSGFuZGxlTWFjLmNwcCBhZGRlZCBmb3IgYSBkaWZmZXJl
bnQgYnVnLgotICAgIGlmICghW2RhdGEgbGVuZ3RoXSkKLSAgICAgICAgcmV0dXJuOwotICAgIG1f
Y29ubmVjdGlvbkRlbGVnYXRlLT5kaWRSZWNlaXZlRGF0YShyZWludGVycHJldF9jYXN0PENGRGF0
YVJlZj4oZGF0YSksIHN0YXRpY19jYXN0PGludD4obGVuZ3RoUmVjZWl2ZWQpKTsKLX0KLQotLSAo
dm9pZCljb25uZWN0aW9uRGlkRmluaXNoTG9hZGluZzooTlNVUkxDb25uZWN0aW9uICopY29ubmVj
dGlvbgotewotICAgIFVOVVNFRF9QQVJBTShjb25uZWN0aW9uKTsKLSAgICBpZiAoIW1fY29ubmVj
dGlvbkRlbGVnYXRlKQotICAgICAgICByZXR1cm47Ci0gICAgTE9HKE5ldHdvcmssICJXZWJRdWlj
a0xvb2tIYW5kbGVBc0RlbGVnYXRlOjpkaWRGaW5pc2hMb2FkaW5nKCkiKTsKLSAgICBtX2Nvbm5l
Y3Rpb25EZWxlZ2F0ZS0+ZGlkRmluaXNoTG9hZGluZygpOwotfQotCi0tICh2b2lkKWNvbm5lY3Rp
b246KE5TVVJMQ29ubmVjdGlvbiAqKWNvbm5lY3Rpb24gZGlkRmFpbFdpdGhFcnJvcjooTlNFcnJv
ciAqKWVycm9yCi17Ci0gICAgVU5VU0VEX1BBUkFNKGNvbm5lY3Rpb24pOwotICAgIGlmICghbV9j
b25uZWN0aW9uRGVsZWdhdGUpCi0gICAgICAgIHJldHVybjsKLSAgICBMT0coTmV0d29yaywgIldl
YlF1aWNrTG9va0hhbmRsZUFzRGVsZWdhdGU6OmRpZEZhaWwoKSIpOwotICAgIG1fY29ubmVjdGlv
bkRlbGVnYXRlLT5kaWRGYWlsKHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZFcnJvclJlZj4oZXJyb3IpKTsK
LX0KLQotLSAodm9pZClkZXRhY2hIYW5kbGUKLXsKLSAgICBtX2Nvbm5lY3Rpb25EZWxlZ2F0ZSA9
IG51bGxwdHI7Ci19Ci1AZW5kCi0jZW5kaWYKLQogQGludGVyZmFjZSBXZWJSZXNvdXJjZUxvYWRl
clF1aWNrTG9va0RlbGVnYXRlIDogTlNPYmplY3QgPE5TVVJMQ29ubmVjdGlvbkRlbGVnYXRlLCBX
ZWJDb3JlUmVzb3VyY2VMb2FkZXJEZWxlZ2F0ZT4gewogICAgIFJlZlB0cjxSZXNvdXJjZUxvYWRl
cj4gX3Jlc291cmNlTG9hZGVyOwogICAgIEJPT0wgX2hhc1NlbnREaWRSZWNlaXZlUmVzcG9uc2U7
CkBAIC00MTEsMjYgKzMzNiw2IEBAIHN0ZDo6dW5pcXVlX3B0cjxRdWlja0xvb2tIYW5kbGU+IFF1
aWNrTG8KICAgICByZXR1cm4gcXVpY2tMb29rSGFuZGxlOwogfQogCi0jaWYgVVNFKENGTkVUV09S
SykKLXN0ZDo6dW5pcXVlX3B0cjxRdWlja0xvb2tIYW5kbGU+IFF1aWNrTG9va0hhbmRsZTo6Y3Jl
YXRlKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVS
TENvbm5lY3Rpb25EZWxlZ2F0ZSogY29ubmVjdGlvbkRlbGVnYXRlLCBDRlVSTFJlc3BvbnNlUmVm
IGNmUmVzcG9uc2UpCi17Ci0gICAgQVNTRVJUX0FSRyhoYW5kbGUsIGhhbmRsZSk7Ci0gICAgaWYg
KGhhbmRsZS0+Zmlyc3RSZXF1ZXN0KCkucmVxdWVzdGVyKCkgIT0gUmVzb3VyY2VSZXF1ZXN0OjpS
ZXF1ZXN0ZXI6Ok1haW4gfHwgIVtRTFByZXZpZXdHZXRTdXBwb3J0ZWRNSU1FVHlwZXNTZXQoKSBj
b250YWluc09iamVjdDooTlNTdHJpbmcgKilDRlVSTFJlc3BvbnNlR2V0TUlNRVR5cGUoY2ZSZXNw
b25zZSldKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIE5TVVJMUmVzcG9uc2UgKm5z
UmVzcG9uc2UgPSBbTlNVUkxSZXNwb25zZSBfcmVzcG9uc2VXaXRoQ0ZVUkxSZXNwb25zZTpjZlJl
c3BvbnNlXTsKLSAgICBXZWJRdWlja0xvb2tIYW5kbGVBc0RlbGVnYXRlICpkZWxlZ2F0ZSA9IFtb
W1dlYlF1aWNrTG9va0hhbmRsZUFzRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoQ29ubmVjdGlvbkRl
bGVnYXRlOmNvbm5lY3Rpb25EZWxlZ2F0ZV0gYXV0b3JlbGVhc2VdOwotICAgIHN0ZDo6dW5pcXVl
X3B0cjxRdWlja0xvb2tIYW5kbGU+IHF1aWNrTG9va0hhbmRsZShuZXcgUXVpY2tMb29rSGFuZGxl
KFtoYW5kbGUtPmZpcnN0UmVxdWVzdCgpLm5zVVJMUmVxdWVzdChEb05vdFVwZGF0ZUhUVFBCb2R5
KSBVUkxdLCBuaWwsIG5zUmVzcG9uc2UsIGRlbGVnYXRlKSk7Ci0gICAgaGFuZGxlLT5jbGllbnQo
KS0+ZGlkQ3JlYXRlUXVpY2tMb29rSGFuZGxlKCpxdWlja0xvb2tIYW5kbGUpOwotICAgIHJldHVy
biBxdWlja0xvb2tIYW5kbGU7Ci19Ci0KLUNGVVJMUmVzcG9uc2VSZWYgUXVpY2tMb29rSGFuZGxl
OjpjZlJlc3BvbnNlKCkKLXsKLSAgICByZXR1cm4gW21fbnNSZXNwb25zZSBfQ0ZVUkxSZXNwb25z
ZV07Ci19Ci0jZW5kaWYKLQogYm9vbCBRdWlja0xvb2tIYW5kbGU6OnNob3VsZENyZWF0ZUZvck1J
TUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiB7CiAgICAgcmV0dXJuIFtRTFByZXZpZXdH
ZXRTdXBwb3J0ZWRNSU1FVHlwZXNTZXQoKSBjb250YWluc09iamVjdDptaW1lVHlwZV07CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9SZXNvdXJjZUhhbmRsZUlPUy5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9SZXNv
dXJjZUhhbmRsZUlPUy5tbQkocmV2aXNpb24gMjA3MDM5KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9pb3MvUmVzb3VyY2VIYW5kbGVJT1MubW0JKG5vbmV4aXN0ZW50KQpAQCAt
MSwzOSArMCwwIEBACi0vLwotLy8gIFJlc291cmNlSGFuZGxlSVBob25lLm1tCi0vLyAgV2ViQ29y
ZQotLy8KLS8vICBDb3B5cmlnaHQgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0vLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIlJlc291cmNlSGFuZGxlSW50ZXJu
YWwuaCIKLQotI2lmIFVTRShDRk5FVFdPUkspCi0KLSNpbXBvcnQgPENGTmV0d29yay9DRlNvY2tl
dFN0cmVhbVByaXYuaD4KLSNpbXBvcnQgPEZvdW5kYXRpb24vTlNVUkxSZXF1ZXN0UHJpdmF0ZS5o
PgotCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1D
Rk11dGFibGVEaWN0aW9uYXJ5UmVmIFJlc291cmNlSGFuZGxlOjpjcmVhdGVTU0xQcm9wZXJ0aWVz
RnJvbU5TVVJMUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCi17Ci0gICAg
TlNTdHJpbmcgKmhvc3QgPSByZXF1ZXN0LnVybCgpLmhvc3QoKTsKLSAgICBOU0FycmF5ICpjZXJ0
QXJyYXkgPSBbTlNVUkxSZXF1ZXN0IGFsbG93c1NwZWNpZmljSFRUUFNDZXJ0aWZpY2F0ZUZvckhv
c3Q6aG9zdF07Ci0gICAgQk9PTCBhbGxvd3NBbnlDZXJ0aWZpY2F0ZSA9IFtOU1VSTFJlcXVlc3Qg
YWxsb3dzQW55SFRUUFNDZXJ0aWZpY2F0ZUZvckhvc3Q6aG9zdF07Ci0gICAgaWYgKCFjZXJ0QXJy
YXkgJiYgIWFsbG93c0FueUNlcnRpZmljYXRlKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIENG
TXV0YWJsZURpY3Rpb25hcnlSZWYgc3NsUHJvcHMgPSBDRkRpY3Rpb25hcnlDcmVhdGVNdXRhYmxl
KGtDRkFsbG9jYXRvckRlZmF1bHQsIDAsICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywg
JmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpOwotICAgIGlmIChjZXJ0QXJyYXkpCi0g
ICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHNzbFByb3BzLCBfa0NGU3RyZWFtU1NMVHJ1c3Rl
ZExlYWZDZXJ0aWZpY2F0ZXMsIChDRlR5cGVSZWYpIGNlcnRBcnJheSk7Ci0KLSAgICBpZiAoYWxs
b3dzQW55Q2VydGlmaWNhdGUpCi0gICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHNzbFByb3Bz
LCBrQ0ZTdHJlYW1TU0xWYWxpZGF0ZXNDZXJ0aWZpY2F0ZUNoYWluLCBrQ0ZCb29sZWFuRmFsc2Up
OwotICAgIHJldHVybiBzc2xQcm9wczsKLX0KLQotfQotCi0jZW5kaWYKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1Jlc291cmNlUmVxdWVzdElPUy5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9SZXNvdXJjZVJlcXVl
c3RJT1MubW0JKHJldmlzaW9uIDIwNzAzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvaW9zL1Jlc291cmNlUmVxdWVzdElPUy5tbQkobm9uZXhpc3RlbnQpCkBAIC0xLDc3ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUsIEluYy4gIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNp
bXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiUmVzb3VyY2VSZXF1ZXN0LmgiCi0KLSNpZiBQTEFU
Rk9STShJT1MpCi0KLUBpbnRlcmZhY2UgTlNVUkxSZXF1ZXN0IChXZWJOU1VSTFJlcXVlc3REZXRh
aWxzKQotLSAoQ0ZVUkxSZXF1ZXN0UmVmKV9DRlVSTFJlcXVlc3Q7Ci0tIChpZClfaW5pdFdpdGhD
RlVSTFJlcXVlc3Q6KENGVVJMUmVxdWVzdFJlZilyZXF1ZXN0OwotQGVuZAotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLSNpZiBVU0UoQ0ZORVRXT1JLKQotCi1SZXNvdXJjZVJlcXVlc3Q6OlJlc291
cmNlUmVxdWVzdChOU1VSTFJlcXVlc3QgKm5zUmVxdWVzdCkKLSAgICA6IFJlc291cmNlUmVxdWVz
dEJhc2UoKQotICAgICwgbV9jZlJlcXVlc3QoW25zUmVxdWVzdCBfQ0ZVUkxSZXF1ZXN0XSkKLSAg
ICAsIG1fbnNSZXF1ZXN0KG5zUmVxdWVzdCkKLXsKLX0KLQotdm9pZCBSZXNvdXJjZVJlcXVlc3Q6
OnVwZGF0ZU5TVVJMUmVxdWVzdCgpCi17Ci0gICAgaWYgKG1fY2ZSZXF1ZXN0KQotICAgICAgICBt
X25zUmVxdWVzdCA9IGFkb3B0TlMoW1tOU011dGFibGVVUkxSZXF1ZXN0IGFsbG9jXSBfaW5pdFdp
dGhDRlVSTFJlcXVlc3Q6bV9jZlJlcXVlc3QuZ2V0KCldKTsKLX0KLQotdm9pZCBSZXNvdXJjZVJl
cXVlc3Q6OmNsZWFyT3JVcGRhdGVOU1VSTFJlcXVlc3QoKQotewotICAgIC8vIFRoZXJlIGlzIGNs
aWVudCBjb2RlIHRoYXQgZXh0ZW5kcyBOU1VSTFJlcXVlc3QgYW5kIGV4cGVjdHMgdG8gZ2V0IGJh
Y2ssIGluIHRoZSBkZWxlZ2F0ZQotICAgIC8vIGNhbGxiYWNrcywgYW4gb2JqZWN0IG9mIHRoZSBz
YW1lIHR5cGUgdGhhdCB0aGV5IHBhc3NlZCBpbnRvIFdlYktpdC4gVG8ga2VlcCB0aGVuIHJ1bm5p
bmcsIHdlCi0gICAgLy8gY3JlYXRlIGFuIG9iamVjdCBvZiB0aGUgc2FtZSB0eXBlIGFuZCByZXR1
cm4gdGhhdC4gU2VlIDxyZGFyOi8vOTg0MzU4Mj4uCi0gICAgLy8gQWxzbywgZGV2ZWxvcGVycyBy
ZWFsbHkgcmVhbGx5IHdhbnQgYW4gTlNNdXRhYmxlVVJMUmVxdWVzdCBzbyB0cnkgdG8gY3JlYXRl
IGFuCi0gICAgLy8gTlNNdXRhYmxlVVJMUmVxdWVzdCBpbnN0ZWFkIG9mIE5TVVJMUmVxdWVzdC4K
LSAgICBzdGF0aWMgQ2xhc3MgbnNVUkxSZXF1ZXN0Q2xhc3MgPSBbTlNVUkxSZXF1ZXN0IGNsYXNz
XTsKLSAgICBzdGF0aWMgQ2xhc3MgbnNNdXRhYmxlVVJMUmVxdWVzdENsYXNzID0gW05TTXV0YWJs
ZVVSTFJlcXVlc3QgY2xhc3NdOwotICAgIENsYXNzIHJlcXVlc3RDbGFzcyA9IFttX25zUmVxdWVz
dC5nZXQoKSBjbGFzc107Ci0KLSAgICBpZiAoIW1fY2ZSZXF1ZXN0KQotICAgICAgICByZXR1cm47
Ci0KLSAgICBpZiAocmVxdWVzdENsYXNzICYmIHJlcXVlc3RDbGFzcyAhPSBuc1VSTFJlcXVlc3RD
bGFzcyAmJiByZXF1ZXN0Q2xhc3MgIT0gbnNNdXRhYmxlVVJMUmVxdWVzdENsYXNzKQotICAgICAg
ICBtX25zUmVxdWVzdCA9IGFkb3B0TlMoW1tyZXF1ZXN0Q2xhc3MgYWxsb2NdIF9pbml0V2l0aENG
VVJMUmVxdWVzdDptX2NmUmVxdWVzdC5nZXQoKV0pOwotICAgIGVsc2UKLSAgICAgICAgbV9uc1Jl
cXVlc3QgPSBudWxscHRyOwotfQotCi0jZW5kaWYgLy8gVVNFKENGTkVUV09SSykKLQotfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKQpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQXV0aGVudGljYXRpb25NYWMubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQXV0aGVudGljYXRp
b25NYWMubW0JKHJldmlzaW9uIDIwNzAzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvbWFjL0F1dGhlbnRpY2F0aW9uTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMiwxOCAr
MzIsMTEgQEAKICNpbXBvcnQgPEZvdW5kYXRpb24vTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZS5oPgogI2ltcG9ydCA8Rm91bmRhdGlvbi9OU1VSTFByb3RlY3Rpb25TcGFjZS5oPgogCi0jaWYg
VVNFKENGTkVUV09SSykKLSNpbXBvcnQgIkNGTlNVUkxDb25uZWN0aW9uU1BJLmgiCi0jZW5kaWYK
LQogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIEBpbnRlcmZhY2UgV2ViQ29yZUF1dGhlbnRp
Y2F0aW9uQ2xpZW50QXNDaGFsbGVuZ2VTZW5kZXIgOiBOU09iamVjdCA8TlNVUkxBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZVNlbmRlcj4KIHsKICAgICBBdXRoZW50aWNhdGlvbkNsaWVudCogbV9jbGll
bnQ7Ci0jaWYgVVNFKENGTkVUV09SSykKLSAgICBDRlVSTEF1dGhDaGFsbGVuZ2VSZWYgbV9jZkNo
YWxsZW5nZTsKLSNlbmRpZgogfQogLSAoaWQpaW5pdFdpdGhBdXRoZW50aWNhdGlvbkNsaWVudDoo
QXV0aGVudGljYXRpb25DbGllbnQqKWNsaWVudDsKIC0gKEF1dGhlbnRpY2F0aW9uQ2xpZW50Kilj
bGllbnQ7CkBAIC0xMDEsNDcgKzk0LDEwIEBAIC0gKHZvaWQpY2FuY2VsQXV0aGVudGljYXRpb25D
aGFsbGVuZ2U6KE4KICAgICAgICAgbV9jbGllbnQtPnJlY2VpdmVkQ2FuY2VsbGF0aW9uKGNvcmUo
Y2hhbGxlbmdlKSk7CiB9CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotLSAodm9pZClzZXRDRkNoYWxs
ZW5nZTooQ0ZVUkxBdXRoQ2hhbGxlbmdlUmVmKWNoYWxsZW5nZQotewotICAgIG1fY2ZDaGFsbGVu
Z2UgPSBjaGFsbGVuZ2U7Ci19Ci0KLS0gKENGVVJMQXV0aENoYWxsZW5nZVJlZiljZkNoYWxsZW5n
ZQotewotICAgIHJldHVybiBtX2NmQ2hhbGxlbmdlOwotfQotI2VuZGlmCi0KIEBlbmQKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi0jaWYgVVNFKENGTkVUV09SSykKLQotQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UgY29yZShOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICptYWNDaGFsbGVuZ2Up
Ci17Ci0gICAgV2ViQ29yZUF1dGhlbnRpY2F0aW9uQ2xpZW50QXNDaGFsbGVuZ2VTZW5kZXIgKmNo
YWxsZW5nZVNlbmRlciA9IChXZWJDb3JlQXV0aGVudGljYXRpb25DbGllbnRBc0NoYWxsZW5nZVNl
bmRlciopIFttYWNDaGFsbGVuZ2Ugc2VuZGVyXTsKLSAgICByZXR1cm4gQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UoW2NoYWxsZW5nZVNlbmRlciBjZkNoYWxsZW5nZV0sIFtjaGFsbGVuZ2VTZW5kZXIg
Y2xpZW50XSk7Ci19Ci0KLU5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKm1hYyhjb25zdCBB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY29yZUNoYWxsZW5nZSkKLXsKLSAgICBBdXRoZW50aWNh
dGlvbkNsaWVudCogYXV0aENsaWVudCA9IGNvcmVDaGFsbGVuZ2UuYXV0aGVudGljYXRpb25DbGll
bnQoKTsKLSAgICBSZXRhaW5QdHI8V2ViQ29yZUF1dGhlbnRpY2F0aW9uQ2xpZW50QXNDaGFsbGVu
Z2VTZW5kZXI+IGNoYWxsZW5nZVNlbmRlciA9IGFkb3B0TlMoW1tXZWJDb3JlQXV0aGVudGljYXRp
b25DbGllbnRBc0NoYWxsZW5nZVNlbmRlciBhbGxvY10gaW5pdFdpdGhBdXRoZW50aWNhdGlvbkNs
aWVudDphdXRoQ2xpZW50XSk7Ci0gICAgUmV0YWluUHRyPENGVVJMQXV0aENoYWxsZW5nZVJlZj4g
YXV0aENoYWxsZW5nZSA9IGNvcmVDaGFsbGVuZ2UuY2ZVUkxBdXRoQ2hhbGxlbmdlUmVmKCk7Ci0g
ICAgaWYgKCFhdXRoQ2hhbGxlbmdlKQotICAgICAgICBhdXRoQ2hhbGxlbmdlID0gYWRvcHRDRihj
cmVhdGVDRihjb3JlQ2hhbGxlbmdlKSk7Ci0gICAgW2NoYWxsZW5nZVNlbmRlci5nZXQoKSBzZXRD
RkNoYWxsZW5nZTphdXRoQ2hhbGxlbmdlLmdldCgpXTsKLSNpZiBQTEFURk9STShJT1MpCi0gICAg
cmV0dXJuIFtbTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSBfY3JlYXRlQXV0aGVudGljYXRp
b25DaGFsbGVuZ2VGb3JDRkF1dGhDaGFsbGVuZ2U6YXV0aENoYWxsZW5nZS5nZXQoKSBzZW5kZXI6
Y2hhbGxlbmdlU2VuZGVyLmdldCgpXSBhdXRvcmVsZWFzZV07Ci0jZWxzZQotICAgIHJldHVybiBb
W05TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgX2F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRm9y
Q0ZBdXRoQ2hhbGxlbmdlOmF1dGhDaGFsbGVuZ2UuZ2V0KCkgc2VuZGVyOmNoYWxsZW5nZVNlbmRl
ci5nZXQoKV0gYXV0b3JlbGVhc2VdOwotI2VuZGlmCi19Ci0KLSNlbHNlCi0KIEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShjb25zdCBQcm90ZWN0aW9uU3Bh
Y2UmIHByb3RlY3Rpb25TcGFjZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBDcmVkZW50aWFsJiBwcm9wb3NlZENyZWRlbnRpYWwsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgcHJl
dmlvdXNGYWlsdXJlQ291bnQsCkBAIC0yMTUsNiArMTcxLDQgQEAgQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UgY29yZShOU1VSTEF1dGhlbgogICAgIHJldHVybiBBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZShtYWNDaGFsbGVuZ2UpOwogfQogCi0jZW5kaWYgLy8gVVNFKENGTkVUV09SSykKLQogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9t
YWMvQ29va2llSmFyTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvbWFjL0Nvb2tpZUphck1hYy5tbQkocmV2aXNpb24gMjA3MDM5KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQ29va2llSmFyTWFjLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0yNywxOSArMjcsMTIgQEAKICNpbXBvcnQgIlBsYXRmb3JtQ29va2llSmFyLmgiCiAK
ICNpbXBvcnQgIkNGTmV0d29ya1NQSS5oIgotI2ltcG9ydCAiTmV0d29ya1N0b3JhZ2VTZXNzaW9u
LmgiCi0jaW1wb3J0ICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgiCi0jaW1wb3J0IDx3dGYvQmxv
Y2tPYmpDRXhjZXB0aW9ucy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci1zdGF0aWMgTlNIVFRQ
Q29va2llU3RvcmFnZSAqY29va2llU3RvcmFnZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24m
KTsKLX0KLQotI2lmICFVU0UoQ0ZORVRXT1JLKQotCiAjaW1wb3J0ICJDb29raWUuaCIKICNpbXBv
cnQgIkNvb2tpZVN0b3JhZ2UuaCIKKyNpbXBvcnQgIk5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oIgog
I2ltcG9ydCAiVVJMLmgiCisjaW1wb3J0ICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgiCisjaW1w
b3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgogI2ltcG9ydCA8d3RmL09wdGlvbmFsLmg+
CiAjaW1wb3J0IDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKQEAgLTE5MSw2ICsxODQsNyBA
QCB2b2lkIHNldENvb2tpZXNGcm9tRE9NKGNvbnN0IE5ldHdvcmtTdG9yCiAgICAgTlNVUkwgKmNv
b2tpZVVSTCA9IHVybDsKICAgICBOU0RpY3Rpb25hcnkgKmhlYWRlckZpZWxkcyA9IFtOU0RpY3Rp
b25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3Q6Y29va2llU3RyaW5nIGZvcktleTpAIlNldC1Db29r
aWUiXTsKIAorICAgIC8vIEZJWE1FOiBJcyB0aGlzIG5lZWRlZCBvbiBpT1MsIHRvbz8KICNpZiBQ
TEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMTAw
CiAgICAgTlNBcnJheSAqdW5maWx0ZXJlZENvb2tpZXMgPSBbTlNIVFRQQ29va2llIF9wYXJzZWRD
b29raWVzV2l0aFJlc3BvbnNlSGVhZGVyRmllbGRzOmhlYWRlckZpZWxkcyBmb3JVUkw6Y29va2ll
VVJMXTsKICNlbHNlCkBAIC0yNjAsNiArMjU0LDE1IEBAIHZvaWQgZGVsZXRlQ29va2llKGNvbnN0
IE5ldHdvcmtTdG9yYWdlU2UKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogfQogCitz
dGF0aWMgTlNIVFRQQ29va2llU3RvcmFnZSAqY29va2llU3RvcmFnZShjb25zdCBOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mIHNlc3Npb24pCit7CisgICAgYXV0byBjb29raWVTdG9yYWdlID0gc2Vzc2lv
bi5jb29raWVTdG9yYWdlKCk7CisgICAgaWYgKCFjb29raWVTdG9yYWdlIHx8IFtOU0hUVFBDb29r
aWVTdG9yYWdlIHNoYXJlZEhUVFBDb29raWVTdG9yYWdlXS5fY29va2llU3RvcmFnZSA9PSBjb29r
aWVTdG9yYWdlKQorICAgICAgICByZXR1cm4gW05TSFRUUENvb2tpZVN0b3JhZ2Ugc2hhcmVkSFRU
UENvb2tpZVN0b3JhZ2VdOworICAgIAorICAgIHJldHVybiBbW1tOU0hUVFBDb29raWVTdG9yYWdl
IGFsbG9jXSBfaW5pdFdpdGhDRkhUVFBDb29raWVTdG9yYWdlOmNvb2tpZVN0b3JhZ2UuZ2V0KCld
IGF1dG9yZWxlYXNlXTsKK30KKwogdm9pZCBhZGRDb29raWUoY29uc3QgTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIHVybCwgY29uc3QgQ29va2llJiBjb29raWUpCiB7
CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwpAQCAtMjgwLDEyICsyODMsMTAgQEAg
dm9pZCBhZGRDb29raWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaQogICAgICAgICBOU0hUVFBD
b29raWVFeHBpcmVzOiBbTlNEYXRlIGRhdGVXaXRoVGltZUludGVydmFsU2luY2UxOTcwOmNvb2tp
ZS5leHBpcmVzIC8gMTAwMC4wXSwKICAgICB9XTsKIAotI2lmICFVU0UoQ0ZORVRXT1JLKQogICAg
IGlmICghY29va2llU3RvcmFnZSkgewogICAgICAgICBbV2ViQ29yZTo6Y29va2llU3RvcmFnZShz
ZXNzaW9uKSBzZXRDb29raWU6aHR0cENvb2tpZV07CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0j
ZW5kaWYgLy8gIVVTRShDRk5FVFdPUkspCiAKICAgICBDRkhUVFBDb29raWVTdG9yYWdlU2V0Q29v
a2llKGNvb2tpZVN0b3JhZ2UuZ2V0KCksIFtodHRwQ29va2llIF9DRkhUVFBDb29raWVdKTsKIApA
QCAtMzA5LDIxICszMTAsNiBAQCB2b2lkIGRlbGV0ZUFsbENvb2tpZXMoY29uc3QgTmV0d29ya1N0
b3JhCiAgICAgd2tEZWxldGVBbGxIVFRQQ29va2llcyhzZXNzaW9uLmNvb2tpZVN0b3JhZ2UoKS5n
ZXQoKSk7CiB9CiAKLX0KLQotI2VuZGlmIC8vICFVU0UoQ0ZORVRXT1JLKQotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLXN0YXRpYyBOU0hUVFBDb29raWVTdG9yYWdlICpjb29raWVTdG9yYWdlKGNv
bnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbikKLXsKLSAgICBhdXRvIGNvb2tpZVN0
b3JhZ2UgPSBzZXNzaW9uLmNvb2tpZVN0b3JhZ2UoKTsKLSAgICBpZiAoIWNvb2tpZVN0b3JhZ2Ug
fHwgW05TSFRUUENvb2tpZVN0b3JhZ2Ugc2hhcmVkSFRUUENvb2tpZVN0b3JhZ2VdLl9jb29raWVT
dG9yYWdlID09IGNvb2tpZVN0b3JhZ2UpCi0gICAgICAgIHJldHVybiBbTlNIVFRQQ29va2llU3Rv
cmFnZSBzaGFyZWRIVFRQQ29va2llU3RvcmFnZV07Ci0KLSAgICByZXR1cm4gW1tbTlNIVFRQQ29v
a2llU3RvcmFnZSBhbGxvY10gX2luaXRXaXRoQ0ZIVFRQQ29va2llU3RvcmFnZTpjb29raWVTdG9y
YWdlLmdldCgpXSBhdXRvcmVsZWFzZV07Ci19Ci0KIHZvaWQgZGVsZXRlQ29va2llc0Zvckhvc3Ru
YW1lcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBob3N0bmFtZXMpCiB7CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwpA
QCAtMzUzLDcgKzMzOSw2IEBAIHZvaWQgZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lcyhjb25zdCBO
ZXQKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogfQogCi0KIHZvaWQgZGVsZXRlQWxs
Q29va2llc01vZGlmaWVkU2luY2UoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9u
LCBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IHRpbWVQb2ludCkKIHsKICAg
ICBpZiAoIVtOU0hUVFBDb29raWVTdG9yYWdlIGluc3RhbmNlc1Jlc3BvbmRUb1NlbGVjdG9yOkBz
ZWxlY3RvcihyZW1vdmVDb29raWVzU2luY2VEYXRlOildKQpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9tYWMvQ3JlZGVudGlhbFN0b3JhZ2VNYWMubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQ3JlZGVudGlhbFN0b3JhZ2VN
YWMubW0JKHJldmlzaW9uIDIwNzAzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvbWFjL0NyZWRlbnRpYWxTdG9yYWdlTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw4ICsy
Niw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ3JlZGVudGlhbFN0b3JhZ2Uu
aCIKIAotI2lmICFVU0UoQ0ZORVRXT1JLKQotCiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25NYWMu
aCIKICNpbmNsdWRlICJDcmVkZW50aWFsLmgiCiAjaW5jbHVkZSAiUHJvdGVjdGlvblNwYWNlLmgi
CkBAIC01Miw1ICs1MCwzIEBAIHZvaWQgQ3JlZGVudGlhbFN0b3JhZ2U6OnNhdmVUb1BlcnNpc3Rl
bnQKICNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyAhVVNFKENG
TkVUV09SSykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Zvcm1E
YXRhU3RyZWFtTWFjLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9tYWMvRm9ybURhdGFTdHJlYW1NYWMuaAkocmV2aXNpb24gMjA3MDM5KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvRm9ybURhdGFTdHJlYW1NYWMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjYsMTAgKzI2LDcgQEAKICAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBG
b3JtRGF0YVN0cmVhbU1hY19oCi0jZGVmaW5lIEZvcm1EYXRhU3RyZWFtTWFjX2gKLQotI2lmICFV
U0UoQ0ZORVRXT1JLKQorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgog
CkBAIC00MCwxNSArMzcsMTEgQEAgdHlwZWRlZiBjb25zdCBzdHJ1Y3QgX0NGVVJMUmVxdWVzdCog
Q0ZVUgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSAgICBjbGFzcyBGb3JtRGF0YTsKK2NsYXNz
IEZvcm1EYXRhOwogCi0gICAgdm9pZCBzZXRIVFRQQm9keShOU011dGFibGVVUkxSZXF1ZXN0ICos
IEZvcm1EYXRhKik7Ci0gICAgRm9ybURhdGEqIGh0dHBCb2R5RnJvbVN0cmVhbShOU0lucHV0U3Ry
ZWFtICopOwordm9pZCBzZXRIVFRQQm9keShOU011dGFibGVVUkxSZXF1ZXN0ICosIEZvcm1EYXRh
Kik7CitGb3JtRGF0YSogaHR0cEJvZHlGcm9tU3RyZWFtKE5TSW5wdXRTdHJlYW0gKik7CiAKLSAg
ICBDRlN0cmluZ1JlZiBmb3JtRGF0YVN0cmVhbUxlbmd0aFByb3BlcnR5TmFtZSgpOworQ0ZTdHJp
bmdSZWYgZm9ybURhdGFTdHJlYW1MZW5ndGhQcm9wZXJ0eU5hbWUoKTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gIVVTRShDRk5FVFdPUkspCi0KLSNlbmRpZiAvLyBGb3Jt
RGF0YVN0cmVhbU1hY19oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21h
Yy9Gb3JtRGF0YVN0cmVhbU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL21hYy9Gb3JtRGF0YVN0cmVhbU1hYy5tbQkocmV2aXNpb24gMjA3MDM5KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvRm9ybURhdGFTdHJlYW1NYWMu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTI5LDggKzI5LDYgQEAKICNpbXBvcnQgImNvbmZpZy5oIgog
I2ltcG9ydCAiRm9ybURhdGFTdHJlYW1NYWMuaCIKIAotI2lmICFVU0UoQ0ZORVRXT1JLKQotCiAj
aW1wb3J0ICJGb3JtRGF0YS5oIgogI2ltcG9ydCAiRm9ybURhdGFTdHJlYW1DRk5ldC5oIgogCkBA
IC01MSw1ICs0OSwzIEBAIEZvcm1EYXRhKiBodHRwQm9keUZyb21TdHJlYW0oTlNJbnB1dFN0cmUK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gIVVTRShDRk5FVFdPUksp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUVycm9y
TWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFj
L1Jlc291cmNlRXJyb3JNYWMubW0JKHJldmlzaW9uIDIwNzAzOSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlRXJyb3JNYWMubW0JKHdvcmtpbmcgY29weSkK
QEAgLTMxLDEwICszMSw2IEBACiAjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KICNp
bXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+CiAKLSNpZiBQTEFURk9STShJT1MpICYm
IFVTRShDRk5FVFdPUkspCi0jaW1wb3J0IDxDRk5ldHdvcmsvQ0ZTb2NrZXRTdHJlYW1Qcml2Lmg+
Ci0jZW5kaWYKLQogQGludGVyZmFjZSBOU0Vycm9yIChXZWJFeHRyYXMpCiAtIChOU1N0cmluZyAq
KV93ZWJfbG9jYWxpemVkRGVzY3JpcHRpb247CiBAZW5kCkBAIC05MSw4NSArODcsNiBAQCAtICh2
b2lkKWVuY29kZVdpdGhDb2RlcjooTlNDb2RlciAqKWNvZGVyCiAKIEBlbmQKIAotCi0jaWYgVVNF
KENGTkVUV09SSykKLXN0YXRpYyBOU0Vycm9yICpOU0Vycm9yRnJvbUNGRXJyb3IoQ0ZFcnJvclJl
ZiBjZkVycm9yLCBOU1VSTCAqdXJsKQotewotICAgIENGSW5kZXggZXJyQ29kZSA9IENGRXJyb3JH
ZXRDb2RlKGNmRXJyb3IpOwotICAgIGlmIChDRkVxdWFsKENGRXJyb3JHZXREb21haW4oY2ZFcnJv
ciksIGtDRkVycm9yRG9tYWluQ0ZOZXR3b3JrKSAmJiBlcnJDb2RlIDw9IGtDRlVSTEVycm9yVW5r
bm93biAmJiBlcnJDb2RlID4gLTQwMDApIHsKLSAgICAgICAgLy8gVGhpcyBpcyBhbiBVUkwgZXJy
b3IgYW5kIG5lZWRzIHRvIGJlIHRyYW5zbGF0ZWQgdG8gdGhlIE5TVVJMRXJyb3JEb21haW4KLSAg
ICAgICAgaWQga2V5c1sxMF0sIHZhbHVlc1sxMF07Ci0gICAgICAgIENGRGljdGlvbmFyeVJlZiB1
c2VySW5mbyA9IENGRXJyb3JDb3B5VXNlckluZm8oY2ZFcnJvcik7Ci0gICAgICAgIE5TRXJyb3Ig
KnJlc3VsdDsKLSAgICAgICAgTlNJbnRlZ2VyIGNvdW50ID0gMDsKLQotICAgICAgICBpZiAodXJs
KSB7Ci0gICAgICAgICAgICBrZXlzW2NvdW50XSA9IE5TVVJMRXJyb3JGYWlsaW5nVVJMRXJyb3JL
ZXk7Ci0gICAgICAgICAgICB2YWx1ZXNbY291bnRdID0gdXJsOwotICAgICAgICAgICAgY291bnQg
Kys7Ci0KLSAgICAgICAgICAgIGtleXNbY291bnRdID0gTlNVUkxFcnJvckZhaWxpbmdVUkxTdHJp
bmdFcnJvcktleTsKLSAgICAgICAgICAgIHZhbHVlc1tjb3VudF0gPSBbdXJsIGFic29sdXRlU3Ry
aW5nXTsKLSAgICAgICAgICAgIGNvdW50ICsrOwotICAgICAgICB9Ci0KLSAgICAgICAgdmFsdWVz
W2NvdW50XSA9IChpZClDRkRpY3Rpb25hcnlHZXRWYWx1ZSh1c2VySW5mbywga0NGRXJyb3JMb2Nh
bGl6ZWREZXNjcmlwdGlvbktleSk7Ci0gICAgICAgIGlmICh2YWx1ZXNbY291bnRdKSB7Ci0gICAg
ICAgICAgICBrZXlzW2NvdW50XSA9IE5TTG9jYWxpemVkRGVzY3JpcHRpb25LZXk7Ci0gICAgICAg
ICAgICBjb3VudCArKzsKLSAgICAgICAgfQotCi0gICAgICAgIHZhbHVlc1tjb3VudF0gPSAoaWQp
Q0ZEaWN0aW9uYXJ5R2V0VmFsdWUodXNlckluZm8sIGtDRkVycm9yTG9jYWxpemVkRmFpbHVyZVJl
YXNvbktleSk7Ci0gICAgICAgIGlmICh2YWx1ZXNbY291bnRdKSB7Ci0gICAgICAgICAgICBrZXlz
W2NvdW50XSA9IE5TTG9jYWxpemVkRmFpbHVyZVJlYXNvbkVycm9yS2V5OwotICAgICAgICAgICAg
Y291bnQgKys7Ci0gICAgICAgIH0KLQotICAgICAgICB2YWx1ZXNbY291bnRdID0gKGlkKUNGRGlj
dGlvbmFyeUdldFZhbHVlKHVzZXJJbmZvLCBrQ0ZFcnJvckxvY2FsaXplZFJlY292ZXJ5U3VnZ2Vz
dGlvbktleSk7Ci0gICAgICAgIGlmICh2YWx1ZXNbY291bnRdKSB7Ci0gICAgICAgICAgICBrZXlz
W2NvdW50XSA9IE5TTG9jYWxpemVkUmVjb3ZlcnlTdWdnZXN0aW9uRXJyb3JLZXk7Ci0gICAgICAg
ICAgICBjb3VudCArKzsKLSAgICAgICAgfQotCi0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVz
aAotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XZGVwcmVjYXRlZC1kZWNsYXJh
dGlvbnMiCi0gICAgICAgIGlmICh1c2VySW5mbyAmJiAodmFsdWVzW2NvdW50XSA9IChpZClDRkRp
Y3Rpb25hcnlHZXRWYWx1ZSh1c2VySW5mbywga0NGU3RyZWFtUHJvcGVydHlTU0xQZWVyQ2VydGlm
aWNhdGVzKSkgIT0gbmlsKSB7Ci0gICAgICAgICAgICAvLyBOZWVkIHRvIHRyYW5zbGF0ZSB0aGUg
Y2VydAotICAgICAgICAgICAga2V5c1tjb3VudF0gPSBAIk5TRXJyb3JQZWVyQ2VydGlmaWNhdGVD
aGFpbktleSI7Ci0gICAgICAgICAgICBjb3VudCArKzsKLQotICAgICAgICAgICAgdmFsdWVzW2Nv
dW50XSA9IChpZClDRkRpY3Rpb25hcnlHZXRWYWx1ZSh1c2VySW5mbywgX2tDRlN0cmVhbVByb3Bl
cnR5U1NMQ2xpZW50Q2VydGlmaWNhdGVzKTsKLSAgICAgICAgICAgIGlmICh2YWx1ZXNbY291bnRd
KSB7Ci0gICAgICAgICAgICAgICAga2V5c1tjb3VudF0gPSBAIk5TRXJyb3JDbGllbnRDZXJ0aWZp
Y2F0ZUNoYWluS2V5IjsKLSAgICAgICAgICAgICAgICBjb3VudCArKzsKLSAgICAgICAgICAgIH0K
LQotICAgICAgICAgICAgdmFsdWVzW2NvdW50XSA9IChpZClDRkRpY3Rpb25hcnlHZXRWYWx1ZSh1
c2VySW5mbywgX2tDRlN0cmVhbVByb3BlcnR5U1NMQ2xpZW50Q2VydGlmaWNhdGVTdGF0ZSk7Ci0g
ICAgICAgICAgICBpZiAodmFsdWVzW2NvdW50XSkgewotICAgICAgICAgICAgICAgIGtleXNbY291
bnRdID0gQCJOU0Vycm9yQ2xpZW50Q2VydGlmaWNhdGVTdGF0ZUtleSI7Ci0gICAgICAgICAgICAg
ICAgY291bnQgKys7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSNwcmFnbWEgY2xhbmcgZGlh
Z25vc3RpYyBwb3AKLQotICAgICAgICBpZiAodXNlckluZm8gJiYgKHZhbHVlc1tjb3VudF0gPSAo
aWQpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUodXNlckluZm8sIGtDRlN0cmVhbVByb3BlcnR5U1NMUGVl
clRydXN0KSkgIT0gbmlsKSB7Ci0gICAgICAgICAgICBrZXlzW2NvdW50XSA9IE5TVVJMRXJyb3JG
YWlsaW5nVVJMUGVlclRydXN0RXJyb3JLZXk7Ci0gICAgICAgICAgICBjb3VudCsrOwotICAgICAg
ICB9Ci0KLSAgICAgICAga2V5c1tjb3VudF0gPSBOU1VuZGVybHlpbmdFcnJvcktleTsKLSAgICAg
ICAgdmFsdWVzW2NvdW50XSA9IChpZCljZkVycm9yOwotICAgICAgICBjb3VudCArKzsKLQotICAg
ICAgICByZXN1bHQgPSBbV2ViQ3VzdG9tTlNVUkxFcnJvciBlcnJvcldpdGhEb21haW46TlNVUkxF
cnJvckRvbWFpbiBjb2RlOihlcnJDb2RlID09IGtDRlVSTEVycm9yVW5rbm93biA/IChDRkluZGV4
KU5TVVJMRXJyb3JVbmtub3duIDogZXJyQ29kZSkgdXNlckluZm86W05TRGljdGlvbmFyeSBkaWN0
aW9uYXJ5V2l0aE9iamVjdHM6dmFsdWVzIGZvcktleXM6a2V5cyBjb3VudDpjb3VudF1dOwotICAg
ICAgICBpZiAodXNlckluZm8pCi0gICAgICAgICAgICBDRlJlbGVhc2UodXNlckluZm8pOwotICAg
ICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLSAgICByZXR1cm4gKE5TRXJyb3IgKiljZkVycm9y
OwotfQotI2VuZGlmIC8vIFVTRShDRk5FVFdPUkspCi0KICNlbmRpZiAvLyBQTEFURk9STShJT1Mp
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTE5MCw1MyArMTA3LDYgQEAgc3RhdGljIFJldGFp
blB0cjxOU0Vycm9yPiBjcmVhdGVOU0Vycm9yRgogICAgIHJldHVybiBhZG9wdE5TKFtbTlNFcnJv
ciBhbGxvY10gaW5pdFdpdGhEb21haW46cmVzb3VyY2VFcnJvci5kb21haW4oKSBjb2RlOnJlc291
cmNlRXJyb3IuZXJyb3JDb2RlKCkgdXNlckluZm86dXNlckluZm8uZ2V0KCldKTsKIH0KIAotI2lm
IFVTRShDRk5FVFdPUkspCi0KLVJlc291cmNlRXJyb3I6OlJlc291cmNlRXJyb3IoTlNFcnJvciAq
ZXJyb3IpCi0gICAgOiBSZXNvdXJjZUVycm9yQmFzZShUeXBlOjpOdWxsKQotICAgICwgbV9kYXRh
SXNVcFRvRGF0ZShmYWxzZSkKLSAgICAsIG1fcGxhdGZvcm1FcnJvcihyZWludGVycHJldF9jYXN0
PENGRXJyb3JSZWY+KGVycm9yKSkKLXsKLSAgICBpZiAoZXJyb3IpCi0gICAgICAgIHNldFR5cGUo
KFtlcnJvciBjb2RlXSA9PSBOU1VSTEVycm9yVGltZWRPdXQpID8gVHlwZTo6VGltZW91dCA6IFR5
cGU6OkdlbmVyYWwpOwotfQotCi1OU0Vycm9yICpSZXNvdXJjZUVycm9yOjpuc0Vycm9yKCkgY29u
c3QKLXsKLSAgICBpZiAoaXNOdWxsKCkpIHsKLSAgICAgICAgQVNTRVJUKCFtX3BsYXRmb3JtRXJy
b3IpOwotICAgICAgICByZXR1cm4gbmlsOwotICAgIH0KLQotICAgIGlmIChtX3BsYXRmb3JtTlNF
cnJvcikKLSAgICAgICAgcmV0dXJuIG1fcGxhdGZvcm1OU0Vycm9yLmdldCgpOwotCi0gICAgaWYg
KG1fcGxhdGZvcm1FcnJvcikgewotICAgICAgICBDRkVycm9yUmVmIGVycm9yID0gbV9wbGF0Zm9y
bUVycm9yLmdldCgpOwotICAgICAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiB1c2VySW5m
byA9IGFkb3B0Q0YoQ0ZFcnJvckNvcHlVc2VySW5mbyhlcnJvcikpOwotI2lmIFBMQVRGT1JNKElP
UykKLSAgICAgICAgbV9wbGF0Zm9ybU5TRXJyb3IgPSBOU0Vycm9yRnJvbUNGRXJyb3IoZXJyb3Is
IChOU1VSTCAqKVsoTlNEaWN0aW9uYXJ5ICopdXNlckluZm8uZ2V0KCkgb2JqZWN0Rm9yS2V5Oihp
ZCkga0NGVVJMRXJyb3JGYWlsaW5nVVJMRXJyb3JLZXldKTsKLSAgICAgICAgLy8gSWYgTlNFcnJv
ckZyb21DRkVycm9yIGNyZWF0ZWQgYSBuZXcgTlNFcnJvciBmb3IgdXMsIHJldHVybiB0aGF0Lgot
ICAgICAgICBpZiAobV9wbGF0Zm9ybU5TRXJyb3IuZ2V0KCkgIT0gKE5TRXJyb3IgKillcnJvcikK
LSAgICAgICAgICAgIHJldHVybiBtX3BsYXRmb3JtTlNFcnJvci5nZXQoKTsKLQotICAgICAgICAv
LyBPdGhlcndpc2UgZmFsbCB0aHJvdWdoIHRvIGNyZWF0ZSBhIG5ldyBOU0Vycm9yIGZyb20gdGhl
IENGRXJyb3IuCi0jZW5kaWYKLSAgICAgICAgbV9wbGF0Zm9ybU5TRXJyb3IgPSBhZG9wdE5TKFtb
TlNFcnJvciBhbGxvY10gaW5pdFdpdGhEb21haW46KE5TU3RyaW5nICopQ0ZFcnJvckdldERvbWFp
bihlcnJvcikgY29kZTpDRkVycm9yR2V0Q29kZShlcnJvcikgdXNlckluZm86KE5TRGljdGlvbmFy
eSAqKXVzZXJJbmZvLmdldCgpXSk7Ci0gICAgICAgIHJldHVybiBtX3BsYXRmb3JtTlNFcnJvci5n
ZXQoKTsKLSAgICB9Ci0KLSAgICBtX3BsYXRmb3JtTlNFcnJvciA9IGNyZWF0ZU5TRXJyb3JGcm9t
UmVzb3VyY2VFcnJvckJhc2UoKnRoaXMpOwotICAgIHJldHVybiBtX3BsYXRmb3JtTlNFcnJvci5n
ZXQoKTsKLX0KLQotUmVzb3VyY2VFcnJvcjo6b3BlcmF0b3IgTlNFcnJvciAqKCkgY29uc3QKLXsK
LSAgICByZXR1cm4gbnNFcnJvcigpOwotfQotCi0jZWxzZQotCiBSZXNvdXJjZUVycm9yOjpSZXNv
dXJjZUVycm9yKE5TRXJyb3IgKm5zRXJyb3IpCiAgICAgOiBSZXNvdXJjZUVycm9yQmFzZShUeXBl
OjpOdWxsKQogICAgICwgbV9kYXRhSXNVcFRvRGF0ZShmYWxzZSkKQEAgLTMwOSw2ICsxNzksNCBA
QCBSZXNvdXJjZUVycm9yOjpvcGVyYXRvciBDRkVycm9yUmVmKCkgY29uCiAgICAgcmV0dXJuIGNm
RXJyb3IoKTsKIH0KIAotI2VuZGlmIC8vIFVTRShDRk5FVFdPUkspCi0KIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291
cmNlSGFuZGxlTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1tCShyZXZpc2lvbiAyMDcwMzkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbQkod29y
a2luZyBjb3B5KQpAQCAtNTgsMTYgKzU4LDYgQEAKICNpbXBvcnQgPHd0Zi90ZXh0L0Jhc2U2NC5o
PgogI2ltcG9ydCA8d3RmL3RleHQvQ1N0cmluZy5oPgogCi0jaWYgVVNFKENGTkVUV09SSykKLSNp
ZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQotI2ltcG9ydCA8Q0ZOZXR3b3JrL0NGVVJMQ29ubmVj
dGlvblByaXYuaD4KLSNlbmRpZgotdHlwZWRlZiBzdHJ1Y3QgX0NGVVJMQ29ubmVjdGlvbiogQ0ZV
UkxDb25uZWN0aW9uUmVmOwotZXh0ZXJuICJDIiB7Ci1DRkRpY3Rpb25hcnlSZWYgX0NGVVJMQ29u
bmVjdGlvbkNvcHlUaW1pbmdEYXRhKENGVVJMQ29ubmVjdGlvblJlZik7Ci19Ci0jZW5kaWYgLy8g
VVNFKENGTkVUV09SSykKLQogI2lmIFBMQVRGT1JNKElPUykKICNpbXBvcnQgIkNGTmV0d29ya1NQ
SS5oIgogI2ltcG9ydCAiUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmgiCkBAIC05MCw4ICs4MCw2
IEBAIC0oaWQpX2luaXRXaXRoUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmUKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgIAotI2lmICFVU0UoQ0ZORVRXT1JLKQotICAgIAogc3RhdGljIHZvaWQg
YXBwbHlCYXNpY0F1dGhvcml6YXRpb25IZWFkZXIoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBj
b25zdCBDcmVkZW50aWFsJiBjcmVkZW50aWFsKQogewogICAgIFN0cmluZyBhdXRoZW50aWNhdGlv
bkhlYWRlciA9ICJCYXNpYyAiICsgYmFzZTY0RW5jb2RlKFN0cmluZyhjcmVkZW50aWFsLnVzZXIo
KSArICI6IiArIGNyZWRlbnRpYWwucGFzc3dvcmQoKSkudXRmOCgpKTsKQEAgLTMyOSw4ICszMTcs
NiBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpwbGF0Zm9ybVNldERlZmVyc0xvCiAgICAgICAgIFtk
LT5tX2Nvbm5lY3Rpb24gc2V0RGVmZXJzQ2FsbGJhY2tzOmRlZmVyc107CiB9CiAKLSNpZiAhVVNF
KENGTkVUV09SSykKLQogdm9pZCBSZXNvdXJjZUhhbmRsZTo6c2NoZWR1bGUoU2NoZWR1bGVQYWly
JiBwYWlyKQogewogICAgIE5TUnVuTG9vcCAqcnVuTG9vcCA9IHBhaXIubnNSdW5Mb29wKCk7CkBA
IC0zNDksOCArMzM1LDYgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6dW5zY2hlZHVsZShTY2hlZHVs
ZQogICAgICAgICBbZC0+bV9jb25uZWN0aW9uLmdldCgpIHVuc2NoZWR1bGVGcm9tUnVuTG9vcDpy
dW5Mb29wIGZvck1vZGU6KE5TU3RyaW5nICopcGFpci5tb2RlKCldOwogfQogCi0jZW5kaWYKLQog
aWQgUmVzb3VyY2VIYW5kbGU6Om1ha2VEZWxlZ2F0ZShib29sIHNob3VsZFVzZUNyZWRlbnRpYWxT
dG9yYWdlKQogewogICAgIEFTU0VSVCghZC0+bV9kZWxlZ2F0ZSk7CkBAIC03MzAsMjcgKzcxNCwx
NCBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpjb250aW51ZVdpbGxDYWNoZVJlCiAKICAgICBbKGlk
KWRlbGVnYXRlKCkgY29udGludWVXaWxsQ2FjaGVSZXNwb25zZTpyZXNwb25zZV07CiB9Ci0gICAg
Ci0jZW5kaWYgLy8gIVVTRShDRk5FVFdPUkspCi0gICAgCi0jaWYgRU5BQkxFKFdFQl9USU1JTkcp
CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotICAgIAotdm9pZCBSZXNvdXJjZUhhbmRsZTo6Z2V0Q29u
bmVjdGlvblRpbWluZ0RhdGEoQ0ZVUkxDb25uZWN0aW9uUmVmIGNvbm5lY3Rpb24sIE5ldHdvcmtM
b2FkVGltaW5nJiB0aW1pbmcpCi17Ci0gICAgY29weVRpbWluZ0RhdGEoKF9fYnJpZGdlIE5TRGlj
dGlvbmFyeSopYWRvcHRDRihfQ0ZVUkxDb25uZWN0aW9uQ29weVRpbWluZ0RhdGEoY29ubmVjdGlv
bikpLmdldCgpLCB0aW1pbmcpOwotfQotICAgIAotI2Vsc2UKKyNpZiBFTkFCTEUoV0VCX1RJTUlO
RykKICAgICAKIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmdldENvbm5lY3Rpb25UaW1pbmdEYXRhKE5T
VVJMQ29ubmVjdGlvbiAqY29ubmVjdGlvbiwgTmV0d29ya0xvYWRUaW1pbmcmIHRpbWluZykKIHsK
ICAgICBjb3B5VGltaW5nRGF0YShbY29ubmVjdGlvbiBfdGltaW5nRGF0YV0sIHRpbWluZyk7CiB9
CiAgICAgCi0jZW5kaWYKLSAgICAKICNlbmRpZiAvLyBFTkFCTEUoV0VCX1RJTUlORykKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9tYWMvU3luY2hyb25vdXNMb2FkZXJDbGllbnQubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvU3luY2hyb25vdXNMb2FkZXJDbGllbnQubW0JKHJl
dmlzaW9uIDIwNzAzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1N5
bmNocm9ub3VzTG9hZGVyQ2xpZW50Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw4ICsyNiw2IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU3luY2hyb25vdXNMb2FkZXJDbGllbnQu
aCIKIAotI2lmICFVU0UoQ0ZORVRXT1JLKQotCiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzgsMTQgKzM2LDEwIEBAIHZvaWQg
U3luY2hyb25vdXNMb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmUKICAgICBbY2hhbGxlbmdlLnNlbmRl
cigpIGNvbnRpbnVlV2l0aG91dENyZWRlbnRpYWxGb3JBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTpj
aGFsbGVuZ2UubnNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgpXTsKIH0KIAotI2lmICFVU0Uo
Q0ZORVRXT1JLKQogUmVzb3VyY2VFcnJvciBTeW5jaHJvbm91c0xvYWRlckNsaWVudDo6cGxhdGZv
cm1CYWRSZXNwb25zZUVycm9yKCkKIHsKICAgICBSZXRhaW5QdHI8TlNFcnJvcj4gZXJyb3IgPSBh
ZG9wdE5TKFtbTlNFcnJvciBhbGxvY10gaW5pdFdpdGhEb21haW46TlNVUkxFcnJvckRvbWFpbiBj
b2RlOk5TVVJMRXJyb3JCYWRTZXJ2ZXJSZXNwb25zZSB1c2VySW5mbzpuaWxdKTsKICAgICByZXR1
cm4gZXJyb3IuZ2V0KCk7CiB9Ci0jZW5kaWYKIAogfQotCi0jZW5kaWYgLy8gIVVTRShDRk5FVFdP
UkspCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVz
b3VyY2VIYW5kbGVBc0RlbGVnYXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZS5oCShyZXZp
c2lvbiAyMDcwMzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJD
b3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDggKzIz
LDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVm
IFdlYkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGVfaAotI2RlZmluZSBXZWJDb3JlUmVzb3Vy
Y2VIYW5kbGVBc0RlbGVnYXRlX2gKKyNwcmFnbWEgb25jZQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBjbGFzcyBSZXNvdXJjZUhhbmRsZTsKQEAgLTM0LDEzICszMyw4IEBAIGNsYXNzIFJlc291cmNl
SGFuZGxlOwogLSAodm9pZClkZXRhY2hIYW5kbGU7CiBAZW5kCiAKLSNpZiAhVVNFKENGTkVUV09S
SykKLQogQGludGVyZmFjZSBXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlIDogTlNPYmpl
Y3QgPE5TVVJMQ29ubmVjdGlvbkRlbGVnYXRlLCBXZWJDb3JlUmVzb3VyY2VMb2FkZXJEZWxlZ2F0
ZT4gewogICAgIFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiBtX2hhbmRsZTsKIH0KIC0gKGlkKWlu
aXRXaXRoSGFuZGxlOihXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSopaGFuZGxlOwogQGVuZAotCi0j
ZW5kaWYgLy8gIVVTRShDRk5FVFdPUkspCi0jZW5kaWYgLy8gV2ViQ29yZVJlc291cmNlSGFuZGxl
QXNEZWxlZ2F0ZV9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9X
ZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdh
dGUubW0JKHJldmlzaW9uIDIwNzAzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGUubW0JKHdvcmtpbmcgY29weSkK
QEAgLTI2LDggKzI2LDYgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiV2ViQ29yZVJl
c291cmNlSGFuZGxlQXNEZWxlZ2F0ZS5oIgogCi0jaWYgIVVTRShDRk5FVFdPUkspCi0KICNpbXBv
cnQgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmgiCiAjaW1wb3J0ICJBdXRoZW50aWNhdGlvbk1h
Yy5oIgogI2ltcG9ydCAiTG9nZ2luZy5oIgpAQCAtMjcwLDYgKzI2OCwzIEBAIC0gKE5TQ2FjaGVk
VVJMUmVzcG9uc2UgKiljb25uZWN0aW9uOihOU1UKIH0KIAogQGVuZAotCi0jZW5kaWYgLy8gIVVT
RShDRk5FVFdPUkspCi0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFj
L1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJj
ZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5oCShyZXZpc2lvbiAyMDcwMzkpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVB
c09wZXJhdGlvblF1ZXVlRGVsZWdhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsMTAgKzIzLDcg
QEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFdl
YkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZV9oCi0jZGVmaW5lIFdl
YkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZV9oCi0KLSNpZiAhVVNF
KENGTkVUV09SSykKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiV2ViQ29yZVJlc291cmNlSGFu
ZGxlQXNEZWxlZ2F0ZS5oIgogI2luY2x1ZGUgPGRpc3BhdGNoL2Rpc3BhdGNoLmg+CkBAIC01OCw2
ICs1NSwzIEBAIEBpbnRlcmZhY2UgV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXQKIEBpbnRl
cmZhY2UgV2ViQ29yZVJlc291cmNlSGFuZGxlV2l0aENyZWRlbnRpYWxTdG9yYWdlQXNPcGVyYXRp
b25RdWV1ZURlbGVnYXRlIDogV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURl
bGVnYXRlCiAKIEBlbmQKLQotI2VuZGlmIC8vICFVU0UoQ0ZORVRXT1JLKQotI2VuZGlmIC8vIFdl
YkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZV9oCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09w
ZXJhdGlvblF1ZXVlRGVsZWdhdGUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURl
bGVnYXRlLm1tCShyZXZpc2lvbiAyMDcwMzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDggKzI2LDYgQEAKICNpbXBvcnQgImNvbmZpZy5oIgog
I2ltcG9ydCAiV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLmgi
CiAKLSNpZiAhVVNFKENGTkVUV09SSykKLQogI2ltcG9ydCAiQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UuaCIKICNpbXBvcnQgIkF1dGhlbnRpY2F0aW9uTWFjLmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgi
CkBAIC0zMjksNiArMzI3LDMgQEAgLSAoQk9PTCljb25uZWN0aW9uU2hvdWxkVXNlQ3JlZGVudGlh
bFN0bwogfQogCiBAZW5kCi0KLSNlbmRpZiAvLyAhVVNFKENGTkVUV09SSykKLQpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVVSTFJlc3BvbnNlLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVV
UkxSZXNwb25zZS5tbQkocmV2aXNpb24gMjA3MDM5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9tYWMvV2ViQ29yZVVSTFJlc3BvbnNlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0z
MjUsNyArMzI1LDYgQEAgdm9pZCBhZGp1c3RNSU1FVHlwZUlmTmVjZXNzYXJ5KENGVVJMUmVzcAog
fQogI2VuZGlmCiAKLSNpZiAhVVNFKENGTkVUV09SSykKIE5TVVJMUmVzcG9uc2UgKnN5bnRoZXNp
emVSZWRpcmVjdFJlc3BvbnNlSWZOZWNlc3NhcnkoTlNVUkxSZXF1ZXN0ICpjdXJyZW50UmVxdWVz
dCwgTlNVUkxSZXF1ZXN0ICpuZXdSZXF1ZXN0LCBOU1VSTFJlc3BvbnNlICpyZWRpcmVjdFJlc3Bv
bnNlKQogewogICAgIGlmIChyZWRpcmVjdFJlc3BvbnNlKQpAQCAtMzM5LDYgKzMzOCw1IEBAIE5T
VVJMUmVzcG9uc2UgKnN5bnRoZXNpemVSZWRpcmVjdFJlc3BvbnMKICAgICBOU0RpY3Rpb25hcnkg
KnN5bnRoZXNpemVkUmVzcG9uc2VIZWFkZXJGaWVsZHMgPSBAeyBAIkxvY2F0aW9uIjogW1tuZXdS
ZXF1ZXN0IFVSTF0gYWJzb2x1dGVTdHJpbmddLCBAIkNhY2hlLUNvbnRyb2wiOiBAIm5vLXN0b3Jl
IiB9OwogICAgIHJldHVybiBbW1tOU0hUVFBVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6
W2N1cnJlbnRSZXF1ZXN0IFVSTF0gc3RhdHVzQ29kZTozMDIgSFRUUFZlcnNpb246KE5TU3RyaW5n
ICopa0NGSFRUUFZlcnNpb24xXzEgaGVhZGVyRmllbGRzOnN5bnRoZXNpemVkUmVzcG9uc2VIZWFk
ZXJGaWVsZHNdIGF1dG9yZWxlYXNlXTsKIH0KLSNlbmRpZgogCiB9CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS93aW4vVGVtcG9yYXJ5TGlua1N0dWJzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vVGVtcG9yYXJ5TGlua1N0dWJzLmNwcAkocmV2aXNp
b24gMjA3MDM5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1RlbXBvcmFyeUxpbmtT
dHVicy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDcgKzI3LDcgQEAKIAogI2luY2x1ZGUgIk5v
dEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiU1NMS2V5R2VuZXJhdG9yLmgiCi0jaWYgIVVTRShD
Rk5FVFdPUkspCisjaWYgIVVTRShDRlVSTENPTk5FQ1RJT04pCiAjaW5jbHVkZSAiQ29va2llU3Rv
cmFnZS5oIgogI2VuZGlmCiAKQEAgLTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
U3RyaW5nIHNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyh1bnNpZ25lZCwgY29uc3Qg
U3RyaW5nJiwgY29uc3QgVVJMJikgeyBub3RJbXBsZW1lbnRlZCgpOyByZXR1cm4gU3RyaW5nKCk7
IH0KIHZvaWQgZ2V0U3VwcG9ydGVkS2V5U2l6ZXMoVmVjdG9yPFN0cmluZz4mKSB7IG5vdEltcGxl
bWVudGVkKCk7IH0KIAotI2lmICFVU0UoQ0ZORVRXT1JLKQorI2lmICFVU0UoQ0ZVUkxDT05ORUNU
SU9OKQogdm9pZCBzdGFydE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMoQ29va2llQ2hhbmdlQ2FsbGJh
Y2tQdHIpIHsgbm90SW1wbGVtZW50ZWQoKTsgfQogdm9pZCBzdG9wT2JzZXJ2aW5nQ29va2llQ2hh
bmdlcygpIHsgbm90SW1wbGVtZW50ZWQoKTsgfQogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL2pzL1dlYkNvcmVUZXN0U3VwcG9ydFByZWZpeC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvanMvV2ViQ29yZVRlc3RTdXBwb3J0UHJlZml4LmgJKHJldmlz
aW9uIDIwNzAzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvanMvV2ViQ29yZVRlc3RTdXBw
b3J0UHJlZml4LmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMCw5ICsxMjAsNyBAQAogI2RlZmluZSBP
QlNPTEVURV9DT0xPUlNZTkNfQVBJCiAjZW5kaWYKICNlbmRpZgotI2lmIFVTRShDRk5FVFdPUksp
Ci0vKiBXaW5kb3dzIGRvZXNuJ3QgaW5jbHVkZSBDRk5ldHdvcmsuaCB2aWEgQ29yZVNlcnZpY2Vz
LmgsIHNvIHdlIGRvCi0gICBpdCBleHBsaWNpdGx5IGhlcmUgdG8gbWFrZSBXaW5kb3dzIG1vcmUg
Y29uc2lzdGVudCB3aXRoIE1hYy4gKi8KKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogI2luY2x1
ZGUgPENGTmV0d29yay9DRk5ldHdvcmsuaD4KIC8vIE9uIFdpbmRvd3MsIGRpc3BhdGNoLmggbmVl
ZHMgdG8gYmUgaW5jbHVkZWQgYmVmb3JlIGNlcnRhaW4gQ0ZOZXR3b3JrIGhlYWRlcnMuCiAjaW5j
bHVkZSA8ZGlzcGF0Y2gvZGlzcGF0Y2guaD4KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNzAz
OSkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDMxIEBACisyMDE2LTEwLTEwICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgUmVtb3ZlIGRlYWQgbmV0d29ya2luZyBjb2RlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjMyNjMKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rv
d25sb2Fkcy9Eb3dubG9hZC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9p
b3MvRG93bmxvYWRJT1MubW06IFJlbW92ZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvRG93
bmxvYWRzL21hYy9Eb3dubG9hZE1hYy5tbToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrTG9hZC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL21hYy9OZXR3b3JrTG9hZE1hYy5t
bToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWQ6OndpbGxDYWNoZVJlc3BvbnNlQXN5bmMp
OiBEZWxldGVkLgorICAgICAgICAqIFNoYXJlZC9BdXRoZW50aWNhdGlvbi9jb2NvYS9BdXRoZW50
aWNhdGlvbk1hbmFnZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6QXV0aGVudGljYXRpb25N
YW5hZ2VyOjpyZWNlaXZlZENyZWRlbnRpYWwpOgorICAgICAgICAoV2ViS2l0OjpBdXRoZW50aWNh
dGlvbk1hbmFnZXI6OnJlY2VpdmVkUmVxdWVzdFRvQ29udGludWVXaXRob3V0Q3JlZGVudGlhbCk6
CisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6cmVjZWl2ZWRDYW5jZWxs
YXRpb24pOgorICAgICAgICAoV2ViS2l0OjpBdXRoZW50aWNhdGlvbk1hbmFnZXI6OnJlY2VpdmVk
UmVxdWVzdFRvUGVyZm9ybURlZmF1bHRIYW5kbGluZyk6CisgICAgICAgIChXZWJLaXQ6OkF1dGhl
bnRpY2F0aW9uTWFuYWdlcjo6cmVjZWl2ZWRDaGFsbGVuZ2VSZWplY3Rpb24pOgorICAgICAgICAq
IFNoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFy
ZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oOgorICAgICAgICAqIFNoYXJlZC9tYWMv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzTWFjLm1tOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVy
PFJlc291cmNlUmVxdWVzdD46OmVuY29kZVBsYXRmb3JtRGF0YSk6CisgICAgICAgIChJUEM6OkFy
Z3VtZW50Q29kZXI8UmVzb3VyY2VSZXF1ZXN0Pjo6ZGVjb2RlUGxhdGZvcm1EYXRhKToKKyAgICAg
ICAgKiBXZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMTYtMTAtMTAgIEtv
bnN0YW50aW4gVG9rYXJldiAgPGFubnVsZW5AeWFuZGV4LnJ1PgogCiAgICAgICAgIEFkZGVkIGZp
bmFsIHNwZWNpZmllciB0byBXZWJJbnNwZWN0b3JTZXJ2ZXIgYW5kIHRvIGl0cyBvdmVycmlkZGVu
IG1ldGhvZHMKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2Fk
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xv
YWQuaAkocmV2aXNpb24gMjA3MDM5KQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0xvYWQuaAkod29ya2luZyBjb3B5KQpAQCAtNzksMTIgKzc5LDggQEAgcHVibGljOgog
ICAgIHZvaWQgZGlkUmVjZWl2ZURhdGFBcnJheShXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIENG
QXJyYXlSZWYpIG92ZXJyaWRlOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0jaWYgVVNF
KENGTkVUV09SSykKLSAgICB2b2lkIHdpbGxDYWNoZVJlc3BvbnNlQXN5bmMoV2ViQ29yZTo6UmVz
b3VyY2VIYW5kbGUqLCBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmKSBvdmVycmlkZTsKLSNlbHNlCiAg
ICAgdm9pZCB3aWxsQ2FjaGVSZXNwb25zZUFzeW5jKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwg
TlNDYWNoZWRVUkxSZXNwb25zZSAqKSBvdmVycmlkZTsKICNlbmRpZgotI2VuZGlmCiAKICNpZiBV
U0UoUFJPVEVDVElPTl9TUEFDRV9BVVRIX0NBTExCQUNLKQogICAgIHZvaWQgY29udGludWVDYW5B
dXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKGJvb2wpOwpJbmRleDogU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmgJKHJldmlz
aW9uIDIwNzAzOSkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9E
b3dubG9hZC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NywxMCArNDcsNiBAQCBPQkpDX0NMQVNTIFdL
RG93bmxvYWRBc0RlbGVnYXRlOwogI2VuZGlmCiAjZW5kaWYKIAotI2lmIFVTRShDRk5FVFdPUksp
Ci0jaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGVVJMRG93bmxvYWRQcml2Lmg+Ci0jZW5kaWYKLQogbmFt
ZXNwYWNlIElQQyB7CiBjbGFzcyBEYXRhUmVmZXJlbmNlOwogfQpAQCAtMTM5LDkgKzEzNSw2IEBA
IHByaXZhdGU6CiAgICAgUmV0YWluUHRyPFdLRG93bmxvYWRBc0RlbGVnYXRlPiBtX2RlbGVnYXRl
OwogI2VuZGlmCiAjZW5kaWYKLSNpZiBVU0UoQ0ZORVRXT1JLKQotICAgIFJldGFpblB0cjxDRlVS
TERvd25sb2FkUmVmPiBtX2Rvd25sb2FkOwotI2VuZGlmCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdl
YkNvcmU6OlJlc291cmNlSGFuZGxlQ2xpZW50PiBtX2Rvd25sb2FkQ2xpZW50OwogICAgIFJlZlB0
cjxXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZT4gbV9yZXNvdXJjZUhhbmRsZTsKICAgICBTdHJpbmcg
bV9zdWdnZXN0ZWROYW1lOwpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRG93
bmxvYWRzL21hYy9Eb3dubG9hZE1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9O
ZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvbWFjL0Rvd25sb2FkTWFjLm1tCShyZXZpc2lvbiAyMDcw
MzkpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvbWFjL0Rvd25s
b2FkTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaW1wb3J0ICJjb25m
aWcuaCIKICNpbXBvcnQgIkRvd25sb2FkLmgiCiAKLSNpZiAhVVNFKENGTkVUV09SSykgJiYgIVVT
RShORVRXT1JLX1NFU1NJT04pCisjaWYgIVVTRShORVRXT1JLX1NFU1NJT04pCiAKICNpbXBvcnQg
PFdlYkNvcmUvQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvQXV0
aGVudGljYXRpb25NYWMuaD4KQEAgLTI3Miw0ICsyNzIsNCBAQCAtICh2b2lkKWRvd25sb2FkOihO
U1VSTERvd25sb2FkICopZG93bmxvCiAKIEBlbmQKIAotI2VuZGlmIC8vICFVU0UoQ0ZORVRXT1JL
KSAmJiAhVVNFKE5FVFdPUktfU0VTU0lPTikKKyNlbmRpZiAvLyAhVVNFKE5FVFdPUktfU0VTU0lP
TikKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL21hYy9OZXR3b3JrTG9hZE1h
Yy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvTmV0
d29ya0xvYWRNYWMubW0JKHJldmlzaW9uIDIwNzAzOSkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL21hYy9OZXR3b3JrTG9hZE1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjQsNyAr
MjQsNiBAQAogICovCiAKICNpbXBvcnQgImNvbmZpZy5oIgotCiAjaW1wb3J0ICJOZXR3b3JrTG9h
ZC5oIgogCiAjaW1wb3J0IDxXZWJDb3JlL0NGTmV0d29ya1NQSS5oPgpAQCAtMzQsMTcgKzMzLDYg
QEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi0jaWYg
VVNFKENGTkVUV09SSykKLQotdm9pZCBOZXR3b3JrTG9hZDo6d2lsbENhY2hlUmVzcG9uc2VBc3lu
YyhSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmIGNmUmVzcG9u
c2UpCi17Ci0gICAgQVNTRVJUX1VOVVNFRChoYW5kbGUsIGhhbmRsZSA9PSBtX2hhbmRsZSk7Ci0K
LSAgICBtX2hhbmRsZS0+Y29udGludWVXaWxsQ2FjaGVSZXNwb25zZShjZlJlc3BvbnNlKTsKLX0K
LQotI2Vsc2UKLQogdm9pZCBOZXR3b3JrTG9hZDo6d2lsbENhY2hlUmVzcG9uc2VBc3luYyhSZXNv
dXJjZUhhbmRsZSogaGFuZGxlLCBOU0NhY2hlZFVSTFJlc3BvbnNlICpuc1Jlc3BvbnNlKQogewog
ICAgIEFTU0VSVF9VTlVTRUQoaGFuZGxlLCBoYW5kbGUgPT0gbV9oYW5kbGUpOwpAQCAtNTIsNiAr
NDAsNCBAQCB2b2lkIE5ldHdvcmtMb2FkOjp3aWxsQ2FjaGVSZXNwb25zZUFzeW5jCiAgICAgbV9o
YW5kbGUtPmNvbnRpbnVlV2lsbENhY2hlUmVzcG9uc2UobnNSZXNwb25zZSk7CiB9CiAKLSNlbmRp
ZiAvLyAhVVNFKENGTkVUV09SSykKLQogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnMuY3BwCShyZXZpc2lvbiAyMDcwMzkpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJv
Y2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNCw3ICsxMDQs
NyBAQCB2b2lkIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kCiAgICAgZW5jb2Rl
ciA8PCB0ZXh0Q2hlY2tlclN0YXRlOwogICAgIGVuY29kZXIgPDwgZnVsbEtleWJvYXJkQWNjZXNz
RW5hYmxlZDsKICAgICBlbmNvZGVyIDw8IGRlZmF1bHRSZXF1ZXN0VGltZW91dEludGVydmFsOwot
I2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZORVRXT1JLKQorI2lmIFBMQVRGT1JNKENPQ09B
KQogICAgIGVuY29kZXIgPDwgdWlQcm9jZXNzQnVuZGxlSWRlbnRpZmllcjsKICNlbmRpZgogI2lm
IFBMQVRGT1JNKENPQ09BKQpAQCAtMjQwLDcgKzI0MCw3IEBAIGJvb2wgV2ViUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVyczo6ZGVjb2QKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVj
b2Rlci5kZWNvZGUocGFyYW1ldGVycy5kZWZhdWx0UmVxdWVzdFRpbWVvdXRJbnRlcnZhbCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKENGTkVUV09S
SykKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRl
cnMudWlQcm9jZXNzQnVuZGxlSWRlbnRpZmllcikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICNl
bmRpZgpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVycy5oCShyZXZpc2lvbiAyMDcwMzkpCisrKyBTb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
MjMsNyArMTIzLDcgQEAgc3RydWN0IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMgewogCiAg
ICAgZG91YmxlIGRlZmF1bHRSZXF1ZXN0VGltZW91dEludGVydmFsOwogCi0jaWYgUExBVEZPUk0o
Q09DT0EpIHx8IFVTRShDRk5FVFdPUkspCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgU3RyaW5n
IHVpUHJvY2Vzc0J1bmRsZUlkZW50aWZpZXI7CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYktp
dDIvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL2NvY29hL0F1dGhlbnRpY2F0aW9uTWFuYWdlckNvY29h
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BdXRoZW50aWNhdGlvbi9j
b2NvYS9BdXRoZW50aWNhdGlvbk1hbmFnZXJDb2NvYS5tbQkocmV2aXNpb24gMjA3MDM5KQorKysg
U291cmNlL1dlYktpdDIvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL2NvY29hL0F1dGhlbnRpY2F0aW9u
TWFuYWdlckNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMiwzNyArMzIsMjcgQEAgbmFtZXNw
YWNlIFdlYktpdCB7CiAKIHZvaWQgQXV0aGVudGljYXRpb25NYW5hZ2VyOjpyZWNlaXZlZENyZWRl
bnRpYWwoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlLCBjb25zdCBDcmVkZW50aWFsJiBjcmVkZW50aWFsKQogewotI2lmICFVU0UoQ0ZORVRXT1JL
KQogICAgIFthdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5zZW5kZXIoKSB1c2VDcmVkZW50aWFsOmNy
ZWRlbnRpYWwubnNDcmVkZW50aWFsKCkgZm9yQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6YXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UubnNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgpXTsKLSNlbmRp
ZgogfQogCiB2b2lkIEF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6cmVjZWl2ZWRSZXF1ZXN0VG9Db250
aW51ZVdpdGhvdXRDcmVkZW50aWFsKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBhdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSkKIHsKLSNpZiAhVVNFKENGTkVUV09SSykKICAgICBbYXV0aGVu
dGljYXRpb25DaGFsbGVuZ2Uuc2VuZGVyKCkgY29udGludWVXaXRob3V0Q3JlZGVudGlhbEZvckF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOmF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLm5zVVJMQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UoKV07Ci0jZW5kaWYKIH0KIAogdm9pZCBBdXRoZW50aWNhdGlvbk1h
bmFnZXI6OnJlY2VpdmVkQ2FuY2VsbGF0aW9uKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
JiBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkKIHsKLSNpZiAhVVNFKENGTkVUV09SSykKICAgICBb
YXV0aGVudGljYXRpb25DaGFsbGVuZ2Uuc2VuZGVyKCkgY2FuY2VsQXV0aGVudGljYXRpb25DaGFs
bGVuZ2U6YXV0aGVudGljYXRpb25DaGFsbGVuZ2UubnNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSgpXTsKLSNlbmRpZgogfQogCiB2b2lkIEF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6cmVjZWl2ZWRS
ZXF1ZXN0VG9QZXJmb3JtRGVmYXVsdEhhbmRsaW5nKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlJiBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkKIHsKLSNpZiAhVVNFKENGTkVUV09SSykKICAg
ICBbYXV0aGVudGljYXRpb25DaGFsbGVuZ2Uuc2VuZGVyKCkgcGVyZm9ybURlZmF1bHRIYW5kbGlu
Z0ZvckF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOmF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLm5zVVJM
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKV07Ci0jZW5kaWYKIH0KIAogdm9pZCBBdXRoZW50aWNh
dGlvbk1hbmFnZXI6OnJlY2VpdmVkQ2hhbGxlbmdlUmVqZWN0aW9uKGNvbnN0IEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlJiBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkKIHsKLSNpZiAhVVNFKENGTkVU
V09SSykKICAgICBbYXV0aGVudGljYXRpb25DaGFsbGVuZ2Uuc2VuZGVyKCkgcmVqZWN0UHJvdGVj
dGlvblNwYWNlQW5kQ29udGludWVXaXRoQ2hhbGxlbmdlOmF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
Lm5zVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKV07Ci0jZW5kaWYKIH0KIAogfQpJbmRleDog
U291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9XZWJDb3JlQXJndW1lbnRDb2RlcnNNYWMubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9XZWJDb3JlQXJndW1lbnRDb2Rl
cnNNYWMubW0JKHJldmlzaW9uIDIwNzAzOSkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwxMCArMzks
NiBAQAogI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L1Jlc291cmNlUmVxdWVzdC5oPgogCi0jaWYgVVNFKENGTkVUV09SSykKLSNpbXBvcnQgPENGTmV0
d29yay9DRlVSTFJlcXVlc3QuaD4KLSNlbmRpZgotCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlC
QUNLX1RBUkdFVCkKICNpbXBvcnQgPFdlYkNvcmUvQVZGb3VuZGF0aW9uU1BJLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL01lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Lmg+CkBAIC01NywzNiArNTMsNiBA
QCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIElQQyB7CiAKLSNpZiBVU0Uo
Q0ZORVRXT1JLKQotdm9pZCBBcmd1bWVudENvZGVyPFJlc291cmNlUmVxdWVzdD46OmVuY29kZVBs
YXRmb3JtRGF0YShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291
cmNlUmVxdWVzdCkKLXsKLSAgICBSZXRhaW5QdHI8Q0ZVUkxSZXF1ZXN0UmVmPiByZXF1ZXN0VG9T
ZXJpYWxpemUgPSByZXNvdXJjZVJlcXVlc3QuY2ZVUkxSZXF1ZXN0KERvTm90VXBkYXRlSFRUUEJv
ZHkpOwotCi0gICAgYm9vbCByZXF1ZXN0SXNQcmVzZW50ID0gcmVxdWVzdFRvU2VyaWFsaXplOwot
ICAgIGVuY29kZXIgPDwgcmVxdWVzdElzUHJlc2VudDsKLQotICAgIGlmICghcmVxdWVzdElzUHJl
c2VudCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gV2UgZG9uJ3Qgc2VuZCBIVFRQIGJvZHkg
b3ZlciBJUEMgZm9yIGJldHRlciBwZXJmb3JtYW5jZS4KLSAgICAvLyBBbHNvLCBpdCdzIG5vdCBh
bHdheXMgcG9zc2libGUgdG8gZG8sIGFzIHN0cmVhbXMgY2FuIG9ubHkgYmUgY3JlYXRlZCBpbiBw
cm9jZXNzIHRoYXQgZG9lcyBuZXR3b3JraW5nLgotICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IHJl
cXVlc3RIVFRQQm9keSA9IGFkb3B0Q0YoQ0ZVUkxSZXF1ZXN0Q29weUhUVFBSZXF1ZXN0Qm9keShy
ZXF1ZXN0VG9TZXJpYWxpemUuZ2V0KCkpKTsKLSAgICBSZXRhaW5QdHI8Q0ZSZWFkU3RyZWFtUmVm
PiByZXF1ZXN0SFRUUEJvZHlTdHJlYW0gPSBhZG9wdENGKENGVVJMUmVxdWVzdENvcHlIVFRQUmVx
dWVzdEJvZHlTdHJlYW0ocmVxdWVzdFRvU2VyaWFsaXplLmdldCgpKSk7Ci0gICAgaWYgKHJlcXVl
c3RIVFRQQm9keSB8fCByZXF1ZXN0SFRUUEJvZHlTdHJlYW0pIHsKLSAgICAgICAgQ0ZNdXRhYmxl
VVJMUmVxdWVzdFJlZiBtdXRhYmxlUmVxdWVzdCA9IENGVVJMUmVxdWVzdENyZWF0ZU11dGFibGVD
b3B5KDAsIHJlcXVlc3RUb1NlcmlhbGl6ZS5nZXQoKSk7Ci0gICAgICAgIHJlcXVlc3RUb1Nlcmlh
bGl6ZSA9IGFkb3B0Q0YobXV0YWJsZVJlcXVlc3QpOwotICAgICAgICBDRlVSTFJlcXVlc3RTZXRI
VFRQUmVxdWVzdEJvZHkobXV0YWJsZVJlcXVlc3QsIG5pbCk7Ci0gICAgICAgIENGVVJMUmVxdWVz
dFNldEhUVFBSZXF1ZXN0Qm9keVN0cmVhbShtdXRhYmxlUmVxdWVzdCwgbmlsKTsKLSAgICB9Ci0K
LSAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBkaWN0aW9uYXJ5ID0gYWRvcHRDRihXS0NG
VVJMUmVxdWVzdENyZWF0ZVNlcmlhbGl6YWJsZVJlcHJlc2VudGF0aW9uKHJlcXVlc3RUb1Nlcmlh
bGl6ZS5nZXQoKSwgSVBDOjp0b2tlbk51bGxUeXBlUmVmKCkpKTsKLSAgICBJUEM6OmVuY29kZShl
bmNvZGVyLCBkaWN0aW9uYXJ5LmdldCgpKTsKLQotICAgIC8vIFRoZSBmYWxsYmFjayBhcnJheSBp
cyBwYXJ0IG9mIENGVVJMUmVxdWVzdCwgYnV0IGl0IGlzIG5vdCBlbmNvZGVkIGJ5IFdLQ0ZVUkxS
ZXF1ZXN0Q3JlYXRlU2VyaWFsaXphYmxlUmVwcmVzZW50YXRpb24uCi0gICAgZW5jb2RlciA8PCBy
ZXNvdXJjZVJlcXVlc3QucmVzcG9uc2VDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNr
QXJyYXkoKTsKLSAgICBlbmNvZGVyLmVuY29kZUVudW0ocmVzb3VyY2VSZXF1ZXN0LnJlcXVlc3Rl
cigpKTsKLX0KLSNlbHNlCiB2b2lkIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VSZXF1ZXN0Pjo6ZW5j
b2RlUGxhdGZvcm1EYXRhKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYg
cmVzb3VyY2VSZXF1ZXN0KQogewogICAgIFJldGFpblB0cjxOU1VSTFJlcXVlc3Q+IHJlcXVlc3RU
b1NlcmlhbGl6ZSA9IHJlc291cmNlUmVxdWVzdC5uc1VSTFJlcXVlc3QoRG9Ob3RVcGRhdGVIVFRQ
Qm9keSk7CkBAIC0xMTIsNyArNzgsNiBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VSZXF1
ZXN0Pjo6ZW5jCiAgICAgZW5jb2RlciA8PCByZXNvdXJjZVJlcXVlc3QucmVzcG9uc2VDb250ZW50
RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXkoKTsKICAgICBlbmNvZGVyLmVuY29kZUVu
dW0ocmVzb3VyY2VSZXF1ZXN0LnJlcXVlc3RlcigpKTsKIH0KLSNlbmRpZgogCiBib29sIEFyZ3Vt
ZW50Q29kZXI8UmVzb3VyY2VSZXF1ZXN0Pjo6ZGVjb2RlUGxhdGZvcm1EYXRhKERlY29kZXImIGRl
Y29kZXIsIFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0KQogewpAQCAtMTI5LDE5ICs5
NCwxMSBAQCBib29sIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VSZXF1ZXN0Pjo6ZGVjCiAgICAgaWYg
KCFJUEM6OmRlY29kZShkZWNvZGVyLCBkaWN0aW9uYXJ5KSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCi0jaWYgVVNFKENGTkVUV09SSykKLSAgICBSZXRhaW5QdHI8Q0ZVUkxSZXF1ZXN0UmVmPiBj
ZlVSTFJlcXVlc3QgPSBhZG9wdENGKFdLQ3JlYXRlQ0ZVUkxSZXF1ZXN0RnJvbVNlcmlhbGl6YWJs
ZVJlcHJlc2VudGF0aW9uKGRpY3Rpb25hcnkuZ2V0KCksIElQQzo6dG9rZW5OdWxsVHlwZVJlZigp
KSk7Ci0gICAgaWYgKCFjZlVSTFJlcXVlc3QpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAg
IHJlc291cmNlUmVxdWVzdCA9IFJlc291cmNlUmVxdWVzdChjZlVSTFJlcXVlc3QuZ2V0KCkpOwot
I2Vsc2UKICAgICBSZXRhaW5QdHI8TlNVUkxSZXF1ZXN0PiBuc1VSTFJlcXVlc3QgPSBXS05TVVJM
UmVxdWVzdEZyb21TZXJpYWxpemFibGVSZXByZXNlbnRhdGlvbihkaWN0aW9uYXJ5LmdldCgpLCBJ
UEM6OnRva2VuTnVsbFR5cGVSZWYoKSk7CiAgICAgaWYgKCFuc1VSTFJlcXVlc3QpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAogICAgIHJlc291cmNlUmVxdWVzdCA9IFJlc291cmNlUmVxdWVzdChu
c1VSTFJlcXVlc3QuZ2V0KCkpOwotI2VuZGlmCiAgICAgCiAgICAgVmVjdG9yPFN0cmluZz4gcmVz
cG9uc2VDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXk7CiAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShyZXNwb25zZUNvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tB
cnJheSkpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMDcwMzkpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQy
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTEwNTEsNyArMTA1
MSw2IEBACiAJCTVDMTQyNzA1MUMyM0Y4NEMwMEQ0MTE4MyAvKiBEb3dubG9hZElELmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzE0MjZGNzFDMjNGODQz
MDBENDExODMgLyogRG93bmxvYWRJRC5oICovOyB9OwogCQk1QzE0MjcwNjFDMjNGODRDMDBENDEx
ODMgLyogRG93bmxvYWRNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDVDMTQyNkY4MUMyM0Y4NDMwMEQ0MTE4MyAvKiBEb3dubG9hZE1hbmFn
ZXIuY3BwICovOyB9OwogCQk1QzE0MjcwNzFDMjNGODRDMDBENDExODMgLyogRG93bmxvYWRNYW5h
Z2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzE0
MjZGOTFDMjNGODQzMDBENDExODMgLyogRG93bmxvYWRNYW5hZ2VyLmggKi87IH07Ci0JCTVDMTQy
NzExMUMyM0Y4OUUwMEQ0MTE4MyAvKiBEb3dubG9hZElPUy5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDMTQyNzBEMUMyM0Y4ODUwMEQ0MTE4MyAvKiBE
b3dubG9hZElPUy5tbSAqLzsgfTsKIAkJNUMxNDI3MTIxQzIzRjg5RTAwRDQxMTgzIC8qIERvd25s
b2FkTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NUMxNDI3MEYxQzIzRjg5OTAwRDQxMTgzIC8qIERvd25sb2FkTWFjLm1tICovOyB9OwogCQk1QzE0
MjcxMzFDMjNGODlFMDBENDExODMgLyogRG93bmxvYWRDb2NvYS5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDMTQyNzA5MUMyM0Y4NjkwMEQ0MTE4MyAv
KiBEb3dubG9hZENvY29hLm1tICovOyB9OwogCQk1QzE0MjcxODFDMjNGOEI3MDBENDExODMgLyog
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1QzE0MjcxNDFDMjNGOEIwMDBENDExODMgLyogQ3VzdG9tUHJvdG9jb2xN
YW5hZ2VyLmggKi87IH07CkBAIC0zMTMwLDcgKzMxMjksNiBAQAogCQk1QzE0MjZGODFDMjNGODQz
MDBENDExODMgLyogRG93bmxvYWRNYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbmFtZSA9IERvd25sb2FkTWFuYWdlci5jcHA7IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy9E
b3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNUMxNDI2RjkxQzIzRjg0MzAwRDQxMTgzIC8qIERvd25sb2FkTWFuYWdlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBEb3dubG9hZE1hbmFnZXIuaDsgcGF0aCA9IE5ldHdv
cmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNUMxNDI3MDkxQzIzRjg2OTAwRDQxMTgzIC8qIERvd25sb2FkQ29jb2EubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBEb3dubG9hZENvY29hLm1t
OyBwYXRoID0gTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL2NvY29hL0Rvd25sb2FkQ29jb2EubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTVDMTQyNzBEMUMyM0Y4ODUwMEQ0MTE4MyAv
KiBEb3dubG9hZElPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9
IERvd25sb2FkSU9TLm1tOyBwYXRoID0gTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL2lvcy9Eb3du
bG9hZElPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUMxNDI3MEYxQzIzRjg5
OTAwRDQxMTgzIC8qIERvd25sb2FkTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBuYW1lID0gRG93bmxvYWRNYWMubW07IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9h
ZHMvbWFjL0Rvd25sb2FkTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzE0
MjcxNDFDMjNGOEIwMDBENDExODMgLyogQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEN1c3RvbVByb3RvY29sTWFuYWdlci5oOyBwYXRoID0g
TmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL0N1c3RvbVByb3RvY29sTWFuYWdlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzE0MjcxNTFDMjNGOEIwMDBENDExODMgLyog
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9
IEN1c3RvbVByb3RvY29sTWFuYWdlci5tZXNzYWdlcy5pbjsgcGF0aCA9IE5ldHdvcmtQcm9jZXNz
L0N1c3RvbVByb3RvY29scy9DdXN0b21Qcm90b2NvbE1hbmFnZXIubWVzc2FnZXMuaW47IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01NzM4LDcgKzU3MzYsNiBAQAogCQkJaXNhID0gUEJY
R3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQk1QzE0MjcwODFDMjNGODUyMDBENDExODMgLyog
Y29jb2EgKi8sCi0JCQkJNUMxNDI3MEMxQzIzRjg3NzAwRDQxMTgzIC8qIGlvcyAqLywKIAkJCQk1
QzE0MjcwQjFDMjNGODcxMDBENDExODMgLyogbWFjICovLAogCQkJCTgzQkZBQzQwMUQ5NjEzNjAw
MDQzMzQ5MCAvKiBCbG9iRG93bmxvYWRDbGllbnQuaCAqLywKIAkJCQk4M0JGQUM0MTFEOTYxMzYw
MDA0MzM0OTAgLyogQmxvYkRvd25sb2FkQ2xpZW50LmNwcCAqLywKQEAgLTU3NzksMTQgKzU3NzYs
NiBAQAogCQkJbmFtZSA9IG1hYzsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07Ci0J
CTVDMTQyNzBDMUMyM0Y4NzcwMEQ0MTE4MyAvKiBpb3MgKi8gPSB7Ci0JCQlpc2EgPSBQQlhHcm91
cDsKLQkJCWNoaWxkcmVuID0gKAotCQkJCTVDMTQyNzBEMUMyM0Y4ODUwMEQ0MTE4MyAvKiBEb3du
bG9hZElPUy5tbSAqLywKLQkJCSk7Ci0JCQluYW1lID0gaW9zOwotCQkJc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsKLQkJfTsKIAkJNUMxNDI3MUExQzIzRjhCRjAwRDQxMTgzIC8qIENvY29hICovID0g
ewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTkwODgsNyArOTA3Nyw2
IEBACiAJCQkJNUMxNDI3MDExQzIzRjg0QzAwRDQxMTgzIC8qIERvd25sb2FkLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUExREY2MzEyMThFMEI3QzgwMDNBM0UyQSAvKiBEb3dubG9hZENsaWVudC5t
bSBpbiBTb3VyY2VzICovLAogCQkJCTVDMTQyNzEzMUMyM0Y4OUUwMEQ0MTE4MyAvKiBEb3dubG9h
ZENvY29hLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJNUMxNDI3MTExQzIzRjg5RTAwRDQxMTgzIC8q
IERvd25sb2FkSU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNUMxNDI3MTIxQzIzRjg5RTAwRDQx
MTgzIC8qIERvd25sb2FkTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNUMxNDI3MDYxQzIzRjg0
QzAwRDQxMTgzIC8qIERvd25sb2FkTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUI3
RDRDQjEyODhBQUE3MDBDRkQwOEMgLyogRG93bmxvYWRQcm94eS5jcHAgaW4gU291cmNlcyAqLywK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMDcwMzkpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDE2LTEwLTEwICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVtb3ZlIGRlYWQg
bmV0d29ya2luZyBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNjMyNjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHA6Cisg
ICAgICAgIChXZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OnNjaGVkdWxlTG9hZCk6CisKIDIwMTYt
MTAtMDYgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgVW5y
ZXZpZXdlZCBidWlsZCBmaXggd2hlbiBidWlsZGluZyB3aXRoIERpcmVjdDJELgpJbmRleDogU291
cmNlL1dlYktpdC9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2Fk
U2NoZWR1bGVyLmNwcAkocmV2aXNpb24gMjA3MDM5KQorKysgU291cmNlL1dlYktpdC9XZWJDb3Jl
U3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
NDksNyArMTQ5LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OnNjaGVkdWxlTAog
ICAgIGJvb2wgaGFkUmVxdWVzdHMgPSBob3N0LT5oYXNSZXF1ZXN0cygpOwogICAgIGhvc3QtPnNj
aGVkdWxlKHJlc291cmNlTG9hZGVyLCBwcmlvcml0eSk7CiAKLSNpZiBQTEFURk9STShDT0NPQSkg
fHwgVVNFKENGTkVUV09SSykKKyNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKENGVVJMQ09OTkVD
VElPTikKICAgICBpZiAoUmVzb3VyY2VSZXF1ZXN0OjpyZXNvdXJjZVByaW9yaXRpZXNFbmFibGVk
KCkgJiYgIWlzU3VzcGVuZGluZ1BlbmRpbmdSZXF1ZXN0cygpKSB7CiAgICAgICAgIC8vIFNlcnZl
IGFsbCByZXF1ZXN0cyBhdCBvbmNlIHRvIGtlZXAgdGhlIHBpcGVsaW5lIGZ1bGwgYXQgdGhlIG5l
dHdvcmsgbGF5ZXIuCiAgICAgICAgIC8vIEZJWE1FOiBEb2VzIHRoaXMgY29kZSBkbyBhbnl0aGlu
ZyB1c2VmdWwsIGdpdmVuIHRoYXQgd2UgYWxzbyBzZXQgbWF4UmVxdWVzdHNJbkZsaWdodFBlckhv
c3QgdG8gZWZmZWN0aXZlbHkgdW5saW1pdGVkIG9uIHRoZXNlIHBsYXRmb3Jtcz8KSW5kZXg6IFNv
dXJjZS9XZWJLaXQvY2YvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2Yv
Q2hhbmdlTG9nCShyZXZpc2lvbiAyMDcwMzkpCisrKyBTb3VyY2UvV2ViS2l0L2NmL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDE2LTEwLTEwICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVtb3ZlIGRlYWQg
bmV0d29ya2luZyBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNjMyNjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudENGLmNwcDoKKwogMjAx
Ni0wOC0xNSAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgogCiAgICAgICAg
IFJlbW92ZSB1bnVzZWQgaW5jbHVkZXMgb2Ygd3RmIGhlYWRlcnMKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvY2YvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvY2YvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Q0Yu
Y3BwCShyZXZpc2lvbiAyMDcwMzkpCisrKyBTb3VyY2UvV2ViS2l0L2NmL1dlYkNvcmVTdXBwb3J0
L1dlYkluc3BlY3RvckNsaWVudENGLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsOCArMjcsOCBA
QAogLy8gYmVmb3JlIGluY2x1ZGluZyBhbnkgb3RoZXIgZmlsZXMuIEZhaWxpbmcgdG8gaW5jbHVk
ZSBjb25maWcuaCB3aWxsIGxlYXZlCiAvLyBVU0VfQ0YgdW5kZWZpbmVkLCBjYXVzaW5nIGJ1aWxk
IGZhaWx1cmVzIGluIHRoaXMKIC8vIGZpbGUuIEJ1dCBNYWMgZG9lc24ndCBoYXZlIGEgY29uZmln
LmggZm9yIFdlYktpdCwgc28gd2UgY2FuJ3QgaW5jbHVkZSB0aGUKLS8vIFdpbmRvd3Mgb25lIGhl
cmUuIEZvciBub3cgd2UgY2FuIGp1c3QgZGVmaW5lIFVTRV9DRiBhbmQKLS8vIFVTRV9DRk5FVFdP
UksgbWFudWFsbHksIGJ1dCB3ZSBuZWVkIGEgYmV0dGVyIGxvbmctdGVybSBzb2x1dGlvbi4KKy8v
IFdpbmRvd3Mgb25lIGhlcmUuIEZvciBub3cgd2UgY2FuIGp1c3QgZGVmaW5lIFVTRV9DRiBtYW51
YWxseSwKKy8vIGJ1dCB3ZSBuZWVkIGEgYmV0dGVyIGxvbmctdGVybSBzb2x1dGlvbi4KICNpZm5k
ZWYgVVNFX0NGCiAjZGVmaW5lIFVTRV9DRiAxCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
bWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDIwNzAzOSkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBACisyMDE2LTEwLTEwICBBbGV4IENocmlzdGVuc2VuICA8
YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVtb3ZlIGRlYWQgbmV0d29ya2lu
ZyBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NjMyNjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IE1pc2MvV2ViRG93bmxvYWQubW06CisgICAgICAgICgtW1dlYkRvd25sb2FkIF9pbml0V2l0aExv
YWRpbmdDRlVSTENvbm5lY3Rpb246cmVxdWVzdDpyZXNwb25zZTpkZWxlZ2F0ZTpwcm94eTpdKTog
RGVsZXRlZC4KKyAgICAgICAgKiBNaXNjL1dlYkRvd25sb2FkSW50ZXJuYWwuaDoKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbToKKyAgICAgICAgKFdlYkZy
YW1lTG9hZGVyQ2xpZW50Ojpjb252ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93bmxvYWQpOgorICAg
ICAgICAqIFdlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW06CisgICAgICAgICgrW1dlYlByZWZlcmVu
Y2VzIF9zZXRDdXJyZW50TmV0d29ya0xvYWRlclNlc3Npb25Db29raWVBY2NlcHRQb2xpY3k6XSk6
CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoLVtXZWJWaWV3IHNjaGVk
dWxlSW5SdW5Mb29wOmZvck1vZGU6XSk6CisgICAgICAgICgtW1dlYlZpZXcgdW5zY2hlZHVsZUZy
b21SdW5Mb29wOmZvck1vZGU6XSk6CisKIDIwMTYtMTAtMTAgIERhcmluIEFkbGVyICA8ZGFyaW5A
YXBwbGUuY29tPgogCiAgICAgICAgIE1vdmUgTm90aWZpY2F0aW9uQ2VudGVyIGZyb20gbGVnYWN5
IHRvIG5ldyBET00gZXhjZXB0aW9ucwpJbmRleDogU291cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJE
b3dubG9hZC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYkRvd25s
b2FkLm1tCShyZXZpc2lvbiAyMDcwMzkpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYkRv
d25sb2FkLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00MCwxMSArNDAsNiBAQAogCiAjaW1wb3J0ICJX
ZWJUeXBlc0ludGVybmFsLmgiCiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotI2ltcG9ydCA8Q0ZOZXR3
b3JrL0NGTmV0d29yay5oPgotI2ltcG9ydCA8Q0ZOZXR3b3JrL0NGVVJMQ29ubmVjdGlvbi5oPgot
I2VuZGlmCi0KIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBAY2xhc3MgTlNVUkxDb25uZWN0
aW9uRGVsZWdhdGVQcm94eTsKQEAgLTYxLDE0ICs1Niw2IEBAIC0gKGlkKV9pbml0V2l0aFJlcXVl
c3Q6KE5TVVJMUmVxdWVzdCAqKXIKICAgICAgICAgICAgICAgZGVsZWdhdGU6KGlkKWRlbGVnYXRl
CiAgICAgICAgICAgICAgZGlyZWN0b3J5OihOU1N0cmluZyAqKWRpcmVjdG9yeTsKIAotI2lmIFVT
RShDRk5FVFdPUkspCi0tIChpZClfaW5pdFdpdGhMb2FkaW5nQ0ZVUkxDb25uZWN0aW9uOihDRlVS
TENvbm5lY3Rpb25SZWYpY29ubmVjdGlvbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmVxdWVzdDooQ0ZVUkxSZXF1ZXN0UmVmKXJlcXVlc3QKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmVzcG9uc2U6KENGVVJMUmVzcG9uc2VSZWYpcmVzcG9uc2UKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZGVsZWdhdGU6KGlkKWRlbGVnYXRlCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHByb3h5OihOU1VSTENvbm5lY3Rpb25EZWxlZ2F0ZVByb3h5ICopcHJveHk7
Ci0jZW5kaWYKLQogQGVuZAogCiBAaW50ZXJmYWNlIFdlYkRvd25sb2FkSW50ZXJuYWwgOiBOU09i
amVjdCA8TlNVUkxEb3dubG9hZERlbGVnYXRlPgpAQCAtMjMxLDE4ICsyMTgsNiBAQCAtIChpZClf
aW5pdFdpdGhMb2FkaW5nQ29ubmVjdGlvbjooTlNVUkxDCiAgICAgcmV0dXJuIFtzdXBlciBfaW5p
dFdpdGhMb2FkaW5nQ29ubmVjdGlvbjpjb25uZWN0aW9uIHJlcXVlc3Q6cmVxdWVzdCByZXNwb25z
ZTpyZXNwb25zZSBkZWxlZ2F0ZTpfd2ViSW50ZXJuYWwgcHJveHk6cHJveHldOwogfQogCi0jaWYg
VVNFKENGTkVUV09SSykKLS0gKGlkKV9pbml0V2l0aExvYWRpbmdDRlVSTENvbm5lY3Rpb246KENG
VVJMQ29ubmVjdGlvblJlZiljb25uZWN0aW9uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZXF1ZXN0OihDRlVSTFJlcXVlc3RSZWYpcmVxdWVzdAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXNwb25zZTooQ0ZVUkxSZXNwb25zZVJlZilyZXNwb25zZQotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBkZWxlZ2F0ZTooaWQpZGVsZWdhdGUKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcHJveHk6KE5TVVJMQ29ubmVjdGlvbkRlbGVnYXRlUHJveHkgKilwcm94
eQotewotICAgIFtzZWxmIF9zZXRSZWFsRGVsZWdhdGU6ZGVsZWdhdGVdOwotICAgIHJldHVybiBb
c3VwZXIgX2luaXRXaXRoTG9hZGluZ0NGVVJMQ29ubmVjdGlvbjpjb25uZWN0aW9uIHJlcXVlc3Q6
cmVxdWVzdCByZXNwb25zZTpyZXNwb25zZSBkZWxlZ2F0ZTpfd2ViSW50ZXJuYWwgcHJveHk6cHJv
eHldOwotfQotI2VuZGlmCi0KIC0gKGlkKV9pbml0V2l0aFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAq
KXJlcXVlc3QKICAgICAgICAgICAgICAgZGVsZWdhdGU6KGlkKWRlbGVnYXRlCiAgICAgICAgICAg
ICAgZGlyZWN0b3J5OihOU1N0cmluZyAqKWRpcmVjdG9yeQpJbmRleDogU291cmNlL1dlYktpdC9t
YWMvTWlzYy9XZWJEb3dubG9hZEludGVybmFsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9tYWMvTWlzYy9XZWJEb3dubG9hZEludGVybmFsLmgJKHJldmlzaW9uIDIwNzAzOSkKKysrIFNv
dXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViRG93bmxvYWRJbnRlcm5hbC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yNywxMCArMjcsNiBAQAogKi8KICAKICNpbXBvcnQgPFdlYktpdExlZ2FjeS9XZWJEb3du
bG9hZC5oPgotCi0jaWYgVVNFKENGTkVUV09SSykKLSNpbXBvcnQgPENGTmV0d29yay9DRlVSTENv
bm5lY3Rpb24uaD4KLSNlbmRpZgogIAogQGludGVyZmFjZSBXZWJEb3dubG9hZCAoV2ViRG93bmxv
YWRDcmVhdGlvbikKICsoaWQpX2Rvd25sb2FkV2l0aExvYWRpbmdDb25uZWN0aW9uOihOU1VSTENv
bm5lY3Rpb24gKiljb25uZWN0aW9uCkBAIC00MywxMiArMzksNCBAQCBAaW50ZXJmYWNlIFdlYkRv
d25sb2FkIChXZWJEb3dubG9hZENyZWF0CiAgICAgICAgICAgICAgICAgIGRlbGVnYXRlOihpZClk
ZWxlZ2F0ZQogICAgICAgICAgICAgICAgIGRpcmVjdG9yeTooTlNTdHJpbmcgKilkaXJlY3Rvcnk7
CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotKyAoaWQpX2Rvd25sb2FkV2l0aExvYWRpbmdDRlVSTENv
bm5lY3Rpb246KENGVVJMQ29ubmVjdGlvblJlZiljb25uZWN0aW9uCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmVxdWVzdDooQ0ZVUkxSZXF1ZXN0UmVmKXJlcXVlc3QKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlOihDRlVSTFJlc3BvbnNlUmVmKXJl
c3BvbnNlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxlZ2F0ZTooaWQpZGVs
ZWdhdGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3h5OihpZClwcm94
eTsKLSNlbmRpZgotCiBAZW5kCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQkocmV2aXNpb24gMjA3MDM5
KQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTMwNCwxMyArMzA0LDcgQEAgdm9pZCBXZWJGcmFtZUxv
YWRlckNsaWVudDo6Y29udmVydE1haW5SZQogCiAgICAgUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSA9
IG1haW5SZXNvdXJjZUxvYWRlci0+aGFuZGxlKCk7CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotICAg
IEFTU0VSVChbV2ViRG93bmxvYWQgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihfZG93bmxv
YWRXaXRoTG9hZGluZ0NGVVJMQ29ubmVjdGlvbjpyZXF1ZXN0OnJlc3BvbnNlOmRlbGVnYXRlOnBy
b3h5OildKTsKLSAgICBhdXRvIGNvbm5lY3Rpb24gPSBoYW5kbGUtPnJlbGVhc2VDb25uZWN0aW9u
Rm9yRG93bmxvYWQoKTsKLSAgICBbV2ViRG93bmxvYWQgX2Rvd25sb2FkV2l0aExvYWRpbmdDRlVS
TENvbm5lY3Rpb246Y29ubmVjdGlvbi5nZXQoKSByZXF1ZXN0OnJlcXVlc3QuY2ZVUkxSZXF1ZXN0
KFVwZGF0ZUhUVFBCb2R5KSByZXNwb25zZTpyZXNwb25zZS5jZlVSTFJlc3BvbnNlKCkgZGVsZWdh
dGU6W3dlYlZpZXcgZG93bmxvYWREZWxlZ2F0ZV0gcHJveHk6bmlsXTsKLSNlbHNlCiAgICAgW1dl
YkRvd25sb2FkIF9kb3dubG9hZFdpdGhMb2FkaW5nQ29ubmVjdGlvbjpoYW5kbGUtPmNvbm5lY3Rp
b24oKSByZXF1ZXN0OnJlcXVlc3QubnNVUkxSZXF1ZXN0KFVwZGF0ZUhUVFBCb2R5KSByZXNwb25z
ZTpyZXNwb25zZS5uc1VSTFJlc3BvbnNlKCkgZGVsZWdhdGU6W3dlYlZpZXcgZG93bmxvYWREZWxl
Z2F0ZV0gcHJveHk6bmlsXTsKLSNlbmRpZgogfQogCiBib29sIFdlYkZyYW1lTG9hZGVyQ2xpZW50
OjpkaXNwYXRjaERpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZShEb2N1bWVudExvYWRlciog
bG9hZGVyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlc3BvbnNlLCBpbnQgbGVuZ3RoKQpJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2Vi
Vmlldy9XZWJQcmVmZXJlbmNlcy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tCShyZXZpc2lvbiAyMDcwMzkpCisrKyBTb3VyY2UvV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xODAw
LDcgKzE4MDAsNyBAQCArICh2b2lkKV9jbGVhck5ldHdvcmtMb2FkZXJTZXNzaW9uCiArICh2b2lk
KV9zZXRDdXJyZW50TmV0d29ya0xvYWRlclNlc3Npb25Db29raWVBY2NlcHRQb2xpY3k6KE5TSFRU
UENvb2tpZUFjY2VwdFBvbGljeSlwb2xpY3kKIHsKICAgICBSZXRhaW5QdHI8Q0ZIVFRQQ29va2ll
U3RvcmFnZVJlZj4gY29va2llU3RvcmFnZSA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVs
dFN0b3JhZ2VTZXNzaW9uKCkuY29va2llU3RvcmFnZSgpOwotICAgIEFTU0VSVChjb29raWVTdG9y
YWdlKTsgLy8gV2lsbCBmYWlsIHdoZW4gYnVpbGRpbmcgd2l0aG91dCBVU0UoQ0ZORVRXT1JLKSBh
bmQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzd2l0Y2hUb05ld1Rlc3RpbmdTZXNzaW9uKCkgd2Fz
IG5vdCBjYWxsZWQgYmVmb3JlaGFuZC4KKyAgICBBU1NFUlQoY29va2llU3RvcmFnZSk7IC8vIFdp
bGwgZmFpbCB3aGVuIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3dpdGNoVG9OZXdUZXN0aW5nU2Vz
c2lvbigpIHdhcyBub3QgY2FsbGVkIGJlZm9yZWhhbmQuCiAgICAgQ0ZIVFRQQ29va2llU3RvcmFn
ZVNldENvb2tpZUFjY2VwdFBvbGljeShjb29raWVTdG9yYWdlLmdldCgpLCBwb2xpY3kpOwogfQog
CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCShyZXZpc2lvbiAyMDcwMzkp
CisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHdvcmtpbmcgY29weSkK
QEAgLTY3NzksMjQgKzY3NzksMTQgQEAgLSAoaWQpY2FuZGlkYXRlTGlzdAogCiAtICh2b2lkKXNj
aGVkdWxlSW5SdW5Mb29wOihOU1J1bkxvb3AgKilydW5Mb29wIGZvck1vZGU6KE5TU3RyaW5nICop
bW9kZQogewotI2lmIFVTRShDRk5FVFdPUkspCi0gICAgQ0ZSdW5Mb29wUmVmIHNjaGVkdWxlUGFp
clJ1bkxvb3AgPSBbcnVuTG9vcCBnZXRDRlJ1bkxvb3BdOwotI2Vsc2UKLSAgICBOU1J1bkxvb3Ag
KnNjaGVkdWxlUGFpclJ1bkxvb3AgPSBydW5Mb29wOwotI2VuZGlmCiAgICAgaWYgKHJ1bkxvb3Ag
JiYgbW9kZSkKLSAgICAgICAgY29yZShzZWxmKS0+YWRkU2NoZWR1bGVQYWlyKFNjaGVkdWxlUGFp
cjo6Y3JlYXRlKHNjaGVkdWxlUGFpclJ1bkxvb3AsIChDRlN0cmluZ1JlZiltb2RlKSk7CisgICAg
ICAgIGNvcmUoc2VsZiktPmFkZFNjaGVkdWxlUGFpcihTY2hlZHVsZVBhaXI6OmNyZWF0ZShydW5M
b29wLCAoQ0ZTdHJpbmdSZWYpbW9kZSkpOwogfQogCiAtICh2b2lkKXVuc2NoZWR1bGVGcm9tUnVu
TG9vcDooTlNSdW5Mb29wICopcnVuTG9vcCBmb3JNb2RlOihOU1N0cmluZyAqKW1vZGUKIHsKLSNp
ZiBVU0UoQ0ZORVRXT1JLKQotICAgIENGUnVuTG9vcFJlZiBzY2hlZHVsZVBhaXJSdW5Mb29wID0g
W3J1bkxvb3AgZ2V0Q0ZSdW5Mb29wXTsKLSNlbHNlCi0gICAgTlNSdW5Mb29wICpzY2hlZHVsZVBh
aXJSdW5Mb29wID0gcnVuTG9vcDsKLSNlbmRpZgogICAgIGlmIChydW5Mb29wICYmIG1vZGUpCi0g
ICAgICAgIGNvcmUoc2VsZiktPnJlbW92ZVNjaGVkdWxlUGFpcihTY2hlZHVsZVBhaXI6OmNyZWF0
ZShzY2hlZHVsZVBhaXJSdW5Mb29wLCAoQ0ZTdHJpbmdSZWYpbW9kZSkpOworICAgICAgICBjb3Jl
KHNlbGYpLT5yZW1vdmVTY2hlZHVsZVBhaXIoU2NoZWR1bGVQYWlyOjpjcmVhdGUocnVuTG9vcCwg
KENGU3RyaW5nUmVmKW1vZGUpKTsKIH0KIAogc3RhdGljIEJPT0wgZmluZFN0cmluZyhOU1ZpZXcg
PFdlYkRvY3VtZW50U2VhcmNoaW5nPiAqc2VhcmNoVmlldywgTlNTdHJpbmcgKnN0cmluZywgV2Vi
RmluZE9wdGlvbnMgb3B0aW9ucykKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNzAz
OSkKKysrIFNvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDM2IEBACisyMDE2LTEwLTEwICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdl
YmtpdC5vcmc+CisKKyAgICAgICAgUmVtb3ZlIGRlYWQgbmV0d29ya2luZyBjb2RlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjMyNjMKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIERlZmF1bHREb3dubG9h
ZERlbGVnYXRlLmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuY3BwOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNhdmVQbGF0Zm9ybURhdGFU
b0NhY2hlZEZyYW1lKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZU5ldHdvcmtp
bmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmVuc3Vy
ZVByaXZhdGVCcm93c2luZ1Nlc3Npb24pOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTmV0d29ya2luZ0NvbnRleHQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQbGF0
Zm9ybVN0cmF0ZWdpZXMuY3BwOgorICAgICAgICAqIFdlYkRvd25sb2FkLmg6CisgICAgICAgICog
V2ViRXJyb3IuY3BwOgorICAgICAgICAoV2ViRXJyb3I6OmxvY2FsaXplZERlc2NyaXB0aW9uKToK
KyAgICAgICAgKFdlYkVycm9yOjpzc2xQZWVyQ2VydGlmaWNhdGUpOgorICAgICAgICAqIFdlYkVy
cm9yLmg6CisgICAgICAgICogV2ViTXV0YWJsZVVSTFJlcXVlc3QuY3BwOgorICAgICAgICAoV2Vi
TXV0YWJsZVVSTFJlcXVlc3Q6Om11dGFibGVDb3B5KToKKyAgICAgICAgKiBXZWJVUkxBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZS5jcHA6CisgICAgICAgIChXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZTo6aW5pdFdpdGhQcm90ZWN0aW9uU3BhY2UpOgorICAgICAgICAoV2ViVVJMQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2U6OmluaXRXaXRoQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpOgorICAgICAg
ICAqIFdlYlVSTFJlc3BvbnNlLmNwcDoKKyAgICAgICAgKFdlYlVSTFJlc3BvbnNlOjpzc2xQZWVy
Q2VydGlmaWNhdGUpOgorICAgICAgICAqIFdlYlVSTFJlc3BvbnNlLmg6CisgICAgICAgICogV2Vi
Vmlldy5jcHA6CisgICAgICAgIChXZWJWaWV3OjpzZXRDYWNoZU1vZGVsKToKKyAgICAgICAgKFdl
YlZpZXc6OmNhbkhhbmRsZVJlcXVlc3QpOgorICAgICAgICAoV2ViVmlldzo6bm90aWZ5UHJlZmVy
ZW5jZXNDaGFuZ2VkKToKKyAgICAgICAgKHVwZGF0ZVNoYXJlZFNldHRpbmdzRnJvbVByZWZlcmVu
Y2VzSWZOZWVkZWQpOgorCiAyMDE2LTEwLTA5ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhA
YXBwbGUuY29tPgogCiAgICAgICAgIFN1cHBvcnQgSW5wdXRFdmVudC5pbnB1dFR5cGUgZm9yIHRo
ZSBuZXcgSW5wdXRFdmVudCBzcGVjCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9EZWZhdWx0RG93
bmxvYWREZWxlZ2F0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL0RlZmF1bHRE
b3dubG9hZERlbGVnYXRlLmgJKHJldmlzaW9uIDIwNzAzOSkKKysrIFNvdXJjZS9XZWJLaXQvd2lu
L0RlZmF1bHREb3dubG9hZERlbGVnYXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDcg
QEAKICNpbmNsdWRlICJXZWJLaXQuaCIKICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogCi0jaWYg
VVNFKENGTkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogI2luY2x1ZGUgPENGTmV0
d29yay9DRlVSTERvd25sb2FkUHJpdi5oPgogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
d2luL1dlYkRvd25sb2FkLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViRG93
bmxvYWQuaAkocmV2aXNpb24gMjA3MDM5KQorKysgU291cmNlL1dlYktpdC93aW4vV2ViRG93bmxv
YWQuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsMTUgKzIzLDE0IEBACiAgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
ICAqLwogCi0jaWZuZGVmIFdlYkRvd25sb2FkX2gKLSNkZWZpbmUgV2ViRG93bmxvYWRfaAorI3By
YWdtYSBvbmNlCiAKICNpbmNsdWRlICJXZWJLaXQuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NPTVB0
ci5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KIAotI2lmIFVTRShDRk5FVFdPUkspCisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikK
ICNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZVUkxEb3dubG9hZFByaXYuaD4KICNlbGlmIFVTRShDVVJM
KQogI2luY2x1ZGUgPFdlYkNvcmUvQ3VybERvd25sb2FkLmg+CkBAIC04NCw3ICs4Myw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY29udGludWVXaXRo
b3V0Q3JlZGVudGlhbEZvckF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKF9Jbl9vcHRfIElXZWJVUkxB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSopOwogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSB1c2VDcmVkZW50aWFsKF9Jbl9vcHRfIElXZWJVUkxDcmVkZW50aWFsKiwgX0luX29w
dF8gSVdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKik7CiAKLSNpZiBVU0UoQ0ZORVRXT1JL
KQorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAgICAgLy8gQ0ZVUkxEb3dubG9hZCBDYWxsYmFj
a3MKICAgICB2b2lkIGRpZFN0YXJ0KCk7CiAgICAgQ0ZVUkxSZXF1ZXN0UmVmIHdpbGxTZW5kUmVx
dWVzdChDRlVSTFJlcXVlc3RSZWYsIENGVVJMUmVzcG9uc2VSZWYpOwpAQCAtMTA5LDcgKzEwOCw3
IEBAIHByb3RlY3RlZDoKIAogICAgIFdURjo6U3RyaW5nIG1fZGVzdGluYXRpb247CiAgICAgV1RG
OjpTdHJpbmcgbV9idW5kbGVQYXRoOwotI2lmIFVTRShDRk5FVFdPUkspCisjaWYgVVNFKENGVVJM
Q09OTkVDVElPTikKICAgICBSZXRhaW5QdHI8Q0ZVUkxEb3dubG9hZFJlZj4gbV9kb3dubG9hZDsK
ICNlbGlmIFVTRShDVVJMKQogICAgIFJlZlB0cjxXZWJDb3JlOjpDdXJsRG93bmxvYWQ+IG1fZG93
bmxvYWQ7CkBAIC0xMjMsNiArMTIyLDMgQEAgcHJvdGVjdGVkOgogICAgIGludCBtX3JlY2VpdmVk
OwogI2VuZGlmCiB9OwotCi0KLSNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViRXJy
b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYkVycm9yLmNwcAkocmV2
aXNpb24gMjA3MDM5KQorKysgU291cmNlL1dlYktpdC93aW4vV2ViRXJyb3IuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMyw3ICszMyw3IEBACiAjaW5jbHVkZSA8Q29yZUdyYXBoaWNzL0NvcmVHcmFw
aGljcy5oPgogI2VuZGlmCiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQorI2lmIFVTRShDRlVSTENPTk5F
Q1RJT04pCiAjaW5jbHVkZSA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlL1dlYktpdFN5c3RlbUludGVy
ZmFjZS5oPgogI2VuZGlmCiAKQEAgLTEzNSw3ICsxMzUsNyBAQCBIUkVTVUxUIFdlYkVycm9yOjps
b2NhbGl6ZWREZXNjcmlwdGlvbihfCiAKICAgICAqcmVzdWx0ID0gQlN0cmluZyhtX2Vycm9yLmxv
Y2FsaXplZERlc2NyaXB0aW9uKCkpLnJlbGVhc2UoKTsKIAotI2lmIFVTRShDRk5FVFdPUkspCisj
aWYgVVNFKENGVVJMQ09OTkVDVElPTikKICAgICBpZiAoISpyZXN1bHQpIHsKICAgICAgICAgaWYg
KGludCBjb2RlID0gbV9lcnJvci5lcnJvckNvZGUoKSkKICAgICAgICAgICAgICpyZXN1bHQgPSBC
U3RyaW5nKHdrQ0ZOZXR3b3JrRXJyb3JHZXRMb2NhbGl6ZWREZXNjcmlwdGlvbihjb2RlKSkucmVs
ZWFzZSgpOwpAQCAtMjE5LDcgKzIxOSw3IEBAIEhSRVNVTFQgV2ViRXJyb3I6OnNzbFBlZXJDZXJ0
aWZpY2F0ZShfT3UKICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKICAgICAqcmVzdWx0ID0gMDsK
IAotI2lmIFVTRShDRk5FVFdPUkspCisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKICAgICBpZiAo
IW1fY2ZFcnJvclVzZXJJbmZvRGljdCkgewogICAgICAgICAvLyBjb3B5IHVzZXJpbmZvIGZyb20g
Q0ZFcnJvclJlZgogICAgICAgICBDRkVycm9yUmVmIGNmRXJyb3IgPSBtX2Vycm9yOwpJbmRleDog
U291cmNlL1dlYktpdC93aW4vV2ViRXJyb3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L3dpbi9XZWJFcnJvci5oCShyZXZpc2lvbiAyMDcwMzkpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9X
ZWJFcnJvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw4ICsyMyw3IEBACiAgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKICAqLwogCi0jaWZuZGVmIFdlYkVycm9yX2gKLSNkZWZpbmUgV2ViRXJyb3JfaAorI3ByYWdt
YSBvbmNlCiAKICNpbmNsdWRlICJXZWJLaXQuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NPTVB0ci5o
PgpAQCAtNjYsMTAgKzY1LDggQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBVTE9ORyBtX3JlZkNv
dW50IHsgMCB9OwogICAgIENPTVB0cjxJUHJvcGVydHlCYWc+IG1fdXNlckluZm87Ci0jaWYgVVNF
KENGTkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogICAgIFJldGFpblB0cjxDRkRp
Y3Rpb25hcnlSZWY+IG1fY2ZFcnJvclVzZXJJbmZvRGljdDsKICNlbmRpZgogICAgIFdlYkNvcmU6
OlJlc291cmNlRXJyb3IgbV9lcnJvcjsKIH07Ci0KLSNlbmRpZgpJbmRleDogU291cmNlL1dlYktp
dC93aW4vV2ViTXV0YWJsZVVSTFJlcXVlc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvd2luL1dlYk11dGFibGVVUkxSZXF1ZXN0LmNwcAkocmV2aXNpb24gMjA3MDM5KQorKysgU291
cmNlL1dlYktpdC93aW4vV2ViTXV0YWJsZVVSTFJlcXVlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00MCw3ICs0MCw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9DZXJ0aWZpY2F0ZUNGV2luLmg+CiAj
ZW5kaWYKIAotI2lmIFVTRShDRk5FVFdPUkspCisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKICNp
bmNsdWRlIDxDRk5ldHdvcmsvQ0ZVUkxSZXF1ZXN0UHJpdi5oPgogI2VuZGlmCiAKQEAgLTM4Miw3
ICszODIsNyBAQCBIUkVTVUxUIFdlYk11dGFibGVVUkxSZXF1ZXN0OjptdXRhYmxlQ29wCiAgICAg
aWYgKCFyZXN1bHQpCiAgICAgICAgIHJldHVybiBFX1BPSU5URVI7CiAKLSNpZiBVU0UoQ0ZORVRX
T1JLKQorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAgICAgUmV0YWluUHRyPENGTXV0YWJsZVVS
TFJlcXVlc3RSZWY+IG11dGFibGVSZXF1ZXN0ID0gYWRvcHRDRihDRlVSTFJlcXVlc3RDcmVhdGVN
dXRhYmxlQ29weShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBtX3JlcXVlc3QuY2ZVUkxSZXF1ZXN0KFVw
ZGF0ZUhUVFBCb2R5KSkpOwogICAgICpyZXN1bHQgPSBjcmVhdGVJbnN0YW5jZShSZXNvdXJjZVJl
cXVlc3QobXV0YWJsZVJlcXVlc3QuZ2V0KCkpKTsKICAgICByZXR1cm4gU19PSzsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvd2luL1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5j
cHAJKHJldmlzaW9uIDIwNzAzOSkKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYlVSTEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQxLDcgKzE0MSw3IEBAIEhS
RVNVTFQgV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6OmkKIAogICAgIC8vIEZJWE1FOiBB
ZnRlciB3ZSBjaGFuZ2UgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgdG8gdXNlICJSZXNvdXJjZUhh
bmRsZSIgYXMgdGhlIGFic3RyYWN0ICJTZW5kZXIiIG9yICJTb3VyY2Ugb2YgdGhpcyBBdXRoIENo
YWxsZW5nZSIsIHRoZW4gd2UnbGwKICAgICAvLyBjb25zdHJ1Y3QgdGhlIEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlIHdpdGggdGhhdCBhcyBvYnRhaW5lZCBmcm9tIHRoZSB3ZWJTZW5kZXIKLSNpZiBV
U0UoQ0ZORVRXT1JLKQorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAgICAgbV9hdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSA9IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKHdlYlNwYWNlLT5wcm90ZWN0
aW9uU3BhY2UoKSwgd2ViQ3JlZGVudGlhbC0+Y3JlZGVudGlhbCgpLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcHJldmlvdXNGYWlsdXJlQ291bnQsIHdlYlJlc3BvbnNlLT5y
ZXNvdXJjZVJlc3BvbnNlKCksIHdlYkVycm9yLT5yZXNvdXJjZUVycm9yKCkpOwogI2VuZGlmCkBA
IC0xNjIsNyArMTYyLDcgQEAgSFJFU1VMVCBXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTo6
aQogICAgIGlmICghd2ViU2VuZGVyKQogICAgICAgICByZXR1cm4gRV9OT0lOVEVSRkFDRTsKIAot
I2lmIFVTRShDRk5FVFdPUkspCisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKICAgICBtX2F1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlID0gQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uod2ViQ2hhbGxlbmdl
LT5hdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgpLmNmVVJMQXV0aENoYWxsZW5nZVJlZigpLCB3ZWJT
ZW5kZXItPmF1dGhlbnRpY2F0aW9uQ2xpZW50KCkpOwogCiAgICAgcmV0dXJuIFNfT0s7CkluZGV4
OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJVUkxSZXNwb25zZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC93aW4vV2ViVVJMUmVzcG9uc2UuY3BwCShyZXZpc2lvbiAyMDcwMzkpCisrKyBT
b3VyY2UvV2ViS2l0L3dpbi9XZWJVUkxSZXNwb25zZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1
LDcgKzM1LDcgQEAKICNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ29yZUdyYXBoaWNzLmg+CiAjZW5k
aWYKIAotI2lmIFVTRShDRk5FVFdPUkspCisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKICNpbmNs
dWRlIDxXZWJLaXRTeXN0ZW1JbnRlcmZhY2UvV2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+CiAjZW5k
aWYKIApAQCAtNDA2LDcgKzQwNiw3IEBAIEhSRVNVTFQgV2ViVVJMUmVzcG9uc2U6OnNzbFBlZXJD
ZXJ0aWZpY2EKICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKICAgICAqcmVzdWx0ID0gMDsKIAot
I2lmIFVTRShDRk5FVFdPUkspCisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKICAgICBDRkRpY3Rp
b25hcnlSZWYgZGljdCA9IGNlcnRpZmljYXRlRGljdGlvbmFyeSgpOwogICAgIGlmICghZGljdCkK
ICAgICAgICAgcmV0dXJuIEVfRkFJTDsKQEAgLTQ3NSw3ICs0NzUsNyBAQCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiBXZWJVUkxSZXNwb25zZTo6CiAgICAgcmV0dXJuIG1fcmVzcG9uc2U7CiB9CiAK
LSNpZiBVU0UoQ0ZORVRXT1JLKQorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiBDRkRpY3Rpb25h
cnlSZWYgV2ViVVJMUmVzcG9uc2U6OmNlcnRpZmljYXRlRGljdGlvbmFyeSgpIGNvbnN0CiB7CiAg
ICAgaWYgKG1fU1NMQ2VydGlmaWNhdGVJbmZvKQpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2Vi
VVJMUmVzcG9uc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJVUkxSZXNw
b25zZS5oCShyZXZpc2lvbiAyMDcwMzkpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJVUkxSZXNw
b25zZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw4ICsyMyw3IEBACiAgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
ICAqLwogCi0jaWZuZGVmIFdlYlVSTFJlc3BvbnNlX0gKLSNkZWZpbmUgV2ViVVJMUmVzcG9uc2Vf
SAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJXZWJLaXQuaCIKICNpbmNsdWRlIDxXZWJDb3Jl
L1Jlc291cmNlUmVzcG9uc2UuaD4KQEAgLTY2LDcgKzY1LDcgQEAgcHVibGljOgogcHJvdGVjdGVk
OgogICAgIEhSRVNVTFQgc3VnZ2VzdGVkRmlsZUV4dGVuc2lvbihCU1RSKiByZXN1bHQpOwogCi0j
aWYgVVNFKENGTkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogICAgIENGRGljdGlv
bmFyeVJlZiBjZXJ0aWZpY2F0ZURpY3Rpb25hcnkoKSBjb25zdDsKICNlbmRpZgogCkBAIC03NCw5
ICs3Myw3IEBAIHByb3RlY3RlZDoKICAgICBVTE9ORyBtX3JlZkNvdW50IHsgMCB9OwogICAgIFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UgbV9yZXNwb25zZTsKIAotI2lmIFVTRShDRk5FVFdPUksp
CisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKICAgICBtdXRhYmxlIFJldGFpblB0cjxDRkRpY3Rp
b25hcnlSZWY+IG1fU1NMQ2VydGlmaWNhdGVJbmZvOyAgICAvLyB0aGlzIGVuc3VyZXMgY2VydGlm
aWNhdGUgY29udGV4dHMgYXJlIHZhbGlkIGZvciB0aGUgbGlmZXRpbWUgb2YgdGhpcyBXZWJVUkxS
ZXNwb25zZS4KICNlbmRpZgogfTsKLQotI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9X
ZWJWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAko
cmV2aXNpb24gMjA3MDM5KQorKysgU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE3OCw3ICsxNzgsNyBAQAogI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0Nv
cmVGb3VuZGF0aW9uLmg+CiAjZW5kaWYKIAotI2lmIFVTRShDRk5FVFdPUkspCisjaWYgVVNFKENG
VVJMQ09OTkVDVElPTikKICNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZVUkxDYWNoZVByaXYuaD4KICNp
bmNsdWRlIDxDRk5ldHdvcmsvQ0ZVUkxQcm90b2NvbFByaXYuaD4KICNpbmNsdWRlIDxXZWJLaXRT
eXN0ZW1JbnRlcmZhY2UvV2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+CkBAIC00OTcsNyArNDk3LDcg
QEAgdm9pZCBXZWJWaWV3OjpzZXRDYWNoZU1vZGVsKFdlYkNhY2hlTW9kZQogCiAgICAgU3RyaW5n
IGNhY2hlRGlyZWN0b3J5OwogCi0jaWYgVVNFKENGTkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxDT05O
RUNUSU9OKQogICAgIFJldGFpblB0cjxDRlVSTENhY2hlUmVmPiBjZnVybENhY2hlID0gYWRvcHRD
RihDRlVSTENhY2hlQ29weVNoYXJlZFVSTENhY2hlKCkpOwogICAgIFJldGFpblB0cjxDRlN0cmlu
Z1JlZj4gY2Z1cmxDYWNoZURpcmVjdG9yeSA9IGFkb3B0Q0Yod2tDb3B5Rm91bmRhdGlvbkNhY2hl
RGlyZWN0b3J5KDApKTsKICAgICBpZiAoIWNmdXJsQ2FjaGVEaXJlY3RvcnkpIHsKQEAgLTU1MSw3
ICs1NTEsNyBAQCB2b2lkIFdlYlZpZXc6OnNldENhY2hlTW9kZWwoV2ViQ2FjaGVNb2RlCiAgICAg
ICAgIC8vIE1lbW9yeSBjYWNoZSBjYXBhY2l0eSAoaW4gYnl0ZXMpCiAgICAgICAgIGNhY2hlTWVt
b3J5Q2FwYWNpdHkgPSAwOwogCi0jaWYgVVNFKENGTkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxDT05O
RUNUSU9OKQogICAgICAgICAvLyBGb3VuZGF0aW9uIGRpc2sgY2FjaGUgY2FwYWNpdHkgKGluIGJ5
dGVzKQogICAgICAgICBjYWNoZURpc2tDYXBhY2l0eSA9IENGVVJMQ2FjaGVEaXNrQ2FwYWNpdHko
Y2Z1cmxDYWNoZS5nZXQoKSk7CiAjZW5kaWYKQEAgLTY3NSw3ICs2NzUsNyBAQCB2b2lkIFdlYlZp
ZXc6OnNldENhY2hlTW9kZWwoV2ViQ2FjaGVNb2RlCiAgICAgbWVtb3J5Q2FjaGUuc2V0RGVhZERl
Y29kZWREYXRhRGVsZXRpb25JbnRlcnZhbChkZWFkRGVjb2RlZERhdGFEZWxldGlvbkludGVydmFs
KTsKICAgICBQYWdlQ2FjaGU6OnNpbmdsZXRvbigpLnNldE1heFNpemUocGFnZUNhY2hlU2l6ZSk7
CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAgICAgLy8g
RG9uJ3Qgc2hyaW5rIGEgYmlnIGRpc2sgY2FjaGUsIHNpbmNlIHRoYXQgd291bGQgY2F1c2UgY2h1
cm4uCiAgICAgY2FjaGVEaXNrQ2FwYWNpdHkgPSBtYXgoY2FjaGVEaXNrQ2FwYWNpdHksIENGVVJM
Q2FjaGVEaXNrQ2FwYWNpdHkoY2Z1cmxDYWNoZS5nZXQoKSkpOwogCkBAIC0xNTQ3LDcgKzE1NDcs
NyBAQCB2b2lkIFdlYlZpZXc6OmNsb3NlV2luZG93KCkKIAogYm9vbCBXZWJWaWV3OjpjYW5IYW5k
bGVSZXF1ZXN0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKLSNp
ZiBVU0UoQ0ZORVRXT1JLKQorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAgICAgLy8gT24gdGhl
IE1hYyB0aGVyZSdzIGFuIGFib3V0IFVSTCBwcm90b2NvbCBpbXBsZW1lbnRhdGlvbiBidXQgV2lu
ZG93cyBDRk5ldHdvcmsgZG9lc24ndCBoYXZlIHRoYXQuCiAgICAgaWYgKHJlcXVlc3QudXJsKCku
cHJvdG9jb2xJcygiYWJvdXQiKSkKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC01MjYxLDcgKzUy
NjEsNyBAQCBIUkVTVUxUIFdlYlZpZXc6Om5vdGlmeVByZWZlcmVuY2VzQ2hhbmdlCiAgICAgaHIg
PSBwcmVmZXJlbmNlcy0+cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgmZW5hYmxlZCk7CiAgICAgaWYg
KEZBSUxFRChocikpCiAgICAgICAgIHJldHVybiBocjsKLSNpZiBQTEFURk9STShXSU4pIHx8IFVT
RShDRk5FVFdPUkspCisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKICAgICBpZiAoZW5hYmxlZCkK
ICAgICAgICAgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5n
U2Vzc2lvbigpOwogICAgIGVsc2UKQEAgLTU1NjAsNyArNTU2MCw3IEBAIEhSRVNVTFQgdXBkYXRl
U2hhcmVkU2V0dGluZ3NGcm9tUHJlZmVyZW4KICAgICBpZiAoRkFJTEVEKGhyKSkKICAgICAgICAg
cmV0dXJuIGhyOwogCi0jaWYgVVNFKENGTkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9O
KQogICAgIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OnNldENvb2tpZUFjY2VwdFBvbGljeUZv
ckFsbENvbnRleHRzKGFjY2VwdFBvbGljeSk7CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYktp
dC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmNwcAkocmV2aXNpb24gMjA3MDM5KQorKysgU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NzQsNyArOTc0
LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6c2V0VGl0bGUoY29ucwogCiB2b2lkIFdl
YkZyYW1lTG9hZGVyQ2xpZW50OjpzYXZlUGxhdGZvcm1EYXRhVG9DYWNoZWRGcmFtZShDYWNoZWRG
cmFtZSogY2FjaGVkRnJhbWUpCiB7Ci0jaWYgVVNFKENGTkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxD
T05ORUNUSU9OKQogICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKG1fd2ViRnJhbWUpOwogICAg
IGlmICghY29yZUZyYW1lKQogICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dp
bi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZU5ldHdvcmtpbmdD
b250ZXh0LmNwcAkocmV2aXNpb24gMjA3MDM5KQorKysgU291cmNlL1dlYktpdC93aW4vV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM0LDcgKzM0LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1NldHRpbmdzLmg+CiAjaW5jbHVkZSA8
d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQorI2lmIFVTRShDRlVS
TENPTk5FQ1RJT04pCiAjaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGSFRUUENvb2tpZXNQcml2Lmg+CiAj
aW5jbHVkZSA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlL1dlYktpdFN5c3RlbUludGVyZmFjZS5oPgog
I2VuZGlmCkBAIC00Nyw3ICs0Nyw3IEBAIHN0YXRpYyBTdHJpbmcmIGlkZW50aWZpZXJCYXNlKCkK
ICAgICByZXR1cm4gYmFzZTsKIH0KIAotI2lmIFVTRShDRk5FVFdPUkspCisjaWYgVVNFKENGVVJM
Q09OTkVDVElPTikKIHZvaWQgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6c2V0Q29va2llQWNj
ZXB0UG9saWN5Rm9yQWxsQ29udGV4dHMoV2ViS2l0Q29va2llU3RvcmFnZUFjY2VwdFBvbGljeSBw
b2xpY3kpCiB7CiAgICAgaWYgKFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBjb29r
aWVTdG9yYWdlID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24o
KS5jb29raWVTdG9yYWdlKCkpCkBAIC02Nyw3ICs2Nyw3IEBAIHZvaWQgV2ViRnJhbWVOZXR3b3Jr
aW5nQ29udGV4dDo6c2V0UHJpdmEKIAogTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBXZWJGcmFtZU5l
dHdvcmtpbmdDb250ZXh0OjplbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCkKIHsKLSNpZiBV
U0UoQ0ZORVRXT1JLKQorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKIAogICAgIGlmIChhdXRvIHByaXZhdGVTZXNzaW9uID0gTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihTZXNzaW9uSUQ6OmxlZ2FjeVByaXZhdGVTZXNzaW9u
SUQoKSkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZU5l
dHdvcmtpbmdDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oCShyZXZpc2lvbiAyMDcwMzkpCisr
KyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZU5ldHdvcmtpbmdDb250
ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTIyLDggKzIyLDcgQEAKICAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
ICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwotI2lmbmRlZiBXZWJGcmFt
ZU5ldHdvcmtpbmdDb250ZXh0X2gKLSNkZWZpbmUgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dF9o
CisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVOZXR3b3JraW5nQ29udGV4
dC5oPgogCkBAIC0zNCw3ICszMyw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0KGZyYW1lKSk7CiAgICAgfQogCi0jaWYgVVNF
KENGTkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogICAgIHN0YXRpYyB2b2lkIHNl
dENvb2tpZUFjY2VwdFBvbGljeUZvckFsbENvbnRleHRzKFdlYktpdENvb2tpZVN0b3JhZ2VBY2Nl
cHRQb2xpY3kpOwogI2VuZGlmCiAgICAgc3RhdGljIHZvaWQgc2V0UHJpdmF0ZUJyb3dzaW5nU3Rv
cmFnZVNlc3Npb25JZGVudGlmaWVyQmFzZShjb25zdCBTdHJpbmcmKTsKQEAgLTUwLDUgKzQ5LDMg
QEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGJsb2NrZWRFcnJvcihjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKSBjb25zdCBvdmVycmlkZTsKICAgICBXZWJDb3Jl
OjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHN0b3JhZ2VTZXNzaW9uKCkgY29uc3Qgb3ZlcnJpZGU7
CiB9OwotCi0jZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dl
YlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4v
V2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAkocmV2aXNpb24gMjA3MDM5
KQorKysgU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVn
aWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNyBAQAogI2luY2x1ZGUgPFdlYkNv
cmUvUGFnZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUdyb3VwLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9QbGF0Zm9ybUNvb2tpZUphci5oPgotI2lmIFVTRShDRk5FVFdPUkspCisjaWYgVVNFKENG
VVJMQ09OTkVDVElPTikKICNpbmNsdWRlIDxXZWJLaXRTeXN0ZW1JbnRlcmZhY2UvV2ViS2l0U3lz
dGVtSW50ZXJmYWNlLmg+CiAjZW5kaWYKIApJbmRleDogU291cmNlL2NtYWtlL09wdGlvbnNBcHBs
ZVdpbi5jbWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvY21ha2UvT3B0aW9uc0FwcGxlV2luLmNt
YWtlCShyZXZpc2lvbiAyMDcwMzkpCisrKyBTb3VyY2UvY21ha2UvT3B0aW9uc0FwcGxlV2luLmNt
YWtlCSh3b3JraW5nIGNvcHkpCkBAIC0yLDcgKzIsNyBAQCBpbmNsdWRlKE9wdGlvbnNXaW4pCiAK
IHNldChVU0VfQ0cgMSkKIHNldChVU0VfQ0EgMSkKLXNldChVU0VfQ0ZORVRXT1JLIDEpCitzZXQo
VVNFX0NGVVJMQ09OTkVDVElPTiAxKQogc2V0KFVTRV9JQ1VfVU5JQ09ERSAxKQogCiAjIFVuY29t
bWVudCB0aGUgZm9sbG93aW5nIGxpbmUgdG8gdHJ5IHRoZSBEaXJlY3QyRCBiYWNrZW5kLgpJbmRl
eDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNp
b24gMjA3MDM5KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MTUgQEAKKzIwMTYtMTAtMTAgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0
Lm9yZz4KKworICAgICAgICBSZW1vdmUgZGVhZCBuZXR3b3JraW5nIGNvZGUKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzI2MworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvRHVt
cFJlbmRlclRyZWUuaDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jb25maWcuaDoKKyAgICAg
ICAgKiBEdW1wUmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwOgorICAgICAgICAobWFp
bik6CisKIDIwMTYtMTAtMTAgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3Jn
PgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyMDY5NzIuCkluZGV4OiBUb29s
cy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1
bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmgJKHJldmlzaW9uIDIwNzAzOSkKKysrIFRvb2xz
L0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDEz
ICsyNiw3IEBACiAgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgRHVtcFJlbmRlclRyZWVfaAot
I2RlZmluZSBEdW1wUmVuZGVyVHJlZV9oCi0KLS8vIEZJWE1FOiBSZW1vdmUgdGhpcyB3aGVuIGFs
bCBwbGF0Zm9ybXMgYXJlIHVzaW5nIGNvbmZpZy5oCi0jaWZuZGVmIENvbmZpZ19ICi0jaW5jbHVk
ZSA8d3RmL1BsYXRmb3JtLmg+Ci0jZW5kaWYKKyNwcmFnbWEgb25jZQogCiAjaWYgUExBVEZPUk0o
Q09DT0EpCiAjaW5jbHVkZSAiRHVtcFJlbmRlclRyZWVNYWMuaCIKQEAgLTQ1LDYgKzM5LDcgQEAK
ICNlbmRpZgogCiAjaW5jbHVkZSA8c3RyaW5nPgorI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgog
I2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogI2lmICFPUyhPUEVOQlNEKQpAQCAtNzEsNSArNjYs
MyBAQCBzdHJ1Y3QgVGVzdENvbW1hbmQgewogfTsKIAogVGVzdENvbW1hbmQgcGFyc2VJbnB1dExp
bmUoY29uc3Qgc3RkOjpzdHJpbmcmKTsKLQotI2VuZGlmIC8vIER1bXBSZW5kZXJUcmVlX2gKSW5k
ZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2NvbmZpZy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1
bXBSZW5kZXJUcmVlL2NvbmZpZy5oCShyZXZpc2lvbiAyMDcwMzkpCisrKyBUb29scy9EdW1wUmVu
ZGVyVHJlZS9jb25maWcuaAkod29ya2luZyBjb3B5KQpAQCAtMTgsNyArMTgsNyBAQAogICoKICAq
LwogCi0jZGVmaW5lIENvbmZpZ19ICisjcHJhZ21hIG9uY2UKIAogI2lmIGRlZmluZWQoSEFWRV9D
T05GSUdfSCkgJiYgSEFWRV9DT05GSUdfSCAmJiBkZWZpbmVkKEJVSUxESU5HX1dJVEhfQ01BS0Up
CiAjaW5jbHVkZSAiY21ha2Vjb25maWcuaCIKQEAgLTQ0LDcgKzQ0LDcgQEAKICNkZWZpbmUgVVNF
X0NVUkwgMQogI2Vsc2UKICNkZWZpbmUgVVNFX0NHIDEKLSNkZWZpbmUgVVNFX0NGTkVUV09SSyAx
CisjZGVmaW5lIFVTRV9DRlVSTENPTk5FQ1RJT04gMQogI2VuZGlmCiAKICN1bmRlZiBfV0lOMzJf
V0lOTlQKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNw
cAkocmV2aXNpb24gMjA3MDM5KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5k
ZXJUcmVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjEsNyArNjEsNyBAQAogI2luY2x1ZGUgPFdl
YktpdC9XZWJLaXQuaD4KICNpbmNsdWRlIDxXZWJLaXQvV2ViS2l0Q09NQVBJLmg+CiAKLSNpZiBV
U0UoQ0ZORVRXT1JLKQorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAjaW5jbHVkZSA8Q0ZOZXR3
b3JrL0NGSFRUUENvb2tpZXNQcml2Lmg+CiAjaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGVVJMQ2FjaGVQ
cml2Lmg+CiAjZW5kaWYKQEAgLTEyODcsNyArMTI4Nyw3IEBAIElXZWJWaWV3KiBjcmVhdGVXZWJW
aWV3QW5kT2Zmc2NyZWVuV2luZG8KICAgICByZXR1cm4gd2ViVmlldzsKIH0KIAotI2lmIFVTRShD
Rk5FVFdPUkspCisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKIFJldGFpblB0cjxDRlVSTENhY2hl
UmVmPiBzaGFyZWRDRlVSTENhY2hlKCkKIHsKICNpZm5kZWYgREVCVUdfQUxMCkBAIC0xNDY1LDcg
KzE0NjUsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY29uc3QgY2hhciogYXJndltdKQogICAgIGlm
IChGQUlMRUQod2ViVmlldy0+bWFpbkZyYW1lKCZmcmFtZSkpKQogICAgICAgICByZXR1cm4gLTc7
CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAgICAgUmV0
YWluUHRyPENGVVJMQ2FjaGVSZWY+IHVybENhY2hlID0gc2hhcmVkQ0ZVUkxDYWNoZSgpOwogICAg
IENGVVJMQ2FjaGVSZW1vdmVBbGxDYWNoZWRSZXNwb25zZXModXJsQ2FjaGUuZ2V0KCkpOwogI2Vu
ZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>291270</attachid>
            <date>2016-10-11 09:40:46 -0700</date>
            <delta_ts>2016-10-11 10:14:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-163263-20161011093723.patch</filename>
            <type>text/plain</type>
            <size>192558</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDIwNzEz
OCkKKysrIENoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDE2LTEw
LTExICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgUmVtb3ZlIGRlYWQgbmV0d29ya2luZyBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjMyNjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFNvdXJjZS9jbWFrZS9PcHRpb25zQXBwbGVXaW4uY21h
a2U6CisKIDIwMTYtMTAtMTEgIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgog
CiAgICAgICAgIFtXaW5dW0RpcmVjdDJEXSBDb21waWxlIGZpeC4KSW5kZXg6IFNvdXJjZS9XVEYv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCShyZXZpc2lvbiAy
MDcxMzgpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDE0IEBACisyMDE2LTEwLTExICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgUmVtb3ZlIGRlYWQgbmV0d29ya2luZyBjb2RlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjMyNjMKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9QbGF0Zm9ybS5oOgor
ICAgICAgICAqIHd0Zi9TY2hlZHVsZVBhaXIuaDoKKyAgICAgICAgKiB3dGYvU2NoZWR1bGVQYWly
TWFjLm1tOgorCiAyMDE2LTEwLTEwICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNv
bT4KIAogICAgICAgICBBZGQgRU5BQkxFX0VOQ1JZUFRFRF9NRURJQSBjb25maWd1cmF0aW9uIG9w
dGlvbgpJbmRleDogU291cmNlL1dURi93dGYvUGxhdGZvcm0uaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCShyZXZpc2lvbiAyMDcxMzgpCisrKyBTb3VyY2UvV1RGL3d0
Zi9QbGF0Zm9ybS5oCSh3b3JraW5nIGNvcHkpCkBAIC01NTksMTAgKzU1OSw2IEBACiAKICNpZiBQ
TEFURk9STShJT1MpCiAKLSNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKSAmJiBfX0lQSE9ORV9P
U19WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDEwMDAwMAotI2RlZmluZSBVU0VfQ0ZORVRXT1JLIDEK
LSNlbmRpZgotCiAjZGVmaW5lIEhBVkVfTkVUV09SS19FWFRFTlNJT04gMQogI2RlZmluZSBIQVZF
X1JFQURMSU5FIDEKICNkZWZpbmUgVVNFX1VJS0lUX0VESVRJTkcgMQpAQCAtNTkyLDEwICs1ODgs
MTAgQEAKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oV0lOKSAmJiAhVVNFKFdJTkdESSkgJiYgIVBM
QVRGT1JNKFdJTl9DQUlSTykKLSNkZWZpbmUgVVNFX0NGTkVUV09SSyAxCisjZGVmaW5lIFVTRV9D
RlVSTENPTk5FQ1RJT04gMQogI2VuZGlmCiAKLSNpZiBVU0UoQ0ZORVRXT1JLKSB8fCBQTEFURk9S
TShDT0NPQSkKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKSB8fCBQTEFURk9STShDT0NPQSkKICNk
ZWZpbmUgVVNFX0NGVVJMQ0FDSEUgMQogI2VuZGlmCiAKQEAgLTk1MSw5ICs5NDcsNiBAQAogI2Rl
ZmluZSBVU0VfUFJPVEVDVElPTl9TUEFDRV9BVVRIX0NBTExCQUNLIDEKICNlbmRpZgogCi0vKiBT
ZXQgdXAgYSBkZWZpbmUgZm9yIGEgY29tbW9uIGVycm9yIHRoYXQgaXMgaW50ZW5kZWQgdG8gY2F1
c2UgYSBidWlsZCBlcnJvciAtLSB0aHVzIHRoZSBzcGFjZSBhZnRlciBFcnJvci4gKi8KLSNkZWZp
bmUgV1RGX1BMQVRGT1JNX0NGTkVUV09SSyBFcnJvciBVU0VfbWFjcm9fc2hvdWxkX2JlX3VzZWRf
d2l0aF9DRk5FVFdPUksKLQogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBIQVZFKEFDQ0VTU0lCSUxJ
VFkpCiAjZGVmaW5lIFVTRV9BQ0NFU1NJQklMSVRZX0NPTlRFWFRfTUVOVVMgMQogI2VuZGlmCklu
ZGV4OiBTb3VyY2UvV1RGL3d0Zi9TY2hlZHVsZVBhaXIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V1RGL3d0Zi9TY2hlZHVsZVBhaXIuaAkocmV2aXNpb24gMjA3MTM4KQorKysgU291cmNlL1dURi93
dGYvU2NoZWR1bGVQYWlyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAKICNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CiAKLSNpZiBQTEFURk9STShDT0NPQSkgJiYgIVVTRShDRk5FVFdPUkspCisjaWYgUExBVEZP
Uk0oQ09DT0EpCiBPQkpDX0NMQVNTIE5TUnVuTG9vcDsKICNlbmRpZgogCkBAIC00NSw3ICs0NSw3
IEBAIGNsYXNzIFNjaGVkdWxlUGFpciA6IHB1YmxpYyBUaHJlYWRTYWZlUmUKIHB1YmxpYzoKICAg
ICBzdGF0aWMgUmVmPFNjaGVkdWxlUGFpcj4gY3JlYXRlKENGUnVuTG9vcFJlZiBydW5Mb29wLCBD
RlN0cmluZ1JlZiBtb2RlKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNjaGVkdWxlUGFpcihydW5M
b29wLCBtb2RlKSk7IH0KIAotI2lmIFBMQVRGT1JNKENPQ09BKSAmJiAhVVNFKENGTkVUV09SSykK
KyNpZiBQTEFURk9STShDT0NPQSkKICAgICBzdGF0aWMgUmVmPFNjaGVkdWxlUGFpcj4gY3JlYXRl
KE5TUnVuTG9vcCogcnVuTG9vcCwgQ0ZTdHJpbmdSZWYgbW9kZSkgeyByZXR1cm4gYWRvcHRSZWYo
Km5ldyBTY2hlZHVsZVBhaXIocnVuTG9vcCwgbW9kZSkpOyB9CiAgICAgTlNSdW5Mb29wKiBuc1J1
bkxvb3AoKSBjb25zdCB7IHJldHVybiBtX25zUnVuTG9vcC5nZXQoKTsgfQogI2VuZGlmCkBAIC02
Myw3ICs2Myw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBtX21vZGUgPSBhZG9wdENGKENGU3Ry
aW5nQ3JlYXRlQ29weSgwLCBtb2RlKSk7CiAgICAgfQogCi0jaWYgUExBVEZPUk0oQ09DT0EpICYm
ICFVU0UoQ0ZORVRXT1JLKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFdURl9FWFBPUlRfUFJJ
VkFURSBTY2hlZHVsZVBhaXIoTlNSdW5Mb29wKiwgQ0ZTdHJpbmdSZWYpOwogICAgIFJldGFpblB0
cjxOU1J1bkxvb3AqPiBtX25zUnVuTG9vcDsKICNlbmRpZgpJbmRleDogU291cmNlL1dURi93dGYv
U2NoZWR1bGVQYWlyTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1NjaGVkdWxl
UGFpck1hYy5tbQkocmV2aXNpb24gMjA3MTM4KQorKysgU291cmNlL1dURi93dGYvU2NoZWR1bGVQ
YWlyTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw4ICsyOSw2IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiU2NoZWR1bGVQYWlyLmgiCiAKLSNpZiAhVVNFKENGTkVUV09SSykK
LQogbmFtZXNwYWNlIFdURiB7CiAKIFNjaGVkdWxlUGFpcjo6U2NoZWR1bGVQYWlyKE5TUnVuTG9v
cCogcnVuTG9vcCwgQ0ZTdHJpbmdSZWYgbW9kZSkKQEAgLTQyLDUgKzQwLDMgQEAgU2NoZWR1bGVQ
YWlyOjpTY2hlZHVsZVBhaXIoTlNSdW5Mb29wKiBydQogfQogCiB9IC8vIG5hbWVzcGFjZQotCi0j
ZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNzEzOCkKKysrIFNvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2NyBAQAorMjAxNi0xMC0xMSAg
QWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFJl
bW92ZSBkZWFkIG5ldHdvcmtpbmcgY29kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTYzMjYzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVGhlcmUgYXJlIG5vIG1vcmUgQ29jb2EgcGxhdGZvcm1zIHVzaW5n
IENGVVJMQ29ubmVjdGlvbi4KKyAgICAgICAgVVNFKENGTkVUV09SSykgaXMgYmVpbmcgcmVwbGFj
ZWQgYnkgVVNFKENGVVJMQ09OTkVDVElPTikgYW5kIGl0IGlzIG9ubHkgdXNlZCBvbiB0aGUgQXBw
bGVXaW4gcG9ydC4KKworICAgICAgICBObyBjaGFuZ2UgaW4gYmVoYXZpb3IuCisKKyAgICAgICAg
KiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViQ29yZVBy
ZWZpeC5oOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5oOgorICAgICAgICAqIGxv
YWRlci9FbXB0eUNsaWVudHMuaDoKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQu
aDoKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6Cisg
ICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL1N1YnJl
c291cmNlTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL2NmL1Jlc291cmNlTG9hZGVyQ0ZOZXQu
Y3BwOgorICAgICAgICAqIGxvYWRlci9jb2NvYS9TdWJyZXNvdXJjZUxvYWRlckNvY29hLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI6OndpbGxDYWNoZVJlc3BvbnNlKTog
RGVsZXRlZC4KKyAgICAgICAgKiBsb2FkZXIvbWFjL0RvY3VtZW50TG9hZGVyTWFjLmNwcDoKKyAg
ICAgICAgKiBsb2FkZXIvbWFjL1Jlc291cmNlTG9hZGVyTWFjLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6UmVzb3VyY2VMb2FkZXI6OndpbGxDYWNoZVJlc3BvbnNlKTogRGVsZXRlZC4KKyAgICAgICAg
KiBwYWdlL21hYy9QYWdlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6cGxhdGZvcm1J
bml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmFkZFNjaGVkdWxlUGFpcik6Cisg
ICAgICAgIChXZWJDb3JlOjpQYWdlOjpyZW1vdmVTY2hlZHVsZVBhaXIpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDOjpzaG91bGRXYWl0Rm9yUmVzcG9uc2VUb0F1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvcmVOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlQ2xpZW50OjpjcmVhdGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29yZU5T
VVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VDbGllbnQ6OldlYkNvcmVOU1VSTEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlQ2xpZW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvV2Vi
Q29yZVN5c3RlbUludGVyZmFjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvTmV0d29y
a1N0b3JhZ2VTZXNzaW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9Qcm90ZWN0aW9u
U3BhY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Byb3RlY3Rpb25TcGFjZUJhc2Uu
Y3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuY3BwOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZUhhbmRsZUNsaWVudDo6d2lsbENhY2hlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6
UmVzb3VyY2VIYW5kbGVDbGllbnQ6OnNob3VsZENhY2hlUmVzcG9uc2UpOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oOgorICAgICAgICAoV2ViQ29y
ZTo6UmVzb3VyY2VIYW5kbGVJbnRlcm5hbDo6UmVzb3VyY2VIYW5kbGVJbnRlcm5hbCk6CisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL2NmL0F1dGhlbnRpY2F0aW9uQ0YuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2U6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKToK
KyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUNGKToKKyAgICAgICAgKFdlYkNvcmU6OmNvcmUpOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvQXV0aGVudGljYXRpb25DRi5oOgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZUphckNGTmV0LmNwcDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL2NmL0NyZWRlbnRpYWxTdG9yYWdlQ0ZOZXQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q3JlZGVudGlhbFN0b3JhZ2U6OmdldEZyb21QZXJzaXN0ZW50U3RvcmFnZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDcmVkZW50aWFsU3RvcmFnZTo6c2F2ZVRvUGVyc2lzdGVudFN0b3Jh
Z2UpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvTG9hZGVyUnVuTG9v
cENGLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL0xvYWRlclJ1bkxvb3BDRi5o
OgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZO
ZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVT
dG9yYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Byb3RlY3Rpb25TcGFjZUNG
TmV0LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Byb3RlY3Rpb25TcGFjZUNG
TmV0Lmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yQ0YuY3BwOgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpzaG91bGRTbmlmZkNvbm5lY3Rpb25Qcm9wZXJ0eSk6CisgICAgICAgIChXZWJD
b3JlOjpSZXNvdXJjZUhhbmRsZTo6Y3JlYXRlQ0ZVUkxDb25uZWN0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlSGFuZGxlOjpzdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJj
ZUhhbmRsZTo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlSGFuZGxlOjp0cnlIYW5kbGVQYXNzd29yZEJhc2VkQXV0aGVudGljYXRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OnJlY2VpdmVkQ3JlZGVudGlh
bCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6c2NoZWR1bGUpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OnVuc2NoZWR1bGUpOiBEZWxldGVk
LgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5l
Y3Rpb25EZWxlZ2F0ZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJj
ZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlv
blF1ZXVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0
aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OnNldHVwUmVxdWVzdCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlv
blF1ZXVlOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VI
YW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZTo6Y2FuUmVzcG9u
ZFRvUHJvdGVjdGlvblNwYWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291
cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdC5oOgorICAgICAgICAo
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0OjplbmNvZGluZ1JlcXVpcmVzUGxhdGZvcm1EYXRhKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdENGTmV0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmZpbmRDRlVSTFJlcXVlc3RDb3B5Q29udGVudERpc3Bvc2l0aW9u
RW5jb2RpbmdGYWxsYmFja0FycmF5RnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0Ojpkb1VwZGF0ZVBsYXRmb3JtUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUGxhdGZvcm1IVFRQQm9keSk6CisgICAgICAgIChXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUmVzb3VyY2VSZXF1ZXN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdDo6c2V0U3RvcmFnZVNlc3Npb24pOgorICAgICAgICAo
V2ViQ29yZTo6ZmluZENGVVJMUmVxdWVzdFNldENvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFs
bGJhY2tBcnJheUZ1bmN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L2NmL1Jlc291cmNlUmVxdWVzdENGTmV0Lmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9j
Zi9SZXNvdXJjZVJlc3BvbnNlLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
OjpSZXNvdXJjZVJlc3BvbnNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291
cmNlUmVzcG9uc2VDRk5ldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
OjpjZlVSTFJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2U6OnBs
YXRmb3JtQ2VydGlmaWNhdGVJbmZvKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1N5
bmNocm9ub3VzTG9hZGVyQ2xpZW50Q0ZOZXQuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvY2YvU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5l
Y3Rpb25EZWxlZ2F0ZTo6c2V0dXBSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN5bmNocm9u
b3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZTo6c2V0dXBDb25uZWN0aW9u
U2NoZWR1bGluZyk6CisgICAgICAgIChXZWJDb3JlOjphZGp1c3RNSU1FVHlwZUlmTmVjZXNzYXJ5
KToKKyAgICAgICAgKFdlYkNvcmU6OlN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5l
Y3Rpb25EZWxlZ2F0ZTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OlN5
bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZTo6d2lsbENhY2hl
UmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6U3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNG
VVJMQ29ubmVjdGlvbkRlbGVnYXRlOjpjYW5SZXNwb25kVG9Qcm90ZWN0aW9uU3BhY2UpOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJM
Q29ubmVjdGlvbkRlbGVnYXRlLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2NvYS9D
cmVkZW50aWFsQ29jb2EuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL0NyZWRl
bnRpYWxDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkNyZWRlbnRpYWw6OkNyZWRlbnRpYWwp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q3JlZGVudGlhbDo6Y2ZDcmVkZW50aWFsKTog
RGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Byb3RlY3Rpb25TcGFj
ZUNvY29hLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2NvYS9Qcm90ZWN0aW9uU3Bh
Y2VDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OlByb3RlY3Rpb25TcGFjZTo6UHJvdGVjdGlv
blNwYWNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlByb3RlY3Rpb25TcGFjZTo6Y2ZT
cGFjZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJj
ZVJlcXVlc3RDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdDo6bnNV
UkxSZXF1ZXN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVz
cG9uc2VDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2U6OnBsYXRm
b3JtQ2VydGlmaWNhdGVJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2U6
Om5zVVJMUmVzcG9uc2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZTo6UmVzb3VyY2VSZXNwb25zZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9pb3MvUXVpY2tMb29rLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9pb3MvUXVp
Y2tMb29rLm1tOgorICAgICAgICAoLVtXZWJRdWlja0xvb2tIYW5kbGVBc0RlbGVnYXRlIGluaXRX
aXRoQ29ubmVjdGlvbkRlbGVnYXRlOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtXZWJRdWlja0xv
b2tIYW5kbGVBc0RlbGVnYXRlIGNvbm5lY3Rpb246ZGlkUmVjZWl2ZURhdGFBcnJheTpdKTogRGVs
ZXRlZC4KKyAgICAgICAgKC1bV2ViUXVpY2tMb29rSGFuZGxlQXNEZWxlZ2F0ZSBjb25uZWN0aW9u
OmRpZFJlY2VpdmVEYXRhOmxlbmd0aFJlY2VpdmVkOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtX
ZWJRdWlja0xvb2tIYW5kbGVBc0RlbGVnYXRlIGNvbm5lY3Rpb25EaWRGaW5pc2hMb2FkaW5nOl0p
OiBEZWxldGVkLgorICAgICAgICAoLVtXZWJRdWlja0xvb2tIYW5kbGVBc0RlbGVnYXRlIGNvbm5l
Y3Rpb246ZGlkRmFpbFdpdGhFcnJvcjpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViUXVpY2tM
b29rSGFuZGxlQXNEZWxlZ2F0ZSBkZXRhY2hIYW5kbGVdKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlF1aWNrTG9va0hhbmRsZTo6Y3JlYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OlF1aWNrTG9va0hhbmRsZTo6Y2ZSZXNwb25zZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9pb3MvUmVzb3VyY2VIYW5kbGVJT1MubW06IFJlbW92ZWQuCisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9pb3MvUmVzb3VyY2VSZXF1ZXN0SU9TLm1tOiBSZW1vdmVkLgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL0F1dGhlbnRpY2F0aW9uTWFjLm1tOgorICAg
ICAgICAoLVtXZWJDb3JlQXV0aGVudGljYXRpb25DbGllbnRBc0NoYWxsZW5nZVNlbmRlciBzZXRD
RkNoYWxsZW5nZTpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViQ29yZUF1dGhlbnRpY2F0aW9u
Q2xpZW50QXNDaGFsbGVuZ2VTZW5kZXIgY2ZDaGFsbGVuZ2VdKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OmNvcmUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6bWFjKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9Db29raWVKYXJNYWMubW06CisgICAg
ICAgIChXZWJDb3JlOjpzZXRDb29raWVzRnJvbURPTSk6CisgICAgICAgIChXZWJDb3JlOjpjb29r
aWVTdG9yYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OmFkZENvb2tpZSk6CisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9tYWMvQ3JlZGVudGlhbFN0b3JhZ2VNYWMubW06CisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9tYWMvRm9ybURhdGFTdHJlYW1NYWMuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL21hYy9Gb3JtRGF0YVN0cmVhbU1hYy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL21hYy9SZXNvdXJjZUVycm9yTWFjLm1tOgorICAgICAgICAoTlNFcnJvckZyb21DRkVy
cm9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlRXJyb3I6OlJlc291cmNl
RXJyb3IpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VFcnJvcjo6bnNFcnJv
cik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUVycm9yOjpvcGVyYXRvciBO
U0Vycm9yICopOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291
cmNlSGFuZGxlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OmNvbnRp
bnVlV2lsbENhY2hlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6
OmdldENvbm5lY3Rpb25UaW1pbmdEYXRhKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL21hYy9SZXNvdXJjZVJlcXVlc3RNYWMubW06IFJlbW92ZWQuCisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9tYWMvU3luY2hyb25vdXNMb2FkZXJDbGllbnQubW06CisgICAgICAgIChX
ZWJDb3JlOjpTeW5jaHJvbm91c0xvYWRlckNsaWVudDo6cGxhdGZvcm1CYWRSZXNwb25zZUVycm9y
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVB
c0RlbGVnYXRlLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291
cmNlSGFuZGxlQXNEZWxlZ2F0ZS5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9X
ZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1
ZXVlRGVsZWdhdGUubW06CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVVS
TFJlc3BvbnNlLm1tOgorICAgICAgICAoV2ViQ29yZTo6c3ludGhlc2l6ZVJlZGlyZWN0UmVzcG9u
c2VJZk5lY2Vzc2FyeSk6CisgICAgICAgICogcGxhdGZvcm0vd2luL1RlbXBvcmFyeUxpbmtTdHVi
cy5jcHA6CisgICAgICAgICogdGVzdGluZy9qcy9XZWJDb3JlVGVzdFN1cHBvcnRQcmVmaXguaDoK
KwogMjAxNi0xMC0xMSAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgW1dpbl0gQ29tcGlsZSBmaXguCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlUHJl
Zml4LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZVByZWZpeC5oCShyZXZp
c2lvbiAyMDcxMzgpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlUHJlZml4LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTE4LDcgKzE4LDcgQEAKICAqCiAgKi8KIAotLyogVGhpcyBwcmVmaXggZmlsZSBz
aG91bGQgY29udGFpbiBvbmx5OiAKKy8qIFRoaXMgcHJlZml4IGZpbGUgc2hvdWxkIGNvbnRhaW4g
b25seToKICAqICAgIDEpIGZpbGVzIHRvIHByZWNvbXBpbGUgZm9yIGZhc3RlciBidWlsZHMKICAq
ICAgIDIpIGluIG9uZSBjYXNlIGF0IGxlYXN0OiBPUy1YLXNwZWNpZmljIHBlcmZvcm1hbmNlIGJ1
ZyB3b3JrYXJvdW5kcwogICogICAgMykgdGhlIHNwZWNpYWwgdHJpY2sgdG8gY2F0Y2ggdXMgdXNp
bmcgbmV3IG9yIGRlbGV0ZSB3aXRob3V0IGluY2x1ZGluZyAiY29uZmlnLmgiCkBAIC0xMzMsOCAr
MTMzLDggQEAKICNlbHNlCiAKICNpZiBPUyhXSU5ET1dTKQotI2lmIFVTRShDRykKIAorI2lmIFVT
RShDRykKIC8vIEZJWE1FIDxyZGFyOi8vcHJvYmxlbS84MjA4ODY4PiBSZW1vdmUgc3VwcG9ydCBm
b3Igb2Jzb2xldGUgQ29sb3JTeW5jIEFQSSwgQ29yZVNlcnZpY2VzIGhlYWRlciBpbiBDb3JlR3Jh
cGhpY3MKIC8vIFdlIGNhbiByZW1vdmUgdGhpcyBvbmNlIHRoZSBuZXcgQ29sb3JTeW5jIEFQSXMg
YXJlIGF2YWlsYWJsZSBpbiBhbiBpbnRlcm5hbCBTYWZhcmkgU0RLLgogI2luY2x1ZGUgPENvbG9y
U3luYy9Db2xvclN5bmMuaD4KQEAgLTE0MywxOSArMTQzLDIxIEBACiAjZGVmaW5lIE9CU09MRVRF
X0NPTE9SU1lOQ19BUEkKICNlbmRpZgogI2VuZGlmCi0jaWYgVVNFKENGTkVUV09SSykKLS8qIFdp
bmRvd3MgZG9lc24ndCBpbmNsdWRlIENGTmV0d29yay5oIHZpYSBDb3JlU2VydmljZXMuaCwgc28g
d2UgZG8KLSAgIGl0IGV4cGxpY2l0bHkgaGVyZSB0byBtYWtlIFdpbmRvd3MgbW9yZSBjb25zaXN0
ZW50IHdpdGggTWFjLiAqLworCisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKICNpbmNsdWRlIDxD
Rk5ldHdvcmsvQ0ZOZXR3b3JrLmg+CiAvLyBPbiBXaW5kb3dzLCBkaXNwYXRjaC5oIG5lZWRzIHRv
IGJlIGluY2x1ZGVkIGJlZm9yZSBjZXJ0YWluIENGTmV0d29yayBoZWFkZXJzLgogI2luY2x1ZGUg
PGRpc3BhdGNoL2Rpc3BhdGNoLmg+CiAjZW5kaWYKKwogI2luY2x1ZGUgPHdpbmRvd3MuaD4KLSNl
bHNlCi0jaWYgIVBMQVRGT1JNKElPUykKKworI2VsaWYgIVBMQVRGT1JNKElPUykKKwogI2luY2x1
ZGUgPENvcmVTZXJ2aWNlcy9Db3JlU2VydmljZXMuaD4KLSNlbmRpZiAvLyAhUExBVEZPUk0oSU9T
KQotI2VuZGlmIC8vIE9TKFdJTkRPV1MpCisKKyNlbmRpZgorCiAKICNlbmRpZgogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShy
ZXZpc2lvbiAyMDcxMzgpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTIwMjEsNyArMjAyMSw2IEBACiAJCTUxNEM3
NjRGMENFOTIzNEUwMDdFRjNDRCAvKiBGb3JtRGF0YVN0cmVhbU1hYy5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNEM3NjQ1MENFOTIzNEUwMDdFRjND
RCAvKiBGb3JtRGF0YVN0cmVhbU1hYy5tbSAqLzsgfTsKIAkJNTE0Qzc2NTAwQ0U5MjM0RTAwN0VG
M0NEIC8qIFJlc291cmNlRXJyb3JNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MTRDNzY0NjBDRTkyMzRFMDA3RUYzQ0QgLyogUmVzb3VyY2VFcnJv
ck1hYy5tbSAqLzsgfTsKIAkJNTE0Qzc2NTEwQ0U5MjM0RTAwN0VGM0NEIC8qIFJlc291cmNlSGFu
ZGxlTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTE0Qzc2NDcwQ0U5MjM0RTAwN0VGM0NEIC8qIFJlc291cmNlSGFuZGxlTWFjLm1tICovOyB9Owot
CQk1MTRDNzY1MzBDRTkyMzRFMDA3RUYzQ0QgLyogUmVzb3VyY2VSZXF1ZXN0TWFjLm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE0Qzc2NDkwQ0U5MjM0
RTAwN0VGM0NEIC8qIFJlc291cmNlUmVxdWVzdE1hYy5tbSAqLzsgfTsKIAkJNTE0Qzc2NkQwQ0U5
MjNBMTAwN0VGM0NEIC8qIENyZWRlbnRpYWxCYXNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNEM3NjU4MENFOTIzQTEwMDdFRjNDRCAvKiBDcmVk
ZW50aWFsQmFzZS5jcHAgKi87IH07CiAJCTUxNEM3NjZFMENFOTIzQTEwMDdFRjNDRCAvKiBDcmVk
ZW50aWFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MTRDNzY1OTBDRTkyM0ExMDA3RUYzQ0QgLyogQ3JlZGVudGlhbC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxNEM3NjZGMENFOTIzQTEwMDdFRjND
RCAvKiBGb3JtRGF0YS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MTRDNzY1QTBDRTkyM0ExMDA3RUYzQ0QgLyogRm9ybURhdGEuY3BwICovOyB9OwpA
QCAtMjgwOCw3ICsyODA3LDYgQEAKIAkJN0Q0Qzk2REQxQUQ0NDgzNTAwMzY1QTUwIC8qIEpTRmV0
Y2hIZWFkZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3RDRDOTZEOTFBRDQ0ODM1MDAzNjVBNTAgLyogSlNGZXRjaEhlYWRlcnMuaCAqLzsgfTsKIAkJ
N0Q3NDFCREExNzcyMjZBQTAwODU5MTcwIC8qIENTU1ZhbHVlS2V5d29yZHMuaCBpbiBDb3B5IEdl
bmVyYXRlZCBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1NjU4
MTQ4MDlEMTMwNDMwMDBFNjFENyAvKiBDU1NWYWx1ZUtleXdvcmRzLmggKi87IH07CiAJCTdFMzdF
RjJFMTMzOTIwODgwMEIyOTI1MCAvKiBTdWJyZXNvdXJjZUxvYWRlckNGLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFMzdFRjJEMTMzOTIwODgwMEIy
OTI1MCAvKiBTdWJyZXNvdXJjZUxvYWRlckNGLmNwcCAqLzsgfTsKLQkJN0U0MjhDRTUxM0UzNDA3
RjAwM0I2NjFDIC8qIFJlc291cmNlSGFuZGxlSU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0U0MjhDRTQxM0UzNDA3RjAwM0I2NjFDIC8qIFJlc291
cmNlSGFuZGxlSU9TLm1tICovOyB9OwogCQk3RTQ2RjZGQTE2MjdBMkNBMDAwNjIyMjMgLyogSlNP
RVNFbGVtZW50SW5kZXhVaW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDdFNDZGNkY4MTYyN0EyQzkwMDA2MjIyMyAvKiBKU09FU0VsZW1lbnRJbmRl
eFVpbnQuY3BwICovOyB9OwogCQk3RTQ2RjZGQjE2MjdBMkNBMDAwNjIyMjMgLyogSlNPRVNFbGVt
ZW50SW5kZXhVaW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3RTQ2RjZGOTE2MjdBMkM5MDAwNjIyMjMgLyogSlNPRVNFbGVtZW50SW5kZXhVaW50Lmgg
Ki87IH07CiAJCTdFNDc0RTFFMTI0OTREQzkwMDIzNTM2NCAvKiBTUUxpdGVEYXRhYmFzZVRyYWNr
ZXJDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDdFNDc0RTFCMTI0OTREQzkwMDIzNTM2NCAvKiBTUUxpdGVEYXRhYmFzZVRyYWNrZXJDbGllbnQu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMjgy
Niw3ICsyODI0LDYgQEAKIAkJN0U2NkUyMzQxNkQ2RUI2QzAwRjdFN0ZGIC8qIFdlYkdMQ29tcHJl
c3NlZFRleHR1cmVBVEMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDdFNjZFMjMyMTZENkVCNkMwMEY3RTdGRiAvKiBXZWJHTENvbXByZXNzZWRUZXh0dXJl
QVRDLmggKi87IH07CiAJCTdFNjZFMjM0MTdFNkVCNkMwMEY3RTdGRiAvKiBXZWJHTENvbXByZXNz
ZWRUZXh0dXJlUFZSVEMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDdFNjZFMjMyMTdFNkVCNkMwMEY3RTdGRiAvKiBXZWJHTENvbXByZXNzZWRUZXh0dXJl
UFZSVEMuaCAqLzsgfTsKIAkJN0U3REUxRkQxOTVDRUYyNjAwMzUzNjNCIC8qIFJlc291cmNlUmVx
dWVzdENvY29hLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gN0U3REUxRkMxOTVDRUYyNjAwMzUzNjNCIC8qIFJlc291cmNlUmVxdWVzdENvY29hLm1tICov
OyB9OwotCQk3RTdERTIwMjE5NUNFRkNEMDAzNTM2M0IgLyogUmVzb3VyY2VSZXF1ZXN0SU9TLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0U3REUyMDEx
OTVDRUZDRDAwMzUzNjNCIC8qIFJlc291cmNlUmVxdWVzdElPUy5tbSAqLzsgfTsKIAkJN0U4RkFE
QzQxOTlBOTVCMTAwNzE0OTY4IC8qIFN1YnJlc291cmNlTG9hZGVyQ29jb2EubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RThGQURDMzE5OUE5NUIxMDA3
MTQ5NjggLyogU3VicmVzb3VyY2VMb2FkZXJDb2NvYS5tbSAqLzsgfTsKIAkJN0U5OUFGNTEwQjEz
ODQ2NDY4RkIwMUE1IC8qIFdpbmRvd0ZvY3VzQWxsb3dlZEluZGljYXRvci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RTk5QUY1MjBCMTM4NDY0NjhG
QjAxQTUgLyogV2luZG93Rm9jdXNBbGxvd2VkSW5kaWNhdG9yLmNwcCAqLzsgfTsKIAkJN0U5OUFG
NTMwQjEzODQ2NDY4RkIwMUE1IC8qIFdpbmRvd0ZvY3VzQWxsb3dlZEluZGljYXRvci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0U5OUFGNTQwQjEzODQ2
NDY4RkIwMUE1IC8qIFdpbmRvd0ZvY3VzQWxsb3dlZEluZGljYXRvci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0yODQ3LDcgKzI4NDQsNiBAQAog
CQk3RUU2ODQ2OTEyRDI2RTM4MDBFNzk0MTUgLyogTG9hZGVyUnVuTG9vcENGLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RUU2ODQ1NjEyRDI2RTM4MDBF
Nzk0MTUgLyogTG9hZGVyUnVuTG9vcENGLmggKi87IH07CiAJCTdFRTY4NDZBMTJEMjZFMzgwMEU3
OTQxNSAvKiBSZXNvdXJjZUVycm9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3RUU2ODQ1NzEyRDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VFcnJvci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdFRTY4
NDZCMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZUVycm9yQ0YuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0VFNjg0NTgxMkQyNkUzODAwRTc5NDE1
IC8qIFJlc291cmNlRXJyb3JDRi5jcHAgKi87IH07Ci0JCTdFRTY4NDZDMTJEMjZFMzgwMEU3OTQx
NSAvKiBSZXNvdXJjZUhhbmRsZUNGTmV0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDdFRTY4NDU5MTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZUhh
bmRsZUNGTmV0LmNwcCAqLzsgfTsKIAkJN0VFNjg0NkQxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291
cmNlUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gN0VFNjg0NUExMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlUmVxdWVzdC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdFRTY4NDZFMTJEMjZF
MzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RUU2ODQ1QjEyRDI2RTM4MDBFNzk0MTUgLyog
UmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuY3BwICovOyB9OwogCQk3RUU2ODQ2RjEyRDI2RTM4MDBFNzk0
MTUgLyogUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDdFRTY4NDVDMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJl
cXVlc3RDRk5ldC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CkBAIC05MDY1LDcgKzkwNjEsNiBAQAogCQk1MTRDNzY0NTBDRTkyMzRFMDA3RUYzQ0QgLyog
Rm9ybURhdGFTdHJlYW1NYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBGb3JtRGF0YVN0cmVhbU1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NTE0Qzc2NDYwQ0U5MjM0RTAwN0VGM0NEIC8qIFJlc291cmNlRXJyb3JNYWMubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBSZXNvdXJjZUVycm9yTWFjLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTRDNzY0NzBDRTkyMzRFMDA3RUYzQ0QgLyogUmVz
b3VyY2VIYW5kbGVNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBSZXNvdXJjZUhhbmRsZU1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTE0
Qzc2NDkwQ0U5MjM0RTAwN0VGM0NEIC8qIFJlc291cmNlUmVxdWVzdE1hYy5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFJlc291cmNlUmVxdWVzdE1hYy5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE0Qzc2NTgwQ0U5MjNBMTAwN0VGM0NEIC8qIENy
ZWRlbnRpYWxCYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENy
ZWRlbnRpYWxCYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE0Qzc2NTkw
Q0U5MjNBMTAwN0VGM0NEIC8qIENyZWRlbnRpYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQ3JlZGVudGlhbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTRD
NzY1QTBDRTkyM0ExMDA3RUYzQ0QgLyogRm9ybURhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gRm9ybURhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtOTk0OSw3ICs5OTQ0LDYgQEAKIAkJN0Q0Qzk2RDgxQUQ0NDgzNTAwMzY1QTUwIC8qIEpT
RmV0Y2hIZWFkZXJzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpT
RmV0Y2hIZWFkZXJzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0Q0Qzk2RDkx
QUQ0NDgzNTAwMzY1QTUwIC8qIEpTRmV0Y2hIZWFkZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEpTRmV0Y2hIZWFkZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTdFMzdFRjJEMTMzOTIwODgwMEIyOTI1MCAvKiBTdWJyZXNvdXJjZUxvYWRlckNGLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN1YnJlc291cmNlTG9hZGVyQ0Yu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3RTQyOENFNDEzRTM0MDdGMDAzQjY2
MUMgLyogUmVzb3VyY2VIYW5kbGVJT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBSZXNvdXJjZUhhbmRsZUlPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJN0U0NkY2RjgxNjI3QTJDOTAwMDYyMjIzIC8qIEpTT0VTRWxlbWVudEluZGV4VWludC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU09FU0VsZW1lbnRJbmRl
eFVpbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3RTQ2RjZGOTE2MjdBMkM5
MDAwNjIyMjMgLyogSlNPRVNFbGVtZW50SW5kZXhVaW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEpTT0VTRWxlbWVudEluZGV4VWludC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3RTQ3NEUxQjEyNDk0REM5MDAyMzUzNjQgLyogU1FMaXRlRGF0YWJhc2VUcmFj
a2VyQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNRTGl0ZURhdGFi
YXNlVHJhY2tlckNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTk2Nyw3
ICs5OTYxLDYgQEAKIAkJN0U2NkUyMzIxNkQ2RUI2QzAwRjdFN0ZGIC8qIFdlYkdMQ29tcHJlc3Nl
ZFRleHR1cmVBVEMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR0xDb21w
cmVzc2VkVGV4dHVyZUFUQy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3RTY2RTIz
MjE3RTZFQjZDMDBGN0U3RkYgLyogV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3RTdERTFGQzE5NUNFRjI2MDAzNTM2M0Ig
LyogUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBSZXNvdXJjZVJlcXVlc3RDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJN0U3REUyMDExOTVDRUZDRDAwMzUzNjNCIC8qIFJlc291cmNlUmVxdWVzdElPUy5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFJlc291cmNlUmVxdWVz
dElPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0U4RkFEQzMxOTlBOTVCMTAw
NzE0OTY4IC8qIFN1YnJlc291cmNlTG9hZGVyQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBTdWJyZXNvdXJjZUxvYWRlckNvY29hLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3RTk5QUY1MjBCMTM4NDY0NjhGQjAxQTUgLyogV2luZG93Rm9j
dXNBbGxvd2VkSW5kaWNhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFdpbmRvd0ZvY3VzQWxsb3dlZEluZGljYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTdFOTlBRjU0MEIxMzg0NjQ2OEZCMDFBNSAvKiBXaW5kb3dGb2N1c0FsbG93ZWRJ
bmRpY2F0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2luZG93Rm9jdXNB
bGxvd2VkSW5kaWNhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05OTkwLDcg
Kzk5ODMsNiBAQAogCQk3RUU2ODQ1NjEyRDI2RTM4MDBFNzk0MTUgLyogTG9hZGVyUnVuTG9vcENG
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExvYWRlclJ1bkxvb3BDRi5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3RUU2ODQ1NzEyRDI2RTM4MDBFNzk0MTUgLyog
UmVzb3VyY2VFcnJvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZXNvdXJj
ZUVycm9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFRTY4NDU4MTJEMjZFMzgw
MEU3OTQxNSAvKiBSZXNvdXJjZUVycm9yQ0YuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gUmVzb3VyY2VFcnJvckNGLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJN0VFNjg0NTkxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlSGFuZGxlQ0ZOZXQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVzb3VyY2VIYW5kbGVDRk5l
dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFRTY4NDVBMTJEMjZFMzgwMEU3
OTQxNSAvKiBSZXNvdXJjZVJlcXVlc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUmVzb3VyY2VSZXF1ZXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFRTY4
NDVCMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFRTY4NDVDMTJEMjZFMzgwMEU3OTQxNSAvKiBS
ZXNvdXJjZVJlcXVlc3RDRk5ldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBS
ZXNvdXJjZVJlcXVlc3RDRk5ldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTYy
NDEsOCArMTYyMzMsNiBAQAogCQkJCTQ0MkFGN0E3MTAyQ0RERUEwMDhGRDREMyAvKiBRdWlja0xv
b2suaCAqLywKIAkJCQk0NDJBRjdBODEwMkNEREVBMDA4RkQ0RDMgLyogUXVpY2tMb29rLm1tICov
LAogCQkJCUExMERCRjQ2MThGOTIzMTcwMDBENzBDNiAvKiBRdWlja0xvb2tIYW5kbGVDbGllbnQu
aCAqLywKLQkJCQk3RTQyOENFNDEzRTM0MDdGMDAzQjY2MUMgLyogUmVzb3VyY2VIYW5kbGVJT1Mu
bW0gKi8sCi0JCQkJN0U3REUyMDExOTVDRUZDRDAwMzUzNjNCIC8qIFJlc291cmNlUmVxdWVzdElP
Uy5tbSAqLywKIAkJCQk0NEEyMERCODBGODQxNjZDMDBCM0UxRkUgLyogV2ViQ29yZVVSTFJlc3Bv
bnNlSU9TLmggKi8sCiAJCQkJNDQ0RDRFMjEwRjcwOEIyRTAwMzE1OEUwIC8qIFdlYkNvcmVVUkxS
ZXNwb25zZUlPUy5tbSAqLywKIAkJCSk7CkBAIC0xNzE1Nyw3ICsxNzE0Nyw2IEBACiAJCQkJMUE3
RkE2NDcwRERBM0NCQTAwMjhGOEE1IC8qIE5ldHdvcmtTdGF0ZU5vdGlmaWVyTWFjLmNwcCAqLywK
IAkJCQk1MTRDNzY0NjBDRTkyMzRFMDA3RUYzQ0QgLyogUmVzb3VyY2VFcnJvck1hYy5tbSAqLywK
IAkJCQk1MTRDNzY0NzBDRTkyMzRFMDA3RUYzQ0QgLyogUmVzb3VyY2VIYW5kbGVNYWMubW0gKi8s
Ci0JCQkJNTE0Qzc2NDkwQ0U5MjM0RTAwN0VGM0NEIC8qIFJlc291cmNlUmVxdWVzdE1hYy5tbSAq
LywKIAkJCQlFMTgwODExNDE2RkNGOUNCMDBCODBEMDcgLyogU3luY2hyb25vdXNMb2FkZXJDbGll
bnQubW0gKi8sCiAJCQkJMUZBRkJGMTYxNUE1RkE1MjAwMDgzQTIwIC8qIFVUSVV0aWxpdGllcy5o
ICovLAogCQkJCTFGQUZCRjE3MTVBNUZBNTIwMDA4M0EyMCAvKiBVVElVdGlsaXRpZXMubW0gKi8s
CkBAIC0yMTAyMSw3ICsyMTAxMCw2IEBACiAJCQkJMUFGOEUxQzExMjU2NzNFMDAwMjMwRkY3IC8q
IFByb3h5U2VydmVyQ0ZOZXQuY3BwICovLAogCQkJCTdFRTY4NDU3MTJEMjZFMzgwMEU3OTQxNSAv
KiBSZXNvdXJjZUVycm9yLmggKi8sCiAJCQkJN0VFNjg0NTgxMkQyNkUzODAwRTc5NDE1IC8qIFJl
c291cmNlRXJyb3JDRi5jcHAgKi8sCi0JCQkJN0VFNjg0NTkxMkQyNkUzODAwRTc5NDE1IC8qIFJl
c291cmNlSGFuZGxlQ0ZOZXQuY3BwICovLAogCQkJCTI2RkFFNEM4MTg1MkUzQTUwMDRDOEM0NiAv
KiBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmNwcCAqLywKIAkJCQkyNkZB
RTRDOTE4NTJFM0E1MDA0QzhDNDYgLyogUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxl
Z2F0ZS5oICovLAogCQkJCTI2QzE1Q0Y0MTg1N0UxNUQwMEYxNUMwMyAvKiBSZXNvdXJjZUhhbmRs
ZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmNwcCAqLywKQEAgLTI5
OTMwLDExICsyOTkxOCw5IEBACiAJCQkJN0VFNjg0NkIxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291
cmNlRXJyb3JDRi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTRDNzY1MDBDRTkyMzRFMDA3RUYz
Q0QgLyogUmVzb3VyY2VFcnJvck1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUxNEM3Njc4MENF
OTIzQTEwMDdFRjNDRCAvKiBSZXNvdXJjZUhhbmRsZS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk3
RUU2ODQ2QzEyRDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkyNkZBRTRDQzE4NTJFM0E1MDA0QzhDNDYgLyogUmVzb3VyY2VIYW5kbGVD
RlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyNkMxNUNGNjE4
NTdFMTVEMDBGMTVDMDMgLyogUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdp
dGhPcGVyYXRpb25RdWV1ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMUJBMDAzMTE2RkI5MkFD
MDBCQTdBMzUgLyogUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJ
N0U0MjhDRTUxM0UzNDA3RjAwM0I2NjFDIC8qIFJlc291cmNlSGFuZGxlSU9TLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNTE0Qzc2NTEwQ0U5MjM0RTAwN0VGM0NEIC8qIFJlc291cmNlSGFuZGxlTWFj
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJOTNFMjI3RTMwQUY1ODlBRDAwRDQ4MzI0IC8qIFJlc291
cmNlTG9hZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdFRTY4NDc1MTJEMjZFNzAwMEU3OTQx
NSAvKiBSZXNvdXJjZUxvYWRlckNGTmV0LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjk5NDcsOCAr
Mjk5MzMsNiBAQAogCQkJCTUxNEM3NjdDMENFOTIzQTEwMDdFRjNDRCAvKiBSZXNvdXJjZVJlcXVl
c3RCYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdFRTY4NDZFMTJEMjZFMzgwMEU3OTQxNSAv
KiBSZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3RTdERTFGRDE5
NUNFRjI2MDAzNTM2M0IgLyogUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0gaW4gU291cmNlcyAqLywK
LQkJCQk3RTdERTIwMjE5NUNFRkNEMDAzNTM2M0IgLyogUmVzb3VyY2VSZXF1ZXN0SU9TLm1tIGlu
IFNvdXJjZXMgKi8sCi0JCQkJNTE0Qzc2NTMwQ0U5MjM0RTAwN0VGM0NEIC8qIFJlc291cmNlUmVx
dWVzdE1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUxNEM3NjdFMENFOTIzQTEwMDdFRjNDRCAv
KiBSZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3RUU2ODQ3MTEy
RDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VSZXNwb25zZUNGTmV0LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUExRjc4RDBDMUMyNTQyNEMwMDI0NTQ0NiAvKiBSZXNvdXJjZVJlc3BvbnNlQ29jb2Eu
bW0gaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExv
YWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRl
ci5oCShyZXZpc2lvbiAyMDcxMzgpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRM
b2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTUsNyArNTUsNyBAQAogI2luY2x1ZGUgIlF1aWNr
TG9vay5oIgogI2VuZGlmCiAKLSNpZiBQTEFURk9STShDT0NPQSkgJiYgIVVTRShDRk5FVFdPUksp
CisjaWYgUExBVEZPUk0oQ09DT0EpCiAjaW5jbHVkZSA8d3RmL1NjaGVkdWxlUGFpci5oPgogI2Vu
ZGlmCiAKQEAgLTE0NSw3ICsxNDUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgc2V0VGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYpOwog
ICAgICAgICBjb25zdCBTdHJpbmcmIG92ZXJyaWRlRW5jb2RpbmcoKSBjb25zdCB7IHJldHVybiBt
X292ZXJyaWRlRW5jb2Rpbmc7IH0KIAotI2lmIFBMQVRGT1JNKENPQ09BKSAmJiAhVVNFKENGTkVU
V09SSykKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICAgICAgdm9pZCBzY2hlZHVsZShTY2hlZHVs
ZVBhaXImKTsKICAgICAgICAgdm9pZCB1bnNjaGVkdWxlKFNjaGVkdWxlUGFpciYpOwogI2VuZGlm
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCShyZXZpc2lvbiAyMDcxMzgp
CisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQwMyw3ICs0MDMsNyBAQCBwdWJsaWM6CiAgICAgUmVtb3RlQVhPYmplY3RSZWYgYWNjZXNz
aWJpbGl0eVJlbW90ZU9iamVjdCgpIG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KICAgICBO
U0NhY2hlZFVSTFJlc3BvbnNlKiB3aWxsQ2FjaGVSZXNwb25zZShEb2N1bWVudExvYWRlciosIHVu
c2lnbmVkIGxvbmcsIE5TQ2FjaGVkVVJMUmVzcG9uc2UqIHJlc3BvbnNlKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiByZXNwb25zZTsgfQogI2VuZGlmCi0jaWYgUExBVEZPUk0oV0lOKSAmJiBVU0Uo
Q0ZORVRXT1JLKQorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAgICAgLy8gRklYTUU6IFdpbmRv
d3Mgc2hvdWxkIHVzZSB3aWxsQ2FjaGVSZXNwb25zZSAtIDxodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NTcyNTc+LgogICAgIGJvb2wgc2hvdWxkQ2FjaGVSZXNwb25zZShE
b2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBj
b25zdCB1bnNpZ25lZCBjaGFyKiwgdW5zaWduZWQgbG9uZyBsb25nKSBvdmVycmlkZSB7IHJldHVy
biB0cnVlOyB9CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ckNsaWVudC5oCShyZXZpc2lvbiAyMDcxMzgpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJh
bWVMb2FkZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjk3LDcgKzI5Nyw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCBOU0NhY2hlZFVSTFJlc3BvbnNlKiB3aWxs
Q2FjaGVSZXNwb25zZShEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwg
TlNDYWNoZWRVUkxSZXNwb25zZSopIGNvbnN0ID0gMDsKICAgICAgICAgdmlydHVhbCBOU0RpY3Rp
b25hcnkgKmRhdGFEZXRlY3Rpb25Db250ZXh0KCkgeyByZXR1cm4gbnVsbHB0cjsgfQogI2VuZGlm
Ci0jaWYgUExBVEZPUk0oV0lOKSAmJiBVU0UoQ0ZORVRXT1JLKQorI2lmIFVTRShDRlVSTENPTk5F
Q1RJT04pCiAgICAgICAgIC8vIEZJWE1FOiBXaW5kb3dzIHNob3VsZCB1c2Ugd2lsbENhY2hlUmVz
cG9uc2UgLSA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU3MjU3Pi4K
ICAgICAgICAgdmlydHVhbCBib29sIHNob3VsZENhY2hlUmVzcG9uc2UoRG9jdW1lbnRMb2FkZXIq
LCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBjb25z
dCB1bnNpZ25lZCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsb25nIGxvbmcgbGVuZ3RoKSA9IDA7CiAj
ZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAkocmV2
aXNpb24gMjA3MTM4KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNzEzLDE0ICs3MTMsOCBAQCB2b2lkIFJlc291cmNlTG9hZGVy
OjpkaWRSZWNlaXZlQXV0aGVudGljCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAg
ICB9Ci0gICAgLy8gT25seSB0aGVzZSBwbGF0Zm9ybXMgcHJvdmlkZSBhIHdheSB0byBjb250aW51
ZSB3aXRob3V0IGNyZWRlbnRpYWxzLgotICAgIC8vIElmIHdlIGNhbid0IGNvbnRpbnVlIHdpdGgg
Y3JlZGVudGlhbHMsIHdlIG5lZWQgdG8gY2FuY2VsIHRoZSBsb2FkIGFsdG9nZXRoZXIuCi0jaWYg
UExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRk5FVFdPUkspIHx8IFVTRShDVVJMKSB8fCBQTEFURk9S
TShHVEspIHx8IFBMQVRGT1JNKEVGTCkKICAgICBjaGFsbGVuZ2UuYXV0aGVudGljYXRpb25DbGll
bnQoKS0+cmVjZWl2ZWRSZXF1ZXN0VG9Db250aW51ZVdpdGhvdXRDcmVkZW50aWFsKGNoYWxsZW5n
ZSk7CiAgICAgQVNTRVJUKCFtX2hhbmRsZSB8fCAhbV9oYW5kbGUtPmhhc0F1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlKCkpOwotI2Vsc2UKLSAgICBkaWRGYWlsKGJsb2NrZWRFcnJvcigpKTsKLSNlbmRp
ZgogfQogCiAjaWYgVVNFKFBST1RFQ1RJT05fU1BBQ0VfQVVUSF9DQUxMQkFDSykKQEAgLTc0Nyw3
ICs3NDEsNyBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpyZWNlaXZlZENhbmNlbGxhdGlvCiAgICAg
Y2FuY2VsKCk7CiB9CiAKLSNpZiBQTEFURk9STShDT0NPQSkgJiYgIVVTRShDRk5FVFdPUkspCisj
aWYgUExBVEZPUk0oQ09DT0EpCiAKIHZvaWQgUmVzb3VyY2VMb2FkZXI6OnNjaGVkdWxlKFNjaGVk
dWxlUGFpciYgcGFpcikKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxv
YWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRl
ci5oCShyZXZpc2lvbiAyMDcxMzgpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VM
b2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTQzLDcgKzE0Myw3IEBAIHB1YmxpYzoKIAogICAg
IGNvbnN0IExvYWRUaW1pbmcmIGxvYWRUaW1pbmcoKSB7IHJldHVybiBtX2xvYWRUaW1pbmc7IH0K
IAotI2lmIFBMQVRGT1JNKENPQ09BKSAmJiAhVVNFKENGTkVUV09SSykKKyNpZiBQTEFURk9STShD
T0NPQSkKICAgICB2b2lkIHNjaGVkdWxlKFdURjo6U2NoZWR1bGVQYWlyJik7CiAgICAgdm9pZCB1
bnNjaGVkdWxlKFdURjo6U2NoZWR1bGVQYWlyJik7CiAjZW5kaWYKQEAgLTE2MywxMiArMTYzLDkg
QEAgcHJvdGVjdGVkOgogCiAgICAgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJiBvcHRpb25z
KCkgeyByZXR1cm4gbV9vcHRpb25zOyB9CiAKLSNpZiBQTEFURk9STShDT0NPQSkgJiYgIVVTRShD
Rk5FVFdPUkspCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgTlNDYWNoZWRVUkxSZXNwb25zZSog
d2lsbENhY2hlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqLCBOU0NhY2hlZFVSTFJlc3BvbnNlKikg
b3ZlcnJpZGU7CiAjZW5kaWYKLSNpZiBQTEFURk9STShDT0NPQSkgJiYgVVNFKENGTkVUV09SSykK
LSAgICBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmIHdpbGxDYWNoZVJlc3BvbnNlKFJlc291cmNlSGFu
ZGxlKiwgQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZikgb3ZlcnJpZGU7Ci0jZW5kaWYKIAogICAgIHZp
cnR1YWwgdm9pZCB3aWxsU2VuZFJlcXVlc3RJbnRlcm5hbChSZXNvdXJjZVJlcXVlc3QmLCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKTsKIApAQCAtMjA4LDcgKzIwNSw3
IEBAIHByaXZhdGU6CiAjaWYgUExBVEZPUk0oSU9TKQogICAgIFJldGFpblB0cjxDRkRpY3Rpb25h
cnlSZWY+IGNvbm5lY3Rpb25Qcm9wZXJ0aWVzKFJlc291cmNlSGFuZGxlKikgb3ZlcnJpZGU7CiAj
ZW5kaWYKLSNpZiBQTEFURk9STShXSU4pICYmIFVTRShDRk5FVFdPUkspCisjaWYgVVNFKENGVVJM
Q09OTkVDVElPTikKICAgICAvLyBGSVhNRTogV2luZG93cyBzaG91bGQgdXNlIHdpbGxDYWNoZVJl
c3BvbnNlIC0gPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NzI1Nz4u
CiAgICAgYm9vbCBzaG91bGRDYWNoZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlKiwgQ0ZDYWNoZWRV
UkxSZXNwb25zZVJlZikgb3ZlcnJpZGU7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9TdWJyZXNvdXJjZUxvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9TdWJyZXNvdXJjZUxvYWRlci5oCShyZXZpc2lvbiAyMDcxMzgpCisrKyBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNzQsMTIg
Kzc0LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdpbGxDYW5jZWwoY29uc3QgUmVzb3VyY2VFcnJv
ciYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkQ2FuY2VsKGNvbnN0IFJlc291cmNlRXJyb3ImKSBv
dmVycmlkZTsKIAotI2lmIFBMQVRGT1JNKENPQ09BKSAmJiAhVVNFKENGTkVUV09SSykKKyNpZiBQ
TEFURk9STShDT0NPQSkKICAgICBOU0NhY2hlZFVSTFJlc3BvbnNlICp3aWxsQ2FjaGVSZXNwb25z
ZShSZXNvdXJjZUhhbmRsZSosIE5TQ2FjaGVkVVJMUmVzcG9uc2UqKSBvdmVycmlkZTsKICNlbmRp
ZgotI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBVU0UoQ0ZORVRXT1JLKQotICAgIENGQ2FjaGVkVVJM
UmVzcG9uc2VSZWYgd2lsbENhY2hlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqLCBDRkNhY2hlZFVS
TFJlc3BvbnNlUmVmKSBvdmVycmlkZTsKLSNlbmRpZgogCiAjaWYgVVNFKE5FVFdPUktfQ0ZEQVRB
X0FSUkFZX0NBTExCQUNLKQogICAgIGJvb2wgc3VwcG9ydHNEYXRhQXJyYXkoKSBvdmVycmlkZSB7
IHJldHVybiB0cnVlOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2YvUmVzb3VyY2VM
b2FkZXJDRk5ldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2NmL1Jl
c291cmNlTG9hZGVyQ0ZOZXQuY3BwCShyZXZpc2lvbiAyMDcxMzgpCisrKyBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2YvUmVzb3VyY2VMb2FkZXJDRk5ldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2
LDE1ICsyNiwxMyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9h
ZGVyLmgiCiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAK
ICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50Lmgi
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotI2lmIFBMQVRGT1JNKFdJTikKLQogYm9vbCBSZXNv
dXJjZUxvYWRlcjo6c2hvdWxkQ2FjaGVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSosIENGQ2FjaGVk
VVJMUmVzcG9uc2VSZWYgY2FjaGVkUmVzcG9uc2UpCiB7CiAgICAgaWYgKG1fb3B0aW9ucy5zZW5k
TG9hZENhbGxiYWNrcyA9PSBEb05vdFNlbmRDYWxsYmFja3MpCkBAIC00NSw4ICs0Myw2IEBAIGJv
b2wgUmVzb3VyY2VMb2FkZXI6OnNob3VsZENhY2hlUmVzcG9uc2UKICAgICByZXR1cm4gZnJhbWVM
b2FkZXIoKS0+Y2xpZW50KCkuc2hvdWxkQ2FjaGVSZXNwb25zZShkb2N1bWVudExvYWRlcigpLCBp
ZGVudGlmaWVyKCksIHJlc3BvbnNlLCBDRkRhdGFHZXRCeXRlUHRyKGRhdGEpLCBDRkRhdGFHZXRM
ZW5ndGgoZGF0YSkpOwogfQogCi0jZW5kaWYKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0j
ZW5kaWYgLy8gVVNFKENGTkVUV09SSykKKyNlbmRpZiAvLyBVU0UoQ0ZVUkxDT05ORUNUSU9OKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL1N1YnJlc291cmNlTG9hZGVyQ29jb2Eu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL1N1YnJlc291cmNl
TG9hZGVyQ29jb2EubW0JKHJldmlzaW9uIDIwNzEzOCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jb2NvYS9TdWJyZXNvdXJjZUxvYWRlckNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zNSwx
OCArMzUsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQot
Ci1DRkNhY2hlZFVSTFJlc3BvbnNlUmVmIFN1YnJlc291cmNlTG9hZGVyOjp3aWxsQ2FjaGVSZXNw
b25zZShSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmIGNhY2hl
ZFJlc3BvbnNlKQotewotICAgIERpc2tDYWNoZU1vbml0b3I6Om1vbml0b3JGaWxlQmFja2luZ1N0
b3JlQ3JlYXRpb24ocmVxdWVzdCgpLCBtX3Jlc291cmNlLT5zZXNzaW9uSUQoKSwgY2FjaGVkUmVz
cG9uc2UpOwotICAgIGlmICghbV9yZXNvdXJjZS0+c2hvdWxkQ2FjaGVSZXNwb25zZShDRkNhY2hl
ZFVSTFJlc3BvbnNlR2V0V3JhcHBlZFJlc3BvbnNlKGNhY2hlZFJlc3BvbnNlKSkpCi0gICAgICAg
IHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBSZXNvdXJjZUxvYWRlcjo6d2lsbENhY2hlUmVz
cG9uc2UoaGFuZGxlLCBjYWNoZWRSZXNwb25zZSk7Ci19Ci0KLSNlbHNlCi0KIE5TQ2FjaGVkVVJM
UmVzcG9uc2UqIFN1YnJlc291cmNlTG9hZGVyOjp3aWxsQ2FjaGVSZXNwb25zZShSZXNvdXJjZUhh
bmRsZSogaGFuZGxlLCBOU0NhY2hlZFVSTFJlc3BvbnNlKiByZXNwb25zZSkKIHsKICAgICBEaXNr
Q2FjaGVNb25pdG9yOjptb25pdG9yRmlsZUJhY2tpbmdTdG9yZUNyZWF0aW9uKHJlcXVlc3QoKSwg
bV9yZXNvdXJjZS0+c2Vzc2lvbklEKCksIFtyZXNwb25zZSBfQ0ZDYWNoZWRVUkxSZXNwb25zZV0p
OwpAQCAtNTUsNiArNDMsNCBAQCBOU0NhY2hlZFVSTFJlc3BvbnNlKiBTdWJyZXNvdXJjZUxvYWRl
cjo6CiAgICAgcmV0dXJuIFJlc291cmNlTG9hZGVyOjp3aWxsQ2FjaGVSZXNwb25zZShoYW5kbGUs
IHJlc3BvbnNlKTsKIH0KIAotI2VuZGlmCi0KIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9tYWMvRG9jdW1lbnRMb2FkZXJNYWMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9tYWMvRG9jdW1lbnRMb2FkZXJNYWMuY3BwCShyZXZpc2lvbiAyMDcxMzgpCisrKyBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvbWFjL0RvY3VtZW50TG9hZGVyTWFjLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzMsOCArMzMsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSNpZiAhVVNF
KENGTkVUV09SSykKLQogc3RhdGljIHZvaWQgc2NoZWR1bGVBbGwoY29uc3QgUmVzb3VyY2VMb2Fk
ZXJNYXAmIGxvYWRlcnMsIFNjaGVkdWxlUGFpciYgcGFpcikKIHsKICAgICBWZWN0b3I8UmVmUHRy
PFJlc291cmNlTG9hZGVyPj4gbG9hZGVyc0NvcHk7CkBAIC02OSw2ICs2Nyw0IEBAIHZvaWQgRG9j
dW1lbnRMb2FkZXI6OnVuc2NoZWR1bGUoU2NoZWR1bGUKICAgICB1bnNjaGVkdWxlQWxsKG1fbXVs
dGlwYXJ0U3VicmVzb3VyY2VMb2FkZXJzLCBwYWlyKTsKIH0KIAotI2VuZGlmCi0KLX0gLy8gbmFt
ZXNwYWNlCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvbWFjL1Jlc291cmNlTG9hZGVyTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9tYWMvUmVzb3VyY2VMb2FkZXJNYWMubW0JKHJldmlzaW9uIDIwNzEzOCkKKysrIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9tYWMvUmVzb3VyY2VMb2FkZXJNYWMubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTM2LDE5ICszNiw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotI2lmIFVTRShD
Rk5FVFdPUkspCi0KLUNGQ2FjaGVkVVJMUmVzcG9uc2VSZWYgUmVzb3VyY2VMb2FkZXI6OndpbGxD
YWNoZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlKiwgQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZiBjYWNo
ZWRSZXNwb25zZSkKLXsKLSAgICBpZiAobV9vcHRpb25zLnNlbmRMb2FkQ2FsbGJhY2tzID09IERv
Tm90U2VuZENhbGxiYWNrcykKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBSZXRhaW5Q
dHI8TlNDYWNoZWRVUkxSZXNwb25zZT4gbnNDYWNoZWRSZXNwb25zZSA9IGFkb3B0TlMoW1tOU0Nh
Y2hlZFVSTFJlc3BvbnNlIGFsbG9jXSBfaW5pdFdpdGhDRkNhY2hlZFVSTFJlc3BvbnNlOmNhY2hl
ZFJlc3BvbnNlXSk7Ci0gICAgcmV0dXJuIFtmcmFtZUxvYWRlcigpLT5jbGllbnQoKS53aWxsQ2Fj
aGVSZXNwb25zZShkb2N1bWVudExvYWRlcigpLCBpZGVudGlmaWVyKCksIG5zQ2FjaGVkUmVzcG9u
c2UuZ2V0KCkpIF9DRkNhY2hlZFVSTFJlc3BvbnNlXTsKLX0KLQotI2Vsc2UKLQogTlNDYWNoZWRV
UkxSZXNwb25zZSogUmVzb3VyY2VMb2FkZXI6OndpbGxDYWNoZVJlc3BvbnNlKFJlc291cmNlSGFu
ZGxlKiwgTlNDYWNoZWRVUkxSZXNwb25zZSogcmVzcG9uc2UpCiB7CiAgICAgaWYgKG1fb3B0aW9u
cy5zZW5kTG9hZENhbGxiYWNrcyA9PSBEb05vdFNlbmRDYWxsYmFja3MpCkBAIC01Niw4ICs0Myw2
IEBAIE5TQ2FjaGVkVVJMUmVzcG9uc2UqIFJlc291cmNlTG9hZGVyOjp3aWwKICAgICByZXR1cm4g
ZnJhbWVMb2FkZXIoKS0+Y2xpZW50KCkud2lsbENhY2hlUmVzcG9uc2UoZG9jdW1lbnRMb2FkZXIo
KSwgaWRlbnRpZmllcigpLCByZXNwb25zZSk7CiB9CiAKLSNlbmRpZgotCiAjaWYgVVNFKE5FVFdP
UktfQ0ZEQVRBX0FSUkFZX0NBTExCQUNLKQogCiB2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNl
aXZlRGF0YUFycmF5KENGQXJyYXlSZWYgZGF0YUFycmF5KQpJbmRleDogU291cmNlL1dlYkNvcmUv
cGFnZS9tYWMvUGFnZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL21h
Yy9QYWdlTWFjLm1tCShyZXZpc2lvbiAyMDcxMzgpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL21h
Yy9QYWdlTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00NSwxMSArNDUsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiB2b2lkIFBhZ2U6OnBsYXRmb3JtSW5pdGlhbGl6ZSgpCiB7CiAjaWYgUExBVEZP
Uk0oSU9TKQotI2lmIFVTRShDRk5FVFdPUkspCi0gICAgYWRkU2NoZWR1bGVQYWlyKFNjaGVkdWxl
UGFpcjo6Y3JlYXRlKFdlYlRocmVhZFJ1bkxvb3AoKSwga0NGUnVuTG9vcENvbW1vbk1vZGVzKSk7
Ci0jZWxzZQogICAgIGFkZFNjaGVkdWxlUGFpcihTY2hlZHVsZVBhaXI6OmNyZWF0ZShXZWJUaHJl
YWROU1J1bkxvb3AoKSwga0NGUnVuTG9vcENvbW1vbk1vZGVzKSk7Ci0jZW5kaWYgLy8gVVNFKENG
TkVUV09SSykKICNlbHNlCiAgICAgYWRkU2NoZWR1bGVQYWlyKFNjaGVkdWxlUGFpcjo6Y3JlYXRl
KFtOU1J1bkxvb3AgY3VycmVudFJ1bkxvb3BdLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpKTsKICNl
bmRpZgpAQCAtNjksMTQgKzY1LDEyIEBAIHZvaWQgUGFnZTo6YWRkU2NoZWR1bGVQYWlyKFJlZjxT
Y2hlZHVsZVAKICAgICAgICAgbV9zY2hlZHVsZWRSdW5Mb29wUGFpcnMgPSBzdGQ6Om1ha2VfdW5p
cXVlPFNjaGVkdWxlUGFpckhhc2hTZXQ+KCk7CiAgICAgbV9zY2hlZHVsZWRSdW5Mb29wUGFpcnMt
PmFkZChwYWlyLnB0cigpKTsKIAotI2lmICFVU0UoQ0ZORVRXT1JLKQogICAgIGZvciAoRnJhbWUq
IGZyYW1lID0gJm1fbWFpbkZyYW1lLmdldCgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgp
LnRyYXZlcnNlTmV4dCgpKSB7CiAgICAgICAgIGlmIChEb2N1bWVudExvYWRlciogZG9jdW1lbnRM
b2FkZXIgPSBmcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKSkKICAgICAgICAgICAgIGRv
Y3VtZW50TG9hZGVyLT5zY2hlZHVsZShwYWlyKTsKICAgICAgICAgaWYgKERvY3VtZW50TG9hZGVy
KiBkb2N1bWVudExvYWRlciA9IGZyYW1lLT5sb2FkZXIoKS5wcm92aXNpb25hbERvY3VtZW50TG9h
ZGVyKCkpCiAgICAgICAgICAgICBkb2N1bWVudExvYWRlci0+c2NoZWR1bGUocGFpcik7CiAgICAg
fQotI2VuZGlmCiAKICAgICAvLyBGSVhNRTogbWFrZSBTaGFyZWRUaW1lck1hYyB1c2UgdGhlc2Ug
U2NoZWR1bGVQYWlycy4KIH0KQEAgLTg5LDE0ICs4MywxMiBAQCB2b2lkIFBhZ2U6OnJlbW92ZVNj
aGVkdWxlUGFpcihSZWY8U2NoZWR1CiAKICAgICBtX3NjaGVkdWxlZFJ1bkxvb3BQYWlycy0+cmVt
b3ZlKHBhaXIucHRyKCkpOwogCi0jaWYgIVVTRShDRk5FVFdPUkspCiAgICAgZm9yIChGcmFtZSog
ZnJhbWUgPSAmbV9tYWluRnJhbWUuZ2V0KCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCku
dHJhdmVyc2VOZXh0KCkpIHsKICAgICAgICAgaWYgKERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExv
YWRlciA9IGZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpKQogICAgICAgICAgICAgZG9j
dW1lbnRMb2FkZXItPnVuc2NoZWR1bGUocGFpcik7CiAgICAgICAgIGlmIChEb2N1bWVudExvYWRl
ciogZG9jdW1lbnRMb2FkZXIgPSBmcmFtZS0+bG9hZGVyKCkucHJvdmlzaW9uYWxEb2N1bWVudExv
YWRlcigpKQogICAgICAgICAgICAgZG9jdW1lbnRMb2FkZXItPnVuc2NoZWR1bGUocGFpcik7CiAg
ICAgfQotI2VuZGlmCiB9CiAKIH0gLy8gbmFtZXNwYWNlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akMubW0JKHJldmlzaW9uIDIwNzEzOCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTEwOSwxMCArMTA5LDYgQEAKICNpbXBvcnQgPFZpZGVvVG9v
bGJveC9WaWRlb1Rvb2xib3guaD4KICNlbmRpZgogCi0jaWYgVVNFKENGTkVUV09SSykKLSNpbmNs
dWRlICJDRk5TVVJMQ29ubmVjdGlvblNQSS5oIgotI2VuZGlmCi0KICNpbXBvcnQgIkNvcmVWaWRl
b1NvZnRMaW5rLmgiCiAKIG5hbWVzcGFjZSBzdGQgewpAQCAtMzcyLDU4ICszNjgsNiBAQCBzdGF0
aWMgZGlzcGF0Y2hfcXVldWVfdCBnbG9iYWxQdWxsRGVsZWdhCiB9CiAjZW5kaWYKIAotI2lmIFVT
RShDRk5FVFdPUkspCi1jbGFzcyBXZWJDb3JlTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUNs
aWVudCA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYkNvcmVOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlQ2xpZW50PiwgcHVibGljIEF1dGhlbnRpY2F0aW9uQ2xpZW50IHsKLXB1YmxpYzoKLSAgICBz
dGF0aWMgUmVmUHRyPFdlYkNvcmVOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQ2xpZW50PiBj
cmVhdGUoTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqY2hhbGxlbmdlKQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJDb3JlTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZUNsaWVudChjaGFsbGVuZ2UpKTsKLSAgICB9Ci0KLSAgICB1c2luZyBSZWZDb3VudGVkPFdl
YkNvcmVOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQ2xpZW50Pjo6cmVmOwotICAgIHVzaW5n
IFJlZkNvdW50ZWQ8V2ViQ29yZU5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VDbGllbnQ+Ojpk
ZXJlZjsKLQotcHJpdmF0ZToKLSAgICBXZWJDb3JlTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZUNsaWVudChOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICpjaGFsbGVuZ2UpCi0gICAgICAg
IDogbV9jaGFsbGVuZ2UoY2hhbGxlbmdlKQotICAgIHsKLSAgICAgICAgQVNTRVJUKG1fY2hhbGxl
bmdlKTsKLSAgICB9Ci0KLSAgICB2b2lkIHJlZkF1dGhlbnRpY2F0aW9uQ2xpZW50KCkgb3ZlcnJp
ZGUgeyByZWYoKTsgfQotICAgIHZvaWQgZGVyZWZBdXRoZW50aWNhdGlvbkNsaWVudCgpIG92ZXJy
aWRlIHsgZGVyZWYoKTsgfQotCi0gICAgdm9pZCByZWNlaXZlZENyZWRlbnRpYWwoY29uc3QgQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UmLCBjb25zdCBDcmVkZW50aWFsJiBjcmVkZW50aWFsKSBvdmVy
cmlkZQotICAgIHsKLSAgICAgICAgW1ttX2NoYWxsZW5nZSBzZW5kZXJdIHVzZUNyZWRlbnRpYWw6
Y3JlZGVudGlhbC5uc0NyZWRlbnRpYWwoKSBmb3JBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTptX2No
YWxsZW5nZS5nZXQoKV07Ci0gICAgfQotCi0gICAgdm9pZCByZWNlaXZlZFJlcXVlc3RUb0NvbnRp
bnVlV2l0aG91dENyZWRlbnRpYWwoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKSBvdmVy
cmlkZQotICAgIHsKLSAgICAgICAgW1ttX2NoYWxsZW5nZSBzZW5kZXJdIGNvbnRpbnVlV2l0aG91
dENyZWRlbnRpYWxGb3JBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTptX2NoYWxsZW5nZS5nZXQoKV07
Ci0gICAgfQotCi0gICAgdm9pZCByZWNlaXZlZENhbmNlbGxhdGlvbihjb25zdCBBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSYpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBbW21fY2hhbGxlbmdlIHNl
bmRlcl0gY2FuY2VsQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6bV9jaGFsbGVuZ2UuZ2V0KCldOwot
ICAgIH0KLQotICAgIHZvaWQgcmVjZWl2ZWRSZXF1ZXN0VG9QZXJmb3JtRGVmYXVsdEhhbmRsaW5n
KGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAg
IGlmIChbW21fY2hhbGxlbmdlIHNlbmRlcl0gcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihw
ZXJmb3JtRGVmYXVsdEhhbmRsaW5nRm9yQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6KV0pCi0gICAg
ICAgICAgICBbW21fY2hhbGxlbmdlIHNlbmRlcl0gcGVyZm9ybURlZmF1bHRIYW5kbGluZ0ZvckF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOm1fY2hhbGxlbmdlLmdldCgpXTsKLSAgICB9Ci0KLSAgICB2
b2lkIHJlY2VpdmVkQ2hhbGxlbmdlUmVqZWN0aW9uKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlJikgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIGlmIChbW21fY2hhbGxlbmdlIHNlbmRlcl0g
cmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihyZWplY3RQcm90ZWN0aW9uU3BhY2VBbmRDb250
aW51ZVdpdGhDaGFsbGVuZ2U6KV0pCi0gICAgICAgICAgICBbW21fY2hhbGxlbmdlIHNlbmRlcl0g
cmVqZWN0UHJvdGVjdGlvblNwYWNlQW5kQ29udGludWVXaXRoQ2hhbGxlbmdlOm1fY2hhbGxlbmdl
LmdldCgpXTsKLSAgICB9Ci0KLSAgICBSZXRhaW5QdHI8TlNVUkxBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZT4gbV9jaGFsbGVuZ2U7Ci19OwotI2VuZGlmCi0KIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQzo6cmVnaXN0ZXJNZWRpYUVuZ2luZShNZWRpYUVuZ2luZVJlZ2lzdHJh
ciByZWdpc3RyYXIpCiB7CiAgICAgaWYgKCFpc0F2YWlsYWJsZSgpKQpAQCAtMTc5NywxNSArMTc0
MSw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzoKIAogYm9vbCBN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzaG91bGRXYWl0Rm9yUmVzcG9uc2VU
b0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UqIG5z
Q2hhbGxlbmdlKQogewotI2lmIFVTRShDRk5FVFdPUkspCi0gICAgUmVmUHRyPFdlYkNvcmVOU1VS
TEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQ2xpZW50PiBjbGllbnQgPSBXZWJDb3JlTlNVUkxBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZUNsaWVudDo6Y3JlYXRlKG5zQ2hhbGxlbmdlKTsKLSAgICBSZXRh
aW5QdHI8Q0ZVUkxBdXRoQ2hhbGxlbmdlUmVmPiBjZkNoYWxsZW5nZSA9IGFkb3B0Q0YoW25zQ2hh
bGxlbmdlIF9jcmVhdGVDRkF1dGhDaGFsbGVuZ2VdKTsKLSAgICBBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSBjaGFsbGVuZ2UoY2ZDaGFsbGVuZ2UuZ2V0KCksIGNsaWVudC5nZXQoKSk7Ci0jZWxzZQot
ICAgIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIGNoYWxsZW5nZShuc0NoYWxsZW5nZSk7Ci0jZW5k
aWYKLQotICAgIHJldHVybiBwbGF5ZXIoKS0+c2hvdWxkV2FpdEZvclJlc3BvbnNlVG9BdXRoZW50
aWNhdGlvbkNoYWxsZW5nZShjaGFsbGVuZ2UpOworICAgIHJldHVybiBwbGF5ZXIoKS0+c2hvdWxk
V2FpdEZvclJlc3BvbnNlVG9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZShBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZShuc0NoYWxsZW5nZSkpOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakM6OmRpZENhbmNlbExvYWRpbmdSZXF1ZXN0KEFWQXNzZXRSZXNvdXJjZUxvYWRp
bmdSZXF1ZXN0KiBhdlJlcXVlc3QpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
V2ViQ29yZVN5c3RlbUludGVyZmFjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgJKHJldmlzaW9uIDIwNzEzOCkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTc3LDE0ICs3Nyw2IEBAIHR5cGVkZWYgc3RydWN0IF9OU1JlY3QgTlNS
ZWN0OwogI2luY2x1ZGUgPENvcmVHcmFwaGljcy9Db3JlR3JhcGhpY3MuaD4KICNlbmRpZgogCi0j
aWYgVVNFKENGTkVUV09SSykKLXR5cGVkZWYgc3RydWN0IE9wYXF1ZUNGSFRUUENvb2tpZVN0b3Jh
Z2UqICBDRkhUVFBDb29raWVTdG9yYWdlUmVmOwotdHlwZWRlZiBzdHJ1Y3QgX0NGVVJMUHJvdGVj
dGlvblNwYWNlKiBDRlVSTFByb3RlY3Rpb25TcGFjZVJlZjsKLXR5cGVkZWYgc3RydWN0IF9DRlVS
TENyZWRlbnRpYWwqIFdLQ0ZVUkxDcmVkZW50aWFsUmVmOwotdHlwZWRlZiBzdHJ1Y3QgX0NGVVJM
UmVxdWVzdCogQ0ZNdXRhYmxlVVJMUmVxdWVzdFJlZjsKLXR5cGVkZWYgY29uc3Qgc3RydWN0IF9D
RlVSTFJlcXVlc3QqIENGVVJMUmVxdWVzdFJlZjsKLSNlbmRpZgotCiBPQkpDX0NMQVNTIEFWQXNz
ZXQ7CiBPQkpDX0NMQVNTIEFWUGxheWVyOwogT0JKQ19DTEFTUyBDQUxheWVyOwpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdl
U2Vzc2lvbi5oCShyZXZpc2lvbiAyMDcxMzgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsy
OSw3IEBACiAjaW5jbHVkZSAiU2Vzc2lvbklELmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CiAKLSNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKENGTkVUV09SSykKKyNpZiBQTEFU
Rk9STShDT0NPQSkgfHwgVVNFKENGVVJMQ09OTkVDVElPTikKICNpbmNsdWRlICJDRk5ldHdvcmtT
UEkuaCIKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjZW5kaWYKQEAgLTU5LDcgKzU5LDcg
QEAgcHVibGljOgogICAgIFNlc3Npb25JRCBzZXNzaW9uSUQoKSBjb25zdCB7IHJldHVybiBtX3Nl
c3Npb25JRDsgfQogICAgIENyZWRlbnRpYWxTdG9yYWdlJiBjcmVkZW50aWFsU3RvcmFnZSgpIHsg
cmV0dXJuIG1fY3JlZGVudGlhbFN0b3JhZ2U7IH0KIAotI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBV
U0UoQ0ZORVRXT1JLKQorI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZVUkxDT05ORUNUSU9O
KQogICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbihTZXNzaW9uSUQsIFJldGFpblB0cjxDRlVSTFN0
b3JhZ2VTZXNzaW9uUmVmPik7CiAKICAgICAvLyBNYXkgYmUgbnVsbCwgaW4gd2hpY2ggY2FzZSBh
IEZvdW5kYXRpb24gZGVmYXVsdCBzaG91bGQgYmUgdXNlZC4KQEAgLTg0LDcgKzg0LDcgQEAgcHJp
dmF0ZToKICAgICBzdGF0aWMgSGFzaE1hcDxTZXNzaW9uSUQsIHN0ZDo6dW5pcXVlX3B0cjxOZXR3
b3JrU3RvcmFnZVNlc3Npb24+PiYgZ2xvYmFsU2Vzc2lvbk1hcCgpOwogICAgIFNlc3Npb25JRCBt
X3Nlc3Npb25JRDsKIAotI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZORVRXT1JLKQorI2lm
IFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogICAgIFJldGFpblB0cjxD
RlVSTFN0b3JhZ2VTZXNzaW9uUmVmPiBtX3BsYXRmb3JtU2Vzc2lvbjsKICNlbGlmIFVTRShTT1VQ
KQogICAgIHN0ZDo6dW5pcXVlX3B0cjxTb3VwTmV0d29ya1Nlc3Npb24+IG1fc2Vzc2lvbjsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUHJvdGVjdGlvblNwYWNlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Qcm90ZWN0aW9uU3Bh
Y2UuaAkocmV2aXNpb24gMjA3MTM4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9Qcm90ZWN0aW9uU3BhY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsMTIgKzIzLDExIEBACiAg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKICAqLwogCi0jaWZuZGVmIFByb3RlY3Rpb25TcGFjZV9oCi0jZGVmaW5l
IFByb3RlY3Rpb25TcGFjZV9oCisjcHJhZ21hIG9uY2UKIAogI2lmIFBMQVRGT1JNKENPQ09BKQog
I2luY2x1ZGUgIlByb3RlY3Rpb25TcGFjZUNvY29hLmgiCi0jZWxpZiBVU0UoQ0ZORVRXT1JLKQor
I2VsaWYgVVNFKENGVVJMQ09OTkVDVElPTikKICNpbmNsdWRlICJQcm90ZWN0aW9uU3BhY2VDRk5l
dC5oIgogI2Vsc2UKIApAQCAtNTAsNSArNDksMyBAQCBwdWJsaWM6CiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKICNlbmRpZgotCi0jZW5kaWYgLy8gUHJvdGVjdGlvblNwYWNlX2gKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUHJvdGVjdGlvblNwYWNlQmFzZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Qcm90ZWN0aW9uU3Bh
Y2VCYXNlLmNwcAkocmV2aXNpb24gMjA3MTM4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9Qcm90ZWN0aW9uU3BhY2VCYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsMTEg
KzI3LDYgQEAKIAogI2luY2x1ZGUgIlByb3RlY3Rpb25TcGFjZS5oIgogCi0jaWYgVVNFKENGTkVU
V09SSykgJiYgIVBMQVRGT1JNKENPQ09BKQotI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ0YuaCIK
LSNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZVUkxQcm90ZWN0aW9uU3BhY2VQcml2Lmg+Ci0jZW5kaWYK
LQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAvLyBOZWVkIHRvIGVuZm9yY2UgZW1wdHksIG5vbi1u
dWxsIHN0cmluZ3MgZHVlIHRvIHRoZSBwaWNraW5lc3Mgb2YgdGhlIFN0cmluZyA9PSBTdHJpbmcg
b3BlcmF0b3IKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VI
YW5kbGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
UmVzb3VyY2VIYW5kbGUuY3BwCShyZXZpc2lvbiAyMDcxMzgpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU0
LDcgKzE1NCw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmNsZWFyQ2xpZW50KCkKICAgICBkLT5t
X2NsaWVudCA9IG51bGxwdHI7CiB9CiAKLSNpZiAhUExBVEZPUk0oQ09DT0EpICYmICFVU0UoQ0ZO
RVRXT1JLKSAmJiAhVVNFKFNPVVApCisjaWYgIVBMQVRGT1JNKENPQ09BKSAmJiAhVVNFKENGVVJM
Q09OTkVDVElPTikgJiYgIVVTRShTT1VQKQogLy8gUmVzb3VyY2VIYW5kbGUgbmV2ZXIgdXNlcyBh
c3luYyBjbGllbnQgY2FsbHMgb24gdGhlc2UgcGxhdGZvcm1zIHlldC4KIHZvaWQgUmVzb3VyY2VI
YW5kbGU6OmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmKQogewpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUu
aAkocmV2aXNpb24gMjA3MTM4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZUhhbmRsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3IEBACiAjaW5jbHVk
ZSAiUmVzb3VyY2VMb2FkUHJpb3JpdHkuaCIKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgog
Ci0jaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRk5FVFdPUkspCisjaWYgUExBVEZPUk0oQ09D
T0EpIHx8IFVTRShDRlVSTENPTk5FQ1RJT04pCiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgog
I2VuZGlmCiAKQEAgLTYwLDE0ICs2MCwxNCBAQCB0eXBlZGVmIHN0cnVjdCBvYmpjX29iamVjdCAq
aWQ7CiAjZW5kaWYKICNlbmRpZgogCi0jaWYgVVNFKENGTkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxD
T05ORUNUSU9OKQogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgX0NGQ2FjaGVkVVJMUmVzcG9uc2UqIENG
Q2FjaGVkVVJMUmVzcG9uc2VSZWY7CiB0eXBlZGVmIHN0cnVjdCBfQ0ZVUkxDb25uZWN0aW9uKiBD
RlVSTENvbm5lY3Rpb25SZWY7CiB0eXBlZGVmIGludCBDRkhUVFBDb29raWVTdG9yYWdlQWNjZXB0
UG9saWN5OwogdHlwZWRlZiBzdHJ1Y3QgT3BhcXVlQ0ZIVFRQQ29va2llU3RvcmFnZSogQ0ZIVFRQ
Q29va2llU3RvcmFnZVJlZjsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShD
Rk5FVFdPUkspCisjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRlVSTENPTk5FQ1RJT04pCiB0
eXBlZGVmIGNvbnN0IHN0cnVjdCBfX0NGVVJMU3RvcmFnZVNlc3Npb24qIENGVVJMU3RvcmFnZVNl
c3Npb25SZWY7CiAjZW5kaWYKIApAQCAtOTIsMjIgKzkyLDE3IEBAIGNsYXNzIFJlc291cmNlUmVz
cG9uc2U7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBUaW1lcjsKIAotY2xhc3MgUmVzb3Vy
Y2VIYW5kbGUgOiBwdWJsaWMgUmVmQ291bnRlZDxSZXNvdXJjZUhhbmRsZT4KLSNpZiBQTEFURk9S
TShDT0NPQSkgfHwgVVNFKENGTkVUV09SSykgfHwgVVNFKENVUkwpIHx8IFVTRShTT1VQKQotICAg
ICwgcHVibGljIEF1dGhlbnRpY2F0aW9uQ2xpZW50Ci0jZW5kaWYKLSAgICB7CitjbGFzcyBSZXNv
dXJjZUhhbmRsZSA6IHB1YmxpYyBSZWZDb3VudGVkPFJlc291cmNlSGFuZGxlPiwgcHVibGljIEF1
dGhlbnRpY2F0aW9uQ2xpZW50IHsKIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
UmVmUHRyPFJlc291cmNlSGFuZGxlPiBjcmVhdGUoTmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmLCBSZXNvdXJjZUhhbmRsZUNsaWVudCosIGJvb2wgZGVmZXJzTG9hZGlu
ZywgYm9vbCBzaG91bGRDb250ZW50U25pZmYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2
b2lkIGxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoTmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmLCBTdG9yZWRDcmVkZW50aWFscywgUmVzb3VyY2VFcnJvciYsIFJlc291
cmNlUmVzcG9uc2UmLCBWZWN0b3I8Y2hhcj4mIGRhdGEpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQg
dmlydHVhbCB+UmVzb3VyY2VIYW5kbGUoKTsKIAotI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0Uo
Q0ZORVRXT1JLKQorI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZVUkxDT05ORUNUSU9OKQog
ICAgIFJlc291cmNlUmVxdWVzdCB3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYsIFJl
c291cmNlUmVzcG9uc2UmJik7CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0Uo
Q0ZORVRXT1JLKSB8fCBVU0UoQ1VSTCkgfHwgVVNFKFNPVVApCiAgICAgYm9vbCBzaG91bGRVc2VD
cmVkZW50aWFsU3RvcmFnZSgpOwogICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJik7CiAgICAgdm9pZCByZWNlaXZl
ZENyZWRlbnRpYWwoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmLCBjb25zdCBDcmVkZW50
aWFsJikgb3ZlcnJpZGU7CkBAIC0xMTUsOSArMTEwLDggQEAgcHVibGljOgogICAgIHZvaWQgcmVj
ZWl2ZWRDYW5jZWxsYXRpb24oY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKSBvdmVycmlk
ZTsKICAgICB2b2lkIHJlY2VpdmVkUmVxdWVzdFRvUGVyZm9ybURlZmF1bHRIYW5kbGluZyhjb25z
dCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVjZWl2ZWRD
aGFsbGVuZ2VSZWplY3Rpb24oY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKSBvdmVycmlk
ZTsKLSNlbmRpZgogCi0jaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRk5FVFdPUkspCisjaWYg
UExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRlVSTENPTk5FQ1RJT04pCiAgICAgYm9vbCB0cnlIYW5k
bGVQYXNzd29yZEJhc2VkQXV0aGVudGljYXRpb24oY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UmKTsKICNlbmRpZgogCkBAIC0xMjUsNyArMTE5LDcgQEAgcHVibGljOgogICAgIGJvb2wgY2Fu
QXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShjb25zdCBQcm90ZWN0aW9uU3BhY2Um
KTsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oQ09DT0EpICYmICFVU0UoQ0ZORVRXT1JLKQorI2lm
IFBMQVRGT1JNKENPQ09BKQogICAgIFdFQkNPUkVfRVhQT1JUIE5TVVJMQ29ubmVjdGlvbiAqY29u
bmVjdGlvbigpIGNvbnN0OwogICAgIGlkIG1ha2VEZWxlZ2F0ZShib29sKTsKICAgICBpZCBkZWxl
Z2F0ZSgpOwpAQCAtMTMzLDE5ICsxMjcsMTUgQEAgcHVibGljOgogI2VuZGlmCiAgICAgICAgIAog
I2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoV0VCX1RJTUlORykKLSNpZiBVU0UoQ0ZORVRX
T1JLKQotICAgIHN0YXRpYyB2b2lkIGdldENvbm5lY3Rpb25UaW1pbmdEYXRhKENGVVJMQ29ubmVj
dGlvblJlZiwgTmV0d29ya0xvYWRUaW1pbmcmKTsKLSNlbHNlCiAgICAgc3RhdGljIHZvaWQgZ2V0
Q29ubmVjdGlvblRpbWluZ0RhdGEoTlNVUkxDb25uZWN0aW9uICosIE5ldHdvcmtMb2FkVGltaW5n
Jik7CiAjZW5kaWYKLSNlbmRpZgogICAgICAgICAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICB2
b2lkIHNjaGVkdWxlKFdURjo6U2NoZWR1bGVQYWlyJik7CiAgICAgdm9pZCB1bnNjaGVkdWxlKFdU
Rjo6U2NoZWR1bGVQYWlyJik7CiAjZW5kaWYKIAotI2lmIFVTRShDRk5FVFdPUkspCisjaWYgVVNF
KENGVVJMQ09OTkVDVElPTikKICAgICBDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIHN0b3JhZ2VTZXNz
aW9uKCkgY29uc3Q7CiAgICAgQ0ZVUkxDb25uZWN0aW9uUmVmIGNvbm5lY3Rpb24oKSBjb25zdDsK
ICAgICBXRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8Q0ZVUkxDb25uZWN0aW9uUmVmPiByZWxlYXNl
Q29ubmVjdGlvbkZvckRvd25sb2FkKCk7CkBAIC0yMDgsMTAgKzE5OCwxMCBAQCBwdWJsaWM6CiAj
ZW5kaWYKIAogICAgIC8vIENhbGxlZCBpbiByZXNwb25zZSB0byBSZXNvdXJjZUhhbmRsZUNsaWVu
dDo6d2lsbENhY2hlUmVzcG9uc2VBc3luYygpLgotI2lmIFVTRShDRk5FVFdPUkspCisjaWYgVVNF
KENGVVJMQ09OTkVDVElPTikKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvbnRpbnVlV2lsbENh
Y2hlUmVzcG9uc2UoQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZik7CiAjZW5kaWYKLSNpZiBQTEFURk9S
TShDT0NPQSkgJiYgIVVTRShDRk5FVFdPUkspCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBjb250aW51ZVdpbGxDYWNoZVJlc3BvbnNlKE5TQ2FjaGVkVVJMUmVz
cG9uc2UgKik7CiAjZW5kaWYKIApAQCAtMjI3LDE0ICsyMTcsMTAgQEAgcHVibGljOgogICAgIHVz
aW5nIFJlZkNvdW50ZWQ8UmVzb3VyY2VIYW5kbGU+OjpyZWY7CiAgICAgdXNpbmcgUmVmQ291bnRl
ZDxSZXNvdXJjZUhhbmRsZT46OmRlcmVmOwogCi0jaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShD
Rk5FVFdPUkspCisjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRlVSTENPTk5FQ1RJT04pCiAg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIENGU3RyaW5nUmVmIHN5bmNocm9ub3VzTG9hZFJ1bkxv
b3BNb2RlKCk7CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKElPUykgJiYgVVNFKENGTkVUV09SSykK
LSAgICBzdGF0aWMgQ0ZNdXRhYmxlRGljdGlvbmFyeVJlZiBjcmVhdGVTU0xQcm9wZXJ0aWVzRnJv
bU5TVVJMUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKLSNlbmRpZgotCiAgICAgdHlw
ZWRlZiBSZWY8UmVzb3VyY2VIYW5kbGU+ICgqQnVpbHRpbkNvbnN0cnVjdG9yKShjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJlc291cmNlSGFuZGxlQ2xpZW50KiBjbGllbnQpOwogICAg
IHN0YXRpYyB2b2lkIHJlZ2lzdGVyQnVpbHRpbkNvbnN0cnVjdG9yKGNvbnN0IEF0b21pY1N0cmlu
ZyYgcHJvdG9jb2wsIEJ1aWx0aW5Db25zdHJ1Y3Rvcik7CiAKQEAgLTI2MywxOSArMjQ5LDE5IEBA
IHByaXZhdGU6CiAgICAgdm9pZCByZWZBdXRoZW50aWNhdGlvbkNsaWVudCgpIG92ZXJyaWRlIHsg
cmVmKCk7IH0KICAgICB2b2lkIGRlcmVmQXV0aGVudGljYXRpb25DbGllbnQoKSBvdmVycmlkZSB7
IGRlcmVmKCk7IH0KIAotI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZORVRXT1JLKQorI2lm
IFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogICAgIGVudW0gY2xhc3Mg
U2NoZWR1bGluZ0JlaGF2aW9yIHsgQXN5bmNocm9ub3VzLCBTeW5jaHJvbm91cyB9OwogI2VuZGlm
CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAgICAgdm9p
ZCBjcmVhdGVDRlVSTENvbm5lY3Rpb24oYm9vbCBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSwg
Ym9vbCBzaG91bGRDb250ZW50U25pZmYsIFNjaGVkdWxpbmdCZWhhdmlvciwgQ0ZEaWN0aW9uYXJ5
UmVmIGNsaWVudFByb3BlcnRpZXMpOwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShNQUMpICYmICFV
U0UoQ0ZORVRXT1JLKQorI2lmIFBMQVRGT1JNKE1BQykKICAgICB2b2lkIGNyZWF0ZU5TVVJMQ29u
bmVjdGlvbihpZCBkZWxlZ2F0ZSwgYm9vbCBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSwgYm9v
bCBzaG91bGRDb250ZW50U25pZmYsIFNjaGVkdWxpbmdCZWhhdmlvcik7CiAjZW5kaWYKIAotI2lm
IFBMQVRGT1JNKElPUykgJiYgIVVTRShDRk5FVFdPUkspCisjaWYgUExBVEZPUk0oSU9TKQogICAg
IHZvaWQgY3JlYXRlTlNVUkxDb25uZWN0aW9uKGlkIGRlbGVnYXRlLCBib29sIHNob3VsZFVzZUNy
ZWRlbnRpYWxTdG9yYWdlLCBib29sIHNob3VsZENvbnRlbnRTbmlmZiwgU2NoZWR1bGluZ0JlaGF2
aW9yLCBOU0RpY3Rpb25hcnkgKmNvbm5lY3Rpb25Qcm9wZXJ0aWVzKTsKICNlbmRpZgogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
SGFuZGxlQ2xpZW50LmNwcAkocmV2aXNpb24gMjA3MTM4KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTYyLDcgKzYyLDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZUNsaWVudDo6Y2FuQXV0aGVudGljYQog
fQogI2VuZGlmCiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04p
CiB2b2lkIFJlc291cmNlSGFuZGxlQ2xpZW50Ojp3aWxsQ2FjaGVSZXNwb25zZUFzeW5jKFJlc291
cmNlSGFuZGxlKiBoYW5kbGUsIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYgcmVzcG9uc2UpCiB7CiAg
ICAgaGFuZGxlLT5jb250aW51ZVdpbGxDYWNoZVJlc3BvbnNlKHJlc3BvbnNlKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxl
Q2xpZW50LmgJKHJldmlzaW9uIDIwNzEzOCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjksMTIgKzI5
LDEyIEBACiAjaW5jbHVkZSAiUGxhdGZvcm1FeHBvcnRNYWNyb3MuaCIKICNpbmNsdWRlIDx3dGYv
UmVmLmg+CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAj
aW5jbHVkZSA8Q0ZOZXR3b3JrL0NGVVJMQ2FjaGVQcml2Lmg+CiAjaW5jbHVkZSA8Q0ZOZXR3b3Jr
L0NGVVJMUmVzcG9uc2VQcml2Lmg+CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKElPUykgfHwgVVNF
KENGTkVUV09SSykKKyNpZiBQTEFURk9STShJT1MpIHx8IFVTRShDRlVSTENPTk5FQ1RJT04pCiAj
aW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2VuZGlmCiAKQEAgLTk2LDcgKzk2LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgY2Fu
QXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZUFzeW5jKFJlc291cmNlSGFuZGxlKiwg
Y29uc3QgUHJvdGVjdGlvblNwYWNlJik7CiAjZW5kaWYKICAgICAgICAgLy8gQ2xpZW50IHdpbGwg
cGFzcyBhbiB1cGRhdGVkIHJlcXVlc3QgdXNpbmcgUmVzb3VyY2VIYW5kbGU6OmNvbnRpbnVlV2ls
bENhY2hlUmVzcG9uc2UoKSB3aGVuIHJlYWR5LgotI2lmIFVTRShDRk5FVFdPUkspCisjaWYgVVNF
KENGVVJMQ09OTkVDVElPTikKICAgICAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHdp
bGxDYWNoZVJlc3BvbnNlQXN5bmMoUmVzb3VyY2VIYW5kbGUqLCBDRkNhY2hlZFVSTFJlc3BvbnNl
UmVmKTsKICNlbGlmIFBMQVRGT1JNKENPQ09BKQogICAgICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0
dWFsIHZvaWQgd2lsbENhY2hlUmVzcG9uc2VBc3luYyhSZXNvdXJjZUhhbmRsZSosIE5TQ2FjaGVk
VVJMUmVzcG9uc2UgKik7CkBAIC0xMTgsMTYgKzExOCwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAjZW5kaWYKICAgICAgICAgdmlydHVhbCB2b2lkIHJlY2VpdmVkQ2FuY2VsbGF0aW9uKFJlc291
cmNlSGFuZGxlKiwgY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKSB7IH0KIAotI2lmIFBM
QVRGT1JNKElPUykgfHwgVVNFKENGTkVUV09SSykKKyNpZiBQTEFURk9STShJT1MpIHx8IFVTRShD
RlVSTENPTk5FQ1RJT04pCiAgICAgICAgIHZpcnR1YWwgUmV0YWluUHRyPENGRGljdGlvbmFyeVJl
Zj4gY29ubmVjdGlvblByb3BlcnRpZXMoUmVzb3VyY2VIYW5kbGUqKSB7IHJldHVybiBudWxscHRy
OyB9CiAjZW5kaWYKIAotI2lmIFVTRShDRk5FVFdPUkspCisjaWYgVVNFKENGVVJMQ09OTkVDVElP
TikKICAgICAgICAgdmlydHVhbCBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmIHdpbGxDYWNoZVJlc3Bv
bnNlKFJlc291cmNlSGFuZGxlKiwgQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZiByZXNwb25zZSkgeyBy
ZXR1cm4gcmVzcG9uc2U7IH0KLSNpZiBQTEFURk9STShXSU4pCiAgICAgICAgIHZpcnR1YWwgYm9v
bCBzaG91bGRDYWNoZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlKiwgQ0ZDYWNoZWRVUkxSZXNwb25z
ZVJlZikgeyByZXR1cm4gdHJ1ZTsgfQotI2VuZGlmIC8vIFBMQVRGT1JNKFdJTikKLQogI2VsaWYg
UExBVEZPUk0oQ09DT0EpCiAgICAgICAgIHZpcnR1YWwgTlNDYWNoZWRVUkxSZXNwb25zZSAqd2ls
bENhY2hlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqLCBOU0NhY2hlZFVSTFJlc3BvbnNlICpyZXNw
b25zZSkgeyByZXR1cm4gcmVzcG9uc2U7IH0KICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmgJ
KHJldmlzaW9uIDIwNzEzOCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVz
b3VyY2VIYW5kbGVJbnRlcm5hbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBACiAj
aW5jbHVkZSAiQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCIKICNpbmNsdWRlICJUaW1lci5oIgog
Ci0jaWYgVVNFKENGTkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogI2luY2x1ZGUg
IlJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuaCIKICNpbmNsdWRlIDxDRk5l
dHdvcmsvQ0ZVUkxDb25uZWN0aW9uUHJpdi5oPgogI2VuZGlmCkBAIC02MSw3ICs2MSw3IEBAIE9C
SkNfQ0xBU1MgTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTsKIE9CSkNfQ0xBU1MgTlNVUkxD
b25uZWN0aW9uOwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKENGTkVUV09S
SykKKyNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKENGVVJMQ09OTkVDVElPTikKIHR5cGVkZWYg
Y29uc3Qgc3RydWN0IF9fQ0ZVUkxTdG9yYWdlU2Vzc2lvbiogQ0ZVUkxTdG9yYWdlU2Vzc2lvblJl
ZjsKICNlbmRpZgogCkBAIC04Myw3ICs4Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgICAgICwgbV9kZWZlcnNMb2FkaW5nKGRlZmVyc0xvYWRpbmcpCiAgICAgICAgICAgICAsIG1f
c2hvdWxkQ29udGVudFNuaWZmKHNob3VsZENvbnRlbnRTbmlmZikKICAgICAgICAgICAgICwgbV91
c2VzQXN5bmNDYWxsYmFja3MoY2xpZW50ICYmIGNsaWVudC0+dXNlc0FzeW5jQ2FsbGJhY2tzKCkp
Ci0jaWYgVVNFKENGTkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogICAgICAgICAg
ICAgLCBtX2N1cnJlbnRSZXF1ZXN0KHJlcXVlc3QpCiAjZW5kaWYKICNpZiBVU0UoQ1VSTCkKQEAg
LTEzMSwxOSArMTMxLDE5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9vbCBtX2Rl
ZmVyc0xvYWRpbmc7CiAgICAgICAgIGJvb2wgbV9zaG91bGRDb250ZW50U25pZmY7CiAgICAgICAg
IGJvb2wgbV91c2VzQXN5bmNDYWxsYmFja3M7Ci0jaWYgVVNFKENGTkVUV09SSykKKyNpZiBVU0Uo
Q0ZVUkxDT05ORUNUSU9OKQogICAgICAgICBSZXRhaW5QdHI8Q0ZVUkxDb25uZWN0aW9uUmVmPiBt
X2Nvbm5lY3Rpb247CiAgICAgICAgIFJlc291cmNlUmVxdWVzdCBtX2N1cnJlbnRSZXF1ZXN0Owog
ICAgICAgICBSZWZQdHI8UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZT4gbV9j
b25uZWN0aW9uRGVsZWdhdGU7CiAjZW5kaWYKLSNpZiBQTEFURk9STShDT0NPQSkgJiYgIVVTRShD
Rk5FVFdPUkspCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgICAgIFJldGFpblB0cjxOU1VSTENv
bm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKICAgICAgICAgUmV0YWluUHRyPGlkPiBtX2RlbGVnYXRl
OwogI2VuZGlmCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgICAgIGJvb2wgbV9zdGFydFdoZW5T
Y2hlZHVsZWQ7CiAjZW5kaWYKLSNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKENGTkVUV09SSykK
KyNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKENGVVJMQ09OTkVDVElPTikKICAgICAgICAgUmV0
YWluUHRyPENGVVJMU3RvcmFnZVNlc3Npb25SZWY+IG1fc3RvcmFnZVNlc3Npb247CiAjZW5kaWYK
ICNpZiBVU0UoQ1VSTCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVz
b3VyY2VSZXF1ZXN0QmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcAkocmV2aXNpb24gMjA3MTM4KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LSNpZiAhVVNFKFNPVVApICYmICghUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRk5FVFdPUkspKQor
I2lmICFVU0UoU09VUCkgJiYgIVBMQVRGT1JNKENPQ09BKQogZG91YmxlIFJlc291cmNlUmVxdWVz
dEJhc2U6OnNfZGVmYXVsdFRpbWVvdXRJbnRlcnZhbCA9IElOVF9NQVg7CiAjZWxzZQogLy8gV2ls
bCB1c2UgTlNVUkxSZXF1ZXN0IGRlZmF1bHQgdGltZW91dCB1bmxlc3Mgc2V0IHRvIGEgbm9uLXpl
cm8gdmFsdWUgd2l0aCBzZXREZWZhdWx0VGltZW91dEludGVydmFsKCkuCkBAIC02MTgsNyArNjE4
LDcgQEAgdm9pZCBSZXNvdXJjZVJlcXVlc3RCYXNlOjp1cGRhdGVSZXNvdXJjZQogICAgIH0KIH0K
IAotI2lmICFQTEFURk9STShDT0NPQSkgJiYgIVVTRShDRk5FVFdPUkspICYmICFVU0UoU09VUCkK
KyNpZiAhUExBVEZPUk0oQ09DT0EpICYmICFVU0UoQ0ZVUkxDT05ORUNUSU9OKSAmJiAhVVNFKFNP
VVApCiB1bnNpZ25lZCBpbml0aWFsaXplTWF4aW11bUhUVFBDb25uZWN0aW9uQ291bnRQZXJIb3N0
KCkKIHsKICAgICAvLyBUaGlzIGlzIHVzZWQgYnkgdGhlIGxvYWRlciB0byBjb250cm9sIHRoZSBu
dW1iZXIgb2YgaXNzdWVkIHBhcmFsbGVsIGxvYWQgcmVxdWVzdHMuIApJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9BdXRoZW50aWNhdGlvbkNGLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0F1dGhlbnRpY2F0aW9uQ0Yu
Y3BwCShyZXZpc2lvbiAyMDcxMzgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NmL0F1dGhlbnRpY2F0aW9uQ0YuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25DRi5oIgogCi0j
aWYgVVNFKENGTkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogCiAjaW5jbHVkZSAi
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCIKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNsaWVu
dC5oIgpAQCAtNTEsMTggKzUxLDggQEAgQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6OkF1dGhlbnRp
Y2F0aW9uQwogewogfQogCi1BdXRoZW50aWNhdGlvbkNoYWxsZW5nZTo6QXV0aGVudGljYXRpb25D
aGFsbGVuZ2UoQ0ZVUkxBdXRoQ2hhbGxlbmdlUmVmIGNmQ2hhbGxlbmdlLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEF1dGhlbnRpY2F0aW9uQ2xpZW50
KiBhdXRoZW50aWNhdGlvbkNsaWVudCkKLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICA6IEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlQmFzZShQcm90ZWN0aW9uU3BhY2UoQ0ZVUkxBdXRoQ2hhbGxlbmdl
R2V0UHJvdGVjdGlvblNwYWNlKGNmQ2hhbGxlbmdlKSksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQ3JlZGVudGlhbChDRlVSTEF1dGhDaGFsbGVuZ2VHZXRQcm9wb3NlZENyZWRl
bnRpYWwoY2ZDaGFsbGVuZ2UpKSwKLSNlbHNlCi0gICAgOiBBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZUJhc2UoY29yZShDRlVSTEF1dGhDaGFsbGVuZ2VHZXRQcm90ZWN0aW9uU3BhY2UoY2ZDaGFsbGVu
Z2UpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3JlKENGVVJMQXV0aENo
YWxsZW5nZUdldFByb3Bvc2VkQ3JlZGVudGlhbChjZkNoYWxsZW5nZSkpLAotI2VuZGlmCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0ZVUkxBdXRoQ2hhbGxlbmdlR2V0UHJldmlv
dXNGYWlsdXJlQ291bnQoY2ZDaGFsbGVuZ2UpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIChDRlVSTFJlc3BvbnNlUmVmKUNGVVJMQXV0aENoYWxsZW5nZUdldEZhaWx1cmVSZXNw
b25zZShjZkNoYWxsZW5nZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0ZV
UkxBdXRoQ2hhbGxlbmdlR2V0RXJyb3IoY2ZDaGFsbGVuZ2UpKQorQXV0aGVudGljYXRpb25DaGFs
bGVuZ2U6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKENGVVJMQXV0aENoYWxsZW5nZVJlZiBjZkNo
YWxsZW5nZSwgQXV0aGVudGljYXRpb25DbGllbnQqIGF1dGhlbnRpY2F0aW9uQ2xpZW50KQorICAg
IDogQXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlKGNvcmUoQ0ZVUkxBdXRoQ2hhbGxlbmdlR2V0
UHJvdGVjdGlvblNwYWNlKGNmQ2hhbGxlbmdlKSksIGNvcmUoQ0ZVUkxBdXRoQ2hhbGxlbmdlR2V0
UHJvcG9zZWRDcmVkZW50aWFsKGNmQ2hhbGxlbmdlKSksIENGVVJMQXV0aENoYWxsZW5nZUdldFBy
ZXZpb3VzRmFpbHVyZUNvdW50KGNmQ2hhbGxlbmdlKSwgKENGVVJMUmVzcG9uc2VSZWYpQ0ZVUkxB
dXRoQ2hhbGxlbmdlR2V0RmFpbHVyZVJlc3BvbnNlKGNmQ2hhbGxlbmdlKSwgQ0ZVUkxBdXRoQ2hh
bGxlbmdlR2V0RXJyb3IoY2ZDaGFsbGVuZ2UpKQogICAgICwgbV9hdXRoZW50aWNhdGlvbkNsaWVu
dChhdXRoZW50aWNhdGlvbkNsaWVudCkKICAgICAsIG1fY2ZDaGFsbGVuZ2UoY2ZDaGFsbGVuZ2Up
CiB7CkBAIC05MywyMiArODMsMTIgQEAgQ0ZVUkxBdXRoQ2hhbGxlbmdlUmVmIGNyZWF0ZUNGKGNv
bnN0IEF1dAogewogICAgIC8vIEZJWE1FOiBXaHkgbm90IGNhY2hlIENGVVJMQXV0aENoYWxsZW5n
ZVJlZiBpbiBtX2NmQ2hhbGxlbmdlPyBGb3VuZGF0aW9uIGNvdW50ZXJwYXJ0IGRvZXMgdGhhdC4K
IAotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIENGVVJMQXV0aENoYWxsZW5nZVJlZiByZXN1bHQg
PSBDRlVSTEF1dGhDaGFsbGVuZ2VDcmVhdGUoMCwgY29yZUNoYWxsZW5nZS5wcm90ZWN0aW9uU3Bh
Y2UoKS5jZlNwYWNlKCksIGNvcmVDaGFsbGVuZ2UucHJvcG9zZWRDcmVkZW50aWFsKCkuY2ZDcmVk
ZW50aWFsKCksCi0jZWxzZQogICAgIFJldGFpblB0cjxDRlVSTENyZWRlbnRpYWxSZWY+IGNyZWRl
bnRpYWwgPSBhZG9wdENGKGNyZWF0ZUNGKGNvcmVDaGFsbGVuZ2UucHJvcG9zZWRDcmVkZW50aWFs
KCkpKTsKICAgICBSZXRhaW5QdHI8Q0ZVUkxQcm90ZWN0aW9uU3BhY2VSZWY+IHByb3RlY3Rpb25T
cGFjZSA9IGFkb3B0Q0YoY3JlYXRlQ0YoY29yZUNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UoKSkp
OwogCi0gICAgQ0ZVUkxBdXRoQ2hhbGxlbmdlUmVmIHJlc3VsdCA9IENGVVJMQXV0aENoYWxsZW5n
ZUNyZWF0ZSgwLCBwcm90ZWN0aW9uU3BhY2UuZ2V0KCksIGNyZWRlbnRpYWwuZ2V0KCksCi0jZW5k
aWYKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3JlQ2hhbGxlbmdl
LnByZXZpb3VzRmFpbHVyZUNvdW50KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29yZUNoYWxsZW5nZS5mYWlsdXJlUmVzcG9uc2UoKS5jZlVSTFJlc3BvbnNlKCks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29yZUNoYWxsZW5nZS5l
cnJvcigpKTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBDRlVSTEF1dGhDaGFsbGVu
Z2VDcmVhdGUoMCwgcHJvdGVjdGlvblNwYWNlLmdldCgpLCBjcmVkZW50aWFsLmdldCgpLCBjb3Jl
Q2hhbGxlbmdlLnByZXZpb3VzRmFpbHVyZUNvdW50KCksIGNvcmVDaGFsbGVuZ2UuZmFpbHVyZVJl
c3BvbnNlKCkuY2ZVUkxSZXNwb25zZSgpLCBjb3JlQ2hhbGxlbmdlLmVycm9yKCkpOwogfQogCi0j
aWYgUExBVEZPUk0oV0lOKQotCiBDRlVSTENyZWRlbnRpYWxSZWYgY3JlYXRlQ0YoY29uc3QgQ3Jl
ZGVudGlhbCYgY29yZUNyZWRlbnRpYWwpCiB7CiAgICAgQ0ZVUkxDcmVkZW50aWFsUGVyc2lzdGVu
Y2UgcGVyc2lzdGVuY2UgPSBrQ0ZVUkxDcmVkZW50aWFsUGVyc2lzdGVuY2VOb25lOwpAQCAtMjkw
LDggKzI3MCw3IEBAIFByb3RlY3Rpb25TcGFjZSBjb3JlKENGVVJMUHJvdGVjdGlvblNwYWMKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIENGVVJMUHJvdGVjdGlvblNwYWNlR2V0UmVhbG0oY2ZT
cGFjZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY2hlbWUpOwogfQotI2VuZGlmIC8v
IFBMQVRGT1JNKFdJTikKIAogfTsKIAotI2VuZGlmIC8vIFVTRShDRk5FVFdPUkspCisjZW5kaWYg
Ly8gVVNFKENGVVJMQ09OTkVDVElPTikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY2YvQXV0aGVudGljYXRpb25DRi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY2YvQXV0aGVudGljYXRpb25DRi5oCShyZXZpc2lvbiAyMDcxMzgp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0F1dGhlbnRpY2F0aW9uQ0Yu
aAkod29ya2luZyBjb3B5KQpAQCAtMjMsMTAgKzIzLDkgQEAKICAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICov
CiAKLSNpZm5kZWYgQXV0aGVudGljYXRpb25DRl9oCi0jZGVmaW5lIEF1dGhlbnRpY2F0aW9uQ0Zf
aAorI3ByYWdtYSBvbmNlCiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQorI2lmIFVTRShDRlVSTENPTk5F
Q1RJT04pCiAKICNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZVUkxDcmVkZW50aWFsUHJpdi5oPgogCkBA
IC00MCwyMCArMzksMTAgQEAgY2xhc3MgQ3JlZGVudGlhbDsKIGNsYXNzIFByb3RlY3Rpb25TcGFj
ZTsKIAogQ0ZVUkxBdXRoQ2hhbGxlbmdlUmVmIGNyZWF0ZUNGKGNvbnN0IEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlJik7Ci0jaWYgUExBVEZPUk0oV0lOKQogQ0ZVUkxDcmVkZW50aWFsUmVmIGNyZWF0
ZUNGKGNvbnN0IENyZWRlbnRpYWwmKTsKIENGVVJMUHJvdGVjdGlvblNwYWNlUmVmIGNyZWF0ZUNG
KGNvbnN0IFByb3RlY3Rpb25TcGFjZSYpOwotI2VuZGlmCi0KLSNpZiBQTEFURk9STShDT0NPQSkK
LUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIGNvcmUoQ0ZVUkxBdXRoQ2hhbGxlbmdlUmVmKTsKLSNl
bmRpZgotI2lmIFBMQVRGT1JNKFdJTikKIENyZWRlbnRpYWwgY29yZShDRlVSTENyZWRlbnRpYWxS
ZWYpOwogUHJvdGVjdGlvblNwYWNlIGNvcmUoQ0ZVUkxQcm90ZWN0aW9uU3BhY2VSZWYpOwotI2Vu
ZGlmCiB9CiAKLSNlbmRpZiAvLyBVU0UoQ0ZORVRXT1JLKQotCi0jZW5kaWYgLy8gQXV0aGVudGlj
YXRpb25DRl9oCisjZW5kaWYgLy8gVVNFKENGVVJMQ09OTkVDVElPTikKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0F1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlLmgJKHJldmlzaW9uIDIwNzEzOCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2YvQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaAkod29ya2luZyBjb3B5KQpA
QCAtMjMsMTQgKzIzLDEzIEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCi0jaWZuZGVmIEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlX2gKLSNkZWZpbmUgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VfaAor
I3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2UuaCIK
ICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNsaWVudC5oIgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIu
aD4KIAotI2lmIFVTRShDRk5FVFdPUkspCisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKIAogdHlw
ZWRlZiBzdHJ1Y3QgX0NGVVJMQXV0aENoYWxsZW5nZSogQ0ZVUkxBdXRoQ2hhbGxlbmdlUmVmOwog
CkBAIC01MCw3ICs0OSw3IEBAIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIDogcHVibGlj
IEEKIHB1YmxpYzoKICAgICBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgpIHt9CiAgICAgV0VCQ09S
RV9FWFBPUlQgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY29uc3QgUHJvdGVjdGlvblNwYWNlJiwg
Y29uc3QgQ3JlZGVudGlhbCYgcHJvcG9zZWRDcmVkZW50aWFsLCB1bnNpZ25lZCBwcmV2aW91c0Zh
aWx1cmVDb3VudCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFJlc291cmNlRXJyb3Im
KTsKLSNpZiBVU0UoQ0ZORVRXT1JLKQorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAgICAgQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UoQ0ZVUkxBdXRoQ2hhbGxlbmdlUmVmLCBBdXRoZW50aWNhdGlv
bkNsaWVudCopOwogCiAgICAgQ0ZVUkxBdXRoQ2hhbGxlbmdlUmVmIGNmVVJMQXV0aENoYWxsZW5n
ZVJlZigpIGNvbnN0IHsgcmV0dXJuIG1fY2ZDaGFsbGVuZ2UuZ2V0KCk7IH0KQEAgLTY5LDcgKzY4
LDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgYm9vbCBwbGF0Zm9ybUNvbXBhcmUoY29uc3QgQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UmIGEsIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBi
KTsKIAogICAgIC8vIFBsYXRmb3JtIGNoYWxsZW5nZSBtYXkgYmUgbnVsbC4gSWYgaXQncyBub24t
bnVsbCwgaXQncyBhbHdheXMgdXAgdG8gZGF0ZSB3aXRoIG90aGVyIGZpZWxkcy4KLSNpZiBVU0Uo
Q0ZORVRXT1JLKQorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAgICAgUmVmUHRyPEF1dGhlbnRp
Y2F0aW9uQ2xpZW50PiBtX2F1dGhlbnRpY2F0aW9uQ2xpZW50OwogICAgIFJldGFpblB0cjxDRlVS
TEF1dGhDaGFsbGVuZ2VSZWY+IG1fY2ZDaGFsbGVuZ2U7CiAjZWxzZQpAQCAtNzksNSArNzgsMyBA
QCBwcml2YXRlOgogfTsKIAogfQotCi0jZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2YvQ29va2llSmFyQ0ZOZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQ29va2llSmFyQ0ZOZXQuY3BwCShyZXZpc2lvbiAy
MDcxMzgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZUphckNG
TmV0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIlBsYXRmb3JtQ29va2llSmFyLmgiCiAKLSNpZiBVU0UoQ0ZORVRXT1JL
KQorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAKICNpbmNsdWRlICJDRk5ldHdvcmtTUEkuaCIK
ICNpbmNsdWRlICJDb29raWUuaCIKQEAgLTI1NSw0ICsyNTUsNCBAQCB2b2lkIGRlbGV0ZUFsbENv
b2tpZXNNb2RpZmllZFNpbmNlKGNvbnN0CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2Vu
ZGlmIC8vIFVTRShDRk5FVFdPUkspCisjZW5kaWYgLy8gVVNFKENGVVJMQ09OTkVDVElPTikKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQ3JlZGVudGlhbFN0b3JhZ2VD
Rk5ldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
Zi9DcmVkZW50aWFsU3RvcmFnZUNGTmV0LmNwcAkocmV2aXNpb24gMjA3MTM4KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9DcmVkZW50aWFsU3RvcmFnZUNGTmV0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjYsMjMgKzI2LDE0IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAiQ3JlZGVudGlhbFN0b3JhZ2UuaCIKIAotI2lmIFVTRShDRk5FVFdPUkspCisjaWYg
VVNFKENGVVJMQ09OTkVDVElPTikKIAogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ0YuaCIKICNp
bmNsdWRlICJDRk5ldHdvcmtTUEkuaCIKICNpbmNsdWRlICJDcmVkZW50aWFsLmgiCiAjaW5jbHVk
ZSAiUHJvdGVjdGlvblNwYWNlLmgiCi0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotCi0jaWYg
UExBVEZPUk0oQ09DT0EpCi0jaW5jbHVkZSAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgotI2Vs
aWYgUExBVEZPUk0oV0lOKQogI2luY2x1ZGUgPFdlYktpdFN5c3RlbUludGVyZmFjZS9XZWJLaXRT
eXN0ZW1JbnRlcmZhY2UuaD4KLSNlbmRpZgotCi0jaWYgUExBVEZPUk0oSU9TKQotI2luY2x1ZGUg
PENGTmV0d29yay9DRlVSTENyZWRlbnRpYWxTdG9yYWdlLmg+Ci0jZW5kaWYKKyNpbmNsdWRlIDx3
dGYvUmV0YWluUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKQEAgLTU0LDI5ICs0
NSwxMSBAQCBzdGF0aWMgaW5saW5lIENGVVJMQ3JlZGVudGlhbFJlZiBjb3B5Q3JlCiAKIENyZWRl
bnRpYWwgQ3JlZGVudGlhbFN0b3JhZ2U6OmdldEZyb21QZXJzaXN0ZW50U3RvcmFnZShjb25zdCBQ
cm90ZWN0aW9uU3BhY2UmIHByb3RlY3Rpb25TcGFjZSkKIHsKLSNpZiBQTEFURk9STShDT0NPQSkK
LSAgICBhdXRvIGNyZWRlbnRpYWxDRiA9IGFkb3B0Q0YoY29weUNyZWRlbnRpYWxGcm9tUHJvdGVj
dGlvblNwYWNlKHByb3RlY3Rpb25TcGFjZS5jZlNwYWNlKCkpKTsKLSAgICByZXR1cm4gQ3JlZGVu
dGlhbChjcmVkZW50aWFsQ0YuZ2V0KCkpOwotI2Vsc2UKICAgICBhdXRvIHByb3RlY3Rpb25TcGFj
ZUNGID0gYWRvcHRDRihjcmVhdGVDRihwcm90ZWN0aW9uU3BhY2UpKTsKICAgICBhdXRvIGNyZWRl
bnRpYWxDRiA9IGFkb3B0Q0YoY29weUNyZWRlbnRpYWxGcm9tUHJvdGVjdGlvblNwYWNlKHByb3Rl
Y3Rpb25TcGFjZUNGLmdldCgpKSk7CiAgICAgcmV0dXJuIGNvcmUoY3JlZGVudGlhbENGLmdldCgp
KTsKLSNlbmRpZgotfQotCi0jaWYgUExBVEZPUk0oSU9TKQotdm9pZCBDcmVkZW50aWFsU3RvcmFn
ZTo6c2F2ZVRvUGVyc2lzdGVudFN0b3JhZ2UoY29uc3QgUHJvdGVjdGlvblNwYWNlJiBwcm90ZWN0
aW9uU3BhY2UsIGNvbnN0IENyZWRlbnRpYWwmIGNyZWRlbnRpYWwpCi17Ci0gICAgUmV0YWluUHRy
PENGVVJMQ3JlZGVudGlhbFN0b3JhZ2VSZWY+IHN0b3JhZ2VDRiA9IGFkb3B0Q0YoQ0ZVUkxDcmVk
ZW50aWFsU3RvcmFnZUNyZWF0ZSgwKSk7Ci0KLSAgICBpZiAoY3JlZGVudGlhbC5wZXJzaXN0ZW5j
ZSgpID09IENyZWRlbnRpYWxQZXJzaXN0ZW5jZU5vbmUpIHsKLSAgICAgICAgQ3JlZGVudGlhbCBz
ZXNzaW9uQ3JlZGVudGlhbChjcmVkZW50aWFsLCBDcmVkZW50aWFsUGVyc2lzdGVuY2VGb3JTZXNz
aW9uKTsKLSAgICAgICAgQ0ZVUkxDcmVkZW50aWFsU3RvcmFnZVNldERlZmF1bHRDcmVkZW50aWFs
Rm9yUHJvdGVjdGlvblNwYWNlKHN0b3JhZ2VDRi5nZXQoKSwgc2Vzc2lvbkNyZWRlbnRpYWwuY2ZD
cmVkZW50aWFsKCksIHByb3RlY3Rpb25TcGFjZS5jZlNwYWNlKCkpOwotICAgIH0gZWxzZQotICAg
ICAgICBDRlVSTENyZWRlbnRpYWxTdG9yYWdlU2V0RGVmYXVsdENyZWRlbnRpYWxGb3JQcm90ZWN0
aW9uU3BhY2Uoc3RvcmFnZUNGLmdldCgpLCBjcmVkZW50aWFsLmNmQ3JlZGVudGlhbCgpLCBwcm90
ZWN0aW9uU3BhY2UuY2ZTcGFjZSgpKTsKIH0KLSNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKLSNlbmRpZiAvLyBVU0UoQ0ZORVRXT1JLKQorI2VuZGlmIC8vIFVTRShDRlVSTENPTk5F
Q1RJT04pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0xvYWRlclJ1
bkxvb3BDRi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jZi9Mb2FkZXJSdW5Mb29wQ0YuY3BwCShyZXZpc2lvbiAyMDcxMzgpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0xvYWRlclJ1bkxvb3BDRi5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJMb2Fk
ZXJSdW5Mb29wQ0YuaCIKIAotI2lmIFVTRShDRk5FVFdPUkspCisjaWYgVVNFKENGVVJMQ09OTkVD
VElPTikKIAogI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NvcmVGb3VuZGF0aW9uLmg+CiAjaW5j
bHVkZSA8bGltaXRzPgpAQCAtODcsNCArODcsNCBAQCBDRlJ1bkxvb3BSZWYgbG9hZGVyUnVuTG9v
cCgpCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vIFVTRShDRk5FVFdPUksp
CisjZW5kaWYgLy8gVVNFKENGVVJMQ09OTkVDVElPTikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY2YvTG9hZGVyUnVuTG9vcENGLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Mb2FkZXJSdW5Mb29wQ0YuaAkocmV2aXNpb24g
MjA3MTM4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Mb2FkZXJSdW5M
b29wQ0YuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsMTAgKzIzLDkgQEAKICAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIExvYWRlclJ1bkxvb3BDRl9oCi0j
ZGVmaW5lIExvYWRlclJ1bkxvb3BDRl9oCisjcHJhZ21hIG9uY2UKIAotI2lmIFVTRShDRk5FVFdP
UkspCisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKIAogdHlwZWRlZiBzdHJ1Y3QgX19DRlJ1bkxv
b3AqIENGUnVuTG9vcFJlZjsKIApAQCAtMzYsNiArMzUsNCBAQCBDRlJ1bkxvb3BSZWYgbG9hZGVy
UnVuTG9vcCgpOwogCiB9CiAKLSNlbmRpZiAvLyBVU0UoQ0ZORVRXT1JLKQotCi0jZW5kaWYgLy8g
TG9hZGVyUnVuTG9vcF9oCisjZW5kaWYgLy8gVVNFKENGVVJMQ09OTkVDVElPTikKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZO
ZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2Yv
TmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXQuY3BwCShyZXZpc2lvbiAyMDcxMzgpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsOCBAQAogI2luY2x1ZGUgPFdlYktpdFN5
c3RlbUludGVyZmFjZS9XZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaD4KICNlbmRpZgogCisvLyBGSVhN
RTogVGhpcyBmaWxlIGlzIG1vc3RseSBDb2NvYSBjb2RlLCBub3QgQ0ZOZXQgY29kZS4KKwogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgYm9vbCBjb29raWVTdG9yYWdlUGFydGl0aW9uaW5n
RW5hYmxlZDsKQEAgLTkzLDExICs5NSwxMSBAQCBSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFn
ZVJlZj4gTmV0d29yCiAgICAgaWYgKG1fcGxhdGZvcm1TZXNzaW9uKQogICAgICAgICByZXR1cm4g
YWRvcHRDRihfQ0ZVUkxTdG9yYWdlU2Vzc2lvbkNvcHlDb29raWVTdG9yYWdlKGtDRkFsbG9jYXRv
ckRlZmF1bHQsIG1fcGxhdGZvcm1TZXNzaW9uLmdldCgpKSk7CiAKLSNpZiBVU0UoQ0ZORVRXT1JL
KQorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAgICAgcmV0dXJuIF9DRkhUVFBDb29raWVTdG9y
YWdlR2V0RGVmYXVsdChrQ0ZBbGxvY2F0b3JEZWZhdWx0KTsKICNlbHNlCiAgICAgLy8gV2hlbiB1
c2luZyBOU1VSTENvbm5lY3Rpb24sIHdlIGFsc28gdXNlIGl0cyBzaGFyZWQgY29va2llIHN0b3Jh
Z2UuCi0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG51bGxwdHI7CiAjZW5kaWYKIH0KIApJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Qcm90ZWN0aW9uU3BhY2VDRk5l
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Q
cm90ZWN0aW9uU3BhY2VDRk5ldC5jcHAJKHJldmlzaW9uIDIwNzEzOCkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUHJvdGVjdGlvblNwYWNlQ0ZOZXQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
UHJvdGVjdGlvblNwYWNlQ0ZOZXQuaCIKIAotI2lmIFVTRShDRk5FVFdPUkspCisjaWYgVVNFKENG
VVJMQ09OTkVDVElPTikKIAogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ0YuaCIKICNpbmNsdWRl
IDxDRk5ldHdvcmsvQ0ZVUkxQcm90ZWN0aW9uU3BhY2VQcml2Lmg+CkBAIC00Miw0ICs0Miw0IEBA
IGJvb2wgUHJvdGVjdGlvblNwYWNlOjpyZWNlaXZlc0NyZWRlbnRpYWwKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCi0jZW5kaWYgLy8gVVNFKENGTkVUV09SSykKKyNlbmRpZiAvLyBVU0UoQ0ZV
UkxDT05ORUNUSU9OKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Q
cm90ZWN0aW9uU3BhY2VDRk5ldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2YvUHJvdGVjdGlvblNwYWNlQ0ZOZXQuaAkocmV2aXNpb24gMjA3MTM4KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Qcm90ZWN0aW9uU3BhY2VDRk5l
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMywxMSArMjMsMTAgQEAKICAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAog
ICovCiAKLSNpZm5kZWYgUHJvdGVjdGlvblNwYWNlQ0ZOZXRfaAotI2RlZmluZSBQcm90ZWN0aW9u
U3BhY2VDRk5ldF9oCisjcHJhZ21hIG9uY2UKIAotI2lmICFQTEFURk9STShXSU4pIHx8ICFVU0Uo
Q0ZORVRXT1JLKQotI2Vycm9yIFRoaXMgaGVhZGVyIHNob3VsZCBvbmx5IGJlIGluY2x1ZGVkIHdo
ZW4gdGFyZ2V0aW5nIFdpbmRvd3MgYW5kIHVzaW5nIENGTmV0d29yay4KKyNpZiAhUExBVEZPUk0o
V0lOKSB8fCAhVVNFKENGVVJMQ09OTkVDVElPTikKKyNlcnJvciBUaGlzIGhlYWRlciBzaG91bGQg
b25seSBiZSBpbmNsdWRlZCB3aGVuIHRhcmdldGluZyBXaW5kb3dzIGFuZCB1c2luZyBDRlVSTENv
bm5lY3Rpb24uCiAjZW5kaWYKIAogI2luY2x1ZGUgIlByb3RlY3Rpb25TcGFjZUJhc2UuaCIKQEAg
LTQ4LDUgKzQ3LDMgQEAgcHVibGljOgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0j
ZW5kaWYgLy8gUHJvdGVjdGlvblNwYWNlQ0ZOZXRfaApJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yLmgJKHJldmlzaW9uIDIwNzEz
OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VFcnJvci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yOCwxMCArMjgsMTEgQEAKICNpbmNsdWRlICJSZXNvdXJjZUVy
cm9yQmFzZS5oIgogCiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotI2lmIFVTRShDRk5FVFdP
UkspCisKKyNpZiBQTEFURk9STShXSU4pCisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKICNpbmNs
dWRlIDxDb3JlRm91bmRhdGlvbi9DRlN0cmVhbS5oPgogI2VuZGlmCi0jaWYgUExBVEZPUk0oV0lO
KQogI2luY2x1ZGUgPHdpbmRvd3MuaD4KICNpbmNsdWRlIDx3aW5jcnlwdC5oPiAvLyB3aW5kb3dz
LmggbXVzdCBiZSBpbmNsdWRlZCBiZWZvcmUgd2luY3J5cHQuaC4KICNlbmRpZgpAQCAtNjEsMTIg
KzYyLDEwIEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBDRkVycm9yUmVmIGNmRXJyb3Io
KSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBvcGVyYXRvciBDRkVycm9yUmVmKCkgY29uc3Q7
CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotI2lmIFBMQVRGT1JNKFdJTikKKyNpZiBVU0UoQ0ZVUkxD
T05ORUNUSU9OKQogICAgIFJlc291cmNlRXJyb3IoY29uc3QgU3RyaW5nJiBkb21haW4sIGludCBl
cnJvckNvZGUsIGNvbnN0IFVSTCYgZmFpbGluZ1VSTCwgY29uc3QgU3RyaW5nJiBsb2NhbGl6ZWRE
ZXNjcmlwdGlvbiwgQ0ZEYXRhUmVmIGNlcnRpZmljYXRlKTsKICAgICBQQ0NFUlRfQ09OVEVYVCBj
ZXJ0aWZpY2F0ZSgpIGNvbnN0OwogICAgIHZvaWQgc2V0Q2VydGlmaWNhdGUoQ0ZEYXRhUmVmKTsK
LSNlbmRpZgogICAgIFJlc291cmNlRXJyb3IoQ0ZTdHJlYW1FcnJvciBlcnJvcik7CiAgICAgQ0ZT
dHJlYW1FcnJvciBjZlN0cmVhbUVycm9yKCkgY29uc3Q7CiAgICAgb3BlcmF0b3IgQ0ZTdHJlYW1F
cnJvcigpIGNvbnN0OwpAQCAtODgsMTQgKzg3LDEzIEBAIHByaXZhdGU6CiAgICAgdm9pZCBkb1Bs
YXRmb3JtSXNvbGF0ZWRDb3B5KGNvbnN0IFJlc291cmNlRXJyb3ImKTsKIAogICAgIGJvb2wgbV9k
YXRhSXNVcFRvRGF0ZTsKLSNpZiBVU0UoQ0ZORVRXT1JLKQorI2lmIFVTRShDRlVSTENPTk5FQ1RJ
T04pCiAgICAgbXV0YWJsZSBSZXRhaW5QdHI8Q0ZFcnJvclJlZj4gbV9wbGF0Zm9ybUVycm9yOwot
I2lmIFBMQVRGT1JNKENPQ09BKQorI2VsaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgbXV0YWJsZSBS
ZXRhaW5QdHI8TlNFcnJvcj4gbV9wbGF0Zm9ybU5TRXJyb3I7CiAjZW5kaWYKICNpZiBQTEFURk9S
TShXSU4pCiAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gbV9jZXJ0aWZpY2F0ZTsKLSNlbmRpZgog
I2Vsc2UKICAgICBtdXRhYmxlIFJldGFpblB0cjxOU0Vycm9yPiBtX3BsYXRmb3JtRXJyb3I7CiAj
ZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VF
cnJvckNGLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NmL1Jlc291cmNlRXJyb3JDRi5jcHAJKHJldmlzaW9uIDIwNzEzOCkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VFcnJvckNGLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjYsMTYgKzI2LDEzIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUmVz
b3VyY2VFcnJvci5oIgogCi0jaWYgVVNFKENGTkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNU
SU9OKQogCiAjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ0ZFcnJv
ci5oPgogI2luY2x1ZGUgPENGTmV0d29yay9DRk5ldHdvcmtFcnJvcnMuaD4KLSNpbmNsdWRlIDx3
dGYvUmV0YWluUHRyLmg+Ci0KLSNpZiBQTEFURk9STShXSU4pCiAjaW5jbHVkZSA8V2ViS2l0U3lz
dGVtSW50ZXJmYWNlL1dlYktpdFN5c3RlbUludGVyZmFjZS5oPgotI2VuZGlmCisjaW5jbHVkZSA8
d3RmL1JldGFpblB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTIxOCw0ICsyMTUs
NCBAQCBSZXNvdXJjZUVycm9yOjpvcGVyYXRvciBDRlN0cmVhbUVycm9yKCkgCiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vIFVTRShDRk5FVFdPUkspCisjZW5kaWYgLy8gVVNF
KENGVVJMQ09OTkVDVElPTikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcAkocmV2aXNpb24gMjA3
MTM4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRs
ZUNGTmV0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYsNiArNDYsOCBAQAogI2luY2x1ZGUgIlN5
bmNocm9ub3VzTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiU3luY2hyb25vdXNSZXNvdXJjZUhh
bmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmgiCiAjaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGTmV0
d29yay5oPgorI2luY2x1ZGUgPFdlYktpdFN5c3RlbUludGVyZmFjZS9XZWJLaXRTeXN0ZW1JbnRl
cmZhY2UuaD4KKyNpbmNsdWRlIDxwcm9jZXNzLmg+CiAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KICNp
bmNsdWRlIDxzeXMvdHlwZXMuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpAQCAtNTUsMjAg
KzU3LDYgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9CYXNlNjQuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9DU3RyaW5nLmg+CiAKLSNpZiBQTEFURk9STShDT0NPQSkKLSNpbmNsdWRlICJSZXNvdXJjZUhh
bmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmgiCi0jaW5jbHVk
ZSAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgotI2lmIFVTRShDRk5FVFdPUkspCi0jaW5jbHVk
ZSAiV2ViQ29yZVVSTFJlc3BvbnNlLmgiCi0jaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGVVJMQ29ubmVj
dGlvblByaXYuaD4KLSNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZVUkxSZXF1ZXN0UHJpdi5oPgotI2Vu
ZGlmCi0jZW5kaWYKLQotI2lmIFBMQVRGT1JNKFdJTikKLSNpbmNsdWRlIDxXZWJLaXRTeXN0ZW1J
bnRlcmZhY2UvV2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+Ci0jaW5jbHVkZSA8cHJvY2Vzcy5oPgot
CiAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgZGVjbGFyYXRpb24gb25jZSBpdCdzIGluIFdlYktpdFN1
cHBvcnRMaWJyYXJ5LgogZXh0ZXJuICJDIiB7CiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgQ0ZVUkxD
b25uZWN0aW9uUmVmIENGVVJMQ29ubmVjdGlvbkNyZWF0ZVdpdGhQcm9wZXJ0aWVzKApAQCAtNzcs
MTEgKzY1LDEwIEBAIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBDRlVSTENvbm5lY3Rpb25SZWYKICAg
Q0ZVUkxDb25uZWN0aW9uQ2xpZW50ICogIGNsaWVudCwKICAgQ0ZEaWN0aW9uYXJ5UmVmIHByb3Bl
cnRpZXMpOwogfQotI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotI2lmIFVTRShDRk5F
VFdPUkspCisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKIAogc3RhdGljIEhhc2hTZXQ8U3RyaW5n
LCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiBhbGxvd3NBbnlIVFRQU0NlcnRpZmljYXRlSG9z
dHMoKQogewpAQCAtMTIwLDExICsxMDcsNyBAQCBSZXNvdXJjZUhhbmRsZTo6flJlc291cmNlSGFu
ZGxlKCkKICAgICAKIHN0YXRpYyBpbmxpbmUgQ0ZTdHJpbmdSZWYgc2hvdWxkU25pZmZDb25uZWN0
aW9uUHJvcGVydHkoKQogewotI2lmIFBMQVRGT1JNKFdJTikKICAgICByZXR1cm4gQ0ZTVFIoIl9r
Q0ZVUkxDb25uZWN0aW9uUHJvcGVydHlTaG91bGRTbmlmZiIpOwotI2Vsc2UKLSAgICByZXR1cm4g
X2tDRlVSTENvbm5lY3Rpb25Qcm9wZXJ0eVNob3VsZFNuaWZmOwotI2VuZGlmCiB9CiAKIHZvaWQg
UmVzb3VyY2VIYW5kbGU6OmNyZWF0ZUNGVVJMQ29ubmVjdGlvbihib29sIHNob3VsZFVzZUNyZWRl
bnRpYWxTdG9yYWdlLCBib29sIHNob3VsZENvbnRlbnRTbmlmZiwgU2NoZWR1bGluZ0JlaGF2aW9y
IHNjaGVkdWxpbmdCZWhhdmlvciwgQ0ZEaWN0aW9uYXJ5UmVmIGNsaWVudFByb3BlcnRpZXMpCkBA
IC0xNjYsOSArMTQ5LDYgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6Y3JlYXRlQ0ZVUkxDb25uZWN0
aQogCiAgICAgUmV0YWluUHRyPENGTXV0YWJsZURpY3Rpb25hcnlSZWY+IHNzbFByb3BzOwogCi0j
aWYgUExBVEZPUk0oSU9TKQotICAgIHNzbFByb3BzID0gYWRvcHRDRihSZXNvdXJjZUhhbmRsZTo6
Y3JlYXRlU1NMUHJvcGVydGllc0Zyb21OU1VSTFJlcXVlc3QoZmlyc3RSZXF1ZXN0KCkpKTsKLSNl
bHNlCiAgICAgaWYgKGFsbG93c0FueUhUVFBTQ2VydGlmaWNhdGVIb3N0cygpLmNvbnRhaW5zKGZp
cnN0UmVxdWVzdCgpLnVybCgpLmhvc3QoKSkpIHsKICAgICAgICAgc3NsUHJvcHMgPSBhZG9wdENG
KENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMCwgJmtDRlR5
cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNr
cykpOwogICAgICAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShzc2xQcm9wcy5nZXQoKSwga0NGU3Ry
ZWFtU1NMQWxsb3dzQW55Um9vdCwga0NGQm9vbGVhblRydWUpOwpAQCAtMTgxLDExICsxNjEsOCBA
QCB2b2lkIFJlc291cmNlSGFuZGxlOjpjcmVhdGVDRlVSTENvbm5lY3RpCiAgICAgaWYgKGNsaWVu
dENlcnQgIT0gY2xpZW50Q2VydGlmaWNhdGVzKCkuZW5kKCkpIHsKICAgICAgICAgaWYgKCFzc2xQ
cm9wcykKICAgICAgICAgICAgIHNzbFByb3BzID0gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVhdGVN
dXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1bHQsIDAsICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxC
YWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKLSNpZiBQTEFURk9STShX
SU4pCiAgICAgICAgIHdrU2V0Q2xpZW50Q2VydGlmaWNhdGVJblNTTFByb3BlcnRpZXMoc3NsUHJv
cHMuZ2V0KCksIChjbGllbnRDZXJ0LT52YWx1ZSkuZ2V0KCkpOwotI2VuZGlmCiAgICAgfQotI2Vu
ZGlmIC8vIFBMQVRGT1JNKElPUykKIAogICAgIGlmIChzc2xQcm9wcykKICAgICAgICAgQ0ZVUkxS
ZXF1ZXN0U2V0U1NMUHJvcGVydGllcyhyZXF1ZXN0LmdldCgpLCBzc2xQcm9wcy5nZXQoKSk7CkBA
IC0yMDYsMTIgKzE4Myw2IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmNyZWF0ZUNGVVJMQ29ubmVj
dGkKICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoc3RyZWFtUHJvcGVydGllcywgQ0ZTVFIo
Il9XZWJLaXRTeW5jaHJvbm91c1JlcXVlc3QiKSwga0NGQm9vbGVhblRydWUpOwogICAgIH0KIAot
I2lmIFBMQVRGT1JNKENPQ09BKQotICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IHNvdXJjZUFwcGxp
Y2F0aW9uQXVkaXREYXRhID0gZC0+bV9jb250ZXh0LT5zb3VyY2VBcHBsaWNhdGlvbkF1ZGl0RGF0
YSgpOwotICAgIGlmIChzb3VyY2VBcHBsaWNhdGlvbkF1ZGl0RGF0YSkKLSAgICAgICAgQ0ZEaWN0
aW9uYXJ5U2V0VmFsdWUoc3RyZWFtUHJvcGVydGllcywgQ0ZTVFIoImtDRlN0cmVhbVByb3BlcnR5
U291cmNlQXBwbGljYXRpb24iKSwgc291cmNlQXBwbGljYXRpb25BdWRpdERhdGEuZ2V0KCkpOwot
I2VuZGlmCi0KICAgICBzdGF0aWMgY29uc3QgQ0ZTdHJpbmdSZWYga0NGVVJMQ29ubmVjdGlvblNv
Y2tldFN0cmVhbVByb3BlcnRpZXMgPSBDRlNUUigia0NGVVJMQ29ubmVjdGlvblNvY2tldFN0cmVh
bVByb3BlcnRpZXMiKTsKICAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlRGljdGlvbmFyeVJlZj4gcHJv
cGVydGllc0RpY3Rpb25hcnk7CiAgICAgaWYgKGNsaWVudFByb3BlcnRpZXMpCkBAIC0yMzAsMTQg
KzIwMSw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmNyZWF0ZUNGVVJMQ29ubmVjdGkKICAgICBD
RkRpY3Rpb25hcnlBZGRWYWx1ZShwcm9wZXJ0aWVzRGljdGlvbmFyeS5nZXQoKSwga0NGVVJMQ29u
bmVjdGlvblNvY2tldFN0cmVhbVByb3BlcnRpZXMsIHN0cmVhbVByb3BlcnRpZXMpOwogICAgIENG
UmVsZWFzZShzdHJlYW1Qcm9wZXJ0aWVzKTsKIAotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIGlm
IChkLT5tX3VzZXNBc3luY0NhbGxiYWNrcykKLSAgICAgICAgZC0+bV9jb25uZWN0aW9uRGVsZWdh
dGUgPSBhZG9wdFJlZihuZXcgUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdp
dGhPcGVyYXRpb25RdWV1ZSh0aGlzKSk7Ci0gICAgZWxzZQotICAgICAgICBkLT5tX2Nvbm5lY3Rp
b25EZWxlZ2F0ZSA9IGFkb3B0UmVmKG5ldyBTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxD
b25uZWN0aW9uRGVsZWdhdGUodGhpcykpOwotI2Vsc2UKICAgICBkLT5tX2Nvbm5lY3Rpb25EZWxl
Z2F0ZSA9IGFkb3B0UmVmKG5ldyBTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0
aW9uRGVsZWdhdGUodGhpcykpOwotI2VuZGlmCiAgICAgZC0+bV9jb25uZWN0aW9uRGVsZWdhdGUt
PnNldHVwUmVxdWVzdChyZXF1ZXN0LmdldCgpKTsKIAogICAgIENGVVJMQ29ubmVjdGlvbkNsaWVu
dF9WNiBjbGllbnQgPSBkLT5tX2Nvbm5lY3Rpb25EZWxlZ2F0ZS0+bWFrZUNvbm5lY3Rpb25DbGll
bnQoKTsKQEAgLTI2NCwxMCArMjI4LDYgQEAgYm9vbCBSZXNvdXJjZUhhbmRsZTo6c3RhcnQoKQog
CiAgICAgYm9vbCBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSA9ICFjbGllbnQoKSB8fCBjbGll
bnQoKS0+c2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UodGhpcyk7CiAKLSNpZiBFTkFCTEUoV0VC
X1RJTUlORykgJiYgUExBVEZPUk0oQ09DT0EpICYmICFIQVZFKFRJTUlOR0RBVEFPUFRJT05TKQot
ICAgIHNldENvbGxlY3RzVGltaW5nRGF0YSgpOwotI2VuZGlmCi0KICAgICBTY2hlZHVsaW5nQmVo
YXZpb3Igc2NoZWR1bGluZ0JlaGF2aW9yID0gY2xpZW50KCktPmxvYWRpbmdTeW5jaHJvbm91c1hI
UigpID8gU2NoZWR1bGluZ0JlaGF2aW9yOjpTeW5jaHJvbm91cyA6IFNjaGVkdWxpbmdCZWhhdmlv
cjo6QXN5bmNocm9ub3VzOwogCiAgICAgY3JlYXRlQ0ZVUkxDb25uZWN0aW9uKHNob3VsZFVzZUNy
ZWRlbnRpYWxTdG9yYWdlLCBkLT5tX3Nob3VsZENvbnRlbnRTbmlmZiwgc2NoZWR1bGluZ0JlaGF2
aW9yLCBjbGllbnQoKS0+Y29ubmVjdGlvblByb3BlcnRpZXModGhpcykuZ2V0KCkpOwpAQCAtMzUx
LDE2ICszMTEsNiBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpkaWRSZWNlaXZlQXV0aGVudGljCiAg
ICAgQVNTRVJUKGNoYWxsZW5nZS5jZlVSTEF1dGhDaGFsbGVuZ2VSZWYoKSk7CiAgICAgQVNTRVJU
KGNoYWxsZW5nZS5hdXRoZW50aWNhdGlvbkNsaWVudCgpID09IHRoaXMpOyAvLyBTaG91bGQgYmUg
YWxyZWFkeSBzZXQuCiAKLSNpZiAhUExBVEZPUk0oV0lOKQotICAgIC8vIFByb3h5IGF1dGhlbnRp
Y2F0aW9uIGlzIGhhbmRsZWQgYnkgQ0ZOZXR3b3JrIGludGVybmFsbHkuIFdlIGNhbiBnZXQgaGVy
ZSBpZiB0aGUgdXNlciBjYW5jZWxzCi0gICAgLy8gQ0ZOZXR3b3JrIGF1dGhlbnRpY2F0aW9uIGRp
YWxvZywgYW5kIHdlIHNob3VsZG4ndCBhc2sgdGhlIGNsaWVudCB0byBkaXNwbGF5IGFub3RoZXIg
b25lIGluIHRoYXQgY2FzZS4KLSAgICBpZiAoY2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZSgpLmlz
UHJveHkoKSkgewotICAgICAgICAvLyBDYW5ub3QgdXNlIHJlY2VpdmVkUmVxdWVzdFRvQ29udGlu
dWVXaXRob3V0Q3JlZGVudGlhbCgpLCBiZWNhdXNlIGN1cnJlbnQgY2hhbGxlbmdlIGlzIG5vdCB5
ZXQgc2V0LgotICAgICAgICBDRlVSTENvbm5lY3Rpb25Vc2VDcmVkZW50aWFsKGQtPm1fY29ubmVj
dGlvbi5nZXQoKSwgMCwgY2hhbGxlbmdlLmNmVVJMQXV0aENoYWxsZW5nZVJlZigpKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLSNlbmRpZgotCiAgICAgaWYgKHRyeUhhbmRsZVBhc3N3b3JkQmFz
ZWRBdXRoZW50aWNhdGlvbihjaGFsbGVuZ2UpKQogICAgICAgICByZXR1cm47CiAKQEAgLTM4MSwx
MSArMzMxLDcgQEAgYm9vbCBSZXNvdXJjZUhhbmRsZTo6dHJ5SGFuZGxlUGFzc3dvcmRCYQogCiAg
ICAgaWYgKCFkLT5tX3VzZXIuaXNOdWxsKCkgJiYgIWQtPm1fcGFzcy5pc051bGwoKSkgewogICAg
ICAgICBSZXRhaW5QdHI8Q0ZVUkxDcmVkZW50aWFsUmVmPiBjZkNyZWRlbnRpYWwgPSBhZG9wdENG
KENGVVJMQ3JlZGVudGlhbENyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBkLT5tX3VzZXIuY3Jl
YXRlQ0ZTdHJpbmcoKS5nZXQoKSwgZC0+bV9wYXNzLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIDAs
IGtDRlVSTENyZWRlbnRpYWxQZXJzaXN0ZW5jZU5vbmUpKTsKLSNpZiBQTEFURk9STShDT0NPQSkK
LSAgICAgICAgQ3JlZGVudGlhbCBjcmVkZW50aWFsID0gQ3JlZGVudGlhbChjZkNyZWRlbnRpYWwu
Z2V0KCkpOwotI2Vsc2UKICAgICAgICAgQ3JlZGVudGlhbCBjcmVkZW50aWFsID0gY29yZShjZkNy
ZWRlbnRpYWwuZ2V0KCkpOwotI2VuZGlmCiAgICAgICAgIAogICAgICAgICBVUkwgdXJsVG9TdG9y
ZTsKICAgICAgICAgaWYgKGNoYWxsZW5nZS5mYWlsdXJlUmVzcG9uc2UoKS5odHRwU3RhdHVzQ29k
ZSgpID09IDQwMSkKQEAgLTQxNSwxMiArMzYxLDggQEAgYm9vbCBSZXNvdXJjZUhhbmRsZTo6dHJ5
SGFuZGxlUGFzc3dvcmRCYQogICAgICAgICAgICAgICAgICAgICAvLyBTdG9yZSB0aGUgY3JlZGVu
dGlhbCBiYWNrLCBwb3NzaWJseSBhZGRpbmcgaXQgYXMgYSBkZWZhdWx0IGZvciB0aGlzIGRpcmVj
dG9yeS4KICAgICAgICAgICAgICAgICAgICAgZC0+bV9jb250ZXh0LT5zdG9yYWdlU2Vzc2lvbigp
LmNyZWRlbnRpYWxTdG9yYWdlKCkuc2V0KGNyZWRlbnRpYWwsIGNoYWxsZW5nZS5wcm90ZWN0aW9u
U3BhY2UoKSwgY2hhbGxlbmdlLmZhaWx1cmVSZXNwb25zZSgpLnVybCgpKTsKICAgICAgICAgICAg
ICAgICB9Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgICAgICAgICAgICAgQ0ZVUkxDb25uZWN0
aW9uVXNlQ3JlZGVudGlhbChkLT5tX2Nvbm5lY3Rpb24uZ2V0KCksIGNyZWRlbnRpYWwuY2ZDcmVk
ZW50aWFsKCksIGNoYWxsZW5nZS5jZlVSTEF1dGhDaGFsbGVuZ2VSZWYoKSk7Ci0jZWxzZQogICAg
ICAgICAgICAgICAgIFJldGFpblB0cjxDRlVSTENyZWRlbnRpYWxSZWY+IGNmQ3JlZGVudGlhbCA9
IGFkb3B0Q0YoY3JlYXRlQ0YoY3JlZGVudGlhbCkpOwogICAgICAgICAgICAgICAgIENGVVJMQ29u
bmVjdGlvblVzZUNyZWRlbnRpYWwoZC0+bV9jb25uZWN0aW9uLmdldCgpLCBjZkNyZWRlbnRpYWwu
Z2V0KCksIGNoYWxsZW5nZS5jZlVSTEF1dGhDaGFsbGVuZ2VSZWYoKSk7Ci0jZW5kaWYKICAgICAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtNDcw
LDIwICs0MTIsMTIgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRDcmVkZW50aWFsKAog
ICAgICAgICBkLT5tX2NvbnRleHQtPnN0b3JhZ2VTZXNzaW9uKCkuY3JlZGVudGlhbFN0b3JhZ2Uo
KS5zZXQod2ViQ3JlZGVudGlhbCwgY2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZSgpLCB1cmxUb1N0
b3JlKTsKIAogICAgICAgICBpZiAoZC0+bV9jb25uZWN0aW9uKSB7Ci0jaWYgUExBVEZPUk0oQ09D
T0EpCi0gICAgICAgICAgICBDRlVSTENvbm5lY3Rpb25Vc2VDcmVkZW50aWFsKGQtPm1fY29ubmVj
dGlvbi5nZXQoKSwgd2ViQ3JlZGVudGlhbC5jZkNyZWRlbnRpYWwoKSwgY2hhbGxlbmdlLmNmVVJM
QXV0aENoYWxsZW5nZVJlZigpKTsKLSNlbHNlCiAgICAgICAgICAgICBSZXRhaW5QdHI8Q0ZVUkxD
cmVkZW50aWFsUmVmPiBjZkNyZWRlbnRpYWwgPSBhZG9wdENGKGNyZWF0ZUNGKHdlYkNyZWRlbnRp
YWwpKTsKICAgICAgICAgICAgIENGVVJMQ29ubmVjdGlvblVzZUNyZWRlbnRpYWwoZC0+bV9jb25u
ZWN0aW9uLmdldCgpLCBjZkNyZWRlbnRpYWwuZ2V0KCksIGNoYWxsZW5nZS5jZlVSTEF1dGhDaGFs
bGVuZ2VSZWYoKSk7Ci0jZW5kaWYKICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAoZC0+bV9jb25u
ZWN0aW9uKSB7Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgICAgIENGVVJMQ29ubmVjdGlvblVz
ZUNyZWRlbnRpYWwoZC0+bV9jb25uZWN0aW9uLmdldCgpLCBjcmVkZW50aWFsLmNmQ3JlZGVudGlh
bCgpLCBjaGFsbGVuZ2UuY2ZVUkxBdXRoQ2hhbGxlbmdlUmVmKCkpOwotI2Vsc2UKICAgICAgICAg
UmV0YWluUHRyPENGVVJMQ3JlZGVudGlhbFJlZj4gY2ZDcmVkZW50aWFsID0gYWRvcHRDRihjcmVh
dGVDRihjcmVkZW50aWFsKSk7CiAgICAgICAgIENGVVJMQ29ubmVjdGlvblVzZUNyZWRlbnRpYWwo
ZC0+bV9jb25uZWN0aW9uLmdldCgpLCBjZkNyZWRlbnRpYWwuZ2V0KCksIGNoYWxsZW5nZS5jZlVS
TEF1dGhDaGFsbGVuZ2VSZWYoKSk7Ci0jZW5kaWYKICAgICB9CiAKICAgICBjbGVhckF1dGhlbnRp
Y2F0aW9uKCk7CkBAIC02MjQsMzAgKzU1OCw2IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OnBsYXRm
b3JtU2V0RGVmZXJzTG8KICAgICAgICAgQ0ZVUkxDb25uZWN0aW9uUmVzdW1lKGQtPm1fY29ubmVj
dGlvbi5nZXQoKSk7CiB9CiAKLSNpZiBQTEFURk9STShDT0NPQSkKLXZvaWQgUmVzb3VyY2VIYW5k
bGU6OnNjaGVkdWxlKFNjaGVkdWxlUGFpciYgcGFpcikKLXsKLSAgICBDRlJ1bkxvb3BSZWYgcnVu
TG9vcCA9IHBhaXIucnVuTG9vcCgpOwotICAgIGlmICghcnVuTG9vcCkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgQ0ZVUkxDb25uZWN0aW9uU2NoZWR1bGVXaXRoUnVuTG9vcChkLT5tX2Nvbm5lY3Rp
b24uZ2V0KCksIHJ1bkxvb3AsIHBhaXIubW9kZSgpKTsKLSAgICBpZiAoZC0+bV9zdGFydFdoZW5T
Y2hlZHVsZWQpIHsKLSAgICAgICAgQ0ZVUkxDb25uZWN0aW9uU3RhcnQoZC0+bV9jb25uZWN0aW9u
LmdldCgpKTsKLSAgICAgICAgZC0+bV9zdGFydFdoZW5TY2hlZHVsZWQgPSBmYWxzZTsKLSAgICB9
Ci19Ci0KLXZvaWQgUmVzb3VyY2VIYW5kbGU6OnVuc2NoZWR1bGUoU2NoZWR1bGVQYWlyJiBwYWly
KQotewotICAgIENGUnVuTG9vcFJlZiBydW5Mb29wID0gcGFpci5ydW5Mb29wKCk7Ci0gICAgaWYg
KCFydW5Mb29wKQotICAgICAgICByZXR1cm47Ci0KLSAgICBDRlVSTENvbm5lY3Rpb25VbnNjaGVk
dWxlRnJvbVJ1bkxvb3AoZC0+bV9jb25uZWN0aW9uLmdldCgpLCBydW5Mb29wLCBwYWlyLm1vZGUo
KSk7Ci19Ci0jZW5kaWYKLQogY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBSZXNvdXJjZUhhbmRsZTo6
Y3VycmVudFJlcXVlc3QoKSBjb25zdAogewogICAgIHJldHVybiBkLT5tX2N1cnJlbnRSZXF1ZXN0
OwpAQCAtNjc2LDYgKzU4Niw2IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmNvbnRpbnVlV2lsbENh
Y2hlUmUKIHsKICAgICBkLT5tX2Nvbm5lY3Rpb25EZWxlZ2F0ZS0+Y29udGludWVXaWxsQ2FjaGVS
ZXNwb25zZShyZXNwb25zZSk7CiB9Ci0jZW5kaWYgLy8gVVNFKENGTkVUV09SSykKKyNlbmRpZiAv
LyBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25u
ZWN0aW9uRGVsZWdhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5jcHAJKHJl
dmlzaW9uIDIwNzEzOCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVz
b3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI2LDIwICsyNiwxMyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlJlc291cmNl
SGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuaCIKIAotI2lmIFVTRShDRk5FVFdPUkspCisj
aWYgVVNFKENGVVJMQ09OTkVDVElPTikKIAogI2luY2x1ZGUgIkNGTmV0d29ya1NQSS5oIgogI2lu
Y2x1ZGUgIkZvcm1EYXRhU3RyZWFtQ0ZOZXQuaCIKICNpbmNsdWRlICJOZXR3b3JraW5nQ29udGV4
dC5oIgogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCi0KLSNpZiBQTEFURk9STShDT0NPQSkK
LSNpbmNsdWRlICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgiCi0jZW5kaWYKLQotI2lmIFBMQVRG
T1JNKFdJTikKICNpbmNsdWRlIDxXZWJLaXRTeXN0ZW1JbnRlcmZhY2UvV2ViS2l0U3lzdGVtSW50
ZXJmYWNlLmg+Ci0jZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0yMTgsNCArMjEx
LDQgQEAgQ0ZVUkxDb25uZWN0aW9uQ2xpZW50X1Y2IFJlc291cmNlSGFuZGxlQwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlLgogCi0jZW5kaWYgLy8gVVNFKENGTkVUV09SSykKKyNlbmRpZiAvLyBV
U0UoQ0ZVUkxDT05ORUNUSU9OKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJM
Q29ubmVjdGlvbkRlbGVnYXRlLmgJKHJldmlzaW9uIDIwNzEzOCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMywxMCArMjMsOSBAQAogICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAq
LwogCi0jaWZuZGVmIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVfaAotI2Rl
ZmluZSBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlX2gKKyNwcmFnbWEgb25j
ZQogCi0jaWYgVVNFKENGTkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogCiAjaW5j
bHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGVVJMQ29ubmVj
dGlvblByaXYuaD4KQEAgLTEwMCw2ICs5OSw0IEBAIHByb3RlY3RlZDoKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZS4KIAotI2VuZGlmIC8vIFVTRShDRk5FVFdPUkspCi0KLSNlbmRpZiAvLyBSZXNv
dXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlX2gKKyNlbmRpZiAvLyBVU0UoQ0ZVUkxD
T05ORUNUSU9OKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNv
dXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNl
SGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuY3BwCShyZXZp
c2lvbiAyMDcxMzgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291
cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25R
dWV1ZS5oIgogCi0jaWYgVVNFKENGTkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQog
CiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25DRi5oIgogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlLmgiCkBAIC03NSw5ICs3NSw2IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGVDRlVSTENv
bm5lY3Rpb25EZWxlZ2EKIAogdm9pZCBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVn
YXRlV2l0aE9wZXJhdGlvblF1ZXVlOjpzZXR1cFJlcXVlc3QoQ0ZNdXRhYmxlVVJMUmVxdWVzdFJl
ZiByZXF1ZXN0KQogewotI2lmIFBMQVRGT1JNKElPUykKLSAgICBDRlVSTFJlcXVlc3RTZXRTaG91
bGRTdGFydFN5bmNocm9ub3VzbHkocmVxdWVzdCwgMSk7Ci0jZW5kaWYKICAgICBDRlVSTFJlZiBy
ZXF1ZXN0VVJMID0gQ0ZVUkxSZXF1ZXN0R2V0VVJMKHJlcXVlc3QpOwogICAgIGlmICghcmVxdWVz
dFVSTCkKICAgICAgICAgcmV0dXJuOwpAQCAtMTQ5LDEwICsxNDYsOCBAQCB2b2lkIFJlc291cmNl
SGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhCiAgICAgICAgICAgICBhZGp1c3RNSU1FVHlwZUlm
TmVjZXNzYXJ5KGNmUmVzcG9uc2UsIGlzTWFpblJlc291cmNlTG9hZCk7CiAgICAgICAgIH0KIAot
I2lmICFQTEFURk9STShJT1MpCiAgICAgICAgIGlmIChfQ0ZVUkxSZXF1ZXN0Q29weVByb3RvY29s
UHJvcGVydHlGb3JLZXkobV9oYW5kbGUtPmZpcnN0UmVxdWVzdCgpLmNmVVJMUmVxdWVzdChEb05v
dFVwZGF0ZUhUVFBCb2R5KSwgQ0ZTVFIoIkZvcmNlSFRNTE1JTUVUeXBlIikpKQogICAgICAgICAg
ICAgQ0ZVUkxSZXNwb25zZVNldE1JTUVUeXBlKGNmUmVzcG9uc2UsIENGU1RSKCJ0ZXh0L2h0bWwi
KSk7Ci0jZW5kaWYgLy8gIVBMQVRGT1JNKElPUykKICAgICAgICAgCiAgICAgICAgIFJlc291cmNl
UmVzcG9uc2UgcmVzb3VyY2VSZXNwb25zZShjZlJlc3BvbnNlKTsKICNpZiBFTkFCTEUoV0VCX1RJ
TUlORykKQEAgLTI4OCwxNSArMjgzLDcgQEAgQm9vbGVhbiBSZXNvdXJjZUhhbmRsZUNGVVJMQ29u
bmVjdGlvbkRlbAogCiAgICAgICAgIExPRyhOZXR3b3JrLCAiQ0ZOZXQgLSBSZXNvdXJjZUhhbmRs
ZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlOjpjYW5SZXNwb25kVG9Q
cm90ZWN0aW9uU3BhY2UoaGFuZGxlPSVwKSAoJXMpIiwgbV9oYW5kbGUsIG1faGFuZGxlLT5maXJz
dFJlcXVlc3QoKS51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIAotICAgICAgICBQcm90
ZWN0aW9uU3BhY2UgY29yZVByb3RlY3Rpb25TcGFjZSA9IFByb3RlY3Rpb25TcGFjZShwcm90ZWN0
aW9uU3BhY2UpOwotI2lmIFBMQVRGT1JNKElPUykKLSAgICAgICAgaWYgKGNvcmVQcm90ZWN0aW9u
U3BhY2UuYXV0aGVudGljYXRpb25TY2hlbWUoKSA9PSBQcm90ZWN0aW9uU3BhY2VBdXRoZW50aWNh
dGlvblNjaGVtZVVua25vd24pIHsKLSAgICAgICAgICAgIG1fYm9vbFJlc3VsdCA9IGZhbHNlOwot
ICAgICAgICAgICAgZGlzcGF0Y2hfc2VtYXBob3JlX3NpZ25hbChtX3NlbWFwaG9yZSk7Ci0gICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSNlbmRpZiAvLyBQTEFURk9STShJT1MpCi0gICAg
ICAgIG1faGFuZGxlLT5jYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKGNvcmVQ
cm90ZWN0aW9uU3BhY2UpOworICAgICAgICBtX2hhbmRsZS0+Y2FuQXV0aGVudGljYXRlQWdhaW5z
dFByb3RlY3Rpb25TcGFjZShQcm90ZWN0aW9uU3BhY2UocHJvdGVjdGlvblNwYWNlKSk7CiAgICAg
fSk7CiAgICAgZGlzcGF0Y2hfc2VtYXBob3JlX3dhaXQobV9zZW1hcGhvcmUsIERJU1BBVENIX1RJ
TUVfRk9SRVZFUik7CiAgICAgcmV0dXJuIG1fYm9vbFJlc3VsdDsKQEAgLTM0Nyw0ICszMzQsNCBA
QCB2b2lkIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhCiAjZW5kaWYgLy8gVVNF
KFBST1RFQ1RJT05fU1BBQ0VfQVVUSF9DQUxMQkFDSykKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IAotI2VuZGlmIC8vIFVTRShDRk5FVFdPUkspCisjZW5kaWYgLy8gVVNFKENGVVJMQ09OTkVDVElP
TikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5k
bGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVS
TENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5oCShyZXZpc2lvbiAyMDcxMzgp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZV
UkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuaAkod29ya2luZyBjb3B5KQpA
QCAtMjMsMTAgKzIzLDkgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBSZXNvdXJj
ZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlX2gKLSNkZWZp
bmUgUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1
ZV9oCisjcHJhZ21hIG9uY2UKIAotI2lmIFVTRShDRk5FVFdPUkspCisjaWYgVVNFKENGVVJMQ09O
TkVDVElPTikKIAogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdh
dGUuaCIKICNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZOZXR3b3JrLmg+CkBAIC04MCw2ICs3OSw0IEBA
IHByaXZhdGU6CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUuCiAKLSNlbmRpZiAvLyBVU0UoQ0ZO
RVRXT1JLKQotCi0jZW5kaWYgLy8gUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0
ZVdpdGhPcGVyYXRpb25RdWV1ZV9oCisjZW5kaWYgLy8gVVNFKENGVVJMQ09OTkVDVElPTikKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJj
ZVJlcXVlc3QuaAkocmV2aXNpb24gMjA3MTM4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEs
NyBAQAogCiBPQkpDX0NMQVNTIE5TVVJMUmVxdWVzdDsKIAotI2lmIFBMQVRGT1JNKENPQ09BKSB8
fCBVU0UoQ0ZORVRXT1JLKQorI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZVUkxDT05ORUNU
SU9OKQogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgX0NGVVJMUmVxdWVzdCogQ0ZVUkxSZXF1ZXN0UmVm
OwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgX19DRlVSTFN0b3JhZ2VTZXNzaW9uKiBDRlVSTFN0b3Jh
Z2VTZXNzaW9uUmVmOwogI2VuZGlmCkBAIC02MSwxMyArNjEsNyBAQCBwdWJsaWM6CiAgICAgewog
ICAgIH0KICAgICAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotI2lmIFBMQVRGT1JNKENPQ09BKQotICAg
IFdFQkNPUkVfRVhQT1JUIFJlc291cmNlUmVxdWVzdChOU1VSTFJlcXVlc3QgKik7Ci0gICAgdm9p
ZCB1cGRhdGVOU1VSTFJlcXVlc3QoKTsKLSAgICB2b2lkIGNsZWFyT3JVcGRhdGVOU1VSTFJlcXVl
c3QoKTsKLSNlbmRpZgotCisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKICAgICBSZXNvdXJjZVJl
cXVlc3QoQ0ZVUkxSZXF1ZXN0UmVmIGNmUmVxdWVzdCkKICAgICAgICAgOiBSZXNvdXJjZVJlcXVl
c3RCYXNlKCkKICAgICAgICAgLCBtX2NmUmVxdWVzdChjZlJlcXVlc3QpCkBAIC04NCwxMSArNzgs
NyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1cGRhdGVGcm9tRGVsZWdhdGVQ
cmVzZXJ2aW5nT2xkUHJvcGVydGllcyhjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKIAogI2lmIFBM
QVRGT1JNKENPQ09BKQotI2lmIFVTRShDRk5FVFdPUkspCi0gICAgYm9vbCBlbmNvZGluZ1JlcXVp
cmVzUGxhdGZvcm1EYXRhKCkgY29uc3QgeyByZXR1cm4gbV9odHRwQm9keSB8fCBtX2NmUmVxdWVz
dDsgfQotI2Vsc2UKICAgICBib29sIGVuY29kaW5nUmVxdWlyZXNQbGF0Zm9ybURhdGEoKSBjb25z
dCB7IHJldHVybiBtX2h0dHBCb2R5IHx8IG1fbnNSZXF1ZXN0OyB9Ci0jZW5kaWYKICAgICBXRUJD
T1JFX0VYUE9SVCBOU1VSTFJlcXVlc3QgKm5zVVJMUmVxdWVzdChIVFRQQm9keVVwZGF0ZVBvbGlj
eSkgY29uc3Q7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgQ0ZTdHJpbmdSZWYgaXNVc2Vy
SW5pdGlhdGVkS2V5KCk7CkBAIC0xMDUsNyArOTUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRE
b21haW5Gb3JDYWNoZVBhcnRpdGlvbihjb25zdCBTdHJpbmcmIGRvbWFpbikgeyBtX2NhY2hlUGFy
dGl0aW9uID0gcGFydGl0aW9uTmFtZShkb21haW4pOyB9CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JN
KENPQ09BKSB8fCBVU0UoQ0ZORVRXT1JLKQorI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZV
UkxDT05ORUNUSU9OKQogICAgIFdFQkNPUkVfRVhQT1JUIENGVVJMUmVxdWVzdFJlZiBjZlVSTFJl
cXVlc3QoSFRUUEJvZHlVcGRhdGVQb2xpY3kpIGNvbnN0OwogICAgIHZvaWQgc2V0U3RvcmFnZVNl
c3Npb24oQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZik7CiAjZW5kaWYKQEAgLTEyNSw3ICsxMTUsNyBA
QCBwcml2YXRlOgogCiAgICAgdm9pZCBkb1BsYXRmb3JtU2V0QXNJc29sYXRlZENvcHkoY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0Jik7CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQorI2lmIFVTRShDRlVSTENP
Tk5FQ1RJT04pCiAgICAgUmV0YWluUHRyPENGVVJMUmVxdWVzdFJlZj4gbV9jZlJlcXVlc3Q7CiAj
ZW5kaWYKICNpZiBQTEFURk9STShDT0NPQSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuY3BwCShy
ZXZpc2lvbiAyMDcxMzgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jl
c291cmNlUmVxdWVzdENGTmV0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQAog
I2luY2x1ZGUgIlB1YmxpY1N1ZmZpeC5oIgogI2VuZGlmCiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQor
I2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAjaW5jbHVkZSAiRm9ybURhdGFTdHJlYW1DRk5ldC5o
IgogI2luY2x1ZGUgPENGTmV0d29yay9DRlVSTFJlcXVlc3RQcml2Lmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvQ1N0cmluZy5oPgpAQCAtNTksMTIgKzU5LDExIEBAIGJvb2wgUmVzb3VyY2VSZXF1ZXN0
OjpzX2h0dHBQaXBlbGluaW5nRW4KIGJvb2wgUmVzb3VyY2VSZXF1ZXN0OjpzX2h0dHBQaXBlbGlu
aW5nRW5hYmxlZCA9IGZhbHNlOwogI2VuZGlmCiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQorI2lmIFVT
RShDRlVSTENPTk5FQ1RJT04pCiAKIHR5cGVkZWYgdm9pZCAoKkNGVVJMUmVxdWVzdFNldENvbnRl
bnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheUZ1bmN0aW9uKShDRk11dGFibGVVUkxS
ZXF1ZXN0UmVmLCBDRkFycmF5UmVmKTsKIHR5cGVkZWYgQ0ZBcnJheVJlZiAoKkNGVVJMUmVxdWVz
dENvcHlDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXlGdW5jdGlvbikoQ0ZV
UkxSZXF1ZXN0UmVmKTsKIAotI2lmIFBMQVRGT1JNKFdJTikKIHN0YXRpYyBITU9EVUxFIGZpbmRD
Rk5ldHdvcmtNb2R1bGUoKQogewogI2lmbmRlZiBERUJVR19BTEwKQEAgLTgzLDE3ICs4Miw2IEBA
IHN0YXRpYyBDRlVSTFJlcXVlc3RDb3B5Q29udGVudERpc3Bvc2l0aW8KIHsKICAgICByZXR1cm4g
cmVpbnRlcnByZXRfY2FzdDxDRlVSTFJlcXVlc3RDb3B5Q29udGVudERpc3Bvc2l0aW9uRW5jb2Rp
bmdGYWxsYmFja0FycmF5RnVuY3Rpb24+KEdldFByb2NBZGRyZXNzKGZpbmRDRk5ldHdvcmtNb2R1
bGUoKSwgIl9DRlVSTFJlcXVlc3RDb3B5Q29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFj
a0FycmF5IikpOwogfQotI2VsaWYgUExBVEZPUk0oQ09DT0EpCi1zdGF0aWMgQ0ZVUkxSZXF1ZXN0
U2V0Q29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5RnVuY3Rpb24gZmluZENG
VVJMUmVxdWVzdFNldENvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheUZ1bmN0
aW9uKCkKLXsKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxDRlVSTFJlcXVlc3RTZXRDb250
ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXlGdW5jdGlvbj4oZGxzeW0oUlRMRF9E
RUZBVUxULCAiX0NGVVJMUmVxdWVzdFNldENvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJh
Y2tBcnJheSIpKTsKLX0KLQotc3RhdGljIENGVVJMUmVxdWVzdENvcHlDb250ZW50RGlzcG9zaXRp
b25FbmNvZGluZ0ZhbGxiYWNrQXJyYXlGdW5jdGlvbiBmaW5kQ0ZVUkxSZXF1ZXN0Q29weUNvbnRl
bnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheUZ1bmN0aW9uKCkKLXsKLSAgICByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDxDRlVSTFJlcXVlc3RDb3B5Q29udGVudERpc3Bvc2l0aW9uRW5j
b2RpbmdGYWxsYmFja0FycmF5RnVuY3Rpb24+KGRsc3ltKFJUTERfREVGQVVMVCwgIl9DRlVSTFJl
cXVlc3RDb3B5Q29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5IikpOwotfQot
I2VuZGlmCiAKIHN0YXRpYyB2b2lkIHNldENvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJh
Y2tBcnJheShDRk11dGFibGVVUkxSZXF1ZXN0UmVmIHJlcXVlc3QsIENGQXJyYXlSZWYgZmFsbGJh
Y2tBcnJheSkKIHsKQEAgLTE1NiwxMCArMTQ0LDYgQEAgdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OmRv
VXBkYXRlUGxhdGZvcm1SZQogICAgIGlmIChyZXNvdXJjZVByaW9yaXRpZXNFbmFibGVkKCkpCiAg
ICAgICAgIENGVVJMUmVxdWVzdFNldFJlcXVlc3RQcmlvcml0eShjZlJlcXVlc3QsIHRvUGxhdGZv
cm1SZXF1ZXN0UHJpb3JpdHkocHJpb3JpdHkoKSkpOwogCi0jaWYgIVBMQVRGT1JNKFdJTikKLSAg
ICBfQ0ZVUkxSZXF1ZXN0U2V0UHJvdG9jb2xQcm9wZXJ0eShjZlJlcXVlc3QsIGtDRlVSTFJlcXVl
c3RBbGxvd0FsbFBPU1RDYWNoaW5nLCBrQ0ZCb29sZWFuVHJ1ZSk7Ci0jZW5kaWYKLQogICAgIHNl
dEhlYWRlckZpZWxkcyhjZlJlcXVlc3QsIGh0dHBIZWFkZXJGaWVsZHMoKSk7CiAKICAgICBDRlVS
TFJlcXVlc3RTZXRTaG91bGRIYW5kbGVIVFRQQ29va2llcyhjZlJlcXVlc3QsIGFsbG93Q29va2ll
cygpKTsKQEAgLTE4NCw5ICsxNjgsNiBAQCB2b2lkIFJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVQ
bGF0Zm9ybVJlCiAjZW5kaWYKIAogICAgIG1fY2ZSZXF1ZXN0ID0gYWRvcHRDRihjZlJlcXVlc3Qp
OwotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIGNsZWFyT3JVcGRhdGVOU1VSTFJlcXVlc3QoKTsK
LSNlbmRpZgogfQogCiB2b2lkIFJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVQbGF0Zm9ybUhUVFBC
b2R5KCkKQEAgLTIxOSwzMCArMjAwLDEyIEBAIHZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0
ZVBsYXRmb3JtSFQKICAgICB9CiAKICAgICBtX2NmUmVxdWVzdCA9IGFkb3B0Q0YoY2ZSZXF1ZXN0
KTsKLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICBjbGVhck9yVXBkYXRlTlNVUkxSZXF1ZXN0KCk7
Ci0jZW5kaWYKIH0KIAogdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUmVzb3VyY2VSZXF1
ZXN0KCkKIHsKICAgICBpZiAoIW1fY2ZSZXF1ZXN0KSB7Ci0jaWYgUExBVEZPUk0oSU9TKQotICAg
ICAgICAvLyA8cmRhcjovL3Byb2JsZW0vOTkxMzUyNj4KLSAgICAgICAgLy8gVGhpcyBpcyBhIGhh
Y2sgdG8gbWltaWMgdGhlIHN1YnRsZSBiZWhhdmlvdXIgb2YgdGhlIEZvdW5kYXRpb24gYmFzZWQg
UmVzb3VyY2VSZXF1ZXN0Ci0gICAgICAgIC8vIGNvZGUuIFRoYXQgY29kZSBkb2VzIG5vdCByZXNl
dCBtX2h0dHBNZXRob2QgaWYgdGhlIE5TVVJMUmVxdWVzdCBpcyBuaWwuIEkgZmlsZWQKLSAgICAg
ICAgLy8gPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NjMzNj4gdG8g
dHJhY2sgdGhhdC4KLSAgICAgICAgLy8gQW5vdGhlciByZWxhdGVkIGJ1ZyBpcyA8aHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY2MzUwPi4gRml4aW5nIHRoYXQKLSAgICAg
ICAgLy8gd291bGQsIGlkZWFsbHksIGFsbG93IHVzIHRvIG5vdCBoYXZlIHRoaXMgaGFjay4gQnV0
IHVuZm9ydHVuYXRlbHkgdGhhdCBjYXVzZWQgbGF5b3V0IHRlc3QKLSAgICAgICAgLy8gZmFpbHVy
ZXMuCi0gICAgICAgIC8vIFJlbW92YWwgb2YgdGhpcyBoYWNrIGlzIHRyYWNrZWQgYnkgPHJkYXI6
Ly9wcm9ibGVtLzk5NzA0OTk+LgotCi0gICAgICAgIFN0cmluZyBodHRwTWV0aG9kID0gbV9odHRw
TWV0aG9kOwogICAgICAgICAqdGhpcyA9IFJlc291cmNlUmVxdWVzdCgpOwotICAgICAgICBtX2h0
dHBNZXRob2QgPSBodHRwTWV0aG9kOwotI2Vsc2UKLSAgICAgICAgKnRoaXMgPSBSZXNvdXJjZVJl
cXVlc3QoKTsKLSNlbmRpZgogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0zMTcsMTIgKzI4
MCw5IEBAIHZvaWQgUmVzb3VyY2VSZXF1ZXN0OjpzZXRTdG9yYWdlU2Vzc2lvbigKICAgICBpZiAo
c3RvcmFnZVNlc3Npb24pCiAgICAgICAgIF9DRlVSTFJlcXVlc3RTZXRTdG9yYWdlU2Vzc2lvbihj
ZlJlcXVlc3QsIHN0b3JhZ2VTZXNzaW9uKTsKICAgICBtX2NmUmVxdWVzdCA9IGFkb3B0Q0YoY2ZS
ZXF1ZXN0KTsKLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICBjbGVhck9yVXBkYXRlTlNVUkxSZXF1
ZXN0KCk7Ci0jZW5kaWYKIH0KIAotI2VuZGlmIC8vIFVTRShDRk5FVFdPUkspCisjZW5kaWYgLy8g
VVNFKENGVVJMQ09OTkVDVElPTikKIAogdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OnVwZGF0ZUZyb21E
ZWxlZ2F0ZVByZXNlcnZpbmdPbGRQcm9wZXJ0aWVzKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgZGVs
ZWdhdGVQcm92aWRlZFJlcXVlc3QpCiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdENGTmV0LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5oCShyZXZpc2lv
biAyMDcxMzgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNl
UmVxdWVzdENGTmV0LmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDggKzIzLDcgQEAKICAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAogICovCiAKLSNpZm5kZWYgUmVzb3VyY2VSZXF1ZXN0Q0ZOZXRfaAotI2RlZmluZSBS
ZXNvdXJjZVJlcXVlc3RDRk5ldF9oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkNGTmV0d29y
a1NQSS5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9hZFByaW9yaXR5LmgiCkBAIC0zMyw3ICszMiw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogCi0jaWYg
VVNFKENGTkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogdm9pZCBnZXRSZXNvdXJj
ZVJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiwgQ0ZVUkxSZXF1ZXN0UmVmKTsKIENGVVJMUmVxdWVz
dFJlZiBjZlVSTFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAjZW5kaWYKQEAgLTc4
LDUgKzc3LDMgQEAgaW5saW5lIENGVVJMUmVxdWVzdFByaW9yaXR5IHRvUGxhdGZvcm1SZQogfQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBSZXNvdXJjZVJlcXVlc3RDRk5l
dF9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVz
cG9uc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L1Jlc291cmNlUmVzcG9uc2UuaAkocmV2aXNpb24gMjA3MTM4KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlc3BvbnNlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTI4LDcgKzI4LDcgQEAKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlQmFzZS5oIgogI2luY2x1
ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAotI2lmIFVTRShDRk5FVFdPUkspCisjaWYgVVNFKENGVVJM
Q09OTkVDVElPTikKICNpbmNsdWRlICJDRk5ldHdvcmtTUEkuaCIKICNlbmRpZgogCkBAIC00Mywx
NiArNDMsMTMgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQor
I2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAgICAgUmVzb3VyY2VSZXNwb25zZShDRlVSTFJlc3Bv
bnNlUmVmIGNmUmVzcG9uc2UpCiAgICAgICAgIDogbV9pbml0TGV2ZWwoVW5pbml0aWFsaXplZCkK
ICAgICAgICAgLCBtX2NmUmVzcG9uc2UoY2ZSZXNwb25zZSkKICAgICB7CiAgICAgICAgIG1faXNO
dWxsID0gIWNmUmVzcG9uc2U7CiAgICAgfQotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIFdFQkNP
UkVfRVhQT1JUIFJlc291cmNlUmVzcG9uc2UoTlNVUkxSZXNwb25zZSAqKTsKLSNlbmRpZgogI2Vs
c2UKICAgICBSZXNvdXJjZVJlc3BvbnNlKE5TVVJMUmVzcG9uc2UgKm5zUmVzcG9uc2UpCiAgICAg
ICAgIDogbV9pbml0TGV2ZWwoVW5pbml0aWFsaXplZCkKQEAgLTg0LDcgKzgxLDcgQEAgcHVibGlj
OgogICAgICAgICAgKi8KICAgICB9CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQorI2lmIFVTRShDRlVS
TENPTk5FQ1RJT04pCiAgICAgV0VCQ09SRV9FWFBPUlQgQ0ZVUkxSZXNwb25zZVJlZiBjZlVSTFJl
c3BvbnNlKCkgY29uc3Q7CiAjZW5kaWYKICNpZiBQTEFURk9STShDT0NPQSkKQEAgLTEwOCwxMCAr
MTA1LDkgQEAgcHJpdmF0ZToKIAogICAgIHVuc2lnbmVkIG1faW5pdExldmVsIDogMzsKIAotI2lm
IFVTRShDRk5FVFdPUkspCisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKICAgICBtdXRhYmxlIFJl
dGFpblB0cjxDRlVSTFJlc3BvbnNlUmVmPiBtX2NmUmVzcG9uc2U7Ci0jZW5kaWYKLSNpZiBQTEFU
Rk9STShDT0NPQSkKKyNlbGlmIFBMQVRGT1JNKENPQ09BKQogICAgIG11dGFibGUgUmV0YWluUHRy
PE5TVVJMUmVzcG9uc2U+IG1fbnNSZXNwb25zZTsKICNlbmRpZgogfTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXNwb25zZUNGTmV0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVz
cG9uc2VDRk5ldC5jcHAJKHJldmlzaW9uIDIwNzEzOCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXNwb25zZUNGTmV0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjYsNyArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlJlc291cmNl
UmVzcG9uc2UuaCIKIAotI2lmIFVTRShDRk5FVFdPUkspCisjaWYgVVNFKENGVVJMQ09OTkVDVElP
TikKIAogI2luY2x1ZGUgIkNGTmV0d29ya1NQSS5oIgogCkBAIC0zNCwxMCArMzQsNiBAQAogI2lu
Y2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAK
LSNpZiBQTEFURk9STShDT0NPQSkKLSNpbmNsdWRlICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgi
Ci0jZW5kaWYKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgQ0ZTdHJpbmdSZWYgY29u
c3QgY29tbW9uSGVhZGVyRmllbGRzW10gPSB7CkBAIC00NywxMyArNDMsOSBAQCBzdGF0aWMgQ0ZT
dHJpbmdSZWYgY29uc3QgY29tbW9uSGVhZGVyRmllCiBDRlVSTFJlc3BvbnNlUmVmIFJlc291cmNl
UmVzcG9uc2U6OmNmVVJMUmVzcG9uc2UoKSBjb25zdAogewogICAgIGlmICghbV9jZlJlc3BvbnNl
ICYmICFtX2lzTnVsbCkgewotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgICAgICBuc1VSTFJlc3Bv
bnNlKCk7Ci0jZWxzZQogICAgICAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IHVybCA9IG1fdXJsLmNy
ZWF0ZUNGVVJMKCk7CiAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGNyZWF0ZXMgYSB2ZXJ5IGluY29t
cGxldGUgQ0ZVUkxSZXNwb25zZSwgd2hpY2ggZG9lcyBub3QgZXZlbiBoYXZlIGEgc3RhdHVzIGNv
ZGUuCiAgICAgICAgIG1fY2ZSZXNwb25zZSA9IGFkb3B0Q0YoQ0ZVUkxSZXNwb25zZUNyZWF0ZSgw
LCB1cmwuZ2V0KCksIG1fbWltZVR5cGUuc3RyaW5nKCkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwg
bV9leHBlY3RlZENvbnRlbnRMZW5ndGgsIG1fdGV4dEVuY29kaW5nTmFtZS5zdHJpbmcoKS5jcmVh
dGVDRlN0cmluZygpLmdldCgpLCBrQ0ZVUkxDYWNoZVN0b3JhZ2VBbGxvd2VkKSk7Ci0jZW5kaWYK
ICAgICB9CiAKICAgICByZXR1cm4gbV9jZlJlc3BvbnNlLmdldCgpOwpAQCAtMTE2LDEyICsxMDgs
MTAgQEAgdm9pZCBSZXNvdXJjZVJlc3BvbnNlOjpwbGF0Zm9ybUxhenlJbml0KAogICAgIG1faW5p
dExldmVsID0gaW5pdExldmVsOwogfQogCi0jaWYgIVBMQVRGT1JNKENPQ09BKQogQ2VydGlmaWNh
dGVJbmZvIFJlc291cmNlUmVzcG9uc2U6OnBsYXRmb3JtQ2VydGlmaWNhdGVJbmZvKCkgY29uc3QK
IHsKICAgICByZXR1cm4geyB9OwogfQotI2VuZGlmCiAKIFN0cmluZyBSZXNvdXJjZVJlc3BvbnNl
OjpwbGF0Zm9ybVN1Z2dlc3RlZEZpbGVuYW1lKCkgY29uc3QKIHsKQEAgLTE0Miw0ICsxMzIsNCBA
QCBib29sIFJlc291cmNlUmVzcG9uc2U6OnBsYXRmb3JtQ29tcGFyZShjCiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vIFVTRShDRk5FVFdPUkspCisjZW5kaWYgLy8gVVNFKENG
VVJMQ09OTkVDVElPTikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2Yv
U3luY2hyb25vdXNMb2FkZXJDbGllbnRDRk5ldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9TeW5jaHJvbm91c0xvYWRlckNsaWVudENGTmV0LmNw
cAkocmV2aXNpb24gMjA3MTM4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
Zi9TeW5jaHJvbm91c0xvYWRlckNsaWVudENGTmV0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYs
NyArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlN5bmNocm9ub3VzTG9h
ZGVyQ2xpZW50LmgiCiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQorI2lmIFVTRShDRlVSTENPTk5FQ1RJ
T04pCiAKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oIgogI2luY2x1ZGUgIlJl
c291cmNlSGFuZGxlLmgiCkBAIC00OCw0ICs0OCw0IEBAIFJlc291cmNlRXJyb3IgU3luY2hyb25v
dXNMb2FkZXJDbGllbnQ6OnAKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYgLy8g
VVNFKENGTkVUV09SSykKKyNlbmRpZiAvLyBVU0UoQ0ZVUkxDT05ORUNUSU9OKQpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9TeW5jaHJvbm91c1Jlc291cmNlSGFuZGxl
Q0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY2YvU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVj
dGlvbkRlbGVnYXRlLmNwcAkocmV2aXNpb24gMjA3MTM4KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jZi9TeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9u
RGVsZWdhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxMiArMjYsMTMgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25u
ZWN0aW9uRGVsZWdhdGUuaCIKIAotI2lmIFVTRShDRk5FVFdPUkspCisjaWYgVVNFKENGVVJMQ09O
TkVDVElPTikKIAogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ0YuaCIKICNpbmNsdWRlICJBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZS5oIgogI2luY2x1ZGUgIkxvYWRlclJ1bkxvb3BDRi5oIgogI2lu
Y2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCiAjaW5jbHVk
ZSAiUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZUNsaWVudC5oIgog
I2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKQEAgLTQwLDIwICs0MSw2IEBACiAjaW5jbHVk
ZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgog
Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0jaW5jbHVkZSAiQ0ZOZXR3b3JrU1BJLmgiCi0jaW5jbHVk
ZSAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgotI2luY2x1ZGUgIldlYkNvcmVVUkxSZXNwb25z
ZS5oIgotI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKQotCi0jaWYgUExBVEZPUk0oSU9TKQotI2lu
Y2x1ZGUgIldlYkNvcmVUaHJlYWQuaCIKLSNlbmRpZiAvLyBQTEFURk9STShJT1MpCi0KLSNpZiBQ
TEFURk9STShXSU4pCi0jaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgotI2VuZGlmIC8vIFBM
QVRGT1JNKFdJTikKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBTeW5jaHJvbm91c1Jlc291cmNl
SGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OlN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVD
RlVSTENvbm5lY3Rpb25EZWxlZ2F0ZShSZXNvdXJjZUhhbmRsZSogaGFuZGxlKQpAQCAtNjMsMjAg
KzUwLDExIEBAIFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb24KIAogdm9p
ZCBTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OnNldHVw
UmVxdWVzdChDRk11dGFibGVVUkxSZXF1ZXN0UmVmIHJlcXVlc3QpCiB7Ci0jaWYgUExBVEZPUk0o
SU9TKQotICAgIENGVVJMUmVxdWVzdFNldFNob3VsZFN0YXJ0U3luY2hyb25vdXNseShyZXF1ZXN0
LCAxKTsKLSNlbmRpZgogfQogCiB2b2lkIFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENv
bm5lY3Rpb25EZWxlZ2F0ZTo6c2V0dXBDb25uZWN0aW9uU2NoZWR1bGluZyhDRlVSTENvbm5lY3Rp
b25SZWYgY29ubmVjdGlvbikKIHsKLSNpZiBQTEFURk9STShXSU4pCiAgICAgQ0ZVUkxDb25uZWN0
aW9uU2NoZWR1bGVXaXRoQ3VycmVudE1lc3NhZ2VRdWV1ZShjb25uZWN0aW9uKTsKLSNlbGlmIFBM
QVRGT1JNKElPUykKLSAgICBDRlVSTENvbm5lY3Rpb25TY2hlZHVsZVdpdGhSdW5Mb29wKGNvbm5l
Y3Rpb24sIFdlYlRocmVhZFJ1bkxvb3AoKSwga0NGUnVuTG9vcERlZmF1bHRNb2RlKTsKLSNlbHNl
Ci0gICAgQ0ZVUkxDb25uZWN0aW9uU2NoZWR1bGVXaXRoUnVuTG9vcChjb25uZWN0aW9uLCBDRlJ1
bkxvb3BHZXRDdXJyZW50KCksIGtDRlJ1bkxvb3BEZWZhdWx0TW9kZSk7Ci0jZW5kaWYKICAgICBD
RlVSTENvbm5lY3Rpb25TY2hlZHVsZURvd25sb2FkV2l0aFJ1bkxvb3AoY29ubmVjdGlvbiwgbG9h
ZGVyUnVuTG9vcCgpLCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUpOwogfQogCkBAIC0xMDMsNyArODEs
NiBAQCBDRlVSTFJlcXVlc3RSZWYgU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsCiAgICAgcmV0dXJu
IG5ld0NGUmVxdWVzdDsKIH0KIAotI2lmICFQTEFURk9STShDT0NPQSkKIHN0YXRpYyB2b2lkIHNl
dERlZmF1bHRNSU1FVHlwZShDRlVSTFJlc3BvbnNlUmVmIHJlc3BvbnNlKQogewogICAgIHN0YXRp
YyBDRlN0cmluZ1JlZiBkZWZhdWx0TUlNRVR5cGVTdHJpbmcgPSBkZWZhdWx0TUlNRVR5cGUoKS5j
cmVhdGVDRlN0cmluZygpLmxlYWtSZWYoKTsKQEAgLTEzMyw3ICsxMTAsNiBAQCBzdGF0aWMgdm9p
ZCBhZGp1c3RNSU1FVHlwZUlmTmVjZXNzYXJ5KENGCiAgICAgaWYgKHJlc3VsdCAhPSBvcmlnaW5h
bFJlc3VsdCkKICAgICAgICAgQ0ZVUkxSZXNwb25zZVNldE1JTUVUeXBlKGNmUmVzcG9uc2UsIHJl
c3VsdC5nZXQoKSk7CiB9Ci0jZW5kaWYgLy8gIVBMQVRGT1JNKENPQ09BKQogCiB2b2lkIFN5bmNo
cm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZTo6ZGlkUmVjZWl2ZVJl
c3BvbnNlKENGVVJMQ29ubmVjdGlvblJlZiBjb25uZWN0aW9uLCBDRlVSTFJlc3BvbnNlUmVmIGNm
UmVzcG9uc2UpCiB7CkBAIC0xNDIsMjEgKzExOCw2IEBAIHZvaWQgU3luY2hyb25vdXNSZXNvdXJj
ZUhhbmRsZUNGVVJMQ29ubmUKICAgICBpZiAoIW1faGFuZGxlLT5jbGllbnQoKSkKICAgICAgICAg
cmV0dXJuOwogCi0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgLy8gQXZvaWQgTUlNRSB0eXBlIHNu
aWZmaW5nIGlmIHRoZSByZXNwb25zZSBjb21lcyBiYWNrIGFzIDMwNCBOb3QgTW9kaWZpZWQuCi0g
ICAgYXV0byBtc2cgPSBDRlVSTFJlc3BvbnNlR2V0SFRUUFJlc3BvbnNlKGNmUmVzcG9uc2UpOwot
ICAgIGludCBzdGF0dXNDb2RlID0gbXNnID8gQ0ZIVFRQTWVzc2FnZUdldFJlc3BvbnNlU3RhdHVz
Q29kZShtc2cpIDogMDsKLQotICAgIGlmIChzdGF0dXNDb2RlICE9IDMwNCkgewotICAgICAgICBi
b29sIGlzTWFpblJlc291cmNlTG9hZCA9IG1faGFuZGxlLT5maXJzdFJlcXVlc3QoKS5yZXF1ZXN0
ZXIoKSA9PSBSZXNvdXJjZVJlcXVlc3Q6OlJlcXVlc3Rlcjo6TWFpbjsKLSAgICAgICAgYWRqdXN0
TUlNRVR5cGVJZk5lY2Vzc2FyeShjZlJlc3BvbnNlLCBpc01haW5SZXNvdXJjZUxvYWQpOwotICAg
IH0KLQotI2lmICFQTEFURk9STShJT1MpCi0gICAgaWYgKF9DRlVSTFJlcXVlc3RDb3B5UHJvdG9j
b2xQcm9wZXJ0eUZvcktleShtX2hhbmRsZS0+Zmlyc3RSZXF1ZXN0KCkuY2ZVUkxSZXF1ZXN0KERv
Tm90VXBkYXRlSFRUUEJvZHkpLCBDRlNUUigiRm9yY2VIVE1MTUlNRVR5cGUiKSkpCi0gICAgICAg
IENGVVJMUmVzcG9uc2VTZXRNSU1FVHlwZShjZlJlc3BvbnNlLCBDRlNUUigidGV4dC9odG1sIikp
OwotI2VuZGlmIC8vICFQTEFURk9STShJT1MpCi0jZWxzZQogICAgIGlmICghQ0ZVUkxSZXNwb25z
ZUdldE1JTUVUeXBlKGNmUmVzcG9uc2UpKQogICAgICAgICBhZGp1c3RNSU1FVHlwZUlmTmVjZXNz
YXJ5KGNmUmVzcG9uc2UpOwogCkBAIC0xNjUsNyArMTI2LDYgQEAgdm9pZCBTeW5jaHJvbm91c1Jl
c291cmNlSGFuZGxlQ0ZVUkxDb25uZQogICAgICAgICBBU1NFUlQoIW1faGFuZGxlLT5zaG91bGRD
b250ZW50U25pZmYoKSk7CiAgICAgICAgIHNldERlZmF1bHRNSU1FVHlwZShjZlJlc3BvbnNlKTsK
ICAgICB9Ci0jZW5kaWYKIAogI2lmIFVTRShRVUlDS19MT09LKQogICAgIG1faGFuZGxlLT5zZXRR
dWlja0xvb2tIYW5kbGUoUXVpY2tMb29rSGFuZGxlOjpjcmVhdGUobV9oYW5kbGUsIHRoaXMsIGNm
UmVzcG9uc2UpKTsKQEAgLTE3NCwxMSArMTM0LDcgQEAgdm9pZCBTeW5jaHJvbm91c1Jlc291cmNl
SGFuZGxlQ0ZVUkxDb25uZQogI2VuZGlmCiAgICAgCiAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNv
dXJjZVJlc3BvbnNlKGNmUmVzcG9uc2UpOwotI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUo
V0VCX1RJTUlORykKLSAgICBSZXNvdXJjZUhhbmRsZTo6Z2V0Q29ubmVjdGlvblRpbWluZ0RhdGEo
Y29ubmVjdGlvbiwgcmVzb3VyY2VSZXNwb25zZS5uZXR3b3JrTG9hZFRpbWluZygpKTsKLSNlbHNl
CiAgICAgVU5VU0VEX1BBUkFNKGNvbm5lY3Rpb24pOwotI2VuZGlmCiAgICAgCiAgICAgbV9oYW5k
bGUtPmNsaWVudCgpLT5kaWRSZWNlaXZlUmVzcG9uc2UobV9oYW5kbGUsIFdURk1vdmUocmVzb3Vy
Y2VSZXNwb25zZSkpOwogfQpAQCAtMjI0LDcgKzE4MCw2IEBAIHZvaWQgU3luY2hyb25vdXNSZXNv
dXJjZUhhbmRsZUNGVVJMQ29ubmUKIAogQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZiBTeW5jaHJvbm91
c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OndpbGxDYWNoZVJlc3BvbnNl
KENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYgY2FjaGVkUmVzcG9uc2UpCiB7Ci0jaWYgUExBVEZPUk0o
V0lOKQogICAgIC8vIFdvcmthcm91bmQgZm9yIDxyZGFyOi8vcHJvYmxlbS82MzAwOTkwPiBDYWNo
aW5nIGRvZXMgbm90IHJlc3BlY3QgVmFyeSBIVFRQIGhlYWRlci4KICAgICAvLyBGSVhNRTogV2Vi
Q29yZSBjYWNoZSBoYXMgaXNzdWVzIHdpdGggVmFyeSwgdG9vIChidWcgNTg3OTcsIGJ1ZyA3MTUw
OSkuCiAgICAgQ0ZVUkxSZXNwb25zZVJlZiB3cmFwcGVkUmVzcG9uc2UgPSBDRkNhY2hlZFVSTFJl
c3BvbnNlR2V0V3JhcHBlZFJlc3BvbnNlKGNhY2hlZFJlc3BvbnNlKTsKQEAgLTIzNCwxNiArMTg5
LDggQEAgQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZiBTeW5jaHJvbm91c1Jlc291cgogICAgICAgICBp
ZiAodmFyeVZhbHVlKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQotI2VuZGlmIC8vIFBM
QVRGT1JNKFdJTikKLQotI2lmIFBMQVRGT1JNKFdJTikKICAgICBpZiAobV9oYW5kbGUtPmNsaWVu
dCgpICYmICFtX2hhbmRsZS0+Y2xpZW50KCktPnNob3VsZENhY2hlUmVzcG9uc2UobV9oYW5kbGUs
IGNhY2hlZFJlc3BvbnNlKSkKICAgICAgICAgcmV0dXJuIDA7Ci0jZWxzZQotICAgIENGQ2FjaGVk
VVJMUmVzcG9uc2VSZWYgbmV3UmVzcG9uc2UgPSBtX2hhbmRsZS0+Y2xpZW50KCktPndpbGxDYWNo
ZVJlc3BvbnNlKG1faGFuZGxlLCBjYWNoZWRSZXNwb25zZSk7Ci0gICAgaWYgKG5ld1Jlc3BvbnNl
ICE9IGNhY2hlZFJlc3BvbnNlKQotICAgICAgICByZXR1cm4gbmV3UmVzcG9uc2U7Ci0jZW5kaWYK
IAogICAgIENGUmV0YWluKGNhY2hlZFJlc3BvbnNlKTsKICAgICByZXR1cm4gY2FjaGVkUmVzcG9u
c2U7CkBAIC0yODAsMTQgKzIyNyw3IEBAIEJvb2xlYW4gU3luY2hyb25vdXNSZXNvdXJjZUhhbmRs
ZUNGVVJMQ28KIAogICAgIExPRyhOZXR3b3JrLCAiQ0ZOZXQgLSBTeW5jaHJvbm91c1Jlc291cmNl
SGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OmNhblJlc3BvbmRUb1Byb3RlY3Rpb25TcGFj
ZShoYW5kbGU9JXAgKCVzKSIsIG1faGFuZGxlLCBtX2hhbmRsZS0+Zmlyc3RSZXF1ZXN0KCkudXJs
KCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAKLSNpZiBQTEFURk9STShJT1MpCi0gICAgUHJv
dGVjdGlvblNwYWNlIGNvcmVQcm90ZWN0aW9uU3BhY2UgPSBQcm90ZWN0aW9uU3BhY2UocHJvdGVj
dGlvblNwYWNlKTsKLSAgICBpZiAoY29yZVByb3RlY3Rpb25TcGFjZS5hdXRoZW50aWNhdGlvblNj
aGVtZSgpID09IFByb3RlY3Rpb25TcGFjZUF1dGhlbnRpY2F0aW9uU2NoZW1lVW5rbm93bikKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBtX2hhbmRsZS0+Y2FuQXV0aGVudGljYXRl
QWdhaW5zdFByb3RlY3Rpb25TcGFjZShjb3JlUHJvdGVjdGlvblNwYWNlKTsKLSNlbHNlCiAgICAg
cmV0dXJuIG1faGFuZGxlLT5jYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKGNv
cmUocHJvdGVjdGlvblNwYWNlKSk7Ci0jZW5kaWYKIH0KICNlbmRpZiAvLyBVU0UoUFJPVEVDVElP
Tl9TUEFDRV9BVVRIX0NBTExCQUNLKQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NmL1N5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU3lu
Y2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmgJKHJldmlzaW9u
IDIwNzEzOCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU3luY2hyb25v
dXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTIzLDEwICsyMyw5IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgU3luY2hy
b25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlX2gKLSNkZWZpbmUgU3lu
Y2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlX2gKKyNwcmFnbWEg
b25jZQogCi0jaWYgVVNFKENGTkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogCiAj
aW5jbHVkZSAiUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5oIgogCkBAIC02
Nyw2ICs2Niw0IEBAIHByaXZhdGU6CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUuCiAKLSNlbmRp
ZiAvLyBVU0UoQ0ZORVRXT1JLKQotCi0jZW5kaWYgLy8gUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5l
Y3Rpb25EZWxlZ2F0ZV9oCisjZW5kaWYgLy8gVVNFKENGVVJMQ09OTkVDVElPTikKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvQ3JlZGVudGlhbENvY29hLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9DcmVkZW50
aWFsQ29jb2EuaAkocmV2aXNpb24gMjA3MTM4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jb2NvYS9DcmVkZW50aWFsQ29jb2EuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsMTcg
KzIzLDEyIEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lm
bmRlZiBDcmVkZW50aWFsQ29jb2FfaAotI2RlZmluZSBDcmVkZW50aWFsQ29jb2FfaAorI3ByYWdt
YSBvbmNlCiAKICNpbmNsdWRlICJDcmVkZW50aWFsQmFzZS5oIgogI2luY2x1ZGUgPFNlY3VyaXR5
L1NlY0Jhc2UuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKLSNpZiBVU0UoQ0ZORVRX
T1JLKQotI2luY2x1ZGUgIkNGTmV0d29ya1NQSS5oIgotI2VuZGlmCi0KIE9CSkNfQ0xBU1MgTlNV
UkxDcmVkZW50aWFsOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01MiwxOCArNDcsMTIgQEAg
cHVibGljOgogCiAgICAgQ3JlZGVudGlhbChjb25zdCBDcmVkZW50aWFsJiwgQ3JlZGVudGlhbFBl
cnNpc3RlbmNlKTsKIAotI2lmIFVTRShDRk5FVFdPUkspCi0gICAgZXhwbGljaXQgQ3JlZGVudGlh
bChDRlVSTENyZWRlbnRpYWxSZWYpOwotI2VuZGlmCiAgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGlj
aXQgQ3JlZGVudGlhbChOU1VSTENyZWRlbnRpYWwgKik7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBi
b29sIGlzRW1wdHkoKSBjb25zdDsKIAogICAgIGJvb2wgZW5jb2RpbmdSZXF1aXJlc1BsYXRmb3Jt
RGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fbnNDcmVkZW50aWFsICYmIGVuY29kaW5nUmVxdWlyZXNQ
bGF0Zm9ybURhdGEobV9uc0NyZWRlbnRpYWwuZ2V0KCkpOyB9CiAKLSNpZiBVU0UoQ0ZORVRXT1JL
KQotICAgIENGVVJMQ3JlZGVudGlhbFJlZiBjZkNyZWRlbnRpYWwoKSBjb25zdDsKLSNlbmRpZgog
ICAgIFdFQkNPUkVfRVhQT1JUIE5TVVJMQ3JlZGVudGlhbCAqbnNDcmVkZW50aWFsKCkgY29uc3Q7
CiAKICAgICBzdGF0aWMgYm9vbCBwbGF0Zm9ybUNvbXBhcmUoY29uc3QgQ3JlZGVudGlhbCYsIGNv
bnN0IENyZWRlbnRpYWwmKTsKQEAgLTc1LDUgKzY0LDMgQEAgcHJpdmF0ZToKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIENyZWRlbnRpYWxDb2NvYV9oCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL0NyZWRlbnRpYWxDb2NvYS5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL0NyZWRl
bnRpYWxDb2NvYS5tbQkocmV2aXNpb24gMjA3MTM4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jb2NvYS9DcmVkZW50aWFsQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2
LDEzICsyNiw2IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIkNyZWRlbnRpYWxDb2Nv
YS5oIgogCi0jaWYgVVNFKENGTkVUV09SSykKLUBpbnRlcmZhY2UgTlNVUkxDcmVkZW50aWFsIChX
ZWJEZXRhaWxzKQotLSAoaWQpX2luaXRXaXRoQ0ZVUkxDcmVkZW50aWFsOihDRlVSTENyZWRlbnRp
YWxSZWYpY3JlZGVudGlhbDsKLS0gKENGVVJMQ3JlZGVudGlhbFJlZikgX0NGVVJMQ3JlZGVudGlh
bDsKLUBlbmQKLSNlbmRpZgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBOU1VSTENy
ZWRlbnRpYWxQZXJzaXN0ZW5jZSB0b05TVVJMQ3JlZGVudGlhbFBlcnNpc3RlbmNlKENyZWRlbnRp
YWxQZXJzaXN0ZW5jZSBwZXJzaXN0ZW5jZSkKQEAgLTg0LDI2ICs3NywxMiBAQCBDcmVkZW50aWFs
OjpDcmVkZW50aWFsKGNvbnN0IENyZWRlbnRpYWwmCiAgICAgfQogfQogCi0jaWYgVVNFKENGTkVU
V09SSykKLUNyZWRlbnRpYWw6OkNyZWRlbnRpYWwoQ0ZVUkxDcmVkZW50aWFsUmVmIGNyZWRlbnRp
YWwpCi0gICAgOiBDcmVkZW50aWFsKGFkb3B0TlMoW1tOU1VSTENyZWRlbnRpYWwgYWxsb2NdIF9p
bml0V2l0aENGVVJMQ3JlZGVudGlhbDpjcmVkZW50aWFsXSkuZ2V0KCkpCi17Ci19Ci0jZW5kaWYK
LQogQ3JlZGVudGlhbDo6Q3JlZGVudGlhbChOU1VSTENyZWRlbnRpYWwgKmNyZWRlbnRpYWwpCiAg
ICAgOiBDcmVkZW50aWFsQmFzZShjcmVkZW50aWFsLnVzZXIsIGNyZWRlbnRpYWwucGFzc3dvcmQs
IHRvQ3JlZGVudGlhbFBlcnNpc3RlbmNlKGNyZWRlbnRpYWwucGVyc2lzdGVuY2UpKQogICAgICwg
bV9uc0NyZWRlbnRpYWwoY3JlZGVudGlhbCkKIHsKIH0KIAotI2lmIFVTRShDRk5FVFdPUkspCi1D
RlVSTENyZWRlbnRpYWxSZWYgQ3JlZGVudGlhbDo6Y2ZDcmVkZW50aWFsKCkgY29uc3QKLXsKLSAg
ICByZXR1cm4gW25zQ3JlZGVudGlhbCgpIF9DRlVSTENyZWRlbnRpYWxdOwotfQotI2VuZGlmCi0K
IE5TVVJMQ3JlZGVudGlhbCAqQ3JlZGVudGlhbDo6bnNDcmVkZW50aWFsKCkgY29uc3QKIHsKICAg
ICBpZiAobV9uc0NyZWRlbnRpYWwpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NvY29hL1Byb3RlY3Rpb25TcGFjZUNvY29hLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9Qcm90ZWN0aW9uU3BhY2VDb2NvYS5oCShyZXZp
c2lvbiAyMDcxMzgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1By
b3RlY3Rpb25TcGFjZUNvY29hLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDE2ICsyMywxMSBAQAog
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgUHJvdGVj
dGlvblNwYWNlQ29jb2FfaAotI2RlZmluZSBQcm90ZWN0aW9uU3BhY2VDb2NvYV9oCisjcHJhZ21h
IG9uY2UKIAogI2luY2x1ZGUgIlByb3RlY3Rpb25TcGFjZUJhc2UuaCIKICNpbmNsdWRlIDx3dGYv
UmV0YWluUHRyLmg+CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotdHlwZWRlZiBzdHJ1Y3QgX0NGVVJM
UHJvdGVjdGlvblNwYWNlKiBDRlVSTFByb3RlY3Rpb25TcGFjZVJlZjsKLSNlbmRpZgotCiBPQkpD
X0NMQVNTIE5TVVJMUHJvdGVjdGlvblNwYWNlOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00
Nyw5ICs0Miw2IEBAIHB1YmxpYzoKIAogICAgIFByb3RlY3Rpb25TcGFjZShXVEY6Okhhc2hUYWJs
ZURlbGV0ZWRWYWx1ZVR5cGUgZGVsZXRlZFZhbHVlKSA6IFByb3RlY3Rpb25TcGFjZUJhc2UoZGVs
ZXRlZFZhbHVlKSB7IH0KIAotI2lmIFVTRShDRk5FVFdPUkspCi0gICAgZXhwbGljaXQgUHJvdGVj
dGlvblNwYWNlKENGVVJMUHJvdGVjdGlvblNwYWNlUmVmKTsKLSNlbmRpZgogICAgIFdFQkNPUkVf
RVhQT1JUIGV4cGxpY2l0IFByb3RlY3Rpb25TcGFjZShOU1VSTFByb3RlY3Rpb25TcGFjZSAqKTsK
IAogICAgIHN0YXRpYyBib29sIHBsYXRmb3JtQ29tcGFyZShjb25zdCBQcm90ZWN0aW9uU3BhY2Um
IGEsIGNvbnN0IFByb3RlY3Rpb25TcGFjZSYgYik7CkBAIC01OCw5ICs1MCw2IEBAIHB1YmxpYzoK
IAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgcmVjZWl2ZXNDcmVkZW50aWFsU2VjdXJlbHkoKSBj
b25zdDsKIAotI2lmIFVTRShDRk5FVFdPUkspCi0gICAgQ0ZVUkxQcm90ZWN0aW9uU3BhY2VSZWYg
Y2ZTcGFjZSgpIGNvbnN0OwotI2VuZGlmCiAgICAgV0VCQ09SRV9FWFBPUlQgTlNVUkxQcm90ZWN0
aW9uU3BhY2UgKm5zU3BhY2UoKSBjb25zdDsKIAogcHJpdmF0ZToKQEAgLTcwLDUgKzU5LDMgQEAg
cHJpdmF0ZToKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIFByb3Rl
Y3Rpb25TcGFjZUNvY29hX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y29jb2EvUHJvdGVjdGlvblNwYWNlQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9Qcm90ZWN0aW9uU3BhY2VDb2NvYS5tbQkocmV2aXNp
b24gMjA3MTM4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9Qcm90
ZWN0aW9uU3BhY2VDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYsMjIgKzI2LDkgQEAKICNp
bXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiUHJvdGVjdGlvblNwYWNlQ29jb2EuaCIKIAotI2lm
IFVTRShDRk5FVFdPUkspCi1AaW50ZXJmYWNlIE5TVVJMUHJvdGVjdGlvblNwYWNlIChXZWJEZXRh
aWxzKQotLSAoQ0ZVUkxQcm90ZWN0aW9uU3BhY2VSZWYpIF9DRlVSTFByb3RlY3Rpb25TcGFjZTsK
LS0gKGlkKV9pbml0V2l0aENGVVJMUHJvdGVjdGlvblNwYWNlOihDRlVSTFByb3RlY3Rpb25TcGFj
ZVJlZiljZlByb3RTcGFjZTsKLUBlbmQKLSNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LSNpZiBVU0UoQ0ZORVRXT1JLKQotUHJvdGVjdGlvblNwYWNlOjpQcm90ZWN0aW9uU3BhY2UoQ0ZV
UkxQcm90ZWN0aW9uU3BhY2VSZWYgc3BhY2UpCi0gICAgOiBQcm90ZWN0aW9uU3BhY2UoYWRvcHRO
UyhbW05TVVJMUHJvdGVjdGlvblNwYWNlIGFsbG9jXSBfaW5pdFdpdGhDRlVSTFByb3RlY3Rpb25T
cGFjZTpzcGFjZV0pLmdldCgpKQotewotfQotI2VuZGlmCi0KIHN0YXRpYyBQcm90ZWN0aW9uU3Bh
Y2VTZXJ2ZXJUeXBlIHR5cGUoTlNVUkxQcm90ZWN0aW9uU3BhY2UgKnNwYWNlKQogewogICAgIGlm
IChbc3BhY2UgaXNQcm94eV0pIHsKQEAgLTEwNSwxMyArOTIsNiBAQCBQcm90ZWN0aW9uU3BhY2U6
OlByb3RlY3Rpb25TcGFjZShOU1VSTFByCiAgICAgbV9uc1NwYWNlID0gc3BhY2U7CiB9CiAKLSNp
ZiBVU0UoQ0ZORVRXT1JLKQotQ0ZVUkxQcm90ZWN0aW9uU3BhY2VSZWYgUHJvdGVjdGlvblNwYWNl
OjpjZlNwYWNlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gW25zU3BhY2UoKSBfQ0ZVUkxQcm90ZWN0
aW9uU3BhY2VdOwotfQotI2VuZGlmCi0KIE5TVVJMUHJvdGVjdGlvblNwYWNlICpQcm90ZWN0aW9u
U3BhY2U6Om5zU3BhY2UoKSBjb25zdAogewogICAgIGlmIChtX25zU3BhY2UpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVxdWVzdENvY29hLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmVz
b3VyY2VSZXF1ZXN0Q29jb2EubW0JKHJldmlzaW9uIDIwNzEzOCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTUzLDE1ICs1Myw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIE5TVVJMUmVxdWVz
dCAqUmVzb3VyY2VSZXF1ZXN0Ojpuc1VSTFJlcXVlc3QoSFRUUEJvZHlVcGRhdGVQb2xpY3kgYm9k
eVBvbGljeSkgY29uc3QKIHsKICAgICB1cGRhdGVQbGF0Zm9ybVJlcXVlc3QoYm9keVBvbGljeSk7
Ci0jaWYgVVNFKENGTkVUV09SSykKLSAgICBpZiAoIW1fbnNSZXF1ZXN0KQotICAgICAgICBjb25z
dF9jYXN0PFJlc291cmNlUmVxdWVzdCo+KHRoaXMpLT51cGRhdGVOU1VSTFJlcXVlc3QoKTsKLSNl
bmRpZgogICAgIHJldHVybiBbW21fbnNSZXF1ZXN0LmdldCgpIHJldGFpbl0gYXV0b3JlbGVhc2Vd
OwogfQogCi0jaWYgIVVTRShDRk5FVFdPUkspCi0KIENGVVJMUmVxdWVzdFJlZiBSZXNvdXJjZVJl
cXVlc3Q6OmNmVVJMUmVxdWVzdChIVFRQQm9keVVwZGF0ZVBvbGljeSBib2R5UG9saWN5KSBjb25z
dAogewogICAgIHJldHVybiBbbnNVUkxSZXF1ZXN0KGJvZHlQb2xpY3kpIF9DRlVSTFJlcXVlc3Rd
OwpAQCAtMjE0LDggKzIwOCw2IEBAIHZvaWQgUmVzb3VyY2VSZXF1ZXN0OjpzZXRTdG9yYWdlU2Vz
c2lvbigKICAgICBtX25zUmVxdWVzdCA9IGFkb3B0TlMod2tDb3B5UmVxdWVzdFdpdGhTdG9yYWdl
U2Vzc2lvbihzdG9yYWdlU2Vzc2lvbiwgbV9uc1JlcXVlc3QuZ2V0KCkpKTsKIH0KIAotI2VuZGlm
IC8vIFVTRShDRk5FVFdPUkspCi0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8v
IFBMQVRGT1JNKENPQ09BKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
b2NvYS9SZXNvdXJjZVJlc3BvbnNlQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlc3BvbnNlQ29jb2EubW0JKHJldmlz
aW9uIDIwNzEzOCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmVz
b3VyY2VSZXNwb25zZUNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC03NSwxMyArNzUsOCBAQCB2
b2lkIFJlc291cmNlUmVzcG9uc2U6OmRpc2FibGVMYXp5SW5pdGlhCiAKIENlcnRpZmljYXRlSW5m
byBSZXNvdXJjZVJlc3BvbnNlOjpwbGF0Zm9ybUNlcnRpZmljYXRlSW5mbygpIGNvbnN0CiB7Ci0j
aWYgVVNFKENGTkVUV09SSykKLSAgICBBU1NFUlQobV9jZlJlc3BvbnNlKTsKLSAgICBDRlVSTFJl
c3BvbnNlUmVmIGNmUmVzcG9uc2UgPSBtX2NmUmVzcG9uc2UuZ2V0KCk7Ci0jZWxzZQogICAgIEFT
U0VSVChtX25zUmVzcG9uc2UpOwogICAgIENGVVJMUmVzcG9uc2VSZWYgY2ZSZXNwb25zZSA9IFtt
X25zUmVzcG9uc2UgX0NGVVJMUmVzcG9uc2VdOwotI2VuZGlmCiAKICAgICBpZiAoIWNmUmVzcG9u
c2UpCiAgICAgICAgIHJldHVybiB7IH07CkBAIC0xMTQsMzUgKzEwOSw2IEBAIENlcnRpZmljYXRl
SW5mbyBSZXNvdXJjZVJlc3BvbnNlOjpwbGF0Zm8KICNlbmRpZgogfQogCi0jaWYgVVNFKENGTkVU
V09SSykKLQotTlNVUkxSZXNwb25zZSAqUmVzb3VyY2VSZXNwb25zZTo6bnNVUkxSZXNwb25zZSgp
IGNvbnN0Ci17Ci0gICAgaWYgKCFtX25zUmVzcG9uc2UgJiYgIW1fY2ZSZXNwb25zZSAmJiAhbV9p
c051bGwpIHsKLSAgICAgICAgaW5pdE5TVVJMUmVzcG9uc2UoKTsKLSAgICAgICAgbV9jZlJlc3Bv
bnNlID0gW21fbnNSZXNwb25zZS5nZXQoKSBfQ0ZVUkxSZXNwb25zZV07Ci0gICAgICAgIHJldHVy
biBtX25zUmVzcG9uc2UuZ2V0KCk7Ci0gICAgfQotCi0gICAgaWYgKCFtX2NmUmVzcG9uc2UpCi0g
ICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICBpZiAoIW1fbnNSZXNwb25zZSkKLSAgICAgICAgbV9u
c1Jlc3BvbnNlID0gW05TVVJMUmVzcG9uc2UgX3Jlc3BvbnNlV2l0aENGVVJMUmVzcG9uc2U6bV9j
ZlJlc3BvbnNlLmdldCgpXTsKLQotICAgIHJldHVybiBtX25zUmVzcG9uc2UuZ2V0KCk7Ci19Ci0K
LVJlc291cmNlUmVzcG9uc2U6OlJlc291cmNlUmVzcG9uc2UoTlNVUkxSZXNwb25zZSogbnNSZXNw
b25zZSkKLSAgICA6IG1faW5pdExldmVsKFVuaW5pdGlhbGl6ZWQpCi0gICAgLCBtX2NmUmVzcG9u
c2UoW25zUmVzcG9uc2UgX0NGVVJMUmVzcG9uc2VdKQotICAgICwgbV9uc1Jlc3BvbnNlKG5zUmVz
cG9uc2UpCi17Ci0gICAgbV9pc051bGwgPSAhbnNSZXNwb25zZTsKLX0KLQotI2Vsc2UKLQogc3Rh
dGljIE5TU3RyaW5nKiBjb25zdCBjb21tb25IZWFkZXJGaWVsZHNbXSA9IHsKICAgICBAIkFnZSIs
IEAiQ2FjaGUtQ29udHJvbCIsIEAiQ29udGVudC1UeXBlIiwgQCJEYXRlIiwgQCJFdGFnIiwgQCJF
eHBpcmVzIiwgQCJMYXN0LU1vZGlmaWVkIiwgQCJQcmFnbWEiCiB9OwpAQCAtMjQyLDggKzIwOCw2
IEBAIGJvb2wgUmVzb3VyY2VSZXNwb25zZTo6cGxhdGZvcm1Db21wYXJlKGMKICAgICByZXR1cm4g
YS5uc1VSTFJlc3BvbnNlKCkgPT0gYi5uc1VSTFJlc3BvbnNlKCk7CiB9CiAKLSNlbmRpZiAvLyBV
U0UoQ0ZORVRXT1JLKQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBQTEFU
Rk9STShDT0NPQSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1F1
aWNrTG9vay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
aW9zL1F1aWNrTG9vay5oCShyZXZpc2lvbiAyMDcxMzgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2lvcy9RdWlja0xvb2suaAkod29ya2luZyBjb3B5KQpAQCAtMzMsMTAgKzMz
LDYgQEAKICNpbXBvcnQgPG9iamMvb2JqYy1ydW50aW1lLmg+CiAjaW1wb3J0IDx3dGYvUmVmUHRy
Lmg+CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotI2luY2x1ZGUgIkNGTmV0d29ya1NQSS5oIgotI2Vu
ZGlmCi0KIE9CSkNfQ0xBU1MgTlNEYXRhOwogT0JKQ19DTEFTUyBOU0RpY3Rpb25hcnk7CiBPQkpD
X0NMQVNTIE5TRmlsZUhhbmRsZTsKQEAgLTgxLDkgKzc3LDYgQEAgcHVibGljOgogICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBib29sIHNob3VsZENyZWF0ZUZvck1JTUVUeXBlKGNvbnN0IFN0cmlu
ZyYpOwogCiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxRdWlja0xvb2tIYW5kbGU+IGNyZWF0
ZShSZXNvdXJjZUhhbmRsZSosIE5TVVJMQ29ubmVjdGlvbiAqLCBOU1VSTFJlc3BvbnNlICosIGlk
IGRlbGVnYXRlKTsKLSNpZiBVU0UoQ0ZORVRXT1JLKQotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9w
dHI8UXVpY2tMb29rSGFuZGxlPiBjcmVhdGUoUmVzb3VyY2VIYW5kbGUqLCBTeW5jaHJvbm91c1Jl
c291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUqLCBDRlVSTFJlc3BvbnNlUmVmKTsK
LSNlbmRpZgogICAgIC8vIEZJWE1FOiBVc2Ugb2YgUmVzb3VyY2VMb2FkZXIgaGVyZSBpcyBhIHBs
YXRmb3JtIHZpb2xhdGlvbi4KICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjp1bmlxdWVf
cHRyPFF1aWNrTG9va0hhbmRsZT4gY3JlYXRlKFJlc291cmNlTG9hZGVyJiwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYpOwogCkBAIC05NSw5ICs4OCw2IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGRpZEZhaWwoKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIE5TVVJMUmVzcG9uc2Ug
Km5zUmVzcG9uc2UoKTsKLSNpZiBVU0UoQ0ZORVRXT1JLKQotICAgIENGVVJMUmVzcG9uc2VSZWYg
Y2ZSZXNwb25zZSgpOwotI2VuZGlmCiAKICAgICB2b2lkIHNldENsaWVudChQYXNzUmVmUHRyPFF1
aWNrTG9va0hhbmRsZUNsaWVudD4gY2xpZW50KSB7IG1fY2xpZW50ID0gY2xpZW50OyB9CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1F1aWNrTG9vay5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9RdWlja0xvb2su
bW0JKHJldmlzaW9uIDIwNzEzOCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
aW9zL1F1aWNrTG9vay5tbQkod29ya2luZyBjb3B5KQpAQCAtMTg1LDgxICsxODUsNiBAQCBjb25z
dCBjaGFyKiBXZWJDb3JlOjpRTFByZXZpZXdQcm90b2NvbCgpCiAgICAgcmV0dXJuIHByZXZpZXdQ
cm90b2NvbC5nZXQoKS5kYXRhKCk7CiB9CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotLy8gVGhlIHdh
eSBRdWlja0xvb2sgd29ya3MgaXMgd2UgcGFzcyBpdCBhbiBOU1VSTENvbm5lY3Rpb25EZWxlZ2F0
ZSBjYWxsYmFjayBvYmplY3QgYXQgY3JlYXRpb24KLS8vIHRpbWUuIFRoZW4gd2UgcGFzcyBpdCBh
bGwgdGhlIGRhdGEgYXMgd2UgcmVjZWl2ZSBpdC4gT25jZSB3ZSd2ZSBkb3dubG9hZGVkIHRoZSBm
dWxsIFVSTCwKLS8vIFF1aWNrTG9vayB0dXJucyBhcm91bmQgYW5kIHNlbmQgdXMsIHRocm91Z2gg
dGhpcyBkZWxlZ2F0ZSwgdGhlIEhUTUwgdmVyc2lvbiBvZiB0aGUgZmlsZSB3aGljaCB3ZQotLy8g
cGFzcyBvbiB0byBXZWJDb3JlLiBUaGUgZmxhZyBtX2ZpbmlzaGVkTG9hZGluZ0RhdGFJbnRvQ29u
dmVydGVyIGluIFF1aWNrTG9va0hhbmRsZSBkZWNpZGVzCi0vLyB3aGV0aGVyIHRvIHBhc3MgdGhl
IGRhdGEgdG8gUXVpY2tMb29rIG9yIFdlYkNvcmUuCi0vLwotLy8gVGhpcyB3b3JrcyBmaW5lIHdo
ZW4gdXNpbmcgTlMgQVBJcywgYnV0IHdoZW4gdXNpbmcgQ0ZOZXR3b3JrLCB3ZSBkb24ndCBoYXZl
IGEgTlNVUkxDb25uZWN0aW9uRGVsZWdhdGUuCi0vLyBTbyB3ZSBjcmVhdGUgV2ViUXVpY2tMb29r
SGFuZGxlQXNEZWxlZ2F0ZSBhcyBhbiBpbnRlcm1lZGlhdGUgZGVsZWdhdGUgb2JqZWN0IGFuZCBw
YXNzIGl0IHRvCi0vLyBRTFByZXZpZXdDb252ZXJ0ZXIuIFRoZSBwcm94eSBkZWxlZ2F0ZSB0aGVu
IGZvcndhcmRzIHRoZSBtZXNzYWdlcyBvbiB0byB0aGUgQ0ZOZXR3b3JrIGNvZGUuCi1AaW50ZXJm
YWNlIFdlYlF1aWNrTG9va0hhbmRsZUFzRGVsZWdhdGUgOiBOU09iamVjdCA8TlNVUkxDb25uZWN0
aW9uRGVsZWdhdGUsIFdlYkNvcmVSZXNvdXJjZUxvYWRlckRlbGVnYXRlPiB7Ci0gICAgUmVmUHRy
PFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZT4gbV9jb25u
ZWN0aW9uRGVsZWdhdGU7Ci19Ci0KLS0gKGlkKWluaXRXaXRoQ29ubmVjdGlvbkRlbGVnYXRlOihT
eW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUqKWNvbm5lY3Rp
b25EZWxlZ2F0ZTsKLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIFdlYlF1aWNrTG9va0hhbmRsZUFz
RGVsZWdhdGUKLS0gKGlkKWluaXRXaXRoQ29ubmVjdGlvbkRlbGVnYXRlOihTeW5jaHJvbm91c1Jl
c291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUqKWNvbm5lY3Rpb25EZWxlZ2F0ZQot
ewotICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07Ci0gICAgaWYgKCFzZWxmKQotICAgICAgICByZXR1
cm4gbmlsOwotICAgIG1fY29ubmVjdGlvbkRlbGVnYXRlID0gY29ubmVjdGlvbkRlbGVnYXRlOwot
ICAgIHJldHVybiBzZWxmOwotfQotCi0tICh2b2lkKWNvbm5lY3Rpb246KE5TVVJMQ29ubmVjdGlv
biAqKWNvbm5lY3Rpb24gZGlkUmVjZWl2ZURhdGFBcnJheTooTlNBcnJheSAqKWRhdGFBcnJheQot
ewotICAgIFVOVVNFRF9QQVJBTShjb25uZWN0aW9uKTsKLSAgICBpZiAoIW1fY29ubmVjdGlvbkRl
bGVnYXRlKQotICAgICAgICByZXR1cm47Ci0gICAgTE9HKE5ldHdvcmssICJXZWJRdWlja0xvb2tI
YW5kbGVBc0RlbGVnYXRlOjpkaWRSZWNlaXZlRGF0YUFycmF5KCkiKTsKLSAgICBtX2Nvbm5lY3Rp
b25EZWxlZ2F0ZS0+ZGlkUmVjZWl2ZURhdGFBcnJheShyZWludGVycHJldF9jYXN0PENGQXJyYXlS
ZWY+KGRhdGFBcnJheSkpOwotfQotCi0tICh2b2lkKWNvbm5lY3Rpb246KE5TVVJMQ29ubmVjdGlv
biAqKWNvbm5lY3Rpb24gZGlkUmVjZWl2ZURhdGE6KE5TRGF0YSAqKWRhdGEgbGVuZ3RoUmVjZWl2
ZWQ6KGxvbmcgbG9uZylsZW5ndGhSZWNlaXZlZAotewotICAgIFVOVVNFRF9QQVJBTShjb25uZWN0
aW9uKTsKLSAgICBpZiAoIW1fY29ubmVjdGlvbkRlbGVnYXRlKQotICAgICAgICByZXR1cm47Ci0g
ICAgTE9HKE5ldHdvcmssICJXZWJRdWlja0xvb2tIYW5kbGVBc0RlbGVnYXRlOjpkaWRSZWNlaXZl
RGF0YSgpIC0gZGF0YSBsZW5ndGggPSAlbGQiLCAobG9uZylbZGF0YSBsZW5ndGhdKTsKLQotICAg
IC8vIFF1aWNrTG9vayBjb2RlIHNlbmRzIHVzIGEgbmlsIGRhdGEgYXQgdGltZXMuIFRoZSBjaGVj
ayBiZWxvdyBpcyB0aGUgc2FtZSBhcyB0aGUgb25lIGluCi0gICAgLy8gUmVzb3VyY2VIYW5kbGVN
YWMuY3BwIGFkZGVkIGZvciBhIGRpZmZlcmVudCBidWcuCi0gICAgaWYgKCFbZGF0YSBsZW5ndGhd
KQotICAgICAgICByZXR1cm47Ci0gICAgbV9jb25uZWN0aW9uRGVsZWdhdGUtPmRpZFJlY2VpdmVE
YXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZEYXRhUmVmPihkYXRhKSwgc3RhdGljX2Nhc3Q8aW50Pihs
ZW5ndGhSZWNlaXZlZCkpOwotfQotCi0tICh2b2lkKWNvbm5lY3Rpb25EaWRGaW5pc2hMb2FkaW5n
OihOU1VSTENvbm5lY3Rpb24gKiljb25uZWN0aW9uCi17Ci0gICAgVU5VU0VEX1BBUkFNKGNvbm5l
Y3Rpb24pOwotICAgIGlmICghbV9jb25uZWN0aW9uRGVsZWdhdGUpCi0gICAgICAgIHJldHVybjsK
LSAgICBMT0coTmV0d29yaywgIldlYlF1aWNrTG9va0hhbmRsZUFzRGVsZWdhdGU6OmRpZEZpbmlz
aExvYWRpbmcoKSIpOwotICAgIG1fY29ubmVjdGlvbkRlbGVnYXRlLT5kaWRGaW5pc2hMb2FkaW5n
KCk7Ci19Ci0KLS0gKHZvaWQpY29ubmVjdGlvbjooTlNVUkxDb25uZWN0aW9uICopY29ubmVjdGlv
biBkaWRGYWlsV2l0aEVycm9yOihOU0Vycm9yICopZXJyb3IKLXsKLSAgICBVTlVTRURfUEFSQU0o
Y29ubmVjdGlvbik7Ci0gICAgaWYgKCFtX2Nvbm5lY3Rpb25EZWxlZ2F0ZSkKLSAgICAgICAgcmV0
dXJuOwotICAgIExPRyhOZXR3b3JrLCAiV2ViUXVpY2tMb29rSGFuZGxlQXNEZWxlZ2F0ZTo6ZGlk
RmFpbCgpIik7Ci0gICAgbV9jb25uZWN0aW9uRGVsZWdhdGUtPmRpZEZhaWwocmVpbnRlcnByZXRf
Y2FzdDxDRkVycm9yUmVmPihlcnJvcikpOwotfQotCi0tICh2b2lkKWRldGFjaEhhbmRsZQotewot
ICAgIG1fY29ubmVjdGlvbkRlbGVnYXRlID0gbnVsbHB0cjsKLX0KLUBlbmQKLSNlbmRpZgotCiBA
aW50ZXJmYWNlIFdlYlJlc291cmNlTG9hZGVyUXVpY2tMb29rRGVsZWdhdGUgOiBOU09iamVjdCA8
TlNVUkxDb25uZWN0aW9uRGVsZWdhdGUsIFdlYkNvcmVSZXNvdXJjZUxvYWRlckRlbGVnYXRlPiB7
CiAgICAgUmVmUHRyPFJlc291cmNlTG9hZGVyPiBfcmVzb3VyY2VMb2FkZXI7CiAgICAgQk9PTCBf
aGFzU2VudERpZFJlY2VpdmVSZXNwb25zZTsKQEAgLTQxMSwyNiArMzM2LDYgQEAgc3RkOjp1bmlx
dWVfcHRyPFF1aWNrTG9va0hhbmRsZT4gUXVpY2tMbwogICAgIHJldHVybiBxdWlja0xvb2tIYW5k
bGU7CiB9CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotc3RkOjp1bmlxdWVfcHRyPFF1aWNrTG9va0hh
bmRsZT4gUXVpY2tMb29rSGFuZGxlOjpjcmVhdGUoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgU3lu
Y2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlKiBjb25uZWN0aW9u
RGVsZWdhdGUsIENGVVJMUmVzcG9uc2VSZWYgY2ZSZXNwb25zZSkKLXsKLSAgICBBU1NFUlRfQVJH
KGhhbmRsZSwgaGFuZGxlKTsKLSAgICBpZiAoaGFuZGxlLT5maXJzdFJlcXVlc3QoKS5yZXF1ZXN0
ZXIoKSAhPSBSZXNvdXJjZVJlcXVlc3Q6OlJlcXVlc3Rlcjo6TWFpbiB8fCAhW1FMUHJldmlld0dl
dFN1cHBvcnRlZE1JTUVUeXBlc1NldCgpIGNvbnRhaW5zT2JqZWN0OihOU1N0cmluZyAqKUNGVVJM
UmVzcG9uc2VHZXRNSU1FVHlwZShjZlJlc3BvbnNlKV0pCi0gICAgICAgIHJldHVybiBudWxscHRy
OwotCi0gICAgTlNVUkxSZXNwb25zZSAqbnNSZXNwb25zZSA9IFtOU1VSTFJlc3BvbnNlIF9yZXNw
b25zZVdpdGhDRlVSTFJlc3BvbnNlOmNmUmVzcG9uc2VdOwotICAgIFdlYlF1aWNrTG9va0hhbmRs
ZUFzRGVsZWdhdGUgKmRlbGVnYXRlID0gW1tbV2ViUXVpY2tMb29rSGFuZGxlQXNEZWxlZ2F0ZSBh
bGxvY10gaW5pdFdpdGhDb25uZWN0aW9uRGVsZWdhdGU6Y29ubmVjdGlvbkRlbGVnYXRlXSBhdXRv
cmVsZWFzZV07Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFF1aWNrTG9va0hhbmRsZT4gcXVpY2tMb29r
SGFuZGxlKG5ldyBRdWlja0xvb2tIYW5kbGUoW2hhbmRsZS0+Zmlyc3RSZXF1ZXN0KCkubnNVUkxS
ZXF1ZXN0KERvTm90VXBkYXRlSFRUUEJvZHkpIFVSTF0sIG5pbCwgbnNSZXNwb25zZSwgZGVsZWdh
dGUpKTsKLSAgICBoYW5kbGUtPmNsaWVudCgpLT5kaWRDcmVhdGVRdWlja0xvb2tIYW5kbGUoKnF1
aWNrTG9va0hhbmRsZSk7Ci0gICAgcmV0dXJuIHF1aWNrTG9va0hhbmRsZTsKLX0KLQotQ0ZVUkxS
ZXNwb25zZVJlZiBRdWlja0xvb2tIYW5kbGU6OmNmUmVzcG9uc2UoKQotewotICAgIHJldHVybiBb
bV9uc1Jlc3BvbnNlIF9DRlVSTFJlc3BvbnNlXTsKLX0KLSNlbmRpZgotCiBib29sIFF1aWNrTG9v
a0hhbmRsZTo6c2hvdWxkQ3JlYXRlRm9yTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkK
IHsKICAgICByZXR1cm4gW1FMUHJldmlld0dldFN1cHBvcnRlZE1JTUVUeXBlc1NldCgpIGNvbnRh
aW5zT2JqZWN0Om1pbWVUeXBlXTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvaW9zL1Jlc291cmNlSGFuZGxlSU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvaW9zL1Jlc291cmNlSGFuZGxlSU9TLm1tCShyZXZpc2lvbiAyMDcx
MzgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9SZXNvdXJjZUhhbmRs
ZUlPUy5tbQkobm9uZXhpc3RlbnQpCkBAIC0xLDM5ICswLDAgQEAKLS8vCi0vLyAgUmVzb3VyY2VI
YW5kbGVJUGhvbmUubW0KLS8vICBXZWJDb3JlCi0vLwotLy8gIENvcHlyaWdodCAyMDExIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2lt
cG9ydCAiUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oIgotCi0jaWYgVVNFKENGTkVUV09SSykKLQot
I2ltcG9ydCA8Q0ZOZXR3b3JrL0NGU29ja2V0U3RyZWFtUHJpdi5oPgotI2ltcG9ydCA8Rm91bmRh
dGlvbi9OU1VSTFJlcXVlc3RQcml2YXRlLmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUNGTXV0YWJsZURpY3Rpb25hcnlSZWYgUmVzb3VyY2VI
YW5kbGU6OmNyZWF0ZVNTTFByb3BlcnRpZXNGcm9tTlNVUkxSZXF1ZXN0KGNvbnN0IFJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCkKLXsKLSAgICBOU1N0cmluZyAqaG9zdCA9IHJlcXVlc3QudXJsKCku
aG9zdCgpOwotICAgIE5TQXJyYXkgKmNlcnRBcnJheSA9IFtOU1VSTFJlcXVlc3QgYWxsb3dzU3Bl
Y2lmaWNIVFRQU0NlcnRpZmljYXRlRm9ySG9zdDpob3N0XTsKLSAgICBCT09MIGFsbG93c0FueUNl
cnRpZmljYXRlID0gW05TVVJMUmVxdWVzdCBhbGxvd3NBbnlIVFRQU0NlcnRpZmljYXRlRm9ySG9z
dDpob3N0XTsKLSAgICBpZiAoIWNlcnRBcnJheSAmJiAhYWxsb3dzQW55Q2VydGlmaWNhdGUpCi0g
ICAgICAgIHJldHVybiAwOwotCi0gICAgQ0ZNdXRhYmxlRGljdGlvbmFyeVJlZiBzc2xQcm9wcyA9
IENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMCwgJmtDRlR5
cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNr
cyk7Ci0gICAgaWYgKGNlcnRBcnJheSkKLSAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoc3Ns
UHJvcHMsIF9rQ0ZTdHJlYW1TU0xUcnVzdGVkTGVhZkNlcnRpZmljYXRlcywgKENGVHlwZVJlZikg
Y2VydEFycmF5KTsKLQotICAgIGlmIChhbGxvd3NBbnlDZXJ0aWZpY2F0ZSkKLSAgICAgICAgQ0ZE
aWN0aW9uYXJ5U2V0VmFsdWUoc3NsUHJvcHMsIGtDRlN0cmVhbVNTTFZhbGlkYXRlc0NlcnRpZmlj
YXRlQ2hhaW4sIGtDRkJvb2xlYW5GYWxzZSk7Ci0gICAgcmV0dXJuIHNzbFByb3BzOwotfQotCi19
Ci0KLSNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUmVz
b3VyY2VSZXF1ZXN0SU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvaW9zL1Jlc291cmNlUmVxdWVzdElPUy5tbQkocmV2aXNpb24gMjA3MTM4KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUmVzb3VyY2VSZXF1ZXN0SU9TLm1t
CShub25leGlzdGVudCkKQEAgLTEsNzcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
NCBBcHBsZSwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJSZXNv
dXJjZVJlcXVlc3QuaCIKLQotI2lmIFBMQVRGT1JNKElPUykKLQotQGludGVyZmFjZSBOU1VSTFJl
cXVlc3QgKFdlYk5TVVJMUmVxdWVzdERldGFpbHMpCi0tIChDRlVSTFJlcXVlc3RSZWYpX0NGVVJM
UmVxdWVzdDsKLS0gKGlkKV9pbml0V2l0aENGVVJMUmVxdWVzdDooQ0ZVUkxSZXF1ZXN0UmVmKXJl
cXVlc3Q7Ci1AZW5kCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotI2lmIFVTRShDRk5FVFdPUksp
Ci0KLVJlc291cmNlUmVxdWVzdDo6UmVzb3VyY2VSZXF1ZXN0KE5TVVJMUmVxdWVzdCAqbnNSZXF1
ZXN0KQotICAgIDogUmVzb3VyY2VSZXF1ZXN0QmFzZSgpCi0gICAgLCBtX2NmUmVxdWVzdChbbnNS
ZXF1ZXN0IF9DRlVSTFJlcXVlc3RdKQotICAgICwgbV9uc1JlcXVlc3QobnNSZXF1ZXN0KQotewot
fQotCi12b2lkIFJlc291cmNlUmVxdWVzdDo6dXBkYXRlTlNVUkxSZXF1ZXN0KCkKLXsKLSAgICBp
ZiAobV9jZlJlcXVlc3QpCi0gICAgICAgIG1fbnNSZXF1ZXN0ID0gYWRvcHROUyhbW05TTXV0YWJs
ZVVSTFJlcXVlc3QgYWxsb2NdIF9pbml0V2l0aENGVVJMUmVxdWVzdDptX2NmUmVxdWVzdC5nZXQo
KV0pOwotfQotCi12b2lkIFJlc291cmNlUmVxdWVzdDo6Y2xlYXJPclVwZGF0ZU5TVVJMUmVxdWVz
dCgpCi17Ci0gICAgLy8gVGhlcmUgaXMgY2xpZW50IGNvZGUgdGhhdCBleHRlbmRzIE5TVVJMUmVx
dWVzdCBhbmQgZXhwZWN0cyB0byBnZXQgYmFjaywgaW4gdGhlIGRlbGVnYXRlCi0gICAgLy8gY2Fs
bGJhY2tzLCBhbiBvYmplY3Qgb2YgdGhlIHNhbWUgdHlwZSB0aGF0IHRoZXkgcGFzc2VkIGludG8g
V2ViS2l0LiBUbyBrZWVwIHRoZW4gcnVubmluZywgd2UKLSAgICAvLyBjcmVhdGUgYW4gb2JqZWN0
IG9mIHRoZSBzYW1lIHR5cGUgYW5kIHJldHVybiB0aGF0LiBTZWUgPHJkYXI6Ly85ODQzNTgyPi4K
LSAgICAvLyBBbHNvLCBkZXZlbG9wZXJzIHJlYWxseSByZWFsbHkgd2FudCBhbiBOU011dGFibGVV
UkxSZXF1ZXN0IHNvIHRyeSB0byBjcmVhdGUgYW4KLSAgICAvLyBOU011dGFibGVVUkxSZXF1ZXN0
IGluc3RlYWQgb2YgTlNVUkxSZXF1ZXN0LgotICAgIHN0YXRpYyBDbGFzcyBuc1VSTFJlcXVlc3RD
bGFzcyA9IFtOU1VSTFJlcXVlc3QgY2xhc3NdOwotICAgIHN0YXRpYyBDbGFzcyBuc011dGFibGVV
UkxSZXF1ZXN0Q2xhc3MgPSBbTlNNdXRhYmxlVVJMUmVxdWVzdCBjbGFzc107Ci0gICAgQ2xhc3Mg
cmVxdWVzdENsYXNzID0gW21fbnNSZXF1ZXN0LmdldCgpIGNsYXNzXTsKLQotICAgIGlmICghbV9j
ZlJlcXVlc3QpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChyZXF1ZXN0Q2xhc3MgJiYgcmVx
dWVzdENsYXNzICE9IG5zVVJMUmVxdWVzdENsYXNzICYmIHJlcXVlc3RDbGFzcyAhPSBuc011dGFi
bGVVUkxSZXF1ZXN0Q2xhc3MpCi0gICAgICAgIG1fbnNSZXF1ZXN0ID0gYWRvcHROUyhbW3JlcXVl
c3RDbGFzcyBhbGxvY10gX2luaXRXaXRoQ0ZVUkxSZXF1ZXN0Om1fY2ZSZXF1ZXN0LmdldCgpXSk7
Ci0gICAgZWxzZQotICAgICAgICBtX25zUmVxdWVzdCA9IG51bGxwdHI7Ci19Ci0KLSNlbmRpZiAv
LyBVU0UoQ0ZORVRXT1JLKQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBQ
TEFURk9STShJT1MpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9B
dXRoZW50aWNhdGlvbk1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL21hYy9BdXRoZW50aWNhdGlvbk1hYy5tbQkocmV2aXNpb24gMjA3MTM4KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQXV0aGVudGljYXRpb25NYWMubW0J
KHdvcmtpbmcgY29weSkKQEAgLTMyLDE4ICszMiwxMSBAQAogI2ltcG9ydCA8Rm91bmRhdGlvbi9O
U1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmg+CiAjaW1wb3J0IDxGb3VuZGF0aW9uL05TVVJM
UHJvdGVjdGlvblNwYWNlLmg+CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotI2ltcG9ydCAiQ0ZOU1VS
TENvbm5lY3Rpb25TUEkuaCIKLSNlbmRpZgotCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAog
QGludGVyZmFjZSBXZWJDb3JlQXV0aGVudGljYXRpb25DbGllbnRBc0NoYWxsZW5nZVNlbmRlciA6
IE5TT2JqZWN0IDxOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyPgogewogICAgIEF1
dGhlbnRpY2F0aW9uQ2xpZW50KiBtX2NsaWVudDsKLSNpZiBVU0UoQ0ZORVRXT1JLKQotICAgIENG
VVJMQXV0aENoYWxsZW5nZVJlZiBtX2NmQ2hhbGxlbmdlOwotI2VuZGlmCiB9CiAtIChpZClpbml0
V2l0aEF1dGhlbnRpY2F0aW9uQ2xpZW50OihBdXRoZW50aWNhdGlvbkNsaWVudCopY2xpZW50Owog
LSAoQXV0aGVudGljYXRpb25DbGllbnQqKWNsaWVudDsKQEAgLTEwMSw0NyArOTQsMTAgQEAgLSAo
dm9pZCljYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTooTgogICAgICAgICBtX2NsaWVudC0+
cmVjZWl2ZWRDYW5jZWxsYXRpb24oY29yZShjaGFsbGVuZ2UpKTsKIH0KIAotI2lmIFVTRShDRk5F
VFdPUkspCi0tICh2b2lkKXNldENGQ2hhbGxlbmdlOihDRlVSTEF1dGhDaGFsbGVuZ2VSZWYpY2hh
bGxlbmdlCi17Ci0gICAgbV9jZkNoYWxsZW5nZSA9IGNoYWxsZW5nZTsKLX0KLQotLSAoQ0ZVUkxB
dXRoQ2hhbGxlbmdlUmVmKWNmQ2hhbGxlbmdlCi17Ci0gICAgcmV0dXJuIG1fY2ZDaGFsbGVuZ2U7
Ci19Ci0jZW5kaWYKLQogQGVuZAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSNpZiBVU0UoQ0ZO
RVRXT1JLKQotCi1BdXRoZW50aWNhdGlvbkNoYWxsZW5nZSBjb3JlKE5TVVJMQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UgKm1hY0NoYWxsZW5nZSkKLXsKLSAgICBXZWJDb3JlQXV0aGVudGljYXRpb25D
bGllbnRBc0NoYWxsZW5nZVNlbmRlciAqY2hhbGxlbmdlU2VuZGVyID0gKFdlYkNvcmVBdXRoZW50
aWNhdGlvbkNsaWVudEFzQ2hhbGxlbmdlU2VuZGVyKikgW21hY0NoYWxsZW5nZSBzZW5kZXJdOwot
ICAgIHJldHVybiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShbY2hhbGxlbmdlU2VuZGVyIGNmQ2hh
bGxlbmdlXSwgW2NoYWxsZW5nZVNlbmRlciBjbGllbnRdKTsKLX0KLQotTlNVUkxBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSAqbWFjKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjb3JlQ2hh
bGxlbmdlKQotewotICAgIEF1dGhlbnRpY2F0aW9uQ2xpZW50KiBhdXRoQ2xpZW50ID0gY29yZUNo
YWxsZW5nZS5hdXRoZW50aWNhdGlvbkNsaWVudCgpOwotICAgIFJldGFpblB0cjxXZWJDb3JlQXV0
aGVudGljYXRpb25DbGllbnRBc0NoYWxsZW5nZVNlbmRlcj4gY2hhbGxlbmdlU2VuZGVyID0gYWRv
cHROUyhbW1dlYkNvcmVBdXRoZW50aWNhdGlvbkNsaWVudEFzQ2hhbGxlbmdlU2VuZGVyIGFsbG9j
XSBpbml0V2l0aEF1dGhlbnRpY2F0aW9uQ2xpZW50OmF1dGhDbGllbnRdKTsKLSAgICBSZXRhaW5Q
dHI8Q0ZVUkxBdXRoQ2hhbGxlbmdlUmVmPiBhdXRoQ2hhbGxlbmdlID0gY29yZUNoYWxsZW5nZS5j
ZlVSTEF1dGhDaGFsbGVuZ2VSZWYoKTsKLSAgICBpZiAoIWF1dGhDaGFsbGVuZ2UpCi0gICAgICAg
IGF1dGhDaGFsbGVuZ2UgPSBhZG9wdENGKGNyZWF0ZUNGKGNvcmVDaGFsbGVuZ2UpKTsKLSAgICBb
Y2hhbGxlbmdlU2VuZGVyLmdldCgpIHNldENGQ2hhbGxlbmdlOmF1dGhDaGFsbGVuZ2UuZ2V0KCld
OwotI2lmIFBMQVRGT1JNKElPUykKLSAgICByZXR1cm4gW1tOU1VSTEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlIF9jcmVhdGVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUZvckNGQXV0aENoYWxsZW5nZTph
dXRoQ2hhbGxlbmdlLmdldCgpIHNlbmRlcjpjaGFsbGVuZ2VTZW5kZXIuZ2V0KCldIGF1dG9yZWxl
YXNlXTsKLSNlbHNlCi0gICAgcmV0dXJuIFtbTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSBf
YXV0aGVudGljYXRpb25DaGFsbGVuZ2VGb3JDRkF1dGhDaGFsbGVuZ2U6YXV0aENoYWxsZW5nZS5n
ZXQoKSBzZW5kZXI6Y2hhbGxlbmdlU2VuZGVyLmdldCgpXSBhdXRvcmVsZWFzZV07Ci0jZW5kaWYK
LX0KLQotI2Vsc2UKLQogQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6OkF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlKGNvbnN0IFByb3RlY3Rpb25TcGFjZSYgcHJvdGVjdGlvblNwYWNlLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENyZWRlbnRpYWwm
IHByb3Bvc2VkQ3JlZGVudGlhbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB1bnNpZ25lZCBwcmV2aW91c0ZhaWx1cmVDb3VudCwKQEAgLTIxNSw2ICsx
NzEsNCBAQCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSBjb3JlKE5TVVJMQXV0aGVuCiAgICAgcmV0
dXJuIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKG1hY0NoYWxsZW5nZSk7CiB9CiAKLSNlbmRpZiAv
LyBVU0UoQ0ZORVRXT1JLKQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9Db29raWVKYXJNYWMubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQ29va2llSmFyTWFjLm1tCShy
ZXZpc2lvbiAyMDcxMzgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9D
b29raWVKYXJNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTI3LDE5ICsyNywxMiBAQAogI2ltcG9y
dCAiUGxhdGZvcm1Db29raWVKYXIuaCIKIAogI2ltcG9ydCAiQ0ZOZXR3b3JrU1BJLmgiCi0jaW1w
b3J0ICJOZXR3b3JrU3RvcmFnZVNlc3Npb24uaCIKLSNpbXBvcnQgIldlYkNvcmVTeXN0ZW1JbnRl
cmZhY2UuaCIKLSNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+Ci0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLXN0YXRpYyBOU0hUVFBDb29raWVTdG9yYWdlICpjb29raWVTdG9yYWdlKGNv
bnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYpOwotfQotCi0jaWYgIVVTRShDRk5FVFdPUkspCi0K
ICNpbXBvcnQgIkNvb2tpZS5oIgogI2ltcG9ydCAiQ29va2llU3RvcmFnZS5oIgorI2ltcG9ydCAi
TmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgiCiAjaW1wb3J0ICJVUkwuaCIKKyNpbXBvcnQgIldlYkNv
cmVTeXN0ZW1JbnRlcmZhY2UuaCIKKyNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+
CiAjaW1wb3J0IDx3dGYvT3B0aW9uYWwuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1N0cmluZ0J1aWxk
ZXIuaD4KIApAQCAtMTkxLDYgKzE4NCw3IEBAIHZvaWQgc2V0Q29va2llc0Zyb21ET00oY29uc3Qg
TmV0d29ya1N0b3IKICAgICBOU1VSTCAqY29va2llVVJMID0gdXJsOwogICAgIE5TRGljdGlvbmFy
eSAqaGVhZGVyRmllbGRzID0gW05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdDpjb29r
aWVTdHJpbmcgZm9yS2V5OkAiU2V0LUNvb2tpZSJdOwogCisgICAgLy8gRklYTUU6IElzIHRoaXMg
bmVlZGVkIG9uIGlPUywgdG9vPwogI2lmIFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJT
SU9OX01JTl9SRVFVSVJFRCA+PSAxMDExMDAKICAgICBOU0FycmF5ICp1bmZpbHRlcmVkQ29va2ll
cyA9IFtOU0hUVFBDb29raWUgX3BhcnNlZENvb2tpZXNXaXRoUmVzcG9uc2VIZWFkZXJGaWVsZHM6
aGVhZGVyRmllbGRzIGZvclVSTDpjb29raWVVUkxdOwogI2Vsc2UKQEAgLTI2MCw2ICsyNTQsMTUg
QEAgdm9pZCBkZWxldGVDb29raWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZQogICAgIEVORF9CTE9D
S19PQkpDX0VYQ0VQVElPTlM7CiB9CiAKK3N0YXRpYyBOU0hUVFBDb29raWVTdG9yYWdlICpjb29r
aWVTdG9yYWdlKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbikKK3sKKyAgICBh
dXRvIGNvb2tpZVN0b3JhZ2UgPSBzZXNzaW9uLmNvb2tpZVN0b3JhZ2UoKTsKKyAgICBpZiAoIWNv
b2tpZVN0b3JhZ2UgfHwgW05TSFRUUENvb2tpZVN0b3JhZ2Ugc2hhcmVkSFRUUENvb2tpZVN0b3Jh
Z2VdLl9jb29raWVTdG9yYWdlID09IGNvb2tpZVN0b3JhZ2UpCisgICAgICAgIHJldHVybiBbTlNI
VFRQQ29va2llU3RvcmFnZSBzaGFyZWRIVFRQQ29va2llU3RvcmFnZV07CisgICAgCisgICAgcmV0
dXJuIFtbW05TSFRUUENvb2tpZVN0b3JhZ2UgYWxsb2NdIF9pbml0V2l0aENGSFRUUENvb2tpZVN0
b3JhZ2U6Y29va2llU3RvcmFnZS5nZXQoKV0gYXV0b3JlbGVhc2VdOworfQorCiB2b2lkIGFkZENv
b2tpZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgdXJs
LCBjb25zdCBDb29raWUmIGNvb2tpZSkKIHsKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElP
TlM7CkBAIC0yODAsMTIgKzI4MywxMCBAQCB2b2lkIGFkZENvb2tpZShjb25zdCBOZXR3b3JrU3Rv
cmFnZVNlc3NpCiAgICAgICAgIE5TSFRUUENvb2tpZUV4cGlyZXM6IFtOU0RhdGUgZGF0ZVdpdGhU
aW1lSW50ZXJ2YWxTaW5jZTE5NzA6Y29va2llLmV4cGlyZXMgLyAxMDAwLjBdLAogICAgIH1dOwog
Ci0jaWYgIVVTRShDRk5FVFdPUkspCiAgICAgaWYgKCFjb29raWVTdG9yYWdlKSB7CiAgICAgICAg
IFtXZWJDb3JlOjpjb29raWVTdG9yYWdlKHNlc3Npb24pIHNldENvb2tpZTpodHRwQ29va2llXTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KLSNlbmRpZiAvLyAhVVNFKENGTkVUV09SSykKIAogICAg
IENGSFRUUENvb2tpZVN0b3JhZ2VTZXRDb29raWUoY29va2llU3RvcmFnZS5nZXQoKSwgW2h0dHBD
b29raWUgX0NGSFRUUENvb2tpZV0pOwogCkBAIC0zMDksMjEgKzMxMCw2IEBAIHZvaWQgZGVsZXRl
QWxsQ29va2llcyhjb25zdCBOZXR3b3JrU3RvcmEKICAgICB3a0RlbGV0ZUFsbEhUVFBDb29raWVz
KHNlc3Npb24uY29va2llU3RvcmFnZSgpLmdldCgpKTsKIH0KIAotfQotCi0jZW5kaWYgLy8gIVVT
RShDRk5FVFdPUkspCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RhdGljIE5TSFRUUENvb2tp
ZVN0b3JhZ2UgKmNvb2tpZVN0b3JhZ2UoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNz
aW9uKQotewotICAgIGF1dG8gY29va2llU3RvcmFnZSA9IHNlc3Npb24uY29va2llU3RvcmFnZSgp
OwotICAgIGlmICghY29va2llU3RvcmFnZSB8fCBbTlNIVFRQQ29va2llU3RvcmFnZSBzaGFyZWRI
VFRQQ29va2llU3RvcmFnZV0uX2Nvb2tpZVN0b3JhZ2UgPT0gY29va2llU3RvcmFnZSkKLSAgICAg
ICAgcmV0dXJuIFtOU0hUVFBDb29raWVTdG9yYWdlIHNoYXJlZEhUVFBDb29raWVTdG9yYWdlXTsK
LQotICAgIHJldHVybiBbW1tOU0hUVFBDb29raWVTdG9yYWdlIGFsbG9jXSBfaW5pdFdpdGhDRkhU
VFBDb29raWVTdG9yYWdlOmNvb2tpZVN0b3JhZ2UuZ2V0KCldIGF1dG9yZWxlYXNlXTsKLX0KLQog
dm9pZCBkZWxldGVDb29raWVzRm9ySG9zdG5hbWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lv
biYgc2Vzc2lvbiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGhvc3RuYW1lcykKIHsKICAgICBCRUdJ
Tl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CkBAIC0zNTMsNyArMzM5LDYgQEAgdm9pZCBkZWxldGVD
b29raWVzRm9ySG9zdG5hbWVzKGNvbnN0IE5ldAogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElP
TlM7CiB9CiAKLQogdm9pZCBkZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZShjb25zdCBOZXR3
b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRp
bWVfcG9pbnQgdGltZVBvaW50KQogewogICAgIGlmICghW05TSFRUUENvb2tpZVN0b3JhZ2UgaW5z
dGFuY2VzUmVzcG9uZFRvU2VsZWN0b3I6QHNlbGVjdG9yKHJlbW92ZUNvb2tpZXNTaW5jZURhdGU6
KV0pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9DcmVkZW50aWFs
U3RvcmFnZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL21hYy9DcmVkZW50aWFsU3RvcmFnZU1hYy5tbQkocmV2aXNpb24gMjA3MTM4KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQ3JlZGVudGlhbFN0b3JhZ2VNYWMubW0J
KHdvcmtpbmcgY29weSkKQEAgLTI2LDggKzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJDcmVkZW50aWFsU3RvcmFnZS5oIgogCi0jaWYgIVVTRShDRk5FVFdPUkspCi0KICNp
bmNsdWRlICJBdXRoZW50aWNhdGlvbk1hYy5oIgogI2luY2x1ZGUgIkNyZWRlbnRpYWwuaCIKICNp
bmNsdWRlICJQcm90ZWN0aW9uU3BhY2UuaCIKQEAgLTUyLDUgKzUwLDMgQEAgdm9pZCBDcmVkZW50
aWFsU3RvcmFnZTo6c2F2ZVRvUGVyc2lzdGVudAogI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKLQotI2VuZGlmIC8vICFVU0UoQ0ZORVRXT1JLKQpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9tYWMvRm9ybURhdGFTdHJlYW1NYWMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9Gb3JtRGF0YVN0cmVhbU1hYy5oCShy
ZXZpc2lvbiAyMDcxMzgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9G
b3JtRGF0YVN0cmVhbU1hYy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxMCArMjYsNyBAQAogICog
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KICAqLwogCi0jaWZuZGVmIEZvcm1EYXRhU3RyZWFtTWFjX2gKLSNkZWZpbmUgRm9y
bURhdGFTdHJlYW1NYWNfaAotCi0jaWYgIVVTRShDRk5FVFdPUkspCisjcHJhZ21hIG9uY2UKIAog
I2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKQEAgLTQwLDE1ICszNywxMSBAQCB0eXBlZGVmIGNv
bnN0IHN0cnVjdCBfQ0ZVUkxSZXF1ZXN0KiBDRlVSCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
ICAgIGNsYXNzIEZvcm1EYXRhOworY2xhc3MgRm9ybURhdGE7CiAKLSAgICB2b2lkIHNldEhUVFBC
b2R5KE5TTXV0YWJsZVVSTFJlcXVlc3QgKiwgRm9ybURhdGEqKTsKLSAgICBGb3JtRGF0YSogaHR0
cEJvZHlGcm9tU3RyZWFtKE5TSW5wdXRTdHJlYW0gKik7Cit2b2lkIHNldEhUVFBCb2R5KE5TTXV0
YWJsZVVSTFJlcXVlc3QgKiwgRm9ybURhdGEqKTsKK0Zvcm1EYXRhKiBodHRwQm9keUZyb21TdHJl
YW0oTlNJbnB1dFN0cmVhbSAqKTsKIAotICAgIENGU3RyaW5nUmVmIGZvcm1EYXRhU3RyZWFtTGVu
Z3RoUHJvcGVydHlOYW1lKCk7CitDRlN0cmluZ1JlZiBmb3JtRGF0YVN0cmVhbUxlbmd0aFByb3Bl
cnR5TmFtZSgpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyAhVVNFKENG
TkVUV09SSykKLQotI2VuZGlmIC8vIEZvcm1EYXRhU3RyZWFtTWFjX2gKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Zvcm1EYXRhU3RyZWFtTWFjLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Zvcm1EYXRhU3RyZWFt
TWFjLm1tCShyZXZpc2lvbiAyMDcxMzgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL21hYy9Gb3JtRGF0YVN0cmVhbU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjksOCArMjks
NiBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJGb3JtRGF0YVN0cmVhbU1hYy5oIgog
Ci0jaWYgIVVTRShDRk5FVFdPUkspCi0KICNpbXBvcnQgIkZvcm1EYXRhLmgiCiAjaW1wb3J0ICJG
b3JtRGF0YVN0cmVhbUNGTmV0LmgiCiAKQEAgLTUxLDUgKzQ5LDMgQEAgRm9ybURhdGEqIGh0dHBC
b2R5RnJvbVN0cmVhbShOU0lucHV0U3RyZQogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0K
LSNlbmRpZiAvLyAhVVNFKENGTkVUV09SSykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvbWFjL1Jlc291cmNlRXJyb3JNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VFcnJvck1hYy5tbQkocmV2aXNpb24g
MjA3MTM4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VF
cnJvck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzEsMTAgKzMxLDYgQEAKICNpbXBvcnQgPEZv
dW5kYXRpb24vRm91bmRhdGlvbi5oPgogI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMu
aD4KIAotI2lmIFBMQVRGT1JNKElPUykgJiYgVVNFKENGTkVUV09SSykKLSNpbXBvcnQgPENGTmV0
d29yay9DRlNvY2tldFN0cmVhbVByaXYuaD4KLSNlbmRpZgotCiBAaW50ZXJmYWNlIE5TRXJyb3Ig
KFdlYkV4dHJhcykKIC0gKE5TU3RyaW5nICopX3dlYl9sb2NhbGl6ZWREZXNjcmlwdGlvbjsKIEBl
bmQKQEAgLTkxLDg1ICs4Nyw2IEBAIC0gKHZvaWQpZW5jb2RlV2l0aENvZGVyOihOU0NvZGVyICop
Y29kZXIKIAogQGVuZAogCi0KLSNpZiBVU0UoQ0ZORVRXT1JLKQotc3RhdGljIE5TRXJyb3IgKk5T
RXJyb3JGcm9tQ0ZFcnJvcihDRkVycm9yUmVmIGNmRXJyb3IsIE5TVVJMICp1cmwpCi17Ci0gICAg
Q0ZJbmRleCBlcnJDb2RlID0gQ0ZFcnJvckdldENvZGUoY2ZFcnJvcik7Ci0gICAgaWYgKENGRXF1
YWwoQ0ZFcnJvckdldERvbWFpbihjZkVycm9yKSwga0NGRXJyb3JEb21haW5DRk5ldHdvcmspICYm
IGVyckNvZGUgPD0ga0NGVVJMRXJyb3JVbmtub3duICYmIGVyckNvZGUgPiAtNDAwMCkgewotICAg
ICAgICAvLyBUaGlzIGlzIGFuIFVSTCBlcnJvciBhbmQgbmVlZHMgdG8gYmUgdHJhbnNsYXRlZCB0
byB0aGUgTlNVUkxFcnJvckRvbWFpbgotICAgICAgICBpZCBrZXlzWzEwXSwgdmFsdWVzWzEwXTsK
LSAgICAgICAgQ0ZEaWN0aW9uYXJ5UmVmIHVzZXJJbmZvID0gQ0ZFcnJvckNvcHlVc2VySW5mbyhj
ZkVycm9yKTsKLSAgICAgICAgTlNFcnJvciAqcmVzdWx0OwotICAgICAgICBOU0ludGVnZXIgY291
bnQgPSAwOwotCi0gICAgICAgIGlmICh1cmwpIHsKLSAgICAgICAgICAgIGtleXNbY291bnRdID0g
TlNVUkxFcnJvckZhaWxpbmdVUkxFcnJvcktleTsKLSAgICAgICAgICAgIHZhbHVlc1tjb3VudF0g
PSB1cmw7Ci0gICAgICAgICAgICBjb3VudCArKzsKLQotICAgICAgICAgICAga2V5c1tjb3VudF0g
PSBOU1VSTEVycm9yRmFpbGluZ1VSTFN0cmluZ0Vycm9yS2V5OwotICAgICAgICAgICAgdmFsdWVz
W2NvdW50XSA9IFt1cmwgYWJzb2x1dGVTdHJpbmddOwotICAgICAgICAgICAgY291bnQgKys7Ci0g
ICAgICAgIH0KLQotICAgICAgICB2YWx1ZXNbY291bnRdID0gKGlkKUNGRGljdGlvbmFyeUdldFZh
bHVlKHVzZXJJbmZvLCBrQ0ZFcnJvckxvY2FsaXplZERlc2NyaXB0aW9uS2V5KTsKLSAgICAgICAg
aWYgKHZhbHVlc1tjb3VudF0pIHsKLSAgICAgICAgICAgIGtleXNbY291bnRdID0gTlNMb2NhbGl6
ZWREZXNjcmlwdGlvbktleTsKLSAgICAgICAgICAgIGNvdW50ICsrOwotICAgICAgICB9Ci0KLSAg
ICAgICAgdmFsdWVzW2NvdW50XSA9IChpZClDRkRpY3Rpb25hcnlHZXRWYWx1ZSh1c2VySW5mbywg
a0NGRXJyb3JMb2NhbGl6ZWRGYWlsdXJlUmVhc29uS2V5KTsKLSAgICAgICAgaWYgKHZhbHVlc1tj
b3VudF0pIHsKLSAgICAgICAgICAgIGtleXNbY291bnRdID0gTlNMb2NhbGl6ZWRGYWlsdXJlUmVh
c29uRXJyb3JLZXk7Ci0gICAgICAgICAgICBjb3VudCArKzsKLSAgICAgICAgfQotCi0gICAgICAg
IHZhbHVlc1tjb3VudF0gPSAoaWQpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUodXNlckluZm8sIGtDRkVy
cm9yTG9jYWxpemVkUmVjb3ZlcnlTdWdnZXN0aW9uS2V5KTsKLSAgICAgICAgaWYgKHZhbHVlc1tj
b3VudF0pIHsKLSAgICAgICAgICAgIGtleXNbY291bnRdID0gTlNMb2NhbGl6ZWRSZWNvdmVyeVN1
Z2dlc3Rpb25FcnJvcktleTsKLSAgICAgICAgICAgIGNvdW50ICsrOwotICAgICAgICB9Ci0KLSNw
cmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCi0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdu
b3JlZCAiLVdkZXByZWNhdGVkLWRlY2xhcmF0aW9ucyIKLSAgICAgICAgaWYgKHVzZXJJbmZvICYm
ICh2YWx1ZXNbY291bnRdID0gKGlkKUNGRGljdGlvbmFyeUdldFZhbHVlKHVzZXJJbmZvLCBrQ0ZT
dHJlYW1Qcm9wZXJ0eVNTTFBlZXJDZXJ0aWZpY2F0ZXMpKSAhPSBuaWwpIHsKLSAgICAgICAgICAg
IC8vIE5lZWQgdG8gdHJhbnNsYXRlIHRoZSBjZXJ0Ci0gICAgICAgICAgICBrZXlzW2NvdW50XSA9
IEAiTlNFcnJvclBlZXJDZXJ0aWZpY2F0ZUNoYWluS2V5IjsKLSAgICAgICAgICAgIGNvdW50ICsr
OwotCi0gICAgICAgICAgICB2YWx1ZXNbY291bnRdID0gKGlkKUNGRGljdGlvbmFyeUdldFZhbHVl
KHVzZXJJbmZvLCBfa0NGU3RyZWFtUHJvcGVydHlTU0xDbGllbnRDZXJ0aWZpY2F0ZXMpOwotICAg
ICAgICAgICAgaWYgKHZhbHVlc1tjb3VudF0pIHsKLSAgICAgICAgICAgICAgICBrZXlzW2NvdW50
XSA9IEAiTlNFcnJvckNsaWVudENlcnRpZmljYXRlQ2hhaW5LZXkiOwotICAgICAgICAgICAgICAg
IGNvdW50ICsrOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB2YWx1ZXNbY291bnRdID0g
KGlkKUNGRGljdGlvbmFyeUdldFZhbHVlKHVzZXJJbmZvLCBfa0NGU3RyZWFtUHJvcGVydHlTU0xD
bGllbnRDZXJ0aWZpY2F0ZVN0YXRlKTsKLSAgICAgICAgICAgIGlmICh2YWx1ZXNbY291bnRdKSB7
Ci0gICAgICAgICAgICAgICAga2V5c1tjb3VudF0gPSBAIk5TRXJyb3JDbGllbnRDZXJ0aWZpY2F0
ZVN0YXRlS2V5IjsKLSAgICAgICAgICAgICAgICBjb3VudCArKzsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgfQotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAotCi0gICAgICAgIGlmICh1c2Vy
SW5mbyAmJiAodmFsdWVzW2NvdW50XSA9IChpZClDRkRpY3Rpb25hcnlHZXRWYWx1ZSh1c2VySW5m
bywga0NGU3RyZWFtUHJvcGVydHlTU0xQZWVyVHJ1c3QpKSAhPSBuaWwpIHsKLSAgICAgICAgICAg
IGtleXNbY291bnRdID0gTlNVUkxFcnJvckZhaWxpbmdVUkxQZWVyVHJ1c3RFcnJvcktleTsKLSAg
ICAgICAgICAgIGNvdW50Kys7Ci0gICAgICAgIH0KLQotICAgICAgICBrZXlzW2NvdW50XSA9IE5T
VW5kZXJseWluZ0Vycm9yS2V5OwotICAgICAgICB2YWx1ZXNbY291bnRdID0gKGlkKWNmRXJyb3I7
Ci0gICAgICAgIGNvdW50ICsrOwotCi0gICAgICAgIHJlc3VsdCA9IFtXZWJDdXN0b21OU1VSTEVy
cm9yIGVycm9yV2l0aERvbWFpbjpOU1VSTEVycm9yRG9tYWluIGNvZGU6KGVyckNvZGUgPT0ga0NG
VVJMRXJyb3JVbmtub3duID8gKENGSW5kZXgpTlNVUkxFcnJvclVua25vd24gOiBlcnJDb2RlKSB1
c2VySW5mbzpbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0czp2YWx1ZXMgZm9yS2V5
czprZXlzIGNvdW50OmNvdW50XV07Ci0gICAgICAgIGlmICh1c2VySW5mbykKLSAgICAgICAgICAg
IENGUmVsZWFzZSh1c2VySW5mbyk7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQotICAg
IHJldHVybiAoTlNFcnJvciAqKWNmRXJyb3I7Ci19Ci0jZW5kaWYgLy8gVVNFKENGTkVUV09SSykK
LQogI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTkw
LDUzICsxMDcsNiBAQCBzdGF0aWMgUmV0YWluUHRyPE5TRXJyb3I+IGNyZWF0ZU5TRXJyb3JGCiAg
ICAgcmV0dXJuIGFkb3B0TlMoW1tOU0Vycm9yIGFsbG9jXSBpbml0V2l0aERvbWFpbjpyZXNvdXJj
ZUVycm9yLmRvbWFpbigpIGNvZGU6cmVzb3VyY2VFcnJvci5lcnJvckNvZGUoKSB1c2VySW5mbzp1
c2VySW5mby5nZXQoKV0pOwogfQogCi0jaWYgVVNFKENGTkVUV09SSykKLQotUmVzb3VyY2VFcnJv
cjo6UmVzb3VyY2VFcnJvcihOU0Vycm9yICplcnJvcikKLSAgICA6IFJlc291cmNlRXJyb3JCYXNl
KFR5cGU6Ok51bGwpCi0gICAgLCBtX2RhdGFJc1VwVG9EYXRlKGZhbHNlKQotICAgICwgbV9wbGF0
Zm9ybUVycm9yKHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZFcnJvclJlZj4oZXJyb3IpKQotewotICAgIGlm
IChlcnJvcikKLSAgICAgICAgc2V0VHlwZSgoW2Vycm9yIGNvZGVdID09IE5TVVJMRXJyb3JUaW1l
ZE91dCkgPyBUeXBlOjpUaW1lb3V0IDogVHlwZTo6R2VuZXJhbCk7Ci19Ci0KLU5TRXJyb3IgKlJl
c291cmNlRXJyb3I6Om5zRXJyb3IoKSBjb25zdAotewotICAgIGlmIChpc051bGwoKSkgewotICAg
ICAgICBBU1NFUlQoIW1fcGxhdGZvcm1FcnJvcik7Ci0gICAgICAgIHJldHVybiBuaWw7Ci0gICAg
fQotCi0gICAgaWYgKG1fcGxhdGZvcm1OU0Vycm9yKQotICAgICAgICByZXR1cm4gbV9wbGF0Zm9y
bU5TRXJyb3IuZ2V0KCk7Ci0KLSAgICBpZiAobV9wbGF0Zm9ybUVycm9yKSB7Ci0gICAgICAgIENG
RXJyb3JSZWYgZXJyb3IgPSBtX3BsYXRmb3JtRXJyb3IuZ2V0KCk7Ci0gICAgICAgIFJldGFpblB0
cjxDRkRpY3Rpb25hcnlSZWY+IHVzZXJJbmZvID0gYWRvcHRDRihDRkVycm9yQ29weVVzZXJJbmZv
KGVycm9yKSk7Ci0jaWYgUExBVEZPUk0oSU9TKQotICAgICAgICBtX3BsYXRmb3JtTlNFcnJvciA9
IE5TRXJyb3JGcm9tQ0ZFcnJvcihlcnJvciwgKE5TVVJMICopWyhOU0RpY3Rpb25hcnkgKil1c2Vy
SW5mby5nZXQoKSBvYmplY3RGb3JLZXk6KGlkKSBrQ0ZVUkxFcnJvckZhaWxpbmdVUkxFcnJvcktl
eV0pOwotICAgICAgICAvLyBJZiBOU0Vycm9yRnJvbUNGRXJyb3IgY3JlYXRlZCBhIG5ldyBOU0Vy
cm9yIGZvciB1cywgcmV0dXJuIHRoYXQuCi0gICAgICAgIGlmIChtX3BsYXRmb3JtTlNFcnJvci5n
ZXQoKSAhPSAoTlNFcnJvciAqKWVycm9yKQotICAgICAgICAgICAgcmV0dXJuIG1fcGxhdGZvcm1O
U0Vycm9yLmdldCgpOwotCi0gICAgICAgIC8vIE90aGVyd2lzZSBmYWxsIHRocm91Z2ggdG8gY3Jl
YXRlIGEgbmV3IE5TRXJyb3IgZnJvbSB0aGUgQ0ZFcnJvci4KLSNlbmRpZgotICAgICAgICBtX3Bs
YXRmb3JtTlNFcnJvciA9IGFkb3B0TlMoW1tOU0Vycm9yIGFsbG9jXSBpbml0V2l0aERvbWFpbjoo
TlNTdHJpbmcgKilDRkVycm9yR2V0RG9tYWluKGVycm9yKSBjb2RlOkNGRXJyb3JHZXRDb2RlKGVy
cm9yKSB1c2VySW5mbzooTlNEaWN0aW9uYXJ5ICopdXNlckluZm8uZ2V0KCldKTsKLSAgICAgICAg
cmV0dXJuIG1fcGxhdGZvcm1OU0Vycm9yLmdldCgpOwotICAgIH0KLQotICAgIG1fcGxhdGZvcm1O
U0Vycm9yID0gY3JlYXRlTlNFcnJvckZyb21SZXNvdXJjZUVycm9yQmFzZSgqdGhpcyk7Ci0gICAg
cmV0dXJuIG1fcGxhdGZvcm1OU0Vycm9yLmdldCgpOwotfQotCi1SZXNvdXJjZUVycm9yOjpvcGVy
YXRvciBOU0Vycm9yICooKSBjb25zdAotewotICAgIHJldHVybiBuc0Vycm9yKCk7Ci19Ci0KLSNl
bHNlCi0KIFJlc291cmNlRXJyb3I6OlJlc291cmNlRXJyb3IoTlNFcnJvciAqbnNFcnJvcikKICAg
ICA6IFJlc291cmNlRXJyb3JCYXNlKFR5cGU6Ok51bGwpCiAgICAgLCBtX2RhdGFJc1VwVG9EYXRl
KGZhbHNlKQpAQCAtMzA5LDYgKzE3OSw0IEBAIFJlc291cmNlRXJyb3I6Om9wZXJhdG9yIENGRXJy
b3JSZWYoKSBjb24KICAgICByZXR1cm4gY2ZFcnJvcigpOwogfQogCi0jZW5kaWYgLy8gVVNFKENG
TkVUV09SSykKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW0J
KHJldmlzaW9uIDIwNzEzOCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFj
L1Jlc291cmNlSGFuZGxlTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC01OCwxNiArNTgsNiBAQAog
I2ltcG9ydCA8d3RmL3RleHQvQmFzZTY0Lmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9DU3RyaW5nLmg+
CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCi0jaW1w
b3J0IDxDRk5ldHdvcmsvQ0ZVUkxDb25uZWN0aW9uUHJpdi5oPgotI2VuZGlmCi10eXBlZGVmIHN0
cnVjdCBfQ0ZVUkxDb25uZWN0aW9uKiBDRlVSTENvbm5lY3Rpb25SZWY7Ci1leHRlcm4gIkMiIHsK
LUNGRGljdGlvbmFyeVJlZiBfQ0ZVUkxDb25uZWN0aW9uQ29weVRpbWluZ0RhdGEoQ0ZVUkxDb25u
ZWN0aW9uUmVmKTsKLX0KLSNlbmRpZiAvLyBVU0UoQ0ZORVRXT1JLKQotCiAjaWYgUExBVEZPUk0o
SU9TKQogI2ltcG9ydCAiQ0ZOZXR3b3JrU1BJLmgiCiAjaW1wb3J0ICJSdW50aW1lQXBwbGljYXRp
b25DaGVja3MuaCIKQEAgLTkwLDggKzgwLDYgQEAgLShpZClfaW5pdFdpdGhSZXF1ZXN0OihOU1VS
TFJlcXVlc3QgKilyZQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCi0jaWYgIVVTRShDRk5F
VFdPUkspCi0gICAgCiBzdGF0aWMgdm9pZCBhcHBseUJhc2ljQXV0aG9yaXphdGlvbkhlYWRlcihS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IENyZWRlbnRpYWwmIGNyZWRlbnRpYWwpCiB7
CiAgICAgU3RyaW5nIGF1dGhlbnRpY2F0aW9uSGVhZGVyID0gIkJhc2ljICIgKyBiYXNlNjRFbmNv
ZGUoU3RyaW5nKGNyZWRlbnRpYWwudXNlcigpICsgIjoiICsgY3JlZGVudGlhbC5wYXNzd29yZCgp
KS51dGY4KCkpOwpAQCAtMzI5LDggKzMxNyw2IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OnBsYXRm
b3JtU2V0RGVmZXJzTG8KICAgICAgICAgW2QtPm1fY29ubmVjdGlvbiBzZXREZWZlcnNDYWxsYmFj
a3M6ZGVmZXJzXTsKIH0KIAotI2lmICFVU0UoQ0ZORVRXT1JLKQotCiB2b2lkIFJlc291cmNlSGFu
ZGxlOjpzY2hlZHVsZShTY2hlZHVsZVBhaXImIHBhaXIpCiB7CiAgICAgTlNSdW5Mb29wICpydW5M
b29wID0gcGFpci5uc1J1bkxvb3AoKTsKQEAgLTM0OSw4ICszMzUsNiBAQCB2b2lkIFJlc291cmNl
SGFuZGxlOjp1bnNjaGVkdWxlKFNjaGVkdWxlCiAgICAgICAgIFtkLT5tX2Nvbm5lY3Rpb24uZ2V0
KCkgdW5zY2hlZHVsZUZyb21SdW5Mb29wOnJ1bkxvb3AgZm9yTW9kZTooTlNTdHJpbmcgKilwYWly
Lm1vZGUoKV07CiB9CiAKLSNlbmRpZgotCiBpZCBSZXNvdXJjZUhhbmRsZTo6bWFrZURlbGVnYXRl
KGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UpCiB7CiAgICAgQVNTRVJUKCFkLT5tX2Rl
bGVnYXRlKTsKQEAgLTczMCwyNyArNzE0LDE0IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmNvbnRp
bnVlV2lsbENhY2hlUmUKIAogICAgIFsoaWQpZGVsZWdhdGUoKSBjb250aW51ZVdpbGxDYWNoZVJl
c3BvbnNlOnJlc3BvbnNlXTsKIH0KLSAgICAKLSNlbmRpZiAvLyAhVVNFKENGTkVUV09SSykKLSAg
ICAKLSNpZiBFTkFCTEUoV0VCX1RJTUlORykKIAotI2lmIFVTRShDRk5FVFdPUkspCi0gICAgCi12
b2lkIFJlc291cmNlSGFuZGxlOjpnZXRDb25uZWN0aW9uVGltaW5nRGF0YShDRlVSTENvbm5lY3Rp
b25SZWYgY29ubmVjdGlvbiwgTmV0d29ya0xvYWRUaW1pbmcmIHRpbWluZykKLXsKLSAgICBjb3B5
VGltaW5nRGF0YSgoX19icmlkZ2UgTlNEaWN0aW9uYXJ5KilhZG9wdENGKF9DRlVSTENvbm5lY3Rp
b25Db3B5VGltaW5nRGF0YShjb25uZWN0aW9uKSkuZ2V0KCksIHRpbWluZyk7Ci19Ci0gICAgCi0j
ZWxzZQorI2lmIEVOQUJMRShXRUJfVElNSU5HKQogICAgIAogdm9pZCBSZXNvdXJjZUhhbmRsZTo6
Z2V0Q29ubmVjdGlvblRpbWluZ0RhdGEoTlNVUkxDb25uZWN0aW9uICpjb25uZWN0aW9uLCBOZXR3
b3JrTG9hZFRpbWluZyYgdGltaW5nKQogewogICAgIGNvcHlUaW1pbmdEYXRhKFtjb25uZWN0aW9u
IF90aW1pbmdEYXRhXSwgdGltaW5nKTsKIH0KICAgICAKLSNlbmRpZgotICAgIAogI2VuZGlmIC8v
IEVOQUJMRShXRUJfVElNSU5HKQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9TeW5jaHJvbm91c0xvYWRlckNsaWVudC5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9TeW5j
aHJvbm91c0xvYWRlckNsaWVudC5tbQkocmV2aXNpb24gMjA3MTM4KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9tYWMvU3luY2hyb25vdXNMb2FkZXJDbGllbnQubW0JKHdvcmtp
bmcgY29weSkKQEAgLTI2LDggKzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJTeW5jaHJvbm91c0xvYWRlckNsaWVudC5oIgogCi0jaWYgIVVTRShDRk5FVFdPUkspCi0KICNp
bmNsdWRlICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CkBAIC0zOCwxNCArMzYsMTAgQEAgdm9pZCBTeW5jaHJvbm91c0xvYWRlckNsaWVudDo6ZGlkUmVj
ZWl2ZQogICAgIFtjaGFsbGVuZ2Uuc2VuZGVyKCkgY29udGludWVXaXRob3V0Q3JlZGVudGlhbEZv
ckF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOmNoYWxsZW5nZS5uc1VSTEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlKCldOwogfQogCi0jaWYgIVVTRShDRk5FVFdPUkspCiBSZXNvdXJjZUVycm9yIFN5bmNo
cm9ub3VzTG9hZGVyQ2xpZW50OjpwbGF0Zm9ybUJhZFJlc3BvbnNlRXJyb3IoKQogewogICAgIFJl
dGFpblB0cjxOU0Vycm9yPiBlcnJvciA9IGFkb3B0TlMoW1tOU0Vycm9yIGFsbG9jXSBpbml0V2l0
aERvbWFpbjpOU1VSTEVycm9yRG9tYWluIGNvZGU6TlNVUkxFcnJvckJhZFNlcnZlclJlc3BvbnNl
IHVzZXJJbmZvOm5pbF0pOwogICAgIHJldHVybiBlcnJvci5nZXQoKTsKIH0KLSNlbmRpZgogCiB9
Ci0KLSNlbmRpZiAvLyAhVVNFKENGTkVUV09SSykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3Vy
Y2VIYW5kbGVBc0RlbGVnYXRlLmgJKHJldmlzaW9uIDIwNzEzOCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGUuaAko
d29ya2luZyBjb3B5KQpAQCAtMjMsOCArMjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgV2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0
ZV9oCi0jZGVmaW5lIFdlYkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGVfaAorI3ByYWdtYSBv
bmNlCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJlc291cmNlSGFuZGxlOwpAQCAtMzQs
MTMgKzMzLDggQEAgY2xhc3MgUmVzb3VyY2VIYW5kbGU7CiAtICh2b2lkKWRldGFjaEhhbmRsZTsK
IEBlbmQKIAotI2lmICFVU0UoQ0ZORVRXT1JLKQotCiBAaW50ZXJmYWNlIFdlYkNvcmVSZXNvdXJj
ZUhhbmRsZUFzRGVsZWdhdGUgOiBOU09iamVjdCA8TlNVUkxDb25uZWN0aW9uRGVsZWdhdGUsIFdl
YkNvcmVSZXNvdXJjZUxvYWRlckRlbGVnYXRlPiB7CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VIYW5k
bGUqIG1faGFuZGxlOwogfQogLSAoaWQpaW5pdFdpdGhIYW5kbGU6KFdlYkNvcmU6OlJlc291cmNl
SGFuZGxlKiloYW5kbGU7CiBAZW5kCi0KLSNlbmRpZiAvLyAhVVNFKENGTkVUV09SSykKLSNlbmRp
ZiAvLyBXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlX2gKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGUu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2Vi
Q29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZS5tbQkocmV2aXNpb24gMjA3MTM4KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNE
ZWxlZ2F0ZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYsOCArMjYsNiBAQAogI2ltcG9ydCAiY29u
ZmlnLmgiCiAjaW1wb3J0ICJXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlLmgiCiAKLSNp
ZiAhVVNFKENGTkVUV09SSykKLQogI2ltcG9ydCAiQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCIK
ICNpbXBvcnQgIkF1dGhlbnRpY2F0aW9uTWFjLmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCkBAIC0y
NzAsNiArMjY4LDMgQEAgLSAoTlNDYWNoZWRVUkxSZXNwb25zZSAqKWNvbm5lY3Rpb246KE5TVQog
fQogCiBAZW5kCi0KLSNlbmRpZiAvLyAhVVNFKENGTkVUV09SSykKLQpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRp
b25RdWV1ZURlbGVnYXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRl
LmgJKHJldmlzaW9uIDIwNzEzOCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
bWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMywxMCArMjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgogICovCiAKLSNpZm5kZWYgV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25R
dWV1ZURlbGVnYXRlX2gKLSNkZWZpbmUgV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25R
dWV1ZURlbGVnYXRlX2gKLQotI2lmICFVU0UoQ0ZORVRXT1JLKQorI3ByYWdtYSBvbmNlCiAKICNp
bmNsdWRlICJXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlLmgiCiAjaW5jbHVkZSA8ZGlz
cGF0Y2gvZGlzcGF0Y2guaD4KQEAgLTU4LDYgKzU1LDMgQEAgQGludGVyZmFjZSBXZWJDb3JlUmVz
b3VyY2VIYW5kbGVBc09wZXJhdAogQGludGVyZmFjZSBXZWJDb3JlUmVzb3VyY2VIYW5kbGVXaXRo
Q3JlZGVudGlhbFN0b3JhZ2VBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUgOiBXZWJDb3JlUmVzb3Vy
Y2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUKIAogQGVuZAotCi0jZW5kaWYgLy8gIVVT
RShDRk5FVFdPUkspCi0jZW5kaWYgLy8gV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25R
dWV1ZURlbGVnYXRlX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFj
L1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3Vy
Y2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUubW0JKHJldmlzaW9uIDIwNzEzOCkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRs
ZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYsOCArMjYs
NiBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJXZWJDb3JlUmVzb3VyY2VIYW5kbGVB
c09wZXJhdGlvblF1ZXVlRGVsZWdhdGUuaCIKIAotI2lmICFVU0UoQ0ZORVRXT1JLKQotCiAjaW1w
b3J0ICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oIgogI2ltcG9ydCAiQXV0aGVudGljYXRpb25N
YWMuaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKQEAgLTMyOSw2ICszMjcsMyBAQCAtIChCT09MKWNv
bm5lY3Rpb25TaG91bGRVc2VDcmVkZW50aWFsU3RvCiB9CiAKIEBlbmQKLQotI2VuZGlmIC8vICFV
U0UoQ0ZORVRXT1JLKQotCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21h
Yy9XZWJDb3JlVVJMUmVzcG9uc2UubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVVSTFJlc3BvbnNlLm1tCShyZXZpc2lvbiAyMDcxMzgp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlVVJMUmVzcG9u
c2UubW0JKHdvcmtpbmcgY29weSkKQEAgLTMyNSw3ICszMjUsNiBAQCB2b2lkIGFkanVzdE1JTUVU
eXBlSWZOZWNlc3NhcnkoQ0ZVUkxSZXNwCiB9CiAjZW5kaWYKIAotI2lmICFVU0UoQ0ZORVRXT1JL
KQogTlNVUkxSZXNwb25zZSAqc3ludGhlc2l6ZVJlZGlyZWN0UmVzcG9uc2VJZk5lY2Vzc2FyeShO
U1VSTFJlcXVlc3QgKmN1cnJlbnRSZXF1ZXN0LCBOU1VSTFJlcXVlc3QgKm5ld1JlcXVlc3QsIE5T
VVJMUmVzcG9uc2UgKnJlZGlyZWN0UmVzcG9uc2UpCiB7CiAgICAgaWYgKHJlZGlyZWN0UmVzcG9u
c2UpCkBAIC0zMzksNiArMzM4LDUgQEAgTlNVUkxSZXNwb25zZSAqc3ludGhlc2l6ZVJlZGlyZWN0
UmVzcG9ucwogICAgIE5TRGljdGlvbmFyeSAqc3ludGhlc2l6ZWRSZXNwb25zZUhlYWRlckZpZWxk
cyA9IEB7IEAiTG9jYXRpb24iOiBbW25ld1JlcXVlc3QgVVJMXSBhYnNvbHV0ZVN0cmluZ10sIEAi
Q2FjaGUtQ29udHJvbCI6IEAibm8tc3RvcmUiIH07CiAgICAgcmV0dXJuIFtbW05TSFRUUFVSTFJl
c3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDpbY3VycmVudFJlcXVlc3QgVVJMXSBzdGF0dXNDb2Rl
OjMwMiBIVFRQVmVyc2lvbjooTlNTdHJpbmcgKilrQ0ZIVFRQVmVyc2lvbjFfMSBoZWFkZXJGaWVs
ZHM6c3ludGhlc2l6ZWRSZXNwb25zZUhlYWRlckZpZWxkc10gYXV0b3JlbGVhc2VdOwogfQotI2Vu
ZGlmCiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9UZW1wb3JhcnlMaW5r
U3R1YnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9UZW1w
b3JhcnlMaW5rU3R1YnMuY3BwCShyZXZpc2lvbiAyMDcxMzgpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS93aW4vVGVtcG9yYXJ5TGlua1N0dWJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcs
NyArMjcsNyBAQAogCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJTU0xL
ZXlHZW5lcmF0b3IuaCIKLSNpZiAhVVNFKENGTkVUV09SSykKKyNpZiAhVVNFKENGVVJMQ09OTkVD
VElPTikKICNpbmNsdWRlICJDb29raWVTdG9yYWdlLmgiCiAjZW5kaWYKIApAQCAtMzcsNyArMzcs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBTdHJpbmcgc2lnbmVkUHVibGljS2V5QW5kQ2hhbGxl
bmdlU3RyaW5nKHVuc2lnbmVkLCBjb25zdCBTdHJpbmcmLCBjb25zdCBVUkwmKSB7IG5vdEltcGxl
bWVudGVkKCk7IHJldHVybiBTdHJpbmcoKTsgfQogdm9pZCBnZXRTdXBwb3J0ZWRLZXlTaXplcyhW
ZWN0b3I8U3RyaW5nPiYpIHsgbm90SW1wbGVtZW50ZWQoKTsgfQogCi0jaWYgIVVTRShDRk5FVFdP
UkspCisjaWYgIVVTRShDRlVSTENPTk5FQ1RJT04pCiB2b2lkIHN0YXJ0T2JzZXJ2aW5nQ29va2ll
Q2hhbmdlcyhDb29raWVDaGFuZ2VDYWxsYmFja1B0cikgeyBub3RJbXBsZW1lbnRlZCgpOyB9CiB2
b2lkIHN0b3BPYnNlcnZpbmdDb29raWVDaGFuZ2VzKCkgeyBub3RJbXBsZW1lbnRlZCgpOyB9CiAj
ZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvanMvV2ViQ29yZVRlc3RTdXBwb3J0
UHJlZml4LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9qcy9XZWJDb3Jl
VGVzdFN1cHBvcnRQcmVmaXguaAkocmV2aXNpb24gMjA3MTM4KQorKysgU291cmNlL1dlYkNvcmUv
dGVzdGluZy9qcy9XZWJDb3JlVGVzdFN1cHBvcnRQcmVmaXguaAkod29ya2luZyBjb3B5KQpAQCAt
MTIwLDkgKzEyMCw3IEBACiAjZGVmaW5lIE9CU09MRVRFX0NPTE9SU1lOQ19BUEkKICNlbmRpZgog
I2VuZGlmCi0jaWYgVVNFKENGTkVUV09SSykKLS8qIFdpbmRvd3MgZG9lc24ndCBpbmNsdWRlIENG
TmV0d29yay5oIHZpYSBDb3JlU2VydmljZXMuaCwgc28gd2UgZG8KLSAgIGl0IGV4cGxpY2l0bHkg
aGVyZSB0byBtYWtlIFdpbmRvd3MgbW9yZSBjb25zaXN0ZW50IHdpdGggTWFjLiAqLworI2lmIFVT
RShDRlVSTENPTk5FQ1RJT04pCiAjaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGTmV0d29yay5oPgogLy8g
T24gV2luZG93cywgZGlzcGF0Y2guaCBuZWVkcyB0byBiZSBpbmNsdWRlZCBiZWZvcmUgY2VydGFp
biBDRk5ldHdvcmsgaGVhZGVycy4KICNpbmNsdWRlIDxkaXNwYXRjaC9kaXNwYXRjaC5oPgpJbmRl
eDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZwkocmV2aXNpb24gMjA3MTM4KQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzEgQEAKKzIwMTYtMTAtMTEgIEFsZXggQ2hyaXN0
ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZW1vdmUgZGVhZCBu
ZXR3b3JraW5nIGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE2MzI2MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmg6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL2lvcy9Eb3dubG9hZElPUy5tbTogUmVtb3ZlZC4KKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvbWFjL0Rvd25sb2FkTWFjLm1tOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmg6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvbWFjL05ldHdvcmtMb2FkTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9h
ZDo6d2lsbENhY2hlUmVzcG9uc2VBc3luYyk6IERlbGV0ZWQuCisgICAgICAgICogU2hhcmVkL0F1
dGhlbnRpY2F0aW9uL2NvY29hL0F1dGhlbnRpY2F0aW9uTWFuYWdlckNvY29hLm1tOgorICAgICAg
ICAoV2ViS2l0OjpBdXRoZW50aWNhdGlvbk1hbmFnZXI6OnJlY2VpdmVkQ3JlZGVudGlhbCk6Cisg
ICAgICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6cmVjZWl2ZWRSZXF1ZXN0VG9D
b250aW51ZVdpdGhvdXRDcmVkZW50aWFsKToKKyAgICAgICAgKFdlYktpdDo6QXV0aGVudGljYXRp
b25NYW5hZ2VyOjpyZWNlaXZlZENhbmNlbGxhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OkF1dGhl
bnRpY2F0aW9uTWFuYWdlcjo6cmVjZWl2ZWRSZXF1ZXN0VG9QZXJmb3JtRGVmYXVsdEhhbmRsaW5n
KToKKyAgICAgICAgKFdlYktpdDo6QXV0aGVudGljYXRpb25NYW5hZ2VyOjpyZWNlaXZlZENoYWxs
ZW5nZVJlamVjdGlvbik6CisgICAgICAgICogU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
OjplbmNvZGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
OjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
Lmg6CisgICAgICAgICogU2hhcmVkL21hYy9XZWJDb3JlQXJndW1lbnRDb2RlcnNNYWMubW06Cisg
ICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVzb3VyY2VSZXF1ZXN0Pjo6ZW5jb2RlUGxhdGZv
cm1EYXRhKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlcXVlc3Q+Ojpk
ZWNvZGVQbGF0Zm9ybURhdGEpOgorICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKwogMjAxNi0xMC0xMCAgWmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5j
b20+CiAKICAgICAgICAgQWRkIEVOQUJMRV9FTkNSWVBURURfTUVESUEgY29uZmlndXJhdGlvbiBv
cHRpb24KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQu
aAkocmV2aXNpb24gMjA3MTM4KQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0xvYWQuaAkod29ya2luZyBjb3B5KQpAQCAtNzksMTIgKzc5LDggQEAgcHVibGljOgogICAg
IHZvaWQgZGlkUmVjZWl2ZURhdGFBcnJheShXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIENGQXJy
YXlSZWYpIG92ZXJyaWRlOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0jaWYgVVNFKENG
TkVUV09SSykKLSAgICB2b2lkIHdpbGxDYWNoZVJlc3BvbnNlQXN5bmMoV2ViQ29yZTo6UmVzb3Vy
Y2VIYW5kbGUqLCBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmKSBvdmVycmlkZTsKLSNlbHNlCiAgICAg
dm9pZCB3aWxsQ2FjaGVSZXNwb25zZUFzeW5jKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwgTlND
YWNoZWRVUkxSZXNwb25zZSAqKSBvdmVycmlkZTsKICNlbmRpZgotI2VuZGlmCiAKICNpZiBVU0Uo
UFJPVEVDVElPTl9TUEFDRV9BVVRIX0NBTExCQUNLKQogICAgIHZvaWQgY29udGludWVDYW5BdXRo
ZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKGJvb2wpOwpJbmRleDogU291cmNlL1dlYktp
dDIvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmgJKHJldmlzaW9u
IDIwNzEzOCkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3du
bG9hZC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NywxMCArNDcsNiBAQCBPQkpDX0NMQVNTIFdLRG93
bmxvYWRBc0RlbGVnYXRlOwogI2VuZGlmCiAjZW5kaWYKIAotI2lmIFVTRShDRk5FVFdPUkspCi0j
aW5jbHVkZSA8Q0ZOZXR3b3JrL0NGVVJMRG93bmxvYWRQcml2Lmg+Ci0jZW5kaWYKLQogbmFtZXNw
YWNlIElQQyB7CiBjbGFzcyBEYXRhUmVmZXJlbmNlOwogfQpAQCAtMTM5LDkgKzEzNSw2IEBAIHBy
aXZhdGU6CiAgICAgUmV0YWluUHRyPFdLRG93bmxvYWRBc0RlbGVnYXRlPiBtX2RlbGVnYXRlOwog
I2VuZGlmCiAjZW5kaWYKLSNpZiBVU0UoQ0ZORVRXT1JLKQotICAgIFJldGFpblB0cjxDRlVSTERv
d25sb2FkUmVmPiBtX2Rvd25sb2FkOwotI2VuZGlmCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNv
cmU6OlJlc291cmNlSGFuZGxlQ2xpZW50PiBtX2Rvd25sb2FkQ2xpZW50OwogICAgIFJlZlB0cjxX
ZWJDb3JlOjpSZXNvdXJjZUhhbmRsZT4gbV9yZXNvdXJjZUhhbmRsZTsKICAgICBTdHJpbmcgbV9z
dWdnZXN0ZWROYW1lOwpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRG93bmxv
YWRzL21hYy9Eb3dubG9hZE1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9Eb3dubG9hZHMvbWFjL0Rvd25sb2FkTWFjLm1tCShyZXZpc2lvbiAyMDcxMzgp
CisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvbWFjL0Rvd25sb2Fk
TWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaW1wb3J0ICJjb25maWcu
aCIKICNpbXBvcnQgIkRvd25sb2FkLmgiCiAKLSNpZiAhVVNFKENGTkVUV09SSykgJiYgIVVTRShO
RVRXT1JLX1NFU1NJT04pCisjaWYgIVVTRShORVRXT1JLX1NFU1NJT04pCiAKICNpbXBvcnQgPFdl
YkNvcmUvQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvQXV0aGVu
dGljYXRpb25NYWMuaD4KQEAgLTI3Miw0ICsyNzIsNCBAQCAtICh2b2lkKWRvd25sb2FkOihOU1VS
TERvd25sb2FkICopZG93bmxvCiAKIEBlbmQKIAotI2VuZGlmIC8vICFVU0UoQ0ZORVRXT1JLKSAm
JiAhVVNFKE5FVFdPUktfU0VTU0lPTikKKyNlbmRpZiAvLyAhVVNFKE5FVFdPUktfU0VTU0lPTikK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL21hYy9OZXR3b3JrTG9hZE1hYy5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29y
a0xvYWRNYWMubW0JKHJldmlzaW9uIDIwNzEzOCkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQ
cm9jZXNzL21hYy9OZXR3b3JrTG9hZE1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQs
NiBAQAogICovCiAKICNpbXBvcnQgImNvbmZpZy5oIgotCiAjaW1wb3J0ICJOZXR3b3JrTG9hZC5o
IgogCiAjaW1wb3J0IDxXZWJDb3JlL0NGTmV0d29ya1NQSS5oPgpAQCAtMzQsMTcgKzMzLDYgQEAg
bmFtZXNwYWNlIFdlYktpdCB7CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi0jaWYgVVNF
KENGTkVUV09SSykKLQotdm9pZCBOZXR3b3JrTG9hZDo6d2lsbENhY2hlUmVzcG9uc2VBc3luYyhS
ZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmIGNmUmVzcG9uc2Up
Ci17Ci0gICAgQVNTRVJUX1VOVVNFRChoYW5kbGUsIGhhbmRsZSA9PSBtX2hhbmRsZSk7Ci0KLSAg
ICBtX2hhbmRsZS0+Y29udGludWVXaWxsQ2FjaGVSZXNwb25zZShjZlJlc3BvbnNlKTsKLX0KLQot
I2Vsc2UKLQogdm9pZCBOZXR3b3JrTG9hZDo6d2lsbENhY2hlUmVzcG9uc2VBc3luYyhSZXNvdXJj
ZUhhbmRsZSogaGFuZGxlLCBOU0NhY2hlZFVSTFJlc3BvbnNlICpuc1Jlc3BvbnNlKQogewogICAg
IEFTU0VSVF9VTlVTRUQoaGFuZGxlLCBoYW5kbGUgPT0gbV9oYW5kbGUpOwpAQCAtNTIsNiArNDAs
NCBAQCB2b2lkIE5ldHdvcmtMb2FkOjp3aWxsQ2FjaGVSZXNwb25zZUFzeW5jCiAgICAgbV9oYW5k
bGUtPmNvbnRpbnVlV2lsbENhY2hlUmVzcG9uc2UobnNSZXNwb25zZSk7CiB9CiAKLSNlbmRpZiAv
LyAhVVNFKENGTkVUV09SSykKLQogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMu
Y3BwCShyZXZpc2lvbiAyMDcxMzgpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNCw3ICsxMDQsNyBA
QCB2b2lkIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kCiAgICAgZW5jb2RlciA8
PCB0ZXh0Q2hlY2tlclN0YXRlOwogICAgIGVuY29kZXIgPDwgZnVsbEtleWJvYXJkQWNjZXNzRW5h
YmxlZDsKICAgICBlbmNvZGVyIDw8IGRlZmF1bHRSZXF1ZXN0VGltZW91dEludGVydmFsOwotI2lm
IFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZORVRXT1JLKQorI2lmIFBMQVRGT1JNKENPQ09BKQog
ICAgIGVuY29kZXIgPDwgdWlQcm9jZXNzQnVuZGxlSWRlbnRpZmllcjsKICNlbmRpZgogI2lmIFBM
QVRGT1JNKENPQ09BKQpAQCAtMjQwLDcgKzI0MCw3IEBAIGJvb2wgV2ViUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVyczo6ZGVjb2QKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUocGFyYW1ldGVycy5kZWZhdWx0UmVxdWVzdFRpbWVvdXRJbnRlcnZhbCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKENGTkVUV09SSykK
KyNpZiBQTEFURk9STShDT0NPQSkKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMu
dWlQcm9jZXNzQnVuZGxlSWRlbnRpZmllcikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICNlbmRp
ZgpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVycy5oCShyZXZpc2lvbiAyMDcxMzgpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjMs
NyArMTIzLDcgQEAgc3RydWN0IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMgewogCiAgICAg
ZG91YmxlIGRlZmF1bHRSZXF1ZXN0VGltZW91dEludGVydmFsOwogCi0jaWYgUExBVEZPUk0oQ09D
T0EpIHx8IFVTRShDRk5FVFdPUkspCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgU3RyaW5nIHVp
UHJvY2Vzc0J1bmRsZUlkZW50aWZpZXI7CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYktpdDIv
U2hhcmVkL0F1dGhlbnRpY2F0aW9uL2NvY29hL0F1dGhlbnRpY2F0aW9uTWFuYWdlckNvY29hLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BdXRoZW50aWNhdGlvbi9jb2Nv
YS9BdXRoZW50aWNhdGlvbk1hbmFnZXJDb2NvYS5tbQkocmV2aXNpb24gMjA3MTM4KQorKysgU291
cmNlL1dlYktpdDIvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL2NvY29hL0F1dGhlbnRpY2F0aW9uTWFu
YWdlckNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMiwzNyArMzIsMjcgQEAgbmFtZXNwYWNl
IFdlYktpdCB7CiAKIHZvaWQgQXV0aGVudGljYXRpb25NYW5hZ2VyOjpyZWNlaXZlZENyZWRlbnRp
YWwoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
LCBjb25zdCBDcmVkZW50aWFsJiBjcmVkZW50aWFsKQogewotI2lmICFVU0UoQ0ZORVRXT1JLKQog
ICAgIFthdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5zZW5kZXIoKSB1c2VDcmVkZW50aWFsOmNyZWRl
bnRpYWwubnNDcmVkZW50aWFsKCkgZm9yQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6YXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UubnNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgpXTsKLSNlbmRpZgog
fQogCiB2b2lkIEF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6cmVjZWl2ZWRSZXF1ZXN0VG9Db250aW51
ZVdpdGhvdXRDcmVkZW50aWFsKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBhdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSkKIHsKLSNpZiAhVVNFKENGTkVUV09SSykKICAgICBbYXV0aGVudGlj
YXRpb25DaGFsbGVuZ2Uuc2VuZGVyKCkgY29udGludWVXaXRob3V0Q3JlZGVudGlhbEZvckF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlOmF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLm5zVVJMQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UoKV07Ci0jZW5kaWYKIH0KIAogdm9pZCBBdXRoZW50aWNhdGlvbk1hbmFn
ZXI6OnJlY2VpdmVkQ2FuY2VsbGF0aW9uKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBh
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSkKIHsKLSNpZiAhVVNFKENGTkVUV09SSykKICAgICBbYXV0
aGVudGljYXRpb25DaGFsbGVuZ2Uuc2VuZGVyKCkgY2FuY2VsQXV0aGVudGljYXRpb25DaGFsbGVu
Z2U6YXV0aGVudGljYXRpb25DaGFsbGVuZ2UubnNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgp
XTsKLSNlbmRpZgogfQogCiB2b2lkIEF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6cmVjZWl2ZWRSZXF1
ZXN0VG9QZXJmb3JtRGVmYXVsdEhhbmRsaW5nKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
JiBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkKIHsKLSNpZiAhVVNFKENGTkVUV09SSykKICAgICBb
YXV0aGVudGljYXRpb25DaGFsbGVuZ2Uuc2VuZGVyKCkgcGVyZm9ybURlZmF1bHRIYW5kbGluZ0Zv
ckF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOmF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLm5zVVJMQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UoKV07Ci0jZW5kaWYKIH0KIAogdm9pZCBBdXRoZW50aWNhdGlv
bk1hbmFnZXI6OnJlY2VpdmVkQ2hhbGxlbmdlUmVqZWN0aW9uKGNvbnN0IEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlJiBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkKIHsKLSNpZiAhVVNFKENGTkVUV09S
SykKICAgICBbYXV0aGVudGljYXRpb25DaGFsbGVuZ2Uuc2VuZGVyKCkgcmVqZWN0UHJvdGVjdGlv
blNwYWNlQW5kQ29udGludWVXaXRoQ2hhbGxlbmdlOmF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLm5z
VVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKV07Ci0jZW5kaWYKIH0KIAogfQpJbmRleDogU291
cmNlL1dlYktpdDIvU2hhcmVkL21hYy9XZWJDb3JlQXJndW1lbnRDb2RlcnNNYWMubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9XZWJDb3JlQXJndW1lbnRDb2RlcnNN
YWMubW0JKHJldmlzaW9uIDIwNzEzOCkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwxMCArMzksNiBA
QAogI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Jl
c291cmNlUmVxdWVzdC5oPgogCi0jaWYgVVNFKENGTkVUV09SSykKLSNpbXBvcnQgPENGTmV0d29y
ay9DRlVSTFJlcXVlc3QuaD4KLSNlbmRpZgotCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNL
X1RBUkdFVCkKICNpbXBvcnQgPFdlYkNvcmUvQVZGb3VuZGF0aW9uU1BJLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL01lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Lmg+CkBAIC01NywzNiArNTMsNiBAQCB1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIElQQyB7CiAKLSNpZiBVU0UoQ0ZO
RVRXT1JLKQotdm9pZCBBcmd1bWVudENvZGVyPFJlc291cmNlUmVxdWVzdD46OmVuY29kZVBsYXRm
b3JtRGF0YShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNl
UmVxdWVzdCkKLXsKLSAgICBSZXRhaW5QdHI8Q0ZVUkxSZXF1ZXN0UmVmPiByZXF1ZXN0VG9TZXJp
YWxpemUgPSByZXNvdXJjZVJlcXVlc3QuY2ZVUkxSZXF1ZXN0KERvTm90VXBkYXRlSFRUUEJvZHkp
OwotCi0gICAgYm9vbCByZXF1ZXN0SXNQcmVzZW50ID0gcmVxdWVzdFRvU2VyaWFsaXplOwotICAg
IGVuY29kZXIgPDwgcmVxdWVzdElzUHJlc2VudDsKLQotICAgIGlmICghcmVxdWVzdElzUHJlc2Vu
dCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gV2UgZG9uJ3Qgc2VuZCBIVFRQIGJvZHkgb3Zl
ciBJUEMgZm9yIGJldHRlciBwZXJmb3JtYW5jZS4KLSAgICAvLyBBbHNvLCBpdCdzIG5vdCBhbHdh
eXMgcG9zc2libGUgdG8gZG8sIGFzIHN0cmVhbXMgY2FuIG9ubHkgYmUgY3JlYXRlZCBpbiBwcm9j
ZXNzIHRoYXQgZG9lcyBuZXR3b3JraW5nLgotICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IHJlcXVl
c3RIVFRQQm9keSA9IGFkb3B0Q0YoQ0ZVUkxSZXF1ZXN0Q29weUhUVFBSZXF1ZXN0Qm9keShyZXF1
ZXN0VG9TZXJpYWxpemUuZ2V0KCkpKTsKLSAgICBSZXRhaW5QdHI8Q0ZSZWFkU3RyZWFtUmVmPiBy
ZXF1ZXN0SFRUUEJvZHlTdHJlYW0gPSBhZG9wdENGKENGVVJMUmVxdWVzdENvcHlIVFRQUmVxdWVz
dEJvZHlTdHJlYW0ocmVxdWVzdFRvU2VyaWFsaXplLmdldCgpKSk7Ci0gICAgaWYgKHJlcXVlc3RI
VFRQQm9keSB8fCByZXF1ZXN0SFRUUEJvZHlTdHJlYW0pIHsKLSAgICAgICAgQ0ZNdXRhYmxlVVJM
UmVxdWVzdFJlZiBtdXRhYmxlUmVxdWVzdCA9IENGVVJMUmVxdWVzdENyZWF0ZU11dGFibGVDb3B5
KDAsIHJlcXVlc3RUb1NlcmlhbGl6ZS5nZXQoKSk7Ci0gICAgICAgIHJlcXVlc3RUb1NlcmlhbGl6
ZSA9IGFkb3B0Q0YobXV0YWJsZVJlcXVlc3QpOwotICAgICAgICBDRlVSTFJlcXVlc3RTZXRIVFRQ
UmVxdWVzdEJvZHkobXV0YWJsZVJlcXVlc3QsIG5pbCk7Ci0gICAgICAgIENGVVJMUmVxdWVzdFNl
dEhUVFBSZXF1ZXN0Qm9keVN0cmVhbShtdXRhYmxlUmVxdWVzdCwgbmlsKTsKLSAgICB9Ci0KLSAg
ICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBkaWN0aW9uYXJ5ID0gYWRvcHRDRihXS0NGVVJM
UmVxdWVzdENyZWF0ZVNlcmlhbGl6YWJsZVJlcHJlc2VudGF0aW9uKHJlcXVlc3RUb1NlcmlhbGl6
ZS5nZXQoKSwgSVBDOjp0b2tlbk51bGxUeXBlUmVmKCkpKTsKLSAgICBJUEM6OmVuY29kZShlbmNv
ZGVyLCBkaWN0aW9uYXJ5LmdldCgpKTsKLQotICAgIC8vIFRoZSBmYWxsYmFjayBhcnJheSBpcyBw
YXJ0IG9mIENGVVJMUmVxdWVzdCwgYnV0IGl0IGlzIG5vdCBlbmNvZGVkIGJ5IFdLQ0ZVUkxSZXF1
ZXN0Q3JlYXRlU2VyaWFsaXphYmxlUmVwcmVzZW50YXRpb24uCi0gICAgZW5jb2RlciA8PCByZXNv
dXJjZVJlcXVlc3QucmVzcG9uc2VDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJy
YXkoKTsKLSAgICBlbmNvZGVyLmVuY29kZUVudW0ocmVzb3VyY2VSZXF1ZXN0LnJlcXVlc3Rlcigp
KTsKLX0KLSNlbHNlCiB2b2lkIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VSZXF1ZXN0Pjo6ZW5jb2Rl
UGxhdGZvcm1EYXRhKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVz
b3VyY2VSZXF1ZXN0KQogewogICAgIFJldGFpblB0cjxOU1VSTFJlcXVlc3Q+IHJlcXVlc3RUb1Nl
cmlhbGl6ZSA9IHJlc291cmNlUmVxdWVzdC5uc1VSTFJlcXVlc3QoRG9Ob3RVcGRhdGVIVFRQQm9k
eSk7CkBAIC0xMTIsNyArNzgsNiBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VSZXF1ZXN0
Pjo6ZW5jCiAgICAgZW5jb2RlciA8PCByZXNvdXJjZVJlcXVlc3QucmVzcG9uc2VDb250ZW50RGlz
cG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXkoKTsKICAgICBlbmNvZGVyLmVuY29kZUVudW0o
cmVzb3VyY2VSZXF1ZXN0LnJlcXVlc3RlcigpKTsKIH0KLSNlbmRpZgogCiBib29sIEFyZ3VtZW50
Q29kZXI8UmVzb3VyY2VSZXF1ZXN0Pjo6ZGVjb2RlUGxhdGZvcm1EYXRhKERlY29kZXImIGRlY29k
ZXIsIFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0KQogewpAQCAtMTI5LDE5ICs5NCwx
MSBAQCBib29sIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VSZXF1ZXN0Pjo6ZGVjCiAgICAgaWYgKCFJ
UEM6OmRlY29kZShkZWNvZGVyLCBkaWN0aW9uYXJ5KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0jaWYgVVNFKENGTkVUV09SSykKLSAgICBSZXRhaW5QdHI8Q0ZVUkxSZXF1ZXN0UmVmPiBjZlVS
TFJlcXVlc3QgPSBhZG9wdENGKFdLQ3JlYXRlQ0ZVUkxSZXF1ZXN0RnJvbVNlcmlhbGl6YWJsZVJl
cHJlc2VudGF0aW9uKGRpY3Rpb25hcnkuZ2V0KCksIElQQzo6dG9rZW5OdWxsVHlwZVJlZigpKSk7
Ci0gICAgaWYgKCFjZlVSTFJlcXVlc3QpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJl
c291cmNlUmVxdWVzdCA9IFJlc291cmNlUmVxdWVzdChjZlVSTFJlcXVlc3QuZ2V0KCkpOwotI2Vs
c2UKICAgICBSZXRhaW5QdHI8TlNVUkxSZXF1ZXN0PiBuc1VSTFJlcXVlc3QgPSBXS05TVVJMUmVx
dWVzdEZyb21TZXJpYWxpemFibGVSZXByZXNlbnRhdGlvbihkaWN0aW9uYXJ5LmdldCgpLCBJUEM6
OnRva2VuTnVsbFR5cGVSZWYoKSk7CiAgICAgaWYgKCFuc1VSTFJlcXVlc3QpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAogICAgIHJlc291cmNlUmVxdWVzdCA9IFJlc291cmNlUmVxdWVzdChuc1VS
TFJlcXVlc3QuZ2V0KCkpOwotI2VuZGlmCiAgICAgCiAgICAgVmVjdG9yPFN0cmluZz4gcmVzcG9u
c2VDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXk7CiAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShyZXNwb25zZUNvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJh
eSkpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCShyZXZpc2lvbiAyMDcxMzgpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTEwNTEsNyArMTA1MSw2
IEBACiAJCTVDMTQyNzA1MUMyM0Y4NEMwMEQ0MTE4MyAvKiBEb3dubG9hZElELmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzE0MjZGNzFDMjNGODQzMDBE
NDExODMgLyogRG93bmxvYWRJRC5oICovOyB9OwogCQk1QzE0MjcwNjFDMjNGODRDMDBENDExODMg
LyogRG93bmxvYWRNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDVDMTQyNkY4MUMyM0Y4NDMwMEQ0MTE4MyAvKiBEb3dubG9hZE1hbmFnZXIu
Y3BwICovOyB9OwogCQk1QzE0MjcwNzFDMjNGODRDMDBENDExODMgLyogRG93bmxvYWRNYW5hZ2Vy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzE0MjZG
OTFDMjNGODQzMDBENDExODMgLyogRG93bmxvYWRNYW5hZ2VyLmggKi87IH07Ci0JCTVDMTQyNzEx
MUMyM0Y4OUUwMEQ0MTE4MyAvKiBEb3dubG9hZElPUy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDMTQyNzBEMUMyM0Y4ODUwMEQ0MTE4MyAvKiBEb3du
bG9hZElPUy5tbSAqLzsgfTsKIAkJNUMxNDI3MTIxQzIzRjg5RTAwRDQxMTgzIC8qIERvd25sb2Fk
TWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMx
NDI3MEYxQzIzRjg5OTAwRDQxMTgzIC8qIERvd25sb2FkTWFjLm1tICovOyB9OwogCQk1QzE0Mjcx
MzFDMjNGODlFMDBENDExODMgLyogRG93bmxvYWRDb2NvYS5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDMTQyNzA5MUMyM0Y4NjkwMEQ0MTE4MyAvKiBE
b3dubG9hZENvY29hLm1tICovOyB9OwogCQk1QzE0MjcxODFDMjNGOEI3MDBENDExODMgLyogQ3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1QzE0MjcxNDFDMjNGOEIwMDBENDExODMgLyogQ3VzdG9tUHJvdG9jb2xNYW5h
Z2VyLmggKi87IH07CkBAIC0zMTMwLDcgKzMxMjksNiBAQAogCQk1QzE0MjZGODFDMjNGODQzMDBE
NDExODMgLyogRG93bmxvYWRNYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IERvd25sb2FkTWFuYWdlci5jcHA7IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy9Eb3du
bG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NUMxNDI2RjkxQzIzRjg0MzAwRDQxMTgzIC8qIERvd25sb2FkTWFuYWdlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBEb3dubG9hZE1hbmFnZXIuaDsgcGF0aCA9IE5ldHdvcmtQ
cm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNUMxNDI3MDkxQzIzRjg2OTAwRDQxMTgzIC8qIERvd25sb2FkQ29jb2EubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBEb3dubG9hZENvY29hLm1tOyBw
YXRoID0gTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL2NvY29hL0Rvd25sb2FkQ29jb2EubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTVDMTQyNzBEMUMyM0Y4ODUwMEQ0MTE4MyAvKiBE
b3dubG9hZElPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IERv
d25sb2FkSU9TLm1tOyBwYXRoID0gTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL2lvcy9Eb3dubG9h
ZElPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUMxNDI3MEYxQzIzRjg5OTAw
RDQxMTgzIC8qIERvd25sb2FkTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBuYW1lID0gRG93bmxvYWRNYWMubW07IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMv
bWFjL0Rvd25sb2FkTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzE0Mjcx
NDFDMjNGOEIwMDBENDExODMgLyogQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEN1c3RvbVByb3RvY29sTWFuYWdlci5oOyBwYXRoID0gTmV0
d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL0N1c3RvbVByb3RvY29sTWFuYWdlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzE0MjcxNTFDMjNGOEIwMDBENDExODMgLyogQ3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IEN1
c3RvbVByb3RvY29sTWFuYWdlci5tZXNzYWdlcy5pbjsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL0N1
c3RvbVByb3RvY29scy9DdXN0b21Qcm90b2NvbE1hbmFnZXIubWVzc2FnZXMuaW47IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01NzM4LDcgKzU3MzYsNiBAQAogCQkJaXNhID0gUEJYR3Jv
dXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQk1QzE0MjcwODFDMjNGODUyMDBENDExODMgLyogY29j
b2EgKi8sCi0JCQkJNUMxNDI3MEMxQzIzRjg3NzAwRDQxMTgzIC8qIGlvcyAqLywKIAkJCQk1QzE0
MjcwQjFDMjNGODcxMDBENDExODMgLyogbWFjICovLAogCQkJCTgzQkZBQzQwMUQ5NjEzNjAwMDQz
MzQ5MCAvKiBCbG9iRG93bmxvYWRDbGllbnQuaCAqLywKIAkJCQk4M0JGQUM0MTFEOTYxMzYwMDA0
MzM0OTAgLyogQmxvYkRvd25sb2FkQ2xpZW50LmNwcCAqLywKQEAgLTU3NzksMTQgKzU3NzYsNiBA
QAogCQkJbmFtZSA9IG1hYzsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07Ci0JCTVD
MTQyNzBDMUMyM0Y4NzcwMEQ0MTE4MyAvKiBpb3MgKi8gPSB7Ci0JCQlpc2EgPSBQQlhHcm91cDsK
LQkJCWNoaWxkcmVuID0gKAotCQkJCTVDMTQyNzBEMUMyM0Y4ODUwMEQ0MTE4MyAvKiBEb3dubG9h
ZElPUy5tbSAqLywKLQkJCSk7Ci0JCQluYW1lID0gaW9zOwotCQkJc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsKLQkJfTsKIAkJNUMxNDI3MUExQzIzRjhCRjAwRDQxMTgzIC8qIENvY29hICovID0gewog
CQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTkwODgsNyArOTA3Nyw2IEBA
CiAJCQkJNUMxNDI3MDExQzIzRjg0QzAwRDQxMTgzIC8qIERvd25sb2FkLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUExREY2MzEyMThFMEI3QzgwMDNBM0UyQSAvKiBEb3dubG9hZENsaWVudC5tbSBp
biBTb3VyY2VzICovLAogCQkJCTVDMTQyNzEzMUMyM0Y4OUUwMEQ0MTE4MyAvKiBEb3dubG9hZENv
Y29hLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJNUMxNDI3MTExQzIzRjg5RTAwRDQxMTgzIC8qIERv
d25sb2FkSU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNUMxNDI3MTIxQzIzRjg5RTAwRDQxMTgz
IC8qIERvd25sb2FkTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNUMxNDI3MDYxQzIzRjg0QzAw
RDQxMTgzIC8qIERvd25sb2FkTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUI3RDRD
QjEyODhBQUE3MDBDRkQwOEMgLyogRG93bmxvYWRQcm94eS5jcHAgaW4gU291cmNlcyAqLywKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCShyZXZpc2lvbiAyMDcxMzgpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDE2LTEwLTExICBBbGV4IENocmlzdGVu
c2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVtb3ZlIGRlYWQgbmV0
d29ya2luZyBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNjMyNjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHA6CisgICAg
ICAgIChXZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OnNjaGVkdWxlTG9hZCk6CisKIDIwMTYtMTAt
MDYgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZp
ZXdlZCBidWlsZCBmaXggd2hlbiBidWlsZGluZyB3aXRoIERpcmVjdDJELgpJbmRleDogU291cmNl
L1dlYktpdC9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2No
ZWR1bGVyLmNwcAkocmV2aXNpb24gMjA3MTM4KQorKysgU291cmNlL1dlYktpdC9XZWJDb3JlU3Vw
cG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDks
NyArMTQ5LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OnNjaGVkdWxlTAogICAg
IGJvb2wgaGFkUmVxdWVzdHMgPSBob3N0LT5oYXNSZXF1ZXN0cygpOwogICAgIGhvc3QtPnNjaGVk
dWxlKHJlc291cmNlTG9hZGVyLCBwcmlvcml0eSk7CiAKLSNpZiBQTEFURk9STShDT0NPQSkgfHwg
VVNFKENGTkVUV09SSykKKyNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKENGVVJMQ09OTkVDVElP
TikKICAgICBpZiAoUmVzb3VyY2VSZXF1ZXN0OjpyZXNvdXJjZVByaW9yaXRpZXNFbmFibGVkKCkg
JiYgIWlzU3VzcGVuZGluZ1BlbmRpbmdSZXF1ZXN0cygpKSB7CiAgICAgICAgIC8vIFNlcnZlIGFs
bCByZXF1ZXN0cyBhdCBvbmNlIHRvIGtlZXAgdGhlIHBpcGVsaW5lIGZ1bGwgYXQgdGhlIG5ldHdv
cmsgbGF5ZXIuCiAgICAgICAgIC8vIEZJWE1FOiBEb2VzIHRoaXMgY29kZSBkbyBhbnl0aGluZyB1
c2VmdWwsIGdpdmVuIHRoYXQgd2UgYWxzbyBzZXQgbWF4UmVxdWVzdHNJbkZsaWdodFBlckhvc3Qg
dG8gZWZmZWN0aXZlbHkgdW5saW1pdGVkIG9uIHRoZXNlIHBsYXRmb3Jtcz8KSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvY2YvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2YvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyMDcxMzgpCisrKyBTb3VyY2UvV2ViS2l0L2NmL0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDE2LTEwLTExICBBbGV4IENocmlzdGVu
c2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVtb3ZlIGRlYWQgbmV0
d29ya2luZyBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNjMyNjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudENGLmNwcDoKKwogMjAxNi0w
OC0xNSAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgogCiAgICAgICAgIFJl
bW92ZSB1bnVzZWQgaW5jbHVkZXMgb2Ygd3RmIGhlYWRlcnMKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
Y2YvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvY2YvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3Bw
CShyZXZpc2lvbiAyMDcxMzgpCisrKyBTb3VyY2UvV2ViS2l0L2NmL1dlYkNvcmVTdXBwb3J0L1dl
Ykluc3BlY3RvckNsaWVudENGLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsOCArMjcsOCBAQAog
Ly8gYmVmb3JlIGluY2x1ZGluZyBhbnkgb3RoZXIgZmlsZXMuIEZhaWxpbmcgdG8gaW5jbHVkZSBj
b25maWcuaCB3aWxsIGxlYXZlCiAvLyBVU0VfQ0YgdW5kZWZpbmVkLCBjYXVzaW5nIGJ1aWxkIGZh
aWx1cmVzIGluIHRoaXMKIC8vIGZpbGUuIEJ1dCBNYWMgZG9lc24ndCBoYXZlIGEgY29uZmlnLmgg
Zm9yIFdlYktpdCwgc28gd2UgY2FuJ3QgaW5jbHVkZSB0aGUKLS8vIFdpbmRvd3Mgb25lIGhlcmUu
IEZvciBub3cgd2UgY2FuIGp1c3QgZGVmaW5lIFVTRV9DRiBhbmQKLS8vIFVTRV9DRk5FVFdPUksg
bWFudWFsbHksIGJ1dCB3ZSBuZWVkIGEgYmV0dGVyIGxvbmctdGVybSBzb2x1dGlvbi4KKy8vIFdp
bmRvd3Mgb25lIGhlcmUuIEZvciBub3cgd2UgY2FuIGp1c3QgZGVmaW5lIFVTRV9DRiBtYW51YWxs
eSwKKy8vIGJ1dCB3ZSBuZWVkIGEgYmV0dGVyIGxvbmctdGVybSBzb2x1dGlvbi4KICNpZm5kZWYg
VVNFX0NGCiAjZGVmaW5lIFVTRV9DRiAxCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFj
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDIwNzEzOCkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDIxIEBACisyMDE2LTEwLTExICBBbGV4IENocmlzdGVuc2VuICA8YWNo
cmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVtb3ZlIGRlYWQgbmV0d29ya2luZyBj
b2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjMy
NjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1p
c2MvV2ViRG93bmxvYWQubW06CisgICAgICAgICgtW1dlYkRvd25sb2FkIF9pbml0V2l0aExvYWRp
bmdDRlVSTENvbm5lY3Rpb246cmVxdWVzdDpyZXNwb25zZTpkZWxlZ2F0ZTpwcm94eTpdKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBNaXNjL1dlYkRvd25sb2FkSW50ZXJuYWwuaDoKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbToKKyAgICAgICAgKFdlYkZyYW1l
TG9hZGVyQ2xpZW50Ojpjb252ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93bmxvYWQpOgorICAgICAg
ICAqIFdlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW06CisgICAgICAgICgrW1dlYlByZWZlcmVuY2Vz
IF9zZXRDdXJyZW50TmV0d29ya0xvYWRlclNlc3Npb25Db29raWVBY2NlcHRQb2xpY3k6XSk6Cisg
ICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoLVtXZWJWaWV3IHNjaGVkdWxl
SW5SdW5Mb29wOmZvck1vZGU6XSk6CisgICAgICAgICgtW1dlYlZpZXcgdW5zY2hlZHVsZUZyb21S
dW5Mb29wOmZvck1vZGU6XSk6CisKIDIwMTYtMTAtMTAgIFphbiBEb2JlcnNlayAgPHpkb2JlcnNl
a0BpZ2FsaWEuY29tPgogCiAgICAgICAgIEFkZCBFTkFCTEVfRU5DUllQVEVEX01FRElBIGNvbmZp
Z3VyYXRpb24gb3B0aW9uCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYkRvd25sb2Fk
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViRG93bmxvYWQubW0J
KHJldmlzaW9uIDIwNzEzOCkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViRG93bmxvYWQu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTQwLDExICs0MCw2IEBACiAKICNpbXBvcnQgIldlYlR5cGVz
SW50ZXJuYWwuaCIKIAotI2lmIFVTRShDRk5FVFdPUkspCi0jaW1wb3J0IDxDRk5ldHdvcmsvQ0ZO
ZXR3b3JrLmg+Ci0jaW1wb3J0IDxDRk5ldHdvcmsvQ0ZVUkxDb25uZWN0aW9uLmg+Ci0jZW5kaWYK
LQogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIEBjbGFzcyBOU1VSTENvbm5lY3Rpb25EZWxl
Z2F0ZVByb3h5OwpAQCAtNjEsMTQgKzU2LDYgQEAgLSAoaWQpX2luaXRXaXRoUmVxdWVzdDooTlNV
UkxSZXF1ZXN0ICopcgogICAgICAgICAgICAgICBkZWxlZ2F0ZTooaWQpZGVsZWdhdGUKICAgICAg
ICAgICAgICBkaXJlY3Rvcnk6KE5TU3RyaW5nICopZGlyZWN0b3J5OwogCi0jaWYgVVNFKENGTkVU
V09SSykKLS0gKGlkKV9pbml0V2l0aExvYWRpbmdDRlVSTENvbm5lY3Rpb246KENGVVJMQ29ubmVj
dGlvblJlZiljb25uZWN0aW9uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0
OihDRlVSTFJlcXVlc3RSZWYpcmVxdWVzdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXNwb25zZTooQ0ZVUkxSZXNwb25zZVJlZilyZXNwb25zZQotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkZWxlZ2F0ZTooaWQpZGVsZWdhdGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcHJveHk6KE5TVVJMQ29ubmVjdGlvbkRlbGVnYXRlUHJveHkgKilwcm94eTsKLSNlbmRp
ZgotCiBAZW5kCiAKIEBpbnRlcmZhY2UgV2ViRG93bmxvYWRJbnRlcm5hbCA6IE5TT2JqZWN0IDxO
U1VSTERvd25sb2FkRGVsZWdhdGU+CkBAIC0yMzEsMTggKzIxOCw2IEBAIC0gKGlkKV9pbml0V2l0
aExvYWRpbmdDb25uZWN0aW9uOihOU1VSTEMKICAgICByZXR1cm4gW3N1cGVyIF9pbml0V2l0aExv
YWRpbmdDb25uZWN0aW9uOmNvbm5lY3Rpb24gcmVxdWVzdDpyZXF1ZXN0IHJlc3BvbnNlOnJlc3Bv
bnNlIGRlbGVnYXRlOl93ZWJJbnRlcm5hbCBwcm94eTpwcm94eV07CiB9CiAKLSNpZiBVU0UoQ0ZO
RVRXT1JLKQotLSAoaWQpX2luaXRXaXRoTG9hZGluZ0NGVVJMQ29ubmVjdGlvbjooQ0ZVUkxDb25u
ZWN0aW9uUmVmKWNvbm5lY3Rpb24KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVl
c3Q6KENGVVJMUmVxdWVzdFJlZilyZXF1ZXN0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJlc3BvbnNlOihDRlVSTFJlc3BvbnNlUmVmKXJlc3BvbnNlCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGRlbGVnYXRlOihpZClkZWxlZ2F0ZQotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBwcm94eTooTlNVUkxDb25uZWN0aW9uRGVsZWdhdGVQcm94eSAqKXByb3h5Ci17Ci0g
ICAgW3NlbGYgX3NldFJlYWxEZWxlZ2F0ZTpkZWxlZ2F0ZV07Ci0gICAgcmV0dXJuIFtzdXBlciBf
aW5pdFdpdGhMb2FkaW5nQ0ZVUkxDb25uZWN0aW9uOmNvbm5lY3Rpb24gcmVxdWVzdDpyZXF1ZXN0
IHJlc3BvbnNlOnJlc3BvbnNlIGRlbGVnYXRlOl93ZWJJbnRlcm5hbCBwcm94eTpwcm94eV07Ci19
Ci0jZW5kaWYKLQogLSAoaWQpX2luaXRXaXRoUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVz
dAogICAgICAgICAgICAgICBkZWxlZ2F0ZTooaWQpZGVsZWdhdGUKICAgICAgICAgICAgICBkaXJl
Y3Rvcnk6KE5TU3RyaW5nICopZGlyZWN0b3J5CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9NaXNj
L1dlYkRvd25sb2FkSW50ZXJuYWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9N
aXNjL1dlYkRvd25sb2FkSW50ZXJuYWwuaAkocmV2aXNpb24gMjA3MTM4KQorKysgU291cmNlL1dl
YktpdC9tYWMvTWlzYy9XZWJEb3dubG9hZEludGVybmFsLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3
LDEwICsyNyw2IEBACiAqLwogIAogI2ltcG9ydCA8V2ViS2l0TGVnYWN5L1dlYkRvd25sb2FkLmg+
Ci0KLSNpZiBVU0UoQ0ZORVRXT1JLKQotI2ltcG9ydCA8Q0ZOZXR3b3JrL0NGVVJMQ29ubmVjdGlv
bi5oPgotI2VuZGlmCiAgCiBAaW50ZXJmYWNlIFdlYkRvd25sb2FkIChXZWJEb3dubG9hZENyZWF0
aW9uKQogKyhpZClfZG93bmxvYWRXaXRoTG9hZGluZ0Nvbm5lY3Rpb246KE5TVVJMQ29ubmVjdGlv
biAqKWNvbm5lY3Rpb24KQEAgLTQzLDEyICszOSw0IEBAIEBpbnRlcmZhY2UgV2ViRG93bmxvYWQg
KFdlYkRvd25sb2FkQ3JlYXQKICAgICAgICAgICAgICAgICAgZGVsZWdhdGU6KGlkKWRlbGVnYXRl
CiAgICAgICAgICAgICAgICAgZGlyZWN0b3J5OihOU1N0cmluZyAqKWRpcmVjdG9yeTsKIAotI2lm
IFVTRShDRk5FVFdPUkspCi0rIChpZClfZG93bmxvYWRXaXRoTG9hZGluZ0NGVVJMQ29ubmVjdGlv
bjooQ0ZVUkxDb25uZWN0aW9uUmVmKWNvbm5lY3Rpb24KLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZXF1ZXN0OihDRlVSTFJlcXVlc3RSZWYpcmVxdWVzdAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2U6KENGVVJMUmVzcG9uc2VSZWYpcmVzcG9uc2UK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGVnYXRlOihpZClkZWxlZ2F0ZQot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJveHk6KGlkKXByb3h5OwotI2Vu
ZGlmCi0KIEBlbmQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCShyZXZpc2lvbiAyMDcxMzgpCisrKyBT
b3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQko
d29ya2luZyBjb3B5KQpAQCAtMzA0LDEzICszMDQsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xp
ZW50Ojpjb252ZXJ0TWFpblJlCiAKICAgICBSZXNvdXJjZUhhbmRsZSogaGFuZGxlID0gbWFpblJl
c291cmNlTG9hZGVyLT5oYW5kbGUoKTsKIAotI2lmIFVTRShDRk5FVFdPUkspCi0gICAgQVNTRVJU
KFtXZWJEb3dubG9hZCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF9kb3dubG9hZFdpdGhM
b2FkaW5nQ0ZVUkxDb25uZWN0aW9uOnJlcXVlc3Q6cmVzcG9uc2U6ZGVsZWdhdGU6cHJveHk6KV0p
OwotICAgIGF1dG8gY29ubmVjdGlvbiA9IGhhbmRsZS0+cmVsZWFzZUNvbm5lY3Rpb25Gb3JEb3du
bG9hZCgpOwotICAgIFtXZWJEb3dubG9hZCBfZG93bmxvYWRXaXRoTG9hZGluZ0NGVVJMQ29ubmVj
dGlvbjpjb25uZWN0aW9uLmdldCgpIHJlcXVlc3Q6cmVxdWVzdC5jZlVSTFJlcXVlc3QoVXBkYXRl
SFRUUEJvZHkpIHJlc3BvbnNlOnJlc3BvbnNlLmNmVVJMUmVzcG9uc2UoKSBkZWxlZ2F0ZTpbd2Vi
VmlldyBkb3dubG9hZERlbGVnYXRlXSBwcm94eTpuaWxdOwotI2Vsc2UKICAgICBbV2ViRG93bmxv
YWQgX2Rvd25sb2FkV2l0aExvYWRpbmdDb25uZWN0aW9uOmhhbmRsZS0+Y29ubmVjdGlvbigpIHJl
cXVlc3Q6cmVxdWVzdC5uc1VSTFJlcXVlc3QoVXBkYXRlSFRUUEJvZHkpIHJlc3BvbnNlOnJlc3Bv
bnNlLm5zVVJMUmVzcG9uc2UoKSBkZWxlZ2F0ZTpbd2ViVmlldyBkb3dubG9hZERlbGVnYXRlXSBw
cm94eTpuaWxdOwotI2VuZGlmCiB9CiAKIGJvb2wgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3Bh
dGNoRGlkTG9hZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlKERvY3VtZW50TG9hZGVyKiBsb2FkZXIs
IGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UsIGludCBsZW5ndGgpCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dl
YlByZWZlcmVuY2VzLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcv
V2ViUHJlZmVyZW5jZXMubW0JKHJldmlzaW9uIDIwNzEzOCkKKysrIFNvdXJjZS9XZWJLaXQvbWFj
L1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW0JKHdvcmtpbmcgY29weSkKQEAgLTE4MDAsNyArMTgw
MCw3IEBAICsgKHZvaWQpX2NsZWFyTmV0d29ya0xvYWRlclNlc3Npb24KICsgKHZvaWQpX3NldEN1
cnJlbnROZXR3b3JrTG9hZGVyU2Vzc2lvbkNvb2tpZUFjY2VwdFBvbGljeTooTlNIVFRQQ29va2ll
QWNjZXB0UG9saWN5KXBvbGljeQogewogICAgIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdl
UmVmPiBjb29raWVTdG9yYWdlID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFn
ZVNlc3Npb24oKS5jb29raWVTdG9yYWdlKCk7Ci0gICAgQVNTRVJUKGNvb2tpZVN0b3JhZ2UpOyAv
LyBXaWxsIGZhaWwgd2hlbiBidWlsZGluZyB3aXRob3V0IFVTRShDRk5FVFdPUkspIGFuZCBOZXR3
b3JrU3RvcmFnZVNlc3Npb246OnN3aXRjaFRvTmV3VGVzdGluZ1Nlc3Npb24oKSB3YXMgbm90IGNh
bGxlZCBiZWZvcmVoYW5kLgorICAgIEFTU0VSVChjb29raWVTdG9yYWdlKTsgLy8gV2lsbCBmYWls
IHdoZW4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzd2l0Y2hUb05ld1Rlc3RpbmdTZXNzaW9uKCkg
d2FzIG5vdCBjYWxsZWQgYmVmb3JlaGFuZC4KICAgICBDRkhUVFBDb29raWVTdG9yYWdlU2V0Q29v
a2llQWNjZXB0UG9saWN5KGNvb2tpZVN0b3JhZ2UuZ2V0KCksIHBvbGljeSk7CiB9CiAKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHJldmlzaW9uIDIwNzEzOCkKKysrIFNv
dXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtNjc3
OSwyNCArNjc3OSwxNCBAQCAtIChpZCljYW5kaWRhdGVMaXN0CiAKIC0gKHZvaWQpc2NoZWR1bGVJ
blJ1bkxvb3A6KE5TUnVuTG9vcCAqKXJ1bkxvb3AgZm9yTW9kZTooTlNTdHJpbmcgKiltb2RlCiB7
Ci0jaWYgVVNFKENGTkVUV09SSykKLSAgICBDRlJ1bkxvb3BSZWYgc2NoZWR1bGVQYWlyUnVuTG9v
cCA9IFtydW5Mb29wIGdldENGUnVuTG9vcF07Ci0jZWxzZQotICAgIE5TUnVuTG9vcCAqc2NoZWR1
bGVQYWlyUnVuTG9vcCA9IHJ1bkxvb3A7Ci0jZW5kaWYKICAgICBpZiAocnVuTG9vcCAmJiBtb2Rl
KQotICAgICAgICBjb3JlKHNlbGYpLT5hZGRTY2hlZHVsZVBhaXIoU2NoZWR1bGVQYWlyOjpjcmVh
dGUoc2NoZWR1bGVQYWlyUnVuTG9vcCwgKENGU3RyaW5nUmVmKW1vZGUpKTsKKyAgICAgICAgY29y
ZShzZWxmKS0+YWRkU2NoZWR1bGVQYWlyKFNjaGVkdWxlUGFpcjo6Y3JlYXRlKHJ1bkxvb3AsIChD
RlN0cmluZ1JlZiltb2RlKSk7CiB9CiAKIC0gKHZvaWQpdW5zY2hlZHVsZUZyb21SdW5Mb29wOihO
U1J1bkxvb3AgKilydW5Mb29wIGZvck1vZGU6KE5TU3RyaW5nICopbW9kZQogewotI2lmIFVTRShD
Rk5FVFdPUkspCi0gICAgQ0ZSdW5Mb29wUmVmIHNjaGVkdWxlUGFpclJ1bkxvb3AgPSBbcnVuTG9v
cCBnZXRDRlJ1bkxvb3BdOwotI2Vsc2UKLSAgICBOU1J1bkxvb3AgKnNjaGVkdWxlUGFpclJ1bkxv
b3AgPSBydW5Mb29wOwotI2VuZGlmCiAgICAgaWYgKHJ1bkxvb3AgJiYgbW9kZSkKLSAgICAgICAg
Y29yZShzZWxmKS0+cmVtb3ZlU2NoZWR1bGVQYWlyKFNjaGVkdWxlUGFpcjo6Y3JlYXRlKHNjaGVk
dWxlUGFpclJ1bkxvb3AsIChDRlN0cmluZ1JlZiltb2RlKSk7CisgICAgICAgIGNvcmUoc2VsZikt
PnJlbW92ZVNjaGVkdWxlUGFpcihTY2hlZHVsZVBhaXI6OmNyZWF0ZShydW5Mb29wLCAoQ0ZTdHJp
bmdSZWYpbW9kZSkpOwogfQogCiBzdGF0aWMgQk9PTCBmaW5kU3RyaW5nKE5TVmlldyA8V2ViRG9j
dW1lbnRTZWFyY2hpbmc+ICpzZWFyY2hWaWV3LCBOU1N0cmluZyAqc3RyaW5nLCBXZWJGaW5kT3B0
aW9ucyBvcHRpb25zKQpJbmRleDogU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwkocmV2aXNpb24gMjA3MTM4KQorKysg
U291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzYg
QEAKKzIwMTYtMTAtMTEgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9y
Zz4KKworICAgICAgICBSZW1vdmUgZGVhZCBuZXR3b3JraW5nIGNvZGUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzI2MworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogRGVmYXVsdERvd25sb2FkRGVsZWdh
dGUuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6
CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6c2F2ZVBsYXRmb3JtRGF0YVRvQ2FjaGVk
RnJhbWUpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRl
eHQuY3BwOgorICAgICAgICAoV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlUHJpdmF0
ZUJyb3dzaW5nU2Vzc2lvbik6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVOZXR3
b3JraW5nQ29udGV4dC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3Ry
YXRlZ2llcy5jcHA6CisgICAgICAgICogV2ViRG93bmxvYWQuaDoKKyAgICAgICAgKiBXZWJFcnJv
ci5jcHA6CisgICAgICAgIChXZWJFcnJvcjo6bG9jYWxpemVkRGVzY3JpcHRpb24pOgorICAgICAg
ICAoV2ViRXJyb3I6OnNzbFBlZXJDZXJ0aWZpY2F0ZSk6CisgICAgICAgICogV2ViRXJyb3IuaDoK
KyAgICAgICAgKiBXZWJNdXRhYmxlVVJMUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJNdXRhYmxl
VVJMUmVxdWVzdDo6bXV0YWJsZUNvcHkpOgorICAgICAgICAqIFdlYlVSTEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlLmNwcDoKKyAgICAgICAgKFdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjpp
bml0V2l0aFByb3RlY3Rpb25TcGFjZSk6CisgICAgICAgIChXZWJVUkxBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZTo6aW5pdFdpdGhBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6CisgICAgICAgICogV2Vi
VVJMUmVzcG9uc2UuY3BwOgorICAgICAgICAoV2ViVVJMUmVzcG9uc2U6OnNzbFBlZXJDZXJ0aWZp
Y2F0ZSk6CisgICAgICAgICogV2ViVVJMUmVzcG9uc2UuaDoKKyAgICAgICAgKiBXZWJWaWV3LmNw
cDoKKyAgICAgICAgKFdlYlZpZXc6OnNldENhY2hlTW9kZWwpOgorICAgICAgICAoV2ViVmlldzo6
Y2FuSGFuZGxlUmVxdWVzdCk6CisgICAgICAgIChXZWJWaWV3Ojpub3RpZnlQcmVmZXJlbmNlc0No
YW5nZWQpOgorICAgICAgICAodXBkYXRlU2hhcmVkU2V0dGluZ3NGcm9tUHJlZmVyZW5jZXNJZk5l
ZWRlZCk6CisKIDIwMTYtMTAtMTEgIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29t
PgogCiAgICAgICAgIFtXaW5dIFBhcmFsbGVsIERSVHMgYXJlIHNoYXJpbmcgcHJlZmVyZW5jZXMg
YW5kIGNhY2hlLgpJbmRleDogU291cmNlL1dlYktpdC93aW4vRGVmYXVsdERvd25sb2FkRGVsZWdh
dGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9EZWZhdWx0RG93bmxvYWREZWxl
Z2F0ZS5oCShyZXZpc2lvbiAyMDcxMzgpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9EZWZhdWx0RG93
bmxvYWREZWxlZ2F0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw3IEBACiAjaW5jbHVk
ZSAiV2ViS2l0LmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KIAotI2lmIFVTRShDRk5FVFdP
UkspCisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKICNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZVUkxE
b3dubG9hZFByaXYuaD4KICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJEb3du
bG9hZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYkRvd25sb2FkLmgJKHJl
dmlzaW9uIDIwNzEzOCkKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYkRvd25sb2FkLmgJKHdvcmtp
bmcgY29weSkKQEAgLTIzLDE1ICsyMywxNCBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAotI2lm
bmRlZiBXZWJEb3dubG9hZF9oCi0jZGVmaW5lIFdlYkRvd25sb2FkX2gKKyNwcmFnbWEgb25jZQog
CiAjaW5jbHVkZSAiV2ViS2l0LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9DT01QdHIuaD4KICNpbmNs
dWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAK
LSNpZiBVU0UoQ0ZORVRXT1JLKQorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAjaW5jbHVkZSA8
Q0ZOZXR3b3JrL0NGVVJMRG93bmxvYWRQcml2Lmg+CiAjZWxpZiBVU0UoQ1VSTCkKICNpbmNsdWRl
IDxXZWJDb3JlL0N1cmxEb3dubG9hZC5oPgpAQCAtODQsNyArODMsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGNvbnRpbnVlV2l0aG91dENyZWRlbnRp
YWxGb3JBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShfSW5fb3B0XyBJV2ViVVJMQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UqKTsKICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgdXNl
Q3JlZGVudGlhbChfSW5fb3B0XyBJV2ViVVJMQ3JlZGVudGlhbCosIF9Jbl9vcHRfIElXZWJVUkxB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSopOwogCi0jaWYgVVNFKENGTkVUV09SSykKKyNpZiBVU0Uo
Q0ZVUkxDT05ORUNUSU9OKQogICAgIC8vIENGVVJMRG93bmxvYWQgQ2FsbGJhY2tzCiAgICAgdm9p
ZCBkaWRTdGFydCgpOwogICAgIENGVVJMUmVxdWVzdFJlZiB3aWxsU2VuZFJlcXVlc3QoQ0ZVUkxS
ZXF1ZXN0UmVmLCBDRlVSTFJlc3BvbnNlUmVmKTsKQEAgLTEwOSw3ICsxMDgsNyBAQCBwcm90ZWN0
ZWQ6CiAKICAgICBXVEY6OlN0cmluZyBtX2Rlc3RpbmF0aW9uOwogICAgIFdURjo6U3RyaW5nIG1f
YnVuZGxlUGF0aDsKLSNpZiBVU0UoQ0ZORVRXT1JLKQorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04p
CiAgICAgUmV0YWluUHRyPENGVVJMRG93bmxvYWRSZWY+IG1fZG93bmxvYWQ7CiAjZWxpZiBVU0Uo
Q1VSTCkKICAgICBSZWZQdHI8V2ViQ29yZTo6Q3VybERvd25sb2FkPiBtX2Rvd25sb2FkOwpAQCAt
MTIzLDYgKzEyMiwzIEBAIHByb3RlY3RlZDoKICAgICBpbnQgbV9yZWNlaXZlZDsKICNlbmRpZgog
fTsKLQotCi0jZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYkVycm9yLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJFcnJvci5jcHAJKHJldmlzaW9uIDIwNzEz
OCkKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYkVycm9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzMsNyArMzMsNyBAQAogI2luY2x1ZGUgPENvcmVHcmFwaGljcy9Db3JlR3JhcGhpY3MuaD4KICNl
bmRpZgogCi0jaWYgVVNFKENGTkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogI2lu
Y2x1ZGUgPFdlYktpdFN5c3RlbUludGVyZmFjZS9XZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaD4KICNl
bmRpZgogCkBAIC0xMzUsNyArMTM1LDcgQEAgSFJFU1VMVCBXZWJFcnJvcjo6bG9jYWxpemVkRGVz
Y3JpcHRpb24oXwogCiAgICAgKnJlc3VsdCA9IEJTdHJpbmcobV9lcnJvci5sb2NhbGl6ZWREZXNj
cmlwdGlvbigpKS5yZWxlYXNlKCk7CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQorI2lmIFVTRShDRlVS
TENPTk5FQ1RJT04pCiAgICAgaWYgKCEqcmVzdWx0KSB7CiAgICAgICAgIGlmIChpbnQgY29kZSA9
IG1fZXJyb3IuZXJyb3JDb2RlKCkpCiAgICAgICAgICAgICAqcmVzdWx0ID0gQlN0cmluZyh3a0NG
TmV0d29ya0Vycm9yR2V0TG9jYWxpemVkRGVzY3JpcHRpb24oY29kZSkpLnJlbGVhc2UoKTsKQEAg
LTIxOSw3ICsyMTksNyBAQCBIUkVTVUxUIFdlYkVycm9yOjpzc2xQZWVyQ2VydGlmaWNhdGUoX091
CiAgICAgICAgIHJldHVybiBFX1BPSU5URVI7CiAgICAgKnJlc3VsdCA9IDA7CiAKLSNpZiBVU0Uo
Q0ZORVRXT1JLKQorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAgICAgaWYgKCFtX2NmRXJyb3JV
c2VySW5mb0RpY3QpIHsKICAgICAgICAgLy8gY29weSB1c2VyaW5mbyBmcm9tIENGRXJyb3JSZWYK
ICAgICAgICAgQ0ZFcnJvclJlZiBjZkVycm9yID0gbV9lcnJvcjsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvd2luL1dlYkVycm9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViRXJy
b3IuaAkocmV2aXNpb24gMjA3MTM4KQorKysgU291cmNlL1dlYktpdC93aW4vV2ViRXJyb3IuaAko
d29ya2luZyBjb3B5KQpAQCAtMjMsOCArMjMsNyBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAot
I2lmbmRlZiBXZWJFcnJvcl9oCi0jZGVmaW5lIFdlYkVycm9yX2gKKyNwcmFnbWEgb25jZQogCiAj
aW5jbHVkZSAiV2ViS2l0LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9DT01QdHIuaD4KQEAgLTY2LDEw
ICs2NSw4IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgVUxPTkcgbV9yZWZDb3VudCB7IDAgfTsK
ICAgICBDT01QdHI8SVByb3BlcnR5QmFnPiBtX3VzZXJJbmZvOwotI2lmIFVTRShDRk5FVFdPUksp
CisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKICAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVm
PiBtX2NmRXJyb3JVc2VySW5mb0RpY3Q7CiAjZW5kaWYKICAgICBXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yIG1fZXJyb3I7CiB9OwotCi0jZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYk11
dGFibGVVUkxSZXF1ZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJN
dXRhYmxlVVJMUmVxdWVzdC5jcHAJKHJldmlzaW9uIDIwNzEzOCkKKysrIFNvdXJjZS9XZWJLaXQv
d2luL1dlYk11dGFibGVVUkxSZXF1ZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsNyArNDAs
NyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvQ2VydGlmaWNhdGVDRldpbi5oPgogI2VuZGlmCiAKLSNp
ZiBVU0UoQ0ZORVRXT1JLKQorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAjaW5jbHVkZSA8Q0ZO
ZXR3b3JrL0NGVVJMUmVxdWVzdFByaXYuaD4KICNlbmRpZgogCkBAIC0zODIsNyArMzgyLDcgQEAg
SFJFU1VMVCBXZWJNdXRhYmxlVVJMUmVxdWVzdDo6bXV0YWJsZUNvcAogICAgIGlmICghcmVzdWx0
KQogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwogCi0jaWYgVVNFKENGTkVUV09SSykKKyNpZiBV
U0UoQ0ZVUkxDT05ORUNUSU9OKQogICAgIFJldGFpblB0cjxDRk11dGFibGVVUkxSZXF1ZXN0UmVm
PiBtdXRhYmxlUmVxdWVzdCA9IGFkb3B0Q0YoQ0ZVUkxSZXF1ZXN0Q3JlYXRlTXV0YWJsZUNvcHko
a0NGQWxsb2NhdG9yRGVmYXVsdCwgbV9yZXF1ZXN0LmNmVVJMUmVxdWVzdChVcGRhdGVIVFRQQm9k
eSkpKTsKICAgICAqcmVzdWx0ID0gY3JlYXRlSW5zdGFuY2UoUmVzb3VyY2VSZXF1ZXN0KG11dGFi
bGVSZXF1ZXN0LmdldCgpKSk7CiAgICAgcmV0dXJuIFNfT0s7CkluZGV4OiBTb3VyY2UvV2ViS2l0
L3dpbi9XZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC93aW4vV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuY3BwCShyZXZpc2lv
biAyMDcxMzgpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0MSw3ICsxNDEsNyBAQCBIUkVTVUxUIFdlYlVS
TEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjppCiAKICAgICAvLyBGSVhNRTogQWZ0ZXIgd2UgY2hh
bmdlIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIHRvIHVzZSAiUmVzb3VyY2VIYW5kbGUiIGFzIHRo
ZSBhYnN0cmFjdCAiU2VuZGVyIiBvciAiU291cmNlIG9mIHRoaXMgQXV0aCBDaGFsbGVuZ2UiLCB0
aGVuIHdlJ2xsCiAgICAgLy8gY29uc3RydWN0IHRoZSBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSB3
aXRoIHRoYXQgYXMgb2J0YWluZWQgZnJvbSB0aGUgd2ViU2VuZGVyCi0jaWYgVVNFKENGTkVUV09S
SykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogICAgIG1fYXV0aGVudGljYXRpb25DaGFsbGVu
Z2UgPSBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSh3ZWJTcGFjZS0+cHJvdGVjdGlvblNwYWNlKCks
IHdlYkNyZWRlbnRpYWwtPmNyZWRlbnRpYWwoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHByZXZpb3VzRmFpbHVyZUNvdW50LCB3ZWJSZXNwb25zZS0+cmVzb3VyY2VSZXNw
b25zZSgpLCB3ZWJFcnJvci0+cmVzb3VyY2VFcnJvcigpKTsKICNlbmRpZgpAQCAtMTYyLDcgKzE2
Miw3IEBAIEhSRVNVTFQgV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6OmkKICAgICBpZiAo
IXdlYlNlbmRlcikKICAgICAgICAgcmV0dXJuIEVfTk9JTlRFUkZBQ0U7CiAKLSNpZiBVU0UoQ0ZO
RVRXT1JLKQorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAgICAgbV9hdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSA9IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKHdlYkNoYWxsZW5nZS0+YXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UoKS5jZlVSTEF1dGhDaGFsbGVuZ2VSZWYoKSwgd2ViU2VuZGVyLT5hdXRo
ZW50aWNhdGlvbkNsaWVudCgpKTsKIAogICAgIHJldHVybiBTX09LOwpJbmRleDogU291cmNlL1dl
YktpdC93aW4vV2ViVVJMUmVzcG9uc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
d2luL1dlYlVSTFJlc3BvbnNlLmNwcAkocmV2aXNpb24gMjA3MTM4KQorKysgU291cmNlL1dlYktp
dC93aW4vV2ViVVJMUmVzcG9uc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBA
CiAjaW5jbHVkZSA8Q29yZUdyYXBoaWNzL0NvcmVHcmFwaGljcy5oPgogI2VuZGlmCiAKLSNpZiBV
U0UoQ0ZORVRXT1JLKQorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAjaW5jbHVkZSA8V2ViS2l0
U3lzdGVtSW50ZXJmYWNlL1dlYktpdFN5c3RlbUludGVyZmFjZS5oPgogI2VuZGlmCiAKQEAgLTQw
Niw3ICs0MDYsNyBAQCBIUkVTVUxUIFdlYlVSTFJlc3BvbnNlOjpzc2xQZWVyQ2VydGlmaWNhCiAg
ICAgICAgIHJldHVybiBFX1BPSU5URVI7CiAgICAgKnJlc3VsdCA9IDA7CiAKLSNpZiBVU0UoQ0ZO
RVRXT1JLKQorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAgICAgQ0ZEaWN0aW9uYXJ5UmVmIGRp
Y3QgPSBjZXJ0aWZpY2F0ZURpY3Rpb25hcnkoKTsKICAgICBpZiAoIWRpY3QpCiAgICAgICAgIHJl
dHVybiBFX0ZBSUw7CkBAIC00NzUsNyArNDc1LDcgQEAgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
V2ViVVJMUmVzcG9uc2U6OgogICAgIHJldHVybiBtX3Jlc3BvbnNlOwogfQogCi0jaWYgVVNFKENG
TkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogQ0ZEaWN0aW9uYXJ5UmVmIFdlYlVS
TFJlc3BvbnNlOjpjZXJ0aWZpY2F0ZURpY3Rpb25hcnkoKSBjb25zdAogewogICAgIGlmIChtX1NT
TENlcnRpZmljYXRlSW5mbykKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYlVSTFJlc3BvbnNl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViVVJMUmVzcG9uc2UuaAkocmV2
aXNpb24gMjA3MTM4KQorKysgU291cmNlL1dlYktpdC93aW4vV2ViVVJMUmVzcG9uc2UuaAkod29y
a2luZyBjb3B5KQpAQCAtMjMsOCArMjMsNyBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAotI2lm
bmRlZiBXZWJVUkxSZXNwb25zZV9ICi0jZGVmaW5lIFdlYlVSTFJlc3BvbnNlX0gKKyNwcmFnbWEg
b25jZQogCiAjaW5jbHVkZSAiV2ViS2l0LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJl
c3BvbnNlLmg+CkBAIC02Niw3ICs2NSw3IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBIUkVT
VUxUIHN1Z2dlc3RlZEZpbGVFeHRlbnNpb24oQlNUUiogcmVzdWx0KTsKIAotI2lmIFVTRShDRk5F
VFdPUkspCisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKICAgICBDRkRpY3Rpb25hcnlSZWYgY2Vy
dGlmaWNhdGVEaWN0aW9uYXJ5KCkgY29uc3Q7CiAjZW5kaWYKIApAQCAtNzQsOSArNzMsNyBAQCBw
cm90ZWN0ZWQ6CiAgICAgVUxPTkcgbV9yZWZDb3VudCB7IDAgfTsKICAgICBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlIG1fcmVzcG9uc2U7CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQorI2lmIFVTRShD
RlVSTENPTk5FQ1RJT04pCiAgICAgbXV0YWJsZSBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBt
X1NTTENlcnRpZmljYXRlSW5mbzsgICAgLy8gdGhpcyBlbnN1cmVzIGNlcnRpZmljYXRlIGNvbnRl
eHRzIGFyZSB2YWxpZCBmb3IgdGhlIGxpZmV0aW1lIG9mIHRoaXMgV2ViVVJMUmVzcG9uc2UuCiAj
ZW5kaWYKIH07Ci0KLSNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAJKHJldmlzaW9uIDIw
NzEzOCkKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xNzgsNyArMTc4LDcgQEAKICNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlv
bi5oPgogI2VuZGlmCiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQorI2lmIFVTRShDRlVSTENPTk5FQ1RJ
T04pCiAjaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGVVJMQ2FjaGVQcml2Lmg+CiAjaW5jbHVkZSA8Q0ZO
ZXR3b3JrL0NGVVJMUHJvdG9jb2xQcml2Lmg+CiAjaW5jbHVkZSA8V2ViS2l0U3lzdGVtSW50ZXJm
YWNlL1dlYktpdFN5c3RlbUludGVyZmFjZS5oPgpAQCAtNDk3LDcgKzQ5Nyw3IEBAIHZvaWQgV2Vi
Vmlldzo6c2V0Q2FjaGVNb2RlbChXZWJDYWNoZU1vZGUKIAogICAgIFN0cmluZyBjYWNoZURpcmVj
dG9yeTsKIAotI2lmIFVTRShDRk5FVFdPUkspCisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKICAg
ICBSZXRhaW5QdHI8Q0ZVUkxDYWNoZVJlZj4gY2Z1cmxDYWNoZSA9IGFkb3B0Q0YoQ0ZVUkxDYWNo
ZUNvcHlTaGFyZWRVUkxDYWNoZSgpKTsKICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNmdXJs
Q2FjaGVEaXJlY3RvcnkgPSBhZG9wdENGKHdrQ29weUZvdW5kYXRpb25DYWNoZURpcmVjdG9yeSgw
KSk7CiAgICAgaWYgKCFjZnVybENhY2hlRGlyZWN0b3J5KSB7CkBAIC01NTEsNyArNTUxLDcgQEAg
dm9pZCBXZWJWaWV3OjpzZXRDYWNoZU1vZGVsKFdlYkNhY2hlTW9kZQogICAgICAgICAvLyBNZW1v
cnkgY2FjaGUgY2FwYWNpdHkgKGluIGJ5dGVzKQogICAgICAgICBjYWNoZU1lbW9yeUNhcGFjaXR5
ID0gMDsKIAotI2lmIFVTRShDRk5FVFdPUkspCisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKICAg
ICAgICAgLy8gRm91bmRhdGlvbiBkaXNrIGNhY2hlIGNhcGFjaXR5IChpbiBieXRlcykKICAgICAg
ICAgY2FjaGVEaXNrQ2FwYWNpdHkgPSBDRlVSTENhY2hlRGlza0NhcGFjaXR5KGNmdXJsQ2FjaGUu
Z2V0KCkpOwogI2VuZGlmCkBAIC02NzUsNyArNjc1LDcgQEAgdm9pZCBXZWJWaWV3OjpzZXRDYWNo
ZU1vZGVsKFdlYkNhY2hlTW9kZQogICAgIG1lbW9yeUNhY2hlLnNldERlYWREZWNvZGVkRGF0YURl
bGV0aW9uSW50ZXJ2YWwoZGVhZERlY29kZWREYXRhRGVsZXRpb25JbnRlcnZhbCk7CiAgICAgUGFn
ZUNhY2hlOjpzaW5nbGV0b24oKS5zZXRNYXhTaXplKHBhZ2VDYWNoZVNpemUpOwogCi0jaWYgVVNF
KENGTkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogICAgIC8vIERvbid0IHNocmlu
ayBhIGJpZyBkaXNrIGNhY2hlLCBzaW5jZSB0aGF0IHdvdWxkIGNhdXNlIGNodXJuLgogICAgIGNh
Y2hlRGlza0NhcGFjaXR5ID0gbWF4KGNhY2hlRGlza0NhcGFjaXR5LCBDRlVSTENhY2hlRGlza0Nh
cGFjaXR5KGNmdXJsQ2FjaGUuZ2V0KCkpKTsKIApAQCAtMTU0Nyw3ICsxNTQ3LDcgQEAgdm9pZCBX
ZWJWaWV3OjpjbG9zZVdpbmRvdygpCiAKIGJvb2wgV2ViVmlldzo6Y2FuSGFuZGxlUmVxdWVzdChj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7Ci0jaWYgVVNFKENGTkVU
V09SSykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogICAgIC8vIE9uIHRoZSBNYWMgdGhlcmUn
cyBhbiBhYm91dCBVUkwgcHJvdG9jb2wgaW1wbGVtZW50YXRpb24gYnV0IFdpbmRvd3MgQ0ZOZXR3
b3JrIGRvZXNuJ3QgaGF2ZSB0aGF0LgogICAgIGlmIChyZXF1ZXN0LnVybCgpLnByb3RvY29sSXMo
ImFib3V0IikpCiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtNTI2MSw3ICs1MjYxLDcgQEAgSFJF
U1VMVCBXZWJWaWV3Ojpub3RpZnlQcmVmZXJlbmNlc0NoYW5nZQogICAgIGhyID0gcHJlZmVyZW5j
ZXMtPnByaXZhdGVCcm93c2luZ0VuYWJsZWQoJmVuYWJsZWQpOwogICAgIGlmIChGQUlMRUQoaHIp
KQogICAgICAgICByZXR1cm4gaHI7Ci0jaWYgUExBVEZPUk0oV0lOKSB8fCBVU0UoQ0ZORVRXT1JL
KQorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAgICAgaWYgKGVuYWJsZWQpCiAgICAgICAgIFdl
YkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKTsK
ICAgICBlbHNlCkBAIC01NTYwLDcgKzU1NjAsNyBAQCBIUkVTVUxUIHVwZGF0ZVNoYXJlZFNldHRp
bmdzRnJvbVByZWZlcmVuCiAgICAgaWYgKEZBSUxFRChocikpCiAgICAgICAgIHJldHVybiBocjsK
IAotI2lmIFVTRShDRk5FVFdPUkspCisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKICAgICBXZWJG
cmFtZU5ldHdvcmtpbmdDb250ZXh0OjpzZXRDb29raWVBY2NlcHRQb2xpY3lGb3JBbGxDb250ZXh0
cyhhY2NlcHRQb2xpY3kpOwogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAJKHJldmlz
aW9uIDIwNzEzOCkKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTc0LDcgKzk3NCw3IEBAIHZvaWQg
V2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNldFRpdGxlKGNvbnMKIAogdm9pZCBXZWJGcmFtZUxvYWRl
ckNsaWVudDo6c2F2ZVBsYXRmb3JtRGF0YVRvQ2FjaGVkRnJhbWUoQ2FjaGVkRnJhbWUqIGNhY2hl
ZEZyYW1lKQogewotI2lmIFVTRShDRk5FVFdPUkspCisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikK
ICAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZShtX3dlYkZyYW1lKTsKICAgICBpZiAoIWNvcmVG
cmFtZSkKICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5jcHAJ
KHJldmlzaW9uIDIwNzEzOCkKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTmV0d29ya2luZ0NvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3
IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9TZXR0aW5ncy5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRl
c3Ryb3llZC5oPgogCi0jaWYgVVNFKENGTkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9O
KQogI2luY2x1ZGUgPENGTmV0d29yay9DRkhUVFBDb29raWVzUHJpdi5oPgogI2luY2x1ZGUgPFdl
YktpdFN5c3RlbUludGVyZmFjZS9XZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaD4KICNlbmRpZgpAQCAt
NDcsNyArNDcsNyBAQCBzdGF0aWMgU3RyaW5nJiBpZGVudGlmaWVyQmFzZSgpCiAgICAgcmV0dXJu
IGJhc2U7CiB9CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQorI2lmIFVTRShDRlVSTENPTk5FQ1RJT04p
CiB2b2lkIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OnNldENvb2tpZUFjY2VwdFBvbGljeUZv
ckFsbENvbnRleHRzKFdlYktpdENvb2tpZVN0b3JhZ2VBY2NlcHRQb2xpY3kgcG9saWN5KQogewog
ICAgIGlmIChSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gY29va2llU3RvcmFnZSA9
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCkuY29va2llU3Rv
cmFnZSgpKQpAQCAtNjcsNyArNjcsNyBAQCB2b2lkIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6
OnNldFByaXZhCiAKIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgV2ViRnJhbWVOZXR3b3JraW5nQ29u
dGV4dDo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpCiB7Ci0jaWYgVVNFKENGTkVUV09S
SykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CiAKICAgICBpZiAoYXV0byBwcml2YXRlU2Vzc2lvbiA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6
c3RvcmFnZVNlc3Npb24oU2Vzc2lvbklEOjpsZWdhY3lQcml2YXRlU2Vzc2lvbklEKCkpKQpJbmRl
eDogU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVOZXR3b3JraW5nQ29u
dGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaAkocmV2aXNpb24gMjA3MTM4KQorKysgU291cmNlL1dl
YktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMiw4ICsyMiw3IEBACiAgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCiAgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KLSNpZm5kZWYgV2ViRnJhbWVOZXR3b3JraW5n
Q29udGV4dF9oCi0jZGVmaW5lIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHRfaAorI3ByYWdtYSBv
bmNlCiAKICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lTmV0d29ya2luZ0NvbnRleHQuaD4KIApAQCAt
MzQsNyArMzMsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViRnJh
bWVOZXR3b3JraW5nQ29udGV4dChmcmFtZSkpOwogICAgIH0KIAotI2lmIFVTRShDRk5FVFdPUksp
CisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKICAgICBzdGF0aWMgdm9pZCBzZXRDb29raWVBY2Nl
cHRQb2xpY3lGb3JBbGxDb250ZXh0cyhXZWJLaXRDb29raWVTdG9yYWdlQWNjZXB0UG9saWN5KTsK
ICNlbmRpZgogICAgIHN0YXRpYyB2b2lkIHNldFByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9u
SWRlbnRpZmllckJhc2UoY29uc3QgU3RyaW5nJik7CkBAIC01MCw1ICs0OSwzIEBAIHByaXZhdGU6
CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBibG9ja2VkRXJyb3IoY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgV2ViQ29yZTo6TmV0d29ya1N0
b3JhZ2VTZXNzaW9uJiBzdG9yYWdlU2Vzc2lvbigpIGNvbnN0IG92ZXJyaWRlOwogfTsKLQotI2Vu
ZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0
cmF0ZWdpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBw
b3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAJKHJldmlzaW9uIDIwNzEzOCkKKysrIFNvdXJj
ZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VHcm91cC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZv
cm1Db29raWVKYXIuaD4KLSNpZiBVU0UoQ0ZORVRXT1JLKQorI2lmIFVTRShDRlVSTENPTk5FQ1RJ
T04pCiAjaW5jbHVkZSA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlL1dlYktpdFN5c3RlbUludGVyZmFj
ZS5oPgogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9jbWFrZS9PcHRpb25zQXBwbGVXaW4uY21ha2UK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL2NtYWtlL09wdGlvbnNBcHBsZVdpbi5jbWFrZQkocmV2aXNp
b24gMjA3MTM4KQorKysgU291cmNlL2NtYWtlL09wdGlvbnNBcHBsZVdpbi5jbWFrZQkod29ya2lu
ZyBjb3B5KQpAQCAtMiw3ICsyLDcgQEAgaW5jbHVkZShPcHRpb25zV2luKQogCiBzZXQoVVNFX0NH
IDEpCiBzZXQoVVNFX0NBIDEpCi1zZXQoVVNFX0NGTkVUV09SSyAxKQorc2V0KFVTRV9DRlVSTENP
Tk5FQ1RJT04gMSkKIHNldChVU0VfSUNVX1VOSUNPREUgMSkKIAogIyBVbmNvbW1lbnQgdGhlIGZv
bGxvd2luZyBsaW5lIHRvIHRyeSB0aGUgRGlyZWN0MkQgYmFja2VuZC4KSW5kZXg6IFRvb2xzL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNzE0MikK
KysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDE2
LTEwLTExICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAg
ICAgICAgUmVtb3ZlIGRlYWQgbmV0d29ya2luZyBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjMyNjMKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVl
Lmg6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY29uZmlnLmg6CisgICAgICAgICogRHVtcFJl
bmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNwcDoKKyAgICAgICAgKG1haW4pOgorCiAyMDE2
LTEwLTExICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBb
V2luXSBQYXJhbGxlbCBEUlRzIGFyZSBzaGFyaW5nIHByZWZlcmVuY2VzIGFuZCBjYWNoZS4KSW5k
ZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUuaAkocmV2aXNpb24gMjA3MTM4KQor
KysgVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUuaAkod29ya2luZyBjb3B5KQpA
QCAtMjYsMTMgKzI2LDcgQEAKICAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBEdW1wUmVuZGVy
VHJlZV9oCi0jZGVmaW5lIER1bXBSZW5kZXJUcmVlX2gKLQotLy8gRklYTUU6IFJlbW92ZSB0aGlz
IHdoZW4gYWxsIHBsYXRmb3JtcyBhcmUgdXNpbmcgY29uZmlnLmgKLSNpZm5kZWYgQ29uZmlnX0gK
LSNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KLSNlbmRpZgorI3ByYWdtYSBvbmNlCiAKICNpZiBQ
TEFURk9STShDT0NPQSkKICNpbmNsdWRlICJEdW1wUmVuZGVyVHJlZU1hYy5oIgpAQCAtNDUsNiAr
MzksNyBAQAogI2VuZGlmCiAKICNpbmNsdWRlIDxzdHJpbmc+CisjaW5jbHVkZSA8d3RmL1BsYXRm
b3JtLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiAjaWYgIU9TKE9QRU5CU0QpCkBAIC03
MSw1ICs2NiwzIEBAIHN0cnVjdCBUZXN0Q29tbWFuZCB7CiB9OwogCiBUZXN0Q29tbWFuZCBwYXJz
ZUlucHV0TGluZShjb25zdCBzdGQ6OnN0cmluZyYpOwotCi0jZW5kaWYgLy8gRHVtcFJlbmRlclRy
ZWVfaApJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvY29uZmlnLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvRHVtcFJlbmRlclRyZWUvY29uZmlnLmgJKHJldmlzaW9uIDIwNzEzOCkKKysrIFRvb2xz
L0R1bXBSZW5kZXJUcmVlL2NvbmZpZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOCw3ICsxOCw3IEBA
CiAgKgogICovCiAKLSNkZWZpbmUgQ29uZmlnX0gKKyNwcmFnbWEgb25jZQogCiAjaWYgZGVmaW5l
ZChIQVZFX0NPTkZJR19IKSAmJiBIQVZFX0NPTkZJR19IICYmIGRlZmluZWQoQlVJTERJTkdfV0lU
SF9DTUFLRSkKICNpbmNsdWRlICJjbWFrZWNvbmZpZy5oIgpAQCAtNDQsNyArNDQsNyBAQAogI2Rl
ZmluZSBVU0VfQ1VSTCAxCiAjZWxzZQogI2RlZmluZSBVU0VfQ0cgMQotI2RlZmluZSBVU0VfQ0ZO
RVRXT1JLIDEKKyNkZWZpbmUgVVNFX0NGVVJMQ09OTkVDVElPTiAxCiAjZW5kaWYKIAogI3VuZGVm
IF9XSU4zMl9XSU5OVApJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJU
cmVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vRHVtcFJlbmRl
clRyZWUuY3BwCShyZXZpc2lvbiAyMDcxMzgpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS93aW4v
RHVtcFJlbmRlclRyZWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Miw3ICs2Miw3IEBACiAjaW5j
bHVkZSA8V2ViS2l0L1dlYktpdC5oPgogI2luY2x1ZGUgPFdlYktpdC9XZWJLaXRDT01BUEkuaD4K
IAotI2lmIFVTRShDRk5FVFdPUkspCisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKICNpbmNsdWRl
IDxDRk5ldHdvcmsvQ0ZIVFRQQ29va2llc1ByaXYuaD4KICNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZV
UkxDYWNoZVByaXYuaD4KICNlbmRpZgpAQCAtMTMyNCw3ICsxMzI0LDcgQEAgSVdlYlZpZXcqIGNy
ZWF0ZVdlYlZpZXdBbmRPZmZzY3JlZW5XaW5kbwogICAgIHJldHVybiB3ZWJWaWV3OwogfQogCi0j
aWYgVVNFKENGTkVUV09SSykKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogUmV0YWluUHRyPENG
VVJMQ2FjaGVSZWY+IHNoYXJlZENGVVJMQ2FjaGUoKQogewogI2lmbmRlZiBERUJVR19BTEwKQEAg
LTE1MDIsNyArMTUwMiw3IEBAIGludCBtYWluKGludCBhcmdjLCBjb25zdCBjaGFyKiBhcmd2W10p
CiAgICAgaWYgKEZBSUxFRCh3ZWJWaWV3LT5tYWluRnJhbWUoJmZyYW1lKSkpCiAgICAgICAgIHJl
dHVybiAtNzsKIAotI2lmIFVTRShDRk5FVFdPUkspCisjaWYgVVNFKENGVVJMQ09OTkVDVElPTikK
ICAgICBSZXRhaW5QdHI8Q0ZVUkxDYWNoZVJlZj4gdXJsQ2FjaGUgPSBzaGFyZWRDRlVSTENhY2hl
KCk7CiAgICAgQ0ZVUkxDYWNoZVJlbW92ZUFsbENhY2hlZFJlc3BvbnNlcyh1cmxDYWNoZS5nZXQo
KSk7CiAjZW5kaWYK
</data>
<flag name="review"
          id="314406"
          type_id="1"
          status="+"
          setter="dbates"
    />
          </attachment>
      

    </bug>

</bugzilla>