<?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>193161</bug_id>
          
          <creation_ts>2019-01-04 15:01:17 -0800</creation_ts>
          <short_desc>Remove or deprecate unused C SPI</short_desc>
          <delta_ts>2019-04-17 11:17:03 -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>NEW</bug_status>
          <resolution></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>beidson</cc>
    
    <cc>cgarcia</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>thorton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1491917</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-01-04 15:01:17 -0800</bug_when>
    <thetext>Remove or deprecate unused C SPI</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1491918</commentid>
    <comment_count>1</comment_count>
      <attachid>358379</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-01-04 15:03:49 -0800</bug_when>
    <thetext>Created attachment 358379
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1491984</commentid>
    <comment_count>2</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-01-04 17:06:16 -0800</bug_when>
    <thetext>Note: IconDB code use was removed in rdar://problem/47057658</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1492646</commentid>
    <comment_count>3</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-01-08 10:14:06 -0800</bug_when>
    <thetext>Could someone fix the gtk build with this patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1492678</commentid>
    <comment_count>4</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-01-08 11:42:18 -0800</bug_when>
    <thetext>In WKPage.cpp, change:

namespace API {

using namespace WebCore;
using namespace WebKit;

to:

using namespace WebCore;
using namespace WebKit;

namespace API {

That fixes it for me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1492679</commentid>
    <comment_count>5</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-01-08 11:44:12 -0800</bug_when>
    <thetext>We don&apos;t want to do that.  This means we need to add WebKit::, WebCore::, or using namespace ...; inside a scope somewhere.  Could you upload a patch that does that?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1492681</commentid>
    <comment_count>6</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-01-08 11:45:49 -0800</bug_when>
    <thetext>Looks like this will break TestController:

[227/431] Building CXX object Tools/WebKitTestRunne...MakeFiles/WebKitTestRunner.dir/TestController.cpp.o
../../Tools/WebKitTestRunner/TestController.cpp: In destructor ‘WTR::TestController::~TestController()’:
../../Tools/WebKitTestRunner/TestController.cpp:161:69: warning: ‘const OpaqueWKIconDatabase* WKContextGetIconDatabase(WKContextRef)’ is deprecated: No longer supported [-Wdeprecated-declarations]
         WKIconDatabaseClose(WKContextGetIconDatabase(m_context.get()));
                                                                     ^
In file included from DerivedSources/ForwardingHeaders/WebKit/WKContext.h:1,
                 from ../../Source/WebKit/UIProcess/API/C/WebKit2_C.h:36,
                 from DerivedSources/ForwardingHeaders/WebKit/WebKit2_C.h:1,
                 from ../../Tools/WebKitTestRunner/config.h:31,
                 from ../../Tools/WebKitTestRunner/TestController.cpp:26:
../../Source/WebKit/UIProcess/API/C/WKContext.h:141:29: note: declared here
 WK_EXPORT WKIconDatabaseRef WKContextGetIconDatabase(WKContextRef context) WK_C_API_DEPRECATED;
                             ^~~~~~~~~~~~~~~~~~~~~~~~
../../Tools/WebKitTestRunner/TestController.cpp:161:69: warning: ‘const OpaqueWKIconDatabase* WKContextGetIconDatabase(WKContextRef)’ is deprecated: No longer supported [-Wdeprecated-declarations]
         WKIconDatabaseClose(WKContextGetIconDatabase(m_context.get()));
                                                                     ^
In file included from DerivedSources/ForwardingHeaders/WebKit/WKContext.h:1,
                 from ../../Source/WebKit/UIProcess/API/C/WebKit2_C.h:36,
                 from DerivedSources/ForwardingHeaders/WebKit/WebKit2_C.h:1,
                 from ../../Tools/WebKitTestRunner/config.h:31,
                 from ../../Tools/WebKitTestRunner/TestController.cpp:26:
../../Source/WebKit/UIProcess/API/C/WKContext.h:141:29: note: declared here
 WK_EXPORT WKIconDatabaseRef WKContextGetIconDatabase(WKContextRef context) WK_C_API_DEPRECATED;
                             ^~~~~~~~~~~~~~~~~~~~~~~~
../../Tools/WebKitTestRunner/TestController.cpp:161:70: warning: ‘void WKIconDatabaseClose(WKIconDatabaseRef)’ is deprecated: No longer supported [-Wdeprecated-declarations]
         WKIconDatabaseClose(WKContextGetIconDatabase(m_context.get()));
                                                                      ^
In file included from DerivedSources/ForwardingHeaders/WebKit/WKIconDatabase.h:1,
                 from ../../Tools/WebKitTestRunner/TestController.cpp:45:
../../Source/WebKit/UIProcess/API/C/WKIconDatabase.h:81:16: note: declared here
 WK_EXPORT void WKIconDatabaseClose(WKIconDatabaseRef iconDatabase) WK_C_API_DEPRECATED;
                ^~~~~~~~~~~~~~~~~~~
../../Tools/WebKitTestRunner/TestController.cpp:161:70: warning: ‘void WKIconDatabaseClose(WKIconDatabaseRef)’ is deprecated: No longer supported [-Wdeprecated-declarations]
         WKIconDatabaseClose(WKContextGetIconDatabase(m_context.get()));
                                                                      ^
In file included from DerivedSources/ForwardingHeaders/WebKit/WKIconDatabase.h:1,
                 from ../../Tools/WebKitTestRunner/TestController.cpp:45:
../../Source/WebKit/UIProcess/API/C/WKIconDatabase.h:81:16: note: declared here
 WK_EXPORT void WKIconDatabaseClose(WKIconDatabaseRef iconDatabase) WK_C_API_DEPRECATED;
                ^~~~~~~~~~~~~~~~~~~</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1492682</commentid>
    <comment_count>7</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-01-08 11:46:37 -0800</bug_when>
    <thetext>(In reply to Alex Christensen from comment #5)
&gt; We don&apos;t want to do that.  This means we need to add WebKit::, WebCore::, or
&gt; using namespace ...; inside a scope somewhere.  Could you upload a patch
&gt; that does that?

Hm, sorry I got confused. Usual C++ rule is to avoid using statements in global scope of header files, not source files, but of course we don&apos;t want to do that for unified builds. I&apos;ll try to make it work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1492685</commentid>
    <comment_count>8</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-01-08 11:59:21 -0800</bug_when>
    <thetext>I think you should just pull all the C API files out of unified build using @no-unify (like we do for WPE/GTK API files). When they were added to the unified build, the using statements weren&apos;t removed from the global namespace like we did for normal sources (probably because this is quite hard to do for a C API file where all the API functions have to be in the global namespace!). It&apos;s not just a problem with WKPage.cpp -- it&apos;s coincidence that&apos;s the one we&apos;re fighting now -- but with all the files in this directory. With some quick search/replaces I&apos;ve added the WebKit:: namespace in several hundred places where it&apos;s missing, but that just gets me error messages exceeding  my terminal scrollback, so I don&apos;t anticipate success this way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1492857</commentid>
    <comment_count>9</comment_count>
      <attachid>358666</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-01-08 20:45:53 -0800</bug_when>
    <thetext>Created attachment 358666
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1493014</commentid>
    <comment_count>10</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-01-09 11:43:53 -0800</bug_when>
    <thetext>Michael, that didn&apos;t fix the Linux build.  I could fix the Mac build with that, but it looks like we don&apos;t want to do that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1493577</commentid>
    <comment_count>11</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-01-10 20:12:11 -0800</bug_when>
    <thetext>The problem is some other file has these using statements in the global scope, and that file is included in the unified source bundle on all platforms except Linux.

Just un-unifying the file is not enough. Doing that alone will only surface the problem on all platforms (as we see on EWS). It&apos;s still not going to build unless you also move the using statements:

(In reply to Michael Catanzaro from comment #4)
&gt; In WKPage.cpp, change:
&gt; 
&gt; namespace API {
&gt; 
&gt; using namespace WebCore;
&gt; using namespace WebKit;
&gt; 
&gt; to:
&gt; 
&gt; using namespace WebCore;
&gt; using namespace WebKit;
&gt; 
&gt; namespace API {
&gt; 
&gt; That fixes it for me.

Removing the file from the unified build just guarantees you can move the using statements without mucking up unrelated files.

Alternatively, once the file is removed from unified build, you can try to make it build standalone by adding WebKit:: and WebCore:: qualifications everywhere, then add it back to unified build once it works if you really want to. But I briefly tried this the other day, and I did not enjoy what I was getting myself into. ;)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>358379</attachid>
            <date>2019-01-04 15:03:49 -0800</date>
            <delta_ts>2019-01-08 20:45:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-193161-20190104150348.patch</filename>
            <type>text/plain</type>
            <size>55208</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzk2NDEpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQxIEBACisyMDE5LTAxLTA0ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVtb3ZlIG9yIGRl
cHJlY2F0ZSB1bnVzZWQgQyBTUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE5MzE2MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEtlZXAgc3R1YnMgbWFya2VkIGFzIGRlcHJlY2F0ZWQgaWYgc2hpcHBpbmcg
U2FmYXJpIGxpbmtzIHdpdGggdGhlbSB0byBrZWVwIG9wZW4gc291cmNlIFdlYktpdCBidWlsZHMg
dXNhYmxlLgorICAgICAgICBNZWRpYSBzZXNzaW9uIGNvZGUgd2lsbCBuZWVkIHRvIGJlIHJlZG9u
ZSBpbiBPYmpDIGJlZm9yZSB3ZSB1c2UgaXQgYW55d2F5cy4KKyAgICAgICAgQXBwbGljYXRpb25D
YWNoZU1hbmFnZXIgYW5kIEtleVZhbHVlU3RvcmVNYW5hZ2VyIHdlcmUganVzdCB1bnVzZWQgd3Jh
cHBlcnMgYXJvdW5kIFdlYnNpdGVEYXRhU3RvcmUuCisKKyAgICAgICAgKiBTaGFyZWQvQVBJL0FQ
SU9iamVjdC5oOgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9XS0Jhc2UuaDoKKyAgICAgICAgKiBT
aGFyZWQvQVBJL2MvV0tEZXByZWNhdGVkRnVuY3Rpb25zLmNwcDoKKyAgICAgICAgKFdLQ29udGV4
dFNldFByb2Nlc3NNb2RlbCk6IERlbGV0ZWQuCisgICAgICAgICogU291cmNlcy50eHQ6CisgICAg
ICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tBUElD
YXN0Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLQXBwbGljYXRpb25DYWNoZU1hbmFn
ZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0FwcGxpY2F0aW9u
Q2FjaGVNYW5hZ2VyLmg6IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLQ29u
dGV4dC5jcHA6CisgICAgICAgIChXS0NvbnRleHRHZXRBcHBsaWNhdGlvbkNhY2hlTWFuYWdlcik6
IERlbGV0ZWQuCisgICAgICAgIChXS0NvbnRleHRHZXRLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyKTog
RGVsZXRlZC4KKyAgICAgICAgKFdLQ29udGV4dEdldE1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlcik6
IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0ljb25EYXRhYmFzZS5jcHA6CisgICAgICAgIChXS0ljb25E
YXRhYmFzZUdldFR5cGVJRCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLSWNvbkRhdGFi
YXNlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLS2V5VmFsdWVTdG9yYWdlTWFuYWdl
ci5jcHA6IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLS2V5VmFsdWVTdG9y
YWdlTWFuYWdlci5oOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS01lZGlh
U2Vzc2lvbkZvY3VzTWFuYWdlci5jcHA6IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9DL1dLTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyLmg6IFJlbW92ZWQuCisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHA6CisgICAgICAgIChXS1dlYnNp
dGVEYXRhU3RvcmVTZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZU5vZGUuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvbWFjL0Rpc3BsYXlMaW5rLmNwcDoKKyAgICAgICAgKiBXZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAxOS0wMS0wNCAgSmVyIE5vYmxlICA8amVy
Lm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViS2l0TGVnYWN5XSBNZWRpYSBwbGF5YmFj
ayBwYXVzZXMgb24gc2Nyb2xsCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU291cmNlcy50eHQJKHJldmlzaW9uIDIzOTYzMCkKKysr
IFNvdXJjZS9XZWJLaXQvU291cmNlcy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTMwMyw3ICszMDMs
NiBAQCBVSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUuY3BwCiBVSVByb2Nlc3MvQVBJ
L0FQSVdlYnNpdGVQb2xpY2llcy5jcHAKIFVJUHJvY2Vzcy9BUEkvQVBJV2luZG93RmVhdHVyZXMu
Y3BwCiAKLVVJUHJvY2Vzcy9BUEkvQy9XS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmNwcAogVUlQ
cm9jZXNzL0FQSS9DL1dLQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuY3BwCiBVSVByb2Nlc3MvQVBJ
L0MvV0tBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXIuY3BwCiBVSVByb2Nlc3MvQVBJL0Mv
V0tCYWNrRm9yd2FyZExpc3RJdGVtUmVmLmNwcApAQCAtMzI0LDcgKzMyMyw2IEBAIFVJUHJvY2Vz
cy9BUEkvQy9XS0dlb2xvY2F0aW9uUG9zaXRpb24uY3AKIFVJUHJvY2Vzcy9BUEkvQy9XS0hpdFRl
c3RSZXN1bHQuY3BwCiBVSVByb2Nlc3MvQVBJL0MvV0tJY29uRGF0YWJhc2UuY3BwCiBVSVByb2Nl
c3MvQVBJL0MvV0tJbnNwZWN0b3IuY3BwCi1VSVByb2Nlc3MvQVBJL0MvV0tLZXlWYWx1ZVN0b3Jh
Z2VNYW5hZ2VyLmNwcAogVUlQcm9jZXNzL0FQSS9DL1dLTWVkaWFTZXNzaW9uTWV0YWRhdGEuY3Bw
CiBVSVByb2Nlc3MvQVBJL0MvV0tNb2NrRGlzcGxheS5jcHAKIFVJUHJvY2Vzcy9BUEkvQy9XS01v
Y2tNZWRpYURldmljZS5jcHAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQJKHJldmlzaW9uIDIz
OTYzMCkKKysrIFNvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtMjEyLDcgKzIxMiw2IEBAIFVJUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0
b3IKIFVJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFSZWNvcmQuY3BwCiAKIFVJUHJvY2Vzcy9B
UEkvQy9XS0NvbnRleHRNZW51TGlzdGVuZXIuY3BwCi1VSVByb2Nlc3MvQVBJL0MvV0tNZWRpYVNl
c3Npb25Gb2N1c01hbmFnZXIuY3BwCiBVSVByb2Nlc3MvQVBJL0MvV0tUZXN0aW5nU3VwcG9ydC5j
cHAKIFVJUHJvY2Vzcy9BUEkvQy9XS1VzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmVSZWYuY3BwCiBV
SVByb2Nlc3MvQVBJL0MvV0tVc2VyU2NyaXB0UmVmLmNwcApJbmRleDogU291cmNlL1dlYktpdC9T
aGFyZWQvQVBJL0FQSU9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVk
L0FQSS9BUElPYmplY3QuaAkocmV2aXNpb24gMjM5NjMwKQorKysgU291cmNlL1dlYktpdC9TaGFy
ZWQvQVBJL0FQSU9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC05Niw3ICs5Niw2IEBAIHB1Ymxp
YzoKICAgICAgICAgUmVjdCwKICAgICAgICAgCiAgICAgICAgIC8vIFVJUHJvY2VzcyB0eXBlcwot
ICAgICAgICBBcHBsaWNhdGlvbkNhY2hlTWFuYWdlciwKICNpZiBFTkFCTEUoQVBQTElDQVRJT05f
TUFOSUZFU1QpCiAgICAgICAgIEFwcGxpY2F0aW9uTWFuaWZlc3QsCiAjZW5kaWYKQEAgLTEyNiw3
ICsxMjUsNiBAQCBwdWJsaWM6CiAgICAgICAgIEdyYW1tYXJEZXRhaWwsCiAgICAgICAgIEljb25E
YXRhYmFzZSwKICAgICAgICAgSW5zcGVjdG9yLAotICAgICAgICBLZXlWYWx1ZVN0b3JhZ2VNYW5h
Z2VyLAogICAgICAgICBNZWRpYUNhY2hlTWFuYWdlciwKICAgICAgICAgTmF2aWdhdGlvbiwKICAg
ICAgICAgTmF2aWdhdGlvbkFjdGlvbiwKQEAgLTE2NywxMSArMTY1LDYgQEAgcHVibGljOgogICAg
ICAgICBXZWJzaXRlUG9saWNpZXMsCiAgICAgICAgIFdpbmRvd0ZlYXR1cmVzLAogCi0jaWYgRU5B
QkxFKE1FRElBX1NFU1NJT04pCi0gICAgICAgIE1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlciwKLSAg
ICAgICAgTWVkaWFTZXNzaW9uTWV0YWRhdGEsCi0jZW5kaWYKLQogICAgICAgICAvLyBCdW5kbGUg
dHlwZXMKICAgICAgICAgQnVuZGxlLAogICAgICAgICBCdW5kbGVCYWNrRm9yd2FyZExpc3QsCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS0Jhc2UuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS0Jhc2UuaAkocmV2aXNpb24gMjM5NjMwKQorKysg
U291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tCYXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTc4
LDcgKzc4LDYgQEAgdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tXZWJBcmNoaXZlUgogCiAv
KiBXZWJLaXQyIG1haW4gQVBJIHR5cGVzICovCiAKLXR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1
ZVdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXIqIFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXJSZWY7
CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKiBX
S0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVl
V0tBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXIqIFdLQXV0aGVudGljYXRpb25EZWNpc2lv
bkxpc3RlbmVyUmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tCYWNrRm9yd2FyZExp
c3QqIFdLQmFja0ZvcndhcmRMaXN0UmVmOwpAQCAtMTAzLDggKzEwMiw2IEBAIHR5cGVkZWYgY29u
c3Qgc3RydWN0IE9wYXF1ZVdLR3JhbW1hckRldGEKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1
ZVdLSGl0VGVzdFJlc3VsdCogV0tIaXRUZXN0UmVzdWx0UmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1
Y3QgT3BhcXVlV0tJY29uRGF0YWJhc2UqIFdLSWNvbkRhdGFiYXNlUmVmOwogdHlwZWRlZiBjb25z
dCBzdHJ1Y3QgT3BhcXVlV0tJbnNwZWN0b3IqIFdLSW5zcGVjdG9yUmVmOwotdHlwZWRlZiBjb25z
dCBzdHJ1Y3QgT3BhcXVlV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyKiBXS0tleVZhbHVlU3RvcmFn
ZU1hbmFnZXJSZWY7Ci10eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS01lZGlhU2Vzc2lvbkZv
Y3VzTWFuYWdlciogV0tNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXJSZWY7CiB0eXBlZGVmIGNvbnN0
IHN0cnVjdCBPcGFxdWVXS01lZGlhU2Vzc2lvbk1ldGFkYXRhKiBXS01lZGlhU2Vzc2lvbk1ldGFk
YXRhUmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tOYXZpZ2F0aW9uQWN0aW9uKiBX
S05hdmlnYXRpb25BY3Rpb25SZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS05hdmln
YXRpb25EYXRhKiBXS05hdmlnYXRpb25EYXRhUmVmOwpJbmRleDogU291cmNlL1dlYktpdC9TaGFy
ZWQvQVBJL2MvV0tEZXByZWNhdGVkRnVuY3Rpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BUEkvYy9XS0RlcHJlY2F0ZWRGdW5jdGlvbnMuY3BwCShyZXZpc2lvbiAy
Mzk2MzApCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS0RlcHJlY2F0ZWRGdW5jdGlv
bnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NCwxMCArNDQsNiBAQCB2b2lkIFdLQ29udGV4dFNl
dFVzZXNOZXR3b3JrUHJvY2VzcyhXS0NvCiB7CiB9CiAKLXZvaWQgV0tDb250ZXh0U2V0UHJvY2Vz
c01vZGVsKFdLQ29udGV4dFJlZiwgV0tQcm9jZXNzTW9kZWwpCi17Ci19Ci0KIHZvaWQgV0tQcmVm
ZXJlbmNlc1NldFFUS2l0RW5hYmxlZChXS1ByZWZlcmVuY2VzUmVmLCBib29sKQogewogfQpJbmRl
eDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0LmgJKHJldmlzaW9uIDIz
OTYzMCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC05NCw4ICs5NCw2IEBAIGNsYXNzIFdlYkdlb2xvY2F0aW9uTWFuYWdlclBy
b3h5OwogY2xhc3MgV2ViR2VvbG9jYXRpb25Qb3NpdGlvbjsKIGNsYXNzIFdlYkljb25EYXRhYmFz
ZTsKIGNsYXNzIFdlYkluc3BlY3RvclByb3h5OwotY2xhc3MgV2ViTWVkaWFTZXNzaW9uRm9jdXNN
YW5hZ2VyOwotY2xhc3MgV2ViTWVkaWFTZXNzaW9uTWV0YWRhdGE7CiBjbGFzcyBXZWJOb3RpZmlj
YXRpb247CiBjbGFzcyBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk7CiBjbGFzcyBXZWJOb3Rp
ZmljYXRpb25Qcm92aWRlcjsKQEAgLTEzNSw4ICsxMzMsNiBAQCBXS19BRERfQVBJX01BUFBJTkco
V0tHZW9sb2NhdGlvblBvc2l0aW9uCiBXS19BRERfQVBJX01BUFBJTkcoV0tIaXRUZXN0UmVzdWx0
UmVmLCBBUEk6OkhpdFRlc3RSZXN1bHQpCiBXS19BRERfQVBJX01BUFBJTkcoV0tJY29uRGF0YWJh
c2VSZWYsIFdlYkljb25EYXRhYmFzZSkKIFdLX0FERF9BUElfTUFQUElORyhXS0luc3BlY3RvclJl
ZiwgV2ViSW5zcGVjdG9yUHJveHkpCi1XS19BRERfQVBJX01BUFBJTkcoV0tNZWRpYVNlc3Npb25G
b2N1c01hbmFnZXJSZWYsIFdlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlcikKLVdLX0FERF9BUElf
TUFQUElORyhXS01lZGlhU2Vzc2lvbk1ldGFkYXRhUmVmLCBXZWJNZWRpYVNlc3Npb25NZXRhZGF0
YSkKIFdLX0FERF9BUElfTUFQUElORyhXS05hdmlnYXRpb25BY3Rpb25SZWYsIEFQSTo6TmF2aWdh
dGlvbkFjdGlvbikKIFdLX0FERF9BUElfTUFQUElORyhXS05hdmlnYXRpb25EYXRhUmVmLCBBUEk6
Ok5hdmlnYXRpb25EYXRhKQogV0tfQUREX0FQSV9NQVBQSU5HKFdLTmF2aWdhdGlvblJlZiwgQVBJ
OjpOYXZpZ2F0aW9uKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tBcHBs
aWNhdGlvbkNhY2hlTWFuYWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5jcHAJKHJldmlzaW9uIDIzOTYz
MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQXBwbGljYXRpb25DYWNoZU1h
bmFnZXIuY3BwCShub25leGlzdGVudCkKQEAgLTEsNjcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNp
bmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmgi
Ci0KLSNpbmNsdWRlICJBUElBcnJheS5oIgotI2luY2x1ZGUgIkFQSVdlYnNpdGVEYXRhU3RvcmUu
aCIKLSNpbmNsdWRlICJXS0FQSUNhc3QuaCIKLSNpbmNsdWRlICJXZWJzaXRlRGF0YVJlY29yZC5o
IgotCi1XS1R5cGVJRCBXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyR2V0VHlwZUlEKCkKLXsKLSAg
ICByZXR1cm4gV2ViS2l0Ojp0b0FQSShBUEk6OldlYnNpdGVEYXRhU3RvcmU6OkFQSVR5cGUpOwot
fQotCi12b2lkIFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXJHZXRBcHBsaWNhdGlvbkNhY2hlT3Jp
Z2lucyhXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyUmVmIGFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2Vy
LCB2b2lkKiBjb250ZXh0LCBXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyR2V0QXBwbGljYXRpb25D
YWNoZU9yaWdpbnNGdW5jdGlvbiBjYWxsYmFjaykKLXsKLSAgICBhdXRvJiB3ZWJzaXRlRGF0YVN0
b3JlID0gV2ViS2l0Ojp0b0ltcGwocmVpbnRlcnByZXRfY2FzdDxXS1dlYnNpdGVEYXRhU3RvcmVS
ZWY+KGFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyKSktPndlYnNpdGVEYXRhU3RvcmUoKTsKLSAgICB3
ZWJzaXRlRGF0YVN0b3JlLmZldGNoRGF0YShXZWJLaXQ6OldlYnNpdGVEYXRhVHlwZTo6T2ZmbGlu
ZVdlYkFwcGxpY2F0aW9uQ2FjaGUsIHsgfSwgW2NvbnRleHQsIGNhbGxiYWNrXShhdXRvIGRhdGFS
ZWNvcmRzKSB7Ci0gICAgICAgIFZlY3RvcjxSZWZQdHI8QVBJOjpPYmplY3Q+PiBzZWN1cml0eU9y
aWdpbnM7Ci0gICAgICAgIGZvciAoY29uc3QgYXV0byYgZGF0YVJlY29yZCA6IGRhdGFSZWNvcmRz
KSB7Ci0gICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIG9yaWdpbiA6IGRhdGFSZWNvcmQub3Jp
Z2lucykKLSAgICAgICAgICAgICAgICBzZWN1cml0eU9yaWdpbnMuYXBwZW5kKEFQSTo6U2VjdXJp
dHlPcmlnaW46OmNyZWF0ZShvcmlnaW4uc2VjdXJpdHlPcmlnaW4oKSkpOwotICAgICAgICB9Ci0K
LSAgICAgICAgY2FsbGJhY2soV2ViS2l0Ojp0b0FQSShBUEk6OkFycmF5OjpjcmVhdGUoV1RGTW92
ZShzZWN1cml0eU9yaWdpbnMpKS5wdHIoKSksIG51bGxwdHIsIGNvbnRleHQpOwotICAgIH0pOwot
fQotCi12b2lkIFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXJEZWxldGVFbnRyaWVzRm9yT3JpZ2lu
KFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXJSZWYgYXBwbGljYXRpb25DYWNoZU1hbmFnZXIsIFdL
U2VjdXJpdHlPcmlnaW5SZWYgb3JpZ2luKQotewotICAgIGF1dG8mIHdlYnNpdGVEYXRhU3RvcmUg
PSBXZWJLaXQ6OnRvSW1wbChyZWludGVycHJldF9jYXN0PFdLV2Vic2l0ZURhdGFTdG9yZVJlZj4o
YXBwbGljYXRpb25DYWNoZU1hbmFnZXIpKS0+d2Vic2l0ZURhdGFTdG9yZSgpOwotCi0gICAgV2Vi
S2l0OjpXZWJzaXRlRGF0YVJlY29yZCBkYXRhUmVjb3JkOwotICAgIGRhdGFSZWNvcmQuYWRkKFdl
YktpdDo6V2Vic2l0ZURhdGFUeXBlOjpPZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZSwgV2ViS2l0
Ojp0b0ltcGwob3JpZ2luKS0+c2VjdXJpdHlPcmlnaW4oKS5kYXRhKCkpOwotCi0gICAgd2Vic2l0
ZURhdGFTdG9yZS5yZW1vdmVEYXRhKFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlOjpPZmZsaW5lV2Vi
QXBwbGljYXRpb25DYWNoZSwgeyBkYXRhUmVjb3JkIH0sIFtdIHsgfSk7Ci19Ci0KLXZvaWQgV0tB
cHBsaWNhdGlvbkNhY2hlTWFuYWdlckRlbGV0ZUFsbEVudHJpZXMoV0tBcHBsaWNhdGlvbkNhY2hl
TWFuYWdlclJlZiBhcHBsaWNhdGlvbkNhY2hlTWFuYWdlcikKLXsKLSAgICBhdXRvJiB3ZWJzaXRl
RGF0YVN0b3JlID0gV2ViS2l0Ojp0b0ltcGwocmVpbnRlcnByZXRfY2FzdDxXS1dlYnNpdGVEYXRh
U3RvcmVSZWY+KGFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyKSktPndlYnNpdGVEYXRhU3RvcmUoKTsK
LSAgICB3ZWJzaXRlRGF0YVN0b3JlLnJlbW92ZURhdGEoV2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU6
Ok9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlLCAtV2FsbFRpbWU6OmluZmluaXR5KCksIFtdIHsg
fSk7Ci19CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Qy9XS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmNwcApfX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6IHN2bjpl
b2wtc3R5bGUKIyMgLTEgKzAsMCAjIwotbmF0aXZlClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJv
cGVydHkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQXBwbGljYXRpb25D
YWNoZU1hbmFnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Qy9XS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmgJKHJldmlzaW9uIDIzOTYzMCkKKysrIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQXBwbGljYXRpb25DYWNoZU1hbmFnZXIuaAkobm9u
ZXhpc3RlbnQpCkBAIC0xLDQ3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
Ci0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0g
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFdLQXBwbGlj
YXRpb25DYWNoZU1hbmFnZXJfaAotI2RlZmluZSBXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyX2gK
LQotI2luY2x1ZGUgPFdlYktpdC9XS0Jhc2UuaD4KLQotI2lmZGVmIF9fY3BsdXNwbHVzCi1leHRl
cm4gIkMiIHsKLSNlbmRpZgotCi1XS19FWFBPUlQgV0tUeXBlSUQgV0tBcHBsaWNhdGlvbkNhY2hl
TWFuYWdlckdldFR5cGVJRCgpOwotCi10eXBlZGVmIHZvaWQgKCpXS0FwcGxpY2F0aW9uQ2FjaGVN
YW5hZ2VyR2V0QXBwbGljYXRpb25DYWNoZU9yaWdpbnNGdW5jdGlvbikoV0tBcnJheVJlZiwgV0tF
cnJvclJlZiwgdm9pZCopOwotV0tfRVhQT1JUIHZvaWQgV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdl
ckdldEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5zKFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXJSZWYg
YXBwbGljYXRpb25DYWNoZU1hbmFnZXIsIHZvaWQqIGNvbnRleHQsIFdLQXBwbGljYXRpb25DYWNo
ZU1hbmFnZXJHZXRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luc0Z1bmN0aW9uIGZ1bmN0aW9uKTsKLQot
V0tfRVhQT1JUIHZvaWQgV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlckRlbGV0ZUVudHJpZXNGb3JP
cmlnaW4oV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlclJlZiBhcHBsaWNhdGlvbkNhY2hlTWFuYWdl
ciwgV0tTZWN1cml0eU9yaWdpblJlZiBvcmlnaW4pOwotV0tfRVhQT1JUIHZvaWQgV0tBcHBsaWNh
dGlvbkNhY2hlTWFuYWdlckRlbGV0ZUFsbEVudHJpZXMoV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdl
clJlZiBhcHBsaWNhdGlvbkNhY2hlTWFuYWdlcik7Ci0KLSNpZmRlZiBfX2NwbHVzcGx1cwotfQot
I2VuZGlmCi0KLSNlbmRpZiAvLyBXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyX2gKClByb3BlcnR5
IGNoYW5nZXMgb246IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQXBwbGljYXRpb25D
YWNoZU1hbmFnZXIuaApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6IHN2bjplb2wtc3R5bGUKIyMgLTEgKzAs
MCAjIwotbmF0aXZlClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcAkocmV2aXNpb24gMjM5NjMx
KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDM3LDExICs0MzcsNiBAQCBXS1dlYnNpdGVEYXRhU3RvcmVSZWYgV0tDb250
ZXh0R2V0V2Vic2l0CiAgICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoZGF0YVN0b3JlKTsKIH0KIAot
V0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlclJlZiBXS0NvbnRleHRHZXRBcHBsaWNhdGlvbkNhY2hl
TWFuYWdlcihXS0NvbnRleHRSZWYgY29udGV4dCkKLXsKLSAgICByZXR1cm4gcmVpbnRlcnByZXRf
Y2FzdDxXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyUmVmPihXS0NvbnRleHRHZXRXZWJzaXRlRGF0
YVN0b3JlKGNvbnRleHQpKTsKLX0KLQogV0tHZW9sb2NhdGlvbk1hbmFnZXJSZWYgV0tDb250ZXh0
R2V0R2VvbG9jYXRpb25NYW5hZ2VyKFdLQ29udGV4dFJlZiBjb250ZXh0UmVmKQogewogICAgIHJl
dHVybiBXZWJLaXQ6OnRvQVBJKFdlYktpdDo6dG9JbXBsKGNvbnRleHRSZWYpLT5zdXBwbGVtZW50
PFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk+KCkpOwpAQCAtNDUyLDIxICs0NDcs
NiBAQCBXS0ljb25EYXRhYmFzZVJlZiBXS0NvbnRleHRHZXRJY29uRGF0YWJhCiAgICAgcmV0dXJu
IG51bGxwdHI7CiB9CiAKLVdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlclJlZiBXS0NvbnRleHRHZXRL
ZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyKFdLQ29udGV4dFJlZiBjb250ZXh0KQotewotICAgIHJldHVy
biByZWludGVycHJldF9jYXN0PFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlclJlZj4oV0tDb250ZXh0
R2V0V2Vic2l0ZURhdGFTdG9yZShjb250ZXh0KSk7Ci19Ci0KLVdLTWVkaWFTZXNzaW9uRm9jdXNN
YW5hZ2VyUmVmIFdLQ29udGV4dEdldE1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlcihXS0NvbnRleHRS
ZWYgY29udGV4dCkKLXsKLSNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKLSAgICByZXR1cm4gV2Vi
S2l0Ojp0b0FQSShXZWJLaXQ6OnRvSW1wbChjb250ZXh0KS0+c3VwcGxlbWVudDxXZWJLaXQ6Oldl
Yk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlcj4oKSk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShj
b250ZXh0KTsKLSAgICByZXR1cm4gbnVsbHB0cjsKLSNlbmRpZgotfQotCiBXS05vdGlmaWNhdGlv
bk1hbmFnZXJSZWYgV0tDb250ZXh0R2V0Tm90aWZpY2F0aW9uTWFuYWdlcihXS0NvbnRleHRSZWYg
Y29udGV4dFJlZikKIHsKICAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSShXZWJLaXQ6OnRvSW1wbChj
b250ZXh0UmVmKS0+c3VwcGxlbWVudDxXZWJLaXQ6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94
eT4oKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuaAko
cmV2aXNpb24gMjM5NjMxKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250
ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEyOCw5ICsxMjgsNiBAQCBXS19FWFBPUlQgdm9pZCBX
S0NvbnRleHRDbGVhclZpc2l0ZWRMaW5rCiBXS19FWFBPUlQgdm9pZCBXS0NvbnRleHRTZXRDYWNo
ZU1vZGVsKFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS0NhY2hlTW9kZWwgY2FjaGVNb2RlbCk7CiBX
S19FWFBPUlQgV0tDYWNoZU1vZGVsIFdLQ29udGV4dEdldENhY2hlTW9kZWwoV0tDb250ZXh0UmVm
IGNvbnRleHQpOwogCi0vLyBGSVhNRTogTW92ZSB0aGVzZSB0byBXS0RlcHJlY2F0ZWRGdW5jdGlv
bnMuY3BwIG9uY2Ugc3VwcG9ydCBmb3IgTWF2ZXJpY2tzIGhhcyBiZWVuIGRyb3BwZWQuCi1XS19F
WFBPUlQgdm9pZCBXS0NvbnRleHRTZXRQcm9jZXNzTW9kZWwoV0tDb250ZXh0UmVmLCBXS1Byb2Nl
c3NNb2RlbCk7Ci0KIFdLX0VYUE9SVCB2b2lkIFdLQ29udGV4dFNldE1heGltdW1OdW1iZXJPZlBy
b2Nlc3NlcyhXS0NvbnRleHRSZWYgY29udGV4dCwgdW5zaWduZWQgbnVtYmVyT2ZQcm9jZXNzZXMp
OwogV0tfRVhQT1JUIHVuc2lnbmVkIFdLQ29udGV4dEdldE1heGltdW1OdW1iZXJPZlByb2Nlc3Nl
cyhXS0NvbnRleHRSZWYgY29udGV4dCk7CiAKQEAgLTEzOSwxMiArMTM2LDkgQEAgV0tfRVhQT1JU
IHZvaWQgV0tDb250ZXh0U3RvcE1lbW9yeVNhbXBsZQogCiBXS19FWFBPUlQgV0tXZWJzaXRlRGF0
YVN0b3JlUmVmIFdLQ29udGV4dEdldFdlYnNpdGVEYXRhU3RvcmUoV0tDb250ZXh0UmVmIGNvbnRl
eHQpOwogCi1XS19FWFBPUlQgV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlclJlZiBXS0NvbnRleHRH
ZXRBcHBsaWNhdGlvbkNhY2hlTWFuYWdlcihXS0NvbnRleHRSZWYgY29udGV4dCk7CiBXS19FWFBP
UlQgV0tDb29raWVNYW5hZ2VyUmVmIFdLQ29udGV4dEdldENvb2tpZU1hbmFnZXIoV0tDb250ZXh0
UmVmIGNvbnRleHQpOwogV0tfRVhQT1JUIFdLR2VvbG9jYXRpb25NYW5hZ2VyUmVmIFdLQ29udGV4
dEdldEdlb2xvY2F0aW9uTWFuYWdlcihXS0NvbnRleHRSZWYgY29udGV4dCk7Ci1XS19FWFBPUlQg
V0tJY29uRGF0YWJhc2VSZWYgV0tDb250ZXh0R2V0SWNvbkRhdGFiYXNlKFdLQ29udGV4dFJlZiBj
b250ZXh0KTsKLVdLX0VYUE9SVCBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJSZWYgV0tDb250ZXh0
R2V0S2V5VmFsdWVTdG9yYWdlTWFuYWdlcihXS0NvbnRleHRSZWYgY29udGV4dCk7Ci1XS19FWFBP
UlQgV0tNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXJSZWYgV0tDb250ZXh0R2V0TWVkaWFTZXNzaW9u
Rm9jdXNNYW5hZ2VyKFdLQ29udGV4dFJlZiBjb250ZXh0KTsKK1dLX0VYUE9SVCBXS0ljb25EYXRh
YmFzZVJlZiBXS0NvbnRleHRHZXRJY29uRGF0YWJhc2UoV0tDb250ZXh0UmVmIGNvbnRleHQpIFdL
X0NfQVBJX0RFUFJFQ0FURUQ7CiBXS19FWFBPUlQgV0tOb3RpZmljYXRpb25NYW5hZ2VyUmVmIFdL
Q29udGV4dEdldE5vdGlmaWNhdGlvbk1hbmFnZXIoV0tDb250ZXh0UmVmIGNvbnRleHQpOwogV0tf
RVhQT1JUIFdLUmVzb3VyY2VDYWNoZU1hbmFnZXJSZWYgV0tDb250ZXh0R2V0UmVzb3VyY2VDYWNo
ZU1hbmFnZXIoV0tDb250ZXh0UmVmIGNvbnRleHQpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQy9XS0ljb25EYXRhYmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0MvV0tJY29uRGF0YWJhc2UuY3BwCShyZXZpc2lvbiAyMzk2MzAp
CisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0ljb25EYXRhYmFzZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIAog
V0tUeXBlSUQgV0tJY29uRGF0YWJhc2VHZXRUeXBlSUQoKQogewotICAgIHJldHVybiB0b0FQSShX
ZWJJY29uRGF0YWJhc2U6OkFQSVR5cGUpOworICAgIHJldHVybiAwOwogfQogCiB2b2lkIFdLSWNv
bkRhdGFiYXNlU2V0SWNvbkRhdGFiYXNlQ2xpZW50KFdLSWNvbkRhdGFiYXNlUmVmLCBjb25zdCBX
S0ljb25EYXRhYmFzZUNsaWVudEJhc2UqKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tJY29uRGF0YWJhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQy9XS0ljb25EYXRhYmFzZS5oCShyZXZpc2lvbiAyMzk2MzApCisrKyBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0ljb25EYXRhYmFzZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yNyw2ICsyNyw3IEBACiAjZGVmaW5lIFdLSWNvbkRhdGFiYXNlX2gKIAogI2luY2x1ZGUgPFdl
YktpdC9XS0Jhc2UuaD4KKyNpbmNsdWRlIDxXZWJLaXQvV0tEZXByZWNhdGVkLmg+CiAKICNpZmRl
ZiBfX2NwbHVzcGx1cwogZXh0ZXJuICJDIiB7CkBAIC02MSwyMyArNjIsMjMgQEAgdHlwZWRlZiBz
dHJ1Y3QgV0tJY29uRGF0YWJhc2VDbGllbnRWMSB7CiAgICAgV0tJY29uRGF0YWJhc2VJY29uRGF0
YVJlYWR5Rm9yUGFnZVVSTENhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICBpY29uRGF0YVJl
YWR5Rm9yUGFnZVVSTDsKIH0gV0tJY29uRGF0YWJhc2VDbGllbnRWMTsKIAotV0tfRVhQT1JUIFdL
VHlwZUlEIFdLSWNvbkRhdGFiYXNlR2V0VHlwZUlEKCk7CitXS19FWFBPUlQgV0tUeXBlSUQgV0tJ
Y29uRGF0YWJhc2VHZXRUeXBlSUQoKSBXS19DX0FQSV9ERVBSRUNBVEVEOwogCi1XS19FWFBPUlQg
dm9pZCBXS0ljb25EYXRhYmFzZVNldEljb25EYXRhYmFzZUNsaWVudChXS0ljb25EYXRhYmFzZVJl
ZiBpY29uRGF0YWJhc2UsIGNvbnN0IFdLSWNvbkRhdGFiYXNlQ2xpZW50QmFzZSogY2xpZW50KTsK
K1dLX0VYUE9SVCB2b2lkIFdLSWNvbkRhdGFiYXNlU2V0SWNvbkRhdGFiYXNlQ2xpZW50KFdLSWNv
bkRhdGFiYXNlUmVmIGljb25EYXRhYmFzZSwgY29uc3QgV0tJY29uRGF0YWJhc2VDbGllbnRCYXNl
KiBjbGllbnQpIFdLX0NfQVBJX0RFUFJFQ0FURUQ7CiAKLVdLX0VYUE9SVCB2b2lkIFdLSWNvbkRh
dGFiYXNlUmV0YWluSWNvbkZvclVSTChXS0ljb25EYXRhYmFzZVJlZiBpY29uRGF0YWJhc2UsIFdL
VVJMUmVmIHBhZ2VVUkwpOwotV0tfRVhQT1JUIHZvaWQgV0tJY29uRGF0YWJhc2VSZWxlYXNlSWNv
bkZvclVSTChXS0ljb25EYXRhYmFzZVJlZiBpY29uRGF0YWJhc2UsIFdLVVJMUmVmIHBhZ2VVUkwp
OwotV0tfRVhQT1JUIHZvaWQgV0tJY29uRGF0YWJhc2VTZXRJY29uRGF0YUZvckljb25VUkwoV0tJ
Y29uRGF0YWJhc2VSZWYgaWNvbkRhdGFiYXNlLCBXS0RhdGFSZWYgaWNvbkRhdGEsIFdLVVJMUmVm
IGljb25VUkwpOwotV0tfRVhQT1JUIHZvaWQgV0tJY29uRGF0YWJhc2VTZXRJY29uVVJMRm9yUGFn
ZVVSTChXS0ljb25EYXRhYmFzZVJlZiBpY29uRGF0YWJhc2UsIFdLVVJMUmVmIGljb25VUkwsIFdL
VVJMUmVmIHBhZ2VVUkwpOwotV0tfRVhQT1JUIFdLVVJMUmVmIFdLSWNvbkRhdGFiYXNlQ29weUlj
b25VUkxGb3JQYWdlVVJMKFdLSWNvbkRhdGFiYXNlUmVmIGljb25EYXRhYmFzZSwgV0tVUkxSZWYg
cGFnZVVSTCk7Ci1XS19FWFBPUlQgV0tEYXRhUmVmIFdLSWNvbkRhdGFiYXNlQ29weUljb25EYXRh
Rm9yUGFnZVVSTChXS0ljb25EYXRhYmFzZVJlZiBpY29uRGF0YWJhc2UsIFdLVVJMUmVmIHBhZ2VV
UkwpOworV0tfRVhQT1JUIHZvaWQgV0tJY29uRGF0YWJhc2VSZXRhaW5JY29uRm9yVVJMKFdLSWNv
bkRhdGFiYXNlUmVmIGljb25EYXRhYmFzZSwgV0tVUkxSZWYgcGFnZVVSTCkgV0tfQ19BUElfREVQ
UkVDQVRFRDsKK1dLX0VYUE9SVCB2b2lkIFdLSWNvbkRhdGFiYXNlUmVsZWFzZUljb25Gb3JVUkwo
V0tJY29uRGF0YWJhc2VSZWYgaWNvbkRhdGFiYXNlLCBXS1VSTFJlZiBwYWdlVVJMKSBXS19DX0FQ
SV9ERVBSRUNBVEVEOworV0tfRVhQT1JUIHZvaWQgV0tJY29uRGF0YWJhc2VTZXRJY29uRGF0YUZv
ckljb25VUkwoV0tJY29uRGF0YWJhc2VSZWYgaWNvbkRhdGFiYXNlLCBXS0RhdGFSZWYgaWNvbkRh
dGEsIFdLVVJMUmVmIGljb25VUkwpIFdLX0NfQVBJX0RFUFJFQ0FURUQ7CitXS19FWFBPUlQgdm9p
ZCBXS0ljb25EYXRhYmFzZVNldEljb25VUkxGb3JQYWdlVVJMKFdLSWNvbkRhdGFiYXNlUmVmIGlj
b25EYXRhYmFzZSwgV0tVUkxSZWYgaWNvblVSTCwgV0tVUkxSZWYgcGFnZVVSTCkgV0tfQ19BUElf
REVQUkVDQVRFRDsKK1dLX0VYUE9SVCBXS1VSTFJlZiBXS0ljb25EYXRhYmFzZUNvcHlJY29uVVJM
Rm9yUGFnZVVSTChXS0ljb25EYXRhYmFzZVJlZiBpY29uRGF0YWJhc2UsIFdLVVJMUmVmIHBhZ2VV
UkwpIFdLX0NfQVBJX0RFUFJFQ0FURUQ7CitXS19FWFBPUlQgV0tEYXRhUmVmIFdLSWNvbkRhdGFi
YXNlQ29weUljb25EYXRhRm9yUGFnZVVSTChXS0ljb25EYXRhYmFzZVJlZiBpY29uRGF0YWJhc2Us
IFdLVVJMUmVmIHBhZ2VVUkwpIFdLX0NfQVBJX0RFUFJFQ0FURUQ7CiAKLVdLX0VYUE9SVCB2b2lk
IFdLSWNvbkRhdGFiYXNlRW5hYmxlRGF0YWJhc2VDbGVhbnVwKFdLSWNvbkRhdGFiYXNlUmVmIGlj
b25EYXRhYmFzZSk7CitXS19FWFBPUlQgdm9pZCBXS0ljb25EYXRhYmFzZUVuYWJsZURhdGFiYXNl
Q2xlYW51cChXS0ljb25EYXRhYmFzZVJlZiBpY29uRGF0YWJhc2UpIFdLX0NfQVBJX0RFUFJFQ0FU
RUQ7CiAKLVdLX0VYUE9SVCB2b2lkIFdLSWNvbkRhdGFiYXNlUmVtb3ZlQWxsSWNvbnMoV0tJY29u
RGF0YWJhc2VSZWYgaWNvbkRhdGFiYXNlKTsKLVdLX0VYUE9SVCB2b2lkIFdLSWNvbkRhdGFiYXNl
Q2hlY2tJbnRlZ3JpdHlCZWZvcmVPcGVuaW5nKFdLSWNvbkRhdGFiYXNlUmVmIGljb25EYXRhYmFz
ZSk7CitXS19FWFBPUlQgdm9pZCBXS0ljb25EYXRhYmFzZVJlbW92ZUFsbEljb25zKFdLSWNvbkRh
dGFiYXNlUmVmIGljb25EYXRhYmFzZSkgV0tfQ19BUElfREVQUkVDQVRFRDsKK1dLX0VYUE9SVCB2
b2lkIFdLSWNvbkRhdGFiYXNlQ2hlY2tJbnRlZ3JpdHlCZWZvcmVPcGVuaW5nKFdLSWNvbkRhdGFi
YXNlUmVmIGljb25EYXRhYmFzZSkgV0tfQ19BUElfREVQUkVDQVRFRDsKIAotV0tfRVhQT1JUIHZv
aWQgV0tJY29uRGF0YWJhc2VDbG9zZShXS0ljb25EYXRhYmFzZVJlZiBpY29uRGF0YWJhc2UpOwor
V0tfRVhQT1JUIHZvaWQgV0tJY29uRGF0YWJhc2VDbG9zZShXS0ljb25EYXRhYmFzZVJlZiBpY29u
RGF0YWJhc2UpIFdLX0NfQVBJX0RFUFJFQ0FURUQ7CiAKICNpZmRlZiBfX2NwbHVzcGx1cwogfQpJ
bmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tLZXlWYWx1ZVN0b3JhZ2VNYW5h
Z2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0tl
eVZhbHVlU3RvcmFnZU1hbmFnZXIuY3BwCShyZXZpc2lvbiAyMzk2MzApCisrKyBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0tleVZhbHVlU3RvcmFnZU1hbmFnZXIuY3BwCShub25leGlz
dGVudCkKQEAgLTEsMTMyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgi
Ci0jaW5jbHVkZSAiV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLmgiCi0KLSNpbmNsdWRlICJBUElB
cnJheS5oIgotI2luY2x1ZGUgIkFQSURpY3Rpb25hcnkuaCIKLSNpbmNsdWRlICJBUElXZWJzaXRl
RGF0YVN0b3JlLmgiCi0jaW5jbHVkZSAiU3RvcmFnZU1hbmFnZXIuaCIKLSNpbmNsdWRlICJXS0FQ
SUNhc3QuaCIKLSNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlLmgiCi0jaW5jbHVkZSA8d3RmL1J1
bkxvb3AuaD4KLQotdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKLQotV0tUeXBlSUQgV0tLZXlWYWx1
ZVN0b3JhZ2VNYW5hZ2VyR2V0VHlwZUlEKCkKLXsKLSAgICByZXR1cm4gdG9BUEkoQVBJOjpXZWJz
aXRlRGF0YVN0b3JlOjpBUElUeXBlKTsKLX0KLQotV0tTdHJpbmdSZWYgV0tLZXlWYWx1ZVN0b3Jh
Z2VNYW5hZ2VyR2V0T3JpZ2luS2V5KCkKLXsKLSAgICBzdGF0aWMgQVBJOjpTdHJpbmcmIGtleSA9
IEFQSTo6U3RyaW5nOjpjcmVhdGUoIldlYktleVZhbHVlU3RvcmFnZU1hbmFnZXJTdG9yYWdlRGV0
YWlsc09yaWdpbktleSIpLmxlYWtSZWYoKTsKLSAgICByZXR1cm4gdG9BUEkoJmtleSk7Ci19Ci0K
LVdLU3RyaW5nUmVmIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldENyZWF0aW9uVGltZUtleSgp
Ci17Ci0gICAgc3RhdGljIEFQSTo6U3RyaW5nJiBrZXkgPSBBUEk6OlN0cmluZzo6Y3JlYXRlKCJX
ZWJLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyU3RvcmFnZURldGFpbHNDcmVhdGlvblRpbWVLZXkiKS5s
ZWFrUmVmKCk7Ci0gICAgcmV0dXJuIHRvQVBJKCZrZXkpOwotfQotCi1XS1N0cmluZ1JlZiBXS0tl
eVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRNb2RpZmljYXRpb25UaW1lS2V5KCkKLXsKLSAgICBzdGF0
aWMgQVBJOjpTdHJpbmcmIGtleSA9IEFQSTo6U3RyaW5nOjpjcmVhdGUoIldlYktleVZhbHVlU3Rv
cmFnZU1hbmFnZXJTdG9yYWdlRGV0YWlsc01vZGlmaWNhdGlvblRpbWVLZXkiKS5sZWFrUmVmKCk7
Ci0gICAgcmV0dXJuIHRvQVBJKCZrZXkpOwotfQotCi12b2lkIFdLS2V5VmFsdWVTdG9yYWdlTWFu
YWdlckdldEtleVZhbHVlU3RvcmFnZU9yaWdpbnMoV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyUmVm
IGtleVZhbHVlU3RvcmFnZU1hbmFnZXIsIHZvaWQqIGNvbnRleHQsIFdLS2V5VmFsdWVTdG9yYWdl
TWFuYWdlckdldEtleVZhbHVlU3RvcmFnZU9yaWdpbnNGdW5jdGlvbiBjYWxsYmFjaykKLQotewot
ICAgIFN0b3JhZ2VNYW5hZ2VyKiBzdG9yYWdlTWFuYWdlciA9IHRvSW1wbChyZWludGVycHJldF9j
YXN0PFdLV2Vic2l0ZURhdGFTdG9yZVJlZj4oa2V5VmFsdWVTdG9yYWdlTWFuYWdlcikpLT53ZWJz
aXRlRGF0YVN0b3JlKCkuc3RvcmFnZU1hbmFnZXIoKTsKLSAgICBpZiAoIXN0b3JhZ2VNYW5hZ2Vy
KSB7Ci0gICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbY29udGV4dCwgY2FsbGJhY2td
IHsKLSAgICAgICAgICAgIGNhbGxiYWNrKHRvQVBJKEFQSTo6QXJyYXk6OmNyZWF0ZSgpLnB0cigp
KSwgbnVsbHB0ciwgY29udGV4dCk7Ci0gICAgICAgIH0pOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotCi0gICAgc3RvcmFnZU1hbmFnZXItPmdldExvY2FsU3RvcmFnZU9yaWdpbnMoW2NvbnRleHQs
IGNhbGxiYWNrXShhdXRvJiYgc2VjdXJpdHlPcmlnaW5zKSB7Ci0gICAgICAgIFZlY3RvcjxSZWZQ
dHI8QVBJOjpPYmplY3Q+PiB3ZWJTZWN1cml0eU9yaWdpbnM7Ci0gICAgICAgIHdlYlNlY3VyaXR5
T3JpZ2lucy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHNlY3VyaXR5T3JpZ2lucy5zaXplKCkpOwot
ICAgICAgICBmb3IgKGF1dG8mIG9yaWdpbiA6IHNlY3VyaXR5T3JpZ2lucykKLSAgICAgICAgICAg
IHdlYlNlY3VyaXR5T3JpZ2lucy51bmNoZWNrZWRBcHBlbmQoQVBJOjpTZWN1cml0eU9yaWdpbjo6
Y3JlYXRlKG9yaWdpbi5zZWN1cml0eU9yaWdpbigpKSk7Ci0KLSAgICAgICAgY2FsbGJhY2sodG9B
UEkoQVBJOjpBcnJheTo6Y3JlYXRlKFdURk1vdmUod2ViU2VjdXJpdHlPcmlnaW5zKSkucHRyKCkp
LCBudWxscHRyLCBjb250ZXh0KTsKLSAgICB9KTsKLX0KLQotdm9pZCBXS0tleVZhbHVlU3RvcmFn
ZU1hbmFnZXJHZXRTdG9yYWdlRGV0YWlsc0J5T3JpZ2luKFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdl
clJlZiBrZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLCB2b2lkKiBjb250ZXh0LCBXS0tleVZhbHVlU3Rv
cmFnZU1hbmFnZXJHZXRTdG9yYWdlRGV0YWlsc0J5T3JpZ2luRnVuY3Rpb24gY2FsbGJhY2spCi17
Ci0gICAgU3RvcmFnZU1hbmFnZXIqIHN0b3JhZ2VNYW5hZ2VyID0gdG9JbXBsKHJlaW50ZXJwcmV0
X2Nhc3Q8V0tXZWJzaXRlRGF0YVN0b3JlUmVmPihrZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyKSktPndl
YnNpdGVEYXRhU3RvcmUoKS5zdG9yYWdlTWFuYWdlcigpOwotICAgIGlmICghc3RvcmFnZU1hbmFn
ZXIpIHsKLSAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjb250ZXh0LCBjYWxsYmFj
a10gewotICAgICAgICAgICAgY2FsbGJhY2sodG9BUEkoQVBJOjpBcnJheTo6Y3JlYXRlKCkucHRy
KCkpLCBudWxscHRyLCBjb250ZXh0KTsKLSAgICAgICAgfSk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICBzdG9yYWdlTWFuYWdlci0+Z2V0TG9jYWxTdG9yYWdlT3JpZ2luRGV0YWlscyhb
Y29udGV4dCwgY2FsbGJhY2tdKGF1dG8gc3RvcmFnZURldGFpbHMpIHsKLSAgICAgICAgSGFzaE1h
cDxTdHJpbmcsIFJlZlB0cjxBUEk6Ok9iamVjdD4+IGRldGFpbHNNYXA7Ci0gICAgICAgIFZlY3Rv
cjxSZWZQdHI8QVBJOjpPYmplY3Q+PiByZXN1bHQ7Ci0gICAgICAgIHJlc3VsdC5yZXNlcnZlSW5p
dGlhbENhcGFjaXR5KHN0b3JhZ2VEZXRhaWxzLnNpemUoKSk7Ci0KLSAgICAgICAgZm9yIChjb25z
dCBhdXRvJiBvcmlnaW5EZXRhaWxzIDogc3RvcmFnZURldGFpbHMpIHsKLSAgICAgICAgICAgIEhh
c2hNYXA8U3RyaW5nLCBSZWZQdHI8QVBJOjpPYmplY3Q+PiBkZXRhaWxzTWFwOwotCi0gICAgICAg
ICAgICBSZWZQdHI8QVBJOjpPYmplY3Q+IG9yaWdpbiA9IEFQSTo6U2VjdXJpdHlPcmlnaW46OmNy
ZWF0ZShXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21EYXRhYmFzZUlkZW50aWZpZXIo
b3JpZ2luRGV0YWlscy5vcmlnaW5JZGVudGlmaWVyKS0+c2VjdXJpdHlPcmlnaW4oKSk7Ci0KLSAg
ICAgICAgICAgIGRldGFpbHNNYXAuc2V0KHRvSW1wbChXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJH
ZXRPcmlnaW5LZXkoKSktPnN0cmluZygpLCBvcmlnaW4pOwotICAgICAgICAgICAgaWYgKG9yaWdp
bkRldGFpbHMuY3JlYXRpb25UaW1lKQotICAgICAgICAgICAgICAgIGRldGFpbHNNYXAuc2V0KHRv
SW1wbChXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRDcmVhdGlvblRpbWVLZXkoKSktPnN0cmlu
ZygpLCBBUEk6OkRvdWJsZTo6Y3JlYXRlKG9yaWdpbkRldGFpbHMuY3JlYXRpb25UaW1lLT5zZWNv
bmRzU2luY2VFcG9jaCgpLnZhbHVlKCkpKTsKLSAgICAgICAgICAgIGlmIChvcmlnaW5EZXRhaWxz
Lm1vZGlmaWNhdGlvblRpbWUpCi0gICAgICAgICAgICAgICAgZGV0YWlsc01hcC5zZXQodG9JbXBs
KFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldE1vZGlmaWNhdGlvblRpbWVLZXkoKSktPnN0cmlu
ZygpLCBBUEk6OkRvdWJsZTo6Y3JlYXRlKG9yaWdpbkRldGFpbHMubW9kaWZpY2F0aW9uVGltZS0+
c2Vjb25kc1NpbmNlRXBvY2goKS52YWx1ZSgpKSk7Ci0KLSAgICAgICAgICAgIHJlc3VsdC51bmNo
ZWNrZWRBcHBlbmQoQVBJOjpEaWN0aW9uYXJ5OjpjcmVhdGUoV1RGTW92ZShkZXRhaWxzTWFwKSkp
OwotICAgICAgICB9Ci0KLSAgICAgICAgY2FsbGJhY2sodG9BUEkoQVBJOjpBcnJheTo6Y3JlYXRl
KFdURk1vdmUocmVzdWx0KSkucHRyKCkpLCBudWxscHRyLCBjb250ZXh0KTsKLSAgICB9KTsKLX0K
LQotdm9pZCBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJEZWxldGVFbnRyaWVzRm9yT3JpZ2luKFdL
S2V5VmFsdWVTdG9yYWdlTWFuYWdlclJlZiBrZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLCBXS1NlY3Vy
aXR5T3JpZ2luUmVmIG9yaWdpbikKLXsKLSAgICBTdG9yYWdlTWFuYWdlciogc3RvcmFnZU1hbmFn
ZXIgPSB0b0ltcGwocmVpbnRlcnByZXRfY2FzdDxXS1dlYnNpdGVEYXRhU3RvcmVSZWY+KGtleVZh
bHVlU3RvcmFnZU1hbmFnZXIpKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnN0b3JhZ2VNYW5hZ2VyKCk7
Ci0gICAgaWYgKCFzdG9yYWdlTWFuYWdlcikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgc3RvcmFn
ZU1hbmFnZXItPmRlbGV0ZUxvY2FsU3RvcmFnZUVudHJpZXNGb3JPcmlnaW4odG9JbXBsKG9yaWdp
biktPnNlY3VyaXR5T3JpZ2luKCkuZGF0YSgpKTsKLX0KLQotdm9pZCBXS0tleVZhbHVlU3RvcmFn
ZU1hbmFnZXJEZWxldGVBbGxFbnRyaWVzKFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlclJlZiBrZXlW
YWx1ZVN0b3JhZ2VNYW5hZ2VyKQotewotICAgIFN0b3JhZ2VNYW5hZ2VyKiBzdG9yYWdlTWFuYWdl
ciA9IHRvSW1wbChyZWludGVycHJldF9jYXN0PFdLV2Vic2l0ZURhdGFTdG9yZVJlZj4oa2V5VmFs
dWVTdG9yYWdlTWFuYWdlcikpLT53ZWJzaXRlRGF0YVN0b3JlKCkuc3RvcmFnZU1hbmFnZXIoKTsK
LSAgICBpZiAoIXN0b3JhZ2VNYW5hZ2VyKQotICAgICAgICByZXR1cm47Ci0KLSAgICBzdG9yYWdl
TWFuYWdlci0+ZGVsZXRlTG9jYWxTdG9yYWdlT3JpZ2luc01vZGlmaWVkU2luY2UoLVdhbGxUaW1l
OjppbmZpbml0eSgpLCBbXSB7IH0pOwotfQoKUHJvcGVydHkgY2hhbmdlcyBvbjogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0MvV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLmNwcApfX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fCkRlbGV0ZWQ6IHN2bjplb2wtc3R5bGUKIyMgLTEgKzAsMCAjIwotbmF0aXZlClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9DL1dLS2V5VmFsdWVTdG9yYWdlTWFuYWdlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9DL1dLS2V5VmFsdWVTdG9yYWdlTWFuYWdlci5oCShyZXZpc2lvbiAy
Mzk2MzApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0tleVZhbHVlU3RvcmFn
ZU1hbmFnZXIuaAkobm9uZXhpc3RlbnQpCkBAIC0xLDU5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aWZuZGVmIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlcl9oCi0jZGVmaW5lIFdLS2V5VmFsdWVTdG9y
YWdlTWFuYWdlcl9oCi0KLSNpbmNsdWRlIDxXZWJLaXQvV0tCYXNlLmg+Ci0KLSNpZmRlZiBfX2Nw
bHVzcGx1cwotZXh0ZXJuICJDIiB7Ci0jZW5kaWYKLQotV0tfRVhQT1JUIFdLVHlwZUlEIFdLS2V5
VmFsdWVTdG9yYWdlTWFuYWdlckdldFR5cGVJRCgpOwotCi0vKiBWYWx1ZSB0eXBlOiBXS1NlY3Vy
aXR5T3JpZ2luUmVmICovCi1XS19FWFBPUlQgV0tTdHJpbmdSZWYgV0tLZXlWYWx1ZVN0b3JhZ2VN
YW5hZ2VyR2V0T3JpZ2luS2V5KCk7Ci0KLS8qIFZhbHVlIHR5cGU6IFdLRG91YmxlUmVmLCBzZWNv
bmRzIHNpbmNlIEphbnVhcnkgMXN0LCAxOTcwIFVUQyAqLwotV0tfRVhQT1JUIFdLU3RyaW5nUmVm
IFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldENyZWF0aW9uVGltZUtleSgpOwotCi0vKiBWYWx1
ZSB0eXBlOiBXS0RvdWJsZVJlZiwgc2Vjb25kcyBzaW5jZSBKYW51YXJ5IDFzdCwgMTk3MCBVVEMg
Ki8KLVdLX0VYUE9SVCBXS1N0cmluZ1JlZiBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRNb2Rp
ZmljYXRpb25UaW1lS2V5KCk7Ci0KLXR5cGVkZWYgdm9pZCAoKldLS2V5VmFsdWVTdG9yYWdlTWFu
YWdlckdldEtleVZhbHVlU3RvcmFnZU9yaWdpbnNGdW5jdGlvbikoV0tBcnJheVJlZiwgV0tFcnJv
clJlZiwgdm9pZCopOwotV0tfRVhQT1JUIHZvaWQgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0
S2V5VmFsdWVTdG9yYWdlT3JpZ2lucyhXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJSZWYga2V5VmFs
dWVTdG9yYWdlTWFuYWdlciwgdm9pZCogY29udGV4dCwgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2Vy
R2V0S2V5VmFsdWVTdG9yYWdlT3JpZ2luc0Z1bmN0aW9uIGZ1bmN0aW9uKTsKLQotdHlwZWRlZiB2
b2lkICgqV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0U3RvcmFnZURldGFpbHNCeU9yaWdpbkZ1
bmN0aW9uKShXS0FycmF5UmVmLCBXS0Vycm9yUmVmLCB2b2lkKik7Ci1XS19FWFBPUlQgdm9pZCBX
S0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRTdG9yYWdlRGV0YWlsc0J5T3JpZ2luKFdLS2V5VmFs
dWVTdG9yYWdlTWFuYWdlclJlZiBrZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLCB2b2lkKiBjb250ZXh0
LCBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRTdG9yYWdlRGV0YWlsc0J5T3JpZ2luRnVuY3Rp
b24gZnVuY3Rpb24pOwotCi1XS19FWFBPUlQgdm9pZCBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJE
ZWxldGVFbnRyaWVzRm9yT3JpZ2luKFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlclJlZiBrZXlWYWx1
ZVN0b3JhZ2VNYW5hZ2VyLCBXS1NlY3VyaXR5T3JpZ2luUmVmIG9yaWdpbik7Ci1XS19FWFBPUlQg
dm9pZCBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJEZWxldGVBbGxFbnRyaWVzKFdLS2V5VmFsdWVT
dG9yYWdlTWFuYWdlclJlZiBrZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyKTsKLQotI2lmZGVmIF9fY3Bs
dXNwbHVzCi19Ci0jZW5kaWYKLQotI2VuZGlmIC8vIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlcl9o
CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0tl
eVZhbHVlU3RvcmFnZU1hbmFnZXIuaApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6IHN2bjplb2wtc3R5bGUK
IyMgLTEgKzAsMCAjIwotbmF0aXZlClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLTWVkaWFTZXNzaW9uRm9jdXNNYW5h
Z2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS01l
ZGlhU2Vzc2lvbkZvY3VzTWFuYWdlci5jcHAJKHJldmlzaW9uIDIzOTYzMCkKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyLmNwcAkobm9u
ZXhpc3RlbnQpCkBAIC0xLDcyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
Ci0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0g
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmln
LmgiCi0jaW5jbHVkZSAiV0tNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIuaCIKLQotI2luY2x1ZGUg
IldLQVBJQ2FzdC5oIgotI2luY2x1ZGUgIldlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlci5oIgot
Ci11c2luZyBuYW1lc3BhY2UgV2ViS2l0OwotCi1XS1R5cGVJRCBXS01lZGlhU2Vzc2lvbkZvY3Vz
TWFuYWdlckdldFR5cGVJRCgpCi17Ci0jaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCi0gICAgcmV0
dXJuIHRvQVBJKFdlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlcjo6QVBJVHlwZSk7Ci0jZWxzZQot
ICAgIHJldHVybiB0b0FQSShBUEk6Ok9iamVjdDo6VHlwZTo6TnVsbCk7Ci0jZW5kaWYKLX0KLQot
dm9pZCBXS01lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlclNldENsaWVudChXS01lZGlhU2Vzc2lvbkZv
Y3VzTWFuYWdlclJlZiBtYW5hZ2VyLCBjb25zdCBXS01lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlckNs
aWVudEJhc2UqIGNsaWVudCkKLXsKLSNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKLSAgICB0b0lt
cGwobWFuYWdlciktPmluaXRpYWxpemVDbGllbnQoY2xpZW50KTsKLSNlbHNlCi0gICAgVU5VU0VE
X1BBUkFNKG1hbmFnZXIpOwotICAgIFVOVVNFRF9QQVJBTShjbGllbnQpOwotI2VuZGlmCi19Ci0K
LWJvb2wgV0tNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXJWYWx1ZUZvclBsYXliYWNrQXR0cmlidXRl
KFdLTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyUmVmIG1hbmFnZXIsIFdLTWVkaWFTZXNzaW9uRm9j
dXNNYW5hZ2VyUGxheWJhY2tBdHRyaWJ1dGUgYXR0cmlidXRlKQotewotI2lmIEVOQUJMRShNRURJ
QV9TRVNTSU9OKQotICAgIHJldHVybiB0b0ltcGwobWFuYWdlciktPnZhbHVlRm9yUGxheWJhY2tB
dHRyaWJ1dGUoYXR0cmlidXRlKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKG1hbmFnZXIpOwot
ICAgIFVOVVNFRF9QQVJBTShhdHRyaWJ1dGUpOwotICAgIHJldHVybiBmYWxzZTsKLSNlbmRpZgot
fQotCi12b2lkIFdLTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyU2V0Vm9sdW1lT2ZGb2N1c2VkTWVk
aWFFbGVtZW50KFdLTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyUmVmIG1hbmFnZXIsIGRvdWJsZSB2
b2x1bWUpCi17Ci0jaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCi0gICAgdG9JbXBsKG1hbmFnZXIp
LT5zZXRWb2x1bWVPZkZvY3VzZWRNZWRpYUVsZW1lbnQodm9sdW1lKTsKLSNlbHNlCi0gICAgVU5V
U0VEX1BBUkFNKG1hbmFnZXIpOwotICAgIFVOVVNFRF9QQVJBTSh2b2x1bWUpOwotI2VuZGlmCi19
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS01lZGlhU2Vzc2lvbkZvY3Vz
TWFuYWdlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dL
TWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyLmgJKHJldmlzaW9uIDIzOTYzMCkKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyLmgJKG5vbmV4
aXN0ZW50KQpAQCAtMSw3MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBXS01lZGlhU2Vz
c2lvbkZvY3VzTWFuYWdlcl9oCi0jZGVmaW5lIFdLTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyX2gK
LQotI2luY2x1ZGUgPFdlYktpdC9XS0Jhc2UuaD4KLQotI2lmbmRlZiBfX2NwbHVzcGx1cwotI2lu
Y2x1ZGUgPHN0ZGJvb2wuaD4KLSNlbmRpZgotCi0jaWZkZWYgX19jcGx1c3BsdXMKLWV4dGVybiAi
QyIgewotI2VuZGlmCi0KLWVudW0gV0tNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXJQbGF5YmFja0F0
dHJpYnV0ZSB7Ci0gICAgSXNQbGF5aW5nICAgICAgICAgICAgICAgICAgICAgPSAxIDw8IDAsCi0g
ICAgSXNQcmV2aW91c1RyYWNrQ29udHJvbEVuYWJsZWQgPSAxIDw8IDEsCi0gICAgSXNOZXh0VHJh
Y2tDb250cm9sRW5hYmxlZCAgICAgPSAxIDw8IDIsCi19OwotdHlwZWRlZiB1aW50MzJfdCBXS01l
ZGlhU2Vzc2lvbkZvY3VzTWFuYWdlclBsYXliYWNrQXR0cmlidXRlczsKLQotLy8gTWVkaWEgU2Vz
c2lvbiBGb2N1cyBNYW5hZ2VyIENsaWVudAotdHlwZWRlZiB2b2lkICgqV0tNZWRpYVNlc3Npb25G
b2N1c01hbmFnZXJEaWRDaGFuZ2VQbGF5YmFja0F0dHJpYnV0ZSkoV0tNZWRpYVNlc3Npb25Gb2N1
c01hbmFnZXJSZWYgbWFuYWdlciwgV0tNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXJQbGF5YmFja0F0
dHJpYnV0ZSBwbGF5YmFja0F0dHJpYnV0ZSwgYm9vbCB2YWx1ZSwgY29uc3Qgdm9pZCAqY2xpZW50
SW5mbyk7Ci0KLXR5cGVkZWYgc3RydWN0IFdLTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyQ2xpZW50
QmFzZSB7Ci0gICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB2ZXJzaW9uOwotICAgIGNvbnN0IHZvaWQgKiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY2xpZW50SW5mbzsKLX0gV0tNZWRpYVNlc3Npb25Gb2N1c01hbmFn
ZXJDbGllbnRCYXNlOwotCi10eXBlZGVmIHN0cnVjdCBXS01lZGlhU2Vzc2lvbkZvY3VzTWFuYWdl
ckNsaWVudFYwIHsKLSAgICBXS01lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlckNsaWVudEJhc2UgICAg
ICAgICAgICAgICAgIGJhc2U7Ci0KLSAgICAvLyBWZXJzaW9uIDAuCi0gICAgV0tNZWRpYVNlc3Np
b25Gb2N1c01hbmFnZXJEaWRDaGFuZ2VQbGF5YmFja0F0dHJpYnV0ZSBkaWRDaGFuZ2VQbGF5YmFj
a0F0dHJpYnV0ZTsKLX0gV0tNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXJDbGllbnRWMDsKLQotV0tf
RVhQT1JUIFdLVHlwZUlEIFdLTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyR2V0VHlwZUlEKCk7Ci0K
LVdLX0VYUE9SVCB2b2lkIFdLTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyU2V0Q2xpZW50KFdLTWVk
aWFTZXNzaW9uRm9jdXNNYW5hZ2VyUmVmIG1hbmFnZXIsIGNvbnN0IFdLTWVkaWFTZXNzaW9uRm9j
dXNNYW5hZ2VyQ2xpZW50QmFzZSogY2xpZW50KTsKLQotV0tfRVhQT1JUIGJvb2wgV0tNZWRpYVNl
c3Npb25Gb2N1c01hbmFnZXJWYWx1ZUZvclBsYXliYWNrQXR0cmlidXRlKFdLTWVkaWFTZXNzaW9u
Rm9jdXNNYW5hZ2VyUmVmLCBXS01lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlclBsYXliYWNrQXR0cmli
dXRlKTsKLVdLX0VYUE9SVCB2b2lkIFdLTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyU2V0Vm9sdW1l
T2ZGb2N1c2VkTWVkaWFFbGVtZW50KFdLTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyUmVmLCBkb3Vi
bGUpOwotCi0jaWZkZWYgX19jcGx1c3BsdXMKLX0KLSNlbmRpZgotCi0jZW5kaWYgLyogV0tNZWRp
YVNlc3Npb25Gb2N1c01hbmFnZXJfaCAqLwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwCShyZXZpc2lvbiAy
Mzk2MzApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3Rv
cmVSZWYuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NzksMTMgKzU3OSwxMyBAQCB2b2lkIFdLV2Vi
c2l0ZURhdGFTdG9yZVNldENhY2hlU3RvcmFnZVBlCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNl
dFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oV0tXZWJzaXRlRGF0YVN0b3JlUmVm
IGRhdGFTdG9yZVJlZiwgV0tEaWN0aW9uYXJ5UmVmIGNvbmZpZ3VyYXRpb25SZWYpCiB7CiAjaWYg
RU5BQkxFKFdFQl9BVVRITikKLSAgICBNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9u
IGNvbmZpZ3VyYXRpb247CisgICAgV2ViS2l0OjpNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1
cmF0aW9uIGNvbmZpZ3VyYXRpb247CiAKICAgICBpZiAoYXV0byBzaWxlbnRGYWlsdXJlUmVmID0g
c3RhdGljX2Nhc3Q8V0tCb29sZWFuUmVmPihXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5KGNvbmZp
Z3VyYXRpb25SZWYsIGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlNpbGVu
dEZhaWx1cmUiKSkuZ2V0KCkpKSkKICAgICAgICAgY29uZmlndXJhdGlvbi5zaWxlbnRGYWlsdXJl
ID0gV0tCb29sZWFuR2V0VmFsdWUoc2lsZW50RmFpbHVyZVJlZik7CiAKICAgICBpZiAoYXV0byBs
b2NhbFJlZiA9IHN0YXRpY19jYXN0PFdLRGljdGlvbmFyeVJlZj4oV0tEaWN0aW9uYXJ5R2V0SXRl
bUZvcktleShjb25maWd1cmF0aW9uUmVmLCBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhD
U3RyaW5nKCJMb2NhbCIpKS5nZXQoKSkpKSB7Ci0gICAgICAgIE1vY2tXZWJBdXRoZW50aWNhdGlv
bkNvbmZpZ3VyYXRpb246OkxvY2FsIGxvY2FsOworICAgICAgICBXZWJLaXQ6Ok1vY2tXZWJBdXRo
ZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246OkxvY2FsIGxvY2FsOwogICAgICAgICBsb2NhbC5hY2Nl
cHRBdXRoZW50aWNhdGlvbiA9IFdLQm9vbGVhbkdldFZhbHVlKHN0YXRpY19jYXN0PFdLQm9vbGVh
blJlZj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktleShsb2NhbFJlZiwgYWRvcHRXSyhXS1N0cmlu
Z0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiQWNjZXB0QXV0aGVudGljYXRpb24iKSkuZ2V0KCkpKSk7
CiAgICAgICAgIGxvY2FsLmFjY2VwdEF0dGVzdGF0aW9uID0gV0tCb29sZWFuR2V0VmFsdWUoc3Rh
dGljX2Nhc3Q8V0tCb29sZWFuUmVmPihXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5KGxvY2FsUmVm
LCBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJBY2NlcHRBdHRlc3RhdGlv
biIpKS5nZXQoKSkpKTsKICAgICAgICAgaWYgKGxvY2FsLmFjY2VwdEF0dGVzdGF0aW9uKSB7CkBA
IC01OTcsMzUgKzU5NywzNSBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFdlYkF1dGhlbnRp
Y2F0CiAgICAgfQogCiAgICAgaWYgKGF1dG8gaGlkUmVmID0gc3RhdGljX2Nhc3Q8V0tEaWN0aW9u
YXJ5UmVmPihXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5KGNvbmZpZ3VyYXRpb25SZWYsIGFkb3B0
V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkhpZCIpKS5nZXQoKSkpKSB7Ci0gICAg
ICAgIE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246OkhpZCBoaWQ7CisgICAgICAg
IFdlYktpdDo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6SGlkIGhpZDsKIAog
ICAgICAgICBhdXRvIHN0YWdlID0gV2ViS2l0Ojp0b0ltcGwoc3RhdGljX2Nhc3Q8V0tTdHJpbmdS
ZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkoaGlkUmVmLCBhZG9wdFdLKFdLU3RyaW5nQ3Jl
YXRlV2l0aFVURjhDU3RyaW5nKCJTdGFnZSIpKS5nZXQoKSkpKS0+c3RyaW5nKCk7CiAgICAgICAg
IGlmIChzdGFnZSA9PSAiaW5mbyIpCi0gICAgICAgICAgICBoaWQuc3RhZ2UgPSBNb2NrV2ViQXV0
aGVudGljYXRpb25Db25maWd1cmF0aW9uOjpIaWQ6OlN0YWdlOjpJbmZvOworICAgICAgICAgICAg
aGlkLnN0YWdlID0gV2ViS2l0OjpNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOjpI
aWQ6OlN0YWdlOjpJbmZvOwogICAgICAgICBpZiAoc3RhZ2UgPT0gInJlcXVlc3QiKQotICAgICAg
ICAgICAgaGlkLnN0YWdlID0gTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6SGlk
OjpTdGFnZTo6UmVxdWVzdDsKKyAgICAgICAgICAgIGhpZC5zdGFnZSA9IFdlYktpdDo6TW9ja1dl
YkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6SGlkOjpTdGFnZTo6UmVxdWVzdDsKIAogICAg
ICAgICBhdXRvIHN1YlN0YWdlID0gV2ViS2l0Ojp0b0ltcGwoc3RhdGljX2Nhc3Q8V0tTdHJpbmdS
ZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkoaGlkUmVmLCBhZG9wdFdLKFdLU3RyaW5nQ3Jl
YXRlV2l0aFVURjhDU3RyaW5nKCJTdWJTdGFnZSIpKS5nZXQoKSkpKS0+c3RyaW5nKCk7CiAgICAg
ICAgIGlmIChzdWJTdGFnZSA9PSAiaW5pdCIpCi0gICAgICAgICAgICBoaWQuc3ViU3RhZ2UgPSBN
b2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOjpIaWQ6OlN1YlN0YWdlOjpJbml0Owor
ICAgICAgICAgICAgaGlkLnN1YlN0YWdlID0gV2ViS2l0OjpNb2NrV2ViQXV0aGVudGljYXRpb25D
b25maWd1cmF0aW9uOjpIaWQ6OlN1YlN0YWdlOjpJbml0OwogICAgICAgICBpZiAoc3ViU3RhZ2Ug
PT0gIm1zZyIpCi0gICAgICAgICAgICBoaWQuc3ViU3RhZ2UgPSBNb2NrV2ViQXV0aGVudGljYXRp
b25Db25maWd1cmF0aW9uOjpIaWQ6OlN1YlN0YWdlOjpNc2c7CisgICAgICAgICAgICBoaWQuc3Vi
U3RhZ2UgPSBXZWJLaXQ6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246OkhpZDo6
U3ViU3RhZ2U6Ok1zZzsKIAogICAgICAgICBhdXRvIGVycm9yID0gV2ViS2l0Ojp0b0ltcGwoc3Rh
dGljX2Nhc3Q8V0tTdHJpbmdSZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkoaGlkUmVmLCBh
ZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJFcnJvciIpKS5nZXQoKSkpKS0+
c3RyaW5nKCk7CiAgICAgICAgIGlmIChlcnJvciA9PSAic3VjY2VzcyIpCi0gICAgICAgICAgICBo
aWQuZXJyb3IgPSBNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOjpIaWQ6OkVycm9y
OjpTdWNjZXNzOworICAgICAgICAgICAgaGlkLmVycm9yID0gV2ViS2l0OjpNb2NrV2ViQXV0aGVu
dGljYXRpb25Db25maWd1cmF0aW9uOjpIaWQ6OkVycm9yOjpTdWNjZXNzOwogICAgICAgICBpZiAo
ZXJyb3IgPT0gImRhdGEtbm90LXNlbnQiKQotICAgICAgICAgICAgaGlkLmVycm9yID0gTW9ja1dl
YkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6SGlkOjpFcnJvcjo6RGF0YU5vdFNlbnQ7Cisg
ICAgICAgICAgICBoaWQuZXJyb3IgPSBXZWJLaXQ6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZp
Z3VyYXRpb246OkhpZDo6RXJyb3I6OkRhdGFOb3RTZW50OwogICAgICAgICBpZiAoZXJyb3IgPT0g
ImVtcHR5LXJlcG9ydCIpCi0gICAgICAgICAgICBoaWQuZXJyb3IgPSBNb2NrV2ViQXV0aGVudGlj
YXRpb25Db25maWd1cmF0aW9uOjpIaWQ6OkVycm9yOjpFbXB0eVJlcG9ydDsKKyAgICAgICAgICAg
IGhpZC5lcnJvciA9IFdlYktpdDo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6
SGlkOjpFcnJvcjo6RW1wdHlSZXBvcnQ7CiAgICAgICAgIGlmIChlcnJvciA9PSAid3JvbmctY2hh
bm5lbC1pZCIpCi0gICAgICAgICAgICBoaWQuZXJyb3IgPSBNb2NrV2ViQXV0aGVudGljYXRpb25D
b25maWd1cmF0aW9uOjpIaWQ6OkVycm9yOjpXcm9uZ0NoYW5uZWxJZDsKKyAgICAgICAgICAgIGhp
ZC5lcnJvciA9IFdlYktpdDo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6SGlk
OjpFcnJvcjo6V3JvbmdDaGFubmVsSWQ7CiAgICAgICAgIGlmIChlcnJvciA9PSAibWFsaWNpb3Vz
LXBheWxvYWQiKQotICAgICAgICAgICAgaGlkLmVycm9yID0gTW9ja1dlYkF1dGhlbnRpY2F0aW9u
Q29uZmlndXJhdGlvbjo6SGlkOjpFcnJvcjo6TWFsaWNpb3VzUGF5bG9hZDsKKyAgICAgICAgICAg
IGhpZC5lcnJvciA9IFdlYktpdDo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6
SGlkOjpFcnJvcjo6TWFsaWNpb3VzUGF5bG9hZDsKICAgICAgICAgaWYgKGVycm9yID09ICJ1bnN1
cHBvcnRlZC1vcHRpb25zIikKLSAgICAgICAgICAgIGhpZC5lcnJvciA9IE1vY2tXZWJBdXRoZW50
aWNhdGlvbkNvbmZpZ3VyYXRpb246OkhpZDo6RXJyb3I6OlVuc3VwcG9ydGVkT3B0aW9uczsKKyAg
ICAgICAgICAgIGhpZC5lcnJvciA9IFdlYktpdDo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmln
dXJhdGlvbjo6SGlkOjpFcnJvcjo6VW5zdXBwb3J0ZWRPcHRpb25zOwogICAgICAgICBpZiAoZXJy
b3IgPT0gIndyb25nLW5vbmNlIikKLSAgICAgICAgICAgIGhpZC5lcnJvciA9IE1vY2tXZWJBdXRo
ZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246OkhpZDo6RXJyb3I6Oldyb25nTm9uY2U7CisgICAgICAg
ICAgICBoaWQuZXJyb3IgPSBXZWJLaXQ6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRp
b246OkhpZDo6RXJyb3I6Oldyb25nTm9uY2U7CiAKICAgICAgICAgaWYgKGF1dG8gcGF5bG9hZEJh
c2U2NCA9IHN0YXRpY19jYXN0PFdLU3RyaW5nUmVmPihXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5
KGhpZFJlZiwgYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiUGF5bG9hZEJh
c2U2NCIpKS5nZXQoKSkpKQogICAgICAgICAgICAgaGlkLnBheWxvYWRCYXNlNjQgPSBXZWJLaXQ6
OnRvSW1wbChwYXlsb2FkQmFzZTY0KS0+c3RyaW5nKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlTm9kZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRy
ZWVOb2RlLmgJKHJldmlzaW9uIDIzOTYzMCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Jl
bW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVOb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5
LDYgKzI5LDcgQEAKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKIE9CSkNfQ0xBU1MgQ0FM
YXllcjsKK09CSkNfQ0xBU1MgTlNTdHJpbmc7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIE9C
SkNfQ0xBU1MgVUlWaWV3OwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9t
YWMvRGlzcGxheUxpbmsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L21hYy9EaXNwbGF5TGluay5jcHAJKHJldmlzaW9uIDIzOTYzMCkKKysrIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL21hYy9EaXNwbGF5TGluay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5
LDcgQEAKICNpZiBFTkFCTEUoV0VCUFJPQ0VTU19XSU5ET1dTRVJWRVJfQkxPQ0tJTkcpCiAKICNp
bmNsdWRlICJEcmF3aW5nQXJlYU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzc01lc3Nh
Z2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCiAjaW5jbHVkZSA8d3RmL1Byb2Nl
c3NQcml2aWxlZ2UuaD4KIApJbmRleDogU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMzk2MzApCisrKyBTb3VyY2UvV2ViS2l0L1dl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC05MTksNyAr
OTE5LDYgQEAKIAkJNTEyM0NGMUMxMzNEMjYwQTAwNTZGODAwIC8qIFdLSWNvbkRhdGFiYXNlQ0cu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMjNDRjFB
MTMzRDI2MEEwMDU2RjgwMCAvKiBXS0ljb25EYXRhYmFzZUNHLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTEyOTM1RDgxMjg4RDE5NDAwQTRCNjk1
IC8qIFdlYkNvbnRleHRNZW51SXRlbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTEyOTM1RDYxMjg4RDE5NDAwQTRCNjk1IC8qIFdlYkNvbnRleHRNZW51
SXRlbS5oICovOyB9OwogCQk1MTI5MzVFNDEyODhEOTc4MDBBNEI2OTUgLyogSW5qZWN0ZWRCdW5k
bGVQYWdlQ29udGV4dE1lbnVDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxMjkzNUUyMTI4OEQ5NzgwMEE0QjY5NSAvKiBJbmplY3RlZEJ1bmRs
ZVBhZ2VDb250ZXh0TWVudUNsaWVudC5oICovOyB9OwotCQk1MTJFMzRFNTEzMEI0RDA1MDBBQkQx
OUEgLyogV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3QTMzQjQxMzBCMzA4QzAwRjgwQ0I1IC8qIFdLQXBw
bGljYXRpb25DYWNoZU1hbmFnZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk1MTJGNTg5NzEyQTg4Mzg4MDA2Mjk1MzAgLyogQXV0aGVudGljYXRp
b25DaGFsbGVuZ2VQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTEyRjU4OEYxMkE4ODM4ODAwNjI5NTMwIC8qIEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlUHJveHkuaCAqLzsgfTsKIAkJNTEyRjU4OTkxMkE4ODM4ODAwNjI5NTMwIC8qIEF1dGhlbnRp
Y2F0aW9uRGVjaXNpb25MaXN0ZW5lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTEyRjU4OTExMkE4ODM4ODAwNjI5NTMwIC8qIEF1dGhlbnRpY2F0aW9u
RGVjaXNpb25MaXN0ZW5lci5oICovOyB9OwogCQk1MTJGNTg5QjEyQTg4Mzg4MDA2Mjk1MzAgLyog
V2ViQ3JlZGVudGlhbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTEyRjU4OTMxMkE4ODM4ODAwNjI5NTMwIC8qIFdlYkNyZWRlbnRpYWwuaCAqLzsgfTsK
QEAgLTk3MSw3ICs5NzAsNiBAQAogCQk1MUE1NTYwMTEyOEM2RDkyMDA5QUJDRUMgLyogV0tDb250
ZXh0TWVudUl0ZW1UeXBlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTFBNTU2MDAxMjhDNkQ5MjAwOUFCQ0VDIC8qIFdLQ29udGV4dE1lbnVJdGVtVHlw
ZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1
MUE3MjhERTFCMUJBRDM4MDAxMDJFRUUgLyogV0tCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uUHJpdmF0
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFBNzI4
REMxQjFCQUQyRDAwMTAyRUVFIC8qIFdLQnVuZGxlTmF2aWdhdGlvbkFjdGlvblByaXZhdGUuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MUE3RjJG
MzEyNUJGODIwMDA4QUVCMUQgLyogTG9nZ2luZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTFBN0YyRjIxMjVCRjgyMDAwOEFFQjFEIC8qIExvZ2dpbmcu
aCAqLzsgfTsKLQkJNTFBOUUxMEIxMzE1Q0QxODAwOUU3MDMxIC8qIFdLS2V5VmFsdWVTdG9yYWdl
TWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTFBOUUxMDkxMzE1Q0QxODAwOUU3MDMxIC8qIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxQUNCQjgy
MTI3QThCQUQwMEQyMDNCOSAvKiBXZWJDb250ZXh0TWVudVByb3h5LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUFDQkI4MTEyN0E4QkFEMDBEMjAzQjkg
LyogV2ViQ29udGV4dE1lbnVQcm94eS5oICovOyB9OwogCQk1MUFDQkJBMDEyN0E4RjJDMDBEMjAz
QjkgLyogV2ViQ29udGV4dE1lbnVQcm94eU1hYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTFBQ0JCOUUxMjdBOEYyQzAwRDIwM0I5IC8qIFdlYkNvbnRl
eHRNZW51UHJveHlNYWMuaCAqLzsgfTsKIAkJNTFCMTVBODUxMzg0M0EzOTAwMzIxQUQ4IC8qIEVu
dmlyb25tZW50VXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MUIxNUE4MzEzODQzQTM5MDAzMjFBRDggLyogRW52aXJvbm1lbnRVdGlsaXRp
ZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAt
MTUyOSw3ICsxNTI3LDYgQEAKIAkJQzVFMUFGRUYxNkIyMTAyOTAwNkNDMUYyIC8qIEFQSVdlYkFy
Y2hpdmVSZXNvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQkMzMjlEOUYxNkFDRDQ3ODAwMzE2REUyIC8qIEFQSVdlYkFyY2hpdmVSZXNvdXJjZS5o
ICovOyB9OwogCQlDNUZBMUVEMzE4RTEwNjIyMDBCM0Y0MDIgLyogV0tBaXJQbGF5Um91dGVQaWNr
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM1RkEx
RUQxMThFMTA2MjIwMEIzRjQwMiAvKiBXS0FpclBsYXlSb3V0ZVBpY2tlci5oICovOyB9OwogCQlD
OThDNDhBNjFCNkZENEMzMDAxNDUxMDMgLyogV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDOThDNDhBNDFC
NkZENEMzMDAxNDUxMDMgLyogV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyLmggKi87IH07Ci0J
CUM5OEM0OEFBMUI2RkQ1QjUwMDE0NTEwMyAvKiBXS01lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzk4QzQ4QTgx
QjZGRDVCNTAwMTQ1MTAzIC8qIFdLTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzlDMTgzM0MxQjc0MDI2
RDAwNzAzNkE3IC8qIFdlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlckNsaWVudC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzlDMTgzMzgxQjczRkQ2QTAw
NzAzNkE3IC8qIFdlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlckNsaWVudC5oICovOyB9OwogCQlD
OUNENDM5ODFCNEIwMDFEMDAyMzlFMzMgLyogV2ViTWVkaWFTZXNzaW9uTWV0YWRhdGEuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM5Q0Q0Mzk0MUI0QjAw
MEUwMDIzOUUzMyAvKiBXZWJNZWRpYVNlc3Npb25NZXRhZGF0YS5oICovOyB9OwogCQlDOUNENDM5
RDFCNEIwMjRGMDAyMzlFMzMgLyogV0tNZWRpYVNlc3Npb25NZXRhZGF0YS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzlDRDQzOUExQjRCMDI0MjAwMjM5
RTMzIC8qIFdLTWVkaWFTZXNzaW9uTWV0YWRhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMzIyNCw4ICszMjIxLDYgQEAKIAkJNTE2MEJGRTAx
MzM4MURGOTAwOTE4OTk5IC8qIExvZ2dpbmdGb3VuZGF0aW9uLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gTG9nZ2luZ0ZvdW5kYXRpb24ubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTUxNjRDMDk0MUIwNUI3NTcwMDRGMTAyQSAvKiBDaGlsZFByb2Nl
c3MubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQ2hpbGRQcm9jZXNzLm1lc3Nh
Z2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTZBNEE1QjEyMEEyQ0NEMDBD
MDVCN0YgLyogQVBJRXJyb3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJ
RXJyb3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTE3QTMzQjMxMzBCMzA4QzAw
RjgwQ0I1IC8qIFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUxN0EzM0I0MTMwQjMwOEMwMEY4MENCNSAvKiBXS0Fw
cGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTE3QTUyRDYxRjQzQTlCNjAwRENEQzBBIC8qIFdlYlNXU2VydmVyQ29ubmVjdGlvbk1lc3Nh
Z2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYlNXU2VydmVyQ29ubmVj
dGlvbk1lc3NhZ2VzLmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYlNXU2VydmVy
Q29ubmVjdGlvbk1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07
CiAJCTUxN0E1MkQ3MUY0M0E5QjYwMERDREMwQSAvKiBXZWJTV1NlcnZlckNvbm5lY3Rpb25NZXNz
YWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2Vi
U1dTZXJ2ZXJDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcDsgcGF0aCA9IERlcml2ZWRTb3Vy
Y2VzL1dlYktpdDIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcDsgc291
cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJNTE3QTUzMDIxRjQ3OTNCMjAwRENE
QzBBIC8qIFdlYlNXQ2xpZW50Q29ubmVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXZWJTV0NsaWVudENvbm5lY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTMyNjIsOCArMzI1Nyw2IEBACiAJCTUxQTg0Q0UyMTI3RjM4NkIwMENBNkVBNCAvKiBX
ZWJDb250ZXh0TWVudVByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFdlYkNvbnRleHRNZW51UHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1MUE4QTYxNTE2MjdGM0Y5MDAwRDkwRTkgLyogTmV0d29ya1Byb2Nlc3NNYWMubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBOZXR3b3JrUHJvY2Vzc01hYy5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFBOEE2MTcxNjI3RjVCQjAwMEQ5MEU5IC8q
IE5ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IE5ldHdv
cmtQcm9jZXNzLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MUE5
RTEwODEzMTVDRDE4MDA5RTcwMzEgLyogV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUxQTlFMTA5MTMxNUNEMTgwMDlF
NzAzMSAvKiBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTUxQUJGNjU2MTYzOTJGMTUwMDEzMkE3QSAvKiBXZWJMb2FkZXJTdHJhdGVn
eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBXZWJMb2FkZXJTdHJh
dGVneS5jcHA7IHBhdGggPSBOZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFBQkY2NTcxNjM5MkYxNTAwMTMyQTdBIC8qIFdlYkxvYWRl
clN0cmF0ZWd5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYkxvYWRlclN0
cmF0ZWd5Lmg7IHBhdGggPSBOZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTUxQUNCQjgxMTI3QThCQUQwMEQyMDNCOSAvKiBXZWJDb250ZXh0
TWVudVByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkNvbnRleHRN
ZW51UHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQzNDAsOCArNDMzMyw2
IEBACiAJCUM1RkExRUQyMThFMTA2MjIwMEIzRjQwMiAvKiBXS0FpclBsYXlSb3V0ZVBpY2tlci5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdLQWlyUGxheVJvdXRl
UGlja2VyLm1tOyBwYXRoID0gaW9zL2Zvcm1zL1dLQWlyUGxheVJvdXRlUGlja2VyLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDOThDNDhBMzFCNkZENEMzMDAxNDUxMDMgLyogV2Vi
TWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFdlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUM5OEM0OEE0MUI2RkQ0QzMwMDE0NTEwMyAvKiBXZWJNZWRpYVNlc3Np
b25Gb2N1c01hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViTWVk
aWFTZXNzaW9uRm9jdXNNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUM5
OEM0OEE3MUI2RkQ1QjUwMDE0NTEwMyAvKiBXS01lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXS01lZGlhU2Vzc2lvbkZvY3Vz
TWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUM5OEM0OEE4MUI2RkQ1
QjUwMDE0NTEwMyAvKiBXS01lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXS01lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlDOUMxODMzNzFCNzNGRDZBMDA3MDM2QTcgLyogV2ViTWVk
aWFTZXNzaW9uRm9jdXNNYW5hZ2VyQ2xpZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFdlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlckNsaWVudC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM5QzE4MzM4MUI3M0ZENkEwMDcwMzZBNyAvKiBXZWJN
ZWRpYVNlc3Npb25Gb2N1c01hbmFnZXJDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyQ2xpZW50Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUM5Q0Q0MzkzMUI0QjAwMEUwMDIzOUUzMyAvKiBXZWJNZWRpYVNl
c3Npb25NZXRhZGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBX
ZWJNZWRpYVNlc3Npb25NZXRhZGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC03NTYyLDggKzc1NTMsNiBAQAogCQkJCTZFRTg0OUM0MTM2OEQ5MDQwMDM4RDQ4MSAvKiBtYWMg
Ki8sCiAJCQkJQkNCNjM0NzcxMTZCRjEwNjAwNjAzMjE1IC8qIFdlYktpdDJfQy5oICovLAogCQkJ
CUJDRERCMzJDMTI0RUMyRTEwMDQ4RDEzQyAvKiBXS0FQSUNhc3QuaCAqLywKLQkJCQk1MTdBMzNC
MzEzMEIzMDhDMDBGODBDQjUgLyogV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5jcHAgKi8sCi0J
CQkJNTE3QTMzQjQxMzBCMzA4QzAwRjgwQ0I1IC8qIFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXIu
aCAqLywKIAkJCQk1MTJGNThFRDEyQTg4QTU0MDA2Mjk1MzAgLyogV0tBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZS5jcHAgKi8sCiAJCQkJNTEyRjU4RUUxMkE4OEE1NDAwNjI5NTMwIC8qIFdLQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UuaCAqLywKIAkJCQk1MTJGNThFRjEyQTg4QTU0MDA2Mjk1MzAgLyog
V0tBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXIuY3BwICovLApAQCAtNzYxMiwxMSArNzYw
MSw3IEBACiAJCQkJNTExMEFFMEIxMzNDMTZDQjAwNzI3MTdBIC8qIFdLSWNvbkRhdGFiYXNlLmgg
Ki8sCiAJCQkJMUM4RTI5MzgxMjc2MUU1QjAwQkM3QkQwIC8qIFdLSW5zcGVjdG9yLmNwcCAqLywK
IAkJCQkxQzhFMjkzNzEyNzYxRTVCMDBCQzdCRDAgLyogV0tJbnNwZWN0b3IuaCAqLywKLQkJCQk1
MUE5RTEwODEzMTVDRDE4MDA5RTcwMzEgLyogV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLmNwcCAq
LywKLQkJCQk1MUE5RTEwOTEzMTVDRDE4MDA5RTcwMzEgLyogV0tLZXlWYWx1ZVN0b3JhZ2VNYW5h
Z2VyLmggKi8sCiAJCQkJMkQ3OTBBOUUxQUQ3MTY0OTAwQUI5MEIzIC8qIFdLTGF5b3V0TW9kZS5o
ICovLAotCQkJCUM5OEM0OEE3MUI2RkQ1QjUwMDE0NTEwMyAvKiBXS01lZGlhU2Vzc2lvbkZvY3Vz
TWFuYWdlci5jcHAgKi8sCi0JCQkJQzk4QzQ4QTgxQjZGRDVCNTAwMTQ1MTAzIC8qIFdLTWVkaWFT
ZXNzaW9uRm9jdXNNYW5hZ2VyLmggKi8sCiAJCQkJQzlDRDQzOTkxQjRCMDI0MjAwMjM5RTMzIC8q
IFdLTWVkaWFTZXNzaW9uTWV0YWRhdGEuY3BwICovLAogCQkJCUM5Q0Q0MzlBMUI0QjAyNDIwMDIz
OUUzMyAvKiBXS01lZGlhU2Vzc2lvbk1ldGFkYXRhLmggKi8sCiAJCQkJQzExRTE2OTMyMTJCODdD
NTAwOTg1RkY2IC8qIFdLTW9ja0Rpc3BsYXkuY3BwICovLApAQCAtOTU2MCw3ICs5NTQ1LDYgQEAK
IAkJCQlDNUZBMUVEMzE4RTEwNjIyMDBCM0Y0MDIgLyogV0tBaXJQbGF5Um91dGVQaWNrZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCTJEMTJEQUI1MjA2NjJDNzMwMDZGMDBGQiAvKiBXS0FuaW1hdGlv
bkRlbGVnYXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0REQjMyRDEyNEVDMkUxMDA0OEQxM0Mg
LyogV0tBUElDYXN0LmggaW4gSGVhZGVycyAqLywKLQkJCQk1MTJFMzRFNTEzMEI0RDA1MDBBQkQx
OUEgLyogV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTEz
REM2ODIyMDdBQTZCMjAwNjZFRjcyIC8qIFdLQXBwbGljYXRpb25TdGF0ZVRyYWNraW5nVmlldy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQkM0MDc1RjQxMjRGRjAyNzAwNjhGMjBBIC8qIFdLQXJyYXku
aCBpbiBIZWFkZXJzICovLAogCQkJCTUxMkY1OEY2MTJBODhBNTQwMDYyOTUzMCAvKiBXS0F1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlLmggaW4gSGVhZGVycyAqLywKQEAgLTk3MjMsMTAgKzk3MDcsOCBA
QAogCQkJCUE1QzBGMEFCMjAwMDY1ODIwMDUzNjUzNiAvKiBXS0luc3BlY3RvcldpbmRvdy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQTUxOEI1RDIxRkUxRDU1QjAwRjlGQTI4IC8qIFdLSW5zcGVjdG9y
V0tXZWJWaWV3LmggaW4gSGVhZGVycyAqLywKIAkJCQkyREQ1RTEyOTIxMEFEQzdCMDBEQjYwMTIg
LyogV0tLZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yLmggaW4gSGVhZGVycyAqLywKLQkJCQk1MUE5
RTEwQjEzMTVDRDE4MDA5RTcwMzEgLyogV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkyRDc5MEE5RjFBRDcxNjQ5MDBBQjkwQjMgLyogV0tMYXlvdXRNb2RlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkyREExRTRGRTE4QzAyQjZBMDBEQkM5MjkgLyogV0tMZWdhY3lQ
REZWaWV3LmggaW4gSGVhZGVycyAqLywKLQkJCQlDOThDNDhBQTFCNkZENUI1MDAxNDUxMDMgLyog
V0tNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUM5Q0Q0MzlE
MUI0QjAyNEYwMDIzOUUzMyAvKiBXS01lZGlhU2Vzc2lvbk1ldGFkYXRhLmggaW4gSGVhZGVycyAq
LywKIAkJCQkxQUI0MEVFNjFCRjY3N0UzMDBCQTgxQkUgLyogV0tNZW51SXRlbUlkZW50aWZpZXJz
UHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzExRTE2OTQyMTJCODdDNTAwOTg1RkY2IC8q
IFdLTW9ja0Rpc3BsYXkuaCBpbiBIZWFkZXJzICovLAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>358666</attachid>
            <date>2019-01-08 20:45:53 -0800</date>
            <delta_ts>2019-04-17 11:17:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-193161-20190108204552.patch</filename>
            <type>text/plain</type>
            <size>51299</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzk3NjApCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQxIEBACisyMDE5LTAxLTA4ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVtb3ZlIG9yIGRl
cHJlY2F0ZSB1bnVzZWQgQyBTUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE5MzE2MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEtlZXAgc3R1YnMgbWFya2VkIGFzIGRlcHJlY2F0ZWQgaWYgc2hpcHBpbmcg
U2FmYXJpIGxpbmtzIHdpdGggdGhlbSB0byBrZWVwIG9wZW4gc291cmNlIFdlYktpdCBidWlsZHMg
dXNhYmxlLgorICAgICAgICBNZWRpYSBzZXNzaW9uIGNvZGUgd2lsbCBuZWVkIHRvIGJlIHJlZG9u
ZSBpbiBPYmpDIGJlZm9yZSB3ZSB1c2UgaXQgYW55d2F5cy4KKyAgICAgICAgQXBwbGljYXRpb25D
YWNoZU1hbmFnZXIgYW5kIEtleVZhbHVlU3RvcmVNYW5hZ2VyIHdlcmUganVzdCB1bnVzZWQgd3Jh
cHBlcnMgYXJvdW5kIFdlYnNpdGVEYXRhU3RvcmUuCisKKyAgICAgICAgKiBTaGFyZWQvQVBJL0FQ
SU9iamVjdC5oOgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9XS0Jhc2UuaDoKKyAgICAgICAgKiBT
aGFyZWQvQVBJL2MvV0tEZXByZWNhdGVkRnVuY3Rpb25zLmNwcDoKKyAgICAgICAgKFdLQ29udGV4
dFNldFByb2Nlc3NNb2RlbCk6IERlbGV0ZWQuCisgICAgICAgICogU291cmNlcy50eHQ6CisgICAg
ICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tBUElD
YXN0Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLQXBwbGljYXRpb25DYWNoZU1hbmFn
ZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0FwcGxpY2F0aW9u
Q2FjaGVNYW5hZ2VyLmg6IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLQ29u
dGV4dC5jcHA6CisgICAgICAgIChXS0NvbnRleHRHZXRBcHBsaWNhdGlvbkNhY2hlTWFuYWdlcik6
IERlbGV0ZWQuCisgICAgICAgIChXS0NvbnRleHRHZXRLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyKTog
RGVsZXRlZC4KKyAgICAgICAgKFdLQ29udGV4dEdldE1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlcik6
IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0ljb25EYXRhYmFzZS5jcHA6CisgICAgICAgIChXS0ljb25E
YXRhYmFzZUdldFR5cGVJRCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLSWNvbkRhdGFi
YXNlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLS2V5VmFsdWVTdG9yYWdlTWFuYWdl
ci5jcHA6IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLS2V5VmFsdWVTdG9y
YWdlTWFuYWdlci5oOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS01lZGlh
U2Vzc2lvbkZvY3VzTWFuYWdlci5jcHA6IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9DL1dLTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyLmg6IFJlbW92ZWQuCisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHA6CisgICAgICAgIChXS1dlYnNp
dGVEYXRhU3RvcmVTZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZU5vZGUuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvbWFjL0Rpc3BsYXlMaW5rLmNwcDoKKyAgICAgICAgKiBXZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAxOS0wMS0wOCAgQWxleCBDaHJpc3RlbnNl
biAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEZpeCBDb21wbGV0aW9uSGFu
ZGxlciBhc3NlcnRpb25zIGludHJvZHVjZWQgdG9kYXkuCkluZGV4OiBTb3VyY2UvV2ViS2l0L1Nv
dXJjZXMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU291cmNlcy50eHQJKHJldmlz
aW9uIDIzOTc2MCkKKysrIFNvdXJjZS9XZWJLaXQvU291cmNlcy50eHQJKHdvcmtpbmcgY29weSkK
QEAgLTMwNCw3ICszMDQsNiBAQCBVSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUuY3Bw
CiBVSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVQb2xpY2llcy5jcHAKIFVJUHJvY2Vzcy9BUEkvQVBJ
V2luZG93RmVhdHVyZXMuY3BwCiAKLVVJUHJvY2Vzcy9BUEkvQy9XS0FwcGxpY2F0aW9uQ2FjaGVN
YW5hZ2VyLmNwcAogVUlQcm9jZXNzL0FQSS9DL1dLQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuY3Bw
CiBVSVByb2Nlc3MvQVBJL0MvV0tBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXIuY3BwCiBV
SVByb2Nlc3MvQVBJL0MvV0tCYWNrRm9yd2FyZExpc3RJdGVtUmVmLmNwcApAQCAtMzI1LDcgKzMy
NCw2IEBAIFVJUHJvY2Vzcy9BUEkvQy9XS0dlb2xvY2F0aW9uUG9zaXRpb24uY3AKIFVJUHJvY2Vz
cy9BUEkvQy9XS0hpdFRlc3RSZXN1bHQuY3BwCiBVSVByb2Nlc3MvQVBJL0MvV0tJY29uRGF0YWJh
c2UuY3BwCiBVSVByb2Nlc3MvQVBJL0MvV0tJbnNwZWN0b3IuY3BwCi1VSVByb2Nlc3MvQVBJL0Mv
V0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLmNwcAogVUlQcm9jZXNzL0FQSS9DL1dLTWVkaWFTZXNz
aW9uTWV0YWRhdGEuY3BwCiBVSVByb2Nlc3MvQVBJL0MvV0tNb2NrRGlzcGxheS5jcHAKIFVJUHJv
Y2Vzcy9BUEkvQy9XS01vY2tNZWRpYURldmljZS5jcHAKQEAgLTMzOCw3ICszMzYsNyBAQCBVSVBy
b2Nlc3MvQVBJL0MvV0tOb3RpZmljYXRpb25NYW5hZ2VyLmNwCiBVSVByb2Nlc3MvQVBJL0MvV0tO
b3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdC5jcHAKIFVJUHJvY2Vzcy9BUEkvQy9XS09wZW5Q
YW5lbFBhcmFtZXRlcnNSZWYuY3BwCiBVSVByb2Nlc3MvQVBJL0MvV0tPcGVuUGFuZWxSZXN1bHRM
aXN0ZW5lci5jcHAKLVVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCitVSVByb2Nlc3MvQVBJL0Mv
V0tQYWdlLmNwcCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VDb25maWd1cmF0aW9u
UmVmLmNwcAogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZUdyb3VwLmNwcAogVUlQcm9jZXNzL0FQSS9D
L1dLUHJlZmVyZW5jZXMuY3BwCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CShyZXZpc2lvbiAy
Mzk3NjApCisrKyBTb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQJKHdvcmtpbmcgY29weSkK
QEAgLTIxMyw3ICsyMTMsNiBAQCBVSVByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5h
dG9yCiBVSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRhUmVjb3JkLmNwcAogCiBVSVByb2Nlc3Mv
QVBJL0MvV0tDb250ZXh0TWVudUxpc3RlbmVyLmNwcAotVUlQcm9jZXNzL0FQSS9DL1dLTWVkaWFT
ZXNzaW9uRm9jdXNNYW5hZ2VyLmNwcAogVUlQcm9jZXNzL0FQSS9DL1dLVGVzdGluZ1N1cHBvcnQu
Y3BwCiBVSVByb2Nlc3MvQVBJL0MvV0tVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlUmVmLmNwcAog
VUlQcm9jZXNzL0FQSS9DL1dLVXNlclNjcmlwdFJlZi5jcHAKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
U2hhcmVkL0FQSS9BUElPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJl
ZC9BUEkvQVBJT2JqZWN0LmgJKHJldmlzaW9uIDIzOTc2MCkKKysrIFNvdXJjZS9XZWJLaXQvU2hh
cmVkL0FQSS9BUElPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtOTYsNyArOTYsNiBAQCBwdWJs
aWM6CiAgICAgICAgIFJlY3QsCiAgICAgICAgIAogICAgICAgICAvLyBVSVByb2Nlc3MgdHlwZXMK
LSAgICAgICAgQXBwbGljYXRpb25DYWNoZU1hbmFnZXIsCiAjaWYgRU5BQkxFKEFQUExJQ0FUSU9O
X01BTklGRVNUKQogICAgICAgICBBcHBsaWNhdGlvbk1hbmlmZXN0LAogI2VuZGlmCkBAIC0xMjYs
NyArMTI1LDYgQEAgcHVibGljOgogICAgICAgICBHcmFtbWFyRGV0YWlsLAogICAgICAgICBJY29u
RGF0YWJhc2UsCiAgICAgICAgIEluc3BlY3RvciwKLSAgICAgICAgS2V5VmFsdWVTdG9yYWdlTWFu
YWdlciwKICAgICAgICAgTWVkaWFDYWNoZU1hbmFnZXIsCiAgICAgICAgIE5hdmlnYXRpb24sCiAg
ICAgICAgIE5hdmlnYXRpb25BY3Rpb24sCkBAIC0xNjcsMTEgKzE2NSw2IEBAIHB1YmxpYzoKICAg
ICAgICAgV2Vic2l0ZVBvbGljaWVzLAogICAgICAgICBXaW5kb3dGZWF0dXJlcywKIAotI2lmIEVO
QUJMRShNRURJQV9TRVNTSU9OKQotICAgICAgICBNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIsCi0g
ICAgICAgIE1lZGlhU2Vzc2lvbk1ldGFkYXRhLAotI2VuZGlmCi0KICAgICAgICAgLy8gQnVuZGxl
IHR5cGVzCiAgICAgICAgIEJ1bmRsZSwKICAgICAgICAgQnVuZGxlQmFja0ZvcndhcmRMaXN0LApJ
bmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tCYXNlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tCYXNlLmgJKHJldmlzaW9uIDIzOTc2MCkKKysr
IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLQmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03
OCw3ICs3OCw2IEBAIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLV2ViQXJjaGl2ZVIKIAog
LyogV2ViS2l0MiBtYWluIEFQSSB0eXBlcyAqLwogCi10eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFx
dWVXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyKiBXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyUmVm
OwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSog
V0tBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVJlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1
ZVdLQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyKiBXS0F1dGhlbnRpY2F0aW9uRGVjaXNp
b25MaXN0ZW5lclJlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLQmFja0ZvcndhcmRM
aXN0KiBXS0JhY2tGb3J3YXJkTGlzdFJlZjsKQEAgLTEwMyw4ICsxMDIsNiBAQCB0eXBlZGVmIGNv
bnN0IHN0cnVjdCBPcGFxdWVXS0dyYW1tYXJEZXRhCiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFx
dWVXS0hpdFRlc3RSZXN1bHQqIFdLSGl0VGVzdFJlc3VsdFJlZjsKIHR5cGVkZWYgY29uc3Qgc3Ry
dWN0IE9wYXF1ZVdLSWNvbkRhdGFiYXNlKiBXS0ljb25EYXRhYmFzZVJlZjsKIHR5cGVkZWYgY29u
c3Qgc3RydWN0IE9wYXF1ZVdLSW5zcGVjdG9yKiBXS0luc3BlY3RvclJlZjsKLXR5cGVkZWYgY29u
c3Qgc3RydWN0IE9wYXF1ZVdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlciogV0tLZXlWYWx1ZVN0b3Jh
Z2VNYW5hZ2VyUmVmOwotdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tNZWRpYVNlc3Npb25G
b2N1c01hbmFnZXIqIFdLTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyUmVmOwogdHlwZWRlZiBjb25z
dCBzdHJ1Y3QgT3BhcXVlV0tNZWRpYVNlc3Npb25NZXRhZGF0YSogV0tNZWRpYVNlc3Npb25NZXRh
ZGF0YVJlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLTmF2aWdhdGlvbkFjdGlvbiog
V0tOYXZpZ2F0aW9uQWN0aW9uUmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tOYXZp
Z2F0aW9uRGF0YSogV0tOYXZpZ2F0aW9uRGF0YVJlZjsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hh
cmVkL0FQSS9jL1dLRGVwcmVjYXRlZEZ1bmN0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9TaGFyZWQvQVBJL2MvV0tEZXByZWNhdGVkRnVuY3Rpb25zLmNwcAkocmV2aXNpb24g
MjM5NzYwKQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tEZXByZWNhdGVkRnVuY3Rp
b25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQsMTAgKzQ0LDYgQEAgdm9pZCBXS0NvbnRleHRT
ZXRVc2VzTmV0d29ya1Byb2Nlc3MoV0tDbwogewogfQogCi12b2lkIFdLQ29udGV4dFNldFByb2Nl
c3NNb2RlbChXS0NvbnRleHRSZWYsIFdLUHJvY2Vzc01vZGVsKQotewotfQotCiB2b2lkIFdLUHJl
ZmVyZW5jZXNTZXRRVEtpdEVuYWJsZWQoV0tQcmVmZXJlbmNlc1JlZiwgYm9vbCkKIHsKIH0KSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oCShyZXZpc2lvbiAy
Mzk3NjApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaAkod29y
a2luZyBjb3B5KQpAQCAtOTQsOCArOTQsNiBAQCBjbGFzcyBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQ
cm94eTsKIGNsYXNzIFdlYkdlb2xvY2F0aW9uUG9zaXRpb247CiBjbGFzcyBXZWJJY29uRGF0YWJh
c2U7CiBjbGFzcyBXZWJJbnNwZWN0b3JQcm94eTsKLWNsYXNzIFdlYk1lZGlhU2Vzc2lvbkZvY3Vz
TWFuYWdlcjsKLWNsYXNzIFdlYk1lZGlhU2Vzc2lvbk1ldGFkYXRhOwogY2xhc3MgV2ViTm90aWZp
Y2F0aW9uOwogY2xhc3MgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5OwogY2xhc3MgV2ViTm90
aWZpY2F0aW9uUHJvdmlkZXI7CkBAIC0xMzUsOCArMTMzLDYgQEAgV0tfQUREX0FQSV9NQVBQSU5H
KFdLR2VvbG9jYXRpb25Qb3NpdGlvbgogV0tfQUREX0FQSV9NQVBQSU5HKFdLSGl0VGVzdFJlc3Vs
dFJlZiwgQVBJOjpIaXRUZXN0UmVzdWx0KQogV0tfQUREX0FQSV9NQVBQSU5HKFdLSWNvbkRhdGFi
YXNlUmVmLCBXZWJJY29uRGF0YWJhc2UpCiBXS19BRERfQVBJX01BUFBJTkcoV0tJbnNwZWN0b3JS
ZWYsIFdlYkluc3BlY3RvclByb3h5KQotV0tfQUREX0FQSV9NQVBQSU5HKFdLTWVkaWFTZXNzaW9u
Rm9jdXNNYW5hZ2VyUmVmLCBXZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIpCi1XS19BRERfQVBJ
X01BUFBJTkcoV0tNZWRpYVNlc3Npb25NZXRhZGF0YVJlZiwgV2ViTWVkaWFTZXNzaW9uTWV0YWRh
dGEpCiBXS19BRERfQVBJX01BUFBJTkcoV0tOYXZpZ2F0aW9uQWN0aW9uUmVmLCBBUEk6Ok5hdmln
YXRpb25BY3Rpb24pCiBXS19BRERfQVBJX01BUFBJTkcoV0tOYXZpZ2F0aW9uRGF0YVJlZiwgQVBJ
OjpOYXZpZ2F0aW9uRGF0YSkKIFdLX0FERF9BUElfTUFQUElORyhXS05hdmlnYXRpb25SZWYsIEFQ
STo6TmF2aWdhdGlvbikKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQXBw
bGljYXRpb25DYWNoZU1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9DL1dLQXBwbGljYXRpb25DYWNoZU1hbmFnZXIuY3BwCShyZXZpc2lvbiAyMzk3
NjApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0FwcGxpY2F0aW9uQ2FjaGVN
YW5hZ2VyLmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDY3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5o
IgotCi0jaW5jbHVkZSAiQVBJQXJyYXkuaCIKLSNpbmNsdWRlICJBUElXZWJzaXRlRGF0YVN0b3Jl
LmgiCi0jaW5jbHVkZSAiV0tBUElDYXN0LmgiCi0jaW5jbHVkZSAiV2Vic2l0ZURhdGFSZWNvcmQu
aCIKLQotV0tUeXBlSUQgV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlckdldFR5cGVJRCgpCi17Ci0g
ICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpBUElUeXBlKTsK
LX0KLQotdm9pZCBXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyR2V0QXBwbGljYXRpb25DYWNoZU9y
aWdpbnMoV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlclJlZiBhcHBsaWNhdGlvbkNhY2hlTWFuYWdl
ciwgdm9pZCogY29udGV4dCwgV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlckdldEFwcGxpY2F0aW9u
Q2FjaGVPcmlnaW5zRnVuY3Rpb24gY2FsbGJhY2spCi17Ci0gICAgYXV0byYgd2Vic2l0ZURhdGFT
dG9yZSA9IFdlYktpdDo6dG9JbXBsKHJlaW50ZXJwcmV0X2Nhc3Q8V0tXZWJzaXRlRGF0YVN0b3Jl
UmVmPihhcHBsaWNhdGlvbkNhY2hlTWFuYWdlcikpLT53ZWJzaXRlRGF0YVN0b3JlKCk7Ci0gICAg
d2Vic2l0ZURhdGFTdG9yZS5mZXRjaERhdGEoV2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU6Ok9mZmxp
bmVXZWJBcHBsaWNhdGlvbkNhY2hlLCB7IH0sIFtjb250ZXh0LCBjYWxsYmFja10oYXV0byBkYXRh
UmVjb3JkcykgewotICAgICAgICBWZWN0b3I8UmVmUHRyPEFQSTo6T2JqZWN0Pj4gc2VjdXJpdHlP
cmlnaW5zOwotICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGRhdGFSZWNvcmQgOiBkYXRhUmVjb3Jk
cykgewotICAgICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBvcmlnaW4gOiBkYXRhUmVjb3JkLm9y
aWdpbnMpCi0gICAgICAgICAgICAgICAgc2VjdXJpdHlPcmlnaW5zLmFwcGVuZChBUEk6OlNlY3Vy
aXR5T3JpZ2luOjpjcmVhdGUob3JpZ2luLnNlY3VyaXR5T3JpZ2luKCkpKTsKLSAgICAgICAgfQot
Ci0gICAgICAgIGNhbGxiYWNrKFdlYktpdDo6dG9BUEkoQVBJOjpBcnJheTo6Y3JlYXRlKFdURk1v
dmUoc2VjdXJpdHlPcmlnaW5zKSkucHRyKCkpLCBudWxscHRyLCBjb250ZXh0KTsKLSAgICB9KTsK
LX0KLQotdm9pZCBXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyRGVsZXRlRW50cmllc0Zvck9yaWdp
bihXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyUmVmIGFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLCBX
S1NlY3VyaXR5T3JpZ2luUmVmIG9yaWdpbikKLXsKLSAgICBhdXRvJiB3ZWJzaXRlRGF0YVN0b3Jl
ID0gV2ViS2l0Ojp0b0ltcGwocmVpbnRlcnByZXRfY2FzdDxXS1dlYnNpdGVEYXRhU3RvcmVSZWY+
KGFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyKSktPndlYnNpdGVEYXRhU3RvcmUoKTsKLQotICAgIFdl
YktpdDo6V2Vic2l0ZURhdGFSZWNvcmQgZGF0YVJlY29yZDsKLSAgICBkYXRhUmVjb3JkLmFkZChX
ZWJLaXQ6OldlYnNpdGVEYXRhVHlwZTo6T2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGUsIFdlYktp
dDo6dG9JbXBsKG9yaWdpbiktPnNlY3VyaXR5T3JpZ2luKCkuZGF0YSgpKTsKLQotICAgIHdlYnNp
dGVEYXRhU3RvcmUucmVtb3ZlRGF0YShXZWJLaXQ6OldlYnNpdGVEYXRhVHlwZTo6T2ZmbGluZVdl
YkFwcGxpY2F0aW9uQ2FjaGUsIHsgZGF0YVJlY29yZCB9LCBbXSB7IH0pOwotfQotCi12b2lkIFdL
QXBwbGljYXRpb25DYWNoZU1hbmFnZXJEZWxldGVBbGxFbnRyaWVzKFdLQXBwbGljYXRpb25DYWNo
ZU1hbmFnZXJSZWYgYXBwbGljYXRpb25DYWNoZU1hbmFnZXIpCi17Ci0gICAgYXV0byYgd2Vic2l0
ZURhdGFTdG9yZSA9IFdlYktpdDo6dG9JbXBsKHJlaW50ZXJwcmV0X2Nhc3Q8V0tXZWJzaXRlRGF0
YVN0b3JlUmVmPihhcHBsaWNhdGlvbkNhY2hlTWFuYWdlcikpLT53ZWJzaXRlRGF0YVN0b3JlKCk7
Ci0gICAgd2Vic2l0ZURhdGFTdG9yZS5yZW1vdmVEYXRhKFdlYktpdDo6V2Vic2l0ZURhdGFUeXBl
OjpPZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZSwgLVdhbGxUaW1lOjppbmZpbml0eSgpLCBbXSB7
IH0pOwotfQoKUHJvcGVydHkgY2hhbmdlcyBvbjogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0MvV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5jcHAKX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46
ZW9sLXN0eWxlCiMjIC0xICswLDAgIyMKLW5hdGl2ZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHBy
b3BlcnR5CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0FwcGxpY2F0aW9u
Q2FjaGVNYW5hZ2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0MvV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5oCShyZXZpc2lvbiAyMzk3NjApCisrKyBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmgJKG5v
bmV4aXN0ZW50KQpAQCAtMSw0NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwot
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0g
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBXS0FwcGxp
Y2F0aW9uQ2FjaGVNYW5hZ2VyX2gKLSNkZWZpbmUgV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlcl9o
Ci0KLSNpbmNsdWRlIDxXZWJLaXQvV0tCYXNlLmg+Ci0KLSNpZmRlZiBfX2NwbHVzcGx1cwotZXh0
ZXJuICJDIiB7Ci0jZW5kaWYKLQotV0tfRVhQT1JUIFdLVHlwZUlEIFdLQXBwbGljYXRpb25DYWNo
ZU1hbmFnZXJHZXRUeXBlSUQoKTsKLQotdHlwZWRlZiB2b2lkICgqV0tBcHBsaWNhdGlvbkNhY2hl
TWFuYWdlckdldEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5zRnVuY3Rpb24pKFdLQXJyYXlSZWYsIFdL
RXJyb3JSZWYsIHZvaWQqKTsKLVdLX0VYUE9SVCB2b2lkIFdLQXBwbGljYXRpb25DYWNoZU1hbmFn
ZXJHZXRBcHBsaWNhdGlvbkNhY2hlT3JpZ2lucyhXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyUmVm
IGFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLCB2b2lkKiBjb250ZXh0LCBXS0FwcGxpY2F0aW9uQ2Fj
aGVNYW5hZ2VyR2V0QXBwbGljYXRpb25DYWNoZU9yaWdpbnNGdW5jdGlvbiBmdW5jdGlvbik7Ci0K
LVdLX0VYUE9SVCB2b2lkIFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXJEZWxldGVFbnRyaWVzRm9y
T3JpZ2luKFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXJSZWYgYXBwbGljYXRpb25DYWNoZU1hbmFn
ZXIsIFdLU2VjdXJpdHlPcmlnaW5SZWYgb3JpZ2luKTsKLVdLX0VYUE9SVCB2b2lkIFdLQXBwbGlj
YXRpb25DYWNoZU1hbmFnZXJEZWxldGVBbGxFbnRyaWVzKFdLQXBwbGljYXRpb25DYWNoZU1hbmFn
ZXJSZWYgYXBwbGljYXRpb25DYWNoZU1hbmFnZXIpOwotCi0jaWZkZWYgX19jcGx1c3BsdXMKLX0K
LSNlbmRpZgotCi0jZW5kaWYgLy8gV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlcl9oCgpQcm9wZXJ0
eSBjaGFuZ2VzIG9uOiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0FwcGxpY2F0aW9u
Q2FjaGVNYW5hZ2VyLmgKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46ZW9sLXN0eWxlCiMjIC0xICsw
LDAgIyMKLW5hdGl2ZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAJKHJldmlzaW9uIDIzOTc2
MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQzNywxMSArNDM3LDYgQEAgV0tXZWJzaXRlRGF0YVN0b3JlUmVmIFdLQ29u
dGV4dEdldFdlYnNpdAogICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKGRhdGFTdG9yZSk7CiB9CiAK
LVdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXJSZWYgV0tDb250ZXh0R2V0QXBwbGljYXRpb25DYWNo
ZU1hbmFnZXIoV0tDb250ZXh0UmVmIGNvbnRleHQpCi17Ci0gICAgcmV0dXJuIHJlaW50ZXJwcmV0
X2Nhc3Q8V0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlclJlZj4oV0tDb250ZXh0R2V0V2Vic2l0ZURh
dGFTdG9yZShjb250ZXh0KSk7Ci19Ci0KIFdLR2VvbG9jYXRpb25NYW5hZ2VyUmVmIFdLQ29udGV4
dEdldEdlb2xvY2F0aW9uTWFuYWdlcihXS0NvbnRleHRSZWYgY29udGV4dFJlZikKIHsKICAgICBy
ZXR1cm4gV2ViS2l0Ojp0b0FQSShXZWJLaXQ6OnRvSW1wbChjb250ZXh0UmVmKS0+c3VwcGxlbWVu
dDxXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5PigpKTsKQEAgLTQ1MiwyMSArNDQ3
LDYgQEAgV0tJY29uRGF0YWJhc2VSZWYgV0tDb250ZXh0R2V0SWNvbkRhdGFiYQogICAgIHJldHVy
biBudWxscHRyOwogfQogCi1XS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJSZWYgV0tDb250ZXh0R2V0
S2V5VmFsdWVTdG9yYWdlTWFuYWdlcihXS0NvbnRleHRSZWYgY29udGV4dCkKLXsKLSAgICByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDxXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJSZWY+KFdLQ29udGV4
dEdldFdlYnNpdGVEYXRhU3RvcmUoY29udGV4dCkpOwotfQotCi1XS01lZGlhU2Vzc2lvbkZvY3Vz
TWFuYWdlclJlZiBXS0NvbnRleHRHZXRNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIoV0tDb250ZXh0
UmVmIGNvbnRleHQpCi17Ci0jaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCi0gICAgcmV0dXJuIFdl
YktpdDo6dG9BUEkoV2ViS2l0Ojp0b0ltcGwoY29udGV4dCktPnN1cHBsZW1lbnQ8V2ViS2l0OjpX
ZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXI+KCkpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0o
Y29udGV4dCk7Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci0jZW5kaWYKLX0KLQogV0tOb3RpZmljYXRp
b25NYW5hZ2VyUmVmIFdLQ29udGV4dEdldE5vdGlmaWNhdGlvbk1hbmFnZXIoV0tDb250ZXh0UmVm
IGNvbnRleHRSZWYpCiB7CiAgICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoV2ViS2l0Ojp0b0ltcGwo
Y29udGV4dFJlZiktPnN1cHBsZW1lbnQ8V2ViS2l0OjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJv
eHk+KCkpOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmgJ
KHJldmlzaW9uIDIzOTc2MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29u
dGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjgsOSArMTI4LDYgQEAgV0tfRVhQT1JUIHZvaWQg
V0tDb250ZXh0Q2xlYXJWaXNpdGVkTGluawogV0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0U2V0Q2Fj
aGVNb2RlbChXS0NvbnRleHRSZWYgY29udGV4dCwgV0tDYWNoZU1vZGVsIGNhY2hlTW9kZWwpOwog
V0tfRVhQT1JUIFdLQ2FjaGVNb2RlbCBXS0NvbnRleHRHZXRDYWNoZU1vZGVsKFdLQ29udGV4dFJl
ZiBjb250ZXh0KTsKIAotLy8gRklYTUU6IE1vdmUgdGhlc2UgdG8gV0tEZXByZWNhdGVkRnVuY3Rp
b25zLmNwcCBvbmNlIHN1cHBvcnQgZm9yIE1hdmVyaWNrcyBoYXMgYmVlbiBkcm9wcGVkLgotV0tf
RVhQT1JUIHZvaWQgV0tDb250ZXh0U2V0UHJvY2Vzc01vZGVsKFdLQ29udGV4dFJlZiwgV0tQcm9j
ZXNzTW9kZWwpOwotCiBXS19FWFBPUlQgdm9pZCBXS0NvbnRleHRTZXRNYXhpbXVtTnVtYmVyT2ZQ
cm9jZXNzZXMoV0tDb250ZXh0UmVmIGNvbnRleHQsIHVuc2lnbmVkIG51bWJlck9mUHJvY2Vzc2Vz
KTsKIFdLX0VYUE9SVCB1bnNpZ25lZCBXS0NvbnRleHRHZXRNYXhpbXVtTnVtYmVyT2ZQcm9jZXNz
ZXMoV0tDb250ZXh0UmVmIGNvbnRleHQpOwogCkBAIC0xMzksMTIgKzEzNiw5IEBAIFdLX0VYUE9S
VCB2b2lkIFdLQ29udGV4dFN0b3BNZW1vcnlTYW1wbGUKIAogV0tfRVhQT1JUIFdLV2Vic2l0ZURh
dGFTdG9yZVJlZiBXS0NvbnRleHRHZXRXZWJzaXRlRGF0YVN0b3JlKFdLQ29udGV4dFJlZiBjb250
ZXh0KTsKIAotV0tfRVhQT1JUIFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXJSZWYgV0tDb250ZXh0
R2V0QXBwbGljYXRpb25DYWNoZU1hbmFnZXIoV0tDb250ZXh0UmVmIGNvbnRleHQpOwogV0tfRVhQ
T1JUIFdLQ29va2llTWFuYWdlclJlZiBXS0NvbnRleHRHZXRDb29raWVNYW5hZ2VyKFdLQ29udGV4
dFJlZiBjb250ZXh0KTsKIFdLX0VYUE9SVCBXS0dlb2xvY2F0aW9uTWFuYWdlclJlZiBXS0NvbnRl
eHRHZXRHZW9sb2NhdGlvbk1hbmFnZXIoV0tDb250ZXh0UmVmIGNvbnRleHQpOwotV0tfRVhQT1JU
IFdLSWNvbkRhdGFiYXNlUmVmIFdLQ29udGV4dEdldEljb25EYXRhYmFzZShXS0NvbnRleHRSZWYg
Y29udGV4dCk7Ci1XS19FWFBPUlQgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyUmVmIFdLQ29udGV4
dEdldEtleVZhbHVlU3RvcmFnZU1hbmFnZXIoV0tDb250ZXh0UmVmIGNvbnRleHQpOwotV0tfRVhQ
T1JUIFdLTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyUmVmIFdLQ29udGV4dEdldE1lZGlhU2Vzc2lv
bkZvY3VzTWFuYWdlcihXS0NvbnRleHRSZWYgY29udGV4dCk7CitXS19FWFBPUlQgV0tJY29uRGF0
YWJhc2VSZWYgV0tDb250ZXh0R2V0SWNvbkRhdGFiYXNlKFdLQ29udGV4dFJlZiBjb250ZXh0KSBX
S19DX0FQSV9ERVBSRUNBVEVEOwogV0tfRVhQT1JUIFdLTm90aWZpY2F0aW9uTWFuYWdlclJlZiBX
S0NvbnRleHRHZXROb3RpZmljYXRpb25NYW5hZ2VyKFdLQ29udGV4dFJlZiBjb250ZXh0KTsKIFdL
X0VYUE9SVCBXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyUmVmIFdLQ29udGV4dEdldFJlc291cmNlQ2Fj
aGVNYW5hZ2VyKFdLQ29udGV4dFJlZiBjb250ZXh0KTsKIApJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0MvV0tJY29uRGF0YWJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLSWNvbkRhdGFiYXNlLmNwcAkocmV2aXNpb24gMjM5NzYw
KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tJY29uRGF0YWJhc2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAK
IFdLVHlwZUlEIFdLSWNvbkRhdGFiYXNlR2V0VHlwZUlEKCkKIHsKLSAgICByZXR1cm4gdG9BUEko
V2ViSWNvbkRhdGFiYXNlOjpBUElUeXBlKTsKKyAgICByZXR1cm4gMDsKIH0KIAogdm9pZCBXS0lj
b25EYXRhYmFzZVNldEljb25EYXRhYmFzZUNsaWVudChXS0ljb25EYXRhYmFzZVJlZiwgY29uc3Qg
V0tJY29uRGF0YWJhc2VDbGllbnRCYXNlKikKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9DL1dLSWNvbkRhdGFiYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tJY29uRGF0YWJhc2UuaAkocmV2aXNpb24gMjM5NzYwKQorKysgU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tJY29uRGF0YWJhc2UuaAkod29ya2luZyBjb3B5KQpA
QCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBXS0ljb25EYXRhYmFzZV9oCiAKICNpbmNsdWRlIDxX
ZWJLaXQvV0tCYXNlLmg+CisjaW5jbHVkZSA8V2ViS2l0L1dLRGVwcmVjYXRlZC5oPgogCiAjaWZk
ZWYgX19jcGx1c3BsdXMKIGV4dGVybiAiQyIgewpAQCAtNjEsMjMgKzYyLDIzIEBAIHR5cGVkZWYg
c3RydWN0IFdLSWNvbkRhdGFiYXNlQ2xpZW50VjEgewogICAgIFdLSWNvbkRhdGFiYXNlSWNvbkRh
dGFSZWFkeUZvclBhZ2VVUkxDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgaWNvbkRhdGFS
ZWFkeUZvclBhZ2VVUkw7CiB9IFdLSWNvbkRhdGFiYXNlQ2xpZW50VjE7CiAKLVdLX0VYUE9SVCBX
S1R5cGVJRCBXS0ljb25EYXRhYmFzZUdldFR5cGVJRCgpOworV0tfRVhQT1JUIFdLVHlwZUlEIFdL
SWNvbkRhdGFiYXNlR2V0VHlwZUlEKCkgV0tfQ19BUElfREVQUkVDQVRFRDsKIAotV0tfRVhQT1JU
IHZvaWQgV0tJY29uRGF0YWJhc2VTZXRJY29uRGF0YWJhc2VDbGllbnQoV0tJY29uRGF0YWJhc2VS
ZWYgaWNvbkRhdGFiYXNlLCBjb25zdCBXS0ljb25EYXRhYmFzZUNsaWVudEJhc2UqIGNsaWVudCk7
CitXS19FWFBPUlQgdm9pZCBXS0ljb25EYXRhYmFzZVNldEljb25EYXRhYmFzZUNsaWVudChXS0lj
b25EYXRhYmFzZVJlZiBpY29uRGF0YWJhc2UsIGNvbnN0IFdLSWNvbkRhdGFiYXNlQ2xpZW50QmFz
ZSogY2xpZW50KSBXS19DX0FQSV9ERVBSRUNBVEVEOwogCi1XS19FWFBPUlQgdm9pZCBXS0ljb25E
YXRhYmFzZVJldGFpbkljb25Gb3JVUkwoV0tJY29uRGF0YWJhc2VSZWYgaWNvbkRhdGFiYXNlLCBX
S1VSTFJlZiBwYWdlVVJMKTsKLVdLX0VYUE9SVCB2b2lkIFdLSWNvbkRhdGFiYXNlUmVsZWFzZUlj
b25Gb3JVUkwoV0tJY29uRGF0YWJhc2VSZWYgaWNvbkRhdGFiYXNlLCBXS1VSTFJlZiBwYWdlVVJM
KTsKLVdLX0VYUE9SVCB2b2lkIFdLSWNvbkRhdGFiYXNlU2V0SWNvbkRhdGFGb3JJY29uVVJMKFdL
SWNvbkRhdGFiYXNlUmVmIGljb25EYXRhYmFzZSwgV0tEYXRhUmVmIGljb25EYXRhLCBXS1VSTFJl
ZiBpY29uVVJMKTsKLVdLX0VYUE9SVCB2b2lkIFdLSWNvbkRhdGFiYXNlU2V0SWNvblVSTEZvclBh
Z2VVUkwoV0tJY29uRGF0YWJhc2VSZWYgaWNvbkRhdGFiYXNlLCBXS1VSTFJlZiBpY29uVVJMLCBX
S1VSTFJlZiBwYWdlVVJMKTsKLVdLX0VYUE9SVCBXS1VSTFJlZiBXS0ljb25EYXRhYmFzZUNvcHlJ
Y29uVVJMRm9yUGFnZVVSTChXS0ljb25EYXRhYmFzZVJlZiBpY29uRGF0YWJhc2UsIFdLVVJMUmVm
IHBhZ2VVUkwpOwotV0tfRVhQT1JUIFdLRGF0YVJlZiBXS0ljb25EYXRhYmFzZUNvcHlJY29uRGF0
YUZvclBhZ2VVUkwoV0tJY29uRGF0YWJhc2VSZWYgaWNvbkRhdGFiYXNlLCBXS1VSTFJlZiBwYWdl
VVJMKTsKK1dLX0VYUE9SVCB2b2lkIFdLSWNvbkRhdGFiYXNlUmV0YWluSWNvbkZvclVSTChXS0lj
b25EYXRhYmFzZVJlZiBpY29uRGF0YWJhc2UsIFdLVVJMUmVmIHBhZ2VVUkwpIFdLX0NfQVBJX0RF
UFJFQ0FURUQ7CitXS19FWFBPUlQgdm9pZCBXS0ljb25EYXRhYmFzZVJlbGVhc2VJY29uRm9yVVJM
KFdLSWNvbkRhdGFiYXNlUmVmIGljb25EYXRhYmFzZSwgV0tVUkxSZWYgcGFnZVVSTCkgV0tfQ19B
UElfREVQUkVDQVRFRDsKK1dLX0VYUE9SVCB2b2lkIFdLSWNvbkRhdGFiYXNlU2V0SWNvbkRhdGFG
b3JJY29uVVJMKFdLSWNvbkRhdGFiYXNlUmVmIGljb25EYXRhYmFzZSwgV0tEYXRhUmVmIGljb25E
YXRhLCBXS1VSTFJlZiBpY29uVVJMKSBXS19DX0FQSV9ERVBSRUNBVEVEOworV0tfRVhQT1JUIHZv
aWQgV0tJY29uRGF0YWJhc2VTZXRJY29uVVJMRm9yUGFnZVVSTChXS0ljb25EYXRhYmFzZVJlZiBp
Y29uRGF0YWJhc2UsIFdLVVJMUmVmIGljb25VUkwsIFdLVVJMUmVmIHBhZ2VVUkwpIFdLX0NfQVBJ
X0RFUFJFQ0FURUQ7CitXS19FWFBPUlQgV0tVUkxSZWYgV0tJY29uRGF0YWJhc2VDb3B5SWNvblVS
TEZvclBhZ2VVUkwoV0tJY29uRGF0YWJhc2VSZWYgaWNvbkRhdGFiYXNlLCBXS1VSTFJlZiBwYWdl
VVJMKSBXS19DX0FQSV9ERVBSRUNBVEVEOworV0tfRVhQT1JUIFdLRGF0YVJlZiBXS0ljb25EYXRh
YmFzZUNvcHlJY29uRGF0YUZvclBhZ2VVUkwoV0tJY29uRGF0YWJhc2VSZWYgaWNvbkRhdGFiYXNl
LCBXS1VSTFJlZiBwYWdlVVJMKSBXS19DX0FQSV9ERVBSRUNBVEVEOwogCi1XS19FWFBPUlQgdm9p
ZCBXS0ljb25EYXRhYmFzZUVuYWJsZURhdGFiYXNlQ2xlYW51cChXS0ljb25EYXRhYmFzZVJlZiBp
Y29uRGF0YWJhc2UpOworV0tfRVhQT1JUIHZvaWQgV0tJY29uRGF0YWJhc2VFbmFibGVEYXRhYmFz
ZUNsZWFudXAoV0tJY29uRGF0YWJhc2VSZWYgaWNvbkRhdGFiYXNlKSBXS19DX0FQSV9ERVBSRUNB
VEVEOwogCi1XS19FWFBPUlQgdm9pZCBXS0ljb25EYXRhYmFzZVJlbW92ZUFsbEljb25zKFdLSWNv
bkRhdGFiYXNlUmVmIGljb25EYXRhYmFzZSk7Ci1XS19FWFBPUlQgdm9pZCBXS0ljb25EYXRhYmFz
ZUNoZWNrSW50ZWdyaXR5QmVmb3JlT3BlbmluZyhXS0ljb25EYXRhYmFzZVJlZiBpY29uRGF0YWJh
c2UpOworV0tfRVhQT1JUIHZvaWQgV0tJY29uRGF0YWJhc2VSZW1vdmVBbGxJY29ucyhXS0ljb25E
YXRhYmFzZVJlZiBpY29uRGF0YWJhc2UpIFdLX0NfQVBJX0RFUFJFQ0FURUQ7CitXS19FWFBPUlQg
dm9pZCBXS0ljb25EYXRhYmFzZUNoZWNrSW50ZWdyaXR5QmVmb3JlT3BlbmluZyhXS0ljb25EYXRh
YmFzZVJlZiBpY29uRGF0YWJhc2UpIFdLX0NfQVBJX0RFUFJFQ0FURUQ7CiAKLVdLX0VYUE9SVCB2
b2lkIFdLSWNvbkRhdGFiYXNlQ2xvc2UoV0tJY29uRGF0YWJhc2VSZWYgaWNvbkRhdGFiYXNlKTsK
K1dLX0VYUE9SVCB2b2lkIFdLSWNvbkRhdGFiYXNlQ2xvc2UoV0tJY29uRGF0YWJhc2VSZWYgaWNv
bkRhdGFiYXNlKSBXS19DX0FQSV9ERVBSRUNBVEVEOwogCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0K
SW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLS2V5VmFsdWVTdG9yYWdlTWFu
YWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tL
ZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLmNwcAkocmV2aXNpb24gMjM5NzYwKQorKysgU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0MvV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLmNwcAkobm9uZXhp
c3RlbnQpCkBAIC0xLDEzMiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5o
IgotI2luY2x1ZGUgIldLS2V5VmFsdWVTdG9yYWdlTWFuYWdlci5oIgotCi0jaW5jbHVkZSAiQVBJ
QXJyYXkuaCIKLSNpbmNsdWRlICJBUElEaWN0aW9uYXJ5LmgiCi0jaW5jbHVkZSAiQVBJV2Vic2l0
ZURhdGFTdG9yZS5oIgotI2luY2x1ZGUgIlN0b3JhZ2VNYW5hZ2VyLmgiCi0jaW5jbHVkZSAiV0tB
UElDYXN0LmgiCi0jaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZS5oIgotI2luY2x1ZGUgPHd0Zi9S
dW5Mb29wLmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Ci0KLVdLVHlwZUlEIFdLS2V5VmFs
dWVTdG9yYWdlTWFuYWdlckdldFR5cGVJRCgpCi17Ci0gICAgcmV0dXJuIHRvQVBJKEFQSTo6V2Vi
c2l0ZURhdGFTdG9yZTo6QVBJVHlwZSk7Ci19Ci0KLVdLU3RyaW5nUmVmIFdLS2V5VmFsdWVTdG9y
YWdlTWFuYWdlckdldE9yaWdpbktleSgpCi17Ci0gICAgc3RhdGljIEFQSTo6U3RyaW5nJiBrZXkg
PSBBUEk6OlN0cmluZzo6Y3JlYXRlKCJXZWJLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyU3RvcmFnZURl
dGFpbHNPcmlnaW5LZXkiKS5sZWFrUmVmKCk7Ci0gICAgcmV0dXJuIHRvQVBJKCZrZXkpOwotfQot
Ci1XS1N0cmluZ1JlZiBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRDcmVhdGlvblRpbWVLZXko
KQotewotICAgIHN0YXRpYyBBUEk6OlN0cmluZyYga2V5ID0gQVBJOjpTdHJpbmc6OmNyZWF0ZSgi
V2ViS2V5VmFsdWVTdG9yYWdlTWFuYWdlclN0b3JhZ2VEZXRhaWxzQ3JlYXRpb25UaW1lS2V5Iiku
bGVha1JlZigpOwotICAgIHJldHVybiB0b0FQSSgma2V5KTsKLX0KLQotV0tTdHJpbmdSZWYgV0tL
ZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0TW9kaWZpY2F0aW9uVGltZUtleSgpCi17Ci0gICAgc3Rh
dGljIEFQSTo6U3RyaW5nJiBrZXkgPSBBUEk6OlN0cmluZzo6Y3JlYXRlKCJXZWJLZXlWYWx1ZVN0
b3JhZ2VNYW5hZ2VyU3RvcmFnZURldGFpbHNNb2RpZmljYXRpb25UaW1lS2V5IikubGVha1JlZigp
OwotICAgIHJldHVybiB0b0FQSSgma2V5KTsKLX0KLQotdm9pZCBXS0tleVZhbHVlU3RvcmFnZU1h
bmFnZXJHZXRLZXlWYWx1ZVN0b3JhZ2VPcmlnaW5zKFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlclJl
ZiBrZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLCB2b2lkKiBjb250ZXh0LCBXS0tleVZhbHVlU3RvcmFn
ZU1hbmFnZXJHZXRLZXlWYWx1ZVN0b3JhZ2VPcmlnaW5zRnVuY3Rpb24gY2FsbGJhY2spCi0KLXsK
LSAgICBTdG9yYWdlTWFuYWdlciogc3RvcmFnZU1hbmFnZXIgPSB0b0ltcGwocmVpbnRlcnByZXRf
Y2FzdDxXS1dlYnNpdGVEYXRhU3RvcmVSZWY+KGtleVZhbHVlU3RvcmFnZU1hbmFnZXIpKS0+d2Vi
c2l0ZURhdGFTdG9yZSgpLnN0b3JhZ2VNYW5hZ2VyKCk7Ci0gICAgaWYgKCFzdG9yYWdlTWFuYWdl
cikgewotICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2NvbnRleHQsIGNhbGxiYWNr
XSB7Ci0gICAgICAgICAgICBjYWxsYmFjayh0b0FQSShBUEk6OkFycmF5OjpjcmVhdGUoKS5wdHIo
KSksIG51bGxwdHIsIGNvbnRleHQpOwotICAgICAgICB9KTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQotICAgIHN0b3JhZ2VNYW5hZ2VyLT5nZXRMb2NhbFN0b3JhZ2VPcmlnaW5zKFtjb250ZXh0
LCBjYWxsYmFja10oYXV0byYmIHNlY3VyaXR5T3JpZ2lucykgewotICAgICAgICBWZWN0b3I8UmVm
UHRyPEFQSTo6T2JqZWN0Pj4gd2ViU2VjdXJpdHlPcmlnaW5zOwotICAgICAgICB3ZWJTZWN1cml0
eU9yaWdpbnMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShzZWN1cml0eU9yaWdpbnMuc2l6ZSgpKTsK
LSAgICAgICAgZm9yIChhdXRvJiBvcmlnaW4gOiBzZWN1cml0eU9yaWdpbnMpCi0gICAgICAgICAg
ICB3ZWJTZWN1cml0eU9yaWdpbnMudW5jaGVja2VkQXBwZW5kKEFQSTo6U2VjdXJpdHlPcmlnaW46
OmNyZWF0ZShvcmlnaW4uc2VjdXJpdHlPcmlnaW4oKSkpOwotCi0gICAgICAgIGNhbGxiYWNrKHRv
QVBJKEFQSTo6QXJyYXk6OmNyZWF0ZShXVEZNb3ZlKHdlYlNlY3VyaXR5T3JpZ2lucykpLnB0cigp
KSwgbnVsbHB0ciwgY29udGV4dCk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgV0tLZXlWYWx1ZVN0b3Jh
Z2VNYW5hZ2VyR2V0U3RvcmFnZURldGFpbHNCeU9yaWdpbihXS0tleVZhbHVlU3RvcmFnZU1hbmFn
ZXJSZWYga2V5VmFsdWVTdG9yYWdlTWFuYWdlciwgdm9pZCogY29udGV4dCwgV0tLZXlWYWx1ZVN0
b3JhZ2VNYW5hZ2VyR2V0U3RvcmFnZURldGFpbHNCeU9yaWdpbkZ1bmN0aW9uIGNhbGxiYWNrKQot
ewotICAgIFN0b3JhZ2VNYW5hZ2VyKiBzdG9yYWdlTWFuYWdlciA9IHRvSW1wbChyZWludGVycHJl
dF9jYXN0PFdLV2Vic2l0ZURhdGFTdG9yZVJlZj4oa2V5VmFsdWVTdG9yYWdlTWFuYWdlcikpLT53
ZWJzaXRlRGF0YVN0b3JlKCkuc3RvcmFnZU1hbmFnZXIoKTsKLSAgICBpZiAoIXN0b3JhZ2VNYW5h
Z2VyKSB7Ci0gICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbY29udGV4dCwgY2FsbGJh
Y2tdIHsKLSAgICAgICAgICAgIGNhbGxiYWNrKHRvQVBJKEFQSTo6QXJyYXk6OmNyZWF0ZSgpLnB0
cigpKSwgbnVsbHB0ciwgY29udGV4dCk7Ci0gICAgICAgIH0pOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotCi0gICAgc3RvcmFnZU1hbmFnZXItPmdldExvY2FsU3RvcmFnZU9yaWdpbkRldGFpbHMo
W2NvbnRleHQsIGNhbGxiYWNrXShhdXRvIHN0b3JhZ2VEZXRhaWxzKSB7Ci0gICAgICAgIEhhc2hN
YXA8U3RyaW5nLCBSZWZQdHI8QVBJOjpPYmplY3Q+PiBkZXRhaWxzTWFwOwotICAgICAgICBWZWN0
b3I8UmVmUHRyPEFQSTo6T2JqZWN0Pj4gcmVzdWx0OwotICAgICAgICByZXN1bHQucmVzZXJ2ZUlu
aXRpYWxDYXBhY2l0eShzdG9yYWdlRGV0YWlscy5zaXplKCkpOwotCi0gICAgICAgIGZvciAoY29u
c3QgYXV0byYgb3JpZ2luRGV0YWlscyA6IHN0b3JhZ2VEZXRhaWxzKSB7Ci0gICAgICAgICAgICBI
YXNoTWFwPFN0cmluZywgUmVmUHRyPEFQSTo6T2JqZWN0Pj4gZGV0YWlsc01hcDsKLQotICAgICAg
ICAgICAgUmVmUHRyPEFQSTo6T2JqZWN0PiBvcmlnaW4gPSBBUEk6OlNlY3VyaXR5T3JpZ2luOjpj
cmVhdGUoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRGF0YWJhc2VJZGVudGlmaWVy
KG9yaWdpbkRldGFpbHMub3JpZ2luSWRlbnRpZmllciktPnNlY3VyaXR5T3JpZ2luKCkpOwotCi0g
ICAgICAgICAgICBkZXRhaWxzTWFwLnNldCh0b0ltcGwoV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2Vy
R2V0T3JpZ2luS2V5KCkpLT5zdHJpbmcoKSwgb3JpZ2luKTsKLSAgICAgICAgICAgIGlmIChvcmln
aW5EZXRhaWxzLmNyZWF0aW9uVGltZSkKLSAgICAgICAgICAgICAgICBkZXRhaWxzTWFwLnNldCh0
b0ltcGwoV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0Q3JlYXRpb25UaW1lS2V5KCkpLT5zdHJp
bmcoKSwgQVBJOjpEb3VibGU6OmNyZWF0ZShvcmlnaW5EZXRhaWxzLmNyZWF0aW9uVGltZS0+c2Vj
b25kc1NpbmNlRXBvY2goKS52YWx1ZSgpKSk7Ci0gICAgICAgICAgICBpZiAob3JpZ2luRGV0YWls
cy5tb2RpZmljYXRpb25UaW1lKQotICAgICAgICAgICAgICAgIGRldGFpbHNNYXAuc2V0KHRvSW1w
bChXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRNb2RpZmljYXRpb25UaW1lS2V5KCkpLT5zdHJp
bmcoKSwgQVBJOjpEb3VibGU6OmNyZWF0ZShvcmlnaW5EZXRhaWxzLm1vZGlmaWNhdGlvblRpbWUt
PnNlY29uZHNTaW5jZUVwb2NoKCkudmFsdWUoKSkpOwotCi0gICAgICAgICAgICByZXN1bHQudW5j
aGVja2VkQXBwZW5kKEFQSTo6RGljdGlvbmFyeTo6Y3JlYXRlKFdURk1vdmUoZGV0YWlsc01hcCkp
KTsKLSAgICAgICAgfQotCi0gICAgICAgIGNhbGxiYWNrKHRvQVBJKEFQSTo6QXJyYXk6OmNyZWF0
ZShXVEZNb3ZlKHJlc3VsdCkpLnB0cigpKSwgbnVsbHB0ciwgY29udGV4dCk7Ci0gICAgfSk7Ci19
Ci0KLXZvaWQgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyRGVsZXRlRW50cmllc0Zvck9yaWdpbihX
S0tleVZhbHVlU3RvcmFnZU1hbmFnZXJSZWYga2V5VmFsdWVTdG9yYWdlTWFuYWdlciwgV0tTZWN1
cml0eU9yaWdpblJlZiBvcmlnaW4pCi17Ci0gICAgU3RvcmFnZU1hbmFnZXIqIHN0b3JhZ2VNYW5h
Z2VyID0gdG9JbXBsKHJlaW50ZXJwcmV0X2Nhc3Q8V0tXZWJzaXRlRGF0YVN0b3JlUmVmPihrZXlW
YWx1ZVN0b3JhZ2VNYW5hZ2VyKSktPndlYnNpdGVEYXRhU3RvcmUoKS5zdG9yYWdlTWFuYWdlcigp
OwotICAgIGlmICghc3RvcmFnZU1hbmFnZXIpCi0gICAgICAgIHJldHVybjsKLQotICAgIHN0b3Jh
Z2VNYW5hZ2VyLT5kZWxldGVMb2NhbFN0b3JhZ2VFbnRyaWVzRm9yT3JpZ2luKHRvSW1wbChvcmln
aW4pLT5zZWN1cml0eU9yaWdpbigpLmRhdGEoKSk7Ci19Ci0KLXZvaWQgV0tLZXlWYWx1ZVN0b3Jh
Z2VNYW5hZ2VyRGVsZXRlQWxsRW50cmllcyhXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJSZWYga2V5
VmFsdWVTdG9yYWdlTWFuYWdlcikKLXsKLSAgICBTdG9yYWdlTWFuYWdlciogc3RvcmFnZU1hbmFn
ZXIgPSB0b0ltcGwocmVpbnRlcnByZXRfY2FzdDxXS1dlYnNpdGVEYXRhU3RvcmVSZWY+KGtleVZh
bHVlU3RvcmFnZU1hbmFnZXIpKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnN0b3JhZ2VNYW5hZ2VyKCk7
Ci0gICAgaWYgKCFzdG9yYWdlTWFuYWdlcikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgc3RvcmFn
ZU1hbmFnZXItPmRlbGV0ZUxvY2FsU3RvcmFnZU9yaWdpbnNNb2RpZmllZFNpbmNlKC1XYWxsVGlt
ZTo6aW5maW5pdHkoKSwgW10geyB9KTsKLX0KClByb3BlcnR5IGNoYW5nZXMgb246IFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLS2V5VmFsdWVTdG9yYWdlTWFuYWdlci5jcHAKX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fXwpEZWxldGVkOiBzdm46ZW9sLXN0eWxlCiMjIC0xICswLDAgIyMKLW5hdGl2ZQpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQy9XS0tleVZhbHVlU3RvcmFnZU1hbmFnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0tleVZhbHVlU3RvcmFnZU1hbmFnZXIuaAkocmV2aXNpb24g
MjM5NzYwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tLZXlWYWx1ZVN0b3Jh
Z2VNYW5hZ2VyLmgJKG5vbmV4aXN0ZW50KQpAQCAtMSw1OSArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I2lmbmRlZiBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJfaAotI2RlZmluZSBXS0tleVZhbHVlU3Rv
cmFnZU1hbmFnZXJfaAotCi0jaW5jbHVkZSA8V2ViS2l0L1dLQmFzZS5oPgotCi0jaWZkZWYgX19j
cGx1c3BsdXMKLWV4dGVybiAiQyIgewotI2VuZGlmCi0KLVdLX0VYUE9SVCBXS1R5cGVJRCBXS0tl
eVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRUeXBlSUQoKTsKLQotLyogVmFsdWUgdHlwZTogV0tTZWN1
cml0eU9yaWdpblJlZiAqLwotV0tfRVhQT1JUIFdLU3RyaW5nUmVmIFdLS2V5VmFsdWVTdG9yYWdl
TWFuYWdlckdldE9yaWdpbktleSgpOwotCi0vKiBWYWx1ZSB0eXBlOiBXS0RvdWJsZVJlZiwgc2Vj
b25kcyBzaW5jZSBKYW51YXJ5IDFzdCwgMTk3MCBVVEMgKi8KLVdLX0VYUE9SVCBXS1N0cmluZ1Jl
ZiBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRDcmVhdGlvblRpbWVLZXkoKTsKLQotLyogVmFs
dWUgdHlwZTogV0tEb3VibGVSZWYsIHNlY29uZHMgc2luY2UgSmFudWFyeSAxc3QsIDE5NzAgVVRD
ICovCi1XS19FWFBPUlQgV0tTdHJpbmdSZWYgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0TW9k
aWZpY2F0aW9uVGltZUtleSgpOwotCi10eXBlZGVmIHZvaWQgKCpXS0tleVZhbHVlU3RvcmFnZU1h
bmFnZXJHZXRLZXlWYWx1ZVN0b3JhZ2VPcmlnaW5zRnVuY3Rpb24pKFdLQXJyYXlSZWYsIFdLRXJy
b3JSZWYsIHZvaWQqKTsKLVdLX0VYUE9SVCB2b2lkIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdl
dEtleVZhbHVlU3RvcmFnZU9yaWdpbnMoV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyUmVmIGtleVZh
bHVlU3RvcmFnZU1hbmFnZXIsIHZvaWQqIGNvbnRleHQsIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdl
ckdldEtleVZhbHVlU3RvcmFnZU9yaWdpbnNGdW5jdGlvbiBmdW5jdGlvbik7Ci0KLXR5cGVkZWYg
dm9pZCAoKldLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldFN0b3JhZ2VEZXRhaWxzQnlPcmlnaW5G
dW5jdGlvbikoV0tBcnJheVJlZiwgV0tFcnJvclJlZiwgdm9pZCopOwotV0tfRVhQT1JUIHZvaWQg
V0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0U3RvcmFnZURldGFpbHNCeU9yaWdpbihXS0tleVZh
bHVlU3RvcmFnZU1hbmFnZXJSZWYga2V5VmFsdWVTdG9yYWdlTWFuYWdlciwgdm9pZCogY29udGV4
dCwgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0U3RvcmFnZURldGFpbHNCeU9yaWdpbkZ1bmN0
aW9uIGZ1bmN0aW9uKTsKLQotV0tfRVhQT1JUIHZvaWQgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2Vy
RGVsZXRlRW50cmllc0Zvck9yaWdpbihXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJSZWYga2V5VmFs
dWVTdG9yYWdlTWFuYWdlciwgV0tTZWN1cml0eU9yaWdpblJlZiBvcmlnaW4pOwotV0tfRVhQT1JU
IHZvaWQgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyRGVsZXRlQWxsRW50cmllcyhXS0tleVZhbHVl
U3RvcmFnZU1hbmFnZXJSZWYga2V5VmFsdWVTdG9yYWdlTWFuYWdlcik7Ci0KLSNpZmRlZiBfX2Nw
bHVzcGx1cwotfQotI2VuZGlmCi0KLSNlbmRpZiAvLyBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJf
aAoKUHJvcGVydHkgY2hhbmdlcyBvbjogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tL
ZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLmgKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46ZW9sLXN0eWxl
CiMjIC0xICswLDAgIyMKLW5hdGl2ZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS01lZGlhU2Vzc2lvbkZvY3VzTWFu
YWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tN
ZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIuY3BwCShyZXZpc2lvbiAyMzk3NjApCisrKyBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS01lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlci5jcHAJKG5v
bmV4aXN0ZW50KQpAQCAtMSw3MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwot
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0g
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZp
Zy5oIgotI2luY2x1ZGUgIldLTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyLmgiCi0KLSNpbmNsdWRl
ICJXS0FQSUNhc3QuaCIKLSNpbmNsdWRlICJXZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIuaCIK
LQotdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKLQotV0tUeXBlSUQgV0tNZWRpYVNlc3Npb25Gb2N1
c01hbmFnZXJHZXRUeXBlSUQoKQotewotI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQotICAgIHJl
dHVybiB0b0FQSShXZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXI6OkFQSVR5cGUpOwotI2Vsc2UK
LSAgICByZXR1cm4gdG9BUEkoQVBJOjpPYmplY3Q6OlR5cGU6Ok51bGwpOwotI2VuZGlmCi19Ci0K
LXZvaWQgV0tNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXJTZXRDbGllbnQoV0tNZWRpYVNlc3Npb25G
b2N1c01hbmFnZXJSZWYgbWFuYWdlciwgY29uc3QgV0tNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXJD
bGllbnRCYXNlKiBjbGllbnQpCi17Ci0jaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCi0gICAgdG9J
bXBsKG1hbmFnZXIpLT5pbml0aWFsaXplQ2xpZW50KGNsaWVudCk7Ci0jZWxzZQotICAgIFVOVVNF
RF9QQVJBTShtYW5hZ2VyKTsKLSAgICBVTlVTRURfUEFSQU0oY2xpZW50KTsKLSNlbmRpZgotfQot
Ci1ib29sIFdLTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyVmFsdWVGb3JQbGF5YmFja0F0dHJpYnV0
ZShXS01lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlclJlZiBtYW5hZ2VyLCBXS01lZGlhU2Vzc2lvbkZv
Y3VzTWFuYWdlclBsYXliYWNrQXR0cmlidXRlIGF0dHJpYnV0ZSkKLXsKLSNpZiBFTkFCTEUoTUVE
SUFfU0VTU0lPTikKLSAgICByZXR1cm4gdG9JbXBsKG1hbmFnZXIpLT52YWx1ZUZvclBsYXliYWNr
QXR0cmlidXRlKGF0dHJpYnV0ZSk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShtYW5hZ2VyKTsK
LSAgICBVTlVTRURfUEFSQU0oYXR0cmlidXRlKTsKLSAgICByZXR1cm4gZmFsc2U7Ci0jZW5kaWYK
LX0KLQotdm9pZCBXS01lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlclNldFZvbHVtZU9mRm9jdXNlZE1l
ZGlhRWxlbWVudChXS01lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlclJlZiBtYW5hZ2VyLCBkb3VibGUg
dm9sdW1lKQotewotI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQotICAgIHRvSW1wbChtYW5hZ2Vy
KS0+c2V0Vm9sdW1lT2ZGb2N1c2VkTWVkaWFFbGVtZW50KHZvbHVtZSk7Ci0jZWxzZQotICAgIFVO
VVNFRF9QQVJBTShtYW5hZ2VyKTsKLSAgICBVTlVTRURfUEFSQU0odm9sdW1lKTsKLSNlbmRpZgot
fQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tNZWRpYVNlc3Npb25Gb2N1
c01hbmFnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9X
S01lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlci5oCShyZXZpc2lvbiAyMzk3NjApCisrKyBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS01lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlci5oCShub25l
eGlzdGVudCkKQEAgLTEsNzIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
LSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgV0tNZWRpYVNl
c3Npb25Gb2N1c01hbmFnZXJfaAotI2RlZmluZSBXS01lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlcl9o
Ci0KLSNpbmNsdWRlIDxXZWJLaXQvV0tCYXNlLmg+Ci0KLSNpZm5kZWYgX19jcGx1c3BsdXMKLSNp
bmNsdWRlIDxzdGRib29sLmg+Ci0jZW5kaWYKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi1leHRlcm4g
IkMiIHsKLSNlbmRpZgotCi1lbnVtIFdLTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyUGxheWJhY2tB
dHRyaWJ1dGUgewotICAgIElzUGxheWluZyAgICAgICAgICAgICAgICAgICAgID0gMSA8PCAwLAot
ICAgIElzUHJldmlvdXNUcmFja0NvbnRyb2xFbmFibGVkID0gMSA8PCAxLAotICAgIElzTmV4dFRy
YWNrQ29udHJvbEVuYWJsZWQgICAgID0gMSA8PCAyLAotfTsKLXR5cGVkZWYgdWludDMyX3QgV0tN
ZWRpYVNlc3Npb25Gb2N1c01hbmFnZXJQbGF5YmFja0F0dHJpYnV0ZXM7Ci0KLS8vIE1lZGlhIFNl
c3Npb24gRm9jdXMgTWFuYWdlciBDbGllbnQKLXR5cGVkZWYgdm9pZCAoKldLTWVkaWFTZXNzaW9u
Rm9jdXNNYW5hZ2VyRGlkQ2hhbmdlUGxheWJhY2tBdHRyaWJ1dGUpKFdLTWVkaWFTZXNzaW9uRm9j
dXNNYW5hZ2VyUmVmIG1hbmFnZXIsIFdLTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyUGxheWJhY2tB
dHRyaWJ1dGUgcGxheWJhY2tBdHRyaWJ1dGUsIGJvb2wgdmFsdWUsIGNvbnN0IHZvaWQgKmNsaWVu
dEluZm8pOwotCi10eXBlZGVmIHN0cnVjdCBXS01lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlckNsaWVu
dEJhc2UgewotICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdmVyc2lvbjsKLSAgICBjb25zdCB2b2lkICogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNsaWVudEluZm87Ci19IFdLTWVkaWFTZXNzaW9uRm9jdXNNYW5h
Z2VyQ2xpZW50QmFzZTsKLQotdHlwZWRlZiBzdHJ1Y3QgV0tNZWRpYVNlc3Npb25Gb2N1c01hbmFn
ZXJDbGllbnRWMCB7Ci0gICAgV0tNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXJDbGllbnRCYXNlICAg
ICAgICAgICAgICAgICBiYXNlOwotCi0gICAgLy8gVmVyc2lvbiAwLgotICAgIFdLTWVkaWFTZXNz
aW9uRm9jdXNNYW5hZ2VyRGlkQ2hhbmdlUGxheWJhY2tBdHRyaWJ1dGUgZGlkQ2hhbmdlUGxheWJh
Y2tBdHRyaWJ1dGU7Ci19IFdLTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyQ2xpZW50VjA7Ci0KLVdL
X0VYUE9SVCBXS1R5cGVJRCBXS01lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlckdldFR5cGVJRCgpOwot
Ci1XS19FWFBPUlQgdm9pZCBXS01lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlclNldENsaWVudChXS01l
ZGlhU2Vzc2lvbkZvY3VzTWFuYWdlclJlZiBtYW5hZ2VyLCBjb25zdCBXS01lZGlhU2Vzc2lvbkZv
Y3VzTWFuYWdlckNsaWVudEJhc2UqIGNsaWVudCk7Ci0KLVdLX0VYUE9SVCBib29sIFdLTWVkaWFT
ZXNzaW9uRm9jdXNNYW5hZ2VyVmFsdWVGb3JQbGF5YmFja0F0dHJpYnV0ZShXS01lZGlhU2Vzc2lv
bkZvY3VzTWFuYWdlclJlZiwgV0tNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXJQbGF5YmFja0F0dHJp
YnV0ZSk7Ci1XS19FWFBPUlQgdm9pZCBXS01lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlclNldFZvbHVt
ZU9mRm9jdXNlZE1lZGlhRWxlbWVudChXS01lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlclJlZiwgZG91
YmxlKTsKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi19Ci0jZW5kaWYKLQotI2VuZGlmIC8qIFdLTWVk
aWFTZXNzaW9uRm9jdXNNYW5hZ2VyX2ggKi8KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVOb2RlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZU5vZGUu
aAkocmV2aXNpb24gMjM5NzYwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5
ZXJUcmVlL1JlbW90ZUxheWVyVHJlZU5vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjks
NyBAQAogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAogT0JKQ19DTEFTUyBDQUxheWVyOwor
T0JKQ19DTEFTUyBOU1N0cmluZzsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogT0JKQ19DTEFT
UyBVSVZpZXc7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjM5NzYwKQorKysgU291cmNlL1dlYktpdC9X
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtOTE3LDcg
KzkxNyw2IEBACiAJCTUxMjNDRjFDMTMzRDI2MEEwMDU2RjgwMCAvKiBXS0ljb25EYXRhYmFzZUNH
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTIzQ0Yx
QTEzM0QyNjBBMDA1NkY4MDAgLyogV0tJY29uRGF0YWJhc2VDRy5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxMjkzNUQ4MTI4OEQxOTQwMEE0QjY5
NSAvKiBXZWJDb250ZXh0TWVudUl0ZW0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxMjkzNUQ2MTI4OEQxOTQwMEE0QjY5NSAvKiBXZWJDb250ZXh0TWVu
dUl0ZW0uaCAqLzsgfTsKIAkJNTEyOTM1RTQxMjg4RDk3ODAwQTRCNjk1IC8qIEluamVjdGVkQnVu
ZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MTI5MzVFMjEyODhEOTc4MDBBNEI2OTUgLyogSW5qZWN0ZWRCdW5k
bGVQYWdlQ29udGV4dE1lbnVDbGllbnQuaCAqLzsgfTsKLQkJNTEyRTM0RTUxMzBCNEQwNTAwQUJE
MTlBIC8qIFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxN0EzM0I0MTMwQjMwOEMwMEY4MENCNSAvKiBXS0Fw
cGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJNTEyRjU4OTcxMkE4ODM4ODAwNjI5NTMwIC8qIEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUxMkY1ODhGMTJBODgzODgwMDYyOTUzMCAvKiBBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZVByb3h5LmggKi87IH07CiAJCTUxMkY1ODk5MTJBODgzODgwMDYyOTUzMCAvKiBBdXRoZW50
aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxMkY1ODkxMTJBODgzODgwMDYyOTUzMCAvKiBBdXRoZW50aWNhdGlv
bkRlY2lzaW9uTGlzdGVuZXIuaCAqLzsgfTsKIAkJNTEyRjU4OUIxMkE4ODM4ODAwNjI5NTMwIC8q
IFdlYkNyZWRlbnRpYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxMkY1ODkzMTJBODgzODgwMDYyOTUzMCAvKiBXZWJDcmVkZW50aWFsLmggKi87IH07
CkBAIC05NjksNyArOTY4LDYgQEAKIAkJNTFBNTU2MDExMjhDNkQ5MjAwOUFCQ0VDIC8qIFdLQ29u
dGV4dE1lbnVJdGVtVHlwZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUxQTU1NjAwMTI4QzZEOTIwMDlBQkNFQyAvKiBXS0NvbnRleHRNZW51SXRlbVR5
cGVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
NTFBNzI4REUxQjFCQUQzODAwMTAyRUVFIC8qIFdLQnVuZGxlTmF2aWdhdGlvbkFjdGlvblByaXZh
dGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQTcy
OERDMUIxQkFEMkQwMDEwMkVFRSAvKiBXS0J1bmRsZU5hdmlnYXRpb25BY3Rpb25Qcml2YXRlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTFBN0Yy
RjMxMjVCRjgyMDAwOEFFQjFEIC8qIExvZ2dpbmcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQTdGMkYyMTI1QkY4MjAwMDhBRUIxRCAvKiBMb2dnaW5n
LmggKi87IH07Ci0JCTUxQTlFMTBCMTMxNUNEMTgwMDlFNzAzMSAvKiBXS0tleVZhbHVlU3RvcmFn
ZU1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxQTlFMTA5MTMxNUNEMTgwMDlFNzAzMSAvKiBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MUFDQkI4
MjEyN0E4QkFEMDBEMjAzQjkgLyogV2ViQ29udGV4dE1lbnVQcm94eS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFBQ0JCODExMjdBOEJBRDAwRDIwM0I5
IC8qIFdlYkNvbnRleHRNZW51UHJveHkuaCAqLzsgfTsKIAkJNTFBQ0JCQTAxMjdBOEYyQzAwRDIw
M0I5IC8qIFdlYkNvbnRleHRNZW51UHJveHlNYWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQUNCQjlFMTI3QThGMkMwMEQyMDNCOSAvKiBXZWJDb250
ZXh0TWVudVByb3h5TWFjLmggKi87IH07CiAJCTUxQjE1QTg1MTM4NDNBMzkwMDMyMUFEOCAvKiBF
bnZpcm9ubWVudFV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTFCMTVBODMxMzg0M0EzOTAwMzIxQUQ4IC8qIEVudmlyb25tZW50VXRpbGl0
aWVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAg
LTE1MjUsNyArMTUyMyw2IEBACiAJCUM1RTFBRkVGMTZCMjEwMjkwMDZDQzFGMiAvKiBBUElXZWJB
cmNoaXZlUmVzb3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEJDMzI5RDlGMTZBQ0Q0NzgwMDMxNkRFMiAvKiBBUElXZWJBcmNoaXZlUmVzb3VyY2Uu
aCAqLzsgfTsKIAkJQzVGQTFFRDMxOEUxMDYyMjAwQjNGNDAyIC8qIFdLQWlyUGxheVJvdXRlUGlj
a2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNUZB
MUVEMTE4RTEwNjIyMDBCM0Y0MDIgLyogV0tBaXJQbGF5Um91dGVQaWNrZXIuaCAqLzsgfTsKIAkJ
Qzk4QzQ4QTYxQjZGRDRDMzAwMTQ1MTAzIC8qIFdlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzk4QzQ4QTQx
QjZGRDRDMzAwMTQ1MTAzIC8qIFdlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlci5oICovOyB9Owot
CQlDOThDNDhBQTFCNkZENUI1MDAxNDUxMDMgLyogV0tNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM5OEM0OEE4
MUI2RkQ1QjUwMDE0NTEwMyAvKiBXS01lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUM5QzE4MzNDMUI3NDAy
NkQwMDcwMzZBNyAvKiBXZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXJDbGllbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM5QzE4MzM4MUI3M0ZENkEw
MDcwMzZBNyAvKiBXZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXJDbGllbnQuaCAqLzsgfTsKIAkJ
QzlDRDQzOTgxQjRCMDAxRDAwMjM5RTMzIC8qIFdlYk1lZGlhU2Vzc2lvbk1ldGFkYXRhLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDOUNENDM5NDFCNEIw
MDBFMDAyMzlFMzMgLyogV2ViTWVkaWFTZXNzaW9uTWV0YWRhdGEuaCAqLzsgfTsKIAkJQzlDRDQz
OUQxQjRCMDI0RjAwMjM5RTMzIC8qIFdLTWVkaWFTZXNzaW9uTWV0YWRhdGEuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM5Q0Q0MzlBMUI0QjAyNDIwMDIz
OUUzMyAvKiBXS01lZGlhU2Vzc2lvbk1ldGFkYXRhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTMyMTYsOCArMzIxMyw2IEBACiAJCTUxNjBCRkUw
MTMzODFERjkwMDkxODk5OSAvKiBMb2dnaW5nRm91bmRhdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IExvZ2dpbmdGb3VuZGF0aW9uLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1MTY0QzA5NDFCMDVCNzU3MDA0RjEwMkEgLyogQ2hpbGRQcm9j
ZXNzLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IENoaWxkUHJvY2Vzcy5tZXNz
YWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE2QTRBNUIxMjBBMkNDRDAw
QzA1QjdGIC8qIEFQSUVycm9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFQ
SUVycm9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUxN0EzM0IzMTMwQjMwOEMw
MEY4MENCNSAvKiBXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MTdBMzNCNDEzMEIzMDhDMDBGODBDQjUgLyogV0tB
cHBsaWNhdGlvbkNhY2hlTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTUxN0E1MkQ2MUY0M0E5QjYwMERDREMwQSAvKiBXZWJTV1NlcnZlckNvbm5lY3Rpb25NZXNz
YWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJTV1NlcnZlckNvbm5l
Y3Rpb25NZXNzYWdlcy5oOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJTV1NlcnZl
ckNvbm5lY3Rpb25NZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9
OwogCQk1MTdBNTJENzFGNDNBOUI2MDBEQ0RDMEEgLyogV2ViU1dTZXJ2ZXJDb25uZWN0aW9uTWVz
c2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFdl
YlNXU2VydmVyQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHA7IHBhdGggPSBEZXJpdmVkU291
cmNlcy9XZWJLaXQyL1dlYlNXU2VydmVyQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHA7IHNv
dXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTUxN0E1MzAyMUY0NzkzQjIwMERD
REMwQSAvKiBXZWJTV0NsaWVudENvbm5lY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV2ViU1dDbGllbnRDb25uZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0zMjU0LDggKzMyNDksNiBAQAogCQk1MUE4NENFMjEyN0YzODZCMDBDQTZFQTQgLyog
V2ViQ29udGV4dE1lbnVQcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBXZWJDb250ZXh0TWVudVByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTFBOEE2MTUxNjI3RjNGOTAwMEQ5MEU5IC8qIE5ldHdvcmtQcm9jZXNzTWFjLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTmV0d29ya1Byb2Nlc3NNYWMubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxQThBNjE3MTYyN0Y1QkIwMDBEOTBFOSAv
KiBOZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBOZXR3
b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTFB
OUUxMDgxMzE1Q0QxODAwOUU3MDMxIC8qIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXS0tleVZhbHVlU3RvcmFnZU1hbmFn
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MUE5RTEwOTEzMTVDRDE4MDA5
RTcwMzEgLyogV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1MUFCRjY1NjE2MzkyRjE1MDAxMzJBN0EgLyogV2ViTG9hZGVyU3RyYXRl
Z3kuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2ViTG9hZGVyU3Ry
YXRlZ3kuY3BwOyBwYXRoID0gTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxQUJGNjU3MTYzOTJGMTUwMDEzMkE3QSAvKiBXZWJMb2Fk
ZXJTdHJhdGVneS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJMb2FkZXJT
dHJhdGVneS5oOyBwYXRoID0gTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1MUFDQkI4MTEyN0E4QkFEMDBEMjAzQjkgLyogV2ViQ29udGV4
dE1lbnVQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDb250ZXh0
TWVudVByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00MzMyLDggKzQzMjUs
NiBAQAogCQlDNUZBMUVEMjE4RTEwNjIyMDBCM0Y0MDIgLyogV0tBaXJQbGF5Um91dGVQaWNrZXIu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXS0FpclBsYXlSb3V0
ZVBpY2tlci5tbTsgcGF0aCA9IGlvcy9mb3Jtcy9XS0FpclBsYXlSb3V0ZVBpY2tlci5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzk4QzQ4QTMxQjZGRDRDMzAwMTQ1MTAzIC8qIFdl
Yk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBXZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlDOThDNDhBNDFCNkZENEMzMDAxNDUxMDMgLyogV2ViTWVkaWFTZXNz
aW9uRm9jdXNNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYk1l
ZGlhU2Vzc2lvbkZvY3VzTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlD
OThDNDhBNzFCNkZENUI1MDAxNDUxMDMgLyogV0tNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tNZWRpYVNlc3Npb25Gb2N1
c01hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDOThDNDhBODFCNkZE
NUI1MDAxNDUxMDMgLyogV0tNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV0tNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzlDMTgzMzcxQjczRkQ2QTAwNzAzNkE3IC8qIFdlYk1l
ZGlhU2Vzc2lvbkZvY3VzTWFuYWdlckNsaWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBXZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXJDbGllbnQuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDOUMxODMzODFCNzNGRDZBMDA3MDM2QTcgLyogV2Vi
TWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlckNsaWVudC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlDOUNENDM5MzFCNEIwMDBFMDAyMzlFMzMgLyogV2ViTWVkaWFT
ZXNzaW9uTWV0YWRhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
V2ViTWVkaWFTZXNzaW9uTWV0YWRhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtNzU2OSw4ICs3NTYwLDYgQEAKIAkJCQk2RUU4NDlDNDEzNjhEOTA0MDAzOEQ0ODEgLyogbWFj
ICovLAogCQkJCUJDQjYzNDc3MTE2QkYxMDYwMDYwMzIxNSAvKiBXZWJLaXQyX0MuaCAqLywKIAkJ
CQlCQ0REQjMyQzEyNEVDMkUxMDA0OEQxM0MgLyogV0tBUElDYXN0LmggKi8sCi0JCQkJNTE3QTMz
QjMxMzBCMzA4QzAwRjgwQ0I1IC8qIFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXIuY3BwICovLAot
CQkJCTUxN0EzM0I0MTMwQjMwOEMwMEY4MENCNSAvKiBXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2Vy
LmggKi8sCiAJCQkJNTEyRjU4RUQxMkE4OEE1NDAwNjI5NTMwIC8qIFdLQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UuY3BwICovLAogCQkJCTUxMkY1OEVFMTJBODhBNTQwMDYyOTUzMCAvKiBXS0F1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlLmggKi8sCiAJCQkJNTEyRjU4RUYxMkE4OEE1NDAwNjI5NTMwIC8q
IFdLQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyLmNwcCAqLywKQEAgLTc2MTksMTEgKzc2
MDgsNyBAQAogCQkJCTUxMTBBRTBCMTMzQzE2Q0IwMDcyNzE3QSAvKiBXS0ljb25EYXRhYmFzZS5o
ICovLAogCQkJCTFDOEUyOTM4MTI3NjFFNUIwMEJDN0JEMCAvKiBXS0luc3BlY3Rvci5jcHAgKi8s
CiAJCQkJMUM4RTI5MzcxMjc2MUU1QjAwQkM3QkQwIC8qIFdLSW5zcGVjdG9yLmggKi8sCi0JCQkJ
NTFBOUUxMDgxMzE1Q0QxODAwOUU3MDMxIC8qIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlci5jcHAg
Ki8sCi0JCQkJNTFBOUUxMDkxMzE1Q0QxODAwOUU3MDMxIC8qIFdLS2V5VmFsdWVTdG9yYWdlTWFu
YWdlci5oICovLAogCQkJCTJENzkwQTlFMUFENzE2NDkwMEFCOTBCMyAvKiBXS0xheW91dE1vZGUu
aCAqLywKLQkJCQlDOThDNDhBNzFCNkZENUI1MDAxNDUxMDMgLyogV0tNZWRpYVNlc3Npb25Gb2N1
c01hbmFnZXIuY3BwICovLAotCQkJCUM5OEM0OEE4MUI2RkQ1QjUwMDE0NTEwMyAvKiBXS01lZGlh
U2Vzc2lvbkZvY3VzTWFuYWdlci5oICovLAogCQkJCUM5Q0Q0Mzk5MUI0QjAyNDIwMDIzOUUzMyAv
KiBXS01lZGlhU2Vzc2lvbk1ldGFkYXRhLmNwcCAqLywKIAkJCQlDOUNENDM5QTFCNEIwMjQyMDAy
MzlFMzMgLyogV0tNZWRpYVNlc3Npb25NZXRhZGF0YS5oICovLAogCQkJCUMxMUUxNjkzMjEyQjg3
QzUwMDk4NUZGNiAvKiBXS01vY2tEaXNwbGF5LmNwcCAqLywKQEAgLTk1NzQsNyArOTU1OSw2IEBA
CiAJCQkJQzVGQTFFRDMxOEUxMDYyMjAwQjNGNDAyIC8qIFdLQWlyUGxheVJvdXRlUGlja2VyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkyRDEyREFCNTIwNjYyQzczMDA2RjAwRkIgLyogV0tBbmltYXRp
b25EZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNEREIzMkQxMjRFQzJFMTAwNDhEMTND
IC8qIFdLQVBJQ2FzdC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTEyRTM0RTUxMzBCNEQwNTAwQUJE
MTlBIC8qIFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUEx
M0RDNjgyMjA3QUE2QjIwMDY2RUY3MiAvKiBXS0FwcGxpY2F0aW9uU3RhdGVUcmFja2luZ1ZpZXcu
aCBpbiBIZWFkZXJzICovLAogCQkJCUJDNDA3NUY0MTI0RkYwMjcwMDY4RjIwQSAvKiBXS0FycmF5
LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTJGNThGNjEyQTg4QTU0MDA2Mjk1MzAgLyogV0tBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZS5oIGluIEhlYWRlcnMgKi8sCkBAIC05NzM3LDEwICs5NzIxLDgg
QEAKIAkJCQlBNUMwRjBBQjIwMDA2NTgyMDA1MzY1MzYgLyogV0tJbnNwZWN0b3JXaW5kb3cuaCBp
biBIZWFkZXJzICovLAogCQkJCUE1MThCNUQyMUZFMUQ1NUIwMEY5RkEyOCAvKiBXS0luc3BlY3Rv
cldLV2ViVmlldy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkRENUUxMjkyMTBBREM3QjAwREI2MDEy
IC8qIFdLS2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRvci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTFB
OUUxMEIxMzE1Q0QxODAwOUU3MDMxIC8qIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMkQ3OTBBOUYxQUQ3MTY0OTAwQUI5MEIzIC8qIFdLTGF5b3V0TW9kZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMkRBMUU0RkUxOEMwMkI2QTAwREJDOTI5IC8qIFdLTGVnYWN5
UERGVmlldy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQzk4QzQ4QUExQjZGRDVCNTAwMTQ1MTAzIC8q
IFdLTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDOUNENDM5
RDFCNEIwMjRGMDAyMzlFMzMgLyogV0tNZWRpYVNlc3Npb25NZXRhZGF0YS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMUFCNDBFRTYxQkY2NzdFMzAwQkE4MUJFIC8qIFdLTWVudUl0ZW1JZGVudGlmaWVy
c1ByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUMxMUUxNjk0MjEyQjg3QzUwMDk4NUZGNiAv
KiBXS01vY2tEaXNwbGF5LmggaW4gSGVhZGVycyAqLywKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzOTc2MikKKysrIFRvb2xz
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDE5LTAxLTA4ICBB
bGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVt
b3ZlIG9yIGRlcHJlY2F0ZSB1bnVzZWQgQyBTUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MzE2MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5j
cHA6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjp+VGVzdENvbnRyb2xsZXIpOgorCiAy
MDE5LTAxLTA4ICBEZWFuIEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KIAogICAgICAgICBCbG9i
IHJlZmVyZW5jZXMgZm9yIFN5c3RlbSBQcmV2aWV3cyBkb24ndCBnZXQgYSBjb3JyZWN0IGZpbGUg
ZXh0ZW5zaW9uCkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNw
cAkocmV2aXNpb24gMjM5NzYwKQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJv
bGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1NiwxMCArMTU2LDYgQEAgVGVzdENvbnRyb2xs
ZXI6OlRlc3RDb250cm9sbGVyKGludCBhcmdjLAogCiBUZXN0Q29udHJvbGxlcjo6flRlc3RDb250
cm9sbGVyKCkKIHsKLSAgICAvLyBUaGUgY29udGV4dCB3aWxsIGJlIG51bGwgaWYgV2ViS2l0VGVz
dFJ1bm5lciB3YXMgaW4gc2VydmVyIG1vZGUsIGJ1dCByYW4gbm8gdGVzdHMuCi0gICAgaWYgKG1f
Y29udGV4dCkKLSAgICAgICAgV0tJY29uRGF0YWJhc2VDbG9zZShXS0NvbnRleHRHZXRJY29uRGF0
YWJhc2UobV9jb250ZXh0LmdldCgpKSk7Ci0KICAgICBwbGF0Zm9ybURlc3Ryb3koKTsKIH0KIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>